@dorokuma/herdsman 0.11.6 → 0.13.2

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 (81) hide show
  1. package/README.md +26 -13
  2. package/dist/src/agent-history/pi-reader.d.ts.map +1 -1
  3. package/dist/src/agent-history/pi-reader.js +10 -2
  4. package/dist/src/agent-history/pi-reader.js.map +1 -1
  5. package/dist/src/agent-history/readers.js +6 -1
  6. package/dist/src/agent-history/readers.js.map +1 -1
  7. package/dist/src/agent-history/text.d.ts.map +1 -1
  8. package/dist/src/agent-history/text.js +3 -0
  9. package/dist/src/agent-history/text.js.map +1 -1
  10. package/dist/src/cli/herdsman.d.ts +14 -1
  11. package/dist/src/cli/herdsman.d.ts.map +1 -1
  12. package/dist/src/cli/herdsman.js +49 -65
  13. package/dist/src/cli/herdsman.js.map +1 -1
  14. package/dist/src/config/schema.d.ts +4 -0
  15. package/dist/src/config/schema.d.ts.map +1 -1
  16. package/dist/src/config/schema.js +5 -0
  17. package/dist/src/config/schema.js.map +1 -1
  18. package/dist/src/daemon/agent-event-reconciler.d.ts.map +1 -1
  19. package/dist/src/daemon/agent-event-reconciler.js +53 -2
  20. package/dist/src/daemon/agent-event-reconciler.js.map +1 -1
  21. package/dist/src/daemon/herdr-session-watch-manager.d.ts +13 -1
  22. package/dist/src/daemon/herdr-session-watch-manager.d.ts.map +1 -1
  23. package/dist/src/daemon/herdr-session-watch-manager.js +52 -15
  24. package/dist/src/daemon/herdr-session-watch-manager.js.map +1 -1
  25. package/dist/src/daemon/observability-server.d.ts.map +1 -1
  26. package/dist/src/daemon/observability-server.js +17 -1
  27. package/dist/src/daemon/observability-server.js.map +1 -1
  28. package/dist/src/daemon/process-manager.d.ts +50 -49
  29. package/dist/src/daemon/process-manager.d.ts.map +1 -1
  30. package/dist/src/daemon/process-manager.js +246 -204
  31. package/dist/src/daemon/process-manager.js.map +1 -1
  32. package/dist/src/daemon/service-supervision.d.ts +68 -0
  33. package/dist/src/daemon/service-supervision.d.ts.map +1 -0
  34. package/dist/src/daemon/service-supervision.js +127 -0
  35. package/dist/src/daemon/service-supervision.js.map +1 -0
  36. package/dist/src/daemon/service.d.ts +35 -0
  37. package/dist/src/daemon/service.d.ts.map +1 -1
  38. package/dist/src/daemon/service.js +185 -27
  39. package/dist/src/daemon/service.js.map +1 -1
  40. package/dist/src/db/agent-events.d.ts +31 -0
  41. package/dist/src/db/agent-events.d.ts.map +1 -1
  42. package/dist/src/db/agent-events.js +207 -55
  43. package/dist/src/db/agent-events.js.map +1 -1
  44. package/dist/src/db/agents.js +1 -1
  45. package/dist/src/db/agents.js.map +1 -1
  46. package/dist/src/db/status-event-plans.d.ts +36 -4
  47. package/dist/src/db/status-event-plans.d.ts.map +1 -1
  48. package/dist/src/db/status-event-plans.js +96 -11
  49. package/dist/src/db/status-event-plans.js.map +1 -1
  50. package/dist/src/herdr/session-list.d.ts +11 -0
  51. package/dist/src/herdr/session-list.d.ts.map +1 -1
  52. package/dist/src/herdr/session-list.js +13 -0
  53. package/dist/src/herdr/session-list.js.map +1 -1
  54. package/dist/src/herdr/socket-client.d.ts +8 -0
  55. package/dist/src/herdr/socket-client.d.ts.map +1 -1
  56. package/dist/src/herdr/socket-client.js +43 -0
  57. package/dist/src/herdr/socket-client.js.map +1 -1
  58. package/dist/src/observability/agent-index-service.d.ts +16 -0
  59. package/dist/src/observability/agent-index-service.d.ts.map +1 -1
  60. package/dist/src/observability/agent-index-service.js +837 -114
  61. package/dist/src/observability/agent-index-service.js.map +1 -1
  62. package/dist/src/observability/agent-orchestrator-service.d.ts.map +1 -1
  63. package/dist/src/observability/agent-orchestrator-service.js +5 -1
  64. package/dist/src/observability/agent-orchestrator-service.js.map +1 -1
  65. package/dist/src/observability/contracts.d.ts +6 -1
  66. package/dist/src/observability/contracts.d.ts.map +1 -1
  67. package/dist/src/observability/contracts.js +8 -0
  68. package/dist/src/observability/contracts.js.map +1 -1
  69. package/dist/src/observability/schemas.d.ts +1 -0
  70. package/dist/src/observability/schemas.d.ts.map +1 -1
  71. package/dist/src/observability/schemas.js +1 -0
  72. package/dist/src/observability/schemas.js.map +1 -1
  73. package/dist/src/observability/turn-completion.d.ts +3 -0
  74. package/dist/src/observability/turn-completion.d.ts.map +1 -1
  75. package/dist/src/observability/turn-completion.js +12 -2
  76. package/dist/src/observability/turn-completion.js.map +1 -1
  77. package/drizzle/0010_legacy_degraded_cleanup.sql +1 -0
  78. package/drizzle/meta/0010_snapshot.json +975 -0
  79. package/drizzle/meta/_journal.json +7 -0
  80. package/package.json +3 -6
  81. package/README.ja.md +0 -145
