instar 1.3.524 → 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 (64) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +77 -5
  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/ConflictStore.d.ts +150 -0
  8. package/dist/core/ConflictStore.d.ts.map +1 -0
  9. package/dist/core/ConflictStore.js +247 -0
  10. package/dist/core/ConflictStore.js.map +1 -0
  11. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  12. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  13. package/dist/core/PostUpdateMigrator.js +116 -0
  14. package/dist/core/PostUpdateMigrator.js.map +1 -1
  15. package/dist/core/ReplicatedStoreReader.d.ts +83 -0
  16. package/dist/core/ReplicatedStoreReader.d.ts.map +1 -0
  17. package/dist/core/ReplicatedStoreReader.js +100 -0
  18. package/dist/core/ReplicatedStoreReader.js.map +1 -0
  19. package/dist/core/ReplicationBudget.d.ts +183 -0
  20. package/dist/core/ReplicationBudget.d.ts.map +1 -0
  21. package/dist/core/ReplicationBudget.js +253 -0
  22. package/dist/core/ReplicationBudget.js.map +1 -0
  23. package/dist/core/RollbackUnmerge.d.ts +134 -0
  24. package/dist/core/RollbackUnmerge.d.ts.map +1 -0
  25. package/dist/core/RollbackUnmerge.js +286 -0
  26. package/dist/core/RollbackUnmerge.js.map +1 -0
  27. package/dist/core/UnionReader.d.ts +161 -0
  28. package/dist/core/UnionReader.d.ts.map +1 -0
  29. package/dist/core/UnionReader.js +0 -0
  30. package/dist/core/UnionReader.js.map +1 -0
  31. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +56 -2
  32. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
  33. package/dist/monitoring/ActiveWorkSilenceSentinel.js +174 -10
  34. package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
  35. package/dist/monitoring/PromiseBeacon.d.ts +48 -0
  36. package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
  37. package/dist/monitoring/PromiseBeacon.js +186 -41
  38. package/dist/monitoring/PromiseBeacon.js.map +1 -1
  39. package/dist/monitoring/SubagentTracker.d.ts +9 -0
  40. package/dist/monitoring/SubagentTracker.d.ts.map +1 -1
  41. package/dist/monitoring/SubagentTracker.js +11 -0
  42. package/dist/monitoring/SubagentTracker.js.map +1 -1
  43. package/dist/monitoring/sentinelWiring.d.ts +20 -1
  44. package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
  45. package/dist/monitoring/sentinelWiring.js +26 -0
  46. package/dist/monitoring/sentinelWiring.js.map +1 -1
  47. package/dist/scaffold/templates.d.ts.map +1 -1
  48. package/dist/scaffold/templates.js +13 -0
  49. package/dist/scaffold/templates.js.map +1 -1
  50. package/dist/server/AgentServer.d.ts +7 -0
  51. package/dist/server/AgentServer.d.ts.map +1 -1
  52. package/dist/server/AgentServer.js +3 -0
  53. package/dist/server/AgentServer.js.map +1 -1
  54. package/dist/server/routes.d.ts +10 -0
  55. package/dist/server/routes.d.ts.map +1 -1
  56. package/dist/server/routes.js +67 -0
  57. package/dist/server/routes.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/data/builtin-manifest.json +64 -64
  60. package/src/scaffold/templates.ts +13 -0
  61. package/upgrades/1.3.525.md +32 -0
  62. package/upgrades/1.3.526.md +83 -0
  63. package/upgrades/side-effects/hlc-step4-5-union-rollback-bounds.md +148 -0
  64. package/upgrades/side-effects/honest-progress-messaging.md +150 -0
@@ -23,7 +23,9 @@
23
23
  * via the notify path. No new blocking authority.
24
24
  */
25
25
  import { EventEmitter } from 'node:events';
