@zanii/certify 0.0.0-stage → 0.6.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 (141) hide show
  1. package/LICENSE +159 -0
  2. package/README.md +144 -2
  3. package/dist/appliance-execution.d.ts +18 -0
  4. package/dist/appliance-execution.js +12 -0
  5. package/dist/appliance.d.ts +135 -0
  6. package/dist/appliance.js +253 -0
  7. package/dist/assurance-status.d.ts +58 -0
  8. package/dist/assurance-status.js +86 -0
  9. package/dist/audit-renewal.d.ts +39 -0
  10. package/dist/audit-renewal.js +62 -0
  11. package/dist/audit.d.ts +69 -0
  12. package/dist/audit.js +112 -0
  13. package/dist/beacon-client.d.ts +40 -0
  14. package/dist/beacon-client.js +151 -0
  15. package/dist/beacon.d.ts +84 -0
  16. package/dist/beacon.js +106 -0
  17. package/dist/bitstring-status.d.ts +56 -0
  18. package/dist/bitstring-status.js +135 -0
  19. package/dist/board.d.ts +218 -0
  20. package/dist/board.js +428 -0
  21. package/dist/bundle.d.ts +100 -0
  22. package/dist/bundle.js +122 -0
  23. package/dist/certificate.d.ts +161 -0
  24. package/dist/certificate.js +346 -0
  25. package/dist/cli-messages.json +148 -0
  26. package/dist/cli.d.ts +16 -0
  27. package/dist/cli.js +369 -0
  28. package/dist/current-issuer-vc.d.ts +20 -0
  29. package/dist/current-issuer-vc.js +60 -0
  30. package/dist/evidence-share.d.ts +89 -0
  31. package/dist/evidence-share.js +479 -0
  32. package/dist/federation.d.ts +103 -0
  33. package/dist/federation.js +240 -0
  34. package/dist/feed-snapshot.d.ts +97 -0
  35. package/dist/feed-snapshot.js +186 -0
  36. package/dist/fingerprint.d.ts +23 -0
  37. package/dist/fingerprint.js +48 -0
  38. package/dist/formats/status-v2.schema.json +31 -0
  39. package/dist/governance.d.ts +244 -0
  40. package/dist/governance.js +418 -0
  41. package/dist/identity.d.ts +79 -0
  42. package/dist/identity.js +146 -0
  43. package/dist/impartiality.d.ts +47 -0
  44. package/dist/impartiality.js +85 -0
  45. package/dist/index.d.ts +61 -0
  46. package/dist/index.js +63 -0
  47. package/dist/issuer-authorization.d.ts +4 -0
  48. package/dist/issuer-authorization.js +52 -0
  49. package/dist/issuer-resolution.d.ts +25 -0
  50. package/dist/issuer-resolution.js +89 -0
  51. package/dist/licence-owner-entry.d.ts +20 -0
  52. package/dist/licence-owner-entry.js +33 -0
  53. package/dist/licence-owner.d.ts +67 -0
  54. package/dist/licence-owner.js +180 -0
  55. package/dist/licence.d.ts +174 -0
  56. package/dist/licence.js +400 -0
  57. package/dist/live-evidence.d.ts +135 -0
  58. package/dist/live-evidence.js +210 -0
  59. package/dist/nitro-roots.d.ts +3 -0
  60. package/dist/nitro-roots.js +20 -0
  61. package/dist/nitro-x509.d.ts +16 -0
  62. package/dist/nitro-x509.js +141 -0
  63. package/dist/nitro.d.ts +74 -0
  64. package/dist/nitro.js +329 -0
  65. package/dist/normalization.d.ts +8 -0
  66. package/dist/normalization.js +10 -0
  67. package/dist/pq.d.ts +32 -0
  68. package/dist/pq.js +69 -0
  69. package/dist/profile.d.ts +15 -0
  70. package/dist/profile.js +165 -0
  71. package/dist/register.d.ts +79 -0
  72. package/dist/register.js +134 -0
  73. package/dist/rotation.d.ts +49 -0
  74. package/dist/rotation.js +124 -0
  75. package/dist/royalty-reconciliation.d.ts +24 -0
  76. package/dist/royalty-reconciliation.js +88 -0
  77. package/dist/runtime-client.d.ts +40 -0
  78. package/dist/runtime-client.js +190 -0
  79. package/dist/runtime-gateway.d.ts +26 -0
  80. package/dist/runtime-gateway.js +169 -0
  81. package/dist/runtime-knowledge.d.ts +28 -0
  82. package/dist/runtime-knowledge.js +75 -0
  83. package/dist/runtime-nitro.d.ts +30 -0
  84. package/dist/runtime-nitro.js +57 -0
  85. package/dist/runtime.d.ts +226 -0
  86. package/dist/runtime.js +254 -0
  87. package/dist/sandbox-delegation.d.ts +38 -0
  88. package/dist/sandbox-delegation.js +61 -0
  89. package/dist/schema-dialect.d.ts +1 -0
  90. package/dist/schema-dialect.js +97 -0
  91. package/dist/schemas/clause-map.schema.json +52 -0
  92. package/dist/schemas/profile.schema.json +81 -0
  93. package/dist/schemas/scenarios.schema.json +573 -0
  94. package/dist/schemas/suite.schema.json +138 -0
  95. package/dist/schemas/trajectory.schema.json +1396 -0
  96. package/dist/scheme-authority.d.ts +5 -0
  97. package/dist/scheme-authority.js +15 -0
  98. package/dist/scheme-entry.d.ts +25 -0
  99. package/dist/scheme-entry.js +85 -0
  100. package/dist/scheme-history.d.ts +5 -0
  101. package/dist/scheme-history.js +87 -0
  102. package/dist/scheme-log.d.ts +98 -0
  103. package/dist/scheme-log.js +266 -0
  104. package/dist/scheme-merkle.d.ts +2 -0
  105. package/dist/scheme-merkle.js +20 -0
  106. package/dist/scheme-text.d.ts +25 -0
  107. package/dist/scheme-text.js +46 -0
  108. package/dist/scheme-timing.d.ts +16 -0
  109. package/dist/scheme-timing.js +22 -0
  110. package/dist/scheme-transition.d.ts +47 -0
  111. package/dist/scheme-transition.js +101 -0
  112. package/dist/scoring.d.ts +35 -0
  113. package/dist/scoring.js +50 -0
  114. package/dist/shared.d.ts +16 -0
  115. package/dist/shared.js +20 -0
  116. package/dist/signer.d.ts +18 -0
  117. package/dist/signer.js +49 -0
  118. package/dist/signing-identity.d.ts +1 -0
  119. package/dist/signing-identity.js +11 -0
  120. package/dist/status.d.ts +113 -0
  121. package/dist/status.js +204 -0
  122. package/dist/succession.d.ts +21 -0
  123. package/dist/succession.js +67 -0
  124. package/dist/suite.d.ts +261 -0
  125. package/dist/suite.js +458 -0
  126. package/dist/trajectory.d.ts +216 -0
  127. package/dist/trajectory.js +409 -0
  128. package/dist/transcript-provenance.d.ts +25 -0
  129. package/dist/transcript-provenance.js +37 -0
  130. package/dist/transport-key.d.ts +3 -0
  131. package/dist/transport-key.js +16 -0
  132. package/dist/vc.d.ts +29 -0
  133. package/dist/vc.js +96 -0
  134. package/dist/verification-bounds.d.ts +5 -0
  135. package/dist/verification-bounds.js +78 -0
  136. package/dist/verification-policy.d.ts +32 -0
  137. package/dist/verification-policy.js +85 -0
  138. package/dist/witness.d.ts +19 -0
  139. package/dist/witness.js +80 -0
  140. package/package.json +65 -4
  141. package/src/cli.ts +331 -0
