pi-daddy 0.17.1 → 0.18.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.
Files changed (113) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +54 -25
  3. package/dist/approval-prompt.d.ts +3 -1
  4. package/dist/approval-prompt.d.ts.map +1 -1
  5. package/dist/approval-prompt.js +1 -1
  6. package/dist/approval-prompt.js.map +1 -1
  7. package/dist/approval-store.d.ts.map +1 -1
  8. package/dist/approval-store.js +4 -1
  9. package/dist/approval-store.js.map +1 -1
  10. package/dist/approval.d.ts +20 -2
  11. package/dist/approval.d.ts.map +1 -1
  12. package/dist/approval.js +26 -6
  13. package/dist/approval.js.map +1 -1
  14. package/dist/chain.d.ts +6 -1
  15. package/dist/chain.d.ts.map +1 -1
  16. package/dist/chain.js +1 -1
  17. package/dist/chain.js.map +1 -1
  18. package/dist/check-runner.d.ts +61 -0
  19. package/dist/check-runner.d.ts.map +1 -0
  20. package/dist/check-runner.js +237 -0
  21. package/dist/check-runner.js.map +1 -0
  22. package/dist/correlation.d.ts +90 -0
  23. package/dist/correlation.d.ts.map +1 -0
  24. package/dist/correlation.js +183 -0
  25. package/dist/correlation.js.map +1 -0
  26. package/dist/delegate-types.d.ts +140 -0
  27. package/dist/delegate-types.d.ts.map +1 -0
  28. package/dist/delegate-types.js +8 -0
  29. package/dist/delegate-types.js.map +1 -0
  30. package/dist/delegate.d.ts +4 -128
  31. package/dist/delegate.d.ts.map +1 -1
  32. package/dist/delegate.js +68 -72
  33. package/dist/delegate.js.map +1 -1
  34. package/dist/delegation-approval.d.ts +36 -0
  35. package/dist/delegation-approval.d.ts.map +1 -0
  36. package/dist/delegation-approval.js +67 -0
  37. package/dist/delegation-approval.js.map +1 -0
  38. package/dist/git-identity.d.ts +13 -0
  39. package/dist/git-identity.d.ts.map +1 -0
  40. package/dist/git-identity.js +44 -0
  41. package/dist/git-identity.js.map +1 -0
  42. package/dist/index.d.ts +5 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/lease-record.d.ts +78 -0
  47. package/dist/lease-record.d.ts.map +1 -0
  48. package/dist/lease-record.js +52 -0
  49. package/dist/lease-record.js.map +1 -0
  50. package/dist/ledger-events.d.ts +87 -0
  51. package/dist/ledger-events.d.ts.map +1 -0
  52. package/dist/ledger-events.js +45 -0
  53. package/dist/ledger-events.js.map +1 -0
  54. package/dist/ledger-report.d.ts +19 -12
  55. package/dist/ledger-report.d.ts.map +1 -1
  56. package/dist/ledger-report.js +81 -1
  57. package/dist/ledger-report.js.map +1 -1
  58. package/dist/ledger.d.ts +44 -1
  59. package/dist/ledger.d.ts.map +1 -1
  60. package/dist/ledger.js +20 -2
  61. package/dist/ledger.js.map +1 -1
  62. package/dist/refusals.d.ts +16 -0
  63. package/dist/refusals.d.ts.map +1 -0
  64. package/dist/refusals.js +51 -0
  65. package/dist/refusals.js.map +1 -0
  66. package/dist/run-child.d.ts +4 -0
  67. package/dist/run-child.d.ts.map +1 -1
  68. package/dist/run-child.js +21 -1
  69. package/dist/run-child.js.map +1 -1
  70. package/dist/run-herdr.d.ts +7 -0
  71. package/dist/run-herdr.d.ts.map +1 -1
  72. package/dist/run-herdr.js +41 -12
  73. package/dist/run-herdr.js.map +1 -1
  74. package/dist/workspace-lease.d.ts +28 -0
  75. package/dist/workspace-lease.d.ts.map +1 -0
  76. package/dist/workspace-lease.js +276 -0
  77. package/dist/workspace-lease.js.map +1 -0
  78. package/dist/workspace.d.ts +32 -0
  79. package/dist/workspace.d.ts.map +1 -0
  80. package/dist/workspace.js +79 -0
  81. package/dist/workspace.js.map +1 -0
  82. package/extensions/approval-banking.ts +66 -0
  83. package/extensions/approvals.ts +95 -7
  84. package/extensions/chain-approval-facts.ts +51 -0
  85. package/extensions/chain-ledger.ts +48 -0
  86. package/extensions/delegate-chain.ts +115 -81
  87. package/extensions/delegation.ts +81 -23
  88. package/extensions/execute-child.ts +289 -0
  89. package/extensions/fanout-outcome.ts +97 -0
  90. package/extensions/run-delegation.ts +130 -120
  91. package/extensions/session.ts +4 -0
  92. package/extensions/workspace-runtime.ts +165 -0
  93. package/package.json +17 -1
  94. package/src/approval-prompt.ts +4 -2
  95. package/src/approval-store.ts +4 -1
  96. package/src/approval.ts +47 -14
  97. package/src/chain.ts +3 -1
  98. package/src/check-runner.ts +341 -0
  99. package/src/correlation.ts +260 -0
  100. package/src/delegate-types.ts +144 -0
  101. package/src/delegate.ts +80 -179
  102. package/src/delegation-approval.ts +99 -0
  103. package/src/git-identity.ts +52 -0
  104. package/src/index.ts +50 -0
  105. package/src/lease-record.ts +119 -0
  106. package/src/ledger-events.ts +138 -0
  107. package/src/ledger-report.ts +90 -2
  108. package/src/ledger.ts +68 -3
  109. package/src/refusals.ts +66 -0
  110. package/src/run-child.ts +23 -1
  111. package/src/run-herdr.ts +41 -11
  112. package/src/workspace-lease.ts +303 -0
  113. package/src/workspace.ts +135 -0
