@github/copilot-sdk-win32-x64 1.0.17-preview.2 → 1.0.17-preview.4

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
  }
@@ -9279,6 +9484,42 @@
9279
9484
  },
9280
9485
  "stability": "experimental"
9281
9486
  },
9487
+ "handleHumanAskUser": {
9488
+ "rpcMethod": "session.ui.handleHumanAskUser",
9489
+ "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.",
9490
+ "params": {
9491
+ "type": "object",
9492
+ "properties": {
9493
+ "sessionId": {
9494
+ "type": "string",
9495
+ "description": "Target session identifier"
9496
+ },
9497
+ "requestId": {
9498
+ "type": "string",
9499
+ "description": "The unique request ID from the elicitation.requested event"
9500
+ },
9501
+ "result": {
9502
+ "$ref": "#/definitions/UIElicitationResponse",
9503
+ "description": "The elicitation response (accept with form values, decline, or cancel)"
9504
+ }
9505
+ },
9506
+ "required": [
9507
+ "sessionId",
9508
+ "requestId",
9509
+ "result"
9510
+ ],
9511
+ "additionalProperties": false,
9512
+ "description": "Pending elicitation request ID and the user's response (accept/decline/cancel + form values).",
9513
+ "title": "UIHandlePendingElicitationRequest",
9514
+ "stability": "experimental"
9515
+ },
9516
+ "result": {
9517
+ "$ref": "#/definitions/UIElicitationResult",
9518
+ "description": "Indicates whether the elicitation response was accepted; false if it was already resolved by another client."
9519
+ },
9520
+ "stability": "experimental",
9521
+ "visibility": "internal"
9522
+ },
9282
9523
  "handlePendingUserInput": {
9283
9524
  "rpcMethod": "session.ui.handlePendingUserInput",
9284
9525
  "description": "Resolves a pending `user_input.requested` event with the user's response.",
@@ -9314,6 +9555,42 @@
9314
9555
  },
9315
9556
  "stability": "experimental"
9316
9557
  },
9558
+ "handleHumanUserInput": {
9559
+ "rpcMethod": "session.ui.handleHumanUserInput",
9560
+ "description": "Resolves a pending `user_input.requested` event after direct interaction in the trusted in-process client.",
9561
+ "params": {
9562
+ "type": "object",
9563
+ "properties": {
9564
+ "sessionId": {
9565
+ "type": "string",
9566
+ "description": "Target session identifier"
9567
+ },
9568
+ "requestId": {
9569
+ "type": "string",
9570
+ "description": "The unique request ID from the user_input.requested event"
9571
+ },
9572
+ "response": {
9573
+ "$ref": "#/definitions/UIUserInputResponse",
9574
+ "description": "User response for a pending user-input request, with answer text and whether it was typed freeform."
9575
+ }
9576
+ },
9577
+ "required": [
9578
+ "sessionId",
9579
+ "requestId",
9580
+ "response"
9581
+ ],
9582
+ "additionalProperties": false,
9583
+ "description": "Request ID of a pending `user_input.requested` event and the user's response.",
9584
+ "title": "UIHandlePendingUserInputRequest",
9585
+ "stability": "experimental"
9586
+ },
9587
+ "result": {
9588
+ "$ref": "#/definitions/UIHandlePendingResult",
9589
+ "description": "Indicates whether the pending UI request was resolved by this call."
9590
+ },
9591
+ "stability": "experimental",
9592
+ "visibility": "internal"
9593
+ },
9317
9594
  "handlePendingSampling": {
9318
9595
  "rpcMethod": "session.ui.handlePendingSampling",
9319
9596
  "description": "Resolves a pending `sampling.requested` event with a sampling result, or rejects it.",
@@ -9453,6 +9730,42 @@
9453
9730
  },
9454
9731
  "stability": "experimental"
9455
9732
  },
9733
+ "handleHumanExitPlanMode": {
9734
+ "rpcMethod": "session.ui.handleHumanExitPlanMode",
9735
+ "description": "Resolves a pending `exit_plan_mode.requested` event after direct interaction in the trusted in-process client.",
9736
+ "params": {
9737
+ "type": "object",
9738
+ "properties": {
9739
+ "sessionId": {
9740
+ "type": "string",
9741
+ "description": "Target session identifier"
9742
+ },
9743
+ "requestId": {
9744
+ "type": "string",
9745
+ "description": "The unique request ID from the exit_plan_mode.requested event"
9746
+ },
9747
+ "response": {
9748
+ "$ref": "#/definitions/UIExitPlanModeResponse",
9749
+ "description": "User response for a pending exit-plan-mode request, with approval state, selected action, auto-approve flag, and feedback."
9750
+ }
9751
+ },
9752
+ "required": [
9753
+ "sessionId",
9754
+ "requestId",
9755
+ "response"
9756
+ ],
9757
+ "additionalProperties": false,
9758
+ "description": "Request ID of a pending `exit_plan_mode.requested` event and the user's response.",
9759
+ "title": "UIHandlePendingExitPlanModeRequest",
9760
+ "stability": "experimental"
9761
+ },
9762
+ "result": {
9763
+ "$ref": "#/definitions/UIHandlePendingResult",
9764
+ "description": "Indicates whether the pending UI request was resolved by this call."
9765
+ },
9766
+ "stability": "experimental",
9767
+ "visibility": "internal"
9768
+ },
9456
9769
  "registerDirectAutoModeSwitchHandler": {
9457
9770
  "rpcMethod": "session.ui.registerDirectAutoModeSwitchHandler",
9458
9771
  "description": "Registers an in-process handler for auto-mode-switch requests so the server bridge skips dispatch.",
@@ -12620,6 +12933,36 @@
12620
12933
  },
12621
12934
  "stability": "experimental"
12622
12935
  },
12936
+ "readFileBytes": {
12937
+ "rpcMethod": "sessionFs.readFileBytes",
12938
+ "description": "Reads binary file content from the client-provided session filesystem.",
12939
+ "params": {
12940
+ "type": "object",
12941
+ "properties": {
12942
+ "sessionId": {
12943
+ "type": "string",
12944
+ "description": "Target session identifier"
12945
+ },
12946
+ "path": {
12947
+ "type": "string",
12948
+ "description": "Path using SessionFs conventions"
12949
+ }
12950
+ },
12951
+ "required": [
12952
+ "sessionId",
12953
+ "path"
12954
+ ],
12955
+ "additionalProperties": false,
12956
+ "description": "Path of the binary file to read from the client-provided session filesystem.",
12957
+ "title": "SessionFsReadFileBytesRequest",
12958
+ "stability": "experimental"
12959
+ },
12960
+ "result": {
12961
+ "$ref": "#/definitions/SessionFsReadFileBytesResult",
12962
+ "description": "File bytes as standard base64, or a filesystem error if the read failed."
12963
+ },
12964
+ "stability": "experimental"
12965
+ },
12623
12966
  "writeFile": {
12624
12967
  "rpcMethod": "sessionFs.writeFile",
12625
12968
  "description": "Writes a file in the client-provided session filesystem.",
@@ -12668,6 +13011,54 @@
12668
13011
  },
