@deftai/directive-types 0.64.0 → 0.65.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,1022 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vbrief.dev/schemas/vbrief-core-0.6.schema.json",
4
+ "title": "vBRIEF Core Schema v0.6",
5
+ "description": "JSON Schema for vBRIEF core document structure (v0.6). Uses `items` as the preferred nested PlanItem field, retains `subItems` as a deprecated compatibility alias, and adds `failed` to the shared status enum.",
6
+ "type": "object",
7
+ "required": [
8
+ "vBRIEFInfo",
9
+ "plan"
10
+ ],
11
+ "properties": {
12
+ "vBRIEFInfo": {
13
+ "$ref": "#/$defs/vBRIEFInfo"
14
+ },
15
+ "plan": {
16
+ "$ref": "#/$defs/Plan"
17
+ }
18
+ },
19
+ "additionalProperties": true,
20
+ "not": {
21
+ "anyOf": [
22
+ {
23
+ "required": [
24
+ "todoList"
25
+ ]
26
+ },
27
+ {
28
+ "required": [
29
+ "playbook"
30
+ ]
31
+ }
32
+ ]
33
+ },
34
+ "$defs": {
35
+ "vBRIEFInfo": {
36
+ "type": "object",
37
+ "required": [
38
+ "version"
39
+ ],
40
+ "properties": {
41
+ "version": {
42
+ "type": "string",
43
+ "const": "0.6"
44
+ },
45
+ "author": {
46
+ "type": "string"
47
+ },
48
+ "description": {
49
+ "type": "string"
50
+ },
51
+ "metadata": {
52
+ "type": "object"
53
+ },
54
+ "created": {
55
+ "$ref": "#/$defs/dateTime"
56
+ },
57
+ "updated": {
58
+ "$ref": "#/$defs/dateTime"
59
+ },
60
+ "timezone": {
61
+ "type": "string"
62
+ }
63
+ },
64
+ "additionalProperties": true
65
+ },
66
+ "Architecture": {
67
+ "type": "object",
68
+ "properties": {
69
+ "codeStructure": {
70
+ "$ref": "#/$defs/CodeStructure"
71
+ }
72
+ },
73
+ "additionalProperties": true
74
+ },
75
+ "CodeStructure": {
76
+ "type": "object",
77
+ "required": [
78
+ "version",
79
+ "modules",
80
+ "pathOwnership",
81
+ "allowedPatterns",
82
+ "projectionManifest"
83
+ ],
84
+ "properties": {
85
+ "version": {
86
+ "type": "string",
87
+ "const": "0.1"
88
+ },
89
+ "modules": {
90
+ "type": "array",
91
+ "minItems": 1,
92
+ "items": {
93
+ "$ref": "#/$defs/CodeStructureModule"
94
+ }
95
+ },
96
+ "pathOwnership": {
97
+ "type": "array",
98
+ "items": {
99
+ "$ref": "#/$defs/CodeStructurePathOwnership"
100
+ }
101
+ },
102
+ "allowedPatterns": {
103
+ "type": "array",
104
+ "items": {
105
+ "$ref": "#/$defs/CodeStructureAllowedPattern"
106
+ }
107
+ },
108
+ "projectionManifest": {
109
+ "type": "array",
110
+ "items": {
111
+ "$ref": "#/$defs/CodeStructureProjection"
112
+ }
113
+ },
114
+ "filePurposeOverrides": {
115
+ "type": "array",
116
+ "items": {
117
+ "$ref": "#/$defs/CodeStructureFilePurposeOverride"
118
+ }
119
+ },
120
+ "glossaryRefs": {
121
+ "type": "array",
122
+ "items": {
123
+ "$ref": "#/$defs/CodeStructureGlossaryRef"
124
+ }
125
+ }
126
+ },
127
+ "additionalProperties": true
128
+ },
129
+ "CodeStructureStableId": {
130
+ "type": "string",
131
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
132
+ },
133
+ "CodeStructureRelativePath": {
134
+ "type": "string",
135
+ "minLength": 1
136
+ },
137
+ "CodeStructureModule": {
138
+ "type": "object",
139
+ "required": [
140
+ "id",
141
+ "name",
142
+ "purpose",
143
+ "pathGlobs"
144
+ ],
145
+ "properties": {
146
+ "id": {
147
+ "$ref": "#/$defs/CodeStructureStableId"
148
+ },
149
+ "name": {
150
+ "type": "string",
151
+ "minLength": 1
152
+ },
153
+ "purpose": {
154
+ "type": "string",
155
+ "minLength": 1
156
+ },
157
+ "pathGlobs": {
158
+ "type": "array",
159
+ "minItems": 1,
160
+ "items": {
161
+ "$ref": "#/$defs/CodeStructureRelativePath"
162
+ }
163
+ },
164
+ "owner": {
165
+ "type": "string"
166
+ }
167
+ },
168
+ "additionalProperties": true
169
+ },
170
+ "CodeStructurePathOwnership": {
171
+ "type": "object",
172
+ "required": [
173
+ "pathGlob",
174
+ "module"
175
+ ],
176
+ "properties": {
177
+ "pathGlob": {
178
+ "$ref": "#/$defs/CodeStructureRelativePath"
179
+ },
180
+ "module": {
181
+ "$ref": "#/$defs/CodeStructureStableId"
182
+ },
183
+ "owner": {
184
+ "type": "string"
185
+ },
186
+ "rationale": {
187
+ "type": "string"
188
+ }
189
+ },
190
+ "additionalProperties": true
191
+ },
192
+ "CodeStructureAllowedPattern": {
193
+ "type": "object",
194
+ "required": [
195
+ "id",
196
+ "module",
197
+ "name",
198
+ "description"
199
+ ],
200
+ "properties": {
201
+ "id": {
202
+ "$ref": "#/$defs/CodeStructureStableId"
203
+ },
204
+ "module": {
205
+ "$ref": "#/$defs/CodeStructureStableId"
206
+ },
207
+ "name": {
208
+ "type": "string",
209
+ "minLength": 1
210
+ },
211
+ "description": {
212
+ "type": "string",
213
+ "minLength": 1
214
+ },
215
+ "appliesTo": {
216
+ "type": "array",
217
+ "items": {
218
+ "$ref": "#/$defs/CodeStructureRelativePath"
219
+ }
220
+ },
221
+ "forbidden": {
222
+ "type": "boolean"
223
+ }
224
+ },
225
+ "additionalProperties": true
226
+ },
227
+ "CodeStructureProjection": {
228
+ "type": "object",
229
+ "required": [
230
+ "path",
231
+ "kind",
232
+ "source",
233
+ "generated"
234
+ ],
235
+ "properties": {
236
+ "path": {
237
+ "$ref": "#/$defs/CodeStructureRelativePath"
238
+ },
239
+ "kind": {
240
+ "$ref": "#/$defs/CodeStructureStableId"
241
+ },
242
+ "source": {
243
+ "type": "string",
244
+ "minLength": 1
245
+ },
246
+ "generated": {
247
+ "type": "boolean"
248
+ }
249
+ },
250
+ "additionalProperties": true
251
+ },
252
+ "CodeStructureFilePurposeOverride": {
253
+ "type": "object",
254
+ "required": [
255
+ "path",
256
+ "purpose"
257
+ ],
258
+ "properties": {
259
+ "path": {
260
+ "$ref": "#/$defs/CodeStructureRelativePath"
261
+ },
262
+ "module": {
263
+ "$ref": "#/$defs/CodeStructureStableId"
264
+ },
265
+ "purpose": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ }
269
+ },
270
+ "additionalProperties": true
271
+ },
272
+ "CodeStructureGlossaryRef": {
273
+ "type": "object",
274
+ "required": [
275
+ "term"
276
+ ],
277
+ "properties": {
278
+ "term": {
279
+ "type": "string",
280
+ "minLength": 1
281
+ },
282
+ "uri": {
283
+ "$ref": "#/$defs/CodeStructureRelativePath"
284
+ }
285
+ },
286
+ "additionalProperties": true
287
+ },
288
+ "Plan": {
289
+ "type": "object",
290
+ "required": [
291
+ "title",
292
+ "status",
293
+ "items"
294
+ ],
295
+ "properties": {
296
+ "id": {
297
+ "type": "string",
298
+ "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
299
+ },
300
+ "uid": {
301
+ "type": "string"
302
+ },
303
+ "title": {
304
+ "type": "string",
305
+ "minLength": 1
306
+ },
307
+ "status": {
308
+ "$ref": "#/$defs/Status"
309
+ },
310
+ "items": {
311
+ "type": "array",
312
+ "items": {
313
+ "$ref": "#/$defs/PlanItem"
314
+ }
315
+ },
316
+ "policy": {
317
+ "$ref": "#/$defs/Policy"
318
+ },
319
+ "architecture": {
320
+ "$ref": "#/$defs/Architecture"
321
+ },
322
+ "narratives": {
323
+ "type": "object",
324
+ "properties": {
325
+ "Proposal": {
326
+ "type": "string"
327
+ },
328
+ "Overview": {
329
+ "type": "string"
330
+ },
331
+ "Background": {
332
+ "type": "string"
333
+ },
334
+ "Problem": {
335
+ "type": "string"
336
+ },
337
+ "Constraint": {
338
+ "type": "string"
339
+ },
340
+ "Hypothesis": {
341
+ "type": "string"
342
+ },
343
+ "Alternative": {
344
+ "type": "string"
345
+ },
346
+ "Risk": {
347
+ "type": "string"
348
+ },
349
+ "Test": {
350
+ "type": "string"
351
+ },
352
+ "Action": {
353
+ "type": "string"
354
+ },
355
+ "Observation": {
356
+ "type": "string"
357
+ },
358
+ "Result": {
359
+ "type": "string"
360
+ },
361
+ "Reflection": {
362
+ "type": "string"
363
+ },
364
+ "Outcome": {
365
+ "type": "string"
366
+ },
367
+ "Strengths": {
368
+ "type": "string"
369
+ },
370
+ "Weaknesses": {
371
+ "type": "string"
372
+ },
373
+ "Lessons": {
374
+ "type": "string"
375
+ }
376
+ },
377
+ "additionalProperties": {
378
+ "type": "string"
379
+ }
380
+ },
381
+ "edges": {
382
+ "type": "array",
383
+ "items": {
384
+ "$ref": "#/$defs/Edge"
385
+ }
386
+ },
387
+ "tags": {
388
+ "type": "array",
389
+ "items": {
390
+ "type": "string"
391
+ }
392
+ },
393
+ "metadata": {
394
+ "type": "object"
395
+ },
396
+ "created": {
397
+ "$ref": "#/$defs/dateTime"
398
+ },
399
+ "updated": {
400
+ "$ref": "#/$defs/dateTime"
401
+ },
402
+ "author": {
403
+ "type": "string"
404
+ },
405
+ "reviewers": {
406
+ "type": "array",
407
+ "items": {
408
+ "type": "string"
409
+ }
410
+ },
411
+ "uris": {
412
+ "type": "array",
413
+ "items": {
414
+ "$ref": "#/$defs/URI"
415
+ }
416
+ },
417
+ "references": {
418
+ "type": "array",
419
+ "items": {
420
+ "$ref": "#/$defs/VBriefReference"
421
+ }
422
+ },
423
+ "timezone": {
424
+ "type": "string"
425
+ },
426
+ "agent": {
427
+ "$ref": "#/$defs/Agent"
428
+ },
429
+ "lastModifiedBy": {
430
+ "$ref": "#/$defs/Agent"
431
+ },
432
+ "changeLog": {
433
+ "type": "array",
434
+ "items": {
435
+ "$ref": "#/$defs/Change"
436
+ }
437
+ },
438
+ "sequence": {
439
+ "type": "integer",
440
+ "minimum": 0
441
+ },
442
+ "fork": {
443
+ "$ref": "#/$defs/Fork"
444
+ }
445
+ },
446
+ "additionalProperties": true
447
+ },
448
+ "PlanItem": {
449
+ "type": "object",
450
+ "required": [
451
+ "title",
452
+ "status"
453
+ ],
454
+ "properties": {
455
+ "id": {
456
+ "type": "string",
457
+ "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
458
+ },
459
+ "uid": {
460
+ "type": "string"
461
+ },
462
+ "title": {
463
+ "type": "string",
464
+ "minLength": 1
465
+ },
466
+ "status": {
467
+ "$ref": "#/$defs/Status"
468
+ },
469
+ "narrative": {
470
+ "type": "object",
471
+ "additionalProperties": {
472
+ "type": "string"
473
+ }
474
+ },
475
+ "subItems": {
476
+ "type": "array",
477
+ "description": "Deprecated legacy alias for items; retained for compatibility.",
478
+ "items": {
479
+ "$ref": "#/$defs/PlanItem"
480
+ }
481
+ },
482
+ "planRef": {
483
+ "type": "string",
484
+ "pattern": "^(#[a-zA-Z0-9_.-]+|file://.*|https://.*)$"
485
+ },
486
+ "tags": {
487
+ "type": "array",
488
+ "items": {
489
+ "type": "string"
490
+ }
491
+ },
492
+ "metadata": {
493
+ "type": "object"
494
+ },
495
+ "created": {
496
+ "$ref": "#/$defs/dateTime"
497
+ },
498
+ "updated": {
499
+ "$ref": "#/$defs/dateTime"
500
+ },
501
+ "completed": {
502
+ "$ref": "#/$defs/dateTime"
503
+ },
504
+ "priority": {
505
+ "enum": [
506
+ "low",
507
+ "medium",
508
+ "high",
509
+ "critical"
510
+ ]
511
+ },
512
+ "dueDate": {
513
+ "$ref": "#/$defs/dateTime"
514
+ },
515
+ "startDate": {
516
+ "$ref": "#/$defs/dateTime"
517
+ },
518
+ "endDate": {
519
+ "$ref": "#/$defs/dateTime"
520
+ },
521
+ "percentComplete": {
522
+ "type": "number",
523
+ "minimum": 0,
524
+ "maximum": 100
525
+ },
526
+ "participants": {
527
+ "type": "array",
528
+ "items": {
529
+ "$ref": "#/$defs/Participant"
530
+ }
531
+ },
532
+ "location": {
533
+ "$ref": "#/$defs/Location"
534
+ },
535
+ "uris": {
536
+ "type": "array",
537
+ "items": {
538
+ "$ref": "#/$defs/URI"
539
+ }
540
+ },
541
+ "recurrence": {
542
+ "$ref": "#/$defs/RecurrenceRule"
543
+ },
544
+ "reminders": {
545
+ "type": "array",
546
+ "items": {
547
+ "$ref": "#/$defs/Reminder"
548
+ }
549
+ },
550
+ "classification": {
551
+ "enum": [
552
+ "public",
553
+ "private",
554
+ "confidential"
555
+ ]
556
+ },
557
+ "relatedComments": {
558
+ "type": "array",
559
+ "items": {
560
+ "type": "string"
561
+ }
562
+ },
563
+ "timezone": {
564
+ "type": "string"
565
+ },
566
+ "sequence": {
567
+ "type": "integer",
568
+ "minimum": 0
569
+ },
570
+ "lastModifiedBy": {
571
+ "$ref": "#/$defs/Agent"
572
+ },
573
+ "lockedBy": {
574
+ "$ref": "#/$defs/Lock"
575
+ },
576
+ "items": {
577
+ "type": "array",
578
+ "description": "Preferred v0.6 nested PlanItem field.",
579
+ "items": {
580
+ "$ref": "#/$defs/PlanItem"
581
+ }
582
+ }
583
+ },
584
+ "additionalProperties": true
585
+ },
586
+ "Status": {
587
+ "enum": [
588
+ "draft",
589
+ "proposed",
590
+ "approved",
591
+ "pending",
592
+ "running",
593
+ "completed",
594
+ "blocked",
595
+ "failed",
596
+ "cancelled"
597
+ ]
598
+ },
599
+ "Policy": {
600
+ "type": "object",
601
+ "description": "Project-level policy flags. Typed surface introduced by #746 (no-feature-branch opt-out) -- replaces the legacy free-form narrative key 'Allow direct commits to master'.",
602
+ "properties": {
603
+ "allowDirectCommitsToMaster": {
604
+ "type": "boolean",
605
+ "description": "When true, the project explicitly opts out of the deft branch-protection policy and allows direct commits to the default branch (master/main). Default: false (enforce feature branches)."
606
+ },
607
+ "sessionRitualStalenessHours": {
608
+ "type": "integer",
609
+ "minimum": 1,
610
+ "description": "Maximum age, in hours, for .deft/ritual-state.json before the fail-closed session ritual verifier requires task session:start to run again. Default: 4."
611
+ },
612
+ "projectionProviders": {
613
+ "$ref": "#/$defs/ProjectionProviderPolicies"
614
+ }
615
+ },
616
+ "additionalProperties": true
617
+ },
618
+ "ProjectionProviderPolicies": {
619
+ "type": "object",
620
+ "description": "Projection provider artifact policies keyed by projection kind. Values point at durable artifacts; runner command strings are not canonical policy.",
621
+ "additionalProperties": {
622
+ "$ref": "#/$defs/ProjectionProviderPolicy"
623
+ }
624
+ },
625
+ "ProjectionProviderPolicy": {
626
+ "type": "object",
627
+ "required": [
628
+ "artifactPath"
629
+ ],
630
+ "properties": {
631
+ "artifactPath": {
632
+ "$ref": "#/$defs/CodeStructureRelativePath",
633
+ "description": "Repository-relative path to a provider-emitted artifact for this projection kind."
634
+ },
635
+ "expect": {
636
+ "$ref": "#/$defs/ProjectionProviderExpectation"
637
+ }
638
+ },
639
+ "additionalProperties": true
640
+ },
641
+ "ProjectionProviderExpectation": {
642
+ "type": "object",
643
+ "description": "Optional validation assertion for provider identity and version.",
644
+ "properties": {
645
+ "provider": {
646
+ "type": [
647
+ "string",
648
+ "object"
649
+ ]
650
+ },
651
+ "name": {
652
+ "type": "string"
653
+ },
654
+ "version": {
655
+ "type": "string"
656
+ },
657
+ "providerVersion": {
658
+ "type": "string"
659
+ }
660
+ },
661
+ "additionalProperties": true
662
+ },
663
+ "Edge": {
664
+ "type": "object",
665
+ "required": [
666
+ "from",
667
+ "to",
668
+ "type"
669
+ ],
670
+ "properties": {
671
+ "from": {
672
+ "type": "string",
673
+ "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
674
+ },
675
+ "to": {
676
+ "type": "string",
677
+ "pattern": "^[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)*$"
678
+ },
679
+ "type": {
680
+ "type": "string",
681
+ "description": "Core types: blocks, informs, invalidates, suggests. Custom types allowed."
682
+ }
683
+ },
684
+ "additionalProperties": true
685
+ },
686
+ "Participant": {
687
+ "type": "object",
688
+ "required": [
689
+ "id",
690
+ "role"
691
+ ],
692
+ "properties": {
693
+ "id": {
694
+ "type": "string"
695
+ },
696
+ "name": {
697
+ "type": "string"
698
+ },
699
+ "email": {
700
+ "type": "string"
701
+ },
702
+ "role": {
703
+ "enum": [
704
+ "owner",
705
+ "assignee",
706
+ "reviewer",
707
+ "observer",
708
+ "contributor"
709
+ ]
710
+ },
711
+ "status": {
712
+ "enum": [
713
+ "accepted",
714
+ "declined",
715
+ "tentative",
716
+ "needsAction"
717
+ ]
718
+ }
719
+ },
720
+ "additionalProperties": true
721
+ },
722
+ "URI": {
723
+ "type": "object",
724
+ "required": [
725
+ "uri"
726
+ ],
727
+ "properties": {
728
+ "uri": {
729
+ "type": "string"
730
+ },
731
+ "description": {
732
+ "type": "string"
733
+ },
734
+ "type": {
735
+ "type": "string"
736
+ },
737
+ "title": {
738
+ "type": "string"
739
+ },
740
+ "tags": {
741
+ "type": "array",
742
+ "items": {
743
+ "type": "string"
744
+ }
745
+ }
746
+ },
747
+ "additionalProperties": true
748
+ },
749
+ "VBriefReference": {
750
+ "allOf": [
751
+ {
752
+ "$ref": "#/$defs/URI"
753
+ },
754
+ {
755
+ "type": "object",
756
+ "required": [
757
+ "uri",
758
+ "type"
759
+ ],
760
+ "properties": {
761
+ "type": {
762
+ "type": "string",
763
+ "pattern": "^x-vbrief/",
764
+ "description": "A vBRIEF reference type. Known types: x-vbrief/plan, x-vbrief/context, x-vbrief/research. Any x-vbrief/* value is valid."
765
+ }
766
+ }
767
+ }
768
+ ]
769
+ },
770
+ "Location": {
771
+ "type": "object",
772
+ "properties": {
773
+ "name": {
774
+ "type": "string"
775
+ },
776
+ "address": {
777
+ "type": "string"
778
+ },
779
+ "geo": {
780
+ "type": "array",
781
+ "minItems": 2,
782
+ "maxItems": 2,
783
+ "items": {
784
+ "type": "number"
785
+ }
786
+ },
787
+ "url": {
788
+ "type": "string"
789
+ }
790
+ },
791
+ "additionalProperties": true
792
+ },
793
+ "RecurrenceRule": {
794
+ "type": "object",
795
+ "required": [
796
+ "frequency"
797
+ ],
798
+ "properties": {
799
+ "frequency": {
800
+ "enum": [
801
+ "daily",
802
+ "weekly",
803
+ "monthly",
804
+ "yearly"
805
+ ]
806
+ },
807
+ "interval": {
808
+ "type": "integer",
809
+ "minimum": 1
810
+ },
811
+ "until": {
812
+ "$ref": "#/$defs/dateTime"
813
+ },
814
+ "count": {
815
+ "type": "integer",
816
+ "minimum": 1
817
+ },
818
+ "byDay": {
819
+ "type": "array",
820
+ "items": {
821
+ "enum": [
822
+ "MO",
823
+ "TU",
824
+ "WE",
825
+ "TH",
826
+ "FR",
827
+ "SA",
828
+ "SU"
829
+ ]
830
+ }
831
+ },
832
+ "byMonth": {
833
+ "type": "array",
834
+ "items": {
835
+ "type": "integer",
836
+ "minimum": 1,
837
+ "maximum": 12
838
+ }
839
+ },
840
+ "byMonthDay": {
841
+ "type": "array",
842
+ "items": {
843
+ "type": "integer",
844
+ "minimum": 1,
845
+ "maximum": 31
846
+ }
847
+ }
848
+ },
849
+ "additionalProperties": true
850
+ },
851
+ "Reminder": {
852
+ "type": "object",
853
+ "required": [
854
+ "trigger",
855
+ "action"
856
+ ],
857
+ "properties": {
858
+ "trigger": {
859
+ "type": "string"
860
+ },
861
+ "action": {
862
+ "enum": [
863
+ "display",
864
+ "email",
865
+ "webhook",
866
+ "audio"
867
+ ]
868
+ },
869
+ "description": {
870
+ "type": "string"
871
+ }
872
+ },
873
+ "additionalProperties": true
874
+ },
875
+ "Agent": {
876
+ "type": "object",
877
+ "required": [
878
+ "id",
879
+ "type"
880
+ ],
881
+ "properties": {
882
+ "id": {
883
+ "type": "string"
884
+ },
885
+ "type": {
886
+ "enum": [
887
+ "human",
888
+ "aiAgent",
889
+ "system"
890
+ ]
891
+ },
892
+ "name": {
893
+ "type": "string"
894
+ },
895
+ "email": {
896
+ "type": "string"
897
+ },
898
+ "model": {
899
+ "type": "string"
900
+ },
901
+ "version": {
902
+ "type": "string"
903
+ }
904
+ },
905
+ "additionalProperties": true
906
+ },
907
+ "Change": {
908
+ "type": "object",
909
+ "required": [
910
+ "sequence",
911
+ "timestamp",
912
+ "agent",
913
+ "operation"
914
+ ],
915
+ "properties": {
916
+ "sequence": {
917
+ "type": "integer",
918
+ "minimum": 0
919
+ },
920
+ "timestamp": {
921
+ "$ref": "#/$defs/dateTime"
922
+ },
923
+ "agent": {
924
+ "$ref": "#/$defs/Agent"
925
+ },
926
+ "operation": {
927
+ "enum": [
928
+ "create",
929
+ "update",
930
+ "delete",
931
+ "fork",
932
+ "merge"
933
+ ]
934
+ },
935
+ "reason": {
936
+ "type": "string"
937
+ },
938
+ "path": {
939
+ "type": "string"
940
+ },
941
+ "oldValue": {},
942
+ "newValue": {},
943
+ "description": {
944
+ "type": "string"
945
+ },
946
+ "snapshotUri": {
947
+ "type": "string"
948
+ },
949
+ "relatedChanges": {
950
+ "type": "array",
951
+ "items": {
952
+ "type": "string"
953
+ }
954
+ }
955
+ },
956
+ "additionalProperties": true
957
+ },
958
+ "Fork": {
959
+ "type": "object",
960
+ "required": [
961
+ "parentUid",
962
+ "parentSequence",
963
+ "forkedAt"
964
+ ],
965
+ "properties": {
966
+ "parentUid": {
967
+ "type": "string"
968
+ },
969
+ "parentSequence": {
970
+ "type": "integer",
971
+ "minimum": 0
972
+ },
973
+ "forkedAt": {
974
+ "$ref": "#/$defs/dateTime"
975
+ },
976
+ "forkReason": {
977
+ "type": "string"
978
+ },
979
+ "mergeStatus": {
980
+ "enum": [
981
+ "unmerged",
982
+ "mergePending",
983
+ "merged",
984
+ "conflict"
985
+ ]
986
+ }
987
+ },
988
+ "additionalProperties": true
989
+ },
990
+ "Lock": {
991
+ "type": "object",
992
+ "required": [
993
+ "agent",
994
+ "acquiredAt",
995
+ "type"
996
+ ],
997
+ "properties": {
998
+ "agent": {
999
+ "$ref": "#/$defs/Agent"
1000
+ },
1001
+ "acquiredAt": {
1002
+ "$ref": "#/$defs/dateTime"
1003
+ },
1004
+ "expiresAt": {
1005
+ "$ref": "#/$defs/dateTime"
1006
+ },
1007
+ "type": {
1008
+ "enum": [
1009
+ "soft",
1010
+ "hard"
1011
+ ]
1012
+ }
1013
+ },
1014
+ "additionalProperties": true
1015
+ },
1016
+ "dateTime": {
1017
+ "type": "string",
1018
+ "format": "date-time",
1019
+ "pattern": "(Z|[+-]\\d{2}:\\d{2})$"
1020
+ }
1021
+ }
1022
+ }