@@ -0,0 +1,140 @@
1
+ /**
2
+ * The shapes `planDelegation` consumes and produces. Split out of `./delegate.ts` only to stay under the
3
+ * 400-line module ceiling this project enforces mechanically; `./delegate.ts` re-exports all three, so
4
+ * "the delegate module" remains one import for every caller.
5
+ */
6
+ import type { Capability, ResolveResult } from "./resolve.ts";
7
+ import type { DefinitionDigest, SkillDefinition } from "./definitions.ts";
8
+ import type { InheritableApproval } from "./approval.ts";
9
+ import type { Catalog } from "./catalog.ts";
10
+ import type { ApprovalBinding, CorrelationMetadata } from "./correlation.ts";
11
+ import type { StructuredRefusal } from "./refusals.ts";
12
+ export interface DelegationRequest {
13
+ task: string;
14
+ /**
15
+ * Capabilities the delegator wants the child to hold.
16
+ *
17
+ * Optional since ADR-0016: prefer `agent`, which names an operator-authored definition. This form
18
+ * lets the MODEL choose the capability set, which is the weaker arrangement — it is still bounded by
19
+ * the session grant (ADR-0008), so it cannot escalate, but nothing about it was reviewed by a human.
20
+ */
21
+ tools?: string[];
22
+ /**
23
+ * Name of a `SKILL.md` definition to spawn (ADR-0016).
24
+ *
25
+ * When given, the definition's `allowed-tools` is the ceiling and its body is the child's system
26
+ * prompt. The model chooses only *which* definition and *what* task; the capability set is the
27
+ * operator's, written down in a file.
28
+ */
29
+ agent?: string;
30
+ model?: string;
31
+ provider?: string;
32
+ thinking?: string;
33
+ /** Optional external join metadata. It never participates in capability authority. */
34
+ correlation?: CorrelationMetadata;
35
+ /**
36
+ * Trusted binding scope, supplied by the caller that actually resolved and leased the
37
+ * workspace. Deliberately separate from `correlation`, whose values are a model-supplied
38
+ * claim: reading the workspace id out of correlation let a bound approval be spent outside
39
+ * the workspace it named (R-110).
40
+ */
41
+ boundWorkspaceId?: string;
42
+ boundContextId?: string;
43
+ }
44
+ export interface DelegationContext {
45
+ ownGrant: Capability[];
46
+ depth: number;
47
+ maxDepth: number;
48
+ gated: Capability[];
49
+ /**
50
+ * Approvals in force for this delegation, with subject and scope (ADR-0014).
51
+ *
52
+ * One source of truth for two different questions. The **gate check here** honours every entry,
53
+ * including `once` — that approval applies to *this* spawn, which is exactly what the human said yes
54
+ * to. What crosses to the CHILD is `inheritApprovals`, which drops `once` and keeps the subject, so
55
+ * the same list cannot silently authorise a subtree.
56
+ */
57
+ approved?: InheritableApproval[];
58
+ ledgerPath?: string;
59
+ /** Path to this extension, so a child granted `tool:delegate` can delegate in turn. */
60
+ extensionPath?: string;
61
+ /** Live capability catalog. When supplied, capabilities absent from it are refused as unknown. */
62
+ catalog?: Catalog;
63
+ /**
64
+ * Absolute path per skill NAME, from the catalog's `source` field (R-32).
65
+ *
66
+ * Without it every granted `skill:` capability is unresolvable and the delegation is refused, which
67
+ * is the correct direction: a caller that cannot say where a skill lives cannot honestly grant it.
68
+ */
69
+ skillPaths?: Record<string, string>;
70
+ /** Let the child load `AGENTS.md` / `CLAUDE.md`. Default false — see `planSpawn`. */
71
+ contextFiles?: boolean;
72
+ /** Known `SKILL.md` definitions by name, for `DelegationRequest.agent` (ADR-0016). */
73
+ definitions?: Map<string, SkillDefinition>;
74
+ /**
75
+ * Build an INTERACTIVE plan — no `--print` — for an executor that drives the child after starting it.
76
+ *
77
+ * `runHerdrPane` requires this: `--print` makes pi process the prompt and exit, so it never reaches the
78
+ * interactive readiness `herdr agent start` waits for and the agent is never detected. Default is the
79
+ * non-interactive plan, because a governed child should not sit waiting for a human by accident.
80
+ */
81
+ interactive?: boolean;
82
+ /**
83
+ * Total descendants this session may still create (`src/fanout.ts`). Split among children by the caller.
84
+ *
85
+ * Omitted means unbounded, which is the pre-fan-out behaviour and correct for a single blocking
86
+ * delegation — the accident that used to bound cardinality to one.
87
+ */
88
+ fanoutBudget?: number;
89
+ /** This session's ledger id, so a child's `parentId` names its real parent (F8). */
90
+ spawnId?: string;
91
+ /** Ledger id assigned to THIS child, distinguishing it from its siblings (F8). */
92
+ childSpawnId?: string;
93
+ }
94
+ export interface Delegation {
95
+ ok: boolean;
96
+ reason?: string;
97
+ /** Stable machine-readable refusal accompanying the unchanged human diagnostic. */
98
+ refusal?: StructuredRefusal;
99
+ args: string[];
100
+ /** Per-child environment — never merged into the parent's process.env. */
101
+ env: Record<string, string>;
102
+ effective: Capability[];
103
+ /**
104
+ * The result this plan was made from. **Required** (B-I3): while it was optional the extension
105
+ * guarded its ledger write with `if (ledgerPath && plan.result)`, silently dropping every refusal
106
+ * that returned before `resolve()` ran. The type is what keeps a new early exit auditable.
107
+ */
108
+ result: ResolveResult;
109
+ childDepth: number;
110
+ /**
111
+ * The capabilities this delegation asked for, whatever route named them.
112
+ *
113
+ * Carried on the plan rather than re-derived by the caller (the B-I3 lesson): with `agent`, the
114
+ * request names a DEFINITION and the capabilities come from its `allowed-tools`, so a ledger that
115
+ * read the tool parameters would record an empty request for every definition spawn.
116
+ */
117
+ requested: Capability[];
118
+ /** Ledger id for this child, if the caller assigned one (F8). */
119
+ childId?: string;
120
+ /**
121
+ * Which operator-authored instructions this spawn used (ADR-0018).
122
+ *
123
+ * Absent for a `tools:`-style delegation, which has no definition and therefore no instructions to
124
+ * identify — and absent on an ADR-0017 authorisation refusal, which is decided before the file is read.
125
+ */
126
+ definitionDigest?: DefinitionDigest;
127
+ /** Trusted SHA-256 of the exact model-authored task. The task text itself is never stored. */
128
+ taskDigest: string;
129
+ /** Non-authoritative external join metadata, snapshotted at planning time. */
130
+ correlation?: CorrelationMetadata;
131
+ /** Exact approval scope, present when correlation/workspace context requested task-bound approval. */
132
+ approvalBinding?: ApprovalBinding;
133
+ }
134
+ /**
135
+ * Plan a governed delegation. Pure: returns argv and env, spawns nothing.
136
+ *
137
+ * Fails closed on depth, on any requested capability the delegator does not hold, on gated capabilities
138
+ * without approval, and on a grant that cannot narrow (a universal capability slipping through).
139
+ */
140
+ //# sourceMappingURL=delegate-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate-types.d.ts","sourceRoot":"","sources":["../src/delegate-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sFAAsF;IACtF,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,sGAAsG;IACtG,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;GAKG"}
@@ -0,0 +1,8 @@
1
+ export {};
2
+ /**
3
+ * Plan a governed delegation. Pure: returns argv and env, spawns nothing.
4
+ *
5
+ * Fails closed on depth, on any requested capability the delegator does not hold, on gated capabilities
6
+ * without approval, and on a grant that cannot narrow (a universal capability slipping through).
7
+ */
8
+ //# sourceMappingURL=delegate-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate-types.js","sourceRoot":"","sources":["../src/delegate-types.ts"],"names":[],"mappings":";AA0IA;;;;;GAKG"}
@@ -1,133 +1,9 @@
1
1
  /**
2
- * Governed delegation — provisioning, not merely enforcement.
3
- *
4
- * The `tool_call` interceptor can only *permit or refuse* a `pi-subagents` spawn, because that package's
5
- * `Agent` tool has no `tools` parameter. When we do the spawning ourselves the grant becomes an argument,
6
- * which is what "give them some tools but not others" actually requires.
7
- *
8
- * Two properties fall out of owning the spawn:
9
- *
10
- * 1. **No propagation race at all.** Each child receives its own explicit `env` object, so nothing is
11
- * written to the shared `process.env`. The interceptor's constraint (only parent-level facts may be
12
- * pushed, because the channel is global) does not apply here.
13
- * 2. **Depth control by capability.** `tool:delegate` is itself a capability. Grant it and the child can
14
- * sub-delegate; withhold it and the child is a leaf. No separate depth mechanism is required, though
15
- * `maxDepth` remains as a cheap backstop.
2
+ * Governed delegation planning. Owning the spawn makes the grant an argument; each child receives its own
3
+ * environment, and `tool:delegate` determines whether it is a delegator or a leaf.
16
4
  */
