@openwop/spec-artifacts 2.45.10 → 2.45.12

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.
package/CORPUS-STAMP.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "_comment": "Provenance of @openwop/spec-artifacts (RFC 0168 §D.2). files: SHA-256 per file; the conformance suite compares the installed peer against dist/spec-artifacts.lock.json at start.",
3
3
  "package": "@openwop/spec-artifacts",
4
- "version": "2.45.10",
5
- "corpusTag": "v2.45.10",
4
+ "version": "2.45.12",
5
+ "corpusTag": "v2.45.12",
6
6
  "files": {
7
7
  "api/.redocly.lint-ignore.yaml": "bf5a8350b88a72fa43f59605ed8d903ed24b6cfccda5e45509c9f6ed9ee4e712",
8
8
  "api/asyncapi.yaml": "d5ecb9ee6114582be3b1f662c84bfac9ae96dae7bacb853e461168f70a8e1c7d",
9
9
  "api/grpc/openwop.proto": "c3e72bb17cba514ee98feb6434e6c9b6ea6795bfd086489ec69fd882dd1ad977",
10
10
  "api/openapi.yaml": "ac6de5303872664b78ff419c035915593e01599e02835e777a0123de1baeb398",
11
11
  "api/redocly.yaml": "b0604c89b2ca6d5076ec25725c539dad44a741a811fe524439ee6daef8baa09f",
12
- "api/seams-v2.yaml": "448d60e189059fe6bd4953b8c47f6941f89053707f45621d4e32b8bef0773670",
13
- "api/v2/asyncapi.yaml": "8db5aa748cd4f6481055d48d0a6d66d596f20e712d2004aa86de79b4c34e9bd9",
14
- "api/v2/openapi.yaml": "e3b1ed5954b8e9acd6c68cd2a924603afcebb686d07fb5a26e929b01b7f6599b",
12
+ "api/seams-v2.yaml": "b971877ce1060183e49a3b6c0b9ba1b3bfbf52cceb38482bc03b8d7554231b5f",
13
+ "api/v2/asyncapi.yaml": "af56f052444d3ffa2b8f9c380dcdb91c903b813d8fe7941d030c785ab54cbeac",
14
+ "api/v2/openapi.yaml": "47e3b00c61d4ef6fc7e42b819b52648bb3a1de966f5d6e4a41c6ff4a6c2d80f3",
15
15
  "api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
16
16
  "schemas/README.md": "bd1c00fae7b6fda506a75aff841bbdc438d4ce092642a72041203bee999b88de",
17
17
  "schemas/a2a-task-state.schema.json": "75d5049dea8bd873ff0e7546f1c60c8d36c219bec7084264360be54a8be30ae1",
@@ -117,7 +117,7 @@
117
117
  "schemas/v2/artifact.schema.json": "85b9dc284d39b99d2a66fa8cbf47f2dd3d8526d3bd6cc411ad315b372de38975",
118
118
  "schemas/v2/audit-verify-result.schema.json": "14af8e9283510f0a40e48a2059c929ee44e0fc9fa3cc66a95bfbe90b17c48297",
119
119
  "schemas/v2/budget-policy.schema.json": "1de68095db0beb5c7a4be629de26e79f62ebbe748a88d46f36e768edfd1f0d68",
120
- "schemas/v2/capabilities.schema.json": "4503d383c2b5efff532a79dabc79d17b5f6494c88d5b385bd3ca5f1a4e3f7647",
120
+ "schemas/v2/capabilities.schema.json": "c7a01b2f569139f99ba5e1a5329a42556fbd82bc743f8fd96963304395fc9ef0",
121
121
  "schemas/v2/certification-bundle.schema.json": "82ce31a1ed6c7e21b0ba88ff62a7b8b768fc3b176b1d06fce023203830b94725",
122
122
  "schemas/v2/channel-presence-payload.schema.json": "4eeb224910e6f7eee3ab5e7c3899559c25c83a26d0022e0ad195c4672611977a",
123
123
  "schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
@@ -127,6 +127,7 @@
127
127
  "schemas/v2/compensation-projection.schema.json": "f46977c7076347b5473faa8c4bbe73d8321c33b33c98fff2f26ee7cbada4ed98",
128
128
  "schemas/v2/configurable.schema.json": "33a6884047e2490f723733bf8b74d3b9164e00374cfea6dc3eac5a70dc368861",
129
129
  "schemas/v2/connection-pack-manifest.schema.json": "8d019de6bd0c5b14ea3b227580734ec792521493b396a850f7f9217aa7a6a547",
130
+ "schemas/v2/connection-provider-registry.schema.json": "5b404da328a95c45808929e233ee766ebd635cf0df6f5d15d4c19354dfd7e75d",
130
131
  "schemas/v2/conversation-event.schema.json": "9ad4c57285818edbf38b17816de0c4162f777c835f59e68702d0367a81cbccf6",
131
132
  "schemas/v2/conversation-turn.schema.json": "75bb6a4a03072a958feb5b34e2a1f40471e9e3996a81fa430b65717f0773c9a4",
132
133
  "schemas/v2/credential-provenance.schema.json": "f86b09e94b1c524dec7d1c6353965665ae8891e9517faef6e742d639c5578c99",
@@ -206,13 +207,13 @@
206
207
  "schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
207
208
  "spec/v1/alias-detectors.json": "0b2f28808ffe0b9d98a187775038c3406bb70919747a788a6e4f866e293ae6d3",
208
209
  "spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
209
- "spec/v1/core-standard-manifest.json": "819828fb2f978fa9e4a994652bbe16c797d36a8c4393d57d1432c8a53f2120ab",
210
+ "spec/v1/core-standard-manifest.json": "f138120b544d0e40c9ac05dd9b77a51bb624a3212cfd5a13d97be96fbbe9b3e4",
210
211
  "spec/v1/deprecations.json": "a3293072ea951857395d05f0437264e88965f1e9019ff61c55bacfa9c1aaa17c",
211
212
  "spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
212
213
  "spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
213
214
  "spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
214
215
  "spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
215
- "spec/v1/gaps.json": "7eab313ec80c40285e3290113f5d3fea90ea6f8bc385ef6fd15d415f52540035",
216
+ "spec/v1/gaps.json": "9dd6e21e6122b292c4912028dfcc8368e3df1a8bafc81451c73c90a2a9a8fdc1",
216
217
  "spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
217
218
  "spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
218
219
  "spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
@@ -222,13 +223,13 @@
222
223
  "spec/v2/core/artifact-type-packs.md": "f734740cc3963f86c9f273a7dace26291bba2855161ddd3540618131a2c8d13e",
223
224
  "spec/v2/core/capabilities.md": "04feda1747ca8f97443176cbf82d7d69891322a7bbf9a9bed88f519b8fb574fe",
224
225
  "spec/v2/core/conformance.md": "3ca291e63bc70a6ef829ae8759ad0ded3741ea7aa507bbbdffc57de443ab2ae2",
225
- "spec/v2/core/connection-packs.md": "1ee129d792c537bfe82393ccb92555d8e6ddc342b1aa781a13f101b27ec38171",
226
+ "spec/v2/core/connection-packs.md": "c80f95bd6a03698f35c72cdb2b46bd973f49203bbd786c26760e35fa86e6f23d",
226
227
  "spec/v2/core/conversation.md": "354fa57c73d11062e523a44aa75a6353c5c81aefaf306d30c42416a228c82c86",
227
228
  "spec/v2/core/errors.md": "91f46acc9c9a5532a98cf62c69285d68575c100ff6064f0b1bf94731a087e34a",
228
229
  "spec/v2/core/events.md": "c1a20e3aa6736119ea07aa2cf66faa808a1874d2cde4933033b65506d1742883",
229
230
  "spec/v2/core/execution.md": "8a0c9db1bbfb97c008ab9328b7333c1cc3318196e78bfbefb49e781bdf4f9d44",
230
231
  "spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
231
- "spec/v2/core/headers.md": "1e601c31d2c8bcb7628b7efe2b65fb53d9c79db2a60a4235c333cf85290bb0c0",
232
+ "spec/v2/core/headers.md": "60aee0768bb1b15cf8ff783170ba6541c8c106da417c8a066c8f85cb6a5b1ba1",
232
233
  "spec/v2/core/host-services.md": "73f26ea32891044131d63f9861d2cbddccb5d08bf76e29e47afef9bb5b646791",
233
234
  "spec/v2/core/i18n.md": "882904b7d59f992ab1e5f7346167161a54cf665b8fee47e64a3862cf9133a580",
234
235
  "spec/v2/core/idempotency.md": "adbd317a6ebb57c2759c076297b31f67def9e391576bccd0bbea787b13e85872",
@@ -246,12 +247,12 @@
246
247
  "spec/v2/core/security-defaults.md": "887d8c4bc592094e3b931c23f1c2175c18ebbd47528b074016f9d2091bc513b2",
247
248
  "spec/v2/core/storage.md": "dc94b985847c1341c7a064f04a6010f0fdbe6c3ab3e555d4362878c81d764c18",
248
249
  "spec/v2/core/tool-catalog.md": "d16a9004418719c48301804aefa4d7ab6f41112a4ed83727f552aa1b92b418b0",
249
- "spec/v2/core/versioning.md": "b7acb0d8b77425cb53ea700e47ba790bf7506de600c398690e6ec5bb9c7a220e",
250
+ "spec/v2/core/versioning.md": "fe48f4514b9c9f998d5da1930b8faa02ca4de89dcd49b07d95414fb04c67d438",
250
251
  "spec/v2/core/webhooks.md": "daf6ec03092f4b3fde1eb74a5e2e801ec48db5139a13fcc0fd7fb4a004635ae3",
251
252
  "spec/v2/core/workflow-chain-packs.md": "fdce7a8477e269950a2bac05ee6eddbd66eb0b670b464d00054f7196ec05d29c",
252
253
  "spec/v2/corrections.json": "3a8d93e33865b692d26a3b6bfd3819766e206b2e0c2a69669baa4bf833d05a49",
253
254
  "spec/v2/corrections.schema.json": "46bbffb954d13bd9995aebc912ceeb2544f7064331abf25fd6ab85c81a5cec94",
254
- "spec/v2/declaration.json": "8e5eab46ea448725b806a2395f80f5c36fa582a308f80eb09931a633a595eae1",
255
+ "spec/v2/declaration.json": "e963d3aa73892ee08281227c8a01aa6c06f1b825cdcb26aab029b1ab3f4155bf",
255
256
  "spec/v2/declaration.schema.json": "ef951633e4070899f64828f5cf1b5f4870270a0360f81dbb49b5b4d6cd407550",
256
257
  "spec/v2/errors.json": "83f048b0a06952b4af6f125fb66c4212acab51056b411390f1010acd6ab9cdc0",
257
258
  "spec/v2/errors.schema.json": "47404ad53e6147cf9017b813483712466573e419fb33e6c4b6c12d3e7deba1bc",
@@ -281,6 +282,7 @@
281
282
  "spec/v2/facets/aiProviders.schema.json": "4eb911c2403b8f618325194855a1326680fbda2549dfbfe86a70dd2743f8fb12",
282
283
  "spec/v2/facets/auditLogIntegrity.schema.json": "9a7f81320c8f940c6f4129bc7dd895a4063231c5458a717a08c2cbf9bb886c46",
283
284
  "spec/v2/facets/auth.schema.json": "7d98bc81a0f7d307460d039eebfebd21388091bfe1d538762583940f94c0bd2a",
285
+ "spec/v2/facets/connections.schema.json": "f998bb206a5814183bb4720cc34fa43b7ab64d61e39a79437b009c589ce8b78e",
284
286
  "spec/v2/facets/envelopeStrictness.schema.json": "28be0a27f880bd45ec1222a16155f5e9167bbca57bf0322970fe1eb2654562aa",
285
287
  "spec/v2/facets/heartbeat.schema.json": "81d7fa1895a8b0241bd07cf00a7e7905bef0fd14eb3427325261c62eee5746a6",
286
288
  "spec/v2/facets/interrupt.schema.json": "2110ef32c3f880bf706475ef4cf8ddf97ff06871b8e6003a5edbcf4439f1fb70",
@@ -297,17 +299,17 @@
297
299
  "spec/v2/generated/error-codes.md": "f171c0ca1be40221f9b4fbfcbce73c728c315a1e8feb8dd6bf738d6ca9e29526",
298
300
  "spec/v2/harness-trust-anchors.json": "6007b92eae16a070fbc3777424efb0abfe865fda89d096963109b96282b91205",
299
301
  "spec/v2/harness-trust-anchors.schema.json": "372b5d92337c893d3449eff3f6bfd009ac09fdac285296d8bdbe0a08fff9e34c",
300
- "spec/v2/id-field-bindings.json": "cc315f9a7aa5ec552860c1a790e105502fb737dc10b57aa5641bdd7405d6b638",
302
+ "spec/v2/id-field-bindings.json": "aa3e7c3590a490a77286e3ae60c1ab7407e7d627e05f981c3e08f221af4bd5dc",
301
303
  "spec/v2/interop-map.json": "02255dafe7eb55f61ca7f9ae7c21f079d1848a6756991343088975ac9d184b8d",
302
304
  "spec/v2/interop-map.schema.json": "0017c882df34ee215e2e0729de051490e09d43aac3d2c949285698ed51832f12",
303
305
  "spec/v2/migrations.json": "651954938a1e154c0b6f1e3dd6e105889d30de3bb65789f21de7f77a12869e9e",
304
306
  "spec/v2/migrations.schema.json": "b91ade6320ad1b1185c9495b9424f3aa63438ed8e412c45171c227d82c0afd86",
305
- "spec/v2/path-manifest.json": "36363105280139dad095dc4f64b5b272121e9759cdcf6de011358dd1c1a90540",
307
+ "spec/v2/path-manifest.json": "b84c7561f50c7df0cb61b202bd6595acad3ee7edca7a45f711949bea3c69bd27",
306
308
  "spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
307
309
  "spec/v2/profiles.json": "180beb9ef2d161766fa23b2987e7e829851e3d316273147cf6a4a3f324befd6b",
308
- "spec/v2/release.json": "044530e75b4cdec6747c1bcebe799ebc62f1f6c2a1e722369b35b2854e54049f",
310
+ "spec/v2/release.json": "0966caad45aa4689f63ff476b863590b716c2ba264f2da20c964b0fe7f8773f2",
309
311
  "spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
310
- "spec/v2/surface-baseline.json": "99ddcf9eb0d06967879ce7f6e54c49fe19bfabc9ee50f00f78699b401108bfd5"
312
+ "spec/v2/surface-baseline.json": "a00146b764f3f2f31af25cef62a1cf71f43354c55bb79a77ad38642d0ad460d5"
311
313
  },
