Item
One transcript item at one revision. item/started, item/updated, and item/completed
carry the full object; item/delta appends to it by field path.
Fields and variants
Section titled “Fields and variants”agentPathapprovalIdargsattachmentsbackgroundbackgroundInitiatorcallIdchildSessionIdchildSessionLogPathchildrencommandIdcommandTextcontrolStatusdepthdisplayTextdurationMsentryIdexitCodeexitSignalfailureKindfailureReasonfallbackTextgenerationIditemIdkindmessagemodelVisibleContentobjectiveoutcomeoutputRefproviderItemIdreasonrecordedAtreminderAgentIdresultresumeFromRunIdretractedrevisionrolescriptIdstatussteeredstrategyIdsubagentIdsummarizedThroughsummarytaskIdtexttokensAftertokensBeforetooltriggertriggerSourcetruncatedturnIdusagevisibleOutputworkflowRunId
Source
schema/msp/experimental/msp.schema.json#/types/Item
{ "description": "One transcript item at one revision. `item/started`, `item/updated`, and `item/completed`\ncarry the full object; `item/delta` appends to it by field path.", "properties": { "agentPath": { "description": "`subagent`: agent definition path.", "type": "string" }, "approvalId": { "description": "`toolCall`: the approval that gated this call; join key for\nthe approval view events.", "type": "string" }, "args": { "description": "`toolCall`: the model-authored argument JSON, **verbatim**; clients\nparse. Verbatim keeps the fold byte-deterministic and survives\nmodel-emitted almost-JSON.", "type": "string" }, "attachments": { "description": "`userMessage`: image attachment metadata only — base64 payloads are\nnot echoed back on the view.", "items": { "$ref": "#/$defs/MessageAttachment" }, "type": "array" }, "background": { "description": "`toolCall`: `true` once the task was durably backgrounded; delivered\nvia `item/updated`.", "type": "boolean" }, "backgroundInitiator": { "$ref": "#/$defs/BackgroundInitiator", "description": "`toolCall`: who backgrounded the task; absent on pre-split records —\nnever inferred." }, "callId": { "description": "`toolCall`: the provider call id (`call_...`), opaque.", "type": "string" }, "childSessionId": { "description": "`subagent`/`reminderChild`: the child's own session id, readable via\n`session/read`/`view/page` — child transcript drill-down without a\nsecond protocol.", "type": "string" }, "childSessionLogPath": { "description": "`reminderChild`: parent-session-dir-relative child log path; absent\nwhen no filesystem log.", "type": "string" }, "children": { "description": "`workflow`: folded per-child state, keyed by `(childId, attempt)`,\nre-emitted whole on every change — the item `revision` is the\nordering guard.", "items": { "$ref": "#/$defs/WorkflowChild" }, "type": "array" }, "commandId": { "description": "`userMessage`/`userShell`: the submitting command — multi-client UIs\nde-duplicate their local echo on it.", "type": "string" }, "commandText": { "description": "`userShell`: the command text as submitted.", "type": "string" }, "controlStatus": { "$ref": "#/$defs/SubagentControlStatus", "description": "`subagent`: camelCased `SubagentControlStatus` (open enum); `status`\nstays the generic item vocabulary." }, "depth": { "description": "`subagent`: nesting depth.", "type": "integer" }, "displayText": { "description": "`userMessage`: presentation form; absent when the client\nsent none.", "type": "string" }, "durationMs": { "description": "`userShell`/`subagent`: observed wall-clock duration.", "type": "integer" }, "entryId": { "description": "`workflow`: launched entry identity.", "type": "string" }, "exitCode": { "description": "`userShell`: the process exit code, when it exited by code.", "type": "integer" }, "exitSignal": { "description": "`userShell`: the terminating signal NUMBER, when signalled (e.g. 9) —\nthe durable payload verbatim; nothing maps numbers to names, and the\nfold never invents one.", "type": "integer" }, "failureKind": { "description": "`toolCall`: machine-readable failure class (`TaskFailureKind`, snake_case verbatim — durable runtime vocabulary, the casing exemption).", "type": "string" }, "failureReason": { "description": "`toolCall`/`subagent`: `Failed`/`Rejected`/`Cancelled` reason text,\nverbatim.", "type": "string" }, "fallbackText": { "description": "Server-provided one-line human summary any kind MAY carry, for\ngeneric rendering of kinds a client does not recognize; new kinds\nSHOULD carry it during their first release cycle.", "type": "string" }, "generationId": { "description": "`reminderChild`: the reminder generation.", "type": "integer" }, "itemId": { "description": "Bare UUIDv7; the item's identity across its whole lifecycle. Identity\nrule: the task id for task-backed kinds\n(`toolCall`, `subagent`), the pre-minted commit `message_id` for\ndelta-streamed kinds (`agentMessage`, `reasoning`), and the opening\ndurable record's event id for everything else. Opaque to clients.", "type": "string" }, "kind": { "$ref": "#/$defs/ItemKind", "description": "The item kind (open enum): clients MUST render unknown kinds\ngenerically — kind name plus `status` plus `fallbackText`." }, "message": { "description": "`workflow`: the reconciled terminal message, set on completion.", "type": "string" }, "modelVisibleContent": { "description": "`toolCall`: rich content the model saw beyond text; base64 is not\ninlined on the view.", "items": { "$ref": "#/$defs/ModelVisibleContent" }, "type": "array" }, "objective": { "description": "`subagent`: objective as spawned.", "type": "string" }, "outcome": { "$ref": "#/$defs/CompactionOutcome", "description": "`compaction`: terminal only — folds installed/fallback status." }, "outputRef": { "$ref": "#/$defs/OutputRef", "description": "`toolCall`/`userShell`: stored-output reference; fetch the full bytes\nvia `item/readOutput`." }, "providerItemId": { "description": "`reasoning`: provider reasoning item id (e.g. `rs_...`), for\nprovider-side correlation.", "type": "string" }, "reason": { "description": "`compaction`: noop/failure reason, verbatim (snake_case durable\nvocabulary, e.g. `\"no_compactable_history\"`).", "type": "string" }, "recordedAt": { "description": "RFC3339 timestamp of the item's driving durable record. Absent on\nephemeral-opened items until first durable re-emission.", "type": "string" }, "reminderAgentId": { "description": "`reminderChild`: the reminder agent's id.", "type": "string" }, "result": { "$ref": "#/$defs/SubagentResult", "description": "`subagent`: the result envelope from `ResultReady`." }, "resumeFromRunId": { "description": "`workflow`: set on resumed launches.", "type": "string" }, "retracted": { "description": "`userMessage`: `true` after an accepted retract;\nre-emitted via `item/updated`.", "type": "boolean" }, "revision": { "description": "Integer >= 1, strictly monotonic per item; apply rule is\nreplace-iff-higher. `item/delta` never bumps it.", "type": "integer" }, "role": { "description": "`subagent`: role as spawned.", "type": "string" }, "scriptId": { "description": "`workflow`: launched script identity.", "type": "string" }, "status": { "$ref": "#/$defs/ItemStatus", "description": "Open enum; terminal = anything other than `\"inProgress\"`. Unknown\nvalues MUST be treated as terminal-unknown and rendered generically." }, "steered": { "description": "`userMessage`: `true` when injected mid-turn via `turn/steer` or\n`ifBusy: \"steer\"`; absent otherwise.", "type": "boolean" }, "strategyId": { "description": "`compaction`: summarizer strategy (installed only).", "type": "string" }, "subagentId": { "description": "`subagent`: durable child identity (`subagent_id`).", "type": "string" }, "summarizedThrough": { "description": "`compaction`: opaque provenance string naming the compaction\nboundary. A compaction-anchored read anchor since (2026-08-12):\naccepted by `session/resume` and `view/page`. Still opaque — clients relay it,\nnever parse it.", "type": "string" }, "summary": { "description": "`reasoning`: one entry per summary part; part *n* streams via\n`item/delta` field `\"summary.n\"` (part boundary = index change).", "items": { "type": "string" }, "type": "array" }, "taskId": { "description": "`reminderChild`: the linked task id.", "type": "string" }, "text": { "description": "`userMessage`: the prompt text as submitted. `agentMessage`: the\naccumulated reply, streamed via `item/delta` field `\"text\"`.\n`reasoning`: raw committed reasoning text where the provider exposes\nit.", "type": "string" }, "tokensAfter": { "description": "`compaction`: token budget snapshot after, when measured.", "type": "integer" }, "tokensBefore": { "description": "`compaction`: token budget snapshot before, when measured.", "type": "integer" }, "tool": { "description": "`toolCall`: tool name.", "type": "string" }, "trigger": { "$ref": "#/$defs/CompactionTrigger", "description": "`compaction`: what initiated the compaction." }, "triggerSource": { "description": "`workflow`: camelCased `WorkflowLaunchTriggerSource`, verbatim\n(durable runtime vocabulary, e.g. `\"modelProposal\"`).", "type": "string" }, "truncated": { "description": "`true` when the server's per-surface text budget saturated a streamed\nsurface (`agentMessage.text`, `reasoning.summary[*]`,\n`toolCall.visibleOutput`, `userShell.visibleOutput`); the durable\nfull text remains in the log.", "type": "boolean" }, "turnId": { "description": "The owning turn. `null` only for `userShell` — the one kind outside a turn.", "type": "string" }, "usage": { "$ref": "#/$defs/TokenUsage", "description": "`subagent`: **transitive** observed usage — the child and its own\ndescendants; updated in place, absent until first observation; never\nfolded into `session/tokenUsage.cumulative`." }, "visibleOutput": { "description": "`toolCall`/`userShell`: bounded transcript-visible result text; streams via `item/delta` field `\"output\"`.", "type": "string" }, "workflowRunId": { "description": "`subagent`/`workflow`: the owning durable workflow run id (opaque\nstring — not a UUID family).", "type": "string" } }, "required": [ "itemId", "kind", "revision", "status" ], "type": "object"}