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