12669
13012
  "stability": "experimental"
12670
13013
  },
13014
+ "writeFileBytes": {
13015
+ "rpcMethod": "sessionFs.writeFileBytes",
13016
+ "description": "Writes binary file content to the client-provided session filesystem.",
13017
+ "params": {
13018
+ "type": "object",
13019
+ "properties": {
13020
+ "sessionId": {
13021
+ "type": "string",
13022
+ "description": "Target session identifier"
13023
+ },
13024
+ "path": {
13025
+ "type": "string",
13026
+ "description": "Path using SessionFs conventions"
13027
+ },
13028
+ "content": {
13029
+ "type": "string",
13030
+ "description": "Exact file bytes encoded as standard base64"
13031
+ },
13032
+ "mode": {
13033
+ "type": "integer",
13034
+ "minimum": 0,
13035
+ "description": "Optional POSIX-style mode for newly created files"
13036
+ }
13037
+ },
13038
+ "required": [
13039
+ "sessionId",
13040
+ "path",
13041
+ "content"
13042
+ ],
13043
+ "additionalProperties": false,
13044
+ "description": "File path, standard-base64-encoded bytes to write, and optional mode for the client-provided session filesystem.",
13045
+ "title": "SessionFsWriteFileBytesRequest",
13046
+ "stability": "experimental"
13047
+ },
13048
+ "result": {
13049
+ "anyOf": [
13050
+ {
13051
+ "not": {}
13052
+ },
13053
+ {
13054
+ "$ref": "#/definitions/SessionFsError",
13055
+ "description": "Describes a filesystem error."
13056
+ }
13057
+ ],
13058
+ "description": "Describes a filesystem error."
13059
+ },
13060
+ "stability": "experimental"
13061
+ },
12671
13062
  "appendFile": {
12672
13063
  "rpcMethod": "sessionFs.appendFile",
12673
13064
  "description": "Appends content to a file in the client-provided session filesystem, creating parent directories as needed.",
@@ -20974,6 +21365,10 @@
20974
21365
  "type": "string",
20975
21366
  "description": "Currently active model identifier"
20976
21367
  },
21368
+ "planBaseModelId": {
21369
+ "type": "string",
21370
+ "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."
21371
+ },
20977
21372
  "reasoningEffort": {
20978
21373
  "type": "string",
20979
21374
  "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 +21453,108 @@
21058
21453
  "description": "Lightweight metadata for a currently initialized session tool",
21059
21454
  "title": "CurrentToolMetadata"
21060
21455
  },
21456
+ "CustomizationReloadOutcome": {
21457
+ "type": "object",
21458
+ "properties": {
21459
+ "subsystem": {
21460
+ "$ref": "#/definitions/CustomizationReloadSubsystem",
21461
+ "description": "Component whose reload was attempted or skipped"
21462
+ },
21463
+ "status": {
21464
+ "$ref": "#/definitions/CustomizationReloadStatus",
21465
+ "description": "Whether the component reloaded, was skipped, or failed"
21466
+ },
21467
+ "detail": {
21468
+ "type": [
21469
+ "string",
21470
+ "null"
21471
+ ],
21472
+ "description": "Reason for a skipped component or description of a failure, when available"
21473
+ }
21474
+ },
21475
+ "required": [
21476
+ "subsystem",
21477
+ "status"
21478
+ ],
21479
+ "additionalProperties": false,
21480
+ "description": "Result of one customization reload component.",
21481
+ "title": "CustomizationReloadOutcome"
21482
+ },
21483
+ "CustomizationReloadStatus": {
21484
+ "type": "string",
21485
+ "enum": [
21486
+ "reloaded",
21487
+ "skipped",
21488
+ "failed"
21489
+ ],
21490
+ "description": "Result of reloading a customization component.",
21491
+ "title": "CustomizationReloadStatus",
21492
+ "x-enumDescriptions": {
21493
+ "reloaded": "The component was refreshed successfully.",
21494
+ "skipped": "The component was not configured, loaded, or eligible for refresh.",
21495
+ "failed": "The component could not be refreshed; other components may still reload."
21496
+ }
21497
+ },
21498
+ "CustomizationReloadSubsystem": {
21499
+ "type": "string",
21500
+ "enum": [
21501
+ "repositoryContext",
21502
+ "instructions",
21503
+ "plugins",
21504
+ "hooks",
21505
+ "skills",
21506
+ "agents",
21507
+ "mcp",
21508
+ "extensions"
21509
+ ],
21510
+ "description": "Component of session customization discovery.",
21511
+ "title": "CustomizationReloadSubsystem",
21512
+ "x-enumDescriptions": {
21513
+ "repositoryContext": "Repository metadata and working-directory context.",
21514
+ "instructions": "Session instructions and their cached dynamic context.",
21515
+ "plugins": "Discovered plugin configuration.",
21516
+ "hooks": "Configured session and plugin hooks.",
21517
+ "skills": "Discovered skills.",
21518
+ "agents": "Discovered custom agents.",
21519
+ "mcp": "Loaded MCP server configuration.",
21520
+ "extensions": "Configured session extensions."
21521
+ }
21522
+ },
21523
+ "CustomizationsReloadResult": {
21524
+ "type": "object",
21525
+ "properties": {
21526
+ "warnings": {
21527
+ "type": "array",
21528
+ "items": {
21529
+ "type": "string"
21530
+ },
21531
+ "description": "Warnings from skill discovery"
21532
+ },
21533
+ "errors": {
21534
+ "type": "array",
21535
+ "items": {
21536
+ "type": "string"
21537
+ },
21538
+ "description": "Errors from any component that could not be refreshed"
21539
+ },
21540
+ "outcomes": {
21541
+ "type": "array",
21542
+ "items": {
21543
+ "$ref": "#/definitions/CustomizationReloadOutcome",
21544
+ "description": "Result of one customization reload component."
21545
+ },
21546
+ "description": "Outcome of each component in reload order; a skipped component was not configured or loaded"
21547
+ }
21548
+ },
21549
+ "required": [
21550
+ "warnings",
21551
+ "errors",
21552
+ "outcomes"
21553
+ ],
21554
+ "additionalProperties": false,
21555
+ "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.",
21556
+ "title": "CustomizationsReloadResult"
21557
+ },
21061
21558
  "DebugCollectLogsCollectedEntry": {
21062
21559
  "type": "object",
21063
21560
  "properties": {
@@ -21880,6 +22377,89 @@
21880
22377
  "memory": "Server is backed by an in-memory runtime implementation."
21881
22378
  }
21882
22379
  },
