@github/copilot-sdk-win32-x64 1.0.16 → 1.0.17-preview.1

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.
@@ -1061,7 +1061,7 @@
1061
1061
  "managedSettings": {
1062
1062
  "read": {
1063
1063
  "rpcMethod": "managedSettings.read",
1064
- "description": "Discovers device-managed settings from production MDM and managed-file sources, validates them against the runtime-owned managed-settings schema, and returns the canonical JSON without requiring a session.",
1064
+ "description": "Discovers device-managed settings from production MDM and managed-file sources, validates them against the runtime-owned managed-settings schema, and returns the canonical JSON without requiring a session. `managedSettings.resolve` returns the same device settings together with the account's server policy.",
1065
1065
  "params": null,
1066
1066
  "result": {
1067
1067
  "$ref": "#/definitions/ManagedSettingsReadResult",
@@ -1071,12 +1071,61 @@
1071
1071
  },
1072
1072
  "clearCache": {
1073
1073
  "rpcMethod": "managedSettings.clearCache",
1074
- "description": "Force-refreshes enterprise managed settings for every account: wipes the persistent server-policy cache (the whole `<cacheHome>/managed-settings` directory) and drops this runtime process's in-memory retained server policy. It does not itself fetch policy — the effect is that the next time a session resolves managed settings for an account, that resolution re-fetches the account's org policy from the network instead of serving a cached response. Note that `managedSettings.read` returns only device/MDM settings and never triggers the account server-policy fetch, so a host implementing \"sync account policy\" should start a fresh session resolution rather than treat a subsequent `managedSettings.read` as the refreshed org policy. Mirrors the invalidation a sign-out performs, broadened from the one signing-out account to all of them; device/MDM layers describe the machine, not the account, and are left untouched. Rejects if the on-disk cache cannot be removed.",
1074
+ "description": "Force-refreshes enterprise managed settings for every account: wipes the persistent server-policy cache (the whole `<cacheHome>/managed-settings` directory) and drops this runtime process's in-memory retained server policy. It does not itself fetch policy — the effect is that the next time a session resolves managed settings for an account, that resolution re-fetches the account's org policy from the network instead of serving a cached response. Note that `managedSettings.read` returns only device/MDM settings and never triggers the account server-policy fetch, so a host implementing \"sync account policy\" should call `managedSettings.resolve` or start a fresh session resolution rather than treat a subsequent `managedSettings.read` as the refreshed org policy. Mirrors the invalidation a sign-out performs, broadened from the one signing-out account to all of them; device/MDM layers describe the machine, not the account, and are left untouched. Rejects if the on-disk cache cannot be removed.",
1075
1075
  "params": null,
1076
1076
  "result": {
1077
1077
  "type": "null"
1078
1078
  },
1079
1079
  "stability": "experimental"
1080
+ },
1081
+ "resolve": {
1082
+ "rpcMethod": "managedSettings.resolve",
1083
+ "description": "Resolves the effective enterprise managed settings without a session, from the device channel and, when an account is available, the account's server policy through the same per-account cache sessions use. A cached server policy less than an hour old is used without a fetch; otherwise the policy is fetched, and when the fetch fails a cached policy up to 24 hours old is used instead, unless `forceRemoteSettingsRefresh` requires a live fetch. With no account requested or signed in, it reports device policy only; signing out removes the account's cached policy. It can fetch server policy over the network when the cache is stale, so call it off latency-critical paths such as startup rather than before listing models. The policy helper is not run. `layers` lists each channel's document before merging, and `values` and `meta` carry typed effective values and their lock state for the keys typed so far.",
1084
+ "params": {
1085
+ "$ref": "#/definitions/ManagedSettingsResolveRequest",
1086
+ "description": "Optional opaque account selection or GitHub token whose managed settings are resolved."
1087
+ },
1088
+ "result": {
1089
+ "$ref": "#/definitions/ManagedSettingsResolveResult",
1090
+ "description": "Effective enterprise managed settings for an account, resolved without a session."
1091
+ },
1092
+ "stability": "experimental"
1093
+ },
1094
+ "schema": {
1095
+ "rpcMethod": "managedSettings.schema",
1096
+ "description": "Returns the managed-settings authoring JSON schema with descriptive `x-composition` annotations aligned with the shared settings-engine vocabulary. These annotations are not a complete runtime composition contract: model, effortLevel, and contextTier remain coupled. Use `managedSettings.compose` for the runtime's effective result. Performs no I/O.",
1097
+ "params": null,
1098
+ "result": {
1099
+ "$ref": "#/definitions/ManagedSettingsSchemaResult",
1100
+ "description": "The authoring JSON schema for managed settings recognized by this runtime."
1101
+ },
1102
+ "stability": "experimental"
1103
+ },
1104
+ "validate": {
1105
+ "rpcMethod": "managedSettings.validate",
1106
+ "description": "Validates a candidate managed-settings document the way the runtime validates delivered policy, without applying it. Reports errors that would reject the document, warnings for content the runtime ignores, and the canonical document it would apply. Document text nested more than 64 levels deep is rejected. Performs no I/O.",
1107
+ "params": {
1108
+ "$ref": "#/definitions/ManagedSettingsValidateRequest",
1109
+ "description": "A candidate managed-settings document to validate without applying it."
1110
+ },
1111
+ "result": {
1112
+ "$ref": "#/definitions/ManagedSettingsValidateResult",
1113
+ "description": "Result of validating a managed-settings document."
1114
+ },
1115
+ "stability": "experimental"
1116
+ },
1117
+ "compose": {
1118
+ "rpcMethod": "managedSettings.compose",
1119
+ "description": "Merges candidate managed-settings documents for the device, server, and policy-helper channels into the effective settings the runtime would enforce on this host, using the same precedence and composition rules as live resolution, without applying them. Like live resolution, a server's advisory sandbox force-enable is declined on a host that cannot run the sandbox. Does not fetch policy or read policy files, but may perform blocking OS or subprocess probes for sandbox support. Preview documents are limited to 1 MiB and 64 levels of nesting.",
1120
+ "params": {
1121
+ "$ref": "#/definitions/ManagedSettingsComposeRequest",
1122
+ "description": "Candidate managed-settings documents to merge without applying them."
1123
+ },
1124
+ "result": {
1125
+ "$ref": "#/definitions/ManagedSettingsComposeResult",
1126
+ "description": "The effective managed settings the runtime would enforce for the given documents, in the same shape `managedSettings.resolve` returns."
1127
+ },
1128
+ "stability": "experimental"
1080
1129
  }
1081
1130
  },
1082
1131
  "runtime": {
@@ -6331,6 +6380,11 @@
6331
6380
  "$ref": "#/definitions/McpOauthLoginGrantType",
6332
6381
  "description": "Optional OAuth grant type override for this login. Defaults to the server configuration, or authorization_code when no grant type is specified."
6333
6382
  },
6383
+ "redirectUri": {
6384
+ "type": "string",
6385
+ "format": "uri",
6386
+ "description": "Optional externally visible HTTPS redirect URI for a host-managed callback endpoint. When supplied, the runtime still owns discovery, PKCE, token exchange, persistence, and reconnect, but does not bind a loopback listener or terminate HTTPS. The URI must not contain query parameters or a fragment and must be registered for the selected CIMD, DCR, or static OAuth client."
6387
+ },
6334
6388
  "loginId": {
6335
6389
  "type": "string",
6336
6390
  "description": "Required for owned login. Consumes the exact prepareLogin handle once.\nSet forceReauth and display options during preparation, not consumption."
@@ -6345,7 +6399,7 @@
6345
6399
  "serverName"
6346
6400
  ],
6347
6401
  "additionalProperties": false,
6348
- "description": "Remote MCP server name and optional overrides controlling reauthentication, OAuth client display name, callback success-page copy, and static OAuth client selection.",
6402
+ "description": "Remote MCP server name and optional overrides controlling reauthentication, OAuth client display name, callback handling, and static OAuth client selection.",
6349
6403
  "title": "McpOauthLoginRequest",
6350
6404
  "stability": "experimental",
6351
6405
  "x-legacy-parameters": [
@@ -6365,6 +6419,42 @@
6365
6419
  },
6366
6420
  "stability": "experimental"
6367
6421
  },
