@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.
Files changed (229) hide show
  1. package/CORPUS-STAMP.json +234 -0
  2. package/LICENSE +201 -0
  3. package/README.md +7 -0
  4. package/api/.redocly.lint-ignore.yaml +22 -0
  5. package/api/asyncapi.yaml +834 -0
  6. package/api/grpc/openwop.proto +251 -0
  7. package/api/openapi.yaml +2693 -0
  8. package/api/redocly.yaml +23 -0
  9. package/api/seams-v2.yaml +680 -0
  10. package/api/v2/asyncapi.yaml +528 -0
  11. package/api/v2/openapi.yaml +3139 -0
  12. package/api/v2/redocly.yaml +16 -0
  13. package/package.json +10 -0
  14. package/schemas/README.md +144 -0
  15. package/schemas/a2a-task-state.schema.json +78 -0
  16. package/schemas/a2ui-surface-delta-frame.schema.json +48 -0
  17. package/schemas/agent-deployment-transition.schema.json +49 -0
  18. package/schemas/agent-deployment.schema.json +54 -0
  19. package/schemas/agent-eval-suite.schema.json +140 -0
  20. package/schemas/agent-inventory-response.schema.json +115 -0
  21. package/schemas/agent-manifest.schema.json +156 -0
  22. package/schemas/agent-org-chart.schema.json +82 -0
  23. package/schemas/agent-ref.schema.json +63 -0
  24. package/schemas/agent-roster-entry.schema.json +81 -0
  25. package/schemas/agent-roster-response.schema.json +21 -0
  26. package/schemas/ai-envelope.schema.json +134 -0
  27. package/schemas/annotation-create.schema.json +37 -0
  28. package/schemas/annotation.schema.json +56 -0
  29. package/schemas/artifact-type-pack-manifest.schema.json +244 -0
  30. package/schemas/audit-verify-result.schema.json +90 -0
  31. package/schemas/budget-policy.schema.json +18 -0
  32. package/schemas/capabilities.schema.json +4160 -0
  33. package/schemas/certification-bundle-v2.schema.json +118 -0
  34. package/schemas/channel-presence-payload.schema.json +41 -0
  35. package/schemas/channel-written-payload.schema.json +55 -0
  36. package/schemas/chat-card-pack-manifest.schema.json +253 -0
  37. package/schemas/compact-tool-descriptor.schema.json +51 -0
  38. package/schemas/compensation-policy.schema.json +64 -0
  39. package/schemas/conformance-certification-bundle.schema.json +86 -0
  40. package/schemas/connection-pack-manifest.schema.json +353 -0
  41. package/schemas/conversation-event.schema.json +168 -0
  42. package/schemas/conversation-turn.schema.json +117 -0
  43. package/schemas/core-conformance-mock-agent-config.schema.json +152 -0
  44. package/schemas/credential-provenance.schema.json +18 -0
  45. package/schemas/credential-reference.schema.json +21 -0
  46. package/schemas/debug-bundle.schema.json +196 -0
  47. package/schemas/dispatch-config.schema.json +112 -0
  48. package/schemas/envelopes/clarification.request.schema.json +52 -0
  49. package/schemas/envelopes/error.schema.json +30 -0
  50. package/schemas/envelopes/media.audio.schema.json +38 -0
  51. package/schemas/envelopes/media.file.schema.json +37 -0
  52. package/schemas/envelopes/media.image.schema.json +33 -0
  53. package/schemas/envelopes/schema.request.schema.json +26 -0
  54. package/schemas/envelopes/schema.response.schema.json +22 -0
  55. package/schemas/envelopes/ui.a2ui-surface.schema.json +154 -0
  56. package/schemas/error-envelope.schema.json +25 -0
  57. package/schemas/eval-summary.schema.json +92 -0
  58. package/schemas/export-bundle.schema.json +66 -0
  59. package/schemas/form-content-pack-manifest.schema.json +243 -0
  60. package/schemas/frontend-plugin-manifest.schema.json +109 -0
  61. package/schemas/goal.schema.json +104 -0
  62. package/schemas/heartbeat-evaluated.schema.json +14 -0
  63. package/schemas/heartbeat-state-changed.schema.json +14 -0
  64. package/schemas/localized-content-language-settings.schema.json +26 -0
  65. package/schemas/localized-content-page-response.schema.json +60 -0
  66. package/schemas/localized-content-page.schema.json +62 -0
  67. package/schemas/localized-content-section.schema.json +51 -0
  68. package/schemas/memory-entry.schema.json +36 -0
  69. package/schemas/memory-list-options.schema.json +37 -0
  70. package/schemas/node-pack-manifest.schema.json +654 -0
  71. package/schemas/orchestrator-decision.schema.json +90 -0
  72. package/schemas/org-chart-responsibility-view.schema.json +26 -0
  73. package/schemas/pack-lockfile.schema.json +108 -0
  74. package/schemas/prompt-kind.schema.json +8 -0
  75. package/schemas/prompt-pack-manifest.schema.json +117 -0
  76. package/schemas/prompt-ref.schema.json +40 -0
  77. package/schemas/prompt-template.schema.json +149 -0
  78. package/schemas/proposal.schema.json +84 -0
  79. package/schemas/registry-version-manifest.schema.json +208 -0
  80. package/schemas/residency.schema.json +16 -0
  81. package/schemas/run-ancestry-response.schema.json +54 -0
  82. package/schemas/run-diff-response.schema.json +64 -0
  83. package/schemas/run-event-payloads.schema.json +4452 -0
  84. package/schemas/run-event.schema.json +211 -0
  85. package/schemas/run-options.schema.json +80 -0
  86. package/schemas/run-orchestrator-decided-event.schema.json +20 -0
  87. package/schemas/run-snapshot.schema.json +148 -0
  88. package/schemas/security-advisory.schema.json +109 -0
  89. package/schemas/self-hosted-runner-dispatch-frame.schema.json +79 -0
  90. package/schemas/self-hosted-runner-registration.schema.json +53 -0
  91. package/schemas/self-hosted-runner-result-frame.schema.json +38 -0
  92. package/schemas/subject.schema.json +56 -0
  93. package/schemas/suspend-request.schema.json +207 -0
  94. package/schemas/tool-descriptor.schema.json +63 -0
  95. package/schemas/trigger-event.schema.json +222 -0
  96. package/schemas/trigger-subscription-registration.schema.json +67 -0
  97. package/schemas/trigger-subscription.schema.json +26 -0
  98. package/schemas/ui-plugin-message.schema.json +90 -0
  99. package/schemas/v2/a2a-task-state.schema.json +102 -0
  100. package/schemas/v2/a2ui-surface-delta-frame.schema.json +62 -0
  101. package/schemas/v2/agent-deployment-transition.schema.json +67 -0
  102. package/schemas/v2/agent-deployment.schema.json +68 -0
  103. package/schemas/v2/agent-eval-suite.schema.json +214 -0
  104. package/schemas/v2/agent-inventory-response.schema.json +172 -0
  105. package/schemas/v2/agent-manifest.schema.json +218 -0
  106. package/schemas/v2/agent-org-chart.schema.json +149 -0
  107. package/schemas/v2/agent-ref.schema.json +67 -0
  108. package/schemas/v2/agent-roster-entry.schema.json +104 -0
  109. package/schemas/v2/agent-roster-response.schema.json +27 -0
  110. package/schemas/v2/ai-envelope.schema.json +167 -0
  111. package/schemas/v2/annotation-create.schema.json +109 -0
  112. package/schemas/v2/annotation.schema.json +142 -0
  113. package/schemas/v2/artifact-type-pack-manifest.schema.json +245 -0
  114. package/schemas/v2/audit-verify-result.schema.json +110 -0
  115. package/schemas/v2/budget-policy.schema.json +61 -0
  116. package/schemas/v2/capabilities.schema.json +7644 -0
  117. package/schemas/v2/certification-bundle.schema.json +401 -0
  118. package/schemas/v2/channel-presence-payload.schema.json +60 -0
  119. package/schemas/v2/channel-written-payload.schema.json +64 -0
  120. package/schemas/v2/chat-card-pack-manifest.schema.json +254 -0
  121. package/schemas/v2/compact-tool-descriptor.schema.json +108 -0
  122. package/schemas/v2/compensation-policy.schema.json +91 -0
  123. package/schemas/v2/compensation-projection.schema.json +95 -0
  124. package/schemas/v2/configurable.schema.json +110 -0
  125. package/schemas/v2/connection-pack-manifest.schema.json +354 -0
  126. package/schemas/v2/conversation-event.schema.json +281 -0
  127. package/schemas/v2/conversation-turn.schema.json +165 -0
  128. package/schemas/v2/credential-provenance.schema.json +62 -0
  129. package/schemas/v2/credential-reference.schema.json +28 -0
  130. package/schemas/v2/debug-bundle.schema.json +312 -0
  131. package/schemas/v2/dispatch-config.schema.json +147 -0
  132. package/schemas/v2/effect-ledger-projection.schema.json +71 -0
  133. package/schemas/v2/effect-seam-manifest.schema.json +98 -0
  134. package/schemas/v2/envelopes/clarification.request.schema.json +59 -0
  135. package/schemas/v2/envelopes/error.schema.json +35 -0
  136. package/schemas/v2/envelopes/media.audio.schema.json +41 -0
  137. package/schemas/v2/envelopes/media.file.schema.json +40 -0
  138. package/schemas/v2/envelopes/media.image.schema.json +36 -0
  139. package/schemas/v2/envelopes/schema.request.schema.json +29 -0
  140. package/schemas/v2/envelopes/schema.response.schema.json +26 -0
  141. package/schemas/v2/envelopes/ui.a2ui-surface.schema.json +292 -0
  142. package/schemas/v2/error-envelope.schema.json +229 -0
  143. package/schemas/v2/eval-summary.schema.json +166 -0
  144. package/schemas/v2/export-bundle.schema.json +94 -0
  145. package/schemas/v2/form-content-pack-manifest.schema.json +241 -0
  146. package/schemas/v2/frontend-plugin-manifest.schema.json +152 -0
  147. package/schemas/v2/goal.schema.json +188 -0
  148. package/schemas/v2/heartbeat-evaluated.schema.json +34 -0
  149. package/schemas/v2/heartbeat-state-changed.schema.json +31 -0
  150. package/schemas/v2/ids.schema.json +31 -0
  151. package/schemas/v2/localized-content-language-settings.schema.json +34 -0
  152. package/schemas/v2/localized-content-page-response.schema.json +94 -0
  153. package/schemas/v2/localized-content-page.schema.json +87 -0
  154. package/schemas/v2/localized-content-section.schema.json +63 -0
  155. package/schemas/v2/memory-entry.schema.json +45 -0
  156. package/schemas/v2/memory-list-options.schema.json +41 -0
  157. package/schemas/v2/node-pack-manifest.schema.json +657 -0
  158. package/schemas/v2/orchestrator-decision.schema.json +120 -0
  159. package/schemas/v2/org-chart-responsibility-view.schema.json +36 -0
  160. package/schemas/v2/pack-lockfile.schema.json +139 -0
  161. package/schemas/v2/prompt-kind.schema.json +14 -0
  162. package/schemas/v2/prompt-pack-manifest.schema.json +118 -0
  163. package/schemas/v2/prompt-ref.schema.json +42 -0
  164. package/schemas/v2/prompt-template.schema.json +209 -0
  165. package/schemas/v2/proposal.schema.json +145 -0
  166. package/schemas/v2/registry-version-manifest.schema.json +292 -0
  167. package/schemas/v2/residency.schema.json +19 -0
  168. package/schemas/v2/run-ancestry-response.schema.json +68 -0
  169. package/schemas/v2/run-diff-response.schema.json +80 -0
  170. package/schemas/v2/run-event-payloads.schema.json +4588 -0
  171. package/schemas/v2/run-event.schema.json +324 -0
  172. package/schemas/v2/run-options.schema.json +90 -0
  173. package/schemas/v2/run-orchestrator-decided-event.schema.json +22 -0
  174. package/schemas/v2/run-snapshot.schema.json +207 -0
  175. package/schemas/v2/security-advisory.schema.json +138 -0
  176. package/schemas/v2/self-hosted-runner-dispatch-frame.schema.json +119 -0
  177. package/schemas/v2/self-hosted-runner-registration.schema.json +74 -0
  178. package/schemas/v2/self-hosted-runner-result-frame.schema.json +47 -0
  179. package/schemas/v2/subject-link.schema.json +69 -0
  180. package/schemas/v2/subject.schema.json +597 -0
  181. package/schemas/v2/suspend-request.schema.json +370 -0
  182. package/schemas/v2/tool-descriptor.schema.json +150 -0
  183. package/schemas/v2/trigger-event.schema.json +508 -0
  184. package/schemas/v2/trigger-subscription-registration.schema.json +99 -0
  185. package/schemas/v2/trigger-subscription.schema.json +79 -0
  186. package/schemas/v2/ui-plugin-message.schema.json +149 -0
  187. package/schemas/v2/workflow-chain-pack-manifest.schema.json +610 -0
  188. package/schemas/v2/workflow-definition.schema.json +864 -0
  189. package/schemas/v2/workload-identity.schema.json +115 -0
  190. package/schemas/v2/workspace-file-create.schema.json +23 -0
  191. package/schemas/v2/workspace-file.schema.json +45 -0
  192. package/schemas/workflow-chain-pack-manifest.schema.json +615 -0
  193. package/schemas/workflow-definition.schema.json +850 -0
  194. package/schemas/workload-identity.schema.json +79 -0
  195. package/schemas/workspace-file-create.schema.json +20 -0
  196. package/schemas/workspace-file.schema.json +39 -0
  197. package/spec/v1/alias-detectors.json +283 -0
  198. package/spec/v1/capability-declaration-classes.json +176 -0
  199. package/spec/v1/core-standard-manifest.json +423 -0
  200. package/spec/v1/deprecations.json +854 -0
  201. package/spec/v1/deprecations.schema.json +187 -0
  202. package/spec/v1/event-codemap.json +1089 -0
  203. package/spec/v1/event-codemap.schema.json +41 -0
  204. package/spec/v1/extensions.json +1273 -0
  205. package/spec/v1/gaps.json +14581 -0
  206. package/spec/v1/gaps.schema.json +55 -0
  207. package/spec/v1/migrations.json +1822 -0
  208. package/spec/v1/migrations.schema.json +44 -0
  209. package/spec/v1/operation-path-manifest.json +462 -0
  210. package/spec/v1/spec-gaps.json +4823 -0
  211. package/spec/v2/declaration.json +1862 -0
  212. package/spec/v2/declaration.schema.json +305 -0
  213. package/spec/v2/errors.json +837 -0
  214. package/spec/v2/event-codemap.json +1099 -0
  215. package/spec/v2/event-codemap.schema.json +114 -0
  216. package/spec/v2/ext/provider-idempotency/registry.json +6 -0
  217. package/spec/v2/facets/a2a.schema.json +51 -0
  218. package/spec/v2/facets/aiProviders.schema.json +56 -0
  219. package/spec/v2/facets/auth.schema.json +91 -0
  220. package/spec/v2/facets/heartbeat.schema.json +20 -0
  221. package/spec/v2/facets/interrupt.schema.json +29 -0
  222. package/spec/v2/facets/mcp.schema.json +81 -0
  223. package/spec/v2/facets/replay.schema.json +34 -0
  224. package/spec/v2/facets/sandbox.schema.json +31 -0
  225. package/spec/v2/facets/webhooks.schema.json +18 -0
  226. package/spec/v2/path-manifest.json +279 -0
  227. package/spec/v2/peer-dependency-aliases.json +165 -0
  228. package/spec/v2/profiles.json +45 -0
  229. 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
+ }