@github/copilot-sdk-win32-x64 1.0.17-preview.3 → 1.0.17-preview.5

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.
@@ -234,6 +234,70 @@
234
234
  "description": "Whether the host running this runtime can run the command sandbox. The runtime checks `supported` once per process. A capability answer can change while the process runs, for example after the user installs a missing package."
235
235
  },
236
236
  "stability": "experimental"
237
+ },
238
+ "proxyCa": {
239
+ "getStatus": {
240
+ "rpcMethod": "sandbox.proxyCa.getStatus",
241
+ "description": "Reports whether the persistent certificate authority of the sandbox credential proxy exists, whether OS trust includes it, and whether it must be rotated. Changes nothing.",
242
+ "params": {
243
+ "$ref": "#/definitions/SandboxProxyCaRequest",
244
+ "description": "Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings."
245
+ },
246
+ "result": {
247
+ "$ref": "#/definitions/SandboxProxyCaStatus",
248
+ "description": "Status of the persistent certificate authority of the sandbox credential proxy."
249
+ },
250
+ "stability": "experimental"
251
+ },
252
+ "create": {
253
+ "rpcMethod": "sandbox.proxyCa.create",
254
+ "description": "Creates the persistent certificate authority of the sandbox credential proxy if none is stored, without changing OS trust, and returns the path of its public certificate. Keeps an existing certificate authority, even one that must be rotated. Fails where OS trust is unsupported. Trust it with sandbox.proxyCa.trust: the CLI trusts only the hosts in the saved user settings, so it refuses a certificate authority that also covers hosts from sandboxConfig.",
255
+ "params": {
256
+ "$ref": "#/definitions/SandboxProxyCaRequest",
257
+ "description": "Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings."
258
+ },
259
+ "result": {
260
+ "$ref": "#/definitions/SandboxProxyCaCreateResult",
261
+ "description": "Result of creating the persistent certificate authority of the sandbox credential proxy."
262
+ },
263
+ "stability": "experimental"
264
+ },
265
+ "rotate": {
266
+ "rpcMethod": "sandbox.proxyCa.rotate",
267
+ "description": "Replaces the persistent certificate authority of the sandbox credential proxy with a new one for the current credential hosts. If OS trust included the old one, removes it and trusts the new one, which can show an OS authentication prompt. Running sandboxed tools keep the old certificate authority until they restart.",
268
+ "params": {
269
+ "$ref": "#/definitions/SandboxProxyCaRequest",
270
+ "description": "Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings."
271
+ },
272
+ "result": {
273
+ "$ref": "#/definitions/SandboxProxyCaStatus",
274
+ "description": "Status of the persistent certificate authority of the sandbox credential proxy."
275
+ },
276
+ "stability": "experimental"
277
+ },
278
+ "trust": {
279
+ "rpcMethod": "sandbox.proxyCa.trust",
280
+ "description": "Adds the persistent certificate authority of the sandbox credential proxy to OS trust, so sandboxed clients that read only OS trust accept the proxy. Call create first. Refuses a certificate authority that is not constrained to the current credential hosts. Can show an OS authentication prompt.",
281
+ "params": {
282
+ "$ref": "#/definitions/SandboxProxyCaRequest",
283
+ "description": "Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings."
284
+ },
285
+ "result": {
286
+ "$ref": "#/definitions/SandboxProxyCaStatus",
287
+ "description": "Status of the persistent certificate authority of the sandbox credential proxy."
288
+ },
289
+ "stability": "experimental"
290
+ },
291
+ "remove": {
292
+ "rpcMethod": "sandbox.proxyCa.remove",
293
+ "description": "Removes the persistent certificate authority of the sandbox credential proxy from OS trust. Keeps the stored certificate authority. Can show an OS authentication prompt. Sandboxed clients that read only OS trust then reject the proxy; clients that read the per-process certificate bundle continue to work.",
294
+ "params": null,
295
+ "result": {
296
+ "$ref": "#/definitions/SandboxProxyCaStatus",
297
+ "description": "Status of the persistent certificate authority of the sandbox credential proxy."
298
+ },
299
+ "stability": "experimental"
300
+ }
237
301
  }
238
302
  },
239
303
  "tools": {
@@ -1624,25 +1688,165 @@
1624
1688
  },
1625
1689
  "stability": "experimental"
1626
1690
  }
1627
- },
1628
- "accounts": {
1629
- "acquireEntraToken": {
1630
- "rpcMethod": "accounts.acquireEntraToken",
1631
- "description": "Acquire a Microsoft Entra access token through the runtime's OneAuth broker. Account-scoped because it uses the same native broker as the account stack: a trusted host application mints a scoped Entra token for its own use, most notably to authenticate to a remote MCP server whose authorization server is Entra ID (in place of the generic browser-OAuth flow).",
1691
+ }
1692
+ },
1693
+ "session": {
1694
+ "providers": {
1695
+ "getCatalog": {
1696
+ "rpcMethod": "session.providers.getCatalog",
1697
+ "description": "Returns adapter definitions and supported operations in this session's effective provider catalog, without running discovery. Does not list provider instances or select inference models.",
1632
1698
  "params": {
1633
- "$ref": "#/definitions/EntraTokenAcquireRequest",
1634
- "description": "OneAuth token request supplied by a trusted host application."
1699
+ "type": "object",
1700
+ "properties": {
1701
+ "sessionId": {
1702
+ "type": "string",
1703
+ "description": "Target session identifier"
1704
+ }
1705
+ },
1706
+ "required": [
1707
+ "sessionId"
1708
+ ],
1709
+ "additionalProperties": false,
1710
+ "description": "Identifies the target session."
1635
1711
  },
1636
1712
  "result": {
1637
- "$ref": "#/definitions/EntraTokenAcquireResult",
1638
- "description": "Result of a OneAuth token acquisition."
1713
+ "$ref": "#/definitions/ModelProviderAdapterCatalog",
1714
+ "description": "Normalized model-provider adapter definitions available to the session, not discovered instances."
1639
1715
  },
1640
- "stability": "experimental",
1641
- "visibility": "internal"
1716
+ "stability": "experimental"
1717
+ },
1718
+ "discover": {
1719
+ "rpcMethod": "session.providers.discover",
1720
+ "description": "Discovers reachable instances using an adapter from this session's effective provider catalog and provider-specific discovery input.",
1721
+ "params": {
1722
+ "type": "object",
1723
+ "properties": {
1724
+ "sessionId": {
1725
+ "type": "string",
1726
+ "description": "Target session identifier"
1727
+ },
1728
+ "adapterId": {
1729
+ "type": "string",
1730
+ "description": "Opaque adapter identity returned by `session.providers.getCatalog`."
1731
+ },
1732
+ "input": {
1733
+ "description": "Provider-specific JSON input. Omission or null selects adapter defaults unless requiresInput is true. Non-null input is validated against the advertised Draft 7 schema when present; otherwise validation belongs to the adapter.",
1734
+ "x-opaque-json": true
1735
+ }
1736
+ },
1737
+ "required": [
1738
+ "sessionId",
1739
+ "adapterId"
1740
+ ],
1741
+ "additionalProperties": false,
1742
+ "description": "Provider discovery parameters.",
1743
+ "title": "ModelProviderDiscoverRequest",
1744
+ "stability": "experimental"
1745
+ },
1746
+ "result": {
1747
+ "$ref": "#/definitions/ModelProviderDiscoverResult",
1748
+ "description": "Provider instances found by a discovery operation."
1749
+ },
1750
+ "stability": "experimental"
1751
+ },
1752
+ "getStatus": {
1753
+ "rpcMethod": "session.providers.getStatus",
1754
+ "description": "Gets current health and version information for a discovered model-provider instance.",
1755
+ "params": {
1756
+ "type": "object",
1757
+ "properties": {
1758
+ "sessionId": {
1759
+ "type": "string",
1760
+ "description": "Target session identifier"
1761
+ },
1762
+ "instance": {
1763
+ "$ref": "#/definitions/ModelProviderInstanceReference",
1764
+ "description": "Provider instance reference returned by discovery."
1765
+ }
1766
+ },
1767
+ "required": [
1768
+ "sessionId",
1769
+ "instance"
1770
+ ],
1771
+ "additionalProperties": false,
1772
+ "description": "Provider status request parameters.",
1773
+ "title": "ModelProviderGetStatusRequest",
1774
+ "stability": "experimental"
1775
+ },
1776
+ "result": {
1777
+ "$ref": "#/definitions/ModelProviderStatus",
1778
+ "description": "Current health information for a provider instance."
1779
+ },
1780
+ "stability": "experimental"
1781
+ },
1782
+ "models": {
1783
+ "list": {
1784
+ "rpcMethod": "session.providers.models.list",
1785
+ "description": "Lists models installed or otherwise available from a discovered model-provider instance.",
1786
+ "params": {
1787
+ "type": "object",
1788
+ "properties": {
1789
+ "sessionId": {
1790
+ "type": "string",
1791
+ "description": "Target session identifier"
1792
+ },
1793
+ "instance": {
1794
+ "$ref": "#/definitions/ModelProviderInstanceReference",
1795
+ "description": "Provider instance reference returned by discovery."
1796
+ }
1797
+ },
1798
+ "required": [
1799
+ "sessionId",
1800
+ "instance"
1801
+ ],
1802
+ "additionalProperties": false,
1803
+ "description": "Provider model inventory request parameters.",
1804
+ "title": "ModelProviderModelsListRequest",
1805
+ "stability": "experimental"
1806
+ },
1807
+ "result": {
1808
+ "$ref": "#/definitions/DiscoveredModelList",
1809
+ "description": "Models offered for agent conversations by one provider instance. Adapters exclude known-incompatible models, but retain candidates with unknown capabilities. Listing does not guarantee compatibility."
1810
+ },
1811
+ "stability": "experimental"
1812
+ },
1813
+ "prepareConfiguration": {
1814
+ "rpcMethod": "session.providers.models.prepareConfiguration",
1815
+ "description": "Translates a discovered model into the provider and model configuration needed to use it, and reports whether each is already registered in this session. Prepares only: it registers nothing, writes nothing, and performs no provider requests.",
1816
+ "params": {
1817
+ "type": "object",
1818
+ "properties": {
1819
+ "sessionId": {
1820
+ "type": "string",
1821
+ "description": "Target session identifier"
1822
+ },
1823
+ "instance": {
1824
+ "$ref": "#/definitions/ModelProviderInstance",
1825
+ "description": "The discovered instance that serves the model."
1826
+ },
1827
+ "model": {
1828
+ "$ref": "#/definitions/DiscoveredModel",
1829
+ "description": "The discovered model to configure."
1830
+ }
1831
+ },
1832
+ "required": [
1833
+ "sessionId",
1834
+ "instance",
1835
+ "model"
1836
+ ],
1837
+ "additionalProperties": false,
1838
+ "description": "A discovered instance and one of its models to translate into provider configuration. Pass back the instance and model as returned by `session.providers.discover` and `session.providers.models.list`.",
1839
+ "title": "ModelProviderPrepareConfigurationRequest",
1840
+ "stability": "experimental"
1841
+ },
1842
+ "result": {
1843
+ "$ref": "#/definitions/ModelProviderConfigurationPlan",
1844
+ "description": "Provider configuration prepared from a discovered model. Preparing a plan changes nothing: it neither registers the model with the session nor writes durable configuration. To apply it, pass `provider` and `model` to `session.provider.add`, omitting whichever the dispositions report as already configured."
1845
+ },
1846
+ "stability": "experimental"
1847
+ }
1642
1848
  }
1643
- }
1644
- },
1645
- "session": {
1849
+ },
1646
1850
  "suspend": {
1647
1851
  "rpcMethod": "session.suspend",
1648
1852
  "description": "Suspends the session while preserving persisted state for later resume.",
@@ -4777,7 +4981,7 @@
4777
4981
  },