6422
+ "complete": {
6423
+ "rpcMethod": "session.mcp.oauth.complete",
6424
+ "description": "Completes a runtime-managed MCP OAuth login after the authorization server redirects to a host-managed callback URL.",
6425
+ "params": {
6426
+ "type": "object",
6427
+ "properties": {
6428
+ "sessionId": {
6429
+ "type": "string",
6430
+ "description": "Target session identifier"
6431
+ },
6432
+ "authorizationId": {
6433
+ "type": "string",
6434
+ "minLength": 1,
6435
+ "description": "Opaque identifier returned by session.mcp.oauth.login for the pending external callback."
6436
+ },
6437
+ "callbackUrl": {
6438
+ "type": "string",
6439
+ "format": "uri",
6440
+ "description": "Full externally visible HTTPS callback URL received by the host, including the authorization response query parameters. Applications behind a reverse proxy must reconstruct the public URL rather than passing an internal proxy URL."
6441
+ }
6442
+ },
6443
+ "required": [
6444
+ "sessionId",
6445
+ "authorizationId",
6446
+ "callbackUrl"
6447
+ ],
6448
+ "additionalProperties": false,
6449
+ "description": "Host-delivered callback for a runtime-managed MCP OAuth login.",
6450
+ "title": "McpOauthCompleteRequest",
6451
+ "stability": "experimental"
6452
+ },
6453
+ "result": {
6454
+ "type": "null"
6455
+ },
6456
+ "stability": "experimental"
6457
+ },
6368
6458
  "probe": {
6369
6459
  "rpcMethod": "session.mcp.oauth.probe",
6370
6460
  "description": "Passively probes a configured remote MCP server to classify whether OAuth is required or a cached/override token is accepted. Does not start OAuth, emit pending OAuth requests, or mutate MCP connection state.",
@@ -6832,6 +6922,89 @@
6832
6922
  },
6833
6923
  "stability": "experimental"
6834
6924
  }
6925
+ },
6926
+ "prompts": {
6927
+ "list": {
6928
+ "rpcMethod": "session.mcp.prompts.list",
6929
+ "description": "Enumerate one page of prompts a connected MCP server exposes (proxies MCP `prompts/list`). Pass `cursor` to continue from a prior result's `nextCursor`.",
6930
+ "params": {
6931
+ "type": "object",
6932
+ "properties": {
6933
+ "sessionId": {
6934
+ "type": "string",
6935
+ "description": "Target session identifier"
6936
+ },
6937
+ "serverName": {
6938
+ "type": "string",
6939
+ "minLength": 1,
6940
+ "pattern": "^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$",
6941
+ "description": "Name of the MCP server whose prompts to enumerate"
6942
+ },
6943
+ "cursor": {
6944
+ "type": "string",
6945
+ "description": "Opaque MCP pagination cursor from a prior `nextCursor` value"
6946
+ }
6947
+ },
6948
+ "required": [
6949
+ "sessionId",
6950
+ "serverName"
6951
+ ],
6952
+ "additionalProperties": false,
6953
+ "description": "MCP server whose prompts to enumerate.",
6954
+ "title": "McpPromptsListRequest",
6955
+ "stability": "experimental"
6956
+ },
6957
+ "result": {
6958
+ "$ref": "#/definitions/McpPromptsListResult",
6959
+ "description": "One page of prompts advertised by the named MCP server."
6960
+ },
6961
+ "stability": "experimental"
6962
+ },
6963
+ "get": {
6964
+ "rpcMethod": "session.mcp.prompts.get",
6965
+ "description": "Get a prompt's messages from a connected MCP server (proxies MCP `prompts/get`). Content is preserved as opaque JSON. Does not send messages to the model, execute tools, or fetch referenced resources.",
6966
+ "params": {
6967
+ "type": "object",
6968
+ "properties": {
6969
+ "sessionId": {
6970
+ "type": "string",
6971
+ "description": "Target session identifier"
6972
+ },
6973
+ "serverName": {
6974
+ "type": "string",
6975
+ "minLength": 1,
6976
+ "pattern": "^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$",
6977
+ "description": "Name of the MCP server hosting the prompt"
6978
+ },
6979
+ "promptName": {
6980
+ "type": "string",
6981
+ "minLength": 1,
6982
+ "description": "The programmatic name of the prompt"
6983
+ },
6984
+ "arguments": {
6985
+ "type": "object",
6986
+ "additionalProperties": {
6987
+ "type": "string"
6988
+ },
6989
+ "description": "String-valued arguments to pass to the prompt"
6990
+ }
6991
+ },
6992
+ "required": [
6993
+ "sessionId",
6994
+ "serverName",
6995
+ "promptName"
6996
+ ],
6997
+ "additionalProperties": false,
6998
+ "description": "MCP server, prompt name, and optional string-valued arguments.",
6999
+ "title": "McpPromptsGetRequest",
7000
+ "stability": "experimental"
7001
+ },
7002
+ "result": {
7003
+ "$ref": "#/definitions/McpPromptsGetResult",
7004
+ "description": "Prompt messages returned by the MCP server without sending them to the model."
7005
+ },
7006
+ "stability": "experimental"
7007
+ }
6835
7008
  }
6836
7009
  },
6837
7010
  "diagnostics": {
@@ -6940,6 +7113,29 @@
6940
7113
  },
6941
7114
  "stability": "experimental"
6942
7115
  },
7116
+ "getAccount": {
7117
+ "rpcMethod": "session.connectors.getAccount",
7118
+ "description": "Returns the session account selection, or null.",
7119
+ "params": {
7120
+ "type": "object",
7121
+ "properties": {
7122
+ "sessionId": {
7123
+ "type": "string",
7124
+ "description": "Target session identifier"
7125
+ }
7126
+ },
7127
+ "required": [
7128
+ "sessionId"
7129
+ ],
7130
+ "additionalProperties": false,
7131
+ "description": "Identifies the target session."
7132
+ },
7133
+ "result": {
7134
+ "$ref": "#/definitions/ConnectorSessionAccountResult",
7135
+ "description": "Session account selection, or null."
7136
+ },
7137
+ "stability": "experimental"
7138
+ },
6943
7139
  "getStatus": {
6944
7140
  "rpcMethod": "session.connectors.getStatus",
6945
7141
  "description": "Returns authoritative session Connector state from current availability, pinned account selection, cached catalog, and live MCP projection without performing a Connector service request.",
@@ -7196,6 +7392,10 @@
7196
7392
  "refreshCatalog": {
7197
7393
  "type": "boolean",
7198
7394
  "description": "When true, refresh the catalog before reconciling. A disabled Connector API performs no service request."
7395
+ },
7396
+ "forceConnectorName": {
7397
+ "type": "string",
7398
+ "description": "Optional Connector name to reinitialize. Requires the targetedReconcile capability."
7199
7399
  }
7200
7400
  },
7201
7401
  "required": [
@@ -7205,7 +7405,11 @@
7205
7405
  "additionalProperties": false,
7206
7406
  "description": "Requests authoritative Connector-to-MCP reconciliation for the pinned account.",
7207
7407
  "title": "ConnectorReconcileRequest",
7208
- "stability": "experimental"
7408
+ "stability": "experimental",
7409
+ "x-legacy-parameters": [
7410
+ "accountId",
7411
+ "refreshCatalog"
7412
+ ]
7209
7413
  },
7210
7414
  "result": {
7211
7415
  "$ref": "#/definitions/ConnectorStatus",
@@ -7289,7 +7493,7 @@
7289
7493
  },
7290
7494
  "result": {
7291
7495
  "$ref": "#/definitions/ManagedSettingsResolvedData",
7292
- "description": "Enterprise managed-settings resolution: the effective managed settings the session applied and which channels contributed, so SDK clients can show users what is enterprise-managed. Fires whenever managed policy is (re)applied — at session start, on resume, and on account switch. This is an ephemeral live snapshot (delivered to subscribers but not persisted to the session event log), because at session start it resolves before `session.start` is emitted. Device values take precedence over server values, then the policy helper, per ordinary key, while permissions compose restrictively across device, server, policy-helper, and SDK-client layers. The account-scoped `getManagedSettings()` API does not include session-local client injection. Marked experimental while the managed-settings surface stabilizes."
7496
+ "description": "Effective enterprise managed settings and contributing channels. Session events report applied policy; sessionless resolve reports an account/device snapshot, and compose reports a non-applying preview of candidate documents. Device values take precedence over server values, then the policy helper, per ordinary key, while permissions compose restrictively. Session-local SDK-client policy is included only in session results. Marked experimental while the managed-settings surface stabilizes."
7293
7497
  },
