@dorokuma/herdsman 0.9.0 → 0.11.5
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/README.ja.md +4 -2
- package/README.md +5 -3
- package/dist/src/agent-history/antigravity-proto.js +1 -1
- package/dist/src/agent-history/antigravity-proto.js.map +1 -1
- package/dist/src/agent-history/antigravity-reader.d.ts +13 -1
- package/dist/src/agent-history/antigravity-reader.d.ts.map +1 -1
- package/dist/src/agent-history/antigravity-reader.js +22 -1
- package/dist/src/agent-history/antigravity-reader.js.map +1 -1
- package/dist/src/agent-history/discovery.d.ts +8 -2
- package/dist/src/agent-history/discovery.d.ts.map +1 -1
- package/dist/src/agent-history/discovery.js +89 -9
- package/dist/src/agent-history/discovery.js.map +1 -1
- package/dist/src/agent-history/readers.d.ts +15 -1
- package/dist/src/agent-history/readers.d.ts.map +1 -1
- package/dist/src/agent-history/readers.js +77 -31
- package/dist/src/agent-history/readers.js.map +1 -1
- package/dist/src/agent-history/service.d.ts +4 -2
- package/dist/src/agent-history/service.d.ts.map +1 -1
- package/dist/src/agent-history/service.js +22 -22
- package/dist/src/agent-history/service.js.map +1 -1
- package/dist/src/agent-history/source-fingerprint.d.ts +7 -0
- package/dist/src/agent-history/source-fingerprint.d.ts.map +1 -0
- package/dist/src/agent-history/source-fingerprint.js +26 -0
- package/dist/src/agent-history/source-fingerprint.js.map +1 -0
- package/dist/src/agent-history/text.d.ts.map +1 -1
- package/dist/src/agent-history/text.js +5 -0
- package/dist/src/agent-history/text.js.map +1 -1
- package/dist/src/cli/herdsman.d.ts.map +1 -1
- package/dist/src/cli/herdsman.js +31 -9
- package/dist/src/cli/herdsman.js.map +1 -1
- package/dist/src/daemon/agent-event-reconciler.d.ts +25 -4
- package/dist/src/daemon/agent-event-reconciler.d.ts.map +1 -1
- package/dist/src/daemon/agent-event-reconciler.js +84 -6
- package/dist/src/daemon/agent-event-reconciler.js.map +1 -1
- package/dist/src/daemon/herdr-session-watch-manager.d.ts +1 -0
- package/dist/src/daemon/herdr-session-watch-manager.d.ts.map +1 -1
- package/dist/src/daemon/herdr-session-watch-manager.js +176 -55
- package/dist/src/daemon/herdr-session-watch-manager.js.map +1 -1
- package/dist/src/daemon/observability-server.d.ts +3 -0
- package/dist/src/daemon/observability-server.d.ts.map +1 -1
- package/dist/src/daemon/observability-server.js +73 -24
- package/dist/src/daemon/observability-server.js.map +1 -1
- package/dist/src/daemon/process-manager.d.ts +41 -2
- package/dist/src/daemon/process-manager.d.ts.map +1 -1
- package/dist/src/daemon/process-manager.js +340 -19
- package/dist/src/daemon/process-manager.js.map +1 -1
- package/dist/src/daemon/service.d.ts +46 -0
- package/dist/src/daemon/service.d.ts.map +1 -1
- package/dist/src/daemon/service.js +172 -12
- package/dist/src/daemon/service.js.map +1 -1
- package/dist/src/db/agent-events.d.ts +34 -1
- package/dist/src/db/agent-events.d.ts.map +1 -1
- package/dist/src/db/agent-events.js +168 -28
- package/dist/src/db/agent-events.js.map +1 -1
- package/dist/src/db/agent-history-cache.d.ts +4 -0
- package/dist/src/db/agent-history-cache.d.ts.map +1 -1
- package/dist/src/db/agent-history-cache.js +27 -0
- package/dist/src/db/agent-history-cache.js.map +1 -1
- package/dist/src/db/agent-orchestrator-scopes.d.ts +8 -0
- package/dist/src/db/agent-orchestrator-scopes.d.ts.map +1 -1
- package/dist/src/db/agent-orchestrator-scopes.js +13 -0
- package/dist/src/db/agent-orchestrator-scopes.js.map +1 -1
- package/dist/src/db/agents.d.ts +44 -0
- package/dist/src/db/agents.d.ts.map +1 -1
- package/dist/src/db/agents.js +91 -5
- package/dist/src/db/agents.js.map +1 -1
- package/dist/src/db/client.d.ts +1 -0
- package/dist/src/db/client.d.ts.map +1 -1
- package/dist/src/db/client.js +12 -0
- package/dist/src/db/client.js.map +1 -1
- package/dist/src/db/schema.d.ts +391 -0
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +34 -0
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/db/status-event-plans.d.ts +62 -0
- package/dist/src/db/status-event-plans.d.ts.map +1 -0
- package/dist/src/db/status-event-plans.js +147 -0
- package/dist/src/db/status-event-plans.js.map +1 -0
- package/dist/src/herdr/pane-identity-resolver.d.ts +4 -0
- package/dist/src/herdr/pane-identity-resolver.d.ts.map +1 -1
- package/dist/src/herdr/pane-identity-resolver.js +13 -1
- package/dist/src/herdr/pane-identity-resolver.js.map +1 -1
- package/dist/src/herdr/socket-client.d.ts +2 -0
- package/dist/src/herdr/socket-client.d.ts.map +1 -1
- package/dist/src/herdr/socket-client.js +64 -20
- package/dist/src/herdr/socket-client.js.map +1 -1
- package/dist/src/observability/agent-context-service.d.ts +17 -1
- package/dist/src/observability/agent-context-service.d.ts.map +1 -1
- package/dist/src/observability/agent-context-service.js +85 -21
- package/dist/src/observability/agent-context-service.js.map +1 -1
- package/dist/src/observability/agent-index-service.d.ts +47 -2
- package/dist/src/observability/agent-index-service.d.ts.map +1 -1
- package/dist/src/observability/agent-index-service.js +1125 -115
- package/dist/src/observability/agent-index-service.js.map +1 -1
- package/dist/src/observability/agent-orchestrator-service.d.ts.map +1 -1
- package/dist/src/observability/agent-orchestrator-service.js +34 -12
- package/dist/src/observability/agent-orchestrator-service.js.map +1 -1
- package/dist/src/observability/contracts.d.ts +2 -1
- package/dist/src/observability/contracts.d.ts.map +1 -1
- package/dist/src/observability/contracts.js.map +1 -1
- package/dist/src/observability/interactive-pi.d.ts +1 -1
- package/dist/src/observability/interactive-pi.d.ts.map +1 -1
- package/dist/src/observability/interactive-pi.js +1 -1
- package/dist/src/observability/interactive-pi.js.map +1 -1
- package/dist/src/observability/schemas.d.ts +1 -0
- package/dist/src/observability/schemas.d.ts.map +1 -1
- package/dist/src/observability/schemas.js +1 -0
- package/dist/src/observability/schemas.js.map +1 -1
- package/dist/src/observability/turn-completion.d.ts +2 -1
- package/dist/src/observability/turn-completion.d.ts.map +1 -1
- package/dist/src/observability/turn-completion.js +10 -1
- package/dist/src/observability/turn-completion.js.map +1 -1
- package/dist/src/shared/unix-peercred.d.ts +14 -0
- package/dist/src/shared/unix-peercred.d.ts.map +1 -0
- package/dist/src/shared/unix-peercred.js +144 -0
- package/dist/src/shared/unix-peercred.js.map +1 -0
- package/drizzle/0008_pane_tombstones.sql +9 -0
- package/drizzle/0009_high_lake.sql +24 -0
- package/drizzle/meta/0008_snapshot.json +823 -0
- package/drizzle/meta/0009_snapshot.json +975 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +24 -22
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
1
|
+
import { spawn, spawnSync } from "node:child_process";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
2
3
|
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
3
4
|
import { createConnection } from "node:net";
|
|
4
|
-
import { dirname } from "node:path";
|
|
5
|
+
import { basename, dirname } from "node:path";
|
|
6
|
+
export const DAEMON_ENTRYPOINT_NAMES = ["herdsman-daemon.js"];
|
|
7
|
+
export const CLI_ENTRYPOINT_NAMES = ["herdsman-daemon.js", "herdsman.js", "herdsman"];
|
|
8
|
+
/**
|
|
9
|
+
* Instance lock path for the daemon's bare entrypoint (herdsman-daemon.js).
|
|
10
|
+
* Deliberately distinct from the CLI operation lock (`${pidPath}.lock`) so a
|
|
11
|
+
* daemon started outside the CLI does not collide with CLI start/stop/restart
|
|
12
|
+
* operations, and vice versa.
|
|
13
|
+
*/
|
|
14
|
+
export function daemonInstanceLockPath(pidPath) {
|
|
15
|
+
return `${pidPath}.instance.lock`;
|
|
16
|
+
}
|
|
17
|
+
const warnedUnknownIdentityPids = new Set();
|
|
5
18
|
export function readDaemonRuntimeRecord(path) {
|
|
6
19
|
if (!existsSync(path)) {
|
|
7
20
|
return undefined;
|
|
@@ -12,7 +25,6 @@ export function readDaemonRuntimeRecord(path) {
|
|
|
12
25
|
typeof value.dbPath !== "string" ||
|
|
13
26
|
typeof value.homeDir !== "string" ||
|
|
14
27
|
typeof value.logPath !== "string" ||
|
|
15
|
-
typeof value.pid !== "number" ||
|
|
16
28
|
typeof value.pidPath !== "string" ||
|
|
17
29
|
typeof value.socketPath !== "string" ||
|
|
18
30
|
typeof value.startedAt !== "string") {
|
|
@@ -24,6 +36,25 @@ export function readDaemonRuntimeRecord(path) {
|
|
|
24
36
|
return undefined;
|
|
25
37
|
}
|
|
26
38
|
}
|
|
39
|
+
export function writeDaemonPidFile(pidPath, pid) {
|
|
40
|
+
mkdirSync(dirname(pidPath), { mode: 0o700, recursive: true });
|
|
41
|
+
writeFileSync(pidPath, `${pid}\n`, { mode: 0o600 });
|
|
42
|
+
}
|
|
43
|
+
export function removeDaemonPidFile(pidPath, expectedPid) {
|
|
44
|
+
try {
|
|
45
|
+
if (!existsSync(pidPath))
|
|
46
|
+
return false;
|
|
47
|
+
const content = readFileSync(pidPath, "utf8").trim();
|
|
48
|
+
if (Number(content) !== expectedPid)
|
|
49
|
+
return false;
|
|
50
|
+
rmSync(pidPath, { force: true });
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Never let pid clean-up failure abort shutdown
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
27
58
|
export function writeDaemonRuntimeRecord(path, record) {
|
|
28
59
|
mkdirSync(dirname(path), { mode: 0o700, recursive: true });
|
|
29
60
|
writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, { mode: 0o600 });
|
|
@@ -41,6 +72,7 @@ export async function prepareDaemonSocketPath(input) {
|
|
|
41
72
|
}
|
|
42
73
|
export async function getDaemonStatus(input) {
|
|
43
74
|
const processIsRunning = input.deps?.isProcessRunning ?? isProcessRunning;
|
|
75
|
+
const identityProbe = input.deps?.identityProbe ?? readDaemonProcessIdentity;
|
|
44
76
|
const connectSocket = input.deps?.connectSocket ?? defaultConnectSocket;
|
|
45
77
|
if (!existsSync(input.pidPath)) {
|
|
46
78
|
if (await connectSocket(input.socketPath)) {
|
|
@@ -62,7 +94,7 @@ export async function getDaemonStatus(input) {
|
|
|
62
94
|
socketPath: input.socketPath,
|
|
63
95
|
socketReachable: true,
|
|
64
96
|
stalePid: pid,
|
|
65
|
-
state: "
|
|
97
|
+
state: "running",
|
|
66
98
|
};
|
|
67
99
|
}
|
|
68
100
|
return {
|
|
@@ -72,6 +104,28 @@ export async function getDaemonStatus(input) {
|
|
|
72
104
|
state: "stopped",
|
|
73
105
|
};
|
|
74
106
|
}
|
|
107
|
+
const isIdentified = identityProbe(pid, DAEMON_ENTRYPOINT_NAMES);
|
|
108
|
+
if (isIdentified === false) {
|
|
109
|
+
if (await connectSocket(input.socketPath)) {
|
|
110
|
+
return {
|
|
111
|
+
pidPath: input.pidPath,
|
|
112
|
+
socketPath: input.socketPath,
|
|
113
|
+
socketReachable: true,
|
|
114
|
+
stalePid: pid,
|
|
115
|
+
state: "running",
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
pidPath: input.pidPath,
|
|
120
|
+
socketPath: input.socketPath,
|
|
121
|
+
stalePid: pid,
|
|
122
|
+
state: "stopped",
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (isIdentified === undefined && !warnedUnknownIdentityPids.has(pid)) {
|
|
126
|
+
warnedUnknownIdentityPids.add(pid);
|
|
127
|
+
console.warn(`Unable to verify daemon process identity for PID ${pid}: /proc unavailable`);
|
|
128
|
+
}
|
|
75
129
|
return {
|
|
76
130
|
pid,
|
|
77
131
|
pidPath: input.pidPath,
|
|
@@ -88,10 +142,16 @@ export async function startDaemonProcess(input) {
|
|
|
88
142
|
pidPath: input.pidPath,
|
|
89
143
|
socketPath: input.socketPath,
|
|
90
144
|
});
|
|
91
|
-
if (existing.state === "running")
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
145
|
+
if (existing.state === "running") {
|
|
146
|
+
if (existing.socketReachable) {
|
|
147
|
+
const pid = "pid" in existing ? existing.pid : undefined;
|
|
148
|
+
throw new Error(pid !== undefined
|
|
149
|
+
? `Herdsman daemon is already running with pid ${pid}: ${existing.socketPath}`
|
|
150
|
+
: `Herdsman daemon is already running: ${existing.socketPath}`);
|
|
151
|
+
}
|
|
152
|
+
const pid = "pid" in existing ? existing.pid : undefined;
|
|
153
|
+
throw new Error(`Herdsman daemon process is already running${pid !== undefined ? ` with pid ${pid}` : ""} but its socket is not reachable: ${existing.socketPath}`);
|
|
154
|
+
}
|
|
95
155
|
if (existing.stalePid !== undefined)
|
|
96
156
|
rmSync(input.pidPath, { force: true });
|
|
97
157
|
let pidFd;
|
|
@@ -127,7 +187,7 @@ export async function startDaemonProcess(input) {
|
|
|
127
187
|
throw new Error("Failed to start Herdsman daemon: child pid was not assigned");
|
|
128
188
|
childPid = child.pid;
|
|
129
189
|
child.unref();
|
|
130
|
-
|
|
190
|
+
writeDaemonPidFile(input.pidPath, child.pid);
|
|
131
191
|
try {
|
|
132
192
|
const waitMs = input.deps?.waitMs ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
133
193
|
const connectSocket = input.deps?.readinessProbe ?? defaultConnectSocket;
|
|
@@ -157,12 +217,15 @@ export async function startDaemonProcess(input) {
|
|
|
157
217
|
}
|
|
158
218
|
throw error;
|
|
159
219
|
}
|
|
160
|
-
|
|
220
|
+
const record = {
|
|
161
221
|
...input.runtimeRecord,
|
|
162
|
-
pid: child.pid,
|
|
163
222
|
startedAt: new Date().toISOString(),
|
|
164
223
|
version: 1,
|
|
165
|
-
}
|
|
224
|
+
};
|
|
225
|
+
// The runtime record no longer carries a pid: the pid file is the pid
|
|
226
|
+
// source of truth, and a stale pid here misleads liveness checks.
|
|
227
|
+
delete record.pid;
|
|
228
|
+
writeDaemonRuntimeRecord(input.runtimeRecordPath, record);
|
|
166
229
|
return { pid: child.pid };
|
|
167
230
|
}
|
|
168
231
|
catch (error) {
|
|
@@ -185,15 +248,17 @@ export async function stopDaemonProcess(input) {
|
|
|
185
248
|
rmSync(input.pidPath, { force: true });
|
|
186
249
|
return { alreadyStopped: true };
|
|
187
250
|
}
|
|
188
|
-
if (status.state === "orphaned") {
|
|
189
|
-
throw new Error(`Herdsman daemon socket is reachable but its PID is stale: ${status.socketPath}`);
|
|
190
|
-
}
|
|
191
251
|
const killProcess = deps.killProcess ?? ((pid, signal) => process.kill(pid, signal));
|
|
192
252
|
const processIsRunning = deps.isProcessRunning ?? isProcessRunning;
|
|
193
253
|
const waitMs = deps.waitMs ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
194
|
-
const pid = status.pid;
|
|
195
|
-
if (pid === undefined)
|
|
254
|
+
const pid = "pid" in status ? status.pid : undefined;
|
|
255
|
+
if (pid === undefined) {
|
|
256
|
+
const stalePid = "stalePid" in status ? status.stalePid : undefined;
|
|
257
|
+
if (status.state === "running" && stalePid !== undefined) {
|
|
258
|
+
throw new Error(`Herdsman daemon socket is reachable at ${status.socketPath} but pid file ${status.pidPath} refers to stale PID ${stalePid}; the daemon is managed outside this pid file and cannot be stopped via CLI`);
|
|
259
|
+
}
|
|
196
260
|
throw new Error("Herdsman daemon status is missing a PID");
|
|
261
|
+
}
|
|
197
262
|
killProcess(pid, "SIGTERM");
|
|
198
263
|
const deadline = Date.now() + input.timeoutMs;
|
|
199
264
|
while (Date.now() < deadline) {
|
|
@@ -211,7 +276,7 @@ export async function stopDaemonProcess(input) {
|
|
|
211
276
|
rmSync(input.pidPath, { force: true });
|
|
212
277
|
return { alreadyStopped: false, pid };
|
|
213
278
|
}
|
|
214
|
-
throw new Error(`Timed out waiting for Herdsman daemon pid ${
|
|
279
|
+
throw new Error(`Timed out waiting for Herdsman daemon pid ${pid} to stop after SIGKILL`);
|
|
215
280
|
}
|
|
216
281
|
function openRotatedLog(path) {
|
|
217
282
|
try {
|
|
@@ -228,6 +293,27 @@ function spawnDaemonProcess(command, args, options) {
|
|
|
228
293
|
const child = spawn(command, args, options);
|
|
229
294
|
return { pid: child.pid, unref: () => child.unref() };
|
|
230
295
|
}
|
|
296
|
+
export function readDaemonProcessIdentity(pid, expectedNames = DAEMON_ENTRYPOINT_NAMES) {
|
|
297
|
+
if (!existsSync("/proc")) {
|
|
298
|
+
return undefined;
|
|
299
|
+
}
|
|
300
|
+
try {
|
|
301
|
+
const cmdline = readFileSync(`/proc/${pid}/cmdline`, "utf8");
|
|
302
|
+
const parts = cmdline.split("\0").filter(Boolean);
|
|
303
|
+
return parts.some((part) => expectedNames.includes(basename(part)));
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
const code = error.code;
|
|
307
|
+
if (code === "ENOENT" || code === "ESRCH") {
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
if (code === "EACCES" || code === "EPERM") {
|
|
311
|
+
return undefined;
|
|
312
|
+
}
|
|
313
|
+
// Other read errors (e.g. EINVAL, EIO): safe fallback is undefined (unknown/cannot verify)
|
|
314
|
+
return undefined;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
231
317
|
export function isProcessRunning(pid, probe = process.kill) {
|
|
232
318
|
try {
|
|
233
319
|
probe(pid, 0);
|
|
@@ -237,7 +323,242 @@ export function isProcessRunning(pid, probe = process.kill) {
|
|
|
237
323
|
return typeof error === "object" && error !== null && "code" in error && error.code === "EPERM";
|
|
238
324
|
}
|
|
239
325
|
}
|
|
240
|
-
function
|
|
326
|
+
export function releaseDaemonLock(lockPath, expectedPid = process.pid) {
|
|
327
|
+
try {
|
|
328
|
+
const ownerPath = `${lockPath}.owner.json`;
|
|
329
|
+
if (existsSync(ownerPath)) {
|
|
330
|
+
try {
|
|
331
|
+
const data = JSON.parse(readFileSync(ownerPath, "utf8"));
|
|
332
|
+
if (typeof data.pid === "number" && data.pid !== expectedPid) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
rmSync(ownerPath, { force: true });
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
// If owner.json is corrupted, do not remove
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
// Ignore lock release error
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Checks whether a kernel flock is currently held on lockPath by an active process.
|
|
349
|
+
* Spawns non-blocking `flock -x -n <lockPath> true`.
|
|
350
|
+
* Returns true only if flock exited with status 1 (lock held).
|
|
351
|
+
* Throws on environmental/spawn errors or unexpected status codes.
|
|
352
|
+
*/
|
|
353
|
+
export function isFlockHeld(lockPath) {
|
|
354
|
+
if (!existsSync(lockPath)) {
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
357
|
+
const res = spawnSync("flock", ["-x", "-n", lockPath, "true"], {
|
|
358
|
+
stdio: "ignore",
|
|
359
|
+
});
|
|
360
|
+
if (res.error) {
|
|
361
|
+
throw new Error(`Failed to probe flock on ${lockPath}: ${res.error.message}`, {
|
|
362
|
+
cause: res.error,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
if (res.status === 0) {
|
|
366
|
+
return false;
|
|
367
|
+
}
|
|
368
|
+
if (res.status === 1) {
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
throw new Error(`flock probe exited with unexpected status ${res.status} on ${lockPath}`);
|
|
372
|
+
}
|
|
373
|
+
function isChildProcessActive(pid) {
|
|
374
|
+
if (existsSync("/proc")) {
|
|
375
|
+
try {
|
|
376
|
+
const stat = readFileSync(`/proc/${pid}/stat`, "utf8");
|
|
377
|
+
const lastParen = stat.lastIndexOf(")");
|
|
378
|
+
if (lastParen === -1)
|
|
379
|
+
return false;
|
|
380
|
+
const rest = stat.slice(lastParen + 2).trim();
|
|
381
|
+
const state = rest.charAt(0);
|
|
382
|
+
return state !== "Z" && state !== "X" && state !== "T";
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
return false;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
try {
|
|
389
|
+
process.kill(pid, 0);
|
|
390
|
+
return true;
|
|
391
|
+
}
|
|
392
|
+
catch {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Acquires an exclusive non-blocking flock on lockPath using a child process.
|
|
398
|
+
* The child process runs `flock -x -n <lockPath> sh -c 'printf READY > <ackFile>; exec cat'`.
|
|
399
|
+
* The parent process waits for the READY handshake confirmation.
|
|
400
|
+
* The lock file is a persistent regular file and is NEVER removed to prevent inode reuse race conditions.
|
|
401
|
+
*/
|
|
402
|
+
export function acquireFlockHandle(lockPath) {
|
|
403
|
+
mkdirSync(dirname(lockPath), { mode: 0o700, recursive: true });
|
|
404
|
+
// Ensure persistent lock file exists and is never removed
|
|
405
|
+
const fd = openSync(lockPath, "a", 0o600);
|
|
406
|
+
closeSync(fd);
|
|
407
|
+
const ackFile = `${lockPath}.ack.${process.pid}.${Date.now()}.${randomUUID()}`;
|
|
408
|
+
const child = spawn("flock", ["-x", "-n", lockPath, "sh", "-c", `printf READY > "${ackFile}"; exec cat`], {
|
|
409
|
+
detached: true,
|
|
410
|
+
stdio: ["pipe", "ignore", "ignore"],
|
|
411
|
+
});
|
|
412
|
+
if (!child.pid) {
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
const start = Date.now();
|
|
416
|
+
let acquired = false;
|
|
417
|
+
while (Date.now() - start < 1000) {
|
|
418
|
+
if (existsSync(ackFile)) {
|
|
419
|
+
try {
|
|
420
|
+
const content = readFileSync(ackFile, "utf8");
|
|
421
|
+
if (content.startsWith("READY") && isChildProcessActive(child.pid)) {
|
|
422
|
+
acquired = true;
|
|
423
|
+
try {
|
|
424
|
+
rmSync(ackFile, { force: true });
|
|
425
|
+
}
|
|
426
|
+
catch { }
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
catch { }
|
|
431
|
+
}
|
|
432
|
+
// Check if child exited (e.g. flock returned 1 because lock is held by another process)
|
|
433
|
+
if (!isChildProcessActive(child.pid)) {
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
const until = Date.now() + 1;
|
|
437
|
+
while (Date.now() < until) { }
|
|
438
|
+
}
|
|
439
|
+
try {
|
|
440
|
+
rmSync(ackFile, { force: true });
|
|
441
|
+
}
|
|
442
|
+
catch { }
|
|
443
|
+
if (!acquired || !isChildProcessActive(child.pid)) {
|
|
444
|
+
try {
|
|
445
|
+
if (child.pid)
|
|
446
|
+
process.kill(-child.pid, "SIGKILL");
|
|
447
|
+
}
|
|
448
|
+
catch { }
|
|
449
|
+
try {
|
|
450
|
+
child.kill("SIGKILL");
|
|
451
|
+
}
|
|
452
|
+
catch { }
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
child.unref();
|
|
456
|
+
let released = false;
|
|
457
|
+
const release = () => {
|
|
458
|
+
if (released)
|
|
459
|
+
return;
|
|
460
|
+
released = true;
|
|
461
|
+
try {
|
|
462
|
+
try {
|
|
463
|
+
if (child.pid)
|
|
464
|
+
process.kill(-child.pid, "SIGKILL");
|
|
465
|
+
}
|
|
466
|
+
catch { }
|
|
467
|
+
try {
|
|
468
|
+
child.kill("SIGKILL");
|
|
469
|
+
}
|
|
470
|
+
catch { }
|
|
471
|
+
try {
|
|
472
|
+
child.stdin?.destroy();
|
|
473
|
+
}
|
|
474
|
+
catch { }
|
|
475
|
+
if (child.pid) {
|
|
476
|
+
const deadline = Date.now() + 100;
|
|
477
|
+
while (Date.now() < deadline) {
|
|
478
|
+
if (!isChildProcessActive(child.pid)) {
|
|
479
|
+
break;
|
|
480
|
+
}
|
|
481
|
+
const until = Date.now() + 1;
|
|
482
|
+
while (Date.now() < until) { }
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
catch {
|
|
487
|
+
// Ignore release errors to prevent blocking the release chain
|
|
488
|
+
}
|
|
489
|
+
};
|
|
490
|
+
return { release };
|
|
491
|
+
}
|
|
492
|
+
export function acquireDaemonLock(lockPath, deps) {
|
|
493
|
+
mkdirSync(dirname(lockPath), { mode: 0o700, recursive: true });
|
|
494
|
+
const currentPid = deps?.pid ?? process.pid;
|
|
495
|
+
const readOwnerPid = () => {
|
|
496
|
+
const ownerPath = `${lockPath}.owner.json`;
|
|
497
|
+
if (!existsSync(ownerPath))
|
|
498
|
+
return undefined;
|
|
499
|
+
try {
|
|
500
|
+
const data = JSON.parse(readFileSync(ownerPath, "utf8"));
|
|
501
|
+
return typeof data.pid === "number" && Number.isInteger(data.pid) && data.pid > 0
|
|
502
|
+
? data.pid
|
|
503
|
+
: undefined;
|
|
504
|
+
}
|
|
505
|
+
catch {
|
|
506
|
+
return undefined;
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
const formatLockHeldError = (pid) => {
|
|
510
|
+
const ownerInfo = pid !== undefined ? ` by PID ${pid}` : "";
|
|
511
|
+
return `Herdsman daemon operation lock is held${ownerInfo}: ${lockPath}. 确认无 daemon 操作在跑后可删除: ${lockPath}`;
|
|
512
|
+
};
|
|
513
|
+
const flockHandle = acquireFlockHandle(lockPath);
|
|
514
|
+
if (!flockHandle) {
|
|
515
|
+
const ownerPid = readOwnerPid();
|
|
516
|
+
throw new Error(formatLockHeldError(ownerPid));
|
|
517
|
+
}
|
|
518
|
+
// Flock acquired successfully. Write diagnostic owner metadata.
|
|
519
|
+
const ownerPath = `${lockPath}.owner.json`;
|
|
520
|
+
const owner = {
|
|
521
|
+
pid: currentPid,
|
|
522
|
+
startedAt: new Date().toISOString(),
|
|
523
|
+
};
|
|
524
|
+
try {
|
|
525
|
+
writeFileSync(ownerPath, `${JSON.stringify(owner, null, 2)}\n`, { mode: 0o600 });
|
|
526
|
+
}
|
|
527
|
+
catch {
|
|
528
|
+
// Diagnostic write error does not invalidate the kernel lock
|
|
529
|
+
}
|
|
530
|
+
let released = false;
|
|
531
|
+
return () => {
|
|
532
|
+
if (released)
|
|
533
|
+
return;
|
|
534
|
+
released = true;
|
|
535
|
+
try {
|
|
536
|
+
if (existsSync(ownerPath)) {
|
|
537
|
+
try {
|
|
538
|
+
const data = JSON.parse(readFileSync(ownerPath, "utf8"));
|
|
539
|
+
if (data.pid === currentPid) {
|
|
540
|
+
rmSync(ownerPath, { force: true });
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
catch { }
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
catch {
|
|
547
|
+
// Ignore cleanup error
|
|
548
|
+
}
|
|
549
|
+
flockHandle.release();
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
export async function withDaemonLock(lockPath, action, deps) {
|
|
553
|
+
const release = acquireDaemonLock(lockPath, deps);
|
|
554
|
+
try {
|
|
555
|
+
return await action();
|
|
556
|
+
}
|
|
557
|
+
finally {
|
|
558
|
+
release();
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
export function defaultConnectSocket(socketPath) {
|
|
241
562
|
return new Promise((resolve) => {
|
|
242
563
|
const socket = createConnection(socketPath);
|
|
243
564
|
const done = (value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../../src/daemon/process-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../../src/daemon/process-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,51 @@
|
|
|
1
|
+
import { type HerdrSessionListRunner } from "../herdr/session-list.js";
|
|
2
|
+
/**
|
|
3
|
+
* Periodic reconcile cadence. The 7-day (settled events) and 30-day (released
|
|
4
|
+
* scopes) TTLs only converge when AgentEventReconciler.reconcile runs, so the
|
|
5
|
+
* daemon drives it on a fixed 15-minute cycle instead of only at startup.
|
|
6
|
+
* 15 minutes is deliberately coarser than the watch manager's 10s/60s refresh
|
|
7
|
+
* ticks: reconcile opens sockets to every running Herdr session, while the TTLs
|
|
8
|
+
* it enforces are days long, so a 15-minute cycle converges promptly without
|
|
9
|
+
* per-tick socket traffic.
|
|
10
|
+
*/
|
|
11
|
+
export declare const RECONCILE_INTERVAL_MS: number;
|
|
12
|
+
type ReconcileRun = () => Promise<unknown>;
|
|
13
|
+
type IntervalHandle = ReturnType<typeof setInterval>;
|
|
14
|
+
/**
|
|
15
|
+
* Runs the reconcile cycle on a fixed cadence while guaranteeing at most one
|
|
16
|
+
* in-flight run: a tick that fires while the previous run is still executing is
|
|
17
|
+
* skipped. This mirrors HerdrSessionWatchManager's in-flight tick guard. SQLite
|
|
18
|
+
* writes on the daemon's single shared connection are synchronous, so the only
|
|
19
|
+
* concurrency hazard between periodic reconcile and live event writes would be
|
|
20
|
+
* two reconcile loops interleaving at their await points; the in-flight guard
|
|
21
|
+
* prevents that, keeping event writes and reconcile serialized exactly like the
|
|
22
|
+
* rest of the daemon.
|
|
23
|
+
*/
|
|
24
|
+
export declare class PeriodicReconcileScheduler {
|
|
25
|
+
#private;
|
|
26
|
+
constructor(options: {
|
|
27
|
+
clearInterval?: (handle: IntervalHandle) => void;
|
|
28
|
+
intervalMs: number;
|
|
29
|
+
run: ReconcileRun;
|
|
30
|
+
setInterval?: (callback: () => void, delay: number) => IntervalHandle;
|
|
31
|
+
});
|
|
32
|
+
start(): void;
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
}
|
|
1
35
|
export declare function runObservabilityDaemonService(input?: {
|
|
36
|
+
connectSocket?: (socketPath: string) => Promise<boolean>;
|
|
2
37
|
environment?: NodeJS.ProcessEnv | undefined;
|
|
38
|
+
exit?: (code?: number) => void;
|
|
39
|
+
pid?: number;
|
|
40
|
+
reconcileClearInterval?: (handle: ReturnType<typeof setInterval>) => void;
|
|
41
|
+
reconcileIntervalMs?: number;
|
|
42
|
+
reconcileSetInterval?: (callback: () => void, delay: number) => ReturnType<typeof setInterval>;
|
|
43
|
+
sessionList?: HerdrSessionListRunner;
|
|
44
|
+
signalTarget?: {
|
|
45
|
+
off?: (event: "SIGINT" | "SIGTERM", listener: () => void | Promise<void>) => void;
|
|
46
|
+
once: (event: "SIGINT" | "SIGTERM", listener: () => void | Promise<void>) => void;
|
|
47
|
+
};
|
|
3
48
|
}): Promise<void>;
|
|
4
49
|
export declare function resolveMigrationsFolder(startDir: string): string;
|
|
50
|
+
export {};
|
|
5
51
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/daemon/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/daemon/service.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AASpG;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD,KAAK,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3C,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD;;;;;;;;;GASG;AACH,qBAAa,0BAA0B;;gBAQzB,OAAO,EAAE;QACnB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;QACjD,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,YAAY,CAAC;QAClB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,cAAc,CAAC;KACvE;IAOD,KAAK,IAAI,IAAI;IAeP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B;AAED,wBAAsB,6BAA6B,CACjD,KAAK,GAAE;IACL,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC/F,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,YAAY,CAAC,EAAE;QACb,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;QAClF,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;KACnF,CAAC;CACE,GACL,OAAO,CAAC,IAAI,CAAC,CAkMf;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAahE"}
|