@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.
Files changed (122) hide show
  1. package/README.ja.md +4 -2
  2. package/README.md +5 -3
  3. package/dist/src/agent-history/antigravity-proto.js +1 -1
  4. package/dist/src/agent-history/antigravity-proto.js.map +1 -1
  5. package/dist/src/agent-history/antigravity-reader.d.ts +13 -1
  6. package/dist/src/agent-history/antigravity-reader.d.ts.map +1 -1
  7. package/dist/src/agent-history/antigravity-reader.js +22 -1
  8. package/dist/src/agent-history/antigravity-reader.js.map +1 -1
  9. package/dist/src/agent-history/discovery.d.ts +8 -2
  10. package/dist/src/agent-history/discovery.d.ts.map +1 -1
  11. package/dist/src/agent-history/discovery.js +89 -9
  12. package/dist/src/agent-history/discovery.js.map +1 -1
  13. package/dist/src/agent-history/readers.d.ts +15 -1
  14. package/dist/src/agent-history/readers.d.ts.map +1 -1
  15. package/dist/src/agent-history/readers.js +77 -31
  16. package/dist/src/agent-history/readers.js.map +1 -1
  17. package/dist/src/agent-history/service.d.ts +4 -2
  18. package/dist/src/agent-history/service.d.ts.map +1 -1
  19. package/dist/src/agent-history/service.js +22 -22
  20. package/dist/src/agent-history/service.js.map +1 -1
  21. package/dist/src/agent-history/source-fingerprint.d.ts +7 -0
  22. package/dist/src/agent-history/source-fingerprint.d.ts.map +1 -0
  23. package/dist/src/agent-history/source-fingerprint.js +26 -0
  24. package/dist/src/agent-history/source-fingerprint.js.map +1 -0
  25. package/dist/src/agent-history/text.d.ts.map +1 -1
  26. package/dist/src/agent-history/text.js +5 -0
  27. package/dist/src/agent-history/text.js.map +1 -1
  28. package/dist/src/cli/herdsman.d.ts.map +1 -1
  29. package/dist/src/cli/herdsman.js +31 -9
  30. package/dist/src/cli/herdsman.js.map +1 -1
  31. package/dist/src/daemon/agent-event-reconciler.d.ts +25 -4
  32. package/dist/src/daemon/agent-event-reconciler.d.ts.map +1 -1
  33. package/dist/src/daemon/agent-event-reconciler.js +84 -6
  34. package/dist/src/daemon/agent-event-reconciler.js.map +1 -1
  35. package/dist/src/daemon/herdr-session-watch-manager.d.ts +1 -0
  36. package/dist/src/daemon/herdr-session-watch-manager.d.ts.map +1 -1
  37. package/dist/src/daemon/herdr-session-watch-manager.js +176 -55
  38. package/dist/src/daemon/herdr-session-watch-manager.js.map +1 -1
  39. package/dist/src/daemon/observability-server.d.ts +3 -0
  40. package/dist/src/daemon/observability-server.d.ts.map +1 -1
  41. package/dist/src/daemon/observability-server.js +73 -24
  42. package/dist/src/daemon/observability-server.js.map +1 -1
  43. package/dist/src/daemon/process-manager.d.ts +41 -2
  44. package/dist/src/daemon/process-manager.d.ts.map +1 -1
  45. package/dist/src/daemon/process-manager.js +340 -19
  46. package/dist/src/daemon/process-manager.js.map +1 -1
  47. package/dist/src/daemon/service.d.ts +46 -0
  48. package/dist/src/daemon/service.d.ts.map +1 -1
  49. package/dist/src/daemon/service.js +172 -12
  50. package/dist/src/daemon/service.js.map +1 -1
  51. package/dist/src/db/agent-events.d.ts +34 -1
  52. package/dist/src/db/agent-events.d.ts.map +1 -1
  53. package/dist/src/db/agent-events.js +168 -28
  54. package/dist/src/db/agent-events.js.map +1 -1
  55. package/dist/src/db/agent-history-cache.d.ts +4 -0
  56. package/dist/src/db/agent-history-cache.d.ts.map +1 -1
  57. package/dist/src/db/agent-history-cache.js +27 -0
  58. package/dist/src/db/agent-history-cache.js.map +1 -1
  59. package/dist/src/db/agent-orchestrator-scopes.d.ts +8 -0
  60. package/dist/src/db/agent-orchestrator-scopes.d.ts.map +1 -1
  61. package/dist/src/db/agent-orchestrator-scopes.js +13 -0
  62. package/dist/src/db/agent-orchestrator-scopes.js.map +1 -1
  63. package/dist/src/db/agents.d.ts +44 -0
  64. package/dist/src/db/agents.d.ts.map +1 -1
  65. package/dist/src/db/agents.js +91 -5
  66. package/dist/src/db/agents.js.map +1 -1
  67. package/dist/src/db/client.d.ts +1 -0
  68. package/dist/src/db/client.d.ts.map +1 -1
  69. package/dist/src/db/client.js +12 -0
  70. package/dist/src/db/client.js.map +1 -1
  71. package/dist/src/db/schema.d.ts +391 -0
  72. package/dist/src/db/schema.d.ts.map +1 -1
  73. package/dist/src/db/schema.js +34 -0
  74. package/dist/src/db/schema.js.map +1 -1
  75. package/dist/src/db/status-event-plans.d.ts +62 -0
  76. package/dist/src/db/status-event-plans.d.ts.map +1 -0
  77. package/dist/src/db/status-event-plans.js +147 -0
  78. package/dist/src/db/status-event-plans.js.map +1 -0
  79. package/dist/src/herdr/pane-identity-resolver.d.ts +4 -0
  80. package/dist/src/herdr/pane-identity-resolver.d.ts.map +1 -1
  81. package/dist/src/herdr/pane-identity-resolver.js +13 -1
  82. package/dist/src/herdr/pane-identity-resolver.js.map +1 -1
  83. package/dist/src/herdr/socket-client.d.ts +2 -0
  84. package/dist/src/herdr/socket-client.d.ts.map +1 -1
  85. package/dist/src/herdr/socket-client.js +64 -20
  86. package/dist/src/herdr/socket-client.js.map +1 -1
  87. package/dist/src/observability/agent-context-service.d.ts +17 -1
  88. package/dist/src/observability/agent-context-service.d.ts.map +1 -1
  89. package/dist/src/observability/agent-context-service.js +85 -21
  90. package/dist/src/observability/agent-context-service.js.map +1 -1
  91. package/dist/src/observability/agent-index-service.d.ts +47 -2
  92. package/dist/src/observability/agent-index-service.d.ts.map +1 -1
  93. package/dist/src/observability/agent-index-service.js +1125 -115
  94. package/dist/src/observability/agent-index-service.js.map +1 -1
  95. package/dist/src/observability/agent-orchestrator-service.d.ts.map +1 -1
  96. package/dist/src/observability/agent-orchestrator-service.js +34 -12
  97. package/dist/src/observability/agent-orchestrator-service.js.map +1 -1
  98. package/dist/src/observability/contracts.d.ts +2 -1
  99. package/dist/src/observability/contracts.d.ts.map +1 -1
  100. package/dist/src/observability/contracts.js.map +1 -1
  101. package/dist/src/observability/interactive-pi.d.ts +1 -1
  102. package/dist/src/observability/interactive-pi.d.ts.map +1 -1
  103. package/dist/src/observability/interactive-pi.js +1 -1
  104. package/dist/src/observability/interactive-pi.js.map +1 -1
  105. package/dist/src/observability/schemas.d.ts +1 -0
  106. package/dist/src/observability/schemas.d.ts.map +1 -1
  107. package/dist/src/observability/schemas.js +1 -0
  108. package/dist/src/observability/schemas.js.map +1 -1
  109. package/dist/src/observability/turn-completion.d.ts +2 -1
  110. package/dist/src/observability/turn-completion.d.ts.map +1 -1
  111. package/dist/src/observability/turn-completion.js +10 -1
  112. package/dist/src/observability/turn-completion.js.map +1 -1
  113. package/dist/src/shared/unix-peercred.d.ts +14 -0
  114. package/dist/src/shared/unix-peercred.d.ts.map +1 -0
  115. package/dist/src/shared/unix-peercred.js +144 -0
  116. package/dist/src/shared/unix-peercred.js.map +1 -0
  117. package/drizzle/0008_pane_tombstones.sql +9 -0
  118. package/drizzle/0009_high_lake.sql +24 -0
  119. package/drizzle/meta/0008_snapshot.json +823 -0
  120. package/drizzle/meta/0009_snapshot.json +975 -0
  121. package/drizzle/meta/_journal.json +14 -0
  122. 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: "orphaned",
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
- throw new Error(`Herdsman daemon is already running with pid ${existing.pid}`);
93
- if (existing.state === "orphaned")
94
- throw new Error(`Herdsman daemon socket is reachable but its PID is stale: ${existing.socketPath}`);
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
- writeFileSync(input.pidPath, `${child.pid}\n`, { mode: 0o600 });
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
- writeDaemonRuntimeRecord(input.runtimeRecordPath, {
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 ${status.pid} to stop after SIGKILL`);
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 defaultConnectSocket(socketPath) {
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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyDpC,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAiC,CAAC;QACrF,IACE,KAAK,CAAC,OAAO,KAAK,CAAC;YACnB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;YAChC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;YAC7B,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;YACpC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EACnC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,KAA4B,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,MAA2B;IAChF,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAG7C;IACC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,IAAI,oBAAoB,CAAC;IACxE,IAAI,MAAM,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAIrC;IACC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,IAAI,gBAAgB,CAAC;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,aAAa,IAAI,oBAAoB,CAAC;IAExE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,IAAI,MAAM,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,cAAc,EAAE,IAAI;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,eAAe,EAAE,IAAI;gBACrB,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QACjE,IAAI,MAAM,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,eAAe,EAAE,IAAI;gBACrB,QAAQ,EAAE,GAAG;gBACb,KAAK,EAAE,UAAU;aAClB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,eAAe,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;QACtD,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAUxC;IACC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;QACrC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;QAC9B,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,KAAK,KAAK,UAAU;QAC/B,MAAM,IAAI,KAAK,CACb,6DAA6D,QAAQ,CAAC,UAAU,EAAE,CACnF,CAAC;IACJ,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,QAA4B,CAAC;IACjC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,uBAAuB,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,KAAiD,CAAC;QACtD,IAAI,CAAC;YACH,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,IAAI,kBAAkB,CAAC,CACtD,KAAK,CAAC,QAAQ,EACd,CAAC,KAAK,CAAC,cAAc,CAAC,EACtB;gBACE,QAAQ,EAAE,IAAI;gBACd,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;aAChC,CACF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC/F,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1F,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,cAAc,IAAI,oBAAoB,CAAC;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,IAAI,MAAM,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAAE,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5F,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,IAAI,gBAAgB,CAAC;YAC1E,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1F,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,IAAI,MAAM,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9E,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAClC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,IAAI,MAAM,CAAC,CAAC;gBAC7E,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;oBAAE,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,wBAAwB,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAChD,GAAG,KAAK,CAAC,aAAa;YACtB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,KAAK,SAAS,IAAI,kBAAkB;YAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAKvC;IACC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,6DAA6D,MAAM,CAAC,UAAU,EAAE,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAElF,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,gBAAgB,CAAC,GAAG,CAAC;QAAE,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;YAAE,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,kBAAkB,CACzB,OAAe,EACf,IAAc,EACd,OAA0C;IAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;AACxD,CAAC;AAID,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,QAAsB,OAAO,CAAC,IAAI;IAC9E,IAAI,CAAC;QACH,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;IAClG,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;YAC9B,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
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":"AAwBA,wBAAsB,6BAA6B,CACjD,KAAK,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAA;CAAO,GAC1D,OAAO,CAAC,IAAI,CAAC,CA+Ff;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAahE"}
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"}