sensorium-mcp 3.1.0-refactor.16 → 3.1.0-refactor.17
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/config/agent-settings.d.ts +6 -0
- package/dist/config/agent-settings.d.ts.map +1 -1
- package/dist/config/agent-settings.js +22 -0
- package/dist/config/agent-settings.js.map +1 -1
- package/dist/config/detail-grant.d.ts +39 -0
- package/dist/config/detail-grant.d.ts.map +1 -0
- package/dist/config/detail-grant.js +61 -0
- package/dist/config/detail-grant.js.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/dashboard/routes/copilot.d.ts.map +1 -1
- package/dist/dashboard/routes/copilot.js +17 -1
- package/dist/dashboard/routes/copilot.js.map +1 -1
- package/dist/dashboard/routes/threads-read.d.ts.map +1 -1
- package/dist/dashboard/routes/threads-read.js +9 -2
- package/dist/dashboard/routes/threads-read.js.map +1 -1
- package/dist/dashboard/routes/threads.js +3 -3
- package/dist/dashboard/routes/threads.js.map +1 -1
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +11 -4
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/spa.html +11 -11
- package/dist/index.js +48 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +21 -2
- package/dist/lib/logger.js.map +1 -1
- package/dist/server/factory.js +16 -6
- package/dist/server/factory.js.map +1 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +10 -7
- package/dist/server/http-server.js.map +1 -1
- package/dist/services/agent-spawn.service.d.ts +3 -3
- package/dist/services/agent-spawn.service.d.ts.map +1 -1
- package/dist/services/agent-spawn.service.js +14 -8
- package/dist/services/agent-spawn.service.js.map +1 -1
- package/dist/services/background-runner.d.ts.map +1 -1
- package/dist/services/background-runner.js +6 -12
- package/dist/services/background-runner.js.map +1 -1
- package/dist/services/broker-client.d.ts +181 -0
- package/dist/services/broker-client.d.ts.map +1 -0
- package/dist/services/broker-client.js +323 -0
- package/dist/services/broker-client.js.map +1 -0
- package/dist/services/claude-spawn.service.d.ts +1 -1
- package/dist/services/claude-spawn.service.d.ts.map +1 -1
- package/dist/services/claude-spawn.service.js +25 -25
- package/dist/services/claude-spawn.service.js.map +1 -1
- package/dist/services/codex-spawn.service.d.ts +1 -1
- package/dist/services/codex-spawn.service.d.ts.map +1 -1
- package/dist/services/codex-spawn.service.js +19 -24
- package/dist/services/codex-spawn.service.js.map +1 -1
- package/dist/services/copilot-spawn.service.d.ts +1 -1
- package/dist/services/copilot-spawn.service.d.ts.map +1 -1
- package/dist/services/copilot-spawn.service.js +45 -36
- package/dist/services/copilot-spawn.service.js.map +1 -1
- package/dist/services/dispatcher/poller.d.ts.map +1 -1
- package/dist/services/dispatcher/poller.js +24 -5
- package/dist/services/dispatcher/poller.js.map +1 -1
- package/dist/services/flight-recorder.service.d.ts.map +1 -1
- package/dist/services/flight-recorder.service.js +41 -2
- package/dist/services/flight-recorder.service.js.map +1 -1
- package/dist/services/keeper.service.d.ts +9 -0
- package/dist/services/keeper.service.d.ts.map +1 -1
- package/dist/services/keeper.service.js +147 -31
- package/dist/services/keeper.service.js.map +1 -1
- package/dist/services/process.service.d.ts +40 -62
- package/dist/services/process.service.d.ts.map +1 -1
- package/dist/services/process.service.js +118 -613
- package/dist/services/process.service.js.map +1 -1
- package/dist/services/scheduler.d.ts +1 -0
- package/dist/services/scheduler.d.ts.map +1 -1
- package/dist/services/scheduler.js +58 -11
- package/dist/services/scheduler.js.map +1 -1
- package/dist/services/self-update.service.d.ts +14 -3
- package/dist/services/self-update.service.d.ts.map +1 -1
- package/dist/services/self-update.service.js +141 -72
- package/dist/services/self-update.service.js.map +1 -1
- package/dist/services/spawn-common.d.ts +49 -23
- package/dist/services/spawn-common.d.ts.map +1 -1
- package/dist/services/spawn-common.js +262 -47
- package/dist/services/spawn-common.js.map +1 -1
- package/dist/services/spawn-exit-watcher.d.ts +32 -0
- package/dist/services/spawn-exit-watcher.d.ts.map +1 -0
- package/dist/services/spawn-exit-watcher.js +102 -0
- package/dist/services/spawn-exit-watcher.js.map +1 -0
- package/dist/services/thread-health.service.d.ts +1 -1
- package/dist/services/thread-health.service.d.ts.map +1 -1
- package/dist/services/thread-health.service.js +6 -6
- package/dist/services/thread-health.service.js.map +1 -1
- package/dist/services/worker-cleanup.service.d.ts.map +1 -1
- package/dist/services/worker-cleanup.service.js +9 -92
- package/dist/services/worker-cleanup.service.js.map +1 -1
- package/dist/tools/defs/session-defs.js +1 -1
- package/dist/tools/defs/session-defs.js.map +1 -1
- package/dist/tools/defs/utility-defs.d.ts.map +1 -1
- package/dist/tools/defs/utility-defs.js +4 -3
- package/dist/tools/defs/utility-defs.js.map +1 -1
- package/dist/tools/delegate-tool.d.ts +1 -1
- package/dist/tools/delegate-tool.d.ts.map +1 -1
- package/dist/tools/delegate-tool.js +5 -5
- package/dist/tools/delegate-tool.js.map +1 -1
- package/dist/tools/session-tools.d.ts.map +1 -1
- package/dist/tools/session-tools.js +26 -9
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/tools/utility-tools.js +1 -1
- package/dist/tools/utility-tools.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-recorder.service.js","sourceRoot":"","sources":["../../src/services/flight-recorder.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,4FAA4F;AAC5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;AAEnG,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,yBAAyB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"flight-recorder.service.js","sourceRoot":"","sources":["../../src/services/flight-recorder.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,15 @@ export declare class KeeperService {
|
|
|
15
15
|
start(): void;
|
|
16
16
|
stop(): void;
|
|
17
17
|
private syncKeepers;
|
|
18
|
+
/** One keeper cycle with persistence: whenever a cycle changed any durable
|
|
19
|
+
* policy counter, push the new state to the broker's registry so it survives
|
|
20
|
+
* an MCP restart (plan §4.3). Single choke point — the cycle body has many
|
|
21
|
+
* early returns and each mutation site would otherwise need its own save. */
|
|
22
|
+
private runKeeperCycle;
|
|
23
|
+
private static durableStateOf;
|
|
24
|
+
/** Restore persisted counters when a keeper starts (max-merge so counters that
|
|
25
|
+
* already advanced in this session are never rolled back). */
|
|
26
|
+
private hydrateFromRegistry;
|
|
18
27
|
private checkAndRestart;
|
|
19
28
|
private notifyDeath;
|
|
20
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keeper.service.d.ts","sourceRoot":"","sources":["../../src/services/keeper.service.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"keeper.service.d.ts","sourceRoot":"","sources":["../../src/services/keeper.service.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAmK5D,qBAAa,aAAa;IAKtB,OAAO,CAAC,IAAI;IAJd,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,SAAS,CAA+C;gBAGtD,IAAI,EAAE;QACZ,WAAW,EAAE,MAAM,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;QACnD,eAAe,EAAE,sBAAsB,CAAC;QACxC,QAAQ,EAAE;YACR,WAAW,CACT,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;SAClB,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;KAChB;IAGH,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAWZ,OAAO,CAAC,WAAW;IAwEnB;;;kFAG8E;YAChE,cAAc;IAc5B,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B;mEAC+D;YACjD,mBAAmB;YAkCnB,eAAe;YAmUf,WAAW;CAkB1B"}
|
|
@@ -8,6 +8,7 @@ import { dispatchSpawn } from "./agent-spawn.service.js";
|
|
|
8
8
|
import { getKeepAliveThreads, getThread } from "../data/memory/thread-registry.js";
|
|
9
9
|
import { ThreadState } from "./thread-lifecycle.service.js";
|
|
10
10
|
import { errorMessage } from "../lib/utils.js";
|
|
11
|
+
import { brokerGetKeeperState, brokerSaveKeeperState } from "./broker-client.js";
|
|
11
12
|
const KEEPER_CHECK_INTERVAL_MS = 120_000; // 2 min
|
|
12
13
|
const KEEPER_MAX_RETRIES = 5;
|
|
13
14
|
const KEEPER_COOLDOWN_MS = 300_000; // 5 min
|
|
@@ -65,7 +66,7 @@ function findLatestThreadLogFile(threadId) {
|
|
|
65
66
|
* NEVER affect the kill. This runs only when the keeper has ALREADY decided the
|
|
66
67
|
* thread is stuck; it triggers no new kills.
|
|
67
68
|
*/
|
|
68
|
-
function writeWedgeSnapshot(threadId, pid, reason, heartbeat, now) {
|
|
69
|
+
async function writeWedgeSnapshot(threadId, pid, reason, heartbeat, now) {
|
|
69
70
|
try {
|
|
70
71
|
const dir = join(PROCESS_LOGS_DIR, "wedge-snapshots");
|
|
71
72
|
mkdirSync(dir, { recursive: true });
|
|
@@ -76,7 +77,7 @@ function writeWedgeSnapshot(threadId, pid, reason, heartbeat, now) {
|
|
|
76
77
|
lines.push(`timestamp: ${new Date(now).toISOString()}`);
|
|
77
78
|
let alive;
|
|
78
79
|
try {
|
|
79
|
-
alive = isProcessAlive(pid);
|
|
80
|
+
alive = await isProcessAlive(pid);
|
|
80
81
|
}
|
|
81
82
|
catch (err) {
|
|
82
83
|
alive = `error: ${errorMessage(err)}`;
|
|
@@ -167,7 +168,7 @@ export class KeeperService {
|
|
|
167
168
|
// Add new keepers
|
|
168
169
|
for (const thread of threads) {
|
|
169
170
|
if (!this.keepers.has(thread.threadId)) {
|
|
170
|
-
|
|
171
|
+
const entry = {
|
|
171
172
|
threadId: thread.threadId,
|
|
172
173
|
retryCount: 0,
|
|
173
174
|
fastExitCount: 0,
|
|
@@ -180,15 +181,22 @@ export class KeeperService {
|
|
|
180
181
|
survivedKillCount: 0,
|
|
181
182
|
lastUnkillableNotifyMs: 0,
|
|
182
183
|
lastLogSizeBytes: 0,
|
|
183
|
-
|
|
184
|
+
lastHeartbeatMs: 0,
|
|
185
|
+
};
|
|
186
|
+
this.keepers.set(thread.threadId, entry);
|
|
184
187
|
log.info(`[keeper] Started keeper for thread ${thread.threadId} ('${thread.name}')`);
|
|
188
|
+
// Hydrate backoff counters from the broker's registry (plan §4.3): they
|
|
189
|
+
// used to reset to zero on every MCP restart — during the Jul 25 wave 15
|
|
190
|
+
// resets in 2h19m meant no backoff ever matured. Fire-and-forget; until
|
|
191
|
+
// it lands the entry runs on defaults (today's behavior).
|
|
192
|
+
void this.hydrateFromRegistry(entry);
|
|
185
193
|
}
|
|
186
194
|
}
|
|
187
195
|
// Check all active keepers (skip if already in-flight to prevent duplicate spawns)
|
|
188
196
|
for (const entry of this.keepers.values()) {
|
|
189
197
|
if (!entry.stopped && !entry.checking) {
|
|
190
198
|
entry.checking = true;
|
|
191
|
-
this.
|
|
199
|
+
this.runKeeperCycle(entry)
|
|
192
200
|
.catch((err) => {
|
|
193
201
|
log.warn(`[keeper] checkAndRestart error for thread ${entry.threadId}: ${errorMessage(err)}`);
|
|
194
202
|
})
|
|
@@ -198,6 +206,64 @@ export class KeeperService {
|
|
|
198
206
|
}
|
|
199
207
|
}
|
|
200
208
|
}
|
|
209
|
+
/** One keeper cycle with persistence: whenever a cycle changed any durable
|
|
210
|
+
* policy counter, push the new state to the broker's registry so it survives
|
|
211
|
+
* an MCP restart (plan §4.3). Single choke point — the cycle body has many
|
|
212
|
+
* early returns and each mutation site would otherwise need its own save. */
|
|
213
|
+
async runKeeperCycle(entry) {
|
|
214
|
+
const before = KeeperService.durableStateOf(entry);
|
|
215
|
+
try {
|
|
216
|
+
await this.checkAndRestart(entry);
|
|
217
|
+
}
|
|
218
|
+
finally {
|
|
219
|
+
const after = KeeperService.durableStateOf(entry);
|
|
220
|
+
if (JSON.stringify(before) !== JSON.stringify(after)) {
|
|
221
|
+
void brokerSaveKeeperState(after).catch(() => {
|
|
222
|
+
/* unreachable broker already WARN-logged by the client */
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
static durableStateOf(entry) {
|
|
228
|
+
return {
|
|
229
|
+
threadId: entry.threadId,
|
|
230
|
+
retryCount: entry.retryCount,
|
|
231
|
+
fastExitCount: entry.fastExitCount,
|
|
232
|
+
fastExitEscalation: entry.fastExitEscalation,
|
|
233
|
+
cooldownUntilMs: entry.cooldownUntil > 0 ? entry.cooldownUntil : null,
|
|
234
|
+
survivedKillCount: entry.survivedKillCount,
|
|
235
|
+
lastStartAtMs: entry.lastStartTime > 0 ? entry.lastStartTime : null,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/** Restore persisted counters when a keeper starts (max-merge so counters that
|
|
239
|
+
* already advanced in this session are never rolled back). */
|
|
240
|
+
async hydrateFromRegistry(entry) {
|
|
241
|
+
try {
|
|
242
|
+
const state = await brokerGetKeeperState(entry.threadId);
|
|
243
|
+
if (!state || entry.stopped)
|
|
244
|
+
return;
|
|
245
|
+
entry.retryCount = Math.max(entry.retryCount, state.retryCount);
|
|
246
|
+
entry.fastExitCount = Math.max(entry.fastExitCount, state.fastExitCount);
|
|
247
|
+
entry.fastExitEscalation = Math.max(entry.fastExitEscalation, state.fastExitEscalation);
|
|
248
|
+
entry.survivedKillCount = Math.max(entry.survivedKillCount, state.survivedKillCount);
|
|
249
|
+
if (state.cooldownUntilMs !== null && state.cooldownUntilMs > entry.cooldownUntil)
|
|
250
|
+
entry.cooldownUntil = state.cooldownUntilMs;
|
|
251
|
+
if (state.lastStartAtMs !== null && entry.lastStartTime === 0)
|
|
252
|
+
entry.lastStartTime = state.lastStartAtMs;
|
|
253
|
+
if (state.retryCount > 0 ||
|
|
254
|
+
state.fastExitCount > 0 ||
|
|
255
|
+
state.fastExitEscalation > 0 ||
|
|
256
|
+
state.survivedKillCount > 0 ||
|
|
257
|
+
(state.cooldownUntilMs !== null && state.cooldownUntilMs > Date.now())) {
|
|
258
|
+
log.info(`[keeper] Thread ${entry.threadId}: restored persisted keeper state (retry=${state.retryCount}, fastExit=${state.fastExitCount}, escalation=${state.fastExitEscalation}, survivedKill=${state.survivedKillCount}${state.cooldownUntilMs !== null && state.cooldownUntilMs > Date.now()
|
|
259
|
+
? `, cooldown until ${new Date(state.cooldownUntilMs).toISOString()}`
|
|
260
|
+
: ""})`);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
log.debug(`[keeper] keeper-state hydration failed for thread ${entry.threadId}: ${errorMessage(err)}`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
201
267
|
async checkAndRestart(entry) {
|
|
202
268
|
const now = Date.now();
|
|
203
269
|
// 1. Check cooldown
|
|
@@ -206,29 +272,71 @@ export class KeeperService {
|
|
|
206
272
|
return;
|
|
207
273
|
}
|
|
208
274
|
// 2. Check if thread is running — reads PID file directly (authoritative OS evidence)
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
//
|
|
212
|
-
//
|
|
213
|
-
//
|
|
214
|
-
//
|
|
215
|
-
//
|
|
216
|
-
//
|
|
217
|
-
//
|
|
218
|
-
//
|
|
275
|
+
const aliveProc = await findAliveThreadViaPidFile(entry.threadId);
|
|
276
|
+
const alivePid = aliveProc?.pid;
|
|
277
|
+
// 2a. PID file shows no live tracked process. A fresh heartbeat USED to be
|
|
278
|
+
// trusted alone as "someone is actively serving this thread" — but with the
|
|
279
|
+
// tracked PID gone, a heartbeat < 1h old is NOT proof of life: the heartbeat
|
|
280
|
+
// file is only rewritten in the wait poll loop and on tool calls, so a long
|
|
281
|
+
// final model turn freezes it, and if the process then dies (e.g. Claude's
|
|
282
|
+
// 5-hour org limit 429s it) the frozen-but-recent heartbeat lingers for up to
|
|
283
|
+
// STUCK_THRESHOLD_MS. That is exactly how thread 1327's death was silently
|
|
284
|
+
// swallowed for ~67 minutes on 2026-07-27: the limbo guard fired every ~2-min
|
|
285
|
+
// cycle while BOTH the restart AND the operator-facing 💀 notification were
|
|
286
|
+
// suppressed, until the frozen heartbeat finally crossed 1h.
|
|
287
|
+
//
|
|
288
|
+
// The ONLY signals that prove a worker is alive RIGHT NOW are CROSS-CYCLE
|
|
289
|
+
// deltas measured between keeper cycles (~2 min apart) — symmetric to the
|
|
290
|
+
// 2026-07-26 stuck-branch fix, which likewise learned that a stale heartbeat
|
|
291
|
+
// alone does not prove/disprove a wedge because a long model turn freezes it:
|
|
292
|
+
// • heartbeat ADVANCED since the previous cycle — a live untracked worker
|
|
293
|
+
// idle in the long-poll rewrites it every ~2s, so it keeps advancing, OR
|
|
294
|
+
// • stdout GREW in bytes since the previous cycle (sizeGrew) — a live worker
|
|
295
|
+
// mid model turn emits tokens even while its heartbeat is frozen.
|
|
296
|
+
// A genuinely dead worker shows BOTH frozen: no heartbeat advance AND no
|
|
297
|
+
// stdout growth → fall through to the normal restart + notifyDeath path so the
|
|
298
|
+
// operator is warned within ~2 keeper cycles instead of ~1 hour. (mtime < 1h
|
|
299
|
+
// is deliberately NOT used here: a just-died process leaves a log whose mtime
|
|
300
|
+
// is recent for up to an hour — the same failure mode as the frozen heartbeat.)
|
|
219
301
|
if (alivePid === undefined) {
|
|
220
302
|
const heartbeat = readThreadHeartbeat(entry.threadId);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
303
|
+
// Upper sanity bound: no heartbeat, a pre-restart heartbeat from an older
|
|
304
|
+
// server generation, or a heartbeat already older than 1h is definitely not
|
|
305
|
+
// a live untracked worker → fall through to the cleanup + restart path.
|
|
306
|
+
const heartbeatPlausiblyLive = heartbeat !== null && heartbeat > SERVER_START_TIME && now - heartbeat < STUCK_THRESHOLD_MS;
|
|
307
|
+
if (heartbeatPlausiblyLive) {
|
|
308
|
+
const streamLog = findLatestThreadLog(entry.threadId);
|
|
309
|
+
const heartbeatAdvanced = entry.lastHeartbeatMs > 0 && heartbeat > entry.lastHeartbeatMs;
|
|
310
|
+
const sizeGrew = entry.lastLogSizeBytes > 0 &&
|
|
311
|
+
streamLog !== null &&
|
|
312
|
+
streamLog.sizeBytes > entry.lastLogSizeBytes;
|
|
313
|
+
// First cycle of this episode: no baseline yet, so no cross-cycle delta can
|
|
314
|
+
// be measured. Record the baselines and grant exactly ONE ~2-min grace
|
|
315
|
+
// cycle (vs. the old up-to-1-hour hole) before demanding evidence of life.
|
|
316
|
+
const noBaseline = entry.lastHeartbeatMs === 0 && entry.lastLogSizeBytes === 0;
|
|
317
|
+
if (noBaseline || heartbeatAdvanced || sizeGrew) {
|
|
318
|
+
// Still (or possibly) a live untracked worker — refresh baselines so the
|
|
319
|
+
// next cycle measures a fresh delta, then skip the restart.
|
|
320
|
+
entry.lastHeartbeatMs = heartbeat;
|
|
321
|
+
if (streamLog !== null)
|
|
322
|
+
entry.lastLogSizeBytes = streamLog.sizeBytes;
|
|
323
|
+
const evidence = noBaseline
|
|
324
|
+
? "first cycle — baselining"
|
|
325
|
+
: heartbeatAdvanced
|
|
326
|
+
? "heartbeat advanced"
|
|
327
|
+
: "stdout grew";
|
|
328
|
+
if (!entry.limboWarned) {
|
|
329
|
+
log.warn(`[keeper] Thread ${entry.threadId}: no live tracked PID but a worker still shows life (${evidence}, heartbeat ${Math.round((now - heartbeat) / 1000)}s ago) — a live worker is still serving it under an untracked PID. Skipping restart to avoid a duplicate process.`);
|
|
330
|
+
entry.limboWarned = true;
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
log.debug(`[keeper] Thread ${entry.threadId}: still in untracked-live-worker limbo (${evidence}, heartbeat ${Math.round((now - heartbeat) / 1000)}s ago) — skipping restart.`);
|
|
334
|
+
}
|
|
335
|
+
return;
|
|
230
336
|
}
|
|
231
|
-
|
|
337
|
+
// Heartbeat recent but FROZEN across cycles AND stdout static → the worker
|
|
338
|
+
// is dead (the 2026-07-27 thread-1327 case). Do NOT skip — fall through to
|
|
339
|
+
// the cleanup + normal restart + notifyDeath path below.
|
|
232
340
|
}
|
|
233
341
|
// Process is genuinely gone — any prior survived-kill episode is over.
|
|
234
342
|
entry.survivedKillCount = 0;
|
|
@@ -236,6 +344,8 @@ export class KeeperService {
|
|
|
236
344
|
// A restart writes a fresh (empty) stdout log; drop the byte baseline so the
|
|
237
345
|
// next episode never compares sizes across two different log files.
|
|
238
346
|
entry.lastLogSizeBytes = 0;
|
|
347
|
+
// Drop the heartbeat liveness baseline too — the next episode measures fresh.
|
|
348
|
+
entry.lastHeartbeatMs = 0;
|
|
239
349
|
}
|
|
240
350
|
// Not in limbo (PID alive, or heartbeat stale/absent) — clear the flag so a
|
|
241
351
|
// future episode logs afresh.
|
|
@@ -271,12 +381,16 @@ export class KeeperService {
|
|
|
271
381
|
const streamLog = heartbeatStale ? findLatestThreadLog(entry.threadId) : null;
|
|
272
382
|
const streamAgeMs = streamLog !== null ? now - streamLog.mtimeMs : null;
|
|
273
383
|
const mtimeFresh = streamAgeMs !== null && streamAgeMs >= 0 && streamAgeMs < STUCK_THRESHOLD_MS;
|
|
274
|
-
const sizeGrew = streamLog !== null &&
|
|
384
|
+
const sizeGrew = streamLog !== null &&
|
|
385
|
+
entry.lastLogSizeBytes > 0 &&
|
|
386
|
+
streamLog.sizeBytes > entry.lastLogSizeBytes;
|
|
275
387
|
if (streamLog !== null)
|
|
276
388
|
entry.lastLogSizeBytes = streamLog.sizeBytes;
|
|
277
389
|
const streamFresh = mtimeFresh || sizeGrew;
|
|
278
390
|
if (heartbeatStale && streamFresh) {
|
|
279
|
-
log.info(`[keeper] Thread ${entry.threadId} heartbeat is stale (${heartbeat !== null ? Math.round((now - heartbeat) / 60000) + "m" : "none"}) but its stdout stream shows life (${mtimeFresh
|
|
391
|
+
log.info(`[keeper] Thread ${entry.threadId} heartbeat is stale (${heartbeat !== null ? Math.round((now - heartbeat) / 60000) + "m" : "none"}) but its stdout stream shows life (${mtimeFresh
|
|
392
|
+
? `mtime ${Math.round(streamAgeMs / 1000)}s ago`
|
|
393
|
+
: "grew in bytes"}) — agent is mid-turn (streaming), not wedged. Skipping kill.`);
|
|
280
394
|
}
|
|
281
395
|
const isStuck = heartbeatStale && !streamFresh;
|
|
282
396
|
if (isStuck) {
|
|
@@ -298,11 +412,13 @@ export class KeeperService {
|
|
|
298
412
|
// DIAGNOSTIC (logging-only): forensic snapshot BEFORE the kill so we can
|
|
299
413
|
// see whether the stuck agent was still MCP-connected or already orphaned,
|
|
300
414
|
// plus the tail of its stdout. Best-effort; never blocks/affects the kill.
|
|
301
|
-
writeWedgeSnapshot(entry.threadId, alivePid, reason, heartbeat, now);
|
|
302
|
-
|
|
415
|
+
await writeWedgeSnapshot(entry.threadId, alivePid, reason, heartbeat, now);
|
|
416
|
+
// Identity-checked kill: pass the PID file's startedAt so the broker can
|
|
417
|
+
// refuse a recycled pid instead of killing a stranger.
|
|
418
|
+
await killProcessTree(alivePid, entry.threadId, "keeper-stuck", aliveProc?.startedAt);
|
|
303
419
|
// Verify kill succeeded before restarting — if the process is still alive,
|
|
304
420
|
// do NOT spawn a second instance. Keeper will retry on the next cycle.
|
|
305
|
-
if (isProcessAlive(alivePid)) {
|
|
421
|
+
if (await isProcessAlive(alivePid, aliveProc?.startedAt)) {
|
|
306
422
|
entry.survivedKillCount++;
|
|
307
423
|
log.warn(`[keeper] Thread ${entry.threadId} PID=${alivePid} survived kill (${entry.survivedKillCount}x) — skipping restart (will retry next cycle)`);
|
|
308
424
|
// Escalate: a process that repeatedly refuses to die needs operator
|
|
@@ -390,7 +506,7 @@ export class KeeperService {
|
|
|
390
506
|
? `last keeper-start ${Math.round((now - entry.lastStartTime) / 1000)}s ago`
|
|
391
507
|
: "never started by this server (inherited PID file)";
|
|
392
508
|
log.info(`[keeper] Thread ${entry.threadId} not running — restarting (attempt ${entry.retryCount + 1}/${KEEPER_MAX_RETRIES}, ${lastStartLabel})`);
|
|
393
|
-
const result = dispatchSpawn((thread.client || "claude"), thread.name, entry.threadId, this.deps.threadLifecycle, thread.workingDirectory ?? undefined);
|
|
509
|
+
const result = await dispatchSpawn((thread.client || "claude"), thread.name, entry.threadId, this.deps.threadLifecycle, thread.workingDirectory ?? undefined);
|
|
394
510
|
if ("pid" in result) {
|
|
395
511
|
entry.lastStartTime = Date.now();
|
|
396
512
|
entry.retryCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keeper.service.js","sourceRoot":"","sources":["../../src/services/keeper.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keeper.service.js","sourceRoot":"","sources":["../../src/services/keeper.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,16 +30,28 @@ export declare const clearTaskConsumed: (threadId: number) => void;
|
|
|
30
30
|
/** Delete a worker's pending-task mailbox (and any in-flight .processing temp)
|
|
31
31
|
* so a retired worker can never be re-fed a late append. */
|
|
32
32
|
export declare function deletePendingTaskMailbox(threadId: number): void;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Liveness + identity in one question: is `pid` alive AND (when `spawnedAtMs`
|
|
35
|
+
* is given) still the process we spawned?
|
|
36
|
+
*
|
|
37
|
+
* Two-step check, neither of which ever spawns a child process:
|
|
38
|
+
* 1. `process.kill(pid, 0)` — a plain syscall. ESRCH (any non-EPERM error) is
|
|
39
|
+
* a definitive "dead" and needs no broker (this also keeps dev mode
|
|
40
|
+
* without a supervisor fully functional for the common case).
|
|
41
|
+
* 2. Otherwise the answer is NOT trustworthy on Windows — kill(0) succeeds
|
|
42
|
+
* for kernel-zombie PIDs held open by a lingering handle, and EPERM is
|
|
43
|
+
* what a parent sees for its own terminated child. Ask the supervisor's
|
|
44
|
+
* process broker, which answers from a native process snapshot and also
|
|
45
|
+
* verifies creation-time identity (PID-reuse guard).
|
|
46
|
+
*
|
|
47
|
+
* Broker unreachable → "cannot confirm → treat alive", exactly the audited-safe
|
|
48
|
+
* degradation the deleted tasklist/Get-Process breakers had.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isProcessAlive(pid: number, spawnedAtMs?: number): Promise<boolean>;
|
|
39
51
|
export declare function readPidFiles(): PidFileEntry[];
|
|
40
|
-
export declare function findAliveThread(threadId: number): SpawnedThread | undefined
|
|
41
|
-
export declare const isThreadRunning: (threadId: number) => boolean
|
|
42
|
-
export declare function getActiveThreadIds(): number[]
|
|
52
|
+
export declare function findAliveThread(threadId: number): Promise<SpawnedThread | undefined>;
|
|
53
|
+
export declare const isThreadRunning: (threadId: number) => Promise<boolean>;
|
|
54
|
+
export declare function getActiveThreadIds(): Promise<number[]>;
|
|
43
55
|
export declare function ensureDirs(): void;
|
|
44
56
|
/** Thread transcripts (logs/threads/*.json) are append-only debug artifacts with
|
|
45
57
|
* one file per thread per day. Nothing consumes them at runtime except the
|
|
@@ -52,10 +64,15 @@ export declare function ensureDirs(): void;
|
|
|
52
64
|
export declare function pruneOldThreadLogs(): void;
|
|
53
65
|
/**
|
|
54
66
|
* Check liveness of a thread directly via its PID file, bypassing the
|
|
55
|
-
* spawnedThreads[] in-memory cache.
|
|
56
|
-
*
|
|
67
|
+
* spawnedThreads[] in-memory cache. Returns the live PID together with its
|
|
68
|
+
* recorded spawn identity (startedAt) so callers can make identity-checked
|
|
69
|
+
* kill/alive calls, or undefined if no PID file exists or the process is dead
|
|
70
|
+
* (stale file is deleted).
|
|
57
71
|
*/
|
|
58
|
-
export declare function findAliveThreadViaPidFile(threadId: number):
|
|
72
|
+
export declare function findAliveThreadViaPidFile(threadId: number): Promise<{
|
|
73
|
+
pid: number;
|
|
74
|
+
startedAt?: number;
|
|
75
|
+
} | undefined>;
|
|
59
76
|
/**
|
|
60
77
|
* Reconcile in-memory state (spawnedThreads[]) with the two authoritative
|
|
61
78
|
* sources of truth at startup:
|
|
@@ -64,58 +81,19 @@ export declare function findAliveThreadViaPidFile(threadId: number): number | un
|
|
|
64
81
|
*
|
|
65
82
|
* Replaces the old restoreFromPidFiles() + cleanupStalePidFiles() pair.
|
|
66
83
|
*/
|
|
67
|
-
export declare function reconcileState(db: Database, threadLifecycle: ThreadLifecycleService): void
|
|
68
|
-
export interface ProcSnapshotEntry {
|
|
69
|
-
ppid: number;
|
|
70
|
-
startMs: number;
|
|
71
|
-
}
|
|
72
|
-
export type ProcSnapshot = Map<number, ProcSnapshotEntry>;
|
|
73
|
-
interface OrphanLineageEntry {
|
|
74
|
-
ownerThreadId: number;
|
|
75
|
-
ownerPid: number;
|
|
76
|
-
ownerStartedAt?: number;
|
|
77
|
-
descendantStartMs: number;
|
|
78
|
-
}
|
|
79
|
-
export interface OrphanSweepTrackedThread {
|
|
80
|
-
threadId: number;
|
|
81
|
-
pid: number;
|
|
82
|
-
startedAt?: number;
|
|
83
|
-
alive: boolean;
|
|
84
|
-
}
|
|
85
|
-
export interface OrphanSweepResult {
|
|
86
|
-
/** Confirmed orphans that passed BOTH pid-reuse guards. */
|
|
87
|
-
orphans: {
|
|
88
|
-
pid: number;
|
|
89
|
-
ownerThreadId: number;
|
|
90
|
-
startMs: number;
|
|
91
|
-
}[];
|
|
92
|
-
/** Recorded descendants whose pid was recycled (start-time mismatch) — dropped, never killed. */
|
|
93
|
-
reusedPidsSkipped: number[];
|
|
94
|
-
/** Candidates rejected by the child-not-older-than-parent guard — never killed. */
|
|
95
|
-
olderThanParentSkipped: number[];
|
|
96
|
-
/** How many descendant lineage entries were (re)recorded this pass. */
|
|
97
|
-
recorded: number;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Pure core of the orphan sweep — no IO, no clock, fully deterministic so the
|
|
101
|
-
* pid-reuse guard and the snapshot-unavailable path can be tested directly.
|
|
102
|
-
* Mutates `lineage` in place (records new descendants, drops dead/recycled ones).
|
|
103
|
-
*/
|
|
104
|
-
export declare function computeOrphanSweep(params: {
|
|
105
|
-
snapshot: ProcSnapshot | null;
|
|
106
|
-
trackedThreads: OrphanSweepTrackedThread[];
|
|
107
|
-
lineage: Map<number, OrphanLineageEntry>;
|
|
108
|
-
protectedPids: Set<number>;
|
|
109
|
-
toleranceMs: number;
|
|
110
|
-
}): OrphanSweepResult;
|
|
84
|
+
export declare function reconcileState(db: Database, threadLifecycle: ThreadLifecycleService): Promise<void>;
|
|
111
85
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
86
|
+
* Kill the process tree rooted at `pid` via the supervisor's broker (native
|
|
87
|
+
* TerminateProcess over the whole tree, identity-checked when `spawnedAtMs` is
|
|
88
|
+
* given, outcome recorded in the broker's on-disk registry). Never spawns a
|
|
89
|
+
* child process and never blocks the event loop.
|
|
90
|
+
*
|
|
91
|
+
* Broker unreachable → degraded best-effort: one native `process.kill(pid)`
|
|
92
|
+
* (root only — Node cannot enumerate a tree without shelling out, and that
|
|
93
|
+
* machinery is gone by design) followed by a conservative liveness re-check.
|
|
94
|
+
* A survived kill keeps the PID file so the keeper/cleanup policy loops retry
|
|
95
|
+
* and escalate — same contract as before.
|
|
117
96
|
*/
|
|
118
|
-
export declare function sweepOrphanDescendants(): Promise<OrphanSweepResult>;
|
|
119
97
|
export declare function killProcessTree(pid: number, threadId: number, caller?: string, spawnedAtMs?: number): Promise<void>;
|
|
120
98
|
export {};
|
|
121
99
|
//# sourceMappingURL=process.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.service.d.ts","sourceRoot":"","sources":["../../src/services/process.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process.service.d.ts","sourceRoot":"","sources":["../../src/services/process.service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAuB5E,eAAO,MAAM,iBAAiB,QAAkC,CAAC;AACjE,eAAO,MAAM,gBAAgB,QAAW,CAAC;AACzC,eAAO,MAAM,gBAAgB,QAAW,CAAC;AACzC,eAAO,MAAM,eAAe,QAA4B,CAAC;AACzD,eAAO,MAAM,gBAAgB,QAAW,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAClC;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,aAAa,EAAO,CAAC;AAYlD,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,IAEnD,CAAC;AACF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,KAAG,OAA4C,CAAC;AAChG,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAEpD,CAAC;AAEF;6DAC6D;AAC7D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAaxF;AAED,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAiC7C;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA2B1F;AAED,eAAO,MAAM,eAAe,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,OAAO,CACvB,CAAC;AAElD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAW5D;AAED,wBAAgB,UAAU,IAAI,IAAI,CAMjC;AAED;;;;;;;uCAOuC;AACvC,wBAAgB,kBAAkB,IAAI,IAAI,CAsBzC;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAY1D;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,EACZ,eAAe,EAAE,sBAAsB,GACtC,OAAO,CAAC,IAAI,CAAC,CA4Hf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|