@basou/core 0.44.0 → 0.46.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.
@@ -0,0 +1,1452 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://basou.dev/schemas/0.2.0/event.schema.json",
4
+ "title": "Basou Event",
5
+ "description": "One line of a `.basou/sessions/<id>/events.jsonl` stream (a discriminated union over the event `type`).",
6
+ "oneOf": [
7
+ {
8
+ "type": "object",
9
+ "properties": {
10
+ "schema_version": {
11
+ "type": "string",
12
+ "pattern": "^0\\.\\d+\\.\\d+$"
13
+ },
14
+ "id": {
15
+ "type": "string",
16
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
17
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
18
+ },
19
+ "session_id": {
20
+ "type": "string",
21
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
22
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
23
+ },
24
+ "occurred_at": {
25
+ "type": "string",
26
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
27
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
28
+ },
29
+ "source": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "prev_hash": {
34
+ "type": "string"
35
+ },
36
+ "type": {
37
+ "type": "string",
38
+ "const": "session_started"
39
+ }
40
+ },
41
+ "required": [
42
+ "schema_version",
43
+ "id",
44
+ "session_id",
45
+ "occurred_at",
46
+ "source",
47
+ "type"
48
+ ]
49
+ },
50
+ {
51
+ "type": "object",
52
+ "properties": {
53
+ "schema_version": {
54
+ "type": "string",
55
+ "pattern": "^0\\.\\d+\\.\\d+$"
56
+ },
57
+ "id": {
58
+ "type": "string",
59
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
60
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
61
+ },
62
+ "session_id": {
63
+ "type": "string",
64
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
65
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
66
+ },
67
+ "occurred_at": {
68
+ "type": "string",
69
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
70
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
71
+ },
72
+ "source": {
73
+ "type": "string",
74
+ "minLength": 1
75
+ },
76
+ "prev_hash": {
77
+ "type": "string"
78
+ },
79
+ "type": {
80
+ "type": "string",
81
+ "const": "session_ended"
82
+ },
83
+ "exit_code": {
84
+ "type": "integer",
85
+ "minimum": -9007199254740991,
86
+ "maximum": 9007199254740991
87
+ }
88
+ },
89
+ "required": [
90
+ "schema_version",
91
+ "id",
92
+ "session_id",
93
+ "occurred_at",
94
+ "source",
95
+ "type"
96
+ ]
97
+ },
98
+ {
99
+ "type": "object",
100
+ "properties": {
101
+ "schema_version": {
102
+ "type": "string",
103
+ "pattern": "^0\\.\\d+\\.\\d+$"
104
+ },
105
+ "id": {
106
+ "type": "string",
107
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
108
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
109
+ },
110
+ "session_id": {
111
+ "type": "string",
112
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
113
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
114
+ },
115
+ "occurred_at": {
116
+ "type": "string",
117
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
118
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
119
+ },
120
+ "source": {
121
+ "type": "string",
122
+ "minLength": 1
123
+ },
124
+ "prev_hash": {
125
+ "type": "string"
126
+ },
127
+ "type": {
128
+ "type": "string",
129
+ "const": "session_status_changed"
130
+ },
131
+ "from": {
132
+ "type": "string"
133
+ },
134
+ "to": {
135
+ "type": "string"
136
+ }
137
+ },
138
+ "required": [
139
+ "schema_version",
140
+ "id",
141
+ "session_id",
142
+ "occurred_at",
143
+ "source",
144
+ "type",
145
+ "from",
146
+ "to"
147
+ ]
148
+ },
149
+ {
150
+ "type": "object",
151
+ "properties": {
152
+ "schema_version": {
153
+ "type": "string",
154
+ "pattern": "^0\\.\\d+\\.\\d+$"
155
+ },
156
+ "id": {
157
+ "type": "string",
158
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
159
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
160
+ },
161
+ "session_id": {
162
+ "type": "string",
163
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
164
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
165
+ },
166
+ "occurred_at": {
167
+ "type": "string",
168
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
169
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
170
+ },
171
+ "source": {
172
+ "type": "string",
173
+ "minLength": 1
174
+ },
175
+ "prev_hash": {
176
+ "type": "string"
177
+ },
178
+ "type": {
179
+ "type": "string",
180
+ "const": "approval_requested"
181
+ },
182
+ "approval_id": {
183
+ "type": "string",
184
+ "pattern": "^appr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
185
+ "description": "Basou appr id: `appr_` followed by a 26-character Crockford Base32 ULID."
186
+ },
187
+ "expires_at": {
188
+ "default": null,
189
+ "anyOf": [
190
+ {
191
+ "type": "string",
192
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
193
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
194
+ },
195
+ {
196
+ "type": "null"
197
+ }
198
+ ]
199
+ },
200
+ "risk_level": {
201
+ "type": "string",
202
+ "enum": [
203
+ "low",
204
+ "medium",
205
+ "high",
206
+ "critical"
207
+ ]
208
+ },
209
+ "action": {
210
+ "type": "object",
211
+ "properties": {
212
+ "kind": {
213
+ "type": "string"
214
+ }
215
+ },
216
+ "required": [
217
+ "kind"
218
+ ],
219
+ "additionalProperties": {}
220
+ },
221
+ "reason": {
222
+ "type": "string"
223
+ },
224
+ "status": {
225
+ "type": "string",
226
+ "const": "pending"
227
+ }
228
+ },
229
+ "required": [
230
+ "schema_version",
231
+ "id",
232
+ "session_id",
233
+ "occurred_at",
234
+ "source",
235
+ "type",
236
+ "approval_id",
237
+ "risk_level",
238
+ "action",
239
+ "reason",
240
+ "status"
241
+ ]
242
+ },
243
+ {
244
+ "type": "object",
245
+ "properties": {
246
+ "schema_version": {
247
+ "type": "string",
248
+ "pattern": "^0\\.\\d+\\.\\d+$"
249
+ },
250
+ "id": {
251
+ "type": "string",
252
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
253
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
254
+ },
255
+ "session_id": {
256
+ "type": "string",
257
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
258
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
259
+ },
260
+ "occurred_at": {
261
+ "type": "string",
262
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
263
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
264
+ },
265
+ "source": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ },
269
+ "prev_hash": {
270
+ "type": "string"
271
+ },
272
+ "type": {
273
+ "type": "string",
274
+ "const": "approval_approved"
275
+ },
276
+ "approval_id": {
277
+ "type": "string",
278
+ "pattern": "^appr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
279
+ "description": "Basou appr id: `appr_` followed by a 26-character Crockford Base32 ULID."
280
+ },
281
+ "resolver": {
282
+ "type": "string"
283
+ },
284
+ "note": {
285
+ "type": [
286
+ "string",
287
+ "null"
288
+ ]
289
+ }
290
+ },
291
+ "required": [
292
+ "schema_version",
293
+ "id",
294
+ "session_id",
295
+ "occurred_at",
296
+ "source",
297
+ "type",
298
+ "approval_id"
299
+ ]
300
+ },
301
+ {
302
+ "type": "object",
303
+ "properties": {
304
+ "schema_version": {
305
+ "type": "string",
306
+ "pattern": "^0\\.\\d+\\.\\d+$"
307
+ },
308
+ "id": {
309
+ "type": "string",
310
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
311
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
312
+ },
313
+ "session_id": {
314
+ "type": "string",
315
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
316
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
317
+ },
318
+ "occurred_at": {
319
+ "type": "string",
320
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
321
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
322
+ },
323
+ "source": {
324
+ "type": "string",
325
+ "minLength": 1
326
+ },
327
+ "prev_hash": {
328
+ "type": "string"
329
+ },
330
+ "type": {
331
+ "type": "string",
332
+ "const": "approval_rejected"
333
+ },
334
+ "approval_id": {
335
+ "type": "string",
336
+ "pattern": "^appr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
337
+ "description": "Basou appr id: `appr_` followed by a 26-character Crockford Base32 ULID."
338
+ },
339
+ "resolver": {
340
+ "type": "string"
341
+ },
342
+ "reason": {
343
+ "type": "string"
344
+ }
345
+ },
346
+ "required": [
347
+ "schema_version",
348
+ "id",
349
+ "session_id",
350
+ "occurred_at",
351
+ "source",
352
+ "type",
353
+ "approval_id",
354
+ "reason"
355
+ ]
356
+ },
357
+ {
358
+ "type": "object",
359
+ "properties": {
360
+ "schema_version": {
361
+ "type": "string",
362
+ "pattern": "^0\\.\\d+\\.\\d+$"
363
+ },
364
+ "id": {
365
+ "type": "string",
366
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
367
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
368
+ },
369
+ "session_id": {
370
+ "type": "string",
371
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
372
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
373
+ },
374
+ "occurred_at": {
375
+ "type": "string",
376
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
377
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
378
+ },
379
+ "source": {
380
+ "type": "string",
381
+ "minLength": 1
382
+ },
383
+ "prev_hash": {
384
+ "type": "string"
385
+ },
386
+ "type": {
387
+ "type": "string",
388
+ "const": "approval_expired"
389
+ },
390
+ "approval_id": {
391
+ "type": "string",
392
+ "pattern": "^appr_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
393
+ "description": "Basou appr id: `appr_` followed by a 26-character Crockford Base32 ULID."
394
+ }
395
+ },
396
+ "required": [
397
+ "schema_version",
398
+ "id",
399
+ "session_id",
400
+ "occurred_at",
401
+ "source",
402
+ "type",
403
+ "approval_id"
404
+ ]
405
+ },
406
+ {
407
+ "type": "object",
408
+ "properties": {
409
+ "schema_version": {
410
+ "type": "string",
411
+ "pattern": "^0\\.\\d+\\.\\d+$"
412
+ },
413
+ "id": {
414
+ "type": "string",
415
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
416
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
417
+ },
418
+ "session_id": {
419
+ "type": "string",
420
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
421
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
422
+ },
423
+ "occurred_at": {
424
+ "type": "string",
425
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
426
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
427
+ },
428
+ "source": {
429
+ "type": "string",
430
+ "minLength": 1
431
+ },
432
+ "prev_hash": {
433
+ "type": "string"
434
+ },
435
+ "type": {
436
+ "type": "string",
437
+ "const": "command_executed"
438
+ },
439
+ "command": {
440
+ "description": "Spawned executable name. null means basou did not observe the executor - not a default, and not a benign value.",
441
+ "type": [
442
+ "string",
443
+ "null"
444
+ ]
445
+ },
446
+ "args": {
447
+ "type": "array",
448
+ "items": {
449
+ "type": "string"
450
+ }
451
+ },
452
+ "cwd": {
453
+ "description": "Working directory the command ran in. null means the directory could not be resolved; it is never the session's directory as a fallback.",
454
+ "type": [
455
+ "string",
456
+ "null"
457
+ ]
458
+ },
459
+ "exit_code": {
460
+ "anyOf": [
461
+ {
462
+ "type": "integer",
463
+ "minimum": -9007199254740991,
464
+ "maximum": 9007199254740991
465
+ },
466
+ {
467
+ "type": "null"
468
+ }
469
+ ],
470
+ "description": "Child exit code. null means the outcome is unknown (signal-terminated, or never recorded by the source). null is not success."
471
+ },
472
+ "signal": {
473
+ "type": [
474
+ "string",
475
+ "null"
476
+ ]
477
+ },
478
+ "received_signal": {
479
+ "type": [
480
+ "string",
481
+ "null"
482
+ ]
483
+ },
484
+ "duration_ms": {
485
+ "anyOf": [
486
+ {
487
+ "type": "integer",
488
+ "minimum": 0,
489
+ "maximum": 9007199254740991
490
+ },
491
+ {
492
+ "type": "null"
493
+ }
494
+ ],
495
+ "description": "Observed duration in milliseconds, or null when no duration was observed. Read 0 as unobserved too, on any version: a spawned process cannot run in under half a millisecond, and under schema_version 0.1.0 a writer with nothing to report stored 0 as the floor. Writers at 0.2.0 and above record null instead and never write 0."
496
+ }
497
+ },
498
+ "required": [
499
+ "schema_version",
500
+ "id",
501
+ "session_id",
502
+ "occurred_at",
503
+ "source",
504
+ "type",
505
+ "command",
506
+ "args",
507
+ "cwd",
508
+ "exit_code",
509
+ "duration_ms"
510
+ ]
511
+ },
512
+ {
513
+ "type": "object",
514
+ "properties": {
515
+ "schema_version": {
516
+ "type": "string",
517
+ "pattern": "^0\\.\\d+\\.\\d+$"
518
+ },
519
+ "id": {
520
+ "type": "string",
521
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
522
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
523
+ },
524
+ "session_id": {
525
+ "type": "string",
526
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
527
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
528
+ },
529
+ "occurred_at": {
530
+ "type": "string",
531
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
532
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
533
+ },
534
+ "source": {
535
+ "type": "string",
536
+ "minLength": 1
537
+ },
538
+ "prev_hash": {
539
+ "type": "string"
540
+ },
541
+ "type": {
542
+ "type": "string",
543
+ "const": "git_snapshot"
544
+ },
545
+ "head": {
546
+ "type": "string"
547
+ },
548
+ "branch": {
549
+ "type": "string"
550
+ },
551
+ "dirty": {
552
+ "type": "boolean"
553
+ },
554
+ "staged": {
555
+ "type": "array",
556
+ "items": {
557
+ "type": "string"
558
+ }
559
+ },
560
+ "unstaged": {
561
+ "type": "array",
562
+ "items": {
563
+ "type": "string"
564
+ }
565
+ },
566
+ "untracked": {
567
+ "type": "array",
568
+ "items": {
569
+ "type": "string"
570
+ }
571
+ },
572
+ "ahead": {
573
+ "type": "integer",
574
+ "minimum": 0,
575
+ "maximum": 9007199254740991
576
+ },
577
+ "behind": {
578
+ "type": "integer",
579
+ "minimum": 0,
580
+ "maximum": 9007199254740991
581
+ }
582
+ },
583
+ "required": [
584
+ "schema_version",
585
+ "id",
586
+ "session_id",
587
+ "occurred_at",
588
+ "source",
589
+ "type",
590
+ "head",
591
+ "branch",
592
+ "dirty",
593
+ "staged",
594
+ "unstaged",
595
+ "untracked"
596
+ ]
597
+ },
598
+ {
599
+ "type": "object",
600
+ "properties": {
601
+ "schema_version": {
602
+ "type": "string",
603
+ "pattern": "^0\\.\\d+\\.\\d+$"
604
+ },
605
+ "id": {
606
+ "type": "string",
607
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
608
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
609
+ },
610
+ "session_id": {
611
+ "type": "string",
612
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
613
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
614
+ },
615
+ "occurred_at": {
616
+ "type": "string",
617
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
618
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
619
+ },
620
+ "source": {
621
+ "type": "string",
622
+ "minLength": 1
623
+ },
624
+ "prev_hash": {
625
+ "type": "string"
626
+ },
627
+ "type": {
628
+ "type": "string",
629
+ "const": "file_changed"
630
+ },
631
+ "path": {
632
+ "type": "string"
633
+ },
634
+ "change_type": {
635
+ "type": "string",
636
+ "enum": [
637
+ "added",
638
+ "modified",
639
+ "deleted",
640
+ "renamed"
641
+ ]
642
+ },
643
+ "old_path": {
644
+ "type": [
645
+ "string",
646
+ "null"
647
+ ]
648
+ }
649
+ },
650
+ "required": [
651
+ "schema_version",
652
+ "id",
653
+ "session_id",
654
+ "occurred_at",
655
+ "source",
656
+ "type",
657
+ "path",
658
+ "change_type"
659
+ ]
660
+ },
661
+ {
662
+ "type": "object",
663
+ "properties": {
664
+ "schema_version": {
665
+ "type": "string",
666
+ "pattern": "^0\\.\\d+\\.\\d+$"
667
+ },
668
+ "id": {
669
+ "type": "string",
670
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
671
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
672
+ },
673
+ "session_id": {
674
+ "type": "string",
675
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
676
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
677
+ },
678
+ "occurred_at": {
679
+ "type": "string",
680
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
681
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
682
+ },
683
+ "source": {
684
+ "type": "string",
685
+ "minLength": 1
686
+ },
687
+ "prev_hash": {
688
+ "type": "string"
689
+ },
690
+ "type": {
691
+ "type": "string",
692
+ "const": "decision_recorded"
693
+ },
694
+ "decision_id": {
695
+ "type": "string",
696
+ "pattern": "^decision_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
697
+ "description": "Basou decision id: `decision_` followed by a 26-character Crockford Base32 ULID."
698
+ },
699
+ "title": {
700
+ "type": "string"
701
+ },
702
+ "rationale": {
703
+ "type": [
704
+ "string",
705
+ "null"
706
+ ]
707
+ },
708
+ "alternatives": {
709
+ "type": "array",
710
+ "items": {
711
+ "type": "string",
712
+ "minLength": 1
713
+ }
714
+ },
715
+ "rejected_reason": {
716
+ "type": [
717
+ "string",
718
+ "null"
719
+ ]
720
+ },
721
+ "linked_events": {
722
+ "type": "array",
723
+ "items": {
724
+ "type": "string",
725
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
726
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
727
+ }
728
+ },
729
+ "linked_files": {
730
+ "type": "array",
731
+ "items": {
732
+ "type": "string",
733
+ "minLength": 1,
734
+ "maxLength": 4096
735
+ }
736
+ },
737
+ "kind": {
738
+ "type": "string",
739
+ "enum": [
740
+ "decision",
741
+ "track"
742
+ ]
743
+ }
744
+ },
745
+ "required": [
746
+ "schema_version",
747
+ "id",
748
+ "session_id",
749
+ "occurred_at",
750
+ "source",
751
+ "type",
752
+ "decision_id",
753
+ "title"
754
+ ]
755
+ },
756
+ {
757
+ "type": "object",
758
+ "properties": {
759
+ "schema_version": {
760
+ "type": "string",
761
+ "pattern": "^0\\.\\d+\\.\\d+$"
762
+ },
763
+ "id": {
764
+ "type": "string",
765
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
766
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
767
+ },
768
+ "session_id": {
769
+ "type": "string",
770
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
771
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
772
+ },
773
+ "occurred_at": {
774
+ "type": "string",
775
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
776
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
777
+ },
778
+ "source": {
779
+ "type": "string",
780
+ "minLength": 1
781
+ },
782
+ "prev_hash": {
783
+ "type": "string"
784
+ },
785
+ "type": {
786
+ "type": "string",
787
+ "const": "decision_voided"
788
+ },
789
+ "decision_id": {
790
+ "type": "string",
791
+ "pattern": "^decision_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
792
+ "description": "Basou decision id: `decision_` followed by a 26-character Crockford Base32 ULID."
793
+ },
794
+ "reason": {
795
+ "type": [
796
+ "string",
797
+ "null"
798
+ ]
799
+ },
800
+ "superseded_by": {
801
+ "type": "string",
802
+ "pattern": "^decision_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
803
+ "description": "Basou decision id: `decision_` followed by a 26-character Crockford Base32 ULID."
804
+ }
805
+ },
806
+ "required": [
807
+ "schema_version",
808
+ "id",
809
+ "session_id",
810
+ "occurred_at",
811
+ "source",
812
+ "type",
813
+ "decision_id"
814
+ ]
815
+ },
816
+ {
817
+ "type": "object",
818
+ "properties": {
819
+ "schema_version": {
820
+ "type": "string",
821
+ "pattern": "^0\\.\\d+\\.\\d+$"
822
+ },
823
+ "id": {
824
+ "type": "string",
825
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
826
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
827
+ },
828
+ "session_id": {
829
+ "type": "string",
830
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
831
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
832
+ },
833
+ "occurred_at": {
834
+ "type": "string",
835
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
836
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
837
+ },
838
+ "source": {
839
+ "type": "string",
840
+ "minLength": 1
841
+ },
842
+ "prev_hash": {
843
+ "type": "string"
844
+ },
845
+ "type": {
846
+ "type": "string",
847
+ "const": "task_created"
848
+ },
849
+ "task_id": {
850
+ "type": "string",
851
+ "pattern": "^task_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
852
+ "description": "Basou task id: `task_` followed by a 26-character Crockford Base32 ULID."
853
+ },
854
+ "title": {
855
+ "type": "string"
856
+ }
857
+ },
858
+ "required": [
859
+ "schema_version",
860
+ "id",
861
+ "session_id",
862
+ "occurred_at",
863
+ "source",
864
+ "type",
865
+ "task_id",
866
+ "title"
867
+ ]
868
+ },
869
+ {
870
+ "type": "object",
871
+ "properties": {
872
+ "schema_version": {
873
+ "type": "string",
874
+ "pattern": "^0\\.\\d+\\.\\d+$"
875
+ },
876
+ "id": {
877
+ "type": "string",
878
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
879
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
880
+ },
881
+ "session_id": {
882
+ "type": "string",
883
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
884
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
885
+ },
886
+ "occurred_at": {
887
+ "type": "string",
888
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
889
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
890
+ },
891
+ "source": {
892
+ "type": "string",
893
+ "minLength": 1
894
+ },
895
+ "prev_hash": {
896
+ "type": "string"
897
+ },
898
+ "type": {
899
+ "type": "string",
900
+ "const": "task_status_changed"
901
+ },
902
+ "task_id": {
903
+ "type": "string",
904
+ "pattern": "^task_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
905
+ "description": "Basou task id: `task_` followed by a 26-character Crockford Base32 ULID."
906
+ },
907
+ "from": {
908
+ "type": "string"
909
+ },
910
+ "to": {
911
+ "type": "string"
912
+ }
913
+ },
914
+ "required": [
915
+ "schema_version",
916
+ "id",
917
+ "session_id",
918
+ "occurred_at",
919
+ "source",
920
+ "type",
921
+ "task_id",
922
+ "from",
923
+ "to"
924
+ ]
925
+ },
926
+ {
927
+ "type": "object",
928
+ "properties": {
929
+ "schema_version": {
930
+ "type": "string",
931
+ "pattern": "^0\\.\\d+\\.\\d+$"
932
+ },
933
+ "id": {
934
+ "type": "string",
935
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
936
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
937
+ },
938
+ "session_id": {
939
+ "type": "string",
940
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
941
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
942
+ },
943
+ "occurred_at": {
944
+ "type": "string",
945
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
946
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
947
+ },
948
+ "source": {
949
+ "type": "string",
950
+ "minLength": 1
951
+ },
952
+ "prev_hash": {
953
+ "type": "string"
954
+ },
955
+ "type": {
956
+ "type": "string",
957
+ "const": "task_reconciled"
958
+ },
959
+ "task_id": {
960
+ "type": "string",
961
+ "pattern": "^task_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
962
+ "description": "Basou task id: `task_` followed by a 26-character Crockford Base32 ULID."
963
+ },
964
+ "removed_created_in_session": {
965
+ "default": null,
966
+ "anyOf": [
967
+ {
968
+ "type": "string",
969
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
970
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
971
+ },
972
+ {
973
+ "type": "null"
974
+ }
975
+ ]
976
+ },
977
+ "created_in_session_replacement": {
978
+ "default": null,
979
+ "anyOf": [
980
+ {
981
+ "type": "string",
982
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
983
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
984
+ },
985
+ {
986
+ "type": "null"
987
+ }
988
+ ]
989
+ },
990
+ "removed_linked_sessions": {
991
+ "default": [],
992
+ "type": "array",
993
+ "items": {
994
+ "type": "string",
995
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
996
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
997
+ }
998
+ }
999
+ },
1000
+ "required": [
1001
+ "schema_version",
1002
+ "id",
1003
+ "session_id",
1004
+ "occurred_at",
1005
+ "source",
1006
+ "type",
1007
+ "task_id"
1008
+ ],
1009
+ "additionalProperties": false
1010
+ },
1011
+ {
1012
+ "type": "object",
1013
+ "properties": {
1014
+ "schema_version": {
1015
+ "type": "string",
1016
+ "pattern": "^0\\.\\d+\\.\\d+$"
1017
+ },
1018
+ "id": {
1019
+ "type": "string",
1020
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1021
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
1022
+ },
1023
+ "session_id": {
1024
+ "type": "string",
1025
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1026
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1027
+ },
1028
+ "occurred_at": {
1029
+ "type": "string",
1030
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
1031
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
1032
+ },
1033
+ "source": {
1034
+ "type": "string",
1035
+ "minLength": 1
1036
+ },
1037
+ "prev_hash": {
1038
+ "type": "string"
1039
+ },
1040
+ "type": {
1041
+ "type": "string",
1042
+ "const": "task_linkage_refreshed"
1043
+ },
1044
+ "task_id": {
1045
+ "type": "string",
1046
+ "pattern": "^task_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1047
+ "description": "Basou task id: `task_` followed by a 26-character Crockford Base32 ULID."
1048
+ },
1049
+ "added_linked_sessions": {
1050
+ "default": [],
1051
+ "type": "array",
1052
+ "items": {
1053
+ "type": "string",
1054
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1055
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1056
+ }
1057
+ },
1058
+ "removed_linked_sessions": {
1059
+ "default": [],
1060
+ "type": "array",
1061
+ "items": {
1062
+ "type": "string",
1063
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1064
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1065
+ }
1066
+ },
1067
+ "final_count": {
1068
+ "type": "integer",
1069
+ "minimum": 0,
1070
+ "maximum": 9007199254740991
1071
+ }
1072
+ },
1073
+ "required": [
1074
+ "schema_version",
1075
+ "id",
1076
+ "session_id",
1077
+ "occurred_at",
1078
+ "source",
1079
+ "type",
1080
+ "task_id"
1081
+ ],
1082
+ "additionalProperties": false
1083
+ },
1084
+ {
1085
+ "type": "object",
1086
+ "properties": {
1087
+ "schema_version": {
1088
+ "type": "string",
1089
+ "pattern": "^0\\.\\d+\\.\\d+$"
1090
+ },
1091
+ "id": {
1092
+ "type": "string",
1093
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1094
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
1095
+ },
1096
+ "session_id": {
1097
+ "type": "string",
1098
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1099
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1100
+ },
1101
+ "occurred_at": {
1102
+ "type": "string",
1103
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
1104
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
1105
+ },
1106
+ "source": {
1107
+ "type": "string",
1108
+ "minLength": 1
1109
+ },
1110
+ "prev_hash": {
1111
+ "type": "string"
1112
+ },
1113
+ "type": {
1114
+ "type": "string",
1115
+ "const": "task_deleted"
1116
+ },
1117
+ "task_id": {
1118
+ "type": "string",
1119
+ "pattern": "^task_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1120
+ "description": "Basou task id: `task_` followed by a 26-character Crockford Base32 ULID."
1121
+ },
1122
+ "title": {
1123
+ "type": "string",
1124
+ "minLength": 1
1125
+ }
1126
+ },
1127
+ "required": [
1128
+ "schema_version",
1129
+ "id",
1130
+ "session_id",
1131
+ "occurred_at",
1132
+ "source",
1133
+ "type",
1134
+ "task_id",
1135
+ "title"
1136
+ ],
1137
+ "additionalProperties": false
1138
+ },
1139
+ {
1140
+ "type": "object",
1141
+ "properties": {
1142
+ "schema_version": {
1143
+ "type": "string",
1144
+ "pattern": "^0\\.\\d+\\.\\d+$"
1145
+ },
1146
+ "id": {
1147
+ "type": "string",
1148
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1149
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
1150
+ },
1151
+ "session_id": {
1152
+ "type": "string",
1153
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1154
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1155
+ },
1156
+ "occurred_at": {
1157
+ "type": "string",
1158
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
1159
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
1160
+ },
1161
+ "source": {
1162
+ "type": "string",
1163
+ "minLength": 1
1164
+ },
1165
+ "prev_hash": {
1166
+ "type": "string"
1167
+ },
1168
+ "type": {
1169
+ "type": "string",
1170
+ "const": "task_archived"
1171
+ },
1172
+ "task_id": {
1173
+ "type": "string",
1174
+ "pattern": "^task_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1175
+ "description": "Basou task id: `task_` followed by a 26-character Crockford Base32 ULID."
1176
+ },
1177
+ "title": {
1178
+ "type": "string",
1179
+ "minLength": 1
1180
+ }
1181
+ },
1182
+ "required": [
1183
+ "schema_version",
1184
+ "id",
1185
+ "session_id",
1186
+ "occurred_at",
1187
+ "source",
1188
+ "type",
1189
+ "task_id",
1190
+ "title"
1191
+ ],
1192
+ "additionalProperties": false
1193
+ },
1194
+ {
1195
+ "type": "object",
1196
+ "properties": {
1197
+ "schema_version": {
1198
+ "type": "string",
1199
+ "pattern": "^0\\.\\d+\\.\\d+$"
1200
+ },
1201
+ "id": {
1202
+ "type": "string",
1203
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1204
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
1205
+ },
1206
+ "session_id": {
1207
+ "type": "string",
1208
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1209
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1210
+ },
1211
+ "occurred_at": {
1212
+ "type": "string",
1213
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
1214
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
1215
+ },
1216
+ "source": {
1217
+ "type": "string",
1218
+ "minLength": 1
1219
+ },
1220
+ "prev_hash": {
1221
+ "type": "string"
1222
+ },
1223
+ "type": {
1224
+ "type": "string",
1225
+ "const": "note_added"
1226
+ },
1227
+ "body": {
1228
+ "type": "string"
1229
+ },
1230
+ "kind": {
1231
+ "type": "string",
1232
+ "enum": [
1233
+ "note",
1234
+ "next_step"
1235
+ ]
1236
+ }
1237
+ },
1238
+ "required": [
1239
+ "schema_version",
1240
+ "id",
1241
+ "session_id",
1242
+ "occurred_at",
1243
+ "source",
1244
+ "type",
1245
+ "body"
1246
+ ]
1247
+ },
1248
+ {
1249
+ "type": "object",
1250
+ "properties": {
1251
+ "schema_version": {
1252
+ "type": "string",
1253
+ "pattern": "^0\\.\\d+\\.\\d+$"
1254
+ },
1255
+ "id": {
1256
+ "type": "string",
1257
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1258
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
1259
+ },
1260
+ "session_id": {
1261
+ "type": "string",
1262
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1263
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1264
+ },
1265
+ "occurred_at": {
1266
+ "type": "string",
1267
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
1268
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
1269
+ },
1270
+ "source": {
1271
+ "type": "string",
1272
+ "minLength": 1
1273
+ },
1274
+ "prev_hash": {
1275
+ "type": "string"
1276
+ },
1277
+ "type": {
1278
+ "type": "string",
1279
+ "const": "review_recorded"
1280
+ },
1281
+ "reviewer": {
1282
+ "type": "string",
1283
+ "minLength": 1
1284
+ },
1285
+ "target": {
1286
+ "type": "string",
1287
+ "minLength": 1
1288
+ },
1289
+ "repos": {
1290
+ "type": "array",
1291
+ "items": {
1292
+ "type": "string",
1293
+ "minLength": 1
1294
+ }
1295
+ },
1296
+ "repos_resolved": {
1297
+ "type": "array",
1298
+ "items": {
1299
+ "type": "string",
1300
+ "minLength": 1
1301
+ }
1302
+ },
1303
+ "commits": {
1304
+ "type": "array",
1305
+ "items": {
1306
+ "type": "string",
1307
+ "minLength": 1
1308
+ }
1309
+ },
1310
+ "verdict": {
1311
+ "type": "string",
1312
+ "enum": [
1313
+ "pass",
1314
+ "needs-attention",
1315
+ "fail"
1316
+ ]
1317
+ },
1318
+ "findings": {
1319
+ "type": "array",
1320
+ "items": {
1321
+ "type": "object",
1322
+ "properties": {
1323
+ "title": {
1324
+ "type": "string",
1325
+ "minLength": 1
1326
+ },
1327
+ "severity": {
1328
+ "type": "string",
1329
+ "enum": [
1330
+ "high",
1331
+ "medium",
1332
+ "low"
1333
+ ]
1334
+ },
1335
+ "location": {
1336
+ "type": "string",
1337
+ "minLength": 1
1338
+ },
1339
+ "summary": {
1340
+ "type": "string",
1341
+ "minLength": 1
1342
+ }
1343
+ },
1344
+ "required": [
1345
+ "title"
1346
+ ]
1347
+ }
1348
+ },
1349
+ "blocked": {
1350
+ "type": "array",
1351
+ "items": {
1352
+ "type": "object",
1353
+ "properties": {
1354
+ "title": {
1355
+ "type": "string",
1356
+ "minLength": 1
1357
+ },
1358
+ "reason": {
1359
+ "type": "string",
1360
+ "enum": [
1361
+ "spec-deviation",
1362
+ "design-reversal"
1363
+ ]
1364
+ },
1365
+ "why": {
1366
+ "type": "string",
1367
+ "minLength": 1
1368
+ }
1369
+ },
1370
+ "required": [
1371
+ "title",
1372
+ "reason"
1373
+ ]
1374
+ }
1375
+ }
1376
+ },
1377
+ "required": [
1378
+ "schema_version",
1379
+ "id",
1380
+ "session_id",
1381
+ "occurred_at",
1382
+ "source",
1383
+ "type",
1384
+ "reviewer",
1385
+ "target"
1386
+ ]
1387
+ },
1388
+ {
1389
+ "type": "object",
1390
+ "properties": {
1391
+ "schema_version": {
1392
+ "type": "string",
1393
+ "pattern": "^0\\.\\d+\\.\\d+$"
1394
+ },
1395
+ "id": {
1396
+ "type": "string",
1397
+ "pattern": "^evt_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1398
+ "description": "Basou evt id: `evt_` followed by a 26-character Crockford Base32 ULID."
1399
+ },
1400
+ "session_id": {
1401
+ "type": "string",
1402
+ "pattern": "^ses_[0-7][0-9A-HJKMNP-TV-Z]{25}$",
1403
+ "description": "Basou ses id: `ses_` followed by a 26-character Crockford Base32 ULID."
1404
+ },
1405
+ "occurred_at": {
1406
+ "type": "string",
1407
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
1408
+ "description": "Timestamp with an offset or Z. The pattern is normative under ECMA-262 semantics: RFC 3339 date-time with uppercase designators, no leap second, and optional seconds."
1409
+ },
1410
+ "source": {
1411
+ "type": "string",
1412
+ "minLength": 1
1413
+ },
1414
+ "prev_hash": {
1415
+ "type": "string"
1416
+ },
1417
+ "type": {
1418
+ "type": "string",
1419
+ "const": "adapter_output"
1420
+ },
1421
+ "stream": {
1422
+ "type": "string",
1423
+ "enum": [
1424
+ "stdout",
1425
+ "stderr"
1426
+ ]
1427
+ },
1428
+ "summary": {
1429
+ "type": "string"
1430
+ },
1431
+ "raw_ref": {
1432
+ "type": "string"
1433
+ },
1434
+ "redacted": {
1435
+ "type": "boolean"
1436
+ }
1437
+ },
1438
+ "required": [
1439
+ "schema_version",
1440
+ "id",
1441
+ "session_id",
1442
+ "occurred_at",
1443
+ "source",
1444
+ "type",
1445
+ "stream",
1446
+ "summary",
1447
+ "raw_ref"
1448
+ ],
1449
+ "additionalProperties": false
1450
+ }
1451
+ ]
1452
+ }