26
- export type SilenceStatus = 'detected' | 'nudged' | 'recovered' | 'recovering' | 'recovery-failed' | 'escalated';
26
+ export type SilenceStatus = 'detected' | 'nudged' | 'recovered' | 'recovering' | 'recovery-failed' | 'suppressed-active' | 'escalated';
27
+ /** Observability funnel events (HONEST-PROGRESS-MESSAGING E). */
28
+ export type SilenceFunnelEvent = 'detected' | 'suppressed_active_indicator' | 'suppressed_subagent_live' | 'suppressed_corroborate_error' | 'escalated_indeterminate' | 'escalated_frozen_indicator' | 'escalated_legacy';
27
29
  export interface SilenceState {
28
30
  sessionName: string;
29
31
  detectedAt: number;
@@ -33,6 +35,13 @@ export interface SilenceState {
33
35
  /** Auto-recovery (respawn) attempts made for this stall episode. Bounded by
34
36
  * maxAutoRecoveries to prevent a respawn-loop on a session that stays stuck. */
35
37
  recoveryAttempts: number;
38
+ /** A1/A5: when escalation was suppressed because the live frame still showed an
39
+ * active-work indicator, the wall-clock the suppression began AND the frozen
40
+ * frame's hash. If the SAME frame stays byte-identical past
41
+ * activeWorkMaxFrozenIndicatorMs, A5 escalates (a frozen-indicator hang).
42
+ * Reset whenever the frame changes (genuine progress). */
43
+ activeFrozenSince?: number;
44
+ activeFrozenHash?: string;
36
45
  }
37
46
  export interface SessionRegistryEntry {
38
47
  sessionName: string;
@@ -57,6 +66,27 @@ export interface ActiveWorkSilenceSentinelDeps {
57
66
  * ask-the-user escalation. DESTRUCTIVE (discards in-context work), so it only
58
67
  * runs after the nudge fails AND is bounded by maxAutoRecoveries. */
59
68
  recoverFn?: (sessionName: string) => Promise<boolean>;
69
+ /** Capture the session's CURRENT live tmux frame (HONEST-PROGRESS-MESSAGING
70
+ * A1/A2). Used to corroborate a wedge before escalating. When absent, the
71
+ * sentinel keeps its legacy behavior (escalate on threshold+nudge, no
72
+ * corroboration) — back-compat for callers that don't wire it. */
73
+ captureFrame?: (sessionName: string) => string | null;
74
+ /** Does this live frame still show an active-work indicator (spinner / "esc to
75
+ * interrupt" / "(running)")? Wired to looksActivelyWorking(). A1: if true, the
76
+ * session is in an active turn — suppress, never escalate. */
77
+ looksActivelyWorking?: (frame: string, sessionName: string) => boolean;
78
+ /** Is this live frame a clean idle prompt (turn finished, waiting for input)?
79
+ * A2(b): a clean idle prompt is NOT a wedge — only an indeterminate non-prompt
80
+ * frame is. When absent, the indeterminate check degrades to "no active-work
81
+ * indicator" alone. */
82
+ isCleanIdlePrompt?: (frame: string, sessionName: string) => boolean;
83
+ /** Does the session have a live sub-agent (SubagentTracker, no stoppedAt)?
84
+ * A2(c): a session whose sub-agent is mid-work is not wedged — suppress. */
85
+ hasActiveSubagents?: (sessionName: string) => boolean;
86
+ /** Observability hook (HONEST-PROGRESS-MESSAGING E). Records a funnel event so
87
+ * the suppressed-vs-escalated rates are auditable. Never throws into the
88
+ * sentinel; best-effort. */
89
+ recordEvent?: (event: SilenceFunnelEvent, sessionName: string, detail?: string) => void;
60
90
  /** Override Date.now for tests. */
61
91
  now?: () => number;
62
92
  /** Override timer setters for tests. */
@@ -67,10 +97,19 @@ export interface ActiveWorkSilenceSentinelConfig {
67
97
  enabled?: boolean;
68
98
  /** Tick interval — how often we walk the registry (ms). Default 60s. */
69
99
  tickIntervalMs?: number;
70
- /** Silence threshold — output gap that triggers detection (ms). Default 15m. */
100
+ /** Silence threshold — output gap that triggers detection (ms). Default 30m
101
+ * (HONEST-PROGRESS-MESSAGING A4 — raised from 15m; with A1/A2 corroboration
102
+ * this collapses the false-positive rate without missing a genuine wedge). */
71
103
  silenceThresholdMs?: number;
72
104
  /** Verify window — how long after nudge before declaring escalate (ms). Default 30s. */
73
105
  verifyWindowMs?: number;
106
+ /** Frozen-indicator hard timeout (HONEST-PROGRESS-MESSAGING A5). A1 suppresses
107
+ * escalation whenever the live frame still shows an active-work indicator —
108
+ * which would permanently hide a genuine hang that froze mid-tool with the
109
+ * indicator still on screen. Backstop: if a frame WITH an active-work
110
+ * indicator stays byte-identical this long, escalate once with an extra-hedged
111
+ * message. Default 90m. */
112
+ activeWorkMaxFrozenIndicatorMs?: number;
74
113
  /** Auto-recover (respawn) a stalled session after the nudge fails, instead of
75
114
  * only asking the user. DARK by default — destructive (discards in-context
76
115
  * work), so opt-in. When off, behaviour is unchanged (nudge → ask). */
@@ -100,7 +139,22 @@ export declare class ActiveWorkSilenceSentinel extends EventEmitter {
100
139
  clear(sessionName: string): void;
101
140
  private runNudge;
102
141
  private verifyNudge;
142
+ /**
143
+ * Corroboration gate (HONEST-PROGRESS-MESSAGING A1/A2/A5). Before claiming a
144
+ * session is stuck, re-capture its LIVE frame and prove it really is wedged —
145
+ * a static scrollback on a session that is mid-tool, mid-sub-agent, or just
146
+ * finished is NOT a freeze. The whole path FAILS CLOSED (FD-6): any error
147
+ * suppresses the escalation rather than risk a false "it's stuck" claim.
148
+ */
103
149
  private escalate;
150
+ /** Mark a session as suppressed-active and (re)stamp the frozen-frame timer.
151
+ * A changed frame hash resets the A5 timer (genuine progress within the turn). */
152
+ private markSuppressedActive;
153
+ /** The autoRecover-or-ask escalation, reached only after corroboration (or in
154
+ * the legacy no-capture path). */
155
+ private proceedEscalation;
156
+ /** A3 honest wording — evidence + uncertainty, never an asserted conclusion. */
157
+ private honestAskMessage;
104
158
  /**
105
159
  * Auto-recovery ladder (dark by default): notify in the stalled session's own
106
160
  * topic, respawn it, then notify the outcome. Bounded by maxAutoRecoveries
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveWorkSilenceSentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActiveWorkSilenceSentinel.d.ts","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"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"}
@@ -26,8 +26,9 @@ import { EventEmitter } from 'node:events';
26
26
  const DEFAULT_CONFIG = {
27
27
  enabled: true,
28
28
  tickIntervalMs: 60_000,
29
- silenceThresholdMs: 15 * 60_000,
29
+ silenceThresholdMs: 30 * 60_000,
30
30
  verifyWindowMs: 30_000,
31
+ activeWorkMaxFrozenIndicatorMs: 90 * 60_000,
31
32
  autoRecover: false,
32
33
  maxAutoRecoveries: 1,
33
34
  };
@@ -67,6 +68,7 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
67
68
  this.lastTickAt = Date.now();
68
69
  const now = (this.deps.now ?? Date.now)();
69
70
  const sessions = this.deps.listSessions();
71
+ const pastThreshold = new Set();
70
72
  for (const s of sessions) {
71
73
  if (s.paused || s.recoveryInFlight)
72
74
  continue;
@@ -76,11 +78,28 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
76
78
  const idleMs = now - s.lastOutputAt;
77
79
  if (idleMs < this.cfg.silenceThresholdMs)
78
80
  continue;
81
+ pastThreshold.add(s.sessionName);
79
82
  const existing = this.states.get(s.sessionName);
80
- if (existing)
81
- continue; // already handling
83
+ if (existing) {
84
+ // A1/A5 (HONEST-PROGRESS-MESSAGING): a session whose escalation was
85
+ // suppressed because it still looked actively working is re-evaluated
86
+ // every tick — so A5's frozen-indicator timeout can eventually fire and
87
+ // a turn that finishes mid-suppression gets re-judged as a real wedge.
88
+ if (existing.status === 'suppressed-active')
89
+ void this.escalate(s.sessionName);
90
+ continue; // any other status: already handling
91
+ }
82
92
  this.report(s.sessionName, s.lastOutputAt);
83
93
  }
94
+ // A suppressed-active session that is no longer past the silence threshold
95
+ // (its frame changed → genuine progress, or it ended) is cleared so the map
96
+ // can't leak and the session is monitored fresh.
97
+ for (const [name, st] of this.states) {
98
+ if (st.status === 'suppressed-active' && !pastThreshold.has(name)) {
99
+ this.clear(name);
100
+ this.emit('recovered', name);
101
+ }
102
+ }
84
103
  }
85
104
  /** Public entry: report a silence finding. Idempotent. */
86
105
  report(sessionName, lastOutputAt) {
@@ -130,8 +149,8 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
130
149
  accepted = false;
131
150
  }
132
151
  if (!accepted) {
133
- // Couldn't even nudge — escalate immediately.
134
- this.escalate(sessionName);
152
+ // Couldn't even nudge — escalate immediately (corroborated inside escalate).
153
+ void this.escalate(sessionName);
135
154
  return;
136
155
  }
137
156
  const handle = this.setTimer(() => this.verifyNudge(sessionName), this.cfg.verifyWindowMs);
@@ -155,9 +174,129 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
155
174
  this.clear(sessionName);
156
175
  return;
157
176
  }
158
- this.escalate(sessionName);
177
+ void this.escalate(sessionName);
178
+ }
179
+ /**
180
+ * Corroboration gate (HONEST-PROGRESS-MESSAGING A1/A2/A5). Before claiming a
181
+ * session is stuck, re-capture its LIVE frame and prove it really is wedged —
182
+ * a static scrollback on a session that is mid-tool, mid-sub-agent, or just
183
+ * finished is NOT a freeze. The whole path FAILS CLOSED (FD-6): any error
184
+ * suppresses the escalation rather than risk a false "it's stuck" claim.
185
+ */
186
+ async escalate(sessionName) {
187
+ const state = this.states.get(sessionName);
188
+ if (!state)
189
+ return;
190
+ // Legacy path: no live-frame capture wired → keep the original behavior but
191
+ // with the honest A3 wording. Corroboration is unavailable, so escalate on
192
+ // threshold + failed-nudge as before.
193
+ if (!this.deps.captureFrame) {
194
+ this.deps.recordEvent?.('escalated_legacy', sessionName);
195
+ this.proceedEscalation(sessionName, this.honestAskMessage(sessionName));
196
+ return;
197
+ }
198
+ let frame;
199
+ try {
200
+ frame = this.deps.captureFrame(sessionName);
201
+ }
202
+ catch (err) {
203
+ // FD-6 — capture threw: unreliable evidence, suppress + re-arm.
204
+ this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, String(err));
205
+ this.markSuppressedActive(state, undefined);
206
+ return;
207
+ }
208
+ if (!frame) {
209
+ // No frame to judge → fail closed (suppress + re-arm).
210
+ this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, 'empty-frame');
211
+ this.markSuppressedActive(state, undefined);
212
+ return;
213
+ }
214
+ let activelyWorking = false;
215
+ try {
216
+ activelyWorking = this.deps.looksActivelyWorking?.(frame, sessionName) ?? false;
217
+ }
218
+ catch (err) {
219
+ this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, String(err));
220
+ this.markSuppressedActive(state, undefined);
221
+ return;
222
+ }
223
+ // A1 + A5: the live frame still shows an active-work indicator → in an active
224
+ // turn (a long task), NOT a freeze. Suppress — unless the SAME frame has been
225
+ // byte-identical past the frozen-indicator timeout, the rare genuine hang.
226
+ if (activelyWorking) {
227
+ const hash = cheapHash(frame);
228
+ const now = (this.deps.now ?? Date.now)();
229
+ const frozenLongEnough = state.activeFrozenHash === hash &&
230
+ state.activeFrozenSince != null &&
231
+ now - state.activeFrozenSince >= this.cfg.activeWorkMaxFrozenIndicatorMs;
232
+ if (frozenLongEnough) {
233
+ this.deps.recordEvent?.('escalated_frozen_indicator', sessionName);
234
+ state.status = 'escalated';
235
+ const minutes = Math.max(1, Math.round(this.cfg.activeWorkMaxFrozenIndicatorMs / 60_000));
236
+ void this.notify(sessionName, `${friendlyName(sessionName)} has shown the same "working" frame for ${minutes} min with zero change — could be a long task, or a hang that froze mid-step. Worth a look?`);
237
+ this.emit('escalated', sessionName);
238
+ return;
239
+ }
240
+ // Still working (or the frozen-frame timer hasn't elapsed) → suppress.
241
+ this.markSuppressedActive(state, hash);
242
+ this.deps.recordEvent?.('suppressed_active_indicator', sessionName);
243
+ return;
244
+ }
245
+ // A2(c): a live sub-agent means the session is mid-work, not wedged. Suppress.
246
+ let subagentLive = false;
247
+ try {
248
+ subagentLive = this.deps.hasActiveSubagents?.(sessionName) ?? false;
249
+ }
250
+ catch {
251
+ // A failing tracker read is unreliable evidence → fail closed (suppress).
252
+ this.deps.recordEvent?.('suppressed_corroborate_error', sessionName, 'subagent-check-threw');
253
+ this.markSuppressedActive(state, undefined);
254
+ return;
255
+ }
256
+ if (subagentLive) {
257
+ this.markSuppressedActive(state, undefined);
258
+ this.deps.recordEvent?.('suppressed_subagent_live', sessionName);
259
+ return;
260
+ }
261
+ // A2(b): a clean idle prompt is a finished/idle turn, not a wedge. Drop the
262
+ // episode silently (the tracker's paused flag normally catches this; the live
263
+ // frame is the authority).
264
+ let cleanIdle = false;
265
+ try {
266
+ cleanIdle = this.deps.isCleanIdlePrompt?.(frame, sessionName) ?? false;
267
+ }
268
+ catch {
269
+ cleanIdle = false;
270
+ }
271
+ if (cleanIdle) {
272
+ this.clear(sessionName);
273
+ this.emit('recovered', sessionName);
274
+ return;
275
+ }
276
+ // Corroborated wedge: no active-work indicator, no live sub-agent, and the
277
+ // frame is in an indeterminate non-prompt state. This is a genuine freeze.
278
+ this.deps.recordEvent?.('escalated_indeterminate', sessionName);
279
+ this.proceedEscalation(sessionName, this.honestAskMessage(sessionName));
280
+ }
281
+ /** Mark a session as suppressed-active and (re)stamp the frozen-frame timer.
282
+ * A changed frame hash resets the A5 timer (genuine progress within the turn). */
283
+ markSuppressedActive(state, frameHash) {
284
+ const now = (this.deps.now ?? Date.now)();
285
+ if (frameHash != null && state.activeFrozenHash !== frameHash) {
286
+ state.activeFrozenHash = frameHash;
287
+ state.activeFrozenSince = now;
288
+ }
289
+ else if (frameHash == null) {
290
+ // Couldn't hash the frame (error path) — don't arm A5 on bad evidence.
291
+ state.activeFrozenHash = undefined;
292
+ state.activeFrozenSince = undefined;
293
+ } // else: same hash → keep the existing activeFrozenSince so A5 can elapse.
294
+ state.status = 'suppressed-active';
295
+ this.emit('suppressed-active', state.sessionName);
159
296
  }
