pi-daddy 0.48.0 → 0.48.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog — pi-daddy
2
2
 
3
+ ## 0.48.2 — 2026-10-09
4
+
5
+ Restore governed children in Herdr's native agent sidebar. Active entries show the role, and tabs are named for that role instead of all using the same generic label. Update pi-daddy and restart Pi to use the fix.
6
+
7
+ The pane launcher reports activity through Herdr's existing lifecycle API and releases its own entry after process settlement. A matching native receipt lets the coordinator clear an entry if the launcher dies. Retained output tabs remain inspectable without falsely showing a running child. Display failures do not alter permission checks, native cleanup or task results.
8
+
9
+ ## 0.48.1 — 2026-10-09
10
+
11
+ Use Herdr's live structured CLI compatibility status instead of requiring exact client/server release 0.8.2 and private protocol 20. Compatible mixed releases can delegate in separate tabs; incompatible or malformed status still refuses. Require a successful actual tab-list response before selecting Herdr. Native ownership, final validation, cancellation and cleanup receipts remain unchanged.
12
+
13
+ The isolated live qualification fixture supports separate client/server binaries and an explicit Pi CLI, including retained tabs and direct cancellation of a worker with a detached descendant. All 44 live checks passed across Herdr 0.8.2/Pi 1.0.4, Herdr 0.8.2/Pi 1.1.0, Herdr client 0.9.3/server 0.9.0/Pi 1.1.0 and Herdr 0.9.3/Pi 1.1.0 on Ubuntu WSL2 with Node 24.19.0.
14
+
3
15
  ## 0.48.0 — 2026-10-09
4
16
 
5
17
  - Admit a stable operation only once across the live delegation tree. Duplicate single/batch/chain requests return an execution reference; changed requests conflict and completed mutations never replay. Expose session-bound operation status and actual execution workspace to deterministic coordinators.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # pi-daddy
2
2
 
3
- Source target: **0.48.0**. Before installation, verify that `npm view pi-daddy version` and Git tag `v0.48.0` both resolve to this release.
3
+ Source target: **0.48.2**. Before installation, verify that `npm view pi-daddy version` and Git tag `v0.48.2` both resolve to this release.
4
4
 
