pi-daddy 0.32.0 → 0.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cli.d.ts +4 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +12 -3
  5. package/dist/cli.js.map +1 -1
  6. package/dist/executors/herdr-cli.d.ts +1 -1
  7. package/dist/executors/herdr-cli.js +1 -1
  8. package/dist/executors/herdr-poll.d.ts +1 -1
  9. package/dist/executors/herdr-poll.js +1 -1
  10. package/dist/executors/pane-reaper.d.ts +1 -1
  11. package/dist/executors/pane-reaper.js +2 -2
  12. package/dist/executors/pane-reaper.js.map +1 -1
  13. package/dist/executors/run-herdr.d.ts +3 -3
  14. package/dist/executors/run-herdr.js +2 -2
  15. package/dist/governance/ledger-report.d.ts +1 -1
  16. package/dist/governance/ledger.d.ts +1 -1
  17. package/dist/governance/ledger.js +1 -1
  18. package/dist/governance/workspace-lease.js +1 -1
  19. package/dist/kernel/capabilities.d.ts +2 -2
  20. package/dist/kernel/capabilities.js +2 -2
  21. package/dist/kernel/catalog.d.ts +27 -0
  22. package/dist/kernel/catalog.d.ts.map +1 -1
  23. package/dist/kernel/catalog.js +59 -1
  24. package/dist/kernel/catalog.js.map +1 -1
  25. package/dist/kernel/delegate.d.ts.map +1 -1
  26. package/dist/kernel/delegate.js +7 -1
  27. package/dist/kernel/delegate.js.map +1 -1
  28. package/dist/kernel/grant-env.d.ts +1 -1
  29. package/dist/kernel/grant-env.js +1 -1
  30. package/dist/kernel/propagation.d.ts +1 -1
  31. package/dist/kernel/propagation.js +1 -1
  32. package/dist/kernel/resolve.d.ts +2 -2
  33. package/dist/kernel/resolve.js +3 -3
  34. package/dist/kernel/routing-authority.d.ts +1 -1
  35. package/dist/kernel/routing-authority.js +1 -1
  36. package/dist/kernel/skill-packages.d.ts +1 -1
  37. package/dist/kernel/skill-packages.js +1 -1
  38. package/dist/kernel/spawn.d.ts +1 -1
  39. package/dist/kernel/spawn.js +3 -3
  40. package/dist/kernel/spawn.js.map +1 -1
  41. package/dist/kernel/workspace.d.ts +1 -1
  42. package/extensions/execute-child.ts +1 -1
  43. package/extensions/grants-command.ts +1 -1
  44. package/extensions/session-report.ts +1 -1
  45. package/package.json +1 -1
  46. package/src/cli.ts +13 -3
  47. package/src/executors/herdr-cli.ts +1 -1
  48. package/src/executors/herdr-poll.ts +1 -1
  49. package/src/executors/pane-reaper.ts +2 -2
  50. package/src/executors/run-herdr.ts +4 -4
  51. package/src/governance/ledger-report.ts +1 -1
  52. package/src/governance/ledger.ts +1 -1
  53. package/src/governance/workspace-lease.ts +1 -1
  54. package/src/kernel/capabilities.ts +2 -2
  55. package/src/kernel/catalog.ts +61 -1
  56. package/src/kernel/delegate.ts +6 -1
  57. package/src/kernel/grant-env.ts +1 -1
  58. package/src/kernel/propagation.ts +1 -1
  59. package/src/kernel/resolve.ts +3 -3
  60. package/src/kernel/routing-authority.ts +1 -1
  61. package/src/kernel/skill-packages.ts +1 -1
  62. package/src/kernel/spawn.ts +3 -3
  63. package/src/kernel/workspace.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/kernel/delegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/kernel/delegate.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ import { type Capability } from "./resolve.ts";
28
28
  * - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
29
29
  * so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
30
30
  * made "the union is mitigated by gating" untrue (R-76).
31
- * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`docs/probes/pi-fabric-eval`).
31
+ * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (probe `pi-fabric-eval`).
32
32
  * `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
33
33
  * from ever holding it by accident.
34
34
  */
@@ -31,7 +31,7 @@ import { PROJECT_FILES } from "./project-paths.js";
31
31
  * - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
32
32
  * so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
33
33
  * made "the union is mitigated by gating" untrue (R-76).
34
- * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`docs/probes/pi-fabric-eval`).
34
+ * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (probe `pi-fabric-eval`).
35
35
  * `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
36
36
  * from ever holding it by accident.
37
37
  */
@@ -102,7 +102,7 @@ export declare const DEFAULT_MAX_DEPTH = 2;
102
102
  *
103
103
  * `bash` is not one capability among others; it is an execution primitive. A child holding it can run
104
104
  * `env -u PI_DADDY_GRANT pi …` and obtain a completely **ungoverned** descendant — measured, not
105
- * theorised (`docs/probes/g5-bash-escape`). Handing that down silently is the thing worth changing.
105
+ * theorised (probe `g5-bash-escape`). Handing that down silently is the thing worth changing.
106
106
  *
107
107
  * Subsumption-aware gating (also ADR-0012) means this single entry covers `write`, `edit`, `read`,
108
108
  * `grep`, `find` and `ls` as well, since `bash` confers all of them.
