instar 1.3.525 → 1.3.526

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.
Files changed (34) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +40 -4
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +23 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +86 -0
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +56 -2
  12. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
  13. package/dist/monitoring/ActiveWorkSilenceSentinel.js +174 -10
  14. package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
  15. package/dist/monitoring/PromiseBeacon.d.ts +48 -0
  16. package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
  17. package/dist/monitoring/PromiseBeacon.js +186 -41
  18. package/dist/monitoring/PromiseBeacon.js.map +1 -1
  19. package/dist/monitoring/SubagentTracker.d.ts +9 -0
  20. package/dist/monitoring/SubagentTracker.d.ts.map +1 -1
  21. package/dist/monitoring/SubagentTracker.js +11 -0
  22. package/dist/monitoring/SubagentTracker.js.map +1 -1
  23. package/dist/monitoring/sentinelWiring.d.ts +20 -1
  24. package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
  25. package/dist/monitoring/sentinelWiring.js +26 -0
  26. package/dist/monitoring/sentinelWiring.js.map +1 -1
  27. package/dist/scaffold/templates.d.ts.map +1 -1
  28. package/dist/scaffold/templates.js +7 -0
  29. package/dist/scaffold/templates.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/data/builtin-manifest.json +19 -19
  32. package/src/scaffold/templates.ts +7 -0
  33. package/upgrades/1.3.526.md +83 -0
  34. package/upgrades/side-effects/honest-progress-messaging.md +150 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAm1CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAo7ZtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiH7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAm1CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA69ZtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
@@ -7760,6 +7760,13 @@ export async function startServer(options) {
7760
7760
  // consolidated message to the existing system topic. No new-topic-per-event.
7761
7761
  // Spec: docs/specs/silently-stopped-trio.md.
7762
7762
  //
7763
+ // Subagent Tracker — monitors subagent lifecycle via hook events. Constructed
7764
+ // BEFORE the silently-stopped trio block so ActiveWorkSilenceSentinel's
7765
+ // corroboration (HONEST-PROGRESS-MESSAGING A2 — "is a sub-agent live?") can be
7766
+ // wired into it (it was previously built after the trio block).
7767
+ const { SubagentTracker } = await import('../monitoring/SubagentTracker.js');
7768
+ const subagentTracker = new SubagentTracker({ stateDir: config.stateDir });
7769
+ console.log(pc.green(' Subagent tracker enabled'));
7763
7770
  // Captured out of the trio block so the SessionReaper's recovery veto can
7764
7771
  // compose socket + silence in too (SESSION-REAPER-SPEC §4 "compose, don't
7765
7772
  // replace"). undefined when the corresponding sentinel is disabled.
@@ -7859,6 +7866,28 @@ export async function startServer(options) {
7859
7866
  return result.ok;
7860
7867
  }
7861
7868
  : undefined,
7869
+ // HONEST-PROGRESS-MESSAGING A1/A2 — corroborate before claiming a
7870
+ // session is stuck: re-capture the live frame, check it isn't still
7871
+ // generating, and check no sub-agent is live. The whole path fails
7872
+ // closed inside the sentinel (FD-6).
7873
+ captureFrame: (name) => sessionSurface.captureOutput(name, 60),
7874
+ frameworkForSession: (name) => sessionManager.frameworkForSession(name),
7875
+ hasActiveSubagents: (name) => {
7876
+ const csid = sessionManager
7877
+ .listRunningSessions()
7878
+ .find((s) => s.tmuxSession === name)?.claudeSessionId;
7879
+ return csid ? subagentTracker.hasActiveSubagents(csid) : false;
7880
+ },
7881
+ // Observability (E) — funnel events to the sentinel-events.jsonl audit
7882
+ // trail via the notifier, mapped onto its kind enum.
7883
+ recordEvent: (event, name, detail) => {
7884
+ const kind = event.startsWith('suppressed')
7885
+ ? 'escalation-suppressed'
7886
+ : event.startsWith('escalated')
7887
+ ? 'escalation-sent'
7888
+ : 'detected';
7889
+ notifier.record(kind, 'active-silence', name, detail ? `${event}: ${detail}` : event);
7890
+ },
7862
7891
  }), silenceCfg);
7863
7892
  silenceSentinel.on('silence', (e) => notifier.record('detected', 'active-silence', e.sessionName, `idleMs=${e.idleMs}`));
7864
7893
  silenceSentinel.on('recovered', (n) => notifier.record('recovered', 'active-silence', n));
@@ -7982,10 +8011,6 @@ export async function startServer(options) {
7982
8011
  compactionSentinel.report(sessionName, triggerLabel || 'recovery-hook');
7983
8012
  return Promise.resolve(true);
7984
8013
  };
7985
- // Subagent Tracker — monitors subagent lifecycle via hook events
7986
- const { SubagentTracker } = await import('../monitoring/SubagentTracker.js');
7987
- const subagentTracker = new SubagentTracker({ stateDir: config.stateDir });
7988
- console.log(pc.green(' Subagent tracker enabled'));
7989
8014
  // Helper Watchdog — detects subagent stalls and rate-limit failures,
7990
8015
  // surfacing them back into the parent session's stdin so the agent
7991
8016
  // can decide whether to retry smaller. Complements SessionWatchdog,
@@ -8841,6 +8866,9 @@ export async function startServer(options) {
8841
8866
  // Spec: docs/specs/PROMISE-BEACON-SPEC.md
8842
8867
  try {
8843
8868
  const { PromiseBeacon } = await import('../monitoring/PromiseBeacon.js');
8869
+ // HONEST-PROGRESS-MESSAGING B2 — strict "generating now" detector for
8870
+ // the beacon's turn-finished close-out (live spinner / esc-to-interrupt).
8871
+ const { looksGeneratingNow: _beaconLooksGeneratingNow } = await import('../monitoring/sentinelWiring.js');
8844
8872
  // ── Escalation deps (PROMISE-BEACON-ESCALATION-SPEC §3–§5) ────────
8845
8873
  // Dark-ship: enabled resolves via the developmentAgent gate; dryRun
8846
8874
  // defaults true so the dark→live promotion is evidence-gated (§5).
@@ -8968,6 +8996,14 @@ export async function startServer(options) {
8968
8996
  sentinelAutoEnable: promiseBeaconCfg.sentinelAutoEnable ?? false,
8969
8997
  quietHours: promiseBeaconCfg.quietHours ?? { start: '22:00', end: '08:00' },
8970
8998
  maxActiveBeacons: promiseBeaconCfg.maxActiveBeacons ?? 20,
8999
+ // HONEST-PROGRESS-MESSAGING B1/B1b/B2 — silent-unless-true defaults.
9000
+ // Each reads from config (operator opt-out / tuning); undefined leaves
9001
+ // the beacon's own defaults (suppress on, 60m liveness, N=3 close-out).
9002
+ suppressUnchangedHeartbeats: promiseBeaconCfg.suppressUnchangedHeartbeats,
9003
+ beaconLivenessIntervalMs: promiseBeaconCfg.beaconLivenessIntervalMs,
9004
+ turnFinishedCloseoutChecks: promiseBeaconCfg.turnFinishedCloseoutChecks,
9005
+ // B2 turn-finished detection — "is the session still generating now?"
9006
+ looksActivelyWorking: (frame, name) => _beaconLooksGeneratingNow(frame, sessionManager.frameworkForSession(name)),
8971
9007
  });
8972
9008
  promiseBeacon.start();
8973
9009
  globalThis.__instarPromiseBeacon = promiseBeacon;