17
- import { type DefinitionDigest, type SkillDefinition } from "./definitions.ts";
18
- import { type Capability, type ResolveResult } from "./resolve.ts";
19
5
  export { DELEGATE_CAPABILITY, agentCapability, maySpawnDefinition, normaliseCapability } from "./capabilities.ts";
20
- import { type InheritableApproval } from "./approval.ts";
21
- import { type Catalog } from "./catalog.ts";
22
- export interface DelegationRequest {
23
- task: string;
24
- /**
25
- * Capabilities the delegator wants the child to hold.
26
- *
27
- * Optional since ADR-0016: prefer `agent`, which names an operator-authored definition. This form
28
- * lets the MODEL choose the capability set, which is the weaker arrangement — it is still bounded by
29
- * the session grant (ADR-0008), so it cannot escalate, but nothing about it was reviewed by a human.
30
- */
31
- tools?: string[];
32
- /**
33
- * Name of a `SKILL.md` definition to spawn (ADR-0016).
34
- *
35
- * When given, the definition's `allowed-tools` is the ceiling and its body is the child's system
36
- * prompt. The model chooses only *which* definition and *what* task; the capability set is the
37
- * operator's, written down in a file.
38
- */
39
- agent?: string;
40
- model?: string;
41
- provider?: string;
42
- thinking?: string;
43
- }
44
- export interface DelegationContext {
45
- ownGrant: Capability[];
46
- depth: number;
47
- maxDepth: number;
48
- gated: Capability[];
49
- /**
50
- * Approvals in force for this delegation, with subject and scope (ADR-0014).
51
- *
52
- * One source of truth for two different questions. The **gate check here** honours every entry,
53
- * including `once` — that approval applies to *this* spawn, which is exactly what the human said yes
54
- * to. What crosses to the CHILD is `inheritApprovals`, which drops `once` and keeps the subject, so
55
- * the same list cannot silently authorise a subtree.
56
- */
57
- approved?: InheritableApproval[];
58
- ledgerPath?: string;
59
- /** Path to this extension, so a child granted `tool:delegate` can delegate in turn. */
60
- extensionPath?: string;
61
- /** Live capability catalog. When supplied, capabilities absent from it are refused as unknown. */
62
- catalog?: Catalog;
63
- /**
64
- * Absolute path per skill NAME, from the catalog's `source` field (R-32).
65
- *
66
- * Without it every granted `skill:` capability is unresolvable and the delegation is refused, which
67
- * is the correct direction: a caller that cannot say where a skill lives cannot honestly grant it.
68
- */
69
- skillPaths?: Record<string, string>;
70
- /** Let the child load `AGENTS.md` / `CLAUDE.md`. Default false — see `planSpawn`. */
71
- contextFiles?: boolean;
72
- /** Known `SKILL.md` definitions by name, for `DelegationRequest.agent` (ADR-0016). */
73
- definitions?: Map<string, SkillDefinition>;
74
- /**
75
- * Build an INTERACTIVE plan — no `--print` — for an executor that drives the child after starting it.
76
- *
77
- * `runHerdrPane` requires this: `--print` makes pi process the prompt and exit, so it never reaches the
78
- * interactive readiness `herdr agent start` waits for and the agent is never detected. Default is the
79
- * non-interactive plan, because a governed child should not sit waiting for a human by accident.
80
- */
81
- interactive?: boolean;
82
- /**
83
- * Total descendants this session may still create (`src/fanout.ts`). Split among children by the caller.
84
- *
85
- * Omitted means unbounded, which is the pre-fan-out behaviour and correct for a single blocking
86
- * delegation — the accident that used to bound cardinality to one.
87
- */
88
- fanoutBudget?: number;
89
- /** This session's ledger id, so a child's `parentId` names its real parent (F8). */
90
- spawnId?: string;
91
- /** Ledger id assigned to THIS child, distinguishing it from its siblings (F8). */
92
- childSpawnId?: string;
93
- }
94
- export interface Delegation {
95
- ok: boolean;
96
- reason?: string;
97
- args: string[];
98
- /** Per-child environment — never merged into the parent's process.env. */
99
- env: Record<string, string>;
100
- effective: Capability[];
101
- /**
102
- * The result this plan was made from. **Required** (B-I3): while it was optional the extension
103
- * guarded its ledger write with `if (ledgerPath && plan.result)`, silently dropping every refusal
104
- * that returned before `resolve()` ran. The type is what keeps a new early exit auditable.
105
- */
106
- result: ResolveResult;
107
- childDepth: number;
108
- /**
109
- * The capabilities this delegation asked for, whatever route named them.
110
- *
111
- * Carried on the plan rather than re-derived by the caller (the B-I3 lesson): with `agent`, the
112
- * request names a DEFINITION and the capabilities come from its `allowed-tools`, so a ledger that
113
- * read the tool parameters would record an empty request for every definition spawn.
114
- */
115
- requested: Capability[];
116
- /** Ledger id for this child, if the caller assigned one (F8). */
117
- childId?: string;
118
- /**
119
- * Which operator-authored instructions this spawn used (ADR-0018).
120
- *
121
- * Absent for a `tools:`-style delegation, which has no definition and therefore no instructions to
122
- * identify — and absent on an ADR-0017 authorisation refusal, which is decided before the file is read.
123
- */
124
- definitionDigest?: DefinitionDigest;
125
- }
126
- /**
127
- * Plan a governed delegation. Pure: returns argv and env, spawns nothing.
128
- *
129
- * Fails closed on depth, on any requested capability the delegator does not hold, on gated capabilities
130
- * without approval, and on a grant that cannot narrow (a universal capability slipping through).
131
- */
6
+ import type { Delegation, DelegationContext, DelegationRequest } from "./delegate-types.ts";
7
+ export type { Delegation, DelegationContext, DelegationRequest } from "./delegate-types.ts";
132
8
  export declare function planDelegation(request: DelegationRequest, ctx: DelegationContext): Delegation;
