@openwop/spec-artifacts 2.46.17 → 2.46.19
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 +14 -14
- package/api/seams-v2.yaml +1 -1
- package/api/v2/asyncapi.yaml +1 -1
- package/api/v2/openapi.yaml +1 -1
- package/package.json +1 -1
- package/schemas/v2/capabilities.schema.json +15 -0
- package/spec/v1/core-standard-manifest.json +2 -2
- package/spec/v1/gaps.json +1 -1
- package/spec/v2/core/host-services.md +5 -4
- package/spec/v2/declaration.json +2 -1
- package/spec/v2/facets/aiProviders.schema.json +15 -0
- package/spec/v2/release.json +3 -3
- package/spec/v2/surface-baseline.json +9 -2
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.46.
|
|
5
|
-
"corpusTag": "v2.46.
|
|
4
|
+
"version": "2.46.19",
|
|
5
|
+
"corpusTag": "v2.46.19",
|
|
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": "
|
|
13
|
-
"api/v2/asyncapi.yaml": "
|
|
14
|
-
"api/v2/openapi.yaml": "
|
|
12
|
+
"api/seams-v2.yaml": "9133614d3cad4ff6ecf2758f2f986dfd257dc5a3a2b10110e7537114a2c03a65",
|
|
13
|
+
"api/v2/asyncapi.yaml": "5e44771306b5dfa1824967a177208228d12dca66a36c10de5bb0441b8bd26c72",
|
|
14
|
+
"api/v2/openapi.yaml": "2f7e4863b8ba09d77e5ae8a7c977311b6138878ba910d7a41d50546034cad7c2",
|
|
15
15
|
"api/v2/redocly.yaml": "1e66b60e6118ad11a823bb620678be464d99dfe50a40e3e6f93ec9429b88b34c",
|
|
16
16
|
"schemas/README.md": "276fc1d51eb08e14e9127b9fd27761d7046ee33c12000f3a64a801322db8bf58",
|
|
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": "
|
|
120
|
+
"schemas/v2/capabilities.schema.json": "fe28a95bc36767b99cdf529fe7db47dce49c49c5635a724e552c728871c48b06",
|
|
121
121
|
"schemas/v2/certification-bundle.schema.json": "5cfa7fb5247160333e33a58b60d42bcd4e5269d8391d6a112d301e14828892ed",
|
|
122
122
|
"schemas/v2/channel-presence-payload.schema.json": "fc03df0c20cc12a25f7ee6a47503a4c5931d79fe3d5ff24815e8fd7c1bcb9a87",
|
|
123
123
|
"schemas/v2/channel-written-payload.schema.json": "ccecff3c71a3275ad8db035ac0e04db25e6f8d23cf091ddbcd5a60d1be1cbb6b",
|
|
@@ -208,14 +208,14 @@
|
|
|
208
208
|
"schemas/workspace-file.schema.json": "464de85c2a068243084ee9c1d969bc7cd5d8f7948574e58450d6493c38a0e1e4",
|
|
209
209
|
"spec/v1/alias-detectors.json": "22444c22bb88c568339ef512553f9fc38146e22b566d11ab8608f655d688d19c",
|
|
210
210
|
"spec/v1/capability-declaration-classes.json": "e7729aed5c4b4e1dd02abab0530f14cc95f5d4070fe51fb139e7f5cccefa00c6",
|
|
211
|
-
"spec/v1/core-standard-manifest.json": "
|
|
211
|
+
"spec/v1/core-standard-manifest.json": "6b5a2e873b59e22f27bd9832559382a42ad23e29cac8f9156d592bb19e168fb1",
|
|
212
212
|
"spec/v1/deprecations.json": "e723bc11d7272c71789ad1303bb7f21809a8a024abf57594f9d5c35dc199ece9",
|
|
213
213
|
"spec/v1/deprecations.schema.json": "3e393c405d2a41b467d8c5e3c468549078df1ce6a6d2588fc488097b95d9b55b",
|
|
214
214
|
"spec/v1/end-of-support.json": "35f0bf3b70fe78b16e2a2fd81a153fc27e703f6c16376c6fe7cdf1f4f2c4e6d4",
|
|
215
215
|
"spec/v1/event-codemap.json": "3da60d884157793a360da532a9fcbbfb5285636db325a74cec94b34622186d97",
|
|
216
216
|
"spec/v1/event-codemap.schema.json": "d05933b2e88103aff51a2f774df97b9bda065e0fc88dbd9b114cc47a32189174",
|
|
217
217
|
"spec/v1/extensions.json": "79a60754aa16cbdbdb604f8e5c00038af535a1690a4d07bd5ff7c38f0256a7bc",
|
|
218
|
-
"spec/v1/gaps.json": "
|
|
218
|
+
"spec/v1/gaps.json": "52777098a223e678d12751507b1ac0d02eef7465d6263c25175489734055cc3e",
|
|
219
219
|
"spec/v1/gaps.schema.json": "8fd83259f556553c9df0f53e7a82ca8c2a4771d471197f69b4e2ae0ceeacfd66",
|
|
220
220
|
"spec/v1/migrations.json": "4c50760be70cb644d02427bcaf5749606700edf4513f423903cf3b1d12f5c300",
|
|
221
221
|
"spec/v1/migrations.schema.json": "886779aa6c22e646db097f5df210adb018a4dd14a7b815465a18c8a7056c8f72",
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
"spec/v2/core/execution.md": "4218dbb397534940f83ca5d46561f02bf8f3fdf68d2ae7fefe7f2eb2ed771103",
|
|
233
233
|
"spec/v2/core/form-content-packs.md": "02931227899676fd4581a27017be2a6c4953904717be9b81c29d12f87ab3917d",
|
|
234
234
|
"spec/v2/core/headers.md": "f69fe81e4a3ad21879bb85948660c16860eb05bf152928c31aa4898f6d7d1887",
|
|
235
|
-
"spec/v2/core/host-services.md": "
|
|
235
|
+
"spec/v2/core/host-services.md": "a6b5af882cb1e5c992dddc53c4de06feb36eee01bd566614330041213b3ce657",
|
|
236
236
|
"spec/v2/core/i18n.md": "882904b7d59f992ab1e5f7346167161a54cf665b8fee47e64a3862cf9133a580",
|
|
237
237
|
"spec/v2/core/idempotency.md": "adbd317a6ebb57c2759c076297b31f67def9e391576bccd0bbea787b13e85872",
|
|
238
238
|
"spec/v2/core/identity.md": "d0e3d388484507dd6260601ebf8dd1447b0b0f26ce2fe76c8a5d49e61387cffd",
|
|
@@ -254,7 +254,7 @@
|
|
|
254
254
|
"spec/v2/core/workflow-chain-packs.md": "fdce7a8477e269950a2bac05ee6eddbd66eb0b670b464d00054f7196ec05d29c",
|
|
255
255
|
"spec/v2/corrections.json": "3a8d93e33865b692d26a3b6bfd3819766e206b2e0c2a69669baa4bf833d05a49",
|
|
256
256
|
"spec/v2/corrections.schema.json": "46bbffb954d13bd9995aebc912ceeb2544f7064331abf25fd6ab85c81a5cec94",
|
|
257
|
-
"spec/v2/declaration.json": "
|
|
257
|
+
"spec/v2/declaration.json": "5ccdcf9865ca02022c01a551583e1f343a4b7c73fd228049f1be620858a60ad5",
|
|
258
258
|
"spec/v2/declaration.schema.json": "ef951633e4070899f64828f5cf1b5f4870270a0360f81dbb49b5b4d6cd407550",
|
|
259
259
|
"spec/v2/eos-override.json": "4c72d2f6a658943b01c1de1643cf294642091933af7832f38ee5495df684cb2d",
|
|
260
260
|
"spec/v2/errors.json": "1f0e29455edbd22e28f67f221766209c3c55ac4987beb77993b5702dd7cae131",
|
|
@@ -282,7 +282,7 @@
|
|
|
282
282
|
"spec/v2/ext/webResearch/README.md": "b675e6f6646128d781b661f754c2393eed86e5935d16c3a22df582a5ce025b9b",
|
|
283
283
|
"spec/v2/facets/a2a.schema.json": "b68bf5e29e455e46c2ad7cfcccf5963730ec2310ff9db81884550d8df30fd6ef",
|
|
284
284
|
"spec/v2/facets/agents.schema.json": "88fe144572c25e1b09b99fd83e2ad12b2611d4d7366b5d53c3a50d0310faad93",
|
|
285
|
-
"spec/v2/facets/aiProviders.schema.json": "
|
|
285
|
+
"spec/v2/facets/aiProviders.schema.json": "6e4327bcd48110686cc1adfd26ddd6fbbf4ff529c476dcc74eeff8c5ae9965ce",
|
|
286
286
|
"spec/v2/facets/auditLogIntegrity.schema.json": "9a7f81320c8f940c6f4129bc7dd895a4063231c5458a717a08c2cbf9bb886c46",
|
|
287
287
|
"spec/v2/facets/auth.schema.json": "7d98bc81a0f7d307460d039eebfebd21388091bfe1d538762583940f94c0bd2a",
|
|
288
288
|
"spec/v2/facets/connections.schema.json": "f998bb206a5814183bb4720cc34fa43b7ab64d61e39a79437b009c589ce8b78e",
|
|
@@ -314,9 +314,9 @@
|
|
|
314
314
|
"spec/v2/path-manifest.json": "7b5679a4dad98c80d855361d88a98c8a4e045af15e310862a05b285b815dc9fc",
|
|
315
315
|
"spec/v2/peer-dependency-aliases.json": "d10299280abee08258502925bc327293ee413e0108cd6e6ec75ff6110653308d",
|
|
316
316
|
"spec/v2/profiles.json": "b382b261c7844798575f7c1b37c934f0da19846016a2337d883d4f5ef6e05479",
|
|
317
|
-
"spec/v2/release.json": "
|
|
317
|
+
"spec/v2/release.json": "9870141128549af0cac3a0e7c4906c87a5ce65047591a3824690b9e20dcf59c1",
|
|
318
318
|
"spec/v2/retention-floors.json": "eaf3722d95c79947af1d4269ef85117e126518c588cfcf1a2b21b97269f51624",
|
|
319
|
-
"spec/v2/surface-baseline.json": "
|
|
319
|
+
"spec/v2/surface-baseline.json": "5ba73afbabe33b983c3ac74670a6aacfe32042a0d40de2faf6cdb151b055a1ae"
|
|
320
320
|
},
|
|
321
|
-
"corpusCommit": "
|
|
321
|
+
"corpusCommit": "d49a2818d766f78f7c3fc9d55403ed42a404ba71"
|
|
322
322
|
}
|
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.46.
|
|
4
|
+
version: 2.46.19
|
|
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.
|
package/api/v2/asyncapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
asyncapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: OpenWOP v2 event streams
|
|
4
|
-
version: 2.46.
|
|
4
|
+
version: 2.46.19
|
|
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`.
|
package/api/v2/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: OpenWOP v2 API
|
|
4
|
-
version: 2.46.
|
|
4
|
+
version: 2.46.19
|
|
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openwop/spec-artifacts",
|
|
3
|
-
"version": "2.46.
|
|
3
|
+
"version": "2.46.19",
|
|
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": {
|
|
@@ -3076,6 +3076,21 @@
|
|
|
3076
3076
|
"description": "Optional host cap on a single inline (`data`) or `mediaRef` part."
|
|
3077
3077
|
}
|
|
3078
3078
|
}
|
|
3079
|
+
},
|
|
3080
|
+
"callAccounting": {
|
|
3081
|
+
"type": "object",
|
|
3082
|
+
"description": "RFC 0248. Each flag is independent; a pack MUST NOT rely on `attempts` or `retry` unless its flag is `true`.",
|
|
3083
|
+
"properties": {
|
|
3084
|
+
"attempts": {
|
|
3085
|
+
"type": "boolean",
|
|
3086
|
+
"description": "RFC 0248 §A — every `ctx.callAI` result carries `attempts { count, outputTokens?, usageComplete, structuredOutput? }`. `count` MUST equal the provider requests the call made, retries and a natural-language fallback included (a request refused before reaching the provider is not one). `outputTokens` MUST be the sum each attempt's provider reported; when any attempt reported none, `usageComplete` MUST be `false`. `structuredOutput` is present only when `responseSchema` was supplied: `native` when the final attempt used the provider's own structured-output mechanism, `prompt` when it used a prompt-embedded schema. `usage` keeps describing the attempt whose output the result carries. On replay `attempts` MUST equal the recorded value. A call that throws carries no result."
|
|
3087
|
+
},
|
|
3088
|
+
"retryPolicy": {
|
|
3089
|
+
"type": "boolean",
|
|
3090
|
+
"description": "RFC 0248 §B — `ctx.callAI` honours an optional request `retry { maxAttempts?: 1..16, growMaxTokens?: boolean (default true) }`. The host MUST NOT send more than `maxAttempts` provider requests for the call (above its own ceiling it clamps, never refuses). With `growMaxTokens: false` no attempt's `maxTokens` MAY exceed the request's (or the host default when the request names none). RFC 0032 events still fire, and a refusal is still never retried. A malformed `retry` (a non-integer, or out of range) MUST be refused with `validation_error` and `details.field` naming the key, never ignored."
|
|
3091
|
+
}
|
|
3092
|
+
},
|
|
3093
|
+
"additionalProperties": false
|
|
3079
3094
|
}
|
|
3080
3095
|
},
|
|
3081
3096
|
"allOf": [
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"provenance": {
|
|
5
5
|
"suite": {
|
|
6
6
|
"package": "@openwop/openwop-conformance",
|
|
7
|
-
"version": "2.46.
|
|
7
|
+
"version": "2.46.19"
|
|
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": "
|
|
429
|
+
"digest": "60f722de8229e71b4a2741f09100851d89fcab9157287cb39646a4a5e7dd53c8"
|
|
430
430
|
}
|
package/spec/v1/gaps.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
## Why this exists
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Node packs call advertised `host.*` services through `ctx`. Each section states the contract a host accepts by advertising that family.
|
|
9
9
|
|
|
10
10
|
## `aiEnvelope`
|
|
11
11
|
|
|
@@ -54,13 +54,14 @@ When every layer is null, the node fails only if its node type says so. A host h
|
|
|
54
54
|
|
|
55
55
|
## `aiProviders`
|
|
56
56
|
|
|
57
|
-
A host advertising `aiProviders` MUST expose `ctx.callAI`. A `provider` that a `ctx` call names MUST be in `providers`; `byok
|
|
57
|
+
A host advertising `aiProviders` MUST expose `ctx.callAI`. A `provider` that a `ctx` call names MUST be in `providers`; `byok`: [runs.md](runs.md) §`ai`.
|
|
58
58
|
|
|
59
59
|
- A part whose modality is absent from `input` MUST be rejected with `capability_not_provided`, never dropped. Non-text input is untrusted.
|
|
60
60
|
- A `media.*` envelope inlines base64 only up to `maxInlineMediaBytes` (default 256 KiB); above that the host MUST use a `url`.
|
|
61
61
|
- `imageGeneration`, `videoGeneration` and `speechSynthesis` add `ctx.callImageGenerator`, `callVideoGenerator` and `callSpeechSynthesizer`; `realtimeVoice` adds `callTranscriber` and streamed synthesis. Unadvertised synthesis or transcription MUST be rejected, never a no-op or whole-file fallback.
|
|
62
62
|
- A video caller MUST honor `ctx.signal`. Synthesis MUST return exactly one of `url` or `base64`, and a `url` is served through the SSRF guard. The transcriber MUST reject inline or `mediaRef` audio.
|
|
63
63
|
- `voiceId`, `streamRef` and `cachePrefixId` MUST NOT encode secrets. Transcripts are untrusted; an interim one MUST NOT be persisted or drive a side-effecting tool.
|
|
64
|
+
- `callAccounting` reports `ctx.callAI` attempts and honors `retry`.
|
|
64
65
|
|
|
65
66
|
`selfHosted` (operator-configured OpenAI-compatible endpoints) MUST be advertised only while one is configured and reachable. A host MUST NOT disclose an endpoint's location on any wire surface or in a provider id. A client MUST NOT infer capabilities from the id; an unadvertised one fails `capability_not_provided`.
|
|
66
67
|
|
|
@@ -129,7 +130,7 @@ A host advertising `runSecrets` MUST execute the node type `core.secret.witness`
|
|
|
129
130
|
|
|
130
131
|
`modelCapabilities.advertised` lists the capability identifiers the active model offers; a host-private identifier MUST be prefixed `x-host-<host>-`.
|
|
131
132
|
|
|
132
|
-
When a host advertising `modelCapabilities` dispatches a node that declares `requiredModelCapabilities`, it MUST check them before dispatch
|
|
133
|
+
When a host advertising `modelCapabilities` dispatches a node that declares `requiredModelCapabilities`, it MUST check them before dispatch:
|
|
133
134
|
|
|
134
135
|
- all met: dispatch;
|
|
135
136
|
- unmet, with a `fallbackModel` declared, `substitutionSupported` advertised, and the fallback's provider in `aiProviders.providers` with a resolvable credential: emit `model.capability-substituted`, then dispatch the fallback;
|
|
@@ -214,4 +215,4 @@ A host advertising `memory` serves agent memory (`schemas/v2/memory-entry.schema
|
|
|
214
215
|
- **Distillation runs.** A distillation run MUST read the ref's snapshot, MUST NOT re-expose a redacted secret at any recursion level, and MUST write an immutable, addressable archive, byte-stable per source set and budget, kept for `archiveRetention`. Under `indexEmitted` it updates `MEMORY-INDEX.json`, and a `.md` sibling MAY accompany it.
|
|
215
216
|
- **Degraded agents.** When an agent's `memoryShape` needs a dimension the host lacks, its inventory entry MUST set `memoryDegraded` and `degradedMemoryDimensions`; the agent MAY still dispatch. A `role: skill` manifest MUST keep `memoryShape` scratchpad-only, enforced by schema.
|
|
216
217
|
|
|
217
|
-
*Sources: RFCs 0004, 0012, 0017, 0027, 0028, 0029, 0031, 0048, 0052, 0055, 0057, 0059, 0062, 0064, 0067, 0076, 0079, 0080, 0091, 0105, 0106, 0108, 0113, 0116, 0121, 0131, 0144, 0228, 0229.*
|
|
218
|
+
*Sources: RFCs 0004, 0012, 0017, 0027, 0028, 0029, 0031, 0048, 0052, 0055, 0057, 0059, 0062, 0064, 0067, 0076, 0079, 0080, 0091, 0105, 0106, 0108, 0113, 0116, 0121, 0131, 0144, 0228, 0229, 0248.*
|
package/spec/v2/declaration.json
CHANGED
|
@@ -104,6 +104,21 @@
|
|
|
104
104
|
"description": "Optional host cap on a single inline (`data`) or `mediaRef` part."
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
+
},
|
|
108
|
+
"callAccounting": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"description": "RFC 0248. Each flag is independent; a pack MUST NOT rely on `attempts` or `retry` unless its flag is `true`.",
|
|
111
|
+
"properties": {
|
|
112
|
+
"attempts": {
|
|
113
|
+
"type": "boolean",
|
|
114
|
+
"description": "RFC 0248 §A — every `ctx.callAI` result carries `attempts { count, outputTokens?, usageComplete, structuredOutput? }`. `count` MUST equal the provider requests the call made, retries and a natural-language fallback included (a request refused before reaching the provider is not one). `outputTokens` MUST be the sum each attempt's provider reported; when any attempt reported none, `usageComplete` MUST be `false`. `structuredOutput` is present only when `responseSchema` was supplied: `native` when the final attempt used the provider's own structured-output mechanism, `prompt` when it used a prompt-embedded schema. `usage` keeps describing the attempt whose output the result carries. On replay `attempts` MUST equal the recorded value. A call that throws carries no result."
|
|
115
|
+
},
|
|
116
|
+
"retryPolicy": {
|
|
117
|
+
"type": "boolean",
|
|
118
|
+
"description": "RFC 0248 §B — `ctx.callAI` honours an optional request `retry { maxAttempts?: 1..16, growMaxTokens?: boolean (default true) }`. The host MUST NOT send more than `maxAttempts` provider requests for the call (above its own ceiling it clamps, never refuses). With `growMaxTokens: false` no attempt's `maxTokens` MAY exceed the request's (or the host default when the request names none). RFC 0032 events still fire, and a refusal is still never retried. A malformed `retry` (a non-integer, or out of range) MUST be refused with `validation_error` and `details.field` naming the key, never ignored."
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"additionalProperties": false
|
|
107
122
|
}
|
|
108
123
|
},
|
|
109
124
|
"required": [
|
package/spec/v2/release.json
CHANGED
|
@@ -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.46.
|
|
4
|
-
"corpusTag": "v2.46.
|
|
5
|
-
"updated": "2026-10-
|
|
3
|
+
"version": "2.46.19",
|
|
4
|
+
"corpusTag": "v2.46.19",
|
|
5
|
+
"updated": "2026-10-22"
|
|
6
6
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"schemas/v2/**/*.json",
|
|
5
5
|
"spec/v2/path-manifest.json"
|
|
6
6
|
],
|
|
7
|
-
"release": "2.46.
|
|
7
|
+
"release": "2.46.19",
|
|
8
8
|
"kinds": {
|
|
9
9
|
"union": [
|
|
10
10
|
"channel",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"type"
|
|
19
19
|
]
|
|
20
20
|
},
|
|
21
|
-
"count":
|
|
21
|
+
"count": 8944,
|
|
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\"",
|
|
@@ -1205,6 +1205,12 @@
|
|
|
1205
1205
|
"schemas/v2/capabilities.schema.json#/aiProviders/authModes|type|array",
|
|
1206
1206
|
"schemas/v2/capabilities.schema.json#/aiProviders/byok/[]|type|string",
|
|
1207
1207
|
"schemas/v2/capabilities.schema.json#/aiProviders/byok|type|array",
|
|
1208
|
+
"schemas/v2/capabilities.schema.json#/aiProviders/callAccounting/attempts|type|boolean",
|
|
1209
|
+
"schemas/v2/capabilities.schema.json#/aiProviders/callAccounting/retryPolicy|type|boolean",
|
|
1210
|
+
"schemas/v2/capabilities.schema.json#/aiProviders/callAccounting|closed|true",
|
|
1211
|
+
"schemas/v2/capabilities.schema.json#/aiProviders/callAccounting|property|attempts",
|
|
1212
|
+
"schemas/v2/capabilities.schema.json#/aiProviders/callAccounting|property|retryPolicy",
|
|
1213
|
+
"schemas/v2/capabilities.schema.json#/aiProviders/callAccounting|type|object",
|
|
1208
1214
|
"schemas/v2/capabilities.schema.json#/aiProviders/imageGeneration|type|boolean",
|
|
1209
1215
|
"schemas/v2/capabilities.schema.json#/aiProviders/input/maxBytesPerPart|type|integer",
|
|
1210
1216
|
"schemas/v2/capabilities.schema.json#/aiProviders/input/modalities/[]|enum-member|\"audio\"",
|
|
@@ -1253,6 +1259,7 @@
|
|
|
1253
1259
|
"schemas/v2/capabilities.schema.json#/aiProviders|closed|true",
|
|
1254
1260
|
"schemas/v2/capabilities.schema.json#/aiProviders|property|authModes",
|
|
1255
1261
|
"schemas/v2/capabilities.schema.json#/aiProviders|property|byok",
|
|
1262
|
+
"schemas/v2/capabilities.schema.json#/aiProviders|property|callAccounting",
|
|
1256
1263
|
"schemas/v2/capabilities.schema.json#/aiProviders|property|imageGeneration",
|
|
1257
1264
|
"schemas/v2/capabilities.schema.json#/aiProviders|property|input",
|
|
1258
1265
|
"schemas/v2/capabilities.schema.json#/aiProviders|property|maxInlineMediaBytes",
|