@dorokuma/herdsman 0.12.1 → 0.13.3
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.md +8 -13
- package/dist/src/cli/herdsman.d.ts +14 -1
- package/dist/src/cli/herdsman.d.ts.map +1 -1
- package/dist/src/cli/herdsman.js +49 -65
- package/dist/src/cli/herdsman.js.map +1 -1
- package/dist/src/daemon/agent-event-reconciler.d.ts.map +1 -1
- package/dist/src/daemon/agent-event-reconciler.js +53 -2
- package/dist/src/daemon/agent-event-reconciler.js.map +1 -1
- package/dist/src/daemon/herdr-session-watch-manager.d.ts +13 -1
- package/dist/src/daemon/herdr-session-watch-manager.d.ts.map +1 -1
- package/dist/src/daemon/herdr-session-watch-manager.js +52 -16
- package/dist/src/daemon/herdr-session-watch-manager.js.map +1 -1
- package/dist/src/daemon/observability-server.d.ts.map +1 -1
- package/dist/src/daemon/observability-server.js +16 -1
- package/dist/src/daemon/observability-server.js.map +1 -1
- package/dist/src/daemon/process-manager.d.ts +50 -49
- package/dist/src/daemon/process-manager.d.ts.map +1 -1
- package/dist/src/daemon/process-manager.js +246 -204
- package/dist/src/daemon/process-manager.js.map +1 -1
- package/dist/src/daemon/service-supervision.d.ts +68 -0
- package/dist/src/daemon/service-supervision.d.ts.map +1 -0
- package/dist/src/daemon/service-supervision.js +127 -0
- package/dist/src/daemon/service-supervision.js.map +1 -0
- package/dist/src/daemon/service.d.ts +35 -0
- package/dist/src/daemon/service.d.ts.map +1 -1
- package/dist/src/daemon/service.js +185 -27
- package/dist/src/daemon/service.js.map +1 -1
- package/dist/src/db/agent-events.d.ts +15 -0
- package/dist/src/db/agent-events.d.ts.map +1 -1
- package/dist/src/db/agent-events.js +180 -54
- package/dist/src/db/agent-events.js.map +1 -1
- package/dist/src/db/agents.js +1 -1
- package/dist/src/db/agents.js.map +1 -1
- package/dist/src/db/status-event-plans.d.ts +1 -1
- package/dist/src/db/status-event-plans.d.ts.map +1 -1
- package/dist/src/db/status-event-plans.js +5 -4
- package/dist/src/db/status-event-plans.js.map +1 -1
- package/dist/src/herdr/session-list.d.ts +11 -0
- package/dist/src/herdr/session-list.d.ts.map +1 -1
- package/dist/src/herdr/session-list.js +13 -0
- package/dist/src/herdr/session-list.js.map +1 -1
- package/dist/src/herdr/socket-client.d.ts +8 -0
- package/dist/src/herdr/socket-client.d.ts.map +1 -1
- package/dist/src/herdr/socket-client.js +43 -0
- package/dist/src/herdr/socket-client.js.map +1 -1
- package/dist/src/observability/agent-index-service.d.ts +15 -0
- package/dist/src/observability/agent-index-service.d.ts.map +1 -1
- package/dist/src/observability/agent-index-service.js +499 -135
- 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 +5 -1
- package/dist/src/observability/agent-orchestrator-service.js.map +1 -1
- package/dist/src/observability/contracts.d.ts +1 -0
- package/dist/src/observability/contracts.d.ts.map +1 -1
- package/dist/src/observability/contracts.js +8 -0
- package/dist/src/observability/contracts.js.map +1 -1
- package/drizzle/0010_legacy_degraded_cleanup.sql +1 -0
- package/drizzle/meta/0010_snapshot.json +975 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +3 -6
- package/README.ja.md +0 -153
package/README.md
CHANGED
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|