4778
4982
  "reload": {
4779
4983
  "rpcMethod": "session.instructions.reload",
4780
- "description": "Invalidates cached custom-instruction discovery so subsequent turns and source reads observe instruction files currently on disk.",
4984
+ "description": "For local sessions, invalidates instruction discovery and the model-facing prompt, then returns freshly discovered sources. The updated prompt takes effect on the next turn. Remote sessions must reload on their agent host instead.",
4781
4985
  "params": {
4782
4986
  "type": "object",
4783
4987
  "properties": {
@@ -4793,7 +4997,8 @@
4793
4997
  "description": "Identifies the target session."
4794
4998
  },
4795
4999
  "result": {
4796
- "type": "null"
5000
+ "$ref": "#/definitions/InstructionsGetSourcesResult",
5001
+ "description": "Instruction sources loaded for the session, in merge order."
4797
5002
  },
4798
5003
  "stability": "experimental"
4799
5004
  }
@@ -4801,7 +5006,7 @@
4801
5006
  "customizations": {
4802
5007
  "reload": {
4803
5008
  "rpcMethod": "session.customizations.reload",
4804
- "description": "Reloads all repository and user customizations for the active session: instructions, plugins and their MCP servers and hooks, custom agents, extensions, and skills. Returns diagnostics from the final skill reload.",
5009
+ "description": "For local sessions, reconciles repository context and discovered instructions, plugins, skills, agents, hooks, MCP servers, and extensions after files appear or change under the working directory. Independent component failures are returned in outcomes and errors; a rejected call can have partially applied earlier steps. Remote sessions must reload on their agent host instead. The model-facing context is rebuilt on the next turn.",
4805
5010
  "params": {
4806
5011
  "type": "object",
4807
5012
  "properties": {
@@ -4817,8 +5022,8 @@
4817
5022
  "description": "Identifies the target session."
4818
5023
  },
4819
5024
  "result": {
4820
- "$ref": "#/definitions/SkillsLoadDiagnostics",
4821
- "description": "Diagnostics from reloading skill definitions, with warnings and errors as separate lists."
5025
+ "$ref": "#/definitions/CustomizationsReloadResult",
5026
+ "description": "Results of reloading discovered session customizations. Inspect outcomes for reloaded, skipped, or failed subsystems; a rejection may follow partial mutation. Changes to the model-facing prompt and tools apply on the next turn."
4822
5027
  },
4823
5028
  "stability": "experimental"
4824
5029
  }
@@ -5619,7 +5824,7 @@
5619
5824
  "mcp": {
5620
5825
  "list": {
5621
5826
  "rpcMethod": "session.mcp.list",
5622
- "description": "Lists MCP servers configured for the session, their connection status, and host-level state. The host-level state (disabled/filtered servers, failed/needs-auth/pending connections, mcp3p policy, full config) is empty/zero when no MCP host has been initialized for the session.",
5827
+ "description": "Lists materialized MCP servers and their connection status. Cache misses may start and wait for MCP servers.",
5623
5828
  "params": {
5624
5829
  "type": "object",
5625
5830
  "properties": {
@@ -5640,6 +5845,29 @@
5640
5845
  },
5641
5846
  "stability": "experimental"
5642
5847
  },
5848
+ "listConfigured": {
5849
+ "rpcMethod": "session.mcp.listConfigured",
5850
+ "description": "Lists effective MCP configuration without starting, restarting, authenticating, or waiting for servers. An optional live observation is from an already materialized matching server; this is not a readiness guarantee.",
5851
+ "params": {
5852
+ "type": "object",
5853
+ "properties": {
5854
+ "sessionId": {
5855
+ "type": "string",
5856
+ "description": "Target session identifier"
5857
+ }
5858
+ },
5859
+ "required": [
5860
+ "sessionId"
5861
+ ],
5862
+ "additionalProperties": false,
5863
+ "description": "Identifies the target session."
5864
+ },
5865
+ "result": {
5866
+ "$ref": "#/definitions/McpConfiguredServerList",
5867
+ "description": "Effective MCP configuration with optional live observations from matching already materialized servers."
5868
+ },
5869
+ "stability": "experimental"
5870
+ },
5643
5871
  "listTools": {
5644
5872
  "rpcMethod": "session.mcp.listTools",
5645
5873
  "description": "Lists the tools exposed by a connected MCP server on this session's host. This performs a live `tools/list` request. Tool UI metadata is returned independently of whether MCP Apps rendering is enabled for the session.",
@@ -9279,6 +9507,42 @@
9279
9507
  },
9280
9508
  "stability": "experimental"
9281
9509
  },
9510
+ "handleHumanAskUser": {
9511
+ "rpcMethod": "session.ui.handleHumanAskUser",
9512
+ "description": "Resolves a pending elicitation request after direct interaction in the trusted in-process client. Only an accepted response to the built-in ask_user tool can become trusted human evidence.",
9513
+ "params": {
9514
+ "type": "object",
9515
+ "properties": {
9516
+ "sessionId": {
9517
+ "type": "string",
9518
+ "description": "Target session identifier"
9519
+ },
9520
+ "requestId": {
9521
+ "type": "string",
9522
+ "description": "The unique request ID from the elicitation.requested event"
9523
+ },
9524
+ "result": {
9525
+ "$ref": "#/definitions/UIElicitationResponse",
9526
+ "description": "The elicitation response (accept with form values, decline, or cancel)"
9527
+ }
9528
+ },
9529
+ "required": [
9530
+ "sessionId",
9531
+ "requestId",
9532
+ "result"
9533
+ ],
9534
+ "additionalProperties": false,
9535
+ "description": "Pending elicitation request ID and the user's response (accept/decline/cancel + form values).",
9536
+ "title": "UIHandlePendingElicitationRequest",
9537
+ "stability": "experimental"
9538
+ },
9539
+ "result": {
9540
+ "$ref": "#/definitions/UIElicitationResult",
9541
+ "description": "Indicates whether the elicitation response was accepted; false if it was already resolved by another client."
9542
+ },
9543
+ "stability": "experimental",
9544
+ "visibility": "internal"
9545
+ },
9282
9546
  "handlePendingUserInput": {
9283
9547
  "rpcMethod": "session.ui.handlePendingUserInput",
9284
9548
  "description": "Resolves a pending `user_input.requested` event with the user's response.",
@@ -9314,6 +9578,42 @@
9314
9578
  },
9315
9579
  "stability": "experimental"
9316
9580
  },
9581
+ "handleHumanUserInput": {
9582
+ "rpcMethod": "session.ui.handleHumanUserInput",
9583
+ "description": "Resolves a pending `user_input.requested` event after direct interaction in the trusted in-process client.",
9584
+ "params": {
9585
+ "type": "object",
9586
+ "properties": {
9587
+ "sessionId": {
9588
+ "type": "string",
9589
+ "description": "Target session identifier"
9590
+ },
9591
+ "requestId": {
9592
+ "type": "string",
9593
+ "description": "The unique request ID from the user_input.requested event"
9594
+ },
9595
+ "response": {
9596
+ "$ref": "#/definitions/UIUserInputResponse",
9597
+ "description": "User response for a pending user-input request, with answer text and whether it was typed freeform."
9598
+ }
9599
+ },
9600
+ "required": [
9601
+ "sessionId",
9602
+ "requestId",
9603
+ "response"
9604
+ ],
9605
+ "additionalProperties": false,
9606
+ "description": "Request ID of a pending `user_input.requested` event and the user's response.",
9607
+ "title": "UIHandlePendingUserInputRequest",
9608
+ "stability": "experimental"
9609
+ },
9610
+ "result": {
9611
+ "$ref": "#/definitions/UIHandlePendingResult",
9612
+ "description": "Indicates whether the pending UI request was resolved by this call."
9613
+ },
9614
+ "stability": "experimental",
9615
+ "visibility": "internal"
9616
+ },
9317
9617
  "handlePendingSampling": {
9318
9618
  "rpcMethod": "session.ui.handlePendingSampling",
9319
9619
  "description": "Resolves a pending `sampling.requested` event with a sampling result, or rejects it.",
@@ -9453,6 +9753,42 @@
9453
9753
  },
9454
9754
  "stability": "experimental"
9455
9755
  },
9756
+ "handleHumanExitPlanMode": {
9757
+ "rpcMethod": "session.ui.handleHumanExitPlanMode",
9758
+ "description": "Resolves a pending `exit_plan_mode.requested` event after direct interaction in the trusted in-process client.",
9759
+ "params": {
9760
+ "type": "object",
9761
+ "properties": {
9762
+ "sessionId": {
9763
+ "type": "string",
9764
+ "description": "Target session identifier"
9765
+ },
9766
+ "requestId": {
9767
+ "type": "string",
9768
+ "description": "The unique request ID from the exit_plan_mode.requested event"
9769
+ },
9770
+ "response": {
9771
+ "$ref": "#/definitions/UIExitPlanModeResponse",
9772
+ "description": "User response for a pending exit-plan-mode request, with approval state, selected action, auto-approve flag, and feedback."
9773
+ }
9774
+ },
9775
+ "required": [
9776
+ "sessionId",
9777
+ "requestId",
9778
+ "response"
9779
+ ],
9780
+ "additionalProperties": false,
9781
+ "description": "Request ID of a pending `exit_plan_mode.requested` event and the user's response.",
9782
+ "title": "UIHandlePendingExitPlanModeRequest",
9783
+ "stability": "experimental"
9784
+ },
9785
+ "result": {
9786
+ "$ref": "#/definitions/UIHandlePendingResult",
9787
+ "description": "Indicates whether the pending UI request was resolved by this call."
9788
+ },
9789
+ "stability": "experimental",
9790
+ "visibility": "internal"
9791
+ },
9456
9792
  "registerDirectAutoModeSwitchHandler": {
9457
9793
  "rpcMethod": "session.ui.registerDirectAutoModeSwitchHandler",
9458
9794
  "description": "Registers an in-process handler for auto-mode-switch requests so the server bridge skips dispatch.",
@@ -12620,6 +12956,36 @@
12620
12956
  },
12621
12957
  "stability": "experimental"
12622
12958
  },
12959
+ "readFileBytes": {
12960
+ "rpcMethod": "sessionFs.readFileBytes",
12961
+ "description": "Reads binary file content from the client-provided session filesystem.",
12962
+ "params": {
12963
+ "type": "object",
12964
+ "properties": {
12965
+ "sessionId": {
12966
+ "type": "string",
12967
+ "description": "Target session identifier"
12968
+ },
12969
+ "path": {
12970
+ "type": "string",
12971
+ "description": "Path using SessionFs conventions"
12972
+ }
12973
+ },
12974
+ "required": [
12975
+ "sessionId",
12976
+ "path"
12977
+ ],
12978
+ "additionalProperties": false,
12979
+ "description": "Path of the binary file to read from the client-provided session filesystem.",
12980
+ "title": "SessionFsReadFileBytesRequest",
12981
+ "stability": "experimental"
12982
+ },
12983
+ "result": {
12984
+ "$ref": "#/definitions/SessionFsReadFileBytesResult",
12985
+ "description": "File bytes as standard base64, or a filesystem error if the read failed."
12986
+ },
12987
+ "stability": "experimental"
12988
+ },
12623
12989
  "writeFile": {
12624
12990
  "rpcMethod": "sessionFs.writeFile",
12625
12991
  "description": "Writes a file in the client-provided session filesystem.",
@@ -12668,6 +13034,54 @@
12668
13034
  },
12669
13035
  "stability": "experimental"
12670
13036
  },