package/README.md CHANGED
@@ -1,24 +1,21 @@
1
1
  ![Herdsman cover](./assets/herdsman-cover.png)
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.
19
8
 
20
9
  Herdsman currently supports session history from Claude Code, Codex, Gemini CLI, OpenCode, Pi, Grok, and Antigravity CLI.
21
10
 
11
+ ## Development conventions
12
+
13
+ Detailed development and contribution guidelines are maintained across:
14
+
15
+ - [AGENTS.md](./AGENTS.md): agent instructions, operational rules, and verification commands.
16
+ - [docs/plans/](./docs/plans/): active architecture plans, progress tracking, and design specifications.
17
+ - [.agents/notes/README.md](./.agents/notes/README.md): trigger criteria, templates, and conventions for architectural decisions and workarounds.
18
+
22
19
  ## Requirements
23
20
 
24
21
  - Node.js >= 22.12.0
@@ -49,8 +46,12 @@ herdsman help
49
46
 
50
47
  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.
51
48
 
49
+ On the production host the daemon is managed by the systemd unit `herdsman.service`, which keeps it running: use `systemctl restart herdsman.service` to restart it. There are no CLI start/stop/restart commands. `herdsman daemon status` reports the daemon state in either case.
50
+
51
+ 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:
52
+
52
53
  ```bash
53
- herdsman daemon start
54
+ HERDSMAN_HOME=/tmp/herdsman-dev node ./dist/src/cli/herdsman-daemon.js
54
55
  ```
55
56
 
56
57
  ## Main commands
@@ -110,12 +111,24 @@ Completed or blocked agent outcomes start one visible Herdsman turn. If a normal
110
111
 
111
112
  Use `/herdsman` or `/herdsman status` to inspect the current Pi, and `/herdsman off` to release owner behavior for that Pi. Turning one Pi off does not affect another owner. An off or non-owner Pi remains connected for a later claim, but receives no hidden agent context, pending counts, updates, or wake. The active Pi shows `◆ Herdsman`; pending outcomes add `· N agent updates` until a turn containing them produces a final assistant response, settles, and acknowledges every underlying event. A previously active Pi shows `◇ Herdsman · reconnecting` during transport recovery. With no owner, outcomes are not delivered, and outcomes created during the ownerless period are not replayed by a later claim. Reloads, reconnects, and direct replacement by another Pi preserve unacknowledged outcomes. Ownership follows the Herdr terminal across Pi session replacement and pane movement, and clears when that terminal remains disconnected beyond the grace period.
112
113
 
