Skip to content
Developer Preview

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.

  • agentPath
  • approvalId
  • args
  • attachments
  • background
  • backgroundInitiator
  • callId
  • childSessionId
  • childSessionLogPath
  • children
  • commandId
  • commandText
  • controlStatus
  • depth
  • displayText
  • durationMs
  • entryId
  • exitCode
  • exitSignal
  • failureKind
  • failureReason
  • fallbackText
  • generationId
  • itemId
  • kind
  • message
  • modelVisibleContent
  • objective
  • outcome
  • outputRef
  • providerItemId
  • reason
  • recordedAt
  • reminderAgentId
  • result
  • resumeFromRunId
  • retracted
  • revision
  • role
  • scriptId
  • status
  • steered
  • strategyId
  • subagentId
  • summarizedThrough
  • summary
  • taskId
  • text
  • tokensAfter
  • tokensBefore
  • tool
  • trigger
  • triggerSource
  • truncated
  • turnId
  • usage
  • visibleOutput
  • workflowRunId
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"
}