muse-code-msp 1.4.7__tar.gz → 1.4.8__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: muse-code-msp
3
- Version: 1.4.7
3
+ Version: 1.4.8
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.7"
8
+ version = "1.4.8"
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,10 +7,10 @@ from __future__ import annotations
7
7
 
8
8
  from typing import Any, Final, Literal, TypedDict
9
9
 
10
- SCHEMA_FINGERPRINT: Final[str] = "sha256:6de32db08bbbe0deb478d2bfcaba001e9fb490986bc80db3aceb4d996abf7df9"
10
+ SCHEMA_FINGERPRINT: Final[str] = "sha256:4e3200c3c9dc0cd7919d11022630d43f9bc1c5cdda375381e90b0183b5665069"
11
11
  SCHEMA_VERSION: Final[int] = 1
12
12
  EXPERIMENTAL: Final[bool] = False
13
- REQUIRED_HOST_VERSION: Final[str] = "1.4.7"
13
+ REQUIRED_HOST_VERSION: Final[str] = "1.4.8"
14
14
 
15
15
  ApprovalAmendmentDurability = str # open enum: unknown values stay representable
16
16
  APPROVAL_AMENDMENT_DURABILITY_KNOWN_VALUES: Final[tuple[str, ...]] = ("session", "localPersistent",)
@@ -51,7 +51,7 @@ BACKGROUND_INITIATOR_KNOWN_VALUES: Final[tuple[str, ...]] = ("user", "timeout",)
51
51
 
52
52
  # A grantable capability name. Open: the reserved `rawLog` entry joins this domain as an additive open-enum extension when the protocol spec un-defers — closed would make that a retype.
53
53
  CapabilityName = str # open enum: unknown values stay representable
54
- CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup",)
54
+ CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "sessionRename",)
55
55
 
56
56
  # The language a Code Mode cell ran in. Open: values are lowercase VS Code language identifiers, and only `javascript` (the V8 engine) is minted today.
57
57
  CodeModeLanguage = str # open enum: unknown values stay representable