13037
+ "writeFileBytes": {
13038
+ "rpcMethod": "sessionFs.writeFileBytes",
13039
+ "description": "Writes binary file content to the client-provided session filesystem.",
13040
+ "params": {
13041
+ "type": "object",
13042
+ "properties": {
13043
+ "sessionId": {
13044
+ "type": "string",
13045
+ "description": "Target session identifier"
13046
+ },
13047
+ "path": {
13048
+ "type": "string",
13049
+ "description": "Path using SessionFs conventions"
13050
+ },
13051
+ "content": {
13052
+ "type": "string",
13053
+ "description": "Exact file bytes encoded as standard base64"
13054
+ },
13055
+ "mode": {
13056
+ "type": "integer",
13057
+ "minimum": 0,
13058
+ "description": "Optional POSIX-style mode for newly created files"
13059
+ }
13060
+ },
13061
+ "required": [
13062
+ "sessionId",
13063
+ "path",
13064
+ "content"
13065
+ ],
13066
+ "additionalProperties": false,
13067
+ "description": "File path, standard-base64-encoded bytes to write, and optional mode for the client-provided session filesystem.",
13068
+ "title": "SessionFsWriteFileBytesRequest",
13069
+ "stability": "experimental"
13070
+ },
13071
+ "result": {
13072
+ "anyOf": [
13073
+ {
13074
+ "not": {}
13075
+ },
13076
+ {
13077
+ "$ref": "#/definitions/SessionFsError",
13078
+ "description": "Describes a filesystem error."
13079
+ }
13080
+ ],
13081
+ "description": "Describes a filesystem error."
13082
+ },
13083
+ "stability": "experimental"
13084
+ },
12671
13085
  "appendFile": {
12672
13086
  "rpcMethod": "sessionFs.appendFile",
12673
13087
  "description": "Appends content to a file in the client-provided session filesystem, creating parent directories as needed.",
@@ -13504,6 +13918,32 @@
13504
13918
  "description": "Authenticated account entry returned by `account.getAllUsers`.",
13505
13919
  "title": "AccountAllUsers"
13506
13920
  },
13921
+ "AccountAuthInfo": {
13922
+ "type": "object",
13923
+ "properties": {
13924
+ "type": {
13925
+ "type": "string",
13926
+ "const": "account",
13927
+ "description": "Provider-owned account authentication."
13928
+ },
13929
+ "host": {
13930
+ "type": "string",
13931
+ "description": "Host coordinate owned by the account's model provider."
13932
+ },
13933
+ "login": {
13934
+ "type": "string",
13935
+ "description": "Login identifying the provider-owned account."
13936
+ }
13937
+ },
13938
+ "required": [
13939
+ "type",
13940
+ "host",
13941
+ "login"
13942
+ ],
13943
+ "additionalProperties": false,
13944
+ "description": "An interactive account whose model provider owns its credentials. It carries no GitHub credential.",
13945
+ "title": "AccountAuthInfo"
13946
+ },
13507
13947
  "AccountGetCurrentAuthResult": {
13508
13948
  "type": "object",
13509
13949
  "properties": {
@@ -15576,6 +16016,10 @@
15576
16016
  "$ref": "#/definitions/UserAuthInfo",
15577
16017
  "description": "Authentication-info variant for OAuth user auth, with host and login; the token remains in the runtime secret store."
15578
16018
  },
16019
+ {
16020
+ "$ref": "#/definitions/AccountAuthInfo",
16021
+ "description": "An interactive account whose model provider owns its credentials. It carries no GitHub credential."
16022
+ },
15579
16023
  {
15580
16024
  "$ref": "#/definitions/GhCliAuthInfo",
15581
16025
  "description": "Authentication-info input variant for GitHub CLI credentials, carrying host, login, and the `gh auth token` value."
@@ -15594,6 +16038,7 @@
15594
16038
  "hmac",
15595
16039
  "env",
15596
16040
  "user",
16041
+ "account",
15597
16042
  "gh-cli",
15598
16043
  "api-key",
15599
16044
  "token",
@@ -15606,6 +16051,7 @@
15606
16051
  "hmac": "Authentication provided by a GitHub App HMAC credential.",
15607
16052
  "env": "Authentication resolved from environment-provided credentials.",
15608
16053
  "user": "Authentication from an interactive user sign-in.",
16054
+ "account": "Authentication from a selected provider-owned account, without a GitHub credential.",
15609
16055
  "gh-cli": "Authentication delegated to the GitHub CLI.",
15610
16056
  "api-key": "Authentication from an API key credential.",
15611
16057
  "token": "Authentication from a GitHub token.",
@@ -15613,6 +16059,37 @@
15613
16059
  "copilot-api-token": "Authentication from a Copilot API token."
15614
16060
  }
15615
16061
  },