5
5
  **Capability governance and coordination for [pi](https://github.com/badlogic/pi-mono)'s multi-level agent system.**
6
6
  An orchestrator grants each sub-agent a deliberate subset of what it holds and withholds the rest. A sub-agent may
@@ -240,22 +240,38 @@ anything a child did.
240
240
 
241
241
  ## Executors and the dashboard
242
242
 
243
- Captured and Herdr pane execution share the native owner and current-final validator on Linux x64. Qualification is limited to the measured Ubuntu WSL2 environment: kernel `6.18.33.2-microsoft-standard-WSL2`, x86_64, Node `v26.7.0`, and exact Pi 1.0.4. Other kernel/runtime combinations, native Windows, and WSL-to-Windows worker interop remain unqualified.
243
+ Captured and Herdr pane execution share the native owner and current-final validator on Linux x64.
244
+ Initial qualification used Ubuntu WSL2, kernel `6.18.33.2-microsoft-standard-WSL2`, Node `v26.7.0`, and Pi 1.0.4.
245
+ Additional live Herdr qualification on Ubuntu WSL2 with Node `v24.19.0` covers client/server 0.8.2 with
246
+ Pi 1.0.4 and 1.1.0, client 0.9.3/server 0.9.0 with Pi 1.1.0, and client/server 0.9.3 with Pi 1.1.0.
247
+ Each combination exercises real child results, retained tabs, cancellation, coordinator loss and server loss.
248
+ These are measured combinations, not a product-version allowlist. Native Windows and WSL-to-Windows worker
249
+ interop remain unqualified.
244
250
  A packaged native helper owns and reaps the cooperating child subtree. The final is accepted only when Pi's JSON
245
251
  protocol settles and matches the exact persisted current turn and active branch. Complete final text is preserved;
246
252
  work, final availability, subtree cleanup and optional observation completeness are separate result fields. A failed
247
253
  execution returns `isError` with its available evidence. Display, diagnostics and optional recording cannot replace
248
254
  the primary final. Unknown cleanup retains capacity and workspace exclusion.
249
255
 
250
- Pi and TypeBox are wildcard host-provided peers so Pi's extension loader supplies one shared runtime copy. Development and release qualification pin exact Pi **1.0.4**; later Pi versions require new qualification. Prefer a Pi-managed install under a host pinned to 1.0.4. An ordinary standalone npm install may resolve newer peer versions and is outside this qualification. In a Pi-managed no-peer install, standalone help, version and reporting remain available; run initialization inside Pi with `/grants init`. Use Principal **4.11.2** with this runtime's `delegate_describe` contract. Native phases use `plan`, `build`, `review`, `debug`, and `investigate` with their returned `definitionId`; independent parallel work uses one `delegate_all` batch.
256
+ Pi and TypeBox are wildcard host-provided peers so Pi's extension loader supplies one shared runtime copy. Development dependencies pin Pi **1.0.4**; additional native transport checks cover **1.1.0** as described above. Prefer a Pi-managed install under one of these measured hosts. An ordinary standalone npm install may resolve untested peer versions. In a Pi-managed no-peer install, standalone help, version and reporting remain available; run initialization inside Pi with `/grants init`. Use Principal **4.12.0** with this runtime's `delegate_describe` contract. Native phases use `plan`, `build`, `review`, `debug`, and `investigate` with their returned `definitionId`; independent parallel work uses one `delegate_all` batch.
251
257
 
252
258
  Final capture preserves whitespace and concatenates text blocks without inserting separators. Tool-call terminals, empty visible finals and non-`stop` reasons are unavailable. Persisted message comparisons ignore object key order while preserving array order and every field value. The shared `final-conformance.json` table checks these semantics in both runtime and harness. Capture remains bounded: 4 MiB visible final, 32 MiB protocol line, 64 MiB persisted session, and a 3-second bounded session read. Exceeding a limit reports an unavailable final and blocks dependent handoffs; it does not imply the worker failed to settle.
253
259
 
254
260
  Retained capacity is rechecked against the original bound ownership and settlement receipt before a new single, parallel or chain dispatch. Exact later proof refunds the reservation once; missing, malformed or mismatched proof and unbound ownership remain retained. Recovery does not rewrite the original failed/unknown outcome or mint new capacity on reload. A single delegation reserves its available subtree; use `delegate_all` to allocate independent parallel children.
255
261
 
262
+ Governed Herdr children appear in the native agent sidebar while running, with their role (for example
263
+ Plan, Build or Review) and a corresponding named tab. Sidebar state is observational: native process
264
+ receipts still determine settlement. A settled child leaves the active agent list; with
265
+ `PI_DADDY_HERDR_KEEP_PANE=1`, its output tab remains for inspection, without a live interactive child.
266
+ Missing sidebar delivery is reported but does not change the execution result.
267
+
256
268
  Set `PI_DADDY_HERDR=0` for captured execution or `PI_DADDY_HERDR=1` to demand Herdr panes. An unset value
257
- probes for a responding server. The qualified Herdr transport requires client/server 0.8.2 and protocol 20;
258
- a version mismatch refuses governed work with no backend fallback. Each owned pane starts a packaged launcher
269
+ probes for a responding server. Startup requires a successful tab-list response and live JSON server status
270
+ reporting a running, CLI-compatible transport. Newer release numbers and an older compatible server do not
271
+ cause refusal. An explicit endpoint incompatibility also refuses; endpoint compatibility alone cannot override
272
+ an incompatible CLI protocol. The status check uses Herdr's own compatibility decision, not a fixed private
273
+ protocol number or a client/server product-version comparison. Missing or incompatible status refuses
274
+ with no backend fallback. Each owned pane starts a packaged launcher
259
275
  connected to the coordinator over a private bounded Unix socket. The launcher uses the same pinned native
260
276
  subreaper, and the coordinator binds its identity before releasing the worker gate. Child environment and
261
277
  arguments come from the governed plan, without inheriting the Herdr daemon's environment. Only public text is
@@ -0,0 +1,10 @@
1
+ export interface HerdrAgentDisplay {
2
+ source: string;
3
+ role: string;
4
+ }
5
+ /** The pane launcher owns these reports, so coordinator loss still reaches native cleanup and release. */
6
+ export declare function herdrAgentDisplay(display: HerdrAgentDisplay, env?: NodeJS.ProcessEnv): {
7
+ working: () => Promise<boolean>;
8
+ finish: (settled: boolean) => Promise<boolean>;
9
+ };
10
+ //# sourceMappingURL=herdr-agent-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herdr-agent-display.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-agent-display.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AACD,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB;;sBA2D5E,OAAO;EAK5B"}
@@ -0,0 +1,68 @@
1
+ /** Herdr sidebar observations only; never permission, execution or settlement authority. */
2
+ import { createConnection } from "node:net";
3
+ /** The pane launcher owns these reports, so coordinator loss still reaches native cleanup and release. */
4
+ export function herdrAgentDisplay(display, env = process.env) {
5
+ let pending = Promise.resolve(false);
6
+ const socketPath = env.HERDR_SOCKET_PATH, paneId = env.HERDR_PANE_ID;
7
+ function publish(method, extra, seq) {
8
+ pending = pending.then(async () => {
9
+ if (env.HERDR_ENV !== "1" || !socketPath || !paneId)
10
+ return false;
11
+ const request = {
12
+ id: display.source + ":" + seq,
13
+ method,
14
+ params: { pane_id: paneId, source: display.source, agent: "pi", seq, ...extra },
15
+ };
16
+ const delivered = await new Promise((resolve) => {
17
+ let finished = false, buffer = "";
18
+ const socket = createConnection(socketPath);
19
+ const finish = (ok) => {
20
+ if (finished)
21
+ return;
22
+ finished = true;
23
+ clearTimeout(timer);
24
+ socket.destroy();
25
+ resolve(ok);
26
+ };
27
+ const timer = setTimeout(() => finish(false), 750);
28
+ socket.on("error", () => finish(false));
29
+ socket.on("end", () => finish(false));
30
+ socket.on("connect", () => socket.write(JSON.stringify(request) + "\n"));
31
+ socket.on("data", (bytes) => {
32
+ buffer += bytes.toString();
33
+ if (buffer.length > 16384)
34
+ return finish(false);
35
+ const end = buffer.indexOf("\n");
36
+ if (end < 0)
37
+ return;
38
+ try {
39
+ const reply = JSON.parse(buffer.slice(0, end));
40
+ finish(reply.id === request.id && !reply.error && reply.result !== undefined);
41
+ }
42
+ catch {
43
+ finish(false);
44
+ }
45
+ });
46
+ }).catch(() => false);
47
+ if (!delivered)
48
+ console.error("pi-daddy: Herdr agent sidebar report unavailable");
49
+ return delivered;
50
+ });
51
+ return pending;
52
+ }
53
+ return {
54
+ working: () => {
55
+ void publish("pane.report_agent", { state: "working" }, 1);
56
+ // Metadata has its own sequence namespace and is visible only while our exact lifecycle source owns the pane.
57
+ return publish("pane.report_metadata", {
58
+ applies_to_source: display.source,
59
+ title: display.role,
60
+ display_agent: "Pi / " + display.role,
61
+ }, 1);
62
+ },
63
+ finish: (settled) => settled
64
+ ? publish("pane.release_agent", {}, 2)
65
+ : publish("pane.report_agent", { state: "unknown", message: "Native cleanup is unverified" }, 2),
66
+ };
67
+ }
68
+ //# sourceMappingURL=herdr-agent-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herdr-agent-display.js","sourceRoot":"","sources":["../../src/executors/herdr-agent-display.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-cli.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,oGAAoG;AACpG,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7G,eAAO,MAAM,WAAW,EAAE,SAkBtB,CAAC;AAEL;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAcA;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sGAAsG;IACtG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAsB5G;AAED,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAEzD,oGAAoG;AAEpG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAI3E"}
1
+ {"version":3,"file":"herdr-cli.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,oGAAoG;AACpG,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE7G,eAAO,MAAM,WAAW,EAAE,SAkBtB,CAAC;AAEL;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAcA;AAED,gGAAgG;AAChG,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sGAAsG;IACtG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAyB5G;AAED,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AAEzD,oGAAoG;AAEpG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAI3E"}
@@ -70,7 +70,11 @@ export async function probeHerdr(options = {}) {
70
70
  return await Promise.race([
71
71
  exec(["tab", "list"]).then((reply) => {
72
72
  const parsed = parseReply(reply);
73
- return parsed.error ? { ok: false, error: parsed.error } : { ok: true };
73
+ if (parsed.error)
74
+ return { ok: false, error: parsed.error };
75
+ if (reply.code !== 0 || !Array.isArray(parsed.result?.tabs))
76
+ return { ok: false, error: "Herdr tab list failed or returned an unsupported response" };
77
+ return { ok: true };
74
78
  }),
75
79
  new Promise((settle) => {
76
80
  timer = setTimeout(() => settle({ ok: false, error: `probe timed out after ${timeoutMs}ms` }), timeoutMs);
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-cli.js","sourceRoot":"","sources":["../../src/executors/herdr-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"herdr-cli.js","sourceRoot":"","sources":["../../src/executors/herdr-cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-launcher.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-launcher.ts"],"names":[],"mappings":"AAMA,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHxF"}
1
+ {"version":3,"file":"herdr-launcher.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-launcher.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHxF"}
@@ -4,6 +4,7 @@ import { processTreeActivity } from "./process-activity.js";
4
4
  import { createConnection } from "node:net";
5
5
  import { runOwnedChild } from "./owned-worker.js";
6
6
  import { wire } from "./herdr-wire.js";
7
+ import { herdrAgentDisplay } from "./herdr-agent-display.js";
7
8
  export async function launchHerdrWorker(socketPath, token) {
8
9
  const socket = createConnection(socketPath);
9
10
  const abort = new AbortController();
@@ -38,6 +39,8 @@ export async function launchHerdrWorker(socketPath, token) {
38
39
  authenticated = true;
39
40
  const request = message.request;
40
41
  let childPid;
42
+ const display = herdrAgentDisplay(message.display);
43
+ let settled = false;
41
44
  void (async () => {
42
45
  try {
43
46
  const result = await runOwnedChild({
@@ -79,17 +82,21 @@ export async function launchHerdrWorker(socketPath, token) {
79
82
  },
80
83
  onSpawn: (pid) => {
81
84
  childPid = pid;
85
+ void display.working();
82
86
  send({ type: "spawned", pid });
83
87
  process.stdout.write("pi-daddy: governed child running\n");
84
88
  },
85
89
  });
90
+ settled = result.cleanup.state === "settled" || result.cleanup.state === "not-started";
91
+ const displayReleased = await display.finish(settled);
86
92
  if (!socket.destroyed) {
87
- send({ type: "result", result });
93
+ send({ type: "result", result, displayReleased: settled && displayReleased });
88
94
  socket.end();
89
95
  }
90
96
  process.stdout.write("\npi-daddy: " + result.cleanup.state + "\n");
91
97
  }
92
98
  catch (error) {
99
+ await display.finish(settled);
93
100
  if (!socket.destroyed) {
94
101
  try {
95
102
  send({ type: "failure", reason: String(error) });
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-launcher.js","sourceRoot":"","sources":["../../src/executors/herdr-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"herdr-launcher.js","sourceRoot":"","sources":["../../src/executors/herdr-launcher.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export interface HerdrOwnedOptions {
8
8
  onDisplay?: (display: (text: string) => void) => void;
9
9
  /** Tests may select a freshly built launcher. Production always uses the packaged build. */
10
10
  launcherPath?: string;
11
+ /** Human-readable role; display only, never a dispatch selector. */
12
+ displayName?: string;
11
13
  }
12
14
  export declare function runHerdrOwned(request: OwnedChildRunRequest, options?: HerdrOwnedOptions): Promise<OwnedChildRunResult>;
13
15
  //# sourceMappingURL=herdr-owned.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-owned.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-owned.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOnF,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IACtD,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAqO9B"}
1
+ {"version":3,"file":"herdr-owned.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-owned.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOnF,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IACtD,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAoQ9B"}
@@ -14,10 +14,13 @@ export async function runHerdrOwned(request, options = {}) {
14
14
  const exec = options.exec ?? defaultExec;
15
15
  const directory = await mkdtemp(join(tmpdir(), "pd-herdr-"));
16
16
  const path = join(directory, "owner.sock"), token = randomUUID();
17
+ const role = (options.displayName ?? "child").replace(/[^a-zA-Z0-9_-]/g, "-").slice(0, 48) || "child";
18
+ const display = { source: "pi-daddy:" + randomUUID(), role };
17
19
  const launcher = options.launcherPath ?? fileURLToPath(new URL("../../dist/executors/herdr-launcher.js", import.meta.url));
18
20
  const helper = fileURLToPath(new URL("../../native/linux-x64/worker", import.meta.url));
19
21
  let socket, send;
20
22
  let identity, outcome, error;
23
+ let paneId, settled = false, displayReleased = false;
21
24
  let tabId, entered = false, done = false, authenticated = false;
22
25
  let finish;
23
26
  const startupTimer = setTimeout(() => {
@@ -51,7 +54,7 @@ export async function runHerdrOwned(request, options = {}) {
51
54
  authenticated = true;
52
55
  clearTimeout(startupTimer);
53
56
  const { signal: _signal, onOwnership: _owner, onSpawn: _spawn, onOutput: _out, onObservation: _observation, onStreamEnd: _end, activityProbe: _probe, ...serializable } = request;
54
- send({ type: "request", request: serializable });
57
+ send({ type: "request", request: serializable, display });
55
58
  return;
56
59
  }
57
60
  if (message?.type === "ownership") {
@@ -107,6 +110,7 @@ export async function runHerdrOwned(request, options = {}) {
107
110
  }
108
111
  if (message?.type === "result" && !outcome) {
109
112
  outcome = message.result;
113
+ displayReleased = message.displayReleased === true;
110
114
  return;
111
115
  }
112
116
  if (message?.type === "failure") {
@@ -150,7 +154,7 @@ export async function runHerdrOwned(request, options = {}) {
150
154
  "--cwd",
151
155
  request.cwd,
152
156
  "--label",
153
- "pi-daddy governed child",
157
+ "pi-daddy " + role,
154
158
  "--no-focus",
155
159
  ...(options.workspace ? ["--workspace", options.workspace] : []),
156
160
  ]));
@@ -160,7 +164,8 @@ export async function runHerdrOwned(request, options = {}) {
160
164
  tabId = pane?.tab_id;
161
165
  if (!pane?.pane_id || !tabId)
162
166
  throw Error("Herdr creation returned no exact pane/tab identity");
163
- options.onPane?.(pane.pane_id, tabId);
167
+ paneId = pane.pane_id;
168
+ options.onPane?.(paneId, tabId);
164
169
  if (error || request.signal?.aborted)
165
170
  throw Error(error ?? "cancelled before Herdr command launch");
166
171
  entered = true;
@@ -185,6 +190,7 @@ export async function runHerdrOwned(request, options = {}) {
185
190
  const receipt = await readCapturedWorkerReceipt(identity);
186
191
  if (!receipt)
187
192
  throw Error("Herdr worker supplied no independently verified cleanup receipt");
193
+ settled = true;
188
194
  return { ...outcome, cleanup: { state: "settled", identity, receipt }, ...(error ? { spawnError: error } : {}) };
189
195
  }
190
196
  catch (cause) {
@@ -197,6 +203,7 @@ export async function runHerdrOwned(request, options = {}) {
197
203
  await new Promise((resolve) => setTimeout(resolve, 50));
198
204
  receipt = await readCapturedWorkerReceipt(identity);
199
205
  }
206
+ settled = Boolean(receipt);
200
207
  return {
201
208
  code: receipt?.workerCode ?? null,
202
209
  text: "",
@@ -218,6 +225,29 @@ export async function runHerdrOwned(request, options = {}) {
218
225
  request.signal?.removeEventListener("abort", abort);
219
226
  socket?.destroy();
220
227
  await new Promise((resolve) => server.close(() => resolve()));
228
+ // Launcher SIGKILL can bypass its display release. Only the exact native receipt permits this fallback.
229
+ // Sequence ordering applies to an existing source; UI delivery remains best effort and never changes native results.
230
+ if (paneId && identity && !(settled && displayReleased)) {
231
+ try {
232
+ const reply = await exec([
233
+ "pane",
234
+ settled ? "release-agent" : "report-agent",
235
+ paneId,
236
+ "--source",
237
+ display.source,
238
+ "--agent",
239
+ "pi",
240
+ "--seq",
241
+ "3",
242
+ ...(settled ? [] : ["--state", "unknown", "--message", "Native cleanup is unverified"]),
243
+ ]);
244
+ if (reply.code !== 0 || (reply.stdout.trim() && parseReply(reply).error))
245
+ console.error("pi-daddy: Herdr agent sidebar cleanup report unavailable");
246
+ }
247
+ catch {
248
+ console.error("pi-daddy: Herdr agent sidebar cleanup report unavailable");
249
+ }
250
+ }
221
251
  if (tabId && !options.keepPane) {
222
252
  const closed = parseReply(await exec(["tab", "close", tabId]));
223
253
  if (closed.error && !/tab .* not found|tab_not_found/.test(closed.error))
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-owned.js","sourceRoot":"","sources":["../../src/executors/herdr-owned.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"herdr-owned.js","sourceRoot":"","sources":["../../src/executors/herdr-owned.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- /** Measured transport matrix. Reachability alone never qualifies a backend or changes execution location. */
1
+ /** Check the live CLI contract; product release numbers are not compatibility boundaries. */
2
2
  import { type HerdrExec, type HerdrProbe } from "./herdr-cli.ts";
3
- export declare const QUALIFIED_HERDR_VERSION = "0.8.2";
4
- export declare const QUALIFIED_HERDR_PROTOCOL = 20;
5
3
  export declare function qualifyHerdr(probe: HerdrProbe, exec?: HerdrExec): Promise<HerdrProbe>;
6
4
  //# sourceMappingURL=herdr-qualification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-qualification.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-qualification.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9E,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAC/C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,SAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BxG"}
1
+ {"version":3,"file":"herdr-qualification.d.ts","sourceRoot":"","sources":["../../src/executors/herdr-qualification.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAe,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9E,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,SAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBxG"}
@@ -1,29 +1,24 @@
1
- /** Measured transport matrix. Reachability alone never qualifies a backend or changes execution location. */
1
+ /** Check the live CLI contract; product release numbers are not compatibility boundaries. */
2
2
  import { defaultExec } from "./herdr-cli.js";
3
- export const QUALIFIED_HERDR_VERSION = "0.8.2";
4
- export const QUALIFIED_HERDR_PROTOCOL = 20;
5
3
  export async function qualifyHerdr(probe, exec = defaultExec) {
6
4
  if (!probe.ok)
7
5
  return probe;
8
6
  try {
9
7
  if (process.platform !== "linux" || process.arch !== "x64")
10
8
  throw Error("Herdr owned execution requires Linux x64");
11
- const [client, server] = await Promise.all([exec(["--version"]), exec(["status", "server"])]);
12
- if (client.code !== 0 || client.stdout.trim() !== "herdr " + QUALIFIED_HERDR_VERSION)
13
- throw Error("Herdr client version is not qualified");
14
- const fields = Object.fromEntries(server.stdout
15
- .trim()
16
- .split("\n")
17
- .map((line) => {
18
- const at = line.indexOf(":");
19
- return [line.slice(0, at).trim(), line.slice(at + 1).trim()];
20
- }));
21
- if (server.code !== 0 ||
22
- fields.status !== "running" ||
23
- fields.version !== QUALIFIED_HERDR_VERSION ||
24
- fields.protocol !== String(QUALIFIED_HERDR_PROTOCOL) ||
25
- fields.compatible !== "yes")
26
- throw Error("Herdr server version/protocol is not qualified");
9
+ const reply = await exec(["status", "server", "--json"]);
10
+ if (reply.code !== 0)
11
+ throw Error("Herdr live server status failed: " + (reply.stderr.trim() || reply.stdout.trim()));
12
+ const status = JSON.parse(reply.stdout);
13
+ if (!status || status.status !== "running" || status.running !== true)
14
+ throw Error("Herdr server is not running");
15
+ // Our tab/pane CLI commands use the private protocol. Endpoint compatibility alone is insufficient.
16
+ if (!Number.isSafeInteger(status.protocol) || status.protocol < 1 || status.compatible !== true)
17
+ throw Error("Herdr client/server CLI protocol is incompatible or unavailable");
18
+ // Legacy servers do not advertise an endpoint generation. Respect an explicit modern incompatibility.
19
+ if ((status.endpoint_compatible !== undefined || status.capabilities?.endpoint_protocol_generation !== undefined) &&
20
+ status.endpoint_compatible !== true)
21
+ throw Error("Herdr client/server endpoint is incompatible or unavailable");
27
22
  return { ...probe, qualified: true };
28
23
  }
29
24
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"herdr-qualification.js","sourceRoot":"","sources":["../../src/executors/herdr-qualification.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,OAAO,EAAE,WAAW,EAAmC,MAAM,gBAAgB,CAAC;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAC/C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAiB,EAAE,OAAkB,WAAW;IACjF,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACpH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAG,uBAAuB;YAClF,MAAM,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,MAAM;aACV,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CACL,CAAC;QACF,IACE,MAAM,CAAC,IAAI,KAAK,CAAC;YACjB,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3B,MAAM,CAAC,OAAO,KAAK,uBAAuB;YAC1C,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,wBAAwB,CAAC;YACpD,MAAM,CAAC,UAAU,KAAK,KAAK;YAE3B,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"herdr-qualification.js","sourceRoot":"","sources":["../../src/executors/herdr-qualification.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,WAAW,EAAmC,MAAM,gBAAgB,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAiB,EAAE,OAAkB,WAAW;IACjF,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,MAAM,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACpH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;YAClB,MAAM,KAAK,CAAC,mCAAmC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;YAAE,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAClH,oGAAoG;QACpG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;YAC7F,MAAM,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,sGAAsG;QACtG,IACE,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE,4BAA4B,KAAK,SAAS,CAAC;YAC7G,MAAM,CAAC,mBAAmB,KAAK,IAAI;YAEnC,MAAM,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC"}
@@ -461,6 +461,7 @@ async function executePreparedChild(
461
461
  session.executor.kind === "herdr"
462
462
  ? (request) =>
463
463
  runHerdrOwned(request, {
464
+ displayName: input.agent ?? "child",
464
465
  onDisplay: (display) => {
465
466
  displayHerdr = display;
466
467
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-daddy",
3
- "version": "0.48.0",
3
+ "version": "0.48.2",
4
4
  "description": "Capability governance for pi sub-agents: spawn Agent Skills (SKILL.md) definitions whose allowed-tools becomes a grant that can only narrow going down a delegation tree, enforced by pi's own --tools allowlist, with an append-only ledger.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -0,0 +1,72 @@
1
+ /** Herdr sidebar observations only; never permission, execution or settlement authority. */
2
+ import { createConnection } from "node:net";
3
+ export interface HerdrAgentDisplay {
4
+ source: string;
5
+ role: string;
6
+ }
7
+ /** The pane launcher owns these reports, so coordinator loss still reaches native cleanup and release. */
8
+ export function herdrAgentDisplay(display: HerdrAgentDisplay, env: NodeJS.ProcessEnv = process.env) {
9
+ let pending = Promise.resolve(false);
10
+ const socketPath = env.HERDR_SOCKET_PATH,
11
+ paneId = env.HERDR_PANE_ID;
12
+ function publish(method: string, extra: Record<string, unknown>, seq: number): Promise<boolean> {
13
+ pending = pending.then(async () => {
14
+ if (env.HERDR_ENV !== "1" || !socketPath || !paneId) return false;
15
+ const request = {
16
+ id: display.source + ":" + seq,
17
+ method,
18
+ params: { pane_id: paneId, source: display.source, agent: "pi", seq, ...extra },
19
+ };
20
+ const delivered = await new Promise<boolean>((resolve) => {
21
+ let finished = false,
22
+ buffer = "";
23
+ const socket = createConnection(socketPath);
24
+ const finish = (ok: boolean) => {
25
+ if (finished) return;
26
+ finished = true;
27
+ clearTimeout(timer);
28
+ socket.destroy();
29
+ resolve(ok);
30
+ };
31
+ const timer = setTimeout(() => finish(false), 750);
32
+ socket.on("error", () => finish(false));
33
+ socket.on("end", () => finish(false));
34
+ socket.on("connect", () => socket.write(JSON.stringify(request) + "\n"));
35
+ socket.on("data", (bytes) => {
36
+ buffer += bytes.toString();
37
+ if (buffer.length > 16384) return finish(false);
38
+ const end = buffer.indexOf("\n");
39
+ if (end < 0) return;
40
+ try {
41
+ const reply = JSON.parse(buffer.slice(0, end));
42
+ finish(reply.id === request.id && !reply.error && reply.result !== undefined);
43
+ } catch {
44
+ finish(false);
45
+ }
46
+ });
47
+ }).catch(() => false);
48
+ if (!delivered) console.error("pi-daddy: Herdr agent sidebar report unavailable");
49
+ return delivered;
50
+ });
51
+ return pending;
52
+ }
53
+ return {
54
+ working: () => {
55
+ void publish("pane.report_agent", { state: "working" }, 1);
56
+ // Metadata has its own sequence namespace and is visible only while our exact lifecycle source owns the pane.
57
+ return publish(
58
+ "pane.report_metadata",
59
+ {
60
+ applies_to_source: display.source,
61
+ title: display.role,
62
+ display_agent: "Pi / " + display.role,
63
+ },
64
+ 1,
65
+ );
66
+ },
67
+ finish: (settled: boolean) =>
68
+ settled
69
+ ? publish("pane.release_agent", {}, 2)
70
+ : publish("pane.report_agent", { state: "unknown", message: "Native cleanup is unverified" }, 2),
71
+ };
72
+ }
@@ -97,7 +97,10 @@ export async function probeHerdr(options: { exec?: HerdrExec; timeoutMs?: number
97
97
  return await Promise.race<HerdrProbe>([
98
98
  exec(["tab", "list"]).then((reply) => {
99
99
  const parsed = parseReply(reply);
100
- return parsed.error ? { ok: false, error: parsed.error } : { ok: true };
100
+ if (parsed.error) return { ok: false, error: parsed.error };
101
+ if (reply.code !== 0 || !Array.isArray(parsed.result?.tabs))
102
+ return { ok: false, error: "Herdr tab list failed or returned an unsupported response" };
103
+ return { ok: true };
101
104
  }),
102
105
  new Promise<HerdrProbe>((settle) => {
103
106
  timer = setTimeout(() => settle({ ok: false, error: `probe timed out after ${timeoutMs}ms` }), timeoutMs);
@@ -4,6 +4,7 @@ import { processTreeActivity } from "./process-activity.ts";
4
4
  import { createConnection } from "node:net";
5
5
  import { runOwnedChild, type OwnedChildRunRequest } from "./owned-worker.ts";
6
6
  import { wire } from "./herdr-wire.ts";
7
+ import { herdrAgentDisplay } from "./herdr-agent-display.ts";
7
8
  export async function launchHerdrWorker(socketPath: string, token: string): Promise<void> {
8
9
  const socket = createConnection(socketPath);
9
10
  const abort = new AbortController();
@@ -43,6 +44,8 @@ export async function launchHerdrWorker(socketPath: string, token: string): Prom
43
44
  authenticated = true;
44
45
  const request = message.request as OwnedChildRunRequest & { sessionPath?: string };
45
46
  let childPid: number | undefined;
47
+ const display = herdrAgentDisplay(message.display);
48
+ let settled = false;
46
49
  void (async () => {
47
50
  try {
48
51
  const result = await runOwnedChild({
@@ -83,16 +86,20 @@ export async function launchHerdrWorker(socketPath: string, token: string): Prom
83
86
  },
84
87
  onSpawn: (pid) => {
85
88
  childPid = pid;
89
+ void display.working();
86
90
  send({ type: "spawned", pid });
87
91
  process.stdout.write("pi-daddy: governed child running\n");
88
92
  },
89
93
  });
94
+ settled = result.cleanup.state === "settled" || result.cleanup.state === "not-started";
95
+ const displayReleased = await display.finish(settled);
90
96
  if (!socket.destroyed) {
91
- send({ type: "result", result });
97
+ send({ type: "result", result, displayReleased: settled && displayReleased });
92
98
  socket.end();
93
99
  }
94
100
  process.stdout.write("\npi-daddy: " + result.cleanup.state + "\n");
95
101
  } catch (error) {
102
+ await display.finish(settled);
96
103
  if (!socket.destroyed) {
97
104
  try {
98
105
  send({ type: "failure", reason: String(error) });
@@ -24,6 +24,8 @@ export interface HerdrOwnedOptions {
24
24
  onDisplay?: (display: (text: string) => void) => void;
25
25
  /** Tests may select a freshly built launcher. Production always uses the packaged build. */
26
26
  launcherPath?: string;
27
+ /** Human-readable role; display only, never a dispatch selector. */
28
+ displayName?: string;
27
29
  }
28
30
  export async function runHerdrOwned(
29
31
  request: OwnedChildRunRequest,
@@ -33,11 +35,16 @@ export async function runHerdrOwned(
33
35
  const directory = await mkdtemp(join(tmpdir(), "pd-herdr-"));
34
36
  const path = join(directory, "owner.sock"),
35
37
  token = randomUUID();
38
+ const role = (options.displayName ?? "child").replace(/[^a-zA-Z0-9_-]/g, "-").slice(0, 48) || "child";
39
+ const display = { source: "pi-daddy:" + randomUUID(), role };
36
40
  const launcher =
37
41
  options.launcherPath ?? fileURLToPath(new URL("../../dist/executors/herdr-launcher.js", import.meta.url));
38
42
  const helper = fileURLToPath(new URL("../../native/linux-x64/worker", import.meta.url));
39
43
  let socket: Socket | undefined, send: ((value: unknown) => void) | undefined;
40
44
  let identity: CapturedWorkerIdentity | undefined, outcome: OwnedChildRunResult | undefined, error: string | undefined;
45
+ let paneId: string | undefined,
46
+ settled = false,
47
+ displayReleased = false;
41
48
  let tabId: string | undefined,
42
49
  entered = false,
43
50
  done = false,
@@ -86,7 +93,7 @@ export async function runHerdrOwned(
86
93
  activityProbe: _probe,
87
94
  ...serializable
88
95
  } = request;
89
- send!({ type: "request", request: serializable });
96
+ send!({ type: "request", request: serializable, display });
90
97
  return;
91
98
  }
92
99
  if (message?.type === "ownership") {
@@ -142,6 +149,7 @@ export async function runHerdrOwned(
142
149
  }
143
150
  if (message?.type === "result" && !outcome) {
144
151
  outcome = message.result;
152
+ displayReleased = message.displayReleased === true;
145
153
  return;
146
154
  }
147
155
  if (message?.type === "failure") {
@@ -190,7 +198,7 @@ export async function runHerdrOwned(
190
198
  "--cwd",
191
199
  request.cwd,
192
200
  "--label",
193
- "pi-daddy governed child",
201
+ "pi-daddy " + role,
194
202
  "--no-focus",
195
203
  ...(options.workspace ? ["--workspace", options.workspace] : []),
196
204
  ]),
@@ -199,7 +207,8 @@ export async function runHerdrOwned(
199
207
  const pane = created.result?.root_pane as { pane_id?: string; tab_id?: string } | undefined;
200
208
  tabId = pane?.tab_id;
201
209
  if (!pane?.pane_id || !tabId) throw Error("Herdr creation returned no exact pane/tab identity");
202
- options.onPane?.(pane.pane_id, tabId);
210
+ paneId = pane.pane_id;
211
+ options.onPane?.(paneId, tabId);
203
212
  if (error || request.signal?.aborted) throw Error(error ?? "cancelled before Herdr command launch");
204
213
  entered = true;
205
214
  const launchReply = await exec([
@@ -218,6 +227,7 @@ export async function runHerdrOwned(
218
227
  if (!outcome || !identity) throw Error(error ?? "Herdr launcher closed without a complete result/ownership");
219
228
  const receipt = await readCapturedWorkerReceipt(identity);
220
229
  if (!receipt) throw Error("Herdr worker supplied no independently verified cleanup receipt");
230
+ settled = true;
221
231
  return { ...outcome, cleanup: { state: "settled", identity, receipt }, ...(error ? { spawnError: error } : {}) };
222
232
  } catch (cause) {
223
233
  fail(cause);
@@ -229,6 +239,7 @@ export async function runHerdrOwned(
229
239
  await new Promise((resolve) => setTimeout(resolve, 50));
230
240
  receipt = await readCapturedWorkerReceipt(identity);
231
241
  }
242
+ settled = Boolean(receipt);
232
243
  return {
233
244
  code: receipt?.workerCode ?? null,
234
245
  text: "",
@@ -250,6 +261,28 @@ export async function runHerdrOwned(
250
261
  request.signal?.removeEventListener("abort", abort);
251
262
  socket?.destroy();
252
263
  await new Promise<void>((resolve) => server.close(() => resolve()));
264
+ // Launcher SIGKILL can bypass its display release. Only the exact native receipt permits this fallback.
265
+ // Sequence ordering applies to an existing source; UI delivery remains best effort and never changes native results.
266
+ if (paneId && identity && !(settled && displayReleased)) {
267
+ try {
268
+ const reply = await exec([
269
+ "pane",
270
+ settled ? "release-agent" : "report-agent",
271
+ paneId,
272
+ "--source",
273
+ display.source,
274
+ "--agent",
275
+ "pi",
276
+ "--seq",
277
+ "3",
278
+ ...(settled ? [] : ["--state", "unknown", "--message", "Native cleanup is unverified"]),
279
+ ]);
280
+ if (reply.code !== 0 || (reply.stdout.trim() && parseReply(reply).error))
281
+ console.error("pi-daddy: Herdr agent sidebar cleanup report unavailable");
282
+ } catch {
283
+ console.error("pi-daddy: Herdr agent sidebar cleanup report unavailable");
284
+ }
285
+ }
253
286
  if (tabId && !options.keepPane) {
254
287
  const closed = parseReply(await exec(["tab", "close", tabId]));
255
288
  if (closed.error && !/tab .* not found|tab_not_found/.test(closed.error))
@@ -1,31 +1,24 @@
1
- /** Measured transport matrix. Reachability alone never qualifies a backend or changes execution location. */
1
+ /** Check the live CLI contract; product release numbers are not compatibility boundaries. */
2
2
  import { defaultExec, type HerdrExec, type HerdrProbe } from "./herdr-cli.ts";
3
- export const QUALIFIED_HERDR_VERSION = "0.8.2";
4
- export const QUALIFIED_HERDR_PROTOCOL = 20;
3
+
5
4
  export async function qualifyHerdr(probe: HerdrProbe, exec: HerdrExec = defaultExec): Promise<HerdrProbe> {
6
5
  if (!probe.ok) return probe;
7
6
  try {
8
7
  if (process.platform !== "linux" || process.arch !== "x64") throw Error("Herdr owned execution requires Linux x64");
9
- const [client, server] = await Promise.all([exec(["--version"]), exec(["status", "server"])]);
10
- if (client.code !== 0 || client.stdout.trim() !== "herdr " + QUALIFIED_HERDR_VERSION)
11
- throw Error("Herdr client version is not qualified");
12
- const fields = Object.fromEntries(
13
- server.stdout
14
- .trim()
15
- .split("\n")
16
- .map((line) => {
17
- const at = line.indexOf(":");
18
- return [line.slice(0, at).trim(), line.slice(at + 1).trim()];
19
- }),
20
- );
8
+ const reply = await exec(["status", "server", "--json"]);
9
+ if (reply.code !== 0)
10
+ throw Error("Herdr live server status failed: " + (reply.stderr.trim() || reply.stdout.trim()));
11
+ const status = JSON.parse(reply.stdout);
12
+ if (!status || status.status !== "running" || status.running !== true) throw Error("Herdr server is not running");
13
+ // Our tab/pane CLI commands use the private protocol. Endpoint compatibility alone is insufficient.
14
+ if (!Number.isSafeInteger(status.protocol) || status.protocol < 1 || status.compatible !== true)
15
+ throw Error("Herdr client/server CLI protocol is incompatible or unavailable");
16
+ // Legacy servers do not advertise an endpoint generation. Respect an explicit modern incompatibility.
21
17
  if (
22
- server.code !== 0 ||
23
- fields.status !== "running" ||
24
- fields.version !== QUALIFIED_HERDR_VERSION ||
25
- fields.protocol !== String(QUALIFIED_HERDR_PROTOCOL) ||
26
- fields.compatible !== "yes"
18
+ (status.endpoint_compatible !== undefined || status.capabilities?.endpoint_protocol_generation !== undefined) &&
19
+ status.endpoint_compatible !== true
27
20
  )
28
- throw Error("Herdr server version/protocol is not qualified");
21
+ throw Error("Herdr client/server endpoint is incompatible or unavailable");
29
22
  return { ...probe, qualified: true };
30
23
  } catch (error) {
31
24
  return { ...probe, qualified: false, qualificationReason: String(error) };