LearnNewsExamplesServices
Frontmatter
id13357
titleCapture first-widget requests in a safe chat surface
stateClosed
labels
enhancementaiarchitecture
assigneesneo-opus-ada
createdAtJun 15, 2026, 5:29 PM
updatedAtJun 17, 2026, 8:49 AM
githubUrlhttps://github.com/neomjs/neo/issues/13357
authorneo-gpt
commentsCount1
parentIssue13349
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[x] 13355 Render first-widget transcript and blueprint evidence pane
blocking[x] 13361 Mutate first widget from bounded follow-up requests
closedAtJun 16, 2026, 12:23 PM
milestonev13.1

Capture first-widget requests in a safe chat surface

Closed v13.1.0/archive-v13-1-0-chunk-3 enhancementaiarchitecture
neo-gpt
neo-gpt commented on Jun 15, 2026, 5:29 PM

Context

Epic #13349 owns the Agent Harness H2 path: chat/work surface -> constrained blueprint -> live first Neo widget. The first implementation leaf, #13353 / PR #13354, proves the constrained blueprint can render as a live grid pane. The next queued leaf, #13355, adds transcript and accepted-blueprint evidence so the result is not just a hardcoded demo.

After those pieces, H2 still needs a bounded user-facing intake surface: the place where the first-widget request is captured before it becomes blueprint/evidence state. This ticket creates that one-PR slice without adding model invocation, persistence, write-through, or Electron shell scope.

Release classification: post-release Agent Harness product line; attach to Agent Harness Project 13, not the v13 release board. Project 13 was verified live as the Agent Harness project before creation.

The Problem

A transcript/evidence pane can show provenance, but without an intake surface the H2 demo still starts from pre-seeded state. That weakens the product proof: a user should be able to type the canonical first request and see it enter the same safe request/evidence path that produces the first live widget.

The intake path must stay constrained. User text is untrusted, so it must be bounded, rendered through safe Neo text/component surfaces, and projected as request state only. It must not imply real LLM orchestration, streaming chat, durable transcript storage, arbitrary code execution, or write-through before those boundaries have their own leaves.

The Architectural Reality

  • #13349 names chat/work-surface intake as an H2 capability that still needs a child leaf.
  • ADR 0020 names the canonical H2 demo: chat pane -> "build me a neo grid" -> a separate live pane/window containing a mutable grid.
  • #13018 constrains transcript-style rendering toward safe VDOM / no unsafe HTML path.
  • #13022 seeded AgentOS visual tokens for chat, transcript, state, and grid-pane surfaces.
  • #13355 should land first so this intake surface can reuse the transcript/evidence placement instead of forking a second provenance UI.
  • #13033 remains the Electron shell/build-root lane and is not touched here.

The Fix

Add a one-PR H2 child slice that renders a safe first-widget request intake surface inside the AgentOS widget child app after the transcript/evidence pane exists.

Expected shape:

  • Provide a bounded text input and submit affordance for the canonical first-widget request.
  • Validate empty, overlong, or structurally invalid request text into a visible fail-closed state.
  • Project accepted request text into the existing transcript/evidence request state from #13355.
  • Route accepted first-widget intent to the existing constrained blueprint path from #13353; do not create a second hardcoded widget path.
  • Keep the response deterministic for this leaf. No LLM provider call, streaming orchestration, Memory Core persistence, Node-git write-through, or live edit/mutation behavior.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
AgentOS widget child app chat intake surface #13349, ADR 0020, #13355 Captures a bounded first-widget request and exposes submit/invalid states Empty or invalid requests remain visible as bounded safe text JSDoc / @summary on new helpers or component methods Unit test plus local render smoke
Request validation/projection #13018 safe transcript constraint Projects accepted request text into transcript/evidence state without unsafe HTML Reject overlong or malformed request state JSDoc / @summary Unit tests for valid, empty, overlong, and HTML-like input
First-widget intent bridge #13353 blueprint contract Accepted request selects the existing constrained first-widget blueprint path If prerequisite blueprint contract is absent, show a bounded unavailable state JSDoc / @summary Unit test proving no duplicate widget path is introduced

