@telora/daemon 0.19.28 → 0.19.31
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/build-info.json +2 -2
- package/dist/config-hot-reload.d.ts +91 -0
- package/dist/config-hot-reload.d.ts.map +1 -0
- package/dist/config-hot-reload.js +121 -0
- package/dist/config-hot-reload.js.map +1 -0
- package/dist/drain-teardown.d.ts +66 -0
- package/dist/drain-teardown.d.ts.map +1 -0
- package/dist/drain-teardown.js +56 -0
- package/dist/drain-teardown.js.map +1 -0
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +20 -0
- package/dist/focus-executor.js.map +1 -1
- package/dist/index.js +66 -4
- package/dist/index.js.map +1 -1
- package/dist/stop-request.d.ts +54 -0
- package/dist/stop-request.d.ts.map +1 -0
- package/dist/stop-request.js +89 -0
- package/dist/stop-request.js.map +1 -0
- package/dist/unified-engine-lifecycle.d.ts +68 -10
- package/dist/unified-engine-lifecycle.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.js +177 -71
- package/dist/unified-engine-lifecycle.js.map +1 -1
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +73 -8
- package/dist/unified-shell.js.map +1 -1
- package/dist/worker-pidfile.d.ts +77 -0
- package/dist/worker-pidfile.d.ts.map +1 -0
- package/dist/worker-pidfile.js +161 -0
- package/dist/worker-pidfile.js.map +1 -0
- package/package.json +2 -2
package/dist/unified-shell.js
CHANGED
|
@@ -26,12 +26,14 @@ import { openSync, closeSync, existsSync } from 'node:fs';
|
|
|
26
26
|
import { dirname, resolve } from 'node:path';
|
|
27
27
|
import { fileURLToPath } from 'node:url';
|
|
28
28
|
import { spawn, execFileSync } from 'node:child_process';
|
|
29
|
-
import { loadUnifiedConfig, loadEnvConfig, acquirePidLock, releasePidLock,
|
|
29
|
+
import { loadUnifiedConfig, loadEnvConfig, acquirePidLock, releasePidLock, PidLockError, } from '@telora/daemon-core';
|
|
30
30
|
import { startAutoUpdateLoop } from './auto-update.js';
|
|
31
31
|
import { createDebouncedIdleGate, isBatchSafeIdle } from './auto-update-idle.js';
|
|
32
32
|
import { getActiveTeamCount } from './focus-team-state.js';
|
|
33
33
|
import { getReadyFocusQueueDepth } from './listener.js';
|
|
34
|
-
import { isIntakeDraining } from './intake-control.js';
|
|
34
|
+
import { isIntakeDraining, armDrainForUpdate } from './intake-control.js';
|
|
35
|
+
import { runDrainToIdleTeardown } from './drain-teardown.js';
|
|
36
|
+
import { readStopRequest, clearStopRequest, decideStopAction } from './stop-request.js';
|
|
35
37
|
import { startVersionCacheRefreshLoop, readFreshVersionCache } from './staleness.js';
|
|
36
38
|
import { detectInstallMode, getCurrentVersion, isNpxRunMode, npxRunRefusalMessage } from './self-update.js';
|
|
37
39
|
import { setDaemonShuttingDown } from './shutdown-state.js';
|
|
@@ -39,6 +41,7 @@ import { startOtlpReceiver, stopOtlpReceiver } from './otlp-receiver.js';
|
|
|
39
41
|
import { initTelemetryWriter, stopTelemetryWriter } from './telemetry-writer.js';
|
|
40
42
|
import { startCircuitWedgeWatcher, stopCircuitWedgeWatcher } from './circuit-wedge-watcher.js';
|
|
41
43
|
import { reapWorkerFleet } from './spawner/index.js';
|
|
44
|
+
import { clearWorkerPidfile, reapAndClearWorkerPidfile } from './worker-pidfile.js';
|
|
42
45
|
import { startLacunaSidecarIfEnabled, stopLacunaSidecar } from './backends/lacuna/index.js';
|
|
43
46
|
import { rotateDaemonLog, setupCanonicalLogTee, writeDaemonMeta, removeDaemonMeta, resolveDaemonLogPath, resolvePidFilePath, ensureGlobalStateDir, STOP_DRAIN_BUDGET_MS } from './daemon-process.js';
|
|
44
47
|
import { printUnifiedConfigSummary } from './unified-shell-status.js';
|
|
@@ -312,6 +315,22 @@ export async function runUnifiedDaemon(opts) {
|
|
|
312
315
|
installMode: detectInstallMode(),
|
|
313
316
|
autoUpdateEnabled,
|
|
314
317
|
});
|
|
318
|
+
// -- 4.5 Reap orphaned team leads from a prior hard-killed run -------------
|
|
319
|
+
// A prior daemon killed with `kill -9` (or a stop --force whose CLI reap did
|
|
320
|
+
// not land) leaves its detached team leads alive and orphaned to init. The
|
|
321
|
+
// PID lock guarantees we are now the sole daemon, so any lead still recorded
|
|
322
|
+
// in the worker pidfile is such an orphan -- group-reap it and clear the file.
|
|
323
|
+
// This is the only closure for a bare external kill of the daemon PID, which
|
|
324
|
+
// no in-process handler can intercept. Best-effort; never blocks startup.
|
|
325
|
+
try {
|
|
326
|
+
const reaped = reapAndClearWorkerPidfile();
|
|
327
|
+
if (reaped.reaped.length > 0) {
|
|
328
|
+
console.log(`[startup] Reaped ${reaped.reaped.length} orphaned team lead(s) from a prior hard-killed run: ${reaped.reaped.join(', ')}`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
console.warn(`[startup] Orphan reap failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
333
|
+
}
|
|
315
334
|
// -- 5. Register top-level error handlers (early, before engine init) -----
|
|
316
335
|
let isShuttingDown = false;
|
|
317
336
|
// shutdown is assigned later in this scope once engines and governor exist.
|
|
@@ -425,6 +444,9 @@ export async function runUnifiedDaemon(opts) {
|
|
|
425
444
|
catch (err) {
|
|
426
445
|
console.warn(`[reap] Worker-fleet reap failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
427
446
|
}
|
|
447
|
+
// The fleet is reaped -- clear the persisted lead pidfile so neither the CLI
|
|
448
|
+
// nor the next boot acts on now-dead pids.
|
|
449
|
+
clearWorkerPidfile();
|
|
428
450
|
// Phase 2.5: Stop telemetry capture (flush remaining buffered rows, close
|
|
429
451
|
// the OTLP receiver socket) and tear down the Lacuna sidecar (SIGTERM).
|
|
430
452
|
stopCircuitWedgeWatcher();
|
|
@@ -477,6 +499,10 @@ export async function runUnifiedDaemon(opts) {
|
|
|
477
499
|
await stopLacunaSidecar();
|
|
478
500
|
}
|
|
479
501
|
catch { /* best effort */ }
|
|
502
|
+
// Teams were gracefully terminated above and will be re-spawned by the new
|
|
503
|
+
// process; clear the lead pidfile so the re-exec'd daemon's boot reap does
|
|
504
|
+
// not act on pids that are exiting or being legitimately resumed.
|
|
505
|
+
clearWorkerPidfile();
|
|
480
506
|
cleanupLogTee?.();
|
|
481
507
|
removeDaemonMeta();
|
|
482
508
|
releasePidLock(pidFilePath);
|
|
@@ -512,9 +538,44 @@ export async function runUnifiedDaemon(opts) {
|
|
|
512
538
|
console.log(`[auto-update] New daemon spawned (PID ${child.pid}), exiting old process`);
|
|
513
539
|
process.exit(0);
|
|
514
540
|
}
|
|
515
|
-
// Register signal handlers
|
|
516
|
-
//
|
|
517
|
-
|
|
541
|
+
// Register drain-aware stop signal handlers.
|
|
542
|
+
// SIGINT (Ctrl+C) and an external/systemd SIGTERM (no stop-request file) tear
|
|
543
|
+
// down immediately. A `telora-daemon stop`/`restart`/`update` WITHOUT --now
|
|
544
|
+
// leaves a `drain` stop-request, so its SIGTERM defers teardown until the
|
|
545
|
+
// fleet reaches a zero-team boundary -- arming intake-drain meanwhile so no
|
|
546
|
+
// new team spawns -- and the running fleet is never killed mid-work. `--now`
|
|
547
|
+
// (a `now` request) or a SECOND stop signal during a drain forces immediate
|
|
548
|
+
// teardown. shutdown() is idempotent, so a drain firing shutdown after an
|
|
549
|
+
// immediate one already ran is a harmless no-op. (Not the daemon-core
|
|
550
|
+
// debounced setupSignalHandlers: we need the second-signal upgrade path.)
|
|
551
|
+
let stopDraining = false;
|
|
552
|
+
const onStopSignal = (signal) => {
|
|
553
|
+
const request = readStopRequest();
|
|
554
|
+
clearStopRequest();
|
|
555
|
+
const action = decideStopAction(signal, request, stopDraining);
|
|
556
|
+
if (action === 'immediate') {
|
|
557
|
+
if (stopDraining) {
|
|
558
|
+
console.log('[drain-teardown] second stop signal received -- forcing immediate teardown');
|
|
559
|
+
}
|
|
560
|
+
void shutdown(signal);
|
|
561
|
+
return;
|
|
562
|
+
}
|
|
563
|
+
stopDraining = true;
|
|
564
|
+
void runDrainToIdleTeardown({
|
|
565
|
+
isBatchSafeIdle: () => isBatchSafeIdle({
|
|
566
|
+
activeTeamCount: getActiveTeamCount,
|
|
567
|
+
readyFocusQueueDepth: getReadyFocusQueueDepth,
|
|
568
|
+
intakeDraining: isIntakeDraining,
|
|
569
|
+
}),
|
|
570
|
+
armDrain: armDrainForUpdate,
|
|
571
|
+
teardown: () => shutdown('drain-to-idle'),
|
|
572
|
+
}).catch((err) => {
|
|
573
|
+
console.error(`[drain-teardown] deferred teardown failed (${err instanceof Error ? err.message : String(err)}) -- tearing down now`);
|
|
574
|
+
void shutdown(signal);
|
|
575
|
+
});
|
|
576
|
+
};
|
|
577
|
+
process.on('SIGINT', () => onStopSignal('SIGINT'));
|
|
578
|
+
process.on('SIGTERM', () => onStopSignal('SIGTERM'));
|
|
518
579
|
// -- 8.5 Start the OTLP telemetry capture pipeline ------------------------
|
|
519
580
|
// Must bind the receiver BEFORE engines start spawning agent processes so
|
|
520
581
|
// the first team's OTLP export lands on a live socket.
|
|
@@ -531,12 +592,16 @@ export async function runUnifiedDaemon(opts) {
|
|
|
531
592
|
// route directly to the upstream API.
|
|
532
593
|
await startLacunaSidecarIfEnabled(resolveLacunaConfig(lacunaFieldsFromFocus(config.focus.fields)));
|
|
533
594
|
// -- 9. Initialize and start engines --------------------------------------
|
|
534
|
-
await initializeAndStartEngines(engines, config, opts, pidFilePath);
|
|
595
|
+
const liveEngineConfigs = await initializeAndStartEngines(engines, config, opts, pidFilePath);
|
|
535
596
|
// -- 10. Register diagnostic signal handlers ------------------------------
|
|
536
597
|
registerDiagnosticSignals(engines, governor);
|
|
537
598
|
// -- 10b. Register SIGHUP hot-reload handler ------------------------------
|
|
538
|
-
// Lets MCP / operators
|
|
539
|
-
|
|
599
|
+
// Lets MCP / operators reconcile daemon.json live -- products, the safe
|
|
600
|
+
// scalar config class, and the Lacuna sidecar -- without a restart. The
|
|
601
|
+
// governor + live focus engine config are the handles the scalar/lacuna
|
|
602
|
+
// apply mutates in place (undefined when the focus engine is disabled, in
|
|
603
|
+
// which case only products reconcile).
|
|
604
|
+
registerHotReloadSignal(config, opts, governor, liveEngineConfigs.get('focus'));
|
|
540
605
|
// -- 11. Print startup message --------------------------------------------
|
|
541
606
|
const engineNames = engines.map(e => e.name).join(', ');
|
|
542
607
|
const currentVersion = daemonVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-shell.js","sourceRoot":"","sources":["../src/unified-shell.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unified-shell.js","sourceRoot":"","sources":["../src/unified-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persisted team-lead pid registry -- closes the hard-kill orphan gap.
|
|
3
|
+
*
|
|
4
|
+
* Team leads are spawned detached (their own process group; focus-executor
|
|
5
|
+
* spawnCrashIsolated). The daemon's graceful shutdown reaps them via
|
|
6
|
+
* reapWorkerFleet, but a HARD kill (stop --force, a stop timeout, or an
|
|
7
|
+
* external `kill -9` on the daemon PID) tears the daemon down WITHOUT running
|
|
8
|
+
* that reap -- and because the leads are detached, they survive and orphan to
|
|
9
|
+
* init.
|
|
10
|
+
*
|
|
11
|
+
* The in-memory activeTeams map dies with the daemon, so a separate process
|
|
12
|
+
* (the `telora-daemon stop` CLI, or the NEXT daemon at boot) has no way to find
|
|
13
|
+
* those orphans. This module persists each live lead pid to a small JSON file
|
|
14
|
+
* in the global state dir so:
|
|
15
|
+
*
|
|
16
|
+
* - the CLI stop --force / timeout path can group-kill (`kill(-pid)`) every
|
|
17
|
+
* recorded lead after it SIGKILLs the daemon, and
|
|
18
|
+
* - the next daemon boot can reap any lead left alive by a prior hard kill
|
|
19
|
+
* (the only closure available for a bare external `kill -9 <daemon>`, which
|
|
20
|
+
* no in-process handler can intercept).
|
|
21
|
+
*
|
|
22
|
+
* All file ops are best-effort and never throw: a missing/corrupt file yields
|
|
23
|
+
* an empty fleet, and a write failure is swallowed (orphan prevention is a
|
|
24
|
+
* backstop, never a blocker on the spawn/exit hot path). One daemon per host
|
|
25
|
+
* (PID lock) makes read-modify-write races a non-issue.
|
|
26
|
+
*/
|
|
27
|
+
/** A persisted live team lead: its pid and a human label for reap logging. */
|
|
28
|
+
export interface WorkerPidEntry {
|
|
29
|
+
pid: number;
|
|
30
|
+
label: string;
|
|
31
|
+
}
|
|
32
|
+
/** Resolve the worker pidfile path in the global state dir (~/.telora/). */
|
|
33
|
+
export declare function resolveWorkerPidfilePath(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Read the persisted worker fleet. Tolerant: a missing, unreadable, or
|
|
36
|
+
* malformed file returns []. Only well-formed { pid, label } entries with a
|
|
37
|
+
* real pid (> 1) survive parsing.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readWorkerPidfile(path?: string): WorkerPidEntry[];
|
|
40
|
+
/**
|
|
41
|
+
* Record a live team lead. Idempotent per pid (a re-record updates the label).
|
|
42
|
+
* No-op for an invalid/init pid (<= 1).
|
|
43
|
+
*/
|
|
44
|
+
export declare function recordWorkerPid(pid: number, label: string, path?: string): void;
|
|
45
|
+
/** Remove a lead pid on its exit. No-op when absent. */
|
|
46
|
+
export declare function removeWorkerPid(pid: number, path?: string): void;
|
|
47
|
+
/** Delete the pidfile entirely (graceful shutdown clears it after reaping). */
|
|
48
|
+
export declare function clearWorkerPidfile(path?: string): void;
|
|
49
|
+
/** Injectable seams for {@link reapPersistedWorkerGroups} (test without procs). */
|
|
50
|
+
export interface ReapPersistedDeps {
|
|
51
|
+
/** Signal sender. Defaults to process.kill. */
|
|
52
|
+
kill?: (pid: number, signal: NodeJS.Signals) => void;
|
|
53
|
+
/** Liveness probe. Defaults to a kill(pid, 0) existence check. */
|
|
54
|
+
isAlive?: (pid: number) => boolean;
|
|
55
|
+
}
|
|
56
|
+
/** Outcome of a persisted-fleet reap, for logging + tests. */
|
|
57
|
+
export interface ReapPersistedResult {
|
|
58
|
+
/** Pids that were alive and got a group SIGKILL. */
|
|
59
|
+
reaped: number[];
|
|
60
|
+
/** Pids skipped because they were already dead (or invalid). */
|
|
61
|
+
skipped: number[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Group-SIGKILL every still-alive persisted lead. Because leads are spawned
|
|
65
|
+
* detached (own group, pgid == lead pid), `kill(-pid)` reaps the lead AND any
|
|
66
|
+
* host children it sub-spawned in one signal; a bare-pid fallback covers a lead
|
|
67
|
+
* that somehow is not a group leader. Pure over the injected seams. Never throws
|
|
68
|
+
* (a vanished process is success).
|
|
69
|
+
*/
|
|
70
|
+
export declare function reapPersistedWorkerGroups(entries: WorkerPidEntry[], deps?: ReapPersistedDeps): ReapPersistedResult;
|
|
71
|
+
/**
|
|
72
|
+
* Read + reap the persisted fleet, then clear the file. Used by the CLI hard
|
|
73
|
+
* stop (after SIGKILLing the daemon) and by the next daemon boot (to reap leads
|
|
74
|
+
* a prior hard kill orphaned). Returns the reap result for logging.
|
|
75
|
+
*/
|
|
76
|
+
export declare function reapAndClearWorkerPidfile(path?: string, deps?: ReapPersistedDeps): ReapPersistedResult;
|
|
77
|
+
//# sourceMappingURL=worker-pidfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pidfile.d.ts","sourceRoot":"","sources":["../src/worker-pidfile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAmC,GAAG,cAAc,EAAE,CAoB7F;AAWD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAmC,GAAG,IAAI,CAK3G;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAmC,GAAG,IAAI,CAS5F;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAmC,GAAG,IAAI,CAMlF;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IACrD,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,8DAA8D;AAC9D,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gEAAgE;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAYD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,EAAE,EACzB,IAAI,GAAE,iBAAsB,GAC3B,mBAAmB,CA4BrB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,GAAE,MAAmC,EACzC,IAAI,GAAE,iBAAsB,GAC3B,mBAAmB,CAKrB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persisted team-lead pid registry -- closes the hard-kill orphan gap.
|
|
3
|
+
*
|
|
4
|
+
* Team leads are spawned detached (their own process group; focus-executor
|
|
5
|
+
* spawnCrashIsolated). The daemon's graceful shutdown reaps them via
|
|
6
|
+
* reapWorkerFleet, but a HARD kill (stop --force, a stop timeout, or an
|
|
7
|
+
* external `kill -9` on the daemon PID) tears the daemon down WITHOUT running
|
|
8
|
+
* that reap -- and because the leads are detached, they survive and orphan to
|
|
9
|
+
* init.
|
|
10
|
+
*
|
|
11
|
+
* The in-memory activeTeams map dies with the daemon, so a separate process
|
|
12
|
+
* (the `telora-daemon stop` CLI, or the NEXT daemon at boot) has no way to find
|
|
13
|
+
* those orphans. This module persists each live lead pid to a small JSON file
|
|
14
|
+
* in the global state dir so:
|
|
15
|
+
*
|
|
16
|
+
* - the CLI stop --force / timeout path can group-kill (`kill(-pid)`) every
|
|
17
|
+
* recorded lead after it SIGKILLs the daemon, and
|
|
18
|
+
* - the next daemon boot can reap any lead left alive by a prior hard kill
|
|
19
|
+
* (the only closure available for a bare external `kill -9 <daemon>`, which
|
|
20
|
+
* no in-process handler can intercept).
|
|
21
|
+
*
|
|
22
|
+
* All file ops are best-effort and never throw: a missing/corrupt file yields
|
|
23
|
+
* an empty fleet, and a write failure is swallowed (orphan prevention is a
|
|
24
|
+
* backstop, never a blocker on the spawn/exit hot path). One daemon per host
|
|
25
|
+
* (PID lock) makes read-modify-write races a non-issue.
|
|
26
|
+
*/
|
|
27
|
+
import { existsSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
28
|
+
import { resolve } from 'node:path';
|
|
29
|
+
import { resolveGlobalStateDir } from './daemon-process.js';
|
|
30
|
+
/** Resolve the worker pidfile path in the global state dir (~/.telora/). */
|
|
31
|
+
export function resolveWorkerPidfilePath() {
|
|
32
|
+
return resolve(resolveGlobalStateDir(), 'daemon.workers.json');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read the persisted worker fleet. Tolerant: a missing, unreadable, or
|
|
36
|
+
* malformed file returns []. Only well-formed { pid, label } entries with a
|
|
37
|
+
* real pid (> 1) survive parsing.
|
|
38
|
+
*/
|
|
39
|
+
export function readWorkerPidfile(path = resolveWorkerPidfilePath()) {
|
|
40
|
+
if (!existsSync(path))
|
|
41
|
+
return [];
|
|
42
|
+
try {
|
|
43
|
+
const raw = JSON.parse(readFileSync(path, 'utf-8'));
|
|
44
|
+
if (!Array.isArray(raw))
|
|
45
|
+
return [];
|
|
46
|
+
const out = [];
|
|
47
|
+
for (const e of raw) {
|
|
48
|
+
if (typeof e === 'object' && e !== null &&
|
|
49
|
+
typeof e.pid === 'number' &&
|
|
50
|
+
e.pid > 1) {
|
|
51
|
+
const entry = e;
|
|
52
|
+
out.push({ pid: entry.pid, label: typeof entry.label === 'string' ? entry.label : 'unknown' });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Best-effort write of the fleet. Swallows all errors. */
|
|
62
|
+
function writeWorkerPidfile(entries, path) {
|
|
63
|
+
try {
|
|
64
|
+
writeFileSync(path, JSON.stringify(entries), { mode: 0o600 });
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Orphan prevention is a backstop -- never fail a spawn/exit on this.
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Record a live team lead. Idempotent per pid (a re-record updates the label).
|
|
72
|
+
* No-op for an invalid/init pid (<= 1).
|
|
73
|
+
*/
|
|
74
|
+
export function recordWorkerPid(pid, label, path = resolveWorkerPidfilePath()) {
|
|
75
|
+
if (!Number.isInteger(pid) || pid <= 1)
|
|
76
|
+
return;
|
|
77
|
+
const entries = readWorkerPidfile(path).filter((e) => e.pid !== pid);
|
|
78
|
+
entries.push({ pid, label });
|
|
79
|
+
writeWorkerPidfile(entries, path);
|
|
80
|
+
}
|
|
81
|
+
/** Remove a lead pid on its exit. No-op when absent. */
|
|
82
|
+
export function removeWorkerPid(pid, path = resolveWorkerPidfilePath()) {
|
|
83
|
+
const entries = readWorkerPidfile(path);
|
|
84
|
+
const next = entries.filter((e) => e.pid !== pid);
|
|
85
|
+
if (next.length === entries.length)
|
|
86
|
+
return;
|
|
87
|
+
if (next.length === 0) {
|
|
88
|
+
clearWorkerPidfile(path);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
writeWorkerPidfile(next, path);
|
|
92
|
+
}
|
|
93
|
+
/** Delete the pidfile entirely (graceful shutdown clears it after reaping). */
|
|
94
|
+
export function clearWorkerPidfile(path = resolveWorkerPidfilePath()) {
|
|
95
|
+
try {
|
|
96
|
+
if (existsSync(path))
|
|
97
|
+
unlinkSync(path);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Best effort.
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Default liveness: kill(pid, 0) throws iff the process does not exist. */
|
|
104
|
+
function defaultIsAlive(pid) {
|
|
105
|
+
try {
|
|
106
|
+
process.kill(pid, 0);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Group-SIGKILL every still-alive persisted lead. Because leads are spawned
|
|
115
|
+
* detached (own group, pgid == lead pid), `kill(-pid)` reaps the lead AND any
|
|
116
|
+
* host children it sub-spawned in one signal; a bare-pid fallback covers a lead
|
|
117
|
+
* that somehow is not a group leader. Pure over the injected seams. Never throws
|
|
118
|
+
* (a vanished process is success).
|
|
119
|
+
*/
|
|
120
|
+
export function reapPersistedWorkerGroups(entries, deps = {}) {
|
|
121
|
+
const kill = deps.kill ?? ((pid, signal) => { process.kill(pid, signal); });
|
|
122
|
+
const isAlive = deps.isAlive ?? defaultIsAlive;
|
|
123
|
+
const result = { reaped: [], skipped: [] };
|
|
124
|
+
for (const entry of entries) {
|
|
125
|
+
const { pid } = entry;
|
|
126
|
+
if (!Number.isInteger(pid) || pid <= 1) {
|
|
127
|
+
result.skipped.push(pid);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (!isAlive(pid)) {
|
|
131
|
+
result.skipped.push(pid);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
// Group-first (detached lead => pgid == pid), bare-pid fallback.
|
|
135
|
+
try {
|
|
136
|
+
kill(-pid, 'SIGKILL');
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
try {
|
|
140
|
+
kill(pid, 'SIGKILL');
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// Already gone.
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
result.reaped.push(pid);
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Read + reap the persisted fleet, then clear the file. Used by the CLI hard
|
|
152
|
+
* stop (after SIGKILLing the daemon) and by the next daemon boot (to reap leads
|
|
153
|
+
* a prior hard kill orphaned). Returns the reap result for logging.
|
|
154
|
+
*/
|
|
155
|
+
export function reapAndClearWorkerPidfile(path = resolveWorkerPidfilePath(), deps = {}) {
|
|
156
|
+
const entries = readWorkerPidfile(path);
|
|
157
|
+
const result = reapPersistedWorkerGroups(entries, deps);
|
|
158
|
+
clearWorkerPidfile(path);
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=worker-pidfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-pidfile.js","sourceRoot":"","sources":["../src/worker-pidfile.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telora/daemon",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.31",
|
|
4
4
|
"description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"//testRunner": "Uses Node.js built-in test runner (node:test) via tsx for TypeScript support. The root package uses Vitest; this is a deliberate choice for the daemon package to avoid framework dependencies. See src/__tests__/ for test files.",
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@telora/daemon": "^0.19.2",
|
|
40
|
-
"@telora/daemon-core": "^0.2.
|
|
40
|
+
"@telora/daemon-core": "^0.2.57",
|
|
41
41
|
"@telora/mcp-products": "^0.22.88",
|
|
42
42
|
"commander": "^14.0.3",
|
|
43
43
|
"yaml": "^2.4.0",
|