@@ -80,6 +80,14 @@ COMPACTION_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("compacted", "noop",
80
80
  CompactionTrigger = str # open enum: unknown values stay representable
81
81
  COMPACTION_TRIGGER_KNOWN_VALUES: Final[tuple[str, ...]] = ("manual", "auto",)
82
82
 
83
+ # A per-app choice. **Open**, like `ComputerUseChoice`.
84
+ ComputerUseAppChoice = str # open enum: unknown values stay representable
85
+ COMPUTER_USE_APP_CHOICE_KNOWN_VALUES: Final[tuple[str, ...]] = ("ask", "alwaysAllow", "blocked",)
86
+
87
+ # Why Settings can't change a row. **Open**.
88
+ ComputerUseAppLock = str # open enum: unknown values stay representable
89
+ COMPUTER_USE_APP_LOCK_KNOWN_VALUES: Final[tuple[str, ...]] = ("builtIn", "file",)
90
+
83
91
  # A capability dropdown's value. **Open**: the read result carries it, so an older client tolerates a value it does not know.
84
92
  ComputerUseChoice = str # open enum: unknown values stay representable
85
93
  COMPUTER_USE_CHOICE_KNOWN_VALUES: Final[tuple[str, ...]] = ("ask", "alwaysAllow",)
@@ -135,7 +143,7 @@ IfBusy = Literal["queue", "steer", "replace"]
135
143
 
136
144
  # The eleven v1 item kinds plus post-v1 kinds. Open: a new kind is additive evolution, and clients MUST render unknown kinds generically.
137
145
  ItemKind = str # open enum: unknown values stay representable
138
- ITEM_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("userMessage", "agentMessage", "reasoning", "toolCall", "userShell", "subagent", "workflow", "reminderChild", "compaction", "hookRun", "sideChat", "webSearch",)
146
+ ITEM_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("userMessage", "agentMessage", "reasoning", "toolCall", "userShell", "subagent", "workflow", "reminderChild", "compaction", "hookRun", "sideChat", "webSearch", "monitorFeed",)
139
147
 
140
148
  # 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.
141
149
  ItemReadOutputEncoding = Literal["utf8", "base64"]
@@ -151,6 +159,10 @@ JsonRpcVersion = Literal["2.0"]
151
159
  LimitKind = str # open enum: unknown values stay representable
152
160
  LIMIT_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("tierLimit",)
153
161
 
162
+ # `agentMessage.messagePhase`: the phase the model declared on the commit, never inferred from position. Set on the completed item only; absent on `item/started`, which opens before the phase is recorded. Open: a client reads an absent or unknown value on a completed item as `"finalAnswer"` and still decodes the item. Not a turn-done signal; `turn/completed` is.
163
+ MessagePhase = str # open enum: unknown values stay representable
164
+ MESSAGE_PHASE_KNOWN_VALUES: Final[tuple[str, ...]] = ("commentary", "finalAnswer",)
165
+
154
166
  # Where a model catalog came from. **Open**: an unrecognized value is an unknown source, not an error.
155
167
  ModelCatalogSource = str # open enum: unknown values stay representable
156
168
  MODEL_CATALOG_SOURCE_KNOWN_VALUES: Final[tuple[str, ...]] = ("providerCatalog", "fakeCatalog", "unresolvedCatalog", "bundledCatalog", "configCatalog",)
@@ -595,6 +607,27 @@ class CommandAcceptedResult(TypedDict):
595
607
  status: CommandAckStatus
596
608
 
597
609
 
610
+ class _ComputerUseAppBase(TypedDict):
611
+ bundleId: str
612
+ choice: ComputerUseAppChoice
613
+
614
+
615
+ class ComputerUseApp(_ComputerUseAppBase, total=False):
616
+ """One row of the Settings apps list."""
617
+
618
+ lastAskedAt: str
619
+ locked: bool
620
+ lockedBy: ComputerUseAppLock
621
+ name: str
622
+
623
+
624
+ class ComputerUseAppPatch(TypedDict):
625
+ """One per-app choice to set in `computerUseSettings/update`."""
626
+
627
+ bundleId: str
628
+ choice: ComputerUseAppChoice
629
+
630
+
598
631
  class _ComputerUseBlockedAppBase(TypedDict):
599
632
  bundleId: str
600
633
  locked: bool
@@ -606,23 +639,37 @@ class ComputerUseBlockedApp(_ComputerUseBlockedAppBase, total=False):
606
639
  prefix: bool
607
640
 
608
641
 
609
- class ComputerUseSettings(TypedDict):
610
- """`computerUseSettings/read` result, also answered by `computerUseSettings/update`."""
642
+ class ComputerUseInstalledApp(TypedDict):
643
+ """One installed or running app, for Settings' app picker."""
611
644
 
645
+ bundleId: str
646
+ name: str
647
+
648
+
649
+ class _ComputerUseSettingsBase(TypedDict):
612
650
  blockedApps: list[ComputerUseBlockedApp]
613
651
  computerControl: ComputerUseChoice
614
652
  screenshots: ComputerUseChoice
615
653
 
616
654
 
655
+ class ComputerUseSettings(_ComputerUseSettingsBase, total=False):
656
+ """`computerUseSettings/read` result, also answered by `computerUseSettings/update`."""
657
+
658
+ apps: list[ComputerUseApp]
659
+ installedApps: list[ComputerUseInstalledApp]
660
+
661
+
617
662
  class ComputerUseSettingsReadParams(TypedDict, total=False):
618
663
  """`computerUseSettings/read` params."""
619
664
 
665
+ installed: bool
620
666
  showBuiltIns: bool
621
667
 
622
668
 
623
669
  class ComputerUseSettingsUpdateParams(TypedDict, total=False):
624
670
  """`computerUseSettings/update` params: a patch. Omitted members are left alone; the whole patch applies or none of it does."""
625
671
 
672
+ apps: list[ComputerUseAppPatch]
626
673
  blockApps: list[str]
627
674
  computerControl: ComputerUseChoice
628
675
  screenshots: ComputerUseChoice
@@ -991,7 +1038,10 @@ class Item(_ItemBase, total=False):
991
1038
  hookKey: str
992
1039
  label: str
993
1040
  message: str
1041
+ messagePhase: MessagePhase
994
1042
  modelVisibleContent: list[ModelVisibleContent]
1043
+ monitorDescription: str
1044
+ monitorId: str
995
1045
  objective: str
996
1046
  outcome: CompactionOutcome
997
1047
  outputRef: OutputRef
@@ -1568,6 +1618,7 @@ class Session(_SessionBase, total=False):
1568
1618
  branch: str
1569
1619
  createdByClient: ClientInfo
1570
1620
  firstUserPrompt: str
1621
+ generatedName: str
1571
1622
  kind: SessionKind
1572
1623
  lastActivityAt: str
1573
1624
  name: str
@@ -1786,6 +1837,7 @@ class _SessionNameChangedParamsBase(TypedDict):
1786
1837
  class SessionNameChangedParams(_SessionNameChangedParamsBase, total=False):
1787
1838
  """`session/nameChanged` params: the fold of ANY durable session-name record — the FIRST-NAMING automatic allocate as well as an accepted `session/rename` (or the same in-process runtime command). Replace-wholesale like every sibling."""
1788
1839
 
1840
+ generatedName: str
1789
1841
  nameOrigin: SessionNameOrigin
1790
1842
 
1791
1843
 
@@ -1853,6 +1905,7 @@ class SessionResumeParams(_SessionResumeParamsBase, total=False):
1853
1905
  cursor: str | None
1854
1906
  excludeItems: bool
1855
1907
  history: HistoryPreference
1908
+ permissionProfile: str
1856
1909
 
1857
1910
 
1858
1911
  class _SessionResumeResultBase(TypedDict):
@@ -2049,6 +2102,7 @@ class SkillCatalogEntry(_SkillCatalogEntryBase, total=False):
2049
2102
 
2050
2103
  argumentHint: str
2051
2104
  pluginId: str
2105
+ title: str
2052
2106
 
2053
2107
 
2054
2108
  class SkillChangedParams(TypedDict):
@@ -2521,6 +2575,25 @@ class TurnInterruptResult(TypedDict):
2521
2575
  turnId: str
2522
2576
 
2523
2577
 
2578
+ class _TurnModelRetryScheduledParamsBase(TypedDict):
2579
+ attempt: int
2580
+ maxAttempts: int
2581
+ nextAttempt: int
2582
+ retryDelayMs: int
2583
+ sessionId: str
2584
+ sourceRange: SourceRange
2585
+ turnId: str
2586
+ viewCursor: str
2587
+
2588
+
2589
+ class TurnModelRetryScheduledParams(_TurnModelRetryScheduledParamsBase, total=False):
2590
+ """`turn/modelRetryScheduled` params: a durable model-stream retry-scheduled fact folded — the provider backoff behind one model attempt is observable BEFORE the turn terminates, so a streaming client can render \"system words · retrying in Ss · attempt N/M\" instead of dead air. Non-terminal: it never resolves a turn-wait. The sibling `turn/retryScheduled` shape at the model layer: same member names and semantics (attempt/nextAttempt/maxAttempts/ retryDelayMs/system/errorKind/httpStatus), minus `reason` — the row's words derive from `errorKind` through the shared gate-off mapping, and the recorded machine message is not user text. The delay is the recorded scheduled backoff, never an absolute fire time — clients derive any countdown locally. `sourceRange` cites the session stream's mirror of the task-lifecycle record."""
2591
+
2592
+ errorKind: str
2593
+ httpStatus: int
2594
+ system: str
2595
+
2596
+
2524
2597
  class _TurnRefBase(TypedDict):
2525
2598
  commandId: str
2526
2599
  turnId: str
@@ -3176,6 +3249,7 @@ NOTIFICATIONS: Final[dict[str, NotificationSpec]] = {
3176
3249
  "skill/changed": {"description": "The session's user-invocable skill set changed; clients re-issue skill/list. A live host-state projection, not a view event.", "params": "SkillChangedParams"},
3177
3250
  "turn/completed": {"description": "Turn terminal: completed | failed | cancelled, with usage and the settled error object.", "params": "TurnCompletedParams"},
3178
3251
  "turn/foregroundCompleted": {"description": "The turn's foreground work is done while named background reminder checks hold the turn open; explicitly non-terminal.", "params": "TurnForegroundCompletedParams"},
3252
+ "turn/modelRetryScheduled": {"description": "A provider backoff behind one model attempt is scheduled and waiting out its delay; observable mid-turn, non-terminal.", "params": "TurnModelRetryScheduledParams"},
3179
3253
  "turn/retracted": {"description": "An accepted interrupt's paired retract durably settled, accepted or declined.", "params": "TurnRetractedParams"},
3180
3254
  "turn/retryScheduled": {"description": "A failing model attempt's retry is scheduled and waiting out its backoff; observable mid-turn, non-terminal.", "params": "TurnRetryScheduledParams"},
3181
3255
  "turn/started": {"description": "A foreground turn began running.", "params": "TurnStartedParams"},
@@ -3227,4 +3301,4 @@ ERRORS: Final[tuple[ErrorSpec, ...]] = (
3227
3301
  {"code": -32057, "kind": "userInputAnswerInvalid", "retryable": False, "overrideKinds": ()},
3228
3302
  )
3229
3303
 
3230
- GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup",)
3304
+ GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "sessionRename",)
@@ -7,10 +7,10 @@ from __future__ import annotations
7
7
 
8
8
  from typing import Any, Final, Literal, TypedDict
9
9
 
10
- SCHEMA_FINGERPRINT: Final[str] = "sha256:0d803007acbd02ad07a6cec4d5a63b834f4db743886bbaf865b8738116dc212f"
10
+ SCHEMA_FINGERPRINT: Final[str] = "sha256:c533a6c39dca76ab4da20084e0b730712e0cae8db4644721290e13676aec90a3"
11
11
  SCHEMA_VERSION: Final[int] = 1
12
12
  EXPERIMENTAL: Final[bool] = True
13
- REQUIRED_HOST_VERSION: Final[str] = "1.4.7"
13
+ REQUIRED_HOST_VERSION: Final[str] = "1.4.8"
14
14
 
15
15
  # How a login flow ended. Server-produced, so the vocabulary is open per the E2 rule — a future flow may end in a new way additively.
16
16
  AccountLoginOutcome = str # open enum: unknown values stay representable
@@ -70,7 +70,7 @@ BACKGROUND_STATE_KNOWN_VALUES: Final[tuple[str, ...]] = ("backgrounded",)
70
70
 
71
71
  # A grantable capability name. Open: the reserved `rawLog` entry joins this domain as an additive open-enum extension when the protocol spec un-defers — closed would make that a retype.
72
72
  CapabilityName = str # open enum: unknown values stay representable
73
- CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "peerMessaging", "rawLog",)
73
+ CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "sessionRename", "peerMessaging", "rawLog",)
74
74
 
75
75
  # The language a Code Mode cell ran in. Open: values are lowercase VS Code language identifiers, and only `javascript` (the V8 engine) is minted today.
76
76
  CodeModeLanguage = str # open enum: unknown values stay representable
@@ -99,6 +99,14 @@ COMPACTION_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("compacted", "noop",
99
99
  CompactionTrigger = str # open enum: unknown values stay representable
100
100
  COMPACTION_TRIGGER_KNOWN_VALUES: Final[tuple[str, ...]] = ("manual", "auto",)
101
101
 
102
+ # A per-app choice. **Open**, like `ComputerUseChoice`.
103
+ ComputerUseAppChoice = str # open enum: unknown values stay representable
104
+ COMPUTER_USE_APP_CHOICE_KNOWN_VALUES: Final[tuple[str, ...]] = ("ask", "alwaysAllow", "blocked",)
105
+
106
+ # Why Settings can't change a row. **Open**.
107
+ ComputerUseAppLock = str # open enum: unknown values stay representable
108
+ COMPUTER_USE_APP_LOCK_KNOWN_VALUES: Final[tuple[str, ...]] = ("builtIn", "file",)
109
+
102
110
  # A capability dropdown's value. **Open**: the read result carries it, so an older client tolerates a value it does not know.
103
111
  ComputerUseChoice = str # open enum: unknown values stay representable
104
112
  COMPUTER_USE_CHOICE_KNOWN_VALUES: Final[tuple[str, ...]] = ("ask", "alwaysAllow",)
@@ -154,7 +162,7 @@ IfBusy = Literal["queue", "steer", "replace"]
154
162
 
155
163
  # The eleven v1 item kinds plus post-v1 kinds. Open: a new kind is additive evolution, and clients MUST render unknown kinds generically.
156
164
  ItemKind = str # open enum: unknown values stay representable
157
- ITEM_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("userMessage", "agentMessage", "reasoning", "toolCall", "userShell", "subagent", "workflow", "reminderChild", "compaction", "hookRun", "sideChat", "webSearch", "skillRead",)
165
+ ITEM_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("userMessage", "agentMessage", "reasoning", "toolCall", "userShell", "subagent", "workflow", "reminderChild", "compaction", "hookRun", "sideChat", "webSearch", "monitorFeed", "skillRead",)
158
166
 
159
167
  # 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.
160
168
  ItemReadOutputEncoding = Literal["utf8", "base64"]
@@ -170,6 +178,10 @@ JsonRpcVersion = Literal["2.0"]
170
178
  LimitKind = str # open enum: unknown values stay representable
171
179
  LIMIT_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("tierLimit",)
172
180
 
181
+ # `log/gap` `reason`: only a `replayAnchorLost` gap is refillable through `log/page`; an `overFrame` gap is a known hole on that connection, its hole `(after, next]` less `next` when it is delivered. **Open**: a server-produced vocabulary.
182
+ LogGapReason = str # open enum: unknown values stay representable
183
+ LOG_GAP_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("replayAnchorLost", "overFrame",)
184
+
173
185
  # The login flow's terminal vocabulary. Open.
174
186
  McpOAuthLoginOutcome = str # open enum: unknown values stay representable
175
187
  MCP_O_AUTH_LOGIN_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("granted", "denied", "expired", "cancelled", "failed",)
@@ -190,6 +202,10 @@ MCP_SERVER_LIST_SOURCE_KNOWN_VALUES: Final[tuple[str, ...]] = ("settings", "plug
190
202
  McpServerListTransport = str # open enum: unknown values stay representable
191
203
  MCP_SERVER_LIST_TRANSPORT_KNOWN_VALUES: Final[tuple[str, ...]] = ("stdio", "streamableHttp", "unknown",)
192
204
 
205
+ # `agentMessage.messagePhase`: the phase the model declared on the commit, never inferred from position. Set on the completed item only; absent on `item/started`, which opens before the phase is recorded. Open: a client reads an absent or unknown value on a completed item as `"finalAnswer"` and still decodes the item. Not a turn-done signal; `turn/completed` is.
206
+ MessagePhase = str # open enum: unknown values stay representable
207
+ MESSAGE_PHASE_KNOWN_VALUES: Final[tuple[str, ...]] = ("commentary", "finalAnswer",)
208
+
193
209
  # Where a model catalog came from. **Open**: an unrecognized value is an unknown source, not an error.
194
210
  ModelCatalogSource = str # open enum: unknown values stay representable
195
211
  MODEL_CATALOG_SOURCE_KNOWN_VALUES: Final[tuple[str, ...]] = ("providerCatalog", "fakeCatalog", "unresolvedCatalog", "bundledCatalog", "configCatalog",)
@@ -210,6 +226,18 @@ PEER_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("idle", "active", "busy", "c
210
226
  PendingRequestKind = str # open enum: unknown values stay representable
211
227
  PENDING_REQUEST_KIND_KNOWN_VALUES: Final[tuple[str, ...]] = ("approval", "userInput",)
212
228
 
229
+ # A profile's effective approval axis. **Open**: the vocabulary can widen.
230
+ PermissionApprovalAxis = str # open enum: unknown values stay representable
231
+ PERMISSION_APPROVAL_AXIS_KNOWN_VALUES: Final[tuple[str, ...]] = ("onRequest", "promptUnmatched", "allowAll",)
232
+
233
+ # A profile's effective filesystem axis. **Open**: the vocabulary can widen.
234
+ PermissionFilesystemAxis = str # open enum: unknown values stay representable
235
+ PERMISSION_FILESYSTEM_AXIS_KNOWN_VALUES: Final[tuple[str, ...]] = ("sandboxed", "unrestricted",)
236
+
237
+ # A profile's effective local-command network axis. **Open**: the vocabulary can widen.
238
+ PermissionNetworkAxis = str # open enum: unknown values stay representable
239
+ PERMISSION_NETWORK_AXIS_KNOWN_VALUES: Final[tuple[str, ...]] = ("restricted", "off", "enabled",)
240
+
213
241
  # Whether a profile change did anything. The accepted arm spells `completed` exactly as `session/setApprovalMode` so the shared member never forks spellings. Apply failures are `commandRejected`.
214
242
  PermissionProfileApplyOutcome = str # open enum: unknown values stay representable
215
243
  PERMISSION_PROFILE_APPLY_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("completed", "noop",)
@@ -297,6 +325,12 @@ SessionMcpStdioFraming = Literal["auto", "contentLength", "lineDelimitedJson"]
297
325
  SessionNameOrigin = str # open enum: unknown values stay representable
298
326
  SESSION_NAME_ORIGIN_KNOWN_VALUES: Final[tuple[str, ...]] = ("automatic", "custom",)
299
327
 
328
+ # `session/reportStartupPhases` span phase: the `StartupPhasesRecord` phase vocabulary in camelCase. The host maps each value onto the record's snake_case spelling at append. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 348).
329
+ SessionReportStartupPhase = Literal["terminalProbe", "sessionOpen", "runtimeInit", "firstFrame", "inputReady"]
330
+
331
+ # `session/reportStartupPhases` terminal color provenance: the durable `TerminalColorProvenance` vocabulary in camelCase. The host maps each value onto the record spelling at append. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 348).
332
+ SessionReportTerminalColorProvenance = Literal["probed", "defaulted", "overridden"]
333
+
300
334
  # A session's load state.
301
335
  SessionStatus = str # open enum: unknown values stay representable
302
336
  SESSION_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("notLoaded", "idle", "running",)
@@ -810,6 +844,27 @@ class CommandAcceptedResult(TypedDict):
810
844
  status: CommandAckStatus
811
845
 
812
846
 
847
+ class _ComputerUseAppBase(TypedDict):
848
+ bundleId: str
849
+ choice: ComputerUseAppChoice
850
+
851
+
852
+ class ComputerUseApp(_ComputerUseAppBase, total=False):
853
+ """One row of the Settings apps list."""
854
+
855
+ lastAskedAt: str
856
+ locked: bool
857
+ lockedBy: ComputerUseAppLock
858
+ name: str
859
+
860
+
861
+ class ComputerUseAppPatch(TypedDict):
862
+ """One per-app choice to set in `computerUseSettings/update`."""
863
+
864
+ bundleId: str
865
+ choice: ComputerUseAppChoice
866
+
867
+
813
868
  class _ComputerUseBlockedAppBase(TypedDict):
814
869
  bundleId: str
815
870
  locked: bool
@@ -821,23 +876,37 @@ class ComputerUseBlockedApp(_ComputerUseBlockedAppBase, total=False):
821
876
  prefix: bool
822
877
 
823
878
 
824
- class ComputerUseSettings(TypedDict):
825
- """`computerUseSettings/read` result, also answered by `computerUseSettings/update`."""
879
+ class ComputerUseInstalledApp(TypedDict):
880
+ """One installed or running app, for Settings' app picker."""
826
881
 
882
+ bundleId: str
883
+ name: str
884
+
885
+
886
+ class _ComputerUseSettingsBase(TypedDict):
827
887
  blockedApps: list[ComputerUseBlockedApp]
828
888
  computerControl: ComputerUseChoice
829
889
  screenshots: ComputerUseChoice
830
890
 
831
891
 
892
+ class ComputerUseSettings(_ComputerUseSettingsBase, total=False):
893
+ """`computerUseSettings/read` result, also answered by `computerUseSettings/update`."""
894
+
895
+ apps: list[ComputerUseApp]
896
+ installedApps: list[ComputerUseInstalledApp]
897
+
898
+
832
899
  class ComputerUseSettingsReadParams(TypedDict, total=False):
833
900
  """`computerUseSettings/read` params."""
834
901
 
902
+ installed: bool
835
903
  showBuiltIns: bool
836
904
 
837
905
 
838
906
  class ComputerUseSettingsUpdateParams(TypedDict, total=False):
839
907
  """`computerUseSettings/update` params: a patch. Omitted members are left alone; the whole patch applies or none of it does."""
840
908
 
909
+ apps: list[ComputerUseAppPatch]
841
910
  blockApps: list[str]
842
911
  computerControl: ComputerUseChoice
843
912
  screenshots: ComputerUseChoice
@@ -947,14 +1016,18 @@ class EffectiveModel(TypedDict):
947
1016
  source: ModelChangeSource
948
1017
 
949
1018
 
950
- class EffectivePermissionState(TypedDict):
951
- """The effective permission-state projection: the committed native permission snapshot (profile identity, reviewer authority) plus the live per-session runtime's attachment evidence. The same object `session/setPermissionProfile` returns and the `Session` object carries as `permissionState`. Served values must be coherent: a read never combines an old profile with a newer runtime's attachment claim."""
952
-
1019
+ class _EffectivePermissionStateBase(TypedDict):
953
1020
  profileId: str | None
954
1021
  reviewerAttached: bool
955
1022
  reviewerAuthority: ReviewerAuthority
956
1023
 
957
1024
 
1025
+ class EffectivePermissionState(_EffectivePermissionStateBase, total=False):
1026
+ """The effective permission-state projection: the committed native permission snapshot (profile identity, reviewer authority) plus the live per-session runtime's attachment evidence. The same object `session/setPermissionProfile` returns and the `Session` object carries as `permissionState`. Served values must be coherent: a read never combines an old profile with a newer runtime's attachment claim."""
1027
+
1028
+ axes: PermissionAxes
1029
+
1030
+
958
1031
  class _ErrorDataBase(TypedDict):
959
1032
  kind: ErrorKind
960
1033
 
@@ -1227,7 +1300,10 @@ class Item(_ItemBase, total=False):
1227
1300
  hookKey: str
1228
1301
  label: str
1229
1302
  message: str
1303
+ messagePhase: MessagePhase
1230
1304
  modelVisibleContent: list[ModelVisibleContent]
1305
+ monitorDescription: str
1306
+ monitorId: str
1231
1307
  objective: str
1232
1308
  outcome: CompactionOutcome
1233
1309
  outputRef: OutputRef
@@ -1361,15 +1437,19 @@ class LastTurn(_LastTurnBase, total=False):
1361
1437
  reason: str
1362
1438
 
1363
1439
 
1364
- class LogGapParams(TypedDict):
1365
- """`log/gap` notification params: the raw-altitude shape of the shared gap contract, per subscription. The client MUST fill `(after, next)` with `log/page` before treating its fold as current."""
1366
-
1440
+ class _LogGapParamsBase(TypedDict):
1367
1441
  after: RecordPosition
1368
1442
  next: RecordPosition
1369
1443
  stream: StreamRef
1370
1444
  subscriptionId: int
1371
1445
 
1372
1446
 
1447
+ class LogGapParams(_LogGapParamsBase, total=False):
1448
+ """`log/gap` notification params: the raw-altitude shape of the shared gap contract, per subscription. The client MUST fill `(after, next)` with `log/page` before treating its fold as current, except for an `overFrame` gap (see [`LogGapReason`])."""
1449
+
1450
+ reason: LogGapReason
1451
+
1452
+
1373
1453
  # `log/page` params.
1374
1454
  LogPageParams = TypedDict("LogPageParams", {
1375
1455
  "limit": "int",
@@ -1721,6 +1801,15 @@ class PendingUserInputPointer(_PendingUserInputPointerBase, total=False):
1721
1801
  itemId: str
1722
1802
 
1723
1803
 
1804
+ class PermissionAxes(TypedDict):
1805
+ """A committed profile's effective four axis values: the resolved filesystem, network, approval, and reviewer the YOLO predicate reads. The reviewer member reuses `ReviewerAuthority`, so its spelling never drifts from the served `reviewerAuthority`."""
1806
+
1807
+ approval: PermissionApprovalAxis
1808
+ filesystem: PermissionFilesystemAxis
1809
+ network: PermissionNetworkAxis
1810
+ reviewer: ReviewerAuthority
1811
+
1812
+
1724
1813
  class PermissionProfileListParams(TypedDict, total=False):
1725
1814
  """`permissionProfile/list` params: read the native profile catalog. A read-only method — takes no lease, grants nothing."""
1726
1815
 
@@ -2078,6 +2167,7 @@ class Session(_SessionBase, total=False):
2078
2167
  branch: str
2079
2168
  createdByClient: ClientInfo
2080
2169
  firstUserPrompt: str
2170
+ generatedName: str
2081
2171
  kind: SessionKind
2082
2172
  lastActivityAt: str
2083
2173
  name: str
@@ -2298,6 +2388,7 @@ class _SessionNameChangedParamsBase(TypedDict):
2298
2388
  class SessionNameChangedParams(_SessionNameChangedParamsBase, total=False):
2299
2389
  """`session/nameChanged` params: the fold of ANY durable session-name record — the FIRST-NAMING automatic allocate as well as an accepted `session/rename` (or the same in-process runtime command). Replace-wholesale like every sibling."""
2300
2390
 
2391
+ generatedName: str
2301
2392
  nameOrigin: SessionNameOrigin
2302
2393
 
2303
2394
 
@@ -2385,6 +2476,32 @@ class SessionRenameResult(_SessionRenameResultBase, total=False):
2385
2476
  name: str
2386
2477
 
2387
2478
 
2479
+ class _SessionReportStartupPhaseSpanBase(TypedDict):
2480
+ durationMs: int
2481
+ phase: SessionReportStartupPhase
2482
+ startMs: int
2483
+
2484
+
2485
+ class SessionReportStartupPhaseSpan(_SessionReportStartupPhaseSpanBase, total=False):
2486
+ """`session/reportStartupPhases` span: one `StartupPhasesRecord` phase row in camelCase. The host ignores unknown members and fails closed (`invalidParams`) on an unknown phase or provenance value; a `colorProvenance` on any other phase is stripped. The host maps each row onto the record's snake_case spelling at append. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 348)."""
2487
+
2488
+ colorProvenance: SessionReportTerminalColorProvenance
2489
+
2490
+
2491
+ class SessionReportStartupPhasesParams(TypedDict):
2492
+ """`session/reportStartupPhases` params: the served session, the client-minted launch nonce (one UUID per process launch, any textual UUID form), and the finished spans. No `commandId`: the nonce is the idempotency key and the call is best-effort. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 348)."""
2493
+
2494
+ launchNonce: str
2495
+ phases: list[SessionReportStartupPhaseSpan]
2496
+ sessionId: str
2497
+
2498
+
2499
+ class SessionReportStartupPhasesResult(TypedDict):
2500
+ """`session/reportStartupPhases` result: whether this report appended. A duplicate nonce succeeds with `recorded: false` and appends nothing. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 348)."""
2501
+
2502
+ recorded: bool
2503
+
2504
+
2388
2505
  class _SessionResumeParamsBase(TypedDict):
2389
2506
  commandId: str
2390
2507
  sessionId: str
@@ -2397,6 +2514,7 @@ class SessionResumeParams(_SessionResumeParamsBase, total=False):
2397
2514
  cursor: str | None
2398
2515
  excludeItems: bool
2399
2516
  history: HistoryPreference
2517
+ permissionProfile: str
2400
2518
 
2401
2519
 
2402
2520
  class _SessionResumeResultBase(TypedDict):
@@ -2673,6 +2791,7 @@ class SkillCatalogEntry(_SkillCatalogEntryBase, total=False):
2673
2791
 
2674
2792
  argumentHint: str
2675
2793
  pluginId: str
2794
+ title: str
2676
2795
 
2677
2796
 
2678
2797
  class SkillChangedParams(TypedDict):
@@ -3145,6 +3264,25 @@ class TurnInterruptResult(TypedDict):
3145
3264
  turnId: str
3146
3265
 
3147
3266
 
3267
+ class _TurnModelRetryScheduledParamsBase(TypedDict):
3268
+ attempt: int
3269
+ maxAttempts: int
3270
+ nextAttempt: int
3271
+ retryDelayMs: int
3272
+ sessionId: str
3273
+ sourceRange: SourceRange
3274
+ turnId: str
3275
+ viewCursor: str
3276
+
3277
+
3278
+ class TurnModelRetryScheduledParams(_TurnModelRetryScheduledParamsBase, total=False):
3279
+ """`turn/modelRetryScheduled` params: a durable model-stream retry-scheduled fact folded — the provider backoff behind one model attempt is observable BEFORE the turn terminates, so a streaming client can render \"system words · retrying in Ss · attempt N/M\" instead of dead air. Non-terminal: it never resolves a turn-wait. The sibling `turn/retryScheduled` shape at the model layer: same member names and semantics (attempt/nextAttempt/maxAttempts/ retryDelayMs/system/errorKind/httpStatus), minus `reason` — the row's words derive from `errorKind` through the shared gate-off mapping, and the recorded machine message is not user text. The delay is the recorded scheduled backoff, never an absolute fire time — clients derive any countdown locally. `sourceRange` cites the session stream's mirror of the task-lifecycle record."""
3280
+
3281
+ errorKind: str
3282
+ httpStatus: int
3283
+ system: str
3284
+
3285
+
3148
3286
  class _TurnRefBase(TypedDict):
3149
3287
  commandId: str
3150
3288
  turnId: str
@@ -3796,6 +3934,7 @@ METHODS: Final[dict[str, MethodSpec]] = {
3796
3934
  "session/promptHint": {"description": "Picks one feature-tip table id over the client-supplied candidates; display-only, nothing is logged.", "params": "SessionPromptHintParams", "result": "SessionPromptHintResult"},
3797
3935
  "session/read": {"description": "Reads one stored session without attaching: no lease, no load, no subscription, no resume record.", "params": "SessionReadParams", "result": "SessionReadResult"},
3798
3936
  "session/rename": {"description": "Sets or changes the durable allocated session name through the runtime session_name command; withheld under the ephemeral profile.", "params": "SessionRenameParams", "result": "SessionRenameResult"},
3937
+ "session/reportStartupPhases": {"description": "Reports the client's measured startup spans once per launch; the host appends the durable phases record as single writer.", "params": "SessionReportStartupPhasesParams", "result": "SessionReportStartupPhasesResult"},
3799
3938
  "session/resume": {"description": "Loads a stored session on this host, auto-subscribes this connection, and returns the history needed to render it.", "params": "SessionResumeParams", "result": "SessionResumeResult"},
3800
3939
  "session/setApprovalMode": {"description": "Selects a preconfigured approval enforcement mode mid-session; select, never create.", "params": "SessionSetApprovalModeParams", "result": "SessionSetApprovalModeResult"},
3801
3940
  "session/setModel": {"description": "Reconfigures the session's model; the selection is durable and applies to subsequent model calls.", "params": "SessionSetModelParams", "result": "SessionSetModelResult"},
@@ -3882,6 +4021,7 @@ NOTIFICATIONS: Final[dict[str, NotificationSpec]] = {
3882
4021
  "skill/changed": {"description": "The session's user-invocable skill set changed; clients re-issue skill/list. A live host-state projection, not a view event.", "params": "SkillChangedParams"},
3883
4022
  "turn/completed": {"description": "Turn terminal: completed | failed | cancelled, with usage and the settled error object.", "params": "TurnCompletedParams"},
3884
4023
  "turn/foregroundCompleted": {"description": "The turn's foreground work is done while named background reminder checks hold the turn open; explicitly non-terminal.", "params": "TurnForegroundCompletedParams"},
4024
+ "turn/modelRetryScheduled": {"description": "A provider backoff behind one model attempt is scheduled and waiting out its delay; observable mid-turn, non-terminal.", "params": "TurnModelRetryScheduledParams"},
3885
4025
  "turn/retracted": {"description": "An accepted interrupt's paired retract durably settled, accepted or declined.", "params": "TurnRetractedParams"},
3886
4026
  "turn/retryScheduled": {"description": "A failing model attempt's retry is scheduled and waiting out its backoff; observable mid-turn, non-terminal.", "params": "TurnRetryScheduledParams"},
3887
4027
  "turn/started": {"description": "A foreground turn began running.", "params": "TurnStartedParams"},
@@ -3942,4 +4082,4 @@ ERRORS: Final[tuple[ErrorSpec, ...]] = (
3942
4082
  {"code": -32072, "kind": "admissionChoiceInvalid", "retryable": False, "overrideKinds": ()},
3943
4083
  )
3944
4084
 
3945
- GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "rawLog", "peerMessaging",)
4085
+ GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "sessionRename", "rawLog", "peerMessaging",)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: muse-code-msp
3
- Version: 1.4.7
3
+ Version: 1.4.8
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
File without changes
File without changes
File without changes