@@ -161,7 +161,7 @@ export const DEFAULT_MAX_DEPTH = 2;
161
161
  *
162
162
  * `bash` is not one capability among others; it is an execution primitive. A child holding it can run
163
163
  * `env -u PI_DADDY_GRANT pi …` and obtain a completely **ungoverned** descendant — measured, not
164
- * theorised (`docs/probes/g5-bash-escape`). Handing that down silently is the thing worth changing.
164
+ * theorised (probe `g5-bash-escape`). Handing that down silently is the thing worth changing.
165
165
  *
166
166
  * Subsumption-aware gating (also ADR-0012) means this single entry covers `write`, `edit`, `read`,
167
167
  * `grep`, `find` and `ls` as well, since `bash` confers all of them.
@@ -18,7 +18,7 @@ export type Capability = string;
18
18
  *
19
19
  * `ext:pi-fabric/fabric_exec` is here on measured evidence, not suspicion: a child granted
20
20
  * `tools: []` (nothing at all) plus `recursive: true` still reached `pi.write` and `pi.bash` and
21
- * spawned a grandchild that wrote to disk. See docs/probes/pi-fabric-eval (probes 2, 4, 7, 8).
21
+ * spawned a grandchild that wrote to disk. See probe `pi-fabric-eval` (probes 2, 4, 7, 8).
22
22
  */
23
23
  export declare const UNIVERSAL_CAPABILITIES: readonly Capability[];
24
24
  /**
@@ -111,7 +111,7 @@ export declare function assertNarrowing(result: ResolveResult, allowUniversal?:
111
111
  *
112
112
  * pi core is the enforcement point — verified: `--tools` and `--no-tools` both hard-block extension
113
113
  * tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them
114
- * (docs/probes/pi-fabric-eval probes 9–11). That is why enforcement needs no in-descendant runtime.
114
+ * (probe `pi-fabric-eval` probes 9–11). That is why enforcement needs no in-descendant runtime.
115
115
  *
116
116
  * Returns `null` when the grant contains no callable tools, meaning the caller should pass
117
117
  * `--no-tools` rather than an empty `--tools` (an empty list is not a valid allowlist).
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * `ext:pi-fabric/fabric_exec` is here on measured evidence, not suspicion: a child granted
18
18
  * `tools: []` (nothing at all) plus `recursive: true` still reached `pi.write` and `pi.bash` and
19
- * spawned a grandchild that wrote to disk. See docs/probes/pi-fabric-eval (probes 2, 4, 7, 8).
19
+ * spawned a grandchild that wrote to disk. See probe `pi-fabric-eval` (probes 2, 4, 7, 8).
20
20
  */
21
21
  export const UNIVERSAL_CAPABILITIES = ["ext:pi-fabric/fabric_exec", "tool:fabric_exec"];
22
22
  /**
@@ -101,7 +101,7 @@ export function resolve(input) {
101
101
  * ADR-0017 created and ADR-0023's own example uses — was refused with **"capability escalation
102
102
  * blocked"**, and recorded as an escalation attempt, in a session that had opted out.
103
103
  *
104
- * `maySpawnDefinition` had always honoured `tool:*` for definition ids and `docs/SPEC.md` had always
104
+ * `maySpawnDefinition` had always honoured `tool:*` for definition ids and the README had always
105
105
  * claimed it "satisfies any capability". This function disagreed with both, which is R-28's shape: two
106
106
  * spellings of one rule, and the enforcing one was wrong.
107
107
  */
@@ -184,7 +184,7 @@ export function assertNarrowing(result, allowUniversal = false) {
184
184
  *
185
185
  * pi core is the enforcement point — verified: `--tools` and `--no-tools` both hard-block extension
186
186
  * tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them
187
- * (docs/probes/pi-fabric-eval probes 9–11). That is why enforcement needs no in-descendant runtime.
187
+ * (probe `pi-fabric-eval` probes 9–11). That is why enforcement needs no in-descendant runtime.
188
188
  *
189
189
  * Returns `null` when the grant contains no callable tools, meaning the caller should pass
190
190
  * `--no-tools` rather than an empty `--tools` (an empty list is not a valid allowlist).
@@ -31,7 +31,7 @@ export interface RoutingRefusal {
31
31
  * Checked before anything is said about the target, for the reason `maySpawnDefinition` is: it is a
32
32
  * governance question about the SESSION. Before ADR-0035 nothing checked it — the registry inherited into
33
33
  * every governed child and a child routed to `staging` could route its grandchild to `prod` (R-131, measured
34
- * in `docs/probes/g36-workspace-attenuation`).
34
+ * in probe `g36-workspace-attenuation`).
35
35
  *
36
36
  * **Well-formedness first, because `workspace_id` is a model-facing tool parameter** and the next step turns
37
37
  * it into a capability id. `workspace_id: "prod,tool:bash"` produced a `WORKSPACE_NOT_AUTHORIZED` whose
@@ -20,7 +20,7 @@ import { WILDCARD } from "./pi-tools.js";
20
20
  * Checked before anything is said about the target, for the reason `maySpawnDefinition` is: it is a
21
21
  * governance question about the SESSION. Before ADR-0035 nothing checked it — the registry inherited into
22
22
  * every governed child and a child routed to `staging` could route its grandchild to `prod` (R-131, measured
23
- * in `docs/probes/g36-workspace-attenuation`).
23
+ * in probe `g36-workspace-attenuation`).
24
24
  *