114
+ Upstream model errors are filtered out of the wake path: when the final assistant message (or a `failed` reason) is error-shaped text such as `API Error: 429`, `rate_limit_error`, `overloaded_error`, or a transport failure like `ECONNRESET` / `fetch failed`, the outcome is dropped silently. No wake turn starts, no context is injected, and nothing is notified; the event is still acknowledged so the daemon's delivery queue converges. Long substantive reports that merely mention status codes, retries, or timeouts are not affected. Filtering is on by default and adds no timeout or retry fallback while the upstream stays down. Configure it in `$HERDSMAN_HOME/config.yaml`:
115
+
116
+ ```yaml
117
+ wake:
118
+ filter_upstream_errors: true
119
+ extra_upstream_error_patterns:
120
+ - "your-provider-error-token"
121
+ - /quota\s+exceeded/i
122
+ ```
123
+
124
+ Set `filter_upstream_errors: false` to restore waking on every outcome. `HERDSMAN_WAKE_FILTER_UPSTREAM_ERRORS` and `HERDSMAN_WAKE_EXTRA_UPSTREAM_ERROR_PATTERNS` override the file, and config changes need a Pi restart.
125
+
113
126
  ## Herdr plugin
114
127
 
115
128
  Install the optional plugin from the GitHub release tag:
116
129
 
117
130
  ```bash
118
- herdr plugin install dorokuma/herdsman/packages/herdsman-herdr-plugin --ref v0.11.6 --yes
131
+ herdr plugin install dorokuma/herdsman/packages/herdsman-herdr-plugin --ref v0.13.2 --yes
119
132
  ```
120
133
 
121
134
  Use the release tag that matches the installed Herdsman CLI version.