312
- "corpusCommit": "8817d7c027047bbf1aa8d9385122137396f1bdca"
314
+ "corpusCommit": "f3c37c0559bd41f77fe89b00f306357b60497fb9"
313
315
  }
package/api/seams-v2.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP conformance seams profile (openwop-conformance-seams-v2)
4
- version: 2.45.10
4
+ version: 2.45.12
5
5
  description: 'The OpenWOP conformance seams profile (`openwop-conformance-seams-v2`): test-only operations in their own
6
6
  path space, `/conformance/seams/…`. The profile is versioned and validated against the canonical v2 schemas with no tolerance
7
7
  path. It is not a capability: a host advertises the profile, never a `testSeams` flag.
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 event streams
4
- version: 2.45.10
4
+ version: 2.45.12
5
5
  description: 'OpenWOP v2 event streams over SSE. The run-events channel''s address is the OpenAPI path key, and the server
6
6
  pathname is empty (bare origin). `streamMode` is a stream mode from the closed set, or a comma-separated combination of
7
7
  them; `values` never combines. `hostEvents` has a default address, `/host/events`; a host MAY declare another under `heartbeat.deliveryChannel`.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
3
  title: OpenWOP v2 API
4
- version: 2.45.10
4
+ version: 2.45.12
5
5
  summary: REST surface for declaring, executing, suspending, resuming, and observing multi-step workflows.
