@anhlp/alp-protocol 0.0.0-beta.1 → 0.10.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.
@@ -1,2827 +0,0 @@
1
- {
2
- "$comment": "Golden v1 values (docs/protocol/alp-json-rpc-v1.md §11). check: message (one frame), envelope, params or result of `method`. Every valid case must pass schema/methods-v1.json and the TypeScript projection in src/; every invalid one must fail the schema; `projection: false` marks values the closed TypeScript unions deliberately leave out. Implementations in any language can load this file.",
3
- "cases": [
4
- {
5
- "name": "request",
6
- "check": "message",
7
- "valid": true,
8
- "value": {
9
- "jsonrpc": "2.0",
10
- "id": 1,
11
- "method": "daemon.hello",
12
- "params": {
13
- "protocolVersion": 1,
14
- "client": {
15
- "name": "fixture",
16
- "version": "0.9.5"
17
- }
18
- }
19
- }
20
- },
21
- {
22
- "name": "request with a string id",
23
- "check": "message",
24
- "valid": true,
25
- "value": {
26
- "jsonrpc": "2.0",
27
- "id": "req-é",
28
- "method": "session.list"
29
- }
30
- },
31
- {
32
- "name": "success response",
33
- "check": "message",
34
- "valid": true,
35
- "value": {
36
- "jsonrpc": "2.0",
37
- "id": 1,
38
- "result": {
39
- "protocolVersion": 1,
40
- "daemonVersion": "0.10.0",
41
- "pid": 42,
42
- "capabilities": [
43
- "attach.after",
44
- "extension.methods"
45
- ]
46
- }
47
- }
48
- },
49
- {
50
- "name": "error response",
51
- "check": "message",
52
- "valid": true,
53
- "value": {
54
- "jsonrpc": "2.0",
55
- "id": 2,
56
- "error": {
57
- "code": 1001,
58
- "message": "No session ses_fixture"
59
- }
60
- }
61
- },
62
- {
63
- "name": "error response with id null",
64
- "check": "message",
65
- "valid": true,
66
- "value": {
67
- "jsonrpc": "2.0",
68
- "id": null,
69
- "error": {
70
- "code": -32700,
71
- "message": "Parse error"
72
- }
73
- }
74
- },
75
- {
76
- "name": "event notification",
77
- "check": "message",
78
- "valid": true,
79
- "value": {
80
- "jsonrpc": "2.0",
81
- "method": "event",
82
- "params": {
83
- "sessionId": "ses_fixture",
84
- "epoch": "epoch-1",
85
- "seq": 3,
86
- "cursor": 12,
87
- "ts": "2026-10-15T00:00:00.000Z",
88
- "event": {
89
- "type": "session.ready"
90
- }
91
- }
92
- }
93
- },
94
- {
95
- "name": "extension.invoke request to an owner",
96
- "check": "message",
97
- "valid": true,
98
- "value": {
99
- "jsonrpc": "2.0",
100
- "id": 3,
101
- "method": "extension.invoke",
102
- "params": {
103
- "method": "web.pairing",
104
- "params": {}
105
- }
106
- }
107
- },
108
- {
109
- "name": "request without jsonrpc",
110
- "check": "message",
111
- "valid": false,
112
- "value": {
113
- "id": 1,
114
- "method": "daemon.status"
115
- }
116
- },
117
- {
118
- "name": "request with a fractional id",
119
- "check": "message",
120
- "valid": false,
121
- "value": {
122
- "jsonrpc": "2.0",
123
- "id": 1.5,
124
- "method": "daemon.status"
125
- }
126
- },
127
- {
128
- "name": "request with an id beyond 2^53-1",
129
- "check": "message",
130
- "valid": false,
131
- "value": {
132
- "jsonrpc": "2.0",
133
- "id": 9007199254740992,
134
- "method": "daemon.status"
135
- }
136
- },
137
- {
138
- "name": "request with array params",
139
- "check": "message",
140
- "valid": false,
141
- "value": {
142
- "jsonrpc": "2.0",
143
- "id": 1,
144
- "method": "session.get",
145
- "params": [
146
- "ses_fixture"
147
- ]
148
- }
149
- },
150
- {
151
- "name": "response with result and error",
152
- "check": "message",
153
- "valid": false,
154
- "value": {
155
- "jsonrpc": "2.0",
156
- "id": 1,
157
- "result": {},
158
- "error": {
159
- "code": 1000,
160
- "message": "x"
161
- }
162
- }
163
- },
164
- {
165
- "name": "error without message",
166
- "check": "message",
167
- "valid": false,
168
- "value": {
169
- "jsonrpc": "2.0",
170
- "id": 1,
171
- "error": {
172
- "code": 1000
173
- }
174
- }
175
- },
176
- {
177
- "name": "batch",
178
- "check": "message",
179
- "valid": false,
180
- "value": [
181
- {
182
- "jsonrpc": "2.0",
183
- "id": 1,
184
- "method": "daemon.status"
185
- }
186
- ]
187
- },
188
- {
189
- "name": "event session.opened",
190
- "check": "envelope",
191
- "valid": true,
192
- "value": {
193
- "sessionId": "ses_fixture",
194
- "epoch": "epoch-1",
195
- "seq": 3,
196
- "cursor": 12,
197
- "ts": "2026-10-15T00:00:00.000Z",
198
- "event": {
199
- "type": "session.opened",
200
- "session": {
201
- "id": "ses_fixture",
202
- "projectRoot": "/work/project",
203
- "agent": "main",
204
- "runtime": "codex",
205
- "model": "gpt-6.1-sol",
206
- "mode": "workspace-write",
207
- "thinking": "low",
208
- "workflow": {
209
- "mode": "pho",
210
- "maxPeers": 2,
211
- "supervisor": false
212
- },
213
- "teamLabel": "Phở",
214
- "threadId": "thread-1",
215
- "persistent": true,
216
- "busy": false
217
- },
218
- "cwd": "/work/project",
219
- "effective": {
220
- "model": "gpt-6.1-sol",
221
- "thinking": "low"
222
- }
223
- }
224
- }
225
- },
226
- {
227
- "name": "event session.ready",
228
- "check": "envelope",
229
- "valid": true,
230
- "value": {
231
- "sessionId": "ses_fixture",
232
- "epoch": "epoch-1",
233
- "seq": 3,
234
- "cursor": 12,
235
- "ts": "2026-10-15T00:00:00.000Z",
236
- "event": {
237
- "type": "session.ready"
238
- }
239
- }
240
- },
241
- {
242
- "name": "event session.updated",
243
- "check": "envelope",
244
- "valid": true,
245
- "value": {
246
- "sessionId": "ses_fixture",
247
- "epoch": "epoch-1",
248
- "seq": 3,
249
- "cursor": 12,
250
- "ts": "2026-10-15T00:00:00.000Z",
251
- "event": {
252
- "type": "session.updated",
253
- "session": {
254
- "id": "ses_fixture",
255
- "projectRoot": "/work/project",
256
- "agent": "main",
257
- "runtime": "codex",
258
- "model": "gpt-6.1-sol",
259
- "mode": "workspace-write",
260
- "thinking": "low",
261
- "workflow": {
262
- "mode": "pho",
263
- "maxPeers": 2,
264
- "supervisor": false
265
- },
266
- "teamLabel": "Phở",
267
- "threadId": "thread-1",
268
- "persistent": true,
269
- "busy": true,
270
- "activeTurnId": "turn-1"
271
- }
272
- }
273
- }
274
- },
275
- {
276
- "name": "event session.closed",
277
- "check": "envelope",
278
- "valid": true,
279
- "value": {
280
- "sessionId": "ses_fixture",
281
- "epoch": "epoch-1",
282
- "seq": 3,
283
- "cursor": 12,
284
- "ts": "2026-10-15T00:00:00.000Z",
285
- "event": {
286
- "type": "session.closed"
287
- }
288
- }
289
- },
290
- {
291
- "name": "event session.failed",
292
- "check": "envelope",
293
- "valid": true,
294
- "value": {
295
- "sessionId": "ses_fixture",
296
- "epoch": "epoch-1",
297
- "seq": 3,
298
- "cursor": 12,
299
- "ts": "2026-10-15T00:00:00.000Z",
300
- "event": {
301
- "type": "session.failed",
302
- "error": {
303
- "message": "provider exited",
304
- "code": "provider_exit"
305
- }
306
- }
307
- }
308
- },
309
- {
310
- "name": "event prompt.accepted",
311
- "check": "envelope",
312
- "valid": true,
313
- "value": {
314
- "sessionId": "ses_fixture",
315
- "epoch": "epoch-1",
316
- "seq": 3,
317
- "cursor": 12,
318
- "ts": "2026-10-15T00:00:00.000Z",
319
- "event": {
320
- "type": "prompt.accepted",
321
- "clientMessageId": "m-1",
322
- "result": "turn",
323
- "turnId": "turn-1"
324
- }
325
- }
326
- },
327
- {
328
- "name": "event prompt.failed",
329
- "check": "envelope",
330
- "valid": true,
331
- "value": {
332
- "sessionId": "ses_fixture",
333
- "epoch": "epoch-1",
334
- "seq": 3,
335
- "cursor": 12,
336
- "ts": "2026-10-15T00:00:00.000Z",
337
- "event": {
338
- "type": "prompt.failed",
339
- "clientMessageId": "m-2",
340
- "error": {
341
- "message": "unknown",
342
- "code": "outcome_unknown"
343
- }
344
- }
345
- }
346
- },
347
- {
348
- "name": "event turn.started",
349
- "check": "envelope",
350
- "valid": true,
351
- "value": {
352
- "sessionId": "ses_fixture",
353
- "epoch": "epoch-1",
354
- "seq": 3,
355
- "cursor": 12,
356
- "ts": "2026-10-15T00:00:00.000Z",
357
- "event": {
358
- "type": "turn.started",
359
- "turnId": "turn-1",
360
- "origin": "user"
361
- }
362
- }
363
- },
364
- {
365
- "name": "event turn.ended canceled",
366
- "check": "envelope",
367
- "valid": true,
368
- "value": {
369
- "sessionId": "ses_fixture",
370
- "epoch": "epoch-1",
371
- "seq": 3,
372
- "cursor": 12,
373
- "ts": "2026-10-15T00:00:00.000Z",
374
- "event": {
375
- "type": "turn.ended",
376
- "turnId": "turn-1",
377
- "state": "canceled"
378
- }
379
- }
380
- },
381
- {
382
- "name": "event turn.ended failed",
383
- "check": "envelope",
384
- "valid": true,
385
- "value": {
386
- "sessionId": "ses_fixture",
387
- "epoch": "epoch-1",
388
- "seq": 3,
389
- "cursor": 12,
390
- "ts": "2026-10-15T00:00:00.000Z",
391
- "event": {
392
- "type": "turn.ended",
393
- "turnId": "turn-2",
394
- "state": "failed",
395
- "error": {
396
- "message": "alpd stopped while this session was working",
397
- "code": "daemon_restarted"
398
- }
399
- }
400
- }
401
- },
402
- {
403
- "name": "event mail",
404
- "check": "envelope",
405
- "valid": true,
406
- "value": {
407
- "sessionId": "ses_fixture",
408
- "epoch": "epoch-1",
409
- "seq": 3,
410
- "cursor": 12,
411
- "ts": "2026-10-15T00:00:00.000Z",
412
- "event": {
413
- "type": "mail",
414
- "mail": {
415
- "id": "mail-1",
416
- "kind": "note",
417
- "from": "user",
418
- "assignment": "ses_child",
419
- "body": "xin chào"
420
- }
421
- }
422
- }
423
- },
424
- {
425
- "name": "event assignment",
426
- "check": "envelope",
427
- "valid": true,
428
- "value": {
429
- "sessionId": "ses_fixture",
430
- "epoch": "epoch-1",
431
- "seq": 3,
432
- "cursor": 12,
433
- "ts": "2026-10-15T00:00:00.000Z",
434
- "event": {
435
- "type": "assignment",
436
- "assignment": {
437
- "id": "ses_child",
438
- "agent": "peer",
439
- "mode": "workspace-write",
440
- "status": "running",
441
- "startedAt": "2026-10-15T00:00:00.000Z",
442
- "worktree": {
443
- "branch": "alp/peer",
444
- "path": "/work/wt"
445
- }
446
- }
447
- }
448
- }
449
- },
450
- {
451
- "name": "event question",
452
- "check": "envelope",
453
- "valid": true,
454
- "value": {
455
- "sessionId": "ses_fixture",
456
- "epoch": "epoch-1",
457
- "seq": 3,
458
- "cursor": 12,
459
- "ts": "2026-10-15T00:00:00.000Z",
460
- "event": {
461
- "type": "question",
462
- "question": {
463
- "id": "q_1",
464
- "sessionId": "ses_fixture",
465
- "rootId": "ses_fixture",
466
- "agent": "main",
467
- "body": "Tiếp tục?",
468
- "options": [
469
- "có",
470
- "không"
471
- ],
472
- "askedAt": "2026-10-15T00:00:00.000Z"
473
- }
474
- }
475
- }
476
- },
477
- {
478
- "name": "event question.resolved",
479
- "check": "envelope",
480
- "valid": true,
481
- "value": {
482
- "sessionId": "ses_fixture",
483
- "epoch": "epoch-1",
484
- "seq": 3,
485
- "cursor": 12,
486
- "ts": "2026-10-15T00:00:00.000Z",
487
- "event": {
488
- "type": "question.resolved",
489
- "questionId": "q_1",
490
- "outcome": "answered",
491
- "answer": "có"
492
- }
493
- }
494
- },
495
- {
496
- "name": "event pin",
497
- "check": "envelope",
498
- "valid": true,
499
- "value": {
500
- "sessionId": "ses_fixture",
501
- "epoch": "epoch-1",
502
- "seq": 3,
503
- "cursor": 12,
504
- "ts": "2026-10-15T00:00:00.000Z",
505
- "event": {
506
- "type": "pin",
507
- "pin": {
508
- "id": "pin_1",
509
- "project": "/work/project",
510
- "kind": "claim",
511
- "body": "Đang sửa server",
512
- "paths": [
513
- "src/server.ts"
514
- ],
515
- "agent": "peer",
516
- "sessionId": "ses_child",
517
- "rootId": "ses_fixture",
518
- "at": "2026-10-15T00:00:00.000Z"
519
- }
520
- }
521
- }
522
- },
523
- {
524
- "name": "event unpin",
525
- "check": "envelope",
526
- "valid": true,
527
- "value": {
528
- "sessionId": "ses_fixture",
529
- "epoch": "epoch-1",
530
- "seq": 3,
531
- "cursor": 12,
532
- "ts": "2026-10-15T00:00:00.000Z",
533
- "event": {
534
- "type": "unpin",
535
- "pinId": "pin_1",
536
- "reason": "session_ended"
537
- }
538
- }
539
- },
540
- {
541
- "name": "item user_message",
542
- "check": "envelope",
543
- "valid": true,
544
- "value": {
545
- "sessionId": "ses_fixture",
546
- "epoch": "epoch-1",
547
- "seq": 3,
548
- "cursor": 12,
549
- "ts": "2026-10-15T00:00:00.000Z",
550
- "event": {
551
- "type": "item",
552
- "item": {
553
- "kind": "user_message",
554
- "id": "user:m-1",
555
- "text": "Chào 👋",
556
- "clientMessageId": "m-1"
557
- }
558
- }
559
- }
560
- },
561
- {
562
- "name": "item assistant_message",
563
- "check": "envelope",
564
- "valid": true,
565
- "value": {
566
- "sessionId": "ses_fixture",
567
- "epoch": "epoch-1",
568
- "seq": 3,
569
- "cursor": 12,
570
- "ts": "2026-10-15T00:00:00.000Z",
571
- "event": {
572
- "type": "item",
573
- "item": {
574
- "kind": "assistant_message",
575
- "id": "msg-1",
576
- "text": "Đã xong."
577
- }
578
- }
579
- }
580
- },
581
- {
582
- "name": "item notice",
583
- "check": "envelope",
584
- "valid": true,
585
- "value": {
586
- "sessionId": "ses_fixture",
587
- "epoch": "epoch-1",
588
- "seq": 3,
589
- "cursor": 12,
590
- "ts": "2026-10-15T00:00:00.000Z",
591
- "event": {
592
- "type": "item",
593
- "item": {
594
- "kind": "notice",
595
- "id": "n-1",
596
- "level": "warning",
597
- "text": "Claude is paused"
598
- }
599
- }
600
- }
601
- },
602
- {
603
- "name": "item compaction",
604
- "check": "envelope",
605
- "valid": true,
606
- "value": {
607
- "sessionId": "ses_fixture",
608
- "epoch": "epoch-1",
609
- "seq": 3,
610
- "cursor": 12,
611
- "ts": "2026-10-15T00:00:00.000Z",
612
- "event": {
613
- "type": "item",
614
- "item": {
615
- "kind": "compaction",
616
- "id": "c-1",
617
- "status": "completed",
618
- "trigger": "auto",
619
- "preTokens": 180000,
620
- "postTokens": 40000
621
- }
622
- }
623
- }
624
- },
625
- {
626
- "name": "item todo",
627
- "check": "envelope",
628
- "valid": true,
629
- "value": {
630
- "sessionId": "ses_fixture",
631
- "epoch": "epoch-1",
632
- "seq": 3,
633
- "cursor": 12,
634
- "ts": "2026-10-15T00:00:00.000Z",
635
- "event": {
636
- "type": "item",
637
- "item": {
638
- "kind": "todo",
639
- "id": "t-1",
640
- "items": [
641
- {
642
- "id": "bd-1",
643
- "text": "Viết test",
644
- "status": "in_progress"
645
- }
646
- ]
647
- }
648
- }
649
- }
650
- },
651
- {
652
- "name": "item tool_call shell",
653
- "check": "envelope",
654
- "valid": true,
655
- "value": {
656
- "sessionId": "ses_fixture",
657
- "epoch": "epoch-1",
658
- "seq": 3,
659
- "cursor": 12,
660
- "ts": "2026-10-15T00:00:00.000Z",
661
- "event": {
662
- "type": "item",
663
- "item": {
664
- "kind": "tool_call",
665
- "id": "tc-1",
666
- "callId": "call-1",
667
- "name": "shell",
668
- "status": "completed",
669
- "detail": {
670
- "type": "shell",
671
- "command": "npm test",
672
- "cwd": "/work/project",
673
- "output": "ok",
674
- "exitCode": 0
675
- }
676
- }
677
- }
678
- }
679
- },
680
- {
681
- "name": "item tool_call unknown",
682
- "check": "envelope",
683
- "valid": true,
684
- "value": {
685
- "sessionId": "ses_fixture",
686
- "epoch": "epoch-1",
687
- "seq": 3,
688
- "cursor": 12,
689
- "ts": "2026-10-15T00:00:00.000Z",
690
- "event": {
691
- "type": "item",
692
- "item": {
693
- "kind": "tool_call",
694
- "id": "tc-2",
695
- "callId": "call-2",
696
- "name": "alp_ask",
697
- "status": "failed",
698
- "error": "denied",
699
- "detail": {
700
- "type": "unknown",
701
- "input": {
702
- "to": "user"
703
- },
704
- "output": null
705
- }
706
- }
707
- }
708
- }
709
- },
710
- {
711
- "name": "announcement without a cursor",
712
- "check": "envelope",
713
- "valid": true,
714
- "value": {
715
- "sessionId": "ses_fixture",
716
- "epoch": "announce-2026",
717
- "seq": 0,
718
- "ts": "2026-10-15T00:00:00.000Z",
719
- "event": {
720
- "type": "question",
721
- "question": {
722
- "id": "q_1",
723
- "sessionId": "ses_fixture",
724
- "rootId": "ses_fixture",
725
- "agent": "main",
726
- "body": "Tiếp tục?",
727
- "options": [
728
- "có",
729
- "không"
730
- ],
731
- "askedAt": "2026-10-15T00:00:00.000Z"
732
- }
733
- }
734
- }
735
- },
736
- {
737
- "name": "a future event type (receivers ignore it)",
738
- "check": "envelope",
739
- "valid": true,
740
- "value": {
741
- "sessionId": "ses_fixture",
742
- "epoch": "epoch-1",
743
- "seq": 3,
744
- "cursor": 12,
745
- "ts": "2026-10-15T00:00:00.000Z",
746
- "event": {
747
- "type": "tree.renamed",
748
- "title": "x"
749
- }
750
- },
751
- "projection": false
752
- },
753
- {
754
- "name": "a future item kind (receivers ignore it)",
755
- "check": "envelope",
756
- "valid": true,
757
- "value": {
758
- "sessionId": "ses_fixture",
759
- "epoch": "epoch-1",
760
- "seq": 3,
761
- "cursor": 12,
762
- "ts": "2026-10-15T00:00:00.000Z",
763
- "event": {
764
- "type": "item",
765
- "item": {
766
- "kind": "image",
767
- "id": "img-1",
768
- "url": "x"
769
- }
770
- }
771
- },
772
- "projection": false
773
- },
774
- {
775
- "name": "unknown envelope properties",
776
- "check": "envelope",
777
- "valid": true,
778
- "value": {
779
- "sessionId": "ses_fixture",
780
- "epoch": "epoch-1",
781
- "seq": 3,
782
- "cursor": 12,
783
- "ts": "2026-10-15T00:00:00.000Z",
784
- "event": {
785
- "type": "session.ready"
786
- },
787
- "trace": {
788
- "span": "abc"
789
- }
790
- },
791
- "projection": false
792
- },
793
- {
794
- "name": "negative seq",
795
- "check": "envelope",
796
- "valid": false,
797
- "value": {
798
- "sessionId": "ses_fixture",
799
- "epoch": "epoch-1",
800
- "seq": -1,
801
- "cursor": 12,
802
- "ts": "2026-10-15T00:00:00.000Z",
803
- "event": {
804
- "type": "session.ready"
805
- }
806
- }
807
- },
808
- {
809
- "name": "cursor 0",
810
- "check": "envelope",
811
- "valid": false,
812
- "value": {
813
- "sessionId": "ses_fixture",
814
- "epoch": "epoch-1",
815
- "seq": 3,
816
- "cursor": 0,
817
- "ts": "2026-10-15T00:00:00.000Z",
818
- "event": {
819
- "type": "session.ready"
820
- }
821
- }
822
- },
823
- {
824
- "name": "item event without its item",
825
- "check": "envelope",
826
- "valid": false,
827
- "value": {
828
- "sessionId": "ses_fixture",
829
- "epoch": "epoch-1",
830
- "seq": 3,
831
- "cursor": 12,
832
- "ts": "2026-10-15T00:00:00.000Z",
833
- "event": {
834
- "type": "item"
835
- }
836
- }
837
- },
838
- {
839
- "name": "known item kind missing fields",
840
- "check": "envelope",
841
- "valid": false,
842
- "value": {
843
- "sessionId": "ses_fixture",
844
- "epoch": "epoch-1",
845
- "seq": 3,
846
- "cursor": 12,
847
- "ts": "2026-10-15T00:00:00.000Z",
848
- "event": {
849
- "type": "item",
850
- "item": {
851
- "kind": "notice",
852
- "id": "n"
853
- }
854
- }
855
- }
856
- },
857
- {
858
- "name": "known event with a wrong enum",
859
- "check": "envelope",
860
- "valid": false,
861
- "value": {
862
- "sessionId": "ses_fixture",
863
- "epoch": "epoch-1",
864
- "seq": 3,
865
- "cursor": 12,
866
- "ts": "2026-10-15T00:00:00.000Z",
867
- "event": {
868
- "type": "turn.ended",
869
- "turnId": "t",
870
- "state": "stopped"
871
- }
872
- }
873
- },
874
- {
875
- "name": "missing epoch",
876
- "check": "envelope",
877
- "valid": false,
878
- "value": {
879
- "sessionId": "ses_fixture",
880
- "seq": 3,
881
- "cursor": 12,
882
- "ts": "2026-10-15T00:00:00.000Z",
883
- "event": {
884
- "type": "session.ready"
885
- }
886
- }
887
- },
888
- {
889
- "name": "daemon.hello params",
890
- "check": "params",
891
- "method": "daemon.hello",
892
- "valid": true,
893
- "value": {
894
- "protocolVersion": 1,
895
- "client": {
896
- "name": "paseo",
897
- "version": "0.10.0"
898
- }
899
- }
900
- },
901
- {
902
- "name": "daemon.hello without client",
903
- "check": "params",
904
- "method": "daemon.hello",
905
- "valid": true,
906
- "value": {
907
- "protocolVersion": 1
908
- }
909
- },
910
- {
911
- "name": "daemon.hello with a string client",
912
- "check": "params",
913
- "method": "daemon.hello",
914
- "valid": false,
915
- "value": {
916
- "protocolVersion": 1,
917
- "client": "paseo"
918
- }
919
- },
920
- {
921
- "name": "daemon.hello result",
922
- "check": "result",
923
- "method": "daemon.hello",
924
- "valid": true,
925
- "value": {
926
- "protocolVersion": 1,
927
- "daemonVersion": "0.10.0",
928
- "pid": 42,
929
- "capabilities": [
930
- "attach.after",
931
- "prompt.receipts",
932
- "extension.methods"
933
- ]
934
- }
935
- },
936
- {
937
- "name": "daemon.hello from a daemon before capabilities",
938
- "check": "result",
939
- "method": "daemon.hello",
940
- "valid": true,
941
- "value": {
942
- "protocolVersion": 1,
943
- "daemonVersion": "0.9.5",
944
- "pid": 42
945
- }
946
- },
947
- {
948
- "name": "daemon.status params",
949
- "check": "params",
950
- "method": "daemon.status",
951
- "valid": true,
952
- "value": {}
953
- },
954
- {
955
- "name": "daemon.status result",
956
- "check": "result",
957
- "method": "daemon.status",
958
- "valid": true,
959
- "value": {
960
- "pid": 42,
961
- "startedAt": "2026-10-15T00:00:00.000Z",
962
- "version": "0.10.0",
963
- "protocolVersion": 1,
964
- "sessions": 1,
965
- "questions": 0,
966
- "previousExit": {
967
- "kind": "clean"
968
- },
969
- "persistence": {
970
- "failing": 0
971
- },
972
- "health": {
973
- "live": true,
974
- "ready": true,
975
- "checks": [
976
- {
977
- "id": "accepting",
978
- "ok": true
979
- }
980
- ]
981
- }
982
- }
983
- },
984
- {
985
- "name": "daemon.status result without health",
986
- "check": "result",
987
- "method": "daemon.status",
988
- "valid": false,
989
- "value": {
990
- "pid": 42,
991
- "startedAt": "2026-10-15T00:00:00.000Z",
992
- "version": "0.10.0",
993
- "protocolVersion": 1,
994
- "sessions": 1,
995
- "questions": 0
996
- }
997
- },
998
- {
999
- "name": "daemon.shutdown params",
1000
- "check": "params",
1001
- "method": "daemon.shutdown",
1002
- "valid": true,
1003
- "value": {}
1004
- },
1005
- {
1006
- "name": "daemon.shutdown result",
1007
- "check": "result",
1008
- "method": "daemon.shutdown",
1009
- "valid": true,
1010
- "value": {}
1011
- },
1012
- {
1013
- "name": "daemon.pause params",
1014
- "check": "params",
1015
- "method": "daemon.pause",
1016
- "valid": true,
1017
- "value": {
1018
- "runtime": "claude",
1019
- "now": true,
1020
- "reason": "tối nay"
1021
- }
1022
- },
1023
- {
1024
- "name": "daemon.pause with an unknown runtime",
1025
- "check": "params",
1026
- "method": "daemon.pause",
1027
- "valid": false,
1028
- "value": {
1029
- "runtime": "gemini"
1030
- }
1031
- },
1032
- {
1033
- "name": "daemon.pause result",
1034
- "check": "result",
1035
- "method": "daemon.pause",
1036
- "valid": true,
1037
- "value": {
1038
- "runtimes": {
1039
- "claude": {
1040
- "since": "2026-10-15T00:00:00.000Z",
1041
- "by": "the user",
1042
- "reason": "limit",
1043
- "resetsAt": "2026-10-15T00:00:00.000Z"
1044
- }
1045
- },
1046
- "parked": [
1047
- {
1048
- "assignmentId": "a_1",
1049
- "agent": "peer",
1050
- "runtime": "claude",
1051
- "rootId": "ses_fixture",
1052
- "reason": "limit",
1053
- "since": "2026-10-15T00:00:00.000Z"
1054
- }
1055
- ]
1056
- }
1057
- },
1058
- {
1059
- "name": "daemon.resume params",
1060
- "check": "params",
1061
- "method": "daemon.resume",
1062
- "valid": true,
1063
- "value": {
1064
- "runtime": "codex"
1065
- }
1066
- },
1067
- {
1068
- "name": "daemon.resume result",
1069
- "check": "result",
1070
- "method": "daemon.resume",
1071
- "valid": true,
1072
- "value": {
1073
- "runtimes": {},
1074
- "parked": []
1075
- }
1076
- },
1077
- {
1078
- "name": "daemon.pauses params",
1079
- "check": "params",
1080
- "method": "daemon.pauses",
1081
- "valid": true,
1082
- "value": {}
1083
- },
1084
- {
1085
- "name": "daemon.pauses result",
1086
- "check": "result",
1087
- "method": "daemon.pauses",
1088
- "valid": true,
1089
- "value": {
1090
- "all": {
1091
- "since": "2026-10-15T00:00:00.000Z",
1092
- "by": "the user",
1093
- "reason": "paused by the user"
1094
- },
1095
- "runtimes": {},
1096
- "parked": []
1097
- }
1098
- },
1099
- {
1100
- "name": "daemon.usage params",
1101
- "check": "params",
1102
- "method": "daemon.usage",
1103
- "valid": true,
1104
- "value": {
1105
- "refresh": true
1106
- }
1107
- },
1108
- {
1109
- "name": "daemon.usage result",
1110
- "check": "result",
1111
- "method": "daemon.usage",
1112
- "valid": true,
1113
- "value": {
1114
- "providers": [
1115
- {
1116
- "runtime": "codex",
1117
- "pause": null,
1118
- "parked": 0
1119
- }
1120
- ]
1121
- }
1122
- },
1123
- {
1124
- "name": "catalog.get params",
1125
- "check": "params",
1126
- "method": "catalog.get",
1127
- "valid": true,
1128
- "value": {}
1129
- },
1130
- {
1131
- "name": "catalog.get result",
1132
- "check": "result",
1133
- "method": "catalog.get",
1134
- "valid": true,
1135
- "value": {
1136
- "models": [
1137
- {
1138
- "id": "codex:gpt-6.1-sol",
1139
- "label": "Codex · GPT-6.1-Sol"
1140
- }
1141
- ],
1142
- "modes": [
1143
- {
1144
- "id": "read-only",
1145
- "label": "Read only"
1146
- }
1147
- ],
1148
- "thinkingOptions": [
1149
- {
1150
- "id": "low",
1151
- "label": "low"
1152
- }
1153
- ],
1154
- "defaultModel": "codex:gpt-6.1-sol"
1155
- }
1156
- },
1157
- {
1158
- "name": "assignment.recall params",
1159
- "check": "params",
1160
- "method": "assignment.recall",
1161
- "valid": true,
1162
- "value": {
1163
- "assignmentId": "a_1",
1164
- "question": "Bạn đã sửa gì?"
1165
- }
1166
- },
1167
- {
1168
- "name": "assignment.recall without a question",
1169
- "check": "params",
1170
- "method": "assignment.recall",
1171
- "valid": false,
1172
- "value": {
1173
- "assignmentId": "a_1"
1174
- }
1175
- },
1176
- {
1177
- "name": "assignment.recall result",
1178
- "check": "result",
1179
- "method": "assignment.recall",
1180
- "valid": true,
1181
- "value": {
1182
- "assignmentId": "a_1",
1183
- "agent": "peer",
1184
- "taskId": "bd-1",
1185
- "finishedAt": "2026-10-15T00:00:00.000Z",
1186
- "answer": "Đã sửa server.ts"
1187
- }
1188
- },
1189
- {
1190
- "name": "board.list params",
1191
- "check": "params",
1192
- "method": "board.list",
1193
- "valid": true,
1194
- "value": {
1195
- "projectRoot": "/work/project"
1196
- }
1197
- },
1198
- {
1199
- "name": "board.list without projectRoot",
1200
- "check": "params",
1201
- "method": "board.list",
1202
- "valid": false,
1203
- "value": {}
1204
- },
1205
- {
1206
- "name": "board.list result",
1207
- "check": "result",
1208
- "method": "board.list",
1209
- "valid": true,
1210
- "value": {
1211
- "pins": [
1212
- {
1213
- "id": "pin_1",
1214
- "project": "/work/project",
1215
- "kind": "claim",
1216
- "body": "Đang sửa server",
1217
- "paths": [
1218
- "src/server.ts"
1219
- ],
1220
- "agent": "peer",
1221
- "sessionId": "ses_child",
1222
- "rootId": "ses_fixture",
1223
- "at": "2026-10-15T00:00:00.000Z"
1224
- }
1225
- ]
1226
- }
1227
- },
1228
- {
1229
- "name": "question.list params",
1230
- "check": "params",
1231
- "method": "question.list",
1232
- "valid": true,
1233
- "value": {
1234
- "projectRoot": "/work/project"
1235
- }
1236
- },
1237
- {
1238
- "name": "question.list result",
1239
- "check": "result",
1240
- "method": "question.list",
1241
- "valid": true,
1242
- "value": {
1243
- "questions": [
1244
- {
1245
- "id": "q_1",
1246
- "sessionId": "ses_fixture",
1247
- "rootId": "ses_fixture",
1248
- "agent": "main",
1249
- "body": "Tiếp tục?",
1250
- "options": [
1251
- "có",
1252
- "không"
1253
- ],
1254
- "askedAt": "2026-10-15T00:00:00.000Z"
1255
- }
1256
- ]
1257
- }
1258
- },
1259
- {
1260
- "name": "question.answer params",
1261
- "check": "params",
1262
- "method": "question.answer",
1263
- "valid": true,
1264
- "value": {
1265
- "questionId": "q_1",
1266
- "text": "có"
1267
- }
1268
- },
1269
- {
1270
- "name": "question.answer dismissal",
1271
- "check": "params",
1272
- "method": "question.answer",
1273
- "valid": true,
1274
- "value": {
1275
- "questionId": "q_1",
1276
- "dismiss": true,
1277
- "reason": "không cần"
1278
- }
1279
- },
1280
- {
1281
- "name": "question.answer result",
1282
- "check": "result",
1283
- "method": "question.answer",
1284
- "valid": true,
1285
- "value": {
1286
- "questionId": "q_1"
1287
- }
1288
- },
1289
- {
1290
- "name": "session.create params",
1291
- "check": "params",
1292
- "method": "session.create",
1293
- "valid": true,
1294
- "value": {
1295
- "sessionId": "ses_fixture",
1296
- "spec": {
1297
- "cwd": "/work/project",
1298
- "model": "codex:gpt-6.1-sol",
1299
- "persist": true,
1300
- "mcpServers": {
1301
- "docs": {
1302
- "type": "http",
1303
- "url": "https://example.invalid/mcp"
1304
- }
1305
- }
1306
- },
1307
- "history": "replay",
1308
- "delegation": false
1309
- }
1310
- },
1311
- {
1312
- "name": "session.create with an invalid session id",
1313
- "check": "params",
1314
- "method": "session.create",
1315
- "valid": false,
1316
- "value": {
1317
- "sessionId": "has space",
1318
- "spec": {
1319
- "cwd": "/work/project"
1320
- }
1321
- }
1322
- },
1323
- {
1324
- "name": "session.create without spec.cwd",
1325
- "check": "params",
1326
- "method": "session.create",
1327
- "valid": false,
1328
- "value": {
1329
- "spec": {}
1330
- }
1331
- },
1332
- {
1333
- "name": "session.create result",
1334
- "check": "result",
1335
- "method": "session.create",
1336
- "valid": true,
1337
- "value": {
1338
- "session": {
1339
- "id": "ses_fixture",
1340
- "projectRoot": "/work/project",
1341
- "agent": "main",
1342
- "runtime": "codex",
1343
- "model": "gpt-6.1-sol",
1344
- "mode": "workspace-write",
1345
- "thinking": "low",
1346
- "workflow": {
1347
- "mode": "pho",
1348
- "maxPeers": 2,
1349
- "supervisor": false
1350
- },
1351
- "teamLabel": "Phở",
1352
- "threadId": "thread-1",
1353
- "persistent": true,
1354
- "busy": false
1355
- },
1356
- "attached": false,
1357
- "durable": true
1358
- }
1359
- },
1360
- {
1361
- "name": "session.create result of a resume",
1362
- "check": "result",
1363
- "method": "session.create",
1364
- "valid": true,
1365
- "value": {
1366
- "session": {
1367
- "id": "ses_fixture",
1368
- "projectRoot": "/work/project",
1369
- "agent": "main",
1370
- "runtime": "codex",
1371
- "model": "gpt-6.1-sol",
1372
- "mode": "workspace-write",
1373
- "thinking": "low",
1374
- "workflow": {
1375
- "mode": "pho",
1376
- "maxPeers": 2,
1377
- "supervisor": false
1378
- },
1379
- "teamLabel": "Phở",
1380
- "threadId": "thread-1",
1381
- "persistent": true,
1382
- "busy": false
1383
- },
1384
- "attached": false,
1385
- "resumed": true,
1386
- "durable": true
1387
- }
1388
- },
1389
- {
1390
- "name": "session.preview params",
1391
- "check": "params",
1392
- "method": "session.preview",
1393
- "valid": true,
1394
- "value": {
1395
- "spec": {
1396
- "cwd": "/work/project",
1397
- "workflow": "cafe"
1398
- }
1399
- }
1400
- },
1401
- {
1402
- "name": "session.preview result",
1403
- "check": "result",
1404
- "method": "session.preview",
1405
- "valid": true,
1406
- "value": {
1407
- "preview": {
1408
- "teams": [
1409
- {
1410
- "id": "pho",
1411
- "label": "Phở"
1412
- },
1413
- {
1414
- "id": "cafe",
1415
- "label": "Cafe",
1416
- "description": "Hai agent"
1417
- }
1418
- ],
1419
- "team": "cafe",
1420
- "teamLabel": "Cafe",
1421
- "agent": "main",
1422
- "runtime": "claude",
1423
- "model": "claude-opus-5-5",
1424
- "mode": "full-access",
1425
- "thinking": "high"
1426
- }
1427
- }
1428
- },
1429
- {
1430
- "name": "session.attach params",
1431
- "check": "params",
1432
- "method": "session.attach",
1433
- "valid": true,
1434
- "value": {
1435
- "sessionId": "ses_fixture",
1436
- "after": 12
1437
- }
1438
- },
1439
- {
1440
- "name": "session.attach with a negative cursor",
1441
- "check": "params",
1442
- "method": "session.attach",
1443
- "valid": false,
1444
- "value": {
1445
- "sessionId": "ses_fixture",
1446
- "after": -1
1447
- }
1448
- },
1449
- {
1450
- "name": "session.attach result",
1451
- "check": "result",
1452
- "method": "session.attach",
1453
- "valid": true,
1454
- "value": {
1455
- "session": {
1456
- "id": "ses_fixture",
1457
- "projectRoot": "/work/project",
1458
- "agent": "main",
1459
- "runtime": "codex",
1460
- "model": "gpt-6.1-sol",
1461
- "mode": "workspace-write",
1462
- "thinking": "low",
1463
- "workflow": {
1464
- "mode": "pho",
1465
- "maxPeers": 2,
1466
- "supervisor": false
1467
- },
1468
- "teamLabel": "Phở",
1469
- "threadId": "thread-1",
1470
- "persistent": true,
1471
- "busy": false,
1472
- "status": "idle",
1473
- "title": "Sửa lỗi 😀",
1474
- "createdAt": "2026-10-15T00:00:00.000Z",
1475
- "updatedAt": "2026-10-15T00:00:00.000Z"
1476
- },
1477
- "cursor": 40
1478
- }
1479
- },
1480
- {
1481
- "name": "session.attach result of a reset",
1482
- "check": "result",
1483
- "method": "session.attach",
1484
- "valid": true,
1485
- "value": {
1486
- "session": {
1487
- "id": "ses_fixture",
1488
- "projectRoot": "/work/project",
1489
- "agent": "main",
1490
- "runtime": "codex",
1491
- "model": "gpt-6.1-sol",
1492
- "mode": "workspace-write",
1493
- "thinking": "low",
1494
- "workflow": {
1495
- "mode": "pho",
1496
- "maxPeers": 2,
1497
- "supervisor": false
1498
- },
1499
- "teamLabel": "Phở",
1500
- "threadId": "thread-1",
1501
- "persistent": true,
1502
- "busy": false,
1503
- "status": "idle",
1504
- "title": "Sửa lỗi 😀",
1505
- "createdAt": "2026-10-15T00:00:00.000Z",
1506
- "updatedAt": "2026-10-15T00:00:00.000Z"
1507
- },
1508
- "cursor": 40,
1509
- "reset": true
1510
- }
1511
- },
1512
- {
1513
- "name": "session.attach result with reset false",
1514
- "check": "result",
1515
- "method": "session.attach",
1516
- "valid": false,
1517
- "value": {
1518
- "session": {
1519
- "id": "ses_fixture",
1520
- "projectRoot": "/work/project",
1521
- "agent": "main",
1522
- "runtime": "codex",
1523
- "model": "gpt-6.1-sol",
1524
- "mode": "workspace-write",
1525
- "thinking": "low",
1526
- "workflow": {
1527
- "mode": "pho",
1528
- "maxPeers": 2,
1529
- "supervisor": false
1530
- },
1531
- "teamLabel": "Phở",
1532
- "threadId": "thread-1",
1533
- "persistent": true,
1534
- "busy": false,
1535
- "status": "idle",
1536
- "title": "Sửa lỗi 😀",
1537
- "createdAt": "2026-10-15T00:00:00.000Z",
1538
- "updatedAt": "2026-10-15T00:00:00.000Z"
1539
- },
1540
- "cursor": 40,
1541
- "reset": false
1542
- }
1543
- },
1544
- {
1545
- "name": "session.release params",
1546
- "check": "params",
1547
- "method": "session.release",
1548
- "valid": true,
1549
- "value": {
1550
- "sessionId": "ses_fixture"
1551
- }
1552
- },
1553
- {
1554
- "name": "session.release result",
1555
- "check": "result",
1556
- "method": "session.release",
1557
- "valid": true,
1558
- "value": {
1559
- "closed": true
1560
- }
1561
- },
1562
- {
1563
- "name": "session.prompt params",
1564
- "check": "params",
1565
- "method": "session.prompt",
1566
- "valid": true,
1567
- "value": {
1568
- "sessionId": "ses_fixture",
1569
- "clientMessageId": "m-1",
1570
- "delivery": "steer",
1571
- "content": [
1572
- {
1573
- "type": "text",
1574
- "text": "Dừng lại 🛑"
1575
- }
1576
- ]
1577
- }
1578
- },
1579
- {
1580
- "name": "session.prompt with string content",
1581
- "check": "params",
1582
- "method": "session.prompt",
1583
- "valid": false,
1584
- "value": {
1585
- "sessionId": "ses_fixture",
1586
- "clientMessageId": "m-1",
1587
- "content": "text"
1588
- }
1589
- },
1590
- {
1591
- "name": "session.prompt with an unknown delivery",
1592
- "check": "params",
1593
- "method": "session.prompt",
1594
- "valid": false,
1595
- "value": {
1596
- "sessionId": "ses_fixture",
1597
- "clientMessageId": "m-1",
1598
- "delivery": "later",
1599
- "content": []
1600
- }
1601
- },
1602
- {
1603
- "name": "session.prompt result",
1604
- "check": "result",
1605
- "method": "session.prompt",
1606
- "valid": true,
1607
- "value": {
1608
- "outcome": "accepted",
1609
- "durable": true
1610
- }
1611
- },
1612
- {
1613
- "name": "session.prompt result of a repeat",
1614
- "check": "result",
1615
- "method": "session.prompt",
1616
- "valid": true,
1617
- "value": {
1618
- "outcome": "accepted",
1619
- "duplicate": true,
1620
- "durable": true
1621
- }
1622
- },
1623
- {
1624
- "name": "session.prompt result of a refused prompt",
1625
- "check": "result",
1626
- "method": "session.prompt",
1627
- "valid": true,
1628
- "value": {
1629
- "outcome": "failed",
1630
- "error": {
1631
- "message": "Session is busy"
1632
- },
1633
- "durable": true
1634
- }
1635
- },
1636
- {
1637
- "name": "session.prompt result without receipts",
1638
- "check": "result",
1639
- "method": "session.prompt",
1640
- "valid": true,
1641
- "value": {}
1642
- },
1643
- {
1644
- "name": "session.interrupt params",
1645
- "check": "params",
1646
- "method": "session.interrupt",
1647
- "valid": true,
1648
- "value": {
1649
- "sessionId": "ses_fixture"
1650
- }
1651
- },
1652
- {
1653
- "name": "session.interrupt result",
1654
- "check": "result",
1655
- "method": "session.interrupt",
1656
- "valid": true,
1657
- "value": {}
1658
- },
1659
- {
1660
- "name": "session.configure params",
1661
- "check": "params",
1662
- "method": "session.configure",
1663
- "valid": true,
1664
- "value": {
1665
- "sessionId": "ses_fixture",
1666
- "mode": "read-only"
1667
- }
1668
- },
1669
- {
1670
- "name": "session.configure without mode",
1671
- "check": "params",
1672
- "method": "session.configure",
1673
- "valid": true,
1674
- "value": {
1675
- "sessionId": "ses_fixture"
1676
- }
1677
- },
1678
- {
1679
- "name": "session.configure result",
1680
- "check": "result",
1681
- "method": "session.configure",
1682
- "valid": true,
1683
- "value": {
1684
- "session": {
1685
- "id": "ses_fixture",
1686
- "projectRoot": "/work/project",
1687
- "agent": "main",
1688
- "runtime": "codex",
1689
- "model": "gpt-6.1-sol",
1690
- "mode": "workspace-write",
1691
- "thinking": "low",
1692
- "workflow": {
1693
- "mode": "pho",
1694
- "maxPeers": 2,
1695
- "supervisor": false
1696
- },
1697
- "teamLabel": "Phở",
1698
- "threadId": "thread-1",
1699
- "persistent": true,
1700
- "busy": false
1701
- }
1702
- }
1703
- },
1704
- {
1705
- "name": "session.close params",
1706
- "check": "params",
1707
- "method": "session.close",
1708
- "valid": true,
1709
- "value": {
1710
- "sessionId": "ses_fixture"
1711
- }
1712
- },
1713
- {
1714
- "name": "session.close result",
1715
- "check": "result",
1716
- "method": "session.close",
1717
- "valid": true,
1718
- "value": {}
1719
- },
1720
- {
1721
- "name": "session.rename with 200 astral characters",
1722
- "check": "params",
1723
- "method": "session.rename",
1724
- "valid": true,
1725
- "value": {
1726
- "sessionId": "ses_fixture",
1727
- "title": "😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀"
1728
- }
1729
- },
1730
- {
1731
- "name": "session.rename with 201 characters",
1732
- "check": "params",
1733
- "method": "session.rename",
1734
- "valid": false,
1735
- "value": {
1736
- "sessionId": "ses_fixture",
1737
- "title": "😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀"
1738
- }
1739
- },
1740
- {
1741
- "name": "session.rename with a blank title",
1742
- "check": "params",
1743
- "method": "session.rename",
1744
- "valid": false,
1745
- "value": {
1746
- "sessionId": "ses_fixture",
1747
- "title": " "
1748
- }
1749
- },
1750
- {
1751
- "name": "session.rename result",
1752
- "check": "result",
1753
- "method": "session.rename",
1754
- "valid": true,
1755
- "value": {
1756
- "session": {
1757
- "id": "ses_fixture",
1758
- "projectRoot": "/work/project",
1759
- "agent": "main",
1760
- "runtime": "codex",
1761
- "model": "gpt-6.1-sol",
1762
- "mode": "workspace-write",
1763
- "thinking": "low",
1764
- "workflow": {
1765
- "mode": "pho",
1766
- "maxPeers": 2,
1767
- "supervisor": false
1768
- },
1769
- "teamLabel": "Phở",
1770
- "threadId": "thread-1",
1771
- "persistent": true,
1772
- "busy": false,
1773
- "status": "idle",
1774
- "title": "Sửa lỗi 😀",
1775
- "createdAt": "2026-10-15T00:00:00.000Z",
1776
- "updatedAt": "2026-10-15T00:00:00.000Z"
1777
- }
1778
- }
1779
- },
1780
- {
1781
- "name": "session.archive params",
1782
- "check": "params",
1783
- "method": "session.archive",
1784
- "valid": true,
1785
- "value": {
1786
- "sessionId": "ses_fixture",
1787
- "archived": false
1788
- }
1789
- },
1790
- {
1791
- "name": "session.archive result",
1792
- "check": "result",
1793
- "method": "session.archive",
1794
- "valid": true,
1795
- "value": {
1796
- "session": {
1797
- "id": "ses_fixture",
1798
- "projectRoot": "/work/project",
1799
- "agent": "main",
1800
- "runtime": "codex",
1801
- "model": "gpt-6.1-sol",
1802
- "mode": "workspace-write",
1803
- "thinking": "low",
1804
- "workflow": {
1805
- "mode": "pho",
1806
- "maxPeers": 2,
1807
- "supervisor": false
1808
- },
1809
- "teamLabel": "Phở",
1810
- "threadId": "thread-1",
1811
- "persistent": true,
1812
- "busy": false,
1813
- "status": "closed",
1814
- "title": "Sửa lỗi 😀",
1815
- "createdAt": "2026-10-15T00:00:00.000Z",
1816
- "updatedAt": "2026-10-15T00:00:00.000Z",
1817
- "archived": true
1818
- }
1819
- }
1820
- },
1821
- {
1822
- "name": "session.get params",
1823
- "check": "params",
1824
- "method": "session.get",
1825
- "valid": true,
1826
- "value": {
1827
- "sessionId": "ses_fixture"
1828
- }
1829
- },
1830
- {
1831
- "name": "session.get with a null session id",
1832
- "check": "params",
1833
- "method": "session.get",
1834
- "valid": false,
1835
- "value": {
1836
- "sessionId": null
1837
- }
1838
- },
1839
- {
1840
- "name": "session.get result",
1841
- "check": "result",
1842
- "method": "session.get",
1843
- "valid": true,
1844
- "value": {
1845
- "session": {
1846
- "id": "ses_fixture",
1847
- "projectRoot": "/work/project",
1848
- "agent": "main",
1849
- "runtime": "codex",
1850
- "model": "gpt-6.1-sol",
1851
- "mode": "workspace-write",
1852
- "thinking": "low",
1853
- "workflow": {
1854
- "mode": "pho",
1855
- "maxPeers": 2,
1856
- "supervisor": false
1857
- },
1858
- "teamLabel": "Phở",
1859
- "threadId": "thread-1",
1860
- "persistent": true,
1861
- "busy": false,
1862
- "status": "error",
1863
- "title": "Sửa lỗi 😀",
1864
- "createdAt": "2026-10-15T00:00:00.000Z",
1865
- "updatedAt": "2026-10-15T00:00:00.000Z",
1866
- "lastError": {
1867
- "code": "daemon_restarted",
1868
- "message": "alpd stopped"
1869
- }
1870
- }
1871
- }
1872
- },
1873
- {
1874
- "name": "session.get result with an unknown status",
1875
- "check": "result",
1876
- "method": "session.get",
1877
- "valid": false,
1878
- "value": {
1879
- "session": {
1880
- "id": "ses_fixture",
1881
- "projectRoot": "/work/project",
1882
- "agent": "main",
1883
- "runtime": "codex",
1884
- "model": "gpt-6.1-sol",
1885
- "mode": "workspace-write",
1886
- "thinking": "low",
1887
- "workflow": {
1888
- "mode": "pho",
1889
- "maxPeers": 2,
1890
- "supervisor": false
1891
- },
1892
- "teamLabel": "Phở",
1893
- "threadId": "thread-1",
1894
- "persistent": true,
1895
- "busy": false,
1896
- "status": "paused",
1897
- "title": "Sửa lỗi 😀",
1898
- "createdAt": "2026-10-15T00:00:00.000Z",
1899
- "updatedAt": "2026-10-15T00:00:00.000Z"
1900
- }
1901
- }
1902
- },
1903
- {
1904
- "name": "session.list params",
1905
- "check": "params",
1906
- "method": "session.list",
1907
- "valid": true,
1908
- "value": {
1909
- "projectRoot": "/work/project",
1910
- "rootsOnly": true,
1911
- "includeClosed": true,
1912
- "includeArchived": false
1913
- }
1914
- },
1915
- {
1916
- "name": "session.list with a null projectRoot",
1917
- "check": "params",
1918
- "method": "session.list",
1919
- "valid": false,
1920
- "value": {
1921
- "projectRoot": null
1922
- }
1923
- },
1924
- {
1925
- "name": "session.list result",
1926
- "check": "result",
1927
- "method": "session.list",
1928
- "valid": true,
1929
- "value": {
1930
- "sessions": [
1931
- {
1932
- "id": "ses_fixture",
1933
- "projectRoot": "/work/project",
1934
- "agent": "main",
1935
- "runtime": "codex",
1936
- "model": "gpt-6.1-sol",
1937
- "mode": "workspace-write",
1938
- "thinking": "low",
1939
- "workflow": {
1940
- "mode": "pho",
1941
- "maxPeers": 2,
1942
- "supervisor": false
1943
- },
1944
- "teamLabel": "Phở",
1945
- "threadId": "thread-1",
1946
- "persistent": true,
1947
- "busy": false,
1948
- "status": "idle",
1949
- "title": "Sửa lỗi 😀",
1950
- "createdAt": "2026-10-15T00:00:00.000Z",
1951
- "updatedAt": "2026-10-15T00:00:00.000Z"
1952
- }
1953
- ]
1954
- }
1955
- },
1956
- {
1957
- "name": "session.status params",
1958
- "check": "params",
1959
- "method": "session.status",
1960
- "valid": true,
1961
- "value": {
1962
- "sessionId": "ses_fixture"
1963
- }
1964
- },
1965
- {
1966
- "name": "session.status result",
1967
- "check": "result",
1968
- "method": "session.status",
1969
- "valid": true,
1970
- "value": {
1971
- "status": {
1972
- "rootId": "ses_fixture",
1973
- "sessions": [
1974
- {
1975
- "id": "ses_fixture",
1976
- "projectRoot": "/work/project",
1977
- "agent": "main",
1978
- "runtime": "codex",
1979
- "model": "gpt-6.1-sol",
1980
- "mode": "workspace-write",
1981
- "thinking": "low",
1982
- "workflow": {
1983
- "mode": "pho",
1984
- "maxPeers": 2,
1985
- "supervisor": false
1986
- },
1987
- "teamLabel": "Phở",
1988
- "threadId": "thread-1",
1989
- "persistent": true,
1990
- "busy": false,
1991
- "state": "waiting_user",
1992
- "idleMs": 1200,
1993
- "workdir": "/work/project",
1994
- "unreadMail": 0
1995
- }
1996
- ],
1997
- "assignments": [
1998
- {
1999
- "id": "ses_child",
2000
- "agent": "peer",
2001
- "mode": "workspace-write",
2002
- "status": "running",
2003
- "startedAt": "2026-10-15T00:00:00.000Z",
2004
- "requester": "ses_fixture",
2005
- "isolation": "shared",
2006
- "idleMs": 5
2007
- }
2008
- ],
2009
- "questions": [
2010
- {
2011
- "id": "q_1",
2012
- "sessionId": "ses_fixture",
2013
- "rootId": "ses_fixture",
2014
- "agent": "main",
2015
- "body": "Tiếp tục?",
2016
- "options": [
2017
- "có",
2018
- "không"
2019
- ],
2020
- "askedAt": "2026-10-15T00:00:00.000Z"
2021
- }
2022
- ],
2023
- "worktrees": [],
2024
- "leases": [
2025
- {
2026
- "checkout": "/work/project",
2027
- "assignmentId": "ses_child",
2028
- "agent": "peer"
2029
- }
2030
- ],
2031
- "claims": [
2032
- {
2033
- "id": "pin_1",
2034
- "project": "/work/project",
2035
- "kind": "claim",
2036
- "body": "Đang sửa server",
2037
- "paths": [
2038
- "src/server.ts"
2039
- ],
2040
- "agent": "peer",
2041
- "sessionId": "ses_child",
2042
- "rootId": "ses_fixture",
2043
- "at": "2026-10-15T00:00:00.000Z"
2044
- }
2045
- ]
2046
- }
2047
- }
2048
- },
2049
- {
2050
- "name": "session.message params",
2051
- "check": "params",
2052
- "method": "session.message",
2053
- "valid": true,
2054
- "value": {
2055
- "sessionId": "ses_fixture",
2056
- "text": "Ghi chú"
2057
- }
2058
- },
2059
- {
2060
- "name": "session.message result",
2061
- "check": "result",
2062
- "method": "session.message",
2063
- "valid": true,
2064
- "value": {}
2065
- },
2066
- {
2067
- "name": "session.log params",
2068
- "check": "params",
2069
- "method": "session.log",
2070
- "valid": true,
2071
- "value": {
2072
- "sessionId": "ses_fixture"
2073
- }
2074
- },
2075
- {
2076
- "name": "session.log result",
2077
- "check": "result",
2078
- "method": "session.log",
2079
- "valid": true,
2080
- "value": {
2081
- "rootId": "ses_fixture",
2082
- "entries": [
2083
- {
2084
- "ts": "2026-10-15T00:00:00.000Z",
2085
- "event": "assignment.finished",
2086
- "assignmentId": "a_1"
2087
- }
2088
- ]
2089
- }
2090
- },
2091
- {
2092
- "name": "extension.register params",
2093
- "check": "params",
2094
- "method": "extension.register",
2095
- "valid": true,
2096
- "value": {
2097
- "method": "web.pairing"
2098
- }
2099
- },
2100
- {
2101
- "name": "extension.register result",
2102
- "check": "result",
2103
- "method": "extension.register",
2104
- "valid": true,
2105
- "value": {
2106
- "registered": "web.pairing"
2107
- }
2108
- },
2109
- {
2110
- "name": "extension.unregister params",
2111
- "check": "params",
2112
- "method": "extension.unregister",
2113
- "valid": true,
2114
- "value": {
2115
- "method": "web.pairing"
2116
- }
2117
- },
2118
- {
2119
- "name": "extension.unregister result",
2120
- "check": "result",
2121
- "method": "extension.unregister",
2122
- "valid": true,
2123
- "value": {
2124
- "unregistered": "web.pairing"
2125
- }
2126
- },
2127
- {
2128
- "name": "team.list params",
2129
- "check": "params",
2130
- "method": "team.list",
2131
- "valid": true,
2132
- "value": {
2133
- "projectRoot": "/work/project"
2134
- }
2135
- },
2136
- {
2137
- "name": "team.list without a project",
2138
- "check": "params",
2139
- "method": "team.list",
2140
- "valid": true,
2141
- "value": {}
2142
- },
2143
- {
2144
- "name": "team.list with an empty projectRoot",
2145
- "check": "params",
2146
- "method": "team.list",
2147
- "valid": false,
2148
- "value": {
2149
- "projectRoot": ""
2150
- }
2151
- },
2152
- {
2153
- "name": "team.list result",
2154
- "check": "result",
2155
- "method": "team.list",
2156
- "valid": true,
2157
- "value": {
2158
- "projectRoot": "/work/project",
2159
- "teams": [
2160
- {
2161
- "id": "pho",
2162
- "label": "Phở",
2163
- "source": "builtin"
2164
- },
2165
- {
2166
- "id": "mine",
2167
- "source": "library",
2168
- "error": "agent x is missing"
2169
- }
2170
- ]
2171
- }
2172
- },
2173
- {
2174
- "name": "task.list params",
2175
- "check": "params",
2176
- "method": "task.list",
2177
- "valid": true,
2178
- "value": {
2179
- "projectRoot": "/work/project"
2180
- }
2181
- },
2182
- {
2183
- "name": "task.list without projectRoot",
2184
- "check": "params",
2185
- "method": "task.list",
2186
- "valid": false,
2187
- "value": {}
2188
- },
2189
- {
2190
- "name": "task.list result",
2191
- "check": "result",
2192
- "method": "task.list",
2193
- "valid": true,
2194
- "value": {
2195
- "projectRoot": "/work/project",
2196
- "tasks": [
2197
- {
2198
- "id": "t-a3f8",
2199
- "title": "Viết test 😀",
2200
- "type": "task",
2201
- "priority": 2,
2202
- "status": "open",
2203
- "rev": 3,
2204
- "ready": true,
2205
- "approvals": [
2206
- {
2207
- "gate": "g1",
2208
- "note": "Duyệt?"
2209
- }
2210
- ],
2211
- "labels": [
2212
- "rpc"
2213
- ],
2214
- "createdAt": "2026-10-15T00:00:00.000Z",
2215
- "updatedAt": "2026-10-15T00:00:00.000Z"
2216
- },
2217
- {
2218
- "id": "t-a3f8.1",
2219
- "title": "Viết test 😀",
2220
- "type": "task",
2221
- "priority": 2,
2222
- "status": "closed",
2223
- "rev": 0,
2224
- "ready": false,
2225
- "approvals": [
2226
- {
2227
- "gate": "g1",
2228
- "note": "Duyệt?"
2229
- }
2230
- ],
2231
- "labels": [
2232
- "rpc"
2233
- ],
2234
- "createdAt": "2026-10-15T00:00:00.000Z",
2235
- "updatedAt": "2026-10-15T00:00:00.000Z",
2236
- "closed": {
2237
- "reason": "done",
2238
- "at": "2026-10-15T00:00:00.000Z"
2239
- },
2240
- "progress": {
2241
- "done": 1,
2242
- "total": 2
2243
- }
2244
- }
2245
- ],
2246
- "unreadable": [
2247
- {
2248
- "file": ".alp/tasks/t-bad.json",
2249
- "error": "not JSON"
2250
- }
2251
- ],
2252
- "revision": "abc"
2253
- }
2254
- },
2255
- {
2256
- "name": "task.list result with an unknown status",
2257
- "check": "result",
2258
- "method": "task.list",
2259
- "valid": false,
2260
- "value": {
2261
- "projectRoot": "/work/project",
2262
- "tasks": [
2263
- {
2264
- "id": "t-a3f8",
2265
- "title": "Viết test 😀",
2266
- "type": "task",
2267
- "priority": 2,
2268
- "status": "blocked",
2269
- "rev": 3,
2270
- "ready": true,
2271
- "approvals": [
2272
- {
2273
- "gate": "g1",
2274
- "note": "Duyệt?"
2275
- }
2276
- ],
2277
- "labels": [
2278
- "rpc"
2279
- ],
2280
- "createdAt": "2026-10-15T00:00:00.000Z",
2281
- "updatedAt": "2026-10-15T00:00:00.000Z"
2282
- }
2283
- ],
2284
- "unreadable": [],
2285
- "revision": "x"
2286
- }
2287
- },
2288
- {
2289
- "name": "task.create params",
2290
- "check": "params",
2291
- "method": "task.create",
2292
- "valid": true,
2293
- "value": {
2294
- "projectRoot": "/work/project",
2295
- "title": "Sửa lỗi",
2296
- "priority": 0,
2297
- "requestId": "req-1"
2298
- }
2299
- },
2300
- {
2301
- "name": "task.create with a blank title",
2302
- "check": "params",
2303
- "method": "task.create",
2304
- "valid": false,
2305
- "value": {
2306
- "projectRoot": "/work/project",
2307
- "title": " "
2308
- }
2309
- },
2310
- {
2311
- "name": "task.create with priority 5",
2312
- "check": "params",
2313
- "method": "task.create",
2314
- "valid": false,
2315
- "value": {
2316
- "projectRoot": "/work/project",
2317
- "title": "x",
2318
- "priority": 5
2319
- }
2320
- },
2321
- {
2322
- "name": "task.create result",
2323
- "check": "result",
2324
- "method": "task.create",
2325
- "valid": true,
2326
- "value": {
2327
- "id": "t-a3f8"
2328
- }
2329
- },
2330
- {
2331
- "name": "task.create result of a repeat",
2332
- "check": "result",
2333
- "method": "task.create",
2334
- "valid": true,
2335
- "value": {
2336
- "id": "t-a3f8",
2337
- "duplicate": true
2338
- }
2339
- },
2340
- {
2341
- "name": "task.update params",
2342
- "check": "params",
2343
- "method": "task.update",
2344
- "valid": true,
2345
- "value": {
2346
- "projectRoot": "/work/project",
2347
- "id": "t-a3f8",
2348
- "action": "close",
2349
- "note": "Xong",
2350
- "ifRev": 3
2351
- }
2352
- },
2353
- {
2354
- "name": "task.update with action approve (that is task.gate.resolve)",
2355
- "check": "params",
2356
- "method": "task.update",
2357
- "valid": false,
2358
- "value": {
2359
- "projectRoot": "/work/project",
2360
- "id": "t-a3f8",
2361
- "action": "approve"
2362
- }
2363
- },
2364
- {
2365
- "name": "task.update with an id that is not a task id",
2366
- "check": "params",
2367
- "method": "task.update",
2368
- "valid": false,
2369
- "value": {
2370
- "projectRoot": "/work/project",
2371
- "id": "bd-1",
2372
- "action": "close"
2373
- }
2374
- },
2375
- {
2376
- "name": "task.update result",
2377
- "check": "result",
2378
- "method": "task.update",
2379
- "valid": true,
2380
- "value": {
2381
- "id": "t-a3f8",
2382
- "status": "closed",
2383
- "rev": 4,
2384
- "landed": "Epic t-a3f8 landed"
2385
- }
2386
- },
2387
- {
2388
- "name": "task.gate.resolve params",
2389
- "check": "params",
2390
- "method": "task.gate.resolve",
2391
- "valid": true,
2392
- "value": {
2393
- "projectRoot": "/work/project",
2394
- "id": "t-a3f8",
2395
- "gate": "g1",
2396
- "note": "OK"
2397
- }
2398
- },
2399
- {
2400
- "name": "task.gate.resolve result",
2401
- "check": "result",
2402
- "method": "task.gate.resolve",
2403
- "valid": true,
2404
- "value": {
2405
- "id": "t-a3f8",
2406
- "status": "open",
2407
- "rev": 5
2408
- }
2409
- },
2410
- {
2411
- "name": "library.list params",
2412
- "check": "params",
2413
- "method": "library.list",
2414
- "valid": true,
2415
- "value": {
2416
- "kind": "agents",
2417
- "projectRoot": "/work/project"
2418
- }
2419
- },
2420
- {
2421
- "name": "library.list with an unknown kind",
2422
- "check": "params",
2423
- "method": "library.list",
2424
- "valid": false,
2425
- "value": {
2426
- "kind": "plugins"
2427
- }
2428
- },
2429
- {
2430
- "name": "library.list result",
2431
- "check": "result",
2432
- "method": "library.list",
2433
- "valid": true,
2434
- "value": {
2435
- "projectRoot": null,
2436
- "entries": [
2437
- {
2438
- "name": "main",
2439
- "source": "builtin"
2440
- },
2441
- {
2442
- "name": "reviewer",
2443
- "source": "project",
2444
- "overrides": "library",
2445
- "description": "Đọc lại",
2446
- "usedBy": [
2447
- "team pho"
2448
- ]
2449
- }
2450
- ]
2451
- }
2452
- },
2453
- {
2454
- "name": "library.get params",
2455
- "check": "params",
2456
- "method": "library.get",
2457
- "valid": true,
2458
- "value": {
2459
- "kind": "mcp",
2460
- "name": "docs",
2461
- "projectRoot": "/work/project",
2462
- "scope": "project"
2463
- }
2464
- },
2465
- {
2466
- "name": "library.get with the name ..",
2467
- "check": "params",
2468
- "method": "library.get",
2469
- "valid": false,
2470
- "value": {
2471
- "kind": "mcp",
2472
- "name": ".."
2473
- }
2474
- },
2475
- {
2476
- "name": "library.get with a slash in the name",
2477
- "check": "params",
2478
- "method": "library.get",
2479
- "valid": false,
2480
- "value": {
2481
- "kind": "mcp",
2482
- "name": "a/b"
2483
- }
2484
- },
2485
- {
2486
- "name": "library.get result",
2487
- "check": "result",
2488
- "method": "library.get",
2489
- "valid": true,
2490
- "value": {
2491
- "kind": "mcp",
2492
- "name": "docs",
2493
- "source": "library",
2494
- "content": {
2495
- "server": {
2496
- "url": "https://example.invalid/mcp",
2497
- "headers": {
2498
- "Authorization": {
2499
- "$secret": "keep"
2500
- }
2501
- }
2502
- }
2503
- },
2504
- "revision": "r-1",
2505
- "usedBy": [
2506
- "agent main"
2507
- ],
2508
- "secrets": [
2509
- "/server/headers/Authorization"
2510
- ]
2511
- }
2512
- },
2513
- {
2514
- "name": "library.get result of a built-in agent",
2515
- "check": "result",
2516
- "method": "library.get",
2517
- "valid": true,
2518
- "value": {
2519
- "kind": "agents",
2520
- "name": "main",
2521
- "source": "builtin",
2522
- "content": {
2523
- "instructions": "…"
2524
- },
2525
- "revision": null,
2526
- "usedBy": [],
2527
- "librarySkills": [
2528
- "tdd"
2529
- ]
2530
- }
2531
- },
2532
- {
2533
- "name": "library.save params",
2534
- "check": "params",
2535
- "method": "library.save",
2536
- "valid": true,
2537
- "value": {
2538
- "kind": "providers",
2539
- "name": "gemini",
2540
- "scope": "library",
2541
- "content": {
2542
- "provider": {
2543
- "kind": "acp",
2544
- "command": "gemini",
2545
- "env": {
2546
- "GEMINI_API_KEY": {
2547
- "$secret": "keep"
2548
- }
2549
- }
2550
- }
2551
- },
2552
- "revision": "r-1"
2553
- }
2554
- },
2555
- {
2556
- "name": "library.save creating a team with sync",
2557
- "check": "params",
2558
- "method": "library.save",
2559
- "valid": true,
2560
- "value": {
2561
- "kind": "teams",
2562
- "name": "mine",
2563
- "scope": "project",
2564
- "projectRoot": "/work/project",
2565
- "content": {
2566
- "team": {}
2567
- },
2568
- "revision": null,
2569
- "sync": "known-projects"
2570
- }
2571
- },
2572
- {
2573
- "name": "library.save with an unknown scope",
2574
- "check": "params",
2575
- "method": "library.save",
2576
- "valid": false,
2577
- "value": {
2578
- "kind": "skills",
2579
- "name": "tdd",
2580
- "scope": "everywhere",
2581
- "content": {}
2582
- }
2583
- },
2584
- {
2585
- "name": "library.save result",
2586
- "check": "result",
2587
- "method": "library.save",
2588
- "valid": true,
2589
- "value": {
2590
- "revision": "r-2",
2591
- "syncedProjects": 2,
2592
- "syncErrors": []
2593
- }
2594
- },
2595
- {
2596
- "name": "library.delete params",
2597
- "check": "params",
2598
- "method": "library.delete",
2599
- "valid": true,
2600
- "value": {
2601
- "kind": "skills",
2602
- "name": "tdd",
2603
- "scope": "library",
2604
- "revision": "r-2"
2605
- }
2606
- },
2607
- {
2608
- "name": "library.delete result",
2609
- "check": "result",
2610
- "method": "library.delete",
2611
- "valid": true,
2612
- "value": {
2613
- "removed": true,
2614
- "now": "builtin"
2615
- }
2616
- },
2617
- {
2618
- "name": "library.duplicate params",
2619
- "check": "params",
2620
- "method": "library.duplicate",
2621
- "valid": true,
2622
- "value": {
2623
- "kind": "agents",
2624
- "from": "main",
2625
- "to": "main-2",
2626
- "scope": "library"
2627
- }
2628
- },
2629
- {
2630
- "name": "library.duplicate result",
2631
- "check": "result",
2632
- "method": "library.duplicate",
2633
- "valid": true,
2634
- "value": {
2635
- "revision": "r-3"
2636
- }
2637
- },
2638
- {
2639
- "name": "library.rename params",
2640
- "check": "params",
2641
- "method": "library.rename",
2642
- "valid": true,
2643
- "value": {
2644
- "kind": "agents",
2645
- "from": "main-2",
2646
- "to": "helper",
2647
- "scope": "project",
2648
- "projectRoot": "/work/project"
2649
- }
2650
- },
2651
- {
2652
- "name": "library.rename result",
2653
- "check": "result",
2654
- "method": "library.rename",
2655
- "valid": true,
2656
- "value": {
2657
- "revision": "r-4"
2658
- }
2659
- },
2660
- {
2661
- "name": "library.skills.set params",
2662
- "check": "params",
2663
- "method": "library.skills.set",
2664
- "valid": true,
2665
- "value": {
2666
- "agent": "main",
2667
- "skills": [
2668
- "tdd"
2669
- ]
2670
- }
2671
- },
2672
- {
2673
- "name": "library.skills.set result",
2674
- "check": "result",
2675
- "method": "library.skills.set",
2676
- "valid": true,
2677
- "value": {
2678
- "skills": [
2679
- "tdd"
2680
- ]
2681
- }
2682
- },
2683
- {
2684
- "name": "library.models params",
2685
- "check": "params",
2686
- "method": "library.models",
2687
- "valid": true,
2688
- "value": {}
2689
- },
2690
- {
2691
- "name": "library.models result",
2692
- "check": "result",
2693
- "method": "library.models",
2694
- "valid": true,
2695
- "value": {
2696
- "models": [
2697
- {
2698
- "id": "codex:gpt-6.1-sol",
2699
- "label": "codex · GPT-6.1-Sol",
2700
- "efforts": [
2701
- "low",
2702
- "high"
2703
- ],
2704
- "effort": "low"
2705
- },
2706
- {
2707
- "id": "acp:gemini",
2708
- "label": "Gemini · Provider default",
2709
- "efforts": []
2710
- }
2711
- ]
2712
- }
2713
- },
2714
- {
2715
- "name": "settings.language.get params",
2716
- "check": "params",
2717
- "method": "settings.language.get",
2718
- "valid": true,
2719
- "value": {}
2720
- },
2721
- {
2722
- "name": "settings.language.get result",
2723
- "check": "result",
2724
- "method": "settings.language.get",
2725
- "valid": true,
2726
- "value": {
2727
- "language": null,
2728
- "applies": "Vietnamese",
2729
- "default": "Vietnamese"
2730
- }
2731
- },
2732
- {
2733
- "name": "settings.language.set params",
2734
- "check": "params",
2735
- "method": "settings.language.set",
2736
- "valid": true,
2737
- "value": {
2738
- "language": "English"
2739
- }
2740
- },
2741
- {
2742
- "name": "settings.language.set clearing the language",
2743
- "check": "params",
2744
- "method": "settings.language.set",
2745
- "valid": true,
2746
- "value": {
2747
- "language": null
2748
- }
2749
- },
2750
- {
2751
- "name": "settings.language.set without language",
2752
- "check": "params",
2753
- "method": "settings.language.set",
2754
- "valid": false,
2755
- "value": {}
2756
- },
2757
- {
2758
- "name": "settings.language.set result",
2759
- "check": "result",
2760
- "method": "settings.language.set",
2761
- "valid": true,
2762
- "value": {
2763
- "language": "English",
2764
- "applies": "English",
2765
- "default": "Vietnamese"
2766
- }
2767
- },
2768
- {
2769
- "name": "daemon.hello with a string protocolVersion",
2770
- "check": "params",
2771
- "method": "daemon.hello",
2772
- "valid": false,
2773
- "value": {
2774
- "protocolVersion": "1"
2775
- }
2776
- },
2777
- {
2778
- "name": "session.list with a string flag",
2779
- "check": "params",
2780
- "method": "session.list",
2781
- "valid": false,
2782
- "value": {
2783
- "includeClosed": "yes"
2784
- }
2785
- },
2786
- {
2787
- "name": "extension.register without method",
2788
- "check": "params",
2789
- "method": "extension.register",
2790
- "valid": false,
2791
- "value": {}
2792
- },
2793
- {
2794
- "name": "question.answer without questionId",
2795
- "check": "params",
2796
- "method": "question.answer",
2797
- "valid": false,
2798
- "value": {
2799
- "text": "có"
2800
- }
2801
- },
2802
- {
2803
- "name": "session.prompt result with outcome unknown (that is an error, never a result)",
2804
- "check": "result",
2805
- "method": "session.prompt",
2806
- "valid": false,
2807
- "value": {
2808
- "outcome": "unknown"
2809
- }
2810
- },
2811
- {
2812
- "name": "fractional cursor",
2813
- "check": "envelope",
2814
- "valid": false,
2815
- "value": {
2816
- "sessionId": "ses_fixture",
2817
- "epoch": "epoch-1",
2818
- "seq": 3,
2819
- "cursor": 1.5,
2820
- "ts": "2026-10-15T00:00:00.000Z",
2821
- "event": {
2822
- "type": "session.ready"
2823
- }
2824
- }
2825
- }
2826
- ]
2827
- }