25
25
  * **Well-formedness first, because `workspace_id` is a model-facing tool parameter** and the next step turns
26
26
  * it into a capability id. `workspace_id: "prod,tool:bash"` produced a `WORKSPACE_NOT_AUTHORIZED` whose
@@ -76,7 +76,7 @@ export declare function isSafeName(name: string): boolean;
76
76
  * grants), which is right for the enforcement path — the catalog refuses what it does not know — and is
77
77
  * exactly why the check has to be here, at the boundary that *generates* rather than the one that enforces.
78
78
  *
79
- * The grammar is the one `docs/SPEC.md` documents: `tool:<name>`, `skill:<name>`, `agent:<name>`,
79
+ * The grammar is the one the README documents: `tool:<name>`, `skill:<name>`, `agent:<name>`,
80
80
  * `workspace:<id>`, and `ext:<pkg>/<tool>` where `<pkg>` may be npm-scoped. No wildcards — those are refused
81
81
  * separately and loudly, because "you tried to grant yourself everything" is a different fact from "that is
82
82
  * not a name".
@@ -51,7 +51,7 @@ export function isSafeName(name) {
51
51
  * grants), which is right for the enforcement path — the catalog refuses what it does not know — and is
52
52
  * exactly why the check has to be here, at the boundary that *generates* rather than the one that enforces.
53
53
  *
54
- * The grammar is the one `docs/SPEC.md` documents: `tool:<name>`, `skill:<name>`, `agent:<name>`,
54
+ * The grammar is the one the README documents: `tool:<name>`, `skill:<name>`, `agent:<name>`,
55
55
  * `workspace:<id>`, and `ext:<pkg>/<tool>` where `<pkg>` may be npm-scoped. No wildcards — those are refused
56
56
  * separately and loudly, because "you tried to grant yourself everything" is a different fact from "that is
57
57
  * not a name".
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The enforcement point is pi core, not this package: `--tools` and `--no-tools` hard-block extension
5
5
  * tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them (verified,
6
- * docs/probes/pi-fabric-eval probes 9–11). So governance reduces to "compute the allowlist correctly
6
+ * probe `pi-fabric-eval` probes 9–11). So governance reduces to "compute the allowlist correctly
7
7
  * and hand it to pi", with no runtime inside the descendant.
8
8
  */
9
9
  import { type Capability } from "./resolve.ts";
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The enforcement point is pi core, not this package: `--tools` and `--no-tools` hard-block extension
5
5
  * tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them (verified,
6
- * docs/probes/pi-fabric-eval probes 9–11). So governance reduces to "compute the allowlist correctly
6
+ * probe `pi-fabric-eval` probes 9–11). So governance reduces to "compute the allowlist correctly
7
7
  * and hand it to pi", with no runtime inside the descendant.
8
8
  */
9
9
  import { toPiToolsAllowlist } from "./resolve.js";
