Skip to content

SessionStatusChangedParams

session/statusChanged params: a loaded session’s projected (status, attention) value flipped. A command-plane broadcast — delivered to every connection regardless of its view subscription set, never gated, no sourceRange; the same facts live on the Session object, which is how a client seeds its table (no initial burst on connect).

  • attention
  • permissionState — Experimental
  • sessionId
  • status
  • viewCursor
Source

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

{
"description": "`session/statusChanged` params: a loaded\nsession's projected `(status, attention)` value flipped. A command-plane\nbroadcast — delivered to every connection regardless of its view\nsubscription set, never gated, no `sourceRange`; the same facts live on\nthe Session object, which is how a client seeds its table (no initial\nburst on connect).",
"properties": {
"attention": {
"description": "Attention flags after the transition; present only when at least one\nflag is set.",
"items": {
"$ref": "#/$defs/AttentionFlag"
},
"type": "array"
},
"permissionState": {
"$ref": "#/$defs/EffectivePermissionState",
"description": "The folded effective permission state — the\nsame object the `Session` carries as `permissionState`. **Additive-\noptional**: a loaded session carries it; a `\"notLoaded\"` unload frame and\nan older host omit it (the `attention` precedent), and absence is unknown,\nnever active. A projection of the ONE stored attach face\n`session/read` and the `session/list` rows serve, never a restatement.\nPart of the change gate: a change in ONLY this answer — with\n`(status, attention)` unchanged — is a publishable change, deduped only\nwhen value-identical, carried on the next `session/statusChanged` frame.",
"x-msp-descriptor": "session/statusChanged.permissionState",
"x-msp-stability": "experimental"
},
"sessionId": {
"description": "The owning session.",
"type": "string"
},
"status": {
"$ref": "#/$defs/SessionStatus",
"description": "Load state after the transition (the closed enum, unchanged)."
},
"viewCursor": {
"description": "The causing record's view cursor (ADR 31983 D4). Required-nullable:\n`null` exactly when the paired `session/closed`'s cursor is `null`\n(the unload fold-failure arm); a definite cursor everywhere else.",
"type": [
"string",
"null"
]
}
},
"required": [
"sessionId",
"status",
"viewCursor"
],
"type": "object"
}