pi-daddy 0.23.0 → 0.24.0
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 +10 -0
- package/README.md +12 -6
- package/contracts/ledger/v4/README.md +1 -1
- package/dist/cli.d.ts +3 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -3
- package/dist/cli.js.map +1 -1
- package/dist/daily-dashboard-host.d.ts +99 -0
- package/dist/daily-dashboard-host.d.ts.map +1 -0
- package/dist/daily-dashboard-host.js +71 -0
- package/dist/daily-dashboard-host.js.map +1 -0
- package/dist/dashboard-cli.d.ts.map +1 -1
- package/dist/dashboard-cli.js +9 -2
- package/dist/dashboard-cli.js.map +1 -1
- package/dist/dashboard-harness.d.ts +3 -0
- package/dist/dashboard-harness.d.ts.map +1 -1
- package/dist/dashboard-harness.js +14 -0
- package/dist/dashboard-harness.js.map +1 -1
- package/dist/dashboard-host-contract.d.ts +6 -1
- package/dist/dashboard-host-contract.d.ts.map +1 -1
- package/dist/dashboard-host-contract.js +1 -1
- package/dist/dashboard-host-contract.js.map +1 -1
- package/dist/dashboard-host-transport.d.ts +1 -0
- package/dist/dashboard-host-transport.d.ts.map +1 -1
- package/dist/dashboard-host-transport.js +5 -3
- package/dist/dashboard-host-transport.js.map +1 -1
- package/dist/dashboard-host.d.ts +54 -0
- package/dist/dashboard-host.d.ts.map +1 -1
- package/dist/dashboard-host.js +49 -2
- package/dist/dashboard-host.js.map +1 -1
- package/dist/dashboard-observation.d.ts.map +1 -1
- package/dist/dashboard-observation.js +5 -5
- package/dist/dashboard-observation.js.map +1 -1
- package/dist/experiment-store.d.ts +3 -1
- package/dist/experiment-store.d.ts.map +1 -1
- package/dist/experiment-store.js +20 -3
- package/dist/experiment-store.js.map +1 -1
- package/dist/work-command.d.ts +30 -0
- package/dist/work-command.d.ts.map +1 -0
- package/dist/work-command.js +148 -0
- package/dist/work-command.js.map +1 -0
- package/extensions/daily-dashboard-session.ts +30 -0
- package/extensions/daily-work-session.ts +20 -0
- package/extensions/delegation.ts +21 -8
- package/extensions/execute-child.ts +10 -1
- package/extensions/executor-session.ts +9 -0
- package/extensions/grants-command.ts +14 -15
- package/extensions/grants-connected-command.ts +19 -0
- package/extensions/grants.ts +25 -3
- package/extensions/primary-shadow.ts +11 -0
- package/extensions/run-delegation.ts +2 -0
- package/extensions/session.ts +7 -19
- package/extensions/work-runtime.ts +44 -0
- package/package.json +1 -1
- package/src/cli.ts +41 -4
- package/src/daily-dashboard-host.ts +49 -0
- package/src/dashboard-cli.ts +7 -2
- package/src/dashboard-harness.ts +9 -0
- package/src/dashboard-host-contract.ts +4 -1
- package/src/dashboard-host-transport.ts +8 -6
- package/src/dashboard-host.ts +26 -3
- package/src/dashboard-observation.ts +3 -2
- package/src/experiment-store.ts +11 -3
- package/src/work-command.ts +179 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experiment-store.js","sourceRoot":"","sources":["../src/experiment-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"experiment-store.js","sourceRoot":"","sources":["../src/experiment-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type RevisionRef, type WorkFrozen, type WorkOccurrencePayload, type WorkProjectionContext } from "./work-ledger.ts";
|
|
2
|
+
export interface DeclaredWorkState {
|
|
3
|
+
readonly version: "pi-daddy-declared-work-v1";
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly outcomeDigest: string;
|
|
6
|
+
readonly ledgerPath: string;
|
|
7
|
+
readonly statePath: string;
|
|
8
|
+
readonly grantLedgerPath: string | null;
|
|
9
|
+
readonly selectedSnapshot: NonNullable<WorkProjectionContext["selectedSnapshot"]>;
|
|
10
|
+
readonly scope: RevisionRef;
|
|
11
|
+
readonly intent: RevisionRef;
|
|
12
|
+
readonly obligation: RevisionRef;
|
|
13
|
+
readonly policy: RevisionRef;
|
|
14
|
+
}
|
|
15
|
+
export interface DeclareWorkInput {
|
|
16
|
+
cwd: string;
|
|
17
|
+
id: string;
|
|
18
|
+
outcome: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function loadDeclaredWork(statePath: string): Promise<WorkFrozen<DeclaredWorkState> | null>;
|
|
21
|
+
export declare function declareWork(input: DeclareWorkInput): Promise<WorkFrozen<DeclaredWorkState>>;
|
|
22
|
+
export type DeclaredOccurrenceIdentity = Pick<WorkOccurrencePayload["labels"], "toolCallId" | "taskId" | "workspaceId" | "definitionDigest" | "configurationDigest" | "modelId" | "effortId"> & {
|
|
23
|
+
executionId: string;
|
|
24
|
+
parentExecutionId: string | null;
|
|
25
|
+
childId: string | null;
|
|
26
|
+
variantId: string | null;
|
|
27
|
+
now: Date;
|
|
28
|
+
};
|
|
29
|
+
export declare function appendDeclaredWorkOccurrence(state: WorkFrozen<DeclaredWorkState>, identity: DeclaredOccurrenceIdentity, occurrenceState: WorkOccurrencePayload["state"]): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=work-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-command.d.ts","sourceRoot":"","sources":["../src/work-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAQL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE3B,MAAM,kBAAkB,CAAC;AAY1B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAiBD,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CA6BvG;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAoDjG;AAED,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,aAAa,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,GAAG;IAC9L,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,0BAA0B,EAC3H,eAAe,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhE"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
4
|
+
import { appendWorkLedgerEventOnce, buildWorkOccurrenceEvent, buildWorkRevisionEvent, buildWorkSnapshotEvent, parseWorkLedgerText, projectWorkLedger, } from "./work-ledger.js";
|
|
5
|
+
import { withFileLock } from "./file-lock.js";
|
|
6
|
+
const ID = /^[A-Za-z0-9][A-Za-z0-9._:/@+\-]{0,127}$/;
|
|
7
|
+
const DIGEST = /^[a-f0-9]{64}$/;
|
|
8
|
+
const sha256 = (value) => createHash("sha256").update(value).digest("hex");
|
|
9
|
+
const eventRef = (event) => ({ eventId: event.eventId, digest: event.digest });
|
|
10
|
+
const revisionRef = (event) => {
|
|
11
|
+
const { kind, id, revision, digest } = event.payload.revision;
|
|
12
|
+
return { kind, id, revision, digest };
|
|
13
|
+
};
|
|
14
|
+
function paths(input) {
|
|
15
|
+
const root = resolve(input.cwd);
|
|
16
|
+
return { ledgerPath: join(root, ".pi", "work.jsonl"), statePath: join(root, ".pi", "work-current.json"), grantLedgerPath: null };
|
|
17
|
+
}
|
|
18
|
+
const exactKeys = (value, expected) => {
|
|
19
|
+
const actual = Object.keys(value).sort();
|
|
20
|
+
return actual.length === expected.length && actual.every((key, index) => key === [...expected].sort()[index]);
|
|
21
|
+
};
|
|
22
|
+
const validRef = (value, kind) => {
|
|
23
|
+
if (!value || typeof value !== "object" || !exactKeys(value, ["kind", "id", "revision", "digest"]))
|
|
24
|
+
return false;
|
|
25
|
+
const ref = value;
|
|
26
|
+
return ref.kind === kind && ID.test(ref.id) && Number.isSafeInteger(ref.revision) && ref.revision > 0 && DIGEST.test(ref.digest);
|
|
27
|
+
};
|
|
28
|
+
export async function loadDeclaredWork(statePath) {
|
|
29
|
+
let text;
|
|
30
|
+
try {
|
|
31
|
+
text = await readFile(statePath, "utf8");
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error.code === "ENOENT")
|
|
35
|
+
return null;
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const value = JSON.parse(text);
|
|
40
|
+
if (!value || typeof value !== "object" || !exactKeys(value, [
|
|
41
|
+
"version", "id", "outcomeDigest", "ledgerPath", "grantLedgerPath", "selectedSnapshot", "scope", "intent", "obligation", "policy",
|
|
42
|
+
]) || value.version !== "pi-daddy-declared-work-v1" || !ID.test(value.id) || !DIGEST.test(value.outcomeDigest) ||
|
|
43
|
+
typeof value.ledgerPath !== "string" || !isAbsolute(value.ledgerPath) ||
|
|
44
|
+
(value.grantLedgerPath !== null && (typeof value.grantLedgerPath !== "string" || !isAbsolute(value.grantLedgerPath))) ||
|
|
45
|
+
!validRef(value.scope, "scope") || !validRef(value.intent, "goal") || !validRef(value.obligation, "obligation") || !validRef(value.policy, "policy") ||
|
|
46
|
+
!value.selectedSnapshot || typeof value.selectedSnapshot !== "object" ||
|
|
47
|
+
!exactKeys(value.selectedSnapshot, ["snapshot", "event"]) ||
|
|
48
|
+
!exactKeys(value.selectedSnapshot.snapshot, ["id", "digest"]) || !ID.test(value.selectedSnapshot.snapshot.id) || !DIGEST.test(value.selectedSnapshot.snapshot.digest) ||
|
|
49
|
+
!exactKeys(value.selectedSnapshot.event, ["eventId", "digest"]) || !ID.test(value.selectedSnapshot.event.eventId) || !DIGEST.test(value.selectedSnapshot.event.digest)) {
|
|
50
|
+
throw new Error("shape");
|
|
51
|
+
}
|
|
52
|
+
const expectedLedger = resolve(dirname(statePath), "work.jsonl");
|
|
53
|
+
if (resolve(value.ledgerPath) !== expectedLedger)
|
|
54
|
+
throw new Error("relocated");
|
|
55
|
+
const ledger = await readFile(value.ledgerPath, "utf8");
|
|
56
|
+
const ingestion = parseWorkLedgerText(ledger);
|
|
57
|
+
const projection = projectWorkLedger(ledger, { selectedSnapshot: value.selectedSnapshot, authority: null });
|
|
58
|
+
const obligation = projection.obligations.find(item => item.binding.obligation.digest === value.obligation.digest);
|
|
59
|
+
if (!ingestion.complete || projection.scopeState !== "valid" || !obligation || projection.selectedSnapshot?.digest !== value.selectedSnapshot.snapshot.digest)
|
|
60
|
+
throw new Error("unbound");
|
|
61
|
+
return Object.freeze({ ...value, statePath: resolve(statePath) });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw new Error("invalid declared work state; no task was selected");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export async function declareWork(input) {
|
|
68
|
+
if (!input || typeof input !== "object" || Object.keys(input).some(key => !["cwd", "id", "outcome"].includes(key))) {
|
|
69
|
+
throw new TypeError("unsupported work declaration field");
|
|
70
|
+
}
|
|
71
|
+
if (!ID.test(input.id) || typeof input.outcome !== "string" || !input.outcome.trim())
|
|
72
|
+
throw new TypeError("work declaration requires an identifier and non-empty outcome");
|
|
73
|
+
const resolved = paths(input), outcomeDigest = sha256(input.outcome.trim());
|
|
74
|
+
await mkdir(dirname(resolved.ledgerPath), { recursive: true });
|
|
75
|
+
await mkdir(dirname(resolved.statePath), { recursive: true });
|
|
76
|
+
return withFileLock(resolved.statePath, "declared work", async () => {
|
|
77
|
+
const existing = await loadDeclaredWork(resolved.statePath);
|
|
78
|
+
if (existing) {
|
|
79
|
+
if (existing.id === input.id && existing.outcomeDigest === outcomeDigest)
|
|
80
|
+
return existing;
|
|
81
|
+
throw new Error(`declared work id ${input.id} already names a different outcome`);
|
|
82
|
+
}
|
|
83
|
+
const pendingPath = `${resolved.statePath}.pending`;
|
|
84
|
+
let prepared;
|
|
85
|
+
try {
|
|
86
|
+
prepared = JSON.parse(await readFile(pendingPath, "utf8"));
|
|
87
|
+
if (!prepared || Object.keys(prepared).sort().join() !== "createdAt,id,outcomeDigest,version" || prepared.version !== "pi-daddy-work-preparation-v1" || prepared.id !== input.id || prepared.outcomeDigest !== outcomeDigest || Number.isNaN(Date.parse(prepared.createdAt)))
|
|
88
|
+
throw new Error("invalid");
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
if (error.code !== "ENOENT")
|
|
92
|
+
throw new Error("another or invalid work declaration is pending; no events were replaced");
|
|
93
|
+
prepared = { version: "pi-daddy-work-preparation-v1", id: input.id, outcomeDigest, createdAt: new Date().toISOString() };
|
|
94
|
+
await writeFile(pendingPath, `${JSON.stringify(prepared)}\n`, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
95
|
+
}
|
|
96
|
+
const now = new Date(prepared.createdAt);
|
|
97
|
+
const revision = (kind, name, patch = {}) => buildWorkRevisionEvent({ eventId: `work:${input.id}:${name}:1`, now, revision: {
|
|
98
|
+
kind, id: `work:${input.id}:${name}`, revision: 1, scopeId: `work:${input.id}:scope`, predecessor: null,
|
|
99
|
+
contentDigest: sha256(`${name}\0${outcomeDigest}`), parent: null, dependencies: [], ownerId: "local-operator",
|
|
100
|
+
permittedEffects: [], policy: null, ...patch,
|
|
101
|
+
} });
|
|
102
|
+
const scope = revision("scope", "scope"), policy = revision("policy", "policy");
|
|
103
|
+
const intent = revision("goal", "goal", { parent: revisionRef(scope) });
|
|
104
|
+
const obligation = revision("obligation", "obligation", { parent: revisionRef(intent), policy: revisionRef(policy) });
|
|
105
|
+
const binding = { intent: revisionRef(intent), obligation: revisionRef(obligation), artifact: null, policy: revisionRef(policy) };
|
|
106
|
+
const snapshot = buildWorkSnapshotEvent({ eventId: `work:${input.id}:snapshot:1`, now, snapshot: {
|
|
107
|
+
snapshotId: `work:${input.id}:selected`, scope: revisionRef(scope), revisions: [revisionRef(policy), revisionRef(intent), revisionRef(obligation)], bindings: [binding],
|
|
108
|
+
} });
|
|
109
|
+
for (const event of [scope, policy, intent, obligation, snapshot])
|
|
110
|
+
await appendWorkLedgerEventOnce({ path: resolved.ledgerPath, grantLedgerPath: resolved.grantLedgerPath }, event);
|
|
111
|
+
const stored = {
|
|
112
|
+
version: "pi-daddy-declared-work-v1", id: input.id, outcomeDigest, ledgerPath: resolved.ledgerPath, grantLedgerPath: resolved.grantLedgerPath,
|
|
113
|
+
selectedSnapshot: { snapshot: { id: snapshot.payload.snapshot.snapshotId, digest: snapshot.payload.snapshot.digest }, event: eventRef(snapshot) },
|
|
114
|
+
scope: revisionRef(scope), intent: revisionRef(intent), obligation: revisionRef(obligation), policy: revisionRef(policy),
|
|
115
|
+
};
|
|
116
|
+
const temporary = `${resolved.statePath}.${process.pid}.${randomUUID()}.tmp`;
|
|
117
|
+
try {
|
|
118
|
+
await writeFile(temporary, `${JSON.stringify(stored, null, 2)}\n`, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
119
|
+
await rename(temporary, resolved.statePath);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
await rm(temporary, { force: true });
|
|
123
|
+
}
|
|
124
|
+
await rm(pendingPath);
|
|
125
|
+
return Object.freeze({ ...stored, statePath: resolved.statePath });
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
export async function appendDeclaredWorkOccurrence(state, identity, occurrenceState) {
|
|
129
|
+
const { executionId, parentExecutionId, childId, variantId, now, ...rawLabels } = identity;
|
|
130
|
+
const label = (name, value) => value === null ? null : ID.test(value) ? value : `${name}:${sha256(value)}`;
|
|
131
|
+
const labels = {
|
|
132
|
+
toolCallId: label("toolcall", rawLabels.toolCallId), taskId: label("task", rawLabels.taskId),
|
|
133
|
+
workspaceId: label("workspace", rawLabels.workspaceId), definitionDigest: rawLabels.definitionDigest,
|
|
134
|
+
configurationDigest: rawLabels.configurationDigest, modelId: label("model", rawLabels.modelId), effortId: label("effort", rawLabels.effortId),
|
|
135
|
+
};
|
|
136
|
+
const event = buildWorkOccurrenceEvent({
|
|
137
|
+
eventId: `work:${state.id}:attempt:${identity.executionId}:${occurrenceState}`,
|
|
138
|
+
now,
|
|
139
|
+
payload: {
|
|
140
|
+
scope: state.scope, obligation: state.obligation, executionId,
|
|
141
|
+
parentExecutionId, childId, variantId: label("variant", variantId), artifact: null,
|
|
142
|
+
provenance: "observed", state: occurrenceState,
|
|
143
|
+
labels: { sessionId: null, branchLeafId: null, ...labels },
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
await appendWorkLedgerEventOnce({ path: state.ledgerPath, grantLedgerPath: state.grantLedgerPath }, event);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=work-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-command.js","sourceRoot":"","sources":["../src/work-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { mkdir } from "node:fs/promises";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { adoptDashboardHarnessBridge } from "../src/dashboard-harness.ts";
|
|
6
|
+
import { ENV_DASHBOARD_HOST_SOCKET } from "../src/dashboard-host-transport.ts";
|
|
7
|
+
import { startDailyDashboardHost } from "../src/daily-dashboard-host.ts";
|
|
8
|
+
import type { DeclaredWorkState } from "../src/work-command.ts";
|
|
9
|
+
import type { OrdinaryChildren } from "../src/ordinary-children.ts";
|
|
10
|
+
|
|
11
|
+
const BRIDGE=Symbol.for("skill-harness.dashboard-host.v1"),idPattern=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
12
|
+
export function dailyDashboardPaths(cwd:string,id:string,home=homedir(),uid=process.getuid?.()??0){const key=createHash("sha256").update(`${cwd}\0${id}`).digest("hex");return {directory:join(home,".local","state","pi-daddy","hosts",key.slice(0,16)),socketDirectory:join("/tmp",`pi-daddy-${uid}`),socketPath:join("/tmp",`pi-daddy-${uid}`,`host-${key.slice(0,20)}.sock`)};}
|
|
13
|
+
export function createDailyDashboardSession(input:{ordinary:()=>OrdinaryChildren;declared:()=>DeclaredWorkState|undefined;cwd:()=>string;env:Record<string,string|undefined>;author:string}){
|
|
14
|
+
let current:null|Awaited<ReturnType<typeof startDailyDashboardHost>>=null,publishedSocket:string|undefined;
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
async run(target:string){
|
|
17
|
+
if(target==="stop"){
|
|
18
|
+
if(!current)return "daily host is not running";await current.close();current=null;if(publishedSocket&&input.env[ENV_DASHBOARD_HOST_SOCKET]===publishedSocket)delete input.env[ENV_DASHBOARD_HOST_SOCKET];publishedSocket=undefined;return "daily host stopped; no child was cancelled";
|
|
19
|
+
}
|
|
20
|
+
if(!idPattern.test(target))throw Error("usage — /grants host <fresh-id> | stop");if(current)throw Error("daily host already running in this session; stop it before selecting another fresh id");
|
|
21
|
+
const declared=input.declared();if(!declared)throw Error("declare current work first with pi-daddy work add, then reload");
|
|
22
|
+
const bridge=(globalThis as Record<PropertyKey,unknown>)[BRIDGE];if(!bridge)throw Error("loaded skill-harness extension bridge unavailable; load the candidate skill-harness extension in this Pi session");
|
|
23
|
+
const paths=dailyDashboardPaths(input.cwd(),target);await mkdir(join(homedir(),".local","state","pi-daddy","hosts"),{recursive:true,mode:0o700});await mkdir(paths.socketDirectory,{recursive:true,mode:0o700});
|
|
24
|
+
current=await startDailyDashboardHost({id:target,cwd:input.cwd(),directory:paths.directory,socketPath:paths.socketPath,declared,ordinary:input.ordinary(),harness:adoptDashboardHarnessBridge(bridge) as never,author:input.author});
|
|
25
|
+
publishedSocket=current.socketPath;input.env[ENV_DASHBOARD_HOST_SOCKET]=publishedSocket;
|
|
26
|
+
return `daily host started at ${publishedSocket}; current declared work/facts were captured. Run /grants dashboard, then use only its listed pause/resume/refresh action keys. Runtime remains unaccepted.`;
|
|
27
|
+
},
|
|
28
|
+
async close(){if(current)await current.close();if(publishedSocket&&input.env[ENV_DASHBOARD_HOST_SOCKET]===publishedSocket)delete input.env[ENV_DASHBOARD_HOST_SOCKET];current=null;publishedSocket=undefined;}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DeclaredWorkState } from "../src/work-command.ts";
|
|
2
|
+
import { ENV_DAILY_SELECTION, ENV_DAILY_WORK } from "../src/dashboard-cli.ts";
|
|
3
|
+
|
|
4
|
+
export interface PublishedDailyWork { work?: string; selection?: string }
|
|
5
|
+
|
|
6
|
+
/** Replace only values this extension instance published; an operator override is never deleted. */
|
|
7
|
+
export function replacePublishedDailyWork(
|
|
8
|
+
env: Record<string, string | undefined>,
|
|
9
|
+
published: PublishedDailyWork,
|
|
10
|
+
state: Pick<DeclaredWorkState, "ledgerPath" | "selectedSnapshot"> | undefined,
|
|
11
|
+
): void {
|
|
12
|
+
if (published.work && env[ENV_DAILY_WORK] === published.work) delete env[ENV_DAILY_WORK];
|
|
13
|
+
if (published.selection && env[ENV_DAILY_SELECTION] === published.selection) delete env[ENV_DAILY_SELECTION];
|
|
14
|
+
delete published.work; delete published.selection;
|
|
15
|
+
if (!state) return;
|
|
16
|
+
published.work = state.ledgerPath;
|
|
17
|
+
published.selection = JSON.stringify(state.selectedSnapshot);
|
|
18
|
+
env[ENV_DAILY_WORK] = published.work;
|
|
19
|
+
env[ENV_DAILY_SELECTION] = published.selection;
|
|
20
|
+
}
|
package/extensions/delegation.ts
CHANGED
|
@@ -29,6 +29,7 @@ import { isCriticalAssuranceBlock, type DelegationOutcome } from "./execute-chil
|
|
|
29
29
|
import { type GrantsSession } from "./session.ts";
|
|
30
30
|
import { newDelegationOccurrence } from "./execution-occurrence.ts";
|
|
31
31
|
import { correlationShape as buildCorrelationShape } from "./correlation-shape.ts";
|
|
32
|
+
import { completePrimary } from "./primary-shadow.ts";
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* Wire a set of children to pi's partial-result channel — ADR-0032.
|
|
@@ -171,11 +172,16 @@ export function registerDelegationTools(pi: ExtensionAPI, session: GrantsSession
|
|
|
171
172
|
access: Type.Union([Type.Literal("read"), Type.Literal("write")]),
|
|
172
173
|
});
|
|
173
174
|
|
|
175
|
+
const thinkingShape = Type.Optional(Type.Union(
|
|
176
|
+
["off", "minimal", "low", "medium", "high", "xhigh", "max"].map(level => Type.Literal(level)),
|
|
177
|
+
{ description: "Requested Pi thinking level; unsupported model/level combinations fail in the child." },
|
|
178
|
+
));
|
|
174
179
|
const childShape = Type.Object({
|
|
175
180
|
task: Type.String({ description: "The task for this sub-agent. It receives only this." }),
|
|
176
181
|
agent: Type.Optional(Type.String({ description: describeAgent(spawnable()) })),
|
|
177
182
|
tools: Type.Optional(Type.Array(Type.String(), { description: "Capabilities, when no 'agent' fits." })),
|
|
178
183
|
model: Type.Optional(Type.String({ description: "Model as provider/id. Defaults to this session's." })),
|
|
184
|
+
thinking: thinkingShape,
|
|
179
185
|
correlation: Type.Optional(correlationShape),
|
|
180
186
|
workspace: Type.Optional(workspaceShape),
|
|
181
187
|
});
|
|
@@ -186,6 +192,8 @@ export function registerDelegationTools(pi: ExtensionAPI, session: GrantsSession
|
|
|
186
192
|
maxItems: MAX_CHILDREN_PER_CALL,
|
|
187
193
|
description: "The sub-agents to run concurrently. Each is independent and unaware of the others.",
|
|
188
194
|
}),
|
|
195
|
+
completion: Type.Optional(Type.Literal("primary", {description:"Return when the selected primary settles; shadows continue under the original owner."})),
|
|
196
|
+
primary: Type.Optional(Type.Integer({minimum:1,maximum:MAX_CHILDREN_PER_CALL,description:"1-based primary child; required with completion=primary."})),
|
|
189
197
|
});
|
|
190
198
|
|
|
191
199
|
const delegateParams = Type.Object({
|
|
@@ -207,6 +215,7 @@ export function registerDelegationTools(pi: ExtensionAPI, session: GrantsSession
|
|
|
207
215
|
"Defaults to this session's model, already provider-qualified.",
|
|
208
216
|
}),
|
|
209
217
|
),
|
|
218
|
+
thinking: thinkingShape,
|
|
210
219
|
correlation: Type.Optional(correlationShape),
|
|
211
220
|
workspace: Type.Optional(workspaceShape),
|
|
212
221
|
});
|
|
@@ -231,6 +240,7 @@ export function registerDelegationTools(pi: ExtensionAPI, session: GrantsSession
|
|
|
231
240
|
agent: params.agent,
|
|
232
241
|
tools: params.tools,
|
|
233
242
|
model: params.model,
|
|
243
|
+
thinking: params.thinking,
|
|
234
244
|
correlation: params.correlation,
|
|
235
245
|
workspace: params.workspace,
|
|
236
246
|
},
|
|
@@ -288,10 +298,13 @@ export function registerDelegationTools(pi: ExtensionAPI, session: GrantsSession
|
|
|
288
298
|
`At most ${MAX_CHILDREN_PER_CALL} children per call, and a session-wide budget bounds the total ` +
|
|
289
299
|
"across the whole delegation subtree. Children cannot see each other or share context. Use this " +
|
|
290
300
|
"when independent tasks can proceed in parallel — several reviewers over one diff, say — and read " +
|
|
291
|
-
"every child's outcome, because one can be refused while the others succeed."
|
|
301
|
+
"every child's outcome, because one can be refused while the others succeed. For independent variants, " +
|
|
302
|
+
"completion=primary with a 1-based primary returns that result while shadows remain owned/accounted.",
|
|
292
303
|
parameters: delegateAllParams,
|
|
293
304
|
async execute(_toolCallId, params, signal, onUpdate, ctx) {
|
|
294
|
-
const children = params.children ?? [];
|
|
305
|
+
const children = params.children ?? [],primaryMode=params.completion==="primary";
|
|
306
|
+
if(primaryMode!==Number.isInteger(params.primary)||primaryMode&&(params.primary!<1||params.primary!>children.length))throw new GovernanceRefusal(refusal("FANOUT_EXCEEDED","primary fan-out requires one in-range 1-based primary"));
|
|
307
|
+
if(primaryMode&&session.variantRuns.size>=128)throw new GovernanceRefusal(refusal("FANOUT_EXCEEDED","primary/shadow accounting capacity exhausted"));
|
|
295
308
|
const split = splitBudget(session.fanoutBudget, children.length);
|
|
296
309
|
if (!split.ok) {
|
|
297
310
|
// Thrown, not returned: a returned `isError` is discarded by pi, so a refusal that came back as a
|
|
@@ -310,21 +323,21 @@ export function registerDelegationTools(pi: ExtensionAPI, session: GrantsSession
|
|
|
310
323
|
// live and its writer lease is deliberately retained" — a resource-retention notice, not a per-child
|
|
311
324
|
// failure. Losing it meant nobody was told a lease is held with no owner until the process exits
|
|
312
325
|
// (R-116).
|
|
313
|
-
const infrastructureErrors: unknown[] = [];
|
|
314
|
-
const
|
|
315
|
-
children.map(async (child, index): Promise<DelegationOutcome> => {
|
|
326
|
+
const infrastructureErrors: unknown[] = [],occurrences=children.map((_,index)=>newDelegationOccurrence(session,index));
|
|
327
|
+
const pending = children.map(async (child, index): Promise<DelegationOutcome> => {
|
|
316
328
|
try {
|
|
317
329
|
return await runOneDelegation(
|
|
318
330
|
session, child,
|
|
319
|
-
|
|
331
|
+
occurrences[index],
|
|
320
332
|
split.perChild, ctx, signal, { onProgress: progress.sink(index), toolCallId: _toolCallId },
|
|
321
333
|
);
|
|
322
334
|
} catch (error) {
|
|
323
335
|
infrastructureErrors.push(error);
|
|
324
336
|
return childFailureOutcome(error, session.depth + 1);
|
|
325
337
|
}
|
|
326
|
-
})
|
|
327
|
-
);
|
|
338
|
+
});
|
|
339
|
+
if(primaryMode){const completed=await completePrimary({session,primaryIndex:params.primary!-1,occurrences,pending,settle:progress.settle}),primary=completed.primary;if(!primary.ok){if(isCriticalAssuranceBlock(primary))throw new Error(primary.text);throw totalFanoutFailure([primary],`primary child failed: ${primary.reason}`);}return {content:[{type:"text",text:primary.text||"(no output)"}],details:{primary:params.primary,shadows:children.length-1,primaryExecutionId:completed.runId,shadowSettlement:"retained-by-original-owner",granted:primary.granted,retention:primary.retention}};}
|
|
340
|
+
const outcomes=await Promise.all(pending);
|
|
328
341
|
progress.settle(outcomes);
|
|
329
342
|
// The upstream controller's verdict outranks our own infrastructure noise — it is the answer the
|
|
330
343
|
// caller is waiting for, and ADR-0034 requires it to pass through unchanged. But an infrastructure
|
|
@@ -11,6 +11,7 @@ import { HerdrWriterCloseError, runHerdrPane } from "../src/run-herdr.ts";
|
|
|
11
11
|
import { GovernanceRefusal, refusal, type StructuredRefusal } from "../src/refusals.ts";
|
|
12
12
|
import { ENV_HERDR_KEEP_PANE, type GrantsSession } from "./session.ts";
|
|
13
13
|
import { releaseDelegationWorkspace, type PreparedWorkspace } from "./workspace-runtime.ts";
|
|
14
|
+
import { beginDeclaredWorkAttempt } from "./work-runtime.ts";
|
|
14
15
|
|
|
15
16
|
export interface DelegationOutcome {
|
|
16
17
|
ok: boolean;
|
|
@@ -126,6 +127,10 @@ async function executeChildBody(input: {
|
|
|
126
127
|
throw error;
|
|
127
128
|
}
|
|
128
129
|
}
|
|
130
|
+
const workAttempt = await beginDeclaredWorkAttempt({
|
|
131
|
+
session, plan, childId, executionId, parentExecutionId, toolCallId: input.toolCallId,
|
|
132
|
+
preparedWorkspace, configuredTimeoutMs, startedAt,
|
|
133
|
+
});
|
|
129
134
|
|
|
130
135
|
// The recorded deadline and executor timer are one fact. Waiting for the strict starting append consumes
|
|
131
136
|
// the budget; handing the child a fresh full timeout would leave it live after the dashboard truthfully
|
|
@@ -152,7 +157,7 @@ async function executeChildBody(input: {
|
|
|
152
157
|
if (sessionFlag >= 0) retention.observeSession({ source: "pi-session-file", value: plan.args[sessionFlag + 1] });
|
|
153
158
|
let releaseReason = "failed";
|
|
154
159
|
let retainWriterLease = false;
|
|
155
|
-
let terminalAttempted = false;
|
|
160
|
+
let terminalAttempted = false, workTerminalAttempted = false;
|
|
156
161
|
const teardownFailures: string[] = [];
|
|
157
162
|
let runtimeRecord: Promise<void> | undefined;
|
|
158
163
|
const recordRunning = (executor: "process" | "herdr", pane?: { id: string; agentName: string }): void => {
|
|
@@ -232,6 +237,8 @@ async function executeChildBody(input: {
|
|
|
232
237
|
retention.finish({ code: output.code, signal: output.signal ?? null, timedOut: output.timedOut,
|
|
233
238
|
aborted: output.aborted, truncated: output.truncated, failed: childFailed });
|
|
234
239
|
releaseReason = output.timedOut ? "timeout" : output.aborted ? "cancelled" : childFailed ? "failed" : "completed";
|
|
240
|
+
if (workAttempt) try { workTerminalAttempted = true; await workAttempt.finish(childFailed ? "failed" : "completed"); }
|
|
241
|
+
catch (error) { teardownFailures.push(`declared work terminal record failed: ${String(error)}`); }
|
|
235
242
|
if (ledgerPath) {
|
|
236
243
|
terminalAttempted = true;
|
|
237
244
|
await appendAfterRuntimeRecord(runtimeRecord, () => appendLedgerEvent(
|
|
@@ -315,6 +322,8 @@ async function executeChildBody(input: {
|
|
|
315
322
|
return withTeardownNotes(succeeded);
|
|
316
323
|
} catch (error) {
|
|
317
324
|
retention.finish({ code: null, signal: null, timedOut: false, aborted: Boolean(signal?.aborted), truncated: false, failed: true });
|
|
325
|
+
if (workAttempt && !workTerminalAttempted) try { workTerminalAttempted = true; await workAttempt.finish("failed"); }
|
|
326
|
+
catch (cause) { teardownFailures.push(`declared work terminal record failed: ${String(cause)}`); }
|
|
318
327
|
retainWriterLease = Boolean(writerLease && isHerdrWriterCloseFailure(error));
|
|
319
328
|
if (ledgerPath && !terminalAttempted) {
|
|
320
329
|
// Best-effort: this records the failure, so it must not REPLACE the failure. A strict append that
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { chooseExecutor, needsProbe, ENV_HERDR } from "../src/executor.ts";
|
|
2
|
+
import { probeHerdr } from "../src/herdr-cli.ts";
|
|
3
|
+
import type { GrantsSession } from "./session.ts";
|
|
4
|
+
|
|
5
|
+
/** Settle one executor at session start; a later daemon change never relocates siblings. */
|
|
6
|
+
export async function resolveExecutor(session:GrantsSession):Promise<void>{
|
|
7
|
+
const raw=process.env[ENV_HERDR];
|
|
8
|
+
session.executor=chooseExecutor(raw,needsProbe(raw)?await probeHerdr():null);
|
|
9
|
+
}
|
|
@@ -17,6 +17,8 @@ import type { ExecutorChoice } from "../src/executor.ts";
|
|
|
17
17
|
import type { Catalog } from "../src/catalog.ts";
|
|
18
18
|
import type { SkillDefinition } from "../src/definitions.ts";
|
|
19
19
|
import type { GatedPlan } from "./run-delegation.ts";
|
|
20
|
+
import type { VariantRunAccounting } from "./session.ts";
|
|
21
|
+
import { handleConnectedCommand } from "./grants-connected-command.ts";
|
|
20
22
|
import { loadApprovals, revokeAll, revokeApproval, type SubjectLookup } from "../src/approval-store.ts";
|
|
21
23
|
import { verifyLedger } from "../src/ledger.ts";
|
|
22
24
|
|
|
@@ -62,6 +64,9 @@ export interface GrantsCommandContext {
|
|
|
62
64
|
runInit: () => Promise<void>;
|
|
63
65
|
/** Open or reuse the read-only Herdr dashboard; injected so this diagnostic never becomes enforcement. */
|
|
64
66
|
openDashboard: () => Promise<{ kind: "opened" | "reused"; paneId: string; visibleBesideCaller: boolean }>;
|
|
67
|
+
/** Explicit same-process production host lifecycle; owns no model call and never cancels a child on stop. */
|
|
68
|
+
runHost: (target: string) => Promise<string>;
|
|
69
|
+
variantRuns: Map<string, VariantRunAccounting>;
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
/**
|
|
@@ -71,18 +76,18 @@ export interface GrantsCommandContext {
|
|
|
71
76
|
const PREVIEW_LIMIT = 12;
|
|
72
77
|
|
|
73
78
|
/** The verbs `/grants` answers to. Anything else is refused rather than silently treated as no verb. */
|
|
74
|
-
const KNOWN_SUBCOMMANDS: readonly string[] = ["init", "dashboard", "ledger", "approvals", "revoke"];
|
|
79
|
+
const KNOWN_SUBCOMMANDS: readonly string[] = ["init", "host", "variants", "dashboard", "ledger", "approvals", "revoke"];
|
|
75
80
|
|
|
76
81
|
export const grantsCommand = {
|
|
77
82
|
description:
|
|
78
83
|
"Show this session's capability grant, delegation depth, and known agent-type ceilings; " +
|
|
79
|
-
"/grants dashboard | /grants approvals | /grants ledger | /grants revoke <key>|--all",
|
|
84
|
+
"/grants host <fresh-id>|stop | /grants variants | /grants dashboard | /grants approvals | /grants ledger | /grants revoke <key>|--all",
|
|
80
85
|
handler: async (args: string, ctx: any) => {
|
|
81
86
|
// Everything this command may see, named in one place. Previously these were whatever happened to be in
|
|
82
87
|
// the enclosing closure — which is how a diagnostic came to disagree with the enforcer (R-28).
|
|
83
88
|
const {
|
|
84
89
|
cwd, governed, ownGrant, executor, observed, depth, maxDepth, ledgerPath,
|
|
85
|
-
catalog, definitions, sessionApprovals, inheritedApprovals, snapshotOf, previewDelegation,
|
|
90
|
+
catalog, definitions, sessionApprovals, inheritedApprovals, snapshotOf, previewDelegation, variantRuns,
|
|
86
91
|
} = ctx.grants as GrantsCommandContext;
|
|
87
92
|
|
|
88
93
|
const [sub, target] = args.trim().split(/\s+/).filter(Boolean);
|
|
@@ -92,18 +97,12 @@ handler: async (args: string, ctx: any) => {
|
|
|
92
97
|
return;
|
|
93
98
|
}
|
|
94
99
|
|
|
95
|
-
if (sub
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
"info",
|
|
102
|
-
);
|
|
103
|
-
} catch (error) {
|
|
104
|
-
ctx.ui.notify(`grants: dashboard unavailable — ${error instanceof Error ? error.message : String(error)}`, "error");
|
|
105
|
-
}
|
|
106
|
-
return;
|
|
100
|
+
if(await handleConnectedCommand(sub,target,{runHost:ctx.grants.runHost,openDashboard:ctx.grants.openDashboard,ui:ctx.ui}))return;
|
|
101
|
+
|
|
102
|
+
if (sub === "variants") {
|
|
103
|
+
const lines=[`grants: ${variantRuns.size} retained primary/shadow run(s)`];
|
|
104
|
+
for(const run of variantRuns.values())lines.push(` ${run.runId} ${run.state} — primary ${run.primaryExecutionId}; ${run.shadowExecutionIds.length} shadow(s)`+(!run.outcomes?"":` — ${run.outcomes.map(x=>`${x.role}:${x.ok?"completed":"failed"}`).join(", ")}`));
|
|
105
|
+
ctx.ui.notify(lines.join("\n"),"info");return;
|
|
107
106
|
}
|
|
108
107
|
|
|
109
108
|
if (sub === "ledger") {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface GrantsConnectedCommandContext {
|
|
2
|
+
runHost:(target:string)=>Promise<string>;
|
|
3
|
+
openDashboard:()=>Promise<{kind:"opened"|"reused";paneId:string;visibleBesideCaller:boolean}>;
|
|
4
|
+
ui:{notify(message:string,level:"info"|"error"):void};
|
|
5
|
+
}
|
|
6
|
+
/** Host lifecycle and pane placement live together; neither belongs in the capability-report renderer. */
|
|
7
|
+
export async function handleConnectedCommand(sub:string|undefined,target:string|undefined,ctx:GrantsConnectedCommandContext):Promise<boolean>{
|
|
8
|
+
if(sub==="host"){
|
|
9
|
+
try{ctx.ui.notify(`grants: ${await ctx.runHost(target??"")}`,"info");}
|
|
10
|
+
catch(error){ctx.ui.notify(`grants: host unavailable — ${error instanceof Error?error.message:String(error)}`,"error");}
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
if(sub==="dashboard"){
|
|
14
|
+
try{const opened=await ctx.openDashboard();ctx.ui.notify(`grants: dashboard ${opened.kind} in Herdr pane ${opened.paneId} without changing focus`+(opened.visibleBesideCaller?".":" (the existing pane is in another tab)."),"info");}
|
|
15
|
+
catch(error){ctx.ui.notify(`grants: dashboard unavailable — ${error instanceof Error?error.message:String(error)}`,"error");}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|