@@ -34,7 +34,7 @@ export function planSpawn(input) {
34
34
  args.push("--no-extensions");
35
35
  // R-32. `--no-extensions` governs EXTENSIONS ONLY — measured, not assumed: a child spawned with
36
36
  // `--tools read` still loaded all eight of the operator's skills and `CLAUDE.md`
37
- // (`docs/probes/g16-herdr` §4-5). Skills are injected into the system prompt rather than passed as
37
+ // (probe `g16-herdr` §4-5). Skills are injected into the system prompt rather than passed as
38
38
  // tools, so `--tools` cannot reach them and the `skill:` namespace enforced nothing at all.
39
39
  //
40
40
  // `--no-skills` is unconditional and `--skill` is added on top, because that is exactly how pi
@@ -92,7 +92,7 @@ export function planSpawn(input) {
92
92
  * - `@…` is resolved as a file and its contents injected into the child's prompt — absolute paths, `~`
93
93
  * expansion, no sandbox. This happens in `main.js` before any tool is constructed, so `--tools` and
94
94
  * `--no-tools` never apply to it. A child granted nothing at all still reads the file. Verified
95
- * against pi 0.83.0 (review finding A-C1 / B-C7, and `docs/probes/g1-argv`).
95
+ * against pi 0.83.0 (review finding A-C1 / B-C7, and probe `g1-argv`).
96
96
  * - `-…` is parsed as a flag, and pi ships `--approve` ("trust project-local files for this run").
97
97
  *
98
98
  * The task comes from the model, so this is the one place in the package where a model-authored string
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/kernel/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAmB,MAAM,cAAc,CAAC;AA8CnE;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;;QAC5D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE/B,iGAAiG;IACjG,iEAAiE;IACjE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE7B,gGAAgG;IAChG,iFAAiF;IACjF,mGAAmG;IACnG,4FAA4F;IAC5F,EAAE;IACF,+FAA+F;IAC/F,iGAAiG;IACjG,qGAAqG;IACrG,8FAA8F;IAC9F,4CAA4C;IAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,gBAAgB,GAAiB,EAAE,CAAC;IAC1C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACvB,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEtD,qGAAqG;IACrG,oGAAoG;IACpG,qGAAqG;IACrG,+FAA+F;IAC/F,mGAAmG;IACnG,sFAAsF;IACtF,IAAI,CAAC,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEzD,qGAAqG;IACrG,qGAAqG;IACrG,mGAAmG;IACnG,oGAAoG;IACpG,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEnC,mGAAmG;IACnG,iGAAiG;IACjG,gGAAgG;IAChG,4FAA4F;IAC5F,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAEhF,IAAI,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;QACpD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,IAAI,MAAM,EAAE,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/kernel/spawn.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export interface WorkspaceRegistryFile {
8
8
  /**
9
9
  * Where this was loaded from, carried so a refusal can NAME it.
10
10
  *
11
- * `docs/SPEC.md` claimed an unregistered id is refused "with `WORKSPACE_NOT_REGISTERED`, which names the
11
+ * The README claimed an unregistered id is refused "with `WORKSPACE_NOT_REGISTERED`, which names the
12
12
  * file", and `catalog.ts` justified exempting the whole namespace from the unknown check on the strength of
13
13
  * that — *"a second, weaker check here can only turn that precise refusal into a misleading one"*. The
14
14
  * refusal named no file: the registry object had no idea where it came from. Carried on the object rather
@@ -352,7 +352,7 @@ export async function executePlannedChild(input: {
352
352
  // NOT strict, and this line is the whole point of R-99. The child has already run: failing
353
353
  // closed here prevents nothing and used to discard a completed child's entire output while
354
354
  // blaming "ledger" — under `delegate_all` it discarded every sibling's work too. The docstring
355
- // above, `docs/SPEC.md` and the ADR-0034 amendment all promised this; only the comment changed.
355
+ // above, the README and the ADR-0034 amendment all promised this; only the comment changed.
356
356
  // `capability_decision`, which PROVISIONS, still fails closed.
357
357
  strict: false,
358
358
  onFailure: (cause) => teardownFailures.push(`child lifecycle record failed: ${String(cause)}`),
@@ -137,7 +137,7 @@ export const grantsCommand = {
137
137
  ];
138
138
  for (const bad of report.corrupt.slice(0, 5)) lines.push(` line ${bad.line}: ${bad.reason}`);
139
139
  // ADR-0031, and R-51's lesson applied on the day the field was added rather than a release later: a field
140
- // the writer sets and no diagnostic reads is one that needs `jq`, and `docs/SPEC.md` claims the executor is
140
+ // the writer sets and no diagnostic reads is one that needs `jq`, and the README claims the executor is
141
141
  // announced "per child in the ledger". `unknown` is shown only when present, because on a fresh ledger it
142
142
  // is always zero and a permanent zero is noise; on an upgraded one it is the count of pre-0.16 lines, which
143
143
  // is worth seeing.
@@ -127,7 +127,7 @@ export async function reportSessionStart(session: GrantsSession, ctx: SessionRep
127
127
  // `agent:*` grants no tools, but it authorises every definition in BOTH skill roots — including
128
128
  // `~/.pi/agent/skills/`, which other software installs into, so ADR-0017's "an operator-authored
129
129
  // file" is not true of everything it covers. Paired with a shell that is every body on disk running
130
- // with `bash`. `docs/SPEC.md` calls the combination poor and nothing detected it, which is R-47's
130
+ // with `bash`. The README calls the combination poor and nothing detected it, which is R-47's
131
131
  // shape in a control shipped one day later.
132
132
  if (
133
133
  session.ownGrant.includes(AGENT_WILDCARD) &&
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-daddy",
3
- "version": "0.32.0",
3
+ "version": "0.32.1",
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",
package/src/cli.ts CHANGED
@@ -27,6 +27,8 @@ import {
27
27
  settingsIgnoredByGit,
28
28
  } from "./governance/init.ts";
29
29
  import { registeredWorkspaceIds } from "./kernel/workspace.ts";
30
+ import { explainDoubledNamespace } from "./kernel/catalog.ts";
31
+ import type { Capability } from "./kernel/resolve.ts";
30
32
  import {
31
33
  discoverSkillPackages,
32
34
  skillPackageRoots,
@@ -201,7 +203,8 @@ async function init(cwd: string, force: boolean): Promise<number> {
201
203
  }
202
204
 
203
205
  /** Say what was refused and what the fix is. Each reason has a different one. */
204
- function reportRefusal(pkg: SkillPackage, refusal: RefusedSkill): string {
206
+ /** Exported so the message an operator actually reads can be tested; `init` composes it, nothing else calls it. */
207
+ export function reportRefusal(pkg: SkillPackage, refusal: RefusedSkill): string {
205
208
  const head = `REFUSED ${pkg.name}: ${JSON.stringify(refusal.subject)}`;
206
209
  switch (refusal.reason) {
207
210
  case "unsafe-name":
@@ -209,12 +212,19 @@ function reportRefusal(pkg: SkillPackage, refusal: RefusedSkill): string {
209
212
  `${head} cannot be governed — a definition name becomes a capability id in a comma-separated ` +
210
213
  `grant, a line in a file you source, and a path. Names must match [A-Za-z0-9][A-Za-z0-9._-]*.`
211
214
  );
212
- case "unsafe-capability":
215
+ case "unsafe-capability": {
216
+ // The one shape of unsafe id that has a known cause worth naming: an `allowed-tools` entry written with a
217
+ // capitalised namespace, which the bare-entry path prefixes a second time. `isSafeCapability` rejects the
218
+ // extra colon, so this refusal — not the spawn refusal and not `planInit`'s cautions — is where a doubled
219
+ // id actually reaches an operator. Measured: a package declaring `Tool:Read` never reaches `planInit`.
220
+ const doubled = refusal.detail.map((id) => explainDoubledNamespace(id as Capability)).filter(Boolean);
213
221
  return (
214
222
  `${head} declares ${refusal.detail.join(", ")}, which cannot be written into a grant file — a ` +
215
223
  `capability id is tool:/skill:/agent:<name> or ext:<pkg>/<tool>. A quote or a separator here ` +
216
- `would end up in a file you are told to \`source\`.`
224
+ `would end up in a file you are told to \`source\`.` +
225
+ (doubled.length ? `\n ${doubled.join("\n ")}` : "")
217
226
  );
227
+ }
218
228
  case "wildcard":
219
229
  return (
220
230
  `${head} declares ${refusal.detail.join(", ")} — that is root authority, not a description of what ` +
@@ -7,7 +7,7 @@
7
7
  * herdr executor would mean the session imported the thing it was deciding whether to use.
8
8
  *
9
9
  * Every rule here is tested against an injected `exec`, so the suite stays fast, pi-free and herdr-free. The
10
- * facts the fakes reproduce were measured against real herdr 0.7.5 (`docs/probes/g16-herdr`).
10
+ * facts the fakes reproduce were measured against real herdr 0.7.5 (probe `g16-herdr`).
11
11
  */
12
12
 
13
13
  import { execFile } from "node:child_process";
@@ -6,7 +6,7 @@
6
6
  * *observing* an agent, `run-herdr.ts` is about *starting and cleaning up after* one. Nothing here creates or
7
7
  * destroys anything.
8
8
  *
9
- * The two facts it is built on were measured against real herdr 0.7.5 (`docs/probes/g16-herdr`) and both are
9
+ * The two facts it is built on were measured against real herdr 0.7.5 (probe `g16-herdr`) and both are
10
10
  * counter-intuitive enough to be worth the module comment: `agent wait --until idle` matches the state the
11
11
  * agent was **already** in, and `agent read` is the one command that does **not** return a JSON envelope.
12
12
  */
@@ -7,7 +7,7 @@
7
7
  * `agent_settled` (async) and at process `exit` (sync backstop).
8
8
  *
9
9
  * The gap that remains is the one this module was created for. A pi session **killed outright** runs no `exit`
10
- * handler, so it leaves one pane per tracked child, and `docs/probes/g16-herdr` records that an orphaned pane is
10
+ * handler, so it leaves one pane per tracked child, and probe `g16-herdr` records that an orphaned pane is
11
11
  * not trivially closable afterwards. R-62 was re-rated L×L → M×L when ADR-0031 made panes the default path.
12
12
  *
13
13
  * **Registered on `exit` only, deliberately — not on SIGINT or SIGTERM.** That is the part worth reading,
@@ -203,7 +203,7 @@ export function reapOpenPanes(syncExec: (args: string[]) => void = defaultSyncEx
203
203
  async function closePane(exec: HerdrExec, pane: OpenPane): Promise<boolean> {
204
204
  // **No `agent stop`.** It is not a herdr command — measured against 0.7.5, where it prints the usage banner
205
205
  // and exits 0, which `defaultExec` reports as success. Two call sites here and one in `run-herdr.ts` issued it
206
- // for nothing, and `docs/probes/g16-herdr` asserted it worked from a block that was never run. Closing the tab
206
+ // for nothing, and probe `g16-herdr` asserted it worked from a block that was never run. Closing the tab
207
207
  // is the only kill herdr offers, and it does kill the child.
208
208
  const reply = await exec(["tab", "close", pane.tab]).catch(() => undefined);
209
209
  const closed = reply !== undefined && !parseReply(reply).error;
@@ -8,7 +8,7 @@
8
8
  * **Why go through herdr's CLI rather than the third-party `pi-herdr` extension.** That extension exposes
9
9
  * `agentArgs` and `env` as MODEL-facing tool parameters (R-30), which hands a model an argv array and the
10
10
  * environment variable the grant travels on. Here the model chooses a definition and a task; this package
11
- * builds the argv. Measured facts this relies on (`docs/probes/g16-herdr`):
11
+ * builds the argv. Measured facts this relies on (probe `g16-herdr`):
12
12
  *
13
13
  * - `herdr agent start … -- <args>` delivers argv **verbatim**, echoed back in the reply.
14
14
  * - `--tools` is enforced inside a pane exactly as it is for a direct spawn; `--no-tools` yields none.
@@ -76,7 +76,7 @@ export interface HerdrRunRequest {
76
76
  * The task, delivered with `herdr agent prompt` rather than as an argv element.
77
77
  *
78
78
  * This is strictly safer than the direct-spawn path, which has to defend a model-authored string from
79
- * pi's argv parser by prefixing a space (`neutralisePrompt`, `docs/probes/g1-argv`). Here the task never
79
+ * pi's argv parser by prefixing a space (`neutralisePrompt`, probe `g1-argv`). Here the task never
80
80
  * reaches argv at all, so there is no parser in front of it.
81
81
  */
82
82
  prompt: string;
@@ -97,7 +97,7 @@ export interface HerdrRunRequest {
97
97
  * Leave the pane open after the run so a human can read or resume it.
98
98
  *
99
99
  * Default **false**: a fan-out that leaks a pane per child fills the operator's workspace, and
100
- * `docs/probes/g16-herdr` records that panes are not trivially closable once orphaned.
100
+ * probe `g16-herdr` records that panes are not trivially closable once orphaned.
101
101
  */
102
102
  keepPane?: boolean;
103
103
  exec?: HerdrExec;
@@ -289,7 +289,7 @@ export async function runHerdrPane(request: HerdrRunRequest): Promise<ChildRunRe
289
289
  * running descendant."* **`herdr agent stop` does not exist.** Measured against herdr 0.7.5: the `agent`
290
290
  * subcommands are `list get read send-keys prompt rename focus wait attach start explain`, and `agent stop`
291
291
  * prints the usage banner and exits 0 — which `defaultExec` reports as a success, so nothing ever noticed.
292
- * `docs/probes/g16-herdr/README.md` asserted it worked, in a *How to rerun* block that was never run.
292
+ * probe `g16-herdr` asserted it worked, in a *How to rerun* block that was never run.
293
293
  *
294
294
  * So there is exactly one kill available: closing the tab. That forces the distinction below.
295
295
  *
@@ -53,7 +53,7 @@ export interface LedgerReport {
53
53
  * **Added because the field was written and never read, which is R-51's shape exactly.** R-51 was
54
54
  * `definitionDigest`: recorded from the start, absent from every report, so the questions ADR-0018 advertised
55
55
  * needed hand-written `jq`. `executor` arrived the same way — `src/governance/ledger.ts` justifies making it *required*
56
- * with "reading it back is the only reason it exists", and nothing read it back. `docs/SPEC.md` claims the
56
+ * with "reading it back is the only reason it exists", and nothing read it back. The README claims the
57
57
  * executor is "announced three times… per child in the ledger"; without this the third announcement was to
58
58
  * `jq` only.
59
59
  *
@@ -2,7 +2,7 @@
2
2
  * Append-only grant ledger.
3
3
  *
4
4
  * Exists because pi-fabric's persisted execution trace records `args: {}` — it captures *that* a child
5
- * ran, not *what it was authorised to do* (docs/probes/pi-fabric-eval probe 5). Without this record
5
+ * ran, not *what it was authorised to do* (probe `pi-fabric-eval` probe 5). Without this record
6
6
  * you cannot answer "what was this sub-agent permitted to do?" after the fact, which is the whole
7
7
  * point of a governance layer.
8
8
  *
@@ -145,7 +145,7 @@ export async function acquireWorkspaceLease(input: {
145
145
  * the lock file descriptor and holds the lock in its own right — killing only `flock` leaves the
146
146
  * lock HELD by an orphan, and every later acquisition then reports WORKSPACE_WRITE_CONFLICT, which
147
147
  * is the one message an operator would use to conclude another agent is writing. Measured in
148
- * `docs/probes/g35-flock-fd-inheritance` (R-99).
148
+ * probe `g35-flock-fd-inheritance` (R-99).
149
149
  */
150
150
  const hardKill = () => {
151
151
  // The GROUP, so this works on the readiness-timeout path too — there `helperPid` is usually still
@@ -59,7 +59,7 @@ export const DELEGATE_CAPABILITY: Capability = "tool:delegate";
59
59
  * Consolidating the sites is a separate change, and a count nobody re-derives is the defect this list exists
60
60
  * to prevent.
61
61
  *
62
- * `docs/SPEC.md`'s grammar section is the prose statement of the same list and is kept in step with it.
62
+ * The README's grammar section is the prose statement of the same list and is kept in step with it.
63
63
  */
64
64
  export const CAPABILITY_NAMESPACE_PREFIXES = ["tool:", "ext:", "skill:", "agent:", "workspace:"] as const;
65
65
 
@@ -80,7 +80,7 @@ export function workspaceCapability(workspaceId: string): Capability {
80
80
  *
81
81
  * Mirrors `maySpawnDefinition` deliberately — same shape, same wildcard handling, same reason. Routing was
82
82
  * the one governance dimension that did not attenuate (R-131, measured in
83
- * `docs/probes/g36-workspace-attenuation`): the registry inherited into every child and nothing checked the
83
+ * probe `g36-workspace-attenuation`): the registry inherited into every child and nothing checked the
84
84
  * caller's authority, so a child routed to `staging` could route its grandchild to `prod`.
85
85
  *
86
86
  * `tool:*` satisfies it because governance is opt-in — an ungoverned session holds the wildcard and must
@@ -25,7 +25,7 @@ import { loadDefinitions, type SkillDefinition } from "./definitions.ts";
25
25
  import { PI_BUILTIN_TOOLS, WILDCARD } from "./pi-tools.ts";
26
26
  import { AGENT_WILDCARD, WORKSPACE_WILDCARD, type Capability } from "./resolve.ts";
27
27
  import { loadWorkspaceRegistry, type WorkspaceRegistryFile } from "./workspace.ts";
28
- import { isSafeWorkspaceId } from "./capabilities.ts";
28
+ import { CAPABILITY_NAMESPACE_PREFIXES, isSafeWorkspaceId } from "./capabilities.ts";
29
29
  import { piProjectDir } from "./project-paths.ts";
30
30
 
31
31
  export type CapabilityKind = "builtin" | "extension" | "skill" | "agentType" | "workspace";
@@ -295,6 +295,66 @@ export function suggestForUnknown(unknown: Capability, catalog: Catalog): Capabi
295
295
  return bestDistance <= limit ? best : null;
296
296
  }
297
297
 
298
+ /**
299
+ * Why an id carries two namespaces, said as the mistake that produced it.
300
+ *
301
+ * `ceilingForDefinition` prefixes a BARE entry with `tool:` and recognises an explicit namespace by its literal
302
+ * lower-case prefix, so `allowed-tools: Read` and `allowed-tools: tool:read` are both right. The capitalised
303
+ * spelling the same field invites is not: the frontmatter is copied from Claude Code, where the tool names are
304
+ * `Read` and `Grep`, so an author who also reaches for the namespace writes `Tool:Read` — which misses the prefix
305
+ * test, is lower-cased with the rest of the bare entry, and arrives as `tool:tool:read`. Every namespace has this
306
+ * shape (`Workspace:prod` becomes `tool:workspace:prod`), which is why the prefix is read from the one shared list
307
+ * rather than a second spelling of it.
308
+ *
309
+ * The messages that followed were loud and useless. A spawn refusal said "not present in this session's catalog
310
+ * (typo, or an uninstalled package?)" about an id nobody typed, and `suggestForUnknown` cannot rescue it either:
311
+ * `tool:read` is five edits from `read`, well past a threshold that never exceeds two. `pi-daddy init` refuses the
312
+ * whole definition earlier still, because `isSafeCapability` rejects the extra colon, and named the mangled id too.
313
+ *
314
+ * It names the mistake and does not repair it, for `ceilingForDefinition`'s own reason: a capability this package
315
+ * inferred rather than read is a grant nobody wrote. The author edits the file.
316
+ *
317
+ * **What the suggestion cannot recover.** The doubling happens on the bare-entry path, which lower-cases the whole
318
+ * entry before this function ever sees it, so `Workspace:Prod` and `Workspace:prod` both arrive as
319
+ * `tool:workspace:prod`. For `tool:` that loses nothing, since a pi tool name is lower-case anyway. For the other
320
+ * namespaces the identifier's own capitalisation is already gone, so the suggestion says so rather than implying
321
+ * that copying it verbatim must work. Nor is "or the bare name" offered outside `tool:`: a bare `prod` becomes
322
+ * `tool:prod`, which is a second unknown capability rather than a fix.
323
+ */
324
+ export function explainDoubledNamespace(unknown: Capability): string | null {
325
+ const intended = undoubleNamespace(unknown);
326
+ if (intended === unknown) return null;
327
+ const prefix = CAPABILITY_NAMESPACE_PREFIXES.find((p) => unknown.slice("tool:".length).toLowerCase().startsWith(p))!;
328
+ const tail =
329
+ prefix === "tool:"
330
+ ? ` (or the bare name \`${intended.slice("tool:".length)}\`)`
331
+ : `, whose own capitalisation was folded when the bare entry was read, so restore it if that id has any`;
332
+ return (
333
+ `${unknown} is prefixed twice: \`allowed-tools\` adds \`tool:\` to a bare entry and recognises an ` +
334
+ `explicit \`${prefix}\` prefix only in lower case, so an entry already carrying a namespace was given ` +
335
+ `another — write \`${intended}\`${tail} in the definition`
336
+ );
337
+ }
338
+
339
+ /**
340
+ * The entry the author meant, with every extra `tool:` removed.
341
+ *
342
+ * Recursive, because `tool:tool:tool:read` is one mistake made twice and advising `tool:tool:read` would hand back
343
+ * an id with the same defect. The namespace is matched case-insensitively and re-emitted in lower case, so
344
+ * `tool:Tool:Read` — reachable on the model-chosen `tools:` path, which does not case-fold — suggests `tool:read`
345
+ * rather than the broken spelling it arrived in. A `tool:` name is lower-cased because pi's tool names are; any
346
+ * other identifier is left as it arrived, since its case may be significant and is not this function's to change.
347
+ */
348
+ function undoubleNamespace(id: Capability): Capability {
349
+ if (!id.startsWith("tool:")) return id;
350
+ const inner = id.slice("tool:".length);
351
+ const prefix = CAPABILITY_NAMESPACE_PREFIXES.find((p) => inner.toLowerCase().startsWith(p));
352
+ // A bare `tool:tool:` names nothing to suggest, so it stays an ordinary unknown capability.
353
+ if (!prefix || inner.length === prefix.length) return id;
354
+ const rest = inner.slice(prefix.length);
355
+ return undoubleNamespace((prefix === "tool:" ? `tool:${rest.toLowerCase()}` : `${prefix}${rest}`) as Capability);
356
+ }
357
+
298
358
  /**
299
359
  * Skill name -> absolute path, for `planSpawn`'s `--skill` flags (R-32).
300
360
  *
@@ -26,7 +26,7 @@ import {
26
26
  inheritableGrant,
27
27
  } from "./propagation.ts";
28
28
  import { inheritApprovals, type InheritableApproval } from "./approval.ts";
29
- import { suggestForUnknown, unknownCapabilities, type Catalog } from "./catalog.ts";
29
+ import { explainDoubledNamespace, suggestForUnknown, unknownCapabilities, type Catalog } from "./catalog.ts";
30
30
  import { GovernanceRefusal, refusal, type RefusalCode, type StructuredRefusal } from "./refusals.ts";
31
31
  import { digestTask, normaliseCorrelation, type ApprovalBinding, type CorrelationMetadata } from "./correlation.ts";
32
32
  import { resolveDelegationApproval } from "./delegation-approval.ts";
@@ -199,8 +199,13 @@ export function planDelegation(request: DelegationRequest, ctx: DelegationContex
199
199
  // refusal — correct, and previously unhelpful, because pi's equivalent is `find` and no amount of
200
200
  // staring at "not present in this session's catalog" says so. The hint changes nothing about the
201
201
  // refusal; it just stops the author having to guess which of nine built-ins was meant.
202
+ // A doubled namespace is answered first and instead: it is not a guess about what the author meant
203
+ // but a statement of what the field did, and "did you mean tool:read?" beside `tool:tool:read` shows
204
+ // the author a correction without ever saying that `allowed-tools` supplies the `tool:` itself.
202
205
  const hints = unknown
203
206
  .map((c) => {
207
+ const doubled = explainDoubledNamespace(c);
208
+ if (doubled !== null) return doubled;
204
209
  const s = suggestForUnknown(c, ctx.catalog!);
205
210
  return s === null ? null : `${c} → did you mean ${s}?`;
206
211
  })
@@ -33,7 +33,7 @@ import { PROJECT_FILES } from "./project-paths.ts";
33
33
  * - `tool:write`, `tool:edit`, `tool:edit-diff` — mutate the working tree, and **are not gated by default**,
34
34
  * so a source-and-go operator would hand them to a child with no dialog at all. That gap is exactly what
35
35
  * made "the union is mitigated by gating" untrue (R-76).
36
- * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (`docs/probes/pi-fabric-eval`).
36
+ * - `UNIVERSAL_CAPABILITIES` — confer the whole catalog by measurement (probe `pi-fabric-eval`).
37
37
  * `assertNarrowing` refuses a grant containing one anyway; leaving it out of the file keeps the operator
38
38
  * from ever holding it by accident.
39
39
  */
@@ -196,7 +196,7 @@ export const DEFAULT_MAX_DEPTH = 2;
196
196
  *
197
197
  * `bash` is not one capability among others; it is an execution primitive. A child holding it can run
198
198
  * `env -u PI_DADDY_GRANT pi …` and obtain a completely **ungoverned** descendant — measured, not
199
- * theorised (`docs/probes/g5-bash-escape`). Handing that down silently is the thing worth changing.
199
+ * theorised (probe `g5-bash-escape`). Handing that down silently is the thing worth changing.
200
200
  *
201
201
  * Subsumption-aware gating (also ADR-0012) means this single entry covers `write`, `edit`, `read`,
202
202
  * `grep`, `find` and `ls` as well, since `bash` confers all of them.
@@ -20,7 +20,7 @@ export type Capability = string;
20
20
  *
21
21
  * `ext:pi-fabric/fabric_exec` is here on measured evidence, not suspicion: a child granted
22
22
  * `tools: []` (nothing at all) plus `recursive: true` still reached `pi.write` and `pi.bash` and
23
- * spawned a grandchild that wrote to disk. See docs/probes/pi-fabric-eval (probes 2, 4, 7, 8).
23
+ * spawned a grandchild that wrote to disk. See probe `pi-fabric-eval` (probes 2, 4, 7, 8).
24
24
  */
25
25
  export const UNIVERSAL_CAPABILITIES: readonly Capability[] = ["ext:pi-fabric/fabric_exec", "tool:fabric_exec"];
26
26
 
@@ -146,7 +146,7 @@ export function resolve(input: ResolveInput): ResolveResult {
146
146
  * ADR-0017 created and ADR-0023's own example uses — was refused with **"capability escalation
147
147
  * blocked"**, and recorded as an escalation attempt, in a session that had opted out.
148
148
  *
149
- * `maySpawnDefinition` had always honoured `tool:*` for definition ids and `docs/SPEC.md` had always
149
+ * `maySpawnDefinition` had always honoured `tool:*` for definition ids and the README had always
150
150
  * claimed it "satisfies any capability". This function disagreed with both, which is R-28's shape: two
151
151
  * spellings of one rule, and the enforcing one was wrong.
152
152
  */
@@ -242,7 +242,7 @@ export function assertNarrowing(result: ResolveResult, allowUniversal = false):
242
242
  *
243
243
  * pi core is the enforcement point — verified: `--tools` and `--no-tools` both hard-block extension
244
244
  * tools, and an explicitly `-e`-loaded extension cannot re-add its tool past them
245
- * (docs/probes/pi-fabric-eval probes 9–11). That is why enforcement needs no in-descendant runtime.
245
+ * (probe `pi-fabric-eval` probes 9–11). That is why enforcement needs no in-descendant runtime.
246
246
  *
247
247
  * Returns `null` when the grant contains no callable tools, meaning the caller should pass
248
248
  * `--no-tools` rather than an empty `--tools` (an empty list is not a valid allowlist).