pi-daddy 0.48.1 → 0.48.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +25 -6
- package/dist/executors/captured-execution.d.ts.map +1 -1
- package/dist/executors/captured-execution.js +12 -1
- package/dist/executors/captured-execution.js.map +1 -1
- package/dist/executors/herdr-agent-display.d.ts +10 -0
- package/dist/executors/herdr-agent-display.d.ts.map +1 -0
- package/dist/executors/herdr-agent-display.js +68 -0
- package/dist/executors/herdr-agent-display.js.map +1 -0
- package/dist/executors/herdr-launcher.d.ts.map +1 -1
- package/dist/executors/herdr-launcher.js +30 -4
- package/dist/executors/herdr-launcher.js.map +1 -1
- package/dist/executors/herdr-owned.d.ts +2 -0
- package/dist/executors/herdr-owned.d.ts.map +1 -1
- package/dist/executors/herdr-owned.js +33 -3
- package/dist/executors/herdr-owned.js.map +1 -1
- package/dist/executors/owned-pi-ui.d.ts +3 -0
- package/dist/executors/owned-pi-ui.d.ts.map +1 -0
- package/dist/executors/owned-pi-ui.js +114 -0
- package/dist/executors/owned-pi-ui.js.map +1 -0
- package/dist/executors/owned-pi-view.d.ts +5 -0
- package/dist/executors/owned-pi-view.d.ts.map +1 -0
- package/dist/executors/owned-pi-view.js +60 -0
- package/dist/executors/owned-pi-view.js.map +1 -0
- package/dist/executors/owned-worker.d.ts +2 -0
- package/dist/executors/owned-worker.d.ts.map +1 -1
- package/dist/executors/owned-worker.js +27 -11
- package/dist/executors/owned-worker.js.map +1 -1
- package/dist/governance/approval-prompt.d.ts +1 -1
- package/extensions/approvals.ts +3 -2
- package/extensions/execute-child.ts +2 -0
- package/extensions/session.ts +3 -8
- package/package.json +1 -1
- package/src/executors/captured-execution.ts +13 -1
- package/src/executors/herdr-agent-display.ts +72 -0
- package/src/executors/herdr-launcher.ts +23 -3
- package/src/executors/herdr-owned.ts +36 -3
- package/src/executors/owned-pi-ui.ts +116 -0
- package/src/executors/owned-pi-view.ts +58 -0
- package/src/executors/owned-worker.ts +29 -11
- package/src/governance/approval-prompt.ts +1 -1
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/** Install LAST: observe final extension-transformed Pi events through the private inherited pipe. */
|
|
2
|
+
import { fstatSync } from "node:fs";
|
|
3
|
+
import { Socket } from "node:net";
|
|
4
|
+
import { getAgentDir, ProjectTrustStore, SettingsManager } from "@earendil-works/pi-coding-agent";
|
|
5
|
+
import { OWNED_PI_VIEW_READY, failOwnedPiUi as fail } from "./owned-pi-view.js";
|
|
6
|
+
const EVENT_FD = 6;
|
|
7
|
+
export default function ownedPiUi(pi) {
|
|
8
|
+
try {
|
|
9
|
+
const channel = fstatSync(EVENT_FD);
|
|
10
|
+
if (!channel.isFIFO() && !channel.isSocket())
|
|
11
|
+
throw Error("fd 6 is not an inherited event pipe");
|
|
12
|
+
const output = new Socket({ fd: EVENT_FD, readable: false, writable: true });
|
|
13
|
+
output.on("error", fail);
|
|
14
|
+
let pending = Promise.resolve();
|
|
15
|
+
const send = (event) => {
|
|
16
|
+
let record;
|
|
17
|
+
try {
|
|
18
|
+
record = JSON.stringify(event) + "\n";
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return fail(error);
|
|
22
|
+
}
|
|
23
|
+
pending = pending
|
|
24
|
+
.then(() => new Promise((resolve) => {
|
|
25
|
+
output.write(record, (error) => (error ? fail(error) : resolve()));
|
|
26
|
+
}))
|
|
27
|
+
.catch(fail);
|
|
28
|
+
return pending;
|
|
29
|
+
};
|
|
30
|
+
// Keep the previous noninteractive trust policy; native UI must not introduce a blocking trust dialog.
|
|
31
|
+
pi.on("project_trust", (event) => {
|
|
32
|
+
try {
|
|
33
|
+
const agentDir = getAgentDir();
|
|
34
|
+
const remembered = new ProjectTrustStore(agentDir).get(event.cwd);
|
|
35
|
+
const trusted = remembered ??
|
|
36
|
+
SettingsManager.create(event.cwd, agentDir, { projectTrusted: false }).getDefaultProjectTrust() === "always";
|
|
37
|
+
return { trusted: trusted ? "yes" : "no", remember: false };
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
return fail(error);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
let guardedSession;
|
|
44
|
+
pi.events.on(OWNED_PI_VIEW_READY, (ready) => {
|
|
45
|
+
if (ready && typeof ready === "object" && "sessionManager" in ready && "sessionId" in ready)
|
|
46
|
+
guardedSession = { sessionManager: ready.sessionManager, sessionId: ready.sessionId };
|
|
47
|
+
});
|
|
48
|
+
let started = false;
|
|
49
|
+
pi.on("session_start", (_event, ctx) => {
|
|
50
|
+
try {
|
|
51
|
+
if (started)
|
|
52
|
+
throw Error("the owned session cannot be replaced");
|
|
53
|
+
if (ctx.mode !== "tui" ||
|
|
54
|
+
guardedSession?.sessionManager !== ctx.sessionManager ||
|
|
55
|
+
guardedSession.sessionId !== ctx.sessionManager.getSessionId())
|
|
56
|
+
throw Error("the native Pi view guard is not ready for this session");
|
|
57
|
+
const header = ctx.sessionManager.getHeader();
|
|
58
|
+
if (!header ||
|
|
59
|
+
header.type !== "session" ||
|
|
60
|
+
header.version !== 3 ||
|
|
61
|
+
header.id !== ctx.sessionManager.getSessionId())
|
|
62
|
+
throw Error("missing or mismatched actual Pi session header");
|
|
63
|
+
started = true;
|
|
64
|
+
return send(header);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return fail(error);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
const forward = (event) => {
|
|
71
|
+
if (!started)
|
|
72
|
+
fail("Pi event arrived before the guarded session");
|
|
73
|
+
return send(event);
|
|
74
|
+
};
|
|
75
|
+
pi.on("agent_start", forward);
|
|
76
|
+
pi.on("agent_end", forward);
|
|
77
|
+
pi.on("turn_start", forward);
|
|
78
|
+
pi.on("turn_end", forward);
|
|
79
|
+
pi.on("message_start", forward);
|
|
80
|
+
pi.on("message_end", forward);
|
|
81
|
+
pi.on("tool_execution_start", forward);
|
|
82
|
+
pi.on("tool_execution_update", forward);
|
|
83
|
+
pi.on("tool_execution_end", forward);
|
|
84
|
+
pi.on("message_update", (event) => {
|
|
85
|
+
// Match Pi's JSON delta projection without copying growing partial-message snapshots.
|
|
86
|
+
if (event.message.role !== "assistant")
|
|
87
|
+
fail("message_update is not an assistant message");
|
|
88
|
+
const usage = event.message.usage, update = event.assistantMessageEvent;
|
|
89
|
+
if (!("partial" in update))
|
|
90
|
+
return forward({ type: event.type, usage, assistantMessageEvent: update });
|
|
91
|
+
const { partial, ...delta } = update;
|
|
92
|
+
if (update.type === "toolcall_start") {
|
|
93
|
+
const tool = partial.content[update.contentIndex];
|
|
94
|
+
if (tool?.type !== "toolCall")
|
|
95
|
+
fail("toolcall_start lacks its actual tool call");
|
|
96
|
+
return forward({
|
|
97
|
+
type: event.type,
|
|
98
|
+
usage,
|
|
99
|
+
assistantMessageEvent: { ...delta, id: tool.id, toolName: tool.name },
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return forward({ type: event.type, usage, assistantMessageEvent: delta });
|
|
103
|
+
});
|
|
104
|
+
pi.on("agent_settled", async (event, ctx) => {
|
|
105
|
+
await forward(event);
|
|
106
|
+
// The pipe has flushed before orderly shutdown; native receipt/session checks remain authoritative.
|
|
107
|
+
ctx.shutdown();
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
fail(error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=owned-pi-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owned-pi-ui.js","sourceRoot":"","sources":["../../src/executors/owned-pi-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
export declare const OWNED_PI_VIEW_READY = "pi-daddy:owned-pi-view-ready";
|
|
3
|
+
export declare function failOwnedPiUi(error: unknown): never;
|
|
4
|
+
export default function ownedPiView(pi: ExtensionAPI): void;
|
|
5
|
+
//# sourceMappingURL=owned-pi-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owned-pi-view.d.ts","sourceRoot":"","sources":["../../src/executors/owned-pi-view.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAClE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAMnD;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA4C1D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** Install FIRST: native Pi remains observable, but only its parent can control work. */
|
|
2
|
+
import { writeSync } from "node:fs";
|
|
3
|
+
export const OWNED_PI_VIEW_READY = "pi-daddy:owned-pi-view-ready";
|
|
4
|
+
export function failOwnedPiUi(error) {
|
|
5
|
+
try {
|
|
6
|
+
writeSync(2, "pi-daddy: owned Pi UI refused: " + String(error) + "\n");
|
|
7
|
+
}
|
|
8
|
+
finally {
|
|
9
|
+
process.exit(70);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export default function ownedPiView(pi) {
|
|
13
|
+
try {
|
|
14
|
+
if (typeof pi.registerMarkdownTransformer !== "function")
|
|
15
|
+
throw Error("Pi lacks its public markdown renderer hook");
|
|
16
|
+
pi.registerMarkdownTransformer((markdown, context) => context.messageType === "assistant-thinking" ? "Thinking hidden" : markdown);
|
|
17
|
+
let guarded = false;
|
|
18
|
+
// No await here: the first session handler installs the guard before another handler can yield.
|
|
19
|
+
pi.on("session_start", (_event, ctx) => {
|
|
20
|
+
try {
|
|
21
|
+
if (guarded)
|
|
22
|
+
throw Error("the owned session cannot be replaced");
|
|
23
|
+
if (ctx.mode !== "tui" ||
|
|
24
|
+
typeof ctx.ui.onTerminalInput !== "function" ||
|
|
25
|
+
typeof ctx.ui.getToolsExpanded !== "function" ||
|
|
26
|
+
typeof ctx.ui.setToolsExpanded !== "function")
|
|
27
|
+
throw Error("Pi lacks the required native TUI controls");
|
|
28
|
+
const unsubscribe = ctx.ui.onTerminalInput((data) => {
|
|
29
|
+
// The renderer consumes this exact terminal response before dispatching any user action.
|
|
30
|
+
if (/^\x1b\[6;\d+;\d+t$/.test(data))
|
|
31
|
+
return;
|
|
32
|
+
try {
|
|
33
|
+
if (["\x0f", "\x1b[111;5u", "\x1b[111;5:1u", "\x1b[111;5:2u", "\x1b[27;5;111~"].includes(data))
|
|
34
|
+
ctx.ui.setToolsExpanded(!ctx.ui.getToolsExpanded());
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
failOwnedPiUi(error);
|
|
38
|
+
}
|
|
39
|
+
return { consume: true };
|
|
40
|
+
});
|
|
41
|
+
if (typeof unsubscribe !== "function")
|
|
42
|
+
throw Error("Pi did not install the terminal input guard");
|
|
43
|
+
ctx.ui.setEditorText("");
|
|
44
|
+
ctx.ui.setStatus("pi-daddy-owned", "View only · parent controls the task · Ctrl+O expands tools");
|
|
45
|
+
guarded = true;
|
|
46
|
+
pi.events.emit(OWNED_PI_VIEW_READY, {
|
|
47
|
+
sessionManager: ctx.sessionManager,
|
|
48
|
+
sessionId: ctx.sessionManager.getSessionId(),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
failOwnedPiUi(error);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
failOwnedPiUi(error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=owned-pi-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owned-pi-view.js","sourceRoot":"","sources":["../../src/executors/owned-pi-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export interface OwnedChildRunRequest extends ChildRunRequest {
|
|
|
8
8
|
onOwnership?: (identity: CapturedWorkerIdentity) => Promise<void> | void;
|
|
9
9
|
/** JSON protocol consumers observe all bytes without capturing enormous replay streams as answer text. */
|
|
10
10
|
captureStdout?: boolean;
|
|
11
|
+
/** Actual pane terminal for Pi's native view. Protocol events arrive separately on fd 6. */
|
|
12
|
+
terminalUi?: boolean;
|
|
11
13
|
/** Bounded diagnostics may truncate without stopping independently captured primary output. */
|
|
12
14
|
stopOnOutputLimit?: boolean;
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owned-worker.d.ts","sourceRoot":"","sources":["../../src/executors/owned-worker.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAM3G,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE3G,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzE,0GAA0G;IAC1G,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,OAAO,EAAE,qBAAqB,CAAC;CAChC;AACD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"owned-worker.d.ts","sourceRoot":"","sources":["../../src/executors/owned-worker.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAM3G,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE3G,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,iGAAiG;IACjG,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzE,0GAA0G;IAC1G,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,OAAO,EAAE,qBAAqB,CAAC;CAChC;AACD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgT/F"}
|
|
@@ -26,6 +26,8 @@ export async function runOwnedChild(request) {
|
|
|
26
26
|
return notStarted("cancelled before helper launch", true);
|
|
27
27
|
if (process.platform !== "linux" || process.arch !== "x64")
|
|
28
28
|
return notStarted("captured worker requires qualified Linux x64 helper");
|
|
29
|
+
if (request.terminalUi && (!process.stdin.isTTY || !process.stdout.isTTY || !process.stderr.isTTY))
|
|
30
|
+
return notStarted("native Pi view requires a real pane terminal on stdin, stdout and stderr");
|
|
29
31
|
let helper, root, hash;
|
|
30
32
|
const nonce = randomUUID();
|
|
31
33
|
let binary;
|
|
@@ -72,12 +74,25 @@ export async function runOwnedChild(request) {
|
|
|
72
74
|
], {
|
|
73
75
|
cwd: root,
|
|
74
76
|
env: request.env,
|
|
75
|
-
stdio:
|
|
76
|
-
|
|
77
|
+
stdio: request.terminalUi
|
|
78
|
+
? ["inherit", "inherit", "inherit", "pipe", "pipe", binary.fd, "pipe"]
|
|
79
|
+
: ["ignore", "pipe", "pipe", "pipe", "pipe", binary.fd],
|
|
80
|
+
// The UI shares the pane's foreground process group for raw input and SIGWINCH.
|
|
81
|
+
// Cleanup still targets owned descendants by pidfd, never by process group.
|
|
82
|
+
detached: !request.terminalUi,
|
|
77
83
|
});
|
|
78
84
|
void binary.close();
|
|
79
85
|
const control = child.stdio[3];
|
|
80
86
|
const status = child.stdio[4];
|
|
87
|
+
const streams = {
|
|
88
|
+
stdout: request.terminalUi ? child.stdio.at(6) : child.stdout,
|
|
89
|
+
stderr: child.stderr,
|
|
90
|
+
};
|
|
91
|
+
const closeObservations = () => {
|
|
92
|
+
streams.stdout?.destroy();
|
|
93
|
+
streams.stderr?.destroy();
|
|
94
|
+
status.destroy();
|
|
95
|
+
};
|
|
81
96
|
let identity;
|
|
82
97
|
let text = "", count = 0, truncated = false, timedOut = false, aborted = false, idle = false;
|
|
83
98
|
let failure, done = false, stopping = false, ready = "";
|
|
@@ -122,9 +137,7 @@ export async function runOwnedChild(request) {
|
|
|
122
137
|
stopWatchdog = setTimeout(() => {
|
|
123
138
|
failure ??= "worker helper failed to establish cleanup before its bound";
|
|
124
139
|
child.kill("SIGKILL");
|
|
125
|
-
|
|
126
|
-
child.stderr?.destroy();
|
|
127
|
-
status.destroy();
|
|
140
|
+
closeObservations();
|
|
128
141
|
}, cleanupCeiling + 1000);
|
|
129
142
|
};
|
|
130
143
|
function armIdle() {
|
|
@@ -138,10 +151,15 @@ export async function runOwnedChild(request) {
|
|
|
138
151
|
stop();
|
|
139
152
|
}, request.idleTimeoutMs);
|
|
140
153
|
}
|
|
141
|
-
|
|
142
|
-
|
|
154
|
+
streams.stdout?.on("data", (bytes) => observe("stdout", bytes));
|
|
155
|
+
streams.stderr?.on("data", (bytes) => observe("stderr", bytes));
|
|
156
|
+
for (const stream of Object.values(streams))
|
|
157
|
+
stream?.on("error", (error) => {
|
|
158
|
+
failure ??= "child event channel failed: " + String(error);
|
|
159
|
+
stop();
|
|
160
|
+
});
|
|
143
161
|
for (const stream of ["stdout", "stderr"])
|
|
144
|
-
|
|
162
|
+
streams[stream]?.on("end", () => {
|
|
145
163
|
const tail = decoders[stream].end();
|
|
146
164
|
if (tail && !(stream === "stdout" && request.captureStdout === false)) {
|
|
147
165
|
const kept = takeBytes(tail, Math.max(0, (request.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES) - count));
|
|
@@ -248,9 +266,7 @@ export async function runOwnedChild(request) {
|
|
|
248
266
|
void (async () => {
|
|
249
267
|
if (!identity || !(await readCapturedWorkerReceipt(identity))) {
|
|
250
268
|
failure ??= "helper exited without an independent settlement receipt";
|
|
251
|
-
|
|
252
|
-
child.stderr?.destroy();
|
|
253
|
-
status.destroy();
|
|
269
|
+
closeObservations();
|
|
254
270
|
}
|
|
255
271
|
})();
|
|
256
272
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owned-worker.js","sourceRoot":"","sources":["../../src/executors/owned-worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"owned-worker.js","sourceRoot":"","sources":["../../src/executors/owned-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ export interface PromptOutcome {
|
|
|
58
58
|
}
|
|
59
59
|
export interface ApprovalGateOptions {
|
|
60
60
|
ui: ApprovalUI;
|
|
61
|
-
/**
|
|
61
|
+
/** Whether a human can answer here. False in print/json mode and view-only child tabs. */
|
|
62
62
|
hasUI: boolean;
|
|
63
63
|
/** pi's `ctx.mode`, quoted back in the refusal so an operator can see why. */
|
|
64
64
|
mode: string;
|
package/extensions/approvals.ts
CHANGED
|
@@ -233,8 +233,9 @@ export async function obtainApprovals(
|
|
|
233
233
|
// precisely what spec §6.1 exists to prevent. Options are per-call; the queue is session-long.
|
|
234
234
|
const gate = session.approvalGateFor({
|
|
235
235
|
ui: ctx.ui,
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
// A native child tab is a viewer. Auto and inherited approvals still work; only the root can answer.
|
|
237
|
+
hasUI: ctx.hasUI && !(session.depth > 0),
|
|
238
|
+
mode: session.depth > 0 && ctx.mode === "tui" ? "view-only child" : ctx.mode,
|
|
238
239
|
timeoutMs: () => timeoutMsFromEnv(process.env[ENV_APPROVAL_TIMEOUT]),
|
|
239
240
|
autoMode: session.autoMode,
|
|
240
241
|
});
|
|
@@ -424,6 +424,7 @@ async function executePreparedChild(
|
|
|
424
424
|
const output = await runCapturedExecution(
|
|
425
425
|
{
|
|
426
426
|
executionId,
|
|
427
|
+
terminalUi: session.executor.kind === "herdr",
|
|
427
428
|
sessionPath: activitySession.path,
|
|
428
429
|
onReadCleanup,
|
|
429
430
|
onOwnership: async (identity) => {
|
|
@@ -461,6 +462,7 @@ async function executePreparedChild(
|
|
|
461
462
|
session.executor.kind === "herdr"
|
|
462
463
|
? (request) =>
|
|
463
464
|
runHerdrOwned(request, {
|
|
465
|
+
displayName: input.agent ?? "child",
|
|
464
466
|
onDisplay: (display) => {
|
|
465
467
|
displayHerdr = display;
|
|
466
468
|
},
|
package/extensions/session.ts
CHANGED
|
@@ -694,14 +694,9 @@ export function createGrantsSession(
|
|
|
694
694
|
skillPaths: skillPathsFromCatalog(await delegationCatalog(session)),
|
|
695
695
|
// ADR-0016: operator-authored SKILL.md definitions, so `delegate({agent})` can name one.
|
|
696
696
|
definitions: session.definitions,
|
|
697
|
-
//
|
|
698
|
-
//
|
|
699
|
-
|
|
700
|
-
//
|
|
701
|
-
// Read live off `session.executor` (ADR-0031) rather than a boolean captured in the factory: the probe
|
|
702
|
-
// has not run when this session object is built, so a captured value would plan `--print` for a session
|
|
703
|
-
// that turns out to use panes — and `runHerdrPane` refuses a plan containing `--print` by design.
|
|
704
|
-
interactive: false, // Both qualified backends use the same one-shot Pi JSON protocol.
|
|
697
|
+
// Plan the real terminal invocation explicitly; the captured backend remains one-shot JSON.
|
|
698
|
+
// Read the selected executor at dispatch, after its live qualification completes.
|
|
699
|
+
interactive: session.executor.kind === "herdr",
|
|
705
700
|
...(approved ? { approved } : {}),
|
|
706
701
|
};
|
|
707
702
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-daddy",
|
|
3
|
-
"version": "0.48.
|
|
3
|
+
"version": "0.48.3",
|
|
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",
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { mkdtemp } from "node:fs/promises";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
5
6
|
import { runOwnedChild, type OwnedChildRunRequest, type OwnedChildRunResult } from "./owned-worker.ts";
|
|
6
7
|
import type { BoundedReadCleanupError } from "../kernel/bounded-read.ts";
|
|
7
8
|
import { ChildFinalCapture, type ChildFinal } from "./child-final.ts";
|
|
@@ -36,7 +37,18 @@ export async function runCapturedExecution(
|
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
39
|
const capture = new ChildFinalCapture(request.onOutput, request.onReadCleanup);
|
|
39
|
-
const args = [...request.args
|
|
40
|
+
const args = [...request.args];
|
|
41
|
+
if (request.terminalUi) {
|
|
42
|
+
const extension = (name: string) =>
|
|
43
|
+
fileURLToPath(new URL("./" + name + (import.meta.url.endsWith(".ts") ? ".ts" : ".js"), import.meta.url));
|
|
44
|
+
// Pi enables editor commands before awaiting session_start handlers. The view guard must be first;
|
|
45
|
+
// the event observer remains last so earlier message transformations are captured exactly.
|
|
46
|
+
const firstExtension = args.findIndex(
|
|
47
|
+
(arg, index) => index < args.length - 1 && ["--no-extensions", "-ne", "-e", "--extension"].includes(arg),
|
|
48
|
+
);
|
|
49
|
+
args.splice(firstExtension < 0 ? args.length - 1 : firstExtension, 0, "-e", extension("owned-pi-view"));
|
|
50
|
+
args.splice(args.length - 1, 0, "-e", extension("owned-pi-ui"), "--tui-mode", "regular");
|
|
51
|
+
} else args.splice(args.length - 1, 0, "--mode", "json");
|
|
40
52
|
const output = await runOwned({
|
|
41
53
|
...request,
|
|
42
54
|
args,
|
|
@@ -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
|
+
}
|
|
@@ -4,11 +4,13 @@ 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();
|
|
10
11
|
let started = false,
|
|
11
12
|
authenticated = false,
|
|
13
|
+
terminalUi = false,
|
|
12
14
|
acknowledge: (() => void) | undefined,
|
|
13
15
|
rejectGate: ((error: Error) => void) | undefined;
|
|
14
16
|
const lost = (error: Error) => {
|
|
@@ -31,7 +33,7 @@ export async function launchHerdrWorker(socketPath: string, token: string): Prom
|
|
|
31
33
|
return;
|
|
32
34
|
}
|
|
33
35
|
if (message?.type === "display" && authenticated && typeof message.text === "string") {
|
|
34
|
-
process.stdout.write(message.text);
|
|
36
|
+
if (!terminalUi) process.stdout.write(message.text);
|
|
35
37
|
return;
|
|
36
38
|
}
|
|
37
39
|
if (message?.type !== "request" || started) {
|
|
@@ -42,9 +44,14 @@ export async function launchHerdrWorker(socketPath: string, token: string): Prom
|
|
|
42
44
|
started = true;
|
|
43
45
|
authenticated = true;
|
|
44
46
|
const request = message.request as OwnedChildRunRequest & { sessionPath?: string };
|
|
47
|
+
terminalUi = request.terminalUi === true;
|
|
45
48
|
let childPid: number | undefined;
|
|
49
|
+
const display = herdrAgentDisplay(message.display);
|
|
50
|
+
let settled = false;
|
|
46
51
|
void (async () => {
|
|
52
|
+
const wasRaw = process.stdin.isRaw;
|
|
47
53
|
try {
|
|
54
|
+
if (terminalUi && process.stdin.isTTY) process.stdin.setRawMode(true);
|
|
48
55
|
const result = await runOwnedChild({
|
|
49
56
|
...request,
|
|
50
57
|
signal: abort.signal,
|
|
@@ -83,16 +90,23 @@ export async function launchHerdrWorker(socketPath: string, token: string): Prom
|
|
|
83
90
|
},
|
|
84
91
|
onSpawn: (pid) => {
|
|
85
92
|
childPid = pid;
|
|
93
|
+
void display.working();
|
|
86
94
|
send({ type: "spawned", pid });
|
|
87
|
-
process.stdout.write("pi-daddy: governed child running\n");
|
|
95
|
+
if (!terminalUi) process.stdout.write("pi-daddy: governed child running\n");
|
|
88
96
|
},
|
|
89
97
|
});
|
|
98
|
+
settled = result.cleanup.state === "settled" || result.cleanup.state === "not-started";
|
|
99
|
+
// Mark only this owned terminal as settled; this is cosmetic, not process or sidebar authority.
|
|
100
|
+
// Unknown cleanup keeps its existing title, and a killed launcher cannot reset it.
|
|
101
|
+
if (terminalUi && settled) process.stdout.write("\x1b]0;Task settled\x07");
|
|
102
|
+
const displayReleased = await display.finish(settled);
|
|
90
103
|
if (!socket.destroyed) {
|
|
91
|
-
send({ type: "result", result });
|
|
104
|
+
send({ type: "result", result, displayReleased: settled && displayReleased });
|
|
92
105
|
socket.end();
|
|
93
106
|
}
|
|
94
107
|
process.stdout.write("\npi-daddy: " + result.cleanup.state + "\n");
|
|
95
108
|
} catch (error) {
|
|
109
|
+
await display.finish(settled);
|
|
96
110
|
if (!socket.destroyed) {
|
|
97
111
|
try {
|
|
98
112
|
send({ type: "failure", reason: String(error) });
|
|
@@ -100,6 +114,12 @@ export async function launchHerdrWorker(socketPath: string, token: string): Prom
|
|
|
100
114
|
socket.end();
|
|
101
115
|
}
|
|
102
116
|
}
|
|
117
|
+
} finally {
|
|
118
|
+
try {
|
|
119
|
+
if (terminalUi && process.stdin.isTTY) process.stdin.setRawMode(wasRaw);
|
|
120
|
+
} catch {
|
|
121
|
+
// A lost pane cannot be restored; native cleanup remains independently recorded.
|
|
122
|
+
}
|
|
103
123
|
}
|
|
104
124
|
})();
|
|
105
125
|
},
|