muse-code-msp 1.4.6__tar.gz → 1.4.7__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.6
3
+ Version: 1.4.7
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.6"
8
+ version = "1.4.7"
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:eae467ab60cb9a5d5af4de616830f065e59375c987fd59269c8cc33ed2a1137f"
10
+ SCHEMA_FINGERPRINT: Final[str] = "sha256:6de32db08bbbe0deb478d2bfcaba001e9fb490986bc80db3aceb4d996abf7df9"
11
11
  SCHEMA_VERSION: Final[int] = 1
12
12
  EXPERIMENTAL: Final[bool] = False
13
- REQUIRED_HOST_VERSION: Final[str] = "1.4.6"
13
+ REQUIRED_HOST_VERSION: Final[str] = "1.4.7"
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",)
54
+ CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup",)
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
@@ -205,6 +205,14 @@ RequestId = int | str
205
205
  RetractOutcome = str # open enum: unknown values stay representable
206
206
  RETRACT_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("accepted", "declined",)
207
207
 
208
+ # Whether this host can enforce the sandbox. A property of the host process, probed once at construction and identical for every session and every connection it serves — never requested, granted, or negotiated, which is why it is not a capability. Open: a future enforcement posture arrives as a new value, read by older clients as unknown.
209
+ SandboxAvailability = str # open enum: unknown values stay representable
210
+ SANDBOX_AVAILABILITY_KNOWN_VALUES: Final[tuple[str, ...]] = ("available", "unavailable",)
211
+
212
+ # Why sandbox enforcement is impossible on this host. Sent only when [`SandboxAvailability`] is `unavailable`; a client MUST NOT infer a reason when none is sent. Open: a future reason arrives as a new value, read by older clients as unknown.
213
+ SandboxUnavailableReason = str # open enum: unknown values stay representable
214
+ SANDBOX_UNAVAILABLE_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("userNamespacesDenied", "bubblewrapUnavailable",)
215
+
208
216
  # The closed-reason vocabulary. Server-produced and published OPEN by owner ruling — the menu-B pick, which settles that this notification reason enum publishes open rather than resting on E2's result-vocabulary rule by analogy. A crash is deliberately not a reason, because a crash emits no notification at all.
209
217
  SessionClosedReason = str # open enum: unknown values stay representable
210
218
  SESSION_CLOSED_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("idle", "hostShutdown",)
@@ -226,6 +234,10 @@ SessionMcpServerMode = Literal["required", "optional"]
226
234
  # Stdio framing choices exposed by session MCP configuration.
227
235
  SessionMcpStdioFraming = Literal["auto", "contentLength", "lineDelimitedJson"]
228
236
 
237
+ # How the served session name was set. **Open enum** (`x-msp-openness: open`): v1 serves `automatic` and `custom`; a client MUST read absent — and any value it does not recognize — as unknown, never fabricated. Open: a future source such as conversation-generated names adds a value here, so closed would make that a breaking change.
238
+ SessionNameOrigin = str # open enum: unknown values stay representable
239
+ SESSION_NAME_ORIGIN_KNOWN_VALUES: Final[tuple[str, ...]] = ("automatic", "custom",)
240
+
229
241
  # A session's load state.
230
242
  SessionStatus = str # open enum: unknown values stay representable
231
243
  SESSION_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("notLoaded", "idle", "running",)
@@ -617,23 +629,29 @@ class ComputerUseSettingsUpdateParams(TypedDict, total=False):
617
629
  unblockApps: list[str]
618
630
 
619
631
 
620
- class ComputerUseSetupChanged(TypedDict):
632
+ class _ComputerUseSetupChangedBase(TypedDict):
633
+ state: ComputerUseSetupState
634
+
635
+
636
+ class ComputerUseSetupChanged(_ComputerUseSetupChangedBase, total=False):
621
637
  """`computerUseSetup/changed` params."""
622
638
 
623
639
  sessionId: str
624
- state: ComputerUseSetupState
625
640
 
626
641
 
627
- class ComputerUseSetupReadParams(TypedDict):
642
+ class ComputerUseSetupReadParams(TypedDict, total=False):
628
643
  """`computerUseSetup/read` params."""
629
644
 
630
645
  sessionId: str
631
646
 
632
647
 
633
- class ComputerUseSetupStartParams(TypedDict):
648
+ class _ComputerUseSetupStartParamsBase(TypedDict):
649
+ commandId: str
650
+
651
+
652
+ class ComputerUseSetupStartParams(_ComputerUseSetupStartParamsBase, total=False):
634
653
  """`computerUseSetup/start` params: a human command."""
635
654
 
636
- commandId: str
637
655
  sessionId: str
638
656
 
639
657
 
@@ -926,6 +944,8 @@ class _InitializeResultBase(TypedDict):
926
944
  class InitializeResult(_InitializeResultBase, total=False):
927
945
  """The `initialize` result."""
928
946
 
947
+ sandboxAvailability: SandboxAvailability
948
+ sandboxUnavailableReason: SandboxUnavailableReason
929
949
  sessionDurability: SessionDurability
930
950
 
931
951
 
@@ -954,6 +974,7 @@ class Item(_ItemBase, total=False):
954
974
  commandId: str
955
975
  commandText: str
956
976
  controlStatus: SubagentControlStatus
977
+ cutOff: bool
957
978
  declaredPhase: str
958
979
  depth: int
959
980
  displayText: str
@@ -1550,6 +1571,7 @@ class Session(_SessionBase, total=False):
1550
1571
  kind: SessionKind
1551
1572
  lastActivityAt: str
1552
1573
  name: str
1574
+ nameOrigin: SessionNameOrigin
1553
1575
  parentSessionId: str
1554
1576
  sideFrom: SideProvenance | None
1555
1577
  title: str
@@ -1754,15 +1776,19 @@ class SessionModelRouteUnservedParams(TypedDict):
1754
1776
  viewCursor: str
1755
1777
 
1756
1778
 
1757
- class SessionNameChangedParams(TypedDict):
1758
- """`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."""
1759
-
1779
+ class _SessionNameChangedParamsBase(TypedDict):
1760
1780
  name: str
1761
1781
  sessionId: str
1762
1782
  sourceRange: SourceRange
1763
1783
  viewCursor: str
1764
1784
 
1765
1785
 
1786
+ class SessionNameChangedParams(_SessionNameChangedParamsBase, total=False):
1787
+ """`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
+
1789
+ nameOrigin: SessionNameOrigin
1790
+
1791
+
1766
1792
  class _SessionReadParamsBase(TypedDict):
1767
1793
  sessionId: str
1768
1794
 
@@ -3052,8 +3078,9 @@ METHODS: Final[dict[str, MethodSpec]] = {
3052
3078
  "approval/listPending": {"description": "Reads the full pending approval and user-input payloads for a session; a lease-free fold read.", "params": "ApprovalListPendingParams", "result": "ApprovalListPendingResult"},
3053
3079
  "computerUseSettings/read": {"description": "Reads the computer-use Settings: each capability's Always allow switch and the user's blocked apps from the approval policy store, plus the built-in blocks as locked rows when asked; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSettingsReadParams", "result": "ComputerUseSettings"},
3054
3080
  "computerUseSettings/update": {"description": "Applies one Settings patch (capability dropdowns, blocked apps to add or remove) all-or-nothing and answers the user's Settings after it; a built-in block is refused in either list; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSettingsUpdateParams", "result": "ComputerUseSettings"},
3055
- "computerUseSetup/read": {"description": "Reads one session's computer-use setup state and permissions by running cua_setup status for it as a host command: no model turn, no prompt, no spawn; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSetupReadParams", "result": "ComputerUseSetupState"},
3056
- "computerUseSetup/start": {"description": "A human command: runs cua_setup start for one session, between turns, exactly as the TUI's /cua on does, and answers the state it settles in, with the refusal code when setup refused; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSetupStartParams", "result": "ComputerUseSetupState"},
3081
+ "computerUseSetup/check": {"description": "Reads the host's three macOS grants with no prompt: starts the computer-use helper only long enough to check them, reports each as granted or missing, and ends it; never requests a grant or opens System Settings. Needs computerUseHostSetup; commandRejected runtime_busy while a setup attempt holds the host.", "params": None, "result": "ComputerUseSetupState"},
3082
+ "computerUseSetup/read": {"description": "Reads one session's computer-use setup state and permissions by running cua_setup status for it as a host command: no model turn, no prompt, no spawn; computerUseUnavailable while the CUA gate is off. Without sessionId it reads the host's own setup, with computerUseHostSetup.", "params": "ComputerUseSetupReadParams", "result": "ComputerUseSetupState"},
3083
+ "computerUseSetup/start": {"description": "A human command: runs cua_setup start for one session, between turns, exactly as the TUI's /cua on does, and answers the state it settles in, with the refusal code when setup refused; computerUseUnavailable while the CUA gate is off. Without sessionId it starts the host's own setup under one host owner, with computerUseHostSetup.", "params": "ComputerUseSetupStartParams", "result": "ComputerUseSetupState"},
3057
3084
  "feedback/submit": {"description": "Submits a first-party feedback report through the host, reusing the TUI submitter seam (consent, bundle-first persistence, redaction), and answers the upload receipt.", "params": "FeedbackSubmitParams", "result": "FeedbackSubmitResult"},
3058
3085
  "goal/clear": {"description": "Clears the session goal; never wakes and its ack never names a turn.", "params": "GoalClearParams", "result": "GoalCommandResult"},
3059
3086
  "goal/edit": {"description": "Replaces the current goal's objective under the same wake gate as goal/set.", "params": "GoalEditParams", "result": "GoalCommandResult"},
@@ -3122,7 +3149,7 @@ NOTIFICATIONS: Final[dict[str, NotificationSpec]] = {
3122
3149
  "approval/requested": {"description": "An approval opened: the fold of its durable Requested record.", "params": "ApprovalRequestParams"},
3123
3150
  "approval/resolved": {"description": "The first durable approval terminal landed; protected delivery.", "params": "ApprovalResolvedParams"},
3124
3151
  "approval/updated": {"description": "A non-terminal approval record changed the pending view.", "params": "ApprovalUpdatedParams"},
3125
- "computerUseSetup/changed": {"description": "A computerUseSetup/read or /start observed a session's setup state differ from the last one sent for it, including inProgress when a start begins and the state it settles in.", "params": "ComputerUseSetupChanged"},
3152
+ "computerUseSetup/changed": {"description": "A computerUseSetup/read or /start observed a session's setup state differ from the last one sent for it, including inProgress when a start begins and the state it settles in. Without sessionId it carries the host's own setup state, delivered only with computerUseHostSetup.", "params": "ComputerUseSetupChanged"},
3126
3153
  "initialized": {"description": "Client-to-server notification closing the handshake; no params.", "params": None},
3127
3154
  "item/completed": {"description": "An item reached its terminal state: the authoritative final object.", "params": "ItemCompletedParams"},
3128
3155
  "item/delta": {"description": "Streaming append to an open item's field path (ephemeral-sourced, no sourceRange; opt-out-able).", "params": "ItemDeltaParams"},
@@ -3200,4 +3227,4 @@ ERRORS: Final[tuple[ErrorSpec, ...]] = (
3200
3227
  {"code": -32057, "kind": "userInputAnswerInvalid", "retryable": False, "overrideKinds": ()},
3201
3228
  )
3202
3229
 
3203
- GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup",)
3230
+ GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup",)
@@ -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:9c425a9b1b30ff1810012585626a7e7baca1495963a198104fa5544fd02d43c2"
10
+ SCHEMA_FINGERPRINT: Final[str] = "sha256:0d803007acbd02ad07a6cec4d5a63b834f4db743886bbaf865b8738116dc212f"
11
11
  SCHEMA_VERSION: Final[int] = 1
12
12
  EXPERIMENTAL: Final[bool] = True
13
- REQUIRED_HOST_VERSION: Final[str] = "1.4.6"
13
+ REQUIRED_HOST_VERSION: Final[str] = "1.4.7"
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", "peerMessaging", "rawLog",)
73
+ CAPABILITY_NAME_KNOWN_VALUES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "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
@@ -264,6 +264,14 @@ RETRACT_OUTCOME_KNOWN_VALUES: Final[tuple[str, ...]] = ("accepted", "declined",)
264
264
  ReviewerAuthority = str # open enum: unknown values stay representable
265
265
  REVIEWER_AUTHORITY_KNOWN_VALUES: Final[tuple[str, ...]] = ("autoReview", "human", "none",)
266
266
 
267
+ # Whether this host can enforce the sandbox. A property of the host process, probed once at construction and identical for every session and every connection it serves — never requested, granted, or negotiated, which is why it is not a capability. Open: a future enforcement posture arrives as a new value, read by older clients as unknown.
268
+ SandboxAvailability = str # open enum: unknown values stay representable
269
+ SANDBOX_AVAILABILITY_KNOWN_VALUES: Final[tuple[str, ...]] = ("available", "unavailable",)
270
+
271
+ # Why sandbox enforcement is impossible on this host. Sent only when [`SandboxAvailability`] is `unavailable`; a client MUST NOT infer a reason when none is sent. Open: a future reason arrives as a new value, read by older clients as unknown.
272
+ SandboxUnavailableReason = str # open enum: unknown values stay representable
273
+ SANDBOX_UNAVAILABLE_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("userNamespacesDenied", "bubblewrapUnavailable",)
274
+
267
275
  # The closed-reason vocabulary. Server-produced and published OPEN by owner ruling — the menu-B pick, which settles that this notification reason enum publishes open rather than resting on E2's result-vocabulary rule by analogy. A crash is deliberately not a reason, because a crash emits no notification at all.
268
276
  SessionClosedReason = str # open enum: unknown values stay representable
269
277
  SESSION_CLOSED_REASON_KNOWN_VALUES: Final[tuple[str, ...]] = ("idle", "hostShutdown",)
@@ -285,6 +293,10 @@ SessionMcpServerMode = Literal["required", "optional"]
285
293
  # Stdio framing choices exposed by session MCP configuration.
286
294
  SessionMcpStdioFraming = Literal["auto", "contentLength", "lineDelimitedJson"]
287
295
 
296
+ # How the served session name was set. **Open enum** (`x-msp-openness: open`): v1 serves `automatic` and `custom`; a client MUST read absent — and any value it does not recognize — as unknown, never fabricated. Open: a future source such as conversation-generated names adds a value here, so closed would make that a breaking change.
297
+ SessionNameOrigin = str # open enum: unknown values stay representable
298
+ SESSION_NAME_ORIGIN_KNOWN_VALUES: Final[tuple[str, ...]] = ("automatic", "custom",)
299
+
288
300
  # A session's load state.
289
301
  SessionStatus = str # open enum: unknown values stay representable
290
302
  SESSION_STATUS_KNOWN_VALUES: Final[tuple[str, ...]] = ("notLoaded", "idle", "running",)
@@ -832,23 +844,29 @@ class ComputerUseSettingsUpdateParams(TypedDict, total=False):
832
844
  unblockApps: list[str]
833
845
 
834
846
 
835
- class ComputerUseSetupChanged(TypedDict):
847
+ class _ComputerUseSetupChangedBase(TypedDict):
848
+ state: ComputerUseSetupState
849
+
850
+
851
+ class ComputerUseSetupChanged(_ComputerUseSetupChangedBase, total=False):
836
852
  """`computerUseSetup/changed` params."""
837
853
 
838
854
  sessionId: str
839
- state: ComputerUseSetupState
840
855
 
841
856
 
842
- class ComputerUseSetupReadParams(TypedDict):
857
+ class ComputerUseSetupReadParams(TypedDict, total=False):
843
858
  """`computerUseSetup/read` params."""
844
859
 
845
860
  sessionId: str
846
861
 
847
862
 
848
- class ComputerUseSetupStartParams(TypedDict):
863
+ class _ComputerUseSetupStartParamsBase(TypedDict):
864
+ commandId: str
865
+
866
+
867
+ class ComputerUseSetupStartParams(_ComputerUseSetupStartParamsBase, total=False):
849
868
  """`computerUseSetup/start` params: a human command."""
850
869
 
851
- commandId: str
852
870
  sessionId: str
853
871
 
854
872
 
@@ -1160,6 +1178,8 @@ class _InitializeResultBase(TypedDict):
1160
1178
  class InitializeResult(_InitializeResultBase, total=False):
1161
1179
  """The `initialize` result."""
1162
1180
 
1181
+ sandboxAvailability: SandboxAvailability
1182
+ sandboxUnavailableReason: SandboxUnavailableReason
1163
1183
  sessionDurability: SessionDurability
1164
1184
 
1165
1185
 
@@ -1190,6 +1210,7 @@ class Item(_ItemBase, total=False):
1190
1210
  commandId: str
1191
1211
  commandText: str
1192
1212
  controlStatus: SubagentControlStatus
1213
+ cutOff: bool
1193
1214
  declaredPhase: str
1194
1215
  depth: int
1195
1216
  displayText: str
@@ -2060,6 +2081,7 @@ class Session(_SessionBase, total=False):
2060
2081
  kind: SessionKind
2061
2082
  lastActivityAt: str
2062
2083
  name: str
2084
+ nameOrigin: SessionNameOrigin
2063
2085
  parentSessionId: str
2064
2086
  permissionState: EffectivePermissionState
2065
2087
  sideFrom: SideProvenance | None
@@ -2266,15 +2288,19 @@ class SessionModelRouteUnservedParams(TypedDict):
2266
2288
  viewCursor: str
2267
2289
 
2268
2290
 
2269
- class SessionNameChangedParams(TypedDict):
2270
- """`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."""
2271
-
2291
+ class _SessionNameChangedParamsBase(TypedDict):
2272
2292
  name: str
2273
2293
  sessionId: str
2274
2294
  sourceRange: SourceRange
2275
2295
  viewCursor: str
2276
2296
 
2277
2297
 
2298
+ class SessionNameChangedParams(_SessionNameChangedParamsBase, total=False):
2299
+ """`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
+
2301
+ nameOrigin: SessionNameOrigin
2302
+
2303
+
2278
2304
  class SessionPermissionProfileChangedParams(TypedDict):
2279
2305
  """`session/permissionProfileChanged` params: the fold of the durable profile-commit audit fact — fired on every accepted POST-EPOCH-ONE profile commit, never for a mode-only change (that writes no such fact and keeps folding `session/approvalModeChanged` from its own reconfigure fact) and never for a reviewer-attachment change. It folds on EVERY `PermissionProfileCommittedV1` EXCEPT the epoch-one initialization fact and fork/child derivation facts — their causes (`newSessionDefault`, `launchCli` at start, `fork`, `childSpawn`, `legacyInitialization`, `launchOverrides`) are unreachable on the wire until a later commit carries them — so an omitted-profile start and an empty-cut fork fold nothing and their `\"\"`-cursor rules hold byte-for-byte. A held id recommitting under a changed definition or an managed refresh folds too (the `profileId` may equal the prior), exactly as the approvalMode precedent folds per accepted change. The `session/approvalModeChanged` member pattern with `profileId` in place of `mode`; additive-optional under the protocol spec (clients predating it skip the unknown method); subscription-gated as the protocol spec view events are."""
2280
2306
 
@@ -2287,6 +2313,26 @@ class SessionPermissionProfileChangedParams(TypedDict):
2287
2313
  viewCursor: str
2288
2314
 
2289
2315
 
2316
+ class SessionPromptHintCandidate(TypedDict):
2317
+ """One `session/promptHint` candidate: the table row's stable `id` plus its model-facing \"relevant when …\" description. Display copy stays client-side; the wire never carries it. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 346)."""
2318
+
2319
+ description: str
2320
+ id: str
2321
+
2322
+
2323
+ class SessionPromptHintParams(TypedDict):
2324
+ """`session/promptHint` params: the session plus the client-filtered candidate table. A read-only query in the `model/list` mold: no `commandId`, no durable record, no view event — the display-only side call over the wire. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 346)."""
2325
+
2326
+ candidates: list[SessionPromptHintCandidate]
2327
+ sessionId: str
2328
+
2329
+
2330
+ class SessionPromptHintResult(TypedDict, total=False):
2331
+ """`session/promptHint` result: the picked table id, or `None` when the model declines (the NONE arm) — never a copy string, so the pinned table stays the single source of truth. Experimental: the stable bundle strips this until the surface stabilizes (in-v1 row 346)."""
2332
+
2333
+ hintId: str
2334
+
2335
+
2290
2336
  class _SessionReadParamsBase(TypedDict):
2291
2337
  sessionId: str
2292
2338
 
@@ -3711,8 +3757,9 @@ METHODS: Final[dict[str, MethodSpec]] = {
3711
3757
  "approval/listPending": {"description": "Reads the full pending approval and user-input payloads for a session; a lease-free fold read.", "params": "ApprovalListPendingParams", "result": "ApprovalListPendingResult"},
3712
3758
  "computerUseSettings/read": {"description": "Reads the computer-use Settings: each capability's Always allow switch and the user's blocked apps from the approval policy store, plus the built-in blocks as locked rows when asked; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSettingsReadParams", "result": "ComputerUseSettings"},
3713
3759
  "computerUseSettings/update": {"description": "Applies one Settings patch (capability dropdowns, blocked apps to add or remove) all-or-nothing and answers the user's Settings after it; a built-in block is refused in either list; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSettingsUpdateParams", "result": "ComputerUseSettings"},
3714
- "computerUseSetup/read": {"description": "Reads one session's computer-use setup state and permissions by running cua_setup status for it as a host command: no model turn, no prompt, no spawn; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSetupReadParams", "result": "ComputerUseSetupState"},
3715
- "computerUseSetup/start": {"description": "A human command: runs cua_setup start for one session, between turns, exactly as the TUI's /cua on does, and answers the state it settles in, with the refusal code when setup refused; computerUseUnavailable while the CUA gate is off.", "params": "ComputerUseSetupStartParams", "result": "ComputerUseSetupState"},
3760
+ "computerUseSetup/check": {"description": "Reads the host's three macOS grants with no prompt: starts the computer-use helper only long enough to check them, reports each as granted or missing, and ends it; never requests a grant or opens System Settings. Needs computerUseHostSetup; commandRejected runtime_busy while a setup attempt holds the host.", "params": None, "result": "ComputerUseSetupState"},
3761
+ "computerUseSetup/read": {"description": "Reads one session's computer-use setup state and permissions by running cua_setup status for it as a host command: no model turn, no prompt, no spawn; computerUseUnavailable while the CUA gate is off. Without sessionId it reads the host's own setup, with computerUseHostSetup.", "params": "ComputerUseSetupReadParams", "result": "ComputerUseSetupState"},
3762
+ "computerUseSetup/start": {"description": "A human command: runs cua_setup start for one session, between turns, exactly as the TUI's /cua on does, and answers the state it settles in, with the refusal code when setup refused; computerUseUnavailable while the CUA gate is off. Without sessionId it starts the host's own setup under one host owner, with computerUseHostSetup.", "params": "ComputerUseSetupStartParams", "result": "ComputerUseSetupState"},
3716
3763
  "feedback/submit": {"description": "Submits a first-party feedback report through the host, reusing the TUI submitter seam (consent, bundle-first persistence, redaction), and answers the upload receipt.", "params": "FeedbackSubmitParams", "result": "FeedbackSubmitResult"},
3717
3764
  "goal/clear": {"description": "Clears the session goal; never wakes and its ack never names a turn.", "params": "GoalClearParams", "result": "GoalCommandResult"},
3718
3765
  "goal/edit": {"description": "Replaces the current goal's objective under the same wake gate as goal/set.", "params": "GoalEditParams", "result": "GoalCommandResult"},
@@ -3746,6 +3793,7 @@ METHODS: Final[dict[str, MethodSpec]] = {
3746
3793
  "session/compact": {"description": "Compacts the session's conversation context; runs asynchronously, so the ack is admission only.", "params": "SessionCompactParams", "result": "SessionCompactResult"},
3747
3794
  "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"},
3748
3795
  "session/list": {"description": "Pages through stored sessions under the sessions root for history and picker UIs; read-only, never touches leases.", "params": "SessionListParams", "result": "SessionListResult"},
3796
+ "session/promptHint": {"description": "Picks one feature-tip table id over the client-supplied candidates; display-only, nothing is logged.", "params": "SessionPromptHintParams", "result": "SessionPromptHintResult"},
3749
3797
  "session/read": {"description": "Reads one stored session without attaching: no lease, no load, no subscription, no resume record.", "params": "SessionReadParams", "result": "SessionReadResult"},
3750
3798
  "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"},
3751
3799
  "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"},
@@ -3803,7 +3851,7 @@ NOTIFICATIONS: Final[dict[str, NotificationSpec]] = {
3803
3851
  "approval/requested": {"description": "An approval opened: the fold of its durable Requested record.", "params": "ApprovalRequestParams"},
3804
3852
  "approval/resolved": {"description": "The first durable approval terminal landed; protected delivery.", "params": "ApprovalResolvedParams"},
3805
3853
  "approval/updated": {"description": "A non-terminal approval record changed the pending view.", "params": "ApprovalUpdatedParams"},
3806
- "computerUseSetup/changed": {"description": "A computerUseSetup/read or /start observed a session's setup state differ from the last one sent for it, including inProgress when a start begins and the state it settles in.", "params": "ComputerUseSetupChanged"},
3854
+ "computerUseSetup/changed": {"description": "A computerUseSetup/read or /start observed a session's setup state differ from the last one sent for it, including inProgress when a start begins and the state it settles in. Without sessionId it carries the host's own setup state, delivered only with computerUseHostSetup.", "params": "ComputerUseSetupChanged"},
3807
3855
  "initialized": {"description": "Client-to-server notification closing the handshake; no params.", "params": None},
3808
3856
  "item/completed": {"description": "An item reached its terminal state: the authoritative final object.", "params": "ItemCompletedParams"},
3809
3857
  "item/delta": {"description": "Streaming append to an open item's field path (ephemeral-sourced, no sourceRange; opt-out-able).", "params": "ItemDeltaParams"},
@@ -3894,4 +3942,4 @@ ERRORS: Final[tuple[ErrorSpec, ...]] = (
3894
3942
  {"code": -32072, "kind": "admissionChoiceInvalid", "retryable": False, "overrideKinds": ()},
3895
3943
  )
3896
3944
 
3897
- GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "rawLog", "peerMessaging",)
3945
+ GRANTABLE_CAPABILITIES: Final[tuple[str, ...]] = ("userShell", "sessionMcp", "sessionListStream", "feedback", "computerUseSetup", "computerUseHostSetup", "rawLog", "peerMessaging",)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: muse-code-msp
3
- Version: 1.4.6
3
+ Version: 1.4.7
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