instar 1.3.78 → 1.3.80
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/core/AutoUpdater.d.ts +16 -0
- package/dist/core/AutoUpdater.d.ts.map +1 -1
- package/dist/core/AutoUpdater.js +78 -6
- package/dist/core/AutoUpdater.js.map +1 -1
- package/dist/core/UpdateGate.d.ts +11 -0
- package/dist/core/UpdateGate.d.ts.map +1 -1
- package/dist/core/UpdateGate.js +17 -0
- package/dist/core/UpdateGate.js.map +1 -1
- package/dist/monitoring/MentorStageA.d.ts +65 -0
- package/dist/monitoring/MentorStageA.d.ts.map +1 -1
- package/dist/monitoring/MentorStageA.js +117 -0
- package/dist/monitoring/MentorStageA.js.map +1 -1
- package/dist/scheduler/MentorOnboardingRunner.d.ts +9 -0
- package/dist/scheduler/MentorOnboardingRunner.d.ts.map +1 -1
- package/dist/scheduler/MentorOnboardingRunner.js.map +1 -1
- package/dist/server/AgentServer.d.ts +17 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +72 -2
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +12 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +48 -48
- package/upgrades/1.3.79.md +33 -0
- package/upgrades/1.3.80.md +35 -0
- package/upgrades/side-effects/auto-updater-restart-activation-visibility.md +93 -0
- package/upgrades/side-effects/mentor-active-task-driving.md +75 -0
- package/upgrades/side-effects/mentor-stagea-full-exchange-surface.md +90 -0
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-29T09:40:56.624Z",
|
|
5
|
+
"instarVersion": "1.3.80",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
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": "ebfff1d513782dbd9f087ba44305986336e4daa3c0c5ee0a70ccf9a2bbacb4bd",
|
|
765
765
|
"since": "2025-01-01"
|
|
766
766
|
},
|
|
767
767
|
"cli:init": {
|
|
@@ -1457,7 +1457,7 @@
|
|
|
1457
1457
|
"type": "subsystem",
|
|
1458
1458
|
"domain": "server",
|
|
1459
1459
|
"sourcePath": "src/server/AgentServer.ts",
|
|
1460
|
-
"contentHash": "
|
|
1460
|
+
"contentHash": "5841418da3e9385c441f0158bc5375025dc0f39bf9ae0b4f14c2bdb7d526bf1b",
|
|
1461
1461
|
"since": "2025-01-01"
|
|
1462
1462
|
},
|
|
1463
1463
|
"subsystem:session-manager": {
|
|
@@ -1473,7 +1473,7 @@
|
|
|
1473
1473
|
"type": "subsystem",
|
|
1474
1474
|
"domain": "updates",
|
|
1475
1475
|
"sourcePath": "src/core/AutoUpdater.ts",
|
|
1476
|
-
"contentHash": "
|
|
1476
|
+
"contentHash": "bf97e19c12e7ce6ce21c69b49bdd94edebc155e5be2f16e38933a0067f41b3f5",
|
|
1477
1477
|
"since": "2025-01-01"
|
|
1478
1478
|
},
|
|
1479
1479
|
"subsystem:auto-dispatcher": {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Instar Upgrade Guide — NEXT
|
|
2
|
+
|
|
3
|
+
<!-- bump: patch -->
|
|
4
|
+
|
|
5
|
+
## What Changed
|
|
6
|
+
|
|
7
|
+
**The Framework-Onboarding Mentor can now actively drive a mentee through a concrete onboarding agenda — instead of only passive "how's it going?" check-ins. Ships dark (opt-in).**
|
|
8
|
+
|
|
9
|
+
Grounded in the live Codey dogfooding run (topic 13435): the high-signal interactions were the ones where the human handed Codey concrete tasks (capability checks + real dev work); passive check-ins on an idle mentee were low-signal ("nothing to do"). Two gaps were found and fixed:
|
|
10
|
+
|
|
11
|
+
1. **The mentor's Stage-A surface builder (`getSurface`) was a stub** returning an empty surface, so the mentor was blind — it could only ever choose `observe-only` or emit a generic message, despite the `assign-next` action already in its repertoire.
|
|
12
|
+
2. **No backlog** of concrete onboarding tasks to assign.
|
|
13
|
+
|
|
14
|
+
The change adds an optional `onboardingAgenda` (the mentor's own ordered list of next tasks) to `MentorConfig` and the Stage-A surface, includes it in the leak-check surface (so assigning an agenda task is not flagged as peeking at internals), and replaces the stub with a real surface built from the mentee's recent replies (`mentor-replies.jsonl`, parsed defensively) plus the agenda. When the mentee is idle and the agenda has uncovered items, the mentor hands over the next concrete task; if the mentee is mid-task, blocked, or asked something, it still waits / unblocks / answers.
|
|
15
|
+
|
|
16
|
+
**Double-gated dark:** the mentor is off by default (`mentor.enabled:false`/`mode:'off'`), and the agenda is empty by default — so even an enabled mentor keeps today's passive behaviour until an operator sets `mentor.onboardingAgenda`. Shipped as a conservative patch (no major.minor boundary crossing → no lifeline-restart churn) because it is dormant until opted in. Known limitation, flagged for a follow-up: the surface feeds the mentee's replies but not the mentor's own prior prompts (their content isn't logged yet), so agenda rotation is inferred from the mentee's replies.
|
|
17
|
+
|
|
18
|
+
## What to Tell Your User
|
|
19
|
+
|
|
20
|
+
Nothing changes unless you turn it on. The optional onboarding mentor — the piece that can shepherd a newly-onboarded agent through learning the system — used to only manage vague check-ins, because it was effectively handed a blank page about what the new agent was doing. It now gets a real picture (the new agent's recent replies) and can be given an onboarding to-do list, so it hands over concrete next tasks instead of hollow check-ins. The mentor stays off by default, and even once enabled it behaves exactly as before until you give it a to-do list. If you want the mentor to proactively walk a new agent through specific capabilities, that is now possible — just ask and I can set it up.
|
|
21
|
+
|
|
22
|
+
## Summary of New Capabilities
|
|
23
|
+
|
|
24
|
+
| Capability | How to Use |
|
|
25
|
+
|-----------|-----------|
|
|
26
|
+
| Mentor onboarding agenda (active task-driving) | Set `mentor.onboardingAgenda` to an ordered list of task descriptions in `.instar/config.json`. When the mentor is enabled and the mentee is idle, it assigns the next uncovered item via `assign-next` instead of `observe-only`. Empty/unset → unchanged passive behaviour. |
|
|
27
|
+
|
|
28
|
+
## Evidence
|
|
29
|
+
|
|
30
|
+
- Unit: `tests/unit/MentorStageA.test.ts` — agenda block present/absent in `buildStageAContext`; agenda counted as surface-legitimate so assigning it is not a leak; `buildConversationSurface` formats mentee replies into history, caps to most-recent N, computes time-since-last-contact, sets agenda only when non-empty; `parseMenteeReplies` skips blank/garbage/empty-message lines, coerces `ts`, filters to the named mentee, never throws. All 43 mentor unit tests (MentorStageA + Tick + Runner) pass; full build green.
|
|
31
|
+
- Live origin: the Codey dogfooding run — passive observe-only on an idle mentee was low-signal; active task-driving (the human assigning concrete tasks) was where every real issue surfaced.
|
|
32
|
+
|
|
33
|
+
Spec: `docs/specs/FRAMEWORK-ONBOARDING-MENTOR-SPEC.md` (2026-05-29 amendment — in-scope; ships dark per the spec's graduated-rollout framing).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Instar Upgrade Guide — NEXT
|
|
2
|
+
|
|
3
|
+
<!-- bump: patch -->
|
|
4
|
+
|
|
5
|
+
## What Changed
|
|
6
|
+
|
|
7
|
+
Two changes that merged after v1.3.79 and are released together here.
|
|
8
|
+
|
|
9
|
+
**1. AutoUpdater: recurring jobs no longer block restart activation, and the deferral is now visible (#514).**
|
|
10
|
+
|
|
11
|
+
The AutoUpdater pulls a new version into the shadow-install on its normal cadence (~30-min check + 5-min coalesce), but ACTIVATING it requires a server restart, and the restart gate would defer indefinitely while any "healthy" session existed — including recurring background jobs that perpetually re-appear as active. The result: an always-busy agent kept running the old version with the fix sitting unused on disk. This narrows the blocker set: a background job session (one with a `jobSlug`) no longer blocks restart when `SessionManager.hasActiveProcesses(tmuxSession)` — the existing process-tree ground truth — reports no non-baseline work. Mid-execution jobs still block (they finish first), and if the safety check is unavailable the job still blocks (conservative). Interactive user sessions are deliberately unchanged — whether an update may interrupt a live user session is a separate policy decision and is NOT relaxed here. The restart-deferral state (target version, first-deferred time, reason, current blockers, next retry) is now persisted and surfaced on authenticated `/health` and `/updates/status`, so "installed but not active" is no longer invisible.
|
|
12
|
+
|
|
13
|
+
**2. Mentor Stage-A surface now includes the mentor's own prior prompts (#515), completing the active-task-driving feature (#513).**
|
|
14
|
+
|
|
15
|
+
v1.3.79 gave the Framework-Onboarding Mentor an onboarding agenda and a real Stage-A surface, but that surface only contained the mentee's replies — not the mentor's own prior prompts (their content wasn't logged anywhere). So the mentor inferred "what have I already assigned?" only from replies. Now, when the mentor successfully delivers a prompt, its content is appended to `mentor-sent.jsonl`, and the Stage-A surface builder interleaves the mentor's prompts and the mentee's replies chronologically into a real two-sided "Mentor: … / Mentee: …" exchange. The mentor now sees the full conversation and rotates its agenda correctly. Still ships dark (the mentor is off by default and the agenda is empty by default).
|
|
16
|
+
|
|
17
|
+
## What to Tell Your User
|
|
18
|
+
|
|
19
|
+
Two under-the-hood improvements, no action needed. First: when your agent has a fix waiting to install, recurring background jobs no longer keep it from applying that fix on its next safe restart, and you can now see on the health page when an agent has an update installed but not yet active (and why). Interactive sessions are untouched — an update still won't interrupt a live conversation. Second: the optional onboarding mentor (off by default) now sees both sides of its conversation with a new agent, so if you ever turn it on it keeps better track of what it has already walked the agent through. Nothing changes unless you enable the mentor.
|
|
20
|
+
|
|
21
|
+
## Summary of New Capabilities
|
|
22
|
+
|
|
23
|
+
| Capability | How to Use |
|
|
24
|
+
|-----------|-----------|
|
|
25
|
+
| Restart-deferral visibility | Automatic. `GET /health` and `GET /updates/status` now include a `restartDeferral` object (target version, first-deferred time, reason, blockers, next retry) when an installed update is waiting on a restart. |
|
|
26
|
+
| Recurring jobs don't block restart | Automatic. A background job session no longer blocks update-restart activation when its process tree is idle; mid-execution jobs and interactive sessions still block. |
|
|
27
|
+
| Mentor full two-sided surface | Automatic when the mentor is enabled. The mentor logs its own prompts to `mentor-sent.jsonl` and interleaves them with mentee replies in the Stage-A surface, so agenda rotation reflects the real exchange. |
|
|
28
|
+
|
|
29
|
+
## Evidence
|
|
30
|
+
|
|
31
|
+
- #514: `tests/unit/UpdateGate.test.ts` + `AutoUpdater.test.ts` cover safe-idle-job de-counting, mid-execution/interactive conservatism, and persisted+surfaced deferral state; `tests/unit/server.test.ts` covers the `/health` + `/updates/status` output.
|
|
32
|
+
- #515: `tests/unit/MentorStageA.test.ts` covers `parseMentorSent` (defensive parsing) and the chronological interleave of mentor prompts + mentee replies into the surface, with backward-compatible `buildConversationSurface` signature.
|
|
33
|
+
- Both shipped through the full instar-dev gate; live fleet recovery of the prior token-ledger fixes (1.3.77/1.3.78) was observed on monroe/indra (/tokens 503→200 after restart onto the released fix).
|
|
34
|
+
|
|
35
|
+
Specs: `docs/specs/auto-updater-restart-activation-visibility.md` (#514), `docs/specs/mentor-stagea-full-exchange-surface.md` (#515), `docs/specs/FRAMEWORK-ONBOARDING-MENTOR-SPEC.md` (the 2026-05-29 active-task-driving amendment).
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Side-Effects Review — AutoUpdater restart activation visibility
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `auto-updater-restart-activation-visibility`
|
|
4
|
+
**Date:** `2026-05-29`
|
|
5
|
+
**Author:** `instar-codey`
|
|
6
|
+
**Second-pass reviewer:** `Justin review requested in PR`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
This change narrows AutoUpdater restart blockers and makes activation waits observable. `src/core/UpdateGate.ts` now ignores a running job session only when it has a `jobSlug`, a tmux session name, and `SessionManager.hasActiveProcesses(tmuxSession)` says no real non-baseline process is running. `src/core/AutoUpdater.ts` persists a restart-wait object with target version, first wait time, reason, blockers, next retry, and updated time. `src/server/routes.ts` surfaces that object on authenticated `/health` and `/updates/status`. Tests cover safe idle jobs, active jobs, interactive session conservatism, AutoUpdater state persistence, and health output.
|
|
11
|
+
|
|
12
|
+
## Decision-point inventory
|
|
13
|
+
|
|
14
|
+
- `UpdateGate.canRestart` — modify — decides whether an update-driven server restart can proceed now or must wait.
|
|
15
|
+
- `AutoUpdater.gatedRestart` — modify — records and clears restart-wait state around the existing restart decision.
|
|
16
|
+
- `GET /health` and `GET /updates/status` — modify — surface restart-wait state; no blocking authority.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Over-block
|
|
21
|
+
|
|
22
|
+
The main remaining over-block is intentional: interactive sessions still block when the monitor reports them healthy, even if a process-tree check would say no active child work. Justin explicitly held the bounded restart policy for interactive sessions, so this PR does not relax that path. Background job sessions also still block when `hasActiveProcesses` is unavailable or fails, because the safe-idle proof is missing.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Under-block
|
|
27
|
+
|
|
28
|
+
A background job could be incorrectly treated as idle if `hasActiveProcesses` misses a real work process. That risk already exists anywhere the process-tree ground truth is used, but this PR limits reliance to sessions that are explicitly job-spawned and still fails closed when the method is unavailable. A job that is about to start work but has not spawned a non-baseline child yet may be restarted; that is acceptable for the requested "idle/between-runs" class and no different from restarting before a scheduled job fires.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 3. Level-of-abstraction fit
|
|
33
|
+
|
|
34
|
+
The restart decision belongs in `UpdateGate`, which is already the authority for update-driven restart gating. This change does not add a parallel gate. It feeds the existing authority a stronger low-level signal: the already-established process-tree active-work check. AutoUpdater owns persistence and user/operator visibility, so persisting `restartDeferral` there is the right layer.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 4. Signal vs authority compliance
|
|
39
|
+
|
|
40
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
41
|
+
|
|
42
|
+
- [x] No — this change produces a signal consumed by an existing smart gate.
|
|
43
|
+
- [ ] No — this change has no block/allow surface.
|
|
44
|
+
- [ ] Yes — but the logic is a smart gate with full conversational context (LLM-backed with recent history or equivalent).
|
|
45
|
+
- [ ] Yes, with brittle logic — STOP. Reshape the design. Brittle detectors must not own block authority.
|
|
46
|
+
|
|
47
|
+
`hasActiveProcesses` is a detector-like primitive, but it does not become a standalone blocker or allower. Its output is consumed by the existing restart authority in `UpdateGate`, and only for job sessions where the distinction between idle and executing is mechanically meaningful.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 5. Interactions
|
|
52
|
+
|
|
53
|
+
- **Shadowing:** The safe-idle job check runs before session-health classification, but only for `jobSlug` sessions with process-tree proof. It does not shadow interactive session health.
|
|
54
|
+
- **Double-fire:** Persisting `restartDeferral` writes the same AutoUpdater state file already used for updater state. It does not write restart-requested signals and cannot trigger a restart by itself.
|
|
55
|
+
- **Races:** The persisted restart-wait object is best-effort observability. If a retry fires while status is being read, readers may see the previous `nextRetryAt` until the next state save; this is acceptable and self-correcting.
|
|
56
|
+
- **Feedback loops:** The old "already applied" loop guard remains. The log/notification language now distinguishes intentional restart waits from generic activation lag, reducing false manual-restart diagnoses.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 6. External surfaces
|
|
61
|
+
|
|
62
|
+
Authenticated `/health`, `/updates/status`, and `/updates/auto` now expose additive `restartDeferral` fields. Existing callers that ignore unknown fields continue to work. The state file gains an additive `restartDeferral` object; older versions ignore it. Other agents benefit after update activation because idle background jobs stop holding restarts forever, but active user sessions remain protected.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 7. Rollback cost
|
|
67
|
+
|
|
68
|
+
Rollback is a hot-fix release that reverts the code and tests. No database migration or state repair is needed. The only persistent addition is JSON in `state/auto-updater.json`; leaving it behind is harmless because older code ignores unknown fields.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Conclusion
|
|
73
|
+
|
|
74
|
+
The change is narrow and matches the approved scope: safe background-job de-counting plus restart-wait observability. The design explicitly avoids the held interactive-session policy and keeps restart authority centralized in `UpdateGate`. Clear to ship for PR review.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Second-pass review (if required)
|
|
79
|
+
|
|
80
|
+
**Reviewer:** Justin review requested in PR
|
|
81
|
+
**Independent read of the artifact: pending external review**
|
|
82
|
+
|
|
83
|
+
This touches restart gating, so the PR is intentionally opened for Justin review before merge. I did not implement the held interactive-session restart policy.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Evidence pointers
|
|
88
|
+
|
|
89
|
+
- `npm test -- --run tests/unit/UpdateGate.test.ts tests/unit/AutoUpdater.test.ts tests/unit/server.test.ts`
|
|
90
|
+
- `npm run lint`
|
|
91
|
+
- `npm run build`
|
|
92
|
+
- `npm run check:upgrade-guide`
|
|
93
|
+
- `node scripts/instar-dev-precommit.js`
|