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.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +4 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/monitoring/SessionMonitor.d.ts +21 -5
- package/dist/monitoring/SessionMonitor.d.ts.map +1 -1
- package/dist/monitoring/SessionMonitor.js +65 -8
- package/dist/monitoring/SessionMonitor.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/src/data/state-coherence-registry.json +13 -1
- package/upgrades/1.3.377.md +48 -0
- package/upgrades/sessionmonitor-ctx-ledger-persistence.eli16.md +5 -0
- package/upgrades/side-effects/sessionmonitor-ctx-ledger-persistence.md +58 -0
|
@@ -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.
|
|
96
|
-
* user notification once-per-failure-EPISODE (per session
|
|
97
|
-
* once-per-cooldown-window — the prior behavior re-posted
|
|
98
|
-
* every cycle while the condition persisted (the 2026-06-06
|
|
99
|
-
* successful recovery clears the flag so a future genuine death
|
|
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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
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.
|
|
40
|
-
* user notification once-per-failure-EPISODE (per session
|
|
41
|
-
* once-per-cooldown-window — the prior behavior re-posted
|
|
42
|
-
* every cycle while the condition persisted (the 2026-06-06
|
|
43
|
-
* successful recovery clears the flag so a future genuine death
|
|
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)
|
|
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,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-06T19:
|
|
5
|
-
"instarVersion": "1.3.
|
|
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.
|