@anhlp/alp-protocol 0.0.0-beta.1

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,4070 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://alp.dev/schemas/methods-v1.json",
4
+ "protocolVersion": 1,
5
+ "errors": {
6
+ "parseError": -32700,
7
+ "invalidRequest": -32600,
8
+ "methodNotFound": -32601,
9
+ "invalidParams": -32602,
10
+ "failed": 1000,
11
+ "notFound": 1001,
12
+ "forbidden": 1003,
13
+ "conflict": 1004,
14
+ "unavailable": 1005,
15
+ "protocol": 1006
16
+ },
17
+ "capabilities": {
18
+ "attach.after": "session.attach accepts `after` and answers `cursor`/`reset`; envelopes kept in a tree timeline carry `cursor`.",
19
+ "prompt.receipts": "session.prompt is answered at most once per (sessionId, clientMessageId) from a durable receipt; repeats answer the first outcome or outcome_unknown.",
20
+ "extension.methods": "extension.register/unregister, and the daemon sends extension.invoke requests to the owning connection.",
21
+ "team": "team.list: the teams a project can use, from the daemon host's built-ins, library and project.",
22
+ "task": "task.list, task.create, task.update and task.gate.resolve on a project's .alp/tasks, written by the daemon under the task lock.",
23
+ "library": "library.list/get/save/delete/duplicate/rename, library.skills.set and library.models on the daemon user's library and a project's .alp overrides; secrets are redacted on read.",
24
+ "settings.language": "settings.language.get/set: the language the daemon user reads, in the daemon's ALP_HOME/settings.json."
25
+ },
26
+ "methods": {
27
+ "assignment.recall": {
28
+ "x-alp": {
29
+ "effect": "mutation",
30
+ "scope": {
31
+ "kind": "project",
32
+ "param": "projectRoot",
33
+ "required": false,
34
+ "alternatives": [
35
+ "assignmentId",
36
+ "taskId"
37
+ ]
38
+ },
39
+ "idempotent": false,
40
+ "risks": [
41
+ "model call"
42
+ ]
43
+ },
44
+ "params": {
45
+ "type": "object",
46
+ "properties": {
47
+ "assignmentId": {
48
+ "type": "string"
49
+ },
50
+ "taskId": {
51
+ "type": "string"
52
+ },
53
+ "projectRoot": {
54
+ "type": "string"
55
+ },
56
+ "question": {
57
+ "type": "string"
58
+ }
59
+ },
60
+ "required": [
61
+ "question"
62
+ ],
63
+ "additionalProperties": true
64
+ },
65
+ "result": {
66
+ "type": "object",
67
+ "properties": {
68
+ "assignmentId": {
69
+ "type": "string"
70
+ },
71
+ "agent": {
72
+ "type": "string"
73
+ },
74
+ "taskId": {
75
+ "type": "string"
76
+ },
77
+ "finishedAt": {
78
+ "type": "string"
79
+ },
80
+ "answer": {
81
+ "type": "string"
82
+ }
83
+ },
84
+ "required": [
85
+ "assignmentId",
86
+ "agent",
87
+ "finishedAt",
88
+ "answer"
89
+ ],
90
+ "additionalProperties": true
91
+ }
92
+ },
93
+ "board.list": {
94
+ "x-alp": {
95
+ "effect": "query",
96
+ "scope": {
97
+ "kind": "project",
98
+ "param": "projectRoot",
99
+ "required": true
100
+ },
101
+ "idempotent": true
102
+ },
103
+ "params": {
104
+ "type": "object",
105
+ "properties": {
106
+ "projectRoot": {
107
+ "type": "string"
108
+ }
109
+ },
110
+ "required": [
111
+ "projectRoot"
112
+ ],
113
+ "additionalProperties": true
114
+ },
115
+ "result": {
116
+ "type": "object",
117
+ "properties": {
118
+ "pins": {
119
+ "type": "array",
120
+ "items": {
121
+ "$ref": "#/$defs/pin"
122
+ }
123
+ }
124
+ },
125
+ "required": [
126
+ "pins"
127
+ ],
128
+ "additionalProperties": true
129
+ }
130
+ },
131
+ "catalog.get": {
132
+ "x-alp": {
133
+ "effect": "query",
134
+ "scope": {
135
+ "kind": "host"
136
+ },
137
+ "idempotent": true
138
+ },
139
+ "params": {
140
+ "type": "object",
141
+ "properties": {},
142
+ "required": [],
143
+ "additionalProperties": true
144
+ },
145
+ "result": {
146
+ "type": "object",
147
+ "properties": {
148
+ "models": {
149
+ "type": "array",
150
+ "items": {
151
+ "type": "object"
152
+ }
153
+ },
154
+ "modes": {
155
+ "type": "array",
156
+ "items": {
157
+ "type": "object"
158
+ }
159
+ },
160
+ "thinkingOptions": {},
161
+ "defaultModel": {
162
+ "type": "string"
163
+ }
164
+ },
165
+ "required": [
166
+ "models",
167
+ "modes",
168
+ "defaultModel"
169
+ ],
170
+ "additionalProperties": true
171
+ }
172
+ },
173
+ "daemon.hello": {
174
+ "x-alp": {
175
+ "effect": "query",
176
+ "scope": {
177
+ "kind": "connection"
178
+ },
179
+ "idempotent": true
180
+ },
181
+ "params": {
182
+ "type": "object",
183
+ "properties": {
184
+ "protocolVersion": {
185
+ "const": 1
186
+ },
187
+ "client": {
188
+ "type": "object",
189
+ "properties": {
190
+ "name": {
191
+ "type": "string"
192
+ },
193
+ "version": {
194
+ "type": "string"
195
+ }
196
+ },
197
+ "required": [
198
+ "name",
199
+ "version"
200
+ ],
201
+ "additionalProperties": true
202
+ },
203
+ "capabilities": {
204
+ "type": "array",
205
+ "items": {
206
+ "type": "string"
207
+ }
208
+ }
209
+ },
210
+ "required": [
211
+ "protocolVersion"
212
+ ],
213
+ "additionalProperties": true
214
+ },
215
+ "result": {
216
+ "type": "object",
217
+ "properties": {
218
+ "protocolVersion": {
219
+ "const": 1
220
+ },
221
+ "daemonVersion": {
222
+ "type": "string"
223
+ },
224
+ "pid": {
225
+ "type": "integer"
226
+ },
227
+ "capabilities": {
228
+ "type": "array",
229
+ "items": {
230
+ "type": "string"
231
+ }
232
+ }
233
+ },
234
+ "required": [
235
+ "protocolVersion"
236
+ ],
237
+ "additionalProperties": true
238
+ }
239
+ },
240
+ "daemon.pause": {
241
+ "x-alp": {
242
+ "effect": "mutation",
243
+ "scope": {
244
+ "kind": "host"
245
+ },
246
+ "idempotent": true,
247
+ "risks": [
248
+ "admin"
249
+ ]
250
+ },
251
+ "params": {
252
+ "type": "object",
253
+ "properties": {
254
+ "runtime": {
255
+ "enum": [
256
+ "codex",
257
+ "claude",
258
+ "acp",
259
+ "antigravity"
260
+ ]
261
+ },
262
+ "now": {
263
+ "type": "boolean"
264
+ },
265
+ "reason": {
266
+ "type": "string"
267
+ }
268
+ },
269
+ "required": [],
270
+ "additionalProperties": true
271
+ },
272
+ "result": {
273
+ "$ref": "#/$defs/pauseState"
274
+ }
275
+ },
276
+ "daemon.pauses": {
277
+ "x-alp": {
278
+ "effect": "query",
279
+ "scope": {
280
+ "kind": "host"
281
+ },
282
+ "idempotent": true
283
+ },
284
+ "params": {
285
+ "type": "object",
286
+ "properties": {},
287
+ "required": [],
288
+ "additionalProperties": true
289
+ },
290
+ "result": {
291
+ "$ref": "#/$defs/pauseState"
292
+ }
293
+ },
294
+ "daemon.resume": {
295
+ "x-alp": {
296
+ "effect": "mutation",
297
+ "scope": {
298
+ "kind": "host"
299
+ },
300
+ "idempotent": true,
301
+ "risks": [
302
+ "admin"
303
+ ]
304
+ },
305
+ "params": {
306
+ "type": "object",
307
+ "properties": {
308
+ "runtime": {
309
+ "enum": [
310
+ "codex",
311
+ "claude",
312
+ "acp",
313
+ "antigravity"
314
+ ]
315
+ }
316
+ },
317
+ "required": [],
318
+ "additionalProperties": true
319
+ },
320
+ "result": {
321
+ "$ref": "#/$defs/pauseState"
322
+ }
323
+ },
324
+ "daemon.shutdown": {
325
+ "x-alp": {
326
+ "effect": "mutation",
327
+ "scope": {
328
+ "kind": "host"
329
+ },
330
+ "idempotent": true,
331
+ "risks": [
332
+ "admin"
333
+ ]
334
+ },
335
+ "params": {
336
+ "type": "object",
337
+ "properties": {},
338
+ "required": [],
339
+ "additionalProperties": true
340
+ },
341
+ "result": {
342
+ "type": "object",
343
+ "properties": {},
344
+ "required": [],
345
+ "additionalProperties": true
346
+ }
347
+ },
348
+ "daemon.status": {
349
+ "x-alp": {
350
+ "effect": "query",
351
+ "scope": {
352
+ "kind": "host"
353
+ },
354
+ "idempotent": true
355
+ },
356
+ "params": {
357
+ "type": "object",
358
+ "properties": {},
359
+ "required": [],
360
+ "additionalProperties": true
361
+ },
362
+ "result": {
363
+ "type": "object",
364
+ "properties": {
365
+ "pid": {
366
+ "type": "integer"
367
+ },
368
+ "startedAt": {
369
+ "type": "string"
370
+ },
371
+ "version": {
372
+ "type": "string"
373
+ },
374
+ "protocolVersion": {
375
+ "type": "integer"
376
+ },
377
+ "sessions": {
378
+ "type": "integer"
379
+ },
380
+ "questions": {
381
+ "type": "integer"
382
+ },
383
+ "previousExit": {
384
+ "type": "object",
385
+ "properties": {
386
+ "kind": {
387
+ "enum": [
388
+ "clean",
389
+ "crash"
390
+ ]
391
+ },
392
+ "at": {
393
+ "type": "string"
394
+ }
395
+ },
396
+ "required": [
397
+ "kind"
398
+ ],
399
+ "additionalProperties": true
400
+ },
401
+ "persistence": {
402
+ "type": "object"
403
+ },
404
+ "health": {
405
+ "$ref": "#/$defs/health"
406
+ }
407
+ },
408
+ "required": [
409
+ "pid",
410
+ "startedAt",
411
+ "version",
412
+ "protocolVersion",
413
+ "sessions",
414
+ "questions",
415
+ "health"
416
+ ],
417
+ "additionalProperties": true
418
+ }
419
+ },
420
+ "daemon.usage": {
421
+ "x-alp": {
422
+ "effect": "query",
423
+ "scope": {
424
+ "kind": "host"
425
+ },
426
+ "idempotent": true,
427
+ "risks": [
428
+ "refresh asks every provider (spawns on the daemon host)"
429
+ ]
430
+ },
431
+ "params": {
432
+ "type": "object",
433
+ "properties": {
434
+ "refresh": {
435
+ "type": "boolean"
436
+ }
437
+ },
438
+ "required": [],
439
+ "additionalProperties": true
440
+ },
441
+ "result": {
442
+ "type": "object",
443
+ "properties": {
444
+ "providers": {
445
+ "type": "array",
446
+ "items": {
447
+ "type": "object"
448
+ }
449
+ }
450
+ },
451
+ "required": [
452
+ "providers"
453
+ ],
454
+ "additionalProperties": true
455
+ }
456
+ },
457
+ "extension.register": {
458
+ "x-alp": {
459
+ "effect": "mutation",
460
+ "scope": {
461
+ "kind": "connection"
462
+ },
463
+ "idempotent": false,
464
+ "risks": [
465
+ "admin"
466
+ ]
467
+ },
468
+ "params": {
469
+ "type": "object",
470
+ "properties": {
471
+ "method": {
472
+ "type": "string"
473
+ }
474
+ },
475
+ "required": [
476
+ "method"
477
+ ],
478
+ "additionalProperties": true
479
+ },
480
+ "result": {
481
+ "type": "object",
482
+ "properties": {
483
+ "registered": {
484
+ "type": "string"
485
+ }
486
+ },
487
+ "required": [
488
+ "registered"
489
+ ],
490
+ "additionalProperties": true
491
+ }
492
+ },
493
+ "extension.unregister": {
494
+ "x-alp": {
495
+ "effect": "mutation",
496
+ "scope": {
497
+ "kind": "connection"
498
+ },
499
+ "idempotent": false,
500
+ "risks": [
501
+ "admin"
502
+ ]
503
+ },
504
+ "params": {
505
+ "type": "object",
506
+ "properties": {
507
+ "method": {
508
+ "type": "string"
509
+ }
510
+ },
511
+ "required": [
512
+ "method"
513
+ ],
514
+ "additionalProperties": true
515
+ },
516
+ "result": {
517
+ "type": "object",
518
+ "properties": {
519
+ "unregistered": {
520
+ "type": "string"
521
+ }
522
+ },
523
+ "required": [
524
+ "unregistered"
525
+ ],
526
+ "additionalProperties": true
527
+ }
528
+ },
529
+ "library.delete": {
530
+ "x-alp": {
531
+ "effect": "mutation",
532
+ "capability": "library",
533
+ "scope": {
534
+ "kind": "library-or-project",
535
+ "param": "projectRoot",
536
+ "selector": "scope"
537
+ },
538
+ "idempotent": false
539
+ },
540
+ "params": {
541
+ "type": "object",
542
+ "properties": {
543
+ "kind": {
544
+ "$ref": "#/$defs/libraryKind"
545
+ },
546
+ "name": {
547
+ "$ref": "#/$defs/entryName"
548
+ },
549
+ "scope": {
550
+ "$ref": "#/$defs/libraryScope"
551
+ },
552
+ "projectRoot": {
553
+ "$ref": "#/$defs/projectRoot"
554
+ },
555
+ "revision": {
556
+ "type": "string"
557
+ }
558
+ },
559
+ "required": [
560
+ "kind",
561
+ "name",
562
+ "scope"
563
+ ],
564
+ "additionalProperties": true
565
+ },
566
+ "result": {
567
+ "type": "object",
568
+ "properties": {
569
+ "removed": {
570
+ "const": true
571
+ },
572
+ "now": {
573
+ "enum": [
574
+ "builtin",
575
+ "library"
576
+ ]
577
+ }
578
+ },
579
+ "required": [
580
+ "removed"
581
+ ],
582
+ "additionalProperties": true
583
+ }
584
+ },
585
+ "library.duplicate": {
586
+ "x-alp": {
587
+ "effect": "mutation",
588
+ "capability": "library",
589
+ "scope": {
590
+ "kind": "library-or-project",
591
+ "param": "projectRoot",
592
+ "selector": "scope",
593
+ "reads": [
594
+ "builtin",
595
+ "library"
596
+ ]
597
+ },
598
+ "idempotent": false,
599
+ "risks": [
600
+ "exec-config when kind is mcp, hooks or providers"
601
+ ]
602
+ },
603
+ "params": {
604
+ "type": "object",
605
+ "properties": {
606
+ "kind": {
607
+ "$ref": "#/$defs/libraryKind"
608
+ },
609
+ "from": {
610
+ "$ref": "#/$defs/entryName"
611
+ },
612
+ "to": {
613
+ "$ref": "#/$defs/entryName"
614
+ },
615
+ "scope": {
616
+ "$ref": "#/$defs/libraryScope"
617
+ },
618
+ "projectRoot": {
619
+ "$ref": "#/$defs/projectRoot"
620
+ }
621
+ },
622
+ "required": [
623
+ "kind",
624
+ "from",
625
+ "to",
626
+ "scope"
627
+ ],
628
+ "additionalProperties": true
629
+ },
630
+ "result": {
631
+ "type": "object",
632
+ "properties": {
633
+ "revision": {
634
+ "$ref": "#/$defs/libraryRevision"
635
+ }
636
+ },
637
+ "required": [
638
+ "revision"
639
+ ],
640
+ "additionalProperties": true
641
+ }
642
+ },
643
+ "library.get": {
644
+ "x-alp": {
645
+ "effect": "query",
646
+ "capability": "library",
647
+ "scope": {
648
+ "kind": "project",
649
+ "param": "projectRoot",
650
+ "required": false,
651
+ "reads": [
652
+ "builtin",
653
+ "library"
654
+ ]
655
+ },
656
+ "idempotent": true,
657
+ "redacts": [
658
+ "mcp /server/env/*",
659
+ "mcp /server/headers/*",
660
+ "providers /provider/env/*"
661
+ ]
662
+ },
663
+ "params": {
664
+ "type": "object",
665
+ "properties": {
666
+ "kind": {
667
+ "$ref": "#/$defs/libraryKind"
668
+ },
669
+ "name": {
670
+ "$ref": "#/$defs/entryName"
671
+ },
672
+ "projectRoot": {
673
+ "$ref": "#/$defs/projectRoot"
674
+ },
675
+ "scope": {
676
+ "$ref": "#/$defs/libraryScope"
677
+ }
678
+ },
679
+ "required": [
680
+ "kind",
681
+ "name"
682
+ ],
683
+ "additionalProperties": true
684
+ },
685
+ "result": {
686
+ "type": "object",
687
+ "properties": {
688
+ "kind": {
689
+ "$ref": "#/$defs/libraryKind"
690
+ },
691
+ "name": {
692
+ "type": "string"
693
+ },
694
+ "source": {
695
+ "$ref": "#/$defs/librarySource"
696
+ },
697
+ "overrides": {
698
+ "$ref": "#/$defs/librarySource"
699
+ },
700
+ "content": {
701
+ "type": "object"
702
+ },
703
+ "revision": {
704
+ "$ref": "#/$defs/libraryRevision"
705
+ },
706
+ "usedBy": {
707
+ "type": "array",
708
+ "items": {
709
+ "type": "string"
710
+ }
711
+ },
712
+ "librarySkills": {
713
+ "type": "array",
714
+ "items": {
715
+ "type": "string"
716
+ }
717
+ },
718
+ "secrets": {
719
+ "type": "array",
720
+ "items": {
721
+ "type": "string"
722
+ }
723
+ }
724
+ },
725
+ "required": [
726
+ "kind",
727
+ "name",
728
+ "source",
729
+ "content",
730
+ "revision",
731
+ "usedBy"
732
+ ],
733
+ "additionalProperties": true
734
+ }
735
+ },
736
+ "library.list": {
737
+ "x-alp": {
738
+ "effect": "query",
739
+ "capability": "library",
740
+ "scope": {
741
+ "kind": "project",
742
+ "param": "projectRoot",
743
+ "required": false,
744
+ "reads": [
745
+ "builtin",
746
+ "library"
747
+ ]
748
+ },
749
+ "idempotent": true
750
+ },
751
+ "params": {
752
+ "type": "object",
753
+ "properties": {
754
+ "kind": {
755
+ "$ref": "#/$defs/libraryKind"
756
+ },
757
+ "projectRoot": {
758
+ "$ref": "#/$defs/projectRoot"
759
+ }
760
+ },
761
+ "required": [
762
+ "kind"
763
+ ],
764
+ "additionalProperties": true
765
+ },
766
+ "result": {
767
+ "type": "object",
768
+ "properties": {
769
+ "projectRoot": {
770
+ "type": [
771
+ "string",
772
+ "null"
773
+ ]
774
+ },
775
+ "entries": {
776
+ "type": "array",
777
+ "items": {
778
+ "$ref": "#/$defs/libraryEntryRow"
779
+ }
780
+ }
781
+ },
782
+ "required": [
783
+ "projectRoot",
784
+ "entries"
785
+ ],
786
+ "additionalProperties": true
787
+ }
788
+ },
789
+ "library.models": {
790
+ "x-alp": {
791
+ "effect": "query",
792
+ "capability": "library",
793
+ "scope": {
794
+ "kind": "host"
795
+ },
796
+ "idempotent": true
797
+ },
798
+ "params": {
799
+ "type": "object",
800
+ "properties": {},
801
+ "required": [],
802
+ "additionalProperties": true
803
+ },
804
+ "result": {
805
+ "type": "object",
806
+ "properties": {
807
+ "models": {
808
+ "type": "array",
809
+ "items": {
810
+ "type": "object",
811
+ "properties": {
812
+ "id": {
813
+ "type": "string"
814
+ },
815
+ "label": {
816
+ "type": "string"
817
+ },
818
+ "efforts": {
819
+ "type": "array",
820
+ "items": {
821
+ "type": "string"
822
+ }
823
+ },
824
+ "effort": {
825
+ "type": "string"
826
+ }
827
+ },
828
+ "required": [
829
+ "id",
830
+ "label",
831
+ "efforts"
832
+ ],
833
+ "additionalProperties": true
834
+ }
835
+ }
836
+ },
837
+ "required": [
838
+ "models"
839
+ ],
840
+ "additionalProperties": true
841
+ }
842
+ },
843
+ "library.rename": {
844
+ "x-alp": {
845
+ "effect": "mutation",
846
+ "capability": "library",
847
+ "scope": {
848
+ "kind": "library-or-project",
849
+ "param": "projectRoot",
850
+ "selector": "scope"
851
+ },
852
+ "idempotent": false,
853
+ "risks": [
854
+ "exec-config when kind is mcp, hooks or providers"
855
+ ]
856
+ },
857
+ "params": {
858
+ "type": "object",
859
+ "properties": {
860
+ "kind": {
861
+ "$ref": "#/$defs/libraryKind"
862
+ },
863
+ "from": {
864
+ "$ref": "#/$defs/entryName"
865
+ },
866
+ "to": {
867
+ "$ref": "#/$defs/entryName"
868
+ },
869
+ "scope": {
870
+ "$ref": "#/$defs/libraryScope"
871
+ },
872
+ "projectRoot": {
873
+ "$ref": "#/$defs/projectRoot"
874
+ }
875
+ },
876
+ "required": [
877
+ "kind",
878
+ "from",
879
+ "to",
880
+ "scope"
881
+ ],
882
+ "additionalProperties": true
883
+ },
884
+ "result": {
885
+ "type": "object",
886
+ "properties": {
887
+ "revision": {
888
+ "$ref": "#/$defs/libraryRevision"
889
+ }
890
+ },
891
+ "required": [
892
+ "revision"
893
+ ],
894
+ "additionalProperties": true
895
+ }
896
+ },
897
+ "library.save": {
898
+ "x-alp": {
899
+ "effect": "mutation",
900
+ "capability": "library",
901
+ "scope": {
902
+ "kind": "library-or-project",
903
+ "param": "projectRoot",
904
+ "selector": "scope"
905
+ },
906
+ "idempotent": "with revision (a repeat fails revision_conflict)",
907
+ "risks": [
908
+ "exec-config when kind is mcp, hooks or providers, or agents naming mcp/hooks/provider",
909
+ "writes every known project's .alp/settings.json when kind is teams and sync is known-projects"
910
+ ]
911
+ },
912
+ "params": {
913
+ "type": "object",
914
+ "properties": {
915
+ "kind": {
916
+ "$ref": "#/$defs/libraryKind"
917
+ },
918
+ "name": {
919
+ "$ref": "#/$defs/entryName"
920
+ },
921
+ "scope": {
922
+ "$ref": "#/$defs/libraryScope"
923
+ },
924
+ "projectRoot": {
925
+ "$ref": "#/$defs/projectRoot"
926
+ },
927
+ "content": {
928
+ "type": "object"
929
+ },
930
+ "revision": {
931
+ "$ref": "#/$defs/libraryRevision"
932
+ },
933
+ "sync": {
934
+ "enum": [
935
+ "none",
936
+ "known-projects"
937
+ ]
938
+ }
939
+ },
940
+ "required": [
941
+ "kind",
942
+ "name",
943
+ "scope",
944
+ "content"
945
+ ],
946
+ "additionalProperties": true
947
+ },
948
+ "result": {
949
+ "type": "object",
950
+ "properties": {
951
+ "revision": {
952
+ "$ref": "#/$defs/libraryRevision"
953
+ },
954
+ "syncedProjects": {
955
+ "type": "integer",
956
+ "minimum": 0
957
+ },
958
+ "syncErrors": {
959
+ "type": "array",
960
+ "items": {
961
+ "type": "string"
962
+ }
963
+ }
964
+ },
965
+ "required": [
966
+ "revision"
967
+ ],
968
+ "additionalProperties": true
969
+ }
970
+ },
971
+ "library.skills.set": {
972
+ "x-alp": {
973
+ "effect": "mutation",
974
+ "capability": "library",
975
+ "scope": {
976
+ "kind": "host"
977
+ },
978
+ "writes": [
979
+ "ALP_HOME/role-skills.json"
980
+ ],
981
+ "idempotent": true
982
+ },
983
+ "params": {
984
+ "type": "object",
985
+ "properties": {
986
+ "agent": {
987
+ "$ref": "#/$defs/entryName"
988
+ },
989
+ "skills": {
990
+ "type": "array",
991
+ "items": {
992
+ "$ref": "#/$defs/entryName"
993
+ },
994
+ "maxItems": 100
995
+ }
996
+ },
997
+ "required": [
998
+ "agent",
999
+ "skills"
1000
+ ],
1001
+ "additionalProperties": true
1002
+ },
1003
+ "result": {
1004
+ "type": "object",
1005
+ "properties": {
1006
+ "skills": {
1007
+ "type": "array",
1008
+ "items": {
1009
+ "type": "string"
1010
+ }
1011
+ }
1012
+ },
1013
+ "required": [
1014
+ "skills"
1015
+ ],
1016
+ "additionalProperties": true
1017
+ }
1018
+ },
1019
+ "question.answer": {
1020
+ "x-alp": {
1021
+ "effect": "mutation",
1022
+ "scope": {
1023
+ "kind": "question",
1024
+ "param": "questionId",
1025
+ "prefix": true
1026
+ },
1027
+ "idempotent": false
1028
+ },
1029
+ "params": {
1030
+ "type": "object",
1031
+ "properties": {
1032
+ "questionId": {
1033
+ "type": "string"
1034
+ },
1035
+ "text": {
1036
+ "type": "string"
1037
+ },
1038
+ "dismiss": {
1039
+ "type": "boolean"
1040
+ },
1041
+ "reason": {
1042
+ "type": "string"
1043
+ }
1044
+ },
1045
+ "required": [
1046
+ "questionId"
1047
+ ],
1048
+ "additionalProperties": true
1049
+ },
1050
+ "result": {
1051
+ "type": "object",
1052
+ "properties": {
1053
+ "questionId": {
1054
+ "type": "string"
1055
+ }
1056
+ },
1057
+ "required": [
1058
+ "questionId"
1059
+ ],
1060
+ "additionalProperties": true
1061
+ }
1062
+ },
1063
+ "question.list": {
1064
+ "x-alp": {
1065
+ "effect": "query",
1066
+ "scope": {
1067
+ "kind": "project",
1068
+ "param": "projectRoot",
1069
+ "required": false
1070
+ },
1071
+ "idempotent": true
1072
+ },
1073
+ "params": {
1074
+ "type": "object",
1075
+ "properties": {
1076
+ "projectRoot": {
1077
+ "type": "string"
1078
+ }
1079
+ },
1080
+ "required": [],
1081
+ "additionalProperties": true
1082
+ },
1083
+ "result": {
1084
+ "type": "object",
1085
+ "properties": {
1086
+ "questions": {
1087
+ "type": "array",
1088
+ "items": {
1089
+ "$ref": "#/$defs/question"
1090
+ }
1091
+ }
1092
+ },
1093
+ "required": [
1094
+ "questions"
1095
+ ],
1096
+ "additionalProperties": true
1097
+ }
1098
+ },
1099
+ "session.archive": {
1100
+ "x-alp": {
1101
+ "effect": "mutation",
1102
+ "scope": {
1103
+ "kind": "session",
1104
+ "param": "sessionId"
1105
+ },
1106
+ "idempotent": true
1107
+ },
1108
+ "params": {
1109
+ "type": "object",
1110
+ "properties": {
1111
+ "sessionId": {
1112
+ "type": "string"
1113
+ },
1114
+ "archived": {
1115
+ "type": "boolean"
1116
+ }
1117
+ },
1118
+ "required": [
1119
+ "sessionId"
1120
+ ],
1121
+ "additionalProperties": true
1122
+ },
1123
+ "result": {
1124
+ "type": "object",
1125
+ "properties": {
1126
+ "session": {
1127
+ "$ref": "#/$defs/sessionSummary"
1128
+ }
1129
+ },
1130
+ "required": [
1131
+ "session"
1132
+ ],
1133
+ "additionalProperties": true
1134
+ }
1135
+ },
1136
+ "session.attach": {
1137
+ "x-alp": {
1138
+ "effect": "query",
1139
+ "scope": {
1140
+ "kind": "session",
1141
+ "param": "sessionId"
1142
+ },
1143
+ "idempotent": true
1144
+ },
1145
+ "params": {
1146
+ "type": "object",
1147
+ "properties": {
1148
+ "sessionId": {
1149
+ "type": "string"
1150
+ },
1151
+ "replay": {
1152
+ "type": "boolean"
1153
+ },
1154
+ "after": {
1155
+ "type": "integer",
1156
+ "minimum": 0,
1157
+ "maximum": 9007199254740991
1158
+ }
1159
+ },
1160
+ "required": [
1161
+ "sessionId"
1162
+ ],
1163
+ "additionalProperties": true
1164
+ },
1165
+ "result": {
1166
+ "type": "object",
1167
+ "properties": {
1168
+ "session": {
1169
+ "$ref": "#/$defs/sessionSummary"
1170
+ },
1171
+ "cursor": {
1172
+ "type": "integer",
1173
+ "minimum": 0,
1174
+ "maximum": 9007199254740991
1175
+ },
1176
+ "reset": {
1177
+ "const": true
1178
+ }
1179
+ },
1180
+ "required": [
1181
+ "session",
1182
+ "cursor"
1183
+ ],
1184
+ "additionalProperties": true
1185
+ }
1186
+ },
1187
+ "session.close": {
1188
+ "x-alp": {
1189
+ "effect": "mutation",
1190
+ "scope": {
1191
+ "kind": "session",
1192
+ "param": "sessionId"
1193
+ },
1194
+ "idempotent": false
1195
+ },
1196
+ "params": {
1197
+ "type": "object",
1198
+ "properties": {
1199
+ "sessionId": {
1200
+ "type": "string"
1201
+ }
1202
+ },
1203
+ "required": [
1204
+ "sessionId"
1205
+ ],
1206
+ "additionalProperties": true
1207
+ },
1208
+ "result": {
1209
+ "type": "object",
1210
+ "properties": {},
1211
+ "required": [],
1212
+ "additionalProperties": true
1213
+ }
1214
+ },
1215
+ "session.configure": {
1216
+ "x-alp": {
1217
+ "effect": "mutation",
1218
+ "scope": {
1219
+ "kind": "session",
1220
+ "param": "sessionId"
1221
+ },
1222
+ "idempotent": true
1223
+ },
1224
+ "params": {
1225
+ "type": "object",
1226
+ "properties": {
1227
+ "sessionId": {
1228
+ "type": "string"
1229
+ },
1230
+ "mode": {
1231
+ "type": "string"
1232
+ }
1233
+ },
1234
+ "required": [
1235
+ "sessionId"
1236
+ ],
1237
+ "additionalProperties": true
1238
+ },
1239
+ "result": {
1240
+ "type": "object",
1241
+ "properties": {
1242
+ "session": {
1243
+ "$ref": "#/$defs/session"
1244
+ }
1245
+ },
1246
+ "required": [
1247
+ "session"
1248
+ ],
1249
+ "additionalProperties": true
1250
+ }
1251
+ },
1252
+ "session.create": {
1253
+ "x-alp": {
1254
+ "effect": "mutation",
1255
+ "scope": {
1256
+ "kind": "project",
1257
+ "param": "spec.cwd"
1258
+ },
1259
+ "idempotent": false,
1260
+ "risks": [
1261
+ "exec: spec.env and stdio spec.mcpServers run on the daemon host",
1262
+ "spec.workdir/writeRoot/copy*/restore/keepThread are internal"
1263
+ ]
1264
+ },
1265
+ "params": {
1266
+ "type": "object",
1267
+ "properties": {
1268
+ "sessionId": {
1269
+ "type": "string",
1270
+ "pattern": "^[A-Za-z0-9_.:-]{1,128}$"
1271
+ },
1272
+ "spec": {
1273
+ "$ref": "#/$defs/spec"
1274
+ },
1275
+ "history": {
1276
+ "enum": [
1277
+ "skip",
1278
+ "replay"
1279
+ ]
1280
+ },
1281
+ "delegation": {
1282
+ "type": "boolean"
1283
+ },
1284
+ "resume": {
1285
+ "type": "boolean"
1286
+ }
1287
+ },
1288
+ "required": [
1289
+ "spec"
1290
+ ],
1291
+ "additionalProperties": true
1292
+ },
1293
+ "result": {
1294
+ "type": "object",
1295
+ "properties": {
1296
+ "session": {
1297
+ "$ref": "#/$defs/session"
1298
+ },
1299
+ "attached": {
1300
+ "type": "boolean"
1301
+ },
1302
+ "resumed": {
1303
+ "const": true
1304
+ },
1305
+ "durable": {
1306
+ "type": "boolean"
1307
+ }
1308
+ },
1309
+ "required": [
1310
+ "session",
1311
+ "attached"
1312
+ ],
1313
+ "additionalProperties": true
1314
+ }
1315
+ },
1316
+ "session.get": {
1317
+ "x-alp": {
1318
+ "effect": "query",
1319
+ "scope": {
1320
+ "kind": "session",
1321
+ "param": "sessionId"
1322
+ },
1323
+ "idempotent": true
1324
+ },
1325
+ "params": {
1326
+ "type": "object",
1327
+ "properties": {
1328
+ "sessionId": {
1329
+ "type": "string"
1330
+ }
1331
+ },
1332
+ "required": [
1333
+ "sessionId"
1334
+ ],
1335
+ "additionalProperties": true
1336
+ },
1337
+ "result": {
1338
+ "type": "object",
1339
+ "properties": {
1340
+ "session": {
1341
+ "$ref": "#/$defs/sessionSummary"
1342
+ }
1343
+ },
1344
+ "required": [
1345
+ "session"
1346
+ ],
1347
+ "additionalProperties": true
1348
+ }
1349
+ },
1350
+ "session.interrupt": {
1351
+ "x-alp": {
1352
+ "effect": "mutation",
1353
+ "scope": {
1354
+ "kind": "session",
1355
+ "param": "sessionId"
1356
+ },
1357
+ "idempotent": true
1358
+ },
1359
+ "params": {
1360
+ "type": "object",
1361
+ "properties": {
1362
+ "sessionId": {
1363
+ "type": "string"
1364
+ }
1365
+ },
1366
+ "required": [
1367
+ "sessionId"
1368
+ ],
1369
+ "additionalProperties": true
1370
+ },
1371
+ "result": {
1372
+ "type": "object",
1373
+ "properties": {},
1374
+ "required": [],
1375
+ "additionalProperties": true
1376
+ }
1377
+ },
1378
+ "session.list": {
1379
+ "x-alp": {
1380
+ "effect": "query",
1381
+ "scope": {
1382
+ "kind": "project",
1383
+ "param": "projectRoot",
1384
+ "required": false
1385
+ },
1386
+ "idempotent": true
1387
+ },
1388
+ "params": {
1389
+ "type": "object",
1390
+ "properties": {
1391
+ "projectRoot": {
1392
+ "type": "string"
1393
+ },
1394
+ "rootsOnly": {
1395
+ "type": "boolean"
1396
+ },
1397
+ "includeClosed": {
1398
+ "type": "boolean"
1399
+ },
1400
+ "includeArchived": {
1401
+ "type": "boolean"
1402
+ }
1403
+ },
1404
+ "required": [],
1405
+ "additionalProperties": true
1406
+ },
1407
+ "result": {
1408
+ "type": "object",
1409
+ "properties": {
1410
+ "sessions": {
1411
+ "type": "array",
1412
+ "items": {
1413
+ "$ref": "#/$defs/sessionSummary"
1414
+ }
1415
+ }
1416
+ },
1417
+ "required": [
1418
+ "sessions"
1419
+ ],
1420
+ "additionalProperties": true
1421
+ }
1422
+ },
1423
+ "session.log": {
1424
+ "x-alp": {
1425
+ "effect": "query",
1426
+ "scope": {
1427
+ "kind": "session",
1428
+ "param": "sessionId"
1429
+ },
1430
+ "idempotent": true
1431
+ },
1432
+ "params": {
1433
+ "type": "object",
1434
+ "properties": {
1435
+ "sessionId": {
1436
+ "type": "string"
1437
+ }
1438
+ },
1439
+ "required": [
1440
+ "sessionId"
1441
+ ],
1442
+ "additionalProperties": true
1443
+ },
1444
+ "result": {
1445
+ "type": "object",
1446
+ "properties": {
1447
+ "rootId": {
1448
+ "type": "string"
1449
+ },
1450
+ "entries": {
1451
+ "type": "array",
1452
+ "items": {
1453
+ "type": "object"
1454
+ }
1455
+ }
1456
+ },
1457
+ "required": [
1458
+ "rootId",
1459
+ "entries"
1460
+ ],
1461
+ "additionalProperties": true
1462
+ }
1463
+ },
1464
+ "session.message": {
1465
+ "x-alp": {
1466
+ "effect": "mutation",
1467
+ "scope": {
1468
+ "kind": "session",
1469
+ "param": "sessionId"
1470
+ },
1471
+ "idempotent": false
1472
+ },
1473
+ "params": {
1474
+ "type": "object",
1475
+ "properties": {
1476
+ "sessionId": {
1477
+ "type": "string"
1478
+ },
1479
+ "text": {
1480
+ "type": "string"
1481
+ }
1482
+ },
1483
+ "required": [
1484
+ "sessionId",
1485
+ "text"
1486
+ ],
1487
+ "additionalProperties": true
1488
+ },
1489
+ "result": {
1490
+ "type": "object",
1491
+ "properties": {},
1492
+ "required": [],
1493
+ "additionalProperties": true
1494
+ }
1495
+ },
1496
+ "session.preview": {
1497
+ "x-alp": {
1498
+ "effect": "query",
1499
+ "scope": {
1500
+ "kind": "project",
1501
+ "param": "spec.cwd"
1502
+ },
1503
+ "idempotent": true
1504
+ },
1505
+ "params": {
1506
+ "type": "object",
1507
+ "properties": {
1508
+ "spec": {
1509
+ "$ref": "#/$defs/spec"
1510
+ }
1511
+ },
1512
+ "required": [
1513
+ "spec"
1514
+ ],
1515
+ "additionalProperties": true
1516
+ },
1517
+ "result": {
1518
+ "type": "object",
1519
+ "properties": {
1520
+ "preview": {
1521
+ "$ref": "#/$defs/preview"
1522
+ }
1523
+ },
1524
+ "required": [
1525
+ "preview"
1526
+ ],
1527
+ "additionalProperties": true
1528
+ }
1529
+ },
1530
+ "session.prompt": {
1531
+ "x-alp": {
1532
+ "effect": "mutation",
1533
+ "scope": {
1534
+ "kind": "session",
1535
+ "param": "sessionId"
1536
+ },
1537
+ "idempotent": "with prompt.receipts"
1538
+ },
1539
+ "params": {
1540
+ "type": "object",
1541
+ "properties": {
1542
+ "sessionId": {
1543
+ "type": "string"
1544
+ },
1545
+ "clientMessageId": {
1546
+ "type": "string"
1547
+ },
1548
+ "delivery": {
1549
+ "enum": [
1550
+ "auto",
1551
+ "steer"
1552
+ ]
1553
+ },
1554
+ "content": {
1555
+ "type": "array",
1556
+ "items": {
1557
+ "type": "object",
1558
+ "properties": {
1559
+ "type": {
1560
+ "type": "string"
1561
+ },
1562
+ "text": {
1563
+ "type": "string"
1564
+ }
1565
+ },
1566
+ "required": [
1567
+ "type"
1568
+ ],
1569
+ "additionalProperties": true
1570
+ }
1571
+ }
1572
+ },
1573
+ "required": [
1574
+ "sessionId",
1575
+ "clientMessageId",
1576
+ "content"
1577
+ ],
1578
+ "additionalProperties": true
1579
+ },
1580
+ "result": {
1581
+ "type": "object",
1582
+ "properties": {
1583
+ "outcome": {
1584
+ "enum": [
1585
+ "accepted",
1586
+ "failed"
1587
+ ]
1588
+ },
1589
+ "error": {
1590
+ "$ref": "#/$defs/alpError"
1591
+ },
1592
+ "duplicate": {
1593
+ "type": "boolean"
1594
+ },
1595
+ "durable": {
1596
+ "type": "boolean"
1597
+ }
1598
+ },
1599
+ "required": [],
1600
+ "additionalProperties": true
1601
+ }
1602
+ },
1603
+ "session.release": {
1604
+ "x-alp": {
1605
+ "effect": "mutation",
1606
+ "scope": {
1607
+ "kind": "session",
1608
+ "param": "sessionId"
1609
+ },
1610
+ "idempotent": true
1611
+ },
1612
+ "params": {
1613
+ "type": "object",
1614
+ "properties": {
1615
+ "sessionId": {
1616
+ "type": "string"
1617
+ }
1618
+ },
1619
+ "required": [
1620
+ "sessionId"
1621
+ ],
1622
+ "additionalProperties": true
1623
+ },
1624
+ "result": {
1625
+ "type": "object",
1626
+ "properties": {
1627
+ "closed": {
1628
+ "type": "boolean"
1629
+ }
1630
+ },
1631
+ "required": [
1632
+ "closed"
1633
+ ],
1634
+ "additionalProperties": true
1635
+ }
1636
+ },
1637
+ "session.rename": {
1638
+ "x-alp": {
1639
+ "effect": "mutation",
1640
+ "scope": {
1641
+ "kind": "session",
1642
+ "param": "sessionId"
1643
+ },
1644
+ "idempotent": true
1645
+ },
1646
+ "params": {
1647
+ "type": "object",
1648
+ "properties": {
1649
+ "sessionId": {
1650
+ "type": "string"
1651
+ },
1652
+ "title": {
1653
+ "type": "string",
1654
+ "minLength": 1,
1655
+ "maxLength": 200,
1656
+ "pattern": "\\S"
1657
+ }
1658
+ },
1659
+ "required": [
1660
+ "sessionId",
1661
+ "title"
1662
+ ],
1663
+ "additionalProperties": true
1664
+ },
1665
+ "result": {
1666
+ "type": "object",
1667
+ "properties": {
1668
+ "session": {
1669
+ "$ref": "#/$defs/sessionSummary"
1670
+ }
1671
+ },
1672
+ "required": [
1673
+ "session"
1674
+ ],
1675
+ "additionalProperties": true
1676
+ }
1677
+ },
1678
+ "session.status": {
1679
+ "x-alp": {
1680
+ "effect": "query",
1681
+ "scope": {
1682
+ "kind": "session",
1683
+ "param": "sessionId"
1684
+ },
1685
+ "idempotent": true
1686
+ },
1687
+ "params": {
1688
+ "type": "object",
1689
+ "properties": {
1690
+ "sessionId": {
1691
+ "type": "string"
1692
+ }
1693
+ },
1694
+ "required": [
1695
+ "sessionId"
1696
+ ],
1697
+ "additionalProperties": true
1698
+ },
1699
+ "result": {
1700
+ "type": "object",
1701
+ "properties": {
1702
+ "status": {
1703
+ "$ref": "#/$defs/treeStatus"
1704
+ }
1705
+ },
1706
+ "required": [
1707
+ "status"
1708
+ ],
1709
+ "additionalProperties": true
1710
+ }
1711
+ },
1712
+ "settings.language.get": {
1713
+ "x-alp": {
1714
+ "effect": "query",
1715
+ "capability": "settings.language",
1716
+ "scope": {
1717
+ "kind": "host"
1718
+ },
1719
+ "idempotent": true
1720
+ },
1721
+ "params": {
1722
+ "type": "object",
1723
+ "properties": {},
1724
+ "required": [],
1725
+ "additionalProperties": true
1726
+ },
1727
+ "result": {
1728
+ "$ref": "#/$defs/languageSetting"
1729
+ }
1730
+ },
1731
+ "settings.language.set": {
1732
+ "x-alp": {
1733
+ "effect": "mutation",
1734
+ "capability": "settings.language",
1735
+ "scope": {
1736
+ "kind": "host"
1737
+ },
1738
+ "writes": [
1739
+ "ALP_HOME/settings.json"
1740
+ ],
1741
+ "idempotent": true
1742
+ },
1743
+ "params": {
1744
+ "type": "object",
1745
+ "properties": {
1746
+ "language": {
1747
+ "anyOf": [
1748
+ {
1749
+ "type": "string",
1750
+ "minLength": 1,
1751
+ "maxLength": 40,
1752
+ "pattern": "\\S"
1753
+ },
1754
+ {
1755
+ "type": "null"
1756
+ }
1757
+ ]
1758
+ }
1759
+ },
1760
+ "required": [
1761
+ "language"
1762
+ ],
1763
+ "additionalProperties": true
1764
+ },
1765
+ "result": {
1766
+ "$ref": "#/$defs/languageSetting"
1767
+ }
1768
+ },
1769
+ "task.create": {
1770
+ "x-alp": {
1771
+ "effect": "mutation",
1772
+ "capability": "task",
1773
+ "scope": {
1774
+ "kind": "project",
1775
+ "param": "projectRoot",
1776
+ "required": true
1777
+ },
1778
+ "writes": [
1779
+ "<projectRoot>/.alp/tasks"
1780
+ ],
1781
+ "idempotent": "per requestId within one alpd process (10 minutes)"
1782
+ },
1783
+ "params": {
1784
+ "type": "object",
1785
+ "properties": {
1786
+ "projectRoot": {
1787
+ "$ref": "#/$defs/projectRoot"
1788
+ },
1789
+ "title": {
1790
+ "type": "string",
1791
+ "minLength": 1,
1792
+ "maxLength": 200,
1793
+ "pattern": "\\S"
1794
+ },
1795
+ "priority": {
1796
+ "type": "integer",
1797
+ "minimum": 0,
1798
+ "maximum": 4
1799
+ },
1800
+ "requestId": {
1801
+ "type": "string",
1802
+ "minLength": 1,
1803
+ "maxLength": 128
1804
+ }
1805
+ },
1806
+ "required": [
1807
+ "projectRoot",
1808
+ "title"
1809
+ ],
1810
+ "additionalProperties": true
1811
+ },
1812
+ "result": {
1813
+ "type": "object",
1814
+ "properties": {
1815
+ "id": {
1816
+ "$ref": "#/$defs/taskId"
1817
+ },
1818
+ "duplicate": {
1819
+ "const": true
1820
+ }
1821
+ },
1822
+ "required": [
1823
+ "id"
1824
+ ],
1825
+ "additionalProperties": true
1826
+ }
1827
+ },
1828
+ "task.gate.resolve": {
1829
+ "x-alp": {
1830
+ "effect": "mutation",
1831
+ "capability": "task",
1832
+ "scope": {
1833
+ "kind": "project",
1834
+ "param": "projectRoot",
1835
+ "required": true
1836
+ },
1837
+ "writes": [
1838
+ "<projectRoot>/.alp/tasks"
1839
+ ],
1840
+ "idempotent": false
1841
+ },
1842
+ "params": {
1843
+ "type": "object",
1844
+ "properties": {
1845
+ "projectRoot": {
1846
+ "$ref": "#/$defs/projectRoot"
1847
+ },
1848
+ "id": {
1849
+ "$ref": "#/$defs/taskId"
1850
+ },
1851
+ "gate": {
1852
+ "type": "string",
1853
+ "minLength": 1,
1854
+ "maxLength": 128
1855
+ },
1856
+ "note": {
1857
+ "type": "string",
1858
+ "maxLength": 2000
1859
+ },
1860
+ "ifRev": {
1861
+ "type": "integer",
1862
+ "minimum": 0
1863
+ }
1864
+ },
1865
+ "required": [
1866
+ "projectRoot",
1867
+ "id",
1868
+ "gate"
1869
+ ],
1870
+ "additionalProperties": true
1871
+ },
1872
+ "result": {
1873
+ "type": "object",
1874
+ "properties": {
1875
+ "id": {
1876
+ "$ref": "#/$defs/taskId"
1877
+ },
1878
+ "status": {
1879
+ "type": "string"
1880
+ },
1881
+ "rev": {
1882
+ "type": "integer",
1883
+ "minimum": 0
1884
+ }
1885
+ },
1886
+ "required": [
1887
+ "id",
1888
+ "status",
1889
+ "rev"
1890
+ ],
1891
+ "additionalProperties": true
1892
+ }
1893
+ },
1894
+ "task.list": {
1895
+ "x-alp": {
1896
+ "effect": "query",
1897
+ "capability": "task",
1898
+ "scope": {
1899
+ "kind": "project",
1900
+ "param": "projectRoot",
1901
+ "required": true
1902
+ },
1903
+ "idempotent": true
1904
+ },
1905
+ "params": {
1906
+ "type": "object",
1907
+ "properties": {
1908
+ "projectRoot": {
1909
+ "$ref": "#/$defs/projectRoot"
1910
+ }
1911
+ },
1912
+ "required": [
1913
+ "projectRoot"
1914
+ ],
1915
+ "additionalProperties": true
1916
+ },
1917
+ "result": {
1918
+ "type": "object",
1919
+ "properties": {
1920
+ "projectRoot": {
1921
+ "type": "string"
1922
+ },
1923
+ "tasks": {
1924
+ "type": "array",
1925
+ "items": {
1926
+ "$ref": "#/$defs/taskRow"
1927
+ }
1928
+ },
1929
+ "unreadable": {
1930
+ "type": "array",
1931
+ "items": {
1932
+ "type": "object",
1933
+ "properties": {
1934
+ "file": {
1935
+ "type": "string"
1936
+ },
1937
+ "error": {
1938
+ "type": "string"
1939
+ }
1940
+ },
1941
+ "required": [
1942
+ "file",
1943
+ "error"
1944
+ ],
1945
+ "additionalProperties": true
1946
+ }
1947
+ },
1948
+ "revision": {
1949
+ "type": "string"
1950
+ }
1951
+ },
1952
+ "required": [
1953
+ "projectRoot",
1954
+ "tasks",
1955
+ "unreadable",
1956
+ "revision"
1957
+ ],
1958
+ "additionalProperties": true
1959
+ }
1960
+ },
1961
+ "task.update": {
1962
+ "x-alp": {
1963
+ "effect": "mutation",
1964
+ "capability": "task",
1965
+ "scope": {
1966
+ "kind": "project",
1967
+ "param": "projectRoot",
1968
+ "required": true
1969
+ },
1970
+ "writes": [
1971
+ "<projectRoot>/.alp/tasks"
1972
+ ],
1973
+ "idempotent": false
1974
+ },
1975
+ "params": {
1976
+ "type": "object",
1977
+ "properties": {
1978
+ "projectRoot": {
1979
+ "$ref": "#/$defs/projectRoot"
1980
+ },
1981
+ "id": {
1982
+ "$ref": "#/$defs/taskId"
1983
+ },
1984
+ "action": {
1985
+ "enum": [
1986
+ "close",
1987
+ "reopen"
1988
+ ]
1989
+ },
1990
+ "note": {
1991
+ "type": "string",
1992
+ "maxLength": 2000
1993
+ },
1994
+ "ifRev": {
1995
+ "type": "integer",
1996
+ "minimum": 0
1997
+ }
1998
+ },
1999
+ "required": [
2000
+ "projectRoot",
2001
+ "id",
2002
+ "action"
2003
+ ],
2004
+ "additionalProperties": true
2005
+ },
2006
+ "result": {
2007
+ "type": "object",
2008
+ "properties": {
2009
+ "id": {
2010
+ "$ref": "#/$defs/taskId"
2011
+ },
2012
+ "status": {
2013
+ "type": "string"
2014
+ },
2015
+ "rev": {
2016
+ "type": "integer",
2017
+ "minimum": 0
2018
+ },
2019
+ "landed": {
2020
+ "type": "string"
2021
+ }
2022
+ },
2023
+ "required": [
2024
+ "id",
2025
+ "status",
2026
+ "rev"
2027
+ ],
2028
+ "additionalProperties": true
2029
+ }
2030
+ },
2031
+ "team.list": {
2032
+ "x-alp": {
2033
+ "effect": "query",
2034
+ "capability": "team",
2035
+ "scope": {
2036
+ "kind": "project",
2037
+ "param": "projectRoot",
2038
+ "required": false,
2039
+ "reads": [
2040
+ "builtin",
2041
+ "library"
2042
+ ]
2043
+ },
2044
+ "idempotent": true
2045
+ },
2046
+ "params": {
2047
+ "type": "object",
2048
+ "properties": {
2049
+ "projectRoot": {
2050
+ "$ref": "#/$defs/projectRoot"
2051
+ }
2052
+ },
2053
+ "required": [],
2054
+ "additionalProperties": true
2055
+ },
2056
+ "result": {
2057
+ "type": "object",
2058
+ "properties": {
2059
+ "projectRoot": {
2060
+ "type": [
2061
+ "string",
2062
+ "null"
2063
+ ]
2064
+ },
2065
+ "teams": {
2066
+ "type": "array",
2067
+ "items": {
2068
+ "$ref": "#/$defs/teamRow"
2069
+ }
2070
+ }
2071
+ },
2072
+ "required": [
2073
+ "projectRoot",
2074
+ "teams"
2075
+ ],
2076
+ "additionalProperties": true
2077
+ }
2078
+ }
2079
+ },
2080
+ "$defs": {
2081
+ "error": {
2082
+ "type": "object",
2083
+ "properties": {
2084
+ "code": {
2085
+ "type": "integer"
2086
+ },
2087
+ "message": {
2088
+ "type": "string"
2089
+ },
2090
+ "data": {}
2091
+ },
2092
+ "required": [
2093
+ "code",
2094
+ "message"
2095
+ ],
2096
+ "additionalProperties": true
2097
+ },
2098
+ "session": {
2099
+ "type": "object",
2100
+ "properties": {
2101
+ "id": {
2102
+ "type": "string"
2103
+ },
2104
+ "projectRoot": {
2105
+ "type": "string"
2106
+ },
2107
+ "agent": {
2108
+ "type": "string"
2109
+ },
2110
+ "runtime": {
2111
+ "enum": [
2112
+ "claude",
2113
+ "codex",
2114
+ "acp",
2115
+ "antigravity"
2116
+ ]
2117
+ },
2118
+ "model": {
2119
+ "type": "string"
2120
+ },
2121
+ "mode": {
2122
+ "type": "string"
2123
+ },
2124
+ "thinking": {
2125
+ "type": "string"
2126
+ },
2127
+ "workflow": {
2128
+ "type": "object",
2129
+ "properties": {
2130
+ "mode": {
2131
+ "type": "string"
2132
+ },
2133
+ "maxPeers": {
2134
+ "type": "integer"
2135
+ },
2136
+ "supervisor": {
2137
+ "type": "boolean"
2138
+ }
2139
+ },
2140
+ "required": [
2141
+ "mode",
2142
+ "maxPeers",
2143
+ "supervisor"
2144
+ ],
2145
+ "additionalProperties": true
2146
+ },
2147
+ "threadId": {
2148
+ "type": "string"
2149
+ },
2150
+ "persistent": {
2151
+ "type": "boolean"
2152
+ },
2153
+ "busy": {
2154
+ "type": "boolean"
2155
+ },
2156
+ "parentId": {
2157
+ "type": "string"
2158
+ },
2159
+ "toolCallId": {
2160
+ "type": "string"
2161
+ },
2162
+ "activeTurnId": {
2163
+ "type": "string"
2164
+ },
2165
+ "parked": {
2166
+ "type": "string"
2167
+ },
2168
+ "instructionsSha": {
2169
+ "type": "string"
2170
+ },
2171
+ "teamLabel": {
2172
+ "type": "string"
2173
+ }
2174
+ },
2175
+ "required": [
2176
+ "id",
2177
+ "projectRoot",
2178
+ "agent",
2179
+ "runtime",
2180
+ "model",
2181
+ "mode",
2182
+ "thinking",
2183
+ "workflow",
2184
+ "threadId",
2185
+ "persistent",
2186
+ "busy"
2187
+ ],
2188
+ "additionalProperties": true
2189
+ },
2190
+ "assignment": {
2191
+ "type": "object",
2192
+ "properties": {
2193
+ "id": {
2194
+ "type": "string"
2195
+ },
2196
+ "agent": {
2197
+ "type": "string"
2198
+ },
2199
+ "mode": {
2200
+ "type": "string"
2201
+ },
2202
+ "status": {
2203
+ "type": "string"
2204
+ },
2205
+ "startedAt": {
2206
+ "type": "string"
2207
+ },
2208
+ "worktree": {
2209
+ "type": "object",
2210
+ "properties": {
2211
+ "branch": {
2212
+ "type": "string"
2213
+ },
2214
+ "path": {
2215
+ "type": "string"
2216
+ }
2217
+ },
2218
+ "required": [
2219
+ "branch",
2220
+ "path"
2221
+ ],
2222
+ "additionalProperties": true
2223
+ }
2224
+ },
2225
+ "required": [
2226
+ "id",
2227
+ "agent",
2228
+ "mode",
2229
+ "status",
2230
+ "startedAt"
2231
+ ],
2232
+ "additionalProperties": true
2233
+ },
2234
+ "mail": {
2235
+ "type": "object",
2236
+ "properties": {
2237
+ "id": {
2238
+ "type": "string"
2239
+ },
2240
+ "kind": {
2241
+ "enum": [
2242
+ "question",
2243
+ "answer",
2244
+ "note",
2245
+ "steer",
2246
+ "result",
2247
+ "stalled",
2248
+ "board",
2249
+ "checkin"
2250
+ ]
2251
+ },
2252
+ "from": {
2253
+ "type": "string"
2254
+ },
2255
+ "assignment": {
2256
+ "type": "string"
2257
+ },
2258
+ "body": {
2259
+ "type": "string"
2260
+ },
2261
+ "replyTo": {
2262
+ "type": "string"
2263
+ },
2264
+ "result": {
2265
+ "type": "object"
2266
+ },
2267
+ "redelivered": {
2268
+ "type": "boolean"
2269
+ }
2270
+ },
2271
+ "required": [
2272
+ "id",
2273
+ "kind",
2274
+ "from",
2275
+ "assignment"
2276
+ ],
2277
+ "additionalProperties": true
2278
+ },
2279
+ "pin": {
2280
+ "type": "object",
2281
+ "properties": {
2282
+ "id": {
2283
+ "type": "string"
2284
+ },
2285
+ "project": {
2286
+ "type": "string"
2287
+ },
2288
+ "kind": {
2289
+ "enum": [
2290
+ "claim",
2291
+ "decision",
2292
+ "finding"
2293
+ ]
2294
+ },
2295
+ "body": {
2296
+ "type": "string"
2297
+ },
2298
+ "paths": {
2299
+ "type": "array",
2300
+ "items": {
2301
+ "type": "string"
2302
+ }
2303
+ },
2304
+ "agent": {
2305
+ "type": "string"
2306
+ },
2307
+ "sessionId": {
2308
+ "type": "string"
2309
+ },
2310
+ "rootId": {
2311
+ "type": "string"
2312
+ },
2313
+ "at": {
2314
+ "type": "string"
2315
+ },
2316
+ "released": {
2317
+ "type": "string"
2318
+ },
2319
+ "task": {
2320
+ "type": "string"
2321
+ }
2322
+ },
2323
+ "required": [
2324
+ "id",
2325
+ "project",
2326
+ "kind",
2327
+ "body",
2328
+ "agent",
2329
+ "sessionId",
2330
+ "rootId",
2331
+ "at"
2332
+ ],
2333
+ "additionalProperties": true
2334
+ },
2335
+ "question": {
2336
+ "type": "object",
2337
+ "properties": {
2338
+ "id": {
2339
+ "type": "string"
2340
+ },
2341
+ "sessionId": {
2342
+ "type": "string"
2343
+ },
2344
+ "rootId": {
2345
+ "type": "string"
2346
+ },
2347
+ "agent": {
2348
+ "type": "string"
2349
+ },
2350
+ "body": {
2351
+ "type": "string"
2352
+ },
2353
+ "options": {
2354
+ "type": "array",
2355
+ "items": {
2356
+ "type": "string"
2357
+ }
2358
+ },
2359
+ "askedAt": {
2360
+ "type": "string"
2361
+ }
2362
+ },
2363
+ "required": [
2364
+ "id",
2365
+ "sessionId",
2366
+ "rootId",
2367
+ "agent",
2368
+ "body",
2369
+ "askedAt"
2370
+ ],
2371
+ "additionalProperties": true
2372
+ },
2373
+ "spec": {
2374
+ "type": "object",
2375
+ "properties": {
2376
+ "cwd": {
2377
+ "type": "string"
2378
+ },
2379
+ "agent": {
2380
+ "type": "string"
2381
+ },
2382
+ "model": {
2383
+ "type": "string"
2384
+ },
2385
+ "mode": {
2386
+ "type": "string"
2387
+ },
2388
+ "thinking": {
2389
+ "type": "string"
2390
+ },
2391
+ "persist": {
2392
+ "type": "boolean"
2393
+ },
2394
+ "restore": {
2395
+ "type": "object"
2396
+ }
2397
+ },
2398
+ "required": [
2399
+ "cwd"
2400
+ ],
2401
+ "additionalProperties": true
2402
+ },
2403
+ "item": {
2404
+ "anyOf": [
2405
+ {
2406
+ "$ref": "#/$defs/knownItem"
2407
+ },
2408
+ {
2409
+ "$ref": "#/$defs/unknownItem"
2410
+ }
2411
+ ]
2412
+ },
2413
+ "event": {
2414
+ "anyOf": [
2415
+ {
2416
+ "$ref": "#/$defs/knownEvent"
2417
+ },
2418
+ {
2419
+ "$ref": "#/$defs/unknownEvent"
2420
+ }
2421
+ ]
2422
+ },
2423
+ "envelope": {
2424
+ "type": "object",
2425
+ "properties": {
2426
+ "sessionId": {
2427
+ "type": "string"
2428
+ },
2429
+ "epoch": {
2430
+ "type": "string"
2431
+ },
2432
+ "seq": {
2433
+ "type": "integer",
2434
+ "minimum": 0,
2435
+ "maximum": 9007199254740991
2436
+ },
2437
+ "ts": {
2438
+ "type": "string"
2439
+ },
2440
+ "event": {
2441
+ "$ref": "#/$defs/event"
2442
+ },
2443
+ "cursor": {
2444
+ "type": "integer",
2445
+ "minimum": 1,
2446
+ "maximum": 9007199254740991
2447
+ }
2448
+ },
2449
+ "required": [
2450
+ "sessionId",
2451
+ "epoch",
2452
+ "seq",
2453
+ "ts",
2454
+ "event"
2455
+ ],
2456
+ "additionalProperties": true
2457
+ },
2458
+ "request": {
2459
+ "type": "object",
2460
+ "properties": {
2461
+ "jsonrpc": {
2462
+ "const": "2.0"
2463
+ },
2464
+ "id": {
2465
+ "anyOf": [
2466
+ {
2467
+ "type": "string",
2468
+ "maxLength": 128
2469
+ },
2470
+ {
2471
+ "type": "integer",
2472
+ "minimum": -9007199254740991,
2473
+ "maximum": 9007199254740991
2474
+ }
2475
+ ]
2476
+ },
2477
+ "method": {
2478
+ "type": "string"
2479
+ },
2480
+ "params": {
2481
+ "type": "object"
2482
+ }
2483
+ },
2484
+ "required": [
2485
+ "jsonrpc",
2486
+ "method",
2487
+ "id"
2488
+ ],
2489
+ "additionalProperties": true
2490
+ },
2491
+ "response": {
2492
+ "oneOf": [
2493
+ {
2494
+ "type": "object",
2495
+ "properties": {
2496
+ "jsonrpc": {
2497
+ "const": "2.0"
2498
+ },
2499
+ "id": {
2500
+ "anyOf": [
2501
+ {
2502
+ "type": "string",
2503
+ "maxLength": 128
2504
+ },
2505
+ {
2506
+ "type": "integer",
2507
+ "minimum": -9007199254740991,
2508
+ "maximum": 9007199254740991
2509
+ },
2510
+ {
2511
+ "type": "null"
2512
+ }
2513
+ ]
2514
+ },
2515
+ "result": {}
2516
+ },
2517
+ "required": [
2518
+ "jsonrpc",
2519
+ "id",
2520
+ "result"
2521
+ ],
2522
+ "additionalProperties": true
2523
+ },
2524
+ {
2525
+ "type": "object",
2526
+ "properties": {
2527
+ "jsonrpc": {
2528
+ "const": "2.0"
2529
+ },
2530
+ "id": {
2531
+ "anyOf": [
2532
+ {
2533
+ "type": "string",
2534
+ "maxLength": 128
2535
+ },
2536
+ {
2537
+ "type": "integer",
2538
+ "minimum": -9007199254740991,
2539
+ "maximum": 9007199254740991
2540
+ },
2541
+ {
2542
+ "type": "null"
2543
+ }
2544
+ ]
2545
+ },
2546
+ "error": {
2547
+ "$ref": "#/$defs/error"
2548
+ }
2549
+ },
2550
+ "required": [
2551
+ "jsonrpc",
2552
+ "id",
2553
+ "error"
2554
+ ],
2555
+ "additionalProperties": true
2556
+ }
2557
+ ]
2558
+ },
2559
+ "notification": {
2560
+ "type": "object",
2561
+ "properties": {
2562
+ "jsonrpc": {
2563
+ "const": "2.0"
2564
+ },
2565
+ "method": {
2566
+ "const": "event"
2567
+ },
2568
+ "params": {
2569
+ "$ref": "#/$defs/envelope"
2570
+ }
2571
+ },
2572
+ "required": [
2573
+ "jsonrpc",
2574
+ "method",
2575
+ "params"
2576
+ ],
2577
+ "additionalProperties": true
2578
+ },
2579
+ "knownEvent": {
2580
+ "oneOf": [
2581
+ {
2582
+ "type": "object",
2583
+ "properties": {
2584
+ "type": {
2585
+ "const": "session.opened"
2586
+ },
2587
+ "session": {
2588
+ "$ref": "#/$defs/session"
2589
+ },
2590
+ "cwd": {
2591
+ "type": "string"
2592
+ },
2593
+ "effective": {
2594
+ "type": "object",
2595
+ "properties": {
2596
+ "model": {
2597
+ "type": "string"
2598
+ },
2599
+ "thinking": {
2600
+ "type": "string"
2601
+ }
2602
+ },
2603
+ "required": [
2604
+ "model",
2605
+ "thinking"
2606
+ ],
2607
+ "additionalProperties": true
2608
+ }
2609
+ },
2610
+ "required": [
2611
+ "type",
2612
+ "session",
2613
+ "cwd",
2614
+ "effective"
2615
+ ],
2616
+ "additionalProperties": true
2617
+ },
2618
+ {
2619
+ "type": "object",
2620
+ "properties": {
2621
+ "type": {
2622
+ "const": "session.ready"
2623
+ }
2624
+ },
2625
+ "required": [
2626
+ "type"
2627
+ ],
2628
+ "additionalProperties": true
2629
+ },
2630
+ {
2631
+ "type": "object",
2632
+ "properties": {
2633
+ "type": {
2634
+ "const": "session.updated"
2635
+ },
2636
+ "session": {
2637
+ "$ref": "#/$defs/session"
2638
+ }
2639
+ },
2640
+ "required": [
2641
+ "type",
2642
+ "session"
2643
+ ],
2644
+ "additionalProperties": true
2645
+ },
2646
+ {
2647
+ "type": "object",
2648
+ "properties": {
2649
+ "type": {
2650
+ "const": "session.closed"
2651
+ }
2652
+ },
2653
+ "required": [
2654
+ "type"
2655
+ ],
2656
+ "additionalProperties": true
2657
+ },
2658
+ {
2659
+ "type": "object",
2660
+ "properties": {
2661
+ "type": {
2662
+ "const": "session.failed"
2663
+ },
2664
+ "error": {
2665
+ "$ref": "#/$defs/alpError"
2666
+ }
2667
+ },
2668
+ "required": [
2669
+ "type",
2670
+ "error"
2671
+ ],
2672
+ "additionalProperties": true
2673
+ },
2674
+ {
2675
+ "type": "object",
2676
+ "properties": {
2677
+ "type": {
2678
+ "const": "prompt.accepted"
2679
+ },
2680
+ "clientMessageId": {
2681
+ "type": "string"
2682
+ },
2683
+ "result": {
2684
+ "enum": [
2685
+ "turn",
2686
+ "steer"
2687
+ ]
2688
+ },
2689
+ "turnId": {
2690
+ "type": "string"
2691
+ }
2692
+ },
2693
+ "required": [
2694
+ "type",
2695
+ "clientMessageId",
2696
+ "result",
2697
+ "turnId"
2698
+ ],
2699
+ "additionalProperties": true
2700
+ },
2701
+ {
2702
+ "type": "object",
2703
+ "properties": {
2704
+ "type": {
2705
+ "const": "prompt.failed"
2706
+ },
2707
+ "clientMessageId": {
2708
+ "type": "string"
2709
+ },
2710
+ "error": {
2711
+ "$ref": "#/$defs/alpError"
2712
+ }
2713
+ },
2714
+ "required": [
2715
+ "type",
2716
+ "clientMessageId",
2717
+ "error"
2718
+ ],
2719
+ "additionalProperties": true
2720
+ },
2721
+ {
2722
+ "type": "object",
2723
+ "properties": {
2724
+ "type": {
2725
+ "const": "turn.started"
2726
+ },
2727
+ "turnId": {
2728
+ "type": "string"
2729
+ },
2730
+ "origin": {
2731
+ "enum": [
2732
+ "user",
2733
+ "wake",
2734
+ "assignment",
2735
+ "runtime"
2736
+ ]
2737
+ }
2738
+ },
2739
+ "required": [
2740
+ "type",
2741
+ "turnId",
2742
+ "origin"
2743
+ ],
2744
+ "additionalProperties": true
2745
+ },
2746
+ {
2747
+ "type": "object",
2748
+ "properties": {
2749
+ "type": {
2750
+ "const": "turn.ended"
2751
+ },
2752
+ "turnId": {
2753
+ "type": "string"
2754
+ },
2755
+ "state": {
2756
+ "enum": [
2757
+ "completed",
2758
+ "failed",
2759
+ "canceled"
2760
+ ]
2761
+ },
2762
+ "error": {
2763
+ "$ref": "#/$defs/alpError"
2764
+ }
2765
+ },
2766
+ "required": [
2767
+ "type",
2768
+ "turnId",
2769
+ "state"
2770
+ ],
2771
+ "additionalProperties": true
2772
+ },
2773
+ {
2774
+ "type": "object",
2775
+ "properties": {
2776
+ "type": {
2777
+ "const": "item"
2778
+ },
2779
+ "item": {
2780
+ "$ref": "#/$defs/item"
2781
+ }
2782
+ },
2783
+ "required": [
2784
+ "type",
2785
+ "item"
2786
+ ],
2787
+ "additionalProperties": true
2788
+ },
2789
+ {
2790
+ "type": "object",
2791
+ "properties": {
2792
+ "type": {
2793
+ "const": "mail"
2794
+ },
2795
+ "mail": {
2796
+ "$ref": "#/$defs/mail"
2797
+ }
2798
+ },
2799
+ "required": [
2800
+ "type",
2801
+ "mail"
2802
+ ],
2803
+ "additionalProperties": true
2804
+ },
2805
+ {
2806
+ "type": "object",
2807
+ "properties": {
2808
+ "type": {
2809
+ "const": "assignment"
2810
+ },
2811
+ "assignment": {
2812
+ "$ref": "#/$defs/assignment"
2813
+ }
2814
+ },
2815
+ "required": [
2816
+ "type",
2817
+ "assignment"
2818
+ ],
2819
+ "additionalProperties": true
2820
+ },
2821
+ {
2822
+ "type": "object",
2823
+ "properties": {
2824
+ "type": {
2825
+ "const": "question"
2826
+ },
2827
+ "question": {
2828
+ "$ref": "#/$defs/question"
2829
+ }
2830
+ },
2831
+ "required": [
2832
+ "type",
2833
+ "question"
2834
+ ],
2835
+ "additionalProperties": true
2836
+ },
2837
+ {
2838
+ "type": "object",
2839
+ "properties": {
2840
+ "type": {
2841
+ "const": "question.resolved"
2842
+ },
2843
+ "questionId": {
2844
+ "type": "string"
2845
+ },
2846
+ "outcome": {
2847
+ "enum": [
2848
+ "answered",
2849
+ "dismissed",
2850
+ "timeout",
2851
+ "canceled"
2852
+ ]
2853
+ },
2854
+ "answer": {
2855
+ "type": "string"
2856
+ }
2857
+ },
2858
+ "required": [
2859
+ "type",
2860
+ "questionId",
2861
+ "outcome"
2862
+ ],
2863
+ "additionalProperties": true
2864
+ },
2865
+ {
2866
+ "type": "object",
2867
+ "properties": {
2868
+ "type": {
2869
+ "const": "pin"
2870
+ },
2871
+ "pin": {
2872
+ "$ref": "#/$defs/pin"
2873
+ }
2874
+ },
2875
+ "required": [
2876
+ "type",
2877
+ "pin"
2878
+ ],
2879
+ "additionalProperties": true
2880
+ },
2881
+ {
2882
+ "type": "object",
2883
+ "properties": {
2884
+ "type": {
2885
+ "const": "unpin"
2886
+ },
2887
+ "pinId": {
2888
+ "type": "string"
2889
+ },
2890
+ "reason": {
2891
+ "enum": [
2892
+ "unpinned",
2893
+ "session_ended"
2894
+ ]
2895
+ }
2896
+ },
2897
+ "required": [
2898
+ "type",
2899
+ "pinId",
2900
+ "reason"
2901
+ ],
2902
+ "additionalProperties": true
2903
+ }
2904
+ ]
2905
+ },
2906
+ "unknownEvent": {
2907
+ "type": "object",
2908
+ "properties": {
2909
+ "type": {
2910
+ "type": "string",
2911
+ "not": {
2912
+ "enum": [
2913
+ "session.opened",
2914
+ "session.ready",
2915
+ "session.updated",
2916
+ "session.closed",
2917
+ "session.failed",
2918
+ "prompt.accepted",
2919
+ "prompt.failed",
2920
+ "turn.started",
2921
+ "turn.ended",
2922
+ "item",
2923
+ "mail",
2924
+ "assignment",
2925
+ "question",
2926
+ "question.resolved",
2927
+ "pin",
2928
+ "unpin"
2929
+ ]
2930
+ }
2931
+ }
2932
+ },
2933
+ "required": [
2934
+ "type"
2935
+ ],
2936
+ "additionalProperties": true
2937
+ },
2938
+ "knownItem": {
2939
+ "oneOf": [
2940
+ {
2941
+ "type": "object",
2942
+ "properties": {
2943
+ "kind": {
2944
+ "const": "user_message"
2945
+ },
2946
+ "id": {
2947
+ "type": "string"
2948
+ },
2949
+ "text": {
2950
+ "type": "string"
2951
+ },
2952
+ "clientMessageId": {
2953
+ "type": "string"
2954
+ }
2955
+ },
2956
+ "required": [
2957
+ "kind",
2958
+ "id",
2959
+ "text"
2960
+ ],
2961
+ "additionalProperties": true
2962
+ },
2963
+ {
2964
+ "type": "object",
2965
+ "properties": {
2966
+ "kind": {
2967
+ "const": "assistant_message"
2968
+ },
2969
+ "id": {
2970
+ "type": "string"
2971
+ },
2972
+ "text": {
2973
+ "type": "string"
2974
+ }
2975
+ },
2976
+ "required": [
2977
+ "kind",
2978
+ "id",
2979
+ "text"
2980
+ ],
2981
+ "additionalProperties": true
2982
+ },
2983
+ {
2984
+ "type": "object",
2985
+ "properties": {
2986
+ "kind": {
2987
+ "const": "notice"
2988
+ },
2989
+ "id": {
2990
+ "type": "string"
2991
+ },
2992
+ "level": {
2993
+ "enum": [
2994
+ "info",
2995
+ "warning",
2996
+ "error"
2997
+ ]
2998
+ },
2999
+ "text": {
3000
+ "type": "string"
3001
+ }
3002
+ },
3003
+ "required": [
3004
+ "kind",
3005
+ "id",
3006
+ "level",
3007
+ "text"
3008
+ ],
3009
+ "additionalProperties": true
3010
+ },
3011
+ {
3012
+ "type": "object",
3013
+ "properties": {
3014
+ "kind": {
3015
+ "const": "compaction"
3016
+ },
3017
+ "id": {
3018
+ "type": "string"
3019
+ },
3020
+ "status": {
3021
+ "enum": [
3022
+ "running",
3023
+ "completed",
3024
+ "failed"
3025
+ ]
3026
+ },
3027
+ "trigger": {
3028
+ "type": "string"
3029
+ },
3030
+ "preTokens": {
3031
+ "type": "integer"
3032
+ },
3033
+ "postTokens": {
3034
+ "type": "integer"
3035
+ }
3036
+ },
3037
+ "required": [
3038
+ "kind",
3039
+ "id",
3040
+ "status"
3041
+ ],
3042
+ "additionalProperties": true
3043
+ },
3044
+ {
3045
+ "type": "object",
3046
+ "properties": {
3047
+ "kind": {
3048
+ "const": "todo"
3049
+ },
3050
+ "id": {
3051
+ "type": "string"
3052
+ },
3053
+ "items": {
3054
+ "type": "array",
3055
+ "items": {
3056
+ "type": "object",
3057
+ "properties": {
3058
+ "id": {
3059
+ "type": "string"
3060
+ },
3061
+ "text": {
3062
+ "type": "string"
3063
+ },
3064
+ "status": {
3065
+ "enum": [
3066
+ "pending",
3067
+ "in_progress",
3068
+ "completed"
3069
+ ]
3070
+ }
3071
+ },
3072
+ "required": [
3073
+ "id",
3074
+ "text",
3075
+ "status"
3076
+ ],
3077
+ "additionalProperties": true
3078
+ }
3079
+ }
3080
+ },
3081
+ "required": [
3082
+ "kind",
3083
+ "id",
3084
+ "items"
3085
+ ],
3086
+ "additionalProperties": true
3087
+ },
3088
+ {
3089
+ "type": "object",
3090
+ "properties": {
3091
+ "kind": {
3092
+ "const": "tool_call"
3093
+ },
3094
+ "id": {
3095
+ "type": "string"
3096
+ },
3097
+ "callId": {
3098
+ "type": "string"
3099
+ },
3100
+ "name": {
3101
+ "type": "string"
3102
+ },
3103
+ "status": {
3104
+ "enum": [
3105
+ "running",
3106
+ "completed",
3107
+ "failed"
3108
+ ]
3109
+ },
3110
+ "error": {
3111
+ "type": "string"
3112
+ },
3113
+ "detail": {
3114
+ "oneOf": [
3115
+ {
3116
+ "type": "object",
3117
+ "properties": {
3118
+ "type": {
3119
+ "const": "shell"
3120
+ },
3121
+ "command": {
3122
+ "type": "string"
3123
+ },
3124
+ "cwd": {
3125
+ "type": "string"
3126
+ },
3127
+ "output": {
3128
+ "type": "string"
3129
+ },
3130
+ "exitCode": {
3131
+ "type": [
3132
+ "integer",
3133
+ "null"
3134
+ ]
3135
+ }
3136
+ },
3137
+ "required": [
3138
+ "type",
3139
+ "command",
3140
+ "output"
3141
+ ],
3142
+ "additionalProperties": true
3143
+ },
3144
+ {
3145
+ "type": "object",
3146
+ "properties": {
3147
+ "type": {
3148
+ "const": "unknown"
3149
+ },
3150
+ "input": {},
3151
+ "output": {}
3152
+ },
3153
+ "required": [
3154
+ "type",
3155
+ "input",
3156
+ "output"
3157
+ ],
3158
+ "additionalProperties": true
3159
+ }
3160
+ ]
3161
+ }
3162
+ },
3163
+ "required": [
3164
+ "kind",
3165
+ "id",
3166
+ "callId",
3167
+ "name",
3168
+ "status",
3169
+ "detail"
3170
+ ],
3171
+ "additionalProperties": true
3172
+ }
3173
+ ]
3174
+ },
3175
+ "unknownItem": {
3176
+ "type": "object",
3177
+ "properties": {
3178
+ "kind": {
3179
+ "type": "string",
3180
+ "not": {
3181
+ "enum": [
3182
+ "user_message",
3183
+ "assistant_message",
3184
+ "notice",
3185
+ "compaction",
3186
+ "todo",
3187
+ "tool_call"
3188
+ ]
3189
+ }
3190
+ },
3191
+ "id": {
3192
+ "type": "string"
3193
+ }
3194
+ },
3195
+ "required": [
3196
+ "kind",
3197
+ "id"
3198
+ ],
3199
+ "additionalProperties": true
3200
+ },
3201
+ "alpError": {
3202
+ "type": "object",
3203
+ "properties": {
3204
+ "message": {
3205
+ "type": "string"
3206
+ },
3207
+ "code": {
3208
+ "type": "string"
3209
+ }
3210
+ },
3211
+ "required": [
3212
+ "message"
3213
+ ],
3214
+ "additionalProperties": true
3215
+ },
3216
+ "sessionSummary": {
3217
+ "type": "object",
3218
+ "properties": {
3219
+ "id": {
3220
+ "type": "string"
3221
+ },
3222
+ "projectRoot": {
3223
+ "type": "string"
3224
+ },
3225
+ "agent": {
3226
+ "type": "string"
3227
+ },
3228
+ "runtime": {
3229
+ "enum": [
3230
+ "claude",
3231
+ "codex",
3232
+ "acp",
3233
+ "antigravity"
3234
+ ]
3235
+ },
3236
+ "model": {
3237
+ "type": "string"
3238
+ },
3239
+ "mode": {
3240
+ "type": "string"
3241
+ },
3242
+ "thinking": {
3243
+ "type": "string"
3244
+ },
3245
+ "workflow": {
3246
+ "type": "object",
3247
+ "properties": {
3248
+ "mode": {
3249
+ "type": "string"
3250
+ },
3251
+ "maxPeers": {
3252
+ "type": "integer"
3253
+ },
3254
+ "supervisor": {
3255
+ "type": "boolean"
3256
+ }
3257
+ },
3258
+ "required": [
3259
+ "mode",
3260
+ "maxPeers",
3261
+ "supervisor"
3262
+ ],
3263
+ "additionalProperties": true
3264
+ },
3265
+ "threadId": {
3266
+ "type": "string"
3267
+ },
3268
+ "persistent": {
3269
+ "type": "boolean"
3270
+ },
3271
+ "busy": {
3272
+ "type": "boolean"
3273
+ },
3274
+ "parentId": {
3275
+ "type": "string"
3276
+ },
3277
+ "toolCallId": {
3278
+ "type": "string"
3279
+ },
3280
+ "activeTurnId": {
3281
+ "type": "string"
3282
+ },
3283
+ "parked": {
3284
+ "type": "string"
3285
+ },
3286
+ "instructionsSha": {
3287
+ "type": "string"
3288
+ },
3289
+ "teamLabel": {
3290
+ "type": "string"
3291
+ },
3292
+ "status": {
3293
+ "enum": [
3294
+ "initializing",
3295
+ "idle",
3296
+ "running",
3297
+ "error",
3298
+ "closed"
3299
+ ]
3300
+ },
3301
+ "title": {
3302
+ "type": "string"
3303
+ },
3304
+ "archived": {
3305
+ "type": "boolean"
3306
+ },
3307
+ "lastError": {
3308
+ "type": "object",
3309
+ "properties": {
3310
+ "code": {
3311
+ "type": "string"
3312
+ },
3313
+ "message": {
3314
+ "type": "string"
3315
+ }
3316
+ },
3317
+ "required": [
3318
+ "message"
3319
+ ],
3320
+ "additionalProperties": true
3321
+ },
3322
+ "createdAt": {
3323
+ "type": "string"
3324
+ },
3325
+ "updatedAt": {
3326
+ "type": "string"
3327
+ }
3328
+ },
3329
+ "required": [
3330
+ "id",
3331
+ "projectRoot",
3332
+ "agent",
3333
+ "runtime",
3334
+ "model",
3335
+ "mode",
3336
+ "thinking",
3337
+ "workflow",
3338
+ "threadId",
3339
+ "persistent",
3340
+ "busy",
3341
+ "status"
3342
+ ],
3343
+ "additionalProperties": true
3344
+ },
3345
+ "pause": {
3346
+ "type": "object",
3347
+ "properties": {
3348
+ "since": {
3349
+ "type": "string"
3350
+ },
3351
+ "by": {
3352
+ "type": "string"
3353
+ },
3354
+ "reason": {
3355
+ "type": "string"
3356
+ },
3357
+ "resetsAt": {
3358
+ "type": "string"
3359
+ },
3360
+ "checkedAt": {
3361
+ "type": "string"
3362
+ }
3363
+ },
3364
+ "required": [
3365
+ "since",
3366
+ "by",
3367
+ "reason"
3368
+ ],
3369
+ "additionalProperties": true
3370
+ },
3371
+ "pauseState": {
3372
+ "type": "object",
3373
+ "properties": {
3374
+ "all": {
3375
+ "$ref": "#/$defs/pause"
3376
+ },
3377
+ "runtimes": {
3378
+ "type": "object",
3379
+ "additionalProperties": {
3380
+ "$ref": "#/$defs/pause"
3381
+ }
3382
+ },
3383
+ "parked": {
3384
+ "type": "array",
3385
+ "items": {
3386
+ "type": "object",
3387
+ "properties": {
3388
+ "assignmentId": {
3389
+ "type": "string"
3390
+ },
3391
+ "agent": {
3392
+ "type": "string"
3393
+ },
3394
+ "runtime": {
3395
+ "type": "string"
3396
+ },
3397
+ "rootId": {
3398
+ "type": "string"
3399
+ },
3400
+ "reason": {
3401
+ "type": "string"
3402
+ },
3403
+ "since": {
3404
+ "type": "string"
3405
+ }
3406
+ },
3407
+ "required": [
3408
+ "assignmentId",
3409
+ "agent",
3410
+ "runtime",
3411
+ "rootId",
3412
+ "reason",
3413
+ "since"
3414
+ ],
3415
+ "additionalProperties": true
3416
+ }
3417
+ }
3418
+ },
3419
+ "required": [
3420
+ "runtimes",
3421
+ "parked"
3422
+ ],
3423
+ "additionalProperties": true
3424
+ },
3425
+ "preview": {
3426
+ "type": "object",
3427
+ "properties": {
3428
+ "teams": {
3429
+ "type": "array",
3430
+ "items": {
3431
+ "type": "object",
3432
+ "properties": {
3433
+ "id": {
3434
+ "type": "string"
3435
+ },
3436
+ "label": {
3437
+ "type": "string"
3438
+ },
3439
+ "description": {
3440
+ "type": "string"
3441
+ }
3442
+ },
3443
+ "required": [
3444
+ "id",
3445
+ "label"
3446
+ ],
3447
+ "additionalProperties": true
3448
+ }
3449
+ },
3450
+ "team": {
3451
+ "type": "string"
3452
+ },
3453
+ "teamLabel": {
3454
+ "type": "string"
3455
+ },
3456
+ "agent": {
3457
+ "type": "string"
3458
+ },
3459
+ "runtime": {
3460
+ "enum": [
3461
+ "claude",
3462
+ "codex",
3463
+ "acp",
3464
+ "antigravity"
3465
+ ]
3466
+ },
3467
+ "model": {
3468
+ "type": "string"
3469
+ },
3470
+ "mode": {
3471
+ "type": "string"
3472
+ },
3473
+ "thinking": {
3474
+ "type": "string"
3475
+ }
3476
+ },
3477
+ "required": [
3478
+ "teams",
3479
+ "team",
3480
+ "agent",
3481
+ "runtime",
3482
+ "model",
3483
+ "mode",
3484
+ "thinking"
3485
+ ],
3486
+ "additionalProperties": true
3487
+ },
3488
+ "treeStatus": {
3489
+ "type": "object",
3490
+ "properties": {
3491
+ "rootId": {
3492
+ "type": "string"
3493
+ },
3494
+ "sessions": {
3495
+ "type": "array",
3496
+ "items": {
3497
+ "type": "object",
3498
+ "properties": {
3499
+ "id": {
3500
+ "type": "string"
3501
+ },
3502
+ "projectRoot": {
3503
+ "type": "string"
3504
+ },
3505
+ "agent": {
3506
+ "type": "string"
3507
+ },
3508
+ "runtime": {
3509
+ "enum": [
3510
+ "claude",
3511
+ "codex",
3512
+ "acp",
3513
+ "antigravity"
3514
+ ]
3515
+ },
3516
+ "model": {
3517
+ "type": "string"
3518
+ },
3519
+ "mode": {
3520
+ "type": "string"
3521
+ },
3522
+ "thinking": {
3523
+ "type": "string"
3524
+ },
3525
+ "workflow": {
3526
+ "type": "object",
3527
+ "properties": {
3528
+ "mode": {
3529
+ "type": "string"
3530
+ },
3531
+ "maxPeers": {
3532
+ "type": "integer"
3533
+ },
3534
+ "supervisor": {
3535
+ "type": "boolean"
3536
+ }
3537
+ },
3538
+ "required": [
3539
+ "mode",
3540
+ "maxPeers",
3541
+ "supervisor"
3542
+ ],
3543
+ "additionalProperties": true
3544
+ },
3545
+ "threadId": {
3546
+ "type": "string"
3547
+ },
3548
+ "persistent": {
3549
+ "type": "boolean"
3550
+ },
3551
+ "busy": {
3552
+ "type": "boolean"
3553
+ },
3554
+ "parentId": {
3555
+ "type": "string"
3556
+ },
3557
+ "toolCallId": {
3558
+ "type": "string"
3559
+ },
3560
+ "activeTurnId": {
3561
+ "type": "string"
3562
+ },
3563
+ "parked": {
3564
+ "type": "string"
3565
+ },
3566
+ "instructionsSha": {
3567
+ "type": "string"
3568
+ },
3569
+ "teamLabel": {
3570
+ "type": "string"
3571
+ },
3572
+ "state": {
3573
+ "enum": [
3574
+ "running",
3575
+ "waiting",
3576
+ "waiting_parent",
3577
+ "waiting_user",
3578
+ "idle"
3579
+ ]
3580
+ },
3581
+ "idleMs": {
3582
+ "type": "number"
3583
+ },
3584
+ "workdir": {
3585
+ "type": "string"
3586
+ },
3587
+ "unreadMail": {
3588
+ "type": "integer",
3589
+ "minimum": 0
3590
+ }
3591
+ },
3592
+ "required": [
3593
+ "id",
3594
+ "projectRoot",
3595
+ "agent",
3596
+ "runtime",
3597
+ "model",
3598
+ "mode",
3599
+ "thinking",
3600
+ "workflow",
3601
+ "threadId",
3602
+ "persistent",
3603
+ "busy",
3604
+ "state",
3605
+ "idleMs",
3606
+ "workdir",
3607
+ "unreadMail"
3608
+ ],
3609
+ "additionalProperties": true
3610
+ }
3611
+ },
3612
+ "assignments": {
3613
+ "type": "array",
3614
+ "items": {
3615
+ "type": "object",
3616
+ "properties": {
3617
+ "id": {
3618
+ "type": "string"
3619
+ },
3620
+ "requester": {
3621
+ "type": "string"
3622
+ },
3623
+ "isolation": {
3624
+ "enum": [
3625
+ "shared",
3626
+ "worktree"
3627
+ ]
3628
+ },
3629
+ "idleMs": {
3630
+ "type": "number"
3631
+ }
3632
+ },
3633
+ "required": [
3634
+ "id",
3635
+ "requester",
3636
+ "isolation",
3637
+ "idleMs"
3638
+ ],
3639
+ "additionalProperties": true
3640
+ }
3641
+ },
3642
+ "questions": {
3643
+ "type": "array",
3644
+ "items": {
3645
+ "$ref": "#/$defs/question"
3646
+ }
3647
+ },
3648
+ "worktrees": {
3649
+ "type": "array",
3650
+ "items": {
3651
+ "type": "object",
3652
+ "properties": {
3653
+ "assignmentId": {
3654
+ "type": "string"
3655
+ },
3656
+ "requester": {
3657
+ "type": "string"
3658
+ },
3659
+ "agent": {
3660
+ "type": "string"
3661
+ },
3662
+ "branch": {
3663
+ "type": "string"
3664
+ },
3665
+ "files": {
3666
+ "type": "array",
3667
+ "items": {
3668
+ "type": "string"
3669
+ }
3670
+ },
3671
+ "stat": {
3672
+ "type": "string"
3673
+ }
3674
+ },
3675
+ "required": [
3676
+ "assignmentId",
3677
+ "requester",
3678
+ "agent",
3679
+ "branch",
3680
+ "files",
3681
+ "stat"
3682
+ ],
3683
+ "additionalProperties": true
3684
+ }
3685
+ },
3686
+ "leases": {
3687
+ "type": "array",
3688
+ "items": {
3689
+ "type": "object",
3690
+ "properties": {
3691
+ "checkout": {
3692
+ "type": "string"
3693
+ },
3694
+ "assignmentId": {
3695
+ "type": "string"
3696
+ },
3697
+ "agent": {
3698
+ "type": "string"
3699
+ }
3700
+ },
3701
+ "required": [
3702
+ "checkout",
3703
+ "assignmentId",
3704
+ "agent"
3705
+ ],
3706
+ "additionalProperties": true
3707
+ }
3708
+ },
3709
+ "claims": {
3710
+ "type": "array",
3711
+ "items": {
3712
+ "$ref": "#/$defs/pin"
3713
+ }
3714
+ }
3715
+ },
3716
+ "required": [
3717
+ "rootId",
3718
+ "sessions",
3719
+ "assignments",
3720
+ "questions",
3721
+ "worktrees",
3722
+ "leases",
3723
+ "claims"
3724
+ ],
3725
+ "additionalProperties": true
3726
+ },
3727
+ "health": {
3728
+ "type": "object",
3729
+ "properties": {
3730
+ "live": {
3731
+ "type": "boolean"
3732
+ },
3733
+ "ready": {
3734
+ "type": "boolean"
3735
+ },
3736
+ "checks": {
3737
+ "type": "array",
3738
+ "items": {
3739
+ "type": "object",
3740
+ "properties": {
3741
+ "id": {
3742
+ "type": "string"
3743
+ },
3744
+ "ok": {
3745
+ "type": "boolean"
3746
+ },
3747
+ "code": {
3748
+ "type": "string"
3749
+ },
3750
+ "message": {
3751
+ "type": "string"
3752
+ }
3753
+ },
3754
+ "required": [
3755
+ "id",
3756
+ "ok"
3757
+ ],
3758
+ "additionalProperties": true
3759
+ }
3760
+ }
3761
+ },
3762
+ "required": [
3763
+ "live",
3764
+ "ready",
3765
+ "checks"
3766
+ ],
3767
+ "additionalProperties": true
3768
+ },
3769
+ "projectRoot": {
3770
+ "type": "string",
3771
+ "minLength": 1,
3772
+ "maxLength": 4096,
3773
+ "description": "An absolute, normalized path on the daemon host to a directory holding .alp/. Compared as is: the daemon never walks up to a parent."
3774
+ },
3775
+ "taskId": {
3776
+ "type": "string",
3777
+ "pattern": "^t-[0-9a-f]{4,12}(?:\\.\\d+)*$"
3778
+ },
3779
+ "taskRow": {
3780
+ "type": "object",
3781
+ "properties": {
3782
+ "id": {
3783
+ "$ref": "#/$defs/taskId"
3784
+ },
3785
+ "title": {
3786
+ "type": "string"
3787
+ },
3788
+ "type": {
3789
+ "type": "string"
3790
+ },
3791
+ "priority": {
3792
+ "type": "integer"
3793
+ },
3794
+ "status": {
3795
+ "enum": [
3796
+ "open",
3797
+ "in_progress",
3798
+ "review",
3799
+ "closed"
3800
+ ]
3801
+ },
3802
+ "rev": {
3803
+ "type": "integer",
3804
+ "minimum": 0
3805
+ },
3806
+ "parent": {
3807
+ "type": "string"
3808
+ },
3809
+ "assignee": {
3810
+ "type": "string"
3811
+ },
3812
+ "ready": {
3813
+ "type": "boolean"
3814
+ },
3815
+ "blockedBy": {
3816
+ "type": "array",
3817
+ "items": {
3818
+ "type": "string"
3819
+ }
3820
+ },
3821
+ "waits": {
3822
+ "type": "array",
3823
+ "items": {
3824
+ "type": "string"
3825
+ }
3826
+ },
3827
+ "approvals": {
3828
+ "type": "array",
3829
+ "items": {
3830
+ "type": "object",
3831
+ "properties": {
3832
+ "gate": {
3833
+ "type": "string"
3834
+ },
3835
+ "note": {
3836
+ "type": "string"
3837
+ }
3838
+ },
3839
+ "required": [
3840
+ "gate",
3841
+ "note"
3842
+ ],
3843
+ "additionalProperties": true
3844
+ }
3845
+ },
3846
+ "handoff": {
3847
+ "type": "object",
3848
+ "properties": {
3849
+ "outcome": {
3850
+ "type": "string"
3851
+ },
3852
+ "summary": {
3853
+ "type": "string"
3854
+ },
3855
+ "agent": {
3856
+ "type": "string"
3857
+ }
3858
+ },
3859
+ "required": [
3860
+ "outcome",
3861
+ "summary"
3862
+ ],
3863
+ "additionalProperties": true
3864
+ },
3865
+ "closed": {
3866
+ "type": "object",
3867
+ "properties": {
3868
+ "reason": {
3869
+ "type": "string"
3870
+ },
3871
+ "summary": {
3872
+ "type": "string"
3873
+ },
3874
+ "at": {
3875
+ "type": "string"
3876
+ }
3877
+ },
3878
+ "required": [
3879
+ "reason",
3880
+ "at"
3881
+ ],
3882
+ "additionalProperties": true
3883
+ },
3884
+ "description": {
3885
+ "type": "string"
3886
+ },
3887
+ "labels": {
3888
+ "type": "array",
3889
+ "items": {
3890
+ "type": "string"
3891
+ }
3892
+ },
3893
+ "paths": {
3894
+ "type": "array",
3895
+ "items": {
3896
+ "type": "string"
3897
+ }
3898
+ },
3899
+ "progress": {
3900
+ "type": "object",
3901
+ "properties": {
3902
+ "done": {
3903
+ "type": "integer",
3904
+ "minimum": 0
3905
+ },
3906
+ "total": {
3907
+ "type": "integer",
3908
+ "minimum": 0
3909
+ }
3910
+ },
3911
+ "required": [
3912
+ "done",
3913
+ "total"
3914
+ ],
3915
+ "additionalProperties": true
3916
+ },
3917
+ "createdAt": {
3918
+ "type": "string"
3919
+ },
3920
+ "updatedAt": {
3921
+ "type": "string"
3922
+ }
3923
+ },
3924
+ "required": [
3925
+ "id",
3926
+ "title",
3927
+ "type",
3928
+ "priority",
3929
+ "status",
3930
+ "rev",
3931
+ "ready",
3932
+ "updatedAt"
3933
+ ],
3934
+ "additionalProperties": true
3935
+ },
3936
+ "libraryKind": {
3937
+ "enum": [
3938
+ "agents",
3939
+ "skills",
3940
+ "mcp",
3941
+ "hooks",
3942
+ "teams",
3943
+ "providers"
3944
+ ]
3945
+ },
3946
+ "libraryScope": {
3947
+ "enum": [
3948
+ "library",
3949
+ "project"
3950
+ ]
3951
+ },
3952
+ "librarySource": {
3953
+ "enum": [
3954
+ "builtin",
3955
+ "library",
3956
+ "project"
3957
+ ]
3958
+ },
3959
+ "entryName": {
3960
+ "type": "string",
3961
+ "minLength": 1,
3962
+ "maxLength": 128,
3963
+ "pattern": "^[A-Za-z0-9_.-]+$",
3964
+ "not": {
3965
+ "enum": [
3966
+ ".",
3967
+ ".."
3968
+ ]
3969
+ }
3970
+ },
3971
+ "libraryRevision": {
3972
+ "type": [
3973
+ "string",
3974
+ "null"
3975
+ ]
3976
+ },
3977
+ "libraryEntryRow": {
3978
+ "type": "object",
3979
+ "properties": {
3980
+ "name": {
3981
+ "type": "string"
3982
+ },
3983
+ "source": {
3984
+ "$ref": "#/$defs/librarySource"
3985
+ },
3986
+ "overrides": {
3987
+ "$ref": "#/$defs/librarySource"
3988
+ },
3989
+ "description": {
3990
+ "type": "string"
3991
+ },
3992
+ "usedBy": {
3993
+ "type": "array",
3994
+ "items": {
3995
+ "type": "string"
3996
+ }
3997
+ }
3998
+ },
3999
+ "required": [
4000
+ "name",
4001
+ "source"
4002
+ ],
4003
+ "additionalProperties": true
4004
+ },
4005
+ "secretMarker": {
4006
+ "type": "object",
4007
+ "properties": {
4008
+ "$secret": {
4009
+ "const": "keep"
4010
+ }
4011
+ },
4012
+ "required": [
4013
+ "$secret"
4014
+ ],
4015
+ "additionalProperties": false,
4016
+ "description": "Stands for a stored secret value: read results carry it in place of the value; a save that sends it back keeps the stored value."
4017
+ },
4018
+ "languageSetting": {
4019
+ "type": "object",
4020
+ "properties": {
4021
+ "language": {
4022
+ "type": [
4023
+ "string",
4024
+ "null"
4025
+ ]
4026
+ },
4027
+ "applies": {
4028
+ "type": "string"
4029
+ },
4030
+ "default": {
4031
+ "type": "string"
4032
+ }
4033
+ },
4034
+ "required": [
4035
+ "language",
4036
+ "applies",
4037
+ "default"
4038
+ ],
4039
+ "additionalProperties": true
4040
+ },
4041
+ "teamRow": {
4042
+ "type": "object",
4043
+ "properties": {
4044
+ "id": {
4045
+ "type": "string"
4046
+ },
4047
+ "label": {
4048
+ "type": "string"
4049
+ },
4050
+ "description": {
4051
+ "type": "string"
4052
+ },
4053
+ "source": {
4054
+ "$ref": "#/$defs/librarySource"
4055
+ },
4056
+ "overrides": {
4057
+ "$ref": "#/$defs/librarySource"
4058
+ },
4059
+ "error": {
4060
+ "type": "string"
4061
+ }
4062
+ },
4063
+ "required": [
4064
+ "id",
4065
+ "source"
4066
+ ],
4067
+ "additionalProperties": true
4068
+ }
4069
+ }
4070
+ }