22380
+ "DiscoveredModel": {
22381
+ "type": "object",
22382
+ "properties": {
22383
+ "id": {
22384
+ "type": "string",
22385
+ "description": "Provider-native model identifier."
22386
+ },
22387
+ "name": {
22388
+ "type": "string",
22389
+ "description": "Provider-reported display name."
22390
+ },
22391
+ "provenance": {
22392
+ "$ref": "#/definitions/ModelProviderProvenance",
22393
+ "description": "Attribution for the adapter that produced this model row."
22394
+ },
22395
+ "digest": {
22396
+ "type": "string",
22397
+ "description": "Provider-reported artifact digest."
22398
+ },
22399
+ "modifiedAt": {
22400
+ "type": "string",
22401
+ "format": "date-time",
22402
+ "description": "Provider-reported last-modified timestamp."
22403
+ },
22404
+ "sizeBytes": {
22405
+ "type": "integer",
22406
+ "minimum": 0,
22407
+ "description": "Provider-reported artifact size in bytes."
22408
+ },
22409
+ "details": {
22410
+ "$ref": "#/definitions/ModelArtifactDetails",
22411
+ "description": "Provider-reported model artifact details."
22412
+ },
22413
+ "capabilities": {
22414
+ "$ref": "#/definitions/ModelCapabilities",
22415
+ "description": "Provider-reported model capabilities. Omitted capability fields are unknown; explicit false values are preserved."
22416
+ },
22417
+ "warnings": {
22418
+ "type": "array",
22419
+ "items": {
22420
+ "$ref": "#/definitions/ModelProviderWarning",
22421
+ "description": "A non-fatal provider observation warning."
22422
+ },
22423
+ "description": "Non-fatal warnings encountered while enriching this model."
22424
+ }
22425
+ },
22426
+ "required": [
22427
+ "id",
22428
+ "provenance",
22429
+ "details",
22430
+ "capabilities",
22431
+ "warnings"
22432
+ ],
22433
+ "additionalProperties": false,
22434
+ "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.",
22435
+ "title": "DiscoveredModel",
22436
+ "stability": "experimental"
22437
+ },
22438
+ "DiscoveredModelList": {
22439
+ "type": "object",
22440
+ "properties": {
22441
+ "outcome": {
22442
+ "$ref": "#/definitions/ModelProviderOperationOutcome",
22443
+ "description": "Typed operation outcome."
22444
+ },
22445
+ "models": {
22446
+ "type": "array",
22447
+ "items": {
22448
+ "$ref": "#/definitions/DiscoveredModel",
22449
+ "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."
22450
+ },
22451
+ "description": "Provider-native models in provider order."
22452
+ }
22453
+ },
22454
+ "required": [
22455
+ "outcome",
22456
+ "models"
22457
+ ],
22458
+ "additionalProperties": false,
22459
+ "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.",
22460
+ "title": "DiscoveredModelList",
22461
+ "stability": "experimental"
22462
+ },
21883
22463
  "EmbeddedBlobResourceContents": {
21884
22464
  "type": "object",
21885
22465
  "properties": {
@@ -21964,112 +22544,6 @@
21964
22544
  "description": "Indicates whether the command was accepted into the local execution queue.",
21965
22545
  "title": "EnqueueCommandResult"
21966
22546
  },
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
22547
  "EnvAuthInfo": {
22074
22548
  "type": "object",
22075
22549
  "properties": {
@@ -32806,6 +33280,46 @@
32806
33280
  "title": "ModelApplyStartupOverlayRequest",
32807
33281
  "stability": "experimental"
32808
33282
  },
33283
+ "ModelArtifactDetails": {
33284
+ "type": "object",
33285
+ "properties": {
33286
+ "format": {
33287
+ "type": "string",
33288
+ "description": "Artifact format, such as `gguf`."
33289
+ },
33290
+ "family": {
33291
+ "type": "string",
33292
+ "description": "Primary model family."
33293
+ },
33294
+ "families": {
33295
+ "type": "array",
33296
+ "items": {
33297
+ "type": "string"
33298
+ },
33299
+ "description": "Provider-reported model families."
33300
+ },
33301
+ "parameterSize": {
33302
+ "type": "string",
33303
+ "description": "Provider-reported parameter count label."
33304
+ },
33305
+ "quantization": {
33306
+ "type": "string",
33307
+ "description": "Provider-reported quantization label."
33308
+ },
33309
+ "architecture": {
33310
+ "type": "string",
33311
+ "description": "Provider-reported model architecture."
33312
+ },
33313
+ "tokenizer": {
33314
+ "type": "string",
33315
+ "description": "Provider-reported tokenizer."
33316
+ }
33317
+ },
33318
+ "additionalProperties": false,
33319
+ "description": "Provider-reported model artifact metadata.",
33320
+ "title": "ModelArtifactDetails",
33321
+ "stability": "experimental"
33322
+ },
32809
33323
  "ModelBilling": {
32810
33324
  "type": "object",
32811
33325
  "properties": {
@@ -33135,6 +33649,10 @@
33135
33649
  "ModelCapabilitiesSupports": {
33136
33650
  "type": "object",
33137
33651
  "properties": {
33652
+ "thinking": {
33653
+ "type": "boolean",
33654
+ "description": "Whether the model supports provider-native thinking. Independent of configurable reasoning effort; omission means unknown."
33655
+ },
33138
33656
  "vision": {
33139
33657
  "type": "boolean",
33140
33658
  "description": "Whether this model supports vision/image input"
@@ -33362,6 +33880,219 @@
33362
33880
  "unconfigured": "No explicit policy is configured for the model."
33363
33881
  }
33364
33882
  },
33883
+ "ModelProviderAdapterCatalog": {
33884
+ "type": "object",
33885
+ "properties": {
33886
+ "providers": {
33887
+ "type": "array",
33888
+ "items": {
33889
+ "$ref": "#/definitions/ModelProviderAdapterDescriptor",
33890
+ "description": "A normalized model-provider adapter in the session's effective catalog."
33891
+ },
33892
+ "description": "Available provider adapters ordered by adapterId."
33893
+ }
33894
+ },
33895
+ "required": [
33896
+ "providers"
33897
+ ],
33898
+ "additionalProperties": false,
33899
+ "description": "Normalized model-provider adapter definitions available to the session, not discovered instances.",
33900
+ "title": "ModelProviderAdapterCatalog",
33901
+ "stability": "experimental"
33902
+ },
33903
+ "ModelProviderAdapterDescriptor": {
33904
+ "type": "object",
33905
+ "properties": {
33906
+ "adapterId": {
33907
+ "type": "string",
33908
+ "description": "Stable opaque identity for routing to this adapter. Unique in the effective catalog, independent of live registration generations."
33909
+ },
33910
+ "providerKind": {
33911
+ "type": "string",
33912
+ "description": "Descriptive provider family, such as `ollama`. Different adapters may have the same family; use adapterId for routing."
33913
+ },
33914
+ "displayName": {
33915
+ "type": "string",
33916
+ "description": "Human-readable provider name."
33917
+ },
33918
+ "provenance": {
33919
+ "$ref": "#/definitions/ModelProviderAttribution",
33920
+ "description": "Attribution for the adapter itself."
33921
+ },
33922
+ "automaticDiscovery": {
33923
+ "$ref": "#/definitions/ModelProviderAutomaticDiscoveryPolicy",
33924
+ "description": "Adapter-declared policy for passive and automatic discovery."
33925
+ },
33926
+ "operations": {
33927
+ "type": "array",
33928
+ "items": {
33929
+ "$ref": "#/definitions/ModelProviderAdapterOperationDescriptor",
33930
+ "description": "An operation supported by a model-provider adapter."
33931
+ },
33932
+ "description": "Operations supported by this provider adapter."
33933
+ }
33934
+ },
33935
+ "required": [
33936
+ "adapterId",
33937
+ "providerKind",
33938
+ "displayName",
33939
+ "provenance",
33940
+ "automaticDiscovery",
33941
+ "operations"
33942
+ ],
33943
+ "additionalProperties": false,
33944
+ "description": "A normalized model-provider adapter in the session's effective catalog.",
33945
+ "title": "ModelProviderAdapterDescriptor",
33946
+ "stability": "experimental"
33947
+ },
33948
+ "ModelProviderAdapterOperationDescriptor": {
33949
+ "type": "object",
33950
+ "properties": {
33951
+ "name": {
33952
+ "type": "string",
33953
+ "description": "Supported operation name: `discover`, `getStatus`, or `models.list`. Unknown names and duplicate declarations are rejected."
33954
+ },
33955
+ "inputSchema": {
33956
+ "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.",
33957
+ "x-opaque-json": true
33958
+ }
33959
+ },
33960
+ "required": [
33961
+ "name"
33962
+ ],
33963
+ "additionalProperties": false,
33964
+ "description": "An operation supported by a model-provider adapter.",
33965
+ "title": "ModelProviderAdapterOperationDescriptor",
33966
+ "stability": "experimental"
33967
+ },
33968
+ "ModelProviderAttribution": {
33969
+ "type": "object",
33970
+ "properties": {
33971
+ "source": {
33972
+ "$ref": "#/definitions/ModelProviderProvenanceSource",
33973
+ "description": "Kind of component that supplied the adapter. Attribution does not confer authority."
33974
+ },
33975
+ "ownerId": {
33976
+ "type": "string",
33977
+ "description": "Stable contributor identifier. Required and nonblank for extension and custom sources; optional for built-in and configured sources. Does not grant authority."
33978
+ },
33979
+ "ownerDisplayName": {
33980
+ "type": "string",
33981
+ "description": "Human-readable contributor name, not the adapter display name."
33982
+ }
33983
+ },
33984
+ "required": [
33985
+ "source"
33986
+ ],
33987
+ "additionalProperties": false,
33988
+ "description": "Contributor attribution, independent of routing identity and authorization.",
33989
+ "title": "ModelProviderAttribution",
33990
+ "stability": "experimental"
33991
+ },
33992
+ "ModelProviderAutomaticDiscoveryMode": {
33993
+ "type": "string",
33994
+ "enum": [
33995
+ "automatic",
33996
+ "configuredOnly",
33997
+ "explicit"
33998
+ ],
33999
+ "description": "When the runtime may run an adapter without an explicit user action.",
34000
+ "title": "ModelProviderAutomaticDiscoveryMode",
34001
+ "x-enumDescriptions": {
34002
+ "automatic": "The adapter declares that automatic discovery is safe when the other policy fields are satisfied.",
34003
+ "configuredOnly": "The adapter may refresh instances the user already configured, but must not scan for new instances automatically.",
34004
+ "explicit": "The adapter must run only after an explicit user action."
34005
+ }
34006
+ },
34007
+ "ModelProviderAutomaticDiscoveryPolicy": {
34008
+ "type": "object",
34009
+ "properties": {
34010
+ "mode": {
34011
+ "$ref": "#/definitions/ModelProviderAutomaticDiscoveryMode",
34012
+ "description": "Whether automatic discovery is allowed, limited to configured providers, or explicit-only."
34013
+ },
34014
+ "networkScope": {
34015
+ "$ref": "#/definitions/ModelProviderDiscoveryNetworkScope",
34016
+ "description": "Maximum network scope used by this adapter during discovery."
34017
+ },
34018
+ "requiresInput": {
34019
+ "type": "boolean",
34020
+ "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."
34021
+ },
34022
+ "requiresTrust": {
34023
+ "type": "boolean",
34024
+ "description": "True when the adapter must be enabled by a trusted owner, such as a trusted extension, before automatic discovery may run."
34025
+ }
34026
+ },
34027
+ "required": [
34028
+ "mode",
34029
+ "networkScope",
34030
+ "requiresInput",
34031
+ "requiresTrust"
34032
+ ],
34033
+ "additionalProperties": false,
34034
+ "description": "Adapter-declared policy that tells clients whether discovery may run automatically.",
34035
+ "title": "ModelProviderAutomaticDiscoveryPolicy",
34036
+ "stability": "experimental"
34037
+ },
34038
+ "ModelProviderConfigurationDisposition": {
34039
+ "type": "string",
34040
+ "enum": [
34041
+ "create",
34042
+ "alreadyConfigured"
34043
+ ],
34044
+ "description": "Whether a planned configuration entry is new or already present in the session registry.",
34045
+ "title": "ModelProviderConfigurationDisposition",
34046
+ "x-enumDescriptions": {
34047
+ "create": "No matching entry is registered; the caller should add the entry.",
34048
+ "alreadyConfigured": "An equivalent entry is already registered; the caller should reuse it rather than adding a duplicate."
34049
+ }
34050
+ },
34051
+ "ModelProviderConfigurationPlan": {
34052
+ "type": "object",
34053
+ "properties": {
34054
+ "provider": {
34055
+ "$ref": "#/definitions/NamedProviderConfig",
34056
+ "description": "Provider connection prepared from the instance's inference metadata. Carries no credential; supply one if the endpoint requires it."
34057
+ },
34058
+ "model": {
34059
+ "$ref": "#/definitions/ProviderModelConfig",
34060
+ "description": "Model definition prepared from the discovered model. Capability fields the provider did not report stay omitted rather than being asserted false."
34061
+ },
34062
+ "selectionId": {
34063
+ "type": "string",
34064
+ "description": "Provider-qualified selection id (`provider/id`) to pass to `switchTo` once the plan is applied."
34065
+ },
34066
+ "providerDisposition": {
34067
+ "$ref": "#/definitions/ModelProviderConfigurationDisposition",
34068
+ "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."
34069
+ },
34070
+ "modelDisposition": {
34071
+ "$ref": "#/definitions/ModelProviderConfigurationDisposition",
34072
+ "description": "Whether `model` still needs to be registered. When `alreadyConfigured`, `selectionId` is already registered and the caller can select it without adding anything."
34073
+ },
34074
+ "warnings": {
34075
+ "type": "array",
34076
+ "items": {
34077
+ "$ref": "#/definitions/ModelProviderWarning",
34078
+ "description": "A non-fatal provider observation warning."
34079
+ },
34080
+ "description": "Non-fatal warnings carried over from the discovered model, such as capabilities the provider did not report."
34081
+ }
34082
+ },
34083
+ "required": [
34084
+ "provider",
34085
+ "model",
34086
+ "selectionId",
34087
+ "providerDisposition",
34088
+ "modelDisposition",
34089
+ "warnings"
34090
+ ],
34091
+ "additionalProperties": false,
34092
+ "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.",
34093
+ "title": "ModelProviderConfigurationPlan",
34094
+ "stability": "experimental"
34095
+ },
33365
34096
  "ModelProviderDescriptor": {
33366
34097
  "type": "object",
33367
34098
  "properties": {
@@ -33394,6 +34125,161 @@
33394
34125
  "title": "ModelProviderDescriptor",
33395
34126
  "stability": "experimental"
33396
34127
  },
34128
+ "ModelProviderDiscoverRequest": {
34129
+ "type": "object",
34130
+ "properties": {
34131
+ "adapterId": {
34132
+ "type": "string",
34133
+ "description": "Opaque adapter identity returned by `session.providers.getCatalog`."
34134
+ },
34135
+ "input": {
34136
+ "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.",
34137
+ "x-opaque-json": true
34138
+ }
34139
+ },
34140
+ "required": [
34141
+ "adapterId"
34142
+ ],
34143
+ "additionalProperties": false,
34144
+ "description": "Provider discovery parameters.",
34145
+ "title": "ModelProviderDiscoverRequest",
34146
+ "stability": "experimental"
34147
+ },
34148
+ "ModelProviderDiscoverResult": {
34149
+ "type": "object",
34150
+ "properties": {
34151
+ "outcome": {
34152
+ "$ref": "#/definitions/ModelProviderOperationOutcome",
34153
+ "description": "Typed operation outcome. Passive discovery can return `absent` with an empty instance list."
34154
+ },
34155
+ "instances": {
34156
+ "type": "array",
34157
+ "items": {
34158
+ "$ref": "#/definitions/ModelProviderInstance",
34159
+ "description": "A normalized model-provider instance discovered by the runtime."
34160
+ },
34161
+ "description": "Discovered provider instances. Empty when passive default discovery finds no reachable provider."
34162
+ }
34163
+ },
34164
+ "required": [
34165
+ "outcome",
34166
+ "instances"
34167
+ ],
34168
+ "additionalProperties": false,
34169
+ "description": "Provider instances found by a discovery operation.",
34170
+ "title": "ModelProviderDiscoverResult",
34171
+ "stability": "experimental"
34172
+ },
34173
+ "ModelProviderDiscoveryNetworkScope": {
34174
+ "type": "string",
34175
+ "enum": [
34176
+ "none",
34177
+ "loopbackOnly",
34178
+ "configuredEndpointOnly",
34179
+ "localNetwork",
34180
+ "internet"
34181
+ ],
34182
+ "description": "Network reach an adapter may use during discovery.",
34183
+ "title": "ModelProviderDiscoveryNetworkScope",
34184
+ "x-enumDescriptions": {
34185
+ "none": "Discovery does not contact a network service.",
34186
+ "loopbackOnly": "Discovery is limited to loopback addresses on the local machine.",
34187
+ "configuredEndpointOnly": "Discovery contacts only endpoints the user already configured.",
34188
+ "localNetwork": "Discovery may scan or contact the local network.",
34189
+ "internet": "Discovery may contact remote internet services."
34190
+ }
34191
+ },
34192
+ "ModelProviderGetStatusRequest": {
34193
+ "type": "object",
34194
+ "properties": {
34195
+ "instance": {
34196
+ "$ref": "#/definitions/ModelProviderInstanceReference",
34197
+ "description": "Provider instance reference returned by discovery."
34198
+ }
34199
+ },
34200
+ "required": [
34201
+ "instance"
34202
+ ],
34203
+ "additionalProperties": false,
34204
+ "description": "Provider status request parameters.",
34205
+ "title": "ModelProviderGetStatusRequest",
34206
+ "stability": "experimental"
34207
+ },
34208
+ "ModelProviderInstance": {
34209
+ "type": "object",
34210
+ "properties": {
34211
+ "reference": {
34212
+ "$ref": "#/definitions/ModelProviderInstanceReference",
34213
+ "description": "Self-contained reference for subsequent provider operations."
34214
+ },
34215
+ "displayName": {
34216
+ "type": "string",
34217
+ "description": "Human-readable instance name."
34218
+ },
34219
+ "provenance": {
34220
+ "$ref": "#/definitions/ModelProviderProvenance",
34221
+ "description": "Attribution for the adapter that produced this instance."
34222
+ },
34223
+ "inferenceEndpoint": {
34224
+ "type": "string",
34225
+ "format": "uri",
34226
+ "description": "Inference API endpoint when the provider exposes one separately from its management endpoint."
34227
+ },
34228
+ "inferenceType": {
34229
+ "$ref": "#/definitions/ProviderEndpointType",
34230
+ "description": "Provider family to use for inference against this instance."
34231
+ },
34232
+ "inferenceWireApi": {
34233
+ "$ref": "#/definitions/ProviderEndpointWireApi",
34234
+ "description": "Wire API to use for inference against this instance, when required by the provider family."
34235
+ },
34236
+ "inferenceTransport": {
34237
+ "$ref": "#/definitions/ProviderEndpointTransport",
34238
+ "description": "Transport to use for inference against this instance."
34239
+ }
34240
+ },
34241
+ "required": [
34242
+ "reference",
34243
+ "displayName",
34244
+ "provenance"
34245
+ ],
34246
+ "additionalProperties": false,
34247
+ "description": "A normalized model-provider instance discovered by the runtime.",
34248
+ "title": "ModelProviderInstance",
34249
+ "stability": "experimental"
34250
+ },
34251
+ "ModelProviderInstanceReference": {
34252
+ "type": "object",
34253
+ "properties": {
34254
+ "adapterId": {
34255
+ "type": "string",
34256
+ "description": "Stable opaque identity of the adapter that owns this reference. Must be present in the target session's effective catalog."
34257
+ },
34258
+ "providerKind": {
34259
+ "type": "string",
34260
+ "description": "Descriptive provider family. Must match the selected adapter; not a routing key."
34261
+ },
34262
+ "id": {
34263
+ "type": "string",
34264
+ "description": "Stable instance identifier derived by the provider adapter, such as `ollama:{normalizedEndpoint}`."
34265
+ },
34266
+ "managementEndpoint": {
34267
+ "type": "string",
34268
+ "format": "uri",
34269
+ "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."
34270
+ }
34271
+ },
34272
+ "required": [
34273
+ "adapterId",
34274
+ "providerKind",
34275
+ "id",
34276
+ "managementEndpoint"
34277
+ ],
34278
+ "additionalProperties": false,
34279
+ "description": "Serializable reference to a discovered provider instance.",
34280
+ "title": "ModelProviderInstanceReference",
34281
+ "stability": "experimental"
34282
+ },
33397
34283
  "ModelProviderKind": {
33398
34284
  "type": "string",
33399
34285
  "enum": [
@@ -33408,6 +34294,131 @@
33408
34294
  },
33409
34295
  "stability": "experimental"
33410
34296
  },
34297
+ "ModelProviderModelsListRequest": {
34298
+ "type": "object",
34299
+ "properties": {
34300
+ "instance": {
34301
+ "$ref": "#/definitions/ModelProviderInstanceReference",
34302
+ "description": "Provider instance reference returned by discovery."
34303
+ }
34304
+ },
34305
+ "required": [
34306
+ "instance"
34307
+ ],
34308
+ "additionalProperties": false,
34309
+ "description": "Provider model inventory request parameters.",
34310
+ "title": "ModelProviderModelsListRequest",
34311
+ "stability": "experimental"
34312
+ },
34313
+ "ModelProviderOperationOutcome": {
34314
+ "type": "object",
34315
+ "properties": {
34316
+ "code": {
34317
+ "$ref": "#/definitions/ModelProviderOperationOutcomeCode",
34318
+ "description": "Machine-readable operation outcome."
34319
+ },
34320
+ "message": {
34321
+ "type": "string",
34322
+ "description": "Human-readable detail for non-success outcomes."
34323
+ }
34324
+ },
34325
+ "required": [
34326
+ "code"
34327
+ ],
34328
+ "additionalProperties": false,
34329
+ "description": "Typed provider-operation outcome. Use the code for control flow and the optional message for display.",
34330
+ "title": "ModelProviderOperationOutcome",
34331
+ "stability": "experimental"
34332
+ },
34333
+ "ModelProviderOperationOutcomeCode": {
34334
+ "type": "string",
34335
+ "enum": [
34336
+ "success",
34337
+ "absent",
34338
+ "unreachable",
34339
+ "failed"
34340
+ ],
34341
+ "description": "Typed outcome for a provider operation.",
34342
+ "title": "ModelProviderOperationOutcomeCode",
34343
+ "x-enumDescriptions": {
34344
+ "success": "The operation completed successfully; an empty inventory is valid.",
34345
+ "absent": "The provider or instance is absent during discovery, status, or model listing. Distinct from a successful empty inventory.",
34346
+ "unreachable": "The provider is configured or expected but could not be reached.",
34347
+ "failed": "The operation failed for a reason other than absence or reachability."
34348
+ }
34349
+ },
34350
+ "ModelProviderPrepareConfigurationRequest": {
34351
+ "type": "object",
34352
+ "properties": {
34353
+ "instance": {
34354
+ "$ref": "#/definitions/ModelProviderInstance",
34355
+ "description": "The discovered instance that serves the model."
34356
+ },
34357
+ "model": {
34358
+ "$ref": "#/definitions/DiscoveredModel",
34359
+ "description": "The discovered model to configure."
34360
+ }
34361
+ },
34362
+ "required": [
34363
+ "instance",
34364
+ "model"
34365
+ ],
34366
+ "additionalProperties": false,
34367
+ "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`.",
34368
+ "title": "ModelProviderPrepareConfigurationRequest",
34369
+ "stability": "experimental"
34370
+ },
34371
+ "ModelProviderProvenance": {
34372
+ "type": "object",
34373
+ "properties": {
34374
+ "adapterId": {
34375
+ "type": "string",
34376
+ "description": "Stable opaque adapter identity from the effective catalog. Treat this as a whole identifier, not a parseable owner or kind."
34377
+ },
34378
+ "providerKind": {
34379
+ "type": "string",
34380
+ "description": "Descriptive provider family that produced this row; not a routing key."
34381
+ },
34382
+ "source": {
34383
+ "$ref": "#/definitions/ModelProviderProvenanceSource",
34384
+ "description": "Kind of component that supplied the adapter."
34385
+ },
34386
+ "ownerId": {
34387
+ "type": "string",
34388
+ "description": "Stable contributor identifier when the adapter has an owner outside the runtime. Independent of the contribution mechanism and not a routing key."
34389
+ },
34390
+ "ownerDisplayName": {
34391
+ "type": "string",
34392
+ "description": "Human-readable contributor name, not the adapter display name."
34393
+ }
34394
+ },
34395
+ "required": [
34396
+ "adapterId",
34397
+ "providerKind",
34398
+ "source"
34399
+ ],
34400
+ "additionalProperties": false,
34401
+ "description": "Attribution for the adapter that produced a provider row.",
34402
+ "title": "ModelProviderProvenance",
34403
+ "stability": "experimental"
34404
+ },
34405
+ "ModelProviderProvenanceSource": {
34406
+ "type": "string",
34407
+ "enum": [
34408
+ "builtIn",
34409
+ "configured",
34410
+ "extension",
34411
+ "custom"
34412
+ ],
34413
+ "description": "Kind of component that supplied a provider adapter or row. Attribution does not confer authority.",
34414
+ "title": "ModelProviderProvenanceSource",
34415
+ "x-enumDescriptions": {
34416
+ "builtIn": "Built into the runtime.",
34417
+ "configured": "Derived from existing user configuration.",
34418
+ "extension": "Supplied by an extension.",
34419
+ "custom": "Supplied by another trusted contributor."
34420
+ }
34421
+ },
33411
34422
  "ModelProviderRef": {
33412
34423
  "type": "object",
33413
34424
  "properties": {
@@ -33434,6 +34445,57 @@
33434
34445
  "title": "ModelProviderRef",
33435
34446
  "stability": "experimental"
33436
34447
  },
34448
+ "ModelProviderStatus": {
34449
+ "type": "object",
34450
+ "properties": {
34451
+ "outcome": {
34452
+ "$ref": "#/definitions/ModelProviderOperationOutcome",
34453
+ "description": "Typed operation outcome."
34454
+ },
34455
+ "instance": {
34456
+ "$ref": "#/definitions/ModelProviderInstance",
34457
+ "description": "Normalized provider instance."
34458
+ },
34459
+ "status": {
34460
+ "type": "string",
34461
+ "description": "Open provider status value, such as `healthy`, `unreachable`, or `notInstalled`."
34462
+ },
34463
+ "version": {
34464
+ "type": "string",
34465
+ "description": "Provider-reported version."
34466
+ }
34467
+ },
34468
+ "required": [
34469
+ "outcome",
34470
+ "instance",
34471
+ "status"
34472
+ ],
34473
+ "additionalProperties": false,
34474
+ "description": "Current health information for a provider instance.",
34475
+ "title": "ModelProviderStatus",
34476
+ "stability": "experimental"
34477
+ },
34478
+ "ModelProviderWarning": {
34479
+ "type": "object",
34480
+ "properties": {
34481
+ "code": {
34482
+ "type": "string",
34483
+ "description": "Machine-readable warning code."
34484
+ },
34485
+ "message": {
34486
+ "type": "string",
34487
+ "description": "Human-readable warning message."
34488
+ }
34489
+ },
34490
+ "required": [
34491
+ "code",
34492
+ "message"
34493
+ ],
34494
+ "additionalProperties": false,
34495
+ "description": "A non-fatal provider observation warning.",
34496
+ "title": "ModelProviderWarning",
34497
+ "stability": "experimental"
34498
+ },
33437
34499
  "ModelSetAllowedModelsRequest": {
33438
34500
  "type": "object",
33439
34501
  "properties": {
@@ -33983,6 +35045,10 @@
33983
35045
  },
33984
35046
  "description": "Additional HTTP headers included with provider requests."
33985
35047
  },
35048
+ "modelProvider": {
35049
+ "$ref": "#/definitions/ProviderConfigModelProvider",
35050
+ "description": "The product serving the provider's models, reported in telemetry as `model_provider`. Only affects telemetry."
35051
+ },
33986
35052
  "hasBearerTokenProvider": {
33987
35053
  "type": "boolean",
33988
35054
  "description": "Whether the host supplies bearer tokens dynamically."
@@ -37808,6 +38874,10 @@
37808
38874
  "type": "string",
37809
38875
  "description": "Provider name used for model and telemetry attribution."
37810
38876
  },
38877
+ "modelProvider": {
38878
+ "$ref": "#/definitions/ProviderConfigModelProvider",
38879
+ "description": "The product serving the model, reported in telemetry as `model_provider`. Set it when `type` alone cannot identify the product, such as Ollama or LM Studio behind an OpenAI-compatible endpoint. Only affects telemetry."
38880
+ },
37811
38881
  "wireModel": {
37812
38882
  "type": "string",
37813
38883
  "description": "The model identifier sent to the provider API for inference (the \"wire\" model), as opposed to modelId which is the well-known base."
@@ -37856,6 +38926,29 @@
37856
38926
  "description": "Azure-specific provider options.",
37857
38927
  "title": "ProviderConfigAzure"
37858
38928
  },
38929
+ "ProviderConfigModelProvider": {
38930
+ "type": "string",
38931
+ "enum": [
38932
+ "openai",
38933
+ "anthropic",
38934
+ "azure_openai",
38935
+ "ollama",
38936
+ "lm_studio",
38937
+ "foundry_local",
38938
+ "llama_cpp"
38939
+ ],
38940
+ "description": "The product serving the model, reported in telemetry as `model_provider`.",
38941
+ "title": "ProviderConfigModelProvider",
38942
+ "x-enumDescriptions": {
38943
+ "openai": "OpenAI API.",
38944
+ "anthropic": "Anthropic API.",
38945
+ "azure_openai": "Azure OpenAI Service.",
38946
+ "ollama": "Ollama.",
38947
+ "lm_studio": "LM Studio.",
38948
+ "foundry_local": "Foundry Local.",
38949
+ "llama_cpp": "llama.cpp server."
38950
+ }
38951
+ },
37859
38952
  "ProviderConfigTransport": {
37860
38953
  "type": "string",
37861
38954
  "enum": [
@@ -40716,6 +41809,78 @@
40716
41809
  "description": "Destinations authorized to receive one masked environment credential.",
40717
41810
  "title": "SandboxMaskedEnvVar"
40718
41811
  },
41812
+ "SandboxProxyCaCreateResult": {
41813
+ "type": "object",
41814
+ "properties": {
41815
+ "certificatePath": {
41816
+ "type": "string",
41817
+ "description": "Absolute path of the public certificate of the certificate authority, in PEM format."
41818
+ }
41819
+ },
41820
+ "required": [
41821
+ "certificatePath"
41822
+ ],
41823
+ "additionalProperties": false,
41824
+ "description": "Result of creating the persistent certificate authority of the sandbox credential proxy.",
41825
+ "title": "SandboxProxyCaCreateResult",
41826
+ "stability": "experimental"
41827
+ },
41828
+ "SandboxProxyCaRequest": {
41829
+ "type": "object",
41830
+ "properties": {
41831
+ "sandboxConfig": {
41832
+ "$ref": "#/definitions/SandboxConfig",
41833
+ "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."
41834
+ }
41835
+ },
41836
+ "additionalProperties": false,
41837
+ "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.",
41838
+ "title": "SandboxProxyCaRequest",
41839
+ "stability": "experimental"
41840
+ },
41841
+ "SandboxProxyCaState": {
41842
+ "type": "string",
41843
+ "enum": [
41844
+ "unsupported",
41845
+ "notInstalled",
41846
+ "installed",
41847
+ "error"
41848
+ ],
41849
+ "description": "State of the persistent certificate authority of the sandbox credential proxy.",
41850
+ "title": "SandboxProxyCaState",
41851
+ "x-enumDescriptions": {
41852
+ "unsupported": "This platform has no supported OS trust store. The proxy uses a per-process certificate bundle.",
41853
+ "notInstalled": "OS trust does not include the certificate authority, or none is stored.",
41854
+ "installed": "OS trust includes the stored certificate authority.",
41855
+ "error": "The runtime could not read the certificate authority or the OS trust store."
41856
+ },
41857
+ "stability": "experimental"
41858
+ },
41859
+ "SandboxProxyCaStatus": {
41860
+ "type": "object",
41861
+ "properties": {
41862
+ "state": {
41863
+ "$ref": "#/definitions/SandboxProxyCaState",
41864
+ "description": "The state of the certificate authority."
41865
+ },
41866
+ "detail": {
41867
+ "type": "string",
41868
+ "description": "Human-readable reason for the state. On `installed` or `notInstalled`, present only when the certificate authority must be rotated, and then says why."
41869
+ },
41870
+ "canInstall": {
41871
+ "type": "boolean",
41872
+ "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."
41873
+ }
41874
+ },
41875
+ "required": [
41876
+ "state",
41877
+ "canInstall"
41878
+ ],
41879
+ "additionalProperties": false,
41880
+ "description": "Status of the persistent certificate authority of the sandbox credential proxy.",
41881
+ "title": "SandboxProxyCaStatus",
41882
+ "stability": "experimental"
41883
+ },
40719
41884
  "SandboxSessionChange": {
40720
41885
  "type": "string",
40721
41886
  "enum": [
@@ -41999,6 +43164,10 @@
41999
43164
  "message": {
42000
43165
  "type": "string",
42001
43166
  "description": "Free-form detail about the error, for logging/diagnostics"
43167
+ },
43168
+ "writeChanged": {
43169
+ "type": "boolean",
43170
+ "description": "For failed writeFile requests only: true if the provider changed the target before failing. Omit when unknown or unchanged."
42002
43171
  }
42003
43172
  },
42004
43173
  "required": [
@@ -42187,6 +43356,41 @@
42187
43356
  "description": "Entries in the requested directory paired with file/directory type information, or a filesystem error if the read failed.",
42188
43357
  "title": "SessionFsReaddirWithTypesResult"
42189
43358
  },
43359
+ "SessionFsReadFileBytesRequest": {
43360
+ "type": "object",
43361
+ "properties": {
43362
+ "path": {
43363
+ "type": "string",
43364
+ "description": "Path using SessionFs conventions"
43365
+ }
43366
+ },
43367
+ "required": [
43368
+ "path"
43369
+ ],
43370
+ "additionalProperties": false,
43371
+ "description": "Path of the binary file to read from the client-provided session filesystem.",
43372
+ "title": "SessionFsReadFileBytesRequest",
43373
+ "stability": "experimental"
43374
+ },
43375
+ "SessionFsReadFileBytesResult": {
43376
+ "type": "object",
43377
+ "properties": {
43378
+ "content": {
43379
+ "type": "string",
43380
+ "description": "Exact file bytes encoded as standard base64"
43381
+ },
43382
+ "error": {
43383
+ "$ref": "#/definitions/SessionFsError",
43384
+ "description": "Describes a filesystem error."
43385
+ }
43386
+ },
43387
+ "required": [
43388
+ "content"
43389
+ ],
43390
+ "additionalProperties": false,
43391
+ "description": "File bytes as standard base64, or a filesystem error if the read failed.",
43392
+ "title": "SessionFsReadFileBytesResult"
43393
+ },
42190
43394
  "SessionFsReadFileRequest": {
42191
43395
  "type": "object",
42192
43396
  "properties": {
@@ -42273,6 +43477,10 @@
42273
43477
  "sqlite": {
42274
43478
  "type": "boolean",
42275
43479
  "description": "Whether the provider supports SQLite query/exists operations"
43480
+ },
43481
+ "binary": {
43482
+ "type": "boolean",
43483
+ "description": "Whether the provider supports binary reads and writes through sessionFs.readFileBytes and sessionFs.writeFileBytes"
42276
43484
  }
42277
43485
  },
42278
43486
  "additionalProperties": false,
@@ -42603,6 +43811,32 @@
42603
43811
  "description": "Filesystem metadata for the requested path, or a filesystem error if the stat failed.",
42604
43812
  "title": "SessionFsStatResult"
42605
43813
  },
43814
+ "SessionFsWriteFileBytesRequest": {
43815
+ "type": "object",
43816
+ "properties": {
43817
+ "path": {
43818
+ "type": "string",
43819
+ "description": "Path using SessionFs conventions"
43820
+ },
43821
+ "content": {
43822
+ "type": "string",
43823
+ "description": "Exact file bytes encoded as standard base64"
43824
+ },
43825
+ "mode": {
43826
+ "type": "integer",
43827
+ "minimum": 0,
43828
+ "description": "Optional POSIX-style mode for newly created files"
43829
+ }
43830
+ },
43831
+ "required": [
43832
+ "path",
43833
+ "content"
43834
+ ],
43835
+ "additionalProperties": false,
43836
+ "description": "File path, standard-base64-encoded bytes to write, and optional mode for the client-provided session filesystem.",
43837
+ "title": "SessionFsWriteFileBytesRequest",
43838
+ "stability": "experimental"
43839
+ },
42606
43840
  "SessionFsWriteFileRequest": {
42607
43841
  "type": "object",
42608
43842
  "properties": {