@@ -1 +1 @@
1
- {"version":3,"file":"pi-reader.d.ts","sourceRoot":"","sources":["../../../src/agent-history/pi-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,cAAc,CAAC;AAItB,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAIhC,IAAI,CACR,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/B,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAwC3B,WAAW,CAAC,GAAG,EAAE,eAAe;CAGvC"}
1
+ {"version":3,"file":"pi-reader.d.ts","sourceRoot":"","sources":["../../../src/agent-history/pi-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,cAAc,CAAC;AAItB,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAIhC,IAAI,CACR,GAAG,EAAE,eAAe,EACpB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC/B,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAiD3B,WAAW,CAAC,GAAG,EAAE,eAAe;CAGvC"}
@@ -18,8 +18,16 @@ export class PiHistoryReader {
18
18
  const refValue = messageRef(path, id ?? undefined, entry.line);
19
19
  if (role === "user" || role === "assistant") {
20
20
  const text = textFromContent(message.content);
21
- if (text)
22
- messages.push({ ref: refValue, role, text, timestamp });
21
+ if (text) {
22
+ const stopReason = stringValue(message.stopReason);
23
+ messages.push({
24
+ ref: refValue,
25
+ role,
26
+ ...(stopReason ? { stopReason } : {}),
27
+ text,
28
+ timestamp,
29
+ });
30
+ }
23
31
  }
24
32
  if (role === "toolResult") {
25
33
  const text = textFromContent(message.content) ?? "";
@@ -1 +1 @@
1
- {"version":3,"file":"pi-reader.js","sourceRoot":"","sources":["../../../src/agent-history/pi-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi-reader.js","sourceRoot":"","sources":["../../../src/agent-history/pi-reader.ts"],"names":[],"mappings":"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"}
@@ -109,7 +109,12 @@ function lastByRole(messages, role) {
109
109
  return [...messages].reverse().find((message) => message.role === role);
110
110
  }
111
111
  function excerpt(message) {
112
- return { ref: message.ref, text: sanitizeText(message.text).text, timestamp: message.timestamp };
112
+ return {
113
+ ref: message.ref,
114
+ ...(message.stopReason ? { stopReason: message.stopReason } : {}),
115
+ text: sanitizeText(message.text).text,
116
+ timestamp: message.timestamp,
117
+ };
113
118
  }
114
119
  function sanitizeHistoryMessage(message) {
115
120
  const text = sanitizeText(message.text).text;
@@ -1 +1 @@
1
- {"version":3,"file":"readers.js","sourceRoot":"","sources":["../../../src/agent-history/readers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readers.js","sourceRoot":"","sources":["../../../src/agent-history/readers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/agent-history/text.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAsBhF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/agent-history/text.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAsBhF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -1,3 +1,6 @@
1
+ // Sync guard: this is the daemon-side copy of textFromContent/sanitizeText.
2
+ // The extension-side copy lives in packages/herdsman-pi/src/sanitize-text.ts.
3
+ // Keep both implementations identical; see test/unit/agent-history-text.test.ts for parity tests.
1
4
  export function textFromContent(content) {
2
5
  if (typeof content === "string")
3
6
  return content;
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/agent-history/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/agent-history/text.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { ObservabilityRpcClient } from "../daemon/client.js";
3
- type DaemonAction = "restart" | "start" | "status" | "stop";
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;AAa5D,KAAK,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5D,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,CAAA;CAAE,GAC3C,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,CAkBZ;AAkED,wBAAgB,QAAQ,IAAI,MAAM,CAQjC;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxF;AA0MD,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"}
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"}
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { realpathSync } from "node:fs";
3
- import { dirname, resolve } from "node:path";
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, readDaemonRuntimeRecord, startDaemonProcess, stopDaemonProcess, withDaemonLock, } from "../daemon/process-manager.js";
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 [start|stop|restart|status]
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 lockPath = `${runtime.paths.pidPath}.lock`;
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(JSON.stringify({ ...result, socketPath: runtime.paths.socketPath }));
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 === "restart" || value === "start" || value === "status" || value === "stop";
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}\nRun \`herdsman daemon start\` before using Herdsman commands.`;
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"}
@@ -12,6 +12,10 @@ export declare const herdsmanConfigSchema: import("@sinclair/typebox").TObject<{
12
12
  pid_path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
13
  socket_path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
14
14
  }>>;
15
+ wake: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
16
+ extra_upstream_error_patterns: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
17
+ filter_upstream_errors: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
18
+ }>>;
15
19
  }>;
16
20
  export type HerdsmanConfig = Static<typeof herdsmanConfigSchema>;
17
21
  export type ValidationResult<T> = {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAO,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AA0B5C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAMhC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEjE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAKhG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAMpF"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAO,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAoC5C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;EAOhC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEjE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAKhG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAMpF"}
@@ -11,9 +11,14 @@ const observabilitySchema = Type.Object({
11
11
  max_excerpt_bytes: Type.Optional(Type.Integer({ minimum: 1, default: 4096 })),
12
12
  }, { additionalProperties: false })),
13
13
  }, { additionalProperties: false });
14
+ const wakeSchema = Type.Object({
15
+ extra_upstream_error_patterns: Type.Optional(Type.Array(Type.String({ minLength: 1 }), { default: [] })),
16
+ filter_upstream_errors: Type.Optional(Type.Boolean({ default: true })),
17
+ }, { additionalProperties: false });
14
18
  export const herdsmanConfigSchema = Type.Object({
15
19
  observability: Type.Optional(observabilitySchema),
16
20
  runtime: Type.Optional(runtimePathsSchema),
21
+ wake: Type.Optional(wakeSchema),
17
22
  }, { additionalProperties: false });
18
23
  const ajv = new Ajv({ allErrors: true, useDefaults: true });
19
24
  const validateHerdsmanConfig = ajv.compile(herdsmanConfigSchema);
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAoB,MAAM,KAAK,CAAC;AAE5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CACpC;IACE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;CAC1D,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CACrC;IACE,SAAS,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,MAAM,CACT;QACE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9E,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CACF;CACF,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAC7C;IACE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CAC3C,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAMF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAiB,oBAAoB,CAAC,CAAC;AAEjF,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAuB,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,sBAAsB,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAoB,MAAM,KAAK,CAAC;AAE5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CACpC;IACE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;CAC1D,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CACrC;IACE,SAAS,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,MAAM,CACT;QACE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9E,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CACF;CACF,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAC5B;IACE,6BAA6B,EAAE,IAAI,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAC3D;IACD,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;CACvE,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAC7C;IACE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC1C,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;CAChC,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC,CAAC;AAMF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAiB,oBAAoB,CAAC,CAAC;AAEjF,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAuB,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,sBAAsB,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACpE,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;AAC5D,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;CA8GtC"}
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
- const present = panes.some((pane) => paneMatchesEvent(pane, event));
101
- if (!present && this.#events.deleteReconcileCandidate(event.id))
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.