6
6
  description: 'The OpenWOP v2 REST API. Paths are unversioned and served at the bare origin; a client selects a version with
7
7
  the `OpenWOP-Version` header from the host''s `protocolVersions[]`. Conformance seams and test-mode operations are not
@@ -58,6 +58,8 @@ tags:
58
58
  description: 'Localized authored content: public delivery and tenant-scoped admin CRUD. Gated on `capabilities.content.supported`.'
59
59
  - name: host
60
60
  description: Host-capability resources, such as the agent workspace file store (gated on `capabilities.workspace.*`).
61
+ - name: connections
62
+ description: 'Connection-pack provider registry: the definitions a host resolves against and the registrations it refused.'
61
63
  paths:
62
64
  /.well-known/openwop:
63
65
  get:
@@ -821,8 +823,8 @@ paths:
821
823
  changed the subscription''s state, the `trigger.subscription-state-changed` payload. A delivery refused by a `required`
822
824
  verification check appears with `reason: "verification_failed"` and no `stateChange`. A record MUST NOT carry the
823
825
  inbound body, the inbound headers, the signature, the signing secret, or any credential. Gated on `triggerBridge.deadLetter`:
824
- a host that does not advertise it answers `404 not_found`. Another tenant''s subscription id answers `404 not_found`,
825
- exactly as an id the host never minted.'
826
+ a host that does not advertise it answers `404 not_found`. A subscription id whose tenant segment is not the caller''s
827
+ is refused `403 id_tenant_mismatch` (`identity.md` §5); an id the host never minted answers `404 not_found`.'
826
828
  operationId: listTriggerDeadLetters
827
829
  security:
828
830
  - ApiKeyAuth:
@@ -3318,6 +3320,92 @@ paths:
3318
3320
  - webhooks:manage
3319
3321
  - OpenIdConnect:
3320
3322
  - webhooks:manage