16062
+ "AuthLoginAccount": {
16063
+ "type": "object",
16064
+ "properties": {
16065
+ "selectionId": {
16066
+ "type": "string",
16067
+ "description": "Opaque identifier supplied to the next login step to select this account."
16068
+ },
16069
+ "host": {
16070
+ "type": "string",
16071
+ "description": "Host coordinate owned by the selected account's provider."
16072
+ },
16073
+ "login": {
16074
+ "type": "string",
16075
+ "description": "Human-readable login for the account choice."
16076
+ },
16077
+ "kind": {
16078
+ "$ref": "#/definitions/AccountKind",
16079
+ "description": "Provider kind that owns this account choice."
16080
+ }
16081
+ },
16082
+ "required": [
16083
+ "selectionId",
16084
+ "host",
16085
+ "login",
16086
+ "kind"
16087
+ ],
16088
+ "additionalProperties": false,
16089
+ "description": "A credential-free account choice after sign-in.",
16090
+ "title": "AuthLoginAccount",
16091
+ "stability": "experimental"
16092
+ },
15616
16093
  "AuthLoginAdvanceRequest": {
15617
16094
  "type": "object",
15618
16095
  "properties": {
@@ -15691,7 +16168,7 @@
15691
16168
  "properties": {
15692
16169
  "status": {
15693
16170
  "$ref": "#/definitions/AuthLoginResultStatus",
15694
- "description": "Terminal disposition of the login."
16171
+ "description": "Current disposition of the login, including pending user decisions."
15695
16172
  },
15696
16173
  "host": {
15697
16174
  "type": "string",
@@ -15701,13 +16178,22 @@
15701
16178
  "login": {
15702
16179
  "type": "string",
15703
16180
  "description": "Login that was signed in, when completed."
16181
+ },
16182
+ "accounts": {
16183
+ "type": "array",
16184
+ "items": {
16185
+ "$ref": "#/definitions/AuthLoginAccount",
16186
+ "description": "A credential-free account choice after sign-in."
16187
+ },
16188
+ "description": "Available accounts when sign-in is awaiting account selection, ordered with Microsoft 365 first.",
16189
+ "x-copilot-sdk-append-last": true
15704
16190
  }
15705
16191
  },
15706
16192
  "required": [
15707
16193
  "status"
15708
16194
  ],
15709
16195
  "additionalProperties": false,
15710
- "description": "Terminal result of an interactive login flow.",
16196
+ "description": "Result of an interactive login flow. Pending consent or account selection is not terminal.",
15711
16197
  "title": "AuthLoginResultDto",
15712
16198
  "stability": "experimental"
15713
16199
  },
@@ -15716,13 +16202,15 @@
15716
16202
  "enum": [
15717
16203
  "completed",
15718
16204
  "needs-plaintext-consent",
16205
+ "needs-account-selection",
15719
16206
  "declined"
15720
16207
  ],
15721
- "description": "Terminal disposition of a login persistence attempt.",
16208
+ "description": "Disposition of a login attempt, including pending user decisions.",
15722
16209
  "title": "AuthLoginResultStatus",
15723
16210
  "x-enumDescriptions": {
15724
- "completed": "The credential was persisted and the account is signed in.",
16211
+ "completed": "The credential was persisted and the selected account is signed in.",
15725
16212
  "needs-plaintext-consent": "Persistence needs explicit consent to store the token in plaintext.",
16213
+ "needs-account-selection": "Credentials are saved; select an account using a returned selectionId as advance input to complete sign-in.",
15726
16214
  "declined": "The user declined plaintext persistence."
15727
16215
  },
15728
16216
  "stability": "experimental"
@@ -15800,7 +16288,7 @@
15800
16288
  "properties": {
15801
16289
  "result": {
15802
16290
  "$ref": "#/definitions/AuthLoginResultDto",
15803
- "description": "The terminal login result."
16291
+ "description": "Login result. When status is needs-plaintext-consent or needs-account-selection, advance with the user's decision to continue."
15804
16292
  },
15805
16293
  "kind": {
15806
16294
  "type": "string",
@@ -20974,6 +21462,10 @@
20974
21462
  "type": "string",
20975
21463
  "description": "Currently active model identifier"
20976
21464
  },
21465
+ "planBaseModelId": {
21466
+ "type": "string",
21467
+ "description": "Captured base model to restore when leaving plan mode. Omitted outside plan mode or when no plan override has captured a base model. Persistent agent model requirements apply to this model rather than the temporary plan model."
21468
+ },
20977
21469
  "reasoningEffort": {
20978
21470
  "type": "string",
20979
21471
  "description": "Reasoning effort level currently applied to the active model, when one is set. Reads `Session.getReasoningEffort()` synchronously after `getSelectedModel()` resolves so the two values are reported as a snapshot."
@@ -21058,6 +21550,108 @@
21058
21550
  "description": "Lightweight metadata for a currently initialized session tool",
21059
21551
  "title": "CurrentToolMetadata"
21060
21552
  },
21553
+ "CustomizationReloadOutcome": {
21554
+ "type": "object",
21555
+ "properties": {
21556
+ "subsystem": {
21557
+ "$ref": "#/definitions/CustomizationReloadSubsystem",
21558
+ "description": "Component whose reload was attempted or skipped"
21559
+ },
21560
+ "status": {
21561
+ "$ref": "#/definitions/CustomizationReloadStatus",
21562
+ "description": "Whether the component reloaded, was skipped, or failed"
21563
+ },
21564
+ "detail": {
21565
+ "type": [
21566
+ "string",
21567
+ "null"
21568
+ ],
21569
+ "description": "Reason for a skipped component or description of a failure, when available"
21570
+ }
21571
+ },
21572
+ "required": [
21573
+ "subsystem",
21574
+ "status"
21575
+ ],
21576
+ "additionalProperties": false,
21577
+ "description": "Result of one customization reload component.",
21578
+ "title": "CustomizationReloadOutcome"
21579
+ },
21580
+ "CustomizationReloadStatus": {
21581
+ "type": "string",
21582
+ "enum": [
21583
+ "reloaded",
21584
+ "skipped",
21585
+ "failed"
21586
+ ],
21587
+ "description": "Result of reloading a customization component.",
21588
+ "title": "CustomizationReloadStatus",
21589
+ "x-enumDescriptions": {
21590
+ "reloaded": "The component was refreshed successfully.",
21591
+ "skipped": "The component was not configured, loaded, or eligible for refresh.",
21592
+ "failed": "The component could not be refreshed; other components may still reload."
21593
+ }
21594
+ },
21595
+ "CustomizationReloadSubsystem": {
21596
+ "type": "string",
21597
+ "enum": [
21598
+ "repositoryContext",
21599
+ "instructions",
21600
+ "plugins",
21601
+ "hooks",
21602
+ "skills",
21603
+ "agents",
21604
+ "mcp",
21605
+ "extensions"
21606
+ ],
21607
+ "description": "Component of session customization discovery.",
21608
+ "title": "CustomizationReloadSubsystem",
21609
+ "x-enumDescriptions": {
21610
+ "repositoryContext": "Repository metadata and working-directory context.",
21611
+ "instructions": "Session instructions and their cached dynamic context.",
21612
+ "plugins": "Discovered plugin configuration.",
21613
+ "hooks": "Configured session and plugin hooks.",
21614
+ "skills": "Discovered skills.",
21615
+ "agents": "Discovered custom agents.",
21616
+ "mcp": "Loaded MCP server configuration.",
21617
+ "extensions": "Configured session extensions."
21618
+ }
21619
+ },
21620
+ "CustomizationsReloadResult": {
21621
+ "type": "object",
21622
+ "properties": {
21623
+ "warnings": {
21624
+ "type": "array",
21625
+ "items": {
21626
+ "type": "string"
21627
+ },
21628
+ "description": "Warnings from skill discovery"
21629
+ },
21630
+ "errors": {
21631
+ "type": "array",
21632
+ "items": {
21633
+ "type": "string"
21634
+ },
21635
+ "description": "Errors from any component that could not be refreshed"
21636
+ },
21637
+ "outcomes": {
21638
+ "type": "array",
21639
+ "items": {
21640
+ "$ref": "#/definitions/CustomizationReloadOutcome",
21641
+ "description": "Result of one customization reload component."
21642
+ },
21643
+ "description": "Outcome of each component in reload order; a skipped component was not configured or loaded"
21644
+ }
21645
+ },
21646
+ "required": [
21647
+ "warnings",
21648
+ "errors",
21649
+ "outcomes"
21650
+ ],
21651
+ "additionalProperties": false,
21652
+ "description": "Results of reloading discovered session customizations. Inspect outcomes for reloaded, skipped, or failed subsystems; a rejection may follow partial mutation. Changes to the model-facing prompt and tools apply on the next turn.",
21653
+ "title": "CustomizationsReloadResult"
21654
+ },
21061
21655
  "DebugCollectLogsCollectedEntry": {
21062
21656
  "type": "object",
21063
21657
  "properties": {
@@ -21880,6 +22474,89 @@
21880
22474
  "memory": "Server is backed by an in-memory runtime implementation."
21881
22475
  }
21882
22476
  },
22477
+ "DiscoveredModel": {
22478
+ "type": "object",
22479
+ "properties": {
22480
+ "id": {
22481
+ "type": "string",
22482
+ "description": "Provider-native model identifier."
22483
+ },
22484
+ "name": {
22485
+ "type": "string",
22486
+ "description": "Provider-reported display name."
22487
+ },
22488
+ "provenance": {
22489
+ "$ref": "#/definitions/ModelProviderProvenance",
22490
+ "description": "Attribution for the adapter that produced this model row."
22491
+ },
22492
+ "digest": {
22493
+ "type": "string",
22494
+ "description": "Provider-reported artifact digest."
22495
+ },
22496
+ "modifiedAt": {
22497
+ "type": "string",
22498
+ "format": "date-time",
22499
+ "description": "Provider-reported last-modified timestamp."
22500
+ },
22501
+ "sizeBytes": {
22502
+ "type": "integer",
22503
+ "minimum": 0,
22504
+ "description": "Provider-reported artifact size in bytes."
22505
+ },
22506
+ "details": {
22507
+ "$ref": "#/definitions/ModelArtifactDetails",
22508
+ "description": "Provider-reported model artifact details."
22509
+ },
22510
+ "capabilities": {
22511
+ "$ref": "#/definitions/ModelCapabilities",
22512
+ "description": "Provider-reported model capabilities. Omitted capability fields are unknown; explicit false values are preserved."
22513
+ },
22514
+ "warnings": {
22515
+ "type": "array",
22516
+ "items": {
22517
+ "$ref": "#/definitions/ModelProviderWarning",
22518
+ "description": "A non-fatal provider observation warning."
22519
+ },
22520
+ "description": "Non-fatal warnings encountered while enriching this model."
22521
+ }
22522
+ },
22523
+ "required": [
22524
+ "id",
22525
+ "provenance",
22526
+ "details",
22527
+ "capabilities",
22528
+ "warnings"
22529
+ ],
22530
+ "additionalProperties": false,
22531
+ "description": "A model offered for agent conversations. Missing capability metadata does not disqualify a candidate. Models known to be incompatible, such as embedding-only models, are excluded by the adapter.",
22532
+ "title": "DiscoveredModel",
22533
+ "stability": "experimental"
22534
+ },
22535
+ "DiscoveredModelList": {
22536
+ "type": "object",
22537
+ "properties": {
22538
+ "outcome": {
22539
+ "$ref": "#/definitions/ModelProviderOperationOutcome",
22540
+ "description": "Typed operation outcome."
22541
+ },
22542
+ "models": {
22543
+ "type": "array",
22544
+ "items": {
22545
+ "$ref": "#/definitions/DiscoveredModel",
22546
+ "description": "A model offered for agent conversations. Missing capability metadata does not disqualify a candidate. Models known to be incompatible, such as embedding-only models, are excluded by the adapter."
22547
+ },
22548
+ "description": "Provider-native models in provider order."
22549
+ }
22550
+ },
22551
+ "required": [
22552
+ "outcome",
22553
+ "models"
22554
+ ],
22555
+ "additionalProperties": false,
22556
+ "description": "Models offered for agent conversations by one provider instance. Adapters exclude known-incompatible models, but retain candidates with unknown capabilities. Listing does not guarantee compatibility.",
22557
+ "title": "DiscoveredModelList",
22558
+ "stability": "experimental"
22559
+ },
21883
22560
  "EmbeddedBlobResourceContents": {
21884
22561
  "type": "object",
21885
22562
  "properties": {
@@ -21964,112 +22641,6 @@
21964
22641
  "description": "Indicates whether the command was accepted into the local execution queue.",
21965
22642
  "title": "EnqueueCommandResult"
21966
22643
  },
21967
- "EntraTokenAcquireRequest": {
21968
- "type": "object",
21969
- "properties": {
21970
- "clientId": {
21971
- "type": "string",
21972
- "description": "Public client application id."
21973
- },
21974
- "tenantId": {
21975
- "type": "string",
21976
- "description": "Tenant id or tenant selector, such as common or organizations."
21977
- },
21978
- "redirectUri": {
21979
- "type": "string",
21980
- "description": "Broker redirect URI registered for the client. Required: the OneAuth broker validates a non-empty, registered redirect URI for the public client (MSAL broker registration), so this is not a browser-flow vestige and cannot be omitted."
21981
- },
21982
- "scopes": {
21983
- "type": "array",
21984
- "items": {
21985
- "type": "string"
21986
- },
21987
- "minItems": 1,
21988
- "description": "Exact delegated scopes to request."
21989
- },
21990
- "interaction": {
21991
- "$ref": "#/definitions/EntraTokenInteraction",
21992
- "description": "Whether the broker may show interaction."
21993
- },
21994
- "accessTokenToRenew": {
21995
- "type": "string",
21996
- "description": "Previously rejected token that OneAuth must bypass during renewal."
21997
- }
21998
- },
21999
- "required": [
22000
- "clientId",
22001
- "tenantId",
22002
- "redirectUri",
22003
- "scopes",
22004
- "interaction"
22005
- ],
22006
- "additionalProperties": false,
22007
- "description": "OneAuth token request supplied by a trusted host application.",
22008
- "title": "EntraTokenAcquireRequest",
22009
- "stability": "experimental"
22010
- },
22011
- "EntraTokenAcquireResult": {
22012
- "anyOf": [
22013
- {
22014
- "type": "object",
22015
- "properties": {
22016
- "accessToken": {
22017
- "type": "string",
22018
- "description": "Opaque access token."
22019
- },
22020
- "expiresOnTimestamp": {
22021
- "type": "number",
22022
- "description": "Expiry as milliseconds since Unix epoch, when supplied by OneAuth."
22023
- },
22024
- "accountId": {
22025
- "type": "string",
22026
- "description": "Opaque OneAuth account id, when supplied by the broker."
22027
- },
22028
- "status": {
22029
- "type": "string",
22030
- "const": "ok",
22031
- "description": "OneAuth token acquisition outcome discriminator."
22032
- }
22033
- },
22034
- "required": [
22035
- "status",
22036
- "accessToken"
22037
- ]
22038
- },
22039
- {
22040
- "type": "object",
22041
- "properties": {
22042
- "status": {
22043
- "type": "string",
22044
- "const": "interaction-required",
22045
- "description": "OneAuth token acquisition outcome discriminator."
22046
- }
22047
- },
22048
- "required": [
22049
- "status"
22050
- ]
22051
- }
22052
- ],
22053
- "description": "Result of a OneAuth token acquisition.",
22054
- "title": "EntraTokenAcquireResult",
22055
- "stability": "experimental"
22056
- },
22057
- "EntraTokenInteraction": {
22058
- "type": "string",
22059
- "enum": [
22060
- "silent",
22061
- "interactive",
22062
- "force-interactive"
22063
- ],
22064
- "description": "How far OneAuth may go to acquire the requested token.",
22065
- "title": "EntraTokenInteraction",
22066
- "x-enumDescriptions": {
22067
- "silent": "Acquire the token without any user interaction, failing if interaction would be required.",
22068
- "interactive": "Allow interactive acquisition, prompting the user only when a cached or silent token is unavailable.",
22069
- "force-interactive": "Always prompt interactively, bypassing any cached or silently-refreshable token."
22070
- },
22071
- "stability": "experimental"
22072
- },
22073
22644
  "EnvAuthInfo": {
22074
22645
  "type": "object",
22075
22646
  "properties": {
@@ -27277,6 +27848,89 @@
27277
27848
  "description": "MCP server name and replacement configuration to write to user configuration.",
27278
27849
  "title": "McpConfigUpdateRequest"
27279
27850
  },
27851
+ "McpConfiguredServer": {
27852
+ "type": "object",
27853
+ "properties": {
27854
+ "name": {
27855
+ "type": "string",
27856
+ "minLength": 1,
27857
+ "pattern": "^[^\\x00-\\x1f/\\x7f-\\x9f}]+(?:\\/[^\\x00-\\x1f/\\x7f-\\x9f}]+)*$",
27858
+ "description": "Server name (config key)"
27859
+ },
27860
+ "enabled": {
27861
+ "type": "boolean",
27862
+ "description": "Whether this configured server is enabled after session configuration and policy filtering."
27863
+ },
27864
+ "source": {
27865
+ "$ref": "#/definitions/McpServerSource",
27866
+ "description": "Configuration provenance: user, workspace, plugin, builtin, or managed."
27867
+ },
27868
+ "sourcePlugin": {
27869
+ "type": "string",
27870
+ "description": "Plugin name that provided this server, when source is plugin."
27871
+ },
27872
+ "sourcePluginVersion": {
27873
+ "type": "string",
27874
+ "description": "Plugin version that provided this server, when source is plugin."
27875
+ },
27876
+ "displayName": {
27877
+ "type": "string",
27878
+ "description": "Human-readable display name supplied by configuration."
27879
+ },
27880
+ "live": {
27881
+ "$ref": "#/definitions/McpConfiguredServerState",
27882
+ "description": "Observed state from an already materialized matching server. Omitted when no live graph has this configured server; it never determines configuration enablement."
27883
+ }
27884
+ },
27885
+ "required": [
27886
+ "name",
27887
+ "enabled"
27888
+ ],
27889
+ "additionalProperties": false,
27890
+ "description": "Effective MCP configuration entry. Configuration enablement is distinct from the optional live observation.",
27891
+ "title": "McpConfiguredServer",
27892
+ "stability": "experimental"
27893
+ },
27894
+ "McpConfiguredServerList": {
27895
+ "type": "object",
27896
+ "properties": {
27897
+ "servers": {
27898
+ "type": "array",
27899
+ "items": {
27900
+ "$ref": "#/definitions/McpConfiguredServer",
27901
+ "description": "Effective MCP configuration entry. Configuration enablement is distinct from the optional live observation."
27902
+ },
27903
+ "description": "Effective configured MCP servers."
27904
+ }
27905
+ },
27906
+ "required": [
27907
+ "servers"
27908
+ ],
27909
+ "additionalProperties": false,
27910
+ "description": "Effective MCP configuration with optional live observations from matching already materialized servers.",
27911
+ "title": "McpConfiguredServerList",
27912
+ "stability": "experimental"
27913
+ },
27914
+ "McpConfiguredServerState": {
27915
+ "type": "object",
27916
+ "properties": {
27917
+ "status": {
27918
+ "$ref": "#/definitions/McpServerStatus",
27919
+ "description": "Observed connection status. This is not a configuration or readiness guarantee."
27920
+ },
27921
+ "error": {
27922
+ "type": "string",
27923
+ "description": "Observed connection error, when the materialized server failed."
27924
+ }
27925
+ },
27926
+ "required": [
27927
+ "status"
27928
+ ],
27929
+ "additionalProperties": false,
27930
+ "description": "Observational state for a matching already materialized MCP server.",
27931
+ "title": "McpConfiguredServerState",
27932
+ "stability": "experimental"
27933
+ },
27280
27934
  "McpConfigureGitHubRequest": {
27281
27935
  "type": "object",
27282
27936
  "properties": {
@@ -32806,6 +33460,46 @@
32806
33460
  "title": "ModelApplyStartupOverlayRequest",
32807
33461
  "stability": "experimental"
32808
33462
  },
33463
+ "ModelArtifactDetails": {
33464
+ "type": "object",
33465
+ "properties": {
33466
+ "format": {
33467
+ "type": "string",
33468
+ "description": "Artifact format, such as `gguf`."
33469
+ },
33470
+ "family": {
33471
+ "type": "string",
33472
+ "description": "Primary model family."
33473
+ },
33474
+ "families": {
33475
+ "type": "array",
33476
+ "items": {
33477
+ "type": "string"
33478
+ },
33479
+ "description": "Provider-reported model families."
33480
+ },
33481
+ "parameterSize": {
33482
+ "type": "string",
33483
+ "description": "Provider-reported parameter count label."
33484
+ },
33485
+ "quantization": {
33486
+ "type": "string",
33487
+ "description": "Provider-reported quantization label."
33488
+ },
33489
+ "architecture": {
33490
+ "type": "string",
33491
+ "description": "Provider-reported model architecture."
33492
+ },
33493
+ "tokenizer": {
33494
+ "type": "string",
33495
+ "description": "Provider-reported tokenizer."
33496
+ }
33497
+ },
33498
+ "additionalProperties": false,
33499
+ "description": "Provider-reported model artifact metadata.",
33500
+ "title": "ModelArtifactDetails",
33501
+ "stability": "experimental"
33502
+ },
32809
33503
  "ModelBilling": {
32810
33504
  "type": "object",
32811
33505
  "properties": {
@@ -33135,6 +33829,10 @@
33135
33829
  "ModelCapabilitiesSupports": {
33136
33830
  "type": "object",
33137
33831
  "properties": {
33832
+ "thinking": {
33833
+ "type": "boolean",
33834
+ "description": "Whether the model supports provider-native thinking. Independent of configurable reasoning effort; omission means unknown."
33835
+ },
33138
33836
  "vision": {
33139
33837
  "type": "boolean",
33140
33838
  "description": "Whether this model supports vision/image input"
@@ -33362,6 +34060,219 @@
33362
34060
  "unconfigured": "No explicit policy is configured for the model."
33363
34061
  }
33364
34062
  },
34063
+ "ModelProviderAdapterCatalog": {
34064
+ "type": "object",
34065
+ "properties": {
34066
+ "providers": {
34067
+ "type": "array",
34068
+ "items": {
34069
+ "$ref": "#/definitions/ModelProviderAdapterDescriptor",
34070
+ "description": "A normalized model-provider adapter in the session's effective catalog."
34071
+ },
34072
+ "description": "Available provider adapters ordered by adapterId."
34073
+ }
34074
+ },
34075
+ "required": [
34076
+ "providers"
34077
+ ],
34078
+ "additionalProperties": false,
34079
+ "description": "Normalized model-provider adapter definitions available to the session, not discovered instances.",
34080
+ "title": "ModelProviderAdapterCatalog",
34081
+ "stability": "experimental"
34082
+ },
34083
+ "ModelProviderAdapterDescriptor": {
34084
+ "type": "object",
34085
+ "properties": {
34086
+ "adapterId": {
34087
+ "type": "string",
34088
+ "description": "Stable opaque identity for routing to this adapter. Unique in the effective catalog, independent of live registration generations."
34089
+ },
34090
+ "providerKind": {
34091
+ "type": "string",
34092
+ "description": "Descriptive provider family, such as `ollama`. Different adapters may have the same family; use adapterId for routing."
34093
+ },
34094
+ "displayName": {
34095
+ "type": "string",
34096
+ "description": "Human-readable provider name."
34097
+ },
34098
+ "provenance": {
34099
+ "$ref": "#/definitions/ModelProviderAttribution",
34100
+ "description": "Attribution for the adapter itself."
34101
+ },
34102
+ "automaticDiscovery": {
34103
+ "$ref": "#/definitions/ModelProviderAutomaticDiscoveryPolicy",
34104
+ "description": "Adapter-declared policy for passive and automatic discovery."
34105
+ },
34106
+ "operations": {
34107
+ "type": "array",
34108
+ "items": {
34109
+ "$ref": "#/definitions/ModelProviderAdapterOperationDescriptor",
34110
+ "description": "An operation supported by a model-provider adapter."
34111
+ },
34112
+ "description": "Operations supported by this provider adapter."
34113
+ }
34114
+ },
34115
+ "required": [
34116
+ "adapterId",
34117
+ "providerKind",
34118
+ "displayName",
34119
+ "provenance",
34120
+ "automaticDiscovery",
34121
+ "operations"
34122
+ ],
34123
+ "additionalProperties": false,
34124
+ "description": "A normalized model-provider adapter in the session's effective catalog.",
34125
+ "title": "ModelProviderAdapterDescriptor",
34126
+ "stability": "experimental"
34127
+ },
34128
+ "ModelProviderAdapterOperationDescriptor": {
34129
+ "type": "object",
34130
+ "properties": {
34131
+ "name": {
34132
+ "type": "string",
34133
+ "description": "Supported operation name: `discover`, `getStatus`, or `models.list`. Unknown names and duplicate declarations are rejected."
34134
+ },
34135
+ "inputSchema": {
34136
+ "description": "Optional self-contained JSON Schema Draft 7 for non-null discovery input. Only supported on discover. No external references are resolved. Omitted or null input selects defaults when requiresInput is false. Without a schema, the adapter validates supplied input.",
34137
+ "x-opaque-json": true
34138
+ }
34139
+ },
34140
+ "required": [
34141
+ "name"
34142
+ ],
34143
+ "additionalProperties": false,
34144
+ "description": "An operation supported by a model-provider adapter.",
34145
+ "title": "ModelProviderAdapterOperationDescriptor",
34146
+ "stability": "experimental"
34147
+ },
34148
+ "ModelProviderAttribution": {
34149
+ "type": "object",
34150
+ "properties": {
34151
+ "source": {
34152
+ "$ref": "#/definitions/ModelProviderProvenanceSource",
34153
+ "description": "Kind of component that supplied the adapter. Attribution does not confer authority."
34154
+ },
34155
+ "ownerId": {
34156
+ "type": "string",
34157
+ "description": "Stable contributor identifier. Required and nonblank for extension and custom sources; optional for built-in and configured sources. Does not grant authority."
34158
+ },
34159
+ "ownerDisplayName": {
34160
+ "type": "string",
34161
+ "description": "Human-readable contributor name, not the adapter display name."
34162
+ }
34163
+ },
34164
+ "required": [
34165
+ "source"
34166
+ ],
34167
+ "additionalProperties": false,
34168
+ "description": "Contributor attribution, independent of routing identity and authorization.",
34169
+ "title": "ModelProviderAttribution",
34170
+ "stability": "experimental"
34171
+ },
34172
+ "ModelProviderAutomaticDiscoveryMode": {
34173
+ "type": "string",
34174
+ "enum": [
34175
+ "automatic",
34176
+ "configuredOnly",
34177
+ "explicit"
34178
+ ],
34179
+ "description": "When the runtime may run an adapter without an explicit user action.",
34180
+ "title": "ModelProviderAutomaticDiscoveryMode",
34181
+ "x-enumDescriptions": {
34182
+ "automatic": "The adapter declares that automatic discovery is safe when the other policy fields are satisfied.",
34183
+ "configuredOnly": "The adapter may refresh instances the user already configured, but must not scan for new instances automatically.",
34184
+ "explicit": "The adapter must run only after an explicit user action."
34185
+ }
34186
+ },
34187
+ "ModelProviderAutomaticDiscoveryPolicy": {
34188
+ "type": "object",
34189
+ "properties": {
34190
+ "mode": {
34191
+ "$ref": "#/definitions/ModelProviderAutomaticDiscoveryMode",
34192
+ "description": "Whether automatic discovery is allowed, limited to configured providers, or explicit-only."
34193
+ },
34194
+ "networkScope": {
34195
+ "$ref": "#/definitions/ModelProviderDiscoveryNetworkScope",
34196
+ "description": "Maximum network scope used by this adapter during discovery."
34197
+ },
34198
+ "requiresInput": {
34199
+ "type": "boolean",
34200
+ "description": "True when discovery requires non-null caller input. Omission or null is rejected before adapter execution. When false, omitted or null input selects adapter defaults without schema validation."
34201
+ },
34202
+ "requiresTrust": {
34203
+ "type": "boolean",
34204
+ "description": "True when the adapter must be enabled by a trusted owner, such as a trusted extension, before automatic discovery may run."
34205
+ }
34206
+ },
34207
+ "required": [
34208
+ "mode",
34209
+ "networkScope",
34210
+ "requiresInput",
34211
+ "requiresTrust"
34212
+ ],
34213
+ "additionalProperties": false,
34214
+ "description": "Adapter-declared policy that tells clients whether discovery may run automatically.",
34215
+ "title": "ModelProviderAutomaticDiscoveryPolicy",
34216
+ "stability": "experimental"
34217
+ },
34218
+ "ModelProviderConfigurationDisposition": {
34219
+ "type": "string",
34220
+ "enum": [
34221
+ "create",
34222
+ "alreadyConfigured"
34223
+ ],
34224
+ "description": "Whether a planned configuration entry is new or already present in the session registry.",
34225
+ "title": "ModelProviderConfigurationDisposition",
34226
+ "x-enumDescriptions": {
34227
+ "create": "No matching entry is registered; the caller should add the entry.",
34228
+ "alreadyConfigured": "An equivalent entry is already registered; the caller should reuse it rather than adding a duplicate."
34229
+ }
34230
+ },
34231
+ "ModelProviderConfigurationPlan": {
34232
+ "type": "object",
34233
+ "properties": {
34234
+ "provider": {
34235
+ "$ref": "#/definitions/NamedProviderConfig",
34236
+ "description": "Provider connection prepared from the instance's inference metadata. Carries no credential; supply one if the endpoint requires it."
34237
+ },
34238
+ "model": {
34239
+ "$ref": "#/definitions/ProviderModelConfig",
34240
+ "description": "Model definition prepared from the discovered model. Capability fields the provider did not report stay omitted rather than being asserted false."
34241
+ },
34242
+ "selectionId": {
34243
+ "type": "string",
34244
+ "description": "Provider-qualified selection id (`provider/id`) to pass to `switchTo` once the plan is applied."
34245
+ },
34246
+ "providerDisposition": {
34247
+ "$ref": "#/definitions/ModelProviderConfigurationDisposition",
34248
+ "description": "Whether `provider` still needs to be registered. When `alreadyConfigured`, a provider with the same endpoint is already registered and `provider` restates it under its existing name; adding it again is rejected as a duplicate."
34249
+ },
34250
+ "modelDisposition": {
34251
+ "$ref": "#/definitions/ModelProviderConfigurationDisposition",
34252
+ "description": "Whether `model` still needs to be registered. When `alreadyConfigured`, `selectionId` is already registered and the caller can select it without adding anything."
34253
+ },
34254
+ "warnings": {
34255
+ "type": "array",
34256
+ "items": {
34257
+ "$ref": "#/definitions/ModelProviderWarning",
34258
+ "description": "A non-fatal provider observation warning."
34259
+ },
34260
+ "description": "Non-fatal warnings carried over from the discovered model, such as capabilities the provider did not report."
34261
+ }
34262
+ },
34263
+ "required": [
34264
+ "provider",
34265
+ "model",
34266
+ "selectionId",
34267
+ "providerDisposition",
34268
+ "modelDisposition",
34269
+ "warnings"
34270
+ ],
34271
+ "additionalProperties": false,
34272
+ "description": "Provider configuration prepared from a discovered model. Preparing a plan changes nothing: it neither registers the model with the session nor writes durable configuration. To apply it, pass `provider` and `model` to `session.provider.add`, omitting whichever the dispositions report as already configured.",
34273
+ "title": "ModelProviderConfigurationPlan",
34274
+ "stability": "experimental"
34275
+ },
33365
34276
  "ModelProviderDescriptor": {
33366
34277
  "type": "object",
33367
34278
  "properties": {
@@ -33394,6 +34305,161 @@
33394
34305
  "title": "ModelProviderDescriptor",
33395
34306
  "stability": "experimental"
33396
34307
  },
34308
+ "ModelProviderDiscoverRequest": {
34309
+ "type": "object",
34310
+ "properties": {
34311
+ "adapterId": {
34312
+ "type": "string",
34313
+ "description": "Opaque adapter identity returned by `session.providers.getCatalog`."
34314
+ },
34315
+ "input": {
34316
+ "description": "Provider-specific JSON input. Omission or null selects adapter defaults unless requiresInput is true. Non-null input is validated against the advertised Draft 7 schema when present; otherwise validation belongs to the adapter.",
34317
+ "x-opaque-json": true
34318
+ }
34319
+ },
34320
+ "required": [
34321
+ "adapterId"
34322
+ ],
34323
+ "additionalProperties": false,
34324
+ "description": "Provider discovery parameters.",
34325
+ "title": "ModelProviderDiscoverRequest",
34326
+ "stability": "experimental"
34327
+ },
34328
+ "ModelProviderDiscoverResult": {
34329
+ "type": "object",
34330
+ "properties": {
34331
+ "outcome": {
34332
+ "$ref": "#/definitions/ModelProviderOperationOutcome",
34333
+ "description": "Typed operation outcome. Passive discovery can return `absent` with an empty instance list."
34334
+ },
34335
+ "instances": {
34336
+ "type": "array",
34337
+ "items": {
34338
+ "$ref": "#/definitions/ModelProviderInstance",
34339
+ "description": "A normalized model-provider instance discovered by the runtime."
34340
+ },
34341
+ "description": "Discovered provider instances. Empty when passive default discovery finds no reachable provider."
34342
+ }
34343
+ },
34344
+ "required": [
34345
+ "outcome",
34346
+ "instances"
34347
+ ],
34348
+ "additionalProperties": false,
34349
+ "description": "Provider instances found by a discovery operation.",
34350
+ "title": "ModelProviderDiscoverResult",
34351
+ "stability": "experimental"
34352
+ },
34353
+ "ModelProviderDiscoveryNetworkScope": {
34354
+ "type": "string",
34355
+ "enum": [
34356
+ "none",
34357
+ "loopbackOnly",
34358
+ "configuredEndpointOnly",
34359
+ "localNetwork",
34360
+ "internet"
34361
+ ],
34362
+ "description": "Network reach an adapter may use during discovery.",
34363
+ "title": "ModelProviderDiscoveryNetworkScope",
34364
+ "x-enumDescriptions": {
34365
+ "none": "Discovery does not contact a network service.",
34366
+ "loopbackOnly": "Discovery is limited to loopback addresses on the local machine.",
34367
+ "configuredEndpointOnly": "Discovery contacts only endpoints the user already configured.",
34368
+ "localNetwork": "Discovery may scan or contact the local network.",
34369
+ "internet": "Discovery may contact remote internet services."
34370
+ }
34371
+ },
34372
+ "ModelProviderGetStatusRequest": {
34373
+ "type": "object",
34374
+ "properties": {
34375
+ "instance": {
34376
+ "$ref": "#/definitions/ModelProviderInstanceReference",
34377
+ "description": "Provider instance reference returned by discovery."
34378
+ }
34379
+ },
34380
+ "required": [
34381
+ "instance"
34382
+ ],
34383
+ "additionalProperties": false,
34384
+ "description": "Provider status request parameters.",
34385
+ "title": "ModelProviderGetStatusRequest",
34386
+ "stability": "experimental"
34387
+ },
34388
+ "ModelProviderInstance": {
34389
+ "type": "object",
34390
+ "properties": {
34391
+ "reference": {
34392
+ "$ref": "#/definitions/ModelProviderInstanceReference",
34393
+ "description": "Self-contained reference for subsequent provider operations."
34394
+ },
34395
+ "displayName": {
34396
+ "type": "string",
34397
+ "description": "Human-readable instance name."
34398
+ },
34399
+ "provenance": {
34400
+ "$ref": "#/definitions/ModelProviderProvenance",
34401
+ "description": "Attribution for the adapter that produced this instance."
34402
+ },
34403
+ "inferenceEndpoint": {
34404
+ "type": "string",
34405
+ "format": "uri",
34406
+ "description": "Inference API endpoint when the provider exposes one separately from its management endpoint."
34407
+ },
34408
+ "inferenceType": {
34409
+ "$ref": "#/definitions/ProviderEndpointType",
34410
+ "description": "Provider family to use for inference against this instance."
34411
+ },
34412
+ "inferenceWireApi": {
34413
+ "$ref": "#/definitions/ProviderEndpointWireApi",
34414
+ "description": "Wire API to use for inference against this instance, when required by the provider family."
34415
+ },
34416
+ "inferenceTransport": {
34417
+ "$ref": "#/definitions/ProviderEndpointTransport",
34418
+ "description": "Transport to use for inference against this instance."
34419
+ }
34420
+ },
34421
+ "required": [
34422
+ "reference",
34423
+ "displayName",
34424
+ "provenance"
34425
+ ],
34426
+ "additionalProperties": false,
34427
+ "description": "A normalized model-provider instance discovered by the runtime.",
34428
+ "title": "ModelProviderInstance",
34429
+ "stability": "experimental"
34430
+ },
34431
+ "ModelProviderInstanceReference": {
34432
+ "type": "object",
34433
+ "properties": {
34434
+ "adapterId": {
34435
+ "type": "string",
34436
+ "description": "Stable opaque identity of the adapter that owns this reference. Must be present in the target session's effective catalog."
34437
+ },
34438
+ "providerKind": {
34439
+ "type": "string",
34440
+ "description": "Descriptive provider family. Must match the selected adapter; not a routing key."
34441
+ },
34442
+ "id": {
34443
+ "type": "string",
34444
+ "description": "Stable instance identifier derived by the provider adapter, such as `ollama:{normalizedEndpoint}`."
34445
+ },
34446
+ "managementEndpoint": {
34447
+ "type": "string",
34448
+ "format": "uri",
34449
+ "description": "Absolute provider management URI. The adapter validates normalization, supported schemes, and permission to access it against its bound configuration; a reference does not grant authority."
34450
+ }
34451
+ },
34452
+ "required": [
34453
+ "adapterId",
34454
+ "providerKind",
34455
+ "id",
34456
+ "managementEndpoint"
34457
+ ],
34458
+ "additionalProperties": false,
34459
+ "description": "Serializable reference to a discovered provider instance.",
34460
+ "title": "ModelProviderInstanceReference",
34461
+ "stability": "experimental"
34462
+ },
33397
34463
  "ModelProviderKind": {
33398
34464
  "type": "string",
33399
34465
  "enum": [
@@ -33408,6 +34474,131 @@
33408
34474
  },
33409
34475
  "stability": "experimental"
33410
34476
  },
34477
+ "ModelProviderModelsListRequest": {
34478
+ "type": "object",
34479
+ "properties": {
34480
+ "instance": {
34481
+ "$ref": "#/definitions/ModelProviderInstanceReference",
34482
+ "description": "Provider instance reference returned by discovery."
34483
+ }
34484
+ },
34485
+ "required": [
34486
+ "instance"
34487
+ ],
34488
+ "additionalProperties": false,
34489
+ "description": "Provider model inventory request parameters.",
34490
+ "title": "ModelProviderModelsListRequest",
34491
+ "stability": "experimental"
34492
+ },
34493
+ "ModelProviderOperationOutcome": {
34494
+ "type": "object",
34495
+ "properties": {
34496
+ "code": {
34497
+ "$ref": "#/definitions/ModelProviderOperationOutcomeCode",
34498
+ "description": "Machine-readable operation outcome."
34499
+ },
34500
+ "message": {
34501
+ "type": "string",
34502
+ "description": "Human-readable detail for non-success outcomes."
34503
+ }
34504
+ },
34505
+ "required": [
34506
+ "code"
34507
+ ],
34508
+ "additionalProperties": false,
34509
+ "description": "Typed provider-operation outcome. Use the code for control flow and the optional message for display.",
34510
+ "title": "ModelProviderOperationOutcome",
34511
+ "stability": "experimental"
34512
+ },
34513
+ "ModelProviderOperationOutcomeCode": {
34514
+ "type": "string",
34515
+ "enum": [
34516
+ "success",
34517
+ "absent",
34518
+ "unreachable",
34519
+ "failed"
34520
+ ],
34521
+ "description": "Typed outcome for a provider operation.",
34522
+ "title": "ModelProviderOperationOutcomeCode",
34523
+ "x-enumDescriptions": {
34524
+ "success": "The operation completed successfully; an empty inventory is valid.",
34525
+ "absent": "The provider or instance is absent during discovery, status, or model listing. Distinct from a successful empty inventory.",
34526
+ "unreachable": "The provider is configured or expected but could not be reached.",
34527
+ "failed": "The operation failed for a reason other than absence or reachability."
34528
+ }
34529
+ },
34530
+ "ModelProviderPrepareConfigurationRequest": {
34531
+ "type": "object",
34532
+ "properties": {
34533
+ "instance": {
34534
+ "$ref": "#/definitions/ModelProviderInstance",
34535
+ "description": "The discovered instance that serves the model."
34536
+ },
34537
+ "model": {
34538
+ "$ref": "#/definitions/DiscoveredModel",
34539
+ "description": "The discovered model to configure."
34540
+ }
34541
+ },
34542
+ "required": [
34543
+ "instance",
34544
+ "model"
34545
+ ],
34546
+ "additionalProperties": false,
34547
+ "description": "A discovered instance and one of its models to translate into provider configuration. Pass back the instance and model as returned by `session.providers.discover` and `session.providers.models.list`.",
34548
+ "title": "ModelProviderPrepareConfigurationRequest",
34549
+ "stability": "experimental"
34550
+ },
34551
+ "ModelProviderProvenance": {
34552
+ "type": "object",
34553
+ "properties": {
34554
+ "adapterId": {
34555
+ "type": "string",
34556
+ "description": "Stable opaque adapter identity from the effective catalog. Treat this as a whole identifier, not a parseable owner or kind."
34557
+ },
34558
+ "providerKind": {
34559
+ "type": "string",
34560
+ "description": "Descriptive provider family that produced this row; not a routing key."
34561
+ },
34562
+ "source": {
34563
+ "$ref": "#/definitions/ModelProviderProvenanceSource",
34564
+ "description": "Kind of component that supplied the adapter."
34565
+ },
34566
+ "ownerId": {
34567
+ "type": "string",
34568
+ "description": "Stable contributor identifier when the adapter has an owner outside the runtime. Independent of the contribution mechanism and not a routing key."
34569
+ },
34570
+ "ownerDisplayName": {
34571
+ "type": "string",
34572
+ "description": "Human-readable contributor name, not the adapter display name."
34573
+ }
34574
+ },
34575
+ "required": [
34576
+ "adapterId",
34577
+ "providerKind",
34578
+ "source"
34579
+ ],
34580
+ "additionalProperties": false,
34581
+ "description": "Attribution for the adapter that produced a provider row.",
34582
+ "title": "ModelProviderProvenance",
34583
+ "stability": "experimental"
34584
+ },
34585
+ "ModelProviderProvenanceSource": {
34586
+ "type": "string",
34587
+ "enum": [
34588
+ "builtIn",
34589
+ "configured",
34590
+ "extension",
34591
+ "custom"
34592
+ ],
34593
+ "description": "Kind of component that supplied a provider adapter or row. Attribution does not confer authority.",
34594
+ "title": "ModelProviderProvenanceSource",
34595
+ "x-enumDescriptions": {
34596
+ "builtIn": "Built into the runtime.",
34597
+ "configured": "Derived from existing user configuration.",
34598
+ "extension": "Supplied by an extension.",
34599
+ "custom": "Supplied by another trusted contributor."
34600
+ }
34601
+ },
33411
34602
  "ModelProviderRef": {
33412
34603
  "type": "object",
33413
34604
  "properties": {
@@ -33434,6 +34625,57 @@
33434
34625
  "title": "ModelProviderRef",
33435
34626
  "stability": "experimental"
33436
34627
  },
34628
+ "ModelProviderStatus": {
34629
+ "type": "object",
34630
+ "properties": {
34631
+ "outcome": {
34632
+ "$ref": "#/definitions/ModelProviderOperationOutcome",
34633
+ "description": "Typed operation outcome."
34634
+ },
34635
+ "instance": {
34636
+ "$ref": "#/definitions/ModelProviderInstance",
34637
+ "description": "Normalized provider instance."
34638
+ },
34639
+ "status": {
34640
+ "type": "string",
34641
+ "description": "Open provider status value, such as `healthy`, `unreachable`, or `notInstalled`."
34642
+ },
34643
+ "version": {
34644
+ "type": "string",
34645
+ "description": "Provider-reported version."
34646
+ }
34647
+ },
34648
+ "required": [
34649
+ "outcome",
34650
+ "instance",
34651
+ "status"
34652
+ ],
34653
+ "additionalProperties": false,
34654
+ "description": "Current health information for a provider instance.",
34655
+ "title": "ModelProviderStatus",
34656
+ "stability": "experimental"
34657
+ },
34658
+ "ModelProviderWarning": {
34659
+ "type": "object",
34660
+ "properties": {
34661
+ "code": {
34662
+ "type": "string",
34663
+ "description": "Machine-readable warning code."
34664
+ },
34665
+ "message": {
34666
+ "type": "string",
34667
+ "description": "Human-readable warning message."
34668
+ }
34669
+ },
34670
+ "required": [
34671
+ "code",
34672
+ "message"
34673
+ ],
34674
+ "additionalProperties": false,
34675
+ "description": "A non-fatal provider observation warning.",
34676
+ "title": "ModelProviderWarning",
34677
+ "stability": "experimental"
34678
+ },
33437
34679
  "ModelSetAllowedModelsRequest": {
33438
34680
  "type": "object",
33439
34681
  "properties": {
@@ -40747,6 +41989,78 @@
40747
41989
  "description": "Destinations authorized to receive one masked environment credential.",
40748
41990
  "title": "SandboxMaskedEnvVar"
40749
41991
  },
41992
+ "SandboxProxyCaCreateResult": {
41993
+ "type": "object",
41994
+ "properties": {
41995
+ "certificatePath": {
41996
+ "type": "string",
41997
+ "description": "Absolute path of the public certificate of the certificate authority, in PEM format."
41998
+ }
41999
+ },
42000
+ "required": [
42001
+ "certificatePath"
42002
+ ],
42003
+ "additionalProperties": false,
42004
+ "description": "Result of creating the persistent certificate authority of the sandbox credential proxy.",
42005
+ "title": "SandboxProxyCaCreateResult",
42006
+ "stability": "experimental"
42007
+ },
42008
+ "SandboxProxyCaRequest": {
42009
+ "type": "object",
42010
+ "properties": {
42011
+ "sandboxConfig": {
42012
+ "$ref": "#/definitions/SandboxConfig",
42013
+ "description": "The sandbox configuration that the host gives its sessions. The runtime reads the credential hosts from `auth` and `credentials`; it ignores `enabled` and the other fields."
42014
+ }
42015
+ },
42016
+ "additionalProperties": false,
42017
+ "description": "Identifies the credential hosts that the persistent certificate authority of the sandbox credential proxy must cover. The runtime always adds the hosts from the saved user settings.",
42018
+ "title": "SandboxProxyCaRequest",
42019
+ "stability": "experimental"
42020
+ },
42021
+ "SandboxProxyCaState": {
42022
+ "type": "string",
42023
+ "enum": [
42024
+ "unsupported",
42025
+ "notInstalled",
42026
+ "installed",
42027
+ "error"
42028
+ ],
42029
+ "description": "State of the persistent certificate authority of the sandbox credential proxy.",
42030
+ "title": "SandboxProxyCaState",
42031
+ "x-enumDescriptions": {
42032
+ "unsupported": "This platform has no supported OS trust store. The proxy uses a per-process certificate bundle.",
42033
+ "notInstalled": "OS trust does not include the certificate authority, or none is stored.",
42034
+ "installed": "OS trust includes the stored certificate authority.",
42035
+ "error": "The runtime could not read the certificate authority or the OS trust store."
42036
+ },
42037
+ "stability": "experimental"
42038
+ },
42039
+ "SandboxProxyCaStatus": {
42040
+ "type": "object",
42041
+ "properties": {
42042
+ "state": {
42043
+ "$ref": "#/definitions/SandboxProxyCaState",
42044
+ "description": "The state of the certificate authority."
42045
+ },
42046
+ "detail": {
42047
+ "type": "string",
42048
+ "description": "Human-readable reason for the state. On `installed` or `notInstalled`, present only when the certificate authority must be rotated, and then says why."
42049
+ },
42050
+ "canInstall": {
42051
+ "type": "boolean",
42052
+ "description": "Whether this process can add the certificate authority to OS trust without credentials from a different user. False where OS trust is unsupported, and on Windows when the process cannot elevate itself to write the machine trust store. When false, do not offer to set up the certificate authority."
42053
+ }
42054
+ },
42055
+ "required": [
42056
+ "state",
42057
+ "canInstall"
42058
+ ],
42059
+ "additionalProperties": false,
42060
+ "description": "Status of the persistent certificate authority of the sandbox credential proxy.",
42061
+ "title": "SandboxProxyCaStatus",
42062
+ "stability": "experimental"
42063
+ },
40750
42064
  "SandboxSessionChange": {
40751
42065
  "type": "string",
40752
42066
  "enum": [
@@ -42030,6 +43344,10 @@
42030
43344
  "message": {
42031
43345
  "type": "string",
42032
43346
  "description": "Free-form detail about the error, for logging/diagnostics"
43347
+ },
43348
+ "writeChanged": {
43349
+ "type": "boolean",
43350
+ "description": "For failed writeFile requests only: true if the provider changed the target before failing. Omit when unknown or unchanged."
42033
43351
  }
42034
43352
  },
42035
43353
  "required": [
@@ -42218,6 +43536,41 @@
42218
43536
  "description": "Entries in the requested directory paired with file/directory type information, or a filesystem error if the read failed.",
42219
43537
  "title": "SessionFsReaddirWithTypesResult"
42220
43538
  },
43539
+ "SessionFsReadFileBytesRequest": {
43540
+ "type": "object",
43541
+ "properties": {
43542
+ "path": {
43543
+ "type": "string",
43544
+ "description": "Path using SessionFs conventions"
43545
+ }
43546
+ },
43547
+ "required": [
43548
+ "path"
43549
+ ],
43550
+ "additionalProperties": false,
43551
+ "description": "Path of the binary file to read from the client-provided session filesystem.",
43552
+ "title": "SessionFsReadFileBytesRequest",
43553
+ "stability": "experimental"
43554
+ },
43555
+ "SessionFsReadFileBytesResult": {
43556
+ "type": "object",
43557
+ "properties": {
43558
+ "content": {
43559
+ "type": "string",
43560
+ "description": "Exact file bytes encoded as standard base64"
43561
+ },
43562
+ "error": {
43563
+ "$ref": "#/definitions/SessionFsError",
43564
+ "description": "Describes a filesystem error."
43565
+ }
43566
+ },
43567
+ "required": [
43568
+ "content"
43569
+ ],
43570
+ "additionalProperties": false,
43571
+ "description": "File bytes as standard base64, or a filesystem error if the read failed.",
43572
+ "title": "SessionFsReadFileBytesResult"
43573
+ },
42221
43574
  "SessionFsReadFileRequest": {
42222
43575
  "type": "object",
42223
43576
  "properties": {
@@ -42304,6 +43657,10 @@
42304
43657
  "sqlite": {
42305
43658
  "type": "boolean",
42306
43659
  "description": "Whether the provider supports SQLite query/exists operations"
43660
+ },
43661
+ "binary": {
43662
+ "type": "boolean",
43663
+ "description": "Whether the provider supports binary reads and writes through sessionFs.readFileBytes and sessionFs.writeFileBytes"
42307
43664
  }
42308
43665
  },
42309
43666
  "additionalProperties": false,
@@ -42634,6 +43991,32 @@
42634
43991
  "description": "Filesystem metadata for the requested path, or a filesystem error if the stat failed.",
42635
43992
  "title": "SessionFsStatResult"
42636
43993
  },
43994
+ "SessionFsWriteFileBytesRequest": {
43995
+ "type": "object",
43996
+ "properties": {
43997
+ "path": {
43998
+ "type": "string",
43999
+ "description": "Path using SessionFs conventions"
44000
+ },
44001
+ "content": {
44002
+ "type": "string",
44003
+ "description": "Exact file bytes encoded as standard base64"
44004
+ },
44005
+ "mode": {
44006
+ "type": "integer",
44007
+ "minimum": 0,
44008
+ "description": "Optional POSIX-style mode for newly created files"
44009
+ }
44010
+ },
44011
+ "required": [
44012
+ "path",
44013
+ "content"
44014
+ ],
44015
+ "additionalProperties": false,
44016
+ "description": "File path, standard-base64-encoded bytes to write, and optional mode for the client-provided session filesystem.",
44017
+ "title": "SessionFsWriteFileBytesRequest",
44018
+ "stability": "experimental"
44019
+ },
42637
44020
  "SessionFsWriteFileRequest": {
42638
44021
  "type": "object",
42639
44022
  "properties": {
@@ -45994,6 +47377,10 @@
45994
47377
  "$ref": "#/definitions/UserAuthInfo",
45995
47378
  "description": "Authentication-info variant for OAuth user auth, with host and login; the token remains in the runtime secret store."
45996
47379
  },
47380
+ {
47381
+ "$ref": "#/definitions/AccountAuthInfo",
47382
+ "description": "An interactive account whose model provider owns its credentials. It carries no GitHub credential."
47383
+ },
45997
47384
  {
45998
47385
  "$ref": "#/definitions/GhCliAuthInfo",
45999
47386
  "description": "Authentication-info input variant for GitHub CLI credentials, carrying host, login, and the `gh auth token` value."