133
9
  //# sourceMappingURL=delegate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAA0C,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAA4B,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7F,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElH,OAAO,EAAsC,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAA0C,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sFAAsF;IACtF,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,UAAU,CA8P7F"}
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYlH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5F,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,UAAU,CA+Q7F"}
package/dist/delegate.js CHANGED
@@ -1,43 +1,43 @@
1
1
  /**
2
- * Governed delegation — provisioning, not merely enforcement.
3
- *
4
- * The `tool_call` interceptor can only *permit or refuse* a `pi-subagents` spawn, because that package's
5
- * `Agent` tool has no `tools` parameter. When we do the spawning ourselves the grant becomes an argument,
6
- * which is what "give them some tools but not others" actually requires.
7
- *
8
- * Two properties fall out of owning the spawn:
9
- *
10
- * 1. **No propagation race at all.** Each child receives its own explicit `env` object, so nothing is
11
- * written to the shared `process.env`. The interceptor's constraint (only parent-level facts may be
12
- * pushed, because the channel is global) does not apply here.
13
- * 2. **Depth control by capability.** `tool:delegate` is itself a capability. Grant it and the child can
14
- * sub-delegate; withhold it and the child is a leaf. No separate depth mechanism is required, though
15
- * `maxDepth` remains as a cheap backstop.
2
+ * Governed delegation planning. Owning the spawn makes the grant an argument; each child receives its own
3
+ * environment, and `tool:delegate` determines whether it is a delegator or a leaf.
16
4
  */