3323
+ /connection-providers:
3324
+ get:
3325
+ tags:
3326
+ - connections
3327
+ operationId: listConnectionProviders
3328
+ summary: List the host's connection providers and refused pack registrations
3329
+ description: 'Every provider definition the host resolves against, built-ins included, each bare id once, and the pack
3330
+ registrations it refused under `connection-packs.md` §Provider identity. Host-global: no tenant data. Gated on `connections.providerRead`:
3331
+ a host that does not advertise it answers `404 not_found`.'
3332
+ responses:
3333
+ '200':
3334
+ description: The registry.
3335
+ content:
3336
+ application/json:
3337
+ schema:
3338
+ $ref: ../../schemas/v2/connection-provider-registry.schema.json
3339
+ headers:
3340
+ OpenWOP-Version:
3341
+ $ref: '#/components/headers/OpenWOPVersion'
3342
+ '401':
3343
+ $ref: '#/components/responses/Unauthenticated'
3344
+ '403':
3345
+ $ref: '#/components/responses/Forbidden'
3346
+ '404':
3347
+ $ref: '#/components/responses/NotFound'
3348
+ parameters:
3349
+ - $ref: '#/components/parameters/OpenWOPVersion'
3350
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3351
+ security:
3352
+ - ApiKeyAuth:
3353
+ - manifest:read
3354
+ - OAuth2:
3355
+ - manifest:read
3356
+ - OpenIdConnect:
3357
+ - manifest:read
3358
+ /connection-providers/{providerId}:
3359
+ get:
3360
+ tags:
3361
+ - connections
3362
+ operationId: resolveConnectionProvider
3363
+ summary: Resolve one connection provider reference
3364
+ description: 'Resolves a bare provider id, or with `pack` the qualified form `<packName>#<providerId>`, to the one definition
3365
+ it names. A bare id resolves only when exactly one definition exists; with `pack` it resolves only to that pack''s
3366
+ definition. Not resolvable: `404` `connection_provider_unresolved`. Gated on `connections.providerRead`.'
3367
+ parameters:
3368
+ - name: providerId
3369
+ in: path
3370
+ required: true
3371
+ schema:
3372
+ type: string
3373
+ minLength: 1
3374
+ maxLength: 128
3375
+ description: The bare provider id.
3376
+ - name: pack
3377
+ in: query
3378
+ required: false
3379
+ schema:
3380
+ type: string
3381
+ minLength: 1
3382
+ maxLength: 214
3383
+ description: 'A pack name: the qualified form, carried as a query parameter so no `#` travels in the path.'
3384
+ - $ref: '#/components/parameters/OpenWOPVersion'
3385
+ - $ref: '#/components/parameters/OpenWOPClientVersion'
3386
+ responses:
3387
+ '200':
3388
+ description: The resolved definition.
3389
+ content:
3390
+ application/json:
3391
+ schema:
3392
+ $ref: ../../schemas/v2/connection-provider-registry.schema.json#/$defs/provider
3393
+ headers:
3394
+ OpenWOP-Version:
3395
+ $ref: '#/components/headers/OpenWOPVersion'
3396
+ '401':
3397
+ $ref: '#/components/responses/Unauthenticated'
3398
+ '403':
3399
+ $ref: '#/components/responses/Forbidden'
3400
+ '404':
3401
+ $ref: '#/components/responses/NotFound'
3402
+ security:
3403
+ - ApiKeyAuth:
3404
+ - manifest:read
3405
+ - OAuth2:
3406
+ - manifest:read
3407
+ - OpenIdConnect:
3408
+ - manifest:read
3321
3409
  /host/events:
3322
3410
  get:
3323
3411
  tags:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/spec-artifacts",
3
- "version": "2.45.10",
3
+ "version": "2.45.12",
4
4
  "description": "The OpenWOP machine-readable contract: api/ (OpenAPI, AsyncAPI, the seams profile), schemas/ (v1 and v2 JSON Schemas), the spec/v1 and spec/v2 registries (errors, event codemap, declaration, deprecations, migrations, gaps) and CORPUS-STAMP.json — published from the openwop/openwop corpus tag; the peer dependency @openwop/openwop-conformance digest-checks at start (RFC 0168 §D.2).",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1350,6 +1350,10 @@
1350
1350
  "packsSupported": {
1351
1351
  "type": "boolean",
1352
1352
  "description": "RFC 0095 §C. When `true`, the host installs `kind: \"connection\"` registry packs and MUST implement the §B.6 resolution contract: an RFC 0045 connector's `auth.provider` (or an RFC 0047 `host.oauth` provider string) resolves against the installed connection pack whose `provider.id` matches, with installed-vs-built-in precedence per SemVer §11 and `connection_provider_unresolved` / `connection_provider_conflict` diagnostics. When `false` or absent, connection packs are not loaded and provider resolution stays implementation-defined."
1353
+ },
1354
+ "providerRead": {
1355
+ "type": "boolean",
1356
+ "description": "RFC 0233 §A — `true` means the host serves `GET /connection-providers` and `GET /connection-providers/{providerId}`: its provider registry, the registrations it refused, and resolution of one reference (`connection-packs.md` §Observation). Advertised only with `packsSupported: true`."
1353
1357
  }
1354
1358
  },
1355
1359
  "allOf": [
@@ -1388,7 +1392,7 @@
1388
1392
  }
1389
1393
  ],
1390
1394
  "description": "core/capabilities.md#connections — witness: witnessable-gated; maturity experimental/none; RFC 0095",
1391
- "x-openwop-seeded-from": "v1"
1395
+ "x-openwop-facets-from": "spec/v2/facets/connections.schema.json"
1392
1396
  },
1393
1397
  "selfHostedRunner": {
1394
1398
  "type": "object",
@@ -0,0 +1,174 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openwop.dev/spec/v2/connection-provider-registry.schema.json",
4
+ "title": "ConnectionProviderRegistry",
5
+ "description": "RFC 0233 §B — the answer to `listConnectionProviders`: every provider definition the host resolves against, and the pack registrations it refused under `connection-packs.md` §Provider identity. Host-global: it carries no tenant data. Content-free: ids, pack names and codes only, never an endpoint URL, a scope catalog or credential material.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "providers",
10
+ "refusals"
11
+ ],
12
+ "properties": {
13
+ "providers": {
14
+ "type": "array",
15
+ "description": "Every definition the host resolves against, built-ins included. A bare `id` appears at most once (§Provider identity).",
16
+ "items": {
17
+ "$ref": "#/$defs/provider"
18
+ }
19
+ },
20
+ "refusals": {
21
+ "type": "array",
22
+ "description": "Pack registrations the host refused under §Provider identity, as attempted by the serving process. A host MAY recompute this at every start.",
23
+ "items": {
24
+ "$ref": "#/$defs/refusal"
25
+ }
26
+ }
27
+ },
28
+ "$defs": {
29
+ "provider": {
30
+ "type": "object",
31
+ "additionalProperties": false,
32
+ "required": [
33
+ "id",
34
+ "source"
35
+ ],
36
+ "description": "One provider definition. Also the answer to `resolveConnectionProvider`.",
37
+ "properties": {
38
+ "id": {
39
+ "type": "string",
40
+ "minLength": 1,
41
+ "maxLength": 128,
42
+ "description": "The bare provider id."
43
+ },
44
+ "source": {
45
+ "type": "string",
46
+ "enum": [
47
+ "builtin",
48
+ "pack"
49
+ ],
50
+ "description": "`builtin`: the host's own definition. `pack`: an installed connection pack's."
51
+ },
52
+ "packName": {
53
+ "type": "string",
54
+ "minLength": 1,
55
+ "maxLength": 214,
56
+ "description": "The installed pack that defines it. Present exactly when `source` is `pack`."
57
+ }
58
+ },
59
+ "allOf": [
60
+ {
61
+ "if": {
62
+ "properties": {
63
+ "source": {
64
+ "const": "pack"
65
+ }
66
+ },
67
+ "required": [
68
+ "source"
69
+ ]
70
+ },
71
+ "then": {
72
+ "required": [
73
+ "packName"
74
+ ]
75
+ },
76
+ "else": {
77
+ "not": {
78
+ "required": [
79
+ "packName"
80
+ ]
81
+ }
82
+ }
83
+ }
84
+ ]
85
+ },
86
+ "refusal": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": [
90
+ "packName",
91
+ "providerId",
92
+ "code"
93
+ ],
94
+ "description": "One refused pack registration.",
95
+ "properties": {
96
+ "packName": {
97
+ "type": "string",
98
+ "minLength": 1,
99
+ "maxLength": 214,
100
+ "description": "The pack whose registration was refused."
101
+ },
102
+ "providerId": {
103
+ "type": "string",
104
+ "minLength": 1,
105
+ "maxLength": 128,
106
+ "description": "The bare provider id it claimed or referenced."
107
+ },
108
+ "code": {
109
+ "type": "string",
110
+ "enum": [
111
+ "connection_provider_conflict",
112
+ "connection_provider_unresolved"
113
+ ],
114
+ "description": "Why it was refused (`spec/v2/errors.json`)."
115
+ },
116
+ "heldBy": {
117
+ "type": "string",
118
+ "minLength": 1,
119
+ "maxLength": 214,
120
+ "description": "For a conflict: the `packName` that holds the id, or `builtin`."
121
+ }
122
+ },
123
+ "allOf": [
124
+ {
125
+ "if": {
126
+ "properties": {
127
+ "code": {
128
+ "const": "connection_provider_conflict"
129
+ }
130
+ },
131
+ "required": [
132
+ "code"
133
+ ]
134
+ },
135
+ "then": {
136
+ "required": [
137
+ "heldBy"
138
+ ]
139
+ },
140
+ "else": {
141
+ "not": {
142
+ "required": [
143
+ "heldBy"
144
+ ]
145
+ }
146
+ }
147
+ }
148
+ ]
149
+ }
150
+ },
151
+ "examples": [
152
+ {
153
+ "providers": [
154
+ {
155
+ "id": "github",
156
+ "source": "builtin"
157
+ },
158
+ {
159
+ "id": "acme-widgets",
160
+ "source": "pack",
161
+ "packName": "core.openwop.connections.acme-widgets"
162
+ }
163
+ ],
164
+ "refusals": [
165
+ {
166
+ "packName": "core.openwop.connections.acme-widgets-rival",
167
+ "providerId": "acme-widgets",
168
+ "code": "connection_provider_conflict",
169
+ "heldBy": "core.openwop.connections.acme-widgets"
170
+ }
171
+ ]
172
+ }
173
+ ]
174
+ }
@@ -4,7 +4,7 @@
4
4
  "provenance": {
5
5
  "suite": {
6
6
  "package": "@openwop/openwop-conformance",
7
- "version": "2.45.10"
7
+ "version": "2.45.12"
8
8
  },
9
9
  "note": "Derived from the corpus at generation time. Regenerate with --write; verify with --check."
10
10
  },
