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.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +40 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +23 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +86 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +56 -2
- package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
- package/dist/monitoring/ActiveWorkSilenceSentinel.js +174 -10
- package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
- package/dist/monitoring/PromiseBeacon.d.ts +48 -0
- package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
- package/dist/monitoring/PromiseBeacon.js +186 -41
- package/dist/monitoring/PromiseBeacon.js.map +1 -1
- package/dist/monitoring/SubagentTracker.d.ts +9 -0
- package/dist/monitoring/SubagentTracker.d.ts.map +1 -1
- package/dist/monitoring/SubagentTracker.js +11 -0
- package/dist/monitoring/SubagentTracker.js.map +1 -1
- package/dist/monitoring/sentinelWiring.d.ts +20 -1
- package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
- package/dist/monitoring/sentinelWiring.js +26 -0
- package/dist/monitoring/sentinelWiring.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +7 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/scaffold/templates.ts +7 -0
- package/upgrades/1.3.526.md +83 -0
- 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,
|
|
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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -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;
|