@openwop/spec-artifacts 2.0.0-rc.0
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 +234 -0
- package/LICENSE +201 -0
- package/README.md +7 -0
- package/api/.redocly.lint-ignore.yaml +22 -0
- package/api/asyncapi.yaml +834 -0
- package/api/grpc/openwop.proto +251 -0
- package/api/openapi.yaml +2693 -0
- package/api/redocly.yaml +23 -0
- package/api/seams-v2.yaml +680 -0
- package/api/v2/asyncapi.yaml +528 -0
- package/api/v2/openapi.yaml +3139 -0
- package/api/v2/redocly.yaml +16 -0
- package/package.json +10 -0
- package/schemas/README.md +144 -0
- package/schemas/a2a-task-state.schema.json +78 -0
- package/schemas/a2ui-surface-delta-frame.schema.json +48 -0
- package/schemas/agent-deployment-transition.schema.json +49 -0
- package/schemas/agent-deployment.schema.json +54 -0
- package/schemas/agent-eval-suite.schema.json +140 -0
- package/schemas/agent-inventory-response.schema.json +115 -0
- package/schemas/agent-manifest.schema.json +156 -0
- package/schemas/agent-org-chart.schema.json +82 -0
- package/schemas/agent-ref.schema.json +63 -0
- package/schemas/agent-roster-entry.schema.json +81 -0
- package/schemas/agent-roster-response.schema.json +21 -0
- package/schemas/ai-envelope.schema.json +134 -0
- package/schemas/annotation-create.schema.json +37 -0
- package/schemas/annotation.schema.json +56 -0
- package/schemas/artifact-type-pack-manifest.schema.json +244 -0
- package/schemas/audit-verify-result.schema.json +90 -0
- package/schemas/budget-policy.schema.json +18 -0
- package/schemas/capabilities.schema.json +4160 -0
- package/schemas/certification-bundle-v2.schema.json +118 -0
- package/schemas/channel-presence-payload.schema.json +41 -0
- package/schemas/channel-written-payload.schema.json +55 -0
- package/schemas/chat-card-pack-manifest.schema.json +253 -0
- package/schemas/compact-tool-descriptor.schema.json +51 -0
- package/schemas/compensation-policy.schema.json +64 -0
- package/schemas/conformance-certification-bundle.schema.json +86 -0
- package/schemas/connection-pack-manifest.schema.json +353 -0
- package/schemas/conversation-event.schema.json +168 -0
- package/schemas/conversation-turn.schema.json +117 -0
- package/schemas/core-conformance-mock-agent-config.schema.json +152 -0
- package/schemas/credential-provenance.schema.json +18 -0
- package/schemas/credential-reference.schema.json +21 -0
- package/schemas/debug-bundle.schema.json +196 -0
- package/schemas/dispatch-config.schema.json +112 -0
- package/schemas/envelopes/clarification.request.schema.json +52 -0
- package/schemas/envelopes/error.schema.json +30 -0
- package/schemas/envelopes/media.audio.schema.json +38 -0
- package/schemas/envelopes/media.file.schema.json +37 -0
- package/schemas/envelopes/media.image.schema.json +33 -0
- package/schemas/envelopes/schema.request.schema.json +26 -0
- package/schemas/envelopes/schema.response.schema.json +22 -0
- package/schemas/envelopes/ui.a2ui-surface.schema.json +154 -0
- package/schemas/error-envelope.schema.json +25 -0
- package/schemas/eval-summary.schema.json +92 -0
- package/schemas/export-bundle.schema.json +66 -0
- package/schemas/form-content-pack-manifest.schema.json +243 -0
- package/schemas/frontend-plugin-manifest.schema.json +109 -0
- package/schemas/goal.schema.json +104 -0
- package/schemas/heartbeat-evaluated.schema.json +14 -0
- package/schemas/heartbeat-state-changed.schema.json +14 -0
- package/schemas/localized-content-language-settings.schema.json +26 -0
- package/schemas/localized-content-page-response.schema.json +60 -0
- package/schemas/localized-content-page.schema.json +62 -0
- package/schemas/localized-content-section.schema.json +51 -0
- package/schemas/memory-entry.schema.json +36 -0
- package/schemas/memory-list-options.schema.json +37 -0
- package/schemas/node-pack-manifest.schema.json +654 -0
- package/schemas/orchestrator-decision.schema.json +90 -0
- package/schemas/org-chart-responsibility-view.schema.json +26 -0
- package/schemas/pack-lockfile.schema.json +108 -0
- package/schemas/prompt-kind.schema.json +8 -0
- package/schemas/prompt-pack-manifest.schema.json +117 -0
- package/schemas/prompt-ref.schema.json +40 -0
- package/schemas/prompt-template.schema.json +149 -0
- package/schemas/proposal.schema.json +84 -0
- package/schemas/registry-version-manifest.schema.json +208 -0
- package/schemas/residency.schema.json +16 -0
- package/schemas/run-ancestry-response.schema.json +54 -0
- package/schemas/run-diff-response.schema.json +64 -0
- package/schemas/run-event-payloads.schema.json +4452 -0
- package/schemas/run-event.schema.json +211 -0
- package/schemas/run-options.schema.json +80 -0
- package/schemas/run-orchestrator-decided-event.schema.json +20 -0
- package/schemas/run-snapshot.schema.json +148 -0
- package/schemas/security-advisory.schema.json +109 -0
- package/schemas/self-hosted-runner-dispatch-frame.schema.json +79 -0
- package/schemas/self-hosted-runner-registration.schema.json +53 -0
- package/schemas/self-hosted-runner-result-frame.schema.json +38 -0
- package/schemas/subject.schema.json +56 -0
- package/schemas/suspend-request.schema.json +207 -0
- package/schemas/tool-descriptor.schema.json +63 -0
- package/schemas/trigger-event.schema.json +222 -0
- package/schemas/trigger-subscription-registration.schema.json +67 -0
- package/schemas/trigger-subscription.schema.json +26 -0
- package/schemas/ui-plugin-message.schema.json +90 -0
- package/schemas/v2/a2a-task-state.schema.json +102 -0
- package/schemas/v2/a2ui-surface-delta-frame.schema.json +62 -0
- package/schemas/v2/agent-deployment-transition.schema.json +67 -0
- package/schemas/v2/agent-deployment.schema.json +68 -0
- package/schemas/v2/agent-eval-suite.schema.json +214 -0
- package/schemas/v2/agent-inventory-response.schema.json +172 -0
- package/schemas/v2/agent-manifest.schema.json +218 -0
- package/schemas/v2/agent-org-chart.schema.json +149 -0
- package/schemas/v2/agent-ref.schema.json +67 -0
- package/schemas/v2/agent-roster-entry.schema.json +104 -0
- package/schemas/v2/agent-roster-response.schema.json +27 -0
- package/schemas/v2/ai-envelope.schema.json +167 -0
- package/schemas/v2/annotation-create.schema.json +109 -0
- package/schemas/v2/annotation.schema.json +142 -0
- package/schemas/v2/artifact-type-pack-manifest.schema.json +245 -0
- package/schemas/v2/audit-verify-result.schema.json +110 -0
- package/schemas/v2/budget-policy.schema.json +61 -0
- package/schemas/v2/capabilities.schema.json +7644 -0
- package/schemas/v2/certification-bundle.schema.json +401 -0
- package/schemas/v2/channel-presence-payload.schema.json +60 -0
- package/schemas/v2/channel-written-payload.schema.json +64 -0
- package/schemas/v2/chat-card-pack-manifest.schema.json +254 -0
- package/schemas/v2/compact-tool-descriptor.schema.json +108 -0
- package/schemas/v2/compensation-policy.schema.json +91 -0
- package/schemas/v2/compensation-projection.schema.json +95 -0
- package/schemas/v2/configurable.schema.json +110 -0
- package/schemas/v2/connection-pack-manifest.schema.json +354 -0
- package/schemas/v2/conversation-event.schema.json +281 -0
- package/schemas/v2/conversation-turn.schema.json +165 -0
- package/schemas/v2/credential-provenance.schema.json +62 -0
- package/schemas/v2/credential-reference.schema.json +28 -0
- package/schemas/v2/debug-bundle.schema.json +312 -0
- package/schemas/v2/dispatch-config.schema.json +147 -0
- package/schemas/v2/effect-ledger-projection.schema.json +71 -0
- package/schemas/v2/effect-seam-manifest.schema.json +98 -0
- package/schemas/v2/envelopes/clarification.request.schema.json +59 -0
- package/schemas/v2/envelopes/error.schema.json +35 -0
- package/schemas/v2/envelopes/media.audio.schema.json +41 -0
- package/schemas/v2/envelopes/media.file.schema.json +40 -0
- package/schemas/v2/envelopes/media.image.schema.json +36 -0
- package/schemas/v2/envelopes/schema.request.schema.json +29 -0
- package/schemas/v2/envelopes/schema.response.schema.json +26 -0
- package/schemas/v2/envelopes/ui.a2ui-surface.schema.json +292 -0
- package/schemas/v2/error-envelope.schema.json +229 -0
- package/schemas/v2/eval-summary.schema.json +166 -0
- package/schemas/v2/export-bundle.schema.json +94 -0
- package/schemas/v2/form-content-pack-manifest.schema.json +241 -0
- package/schemas/v2/frontend-plugin-manifest.schema.json +152 -0
- package/schemas/v2/goal.schema.json +188 -0
- package/schemas/v2/heartbeat-evaluated.schema.json +34 -0
- package/schemas/v2/heartbeat-state-changed.schema.json +31 -0
- package/schemas/v2/ids.schema.json +31 -0
- package/schemas/v2/localized-content-language-settings.schema.json +34 -0
- package/schemas/v2/localized-content-page-response.schema.json +94 -0
- package/schemas/v2/localized-content-page.schema.json +87 -0
- package/schemas/v2/localized-content-section.schema.json +63 -0
- package/schemas/v2/memory-entry.schema.json +45 -0
- package/schemas/v2/memory-list-options.schema.json +41 -0
- package/schemas/v2/node-pack-manifest.schema.json +657 -0
- package/schemas/v2/orchestrator-decision.schema.json +120 -0
- package/schemas/v2/org-chart-responsibility-view.schema.json +36 -0
- package/schemas/v2/pack-lockfile.schema.json +139 -0
- package/schemas/v2/prompt-kind.schema.json +14 -0
- package/schemas/v2/prompt-pack-manifest.schema.json +118 -0
- package/schemas/v2/prompt-ref.schema.json +42 -0
- package/schemas/v2/prompt-template.schema.json +209 -0
- package/schemas/v2/proposal.schema.json +145 -0
- package/schemas/v2/registry-version-manifest.schema.json +292 -0
- package/schemas/v2/residency.schema.json +19 -0
- package/schemas/v2/run-ancestry-response.schema.json +68 -0
- package/schemas/v2/run-diff-response.schema.json +80 -0
- package/schemas/v2/run-event-payloads.schema.json +4588 -0
- package/schemas/v2/run-event.schema.json +324 -0
- package/schemas/v2/run-options.schema.json +90 -0
- package/schemas/v2/run-orchestrator-decided-event.schema.json +22 -0
- package/schemas/v2/run-snapshot.schema.json +207 -0
- package/schemas/v2/security-advisory.schema.json +138 -0
- package/schemas/v2/self-hosted-runner-dispatch-frame.schema.json +119 -0
- package/schemas/v2/self-hosted-runner-registration.schema.json +74 -0
- package/schemas/v2/self-hosted-runner-result-frame.schema.json +47 -0
- package/schemas/v2/subject-link.schema.json +69 -0
- package/schemas/v2/subject.schema.json +597 -0
- package/schemas/v2/suspend-request.schema.json +370 -0
- package/schemas/v2/tool-descriptor.schema.json +150 -0
- package/schemas/v2/trigger-event.schema.json +508 -0
- package/schemas/v2/trigger-subscription-registration.schema.json +99 -0
- package/schemas/v2/trigger-subscription.schema.json +79 -0
- package/schemas/v2/ui-plugin-message.schema.json +149 -0
- package/schemas/v2/workflow-chain-pack-manifest.schema.json +610 -0
- package/schemas/v2/workflow-definition.schema.json +864 -0
- package/schemas/v2/workload-identity.schema.json +115 -0
- package/schemas/v2/workspace-file-create.schema.json +23 -0
- package/schemas/v2/workspace-file.schema.json +45 -0
- package/schemas/workflow-chain-pack-manifest.schema.json +615 -0
- package/schemas/workflow-definition.schema.json +850 -0
- package/schemas/workload-identity.schema.json +79 -0
- package/schemas/workspace-file-create.schema.json +20 -0
- package/schemas/workspace-file.schema.json +39 -0
- package/spec/v1/alias-detectors.json +283 -0
- package/spec/v1/capability-declaration-classes.json +176 -0
- package/spec/v1/core-standard-manifest.json +423 -0
- package/spec/v1/deprecations.json +854 -0
- package/spec/v1/deprecations.schema.json +187 -0
- package/spec/v1/event-codemap.json +1089 -0
- package/spec/v1/event-codemap.schema.json +41 -0
- package/spec/v1/extensions.json +1273 -0
- package/spec/v1/gaps.json +14581 -0
- package/spec/v1/gaps.schema.json +55 -0
- package/spec/v1/migrations.json +1822 -0
- package/spec/v1/migrations.schema.json +44 -0
- package/spec/v1/operation-path-manifest.json +462 -0
- package/spec/v1/spec-gaps.json +4823 -0
- package/spec/v2/declaration.json +1862 -0
- package/spec/v2/declaration.schema.json +305 -0
- package/spec/v2/errors.json +837 -0
- package/spec/v2/event-codemap.json +1099 -0
- package/spec/v2/event-codemap.schema.json +114 -0
- package/spec/v2/ext/provider-idempotency/registry.json +6 -0
- package/spec/v2/facets/a2a.schema.json +51 -0
- package/spec/v2/facets/aiProviders.schema.json +56 -0
- package/spec/v2/facets/auth.schema.json +91 -0
- package/spec/v2/facets/heartbeat.schema.json +20 -0
- package/spec/v2/facets/interrupt.schema.json +29 -0
- package/spec/v2/facets/mcp.schema.json +81 -0
- package/spec/v2/facets/replay.schema.json +34 -0
- package/spec/v2/facets/sandbox.schema.json +31 -0
- package/spec/v2/facets/webhooks.schema.json +18 -0
- package/spec/v2/path-manifest.json +279 -0
- package/spec/v2/peer-dependency-aliases.json +165 -0
- package/spec/v2/profiles.json +45 -0
- package/spec/v2/release.json +6 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openwop.dev/spec/v2/envelopes/ui.a2ui-surface.schema.json",
|
|
4
|
+
"title": "UiA2uiSurfacePayload",
|
|
5
|
+
"description": "Payload for the OPTIONAL, advertised `ui.a2ui-surface` AI Envelope kind (RFC 0102). Carries a declarative A2UI interface surface — a closed component tree the consumer renders with native widgets, routing user actions back to the producing agent WITHOUT executing any agent-supplied code. `ui.*` is a core, un-namespaced content-primitive family beside `media.*` (ai-envelope.md §\"A2UI surfaces\" / §\"Vendor-namespaced kinds\"). Not one of the four MUST-recognize universal kinds; an unrecognizing consumer falls back to store-without-render.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"catalogVersion",
|
|
9
|
+
"surface"
|
|
10
|
+
],
|
|
11
|
+
"additionalProperties": false,
|
|
12
|
+
"properties": {
|
|
13
|
+
"reasoning": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "OPTIONAL per RFC 0030 §A — the model's reasoning, conventionally the first property of a kind whose payload benefits from multi-step composition."
|
|
16
|
+
},
|
|
17
|
+
"catalogVersion": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"enum": [
|
|
20
|
+
"0.9.1"
|
|
21
|
+
],
|
|
22
|
+
"description": "REQUIRED — the A2UI catalog version the surface targets. This enum IS the host's supported-version set (ai-envelope.md §\"A2UI surfaces\"); it is never a free string the producer invents. A consumer MUST refuse an unknown/higher version with `unknown_schema_version`. Pinning the version in the payload keeps `:fork`/replay deterministic after the external A2UI standard ships a breaking version."
|
|
23
|
+
},
|
|
24
|
+
"surface": {
|
|
25
|
+
"$ref": "#/$defs/surface",
|
|
26
|
+
"description": "REQUIRED — the A2UI surface document: a closed component tree (ai-envelope.md §\"A2UI surfaces\"). Self-contained: renderable from the payload alone, never a live reference into an external catalog."
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"$defs": {
|
|
30
|
+
"surface": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"required": [
|
|
33
|
+
"components"
|
|
34
|
+
],
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"properties": {
|
|
37
|
+
"title": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "OPTIONAL display title for the surface."
|
|
40
|
+
},
|
|
41
|
+
"components": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"description": "The flat, ordered component list. Each element is one of the host's day-1 catalog components, discriminated by the single-string-enum `component` field. `anyOf` (not `oneOf`) per ai-envelope.md §\"Schema discipline\".",
|
|
44
|
+
"items": {
|
|
45
|
+
"$ref": "#/$defs/component"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"component": {
|
|
51
|
+
"description": "A single A2UI component. Closed set (day-1 catalog 0.9.1); the `component` discriminator is a single-string-enum per branch.",
|
|
52
|
+
"anyOf": [
|
|
53
|
+
{
|
|
54
|
+
"$ref": "#/$defs/heading"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"$ref": "#/$defs/text"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"$ref": "#/$defs/fieldText"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"$ref": "#/$defs/fieldDate"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"$ref": "#/$defs/fieldSelect"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"$ref": "#/$defs/fieldCheckbox"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"$ref": "#/$defs/actionButton"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"heading": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"required": [
|
|
79
|
+
"component",
|
|
80
|
+
"text"
|
|
81
|
+
],
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"properties": {
|
|
84
|
+
"component": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"enum": [
|
|
87
|
+
"heading"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
"text": {
|
|
91
|
+
"type": "string"
|
|
92
|
+
},
|
|
93
|
+
"level": {
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"minimum": 1,
|
|
96
|
+
"maximum": 6
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"text": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"required": [
|
|
103
|
+
"component",
|
|
104
|
+
"text"
|
|
105
|
+
],
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"properties": {
|
|
108
|
+
"component": {
|
|
109
|
+
"type": "string",
|
|
110
|
+
"enum": [
|
|
111
|
+
"text"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
"text": {
|
|
115
|
+
"type": "string"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"fieldText": {
|
|
120
|
+
"type": "object",
|
|
121
|
+
"required": [
|
|
122
|
+
"component",
|
|
123
|
+
"id",
|
|
124
|
+
"label"
|
|
125
|
+
],
|
|
126
|
+
"additionalProperties": false,
|
|
127
|
+
"properties": {
|
|
128
|
+
"component": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"enum": [
|
|
131
|
+
"field.text"
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"id": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"description": "Binding key; the collected value is keyed by `id` in the resume value."
|
|
137
|
+
},
|
|
138
|
+
"label": {
|
|
139
|
+
"type": "string"
|
|
140
|
+
},
|
|
141
|
+
"placeholder": {
|
|
142
|
+
"type": "string"
|
|
143
|
+
},
|
|
144
|
+
"required": {
|
|
145
|
+
"type": "boolean"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"fieldDate": {
|
|
150
|
+
"type": "object",
|
|
151
|
+
"required": [
|
|
152
|
+
"component",
|
|
153
|
+
"id",
|
|
154
|
+
"label"
|
|
155
|
+
],
|
|
156
|
+
"additionalProperties": false,
|
|
157
|
+
"properties": {
|
|
158
|
+
"component": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"enum": [
|
|
161
|
+
"field.date"
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
"id": {
|
|
165
|
+
"type": "string"
|
|
166
|
+
},
|
|
167
|
+
"label": {
|
|
168
|
+
"type": "string"
|
|
169
|
+
},
|
|
170
|
+
"required": {
|
|
171
|
+
"type": "boolean"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"fieldSelect": {
|
|
176
|
+
"type": "object",
|
|
177
|
+
"required": [
|
|
178
|
+
"component",
|
|
179
|
+
"id",
|
|
180
|
+
"label",
|
|
181
|
+
"options"
|
|
182
|
+
],
|
|
183
|
+
"additionalProperties": false,
|
|
184
|
+
"properties": {
|
|
185
|
+
"component": {
|
|
186
|
+
"type": "string",
|
|
187
|
+
"enum": [
|
|
188
|
+
"field.select"
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
"id": {
|
|
192
|
+
"type": "string"
|
|
193
|
+
},
|
|
194
|
+
"label": {
|
|
195
|
+
"type": "string"
|
|
196
|
+
},
|
|
197
|
+
"required": {
|
|
198
|
+
"type": "boolean"
|
|
199
|
+
},
|
|
200
|
+
"options": {
|
|
201
|
+
"type": "array",
|
|
202
|
+
"minItems": 1,
|
|
203
|
+
"items": {
|
|
204
|
+
"type": "object",
|
|
205
|
+
"required": [
|
|
206
|
+
"value",
|
|
207
|
+
"label"
|
|
208
|
+
],
|
|
209
|
+
"additionalProperties": false,
|
|
210
|
+
"properties": {
|
|
211
|
+
"value": {
|
|
212
|
+
"type": "string"
|
|
213
|
+
},
|
|
214
|
+
"label": {
|
|
215
|
+
"type": "string"
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
"fieldCheckbox": {
|
|
223
|
+
"type": "object",
|
|
224
|
+
"required": [
|
|
225
|
+
"component",
|
|
226
|
+
"id",
|
|
227
|
+
"label"
|
|
228
|
+
],
|
|
229
|
+
"additionalProperties": false,
|
|
230
|
+
"properties": {
|
|
231
|
+
"component": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"enum": [
|
|
234
|
+
"field.checkbox"
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
"id": {
|
|
238
|
+
"type": "string"
|
|
239
|
+
},
|
|
240
|
+
"label": {
|
|
241
|
+
"type": "string"
|
|
242
|
+
},
|
|
243
|
+
"default": {
|
|
244
|
+
"type": "boolean"
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"actionButton": {
|
|
249
|
+
"type": "object",
|
|
250
|
+
"required": [
|
|
251
|
+
"component",
|
|
252
|
+
"id",
|
|
253
|
+
"label",
|
|
254
|
+
"action"
|
|
255
|
+
],
|
|
256
|
+
"additionalProperties": false,
|
|
257
|
+
"properties": {
|
|
258
|
+
"component": {
|
|
259
|
+
"type": "string",
|
|
260
|
+
"enum": [
|
|
261
|
+
"action.button"
|
|
262
|
+
]
|
|
263
|
+
},
|
|
264
|
+
"id": {
|
|
265
|
+
"type": "string"
|
|
266
|
+
},
|
|
267
|
+
"label": {
|
|
268
|
+
"type": "string"
|
|
269
|
+
},
|
|
270
|
+
"action": {
|
|
271
|
+
"type": "object",
|
|
272
|
+
"required": [
|
|
273
|
+
"target"
|
|
274
|
+
],
|
|
275
|
+
"additionalProperties": false,
|
|
276
|
+
"description": "Confined action (ai-envelope.md §\"A2UI surfaces\" rule 2). `target` resolves to exactly one host-allowlisted destination — a run interrupt resume or a conversation exchange — never an arbitrary URL, endpoint, or network egress. Enforced by the `a2ui-action-confinement` + `a2ui-surface-no-network-egress` SECURITY invariants.",
|
|
277
|
+
"properties": {
|
|
278
|
+
"target": {
|
|
279
|
+
"type": "string",
|
|
280
|
+
"enum": [
|
|
281
|
+
"resume",
|
|
282
|
+
"exchange"
|
|
283
|
+
],
|
|
284
|
+
"description": "`resume` → the collected field values become the interrupt `resumeValue` (interrupt.md). `exchange` → the values become a conversation exchange message (RFC 0005)."
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"x-openwop-seeded-from": "v1"
|
|
292
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openwop.dev/spec/v2/error-envelope.schema.json",
|
|
4
|
+
"title": "ErrorEnvelope (v2)",
|
|
5
|
+
"description": "GENERATED from spec/v2/errors.json by scripts/generate-error-envelope.mjs (RFC 0171 §B.1). 92 registered codes; vendor codes match ^(?!openwop\\.)[a-z][a-z0-9]*(-[a-z0-9]+)*\\.[a-z][a-z0-9_]*$. Consumers MUST accept an unknown registered member and MUST NOT act on it (RFC 0171 §A.5).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"error",
|
|
10
|
+
"message"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"error": {
|
|
14
|
+
"oneOf": [
|
|
15
|
+
{
|
|
16
|
+
"type": "string",
|
|
17
|
+
"enum": [
|
|
18
|
+
"audience_mismatch",
|
|
19
|
+
"capability_not_provided",
|
|
20
|
+
"capability_required",
|
|
21
|
+
"client_version_unsupported",
|
|
22
|
+
"connection_provider_conflict",
|
|
23
|
+
"connection_provider_unresolved",
|
|
24
|
+
"connector_action_unresolved",
|
|
25
|
+
"connector_auth_expired",
|
|
26
|
+
"credential_forbidden",
|
|
27
|
+
"credential_not_found",
|
|
28
|
+
"credential_required",
|
|
29
|
+
"credential_revoked",
|
|
30
|
+
"credential_scope_unsupported",
|
|
31
|
+
"credential_unavailable",
|
|
32
|
+
"delegation_chain_cyclic",
|
|
33
|
+
"delegation_chain_too_long",
|
|
34
|
+
"delegation_expired",
|
|
35
|
+
"delegation_scope_amplified",
|
|
36
|
+
"envelope_correlation_conflict",
|
|
37
|
+
"envelope_invalid",
|
|
38
|
+
"envelope_refusal",
|
|
39
|
+
"envelope_truncation_unrecoverable",
|
|
40
|
+
"event_type_unmapped",
|
|
41
|
+
"forbidden",
|
|
42
|
+
"force_engine_version_forbidden",
|
|
43
|
+
"id_tenant_mismatch",
|
|
44
|
+
"idempotency_in_flight",
|
|
45
|
+
"idempotency_key_invalid",
|
|
46
|
+
"idempotency_key_mismatch",
|
|
47
|
+
"identity_unresolvable",
|
|
48
|
+
"identity_unverified",
|
|
49
|
+
"internal_error",
|
|
50
|
+
"interop_version_unsupported",
|
|
51
|
+
"interrupt_already_resolved",
|
|
52
|
+
"interrupt_cancelled",
|
|
53
|
+
"interrupt_expired",
|
|
54
|
+
"interrupt_not_found",
|
|
55
|
+
"interrupt_token_invalid",
|
|
56
|
+
"key_revoked",
|
|
57
|
+
"loop_limit_exceeded",
|
|
58
|
+
"mcp_mrtr_rounds_exceeded",
|
|
59
|
+
"mock_provider_forbidden",
|
|
60
|
+
"not_found",
|
|
61
|
+
"oauth_provider_unsupported",
|
|
62
|
+
"oauth_scope_unsupported",
|
|
63
|
+
"pack_dependency_conflict",
|
|
64
|
+
"pack_dependency_cycle",
|
|
65
|
+
"pack_engine_unsupported",
|
|
66
|
+
"pack_integrity_failure",
|
|
67
|
+
"pack_integrity_mismatch",
|
|
68
|
+
"pack_kind_invalid",
|
|
69
|
+
"pack_load_failure",
|
|
70
|
+
"pack_lockfile_incomplete",
|
|
71
|
+
"pack_namespace_unauthorized",
|
|
72
|
+
"pack_peer_dependency_missing",
|
|
73
|
+
"pack_peer_dependency_undefined",
|
|
74
|
+
"pack_registry_unreachable",
|
|
75
|
+
"pack_runtime_requirement_unmet",
|
|
76
|
+
"pack_signature_invalid",
|
|
77
|
+
"pack_validation_failed",
|
|
78
|
+
"pack_version_not_found",
|
|
79
|
+
"protocol_version_mismatch",
|
|
80
|
+
"protocol_version_unsupported",
|
|
81
|
+
"rate_limited",
|
|
82
|
+
"recursion_limit_exceeded",
|
|
83
|
+
"replay_diverged_at_refusal",
|
|
84
|
+
"replay_memory_snapshot_unavailable",
|
|
85
|
+
"replay_source_missing",
|
|
86
|
+
"residency_unavailable",
|
|
87
|
+
"run_already_active",
|
|
88
|
+
"run_forbidden",
|
|
89
|
+
"run_terminal",
|
|
90
|
+
"run_timeout",
|
|
91
|
+
"runner_unavailable",
|
|
92
|
+
"sandbox_capability_denied",
|
|
93
|
+
"sandbox_escape_attempt",
|
|
94
|
+
"sandbox_memory_exceeded",
|
|
95
|
+
"sandbox_timeout",
|
|
96
|
+
"schedule_horizon_exceeded",
|
|
97
|
+
"sender_constraint_missing",
|
|
98
|
+
"signature_not_available",
|
|
99
|
+
"sub_chain_cycle",
|
|
100
|
+
"sub_chain_depth_exceeded",
|
|
101
|
+
"token_budget_exceeded",
|
|
102
|
+
"unauthenticated",
|
|
103
|
+
"unsupported_stream_mode",
|
|
104
|
+
"until_in_past",
|
|
105
|
+
"validation_error",
|
|
106
|
+
"version_conflict",
|
|
107
|
+
"workspace_conflict",
|
|
108
|
+
"workspace_membership_required",
|
|
109
|
+
"workspace_too_large"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"type": "string",
|
|
114
|
+
"pattern": "^(?!openwop\\.)[a-z][a-z0-9]*(-[a-z0-9]+)*\\.[a-z][a-z0-9_]*$"
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"message": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"minLength": 1
|
|
121
|
+
},
|
|
122
|
+
"details": {
|
|
123
|
+
"type": "object",
|
|
124
|
+
"additionalProperties": true,
|
|
125
|
+
"description": "Error-specific contextual data. No code has registered a details schema yet (errors.json rows carry details: null); when one does, this becomes a oneOf discriminated on error."
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"x-openwop-http-status": {
|
|
129
|
+
"audience_mismatch": 401,
|
|
130
|
+
"capability_not_provided": 422,
|
|
131
|
+
"capability_required": 422,
|
|
132
|
+
"client_version_unsupported": 426,
|
|
133
|
+
"connection_provider_conflict": 409,
|
|
134
|
+
"connection_provider_unresolved": 400,
|
|
135
|
+
"connector_action_unresolved": 400,
|
|
136
|
+
"connector_auth_expired": 401,
|
|
137
|
+
"credential_forbidden": 403,
|
|
138
|
+
"credential_not_found": 404,
|
|
139
|
+
"credential_required": 422,
|
|
140
|
+
"credential_revoked": 401,
|
|
141
|
+
"credential_scope_unsupported": 400,
|
|
142
|
+
"credential_unavailable": 501,
|
|
143
|
+
"delegation_chain_cyclic": 400,
|
|
144
|
+
"delegation_chain_too_long": 400,
|
|
145
|
+
"delegation_expired": 401,
|
|
146
|
+
"delegation_scope_amplified": 403,
|
|
147
|
+
"envelope_correlation_conflict": 409,
|
|
148
|
+
"envelope_invalid": 422,
|
|
149
|
+
"envelope_refusal": 422,
|
|
150
|
+
"envelope_truncation_unrecoverable": 422,
|
|
151
|
+
"event_type_unmapped": 500,
|
|
152
|
+
"forbidden": 403,
|
|
153
|
+
"force_engine_version_forbidden": 403,
|
|
154
|
+
"id_tenant_mismatch": 403,
|
|
155
|
+
"idempotency_in_flight": 409,
|
|
156
|
+
"idempotency_key_invalid": 400,
|
|
157
|
+
"idempotency_key_mismatch": 409,
|
|
158
|
+
"identity_unresolvable": 401,
|
|
159
|
+
"identity_unverified": 401,
|
|
160
|
+
"internal_error": 500,
|
|
161
|
+
"interop_version_unsupported": 400,
|
|
162
|
+
"interrupt_already_resolved": 409,
|
|
163
|
+
"interrupt_cancelled": 410,
|
|
164
|
+
"interrupt_expired": 410,
|
|
165
|
+
"interrupt_not_found": 404,
|
|
166
|
+
"interrupt_token_invalid": 401,
|
|
167
|
+
"key_revoked": 401,
|
|
168
|
+
"loop_limit_exceeded": 422,
|
|
169
|
+
"mcp_mrtr_rounds_exceeded": 422,
|
|
170
|
+
"mock_provider_forbidden": 403,
|
|
171
|
+
"not_found": 404,
|
|
172
|
+
"oauth_provider_unsupported": 400,
|
|
173
|
+
"oauth_scope_unsupported": 400,
|
|
174
|
+
"pack_dependency_conflict": 409,
|
|
175
|
+
"pack_dependency_cycle": 400,
|
|
176
|
+
"pack_engine_unsupported": 400,
|
|
177
|
+
"pack_integrity_failure": 400,
|
|
178
|
+
"pack_integrity_mismatch": 409,
|
|
179
|
+
"pack_kind_invalid": 400,
|
|
180
|
+
"pack_load_failure": 500,
|
|
181
|
+
"pack_lockfile_incomplete": 400,
|
|
182
|
+
"pack_namespace_unauthorized": 403,
|
|
183
|
+
"pack_peer_dependency_missing": 400,
|
|
184
|
+
"pack_peer_dependency_undefined": 400,
|
|
185
|
+
"pack_registry_unreachable": 503,
|
|
186
|
+
"pack_runtime_requirement_unmet": 422,
|
|
187
|
+
"pack_signature_invalid": 400,
|
|
188
|
+
"pack_validation_failed": 400,
|
|
189
|
+
"pack_version_not_found": 404,
|
|
190
|
+
"protocol_version_mismatch": 400,
|
|
191
|
+
"protocol_version_unsupported": 406,
|
|
192
|
+
"rate_limited": 429,
|
|
193
|
+
"recursion_limit_exceeded": 422,
|
|
194
|
+
"replay_diverged_at_refusal": 409,
|
|
195
|
+
"replay_memory_snapshot_unavailable": 409,
|
|
196
|
+
"replay_source_missing": 404,
|
|
197
|
+
"residency_unavailable": 422,
|
|
198
|
+
"run_already_active": 409,
|
|
199
|
+
"run_forbidden": 403,
|
|
200
|
+
"run_terminal": 409,
|
|
201
|
+
"run_timeout": 422,
|
|
202
|
+
"runner_unavailable": 503,
|
|
203
|
+
"sandbox_capability_denied": 403,
|
|
204
|
+
"sandbox_escape_attempt": 403,
|
|
205
|
+
"sandbox_memory_exceeded": 422,
|
|
206
|
+
"sandbox_timeout": 422,
|
|
207
|
+
"schedule_horizon_exceeded": 400,
|
|
208
|
+
"sender_constraint_missing": 401,
|
|
209
|
+
"signature_not_available": 404,
|
|
210
|
+
"sub_chain_cycle": 400,
|
|
211
|
+
"sub_chain_depth_exceeded": 400,
|
|
212
|
+
"token_budget_exceeded": 422,
|
|
213
|
+
"unauthenticated": 401,
|
|
214
|
+
"unsupported_stream_mode": 400,
|
|
215
|
+
"until_in_past": 400,
|
|
216
|
+
"validation_error": 400,
|
|
217
|
+
"version_conflict": 409,
|
|
218
|
+
"workspace_conflict": 409,
|
|
219
|
+
"workspace_membership_required": 403,
|
|
220
|
+
"workspace_too_large": 413
|
|
221
|
+
},
|
|
222
|
+
"x-openwop-retriable": [
|
|
223
|
+
"internal_error",
|
|
224
|
+
"pack_registry_unreachable",
|
|
225
|
+
"rate_limited",
|
|
226
|
+
"residency_unavailable",
|
|
227
|
+
"runner_unavailable"
|
|
228
|
+
]
|
|
229
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://openwop.dev/spec/v2/eval-summary.schema.json",
|
|
4
|
+
"title": "EvalSummary",
|
|
5
|
+
"description": "RFC 0081 §C. The terminal scorecard of an eval run (the `mode: \"eval\"` projection over `POST /v1/runs`, RFC 0081 §B): the aggregate + per-task scores, cost, latency, schema-validity, and safety findings, plus the suite provenance and (for `regression` mode) the score delta vs a baseline. Set as the eval run's output and served by `GET /v1/runs/{runId}/eval-summary`. SECURITY invariant `eval-summary-no-content-leak`: the summary carries scores, ids, counts, and redaction-safe safety descriptors only — NEVER task output bodies, rubric prose, model completions, prompts, or credential material (SR-1). A consumer reads the run's normal projection for any body.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"suiteId",
|
|
10
|
+
"suiteVersion",
|
|
11
|
+
"aggregateScore",
|
|
12
|
+
"passed",
|
|
13
|
+
"taskCount",
|
|
14
|
+
"passedCount",
|
|
15
|
+
"tasks"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"suiteId": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[a-z0-9.-]+\\.evals\\.[a-z0-9-]+$",
|
|
21
|
+
"description": "The `agent-eval-suite.schema.json#suiteId` this summary scores."
|
|
22
|
+
},
|
|
23
|
+
"suiteVersion": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
|
|
26
|
+
"description": "The pinned suite version the run executed (mirrors `eval.started.suiteVersion`)."
|
|
27
|
+
},
|
|
28
|
+
"evaluatedModelClass": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"enum": [
|
|
31
|
+
"reasoning",
|
|
32
|
+
"writing",
|
|
33
|
+
"coding",
|
|
34
|
+
"research",
|
|
35
|
+
"classification",
|
|
36
|
+
"general"
|
|
37
|
+
],
|
|
38
|
+
"description": "MAY. The `AgentManifest.modelClass` (RFC 0002) the run was evaluated against, so a score is read against its model. Present when the host resolves a concrete class."
|
|
39
|
+
},
|
|
40
|
+
"aggregateScore": {
|
|
41
|
+
"type": "number",
|
|
42
|
+
"minimum": 0,
|
|
43
|
+
"maximum": 1,
|
|
44
|
+
"description": "The suite-level score (0.0–1.0): the aggregation (host-defined, typically the mean) of per-task scores."
|
|
45
|
+
},
|
|
46
|
+
"passed": {
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"description": "Whether the run cleared the suite's `thresholds` (RFC 0081 §A) — `aggregateScore >= passScore` AND, when declared, `totalCostUsd <= maxCostUsd` AND the p95 latency bar. The load-bearing flag an RFC 0082 deployment gate may require (`requiredEval`)."
|
|
49
|
+
},
|
|
50
|
+
"taskCount": {
|
|
51
|
+
"type": "integer",
|
|
52
|
+
"minimum": 0,
|
|
53
|
+
"description": "Number of tasks executed."
|
|
54
|
+
},
|
|
55
|
+
"passedCount": {
|
|
56
|
+
"type": "integer",
|
|
57
|
+
"minimum": 0,
|
|
58
|
+
"description": "Number of tasks that individually passed."
|
|
59
|
+
},
|
|
60
|
+
"totalCostUsd": {
|
|
61
|
+
"type": "number",
|
|
62
|
+
"minimum": 0,
|
|
63
|
+
"description": "MAY. Total cost of the run, summed from the per-task RFC 0026 `provider.usage` events (the scalar only — never a pricing breakdown or rate card; `eval-summary-no-content-leak`)."
|
|
64
|
+
},
|
|
65
|
+
"tasks": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"description": "Per-task results, in suite order. Each entry is content-free: scores, scalars, ids, and redaction-safe safety descriptors only.",
|
|
68
|
+
"items": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"additionalProperties": false,
|
|
71
|
+
"required": [
|
|
72
|
+
"taskId",
|
|
73
|
+
"score",
|
|
74
|
+
"passed"
|
|
75
|
+
],
|
|
76
|
+
"properties": {
|
|
77
|
+
"taskId": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
80
|
+
"description": "The `agent-eval-suite` task id."
|
|
81
|
+
},
|
|
82
|
+
"score": {
|
|
83
|
+
"type": "number",
|
|
84
|
+
"minimum": 0,
|
|
85
|
+
"maximum": 1,
|
|
86
|
+
"description": "Task score (0.0–1.0)."
|
|
87
|
+
},
|
|
88
|
+
"passed": {
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"description": "Whether this task individually met its bar."
|
|
91
|
+
},
|
|
92
|
+
"costUsd": {
|
|
93
|
+
"type": "number",
|
|
94
|
+
"minimum": 0,
|
|
95
|
+
"description": "MAY. Task cost (scalar)."
|
|
96
|
+
},
|
|
97
|
+
"latencyMs": {
|
|
98
|
+
"type": "integer",
|
|
99
|
+
"minimum": 0,
|
|
100
|
+
"description": "MAY. Task wall-clock latency."
|
|
101
|
+
},
|
|
102
|
+
"schemaValid": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"description": "MAY. Whether the task output validated against the agent's `handoff.returnSchemaRef` (when structured-output enforcement is in effect)."
|
|
105
|
+
},
|
|
106
|
+
"safetyFindings": {
|
|
107
|
+
"type": "array",
|
|
108
|
+
"description": "MAY. Redaction-safe safety findings (primarily `adversarial` mode). Each is a `{kind, severity}` descriptor — NO excerpted content, prompt, or completion text (`eval-summary-no-content-leak`).",
|
|
109
|
+
"items": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"additionalProperties": false,
|
|
112
|
+
"required": [
|
|
113
|
+
"kind",
|
|
114
|
+
"severity"
|
|
115
|
+
],
|
|
116
|
+
"properties": {
|
|
117
|
+
"kind": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"minLength": 1,
|
|
120
|
+
"description": "Finding category (e.g. `jailbreak`, `pii-leak`, `unsafe-tool-call`) — a category label, not excerpted content."
|
|
121
|
+
},
|
|
122
|
+
"severity": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"enum": [
|
|
125
|
+
"low",
|
|
126
|
+
"medium",
|
|
127
|
+
"high",
|
|
128
|
+
"critical"
|
|
129
|
+
],
|
|
130
|
+
"description": "Finding severity."
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"regression": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": false,
|
|
141
|
+
"description": "MAY. Present for `regression` mode. The score delta vs a baseline eval run, plus a pointer to the RFC 0054 `:diff` for the structural divergence. Content-free.",
|
|
142
|
+
"required": [
|
|
143
|
+
"baselineRunId",
|
|
144
|
+
"scoreDelta"
|
|
145
|
+
],
|
|
146
|
+
"properties": {
|
|
147
|
+
"baselineRunId": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"minLength": 1,
|
|
150
|
+
"description": "The prior eval run this run is compared against."
|
|
151
|
+
},
|
|
152
|
+
"scoreDelta": {
|
|
153
|
+
"type": "number",
|
|
154
|
+
"minimum": -1,
|
|
155
|
+
"maximum": 1,
|
|
156
|
+
"description": "`aggregateScore` minus the baseline's (negative ⇒ regression)."
|
|
157
|
+
},
|
|
158
|
+
"diffRef": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"description": "MAY. A pointer to `GET /v1/runs/{runId}:diff?against={baselineRunId}` (RFC 0054) for the structural delta."
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"x-openwop-seeded-from": "v1"
|
|
166
|
+
}
|