muse-code-msp 1.4.11__tar.gz → 1.4.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {muse_code_msp-1.4.11/src/muse_code_msp.egg-info → muse_code_msp-1.4.12}/PKG-INFO +1 -1
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/pyproject.toml +1 -1
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/src/muse_code_msp/__init__.py +142 -35
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/src/muse_code_msp/experimental/__init__.py +320 -58
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12/src/muse_code_msp.egg-info}/PKG-INFO +1 -1
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/LICENSE +0 -0
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/README.md +0 -0
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/setup.cfg +0 -0
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/src/muse_code_msp/py.typed +0 -0
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/src/muse_code_msp.egg-info/SOURCES.txt +0 -0
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/src/muse_code_msp.egg-info/dependency_links.txt +0 -0
- {muse_code_msp-1.4.11 → muse_code_msp-1.4.12}/src/muse_code_msp.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: muse-code-msp
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.12
|
|
4
4
|
Summary: Generated Python wire types for the Muse Session Protocol (MSP). No hand-written protocol types, ever.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/meta-models/muse-code-sdk
|
|
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
|
|
6
6
|
[project]
|
|
7
7
|
name = "muse-code-msp"
|
|
8
|
-
version = "1.4.
|
|
8
|
+
version = "1.4.12"
|
|
9
9
|
description = "Generated Python wire types for the Muse Session Protocol (MSP). No hand-written protocol types, ever."
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -7,17 +7,20 @@ from __future__ import annotations
|
|
|
7
7
|
|
|
8
8
|
from typing import Any, Final, Literal, TypedDict
|
|
9
9
|
|
|
10
|
-
SCHEMA_FINGERPRINT: Final[str] = "sha256:
|
|
10
|
+
SCHEMA_FINGERPRINT: Final[str] = "sha256:cfdb6d2525601b9bac76584ccb0610ab3a5539b5e4f51141f079b99b39fcb4e0"
|
|
11
11
|
SCHEMA_VERSION: Final[int] = 1
|
|
12
12
|
EXPERIMENTAL: Final[bool] = False
|
|
13
|
-
REQUIRED_HOST_VERSION: Final[str] = "1.4.
|
|
13
|
+
REQUIRED_HOST_VERSION: Final[str] = "1.4.12"
|
|
14
14
|
|
|
15
|
+
# How long a rule created by an approval decision lasts. The set is open, so newer hosts may send other values.
|
|
15
16
|
ApprovalAmendmentDurability = str # open enum: unknown values stay representable
|
|
16
17
|
APPROVAL_AMENDMENT_DURABILITY_KNOWN_VALUES: Final[tuple[str, ...]] = ("session", "localPersistent",)
|
|
17
18
|
|
|
19
|
+
# How long a grant made by a choice lasts. The set is open, so newer hosts may send other values.
|
|
18
20
|
ApprovalChoiceScope = str # open enum: unknown values stay representable
|
|
19
21
|
APPROVAL_CHOICE_SCOPE_KNOWN_VALUES: Final[tuple[str, ...]] = ("once", "session", "localPersistent",)
|
|
20
22
|
|
|
23
|
+
# The kind of decision a choice applies or an approval received. The set is open, so newer hosts may send values this version does not list.
|
|
21
24
|
ApprovalDecision = str # open enum: unknown values stay representable
|
|
22
25
|
APPROVAL_DECISION_KNOWN_VALUES: Final[tuple[str, ...]] = ("approved", "approvedForSession", "approvedPolicyAmendment", "denied", "deniedPolicyAmendment", "timedOut", "abort",)
|
|
23
26
|
|
|
@@ -32,12 +35,15 @@ APPROVAL_MODE_APPLY_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("completed",
|
|
|
32
35
|
ApprovalModeSource = str # open enum: unknown values stay representable
|
|
33
36
|
APPROVAL_MODE_SOURCE_KNOWN_VALUES: Final[tuple[str, ...]] = ("startup", "replay", "approvalReconfigure",)
|
|
34
37
|
|
|
38
|
+
# The result of saving a granted rule to the local policy store. The set is open, so newer hosts may send other values.
|
|
35
39
|
ApprovalPersistenceStatus = str # open enum: unknown values stay representable
|
|
36
40
|
APPROVAL_PERSISTENCE_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("succeeded", "failed",)
|
|
37
41
|
|
|
42
|
+
# Whether an approval's final decision lets the action run. The set is open, so newer hosts may send other values.
|
|
38
43
|
ApprovalPolicyResult = str # open enum: unknown values stay representable
|
|
39
44
|
APPROVAL_POLICY_RESULT_KNOWN_VALUES: Final[tuple[str, ...]] = ("allow", "deny",)
|
|
40
45
|
|
|
46
|
+
# Who or what made an approval's final decision. The set is open, so newer hosts may send other values.
|
|
41
47
|
ApprovalResolvedBy = str # open enum: unknown values stay representable
|
|
42
48
|
APPROVAL_RESOLVED_BY_KNOWN_VALUES: Final[tuple[str, ...]] = ("user", "policy", "llmJudge",)
|
|
43
49
|
|
|
@@ -49,7 +55,7 @@ ATTENTION_FLAG_KNOWN_VALUES: Final[tuple[str, ...]] = ("approvalPending", "input
|
|
|
49
55
|
BackgroundInitiator = str # open enum: unknown values stay representable
|
|
50
56
|
BACKGROUND_INITIATOR_KNOWN_VALUES: Final[tuple[str, ...]] = ("user", "timeout",)
|
|
51
57
|
|
|
52
|
-
# A grantable capability name. Open: the
|
|
58
|
+
# A grantable capability name. Open: the experimental-only `rawLog` entry joins the stable domain as an additive open-enum extension when it graduates — closed would make that a retype.
|
|
53
59
|
CapabilityName = str # open enum: unknown values stay representable
|
|
54
60
|
CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "sessionRename",)
|
|
55
61
|
|
|
@@ -61,7 +67,7 @@ CODE_MODE_LANGUAGE_KNOWN_VALUES: Final[tuple[str, ...]] = ("javascript",)
|
|
|
61
67
|
CodeModeOutputStream = str # open enum: unknown values stay representable
|
|
62
68
|
CODE_MODE_OUTPUT_STREAM_KNOWN_VALUES: Final[tuple[str, ...]] = ("transcript",)
|
|
63
69
|
|
|
64
|
-
# The ack-status vocabulary: `"accepted"` for every admitted command; `session/compact` alone may answer `"noop"`. Closed: the protocol
|
|
70
|
+
# The ack-status vocabulary: `"accepted"` for every admitted command; `session/compact` alone may answer `"noop"`. Closed: the protocol defines exactly these two values, so SDK clients get a discriminated type and validation catches a wrong status — and a client that received a third value would have been told nothing it can act on, unlike [`TurnStartDisposition`], where "acked, not otherwise classified" is a usable reading.
|
|
65
71
|
CommandAckStatus = Literal["accepted", "noop"]
|
|
66
72
|
|
|
67
73
|
# The ack `status`: `accepted` for every admitted command. `session/compact` is the one method that may additionally answer `noop` ([`crate::method::runtime::CompactStatus`]); no other command uses another status.
|
|
@@ -104,7 +110,7 @@ COMPUTER_USE_SETUP_PHASE_KNOWN_VALUES: Final[tuple[str, ...]] = ("dormant", "inP
|
|
|
104
110
|
ContextPressureLevel = str # open enum: unknown values stay representable
|
|
105
111
|
CONTEXT_PRESSURE_LEVEL_KNOWN_VALUES: Final[tuple[str, ...]] = ("normal", "warning", "blocked",)
|
|
106
112
|
|
|
107
|
-
# A stable `error.data.kind` category: camelCase, the value clients branch on. Open:
|
|
113
|
+
# A stable `error.data.kind` category: camelCase, the value clients branch on. Open: new kinds are added as their methods land, and a new `kind` is additive only because this domain is declared open.
|
|
108
114
|
ErrorKind = str # open enum: unknown values stay representable
|
|
109
115
|
ERROR_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("parseError", "invalidRequest", "notInitialized", "alreadyInitialized", "methodNotFound", "invalidParams", "experimentalRequired", "internal", "pageEventTooLarge", "outputResultTooLarge", "overloaded", "inputTooLarge", "capabilityRequired", "notFound", "interrupted", "cancelled", "sessionNotFound", "sessionInUse", "sessionAmbiguous", "forkBoundaryInvalid", "sessionNotLoaded", "sessionStreamMismatch", "commandRejected", "backpressured", "skillNotFound", "computerUseUnavailable", "marketplaceNotFound", "pluginNotFound", "marketplaceAlreadyExists", "pluginMutationsDisabled", "uploadNotFound", "viewTruncated", "outputUnavailable", "boundaryPruned", "boundaryUnusable", "noBoundary", "approvalNotFound", "approvalAlreadyResolved", "approvalChoiceInvalid", "approvalRequirementStale", "approvalReviewerUnavailable", "userInputNotFound", "userInputAlreadySettled", "userInputAnswerInvalid",)
|
|
110
116
|
|
|
@@ -119,7 +125,7 @@ FEEDBACK_SUBMIT_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("uploaded", "rec
|
|
|
119
125
|
HistoryMode = str # open enum: unknown values stay representable
|
|
120
126
|
HISTORY_MODE_KNOWN_VALUES: Final[tuple[str, ...]] = ("anchoredSnapshot", "inline", "snapshot", "none",)
|
|
121
127
|
|
|
122
|
-
# Why a result served `history.mode: "none"
|
|
128
|
+
# Why a result served `history.mode: "none"`: the server's typed reason for serving no history. Open on the client side: an absent (older server) or unknown (newer server) value decodes conservatively as an unknown reason, and `viewCursor` text never substitutes for it.
|
|
123
129
|
HistoryNoneReason = str # open enum: unknown values stay representable
|
|
124
130
|
HISTORY_NONE_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("excluded", "cursorSuffix", "historyBudget", "projectionUnavailable", "projectionReadLimit",)
|
|
125
131
|
|
|
@@ -128,7 +134,7 @@ HistoryPreference = Literal["auto", "inline", "snapshot", "anchored"]
|
|
|
128
134
|
|
|
129
135
|
# Hook event names: the lowercase-first-letter spelling of every `HookEventKind::all()` variant. Open: a future event value is additive.
|
|
130
136
|
HookEventName = str # open enum: unknown values stay representable
|
|
131
|
-
HOOK_EVENT_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("sessionStart", "userPromptSubmit", "preToolUse", "permissionRequest", "postToolUse", "preCompact", "postCompact", "subagentStart", "subagentStop", "stop", "sessionEnd", "notification", "postToolUseFailure", "stopFailure", "postToolBatch", "interrupt", "sessionFork", "toolUseStart",
|
|
137
|
+
HOOK_EVENT_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("sessionStart", "userPromptSubmit", "preToolUse", "permissionRequest", "postToolUse", "preLLMCall", "postLLMCall", "preCompact", "postCompact", "subagentStart", "subagentStop", "stop", "sessionEnd", "notification", "postToolUseFailure", "stopFailure", "postToolBatch", "interrupt", "sessionFork", "toolUseStart",)
|
|
132
138
|
|
|
133
139
|
# A hook row's origin: the config `HookSourceKind` values plus plugin-contributed. Open: a future origin is additive.
|
|
134
140
|
HookHandlerKind = str # open enum: unknown values stay representable
|
|
@@ -143,7 +149,7 @@ IfBusy = Literal["queue", "steer", "replace"]
|
|
|
143
149
|
|
|
144
150
|
# The eleven v1 item kinds plus post-v1 kinds. Open: a new kind is additive evolution, and clients MUST render unknown kinds generically.
|
|
145
151
|
ItemKind = str # open enum: unknown values stay representable
|
|
146
|
-
ITEM_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("userMessage", "agentMessage", "reasoning", "toolCall", "userShell", "subagent", "workflow", "reminderChild", "compaction", "hookRun", "sideChat", "webSearch", "monitorFeed", "damagedRange", "scheduledFire",)
|
|
152
|
+
ITEM_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("userMessage", "agentMessage", "reasoning", "toolCall", "userShell", "subagent", "workflow", "reminderChild", "compaction", "hookRun", "sideChat", "webSearch", "monitorFeed", "damagedRange", "scheduledFire", "backgroundTerminalCompletion", "overdueNotice",)
|
|
147
153
|
|
|
148
154
|
# The `item/readOutput` content encoding. Closed: text media is ALWAYS `utf8` and binary media `base64`; a third value would change the client's decode contract.
|
|
149
155
|
ItemReadOutputEncoding = Literal["utf8", "base64"]
|
|
@@ -179,7 +185,7 @@ OUTPUT_REF_AVAILABILITY_KNOWN_VALUES: Final[tuple[str, ...]] = ("available", "mi
|
|
|
179
185
|
PendingRequestKind = str # open enum: unknown values stay representable
|
|
180
186
|
PENDING_REQUEST_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("approval", "userInput",)
|
|
181
187
|
|
|
182
|
-
# The server runtime's platform family; may differ from the client's. Closed: the protocol
|
|
188
|
+
# The server runtime's platform family; may differ from the client's. Closed: the protocol fixes the value set, so widening it is a deliberate, gate-visible protocol change rather than a silent addition (a later `Closed`→`Open` flip is itself additive).
|
|
183
189
|
PlatformFamily = Literal["unix", "windows"]
|
|
184
190
|
|
|
185
191
|
# The server's operating system. Closed, for the same reason as [`PlatformFamily`].
|
|
@@ -206,7 +212,7 @@ REASONING_EFFORT_CHANGE_SOURCE_KNOWN_VALUES: Final[tuple[str, ...]] = ("user", "
|
|
|
206
212
|
RecapFailureReason = str # open enum: unknown values stay representable
|
|
207
213
|
RECAP_FAILURE_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("providerFailed",)
|
|
208
214
|
|
|
209
|
-
# `recap/completed` outcome: the terminal vocabulary, camelCase
|
|
215
|
+
# `recap/completed` outcome: the terminal vocabulary, in camelCase. **Open**: a server-produced result vocabulary.
|
|
210
216
|
RecapOutcome = str # open enum: unknown values stay representable
|
|
211
217
|
RECAP_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("completed", "failed", "cancelled", "timedOut",)
|
|
212
218
|
|
|
@@ -305,6 +311,10 @@ STATUS_HEALTH_LEVEL_KNOWN_VALUES: Final[tuple[str, ...]] = ("ok", "waiting", "de
|
|
|
305
311
|
SubagentControlStatus = str # open enum: unknown values stay representable
|
|
306
312
|
SUBAGENT_CONTROL_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("accepted", "starting", "running", "resultReady", "closing", "closed", "recoveryPending", "manualReconciliation",)
|
|
307
313
|
|
|
314
|
+
# A task row's execution mode. Open: clients MUST ignore unknown modes.
|
|
315
|
+
TaskExecutionMode = str # open enum: unknown values stay representable
|
|
316
|
+
TASK_EXECUTION_MODE_KNOWN_VALUES: Final[tuple[str, ...]] = ("foreground", "background",)
|
|
317
|
+
|
|
308
318
|
# A task row's status. Open: a future state is additive, and clients MUST ignore unknown statuses.
|
|
309
319
|
TaskListStatus = str # open enum: unknown values stay representable
|
|
310
320
|
TASK_LIST_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("inProgress",)
|
|
@@ -339,20 +349,22 @@ TURN_TERMINAL_KNOWN_VALUES: Final[tuple[str, ...]] = ("completed", "failed", "ca
|
|
|
339
349
|
# The only scalar alternative to a known effort array. Kept as a closed singleton so arbitrary strings and uppercase spellings fail decoding.
|
|
340
350
|
UnknownModelReasoningEffortVariants = Literal["unknown"]
|
|
341
351
|
|
|
352
|
+
# How a user-input prompt settled. More values may be added, so handle values you do not recognize.
|
|
342
353
|
UserInputOutcome = str # open enum: unknown values stay representable
|
|
343
354
|
USER_INPUT_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("answered", "cancelled", "interrupted", "clarified", "timedOut", "aborted",)
|
|
344
355
|
|
|
356
|
+
# Whether a question takes one option or several.
|
|
345
357
|
UserInputSelectionMode = Literal["single", "multiple"]
|
|
346
358
|
|
|
347
359
|
# Version-control system of a branch observation. Open.
|
|
348
360
|
Vcs = str # open enum: unknown values stay representable
|
|
349
361
|
VCS_KNOWN_VALUES: Final[tuple[str, ...]] = ("git", "sapling",)
|
|
350
362
|
|
|
351
|
-
# The `view/page` request-mode anchor. Declared **open**: the protocol
|
|
363
|
+
# The `view/page` request-mode anchor. Declared **open**: the protocol spells it "open string enum, v1 value `latestCompaction`".
|
|
352
364
|
ViewPageAnchor = str # open enum: unknown values stay representable
|
|
353
365
|
VIEW_PAGE_ANCHOR_KNOWN_VALUES: Final[tuple[str, ...]] = ("latestCompaction",)
|
|
354
366
|
|
|
355
|
-
# The `view/page` paging direction. Closed: the protocol
|
|
367
|
+
# The `view/page` paging direction. Closed: the protocol spells exactly two values and a third would change the paging contract.
|
|
356
368
|
ViewPageDirection = Literal["forward", "backward"]
|
|
357
369
|
|
|
358
370
|
# Which control to apply to the child's current attempt. Closed on the wire: an unknown value is `-32602 invalidParams`.
|
|
@@ -362,6 +374,8 @@ WorkflowChildAction = Literal["skip", "retry"]
|
|
|
362
374
|
ModelReasoningEffortVariants = list[ReasoningEffort] | UnknownModelReasoningEffortVariants
|
|
363
375
|
|
|
364
376
|
class ApprovalAmendment(TypedDict):
|
|
377
|
+
"""The policy rule a decision created, in display form; the full rule is not included."""
|
|
378
|
+
|
|
365
379
|
durability: ApprovalAmendmentDurability
|
|
366
380
|
rulePreview: str
|
|
367
381
|
|
|
@@ -371,6 +385,8 @@ class _ApprovalChangeBase(TypedDict):
|
|
|
371
385
|
|
|
372
386
|
|
|
373
387
|
class ApprovalChange(_ApprovalChangeBase, total=False):
|
|
388
|
+
"""The change an `approval/updated` event reports. `kind` says what happened, and only the fields for that kind are present."""
|
|
389
|
+
|
|
374
390
|
choiceId: str
|
|
375
391
|
decision: ApprovalDecision
|
|
376
392
|
executable: bool
|
|
@@ -388,10 +404,50 @@ class _ApprovalChoiceBase(TypedDict):
|
|
|
388
404
|
|
|
389
405
|
|
|
390
406
|
class ApprovalChoice(_ApprovalChoiceBase, total=False):
|
|
407
|
+
"""One option the server offers for deciding an approval. Clients pick one and send its `choiceId` in `approval/decide`; they never build their own."""
|
|
408
|
+
|
|
391
409
|
acceptsFeedback: bool
|
|
392
410
|
rulePreview: str
|
|
393
411
|
|
|
394
412
|
|
|
413
|
+
class ApprovalCuaCardFacts(TypedDict, total=False):
|
|
414
|
+
"""One Computer Use card's facts. Empty collections and absent rows are omitted, never `null`."""
|
|
415
|
+
|
|
416
|
+
page: ApprovalCuaPage
|
|
417
|
+
steps: list[ApprovalCuaStep]
|
|
418
|
+
windowTitle: str
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
class ApprovalCuaPage(TypedDict):
|
|
422
|
+
"""The page's full host, no path or query."""
|
|
423
|
+
|
|
424
|
+
host: str
|
|
425
|
+
hostAscii: str
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
class ApprovalCuaPoint(TypedDict):
|
|
429
|
+
"""A point in the model's 0–1000 coordinates."""
|
|
430
|
+
|
|
431
|
+
x: int
|
|
432
|
+
y: int
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
class _ApprovalCuaStepBase(TypedDict):
|
|
436
|
+
action: str
|
|
437
|
+
effect: str
|
|
438
|
+
kind: str
|
|
439
|
+
step: int
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
class ApprovalCuaStep(_ApprovalCuaStepBase, total=False):
|
|
443
|
+
"""One consequential step. A client renders \"Step N: <action> <roleWord> \"<label>\" — <effect>\"; a key step names its `chord`, and only a step with a `point` (and no label or chord) reads \"at x,y\"."""
|
|
444
|
+
|
|
445
|
+
chord: str
|
|
446
|
+
label: str
|
|
447
|
+
point: ApprovalCuaPoint
|
|
448
|
+
roleWord: str
|
|
449
|
+
|
|
450
|
+
|
|
395
451
|
class _ApprovalDecideParamsBase(TypedDict):
|
|
396
452
|
approvalId: str
|
|
397
453
|
choiceId: str
|
|
@@ -433,6 +489,8 @@ class _ApprovalOriginBase(TypedDict):
|
|
|
433
489
|
|
|
434
490
|
|
|
435
491
|
class ApprovalOrigin(_ApprovalOriginBase, total=False):
|
|
492
|
+
"""What triggered a tool action, shown so the user can judge it. It is display-only and untrusted, and policy rules never match on it."""
|
|
493
|
+
|
|
436
494
|
command: str
|
|
437
495
|
url: str
|
|
438
496
|
|
|
@@ -458,11 +516,12 @@ class _ApprovalRequestParamsBase(TypedDict):
|
|
|
458
516
|
class ApprovalRequestParams(_ApprovalRequestParamsBase, total=False):
|
|
459
517
|
"""Full params shared by `approval/request` and `approval/requested`."""
|
|
460
518
|
|
|
519
|
+
cuaCardFacts: ApprovalCuaCardFacts
|
|
461
520
|
subagentOrigin: ApprovalSubagentOrigin
|
|
462
521
|
|
|
463
522
|
|
|
464
523
|
class ApprovalRequirementRef(TypedDict):
|
|
465
|
-
"""
|
|
524
|
+
"""Identifies one requirement of an approval: for a `shell` approval, one stage. A client sends it back as `requirementId` in `approval/decide`, and a stale-requirement error names the current one."""
|
|
466
525
|
|
|
467
526
|
approvalId: str
|
|
468
527
|
sourceIndex: int
|
|
@@ -508,10 +567,14 @@ class _ApprovalStageBase(TypedDict):
|
|
|
508
567
|
|
|
509
568
|
|
|
510
569
|
class ApprovalStage(_ApprovalStageBase, total=False):
|
|
570
|
+
"""One stage of a `shell` approval: a single command from the pipeline or command list, approved separately from the others."""
|
|
571
|
+
|
|
511
572
|
suggestedPrefix: ApprovalSuggestedPrefix
|
|
512
573
|
|
|
513
574
|
|
|
514
575
|
class ApprovalStageEvidence(TypedDict):
|
|
576
|
+
"""How one stage of a `shell` approval was resolved when the decision became final."""
|
|
577
|
+
|
|
515
578
|
argv: list[str]
|
|
516
579
|
position: int
|
|
517
580
|
requirementId: ApprovalRequirementRef
|
|
@@ -524,6 +587,8 @@ class _ApprovalStageResolutionBase(TypedDict):
|
|
|
524
587
|
|
|
525
588
|
|
|
526
589
|
class ApprovalStageResolution(_ApprovalStageResolutionBase, total=False):
|
|
590
|
+
"""Whether a shell stage still needs a decision, or how it was satisfied. Satisfied stages are included so a client can show progress."""
|
|
591
|
+
|
|
527
592
|
argvPrefix: list[str]
|
|
528
593
|
diagnostic: str
|
|
529
594
|
|
|
@@ -557,6 +622,8 @@ class ApprovalSubject(_ApprovalSubjectBase, total=False):
|
|
|
557
622
|
|
|
558
623
|
|
|
559
624
|
class ApprovalSuggestedPrefix(TypedDict):
|
|
625
|
+
"""A suggested always-allow rule for a shell stage: commands starting with `argvPrefix` would run in this workspace without asking."""
|
|
626
|
+
|
|
560
627
|
argvPrefix: list[str]
|
|
561
628
|
label: str
|
|
562
629
|
|
|
@@ -578,6 +645,22 @@ class ApprovalUpdatedParams(_ApprovalUpdatedParamsBase, total=False):
|
|
|
578
645
|
subagentOrigin: ApprovalSubagentOrigin
|
|
579
646
|
|
|
580
647
|
|
|
648
|
+
class BackgroundTerminalCompletion(TypedDict):
|
|
649
|
+
"""`backgroundTerminalCompletion`: the five facts the Finished cell renders. The fold reads them from the inbox terminal record and the backgrounded call it names; every member is required (empty output serializes as `\"\"`, never absent)."""
|
|
650
|
+
|
|
651
|
+
command: str
|
|
652
|
+
output: str
|
|
653
|
+
outputTruncated: bool
|
|
654
|
+
terminalStatus: str
|
|
655
|
+
toolCallId: str
|
|
656
|
+
|
|
657
|
+
|
|
658
|
+
class BlockedPrompt(TypedDict):
|
|
659
|
+
"""The cold recall seed on `session/resume` and `session/read` results: at most one, the latest blocked Main prompt — exactly the host's mirror of `prompt_recovery::replay::ReplayInput`'s choice."""
|
|
660
|
+
|
|
661
|
+
text: str
|
|
662
|
+
|
|
663
|
+
|
|
581
664
|
class _BranchStateBase(TypedDict):
|
|
582
665
|
branch: str | None
|
|
583
666
|
workspaceRoot: str
|
|
@@ -589,6 +672,12 @@ class BranchState(_BranchStateBase, total=False):
|
|
|
589
672
|
vcs: Vcs
|
|
590
673
|
|
|
591
674
|
|
|
675
|
+
class CheckpointBoundary(TypedDict):
|
|
676
|
+
"""A served checkpoint-prune boundary: `through_item_id` names the last first-opened item that opened strictly before the boundary checkpoint event."""
|
|
677
|
+
|
|
678
|
+
throughItemId: str
|
|
679
|
+
|
|
680
|
+
|
|
592
681
|
class ClientCapabilities(TypedDict, total=False):
|
|
593
682
|
"""The client's requested capability posture. Every member defaults; an absent `capabilities` object means all defaults."""
|
|
594
683
|
|
|
@@ -754,7 +843,7 @@ class ContextUsage(_ContextUsageBase, total=False):
|
|
|
754
843
|
|
|
755
844
|
|
|
756
845
|
class CronReceipt(TypedDict, total=False):
|
|
757
|
-
"""Cron's `details` payload. Every field a family owns lives here, under the container's one `details` key, rather than flat beside the discriminators
|
|
846
|
+
"""Cron's `details` payload. Every field a family owns lives here, under the container's one `details` key, rather than flat beside the discriminators. Each is a **bounded machine fact**: scalars, short identifiers and a small fixed-shape array of those."""
|
|
758
847
|
|
|
759
848
|
jobId: str
|
|
760
849
|
jobs: list[CronReceiptJob]
|
|
@@ -762,7 +851,7 @@ class CronReceipt(TypedDict, total=False):
|
|
|
762
851
|
|
|
763
852
|
|
|
764
853
|
class CronReceiptJob(TypedDict):
|
|
765
|
-
"""One row of the Cron `list` receipt's `jobs` array. Server order, and **`active` + `firing` rows only
|
|
854
|
+
"""One row of the Cron `list` receipt's `jobs` array. Server order, and **`active` + `firing` rows only**. A small fixed-shape array of scalars, which is what keeps it a bounded machine fact."""
|
|
766
855
|
|
|
767
856
|
jobId: str
|
|
768
857
|
nextFireAtMs: int
|
|
@@ -782,7 +871,7 @@ class _CumulativeTokenUsageBase(TypedDict):
|
|
|
782
871
|
|
|
783
872
|
|
|
784
873
|
class CumulativeTokenUsage(_CumulativeTokenUsageBase, total=False):
|
|
785
|
-
"""Session running totals of counted-once usage.
|
|
874
|
+
"""Session running totals of counted-once usage. The cache splits and server-computed `cost` join the counters. The counters stay accumulate-only; `cost` is the documented exception — it may move either way on price re-adoption and is labeled estimate. `Copy` was dropped for the `cost` member."""
|
|
786
875
|
|
|
787
876
|
cacheReadTokens: int
|
|
788
877
|
cacheWriteTokens: int
|
|
@@ -1054,6 +1143,7 @@ class Item(_ItemBase, total=False):
|
|
|
1054
1143
|
attachments: list[MessageAttachment]
|
|
1055
1144
|
background: bool
|
|
1056
1145
|
backgroundInitiator: BackgroundInitiator
|
|
1146
|
+
backgroundTerminalCompletion: BackgroundTerminalCompletion
|
|
1057
1147
|
blocking: bool
|
|
1058
1148
|
callId: str
|
|
1059
1149
|
childPromptRefs: list[OutputRef]
|
|
@@ -1165,7 +1255,7 @@ class _ItemReadOutputParamsBase(TypedDict):
|
|
|
1165
1255
|
|
|
1166
1256
|
|
|
1167
1257
|
class ItemReadOutputParams(_ItemReadOutputParamsBase, total=False):
|
|
1168
|
-
"""`item/readOutput` params: byte-ranged fetch of stored full output that the view truncated
|
|
1258
|
+
"""`item/readOutput` params: byte-ranged fetch of stored full output that the view truncated, via the item's `outputRef`. Read-only; works on loaded and unloaded sessions; no lease."""
|
|
1169
1259
|
|
|
1170
1260
|
lengthBytes: int
|
|
1171
1261
|
offsetBytes: int
|
|
@@ -1428,7 +1518,7 @@ class _PendingRequestPointerBase(TypedDict):
|
|
|
1428
1518
|
|
|
1429
1519
|
|
|
1430
1520
|
class PendingRequestPointer(_PendingRequestPointerBase, total=False):
|
|
1431
|
-
"""A late-joiner pointer at an unsettled server-initiated request. The full payloads arrive as re-issued server-to-client requests right after a `session/resume` response; `session/read` never re-issues them.
|
|
1521
|
+
"""A late-joiner pointer at an unsettled server-initiated request. The full payloads arrive as re-issued server-to-client requests right after a `session/resume` response; `session/read` never re-issues them. The protocol defines two kind-discriminated entry shapes (`{kind: \"approval\", approvalId, viewCursor}` / `{kind: \"userInput\", userInputId, viewCursor}`). This type is one flat object with both ids optional, as for `ApprovalSubject` and `TurnInputPart`, because the v1 model names no object-variant union; the serialized JSON is the same, but the published schema also accepts `{\"kind\":\"approval\",\"userInputId\":…}` and an entry carrying no id at all. Unlike `TurnInputPart.type`, `kind` here is an OPEN enum."""
|
|
1432
1522
|
|
|
1433
1523
|
approvalId: str
|
|
1434
1524
|
userInputId: str
|
|
@@ -1790,7 +1880,7 @@ class SessionCompactResult(_SessionCompactResultBase, total=False):
|
|
|
1790
1880
|
|
|
1791
1881
|
|
|
1792
1882
|
class SessionConfig(TypedDict, total=False):
|
|
1793
|
-
"""The open configuration extension object shared by `session/start` and `session/resume`. Unknown keys are ignored on the wire, never rejected: the live decoder
|
|
1883
|
+
"""The open configuration extension object shared by `session/start` and `session/resume`. Unknown keys are ignored on the wire, never rejected: the live decoder tolerates them, and no exported bundle carries `additionalProperties: false`. The Rust typed model's `deny_unknown_fields` is internal and never exported — the closedness export applies nowhere, and the `x-msp-closed` opt-in mechanism stays inert. Recognized `mcpServers` values are typed and validated before they leave the wire boundary."""
|
|
1794
1884
|
|
|
1795
1885
|
mcpServers: dict[str, SessionMcpServerConfig]
|
|
1796
1886
|
|
|
@@ -1848,6 +1938,7 @@ class _SessionHistoryBase(TypedDict):
|
|
|
1848
1938
|
class SessionHistory(_SessionHistoryBase, total=False):
|
|
1849
1939
|
"""The `history` envelope shared by `session/resume`, `session/fork`, and `session/read`."""
|
|
1850
1940
|
|
|
1941
|
+
checkpointBoundary: CheckpointBoundary
|
|
1851
1942
|
noneReason: HistoryNoneReason
|
|
1852
1943
|
|
|
1853
1944
|
|
|
@@ -1997,6 +2088,7 @@ class _SessionReadResultBase(TypedDict):
|
|
|
1997
2088
|
class SessionReadResult(_SessionReadResultBase, total=False):
|
|
1998
2089
|
"""`session/read` result. The `viewCursor` is the fold head at read time — a point-in-time read, immediately stale if a foreign host is appending."""
|
|
1999
2090
|
|
|
2091
|
+
blockedPrompt: BlockedPrompt
|
|
2000
2092
|
lastTurn: LastTurn
|
|
2001
2093
|
recoveryObservation: RecoveryObservation
|
|
2002
2094
|
|
|
@@ -2056,6 +2148,7 @@ class _SessionResumeResultBase(TypedDict):
|
|
|
2056
2148
|
class SessionResumeResult(_SessionResumeResultBase, total=False):
|
|
2057
2149
|
"""`session/resume` result."""
|
|
2058
2150
|
|
|
2151
|
+
blockedPrompt: BlockedPrompt
|
|
2059
2152
|
lastTurn: LastTurn
|
|
2060
2153
|
|
|
2061
2154
|
|
|
@@ -2356,7 +2449,7 @@ class _SnapshotStateBase(TypedDict):
|
|
|
2356
2449
|
|
|
2357
2450
|
|
|
2358
2451
|
class SnapshotState(_SnapshotStateBase, total=False):
|
|
2359
|
-
"""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.
|
|
2452
|
+
"""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."""
|
|
2360
2453
|
|
|
2361
2454
|
contextUsage: ContextUsage
|
|
2362
2455
|
name: str | None
|
|
@@ -2538,9 +2631,11 @@ class _TaskListEntryBase(TypedDict):
|
|
|
2538
2631
|
|
|
2539
2632
|
|
|
2540
2633
|
class TaskListEntry(_TaskListEntryBase, total=False):
|
|
2541
|
-
"""One
|
|
2634
|
+
"""One task inventory row. The row is the stable contract: `kind` and `status` stay open so a future state extends them without breaking clients."""
|
|
2542
2635
|
|
|
2543
2636
|
backgroundInitiator: BackgroundInitiator
|
|
2637
|
+
command: str
|
|
2638
|
+
executionMode: TaskExecutionMode
|
|
2544
2639
|
startedAt: str
|
|
2545
2640
|
tool: str
|
|
2546
2641
|
|
|
@@ -2552,7 +2647,7 @@ class TaskListParams(TypedDict):
|
|
|
2552
2647
|
|
|
2553
2648
|
|
|
2554
2649
|
class TaskListResult(TypedDict):
|
|
2555
|
-
"""`task/list` result: one row per
|
|
2650
|
+
"""`task/list` result: one row per live workload, background and foreground, oldest first; empty when nothing is running."""
|
|
2556
2651
|
|
|
2557
2652
|
tasks: list[TaskListEntry]
|
|
2558
2653
|
|
|
@@ -2691,7 +2786,7 @@ class _TurnInputPartBase(TypedDict):
|
|
|
2691
2786
|
|
|
2692
2787
|
|
|
2693
2788
|
class TurnInputPart(_TurnInputPartBase, total=False):
|
|
2694
|
-
"""One ordered content part of a turn submission. File mentions are text, not a part type: write `@relative/path` in a text part. A structured `mention` part is reserved and currently rejected, and an unknown part type is `invalidParams` — which is what closes [`TurnInputPartType`]. Modelled as a discriminated flat object rather than a Rust `enum`, the convention [`crate::view::approval::ApprovalSubject`] already established for a wire union in this crate: the v1 schema model names no object-variant union shape and fails closed on one. The serialized JSON is the
|
|
2789
|
+
"""One ordered content part of a turn submission. File mentions are text, not a part type: write `@relative/path` in a text part. A structured `mention` part is reserved and currently rejected, and an unknown part type is `invalidParams` — which is what closes [`TurnInputPartType`]. Modelled as a discriminated flat object rather than a Rust `enum`, the convention [`crate::view::approval::ApprovalSubject`] already established for a wire union in this crate: the v1 schema model names no object-variant union shape and fails closed on one. The serialized JSON is the same either way; what a flat object cannot express is \"`mediaType` is required exactly when `type` is `image`\"."""
|
|
2695
2790
|
|
|
2696
2791
|
arguments: str
|
|
2697
2792
|
base64Data: str
|
|
@@ -2879,14 +2974,14 @@ class TurnUserShell(TypedDict):
|
|
|
2879
2974
|
|
|
2880
2975
|
|
|
2881
2976
|
class UnframedViewNotification(TypedDict):
|
|
2882
|
-
"""One element of a `view/page` result's `events` array: an **unframed view notification**
|
|
2977
|
+
"""One element of a `view/page` result's `events` array: an **unframed view notification** — the nested pair `{\"method\", \"params\"}`, which is the live notification minus `jsonrpc` and `emittedAtMs`, with nothing lifted out of `params` and nothing spliced into it. `view/page` and `muse exec --json` share this one definition, so the two surfaces cannot drift."""
|
|
2883
2978
|
|
|
2884
2979
|
method: str
|
|
2885
2980
|
params: UnframedViewNotificationParams
|
|
2886
2981
|
|
|
2887
2982
|
|
|
2888
2983
|
class UnframedViewNotificationParams(TypedDict):
|
|
2889
|
-
"""The `params` of an unframed view notification. Declares the base members every view notification carries, and stays **open** for the event-specific fields
|
|
2984
|
+
"""The `params` of an unframed view notification. Declares the base members every view notification carries, and stays **open** for the event-specific fields each event type adds. The v1 schema model names no method-correlated union (the `events` element's `params` arm is selected by its sibling `method`), so the per-event arms cannot be expressed here without one, and an uncorrelated union of them could reject a real page element, which a published schema must not do. `sourceRange` is required here and not optional: `view/page` serves durable-sourced events only, and durable-sourced is *defined* as carrying a `sourceRange` — the ephemeral-sourced exemption applies to `item/delta`, which `view/page` never replays."""
|
|
2890
2985
|
|
|
2891
2986
|
sessionId: str
|
|
2892
2987
|
sourceRange: SourceRange
|
|
@@ -2904,6 +2999,8 @@ class _UserInputAnswerBase(TypedDict):
|
|
|
2904
2999
|
|
|
2905
3000
|
|
|
2906
3001
|
class UserInputAnswer(_UserInputAnswerBase, total=False):
|
|
3002
|
+
"""One question's answer, as sent in `userInput/answer` or `userInput/interrupt` and as recorded in `userInput/settled`."""
|
|
3003
|
+
|
|
2907
3004
|
freeText: str
|
|
2908
3005
|
note: str
|
|
2909
3006
|
selectedLabel: str
|
|
@@ -2911,7 +3008,7 @@ class UserInputAnswer(_UserInputAnswerBase, total=False):
|
|
|
2911
3008
|
|
|
2912
3009
|
|
|
2913
3010
|
class UserInputAnswerParams(TypedDict):
|
|
2914
|
-
"""`userInput/answer` params: answer every question. Each answer carries `questionId` then exactly one of `selectedLabel` (single mode), `selectedLabels` (multiple mode, within min/max bounds), or `freeText` (<=500 chars); plus an optional `note` (<=500). Answers that do not match the prompt fail -32057 `userInputAnswerInvalid`. Image `attachments` are a **reserved** field in v1, rejected if sent, because the blob-upload path they reference is reserved
|
|
3011
|
+
"""`userInput/answer` params: answer every question. Each answer carries `questionId` then exactly one of `selectedLabel` (single mode), `selectedLabels` (multiple mode, within min/max bounds), or `freeText` (<=500 chars); plus an optional `note` (<=500). Answers that do not match the prompt fail -32057 `userInputAnswerInvalid`. Image `attachments` are a **reserved** field in v1, rejected if sent, because the blob-upload path they reference is also reserved."""
|
|
2915
3012
|
|
|
2916
3013
|
answers: list[UserInputAnswer]
|
|
2917
3014
|
commandId: str
|
|
@@ -2948,6 +3045,8 @@ class UserInputCancelResult(TypedDict):
|
|
|
2948
3045
|
|
|
2949
3046
|
|
|
2950
3047
|
class UserInputClarification(TypedDict):
|
|
3048
|
+
"""A free-form reply the user gives instead of choosing from the options; the model reads it and decides again."""
|
|
3049
|
+
|
|
2951
3050
|
content: str
|
|
2952
3051
|
format: str
|
|
2953
3052
|
|
|
@@ -3001,16 +3100,22 @@ class _UserInputOptionBase(TypedDict):
|
|
|
3001
3100
|
|
|
3002
3101
|
|
|
3003
3102
|
class UserInputOption(_UserInputOptionBase, total=False):
|
|
3103
|
+
"""One option offered for a question."""
|
|
3104
|
+
|
|
3004
3105
|
description: str
|
|
3005
3106
|
preview: UserInputOptionPreview
|
|
3006
3107
|
|
|
3007
3108
|
|
|
3008
3109
|
class UserInputOptionPreview(TypedDict):
|
|
3110
|
+
"""Rich content a client can show for an option. Only single-select questions carry previews."""
|
|
3111
|
+
|
|
3009
3112
|
content: str
|
|
3010
3113
|
format: str
|
|
3011
3114
|
|
|
3012
3115
|
|
|
3013
3116
|
class UserInputQuestion(TypedDict):
|
|
3117
|
+
"""One question in a user-input prompt."""
|
|
3118
|
+
|
|
3014
3119
|
header: str
|
|
3015
3120
|
id: str
|
|
3016
3121
|
options: list[UserInputOption]
|
|
@@ -3041,6 +3146,8 @@ class _UserInputSelectionBase(TypedDict):
|
|
|
3041
3146
|
|
|
3042
3147
|
|
|
3043
3148
|
class UserInputSelection(_UserInputSelectionBase, total=False):
|
|
3149
|
+
"""How many options the user may pick for a question."""
|
|
3150
|
+
|
|
3044
3151
|
maxSelections: int
|
|
3045
3152
|
minSelections: int
|
|
3046
3153
|
|
|
@@ -3312,15 +3419,15 @@ METHODS: Final[dict[str, MethodSpec]] = {
|
|
|
3312
3419
|
"hook/list": {"description": "Reads the session's installed hook rows — one per installed handler per event, config-file handlers plus plugin-contributed hooks; a query, not a command.", "params": "HookListParams", "result": "HookListResult"},
|
|
3313
3420
|
"initialize": {"description": "Opens the connection: client identification, capability requests, and the experimental opt-in; the reply carries the envelope schema version and the stable-surface fingerprint.", "params": "InitializeParams", "result": "InitializeResult"},
|
|
3314
3421
|
"item/readOutput": {"description": "Byte-ranged read of stored full output the view truncated; works on loaded and unloaded sessions and takes no lease.", "params": "ItemReadOutputParams", "result": "ItemReadOutputResult"},
|
|
3315
|
-
"media/upload": {"description": "Moves one video chunk into the session's video store; answers the
|
|
3422
|
+
"media/upload": {"description": "Moves one video chunk into the session's video store; answers the `uploadId` receipt on every chunk.", "params": "MediaUploadParams", "result": "MediaUploadResult"},
|
|
3316
3423
|
"model/list": {"description": "Reads the catalog of models the host will accept in `session/setModel`; a query, not a command.", "params": "ModelListParams", "result": "ModelListResult"},
|
|
3317
3424
|
"plugin/install": {"description": "Install one plugin from a marketplace pair or a host local path with scope (per-session, `commandId`-idempotent, hold-open; answers the installed receipt).", "params": "PluginInstallParams", "result": "PluginInstallResult"},
|
|
3318
3425
|
"plugin/list": {"description": "Reads the installed plugin records — one row per installed plugin; a query, not a command.", "params": "PluginListParams", "result": "PluginListResult"},
|
|
3319
3426
|
"plugin/marketplaceAdd": {"description": "Add a marketplace from `owner/repo`, git URL, `file://` URL, or local path (per-session, `commandId`-idempotent; answers the stored record).", "params": "PluginMarketplaceAddParams", "result": "PluginMarketplaceRecordResult"},
|
|
3320
3427
|
"plugin/marketplaceRemove": {"description": "Remove a marketplace (per-session, `commandId`-idempotent; answers the removed name).", "params": "PluginMarketplaceRemoveParams", "result": "PluginMarketplaceRemoveResult"},
|
|
3321
3428
|
"plugin/marketplaceUpdate": {"description": "Refresh a marketplace in place (per-session, `commandId`-idempotent; answers the stored record).", "params": "PluginMarketplaceUpdateParams", "result": "PluginMarketplaceRecordResult"},
|
|
3322
|
-
"recap/cancel": {"description": "Cancels the session's in-flight recap, which settles `cancelled`;
|
|
3323
|
-
"recap/request": {"description": "Requests a \"while you were away\" recap for a loaded session; acks
|
|
3429
|
+
"recap/cancel": {"description": "Cancels the session's in-flight recap, which settles `cancelled`; idle is an accepted no-op.", "params": "RecapCancelParams", "result": "RecapCancelResult"},
|
|
3430
|
+
"recap/request": {"description": "Requests a \"while you were away\" recap for a loaded session; acks `accepted` and settles exactly once on `recap/completed` — one in flight per session, host-enforced 45s timeout.", "params": "RecapRequestParams", "result": "RecapRequestResult"},
|
|
3324
3431
|
"session/compact": {"description": "Compacts the session's conversation context; runs asynchronously, so the ack is admission only.", "params": "SessionCompactParams", "result": "SessionCompactResult"},
|
|
3325
3432
|
"session/fork": {"description": "Branches a session into a new id whose log copies the source through a cut point, with durable provenance.", "params": "SessionForkParams", "result": "SessionForkResult"},
|
|
3326
3433
|
"session/leave": {"description": "Admits release of one loaded session; final release or failure is pushed through session/leaveCompleted.", "params": "SessionLeaveParams", "result": "SessionLeaveResult"},
|
|
@@ -3334,9 +3441,9 @@ METHODS: Final[dict[str, MethodSpec]] = {
|
|
|
3334
3441
|
"session/sideChat": {"description": "Opens a side chat from a loaded main session, with durable provenance.", "params": "SessionSideChatParams", "result": "SessionSideChatResult"},
|
|
3335
3442
|
"session/start": {"description": "Creates a brand-new session, loads it on this host, durably records the start, and auto-subscribes this connection.", "params": "SessionStartParams", "result": "SessionStartResult"},
|
|
3336
3443
|
"session/userShell": {"description": "Runs a user-initiated shell command in the session's workspace; capability-gated on `userShell`.", "params": "SessionUserShellParams", "result": "SessionUserShellResult"},
|
|
3337
|
-
"skill/import": {"description": "Imports foreign skills from the host's own `claude | codex` dirs
|
|
3444
|
+
"skill/import": {"description": "Imports foreign skills from the host's own `claude | codex` dirs through the single `SkillsService::import_skills` seam; answers per-skill installed/quarantined/skipped/failed plus counts. `commandId`-idempotent (including `dryRun` previews); each successful write is a `skill/changed` detection point.", "params": "SkillImportParams", "result": "SkillImportResult"},
|
|
3338
3445
|
"skill/list": {"description": "Reads the session's user-invocable skill rows — one per typed-invocable shortcut spelling, the predicate and shared name resolution by call-through; a query, not a command.", "params": "SkillListParams", "result": "SkillListResult"},
|
|
3339
|
-
"skill/setActivation": {"description": "Writes one skill's activation in any scope through the single
|
|
3446
|
+
"skill/setActivation": {"description": "Writes one skill's activation in any scope through the single `SkillsService::set_activation` seam; answers the applied state plus `previous`. `commandId`-idempotent; each successful write is a `skill/changed` detection point.", "params": "SkillSetActivationParams", "result": "SkillSetActivationResult"},
|
|
3340
3447
|
"subagent/close": {"description": "Owner-close a child; the terminal mapping folds per the protocol spec.", "params": "SubagentOwnerReasonParams", "result": "CommandAcceptedResult"},
|
|
3341
3448
|
"subagent/followupTask": {"description": "Queue a follow-up task for a child; admission-only ack, the task settles on the child session's view stream.", "params": "SubagentInputParams", "result": "CommandAcceptedResult"},
|
|
3342
3449
|
"subagent/interrupt": {"description": "Ask a child to yield at its next boundary; outcome folds to the parent's subagent item.", "params": "SubagentOwnerReasonParams", "result": "CommandAcceptedResult"},
|
|
@@ -3379,12 +3486,12 @@ NOTIFICATIONS: Final[dict[str, NotificationSpec]] = {
|
|
|
3379
3486
|
"item/delta": {"description": "Streaming append to an open item's field path (ephemeral-sourced, no sourceRange; opt-out-able).", "params": "ItemDeltaParams"},
|
|
3380
3487
|
"item/started": {"description": "An item opened on the transcript.", "params": "ItemStartedParams"},
|
|
3381
3488
|
"item/updated": {"description": "An open item changed non-terminally: full re-emission at a higher revision.", "params": "ItemUpdatedParams"},
|
|
3382
|
-
"monitor/inboxItemAdmitted": {"description": "One monitor inbox admission: the fold keys gate-off consumes
|
|
3383
|
-
"monitor/inboxItemDrained": {"description": "One monitor inbox drain with its recorded stamp, the
|
|
3384
|
-
"monitor/inboxItemVoided": {"description": "One wake-missed void with its recorded stamp; count-only,
|
|
3489
|
+
"monitor/inboxItemAdmitted": {"description": "One monitor inbox admission: the fold keys gate-off consumes.", "params": "MonitorInboxItemAdmittedParams"},
|
|
3490
|
+
"monitor/inboxItemDrained": {"description": "One monitor inbox drain with its recorded stamp, the drain-side operand of latest-wins.", "params": "MonitorInboxItemDrainedParams"},
|
|
3491
|
+
"monitor/inboxItemVoided": {"description": "One wake-missed void with its recorded stamp; count-only, no transcript row.", "params": "MonitorInboxItemVoidedParams"},
|
|
3385
3492
|
"plugin/changed": {"description": "An install landed; carries the installed-row summary and clients re-issue `plugin/list`.", "params": "PluginChangedParams"},
|
|
3386
3493
|
"plugin/marketplaceChanged": {"description": "A marketplace was added, updated, or removed; carries the change summary.", "params": "PluginMarketplaceChangedParams"},
|
|
3387
|
-
"recap/completed": {"description": "A recap request settled exactly once — `completed` (with
|
|
3494
|
+
"recap/completed": {"description": "A recap request settled exactly once — `completed` (with `text` plus optional `title`), `failed` (`providerFailed`), `cancelled`, or `timedOut` — delivered to the requesting connection outside the view stream.", "params": "RecapCompletedParams"},
|
|
3388
3495
|
"session/approvalModeChanged": {"description": "The approval enforcement mode changed: the fold of the durable reconfigure audit fact.", "params": "SessionApprovalModeChangedParams"},
|
|
3389
3496
|
"session/branchChanged": {"description": "A durable workspace-branch observation landed; null branch is a detached-HEAD fact.", "params": "SessionBranchChangedParams"},
|
|
3390
3497
|
"session/closed": {"description": "A loaded session was unloaded (idle | hostShutdown | leave) with the final view cursor; broadcast to every initialized connection.", "params": "SessionClosedParams"},
|