7294
7498
  "stability": "experimental"
7295
7499
  }
@@ -10469,7 +10673,7 @@
10469
10673
  "shell": {
10470
10674
  "exec": {
10471
10675
  "rpcMethod": "session.shell.exec",
10472
- "description": "Starts a shell command and streams output through session notifications. The command runs as the leader of its own process group (POSIX) or in a dedicated job object (Windows), so a forced termination — via \"shell.kill\", the request timeout, or session disposal — signals that whole group/job rather than only the direct child. Two gaps are worth planning for: a command that exits on its own does not trigger that teardown, and on POSIX a descendant that moves itself into a new session or process group (for example via \"setsid\") leaves the signalled group, so either can leave a background process running.",
10676
+ "description": "Starts a shell command, returning an RPC error if it cannot be spawned. The command runs as the leader of its own process group (POSIX) or in a dedicated job object (Windows), so a forced termination — via \"shell.kill\", the request timeout, or session disposal — signals that whole group/job rather than only the direct child. Two gaps are worth planning for: a command that exits on its own does not trigger that teardown, and on POSIX a descendant that moves itself into a new session or process group (for example via \"setsid\") leaves the signalled group, so either can leave a background process running.",
10473
10677
  "params": {
10474
10678
  "type": "object",
10475
10679
  "properties": {
@@ -10497,13 +10701,13 @@
10497
10701
  "command"
10498
10702
  ],
10499
10703
  "additionalProperties": false,
10500
- "description": "Shell command to run, with optional working directory and timeout in milliseconds.",
10704
+ "description": "Shell command to run, with optional working directory and timeout in milliseconds. Spawn failures return an RPC error.",
10501
10705
  "title": "ShellExecRequest",
10502
10706
  "stability": "experimental"
10503
10707
  },
10504
10708
  "result": {
10505
10709
  "$ref": "#/definitions/ShellExecResult",
10506
- "description": "Identifier of the spawned process, used to correlate streamed output and exit notifications."
10710
+ "description": "Identifier of the spawned shell process, usable with shell.kill while the process is running."
10507
10711
  },
10508
10712
  "stability": "experimental"
10509
10713
  },
@@ -15320,6 +15524,32 @@
15320
15524
  "description": "Credential-free authentication identity safe to expose to hosts and user interfaces.",
15321
15525
  "title": "AuthIdentity"
15322
15526
  },
