instar 1.3.237 → 1.3.239
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/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +41 -3
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +8 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/types.d.ts +37 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/messaging/SpawnRequestManager.d.ts +4 -1
- package/dist/messaging/SpawnRequestManager.d.ts.map +1 -1
- package/dist/messaging/SpawnRequestManager.js +8 -1
- package/dist/messaging/SpawnRequestManager.js.map +1 -1
- package/dist/monitoring/GeminiLoopRunner.d.ts +93 -0
- package/dist/monitoring/GeminiLoopRunner.d.ts.map +1 -0
- package/dist/monitoring/GeminiLoopRunner.js +134 -0
- package/dist/monitoring/GeminiLoopRunner.js.map +1 -0
- package/dist/monitoring/geminiLoopProduction.d.ts +62 -0
- package/dist/monitoring/geminiLoopProduction.d.ts.map +1 -0
- package/dist/monitoring/geminiLoopProduction.js +124 -0
- package/dist/monitoring/geminiLoopProduction.js.map +1 -0
- package/dist/scheduler/MentorOnboardingRunner.d.ts +10 -1
- package/dist/scheduler/MentorOnboardingRunner.d.ts.map +1 -1
- package/dist/scheduler/MentorOnboardingRunner.js +1 -0
- package/dist/scheduler/MentorOnboardingRunner.js.map +1 -1
- package/dist/scheduler/MentorOnboardingTick.d.ts +25 -0
- package/dist/scheduler/MentorOnboardingTick.d.ts.map +1 -1
- package/dist/scheduler/MentorOnboardingTick.js +13 -0
- package/dist/scheduler/MentorOnboardingTick.js.map +1 -1
- package/dist/server/AgentServer.d.ts +8 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +84 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +45 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/ThreadResumeMap.d.ts +8 -0
- package/dist/threadline/ThreadResumeMap.d.ts.map +1 -1
- package/dist/threadline/ThreadResumeMap.js +31 -0
- package/dist/threadline/ThreadResumeMap.js.map +1 -1
- package/dist/threadline/WarmSessionPool.d.ts +62 -0
- package/dist/threadline/WarmSessionPool.d.ts.map +1 -0
- package/dist/threadline/WarmSessionPool.js +116 -0
- package/dist/threadline/WarmSessionPool.js.map +1 -0
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.3.238.md +68 -0
- package/upgrades/1.3.239.md +96 -0
- package/upgrades/mentor-tick-cycle-capture.eli16.md +18 -0
- package/upgrades/side-effects/gemini-loop-driver-wiring.md +59 -0
- package/upgrades/side-effects/mentor-tick-cycle-capture.md +39 -0
- package/upgrades/side-effects/parallel-activity-coherence.md +9 -0
- package/upgrades/side-effects/threadline-a2a-live-inject.md +60 -0
- package/upgrades/threadline-a2a-live-inject.eli16.md +30 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-04T04:41:03.490Z",
|
|
5
|
+
"instarVersion": "1.3.239",
|
|
6
6
|
"entryCount": 198,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -418,7 +418,7 @@
|
|
|
418
418
|
"type": "route-group",
|
|
419
419
|
"domain": "monitoring",
|
|
420
420
|
"sourcePath": "src/server/routes.ts",
|
|
421
|
-
"contentHash": "
|
|
421
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
422
422
|
"since": "2025-01-01"
|
|
423
423
|
},
|
|
424
424
|
"route-group:agents": {
|
|
@@ -426,7 +426,7 @@
|
|
|
426
426
|
"type": "route-group",
|
|
427
427
|
"domain": "sessions",
|
|
428
428
|
"sourcePath": "src/server/routes.ts",
|
|
429
|
-
"contentHash": "
|
|
429
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
430
430
|
"since": "2025-01-01"
|
|
431
431
|
},
|
|
432
432
|
"route-group:backups": {
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
"type": "route-group",
|
|
435
435
|
"domain": "operations",
|
|
436
436
|
"sourcePath": "src/server/routes.ts",
|
|
437
|
-
"contentHash": "
|
|
437
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
438
438
|
"since": "2025-01-01"
|
|
439
439
|
},
|
|
440
440
|
"route-group:git": {
|
|
@@ -442,7 +442,7 @@
|
|
|
442
442
|
"type": "route-group",
|
|
443
443
|
"domain": "coordination",
|
|
444
444
|
"sourcePath": "src/server/routes.ts",
|
|
445
|
-
"contentHash": "
|
|
445
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
446
446
|
"since": "2025-01-01"
|
|
447
447
|
},
|
|
448
448
|
"route-group:memory": {
|
|
@@ -450,7 +450,7 @@
|
|
|
450
450
|
"type": "route-group",
|
|
451
451
|
"domain": "memory",
|
|
452
452
|
"sourcePath": "src/server/routes.ts",
|
|
453
|
-
"contentHash": "
|
|
453
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
454
454
|
"since": "2025-01-01"
|
|
455
455
|
},
|
|
456
456
|
"route-group:semantic": {
|
|
@@ -458,7 +458,7 @@
|
|
|
458
458
|
"type": "route-group",
|
|
459
459
|
"domain": "memory",
|
|
460
460
|
"sourcePath": "src/server/routes.ts",
|
|
461
|
-
"contentHash": "
|
|
461
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
462
462
|
"since": "2025-01-01"
|
|
463
463
|
},
|
|
464
464
|
"route-group:status": {
|
|
@@ -466,7 +466,7 @@
|
|
|
466
466
|
"type": "route-group",
|
|
467
467
|
"domain": "monitoring",
|
|
468
468
|
"sourcePath": "src/server/routes.ts",
|
|
469
|
-
"contentHash": "
|
|
469
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
470
470
|
"since": "2025-01-01"
|
|
471
471
|
},
|
|
472
472
|
"route-group:capabilities": {
|
|
@@ -474,7 +474,7 @@
|
|
|
474
474
|
"type": "route-group",
|
|
475
475
|
"domain": "mapping",
|
|
476
476
|
"sourcePath": "src/server/routes.ts",
|
|
477
|
-
"contentHash": "
|
|
477
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
478
478
|
"since": "2025-01-01"
|
|
479
479
|
},
|
|
480
480
|
"route-group:project-map": {
|
|
@@ -482,7 +482,7 @@
|
|
|
482
482
|
"type": "route-group",
|
|
483
483
|
"domain": "mapping",
|
|
484
484
|
"sourcePath": "src/server/routes.ts",
|
|
485
|
-
"contentHash": "
|
|
485
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
486
486
|
"since": "2025-01-01"
|
|
487
487
|
},
|
|
488
488
|
"route-group:coherence": {
|
|
@@ -490,7 +490,7 @@
|
|
|
490
490
|
"type": "route-group",
|
|
491
491
|
"domain": "coherence",
|
|
492
492
|
"sourcePath": "src/server/routes.ts",
|
|
493
|
-
"contentHash": "
|
|
493
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
494
494
|
"since": "2025-01-01"
|
|
495
495
|
},
|
|
496
496
|
"route-group:topic-bindings": {
|
|
@@ -498,7 +498,7 @@
|
|
|
498
498
|
"type": "route-group",
|
|
499
499
|
"domain": "sessions",
|
|
500
500
|
"sourcePath": "src/server/routes.ts",
|
|
501
|
-
"contentHash": "
|
|
501
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
502
502
|
"since": "2025-01-01"
|
|
503
503
|
},
|
|
504
504
|
"route-group:context": {
|
|
@@ -506,7 +506,7 @@
|
|
|
506
506
|
"type": "route-group",
|
|
507
507
|
"domain": "context",
|
|
508
508
|
"sourcePath": "src/server/routes.ts",
|
|
509
|
-
"contentHash": "
|
|
509
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
510
510
|
"since": "2025-01-01"
|
|
511
511
|
},
|
|
512
512
|
"route-group:scope-coherence": {
|
|
@@ -514,7 +514,7 @@
|
|
|
514
514
|
"type": "route-group",
|
|
515
515
|
"domain": "coherence",
|
|
516
516
|
"sourcePath": "src/server/routes.ts",
|
|
517
|
-
"contentHash": "
|
|
517
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
518
518
|
"since": "2025-01-01"
|
|
519
519
|
},
|
|
520
520
|
"route-group:canonical-state": {
|
|
@@ -522,7 +522,7 @@
|
|
|
522
522
|
"type": "route-group",
|
|
523
523
|
"domain": "state",
|
|
524
524
|
"sourcePath": "src/server/routes.ts",
|
|
525
|
-
"contentHash": "
|
|
525
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
526
526
|
"since": "2025-01-01"
|
|
527
527
|
},
|
|
528
528
|
"route-group:ci": {
|
|
@@ -530,7 +530,7 @@
|
|
|
530
530
|
"type": "route-group",
|
|
531
531
|
"domain": "monitoring",
|
|
532
532
|
"sourcePath": "src/server/routes.ts",
|
|
533
|
-
"contentHash": "
|
|
533
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
534
534
|
"since": "2025-01-01"
|
|
535
535
|
},
|
|
536
536
|
"route-group:sessions": {
|
|
@@ -538,7 +538,7 @@
|
|
|
538
538
|
"type": "route-group",
|
|
539
539
|
"domain": "sessions",
|
|
540
540
|
"sourcePath": "src/server/routes.ts",
|
|
541
|
-
"contentHash": "
|
|
541
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
542
542
|
"since": "2025-01-01"
|
|
543
543
|
},
|
|
544
544
|
"route-group:jobs": {
|
|
@@ -546,7 +546,7 @@
|
|
|
546
546
|
"type": "route-group",
|
|
547
547
|
"domain": "scheduling",
|
|
548
548
|
"sourcePath": "src/server/routes.ts",
|
|
549
|
-
"contentHash": "
|
|
549
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
550
550
|
"since": "2025-01-01"
|
|
551
551
|
},
|
|
552
552
|
"route-group:skip-ledger": {
|
|
@@ -554,7 +554,7 @@
|
|
|
554
554
|
"type": "route-group",
|
|
555
555
|
"domain": "scheduling",
|
|
556
556
|
"sourcePath": "src/server/routes.ts",
|
|
557
|
-
"contentHash": "
|
|
557
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
558
558
|
"since": "2025-01-01"
|
|
559
559
|
},
|
|
560
560
|
"route-group:telegram": {
|
|
@@ -562,7 +562,7 @@
|
|
|
562
562
|
"type": "route-group",
|
|
563
563
|
"domain": "communication",
|
|
564
564
|
"sourcePath": "src/server/routes.ts",
|
|
565
|
-
"contentHash": "
|
|
565
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
566
566
|
"since": "2025-01-01"
|
|
567
567
|
},
|
|
568
568
|
"route-group:attention": {
|
|
@@ -570,7 +570,7 @@
|
|
|
570
570
|
"type": "route-group",
|
|
571
571
|
"domain": "communication",
|
|
572
572
|
"sourcePath": "src/server/routes.ts",
|
|
573
|
-
"contentHash": "
|
|
573
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
574
574
|
"since": "2025-01-01"
|
|
575
575
|
},
|
|
576
576
|
"route-group:relationships": {
|
|
@@ -578,7 +578,7 @@
|
|
|
578
578
|
"type": "route-group",
|
|
579
579
|
"domain": "relationships",
|
|
580
580
|
"sourcePath": "src/server/routes.ts",
|
|
581
|
-
"contentHash": "
|
|
581
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
582
582
|
"since": "2025-01-01"
|
|
583
583
|
},
|
|
584
584
|
"route-group:feedback": {
|
|
@@ -586,7 +586,7 @@
|
|
|
586
586
|
"type": "route-group",
|
|
587
587
|
"domain": "feedback",
|
|
588
588
|
"sourcePath": "src/server/routes.ts",
|
|
589
|
-
"contentHash": "
|
|
589
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
590
590
|
"since": "2025-01-01"
|
|
591
591
|
},
|
|
592
592
|
"route-group:updates": {
|
|
@@ -594,7 +594,7 @@
|
|
|
594
594
|
"type": "route-group",
|
|
595
595
|
"domain": "updates",
|
|
596
596
|
"sourcePath": "src/server/routes.ts",
|
|
597
|
-
"contentHash": "
|
|
597
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
598
598
|
"since": "2025-01-01"
|
|
599
599
|
},
|
|
600
600
|
"route-group:dispatches": {
|
|
@@ -602,7 +602,7 @@
|
|
|
602
602
|
"type": "route-group",
|
|
603
603
|
"domain": "dispatches",
|
|
604
604
|
"sourcePath": "src/server/routes.ts",
|
|
605
|
-
"contentHash": "
|
|
605
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
606
606
|
"since": "2025-01-01"
|
|
607
607
|
},
|
|
608
608
|
"route-group:quota": {
|
|
@@ -610,7 +610,7 @@
|
|
|
610
610
|
"type": "route-group",
|
|
611
611
|
"domain": "monitoring",
|
|
612
612
|
"sourcePath": "src/server/routes.ts",
|
|
613
|
-
"contentHash": "
|
|
613
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
614
614
|
"since": "2025-01-01"
|
|
615
615
|
},
|
|
616
616
|
"route-group:publishing": {
|
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
"type": "route-group",
|
|
619
619
|
"domain": "publishing",
|
|
620
620
|
"sourcePath": "src/server/routes.ts",
|
|
621
|
-
"contentHash": "
|
|
621
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
622
622
|
"since": "2025-01-01"
|
|
623
623
|
},
|
|
624
624
|
"route-group:private-views": {
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
"type": "route-group",
|
|
627
627
|
"domain": "publishing",
|
|
628
628
|
"sourcePath": "src/server/routes.ts",
|
|
629
|
-
"contentHash": "
|
|
629
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
630
630
|
"since": "2025-01-01"
|
|
631
631
|
},
|
|
632
632
|
"route-group:tunnel": {
|
|
@@ -634,7 +634,7 @@
|
|
|
634
634
|
"type": "route-group",
|
|
635
635
|
"domain": "networking",
|
|
636
636
|
"sourcePath": "src/server/routes.ts",
|
|
637
|
-
"contentHash": "
|
|
637
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
638
638
|
"since": "2025-01-01"
|
|
639
639
|
},
|
|
640
640
|
"route-group:events": {
|
|
@@ -642,7 +642,7 @@
|
|
|
642
642
|
"type": "route-group",
|
|
643
643
|
"domain": "networking",
|
|
644
644
|
"sourcePath": "src/server/routes.ts",
|
|
645
|
-
"contentHash": "
|
|
645
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
646
646
|
"since": "2025-01-01"
|
|
647
647
|
},
|
|
648
648
|
"route-group:evolution": {
|
|
@@ -650,7 +650,7 @@
|
|
|
650
650
|
"type": "route-group",
|
|
651
651
|
"domain": "evolution",
|
|
652
652
|
"sourcePath": "src/server/routes.ts",
|
|
653
|
-
"contentHash": "
|
|
653
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
654
654
|
"since": "2025-01-01"
|
|
655
655
|
},
|
|
656
656
|
"route-group:watchdog": {
|
|
@@ -658,7 +658,7 @@
|
|
|
658
658
|
"type": "route-group",
|
|
659
659
|
"domain": "monitoring",
|
|
660
660
|
"sourcePath": "src/server/routes.ts",
|
|
661
|
-
"contentHash": "
|
|
661
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
662
662
|
"since": "2025-01-01"
|
|
663
663
|
},
|
|
664
664
|
"route-group:topic-memory": {
|
|
@@ -666,7 +666,7 @@
|
|
|
666
666
|
"type": "route-group",
|
|
667
667
|
"domain": "memory",
|
|
668
668
|
"sourcePath": "src/server/routes.ts",
|
|
669
|
-
"contentHash": "
|
|
669
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
670
670
|
"since": "2025-01-01"
|
|
671
671
|
},
|
|
672
672
|
"route-group:state-sync": {
|
|
@@ -674,7 +674,7 @@
|
|
|
674
674
|
"type": "route-group",
|
|
675
675
|
"domain": "coordination",
|
|
676
676
|
"sourcePath": "src/server/routes.ts",
|
|
677
|
-
"contentHash": "
|
|
677
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
678
678
|
"since": "2025-01-01"
|
|
679
679
|
},
|
|
680
680
|
"route-group:intent": {
|
|
@@ -682,7 +682,7 @@
|
|
|
682
682
|
"type": "route-group",
|
|
683
683
|
"domain": "intent",
|
|
684
684
|
"sourcePath": "src/server/routes.ts",
|
|
685
|
-
"contentHash": "
|
|
685
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
686
686
|
"since": "2025-01-01"
|
|
687
687
|
},
|
|
688
688
|
"route-group:triage": {
|
|
@@ -690,7 +690,7 @@
|
|
|
690
690
|
"type": "route-group",
|
|
691
691
|
"domain": "safety",
|
|
692
692
|
"sourcePath": "src/server/routes.ts",
|
|
693
|
-
"contentHash": "
|
|
693
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
694
694
|
"since": "2025-01-01"
|
|
695
695
|
},
|
|
696
696
|
"route-group:operations": {
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
"type": "route-group",
|
|
699
699
|
"domain": "safety",
|
|
700
700
|
"sourcePath": "src/server/routes.ts",
|
|
701
|
-
"contentHash": "
|
|
701
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
702
702
|
"since": "2025-01-01"
|
|
703
703
|
},
|
|
704
704
|
"route-group:sentinel": {
|
|
@@ -706,7 +706,7 @@
|
|
|
706
706
|
"type": "route-group",
|
|
707
707
|
"domain": "safety",
|
|
708
708
|
"sourcePath": "src/server/routes.ts",
|
|
709
|
-
"contentHash": "
|
|
709
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
710
710
|
"since": "2025-01-01"
|
|
711
711
|
},
|
|
712
712
|
"route-group:trust": {
|
|
@@ -714,7 +714,7 @@
|
|
|
714
714
|
"type": "route-group",
|
|
715
715
|
"domain": "safety",
|
|
716
716
|
"sourcePath": "src/server/routes.ts",
|
|
717
|
-
"contentHash": "
|
|
717
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
718
718
|
"since": "2025-01-01"
|
|
719
719
|
},
|
|
720
720
|
"route-group:monitoring": {
|
|
@@ -722,7 +722,7 @@
|
|
|
722
722
|
"type": "route-group",
|
|
723
723
|
"domain": "monitoring",
|
|
724
724
|
"sourcePath": "src/server/routes.ts",
|
|
725
|
-
"contentHash": "
|
|
725
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
726
726
|
"since": "2025-01-01"
|
|
727
727
|
},
|
|
728
728
|
"route-group:commitments": {
|
|
@@ -730,7 +730,7 @@
|
|
|
730
730
|
"type": "route-group",
|
|
731
731
|
"domain": "commitments",
|
|
732
732
|
"sourcePath": "src/server/routes.ts",
|
|
733
|
-
"contentHash": "
|
|
733
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
734
734
|
"since": "2025-01-01"
|
|
735
735
|
},
|
|
736
736
|
"route-group:episodes": {
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
"type": "route-group",
|
|
739
739
|
"domain": "memory",
|
|
740
740
|
"sourcePath": "src/server/routes.ts",
|
|
741
|
-
"contentHash": "
|
|
741
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
742
742
|
"since": "2025-01-01"
|
|
743
743
|
},
|
|
744
744
|
"route-group:messages": {
|
|
@@ -746,7 +746,7 @@
|
|
|
746
746
|
"type": "route-group",
|
|
747
747
|
"domain": "coordination",
|
|
748
748
|
"sourcePath": "src/server/routes.ts",
|
|
749
|
-
"contentHash": "
|
|
749
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
750
750
|
"since": "2025-01-01"
|
|
751
751
|
},
|
|
752
752
|
"route-group:system-reviews": {
|
|
@@ -754,7 +754,7 @@
|
|
|
754
754
|
"type": "route-group",
|
|
755
755
|
"domain": "monitoring",
|
|
756
756
|
"sourcePath": "src/server/routes.ts",
|
|
757
|
-
"contentHash": "
|
|
757
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
758
758
|
"since": "2025-01-01"
|
|
759
759
|
},
|
|
760
760
|
"route-group:machine-mesh": {
|
|
@@ -770,7 +770,7 @@
|
|
|
770
770
|
"type": "route-group",
|
|
771
771
|
"domain": "security",
|
|
772
772
|
"sourcePath": "src/server/routes.ts",
|
|
773
|
-
"contentHash": "
|
|
773
|
+
"contentHash": "fb6b78b207ab5bebff38e4a238bf65e1e9b91a6df1c0bbbced46d2867d4ce915",
|
|
774
774
|
"since": "2025-01-01"
|
|
775
775
|
},
|
|
776
776
|
"cli:init": {
|
|
@@ -1498,7 +1498,7 @@
|
|
|
1498
1498
|
"type": "subsystem",
|
|
1499
1499
|
"domain": "server",
|
|
1500
1500
|
"sourcePath": "src/server/AgentServer.ts",
|
|
1501
|
-
"contentHash": "
|
|
1501
|
+
"contentHash": "e72905d8a8de5d22c7cedb5c599f9341f61ac9139f65f32bde7011a1c5202ef7",
|
|
1502
1502
|
"since": "2025-01-01"
|
|
1503
1503
|
},
|
|
1504
1504
|
"subsystem:session-manager": {
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Wires the Gemini multi-turn loop-driver engine (`need-gem-002`, increment 1,
|
|
9
|
+
already merged) into a real, budget-gated, **dark** capability — so the Gemini
|
|
10
|
+
mentee can be handed a goal it works across turns instead of one reply.
|
|
11
|
+
|
|
12
|
+
- `geminiLoopProduction.ts` — the production dependencies: a subscription-auth
|
|
13
|
+
spawn (routes through the billing-env-stripping gemini transport, so no run can
|
|
14
|
+
introduce an API key), a `gemini --list-sessions` handle parser that picks the
|
|
15
|
+
freshest session by age, and a budget gate that reuses the existing QuotaTracker
|
|
16
|
+
spawn-admission signal (fails open if no tracker).
|
|
17
|
+
- `GeminiLoopRunner` — a multi-turn run can take minutes, so `POST` ADMITS a run
|
|
18
|
+
(enabled? under the concurrency cap? budget open?) and returns a `runId`
|
|
19
|
+
immediately; the loop runs in the background and the result lands in a bounded
|
|
20
|
+
in-memory registry.
|
|
21
|
+
- Routes `POST /gemini-loop/runs` + `GET /gemini-loop/runs[/:id]`.
|
|
22
|
+
- Config `autonomousSessions.geminiLoopDriver` (`enabled`, `model`, `maxTurns`
|
|
23
|
+
default 12, `minTurnIntervalMs`, `maxConcurrent` default 1, `turnTimeoutMs`).
|
|
24
|
+
|
|
25
|
+
Ships **dark** behind `autonomousSessions.geminiLoopDriver.enabled` (default
|
|
26
|
+
`false`); the `developmentAgent` gate turns it on for development agents only.
|
|
27
|
+
Rollback = set the flag `false` (instant, no redeploy). Subscription auth is
|
|
28
|
+
structural. 21 new tests across all three tiers (unit + integration route + e2e
|
|
29
|
+
alive + wired-source check). Spec: `docs/specs/gemini-multi-turn-loop-driver.md`.
|
|
30
|
+
|
|
31
|
+
**The Parallel-Work overlap councilor can now actually run.** The previous change shipped the
|
|
32
|
+
detector and the sentinel as tested library code; this wires the `ParallelWorkSentinel` into
|
|
33
|
+
the server so it ticks on a cadence over the cross-topic activity index, spots when two of
|
|
34
|
+
your topics are working on the same thing, and nudges you once — with a cooldown so it never
|
|
35
|
+
re-nags. It is signal-only and never gates.
|
|
36
|
+
|
|
37
|
+
It ships **dark**: off by default behind `monitoring.parallelWorkSentinel.enabled`. A
|
|
38
|
+
false-positive nudge is worse than silence, so it graduates only after it is shown to be
|
|
39
|
+
quiet. When on, it scans every ~15 minutes, audits every transition to
|
|
40
|
+
`logs/sentinel-events.jsonl`, and the timer is unref'd + cleaned up on shutdown.
|
|
41
|
+
|
|
42
|
+
## What to Tell Your User
|
|
43
|
+
|
|
44
|
+
On development agents I can now be handed a multi-step task for the Gemini side
|
|
45
|
+
and work it across several turns on my own — on subscription login, never an API
|
|
46
|
+
key — with a hard turn cap and a spend gate so it can't run away. On every other
|
|
47
|
+
agent it ships turned off, so nothing changes there. This is the capability the
|
|
48
|
+
apprenticeship program needed so the Gemini mentee can do real multi-step work
|
|
49
|
+
instead of stopping after one reply.
|
|
50
|
+
|
|
51
|
+
Optional: if your agent works across many topics and you want it to proactively notice when
|
|
52
|
+
two topics are doing the same work, you can turn on the overlap councilor in your monitoring
|
|
53
|
+
config. It is off by default and only ever sends a gentle heads-up -- it never blocks anything.
|
|
54
|
+
|
|
55
|
+
## Summary of New Capabilities
|
|
56
|
+
|
|
57
|
+
- `monitoring.parallelWorkSentinel.enabled` (default false, ships dark) +
|
|
58
|
+
`cadenceMinutes` (default 15) — turns on and tunes the proactive overlap councilor.
|
|
59
|
+
- The `ParallelWorkSentinel` is now constructed + cadenced in the server when enabled, with
|
|
60
|
+
every transition audited to `logs/sentinel-events.jsonl`.
|
|
61
|
+
|
|
62
|
+
## Evidence
|
|
63
|
+
|
|
64
|
+
- Wiring-integrity test (Testing Integrity Standard): boots the real AgentServer and asserts
|
|
65
|
+
the sentinel is NOT constructed when the flag is off (ships dark) and IS constructed +
|
|
66
|
+
ticks when the flag is on. tsc clean.
|
|
67
|
+
- The detector + sentinel logic is already covered by 17 unit tests (shipped with the
|
|
68
|
+
prior change); this change only turns them on.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
The automated mentor-onboarding tick now records a keystone
|
|
9
|
+
`mentor-mentee-differential` apprenticeship **cycle** each run (in addition to the
|
|
10
|
+
existing per-finding ledger capture) — the structural version of the manual
|
|
11
|
+
differential-oversight loop. The mentee's Stage-A transcript becomes the cycle's
|
|
12
|
+
`menteeOutput`; the forensics findings become the `overseerDifferential`.
|
|
13
|
+
|
|
14
|
+
It is wired via a new optional `recordCycle` injected into `runMentorTick` and
|
|
15
|
+
`MentorOnboardingRunner`, and a new `mentor.apprenticeshipInstanceId` config field.
|
|
16
|
+
`AgentServer.buildMentorRunner` resolves it to the ApprenticeshipCycleStore only
|
|
17
|
+
when that instance id is set — so it is **opt-in and a no-op by default**
|
|
18
|
+
(back-compat). This makes the automated loop fire the keystone axis the program's
|
|
19
|
+
role-coverage drift-warning watches, instead of only the easy finding-capture path.
|
|
20
|
+
|
|
21
|
+
Fixed the production **agent-to-agent (Threadline) continuity break**: a live
|
|
22
|
+
Echo↔Dawn round-trip proved that every peer-to-peer follow-up message was being
|
|
23
|
+
handled by a fresh, memoryless session (2 Spawned / 0 Resumed on a single thread)
|
|
24
|
+
instead of the session already in the conversation — the "crowd of fragments
|
|
25
|
+
wearing my name" incoherence.
|
|
26
|
+
|
|
27
|
+
Root cause funnels through one guard. `ThreadResumeMap.get()`
|
|
28
|
+
(`src/threadline/ThreadResumeMap.ts`) nulled the entire resume entry whenever the
|
|
29
|
+
session transcript JSONL was absent — and for relay/pipe-spawned A2A sessions the
|
|
30
|
+
uuid is a spawn-time placeholder that never gets upgraded, so the guard discarded
|
|
31
|
+
the entry (including the still-valid live `sessionName`) on every follow-up. With
|
|
32
|
+
a null entry, `ThreadlineRouter.handleInboundMessage` skips the already-built
|
|
33
|
+
`tryInjectIntoLiveSession` + `resumeThread` machinery and cold-spawns.
|
|
34
|
+
|
|
35
|
+
The fix has two parts. **(1)** When the transcript is absent, `get()` now returns
|
|
36
|
+
the entry anyway **if its tmux session is still alive** (new protected
|
|
37
|
+
`sessionAlive()`, exact-match `tmux has-session -t =name`), so the follow-up routes
|
|
38
|
+
into the running session (live-inject, or a resume that carries the conversation
|
|
39
|
+
history) — no transcript needed. Dead session + no transcript still nulls (resume
|
|
40
|
+
guard intact); topic-bound + pinned exemptions unchanged. **(2)** Part 1 was inert
|
|
41
|
+
without the real session name: `spawnNewThread` recorded the resume entry's
|
|
42
|
+
`sessionName` from the spawn result, but the `spawnSession` callback only returned
|
|
43
|
+
the bare instar session id, so a useless fallback name was stored that
|
|
44
|
+
`sessionAlive()`/`getBySessionName` could never match. The callback contract now
|
|
45
|
+
returns `string | { sessionId, tmuxSession }` (back-compatible);
|
|
46
|
+
`SpawnRequestManager.evaluate` forwards the real tmux name through to the entry. Also lands the `WarmSessionPool`
|
|
47
|
+
(`src/threadline/WarmSessionPool.ts`) per-peer warm-session registry (caps + TTL +
|
|
48
|
+
LRU) — the tested foundation for the follow-up that keeps A2A sessions warm so
|
|
49
|
+
follow-ups inject even after the first reply completes.
|
|
50
|
+
|
|
51
|
+
1511 threadline unit tests pass; tsc clean. Tier-1 (ELI16 +
|
|
52
|
+
side-effects artifact).
|
|
53
|
+
|
|
54
|
+
## What to Tell Your User
|
|
55
|
+
|
|
56
|
+
Nothing changes by default. When I'm running an automated mentorship for a
|
|
57
|
+
configured apprenticeship instance, the loop now records proper differential cycles
|
|
58
|
+
on its own — the same keystone cycles I capture by hand — so the program can see
|
|
59
|
+
the real mentor↔mentee work, not just logged findings.
|
|
60
|
+
|
|
61
|
+
When another agent talks to me across several messages in a row, I now stay one
|
|
62
|
+
coherent conversation instead of answering each message as if I'd never seen the
|
|
63
|
+
earlier ones. This is the foundation the agent-to-agent collaboration (and the
|
|
64
|
+
upcoming feedback-process work) relies on. It's an internal robustness fix — there
|
|
65
|
+
is nothing to turn on, and it doesn't change how I talk to you directly.
|
|
66
|
+
|
|
67
|
+
## Summary of New Capabilities
|
|
68
|
+
|
|
69
|
+
- **Threadline A2A continuity:** agent-to-agent threads stay coherent across rapid
|
|
70
|
+
follow-ups — a follow-up now injects into the session already handling the thread
|
|
71
|
+
instead of cold-spawning a fresh, memoryless one.
|
|
72
|
+
- **WarmSessionPool foundation:** a per-peer warm-session registry (caps + TTL +
|
|
73
|
+
LRU) lands as the tested groundwork for keeping A2A sessions warm.
|
|
74
|
+
|
|
75
|
+
## Evidence
|
|
76
|
+
|
|
77
|
+
Reproduced on this machine, before/after.
|
|
78
|
+
|
|
79
|
+
**Before (live Echo↔Dawn round-trip, 2026-06-04 ~01:55Z):** sent Dawn one opener on
|
|
80
|
+
a fresh non-topic thread `echo-dawn-continuity-20260604`; her inbound replies
|
|
81
|
+
produced — in `logs/server.log` — `2× [relay] Spawned session`, `0× Resumed
|
|
82
|
+
session`, `1× Spawn denied: Cooldown`. The resume-map never gained an entry for the
|
|
83
|
+
thread; every follow-up cold-spawned a memoryless session (a parallel relay-spawn
|
|
84
|
+
even answered Dawn with "No previous history available").
|
|
85
|
+
|
|
86
|
+
**After (integration test against REAL tmux —
|
|
87
|
+
`tests/integration/threadline-live-inject-real-tmux.test.ts`, 2026-06-04):** with a
|
|
88
|
+
placeholder uuid (no transcript) on a non-topic thread —
|
|
89
|
+
- while a real tmux session of that name is **alive** → `get()` returns the entry,
|
|
90
|
+
so `ThreadlineRouter.tryInjectIntoLiveSession` is reachable (was: null →
|
|
91
|
+
cold-spawn). ✓
|
|
92
|
+
- after the tmux session is **killed** → `get()` returns null (resume guard intact;
|
|
93
|
+
dead session → cold-spawn). ✓
|
|
94
|
+
|
|
95
|
+
The end-to-end live Dawn round-trip showing `Injected`/`Resumed` instead of
|
|
96
|
+
`Spawned` runs post-deploy (Echo auto-updates on this release).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Mentor tick records keystone cycles — explained simply
|
|
2
|
+
|
|
3
|
+
When the automated mentor job runs a "tick" (it watches the mentee, gathers
|
|
4
|
+
findings), it used to log those findings to one place — but it never recorded a
|
|
5
|
+
proper "cycle" of the mentorship the way the apprenticeship program tracks them.
|
|
6
|
+
|
|
7
|
+
That mattered because the program's #1 failure mode is "role drift": the easy work
|
|
8
|
+
gets logged, but the actual keystone — the mentor↔mentee differential — quietly
|
|
9
|
+
never gets exercised. The manual loop I run by hand records those keystone cycles;
|
|
10
|
+
the automated job didn't.
|
|
11
|
+
|
|
12
|
+
This change wires the automated tick to ALSO record a real
|
|
13
|
+
`mentor-mentee-differential` cycle each time: the mentee's output becomes the
|
|
14
|
+
cycle's menteeOutput, the forensics findings become the differential. It only
|
|
15
|
+
does this when an apprenticeship instance is configured (a new
|
|
16
|
+
`mentor.apprenticeshipInstanceId` setting) — so by default nothing changes; it's
|
|
17
|
+
opt-in. Now the automated loop fires the same keystone axis the manual loop does,
|
|
18
|
+
which is the structural fix for that drift.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Side-Effects Review — Gemini loop-driver wiring (need-gem-002, increment 2)
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `gemini-loop-driver-wiring`
|
|
4
|
+
**Date:** `2026-06-04`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required` (ships DARK behind
|
|
7
|
+
`autonomousSessions.geminiLoopDriver.enabled`; the developmentAgent gate turns it
|
|
8
|
+
on for dev agents only; rollback = flag false, instant)
|
|
9
|
+
|
|
10
|
+
## Summary of the change
|
|
11
|
+
|
|
12
|
+
Wires the (already-merged, increment 1) `GeminiLoopDriver` engine into a real,
|
|
13
|
+
budget-gated, dark capability:
|
|
14
|
+
- `geminiLoopProduction.ts` — production deps: the subscription-auth spawn
|
|
15
|
+
(`createGeminiLoopSpawn` → the billing-env-stripping transport), the
|
|
16
|
+
`--list-sessions` handle parser (`parseLatestGeminiSessionHandle`, min-age), and
|
|
17
|
+
the QuotaTracker-backed budget gate (`createQuotaBudgetGate`).
|
|
18
|
+
- `GeminiLoopRunner.ts` — admits + launches runs async (a loop can take minutes,
|
|
19
|
+
so a run returns a `runId` immediately) into a bounded in-memory registry.
|
|
20
|
+
- Routes `POST /gemini-loop/runs` (admit) + `GET /gemini-loop/runs[/:id]` (poll).
|
|
21
|
+
- `server.ts` constructs it under the developmentAgent gate; `types.ts` adds
|
|
22
|
+
`autonomousSessions.geminiLoopDriver`.
|
|
23
|
+
|
|
24
|
+
## Decision-point inventory
|
|
25
|
+
|
|
26
|
+
Admission has four refusal boundaries (disabled / at-capacity / budget / invalid)
|
|
27
|
+
plus the OK path; the handle parser picks min-age or null; the budget gate maps
|
|
28
|
+
the QuotaTracker signal (fail-open with no tracker). All covered both-sides
|
|
29
|
+
across the unit/integration suites.
|
|
30
|
+
|
|
31
|
+
## 1. Over-block
|
|
32
|
+
|
|
33
|
+
**What legitimate inputs does this change reject?** Nothing on the fleet — it
|
|
34
|
+
ships dark (disabled → POST returns 409 'disabled'). When enabled: a closed budget
|
|
35
|
+
gate refuses to start (intended — the overspend guard), `maxConcurrent: 1` refuses
|
|
36
|
+
a 2nd concurrent run (intended — keeps shared-cwd handle capture unambiguous), and
|
|
37
|
+
an empty goal is 400. A requested `maxTurns` is clamped DOWN to the config cap, never
|
|
38
|
+
up. These are all the guardrails, not false rejections.
|
|
39
|
+
|
|
40
|
+
## 2. Under-block
|
|
41
|
+
|
|
42
|
+
**What does this still miss?** Handle capture uses the shared process cwd, so it is
|
|
43
|
+
only unambiguous at `maxConcurrent: 1` (a per-loop cwd needs a transport `cwd`
|
|
44
|
+
option — deferred; documented in the spec risks). The runner does not persist runs
|
|
45
|
+
across a restart (in-memory registry — acceptable for a dev dark feature; a SQLite
|
|
46
|
+
store is a later increment if it graduates). A 429/capacity wall ends a turn via
|
|
47
|
+
the engine's spawn-failure path rather than a graceful gemini-capacity-policy
|
|
48
|
+
pause (noted as a refinement). A mentee that finishes silently (no sentinel) runs
|
|
49
|
+
to the turn cap rather than an LLM-judge early-exit (judge = a later increment).
|
|
50
|
+
|
|
51
|
+
## 3. Level-of-abstraction fit
|
|
52
|
+
|
|
53
|
+
**Right layer?** Yes. Production deps live in `monitoring/` beside the engine and
|
|
54
|
+
depend only on the gemini transport (subscription-auth guarantee stays in the
|
|
55
|
+
transport, reused not re-implemented). The runner is constructed beside the other
|
|
56
|
+
dark monitoring features in `server.ts` under the same `developmentAgent` gate
|
|
57
|
+
pattern, and threads through the existing `AgentServer` options → `RouteContext`
|
|
58
|
+
plumbing (mirrors `mcpProcessReaper`). The budget gate reuses the existing
|
|
59
|
+
QuotaTracker spawn-admission decision rather than inventing new accounting.
|