17
5
  import { planSpawn } from "./spawn.js";
18
6
  import { ceilingForDefinition, digestDefinition } from "./definitions.js";
19
- import { resolve, assertNarrowing } from "./resolve.js";
20
- import { AGENT_WILDCARD } from "./resolve.js";
7
+ import { assertNarrowing } from "./resolve.js";
21
8
  import { DELEGATE_CAPABILITY, agentCapability, maySpawnDefinition, normaliseCapability } from "./capabilities.js";
22
9
  // Re-exported so the split stays internal: `delegate.ts` has been the import site for these since 0.6.0 and
23
10
  // four modules plus the test suite name it. Moving the definitions without moving the door would be churn
24
11
  // charged to every caller for a line count they did not cause.
25
12
  export { DELEGATE_CAPABILITY, agentCapability, maySpawnDefinition, normaliseCapability } from "./capabilities.js";
26
13
  import { ENV_APPROVED, ENV_DEPTH, ENV_FANOUT, ENV_GATED, ENV_GRANT, ENV_LEDGER, ENV_MAX_DEPTH, ENV_PARENT_ID } from "./propagation.js";
27
- import { DELEGATE_SUBJECT, inheritApprovals } from "./approval.js";
14
+ import { inheritApprovals } from "./approval.js";
28
15
  import { suggestForUnknown, unknownCapabilities } from "./catalog.js";
