Why: The workflow executor needs a shared contract for subagent profiles, plugin scripts, and per-step plus whole-run retry caps.
Evidence: go test ./... passed, including the new workflow_def golden.
Impact: New fields are omitempty, so existing workflow JSON still decodes. Kind script is additive.
Refs: feature/agent-harness-p4
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: User overrides of a subagent profile need a place on the shared contract, and empty fields must stay omitted so older modules keep their meaning.
Evidence: go test ./... passed, including the new prompt_module_subagent golden.
Impact: Existing modules serialize the same. Frontend and UI contracts still need a copy of the type.
Refs: feature/agent-harness-p3b
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: The chat timeline needs a persisted thinking duration, and tool duration already lives on the tool call, so the thinking part had nowhere to put it.
Evidence: go test ./... passes; the message golden now includes durationMs on the thinking part.
Impact: Additive JSON field with omitempty. Existing clients ignore unknown fields.
Refs: feature/chat-timeline-preview
Co-authored-by: Cursor <cursoragent@cursor.com>
Why: D50 approved — the project inbox needs its own SSE stream reusing the
conversation event mechanism via the pseudo-key project:<projectId>; the
envelope stamps project ownership (additive field).
Evidence: conformance golden event_project_stream; go test green.
Impact: additive only (omitempty); consumers ignore unknown fields.
Refs: documents proposal 2026-09-30-card-stream-artifact-unify-project-inbox.md (D50).
Why: cross-session transcript reading needs per-conversation outbound
(allowCrossRead, default true) and inbound (crossPrivate, default false)
flags alongside the project-level gate; see the approved proposal.
Evidence: go test ./... passes with golden conversation.json regenerated
to exercise both wire fields.
Impact: additive contract fields (omitempty), wire-compatible for
existing clients that ignore unknown fields.
Refs: Agent-System-Documents proposals/2026-09-30-cross-session-reading.md
(Dev task feature/cross-session-reading).
Why: plugins and the host need one shared avatar primitive for member/
owner displays in cards, messages, and admin surfaces (user decision
2026-09-30: avatars, cards, settings become base capabilities plugins
reuse directly).
Evidence: go test green with regenerated golden (single avatar with
sub/tone plus a stacked group); omitempty keeps existing wire samples
byte-stable.
Impact: additive optional UINode field + type; unknown-type consumers
ignore it (forward compat). Renderers gain 'avatar' via the ui repo.
Refs: Agent-System-Documents proposal 2026-09-30-ui-redesign-and-auth.md
Why: Contract foundation for the inbox/command-bus/workspaces phase (proposal
D28/D30): ActivityCard as the first-class state object behind the right-rail
inbox, card.* stream events, inline-confirm anchoring (anchorMessageId +
blocked/blockReason) on HITL, seven new UI schema vocabularies, plugin
provides.commands/workspaces, workflow card step and workspace declarations.
Evidence: go vet clean; conformance goldens regenerated and verified — new
activity_card / hitl_card_blocked / event_card_created / event_card_resolved /
ui_vocabularies samples plus extended plugin_manifest; CardStatus.Terminal
helper unit-covered via build; ts/types.ts mirrors all additions.
Impact: Additive only (omitempty fields, new types, new event types) — existing
consumers ignore unknown values per forward-compat rule; vocabulary spec types
carry a Spec suffix to avoid const-name collisions.
Refs: modules/documents docs/proposals/2026-09-30-ui-inbox-command-workspace.md