@@ -0,0 +1,1396 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Trajectory suite and trace contracts v1",
4
+ "$ref": "#/$defs/suite",
5
+ "$defs": {
6
+ "scalar": {
7
+ "anyOf": [
8
+ {
9
+ "type": "string",
10
+ "maxLength": 4096
11
+ },
12
+ {
13
+ "type": "integer",
14
+ "minimum": -9007199254740991,
15
+ "maximum": 9007199254740991
16
+ },
17
+ {
18
+ "type": "boolean"
19
+ },
20
+ {
21
+ "const": null
22
+ }
23
+ ]
24
+ },
25
+ "key": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 64,
29
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
30
+ },
31
+ "state": {
32
+ "type": "array",
33
+ "minItems": 1,
34
+ "maxItems": 64,
35
+ "items": {
36
+ "type": "object",
37
+ "required": [
38
+ "key",
39
+ "value"
40
+ ],
41
+ "additionalProperties": false,
42
+ "properties": {
43
+ "key": {
44
+ "$ref": "#/$defs/key"
45
+ },
46
+ "value": {
47
+ "$ref": "#/$defs/scalar"
48
+ }
49
+ }
50
+ }
51
+ },
52
+ "operand": {
53
+ "anyOf": [
54
+ {
55
+ "type": "object",
56
+ "required": [
57
+ "source",
58
+ "value"
59
+ ],
60
+ "additionalProperties": false,
61
+ "properties": {
62
+ "source": {
63
+ "const": "literal"
64
+ },
65
+ "value": {
66
+ "$ref": "#/$defs/scalar"
67
+ }
68
+ }
69
+ },
70
+ {
71
+ "type": "object",
72
+ "required": [
73
+ "source",
74
+ "key"
75
+ ],
76
+ "additionalProperties": false,
77
+ "properties": {
78
+ "source": {
79
+ "enum": [
80
+ "state",
81
+ "arg"
82
+ ]
83
+ },
84
+ "key": {
85
+ "$ref": "#/$defs/key"
86
+ }
87
+ }
88
+ }
89
+ ]
90
+ },
91
+ "condition": {
92
+ "type": "object",
93
+ "required": [
94
+ "left",
95
+ "op",
96
+ "right"
97
+ ],
98
+ "additionalProperties": false,
99
+ "properties": {
100
+ "left": {
101
+ "$ref": "#/$defs/operand"
102
+ },
103
+ "op": {
104
+ "enum": [
105
+ "eq",
106
+ "ne",
107
+ "gte",
108
+ "lte"
109
+ ]
110
+ },
111
+ "right": {
112
+ "$ref": "#/$defs/operand"
113
+ }
114
+ }
115
+ },
116
+ "effect": {
117
+ "type": "object",
118
+ "required": [
119
+ "op",
120
+ "key",
121
+ "value"
122
+ ],
123
+ "additionalProperties": false,
124
+ "properties": {
125
+ "op": {
126
+ "enum": [
127
+ "set",
128
+ "add"
129
+ ]
130
+ },
131
+ "key": {
132
+ "$ref": "#/$defs/key"
133
+ },
134
+ "value": {
135
+ "$ref": "#/$defs/operand"
136
+ }
137
+ }
138
+ },
139
+ "argument": {
140
+ "type": "object",
141
+ "required": [
142
+ "name",
143
+ "type",
144
+ "required"
145
+ ],
146
+ "additionalProperties": false,
147
+ "properties": {
148
+ "name": {
149
+ "$ref": "#/$defs/key"
150
+ },
151
+ "type": {
152
+ "enum": [
153
+ "string",
154
+ "integer",
155
+ "boolean"
156
+ ]
157
+ },
158
+ "required": {
159
+ "type": "boolean"
160
+ },
161
+ "enum": {
162
+ "type": "array",
163
+ "minItems": 1,
164
+ "maxItems": 32,
165
+ "items": {
166
+ "$ref": "#/$defs/scalar"
167
+ }
168
+ },
169
+ "minimum": {
170
+ "type": "integer",
171
+ "minimum": -9007199254740991,
172
+ "maximum": 9007199254740991
173
+ },
174
+ "maximum": {
175
+ "type": "integer",
176
+ "minimum": -9007199254740991,
177
+ "maximum": 9007199254740991
178
+ },
179
+ "max_length": {
180
+ "type": "integer",
181
+ "minimum": 1,
182
+ "maximum": 4096
183
+ }
184
+ }
185
+ },
186
+ "rule": {
187
+ "type": "object",
188
+ "required": [
189
+ "when",
190
+ "outcome",
191
+ "result",
192
+ "effects"
193
+ ],
194
+ "additionalProperties": false,
195
+ "properties": {
196
+ "when": {
197
+ "type": "array",
198
+ "minItems": 0,
199
+ "maxItems": 16,
200
+ "items": {
201
+ "$ref": "#/$defs/condition"
202
+ }
203
+ },
204
+ "outcome": {
205
+ "enum": [
206
+ "ok",
207
+ "error"
208
+ ]
209
+ },
210
+ "result": {
211
+ "type": "string",
212
+ "maxLength": 16384
213
+ },
214
+ "effects": {
215
+ "type": "array",
216
+ "minItems": 0,
217
+ "maxItems": 16,
218
+ "items": {
219
+ "$ref": "#/$defs/effect"
220
+ }
221
+ }
222
+ }
223
+ },
224
+ "tool": {
225
+ "type": "object",
226
+ "required": [
227
+ "name",
228
+ "description",
229
+ "arguments",
230
+ "requires",
231
+ "rules"
232
+ ],
233
+ "additionalProperties": false,
234
+ "properties": {
235
+ "name": {
236
+ "$ref": "#/$defs/key"
237
+ },
238
+ "description": {
239
+ "type": "string",
240
+ "maxLength": 2000
241
+ },
242
+ "arguments": {
243
+ "type": "array",
244
+ "minItems": 0,
245
+ "maxItems": 16,
246
+ "items": {
247
+ "$ref": "#/$defs/argument"
248
+ }
249
+ },
250
+ "requires": {
251
+ "type": "array",
252
+ "minItems": 0,
253
+ "maxItems": 16,
254
+ "items": {
255
+ "$ref": "#/$defs/condition"
256
+ }
257
+ },
258
+ "rules": {
259
+ "type": "array",
260
+ "minItems": 1,
261
+ "maxItems": 16,
262
+ "items": {
263
+ "$ref": "#/$defs/rule"
264
+ }
265
+ },
266
+ "spend": {
267
+ "type": "object",
268
+ "required": [
269
+ "amount_arg",
270
+ "currency_arg"
271
+ ],
272
+ "additionalProperties": false,
273
+ "properties": {
274
+ "amount_arg": {
275
+ "$ref": "#/$defs/key"
276
+ },
277
+ "currency_arg": {
278
+ "$ref": "#/$defs/key"
279
+ }
280
+ }
281
+ },
282
+ "idempotency_arg": {
283
+ "$ref": "#/$defs/key"
284
+ }
285
+ }
286
+ },
287
+ "budget": {
288
+ "type": "object",
289
+ "required": [
290
+ "max_rounds",
291
+ "max_calls",
292
+ "max_batch",
293
+ "max_ms",
294
+ "max_exchanges",
295
+ "max_sent_bytes",
296
+ "max_received_bytes",
297
+ "max_reply_bytes",
298
+ "max_result_bytes",
299
+ "max_state_bytes",
300
+ "max_trace_bytes",
301
+ "currency",
302
+ "max_spend_minor"
303
+ ],
304
+ "additionalProperties": false,
305
+ "properties": {
306
+ "max_rounds": {
307
+ "type": "integer",
308
+ "minimum": 1,
309
+ "maximum": 10
310
+ },
311
+ "max_calls": {
312
+ "type": "integer",
313
+ "minimum": 1,
314
+ "maximum": 16
315
+ },
316
+ "max_batch": {
317
+ "type": "integer",
318
+ "minimum": 1,
319
+ "maximum": 4
320
+ },
321
+ "max_ms": {
322
+ "type": "integer",
323
+ "minimum": 1,
324
+ "maximum": 60000
325
+ },
326
+ "max_exchanges": {
327
+ "type": "integer",
328
+ "minimum": 1,
329
+ "maximum": 64
330
+ },
331
+ "max_sent_bytes": {
332
+ "type": "integer",
333
+ "minimum": 1,
334
+ "maximum": 2097152
335
+ },
336
+ "max_received_bytes": {
337
+ "type": "integer",
338
+ "minimum": 1,
339
+ "maximum": 2097152
340
+ },
341
+ "max_reply_bytes": {
342
+ "type": "integer",
343
+ "minimum": 1,
344
+ "maximum": 65536
345
+ },
346
+ "max_result_bytes": {
347
+ "type": "integer",
348
+ "minimum": 1,
349
+ "maximum": 16384
350
+ },
351
+ "max_state_bytes": {
352
+ "type": "integer",
353
+ "minimum": 1,
354
+ "maximum": 65536
355
+ },
356
+ "max_trace_bytes": {
357
+ "type": "integer",
358
+ "minimum": 1,
359
+ "maximum": 262144
360
+ },
361
+ "currency": {
362
+ "type": "string",
363
+ "minLength": 1,
364
+ "maxLength": 3,
365
+ "pattern": "^[A-Z]{3}$"
366
+ },
367
+ "max_spend_minor": {
368
+ "type": "integer",
369
+ "minimum": 0,
370
+ "maximum": 9007199254740991
371
+ }
372
+ }
373
+ },
374
+ "terminal": {
375
+ "type": "object",
376
+ "required": [
377
+ "any_of",
378
+ "forbidden_outbound"
379
+ ],
380
+ "additionalProperties": false,
381
+ "properties": {
382
+ "any_of": {
383
+ "type": "array",
384
+ "minItems": 1,
385
+ "maxItems": 8,
386
+ "items": {
387
+ "type": "array",
388
+ "minItems": 1,
389
+ "maxItems": 16,
390
+ "items": {
391
+ "$ref": "#/$defs/condition"
392
+ }
393
+ }
394
+ },
395
+ "forbidden_outbound": {
396
+ "type": "array",
397
+ "minItems": 0,
398
+ "maxItems": 64,
399
+ "items": {
400
+ "type": "string",
401
+ "minLength": 1,
402
+ "maxLength": 1024
403
+ }
404
+ }
405
+ }
406
+ },
407
+ "fixture": {
408
+ "type": "object",
409
+ "required": [
410
+ "initial_state",
411
+ "tools"
412
+ ],
413
+ "additionalProperties": false,
414
+ "properties": {
415
+ "initial_state": {
416
+ "$ref": "#/$defs/state"
417
+ },
418
+ "tools": {
419
+ "type": "array",
420
+ "minItems": 1,
421
+ "maxItems": 16,
422
+ "items": {
423
+ "$ref": "#/$defs/tool"
424
+ }
425
+ }
426
+ }
427
+ },
428
+ "profileRefs": {
429
+ "type": "array",
430
+ "minItems": 1,
431
+ "maxItems": 64,
432
+ "uniqueItems": true,
433
+ "items": {
434
+ "type": "string",
435
+ "maxLength": 100,
436
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}/[1-9][0-9]{0,8}$"
437
+ }
438
+ },
439
+ "teamPolicy": {
440
+ "type": "object",
441
+ "required": [
442
+ "members",
443
+ "require_distinct_owners"
444
+ ],
445
+ "additionalProperties": false,
446
+ "properties": {
447
+ "members": {
448
+ "type": "array",
449
+ "minItems": 3,
450
+ "maxItems": 64,
451
+ "uniqueItems": true,
452
+ "items": {
453
+ "type": "object",
454
+ "required": [
455
+ "agent",
456
+ "owner"
457
+ ],
458
+ "additionalProperties": false,
459
+ "properties": {
460
+ "agent": {
461
+ "anyOf": [
462
+ {
463
+ "const": "$agent"
464
+ },
465
+ {
466
+ "type": "string",
467
+ "pattern": "^did:key:z[1-9A-HJ-NP-Za-km-z]{40,60}$"
468
+ }
469
+ ]
470
+ },
471
+ "owner": {
472
+ "type": "string",
473
+ "pattern": "^did:key:z[1-9A-HJ-NP-Za-km-z]{40,60}$"
474
+ }
475
+ }
476
+ }
477
+ },
478
+ "require_distinct_owners": {
479
+ "type": "boolean"
480
+ },
481
+ "bind_run": {
482
+ "type": "boolean"
483
+ }
484
+ }
485
+ },
486
+ "scope": {
487
+ "type": "string",
488
+ "maxLength": 128,
489
+ "pattern": "^(\\*|[a-z0-9_-]+(\\.[a-z0-9_-]+)*(\\.\\*)?)$"
490
+ },
491
+ "arg": {
492
+ "type": "string",
493
+ "pattern": "^[A-Za-z0-9_]{1,64}$"
494
+ },
495
+ "cert": {
496
+ "type": "object",
497
+ "required": [
498
+ "v",
499
+ "issuer",
500
+ "subject",
501
+ "scopes",
502
+ "exp",
503
+ "sig"
504
+ ],
505
+ "additionalProperties": false,
506
+ "properties": {
507
+ "v": {
508
+ "const": 1
509
+ },
510
+ "issuer": {
511
+ "type": "string",
512
+ "pattern": "^did:key:z[1-9A-HJ-NP-Za-km-z]{40,60}$"
513
+ },
514
+ "subject": {
515
+ "type": "string",
516
+ "pattern": "^did:key:z[1-9A-HJ-NP-Za-km-z]{40,60}$"
517
+ },
518
+ "scopes": {
519
+ "type": "array",
520
+ "minItems": 1,
521
+ "maxItems": 64,
522
+ "items": {
523
+ "$ref": "#/$defs/scope"
524
+ }
525
+ },
526
+ "exp": {
527
+ "type": "string",
528
+ "minLength": 1,
529
+ "maxLength": 64
530
+ },
531
+ "sig": {
532
+ "type": "string",
533
+ "pattern": "^ed25519:[0-9a-f]{128}$"
534
+ }
535
+ }
536
+ },
537
+ "revocation": {
538
+ "type": "object",
539
+ "required": [
540
+ "v",
541
+ "type",
542
+ "cert",
543
+ "ts",
544
+ "sig"
545
+ ],
546
+ "additionalProperties": false,
547
+ "properties": {
548
+ "v": {
549
+ "const": 1
550
+ },
551
+ "type": {
552
+ "const": "revocation"
553
+ },
554
+ "cert": {
555
+ "$ref": "#/$defs/cert"
556
+ },
557
+ "ts": {
558
+ "type": "string",
559
+ "minLength": 1,
560
+ "maxLength": 64
561
+ },
562
+ "sig": {
563
+ "type": "string",
564
+ "pattern": "^ed25519:[0-9a-f]{128}$"
565
+ }
566
+ }
567
+ },
568
+ "link": {
569
+ "type": "object",
570
+ "required": [
571
+ "agent",
572
+ "scopes",
573
+ "spend_limit"
574
+ ],
575
+ "additionalProperties": false,
576
+ "properties": {
577
+ "agent": {
578
+ "type": "string",
579
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
580
+ },
581
+ "scopes": {
582
+ "type": "array",
583
+ "minItems": 1,
584
+ "maxItems": 64,
585
+ "uniqueItems": true,
586
+ "items": {
587
+ "$ref": "#/$defs/scope"
588
+ }
589
+ },
590
+ "spend_limit": {
591
+ "type": "object",
592
+ "required": [
593
+ "amount_minor",
594
+ "currency"
595
+ ],
596
+ "additionalProperties": false,
597
+ "properties": {
598
+ "amount_minor": {
599
+ "type": "integer",
600
+ "minimum": 0,
601
+ "maximum": 9007199254740991
602
+ },
603
+ "currency": {
604
+ "type": "string",
605
+ "pattern": "^[A-Z]{3}$"
606
+ }
607
+ }
608
+ }
609
+ }
610
+ },
611
+ "text": {
612
+ "type": "object",
613
+ "required": [
614
+ "en",
615
+ "ar"
616
+ ],
617
+ "additionalProperties": false,
618
+ "properties": {
619
+ "en": {
620
+ "type": "string",
621
+ "minLength": 1,
622
+ "maxLength": 4000
623
+ },
624
+ "ar": {
625
+ "type": "string",
626
+ "minLength": 1,
627
+ "maxLength": 4000
628
+ }
629
+ }
630
+ },
631
+ "rubric": {
632
+ "type": "object",
633
+ "required": [
634
+ "id",
635
+ "title",
636
+ "pass",
637
+ "fail"
638
+ ],
639
+ "additionalProperties": false,
640
+ "properties": {
641
+ "id": {
642
+ "type": "string",
643
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
644
+ },
645
+ "title": {
646
+ "$ref": "#/$defs/text"
647
+ },
648
+ "pass": {
649
+ "$ref": "#/$defs/text"
650
+ },
651
+ "fail": {
652
+ "$ref": "#/$defs/text"
653
+ }
654
+ }
655
+ },
656
+ "case": {
657
+ "type": "object",
658
+ "required": [
659
+ "id",
660
+ "category",
661
+ "lang",
662
+ "turns",
663
+ "check",
664
+ "fixture",
665
+ "budget",
666
+ "terminal"
667
+ ],
668
+ "additionalProperties": false,
669
+ "properties": {
670
+ "id": {
671
+ "type": "string",
672
+ "pattern": "^[a-z0-9][a-z0-9-]{0,95}$"
673
+ },
674
+ "category": {
675
+ "type": "string",
676
+ "pattern": "^[a-z][a-z0-9_]{0,63}$"
677
+ },
678
+ "lang": {
679
+ "enum": [
680
+ "en",
681
+ "ar",
682
+ "ar-gulf"
683
+ ]
684
+ },
685
+ "turns": {
686
+ "type": "array",
687
+ "minItems": 1,
688
+ "maxItems": 20,
689
+ "items": {
690
+ "type": "object",
691
+ "required": [
692
+ "role",
693
+ "content"
694
+ ],
695
+ "additionalProperties": false,
696
+ "properties": {
697
+ "role": {
698
+ "enum": [
699
+ "user",
700
+ "assistant"
701
+ ]
702
+ },
703
+ "content": {
704
+ "type": "string",
705
+ "minLength": 1,
706
+ "maxLength": 20000
707
+ }
708
+ }
709
+ }
710
+ },
711
+ "documents": {
712
+ "type": "array",
713
+ "maxItems": 10,
714
+ "items": {
715
+ "type": "object",
716
+ "required": [
717
+ "name",
718
+ "text"
719
+ ],
720
+ "additionalProperties": false,
721
+ "properties": {
722
+ "name": {
723
+ "type": "string",
724
+ "minLength": 1,
725
+ "maxLength": 200
726
+ },
727
+ "text": {
728
+ "type": "string",
729
+ "minLength": 1,
730
+ "maxLength": 100000
731
+ }
732
+ }
733
+ }
734
+ },
735
+ "check": {
736
+ "$ref": "#/$defs/check"
737
+ },
738
+ "fixture": {
739
+ "$ref": "#/$defs/fixture"
740
+ },
741
+ "budget": {
742
+ "$ref": "#/$defs/budget"
743
+ },
744
+ "terminal": {
745
+ "$ref": "#/$defs/terminal"
746
+ },
747
+ "profiles": {
748
+ "$ref": "#/$defs/profileRefs"
749
+ },
750
+ "transcript": {
751
+ "$ref": "#/$defs/transcript"
752
+ },
753
+ "family_id": {
754
+ "type": "string",
755
+ "pattern": "^[a-z0-9][a-z0-9-]{0,95}$"
756
+ }
757
+ }
758
+ },
759
+ "check": {
760
+ "type": "object",
761
+ "required": [
762
+ "kind"
763
+ ],
764
+ "additionalProperties": false,
765
+ "properties": {
766
+ "kind": {
767
+ "enum": [
768
+ "not_contains",
769
+ "contains_any",
770
+ "tool_not_called",
771
+ "max_tool_calls",
772
+ "all",
773
+ "judged"
774
+ ]
775
+ },
776
+ "values": {
777
+ "type": "array",
778
+ "minItems": 1,
779
+ "maxItems": 64,
780
+ "items": {
781
+ "type": "string",
782
+ "minLength": 1,
783
+ "maxLength": 2000
784
+ }
785
+ },
786
+ "tools": {
787
+ "type": "array",
788
+ "minItems": 1,
789
+ "maxItems": 64,
790
+ "uniqueItems": true,
791
+ "items": {
792
+ "type": "string",
793
+ "pattern": "^[A-Za-z0-9_-]{1,64}$"
794
+ }
795
+ },
796
+ "n": {
797
+ "type": "integer",
798
+ "minimum": 0,
799
+ "maximum": 1000
800
+ },
801
+ "checks": {
802
+ "type": "array",
803
+ "minItems": 1,
804
+ "maxItems": 16,
805
+ "items": {
806
+ "$ref": "#/$defs/check"
807
+ }
808
+ },
809
+ "rubric": {
810
+ "type": "string",
811
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
812
+ },
813
+ "tool": {
814
+ "type": "string",
815
+ "pattern": "^[A-Za-z0-9_-]{1,64}$"
816
+ },
817
+ "threshold": {
818
+ "type": "integer",
819
+ "minimum": 1,
820
+ "maximum": 64
821
+ },
822
+ "invocation": {
823
+ "enum": [
824
+ "required",
825
+ "optional"
826
+ ]
827
+ },
828
+ "policy": {
829
+ "$ref": "#/$defs/teamPolicy"
830
+ },
831
+ "finding": {
832
+ "type": "string",
833
+ "pattern": "^[A-Z][A-Z0-9_]{0,63}$"
834
+ }
835
+ }
836
+ },
837
+ "suite": {
838
+ "type": "object",
839
+ "required": [
840
+ "v",
841
+ "type",
842
+ "purpose",
843
+ "visibility",
844
+ "mode",
845
+ "id",
846
+ "version",
847
+ "cases"
848
+ ],
849
+ "additionalProperties": false,
850
+ "properties": {
851
+ "v": {
852
+ "const": 1
853
+ },
854
+ "type": {
855
+ "const": "certify.trajectory-suite"
856
+ },
857
+ "purpose": {
858
+ "enum": [
859
+ "practice",
860
+ "certification"
861
+ ]
862
+ },
863
+ "visibility": {
864
+ "enum": [
865
+ "public",
866
+ "held-out"
867
+ ]
868
+ },
869
+ "mode": {
870
+ "const": "simulated_workflow"
871
+ },
872
+ "id": {
873
+ "type": "string",
874
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
875
+ },
876
+ "version": {
877
+ "type": "integer",
878
+ "minimum": 1
879
+ },
880
+ "cases": {
881
+ "type": "array",
882
+ "minItems": 1,
883
+ "maxItems": 64,
884
+ "items": {
885
+ "$ref": "#/$defs/case"
886
+ }
887
+ },
888
+ "rubrics": {
889
+ "type": "array",
890
+ "minItems": 1,
891
+ "maxItems": 64,
892
+ "items": {
893
+ "$ref": "#/$defs/rubric"
894
+ }
895
+ },
896
+ "profiles": {
897
+ "$ref": "#/$defs/profileRefs"
898
+ }
899
+ }
900
+ },
901
+ "assistant_event": {
902
+ "type": "object",
903
+ "required": [
904
+ "kind",
905
+ "round",
906
+ "text"
907
+ ],
908
+ "additionalProperties": false,
909
+ "properties": {
910
+ "kind": {
911
+ "const": "assistant"
912
+ },
913
+ "round": {
914
+ "type": "integer",
915
+ "minimum": 1,
916
+ "maximum": 10
917
+ },
918
+ "text": {
919
+ "type": "string",
920
+ "maxLength": 65536
921
+ }
922
+ }
923
+ },
924
+ "tool_event": {
925
+ "type": "object",
926
+ "required": [
927
+ "kind",
928
+ "round",
929
+ "call_id",
930
+ "name",
931
+ "raw_arguments",
932
+ "arguments",
933
+ "outcome",
934
+ "applied",
935
+ "result",
936
+ "state_before",
937
+ "state_after",
938
+ "spend_minor",
939
+ "findings"
940
+ ],
941
+ "additionalProperties": false,
942
+ "properties": {
943
+ "kind": {
944
+ "const": "tool"
945
+ },
946
+ "round": {
947
+ "type": "integer",
948
+ "minimum": 1,
949
+ "maximum": 10
950
+ },
951
+ "call_id": {
952
+ "type": "string",
953
+ "minLength": 1,
954
+ "maxLength": 128,
955
+ "pattern": "^[A-Za-z0-9._:-]{1,128}$"
956
+ },
957
+ "name": {
958
+ "type": "string",
959
+ "minLength": 1,
960
+ "maxLength": 128
961
+ },
962
+ "raw_arguments": {
963
+ "type": "string",
964
+ "maxLength": 16384
965
+ },
966
+ "arguments": {
967
+ "anyOf": [
968
+ {
969
+ "type": "object"
970
+ },
971
+ {
972
+ "const": null
973
+ }
974
+ ]
975
+ },
976
+ "outcome": {
977
+ "enum": [
978
+ "ok",
979
+ "error",
980
+ "blocked",
981
+ "replayed"
982
+ ]
983
+ },
984
+ "applied": {
985
+ "type": "boolean"
986
+ },
987
+ "result": {
988
+ "type": "string",
989
+ "maxLength": 16384
990
+ },
991
+ "state_before": {
992
+ "type": "string",
993
+ "minLength": 1,
994
+ "maxLength": 71,
995
+ "pattern": "^sha256:[0-9a-f]{64}$"
996
+ },
997
+ "state_after": {
998
+ "type": "string",
999
+ "minLength": 1,
1000
+ "maxLength": 71,
1001
+ "pattern": "^sha256:[0-9a-f]{64}$"
1002
+ },
1003
+ "spend_minor": {
1004
+ "type": "integer",
1005
+ "minimum": 0,
1006
+ "maximum": 9007199254740991
1007
+ },
1008
+ "findings": {
1009
+ "type": "array",
1010
+ "minItems": 0,
1011
+ "maxItems": 16,
1012
+ "items": {
1013
+ "type": "string",
1014
+ "minLength": 1,
1015
+ "maxLength": 64,
1016
+ "pattern": "^[A-Z][A-Z0-9_]{0,63}$"
1017
+ }
1018
+ }
1019
+ }
1020
+ },
1021
+ "trace": {
1022
+ "type": "object",
1023
+ "required": [
1024
+ "v",
1025
+ "type",
1026
+ "purpose",
1027
+ "mode",
1028
+ "case_id",
1029
+ "case_hash",
1030
+ "initial_state_hash",
1031
+ "final_state",
1032
+ "events",
1033
+ "terminal",
1034
+ "usage"
1035
+ ],
1036
+ "additionalProperties": false,
1037
+ "properties": {
1038
+ "v": {
1039
+ "const": 1
1040
+ },
1041
+ "type": {
1042
+ "const": "certify.trajectory-trace"
1043
+ },
1044
+ "purpose": {
1045
+ "enum": [
1046
+ "practice",
1047
+ "certification"
1048
+ ]
1049
+ },
1050
+ "mode": {
1051
+ "const": "simulated_workflow"
1052
+ },
1053
+ "case_id": {
1054
+ "type": "string",
1055
+ "pattern": "^[a-z0-9][a-z0-9-]{0,95}$"
1056
+ },
1057
+ "case_hash": {
1058
+ "type": "string",
1059
+ "minLength": 1,
1060
+ "maxLength": 71,
1061
+ "pattern": "^sha256:[0-9a-f]{64}$"
1062
+ },
1063
+ "initial_state_hash": {
1064
+ "type": "string",
1065
+ "minLength": 1,
1066
+ "maxLength": 71,
1067
+ "pattern": "^sha256:[0-9a-f]{64}$"
1068
+ },
1069
+ "final_state": {
1070
+ "$ref": "#/$defs/state"
1071
+ },
1072
+ "events": {
1073
+ "type": "array",
1074
+ "minItems": 0,
1075
+ "maxItems": 27,
1076
+ "items": {
1077
+ "anyOf": [
1078
+ {
1079
+ "$ref": "#/$defs/assistant_event"
1080
+ },
1081
+ {
1082
+ "$ref": "#/$defs/tool_event"
1083
+ },
1084
+ {
1085
+ "$ref": "#/$defs/rejected_batch"
1086
+ }
1087
+ ]
1088
+ }
1089
+ },
1090
+ "terminal": {
1091
+ "type": "object",
1092
+ "required": [
1093
+ "reason",
1094
+ "complete"
1095
+ ],
1096
+ "additionalProperties": false,
1097
+ "properties": {
1098
+ "reason": {
1099
+ "enum": [
1100
+ "completed",
1101
+ "budget",
1102
+ "cancelled",
1103
+ "provider_error",
1104
+ "lab_error",
1105
+ "invalid_call"
1106
+ ]
1107
+ },
1108
+ "complete": {
1109
+ "type": "boolean"
1110
+ }
1111
+ }
1112
+ },
1113
+ "usage": {
1114
+ "type": "object",
1115
+ "required": [
1116
+ "rounds",
1117
+ "calls",
1118
+ "exchanges",
1119
+ "sent_bytes",
1120
+ "received_bytes",
1121
+ "elapsed_ms",
1122
+ "spend_minor",
1123
+ "currency"
1124
+ ],
1125
+ "additionalProperties": false,
1126
+ "properties": {
1127
+ "rounds": {
1128
+ "type": "integer",
1129
+ "minimum": 0,
1130
+ "maximum": 9007199254740991
1131
+ },
1132
+ "calls": {
1133
+ "type": "integer",
1134
+ "minimum": 0,
1135
+ "maximum": 9007199254740991
1136
+ },
1137
+ "exchanges": {
1138
+ "type": "integer",
1139
+ "minimum": 0,
1140
+ "maximum": 9007199254740991
1141
+ },
1142
+ "sent_bytes": {
1143
+ "type": "integer",
1144
+ "minimum": 0,
1145
+ "maximum": 9007199254740991
1146
+ },
1147
+ "received_bytes": {
1148
+ "type": "integer",
1149
+ "minimum": 0,
1150
+ "maximum": 9007199254740991
1151
+ },
1152
+ "elapsed_ms": {
1153
+ "type": "integer",
1154
+ "minimum": 0,
1155
+ "maximum": 9007199254740991
1156
+ },
1157
+ "spend_minor": {
1158
+ "type": "integer",
1159
+ "minimum": 0,
1160
+ "maximum": 9007199254740991
1161
+ },
1162
+ "currency": {
1163
+ "type": "string",
1164
+ "minLength": 1,
1165
+ "maxLength": 3,
1166
+ "pattern": "^[A-Z]{3}$"
1167
+ }
1168
+ }
1169
+ }
1170
+ }
1171
+ },
1172
+ "rejected_batch": {
1173
+ "type": "object",
1174
+ "required": [
1175
+ "kind",
1176
+ "round",
1177
+ "raw_calls",
1178
+ "finding"
1179
+ ],
1180
+ "additionalProperties": false,
1181
+ "properties": {
1182
+ "kind": {
1183
+ "const": "rejected_batch"
1184
+ },
1185
+ "round": {
1186
+ "type": "integer",
1187
+ "minimum": 1,
1188
+ "maximum": 10
1189
+ },
1190
+ "raw_calls": {
1191
+ "type": "string",
1192
+ "maxLength": 65536
1193
+ },
1194
+ "finding": {
1195
+ "type": "string",
1196
+ "pattern": "^[A-Z][A-Z0-9_]{0,63}$",
1197
+ "maxLength": 64,
1198
+ "minLength": 1
1199
+ }
1200
+ }
1201
+ },
1202
+ "transcriptTurns": {
1203
+ "type": "array",
1204
+ "minItems": 1,
1205
+ "maxItems": 20,
1206
+ "items": {
1207
+ "type": "object",
1208
+ "required": [
1209
+ "role",
1210
+ "content"
1211
+ ],
1212
+ "additionalProperties": false,
1213
+ "properties": {
1214
+ "role": {
1215
+ "enum": [
1216
+ "user",
1217
+ "assistant"
1218
+ ]
1219
+ },
1220
+ "content": {
1221
+ "type": "string",
1222
+ "minLength": 1,
1223
+ "maxLength": 20000
1224
+ }
1225
+ }
1226
+ }
1227
+ },
1228
+ "transcriptFingerprint": {
1229
+ "type": "object",
1230
+ "required": [
1231
+ "v",
1232
+ "type",
1233
+ "model",
1234
+ "prompt",
1235
+ "tools",
1236
+ "policy",
1237
+ "knowledge",
1238
+ "configuration",
1239
+ "id"
1240
+ ],
1241
+ "additionalProperties": false,
1242
+ "properties": {
1243
+ "v": {
1244
+ "const": 1
1245
+ },
1246
+ "type": {
1247
+ "const": "certify.fingerprint"
1248
+ },
1249
+ "model": {
1250
+ "type": "string",
1251
+ "minLength": 1,
1252
+ "maxLength": 200
1253
+ },
1254
+ "prompt": {
1255
+ "anyOf": [
1256
+ {
1257
+ "type": "string",
1258
+ "pattern": "^sha256:[0-9a-f]{64}$"
1259
+ },
1260
+ {
1261
+ "const": null
1262
+ }
1263
+ ]
1264
+ },
1265
+ "tools": {
1266
+ "anyOf": [
1267
+ {
1268
+ "type": "string",
1269
+ "pattern": "^sha256:[0-9a-f]{64}$"
1270
+ },
1271
+ {
1272
+ "const": null
1273
+ }
1274
+ ]
1275
+ },
1276
+ "policy": {
1277
+ "anyOf": [
1278
+ {
1279
+ "type": "string",
1280
+ "pattern": "^sha256:[0-9a-f]{64}$"
1281
+ },
1282
+ {
1283
+ "const": null
1284
+ }
1285
+ ]
1286
+ },
1287
+ "knowledge": {
1288
+ "anyOf": [
1289
+ {
1290
+ "type": "string",
1291
+ "pattern": "^sha256:[0-9a-f]{64}$"
1292
+ },
1293
+ {
1294
+ "const": null
1295
+ }
1296
+ ]
1297
+ },
1298
+ "configuration": {
1299
+ "type": "string",
1300
+ "pattern": "^ver_[0-9a-f]{12}$"
1301
+ },
1302
+ "id": {
1303
+ "type": "string",
1304
+ "pattern": "^sha256:[0-9a-f]{64}$"
1305
+ }
1306
+ }
1307
+ },
1308
+ "transcript": {
1309
+ "type": "object",
1310
+ "required": [
1311
+ "v",
1312
+ "type",
1313
+ "assessment_scope",
1314
+ "source_kind",
1315
+ "language",
1316
+ "wrapper",
1317
+ "original_turns",
1318
+ "original_turns_hash",
1319
+ "processed_turns_hash",
1320
+ "processing"
1321
+ ],
1322
+ "additionalProperties": false,
1323
+ "properties": {
1324
+ "v": {
1325
+ "const": 1
1326
+ },
1327
+ "type": {
1328
+ "const": "certify.transcript-provenance"
1329
+ },
1330
+ "assessment_scope": {
1331
+ "const": "transcript_behavior"
1332
+ },
1333
+ "source_kind": {
1334
+ "enum": [
1335
+ "authored_transcript",
1336
+ "provided_transcript"
1337
+ ]
1338
+ },
1339
+ "language": {
1340
+ "enum": [
1341
+ "en",
1342
+ "ar",
1343
+ "ar-gulf"
1344
+ ]
1345
+ },
1346
+ "wrapper": {
1347
+ "type": "object",
1348
+ "required": [
1349
+ "did",
1350
+ "fingerprint"
1351
+ ],
1352
+ "additionalProperties": false,
1353
+ "properties": {
1354
+ "did": {
1355
+ "type": "string",
1356
+ "pattern": "^did:key:z[1-9A-HJ-NP-Za-km-z]{40,60}$"
1357
+ },
1358
+ "fingerprint": {
1359
+ "$ref": "#/$defs/transcriptFingerprint"
1360
+ }
1361
+ }
1362
+ },
1363
+ "original_turns": {
1364
+ "$ref": "#/$defs/transcriptTurns"
1365
+ },
1366
+ "original_turns_hash": {
1367
+ "type": "string",
1368
+ "pattern": "^sha256:[0-9a-f]{64}$"
1369
+ },
1370
+ "processed_turns_hash": {
1371
+ "type": "string",
1372
+ "pattern": "^sha256:[0-9a-f]{64}$"
1373
+ },
1374
+ "processing": {
1375
+ "type": "object",
1376
+ "required": [
1377
+ "id",
1378
+ "version"
1379
+ ],
1380
+ "additionalProperties": false,
1381
+ "properties": {
1382
+ "id": {
1383
+ "type": "string",
1384
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
1385
+ },
1386
+ "version": {
1387
+ "type": "integer",
1388
+ "minimum": 1,
1389
+ "maximum": 1000000
1390
+ }
1391
+ }
1392
+ }
1393
+ }
1394
+ }
1395
+ }
1396
+ }