Skip to content

feat(desktop): answer structured form interactions - #4384

Open
me2seeks wants to merge 4 commits into
feat/4364-runtime-form-interactionsfrom
feat/4364-desktop-form-interactions
Open

feat(desktop): answer structured form interactions#4384
me2seeks wants to merge 4 commits into
feat/4364-runtime-form-interactionsfrom
feat/4364-desktop-form-interactions

Conversation

@me2seeks

@me2seeks me2seeks commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • render Runtime Host-owned structured form interactions in the Desktop composer for both the main conversation and Side Chat
  • preserve omitted optional fields separately from explicit empty or false values, while validating all six primitive field kinds through the shared core contract
  • decode renderer responses at the IPC boundary and retire prompts only after Host settlement or its projected acknowledgement

Why

PR #4379 establishes the durable form interaction contract and Runtime Host continuation authority. Desktop still needs a surface adapter so a tool can collect bounded structured input without falling back to an untyped text question or inventing a second pending-interaction owner in the renderer.

This PR is stacked on #4379 and implements the Desktop slice of the rollout in #4364. It does not add provider-specific form state or change the MCP wire path.

Screenshots

Before, Desktop could only render the fixed question prompt. After, the same composer slot renders a structured form, preserves optional field intent, and reports field-local validation errors.

Before: fixed question prompt After: structured form prompt
Desktop fixed question prompt before this PR Desktop structured form prompt after this PR

Usability states

Optional field included with explicit true Field-local validation after submit
Optional boolean inclusion and explicit true value Invalid string value with field-local error

Test plan

  • npm run build
  • 122 focused UI/Desktop interaction tests
  • 45 focused storage tests with a non-worktree temporary directory
  • Storybook interaction check at 1440x900: defaults, optional boolean inclusion/value, invalid required string

Part of #4364.

Render the Host-owned primitive form contract in the shared composer slot for both the main conversation and Side Chat. Preserve optional omission separately from explicit values, validate through the shared core contract, and expose cancel, decline, and accept without introducing surface-owned continuation state.

Decode renderer responses at the Desktop IPC boundary, settle them through Runtime Host, and retire prompts only after the authoritative answer succeeds or its acknowledgement is projected. Cover all six field kinds, malformed responses, reconnect hydration, and both Desktop surfaces.

Part of #4364.

Generated-by: OpenAI Codex
Route main-surface form answers through the existing Desktop platform adapter, expose test-only companion helpers from the Workbar testing entry, and keep legacy AppShell debt monotonic while sharing response settlement behavior.

Add focused coverage for answer acceptance and failure retention.

Part of #4364.
Refresh the generated Astryx surface inventory for the aligned structured-form prompt.

Part of #4364.
Keep the Session Workbar Storybook services aligned with the required structured-form response capability.

Part of #4364.
@me2seeks
me2seeks force-pushed the feat/4364-desktop-form-interactions branch from 828699d to 098cac3 Compare August 31, 2026 19:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant