instar 1.3.376 → 1.3.377

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.
@@ -78,6 +78,12 @@ export interface SessionMonitorDeps {
78
78
  }>;
79
79
  /** Optional mechanical recovery layer — runs before LLM triage */
80
80
  sessionRecovery?: SessionRecovery;
81
+ /** Optional path to the persisted context-exhaustion notify ledger. When set,
82
+ * the once-per-death-EPISODE dedup map survives server restarts — without it
83
+ * every boot (update-train churn) forgot which dead sessions were already
84
+ * announced and re-posted "conversation too long" once per restart (the
85
+ * bounded residual confirmed twice on 2026-06-06: topics 16566 + 19437). */
86
+ statePath?: string;
81
87
  }
82
88
  export declare class SessionMonitor extends EventEmitter {
83
89
  private config;
@@ -92,13 +98,23 @@ export declare class SessionMonitor extends EventEmitter {
92
98
  * snap.notifiedAt resets to null. Without this, the dead-session notification
93
99
  * fires every poll (60s) creating spam. */
94
100
  private notificationCooldowns;
95
- /** topicId -> sessionName already notified for context exhaustion. Makes the
96
- * user notification once-per-failure-EPISODE (per session instance), not
97
- * once-per-cooldown-window — the prior behavior re-posted the same death
98
- * every cycle while the condition persisted (the 2026-06-06 flood). A
99
- * successful recovery clears the flag so a future genuine death notifies. */
101
+ /** topicId -> {sessionName, at} already notified for context exhaustion.
102
+ * Makes the user notification once-per-failure-EPISODE (per session
103
+ * instance), not once-per-cooldown-window — the prior behavior re-posted
104
+ * the same death every cycle while the condition persisted (the 2026-06-06
105
+ * flood). A successful recovery clears the flag so a future genuine death
106
+ * notifies. Persisted via deps.statePath so a server restart does not
107
+ * forget the episode and re-announce the same death once per boot. */
100
108
  private ctxNotifiedSessions;
109
+ private ctxPersistWarned;
110
+ /** Entries older than this are pruned at load — a week-old dead-session
111
+ * episode is over by any reasonable measure, and pruning bounds the file. */
112
+ private static readonly CTX_NOTIFIED_MAX_AGE_MS;
101
113
  constructor(deps: SessionMonitorDeps, config?: Partial<SessionMonitorConfig>);
114
+ /** Load the persisted notify ledger (tolerant: missing/corrupt → empty). */
115
+ private loadCtxNotified;
116
+ /** Persist the notify ledger (atomic tmp+rename; failure-tolerant). */
117
+ private persistCtxNotified;
102
118
  emit<K extends keyof SessionMonitorEvents>(event: K, data: SessionMonitorEvents[K]): boolean;
103
119
  on<K extends keyof SessionMonitorEvents>(event: K, listener: (data: SessionMonitorEvents[K]) => void): this;
104
120
  start(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionMonitor.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionMonitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionMonitor.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionMonitor.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@
16
16
  * One update per issue per session — not a stream of "still checking" messages.
17
17
  */
18
18
  import { EventEmitter } from 'events';
19
+ import fs from 'node:fs';
20
+ import path from 'node:path';
19
21
  import { detectContextExhaustion } from './QuotaExhaustionDetector.js';
20
22
  const DEFAULT_CONFIG = {
21
23
  enabled: true,
@@ -36,16 +38,69 @@ export class SessionMonitor extends EventEmitter {
36
38
  * snap.notifiedAt resets to null. Without this, the dead-session notification
37
39
  * fires every poll (60s) creating spam. */
38
40
  notificationCooldowns = new Map();
39
- /** topicId -> sessionName already notified for context exhaustion. Makes the
40
- * user notification once-per-failure-EPISODE (per session instance), not
41
- * once-per-cooldown-window — the prior behavior re-posted the same death
42
- * every cycle while the condition persisted (the 2026-06-06 flood). A
43
- * successful recovery clears the flag so a future genuine death notifies. */
41
+ /** topicId -> {sessionName, at} already notified for context exhaustion.
42
+ * Makes the user notification once-per-failure-EPISODE (per session
43
+ * instance), not once-per-cooldown-window — the prior behavior re-posted
44
+ * the same death every cycle while the condition persisted (the 2026-06-06
45
+ * flood). A successful recovery clears the flag so a future genuine death
46
+ * notifies. Persisted via deps.statePath so a server restart does not
47
+ * forget the episode and re-announce the same death once per boot. */
44
48
  ctxNotifiedSessions = new Map();
49
+ ctxPersistWarned = false;
50
+ /** Entries older than this are pruned at load — a week-old dead-session
51
+ * episode is over by any reasonable measure, and pruning bounds the file. */
52
+ static CTX_NOTIFIED_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
45
53
  constructor(deps, config) {
46
54
  super();
47
55
  this.deps = deps;
48
56
  this.config = { ...DEFAULT_CONFIG, ...config };
57
+ this.loadCtxNotified();
58
+ }
59
+ /** Load the persisted notify ledger (tolerant: missing/corrupt → empty). */
60
+ loadCtxNotified() {
61
+ if (!this.deps.statePath)
62
+ return;
63
+ try {
64
+ if (!fs.existsSync(this.deps.statePath))
65
+ return;
66
+ const raw = JSON.parse(fs.readFileSync(this.deps.statePath, 'utf-8'));
67
+ const cutoff = Date.now() - SessionMonitor.CTX_NOTIFIED_MAX_AGE_MS;
68
+ for (const [topic, entry] of Object.entries(raw)) {
69
+ const topicId = Number(topic);
70
+ if (!Number.isFinite(topicId) || !entry || typeof entry.sessionName !== 'string')
71
+ continue;
72
+ if (typeof entry.at !== 'number' || entry.at < cutoff)
73
+ continue; // pruned
74
+ this.ctxNotifiedSessions.set(topicId, { sessionName: entry.sessionName, at: entry.at });
75
+ }
76
+ }
77
+ catch (err) {
78
+ // A corrupt ledger must never break monitoring — start empty (worst
79
+ // case: one repeat notice per dead session, the pre-persistence status quo).
80
+ console.warn('[SessionMonitor] Could not load ctx-notified ledger — starting empty:', err);
81
+ }
82
+ }
83
+ /** Persist the notify ledger (atomic tmp+rename; failure-tolerant). */
84
+ persistCtxNotified() {
85
+ if (!this.deps.statePath)
86
+ return;
87
+ try {
88
+ const obj = {};
89
+ for (const [topicId, entry] of this.ctxNotifiedSessions)
90
+ obj[String(topicId)] = entry;
91
+ const tmp = `${this.deps.statePath}.tmp`;
92
+ fs.mkdirSync(path.dirname(this.deps.statePath), { recursive: true });
93
+ fs.writeFileSync(tmp, JSON.stringify(obj, null, 2));
94
+ fs.renameSync(tmp, this.deps.statePath);
95
+ }
96
+ catch (err) {
97
+ // Persistence is best-effort: losing it degrades to the pre-persistence
98
+ // behavior (one repeat notice per boot), never to broken monitoring.
99
+ if (!this.ctxPersistWarned) {
100
+ this.ctxPersistWarned = true;
101
+ console.warn('[SessionMonitor] Could not persist ctx-notified ledger (will not warn again):', err);
102
+ }
103
+ }
49
104
  }
50
105
  // ── Typed Events ────────────────────────────────────────
51
106
  emit(event, data) {
@@ -172,7 +227,8 @@ export class SessionMonitor extends EventEmitter {
172
227
  console.log(`[SessionMonitor] Context exhaustion recovery succeeded for topic ${topicId}: ${recoveryResult.message}`);
173
228
  snap.status = 'healthy';
174
229
  snap.notifiedAt = now;
175
- this.ctxNotifiedSessions.delete(topicId); // episode over — a future genuine death may notify again
230
+ if (this.ctxNotifiedSessions.delete(topicId))
231
+ this.persistCtxNotified(); // episode over — a future genuine death may notify again
176
232
  return;
177
233
  }
178
234
  }
@@ -193,14 +249,15 @@ export class SessionMonitor extends EventEmitter {
193
249
  // Genuine failure: notify once per session INSTANCE (failure episode),
194
250
  // not once per cooldown window — the same dead session must not
195
251
  // re-announce its death every cycle.
196
- if (this.ctxNotifiedSessions.get(topicId) === sessionName) {
252
+ if (this.ctxNotifiedSessions.get(topicId)?.sessionName === sessionName) {
197
253
  console.log(`[SessionMonitor] Context-exhaustion already notified for topic ${topicId} session "${sessionName}" — suppressing duplicate`);
198
254
  return;
199
255
  }
200
256
  snap.status = 'dead';
201
257
  await this.deps.sendToTopic(topicId, `Session hit "conversation too long" and can't continue. Send a new message to start a fresh session with your recent history.`).catch(() => { });
202
258
  this.emit('monitor:user-notified', { topicId, message: 'context_exhausted' });
203
- this.ctxNotifiedSessions.set(topicId, sessionName);
259
+ this.ctxNotifiedSessions.set(topicId, { sessionName, at: now });
260
+ this.persistCtxNotified();
204
261
  snap.notifiedAt = now;
205
262
  this.notificationCooldowns.set(topicId, now);
206
263
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionMonitor.js","sourceRoot":"","sources":["../../src/monitoring/SessionMonitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionMonitor.js","sourceRoot":"","sources":["../../src/monitoring/SessionMonitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.376",
3
+ "version": "1.3.377",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-06-06T19:12:50.527Z",
5
- "instarVersion": "1.3.376",
4
+ "generatedAt": "2026-06-06T19:44:25.597Z",
5
+ "instarVersion": "1.3.377",
6
6
  "entryCount": 199,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -947,6 +947,18 @@
947
947
  "state/project-registry.json"
948
948
  ],
949
949
  "grandfathered": true
950
+ },
951
+ {
952
+ "category": "session-monitor-ctx-notified",
953
+ "description": "Persisted context-exhaustion notify ledger - topicId -> {sessionName, at} already announced as dead, so the once-per-death-episode dedup survives server restarts (update-train churn previously re-announced the same death once per boot; 2026-06-06 residual on topics 16566/19437). Machine-local, single-writer (SessionMonitor), pruned at 7 days on load.",
954
+ "scope": "machine-local",
955
+ "freshness": "live",
956
+ "conflictShape": "single-writer",
957
+ "transport": "none",
958
+ "paths": [
959
+ "state/session-monitor-ctx-notified.json"
960
+ ],
961
+ "grandfathered": false
950
962
  }
951
963
  ]
952
- }
964
+ }
@@ -0,0 +1,48 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ SessionMonitor's once-per-death-episode notify dedup (`ctxNotifiedSessions`,
9
+ introduced by the #914 flood fix) was in-memory only. Every server restart —
10
+ and the update train restarts the server several times a day — cleared it, so
11
+ an already-announced dead session was re-announced once per boot: the bounded
12
+ residual behind the repeated "conversation too long" notices (confirmed twice
13
+ on 2026-06-06, topics 16566 and 19437; operator approved persisting it).
14
+
15
+ The map is now a persisted ledger at `state/session-monitor-ctx-notified.json`
16
+ (topicId → {sessionName, at}; atomic tmp+rename writes; declared in the
17
+ state-coherence registry as machine-local/single-writer). It loads at
18
+ construction with a 7-day prune; a successful recovery deletes the entry (so a
19
+ future genuine death notifies normally); a missing/corrupt file degrades to
20
+ empty — worst case one repeat notice, the pre-fix status quo, never broken
21
+ monitoring. Without a configured statePath the monitor behaves exactly as
22
+ before.
23
+
24
+ ## What to Tell Your User
25
+
26
+ Nothing — housekeeping. The visible effect is the absence of repeats: a dead
27
+ session's "conversation too long" notice now arrives exactly once, no matter
28
+ how many times the server restarts behind the scenes.
29
+
30
+ ## Summary of New Capabilities
31
+
32
+ - SessionMonitor ctx-notified ledger: per-boot re-announce residual closed.
33
+
34
+ ## Evidence
35
+
36
+ - **Before:** topic 16566 received the same "conversation too long" death
37
+ notice ~26× overnight 2026-06-05→06 (pre-#914 deferral bug + per-boot
38
+ re-announce); after #914 (v1.3.361) the bounded residual remained — topic
39
+ 19437 got 4 notices in 2h (12:16→13:16Z), exactly one per server boot during
40
+ update-train churn, and 16566 got 2 more when v1.3.361→363 restarted the
41
+ server at 10:51Z (in-memory map cleared, documented bounded risk in the #914
42
+ observation report).
43
+ - **After (mechanism):** the regression suite replays the restart: instance A
44
+ notifies once and persists; a NEW SessionMonitor instance on the same
45
+ statePath (the "server restart") polls the same dead session and sends
46
+ NOTHING. Recovery-clears, 7-day prune, corrupt-file tolerance, and
47
+ no-statePath inertness each have a dedicated test
48
+ (tests/unit/SessionMonitor.test.ts, 5 new tests; 29/29 green).
@@ -0,0 +1,5 @@
1
+ # The "this session already died, I told you" memory now survives restarts
2
+
3
+ When a session genuinely dies of "conversation too long", the monitor tells you ONCE — there's a little memory of which deaths it already announced, so it doesn't repeat itself every minute. That memory lived in RAM only. Every time the server restarted (which happens a lot — every auto-update bounces it), the memory was wiped, so the monitor would look at the same dead session and announce the same death again — once per restart. On an update-heavy day that meant the same "conversation too long" message landing in your chat over and over (the overnight wall of 26 messages in the API-errors topic, and 4-in-2-hours on another).
4
+
5
+ The fix: that memory is now written to a small file on disk (one line per topic: which session's death was announced and when). On boot the monitor reads it back, so a restart no longer forgets. A successful recovery still clears the entry (a FUTURE genuine death will announce normally), entries older than a week are dropped automatically, and if the file is ever missing or corrupted the monitor just starts with an empty memory — worst case is one repeat notice, exactly the old behavior, never broken monitoring.
@@ -0,0 +1,58 @@
1
+ # Side-Effects Review — SessionMonitor ctx-notified ledger persistence
2
+
3
+ **Version / slug:** `sessionmonitor-ctx-ledger-persistence`
4
+ **Date:** `2026-06-06`
5
+ **Author:** `echo`
6
+ **Second-pass reviewer:** `not required (SMALL, single-component, both-sides tested)`
7
+
8
+ ## Summary of the change
9
+
10
+ The once-per-death-episode dedup map in SessionMonitor (`ctxNotifiedSessions`,
11
+ added by #914) was in-memory only — every server restart re-announced already-
12
+ announced dead sessions, once per boot (2026-06-06 residual, topics 16566 +
13
+ 19437; operator pick 1Y approved persisting it). The map is now persisted to
14
+ `state/session-monitor-ctx-notified.json` (atomic tmp+rename), loaded at
15
+ construction with a 7-day prune, and updated on both mutation sites (notify →
16
+ set, successful recovery → delete).
17
+
18
+ ## Decision-point inventory
19
+
20
+ - Load: missing file → empty; corrupt file → warn + empty (never throws);
21
+ entry older than 7 days or malformed → dropped. All arms tested.
22
+ - Persist: write failure → one-time warn, monitoring continues (degrades to
23
+ pre-persistence behavior). statePath absent → feature inert (tested).
24
+
25
+ ## 1. Over-block
26
+
27
+ A persisted episode could suppress a notice the user wanted if the SAME
28
+ topic+sessionName genuinely dies twice without an intervening recovery or
29
+ respawn — but the same was already true in-memory within one server lifetime;
30
+ persistence only extends the existing semantics across boots. The 7-day prune
31
+ bounds the suppression horizon.
32
+
33
+ ## 2. Under-block / residual risk
34
+
35
+ - A respawn that reuses the SAME tmux session name after a fresh death still
36
+ notifies (sessionName equality is the episode key — unchanged semantics).
37
+ - Multi-machine: the ledger is machine-local (registered as such); a topic
38
+ transferred to another machine starts a fresh episode there. Acceptable —
39
+ the post-transfer closeout kills the old session anyway.
40
+
41
+ ## 3. Level-of-abstraction fit
42
+
43
+ Persistence lives inside SessionMonitor next to the map it persists; the path
44
+ is injected via deps (testable, inert when absent); wiring at the single
45
+ construction site in server.ts; the new state file is declared in
46
+ `src/data/state-coherence-registry.json` (machine-local / single-writer / none)
47
+ so the state-registry lint passes at birth.
48
+
49
+ ## Rollback
50
+
51
+ Revert the PR; the orphaned state file is inert (nothing reads it) and ≤ a few
52
+ hundred bytes.
53
+
54
+ ## Blast radius
55
+
56
+ Server-side only; no agent-installed files, no hooks, no config defaults, no
57
+ template changes → no Migration Parity obligations. New state file is created
58
+ lazily on first notify.