Skip to content
Developer Preview

SnapshotState

The complete folded view at the snapshot cursor.

Additive-optional evolution applies exactly as everywhere else; unknown members MUST be ignored, and preserved if re-serialized.

  • activeTurn
  • approvalMode
  • branch
  • contextUsage
  • effectiveModel
  • goal
  • items
  • name
  • pendingApprovals
  • pendingUserInputs
  • queuedTurns
  • reasoningEffort
  • todoList
  • tokenUsage
  • turnCount
Source

schema/msp/experimental/msp.schema.json#/types/SnapshotState

{
"description": "The complete folded view at the snapshot cursor.\n\nAdditive-optional evolution applies exactly as everywhere else; unknown\nmembers MUST be ignored, and preserved if re-serialized.",
"properties": {
"activeTurn": {
"anyOf": [
{
"$ref": "#/$defs/TurnRef"
},
{
"type": "null"
}
],
"description": "The running foreground turn; `null` when none is running."
},
"approvalMode": {
"$ref": "#/$defs/EffectiveApprovalModeState",
"description": "The effective approval mode at this cursor — the same object the\n`Session` carries."
},
"branch": {
"anyOf": [
{
"$ref": "#/$defs/BranchState"
},
{
"type": "null"
}
],
"description": "Latest branch observation; `null` when no fact has landed."
},
"contextUsage": {
"$ref": "#/$defs/ContextUsage",
"description": "The latest `(windowTokens, usedTokens, pressure)` triple. The protocol\nallows \"`null`/absent\" and its worked example OMITS the member; the\nbinary omits it too, so this is the absent arm — the four siblings above\nare present-null in the same frame. A member is published as one or the\nother, never both."
},
"effectiveModel": {
"anyOf": [
{
"$ref": "#/$defs/EffectiveModel"
},
{
"type": "null"
}
],
"description": "Latest effective model; `null` when no fact has landed."
},
"goal": {
"anyOf": [
{
"$ref": "#/$defs/Goal"
},
{
"type": "null"
}
],
"description": "Latest goal block; `null` when no fact has landed."
},
"items": {
"description": "Every item, in first-opened order, each at its latest revision at the\nsnapshot cursor. One schema per kind, shared with the notification\nitem object — which is what makes snapshot+suffix a pure splice.",
"items": {
"$ref": "#/$defs/Item"
},
"type": "array"
},
"name": {
"description": "The settled canonical session name; `null` when the session was never\nnamed. Folds the same durable\n`session/nameChanged` record `Session.name` reports.",
"type": [
"string",
"null"
]
},
"pendingApprovals": {
"description": "The pending-approval half of the pending set.",
"items": {
"$ref": "#/$defs/PendingApprovalPointer"
},
"type": "array"
},
"pendingUserInputs": {
"description": "The pending-user-input half of the pending set.",
"items": {
"$ref": "#/$defs/PendingUserInputPointer"
},
"type": "array"
},
"queuedTurns": {
"description": "Admitted-but-not-launched submits, in launch order.",
"items": {
"$ref": "#/$defs/TurnRef"
},
"type": "array"
},
"reasoningEffort": {
"$ref": "#/$defs/ReasoningEffortState",
"description": "The latest session-default reasoning effort with its source; ABSENT\nuntil a set lands."
},
"todoList": {
"anyOf": [
{
"$ref": "#/$defs/TodoListState"
},
{
"type": "null"
}
],
"description": "Latest todo list; `null` when no fact has landed."
},
"tokenUsage": {
"$ref": "#/$defs/CumulativeTokenUsage",
"description": "The `cumulative` block of the last `session/tokenUsage` event; zeroes\nwhen none."
},
"turnCount": {
"description": "Completed-turn count at this cursor.",
"type": "integer"
}
},
"required": [
"activeTurn",
"approvalMode",
"branch",
"effectiveModel",
"goal",
"items",
"pendingApprovals",
"pendingUserInputs",
"queuedTurns",
"todoList",
"tokenUsage",
"turnCount"
],
"type": "object"
}