@@ -426,5 +426,5 @@
426
426
  "$id": "https://openwop.dev/spec/v1/workspace-file.schema.json"
427
427
  }
428
428
  ],
429
- "digest": "177bc294edbc8d2ed1171b26b132cf40e04b53ea1d17238a78e47a46c6d3182a"
429
+ "digest": "74684ec2db01611e6d22eea2fb25821a30338a2a935b549ec4801a65ee9de4ab"
430
430
  }
package/spec/v1/gaps.json CHANGED
@@ -13655,7 +13655,7 @@
13655
13655
  "witness": "unclassified",
13656
13656
  "requirementId": null,
13657
13657
  "disposition": "externally-gated",
13658
- "target": "myndhyve-host-cut",
13658
+ "target": "myndhyve-run-creation-channel-validation",
13659
13659
  "sources": [
13660
13660
  {
13661
13661
  "file": "RFCS/registers/0228-v1-host-service-error-codes.gaps.md",
@@ -13773,8 +13773,8 @@
13773
13773
  "surface": "No scenario drives the normative-surface ingest path yet. `trigger-bridge-delivery.test.ts` still witnesses only through the host seams.",
13774
13774
  "witness": "unclassified",
13775
13775
  "requirementId": null,
13776
- "disposition": "carried",
13777
- "target": "openwop.gap.0230.1",
13776
+ "disposition": "closed",
13777
+ "target": null,
13778
13778
  "sources": [
13779
13779
  {
13780
13780
  "file": "RFCS/registers/0230-inbound-webhook-ingest-contract.gaps.md",
@@ -13790,8 +13790,8 @@
13790
13790
  "surface": "No host advertises `inboundSigning` yet. openwop-app serves an ingest route with a different contract (OpenWOP-credentialed, wrapped body, 200/422).",
13791
13791
  "witness": "unclassified",
13792
13792
  "requirementId": null,
13793
- "disposition": "carried",
13794
- "target": "openwop.gap.0230.2",
13793
+ "disposition": "closed",
13794
+ "target": null,
13795
13795
  "sources": [
13796
13796
  {
13797
13797
  "file": "RFCS/registers/0230-inbound-webhook-ingest-contract.gaps.md",
@@ -13799,6 +13799,23 @@
13799
13799
  }
13800
13800
  ]
13801
13801
  },
13802
+ {
13803
+ "id": "openwop.gap.0230.3",
13804
+ "rfc": "0230",
13805
+ "local": "G3",
13806
+ "section": "§D, Falsifiability",
13807
+ "surface": "`409 subscription_not_active` has no observation path: no wire surface or seam makes a subscription non-active. The table claimed a pause \"via the existing operator surface\"; none exists.",
13808
+ "witness": "unclassified",
13809
+ "requirementId": null,
13810
+ "disposition": "externally-gated",
13811
+ "target": "trigger-subscription-pause-surface",
13812
+ "sources": [
13813
+ {
13814
+ "file": "RFCS/registers/0230-inbound-webhook-ingest-contract.gaps.md",
13815
+ "token": "G3"
13816
+ }
13817
+ ]
13818
+ },
13802
13819
  {
13803
13820
  "id": "openwop.gap.0231.1",
13804
13821
  "rfc": "0231",
@@ -14011,8 +14028,8 @@
14011
14028
  "surface": "`listTriggerDeadLetters` is a new v1 operation, so `openwop-sdks` owes a parity entry. That repository vendors a published corpus tag.",
14012
14029
  "witness": "unclassified",
14013
14030
  "requirementId": null,
14014
- "disposition": "externally-gated",
14015
- "target": "openwop-sdks-revendors-a-tag-carrying-listTriggerDeadLetters",
14031
+ "disposition": "closed",
14032
+ "target": null,
14016
14033
  "sources": [
14017
14034
  {
14018
14035
  "file": "RFCS/registers/0232-trigger-dead-letter-read.gaps.md",
@@ -14028,8 +14045,8 @@
14028
14045
  "surface": "`trigger-bridge.md` §D and `profiles.md` still say the profile needs \"a `deadLetter` sink for exhausted deliveries\". The predicate reads the RFC 0053 run family, which after §D holds no trigger delivery.",
14029
14046
  "witness": "unclassified",
14030
14047
  "requirementId": null,
14031
- "disposition": "transferred",
14032
- "target": "TODO.md",
14048
+ "disposition": "closed",
14049
+ "target": null,
14033
14050
  "sources": [
14034
14051
  {
14035
14052
  "file": "RFCS/registers/0232-trigger-dead-letter-read.gaps.md",
@@ -14037,6 +14054,91 @@
14037
14054
  }
14038
14055
  ]
14039
14056
  },
14057
+ {
14058
+ "id": "openwop.gap.0233.1",
14059
+ "rfc": "0233",
14060
+ "local": "G1",
14061
+ "section": "§B.2",
14062
+ "surface": "Which scope reads the host-global provider registry: none beyond authentication, `packs:read`, or a new `connections:read`. Unresolved question 1.",
14063
+ "witness": "unclassified",
14064
+ "requirementId": null,
14065
+ "disposition": "closed",
14066
+ "target": null,
14067
+ "sources": [
14068
+ {
14069
+ "file": "RFCS/registers/0233-connection-provider-registry-read.gaps.md",
14070
+ "token": "G1"
14071
+ }
14072
+ ]
14073
+ },
14074
+ {
14075
+ "id": "openwop.gap.0233.2",
14076
+ "rfc": "0233",
14077
+ "local": "G2",
14078
+ "section": "§F",
14079
+ "surface": "The disposition for a host with `packsSupported` that serves neither the seams nor `providerRead` plus the fixture: keep `blocked`, or `inapplicable`. Unresolved question 2.",
14080
+ "witness": "unclassified",
14081
+ "requirementId": null,
14082
+ "disposition": "closed",
14083
+ "target": null,
14084
+ "sources": [
14085
+ {
14086
+ "file": "RFCS/registers/0233-connection-provider-registry-read.gaps.md",
14087
+ "token": "G2"
14088
+ }
14089
+ ]
14090
+ },
14091
+ {
14092
+ "id": "openwop.gap.0233.3",
14093
+ "rfc": "0233",
14094
+ "local": "G3",
14095
+ "section": "§B, §C",
14096
+ "surface": "No host serves the reads or installs the fixture pair, so none of the §F rows has a witness.",
14097
+ "witness": "unclassified",
14098
+ "requirementId": null,
14099
+ "disposition": "externally-gated",
14100
+ "target": "openwop-app-serves-provider-registry-read",
14101
+ "sources": [
14102
+ {
14103
+ "file": "RFCS/registers/0233-connection-provider-registry-read.gaps.md",
14104
+ "token": "G3"
14105
+ }
14106
+ ]
14107
+ },
14108
+ {
14109
+ "id": "openwop.gap.0233.4",
14110
+ "rfc": "0233",
14111
+ "local": "G4",
14112
+ "section": "Alternatives",
14113
+ "surface": "A dry-run validate endpoint would let the suite cause a conflict unaided. Unresolved question 3.",
14114
+ "witness": "unclassified",
14115
+ "requirementId": null,
14116
+ "disposition": "externally-gated",
14117
+ "target": "provider-dry-run-validate-rfc",
14118
+ "sources": [
14119
+ {
14120
+ "file": "RFCS/registers/0233-connection-provider-registry-read.gaps.md",
14121
+ "token": "G4"
14122
+ }
14123
+ ]
14124
+ },
14125
+ {
14126
+ "id": "openwop.gap.0233.5",
14127
+ "rfc": "0233",
14128
+ "local": "G5",
14129
+ "section": "§B.5",
14130
+ "surface": "Whether `refusals` covers a connector (not a pack) that references an undefined provider. Unresolved question 4.",
14131
+ "witness": "unclassified",
14132
+ "requirementId": null,
14133
+ "disposition": "closed",
14134
+ "target": null,
14135
+ "sources": [
14136
+ {
14137
+ "file": "RFCS/registers/0233-connection-provider-registry-read.gaps.md",
14138
+ "token": "G5"
14139
+ }
14140
+ ]
14141
+ },
14040
14142
  {
14041
14143
  "id": "openwop.gap.spec.a2a-integration.g1",
14042
14144
  "rfc": "0152",
@@ -31,8 +31,19 @@ A host advertising `connections.packsSupported` MUST resolve a connector's `auth
31
31
  - An unresolvable provider MUST be refused when the dependent connector or pack is registered.
32
32
  - On a publish-path host, resolution MUST run after the idempotency short-circuit: a byte-identical re-publish of an installed pack MUST succeed even when resolution inputs have since changed.
33
33
 
34
+ ## Observation
35
+
36
+ A host advertising `connections.providerRead` MUST serve two reads under `manifest:read` (`schemas/v2/connection-provider-registry.schema.json`). The registry is host-global and carries no tenant data.
37
+
38
+ - `GET /connection-providers` lists every definition, built-ins included, each bare id once, and the pack registrations refused under §Provider identity, with the code and, for a conflict, the holder.
39
+ - `GET /connection-providers/{providerId}` resolves one reference; `?pack=<packName>` is the qualified form. An unresolvable reference answers `404` `connection_provider_unresolved`.
40
+ - A row carries ids, pack names and codes only, never an endpoint, a scope catalog or credential material.
41
+ - Refusals MAY be recomputed at each start.
42
+
43
+ A host advertising `packsSupported` SHOULD advertise `providerRead`.
44
+
34
45
  ## Errors
35
46
 
36
47
  Both codes are in `spec/v2/errors.json`: `connection_provider_conflict` (two claimants for one bare id) and `connection_provider_unresolved` (no definition for the referenced id).
37
48
 
38
- *Sources: RFCs 0095, 0177.*
49
+ *Sources: RFCs 0095, 0177, 0233.*
@@ -16,10 +16,10 @@ Standard headers keep their standard names: `Idempotency-Key`, `ETag`, `If-None-
16
16
  | `Idempotency-Key` | 15 | Per-mutation idempotency token (`idempotency.md` Layer 1). The server caches `(tenantId, endpoint, key)` → response for ≥24h. A duplicate request returns the cached response with `OpenWOP-Idempotent-Replay: true`. |
17
17
  | `If-None-Match` | 2 | Conditional request on the discovery document (capabilities.md §1) and the run snapshot (runs.md §Snapshot). A value matching the `ETag` the host sent MUST yield `304 Not Modified` with no body. The 304 carries `OpenWOP-Version` like every response (versioning.md §1.4). |
18
18
  | `Last-Event-ID` | 1 | Resume from sequence after this ID. |
19
- | `OpenWOP-Client-Version` | 56 | The protocol version the client implements (versioning.md §1.5). Compared with `minClientVersion` on major.minor. A malformed value is treated as absent and MUST NOT produce a 400. Never selects a contract. |
19
+ | `OpenWOP-Client-Version` | 58 | The protocol version the client implements (versioning.md §1.5). Compared with `minClientVersion` on major.minor. A malformed value is treated as absent and MUST NOT produce a 400. Never selects a contract. |
20
20
  | `OpenWOP-Dedup` | 1 | When set, the host's cross-host claim system rejects a duplicate `(tenantId, scopeId)` pair with `409 Conflict`. |
21
21
  | `OpenWOP-Force-Engine-Version` | 1 | Test keys only. The server emits this run's events as if it ran the given engine version, which must be within `Capabilities.testing.forceEngineVersionRange`. Servers MUST reject it on production API keys with `403 force_engine_version_forbidden`. |
22
- | `OpenWOP-Version` | 56 | Selects one of the host's listed major.minor versions. Absent, `/.well-known/openwop` uses `preferredVersion` and every other unversioned path is v2; an unlisted value is 406 protocol_version_unsupported. |
22
+ | `OpenWOP-Version` | 58 | Selects one of the host's listed major.minor versions. Absent, `/.well-known/openwop` uses `preferredVersion` and every other unversioned path is v2; an unlisted value is 406 protocol_version_unsupported. |
23
23
 
24
24
  ## Cross-origin preflight
25
25
 
@@ -35,9 +35,9 @@ A host that answers a CORS preflight for an operation by granting the requesting
35
35
  | `ETag` | 3 | Standard HTTP validator (RFC 9110 §8.8.3). The obligation is per operation: MUST on the discovery document (capabilities.md §1), SHOULD on the run snapshot (runs.md §Snapshot), a content hash on a prompt template (getPromptTemplate); see each operation. |
36
36
  | `Location` | 1 | Canonical URI of the new template. |
37
37
  | `OpenWOP-Idempotent-Replay` | 1 | Set when the response was served from the idempotency cache. |
38
- | `OpenWOP-Version` | 56 | The contract that produced this response. It MUST equal the one used. |
38
+ | `OpenWOP-Version` | 58 | The contract that produced this response. It MUST equal the one used. |
39
39
  | `Retry-After` | 1 | Seconds until the active claim is stale-eligible. |
40
- | `WWW-Authenticate` | 49 | A `Bearer` challenge. On a host with an oauth2 or oidc lane it carries `resource_metadata` and `error="invalid_token"`. Never sent on a non-disclosure 404. |
40
+ | `WWW-Authenticate` | 51 | A `Bearer` challenge. On a host with an oauth2 or oidc lane it carries `resource_metadata` and `error="invalid_token"`. Never sent on a non-disclosure 404. |
41
41
 
42
42
  ## Webhook delivery headers
43
43
 
@@ -182,6 +182,7 @@ Every vendor namespace — capability records ([capabilities.md](capabilities.md
182
182
  - An org MUST NOT be named after a manifest segment under `/host/` (`reservedOrgs`).
183
183
  - A host SHOULD advertise the mount under `extensions.<org>.<name>`.
184
184
  - A `/v1/host/<org>/…` twin MAY ride the overlap; it retires atomically with `/v1`.
185
+ - After retirement a host MUST NOT serve an operation at the twin. It MAY answer a `GET` or `HEAD` there with `308`, no body, and `Location` set to the same `/host/<org>/…` path.
185
186
 
186
187
  ## 6. Migration rows
187
188
 
@@ -380,11 +380,13 @@
380
380
  "adoption": "none"
381
381
  },
382
382
  "facets": [
383
- "packsSupported"
383
+ "packsSupported",
384
+ "providerRead"
384
385
  ],
385
386
  "floorScenarios": [],
386
387
  "requirementIds": [],
387
388
  "owningRfc": "0095",
389
+ "facetsFrom": "spec/v2/facets/connections.schema.json",
388
390
  "normativeText": [
389
391
  "spec/v2/core/connection-packs.md"
390
392
  ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "$comment": "RFC 0095 + RFC 0233 — the connections family's facets. packsSupported is carried unchanged from the v1 seed; providerRead is v2-only (RFC 0233).",
3
+ "properties": {
4
+ "packsSupported": {
5
+ "type": "boolean",
6
+ "description": "RFC 0095 §C. When `true`, the host installs `kind: \"connection\"` registry packs and MUST implement the §B.6 resolution contract: an RFC 0045 connector's `auth.provider` (or an RFC 0047 `host.oauth` provider string) resolves against the installed connection pack whose `provider.id` matches, with installed-vs-built-in precedence per SemVer §11 and `connection_provider_unresolved` / `connection_provider_conflict` diagnostics. When `false` or absent, connection packs are not loaded and provider resolution stays implementation-defined."
7
+ },
8
+ "providerRead": {
9
+ "type": "boolean",
10
+ "description": "RFC 0233 §A — `true` means the host serves `GET /connection-providers` and `GET /connection-providers/{providerId}`: its provider registry, the registrations it refused, and resolution of one reference (`connection-packs.md` §Observation). Advertised only with `packsSupported: true`."
11
+ }
12
+ },
13
+ "required": [
14
+ "packsSupported"
15
+ ]
16
+ }
@@ -89,6 +89,7 @@
89
89
  "pageId": "no openwop id kind governs this surface; the grammar is the owning schema's own",
90
90
  "parentDepartmentId": "no openwop id kind governs this surface; the grammar is the owning schema's own",
91
91
  "proposalId": "no openwop id kind governs this surface; the grammar is the owning schema's own",
92
+ "providerId": "a connection provider id is author-minted in a pack manifest and host-global (connection-packs.md §Provider identity); no openwop id kind governs it",
92
93
  "roleId": "no openwop id kind governs this surface; the grammar is the owning schema's own",
93
94
  "rosterId": "no openwop id kind governs this surface; the grammar is the owning schema's own",
94
95
  "runnerId": "no openwop id kind governs this surface; the grammar is the owning schema's own",
@@ -118,6 +118,28 @@
118
118
  "authenticated": true,
119
119
  "requestBody": false
120
120
  },
121
+ {
122
+ "method": "GET",
123
+ "path": "/connection-providers",
124
+ "operationId": "listConnectionProviders",
125
+ "requestHeaders": [
126
+ "OpenWOP-Client-Version",
127
+ "OpenWOP-Version"
128
+ ],
129
+ "authenticated": true,
130
+ "requestBody": false
131
+ },
132
+ {
133
+ "method": "GET",
134
+ "path": "/connection-providers/{providerId}",
135
+ "operationId": "resolveConnectionProvider",
136
+ "requestHeaders": [
137
+ "OpenWOP-Client-Version",
138
+ "OpenWOP-Version"
139
+ ],
140
+ "authenticated": true,
141
+ "requestBody": false
142
+ },
121
143
  {
122
144
  "method": "GET",
123
145
  "path": "/content/pages",
@@ -655,7 +677,7 @@
655
677
  }
656
678
  ],
657
679
  "counts": {
658
- "operations": 56,
680
+ "operations": 58,
659
681
  "channels": 2
660
682
  }
661
683
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "RFC 0172 §D.1 — the one release identity the v2 artifacts derive from. `version` is the next corpus tag `v<version>` (the publish workflow's coordinated-release tag pattern `v*`; RFC 0172's `openwop/v2.<minor>.<patch>` spelling is amended to this at its flip). api/v2/*.yaml info.version, the suite's 2.x version and @openwop/spec-artifacts read it. Bumped by the release PR that cuts the tag, never by hand elsewhere.",
3
- "version": "2.45.10",
4
- "corpusTag": "v2.45.10",
3
+ "version": "2.45.12",
4
+ "corpusTag": "v2.45.12",
5
5
  "updated": "2026-10-03"
6
6
  }
