instar 1.3.124 → 1.3.125
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.
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-05-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-05-30T22:08:54.842Z",
|
|
5
|
+
"instarVersion": "1.3.125",
|
|
6
6
|
"entryCount": 193,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -409,7 +409,7 @@
|
|
|
409
409
|
"type": "route-group",
|
|
410
410
|
"domain": "monitoring",
|
|
411
411
|
"sourcePath": "src/server/routes.ts",
|
|
412
|
-
"contentHash": "
|
|
412
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
413
413
|
"since": "2025-01-01"
|
|
414
414
|
},
|
|
415
415
|
"route-group:agents": {
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
"type": "route-group",
|
|
418
418
|
"domain": "sessions",
|
|
419
419
|
"sourcePath": "src/server/routes.ts",
|
|
420
|
-
"contentHash": "
|
|
420
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
421
421
|
"since": "2025-01-01"
|
|
422
422
|
},
|
|
423
423
|
"route-group:backups": {
|
|
@@ -425,7 +425,7 @@
|
|
|
425
425
|
"type": "route-group",
|
|
426
426
|
"domain": "operations",
|
|
427
427
|
"sourcePath": "src/server/routes.ts",
|
|
428
|
-
"contentHash": "
|
|
428
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
429
429
|
"since": "2025-01-01"
|
|
430
430
|
},
|
|
431
431
|
"route-group:git": {
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
"type": "route-group",
|
|
434
434
|
"domain": "coordination",
|
|
435
435
|
"sourcePath": "src/server/routes.ts",
|
|
436
|
-
"contentHash": "
|
|
436
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
437
437
|
"since": "2025-01-01"
|
|
438
438
|
},
|
|
439
439
|
"route-group:memory": {
|
|
@@ -441,7 +441,7 @@
|
|
|
441
441
|
"type": "route-group",
|
|
442
442
|
"domain": "memory",
|
|
443
443
|
"sourcePath": "src/server/routes.ts",
|
|
444
|
-
"contentHash": "
|
|
444
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
445
445
|
"since": "2025-01-01"
|
|
446
446
|
},
|
|
447
447
|
"route-group:semantic": {
|
|
@@ -449,7 +449,7 @@
|
|
|
449
449
|
"type": "route-group",
|
|
450
450
|
"domain": "memory",
|
|
451
451
|
"sourcePath": "src/server/routes.ts",
|
|
452
|
-
"contentHash": "
|
|
452
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
453
453
|
"since": "2025-01-01"
|
|
454
454
|
},
|
|
455
455
|
"route-group:status": {
|
|
@@ -457,7 +457,7 @@
|
|
|
457
457
|
"type": "route-group",
|
|
458
458
|
"domain": "monitoring",
|
|
459
459
|
"sourcePath": "src/server/routes.ts",
|
|
460
|
-
"contentHash": "
|
|
460
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
461
461
|
"since": "2025-01-01"
|
|
462
462
|
},
|
|
463
463
|
"route-group:capabilities": {
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
"type": "route-group",
|
|
466
466
|
"domain": "mapping",
|
|
467
467
|
"sourcePath": "src/server/routes.ts",
|
|
468
|
-
"contentHash": "
|
|
468
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
469
469
|
"since": "2025-01-01"
|
|
470
470
|
},
|
|
471
471
|
"route-group:project-map": {
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"type": "route-group",
|
|
474
474
|
"domain": "mapping",
|
|
475
475
|
"sourcePath": "src/server/routes.ts",
|
|
476
|
-
"contentHash": "
|
|
476
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
477
477
|
"since": "2025-01-01"
|
|
478
478
|
},
|
|
479
479
|
"route-group:coherence": {
|
|
@@ -481,7 +481,7 @@
|
|
|
481
481
|
"type": "route-group",
|
|
482
482
|
"domain": "coherence",
|
|
483
483
|
"sourcePath": "src/server/routes.ts",
|
|
484
|
-
"contentHash": "
|
|
484
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
485
485
|
"since": "2025-01-01"
|
|
486
486
|
},
|
|
487
487
|
"route-group:topic-bindings": {
|
|
@@ -489,7 +489,7 @@
|
|
|
489
489
|
"type": "route-group",
|
|
490
490
|
"domain": "sessions",
|
|
491
491
|
"sourcePath": "src/server/routes.ts",
|
|
492
|
-
"contentHash": "
|
|
492
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
493
493
|
"since": "2025-01-01"
|
|
494
494
|
},
|
|
495
495
|
"route-group:context": {
|
|
@@ -497,7 +497,7 @@
|
|
|
497
497
|
"type": "route-group",
|
|
498
498
|
"domain": "context",
|
|
499
499
|
"sourcePath": "src/server/routes.ts",
|
|
500
|
-
"contentHash": "
|
|
500
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
501
501
|
"since": "2025-01-01"
|
|
502
502
|
},
|
|
503
503
|
"route-group:scope-coherence": {
|
|
@@ -505,7 +505,7 @@
|
|
|
505
505
|
"type": "route-group",
|
|
506
506
|
"domain": "coherence",
|
|
507
507
|
"sourcePath": "src/server/routes.ts",
|
|
508
|
-
"contentHash": "
|
|
508
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
509
509
|
"since": "2025-01-01"
|
|
510
510
|
},
|
|
511
511
|
"route-group:canonical-state": {
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
"type": "route-group",
|
|
514
514
|
"domain": "state",
|
|
515
515
|
"sourcePath": "src/server/routes.ts",
|
|
516
|
-
"contentHash": "
|
|
516
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
517
517
|
"since": "2025-01-01"
|
|
518
518
|
},
|
|
519
519
|
"route-group:ci": {
|
|
@@ -521,7 +521,7 @@
|
|
|
521
521
|
"type": "route-group",
|
|
522
522
|
"domain": "monitoring",
|
|
523
523
|
"sourcePath": "src/server/routes.ts",
|
|
524
|
-
"contentHash": "
|
|
524
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
525
525
|
"since": "2025-01-01"
|
|
526
526
|
},
|
|
527
527
|
"route-group:sessions": {
|
|
@@ -529,7 +529,7 @@
|
|
|
529
529
|
"type": "route-group",
|
|
530
530
|
"domain": "sessions",
|
|
531
531
|
"sourcePath": "src/server/routes.ts",
|
|
532
|
-
"contentHash": "
|
|
532
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
533
533
|
"since": "2025-01-01"
|
|
534
534
|
},
|
|
535
535
|
"route-group:jobs": {
|
|
@@ -537,7 +537,7 @@
|
|
|
537
537
|
"type": "route-group",
|
|
538
538
|
"domain": "scheduling",
|
|
539
539
|
"sourcePath": "src/server/routes.ts",
|
|
540
|
-
"contentHash": "
|
|
540
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
541
541
|
"since": "2025-01-01"
|
|
542
542
|
},
|
|
543
543
|
"route-group:skip-ledger": {
|
|
@@ -545,7 +545,7 @@
|
|
|
545
545
|
"type": "route-group",
|
|
546
546
|
"domain": "scheduling",
|
|
547
547
|
"sourcePath": "src/server/routes.ts",
|
|
548
|
-
"contentHash": "
|
|
548
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
549
549
|
"since": "2025-01-01"
|
|
550
550
|
},
|
|
551
551
|
"route-group:telegram": {
|
|
@@ -553,7 +553,7 @@
|
|
|
553
553
|
"type": "route-group",
|
|
554
554
|
"domain": "communication",
|
|
555
555
|
"sourcePath": "src/server/routes.ts",
|
|
556
|
-
"contentHash": "
|
|
556
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
557
557
|
"since": "2025-01-01"
|
|
558
558
|
},
|
|
559
559
|
"route-group:attention": {
|
|
@@ -561,7 +561,7 @@
|
|
|
561
561
|
"type": "route-group",
|
|
562
562
|
"domain": "communication",
|
|
563
563
|
"sourcePath": "src/server/routes.ts",
|
|
564
|
-
"contentHash": "
|
|
564
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
565
565
|
"since": "2025-01-01"
|
|
566
566
|
},
|
|
567
567
|
"route-group:relationships": {
|
|
@@ -569,7 +569,7 @@
|
|
|
569
569
|
"type": "route-group",
|
|
570
570
|
"domain": "relationships",
|
|
571
571
|
"sourcePath": "src/server/routes.ts",
|
|
572
|
-
"contentHash": "
|
|
572
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
573
573
|
"since": "2025-01-01"
|
|
574
574
|
},
|
|
575
575
|
"route-group:feedback": {
|
|
@@ -577,7 +577,7 @@
|
|
|
577
577
|
"type": "route-group",
|
|
578
578
|
"domain": "feedback",
|
|
579
579
|
"sourcePath": "src/server/routes.ts",
|
|
580
|
-
"contentHash": "
|
|
580
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
581
581
|
"since": "2025-01-01"
|
|
582
582
|
},
|
|
583
583
|
"route-group:updates": {
|
|
@@ -585,7 +585,7 @@
|
|
|
585
585
|
"type": "route-group",
|
|
586
586
|
"domain": "updates",
|
|
587
587
|
"sourcePath": "src/server/routes.ts",
|
|
588
|
-
"contentHash": "
|
|
588
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
589
589
|
"since": "2025-01-01"
|
|
590
590
|
},
|
|
591
591
|
"route-group:dispatches": {
|
|
@@ -593,7 +593,7 @@
|
|
|
593
593
|
"type": "route-group",
|
|
594
594
|
"domain": "dispatches",
|
|
595
595
|
"sourcePath": "src/server/routes.ts",
|
|
596
|
-
"contentHash": "
|
|
596
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
597
597
|
"since": "2025-01-01"
|
|
598
598
|
},
|
|
599
599
|
"route-group:quota": {
|
|
@@ -601,7 +601,7 @@
|
|
|
601
601
|
"type": "route-group",
|
|
602
602
|
"domain": "monitoring",
|
|
603
603
|
"sourcePath": "src/server/routes.ts",
|
|
604
|
-
"contentHash": "
|
|
604
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
605
605
|
"since": "2025-01-01"
|
|
606
606
|
},
|
|
607
607
|
"route-group:publishing": {
|
|
@@ -609,7 +609,7 @@
|
|
|
609
609
|
"type": "route-group",
|
|
610
610
|
"domain": "publishing",
|
|
611
611
|
"sourcePath": "src/server/routes.ts",
|
|
612
|
-
"contentHash": "
|
|
612
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
613
613
|
"since": "2025-01-01"
|
|
614
614
|
},
|
|
615
615
|
"route-group:private-views": {
|
|
@@ -617,7 +617,7 @@
|
|
|
617
617
|
"type": "route-group",
|
|
618
618
|
"domain": "publishing",
|
|
619
619
|
"sourcePath": "src/server/routes.ts",
|
|
620
|
-
"contentHash": "
|
|
620
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
621
621
|
"since": "2025-01-01"
|
|
622
622
|
},
|
|
623
623
|
"route-group:tunnel": {
|
|
@@ -625,7 +625,7 @@
|
|
|
625
625
|
"type": "route-group",
|
|
626
626
|
"domain": "networking",
|
|
627
627
|
"sourcePath": "src/server/routes.ts",
|
|
628
|
-
"contentHash": "
|
|
628
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
629
629
|
"since": "2025-01-01"
|
|
630
630
|
},
|
|
631
631
|
"route-group:events": {
|
|
@@ -633,7 +633,7 @@
|
|
|
633
633
|
"type": "route-group",
|
|
634
634
|
"domain": "networking",
|
|
635
635
|
"sourcePath": "src/server/routes.ts",
|
|
636
|
-
"contentHash": "
|
|
636
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
637
637
|
"since": "2025-01-01"
|
|
638
638
|
},
|
|
639
639
|
"route-group:evolution": {
|
|
@@ -641,7 +641,7 @@
|
|
|
641
641
|
"type": "route-group",
|
|
642
642
|
"domain": "evolution",
|
|
643
643
|
"sourcePath": "src/server/routes.ts",
|
|
644
|
-
"contentHash": "
|
|
644
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
645
645
|
"since": "2025-01-01"
|
|
646
646
|
},
|
|
647
647
|
"route-group:watchdog": {
|
|
@@ -649,7 +649,7 @@
|
|
|
649
649
|
"type": "route-group",
|
|
650
650
|
"domain": "monitoring",
|
|
651
651
|
"sourcePath": "src/server/routes.ts",
|
|
652
|
-
"contentHash": "
|
|
652
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
653
653
|
"since": "2025-01-01"
|
|
654
654
|
},
|
|
655
655
|
"route-group:topic-memory": {
|
|
@@ -657,7 +657,7 @@
|
|
|
657
657
|
"type": "route-group",
|
|
658
658
|
"domain": "memory",
|
|
659
659
|
"sourcePath": "src/server/routes.ts",
|
|
660
|
-
"contentHash": "
|
|
660
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
661
661
|
"since": "2025-01-01"
|
|
662
662
|
},
|
|
663
663
|
"route-group:state-sync": {
|
|
@@ -665,7 +665,7 @@
|
|
|
665
665
|
"type": "route-group",
|
|
666
666
|
"domain": "coordination",
|
|
667
667
|
"sourcePath": "src/server/routes.ts",
|
|
668
|
-
"contentHash": "
|
|
668
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
669
669
|
"since": "2025-01-01"
|
|
670
670
|
},
|
|
671
671
|
"route-group:intent": {
|
|
@@ -673,7 +673,7 @@
|
|
|
673
673
|
"type": "route-group",
|
|
674
674
|
"domain": "intent",
|
|
675
675
|
"sourcePath": "src/server/routes.ts",
|
|
676
|
-
"contentHash": "
|
|
676
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
677
677
|
"since": "2025-01-01"
|
|
678
678
|
},
|
|
679
679
|
"route-group:triage": {
|
|
@@ -681,7 +681,7 @@
|
|
|
681
681
|
"type": "route-group",
|
|
682
682
|
"domain": "safety",
|
|
683
683
|
"sourcePath": "src/server/routes.ts",
|
|
684
|
-
"contentHash": "
|
|
684
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
685
685
|
"since": "2025-01-01"
|
|
686
686
|
},
|
|
687
687
|
"route-group:operations": {
|
|
@@ -689,7 +689,7 @@
|
|
|
689
689
|
"type": "route-group",
|
|
690
690
|
"domain": "safety",
|
|
691
691
|
"sourcePath": "src/server/routes.ts",
|
|
692
|
-
"contentHash": "
|
|
692
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
693
693
|
"since": "2025-01-01"
|
|
694
694
|
},
|
|
695
695
|
"route-group:sentinel": {
|
|
@@ -697,7 +697,7 @@
|
|
|
697
697
|
"type": "route-group",
|
|
698
698
|
"domain": "safety",
|
|
699
699
|
"sourcePath": "src/server/routes.ts",
|
|
700
|
-
"contentHash": "
|
|
700
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
701
701
|
"since": "2025-01-01"
|
|
702
702
|
},
|
|
703
703
|
"route-group:trust": {
|
|
@@ -705,7 +705,7 @@
|
|
|
705
705
|
"type": "route-group",
|
|
706
706
|
"domain": "safety",
|
|
707
707
|
"sourcePath": "src/server/routes.ts",
|
|
708
|
-
"contentHash": "
|
|
708
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
709
709
|
"since": "2025-01-01"
|
|
710
710
|
},
|
|
711
711
|
"route-group:monitoring": {
|
|
@@ -713,7 +713,7 @@
|
|
|
713
713
|
"type": "route-group",
|
|
714
714
|
"domain": "monitoring",
|
|
715
715
|
"sourcePath": "src/server/routes.ts",
|
|
716
|
-
"contentHash": "
|
|
716
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
717
717
|
"since": "2025-01-01"
|
|
718
718
|
},
|
|
719
719
|
"route-group:commitments": {
|
|
@@ -721,7 +721,7 @@
|
|
|
721
721
|
"type": "route-group",
|
|
722
722
|
"domain": "commitments",
|
|
723
723
|
"sourcePath": "src/server/routes.ts",
|
|
724
|
-
"contentHash": "
|
|
724
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
725
725
|
"since": "2025-01-01"
|
|
726
726
|
},
|
|
727
727
|
"route-group:episodes": {
|
|
@@ -729,7 +729,7 @@
|
|
|
729
729
|
"type": "route-group",
|
|
730
730
|
"domain": "memory",
|
|
731
731
|
"sourcePath": "src/server/routes.ts",
|
|
732
|
-
"contentHash": "
|
|
732
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
733
733
|
"since": "2025-01-01"
|
|
734
734
|
},
|
|
735
735
|
"route-group:messages": {
|
|
@@ -737,7 +737,7 @@
|
|
|
737
737
|
"type": "route-group",
|
|
738
738
|
"domain": "coordination",
|
|
739
739
|
"sourcePath": "src/server/routes.ts",
|
|
740
|
-
"contentHash": "
|
|
740
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
741
741
|
"since": "2025-01-01"
|
|
742
742
|
},
|
|
743
743
|
"route-group:system-reviews": {
|
|
@@ -745,7 +745,7 @@
|
|
|
745
745
|
"type": "route-group",
|
|
746
746
|
"domain": "monitoring",
|
|
747
747
|
"sourcePath": "src/server/routes.ts",
|
|
748
|
-
"contentHash": "
|
|
748
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
749
749
|
"since": "2025-01-01"
|
|
750
750
|
},
|
|
751
751
|
"route-group:machine-mesh": {
|
|
@@ -761,7 +761,7 @@
|
|
|
761
761
|
"type": "route-group",
|
|
762
762
|
"domain": "security",
|
|
763
763
|
"sourcePath": "src/server/routes.ts",
|
|
764
|
-
"contentHash": "
|
|
764
|
+
"contentHash": "31ee7a80d0fc426ffff7585eaf06662863cac0df38eedc6ea7c035cb082f1b1c",
|
|
765
765
|
"since": "2025-01-01"
|
|
766
766
|
},
|
|
767
767
|
"cli:init": {
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Instar Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- bump: patch -->
|
|
4
|
+
|
|
5
|
+
## What Changed
|
|
6
|
+
|
|
7
|
+
**Fixed the ROOT of duplicate agent-to-agent replies: `POST /messages/relay-agent`
|
|
8
|
+
now responds at the accept boundary instead of after the session spawn.** The
|
|
9
|
+
co-located inbound handler used to AWAIT `handleInboundMessage` — a session
|
|
10
|
+
spawn/resume that routinely takes 9-30 s — before responding. But the sender
|
|
11
|
+
(`MessageRouter.relay`) uses a 5-second fetch timeout and reads only whether the
|
|
12
|
+
request succeeded. So whenever the receiver's spawn outran 5 s, the sender gave
|
|
13
|
+
up, retried with a fresh message id, and the receiver spawned a SECOND session →
|
|
14
|
+
a duplicate reply. The content-hash dedup shipped earlier is the symptom
|
|
15
|
+
backstop; this removes the cause. The handler now responds `{ ok:true,
|
|
16
|
+
accepted:true, threadline:{accepted:true, async:true} }` the instant the message
|
|
17
|
+
is accepted + gated, and runs the spawn in the background. Everything that must
|
|
18
|
+
happen first — the dedup, the reply-waiter resolution, and the warrants-reply
|
|
19
|
+
gate (including its suppress short-circuit) — still runs synchronously before the
|
|
20
|
+
response. Scoped to the co-located path; the cross-machine relay-funnel path
|
|
21
|
+
(which has retry-on-error semantics to preserve) is tracked separately.
|
|
22
|
+
|
|
23
|
+
## Summary of New Capabilities
|
|
24
|
+
|
|
25
|
+
- No new capability — a robustness fix. Agent-to-agent messages on the same
|
|
26
|
+
machine no longer risk a duplicate reply when the receiver's session spawn is
|
|
27
|
+
slower than the sender's 5-second delivery timeout.
|
|
28
|
+
|
|
29
|
+
## What to Tell Your User
|
|
30
|
+
|
|
31
|
+
Agents talking to each other on the same machine no longer occasionally send the
|
|
32
|
+
same reply twice. The cause was that a receiving agent waited until it had fully
|
|
33
|
+
spun up a session — up to half a minute — before telling the sender the message
|
|
34
|
+
arrived, but the sender only waits five seconds and would resend. Now the
|
|
35
|
+
receiver acknowledges the moment the message is safely accepted and does the
|
|
36
|
+
slow work in the background, so the sender never times out and never resends.
|
|
37
|
+
Nothing changes for you; the real reply still arrives as before, just without the
|
|
38
|
+
occasional duplicate.
|
|
39
|
+
|
|
40
|
+
## Evidence
|
|
41
|
+
|
|
42
|
+
**Reproduction / root cause.** Confirmed in the code: the co-located sender
|
|
43
|
+
`MessageRouter.relayToAgent` (`src/messaging/MessageRouter.ts:486-510`) wraps its
|
|
44
|
+
POST to `/messages/relay-agent` in `AbortSignal.timeout(5000)` and returns only
|
|
45
|
+
`response.ok`. The receiver's handler awaited `handleInboundMessage` (a 9-30 s
|
|
46
|
+
session spawn) before responding, so any spawn over 5 s aborted the sender's
|
|
47
|
+
fetch → the sender retried with a fresh `message.id`, which slips past the
|
|
48
|
+
id-based relay dedup → a second spawn and a duplicate reply. (The 2026-05-30
|
|
49
|
+
duplicate-reply incidents on the echo↔codey loop are this path.)
|
|
50
|
+
|
|
51
|
+
**Before / after.** Before: the response is sent only after the full spawn. After:
|
|
52
|
+
the response is `{accepted:true, async:true}` sent at the accept boundary, with
|
|
53
|
+
the spawn running in the background. The rewritten integration test holds the
|
|
54
|
+
background handler open and asserts the HTTP response returns while the handler
|
|
55
|
+
is still mid-spawn (`router-start` present, `router-end` not yet) — i.e. the
|
|
56
|
+
sender is no longer made to wait. The handler still runs to completion in the
|
|
57
|
+
background (not dropped); a background rejection still yields HTTP 200; the
|
|
58
|
+
reply-waiter resolution and the warrants-reply gate's suppress short-circuit stay
|
|
59
|
+
green; the content-hash dedup suite and the keystone gate-before-spawn wiring
|
|
60
|
+
test stay green. An independent second-pass reviewer audited the change (it
|
|
61
|
+
touches inbound messaging) and confirmed correctness after one artifact-honesty
|
|
62
|
+
correction.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Side-Effects Review — relay-agent accept-boundary (duplicate-reply root)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `relay-agent-accept-boundary`
|
|
4
|
+
**Date:** 2026-05-30
|
|
5
|
+
**Author:** Echo (instar-dev agent)
|
|
6
|
+
**Second-pass reviewer:** REQUIRED (inbound agent-to-agent messaging path) — verdict appended below
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
`POST /messages/relay-agent` (`src/server/routes.ts`) now responds at the accept
|
|
11
|
+
boundary — `{ ok:true, accepted:true, threadline:{accepted:true, async:true} }`
|
|
12
|
+
— instead of awaiting `handleInboundMessage` (a 9-30 s session spawn) before
|
|
13
|
+
responding. The spawn runs in the background (`void` + logged `.then`/`.catch`).
|
|
14
|
+
This removes the duplicate-reply ROOT: the co-located sender
|
|
15
|
+
(`MessageRouter.relay`) uses `AbortSignal.timeout(5000)` and reads only
|
|
16
|
+
`response.ok`, so awaiting the spawn past 5 s made it retry with a fresh id →
|
|
17
|
+
duplicate spawn. Scoped to the co-located path only; the relay-funnel path is
|
|
18
|
+
tracked separately.
|
|
19
|
+
|
|
20
|
+
## Decision-point inventory
|
|
21
|
+
|
|
22
|
+
- No decision is added or changed. The accept decision (`relay`) and the
|
|
23
|
+
warrants-reply gate already ran upstream and are unchanged. This only moves
|
|
24
|
+
WHEN the HTTP response is sent relative to the background spawn —
|
|
25
|
+
modify (pass-through of the decision, not a new decision).
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 1. Over-block
|
|
30
|
+
No block/allow surface added. The change responds *sooner*; it rejects nothing
|
|
31
|
+
it didn't reject before (auth, envelope-validation, dedup, and the
|
|
32
|
+
warrants-reply suppress path are all unchanged and still run before the
|
|
33
|
+
response).
|
|
34
|
+
|
|
35
|
+
## 2. Under-block
|
|
36
|
+
The warrants-reply gate's suppress→short-circuit is preserved and still runs
|
|
37
|
+
synchronously before the spawn, so a no-reply verdict still prevents the spawn.
|
|
38
|
+
The only thing no longer surfaced synchronously is the spawn OUTCOME
|
|
39
|
+
(spawned/handled/error) — which no caller reads (see §5/§6); it is logged.
|
|
40
|
+
|
|
41
|
+
## 3. Level-of-abstraction fit
|
|
42
|
+
Correct layer — the fix is at the HTTP handler that owns the request/response
|
|
43
|
+
lifecycle for this path. The decision of WHAT to do (accept, gate, spawn) is
|
|
44
|
+
unchanged; only the response timing within the handler moves.
|
|
45
|
+
|
|
46
|
+
## 4. Signal vs authority compliance
|
|
47
|
+
Compliant. No authority added. The handler already held the accept + gate
|
|
48
|
+
authority upstream; the change carries no new gate and fails safe (a background
|
|
49
|
+
error is logged, never surfaced as a 500 on an already-sent response).
|
|
50
|
+
|
|
51
|
+
## 5. Interactions
|
|
52
|
+
- **Sender (`MessageRouter.relay`, src/messaging/MessageRouter.ts:494-505):**
|
|
53
|
+
reads ONLY `response.ok` within a 5 s `AbortSignal.timeout` — verified. The
|
|
54
|
+
accept-boundary gives it a fast `ok` and never the spawn fields it never
|
|
55
|
+
read.
|
|
56
|
+
- **Reply-waiter mechanism:** resolved synchronously BEFORE the response
|
|
57
|
+
(unchanged) — the actual reply path is decoupled from this response. Tests
|
|
58
|
+
for waiter-by-threadId stay green.
|
|
59
|
+
- **Content-hash dedup (#573):** runs before the response, unchanged; remains
|
|
60
|
+
the backstop for any retry that still slips through.
|
|
61
|
+
- **Keystone gate-before-spawn:** the warrants-reply gate still runs before the
|
|
62
|
+
(now async) spawn; the wiring test asserting that ordering stays green (made
|
|
63
|
+
formatting-robust).
|
|
64
|
+
- **No double-fire:** the spawn runs exactly once per accepted message, just
|
|
65
|
+
asynchronously.
|
|
66
|
+
|
|
67
|
+
## 6. External surfaces
|
|
68
|
+
- The `/messages/relay-agent` response body changes from `{ok, threadline:
|
|
69
|
+
<spawnResult>}` to `{ok, accepted, threadline:{accepted, async}}`. Audited
|
|
70
|
+
consumers:
|
|
71
|
+
- `MessageRouter.relayToAgent` (`src/messaging/MessageRouter.ts:486-510`) —
|
|
72
|
+
reads ONLY `response.ok` within `AbortSignal.timeout(5000)`. Fully satisfied
|
|
73
|
+
by the fast `ok`; never read the spawn fields. No behavior change.
|
|
74
|
+
- **`/threadline/relay-send` local fast-path** (`src/server/routes.ts:13824-
|
|
75
|
+
13835`) — the SENDER side of this same co-located hop reads
|
|
76
|
+
`threadline.{injected,spawned,resumed,gateDecision,error,handled}` to build
|
|
77
|
+
an informational `deliveryOutcome` string (logged + returned to the calling
|
|
78
|
+
agent's `threadline_send` MCP result via `mcp-http-client` →
|
|
79
|
+
`ThreadlineMCPServer:575`). With the accept-boundary those fields are
|
|
80
|
+
`undefined`, so `outcome` falls through to the existing default `'accepted'`
|
|
81
|
+
(previously e.g. `'spawned new session'`/`'resumed existing thread'`). This
|
|
82
|
+
is a **cosmetic/observability degradation only**: `delivered` is computed as
|
|
83
|
+
`!outcome.startsWith('error')`, and `'accepted'` is not an error, so
|
|
84
|
+
`delivered` stays `true` exactly as before; `outcome` gates no retry, no
|
|
85
|
+
delivery, no reply-wait. `'accepted'` is also the HONEST value — the local
|
|
86
|
+
send IS accepted and processing async. (Found by the Phase-5 reviewer; the
|
|
87
|
+
original draft of this section wrongly claimed `MessageRouter.relay` was the
|
|
88
|
+
only consumer.)
|
|
89
|
+
- The change is invisible to the sender's actual behavior (fast ack) and to the
|
|
90
|
+
user (the real reply still arrives via the session, just without a 30 s sender
|
|
91
|
+
hang and without the occasional duplicate).
|
|
92
|
+
- No new route, no new message.
|
|
93
|
+
|
|
94
|
+
## 7. Rollback cost
|
|
95
|
+
Trivial — revert the one handler block (re-await + return the result) and the
|
|
96
|
+
test rewrite. No data, no migration. The content-hash dedup stays as the
|
|
97
|
+
symptom backstop regardless.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Phase 5 — Second-pass reviewer verdict
|
|
102
|
+
|
|
103
|
+
An independent reviewer subagent adversarially audited the artifact AND the
|
|
104
|
+
actual handler code (not just the claims), and **raised one concern — now
|
|
105
|
+
addressed**:
|
|
106
|
+
|
|
107
|
+
- **Concern (artifact overstatement, not a code bug):** §6's original draft
|
|
108
|
+
claimed `MessageRouter.relay` + the test suite were the only consumers. The
|
|
109
|
+
reviewer found a SECOND consumer — the `/threadline/relay-send` local
|
|
110
|
+
fast-path (`routes.ts:13824-13835`) reads the spawn-outcome fields to compute
|
|
111
|
+
an informational `deliveryOutcome`. **Resolution:** §6 corrected above to name
|
|
112
|
+
this consumer and document that it degrades gracefully to the existing
|
|
113
|
+
`'accepted'` outcome — `delivered` stays `true` (`'accepted'` is not an
|
|
114
|
+
error), no retry/delivery/correctness impact. The CODE is safe to ship as-is;
|
|
115
|
+
only the artifact's honesty needed the fix.
|
|
116
|
+
|
|
117
|
+
- **What the reviewer verified as correct (the core change is sound):** handler
|
|
118
|
+
ordering preserved — dedup, reply-waiter resolution, and the warrants-reply
|
|
119
|
+
gate's `suppress`→short-circuit all still run synchronously BEFORE the
|
|
120
|
+
response; `handleInboundMessage` is called exactly once (never dropped), its
|
|
121
|
+
rejection caught (can't 500 an already-sent response); the reply-waiter path
|
|
122
|
+
is decoupled and unbroken; the sole co-located sender reads only `response.ok`
|
|
123
|
+
within the 5 s timeout, so the accept-boundary genuinely removes the
|
|
124
|
+
duplicate-reply root; no test breaks; the rewritten test asserts the right
|
|
125
|
+
things (returns before `router-end`, no spawn fields, background completion,
|
|
126
|
+
error → still 200).
|
|
127
|
+
|
|
128
|
+
Verdict after the §6 correction: concern resolved; change is correct and safe.
|