160
- escalate(sessionName) {
297
+ /** The autoRecover-or-ask escalation, reached only after corroboration (or in
298
+ * the legacy no-capture path). */
299
+ proceedEscalation(sessionName, askText) {
161
300
  const state = this.states.get(sessionName);
162
301
  if (!state)
163
302
  return;
@@ -171,10 +310,16 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
171
310
  return;
172
311
  }
173
312
  state.status = 'escalated';
174
- const minutes = Math.max(1, Math.round(((this.deps.now ?? Date.now)() - state.lastOutputAtAtDetection) / 60_000));
175
- void this.notify(sessionName, `${friendlyName(sessionName)} was working and went quiet about ${minutes} minutes ago. I tried a gentle nudge and nothing came back. Want me to dig in?`);
313
+ void this.notify(sessionName, askText);
176
314
  this.emit('escalated', sessionName);
177
315
  }
316
+ /** A3 honest wording — evidence + uncertainty, never an asserted conclusion. */
317
+ honestAskMessage(sessionName) {
318
+ const state = this.states.get(sessionName);
319
+ const base = state?.lastOutputAtAtDetection ?? (this.deps.now ?? Date.now)();
320
+ const minutes = Math.max(1, Math.round(((this.deps.now ?? Date.now)() - base) / 60_000));
321
+ return `${friendlyName(sessionName)}'s screen hasn't changed in ${minutes} min and a nudge didn't wake it — it may be stuck, or on a long task I can't see into. Want me to check?`;
322
+ }
178
323
  /**
179
324
  * Auto-recovery ladder (dark by default): notify in the stalled session's own
180
325
  * topic, respawn it, then notify the outcome. Bounded by maxAutoRecoveries
@@ -234,6 +379,25 @@ export class ActiveWorkSilenceSentinel extends EventEmitter {
234
379
  }
235
380
  }
236
381
  function friendlyName(sessionName) {
237
- return sessionName.replace(/^ai\.instar\./, '').replace(/-server$/, '').replace(/-lifeline$/, '');
382
+ const stripped = sessionName
383
+ .replace(/^ai\.instar\./, '')
384
+ .replace(/-server$/, '')
385
+ .replace(/-lifeline$/, '');
386
+ // FD-7 (HONEST-PROGRESS-MESSAGING): the name is embedded in a user-facing
387
+ // message — clamp to a safe charset so a crafted tmux session name can't inject
388
+ // markdown/control characters into the escalation text. Session names are
389
+ // already alphanumeric/dash/dot by construction; this is defense-in-depth.
390
+ const safe = stripped.replace(/[^A-Za-z0-9._-]/g, '');
391
+ return safe.length > 0 ? safe : 'a session';
392
+ }
393
+ /** FNV-1a — enough to detect that a captured live frame changed byte-for-byte
394
+ * (A5 frozen-indicator timer). Not security-sensitive. */
395
+ function cheapHash(s) {
396
+ let h = 0x811c9dc5;
397
+ for (let i = 0; i < s.length; i++) {
398
+ h ^= s.charCodeAt(i);
399
+ h = Math.imul(h, 0x01000193);
400
+ }
401
+ return (h >>> 0).toString(16);
238
402
  }