Decision Record impact

Aligned with ADR 0020. No ADR amendment expected; this ticket implements the H2 chat-intake layer while preserving the existing product ordering, source placement, and constrained-blueprint safety model.

Acceptance Criteria

  • The AgentOS widget child app renders a first-widget request intake surface with a text input and submit affordance.
  • Valid request submission projects safe request text into the transcript/evidence state established by #13355.
  • Empty, overlong, and HTML-like request input fail closed to bounded visible states without unsafe rendering.
  • Accepted request state uses the existing first-widget blueprint path from #13353 rather than a duplicate hardcoded widget path.
  • The implementation does not call an LLM provider, persist transcript state, write through to git, or introduce Electron shell/build-root behavior.
  • Focused unit coverage verifies valid intake, invalid intake, safe rendering, and blueprint-path reuse.
  • Local render smoke verifies intake, transcript/evidence, and live widget surfaces render together after prerequisites land.

Out of Scope

  • Natural-language model invocation or streaming chat orchestration.
  • Durable transcript persistence / Memory Core write-through.
  • User-editable mutation path for the live widget.
  • Node-git write-through or generated-code commit flows.
  • Electron shell/build-root work; that remains #13033.
  • Partner-private workflows or client-specific UI.

Avoided Traps / Gold Standards Rejected

  • Pre-seeded demo only: rejected. H2 needs an actual user intake gesture, even if the response is deterministic in this leaf.
  • Unsafe text rendering: rejected. User input must not become trusted HTML.
  • LLM orchestration bundled too early: rejected. This leaf proves the intake boundary, not provider integration.
  • Duplicate widget path: rejected. Intake must feed the existing constrained first-widget blueprint path.
  • Duplicate Electron support: rejected. #13033 remains the canonical Electron shell/build-root lane.

Related

Parent: #13349. Grandparent: #13012. Blocked by #13355. Prerequisite chain: #13355 depends on #13353 / PR #13354. Sibling lane: #13033 remains the Electron shell/build-root lane. ADR: learn/agentos/decisions/0020-agent-harness-concept.md.

Duplicate / Claim Sweep

Live latest-open sweep: checked the latest 20 open issues immediately before creation on 2026-06-15T15:29:10Z. Relevant results were #13349, #13355, #13353, #13287, #13350, #13012, #13033-adjacent Fleet Manager/Electron items, and unrelated backlog issues; no equivalent chat-intake child leaf was present.

Targeted live GitHub searches: "first widget chat", "chat intake", "work-surface intake", and "first-widget request" returned the H2 parent and first-widget blueprint leaf, but no existing chat-intake child.

A2A in-flight sweep: native list_messages / add_message tools are not exposed in this Codex Desktop surface. I could not inspect private in-flight A2A claims from this harness. Public GitHub issue/PR state and repo content were checked immediately before filing, and no public duplicate or collision was visible.

Semantic KB sweep: ask_knowledge_base(query='Agent Harness H2 first widget chat intake transcript evidence safe rendering blueprint Neo component request surface', type='all') surfaced ADR 0020, Neural Link, and HarnessDockZoneModel context, and confirmed the chat/intake/request surface is distinct from transcript evidence and blueprint rendering.

Exact repo/content sweep: rg "chat intake|chat surface|work-surface intake|first-widget request|first widget request|conversational app creation" resources/content/issues resources/content/discussions .agents/workflows learn apps/agentos -n found the graduated Discussion H2 framing but no existing chat-intake child ticket.

Origin Session ID: 019ec8a7-1f8e-75a3-b223-fe59cc444776

Retrieval Hint: "Agent Harness H2 first-widget chat intake safe request surface transcript evidence blueprint reuse no LLM no persistence"

tobiu referenced in commit d0684fb - "feat(agentos): H2 first-widget chat-intake surface (#13357) (#13416) on Jun 16, 2026, 12:23 PM
tobiu closed this issue on Jun 16, 2026, 12:23 PM