15527
+ "AuthIdentityMetadata": {
15528
+ "type": "object",
15529
+ "properties": {
15530
+ "type": {
15531
+ "$ref": "#/definitions/AuthInfoType",
15532
+ "description": "Authentication type."
15533
+ },
15534
+ "host": {
15535
+ "type": "string",
15536
+ "description": "Identity host."
15537
+ },
15538
+ "login": {
15539
+ "type": "string",
15540
+ "description": "User login."
15541
+ }
15542
+ },
15543
+ "required": [
15544
+ "type",
15545
+ "host",
15546
+ "login"
15547
+ ],
15548
+ "additionalProperties": false,
15549
+ "description": "Credential-free identity metadata.",
15550
+ "title": "AuthIdentityMetadata",
15551
+ "stability": "experimental"
15552
+ },
15323
15553
  "AuthInfo": {
15324
15554
  "anyOf": [
15325
15555
  {
@@ -19522,6 +19752,16 @@
19522
19752
  "type": "boolean",
19523
19753
  "description": "Whether callers select a host-owned GitHub account through an opaque selection ID rather than supplying a provider token."
19524
19754
  },
19755
+ "sessionAccountSelection": {
19756
+ "type": "boolean",
19757
+ "default": false,
19758
+ "description": "Whether getAccount is supported. Absence means false."
19759
+ },
19760
+ "targetedReconcile": {
19761
+ "type": "boolean",
19762
+ "default": false,
19763
+ "description": "Whether reconcile accepts forceConnectorName. Absence means false."
19764
+ },
19525
19765
  "maxPollAttempts": {
19526
19766
  "type": "integer",
19527
19767
  "minimum": 0,
@@ -19550,7 +19790,16 @@
19550
19790
  "additionalProperties": false,
19551
19791
  "description": "Feature detection and hard polling limits for the EXPERIMENTAL session connector API.",
19552
19792
  "title": "ConnectorCapabilities",
19553
- "stability": "experimental"
19793
+ "stability": "experimental",
19794
+ "x-legacy-parameters": [
19795
+ "apiVersion",
19796
+ "availability",
19797
+ "consentContinuation",
19798
+ "opaqueAccountSelection",
19799
+ "maxPollAttempts",
19800
+ "maxPollIntervalMs",
19801
+ "maxDeadlineMs"
19802
+ ]
19554
19803
  },
19555
19804
  "ConnectorCatalogEntry": {
19556
19805
  "type": "object",
@@ -19567,6 +19816,18 @@
19567
19816
  "type": "string",
19568
19817
  "description": "Untrusted service description, when present."
19569
19818
  },
19819
+ "logo": {
19820
+ "type": "string",
19821
+ "description": "Optional catalog logo."
19822
+ },
19823
+ "tier": {
19824
+ "type": "string",
19825
+ "description": "Optional catalog tier."
19826
+ },
19827
+ "releaseTag": {
19828
+ "type": "string",
19829
+ "description": "Optional catalog release tag."
19830
+ },
19570
19831
  "status": {
19571
19832
  "$ref": "#/definitions/ConnectorCatalogStatus",
19572
19833
  "description": "Current authoritative service connection state."
@@ -19588,7 +19849,14 @@
19588
19849
  "additionalProperties": false,
19589
19850
  "description": "Credential-free Connector catalog entry.",
19590
19851
  "title": "ConnectorCatalogEntry",
19591
- "stability": "experimental"
19852
+ "stability": "experimental",
19853
+ "x-legacy-parameters": [
19854
+ "name",
19855
+ "displayName",
19856
+ "description",
19857
+ "status",
19858
+ "runtimeServerIds"
19859
+ ]
19592
19860
  },
19593
19861
  "ConnectorCatalogResult": {
19594
19862
  "type": "object",
@@ -19830,6 +20098,10 @@
19830
20098
  "refreshCatalog": {
19831
20099
  "type": "boolean",
19832
20100
  "description": "When true, refresh the catalog before reconciling. A disabled Connector API performs no service request."
20101
+ },
20102
+ "forceConnectorName": {
20103
+ "type": "string",
20104
+ "description": "Optional Connector name to reinitialize. Requires the targetedReconcile capability."
19833
20105
  }
19834
20106
  },
19835
20107
  "required": [
@@ -19838,7 +20110,11 @@
19838
20110
  "additionalProperties": false,
19839
20111
  "description": "Requests authoritative Connector-to-MCP reconciliation for the pinned account.",
19840
20112
  "title": "ConnectorReconcileRequest",
19841
- "stability": "experimental"
20113
+ "stability": "experimental",
20114
+ "x-legacy-parameters": [
20115
+ "accountId",
20116
+ "refreshCatalog"
20117
+ ]
19842
20118
  },
19843
20119
  "ConnectorRuntimeStatus": {
19844
20120
  "type": "object",
@@ -19866,6 +20142,41 @@
19866
20142
  "title": "ConnectorRuntimeStatus",
19867
20143
  "stability": "experimental"
19868
20144
  },
20145
+ "ConnectorSessionAccount": {
20146
+ "type": "object",
20147
+ "properties": {
20148
+ "accountId": {
20149
+ "type": "string",
20150
+ "description": "Opaque session-scoped account selection ID."
20151
+ },
20152
+ "authInfo": {
20153
+ "$ref": "#/definitions/AuthIdentityMetadata",
20154
+ "description": "Credential-free identity metadata."
20155
+ }
20156
+ },
20157
+ "required": [
20158
+ "accountId",
20159
+ "authInfo"
20160
+ ],
20161
+ "additionalProperties": false,
20162
+ "description": "Session account selection.",
20163
+ "title": "ConnectorSessionAccount",
20164
+ "stability": "experimental"
20165
+ },
20166
+ "ConnectorSessionAccountResult": {
20167
+ "anyOf": [
20168
+ {
20169
+ "$ref": "#/definitions/ConnectorSessionAccount",
20170
+ "description": "Session account selection."
20171
+ },
20172
+ {
20173
+ "type": "null"
20174
+ }
20175
+ ],
20176
+ "description": "Session account selection, or null.",
20177
+ "title": "ConnectorSessionAccountResult",
20178
+ "stability": "experimental"
20179
+ },
19869
20180
  "ConnectorStatus": {
19870
20181
  "type": "object",
19871
20182
  "properties": {
@@ -25629,6 +25940,202 @@
25629
25940
  "description": "Non-secret host-managed HTTP MCP server configuration. The containing map key is the stable managed identity; credentials are supplied dynamically by the host.",
25630
25941
  "title": "ManagedMcpServerConfig"
25631
25942
  },
25943
+ "ManagedSettingMeta": {
25944
+ "type": "object",
25945
+ "properties": {
25946
+ "overridable": {
25947
+ "type": "boolean",
25948
+ "description": "Whether users and repositories may choose a different value. `false` means policy locks the value."
25949
+ },
25950
+ "source": {
25951
+ "type": "string",
25952
+ "description": "Channel that supplied this scalar value, matching a `layers[].source`: `device`, `server`, or `policyHelper`. These scalar defaults select one winning channel, not a mixed source. Treat unknown values as additional channels; more may be added."
25953
+ }
25954
+ },
25955
+ "required": [
25956
+ "overridable",
25957
+ "source"
25958
+ ],
25959
+ "additionalProperties": false,
25960
+ "description": "Lock state and provenance of one managed setting.",
25961
+ "title": "ManagedSettingMeta",
25962
+ "stability": "experimental"
25963
+ },
25964
+ "ManagedSettingsChannel": {
25965
+ "type": "string",
25966
+ "enum": [
25967
+ "device",
25968
+ "server",
25969
+ "policyHelper"
25970
+ ],
25971
+ "description": "A channel accepted by managedSettings.compose.",
25972
+ "title": "ManagedSettingsChannel",
25973
+ "x-enumDescriptions": {
25974
+ "device": "Device policy, the strongest channel.",
25975
+ "server": "Account or organization policy.",
25976
+ "policyHelper": "Session-local helper output, the weakest channel."
25977
+ },
25978
+ "stability": "experimental"
25979
+ },
25980
+ "ManagedSettingsComposeLayer": {
25981
+ "type": "object",
25982
+ "properties": {
25983
+ "source": {
25984
+ "$ref": "#/definitions/ManagedSettingsChannel",
25985
+ "description": "The channel whose candidate document is being supplied."
25986
+ },
25987
+ "settings": {
25988
+ "description": "Candidate managed-settings document. Omit when the channel delivered none, as in resolve output.",
25989
+ "x-opaque-json": true
25990
+ }
25991
+ },
25992
+ "required": [
25993
+ "source"
25994
+ ],
25995
+ "additionalProperties": false,
25996
+ "description": "One candidate channel; absent settings represents a channel that delivered no document.",
25997
+ "title": "ManagedSettingsComposeLayer",
25998
+ "stability": "experimental"
25999
+ },
26000
+ "ManagedSettingsComposeRequest": {
26001
+ "type": "object",
26002
+ "properties": {
26003
+ "layers": {
26004
+ "type": "array",
26005
+ "items": {
26006
+ "$ref": "#/definitions/ManagedSettingsComposeLayer",
26007
+ "description": "One candidate channel; absent settings represents a channel that delivered no document."
26008
+ },
26009
+ "description": "One entry per channel. `source` must be `device`, `server`, or `policyHelper`, each at most once (checked at runtime); order does not matter, because channel precedence is fixed. To preview documents from resolve output, map recognized source strings to ManagedSettingsChannel and copy their settings; generated resolve and compose layer types are distinct. Omitted settings means this channel delivered no document. Supplied documents must be valid within the preview limits; warnings are returned in diagnostics. Compose does not reproduce source-failure state or retained enforcement floors from resolve."
26010
+ }
26011
+ },
26012
+ "required": [
26013
+ "layers"
26014
+ ],
26015
+ "additionalProperties": false,
26016
+ "description": "Candidate managed-settings documents to merge without applying them.",
26017
+ "title": "ManagedSettingsComposeRequest",
26018
+ "stability": "experimental"
26019
+ },
26020
+ "ManagedSettingsComposeResult": {
26021
+ "type": "object",
26022
+ "properties": {
26023
+ "resolved": {
26024
+ "$ref": "#/definitions/ManagedSettingsResolvedData",
26025
+ "description": "Effective managed settings, in the same shape as `session.managedSettings.get`."
26026
+ },
26027
+ "values": {
26028
+ "$ref": "#/definitions/ManagedSettingsValues",
26029
+ "description": "Typed effective values, as in `managedSettings.resolve`."
26030
+ },
26031
+ "meta": {
26032
+ "$ref": "#/definitions/ManagedSettingsMeta",
26033
+ "description": "Per-key lock state and provenance for `values`."
26034
+ },
26035
+ "layers": {
26036
+ "type": "array",
26037
+ "items": {
26038
+ "$ref": "#/definitions/ManagedSettingsLayer",
26039
+ "description": "One managed-settings channel and the document it delivered."
26040
+ },
26041
+ "description": "Only the supplied channels, strongest first, with canonical documents. Empty canonical documents are represented as absent settings, as in live resolution."
26042
+ },
26043
+ "diagnostics": {
26044
+ "type": "array",
26045
+ "items": {
26046
+ "$ref": "#/definitions/ManagedSettingsDiagnostic",
26047
+ "description": "One validation finding for a managed-settings document."
26048
+ },
26049
+ "description": "Warnings about ignored content, with paths prefixed by the channel name."
26050
+ }
26051
+ },
26052
+ "required": [
26053
+ "resolved",
26054
+ "layers",
26055
+ "diagnostics"
26056
+ ],
26057
+ "additionalProperties": false,
26058
+ "description": "The effective managed settings the runtime would enforce for the given documents, in the same shape `managedSettings.resolve` returns.",
26059
+ "title": "ManagedSettingsComposeResult",
26060
+ "stability": "experimental"
26061
+ },
26062
+ "ManagedSettingsDiagnostic": {
26063
+ "type": "object",
26064
+ "properties": {
26065
+ "path": {
26066
+ "type": "string",
26067
+ "description": "Dot-separated path of the offending setting, such as `autoTier.overridable`. Empty for the document as a whole."
26068
+ },
26069
+ "severity": {
26070
+ "$ref": "#/definitions/ManagedSettingsDiagnosticSeverity",
26071
+ "description": "Whether the finding rejects the document."
26072
+ },
26073
+ "message": {
26074
+ "type": "string",
26075
+ "description": "Human-readable description of the finding."
26076
+ }
26077
+ },
26078
+ "required": [
26079
+ "path",
26080
+ "severity",
26081
+ "message"
26082
+ ],
26083
+ "additionalProperties": false,
26084
+ "description": "One validation finding for a managed-settings document.",
26085
+ "title": "ManagedSettingsDiagnostic",
26086
+ "stability": "experimental"
26087
+ },
26088
+ "ManagedSettingsDiagnosticSeverity": {
26089
+ "type": "string",
26090
+ "enum": [
26091
+ "error",
26092
+ "warning"
26093
+ ],
26094
+ "description": "Severity of a managed-settings validation finding.",
26095
+ "title": "ManagedSettingsDiagnosticSeverity",
26096
+ "x-enumDescriptions": {
26097
+ "error": "The runtime rejects the document.",
26098
+ "warning": "The runtime accepts the document but ignores the flagged content."
26099
+ },
26100
+ "stability": "experimental"
26101
+ },
26102
+ "ManagedSettingsLayer": {
26103
+ "type": "object",
26104
+ "properties": {
26105
+ "source": {
26106
+ "type": "string",
26107
+ "description": "Channel identifier: `device` (MDM, plist, registry, or managed file), `server` (account or organization policy), or `policyHelper` (session-local helper output, supported by compose). Treat unknown output values as additional channels; more may be added."
26108
+ },
26109
+ "settings": {
26110
+ "description": "Validated managed-settings document this channel delivered. Absent when the channel delivered none.",
26111
+ "x-opaque-json": true
26112
+ }
26113
+ },
26114
+ "required": [
26115
+ "source"
26116
+ ],
26117
+ "additionalProperties": false,
26118
+ "description": "One managed-settings channel and the document it delivered.",
26119
+ "title": "ManagedSettingsLayer",
26120
+ "stability": "experimental"
26121
+ },
26122
+ "ManagedSettingsMeta": {
26123
+ "type": "object",
26124
+ "properties": {
26125
+ "model": {
26126
+ "$ref": "#/definitions/ManagedSettingMeta",
26127
+ "description": "Lock state and provenance of `values.model`."
26128
+ },
26129
+ "autoTier": {
26130
+ "$ref": "#/definitions/ManagedSettingMeta",
26131
+ "description": "Lock state and provenance of `values.autoTier`."
26132
+ }
26133
+ },
26134
+ "additionalProperties": false,
26135
+ "description": "Per-key lock state and provenance for `ManagedSettingsValues`, with the same field names. Producers emit each typed key in values and meta together; both outer objects are omitted when no typed key is set.",
26136
+ "title": "ManagedSettingsMeta",
26137
+ "stability": "experimental"
26138
+ },
25632
26139
  "ManagedSettingsReadResult": {
25633
26140
  "type": "object",
25634
26141
  "properties": {
@@ -25705,7 +26212,7 @@
25705
26212
  "managedKeys"
25706
26213
  ],
25707
26214
  "additionalProperties": false,
25708
- "description": "Enterprise managed-settings resolution: the effective managed settings the session applied and which channels contributed, so SDK clients can show users what is enterprise-managed. Fires whenever managed policy is (re)applied — at session start, on resume, and on account switch. This is an ephemeral live snapshot (delivered to subscribers but not persisted to the session event log), because at session start it resolves before `session.start` is emitted. Device values take precedence over server values, then the policy helper, per ordinary key, while permissions compose restrictively across device, server, policy-helper, and SDK-client layers. The account-scoped `getManagedSettings()` API does not include session-local client injection. Marked experimental while the managed-settings surface stabilizes.",
26215
+ "description": "Effective enterprise managed settings and contributing channels. Session events report applied policy; sessionless resolve reports an account/device snapshot, and compose reports a non-applying preview of candidate documents. Device values take precedence over server values, then the policy helper, per ordinary key, while permissions compose restrictively. Session-local SDK-client policy is included only in session results. Marked experimental while the managed-settings surface stabilizes.",
25709
26216
  "title": "ManagedSettingsResolvedData",
25710
26217
  "stability": "experimental"
25711
26218
  },
@@ -25730,6 +26237,167 @@
25730
26237
  "none": "No managed policy is in force (no channel contributed)."
25731
26238
  }
25732
26239
  },
26240
+ "ManagedSettingsResolveRequest": {
26241
+ "anyOf": [
26242
+ {
26243
+ "not": {}
26244
+ },
26245
+ {
26246
+ "type": "object",
26247
+ "properties": {
26248
+ "selectionId": {
26249
+ "type": "string",
26250
+ "description": "Opaque account identifier returned by `account.getAllUsers`. When omitted, the current account is used, or device policy only when no account is signed in."
26251
+ },
26252
+ "gitHubToken": {
26253
+ "type": "string",
26254
+ "description": "GitHub token to resolve instead of the current account. The call fails when the token cannot be resolved."
26255
+ },
26256
+ "clientName": {
26257
+ "type": "string",
26258
+ "description": "Embedding client identity for server policy requests, as in session creation. Omit for the CLI identity."
26259
+ }
26260
+ },
26261
+ "additionalProperties": false
26262
+ }
26263
+ ],
26264
+ "description": "Optional opaque account selection or GitHub token whose managed settings are resolved.",
26265
+ "title": "ManagedSettingsResolveRequest",
26266
+ "stability": "experimental"
26267
+ },
26268
+ "ManagedSettingsResolveResult": {
26269
+ "type": "object",
26270
+ "properties": {
26271
+ "account": {
26272
+ "type": "string",
26273
+ "description": "Printable opaque identity of the account the settings were resolved for, suitable for comparison and storage, not an account selectionId. Absent when no account was available, in which case only device policy is reported."
26274
+ },
26275
+ "resolved": {
26276
+ "$ref": "#/definitions/ManagedSettingsResolvedData",
26277
+ "description": "Effective managed settings from the device and account (server) channels, in the same shape as `session.managedSettings.get`, excluding session-local injection."
26278
+ },
26279
+ "values": {
26280
+ "$ref": "#/definitions/ManagedSettingsValues",
26281
+ "description": "Typed effective values of managed settings, keyed like the managed-settings schema and already resolved across channels, with the `{ \"overridable\": ... }` wrapper removed. Present when policy sets at least one typed key. Keys not typed here are available in `resolved.settings`."
26282
+ },
26283
+ "meta": {
26284
+ "$ref": "#/definitions/ManagedSettingsMeta",
26285
+ "description": "Per-key lock state and provenance for the entries in `values`, using the same key names."
26286
+ },
26287
+ "layers": {
26288
+ "type": "array",
26289
+ "items": {
26290
+ "$ref": "#/definitions/ManagedSettingsLayer",
26291
+ "description": "One managed-settings channel and the document it delivered."
26292
+ },
26293
+ "description": "Each managed-settings channel consulted, strongest first, with the validated document it delivered before merging. `resolved.settings` is the merged result. More channels may be added over time."
26294
+ },
26295
+ "diagnostics": {
26296
+ "type": "array",
26297
+ "items": {
26298
+ "$ref": "#/definitions/ManagedSettingsDiagnostic",
26299
+ "description": "One validation finding for a managed-settings document."
26300
+ },
26301
+ "description": "Warnings about unavailable policy sources or a failed refresh served from cache. A cached response is not proof of a successful live fetch; `resolved.failClosed` separately describes enforcement."
26302
+ }
26303
+ },
26304
+ "required": [
26305
+ "resolved",
26306
+ "layers",
26307
+ "diagnostics"
26308
+ ],
26309
+ "additionalProperties": false,
26310
+ "description": "Effective enterprise managed settings for an account, resolved without a session.",
26311
+ "title": "ManagedSettingsResolveResult",
26312
+ "stability": "experimental"
26313
+ },
26314
+ "ManagedSettingsSchemaResult": {
26315
+ "type": "object",
26316
+ "properties": {
26317
+ "schema": {
26318
+ "description": "JSON schema (draft 2020-12) with descriptive shared `x-composition` annotations, not a complete runtime composition contract. Model, effortLevel, and contextTier remain coupled; use `managedSettings.compose` for the runtime's effective result.",
26319
+ "x-opaque-json": true
26320
+ },
26321
+ "runtimeVersion": {
26322
+ "type": "string",
26323
+ "description": "Version of the runtime that owns this schema."
26324
+ }
26325
+ },
26326
+ "required": [
26327
+ "schema",
26328
+ "runtimeVersion"
26329
+ ],
26330
+ "additionalProperties": false,
26331
+ "description": "The authoring JSON schema for managed settings recognized by this runtime.",
26332
+ "title": "ManagedSettingsSchemaResult",
26333
+ "stability": "experimental"
26334
+ },
26335
+ "ManagedSettingsValidateRequest": {
26336
+ "type": "object",
26337
+ "properties": {
26338
+ "content": {
26339
+ "description": "The document to validate: a JSON object, or a string containing the document's JSON text. Preview documents are limited to 1 MiB and 64 levels of nesting, a stricter resource limit than delivered-policy parsing; violations are returned as diagnostics.",
26340
+ "x-opaque-json": true
26341
+ },
26342
+ "layer": {
26343
+ "type": "string",
26344
+ "description": "Channel the document is meant for (`device`, `server`, or `policyHelper`). Some keys are only honored in some channels; for example, a `policyHelper` registration is ignored in policy-helper output. When omitted, no channel-specific checks run."
26345
+ }
26346
+ },
26347
+ "required": [
26348
+ "content"
26349
+ ],
26350
+ "additionalProperties": false,
26351
+ "description": "A candidate managed-settings document to validate without applying it.",
26352
+ "title": "ManagedSettingsValidateRequest",
26353
+ "stability": "experimental"
26354
+ },
26355
+ "ManagedSettingsValidateResult": {
26356
+ "type": "object",
26357
+ "properties": {
26358
+ "valid": {
26359
+ "type": "boolean",
26360
+ "description": "Whether the runtime would accept the document within the preview resource limits. Always equals whether `settings` is present. An invalid document is rejected as a whole."
26361
+ },
26362
+ "settings": {
26363
+ "description": "Canonical form of the document the runtime would apply, with unrecognized keys removed. Absent when the document is invalid.",
26364
+ "x-opaque-json": true
26365
+ },
26366
+ "diagnostics": {
26367
+ "type": "array",
26368
+ "items": {
26369
+ "$ref": "#/definitions/ManagedSettingsDiagnostic",
26370
+ "description": "One validation finding for a managed-settings document."
26371
+ },
26372
+ "description": "Errors that reject the document and warnings about content the runtime ignores."
26373
+ }
26374
+ },
26375
+ "required": [
26376
+ "valid",
26377
+ "diagnostics"
26378
+ ],
26379
+ "additionalProperties": false,
26380
+ "description": "Result of validating a managed-settings document.",
26381
+ "title": "ManagedSettingsValidateResult",
26382
+ "stability": "experimental"
26383
+ },
26384
+ "ManagedSettingsValues": {
26385
+ "type": "object",
26386
+ "properties": {
26387
+ "model": {
26388
+ "type": "string",
26389
+ "description": "Managed default model identifier, as configured. New sessions start with it; it can name a model the account cannot use, so hosts match it against the listed models."
26390
+ },
26391
+ "autoTier": {
26392
+ "$ref": "#/definitions/AutoTier",
26393
+ "description": "Managed Auto routing preference, used when the selected model is `auto`."
26394
+ }
26395
+ },
26396
+ "additionalProperties": false,
26397
+ "description": "Typed effective values of managed settings. Each field mirrors the managed-settings schema key of the same name; more keys are added as they are typed.",
26398
+ "title": "ManagedSettingsValues",
26399
+ "stability": "experimental"
26400
+ },
25733
26401
  "MarketplaceAddResult": {
25734
26402
  "type": "object",
25735
26403
  "properties": {
@@ -28210,6 +28878,29 @@
28210
28878
  "additionalProperties": false,
28211
28879
  "description": "Honest terminal cancellation result; persistence or recovery failures remain RPC errors."
28212
28880
  },
28881
+ "McpOauthCompleteRequest": {
28882
+ "type": "object",
28883
+ "properties": {
28884
+ "authorizationId": {
28885
+ "type": "string",
28886
+ "minLength": 1,
28887
+ "description": "Opaque identifier returned by session.mcp.oauth.login for the pending external callback."
28888
+ },
28889
+ "callbackUrl": {
28890
+ "type": "string",
28891
+ "format": "uri",
28892
+ "description": "Full externally visible HTTPS callback URL received by the host, including the authorization response query parameters. Applications behind a reverse proxy must reconstruct the public URL rather than passing an internal proxy URL."
28893
+ }
28894
+ },
28895
+ "required": [
28896
+ "authorizationId",
28897
+ "callbackUrl"
28898
+ ],
28899
+ "additionalProperties": false,
28900
+ "description": "Host-delivered callback for a runtime-managed MCP OAuth login.",
28901
+ "title": "McpOauthCompleteRequest",
28902
+ "stability": "experimental"
28903
+ },
28213
28904
  "McpOauthHandlePendingRequest": {
28214
28905
  "type": "object",
28215
28906
  "properties": {
@@ -28296,6 +28987,11 @@
28296
28987
  "$ref": "#/definitions/McpOauthLoginGrantType",
28297
28988
  "description": "Optional OAuth grant type override for this login. Defaults to the server configuration, or authorization_code when no grant type is specified."
28298
28989
  },
28990
+ "redirectUri": {
28991
+ "type": "string",
28992
+ "format": "uri",
28993
+ "description": "Optional externally visible HTTPS redirect URI for a host-managed callback endpoint. When supplied, the runtime still owns discovery, PKCE, token exchange, persistence, and reconnect, but does not bind a loopback listener or terminate HTTPS. The URI must not contain query parameters or a fragment and must be registered for the selected CIMD, DCR, or static OAuth client."
28994
+ },
28299
28995
  "loginId": {
28300
28996
  "type": "string",
28301
28997
  "description": "Required for owned login. Consumes the exact prepareLogin handle once.\nSet forceReauth and display options during preparation, not consumption."
@@ -28309,7 +29005,7 @@
28309
29005
  "serverName"
28310
29006
  ],
28311
29007
  "additionalProperties": false,
28312
- "description": "Remote MCP server name and optional overrides controlling reauthentication, OAuth client display name, callback success-page copy, and static OAuth client selection.",
29008
+ "description": "Remote MCP server name and optional overrides controlling reauthentication, OAuth client display name, callback handling, and static OAuth client selection.",
28313
29009
  "title": "McpOauthLoginRequest",
28314
29010
  "stability": "experimental",
28315
29011
  "x-legacy-parameters": [
@@ -28337,7 +29033,11 @@
28337
29033
  "authorizationUrl": {
28338
29034
  "type": "string",
28339
29035
  "format": "uri",
28340
- "description": "URL the caller should open in a browser to complete OAuth. Omitted when cached tokens were still valid and no browser interaction was needed — the server is already reconnected in that case. When present, the runtime starts the callback listener before returning and continues the flow in the background; completion is signaled via session.mcp_server_status_changed."
29036
+ "description": "URL the caller should open in a browser to complete OAuth. Omitted when cached tokens were still valid and no browser interaction was needed — the server is already reconnected in that case. For the default loopback flow, the runtime starts its listener before returning. With redirectUri, the host receives the callback and completes it through session.mcp.oauth.complete. The runtime continues the flow in the background and signals completion via session.mcp_server_status_changed."
29037
+ },
29038
+ "authorizationId": {
29039
+ "type": "string",
29040
+ "description": "Opaque authorization identifier returned only for a host-managed redirect URI. The runtime also sends it as the OAuth state value, so the callback endpoint can read state and pass it with the full callback URL to session.mcp.oauth.complete."
28341
29041
  }
28342
29042
  },
28343
29043
  "additionalProperties": false,
@@ -29551,6 +30251,307 @@
29551
30251
  "description": "Side-effect-free preparation of one original bound remote MCP choice.",
29552
30252
  "title": "McpPrepareInstallRequest"
29553
30253
  },
30254
+ "McpPrompt": {
30255
+ "type": "object",
30256
+ "properties": {
30257
+ "name": {
30258
+ "type": "string",
30259
+ "description": "The programmatic name of the prompt"
30260
+ },
30261
+ "title": {
30262
+ "type": "string",
30263
+ "description": "Human-readable display title"
30264
+ },
30265
+ "description": {
30266
+ "type": "string",
30267
+ "description": "Description of what this prompt provides"
30268
+ },
30269
+ "arguments": {
30270
+ "type": "array",
30271
+ "items": {
30272
+ "$ref": "#/definitions/McpPromptArgument",
30273
+ "description": "An argument accepted by an MCP prompt."
30274
+ },
30275
+ "description": "Arguments accepted by the prompt"
30276
+ },
30277
+ "icons": {
30278
+ "type": "array",
30279
+ "items": {
30280
+ "$ref": "#/definitions/McpPromptIcon",
30281
+ "description": "An MCP prompt icon with standard size hints and preserved non-standard fields."
30282
+ },
30283
+ "description": "Icons associated with this prompt"
30284
+ },
30285
+ "_meta": {
30286
+ "type": "object",
30287
+ "additionalProperties": {
30288
+ "x-opaque-json": true
30289
+ },
30290
+ "description": "Prompt-level metadata"
30291
+ },
30292
+ "additionalProperties": {
30293
+ "type": "object",
30294
+ "additionalProperties": {
30295
+ "x-opaque-json": true
30296
+ },
30297
+ "description": "Server-provided non-standard descriptor fields"
30298
+ }
30299
+ },
30300
+ "required": [
30301
+ "name"
30302
+ ],
30303
+ "additionalProperties": false,
30304
+ "description": "An MCP prompt descriptor. Server-provided non-standard fields are exposed under `additionalProperties`.",
30305
+ "title": "McpPrompt"
30306
+ },
30307
+ "McpPromptArgument": {
30308
+ "type": "object",
30309
+ "properties": {
30310
+ "name": {
30311
+ "type": "string",
30312
+ "description": "Name of the argument"
30313
+ },
30314
+ "description": {
30315
+ "type": "string",
30316
+ "description": "Description of the argument"
30317
+ },
30318
+ "required": {
30319
+ "type": "boolean",
30320
+ "description": "Whether the argument is required; omission is distinct from false"
30321
+ },
30322
+ "_meta": {
30323
+ "type": "object",
30324
+ "additionalProperties": {
30325
+ "x-opaque-json": true
30326
+ },
30327
+ "description": "Argument-level metadata"
30328
+ },
30329
+ "additionalProperties": {
30330
+ "type": "object",
30331
+ "additionalProperties": {
30332
+ "x-opaque-json": true
30333
+ },
30334
+ "description": "Server-provided non-standard argument fields"
30335
+ }
30336
+ },
30337
+ "required": [
30338
+ "name"
30339
+ ],
30340
+ "additionalProperties": false,
30341
+ "description": "An argument accepted by an MCP prompt.",
30342
+ "title": "McpPromptArgument"
30343
+ },
30344
+ "McpPromptIcon": {
30345
+ "type": "object",
30346
+ "properties": {
30347
+ "src": {
30348
+ "type": "string",
30349
+ "description": "Icon URI"
30350
+ },
30351
+ "mimeType": {
30352
+ "type": "string",
30353
+ "description": "Icon MIME type, when known"
30354
+ },
30355
+ "sizes": {
30356
+ "type": "array",
30357
+ "items": {
30358
+ "type": "string"
30359
+ },
30360
+ "description": "Icon sizes, such as `48x48` or `any`"
30361
+ },
30362
+ "theme": {
30363
+ "type": "string",
30364
+ "description": "Theme hint for this icon"
30365
+ },
30366
+ "additionalProperties": {
30367
+ "type": "object",
30368
+ "additionalProperties": {
30369
+ "x-opaque-json": true
30370
+ },
30371
+ "description": "Server-provided non-standard icon fields"
30372
+ }
30373
+ },
30374
+ "required": [
30375
+ "src"
30376
+ ],
30377
+ "additionalProperties": false,
30378
+ "description": "An MCP prompt icon with standard size hints and preserved non-standard fields.",
30379
+ "title": "McpPromptIcon"
30380
+ },
30381
+ "McpPromptMessage": {
30382
+ "type": "object",
30383
+ "properties": {
30384
+ "role": {
30385
+ "$ref": "#/definitions/McpPromptRole",
30386
+ "description": "The role of the message sender"
30387
+ },
30388
+ "content": {
30389
+ "description": "The original MCP content block, including nested metadata and unfamiliar content types",
30390
+ "x-opaque-json": true
30391
+ },
30392
+ "_meta": {
30393
+ "type": "object",
30394
+ "additionalProperties": {
30395
+ "x-opaque-json": true
30396
+ },
30397
+ "description": "Message-level metadata"
30398
+ },
30399
+ "additionalProperties": {
30400
+ "type": "object",
30401
+ "additionalProperties": {
30402
+ "x-opaque-json": true
30403
+ },
30404
+ "description": "Server-provided non-standard message fields"
30405
+ }
30406
+ },
30407
+ "required": [
30408
+ "role",
30409
+ "content"
30410
+ ],
30411
+ "additionalProperties": false,
30412
+ "description": "An MCP prompt message with opaque JSON content preserved without flattening or content-type filtering.",
30413
+ "title": "McpPromptMessage"
30414
+ },
30415
+ "McpPromptRole": {
30416
+ "type": "string",
30417
+ "enum": [
30418
+ "user",
30419
+ "assistant"
30420
+ ],
30421
+ "description": "The sender role of an MCP prompt message.",
30422
+ "title": "McpPromptRole",
30423
+ "x-enumDescriptions": {
30424
+ "user": "A message from the user.",
30425
+ "assistant": "A message from the assistant."
30426
+ }
30427
+ },
30428
+ "McpPromptsGetRequest": {
30429
+ "type": "object",
30430
+ "properties": {
30431
+ "serverName": {
30432
+ "type": "string",
30433
+ "minLength": 1,
30434
+ "pattern": "^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$",
30435
+ "description": "Name of the MCP server hosting the prompt"
30436
+ },
30437
+ "promptName": {
30438
+ "type": "string",
30439
+ "minLength": 1,
30440
+ "description": "The programmatic name of the prompt"
30441
+ },
30442
+ "arguments": {
30443
+ "type": "object",
30444
+ "additionalProperties": {
30445
+ "type": "string"
30446
+ },
30447
+ "description": "String-valued arguments to pass to the prompt"
30448
+ }
30449
+ },
30450
+ "required": [
30451
+ "serverName",
30452
+ "promptName"
30453
+ ],
30454
+ "additionalProperties": false,
30455
+ "description": "MCP server, prompt name, and optional string-valued arguments.",
30456
+ "title": "McpPromptsGetRequest",
30457
+ "stability": "experimental"
30458
+ },
30459
+ "McpPromptsGetResult": {
30460
+ "type": "object",
30461
+ "properties": {
30462
+ "description": {
30463
+ "type": "string",
30464
+ "description": "Description of the prompt"
30465
+ },
30466
+ "messages": {
30467
+ "type": "array",
30468
+ "items": {
30469
+ "$ref": "#/definitions/McpPromptMessage",
30470
+ "description": "An MCP prompt message with opaque JSON content preserved without flattening or content-type filtering."
30471
+ },
30472
+ "description": "Ordered prompt messages"
30473
+ },
30474
+ "_meta": {
30475
+ "type": "object",
30476
+ "additionalProperties": {
30477
+ "x-opaque-json": true
30478
+ },
30479
+ "description": "MCP result metadata"
30480
+ },
30481
+ "additionalProperties": {
30482
+ "type": "object",
30483
+ "additionalProperties": {
30484
+ "x-opaque-json": true
30485
+ },
30486
+ "description": "Server-provided non-standard result fields"
30487
+ }
30488
+ },
30489
+ "required": [
30490
+ "messages"
30491
+ ],
30492
+ "additionalProperties": false,
30493
+ "description": "Prompt messages returned by the MCP server without sending them to the model.",
30494
+ "title": "McpPromptsGetResult"
30495
+ },
30496
+ "McpPromptsListRequest": {
30497
+ "type": "object",
30498
+ "properties": {
30499
+ "serverName": {
30500
+ "type": "string",
30501
+ "minLength": 1,
30502
+ "pattern": "^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$",
30503
+ "description": "Name of the MCP server whose prompts to enumerate"
30504
+ },
30505
+ "cursor": {
30506
+ "type": "string",
30507
+ "description": "Opaque MCP pagination cursor from a prior `nextCursor` value"
30508
+ }
30509
+ },
30510
+ "required": [
30511
+ "serverName"
30512
+ ],
30513
+ "additionalProperties": false,
30514
+ "description": "MCP server whose prompts to enumerate.",
30515
+ "title": "McpPromptsListRequest",
30516
+ "stability": "experimental"
30517
+ },
30518
+ "McpPromptsListResult": {
30519
+ "type": "object",
30520
+ "properties": {
30521
+ "prompts": {
30522
+ "type": "array",
30523
+ "items": {
30524
+ "$ref": "#/definitions/McpPrompt",
30525
+ "description": "An MCP prompt descriptor. Server-provided non-standard fields are exposed under `additionalProperties`."
30526
+ },
30527
+ "description": "Prompts advertised by the server"
30528
+ },
30529
+ "nextCursor": {
30530
+ "type": "string",
30531
+ "description": "Opaque cursor for the next page, if the server has more prompts"
30532
+ },
30533
+ "_meta": {
30534
+ "type": "object",
30535
+ "additionalProperties": {
30536
+ "x-opaque-json": true
30537
+ },
30538
+ "description": "MCP result metadata"
30539
+ },
30540
+ "additionalProperties": {
30541
+ "type": "object",
30542
+ "additionalProperties": {
30543
+ "x-opaque-json": true
30544
+ },
30545
+ "description": "Server-provided non-standard result fields"
30546
+ }
30547
+ },
30548
+ "required": [
30549
+ "prompts"
30550
+ ],
30551
+ "additionalProperties": false,
30552
+ "description": "One page of prompts advertised by the named MCP server.",
30553
+ "title": "McpPromptsListResult"
30554
+ },
29554
30555
  "McpRegisterExternalClientRequest": {
29555
30556
  "type": "object",
29556
30557
  "properties": {
@@ -39642,7 +40643,7 @@
39642
40643
  "properties": {
39643
40644
  "name": {
39644
40645
  "$ref": "#/definitions/SandboxHostCapabilityName",
39645
- "description": "The policy feature, as an extensible string: ignore names you do not recognize. Known values: `network` (sandboxed commands can reach the network; on Linux this needs the tooling for Bubblewrap's private network namespace, such as slirp4netns), `network_filtering` (host rules and the sandbox proxy; on Linux this needs the same tooling as `network`; on Windows it needs Process Security Environment 1.1 host-loopback support, and a policy that uses it must also set `network.allowLocalNetwork`), `denied_paths` (native enforcement of `filesystem.deniedPaths`), and `shell` (shell commands inside the sandbox; on Windows this needs Process Security Environment 1.1 filesystem enumeration support)."
40646
+ "description": "The policy feature, as an extensible string: ignore names you do not recognize. Known values: `network` (sandboxed commands can reach the network; on Linux this needs the tooling for Bubblewrap's private network namespace, such as slirp4netns), `network_filtering` (host rules and the sandbox proxy; on Linux this needs the same tooling as `network`; on Windows it needs Process Security Environment 1.1 host-loopback support, and a policy that uses it must also set `network.allowLocalNetwork`), `denied_paths` (native enforcement of `filesystem.deniedPaths`), `shell` (shell commands inside the sandbox), and `filesystem_enumeration` (enumerate-only filesystem grants; on Windows this needs Process Security Environment 1.1 filesystem enumeration support, and without it sandboxed PowerShell still runs but cannot resolve its current location; other platforms always report it)."
39646
40647
  },
39647
40648
  "supported": {
39648
40649
  "type": "boolean",
@@ -39658,7 +40659,7 @@
39658
40659
  "supported"
39659
40660
  ],
39660
40661
  "additionalProperties": false,
39661
- "description": "Whether this host can run one sandbox policy feature. A session whose effective policy uses an unsupported feature fails each sandboxed command with `reason`.",
40662
+ "description": "Whether this host can run one sandbox policy feature. A session whose effective policy uses an unsupported feature fails each sandboxed command with `reason`, except `filesystem_enumeration`, whose absence degrades sandboxed PowerShell instead of failing it.",
39662
40663
  "title": "SandboxHostCapability"
39663
40664
  },
39664
40665
  "SandboxHostCapabilityName": {
@@ -39666,7 +40667,7 @@
39666
40667
  "minLength": 1,
39667
40668
  "maxLength": 64,
39668
40669
  "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$",
39669
- "description": "Extensible identifier of a sandbox policy feature whose availability varies between hosts. A plain string, so an older client decodes a name added by a newer runtime; ignore names you do not recognize. Known values: `network` — sandboxed commands can reach the network (`network.allowOutbound`, on by default); on Linux this needs the tooling for Bubblewrap's private network namespace, such as slirp4netns. `network_filtering` — host rules and the sandbox proxy (`network.allowedHosts`, `network.blockedHosts`, `network.proxy`); on Linux this needs the same tooling as `network`; on Windows it needs a version with Process Security Environment 1.1 host-loopback support, and a policy that uses it must also set `network.allowLocalNetwork`, because Windows reaches the local proxy only together with private-network access. `denied_paths` — native enforcement of `filesystem.deniedPaths`; on Windows this needs a version whose sandbox contract reports denied-path support. `shell` — shell commands inside the sandbox: bash on macOS and Linux, PowerShell on Windows; on Windows this needs a version with Process Security Environment 1.1 filesystem enumeration support.",
40670
+ "description": "Extensible identifier of a sandbox policy feature whose availability varies between hosts. A plain string, so an older client decodes a name added by a newer runtime; ignore names you do not recognize. Known values: `network` — sandboxed commands can reach the network (`network.allowOutbound`, on by default); on Linux this needs the tooling for Bubblewrap's private network namespace, such as slirp4netns. `network_filtering` — host rules and the sandbox proxy (`network.allowedHosts`, `network.blockedHosts`, `network.proxy`); on Linux this needs the same tooling as `network`; on Windows it needs a version with Process Security Environment 1.1 host-loopback support, and a policy that uses it must also set `network.allowLocalNetwork`, because Windows reaches the local proxy only together with private-network access. `denied_paths` — native enforcement of `filesystem.deniedPaths`; on Windows this needs a version whose sandbox contract reports denied-path support. `shell` — shell commands inside the sandbox: bash on macOS and Linux, PowerShell on Windows. `filesystem_enumeration` — enumerate-only filesystem grants, which PowerShell's drive roots use on Windows; this needs a version with Process Security Environment 1.1 filesystem enumeration support. Without it, sandboxed PowerShell still runs, but `Get-Location` may report the drive root, `Set-Location` may fail, and relative paths may resolve against the drive root; the session also receives a `session.warning` with `warningType` `sandbox`. Other platforms always report it.",
39670
40671
  "title": "SandboxHostCapabilityName"
39671
40672
  },
39672
40673
  "SandboxHostSupport": {
@@ -39684,7 +40685,7 @@
39684
40685
  "type": "array",
39685
40686
  "items": {
39686
40687
  "$ref": "#/definitions/SandboxHostCapability",
39687
- "description": "Whether this host can run one sandbox policy feature. A session whose effective policy uses an unsupported feature fails each sandboxed command with `reason`."
40688
+ "description": "Whether this host can run one sandbox policy feature. A session whose effective policy uses an unsupported feature fails each sandboxed command with `reason`, except `filesystem_enumeration`, whose absence degrades sandboxed PowerShell instead of failing it."
39688
40689
  },
39689
40690
  "description": "Sandbox policy features whose availability varies between hosts that can run the backend. Empty when `supported` is false, because no feature can run without a backend. Later runtimes can add entries; ignore an entry whose `name` you do not recognize."
39690
40691
  }
@@ -45059,7 +46060,7 @@
45059
46060
  "command"
45060
46061
  ],
45061
46062
  "additionalProperties": false,
45062
- "description": "Shell command to run, with optional working directory and timeout in milliseconds.",
46063
+ "description": "Shell command to run, with optional working directory and timeout in milliseconds. Spawn failures return an RPC error.",
45063
46064
  "title": "ShellExecRequest",
45064
46065
  "stability": "experimental"
45065
46066
  },
@@ -45068,14 +46069,14 @@
45068
46069
  "properties": {
45069
46070
  "processId": {
45070
46071
  "type": "string",
45071
- "description": "Unique identifier for tracking streamed output"
46072
+ "description": "Identifier usable with shell.kill while the process is running"
45072
46073
  }
45073
46074
  },
45074
46075
  "required": [
45075
46076
  "processId"
45076
46077
  ],
45077
46078
  "additionalProperties": false,
45078
- "description": "Identifier of the spawned process, used to correlate streamed output and exit notifications.",
46079
+ "description": "Identifier of the spawned shell process, usable with shell.kill while the process is running.",
45079
46080
  "title": "ShellExecResult"
45080
46081
  },
45081
46082
  "ShellExecuteUserRequestedRequest": {