29
- /**
30
- * Plan a governed delegation. Pure: returns argv and env, spawns nothing.
31
- *
32
- * Fails closed on depth, on any requested capability the delegator does not hold, on gated capabilities
33
- * without approval, and on a grant that cannot narrow (a universal capability slipping through).
34
- */
16
+ import { GovernanceRefusal, refusal } from "./refusals.js";
17
+ import { digestTask, normaliseCorrelation, } from "./correlation.js";
18
+ import { resolveDelegationApproval } from "./delegation-approval.js";
35
19
  export function planDelegation(request, ctx) {
36
20
  const childDepth = ctx.depth + 1;
21
+ const denied = (plan, code) => plan.reason ? { ...plan, refusal: refusal(code, plan.reason) } : plan;
37
22
  // G6 / B-I3: every refusal carries a result, including the four below that return before `resolve()`
38
23
  // is ever called. The extension guarded its ledger write with `if (ledgerPath && plan.result)`, so
39
24
  // those four governance decisions — disabled, too deep, no task, unknown capability — were never
40
25
  // audited at all. An empty result is the honest record: nothing was resolved, and that is the fact.
26
+ // Bounded/whitelisted correlation is a REFUSAL, not an exception escaping the planner. It is reachable
27
+ // from a model-facing tool parameter on all three delegation tools, and throwing from here produced a
28
+ // governed refusal with no code and no ledger line at all — the ledger file was never even created
29
+ // (R-112). Caught here so it becomes an ordinary recorded decision.
30
+ let correlation;
31
+ let correlationRefused;
32
+ try {
33
+ correlation = normaliseCorrelation(request.correlation);
34
+ }
35
+ catch (error) {
36
+ correlationRefused = error instanceof GovernanceRefusal
37
+ ? { code: error.code, message: error.message, ...(error.details ? { details: error.details } : {}) }
38
+ : refusal("CORRELATION_INVALID", String(error instanceof Error ? error.message : error));
39
+ }
40
+ const taskDigest = digestTask(request.task ?? "");
41
41
  const empty = {
42
42
  ok: false,
43
43
  args: [],
@@ -45,15 +45,21 @@ export function planDelegation(request, ctx) {
45
45
  effective: [],
46
46
  childDepth,
47
47
  requested: [],
48
+ taskDigest,
49
+ ...(correlation ? { correlation } : {}),
48
50
  result: { effective: [], denied: [], clipped: [], gatedBlocked: [], universal: [], subsumedBy: [] },
49
51
  };
50
- if (ctx.maxDepth <= 0)
51
- return { ...empty, reason: "delegation is disabled (maxDepth 0)" };
52
+ if (correlationRefused) {
53
+ return { ...empty, reason: correlationRefused.message, refusal: correlationRefused };
54
+ }
55
+ if (ctx.maxDepth <= 0) {
56
+ return denied({ ...empty, reason: "delegation is disabled (maxDepth 0)" }, "DEPTH_EXCEEDED");
57
+ }
52
58
  if (childDepth > ctx.maxDepth) {
53
- return { ...empty, reason: `delegation depth limit reached (${ctx.maxDepth})` };
59
+ return denied({ ...empty, reason: `delegation depth limit reached (${ctx.maxDepth})` }, "DEPTH_EXCEEDED");
54
60
  }
55
61
  if (!request.task?.trim())
56
- return { ...empty, reason: "a delegation needs a task" };
62
+ return denied({ ...empty, reason: "a delegation needs a task" }, "TASK_MISSING");
57
63
  // ADR-0016. A named definition replaces the model's tool list with an operator-authored ceiling.
58
64
  let requested;
59
65
  let systemPrompt;
@@ -68,11 +74,11 @@ export function planDelegation(request, ctx) {
68
74
  // here is simply an error.
69
75
  if (!definition) {
70
76
  const known = [...(ctx.definitions?.keys() ?? [])].sort();
71
- return {
77
+ return denied({
72
78
  ...empty,
73
79
  reason: `unknown agent "${request.agent}"` +
74
80
  (known.length > 0 ? ` — known definitions: ${known.join(", ")}` : " — no definitions were found"),
75
- };
81
+ }, "UNKNOWN_DEFINITION");
76
82
  }
77
83
  // ADR-0017: authorisation comes BEFORE anything is said about the file. Which definitions this
78
84
  // session may spawn is a governance question about the SESSION; whether the file declares its tools
@@ -85,7 +91,7 @@ export function planDelegation(request, ctx) {
85
91
  if (!maySpawnDefinition(ctx.ownGrant, definition.name)) {
86
92
  const authorising = agentCapability(definition.name);
87
93
  const held = ctx.ownGrant.filter((c) => c.startsWith("agent:")).sort();
88
- return {
94
+ return denied({
89
95
  ...empty,
90
96
  requested: [authorising],
91
97
  result: { ...empty.result, denied: [authorising] },
@@ -94,7 +100,7 @@ export function planDelegation(request, ctx) {
94
100
  (held.length > 0
95
101
  ? `It may spawn: ${held.join(", ")}.`
96
102
  : `It may spawn no definitions at all; add ${authorising} to its grant to allow this one.`),
97
- };
103
+ }, "DEFINITION_NOT_AUTHORIZED");
98
104
  }
99
105
  // ADR-0018. Recorded from here on — after authorisation, because the digest is a fact about a file
100
106
  // this caller was allowed to read, and before every remaining outcome, because a spawn refused for a
@@ -108,19 +114,19 @@ export function planDelegation(request, ctx) {
108
114
  Object.assign(empty, { definitionDigest });
109
115
  const ceiling = ceilingForDefinition(definition);
110
116
  if (ceiling.undeclared) {
111
- return {
117
+ return denied({
112
118
  ...empty,
113
119
  reason: `agent "${definition.name}" declares no \`allowed-tools\`, so it cannot be spawned — add one ` +
114
120
  `to ${definition.source}. An undeclared capability set is treated as NONE, never as everything.`,
115
- };
121
+ }, "UNDECLARED_TOOLS");
116
122
  }
117
123
  if (ceiling.patterns.length > 0) {
118
- return {
124
+ return denied({
119
125
  ...empty,
120
126
  reason: `agent "${definition.name}" restricts a tool with a pattern (${ceiling.patterns.join(", ")}), ` +
121
127
  `which pi's --tools cannot express — it matches whole tool names only. Granting the bare tool ` +
122
128
  `would widen the declaration and dropping it would silently narrow, so neither is done.`,
123
- };
129
+ }, "CEILING_PATTERNS_UNRESOLVED");
124
130
  }
125
131
  requested = ceiling.capabilities;
126
132
  systemPrompt = definition.body;
@@ -144,55 +150,38 @@ export function planDelegation(request, ctx) {
144
150
  return s === null ? null : `${c} → did you mean ${s}?`;
145
151
  })
146
152
  .filter((h) => h !== null);
147
- return {
153
+ return denied({
148
154
  ...empty,
149
155
  requested,
150
156
  reason: `unknown capabilit${unknown.length === 1 ? "y" : "ies"}: ${unknown.join(", ")} — not present in ` +
151
157
  `this session's catalog (typo, or an uninstalled package?)` +
152
158
  (hints.length > 0 ? ` — ${hints.join("; ")}` : ""),
153
- };
159
+ }, "UNKNOWN_TOOL");
154
160
  }
155
161
  }
156
- // ADR-0014's A-S6 — an approval for one subject cannot satisfy another — enforced HERE, not only in
157
- // `resolveApprovals`. **Not a no-op elsewhere**: the re-plan passes `republishable(session)` with every subject
158
- // unfiltered, so a human's "no" for one definition was overridden by a yes for another. Measured; R-83.
159
- const subject = request.agent ?? DELEGATE_SUBJECT;
160
- const approvedCapabilities = (ctx.approved ?? []).filter((a) => a.subject === subject).map((a) => a.capability);
161
- const result = resolve({
162
+ const { result, approvalBinding, bindingMismatch } = resolveDelegationApproval({
163
+ task: request.task,
164
+ agent: request.agent,
165
+ boundWorkspaceId: request.boundWorkspaceId,
166
+ boundContextId: request.boundContextId,
162
167
  requested,
163
168
  parentGrant: ctx.ownGrant,
164
169
  gated: ctx.gated,
165
- approved: approvedCapabilities,
170
+ approved: ctx.approved,
171
+ spawned,
172
+ definitionDigest,
173
+ correlation,
174
+ parentId: ctx.spawnId ?? `d${ctx.depth}`,
166
175
  });
167
- /**
168
- * ADR-0024: gating `agent:<name>` asks a human before that definition runs.
169
- *
170
- * `gatedBlocked` is a filter over `requested`, and for a definition spawn `requested` is the definition's
171
- * CEILING — so the id that authorises it was never a candidate, and `PI_GRANTS_GATED=agent:deploy` did
172
- * nothing at all on the path an operator writing it means. It half-worked when some *other* definition
173
- * passed the id down in its own `allowed-tools`, which is worse than not working (R-47, R-25's shape).
174
- *
175
- * Evaluated here rather than by adding the id to `requested`, and that is the load-bearing part: a
176
- * capability in `requested` flows to `effective`, which becomes the CHILD's grant — so the child would
177
- * hold `agent:deploy` and could spawn `deploy` itself without anyone being asked. This is the parent's
178
- * authority to run the definition *now*, not something the child receives.
179
- *
180
- * `agent:*` in the gate covers every definition, so "ask me before any definition runs" is one variable.
181
- */
182
- if (spawned) {
183
- const authorising = agentCapability(spawned.name);
184
- const gatedHere = ctx.gated.includes(authorising) || ctx.gated.includes(AGENT_WILDCARD);
185
- if (gatedHere && !approvedCapabilities.includes(authorising)) {
186
- result.gatedBlocked = [...result.gatedBlocked, authorising];
187
- }
188
- }
176
+ if (approvalBinding)
177
+ Object.assign(empty, { approvalBinding });
189
178
  if (result.denied.length > 0) {
190
- return {
179
+ return denied({
191
180
  ...empty,
192
181
  requested,
193
182
  result,
194
183
  reason: `cannot grant ${result.denied.join(", ")} — this session does not hold it (capability escalation blocked)`,
195
- };
184
+ }, "CAPABILITY_ESCALATION");
196
185
  }
197
186
  // ADR-0011: narrowing is checked BEFORE the gate, and the order is load-bearing rather than
198
187
  // stylistic. `assertNarrowing` refuses regardless of approval, so with the old order this returned
@@ -203,10 +192,14 @@ export function planDelegation(request, ctx) {
203
192
  assertNarrowing(result);
204
193
  }
205
194
  catch (error) {
206
- return { ...empty, requested, result, reason: String(error instanceof Error ? error.message : error) };
195
+ // ADR-0011's narrowing invariant is the hardest rule this package enforces, and it was the one
196
+ // refusal an external controller could not identify by code (R-109).
197
+ return denied({ ...empty, requested, result, reason: String(error instanceof Error ? error.message : error) }, "NARROWING_VIOLATED");
207
198
  }
208
199
  if (result.gatedBlocked.length > 0) {
209
- return { ...empty, requested, result, reason: `${result.gatedBlocked.join(", ")} requires explicit approval` };
200
+ const code = bindingMismatch ? "APPROVAL_SCOPE_MISMATCH" : "GATED_UNAPPROVED";
201
+ const suffix = bindingMismatch ? " (an approval exists, but its task/workspace/context scope does not match)" : "";
202
+ return denied({ ...empty, requested, result, reason: `${result.gatedBlocked.join(", ")} requires explicit approval${suffix}` }, code);
210
203
  }
211
204
  const canSubDelegate = result.effective.includes(DELEGATE_CAPABILITY);
212
205
  const plan = planSpawn({
@@ -226,13 +219,13 @@ export function planDelegation(request, ctx) {
226
219
  // not contain. `unknownCapabilities` above catches names absent from the catalog entirely; this
227
220
  // catches one that is known but whose path we could not resolve, which is a different fault.
228
221
  if (plan.unresolvedSkills.length > 0) {
229
- return {
222
+ return denied({
230
223
  ...empty,
231
224
  requested,
232
225
  result,
233
226
  reason: `cannot locate ${plan.unresolvedSkills.join(", ")} on disk — granted but unresolvable, so the ` +
234
227
  `child would silently lack it`,
235
- };
228
+ }, "DEFINITION_UNREADABLE");
236
229
  }
237
230
  // A child may only delegate further if it was granted the capability AND has the extension to do it.
238
231
  const args = [...plan.args];
@@ -271,6 +264,9 @@ export function planDelegation(request, ctx) {
271
264
  childDepth,
272
265
  requested,
273
266
  childId: ctx.childSpawnId,
267
+ taskDigest,
268
+ ...(correlation ? { correlation } : {}),
269
+ ...(approvalBinding ? { approvalBinding } : {}),
274
270
  ...(definitionDigest ? { definitionDigest } : {}),
275
271
  };
276
272
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"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"}