239
403
  //# sourceMappingURL=ActiveWorkSilenceSentinel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveWorkSilenceSentinel.js","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActiveWorkSilenceSentinel.js","sourceRoot":"","sources":["../../src/monitoring/ActiveWorkSilenceSentinel.ts"],"names":[],"mappings":"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"}
@@ -83,6 +83,33 @@ export interface PromiseBeaconConfig {
83
83
  * Default 4.
84
84
  */
85
85
  defaultAutoPauseAfterUnchanged?: number;
86
+ /**
87
+ * HONEST-PROGRESS-MESSAGING B1 — when the tmux snapshot is UNCHANGED, send
88
+ * nothing (the "still on it, no new output" line carried zero information and
89
+ * was the user's #1 noise complaint). The unchanged-count is still tracked for
90
+ * atRisk/auto-pause accounting; only the message is withheld. The beacon still
91
+ * speaks on genuine new output, atRisk, close-out, a deadline (B1a), or a
92
+ * sparse liveness tick (B1b). Default `true`; set `false` to restore the old
93
+ * every-tick templated heartbeat (rollback path). */
94
+ suppressUnchangedHeartbeats?: boolean;
95
+ /**
96
+ * HONEST-PROGRESS-MESSAGING B1b — sparse liveness. When unchanged heartbeats
97
+ * are suppressed, a genuinely long task would otherwise go fully dark. At most
98
+ * ONE "still watching, N min in" line is emitted per this interval while a
99
+ * session is still present and its turn is not finished. Default 60m. */
100
+ beaconLivenessIntervalMs?: number;
101
+ /**
102
+ * HONEST-PROGRESS-MESSAGING B2 / FD-1 — turn-finished close-out. When the
103
+ * session's live frame shows a finished/idle turn (no active-work indicator)
104
+ * for this many consecutive checks, the beacon emits ONE close-out prompt and
105
+ * auto-pauses (no clockwork heartbeats into a finished room). Default 3
106
+ * (≈60m at 20m cadence — rules out a momentary prompt-like frame mid-task). */
107
+ turnFinishedCloseoutChecks?: number;
108
+ /**
109
+ * HONEST-PROGRESS-MESSAGING B2 — detector for "is this session still actively
110
+ * working?" (wired to looksActivelyWorking on the live frame). When absent,
111
+ * turn-finished close-out is inactive (degrades safely). */
112
+ looksActivelyWorking?: (frame: string, sessionName: string) => boolean;
86
113
  /**
87
114
  * When set, a commitment whose owning session has died is ESCALATED (revive →
88
115
  * honest status → loud give-up) instead of being silently terminalized to
@@ -178,6 +205,27 @@ export declare class PromiseBeacon extends EventEmitter {
178
205
  * `pending`. Resume re-arms via the `resumed` event handler.
179
206
  */
180
207
  private autoPause;
208
+ /**
209
+ * B1a (HONEST-PROGRESS-MESSAGING) — deadline-pressure exception. Total silence
210
+ * near a hard deadline is itself dishonest. When the commitment's hard deadline
211
+ * is within 2× the effective cadence, an unchanged tick still speaks with a
212
+ * low-confidence, honest line. Returns null when there is no deadline pressure.
213
+ */
214
+ private deadlinePressureLine;
215
+ /**
216
+ * B1b (HONEST-PROGRESS-MESSAGING) — sparse liveness. When unchanged heartbeats
217
+ * are suppressed, a genuinely long task would go fully dark. Emit at most one
218
+ * "still watching, N min in" line per beaconLivenessIntervalMs while a session
219
+ * is present. Returns null when a liveness line isn't due yet.
220
+ */
221
+ private maybeLivenessLine;
222
+ /**
223
+ * B2 (HONEST-PROGRESS-MESSAGING) — turn-finished close-out. The promise's
224
+ * session has wrapped its turn; emit ONE honest close-out prompt and auto-pause
225
+ * (no clockwork heartbeats into a finished room). Non-terminal: status stays
226
+ * `pending`; resume re-arms via the `resumed` handler.
227
+ */
228
+ private closeOutTurnFinished;
181
229
  private suppress;
182
230
  /** Exponential backoff floor between Rung-1 attempts (I1). */
183
231
  private escBackoffMs;
@@ -1 +1 @@
1
- {"version":3,"file":"PromiseBeacon.d.ts","sourceRoot":"","sources":["../../src/monitoring/PromiseBeacon.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IAGnC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7E,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAClE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,EAAE,CACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAGpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,sBAAsB,EAAE,eAAe,CAAC;IACjE,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAGxC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9D,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE;AAED,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,YAAY,GACZ,eAAe,GACf,UAAU,GACV,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,mBAAmB,CAAC;CAC7F;AA0HD,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAyD;IACvE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,8BAA8B,CAAS;IAE/C,OAAO,CAAC,GAAG,CAAwG;IACnH,oDAAoD;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAK;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,gBAAgB,CAAK;IAC7B,6EAA6E;IAC7E,OAAO,CAAC,0BAA0B,CAAqB;gBAE3C,MAAM,EAAE,mBAAmB;IA8BvC,gGAAgG;IAChG,iBAAiB,IAAI;QACnB,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;KAC/E;IASD,KAAK,IAAI,IAAI;IA6Db,IAAI,IAAI,IAAI;IAQZ,6EAA6E;IAC7E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB,qEAAqE;IACrE,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IA2B7B,8CAA8C;IACxC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgNrC;;;;;OAKG;YACW,SAAS;YA4BT,QAAQ;IAuBtB,8DAA8D;IAC9D,OAAO,CAAC,YAAY;IAKpB,0EAA0E;IAC1E,OAAO,CAAC,WAAW;IAQnB,iFAAiF;IACjF,OAAO,CAAC,QAAQ;IAWhB;;;OAGG;YACW,QAAQ;IA0FtB,qEAAqE;IACrE,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;YACW,eAAe;IA4D7B,4EAA4E;YAC9D,KAAK;IAuCnB,oFAAoF;YACtE,KAAK;IAiBnB,sFAAsF;IACtF,iBAAiB,IAAI,IAAI;YAEX,kBAAkB;IAkBhC,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,YAAY;IASpB,qBAAqB;IACrB,eAAe,IAAI,MAAM,EAAE;CAG5B"}
1
+ {"version":3,"file":"PromiseBeacon.d.ts","sourceRoot":"","sources":["../../src/monitoring/PromiseBeacon.ts"],"names":[],"mappings":"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"}