@@ -4,7 +4,7 @@
4
4
  "schemas/v2/**/*.json",
5
5
  "spec/v2/path-manifest.json"
6
6
  ],
7
- "release": "2.45.10",
7
+ "release": "2.45.12",
8
8
  "kinds": {
9
9
  "union": [
10
10
  "channel",
@@ -18,7 +18,7 @@
18
18
  "type"
19
19
  ]
20
20
  },
21
- "count": 8647,
21
+ "count": 8688,
22
22
  "surfaces": [
23
23
  "schemas/v2/a2a-task-state.schema.json#/contextId|type|string",
24
24
  "schemas/v2/a2a-task-state.schema.json#/interruptKind|enum-member|\"approval\"",
@@ -1571,6 +1571,7 @@
1571
1571
  "schemas/v2/capabilities.schema.json#/conformance|property|seamsProfile",
1572
1572
  "schemas/v2/capabilities.schema.json#/conformance|type|object",
1573
1573
  "schemas/v2/capabilities.schema.json#/connections/packsSupported|type|boolean",
1574
+ "schemas/v2/capabilities.schema.json#/connections/providerRead|type|boolean",
1574
1575
  "schemas/v2/capabilities.schema.json#/connections/since|type|string",
1575
1576
  "schemas/v2/capabilities.schema.json#/connections/status|enum-member|\"deprecated\"",
1576
1577
  "schemas/v2/capabilities.schema.json#/connections/status|enum-member|\"experimental\"",
@@ -1583,6 +1584,7 @@
1583
1584
  "schemas/v2/capabilities.schema.json#/connections/witness|enum-member|\"witnessable-unaided\"",
1584
1585
  "schemas/v2/capabilities.schema.json#/connections|closed|true",
1585
1586
  "schemas/v2/capabilities.schema.json#/connections|property|packsSupported",
1587
+ "schemas/v2/capabilities.schema.json#/connections|property|providerRead",
1586
1588
  "schemas/v2/capabilities.schema.json#/connections|property|since",
1587
1589
  "schemas/v2/capabilities.schema.json#/connections|property|status",
1588
1590
  "schemas/v2/capabilities.schema.json#/connections|property|until",
@@ -4478,6 +4480,43 @@
4478
4480
  "schemas/v2/connection-pack-manifest.schema.json#|required|provider",
4479
4481
  "schemas/v2/connection-pack-manifest.schema.json#|required|version",
4480
4482
  "schemas/v2/connection-pack-manifest.schema.json#|type|object",
4483
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]/id|type|string",
4484
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]/packName|type|string",
4485
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]/source|enum-member|\"builtin\"",
4486
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]/source|enum-member|\"pack\"",
4487
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]/source|type|string",
4488
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|closed|true",
4489
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|property|id",
4490
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|property|packName",
4491
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|property|source",
4492
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|required|id",
4493
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|required|packName",
4494
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|required|source",
4495
+ "schemas/v2/connection-provider-registry.schema.json#/providers/[]|type|object",
4496
+ "schemas/v2/connection-provider-registry.schema.json#/providers|type|array",
4497
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]/code|enum-member|\"connection_provider_conflict\"",
4498
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]/code|enum-member|\"connection_provider_unresolved\"",
4499
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]/code|type|string",
4500
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]/heldBy|type|string",
4501
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]/packName|type|string",
4502
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]/providerId|type|string",
4503
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|closed|true",
4504
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|property|code",
4505
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|property|heldBy",
4506
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|property|packName",
4507
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|property|providerId",
4508
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|required|code",
4509
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|required|heldBy",
4510
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|required|packName",
4511
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|required|providerId",
4512
+ "schemas/v2/connection-provider-registry.schema.json#/refusals/[]|type|object",
4513
+ "schemas/v2/connection-provider-registry.schema.json#/refusals|type|array",
4514
+ "schemas/v2/connection-provider-registry.schema.json#|closed|true",
4515
+ "schemas/v2/connection-provider-registry.schema.json#|property|providers",
4516
+ "schemas/v2/connection-provider-registry.schema.json#|property|refusals",
4517
+ "schemas/v2/connection-provider-registry.schema.json#|required|providers",
4518
+ "schemas/v2/connection-provider-registry.schema.json#|required|refusals",
4519
+ "schemas/v2/connection-provider-registry.schema.json#|type|object",
4481
4520
  "schemas/v2/conversation-event.schema.json#/capabilities/[]|enum-member|\"multi-turn\"",
4482
4521
  "schemas/v2/conversation-event.schema.json#/capabilities/[]|enum-member|\"streaming\"",
4483
4522
  "schemas/v2/conversation-event.schema.json#/capabilities/[]|type|string",
@@ -8623,6 +8662,8 @@
8623
8662
  "spec/v2/path-manifest.json#|operation|GET /agents/{agentId}",
8624
8663
  "spec/v2/path-manifest.json#|operation|GET /agents/{agentId}/deployments",
8625
8664
  "spec/v2/path-manifest.json#|operation|GET /audit/verify",
8665
+ "spec/v2/path-manifest.json#|operation|GET /connection-providers",
8666
+ "spec/v2/path-manifest.json#|operation|GET /connection-providers/{providerId}",
8626
8667
  "spec/v2/path-manifest.json#|operation|GET /content/pages",
8627
8668
  "spec/v2/path-manifest.json#|operation|GET /content/pages/{slug}",
8628
8669
  "spec/v2/path-manifest.json#|operation|GET /content/settings",