|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
## Credits / Acknowledgements
|
|
5
|
-
|
|
6
|
-
herdsman is forked from ryonakae/herdsman at commit dfdd3a2 (v0.5.1). Thanks to the original author, Ryo Nakae, and the upstream project.
|
|
7
|
-
|
|
8
|
-
Upstream: https://github.com/ryonakae/herdsman
|
|
9
|
-
|
|
10
3
|
# Herdsman
|
|
11
4
|
|
|
12
|
-
<!-- README-I18N:START -->
|
|
13
|
-
**English** | [日本語](./README.ja.md)
|
|
14
|
-
<!-- README-I18N:END -->
|
|
15
|
-
|
|
16
5
|
Herdsman is a daemon-backed observability layer for coding agents running in Herdr. It provides two interfaces over the same durable agent index: pull-based CLI access to structured history, and owner-scoped Pi notifications with cached context and automatic wake.
|
|
17
6
|
|
|
18
7
|
Herdr's `herdr agent read` reads terminal streams or scrollback. Herdsman instead reads agent session data so callers can retrieve work status, structured message excerpts, compact tool results, and unread outcomes without parsing terminal output. Herdsman is read-only; use the official Herdr CLI or skill for agent start, prompts, waits, pane operations, and terminal control.
|
|
@@ -42,6 +31,8 @@ herdsman help
|
|
|
42
31
|
|
|
43
32
|
### Install from source
|
|
44
33
|
|
|
34
|
+
This path is for local development only; it is not a production install channel.
|
|
35
|
+
|
|
45
36
|
Source builds also require pnpm >= 11.9.0.
|
|
46
37
|
|
|
47
38
|
```bash
|
|
@@ -57,8 +48,12 @@ herdsman help
|
|
|
57
48
|
|
|
58
49
|
Herdsman agent commands and Pi notifications require the daemon. The daemon watches all running Herdr sessions reported by `herdr session list --json`, rescans them every 60 seconds, and does not index stopped Herdr sessions. Runtime files live in `~/.herdsman` by default. Set `HERDSMAN_HOME` to use another directory.
|
|
59
50
|
|
|
51
|
+
On the production host the package is installed from the npm registry (`npm install --global @dorokuma/herdsman@<version>`), and the daemon is managed by the systemd unit `herdsman.service`, which keeps it running: use `systemctl restart herdsman.service` to restart it. Install it with the same Node.js toolchain the unit uses, and prefix the command with that toolchain's `bin` on `PATH`, e.g. `PATH="$HOME/.nvm/versions/node/v22.23.1/bin:$PATH" npm install --global @dorokuma/herdsman@<version>`, so the global prefix matches the unit's (the production unit pins nvm v22.23.1). On a host that mixes `nvm` and `mise`, omitting the prefix can install into a different global prefix. There are no CLI start/stop/restart commands. `herdsman daemon status` reports the daemon state in either case.
|
|
52
|
+
|
|
53
|
+
For development or verification, run the entrypoint in the foreground with an explicit temporary data directory, so the production data directory is not used as scratch space:
|
|
54
|
+
|
|
60
55
|
```bash
|
|
61
|
-
herdsman daemon
|
|
56
|
+
HERDSMAN_HOME=/tmp/herdsman-dev node ./dist/src/cli/herdsman-daemon.js
|
|
62
57
|
```
|
|
63
58
|
|
|
64
59
|
## Main commands
|
|
@@ -135,7 +130,7 @@ Set `filter_upstream_errors: false` to restore waking on every outcome. `HERDSMA
|
|
|
135
130
|
Install the optional plugin from the GitHub release tag:
|
|
136
131
|
|
|
137
132
|
```bash
|
|
138
|
-
herdr plugin install dorokuma/herdsman/packages/herdsman-herdr-plugin --ref v0.
|
|
133
|
+
herdr plugin install dorokuma/herdsman/packages/herdsman-herdr-plugin --ref v0.13.3 --yes
|
|
139
134
|
```
|
|
140
135
|
|
|
141
136
|
Use the release tag that matches the installed Herdsman CLI version.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { ObservabilityRpcClient } from "../daemon/client.js";
|
|
3
|
-
|
|
3
|
+
import { type DaemonStatus } from "../daemon/process-manager.js";
|
|
4
|
+
type DaemonAction = "status";
|
|
4
5
|
type AgentScope = {
|
|
5
6
|
all?: boolean;
|
|
6
7
|
herdrSessionName?: string;
|
|
@@ -9,6 +10,7 @@ type AgentScope = {
|
|
|
9
10
|
export type CliCommand = {
|
|
10
11
|
action: DaemonAction;
|
|
11
12
|
command: "daemon";
|
|
13
|
+
text: boolean;
|
|
12
14
|
} | ({
|
|
13
15
|
command: "agent-list";
|
|
14
16
|
json: boolean;
|
|
@@ -33,6 +35,17 @@ type RunCliDeps = {
|
|
|
33
35
|
export declare function parseCliArgs(args: string[], environment?: NodeJS.ProcessEnv): CliCommand;
|
|
34
36
|
export declare function helpText(): string;
|
|
35
37
|
export declare function runCliCommand(command: CliCommand, deps: RunCliDeps): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Human-readable projection of `daemon status` for `--text`. The default output
|
|
40
|
+
* stays JSON, so scripts and the SKILL contract are unaffected; this view keeps
|
|
41
|
+
* only the fields a human reads at a glance and spells an unavailable restart
|
|
42
|
+
* count out instead of dropping it silently.
|
|
43
|
+
*
|
|
44
|
+
* `restartCount` is rendered only for the system unit that owns the pid. For
|
|
45
|
+
* `unmanaged`/`unknown` the JSON omits it too, and showing a number here would
|
|
46
|
+
* attribute another unit's restarts to this daemon.
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatDaemonStatus(status: DaemonStatus): string;
|
|
36
49
|
export declare function resolveRuntimeForCommand(): import("../config/runtime.js").RuntimeResolution | {
|
|
37
50
|
environment: NodeJS.ProcessEnv;
|
|
38
51
|
homeDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"herdsman.d.ts","sourceRoot":"","sources":["../../../src/cli/herdsman.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"herdsman.d.ts","sourceRoot":"","sources":["../../../src/cli/herdsman.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,6BAA6B,CAAC;AAMrC,KAAK,YAAY,GAAG,QAAQ,CAAC;AAE7B,KAAK,UAAU,GAAG;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1D,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAAC,GACvD,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAAC,GACtE,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,CAAC,GACvF;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExB,KAAK,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAEvE,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,UAAU,CAmBZ;AAkED,wBAAgB,QAAQ,IAAI,MAAM,CAiBjC;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxF;AAiHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAgB/D;AA2BD,wBAAgB,wBAAwB;;;;EAKvC;AAuCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,GAAG,OAAO,CAMV"}
|
package/dist/src/cli/herdsman.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { realpathSync } from "node:fs";
|
|
3
|
-
import {
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
4
|
import { argv, exit } from "node:process";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { resolveRuntime, runtimePathsFromRecordOrDefault } from "../config/runtime.js";
|
|
7
7
|
import { ObservabilityRpcClient } from "../daemon/client.js";
|
|
8
|
-
import { getDaemonStatus,
|
|
8
|
+
import { getDaemonStatus, isSystemdHerdsmanManaged, readDaemonRuntimeRecord, } from "../daemon/process-manager.js";
|
|
9
9
|
const CURRENT_HERDR_WORKSPACE_ERROR = "agent command requires HERDR_ENV=1 with HERDR_WORKSPACE_ID, --workspace <id>, --session <name>, or --all.";
|
|
10
10
|
export function parseCliArgs(args, environment = process.env) {
|
|
11
11
|
const [command, ...rest] = args;
|
|
@@ -16,8 +16,9 @@ export function parseCliArgs(args, environment = process.env) {
|
|
|
16
16
|
const [action = "status", ...extra] = rest;
|
|
17
17
|
if (!isDaemonAction(action))
|
|
18
18
|
throw new Error(`Unknown daemon action: ${action}`);
|
|
19
|
+
const text = takeFlag(extra, "--text");
|
|
19
20
|
rejectExtra(extra);
|
|
20
|
-
return { action, command: "daemon" };
|
|
21
|
+
return { action, command: "daemon", text };
|
|
21
22
|
}
|
|
22
23
|
if (command === "agent") {
|
|
23
24
|
return parseAgentCommand(rest, environment);
|
|
@@ -87,11 +88,20 @@ function scopedOrCurrent(scope, environment) {
|
|
|
87
88
|
}
|
|
88
89
|
export function helpText() {
|
|
89
90
|
return `Usage:
|
|
90
|
-
herdsman daemon [
|
|
91
|
+
herdsman daemon status [--text]
|
|
91
92
|
herdsman agent list [--all] [--workspace <id>] [--session <name>] [--json]
|
|
92
93
|
herdsman agent get <target> [--workspace <id>] [--session <name>] [--json]
|
|
93
94
|
herdsman agent read <target> [--limit N] [--workspace <id>] [--session <name>] [--json]
|
|
94
95
|
herdsman help
|
|
96
|
+
|
|
97
|
+
Notes:
|
|
98
|
+
\`daemon status\` keeps printing JSON by default (the existing machine
|
|
99
|
+
contract); \`--text\` is the human view. Its two supervision facts are
|
|
100
|
+
read-only: \`managedBy\` only says whether the pid belongs to the
|
|
101
|
+
herdsman.service system unit — \`unmanaged\` does not mean unsupervised, and
|
|
102
|
+
it is not a licence to kill anything. \`restartCount\` is systemd's
|
|
103
|
+
NRestarts, which reset-failed, a stop+start pair or an unloaded unit all
|
|
104
|
+
reset to 0 — so 0 is not "never crashed".
|
|
95
105
|
`;
|
|
96
106
|
}
|
|
97
107
|
export async function runCliCommand(command, deps) {
|
|
@@ -210,6 +220,36 @@ function formatAgentRead(result) {
|
|
|
210
220
|
function oneLine(value) {
|
|
211
221
|
return value.replace(/\s+/g, " ").slice(0, 160);
|
|
212
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Human-readable projection of `daemon status` for `--text`. The default output
|
|
225
|
+
* stays JSON, so scripts and the SKILL contract are unaffected; this view keeps
|
|
226
|
+
* only the fields a human reads at a glance and spells an unavailable restart
|
|
227
|
+
* count out instead of dropping it silently.
|
|
228
|
+
*
|
|
229
|
+
* `restartCount` is rendered only for the system unit that owns the pid. For
|
|
230
|
+
* `unmanaged`/`unknown` the JSON omits it too, and showing a number here would
|
|
231
|
+
* attribute another unit's restarts to this daemon.
|
|
232
|
+
*/
|
|
233
|
+
export function formatDaemonStatus(status) {
|
|
234
|
+
const lines = [`state: ${status.state}`];
|
|
235
|
+
const pid = "pid" in status ? status.pid : undefined;
|
|
236
|
+
if (pid !== undefined)
|
|
237
|
+
lines.push(`pid: ${pid}`);
|
|
238
|
+
if ("pidFileMissing" in status && status.pidFileMissing)
|
|
239
|
+
lines.push("pidFileMissing: true");
|
|
240
|
+
if ("stalePid" in status && status.stalePid !== undefined) {
|
|
241
|
+
lines.push(`stalePid: ${status.stalePid}`);
|
|
242
|
+
}
|
|
243
|
+
if ("socketReachable" in status)
|
|
244
|
+
lines.push(`socketReachable: ${status.socketReachable}`);
|
|
245
|
+
if (status.managedBy !== undefined) {
|
|
246
|
+
lines.push(`managedBy: ${status.managedBy}`);
|
|
247
|
+
if (isSystemdHerdsmanManaged(status.managedBy)) {
|
|
248
|
+
lines.push(`restartCount: ${status.restartCount ?? "unavailable"}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return lines.join("\n");
|
|
252
|
+
}
|
|
213
253
|
async function main() {
|
|
214
254
|
const command = parseCliArgs(argv.slice(2));
|
|
215
255
|
const runtime = resolveRuntimeForCommand();
|
|
@@ -224,67 +264,11 @@ async function main() {
|
|
|
224
264
|
});
|
|
225
265
|
}
|
|
226
266
|
async function runDaemonCommand(command, runtime) {
|
|
227
|
-
const
|
|
228
|
-
if (command.action === "status") {
|
|
229
|
-
console.log(JSON.stringify(await getDaemonStatus({
|
|
230
|
-
pidPath: runtime.paths.pidPath,
|
|
231
|
-
socketPath: runtime.paths.socketPath,
|
|
232
|
-
})));
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
if (command.action === "stop") {
|
|
236
|
-
const result = await withDaemonLock(lockPath, () => stopDaemonProcess({
|
|
237
|
-
pidPath: runtime.paths.pidPath,
|
|
238
|
-
socketPath: runtime.paths.socketPath,
|
|
239
|
-
timeoutMs: 10_000,
|
|
240
|
-
}));
|
|
241
|
-
console.log(JSON.stringify(result));
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
if (command.action === "restart") {
|
|
245
|
-
const result = await withDaemonLock(lockPath, async () => {
|
|
246
|
-
await stopDaemonProcess({
|
|
247
|
-
pidPath: runtime.paths.pidPath,
|
|
248
|
-
socketPath: runtime.paths.socketPath,
|
|
249
|
-
timeoutMs: 10_000,
|
|
250
|
-
});
|
|
251
|
-
return await startDaemonProcess({
|
|
252
|
-
entrypointPath: resolve(dirname(fileURLToPath(import.meta.url)), "herdsman-daemon.js"),
|
|
253
|
-
env: runtime.environment,
|
|
254
|
-
logPath: runtime.paths.logPath,
|
|
255
|
-
nodePath: process.execPath,
|
|
256
|
-
pidPath: runtime.paths.pidPath,
|
|
257
|
-
runtimeRecord: {
|
|
258
|
-
dbPath: runtime.paths.dbPath,
|
|
259
|
-
homeDir: runtime.homeDir,
|
|
260
|
-
logPath: runtime.paths.logPath,
|
|
261
|
-
pidPath: runtime.paths.pidPath,
|
|
262
|
-
socketPath: runtime.paths.socketPath,
|
|
263
|
-
},
|
|
264
|
-
runtimeRecordPath: runtime.paths.runtimeRecordPath,
|
|
265
|
-
socketPath: runtime.paths.socketPath,
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
console.log(JSON.stringify({ ...result, socketPath: runtime.paths.socketPath }));
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
271
|
-
const result = await withDaemonLock(lockPath, () => startDaemonProcess({
|
|
272
|
-
entrypointPath: resolve(dirname(fileURLToPath(import.meta.url)), "herdsman-daemon.js"),
|
|
273
|
-
env: runtime.environment,
|
|
274
|
-
logPath: runtime.paths.logPath,
|
|
275
|
-
nodePath: process.execPath,
|
|
267
|
+
const status = await getDaemonStatus({
|
|
276
268
|
pidPath: runtime.paths.pidPath,
|
|
277
|
-
runtimeRecord: {
|
|
278
|
-
dbPath: runtime.paths.dbPath,
|
|
279
|
-
homeDir: runtime.homeDir,
|
|
280
|
-
logPath: runtime.paths.logPath,
|
|
281
|
-
pidPath: runtime.paths.pidPath,
|
|
282
|
-
socketPath: runtime.paths.socketPath,
|
|
283
|
-
},
|
|
284
|
-
runtimeRecordPath: runtime.paths.runtimeRecordPath,
|
|
285
269
|
socketPath: runtime.paths.socketPath,
|
|
286
|
-
})
|
|
287
|
-
console.log(
|
|
270
|
+
});
|
|
271
|
+
console.log(command.text ? formatDaemonStatus(status) : JSON.stringify(status));
|
|
288
272
|
}
|
|
289
273
|
export function resolveRuntimeForCommand() {
|
|
290
274
|
const paths = runtimePathsFromRecordOrDefault({ environment: process.env });
|
|
@@ -315,7 +299,7 @@ function rejectExtra(args) {
|
|
|
315
299
|
throw new Error(`Invalid argument: ${args[0]}`);
|
|
316
300
|
}
|
|
317
301
|
function isDaemonAction(value) {
|
|
318
|
-
return value === "
|
|
302
|
+
return value === "status";
|
|
319
303
|
}
|
|
320
304
|
function formatCliError(error) {
|
|
321
305
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -323,7 +307,7 @@ function formatCliError(error) {
|
|
|
323
307
|
message.includes("ECONNREFUSED") ||
|
|
324
308
|
message.includes("Herdsman daemon socket closed") ||
|
|
325
309
|
message.includes("Observability RPC socket closed")) {
|
|
326
|
-
return `${message}\
|
|
310
|
+
return `${message}\nHerdsman's daemon has no CLI start/stop commands; check the systemd-managed service with \`systemctl status herdsman.service\`.`;
|
|
327
311
|
}
|
|
328
312
|
return message;
|
|
329
313
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"herdsman.js","sourceRoot":"","sources":["../../../src/cli/herdsman.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"herdsman.js","sourceRoot":"","sources":["../../../src/cli/herdsman.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAEL,eAAe,EACf,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,6BAA6B,GACjC,2GAA2G,CAAC;AAyB9G,MAAM,UAAU,YAAY,CAC1B,IAAc,EACd,cAAiC,OAAO,CAAC,GAAG;IAE5C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc,EAAE,WAA8B;IACvE,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,aAAa,GAAe;QAChC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;IAEF,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YACtE,IAAI;SACL,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5D,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,GAAG,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC;YAC9C,IAAI;YACJ,MAAM;SACP,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7D,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,GAAG,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC;YAC9C,IAAI;YACJ,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB,EAAE,WAA8B;IACxE,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,WAAW,CAAC,SAAS,KAAK,GAAG,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACpE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,kBAAkB,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO;;;;;;;;;;;;;;;CAeR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAmB,EAAE,IAAgB;IACvE,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,OAA4D,EAC5D,MAAqB;IAErB,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;QAClC,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAmB,EAAE,MAAe,EAAE,MAA8B;IACvF,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAmB,EAAE,MAAe;IAC7D,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY;QAClC,OAAO,eAAe,CAAC,MAAsC,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW;QAAE,OAAO,cAAc,CAAC,MAAoC,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY;QAClC,OAAO,eAAe,CAAC,MAAqC,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,MAAoC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,6BAA6B,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACzF,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR;YACE,KAAK,CAAC,WAAW;YACjB,KAAK,CAAC,IAAI,IAAI,EAAE;YAChB,KAAK,CAAC,KAAK,IAAI,SAAS;YACxB,KAAK,CAAC,MAAM;YACZ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC;YACvD,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE;SAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,MAAkC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO,kBAAkB,CAAC;IACtC,OAAO;QACL,SAAS,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;QAClC,UAAU,KAAK,CAAC,KAAK,IAAI,SAAS,EAAE;QACpC,WAAW,KAAK,CAAC,WAAW,EAAE;QAC9B,SAAS,KAAK,CAAC,MAAM,EAAE;QACvB,aAAa,KAAK,CAAC,UAAU,IAAI,SAAS,EAAE;QAC5C,cAAc,KAAK,CAAC,WAAW,EAAE;QACjC,kBAAkB,KAAK,CAAC,gBAAgB,EAAE;QAC1C,QAAQ,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,aAAa,IAAI,SAAS,EAAE;QACvD,kBAAkB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5G,cAAc,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE;QAClE,mBAAmB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE;QAC5E,cAAc,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KAC7I,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,MAAmC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAO,kBAAkB,CAAC;IACtC,MAAM,KAAK,GAAG;QACZ,SAAS,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;QAClC,UAAU,KAAK,CAAC,KAAK,IAAI,SAAS,EAAE;QACpC,SAAS,KAAK,CAAC,MAAM,EAAE;QACvB,EAAE;KACH,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR;YACE,OAAO,CAAC,SAAS,IAAI,EAAE;YACvB,OAAO,CAAC,IAAI;YACZ,OAAO,CAAC,QAAQ,IAAI,EAAE;YACtB,OAAO,CAAC,OAAO;gBACb,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,KAAK,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,IAAI,GAAG,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACjD,IAAI,gBAAgB,IAAI,MAAM,IAAI,MAAM,CAAC,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC5F,IAAI,UAAU,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,iBAAiB,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1F,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,IAAI,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,YAAY,IAAI,aAAa,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAC;IAC3C,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,MAAM,aAAa,CAAC,OAAO,EAAE;QAC3B,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACpF,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACnC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;KACrC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAmD,EACnD,OAAoD;IAEpD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;QAC9B,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;KACrC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,MAAM,KAAK,GAAG,+BAA+B,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChE,IAAI,MAAM;QAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IAChF,OAAO,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,IAAY;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,IAAc;IACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IACE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAChC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACjD,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EACnD,CAAC;QACD,OAAO,GAAG,OAAO,mIAAmI,CAAC;IACvJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;SACxC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SACjF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC9B,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAwB;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,IACE,gBAAgB,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB,UAAU;IACV,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnD,CAAC,EACF,CAAC;IACD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC9B,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-event-reconciler.d.ts","sourceRoot":"","sources":["../../../src/daemon/agent-event-reconciler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-event-reconciler.d.ts","sourceRoot":"","sources":["../../../src/daemon/agent-event-reconciler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAE7D,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,QAA2B,CAAC;AAE7D,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB,QAA0B,CAAC;AAEhE,sGAAsG;AACtG,eAAO,MAAM,oBAAoB,QAA2B,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAiB,CAAC;AAInD,MAAM,MAAM,yBAAyB,GAAG;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAYF,qBAAa,oBAAoB;;gBASnB,OAAO,EAAE;QACnB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;QAC3C,MAAM,EAAE,eAAe,CAAC;QACxB,MAAM,EAAE,2BAA2B,CAAC;QACpC,WAAW,EAAE,sBAAsB,CAAC;QACpC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,iBAAiB,CAAC;QACpE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;YAAE,gBAAgB,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;QACzF,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;KACzC;IAWK,SAAS,CACb,OAAO,GAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC7C,OAAO,CAAC,yBAAyB,CAAC;CAgJtC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
+
import { REDELIVERY_FRESHNESS_MS } from "../db/agent-events.js";
|
|
2
3
|
import { normalizeHerdrSessionSnapshot } from "../herdr/session-snapshot.js";
|
|
3
4
|
import { HerdrSocketClient } from "../herdr/socket-client.js";
|
|
4
5
|
export const RECONCILE_BATCH_LIMIT = 100;
|
|
@@ -97,9 +98,45 @@ export class AgentEventReconciler {
|
|
|
97
98
|
const panes = live.get(event.herdrSessionName);
|
|
98
99
|
if (!panes)
|
|
99
100
|
continue;
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
// 存活比对:代际匹配的存活 pane 继续正常保留
|
|
102
|
+
const matchingPane = panes.find((pane) => paneMatchesEvent(pane, event));
|
|
103
|
+
if (matchingPane)
|
|
104
|
+
continue;
|
|
105
|
+
// 执行点补完(判别 1):快照中存在同名 paneId 但 paneMatchesEvent 判定不兼容(属 E3 跨代冲突)
|
|
106
|
+
const samePaneExists = panes.some((pane) => pane.paneId === event.paneId);
|
|
107
|
+
if (samePaneExists) {
|
|
108
|
+
// 跨代冲突不能物理删掉尚未投递过的终态失败行:它必须在 reconciler
|
|
109
|
+
// 的下一轮扫描中活下去,直到拿到首次投递机会。
|
|
110
|
+
if (isRetainableTerminalFailure(event)) {
|
|
111
|
+
if (this.#events.markRetainedInvalidated(event.id))
|
|
112
|
+
invalidated += 1;
|
|
113
|
+
}
|
|
114
|
+
else if (this.#events.deleteReconcileCandidate(event.id)) {
|
|
115
|
+
invalidated += 1;
|
|
116
|
+
}
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
// 执行点补完(判别 2):paneId 在快照中完全缺失,评估保留资格与时限
|
|
120
|
+
const payload = (event.payload ?? {});
|
|
121
|
+
const now = Date.now();
|
|
122
|
+
const eventAgeMs = now - event.createdAt.getTime();
|
|
123
|
+
const isFresh = eventAgeMs <= REDELIVERY_FRESHNESS_MS; // E6 判定:300s 关页时限
|
|
124
|
+
// 终态失败行不走 300s 新鲜度窗口:它的保留窗口以「首次投递尝试」为界
|
|
125
|
+
// (delivery_attempts = 0),因为这条事件常常是在 pane 关闭(agents 行
|
|
126
|
+
// 物理删除)之后才补写出来的。agent.discarded 不保留。
|
|
127
|
+
const isRetainable = isRetainableTerminalFailure(event) ||
|
|
128
|
+
(event.deliverable === 1 &&
|
|
129
|
+
isFresh &&
|
|
130
|
+
((event.type === "agent.done" && payload.from === "working") ||
|
|
131
|
+
(event.type === "agent.idle" && payload.from === "working")));
|
|
132
|
+
if (isRetainable) {
|
|
133
|
+
// 保留交付性,转移为保留作废态
|
|
134
|
+
this.#events.markRetainedInvalidated(event.id);
|
|
135
|
+
invalidated += 1;
|
|
136
|
+
}
|
|
137
|
+
else if (this.#events.deleteReconcileCandidate(event.id)) {
|
|
102
138
|
invalidated += 1;
|
|
139
|
+
}
|
|
103
140
|
}
|
|
104
141
|
}
|
|
105
142
|
invalidated += this.#events.deleteInvalidatedOlderThan(INVALIDATED_GRACE_MS);
|
|
@@ -157,6 +194,20 @@ export class AgentEventReconciler {
|
|
|
157
194
|
function stringValue(value) {
|
|
158
195
|
return typeof value === "string" && value.length > 0 ? value : null;
|
|
159
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* A terminal `agent.failed` row that has never been delivered must survive the
|
|
199
|
+
* reconcile sweep: when a plan reaches its failed state after the pane was
|
|
200
|
+
* retired, the event is written with `agent_id = null` and no live pane to match
|
|
201
|
+
* it, so the ordinary 300s freshness rule would physically delete the only
|
|
202
|
+
* remaining evidence of the failure before any orchestrator could see it. The
|
|
203
|
+
* window is bounded by the first delivery attempt (`delivery_attempts = 0`),
|
|
204
|
+
* which is paired with the retention whitelist in `#invalidatePaneCore` and with
|
|
205
|
+
* the invalidation gate in `AgentEventStore#reclaimDelivered`. `agent.discarded`
|
|
206
|
+
* is deliberately not retained.
|
|
207
|
+
*/
|
|
208
|
+
function isRetainableTerminalFailure(event) {
|
|
209
|
+
return event.type === "agent.failed" && event.deliverable === 1 && event.deliveryAttempts === 0;
|
|
210
|
+
}
|
|
160
211
|
/**
|
|
161
212
|
* Cache keys for opencode-sqlite append `#session=...` onto the backing file
|
|
162
213
|
* path. Existence is checked against the real path, not the synthetic key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-event-reconciler.js","sourceRoot":"","sources":["../../../src/daemon/agent-event-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-event-reconciler.js","sourceRoot":"","sources":["../../../src/daemon/agent-event-reconciler.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,13 @@ import type { AgentIndexService } from "../observability/agent-index-service.js"
|
|
|
6
6
|
import type { AgentEventRecord, AgentIndexRecord, AgentScope } from "../observability/contracts.js";
|
|
7
7
|
export declare const ACTIVE_REVISION_POLL_MS = 10000;
|
|
8
8
|
export declare const FULL_RESCAN_MS = 60000;
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Grace for status event plans still executing when the manager stops. Must stay
|
|
11
|
+
* below the daemon shutdown budget (SHUTDOWN_BUDGET_MS in src/daemon/service.ts,
|
|
12
|
+
* 5000ms) and therefore below the unit's TimeoutStopSec (10s): a drain grace
|
|
13
|
+
* longer than the stop timeout is what let SIGTERM end in systemd SIGKILL.
|
|
14
|
+
*/
|
|
15
|
+
export declare const PLAN_DRAIN_GRACE_MS = 3000;
|
|
10
16
|
export declare class HerdrSessionWatchManager {
|
|
11
17
|
#private;
|
|
12
18
|
constructor(options: {
|
|
@@ -26,6 +32,12 @@ export declare class HerdrSessionWatchManager {
|
|
|
26
32
|
}): void;
|
|
27
33
|
reconnectDelayMs?: number;
|
|
28
34
|
sessionList: HerdrSessionListRunner;
|
|
35
|
+
/**
|
|
36
|
+
* Aborted when the daemon starts shutting down. Watchers stop as soon as it
|
|
37
|
+
* aborts instead of waiting for the daemon to reach its watchManager.stop()
|
|
38
|
+
* step, so teardown also happens when the shutdown budget cuts that step short.
|
|
39
|
+
*/
|
|
40
|
+
shutdownSignal?: AbortSignal;
|
|
29
41
|
});
|
|
30
42
|
start(): Promise<void>;
|
|
31
43
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"herdr-session-watch-manager.d.ts","sourceRoot":"","sources":["../../../src/daemon/herdr-session-watch-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAyB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAA8B,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"herdr-session-watch-manager.d.ts","sourceRoot":"","sources":["../../../src/daemon/herdr-session-watch-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAyB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAA8B,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAGV,iBAAiB,EAElB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGnG,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AAazC,qBAAa,wBAAwB;;gBA+BvB,OAAO,EAAE;QACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,MAAM,EAAE,UAAU,CAAC;QACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;YACtB,UAAU,EAAE,MAAM,CAAC;SACpB,KAAK,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,iBAAiB,CAAC,CAAC;QAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,iBAAiB,CAAC;QACjC,KAAK,EAAE,iBAAiB,CAAC;QACzB,qBAAqB,CAAC,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;QAChD,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC5C,qBAAqB,CAAC,CAAC,KAAK,EAAE;YAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAC9F,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,sBAAsB,CAAC;QACpC;;;;WAIG;QACH,cAAc,CAAC,EAAE,WAAW,CAAC;KAC9B;IA+BK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAgRjC"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { HERDR_TOPOLOGY_EVENT_TYPES, HerdrSocketClient } from "../herdr/socket-client.js";
|
|
2
|
+
import { VALID_AGENT_EVENT_TYPES } from "../observability/contracts.js";
|
|
2
3
|
export const ACTIVE_REVISION_POLL_MS = 10_000;
|
|
3
4
|
export const FULL_RESCAN_MS = 60_000;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"agent.discarded",
|
|
12
|
-
]);
|
|
5
|
+
/**
|
|
6
|
+
* Grace for status event plans still executing when the manager stops. Must stay
|
|
7
|
+
* below the daemon shutdown budget (SHUTDOWN_BUDGET_MS in src/daemon/service.ts,
|
|
8
|
+
* 5000ms) and therefore below the unit's TimeoutStopSec (10s): a drain grace
|
|
9
|
+
* longer than the stop timeout is what let SIGTERM end in systemd SIGKILL.
|
|
10
|
+
*/
|
|
11
|
+
export const PLAN_DRAIN_GRACE_MS = 3_000;
|
|
13
12
|
export class HerdrSessionWatchManager {
|
|
14
13
|
#agents;
|
|
15
14
|
#activeRevisionPollMs;
|
|
@@ -25,6 +24,7 @@ export class HerdrSessionWatchManager {
|
|
|
25
24
|
#retiringWatcherLoops = new Set();
|
|
26
25
|
#inFlightPlans = new Set();
|
|
27
26
|
#sessionList;
|
|
27
|
+
#shutdownSignal;
|
|
28
28
|
#watchers = new Map();
|
|
29
29
|
#lastFullRescanAt = 0;
|
|
30
30
|
#lifecycleGeneration = 0;
|
|
@@ -43,6 +43,20 @@ export class HerdrSessionWatchManager {
|
|
|
43
43
|
this.#onAgentIndexRefreshed = options.onAgentIndexRefreshed ?? (() => undefined);
|
|
44
44
|
this.#reconnectDelayMs = options.reconnectDelayMs ?? 1_000;
|
|
45
45
|
this.#sessionList = options.sessionList;
|
|
46
|
+
this.#shutdownSignal = options.shutdownSignal;
|
|
47
|
+
if (this.#shutdownSignal?.aborted) {
|
|
48
|
+
void this.#beginShutdown().catch((error) => {
|
|
49
|
+
console.warn("Herdsman Herdr session watch shutdown failed", {
|
|
50
|
+
error: error instanceof Error ? error.message : String(error),
|
|
51
|
+
step: "begin-shutdown",
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.#shutdownSignal?.addEventListener("abort", () => {
|
|
57
|
+
void this.#beginShutdown().catch(() => undefined);
|
|
58
|
+
}, { once: true });
|
|
59
|
+
}
|
|
46
60
|
}
|
|
47
61
|
async start() {
|
|
48
62
|
this.#stopping = false;
|
|
@@ -53,19 +67,28 @@ export class HerdrSessionWatchManager {
|
|
|
53
67
|
return;
|
|
54
68
|
this.#scheduler = setInterval(() => {
|
|
55
69
|
if (!this.#tickInFlight) {
|
|
56
|
-
|
|
70
|
+
// The rejection handler must be attached here, not only in stop(): when
|
|
71
|
+
// the shutdown budget abandons the watchManager.stop step, stop() never
|
|
72
|
+
// reaches its own `.catch`. By then stop() has also removed the daemon's
|
|
73
|
+
// own unhandledRejection/uncaughtException listeners, so an in-flight
|
|
74
|
+
// tick that throws has no listener left: the rejection falls through to
|
|
75
|
+
// Node's default action, which throws and ends the process with exit code
|
|
76
|
+
// 1, skipping the daemon's finally cleanup.
|
|
77
|
+
this.#tickInFlight = this.#tick()
|
|
78
|
+
.catch((error) => {
|
|
79
|
+
console.warn("Herdsman Herdr session watch tick failed", {
|
|
80
|
+
error: error instanceof Error ? error.message : String(error),
|
|
81
|
+
step: "active-revision-poll",
|
|
82
|
+
});
|
|
83
|
+
})
|
|
84
|
+
.finally(() => {
|
|
57
85
|
this.#tickInFlight = undefined;
|
|
58
86
|
});
|
|
59
87
|
}
|
|
60
88
|
}, this.#activeRevisionPollMs);
|
|
61
89
|
}
|
|
62
90
|
async stop() {
|
|
63
|
-
this.#
|
|
64
|
-
this.#lifecycleGeneration += 1;
|
|
65
|
-
if (this.#scheduler)
|
|
66
|
-
clearInterval(this.#scheduler);
|
|
67
|
-
this.#scheduler = undefined;
|
|
68
|
-
await this.#abortWatchers();
|
|
91
|
+
await this.#beginShutdown();
|
|
69
92
|
await this.#tickInFlight?.catch(() => undefined);
|
|
70
93
|
await Promise.all([...this.#retiringWatcherLoops]);
|
|
71
94
|
if (this.#inFlightPlans.size > 0) {
|
|
@@ -77,6 +100,19 @@ export class HerdrSessionWatchManager {
|
|
|
77
100
|
}
|
|
78
101
|
await this.#abortWatchers();
|
|
79
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Synchronous teardown entry: stop scheduling ticks and abort every watcher.
|
|
105
|
+
* Shared by stop() and by the daemon shutdown signal so an aborted shutdown
|
|
106
|
+
* can never leave watchers (and their sockets) running.
|
|
107
|
+
*/
|
|
108
|
+
#beginShutdown() {
|
|
109
|
+
this.#stopping = true;
|
|
110
|
+
this.#lifecycleGeneration += 1;
|
|
111
|
+
if (this.#scheduler)
|
|
112
|
+
clearInterval(this.#scheduler);
|
|
113
|
+
this.#scheduler = undefined;
|
|
114
|
+
return this.#abortWatchers();
|
|
115
|
+
}
|
|
80
116
|
async rescanNow() {
|
|
81
117
|
const generation = this.#lifecycleGeneration;
|
|
82
118
|
const sessions = await this.#sessionList();
|