@zihanw/pi-forge 0.4.0-beta.1 → 0.4.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 (227) hide show
  1. package/CHANGELOG.md +45 -1
  2. package/PUBLIC_API.md +3 -26
  3. package/README.md +90 -601
  4. package/README.zh-CN.md +86 -585
  5. package/SUBAGENT_ADAPTER_CONTRACT.md +3 -197
  6. package/dist/agent-profile.d.ts +24 -1
  7. package/dist/agent-profile.d.ts.map +1 -1
  8. package/dist/agent-profile.js +146 -36
  9. package/dist/agent-profile.js.map +1 -1
  10. package/dist/catalog.d.ts +27 -0
  11. package/dist/catalog.d.ts.map +1 -0
  12. package/dist/catalog.js +59 -0
  13. package/dist/catalog.js.map +1 -0
  14. package/dist/forge-config.d.ts +106 -0
  15. package/dist/forge-config.d.ts.map +1 -1
  16. package/dist/forge-config.js +305 -18
  17. package/dist/forge-config.js.map +1 -1
  18. package/dist/index.d.ts +5 -5
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +55 -8
  21. package/dist/index.js.map +1 -1
  22. package/dist/lifecycle.d.ts +2 -1
  23. package/dist/lifecycle.d.ts.map +1 -1
  24. package/dist/lifecycle.js +7 -4
  25. package/dist/lifecycle.js.map +1 -1
  26. package/dist/loader.d.ts +17 -1
  27. package/dist/loader.d.ts.map +1 -1
  28. package/dist/loader.js +84 -25
  29. package/dist/loader.js.map +1 -1
  30. package/dist/preset-command.d.ts +1 -1
  31. package/dist/preset-command.d.ts.map +1 -1
  32. package/dist/preset-command.js +38 -10
  33. package/dist/preset-command.js.map +1 -1
  34. package/dist/profile-command.d.ts.map +1 -1
  35. package/dist/profile-command.js +46 -21
  36. package/dist/profile-command.js.map +1 -1
  37. package/dist/profile-service.d.ts +6 -3
  38. package/dist/profile-service.d.ts.map +1 -1
  39. package/dist/profile-service.js +55 -13
  40. package/dist/profile-service.js.map +1 -1
  41. package/dist/resource-identity.d.ts +33 -0
  42. package/dist/resource-identity.d.ts.map +1 -0
  43. package/dist/resource-identity.js +56 -0
  44. package/dist/resource-identity.js.map +1 -0
  45. package/dist/runtime/profile-runtime.d.ts.map +1 -1
  46. package/dist/runtime/profile-runtime.js +7 -2
  47. package/dist/runtime/profile-runtime.js.map +1 -1
  48. package/dist/runtime/prompt-stack-runtime.d.ts +1 -1
  49. package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -1
  50. package/dist/runtime/prompt-stack-runtime.js +22 -12
  51. package/dist/runtime/prompt-stack-runtime.js.map +1 -1
  52. package/dist/runtime/subagent-runtime.d.ts +23 -8
  53. package/dist/runtime/subagent-runtime.d.ts.map +1 -1
  54. package/dist/runtime/subagent-runtime.js +296 -67
  55. package/dist/runtime/subagent-runtime.js.map +1 -1
  56. package/dist/storage.d.ts +11 -0
  57. package/dist/storage.d.ts.map +1 -1
  58. package/dist/storage.js +51 -2
  59. package/dist/storage.js.map +1 -1
  60. package/dist/subagent/canonical.d.ts +19 -7
  61. package/dist/subagent/canonical.d.ts.map +1 -1
  62. package/dist/subagent/canonical.js +19 -47
  63. package/dist/subagent/canonical.js.map +1 -1
  64. package/dist/subagent/contract.d.ts +1 -2
  65. package/dist/subagent/contract.d.ts.map +1 -1
  66. package/dist/subagent/contract.js +1 -2
  67. package/dist/subagent/contract.js.map +1 -1
  68. package/dist/subagent/index.d.ts +4 -3
  69. package/dist/subagent/index.d.ts.map +1 -1
  70. package/dist/subagent/index.js +4 -3
  71. package/dist/subagent/index.js.map +1 -1
  72. package/dist/subagent/plan.d.ts +5 -1
  73. package/dist/subagent/plan.d.ts.map +1 -1
  74. package/dist/subagent/plan.js +29 -32
  75. package/dist/subagent/plan.js.map +1 -1
  76. package/dist/subagent/request.d.ts.map +1 -1
  77. package/dist/subagent/request.js +36 -4
  78. package/dist/subagent/request.js.map +1 -1
  79. package/dist/subagent/types.d.ts +66 -178
  80. package/dist/subagent/types.d.ts.map +1 -1
  81. package/dist/subagent/types.js +1 -1
  82. package/dist/subagent/types.js.map +1 -1
  83. package/dist/subagent/validation.d.ts +14 -14
  84. package/dist/subagent/validation.d.ts.map +1 -1
  85. package/dist/subagent/validation.js +52 -238
  86. package/dist/subagent/validation.js.map +1 -1
  87. package/dist/subagent-command.d.ts +2 -1
  88. package/dist/subagent-command.d.ts.map +1 -1
  89. package/dist/subagent-command.js +115 -19
  90. package/dist/subagent-command.js.map +1 -1
  91. package/dist/subagent-host.d.ts.map +1 -1
  92. package/dist/subagent-host.js +43 -16
  93. package/dist/subagent-host.js.map +1 -1
  94. package/dist/subagent-profile-tool.d.ts +25 -2
  95. package/dist/subagent-profile-tool.d.ts.map +1 -1
  96. package/dist/subagent-profile-tool.js +41 -9
  97. package/dist/subagent-profile-tool.js.map +1 -1
  98. package/dist/subagent-tool.d.ts +31 -4
  99. package/dist/subagent-tool.d.ts.map +1 -1
  100. package/dist/subagent-tool.js +311 -137
  101. package/dist/subagent-tool.js.map +1 -1
  102. package/dist/types.d.ts +3 -0
  103. package/dist/types.d.ts.map +1 -1
  104. package/dist/types.js.map +1 -1
  105. package/dist/web-editor/client-script.generated.d.ts +1 -1
  106. package/dist/web-editor/client-script.generated.d.ts.map +1 -1
  107. package/dist/web-editor/client-script.generated.js +1 -1
  108. package/dist/web-editor/client-script.generated.js.map +1 -1
  109. package/dist/web-editor/client-styles.d.ts +2 -0
  110. package/dist/web-editor/client-styles.d.ts.map +1 -0
  111. package/dist/web-editor/client-styles.generated.d.ts +2 -0
  112. package/dist/web-editor/client-styles.generated.d.ts.map +1 -0
  113. package/dist/web-editor/client-styles.generated.js +3 -0
  114. package/dist/web-editor/client-styles.generated.js.map +1 -0
  115. package/dist/web-editor/client-styles.js +2 -0
  116. package/dist/web-editor/client-styles.js.map +1 -0
  117. package/dist/web-editor/page.d.ts +2 -0
  118. package/dist/web-editor/page.d.ts.map +1 -1
  119. package/dist/web-editor/page.js +11 -73
  120. package/dist/web-editor/page.js.map +1 -1
  121. package/dist/web-editor/server.d.ts.map +1 -1
  122. package/dist/web-editor/server.js +176 -1
  123. package/dist/web-editor/server.js.map +1 -1
  124. package/dist/web-editor/styles.d.ts.map +1 -1
  125. package/dist/web-editor/styles.js +60 -3
  126. package/dist/web-editor/styles.js.map +1 -1
  127. package/dist/web-editor/types.d.ts +87 -0
  128. package/dist/web-editor/types.d.ts.map +1 -1
  129. package/dist/web-host.d.ts +13 -2
  130. package/dist/web-host.d.ts.map +1 -1
  131. package/dist/web-host.js +371 -27
  132. package/dist/web-host.js.map +1 -1
  133. package/docs/README.md +41 -0
  134. package/docs/concepts/agent-profiles.md +60 -0
  135. package/docs/concepts/prompt-stacks.md +95 -0
  136. package/docs/design/README.md +17 -0
  137. package/docs/design/roadmap-0.4-archive.md +216 -0
  138. package/docs/design/subagents/design-review.md +220 -0
  139. package/docs/design/subagents/interface-design.md +274 -0
  140. package/docs/design/subagents/sdk-spike-findings.md +117 -0
  141. package/docs/development/complexity-review.md +86 -0
  142. package/docs/development/release.md +31 -0
  143. package/docs/development/roadmap.md +36 -0
  144. package/docs/development/scoped-global-profiles-stacks.md +325 -0
  145. package/docs/development/setup.md +75 -0
  146. package/docs/getting-started.md +95 -0
  147. package/docs/guides/custom-macros-and-slots.md +68 -0
  148. package/docs/guides/debugging.md +39 -0
  149. package/docs/guides/delegation.md +107 -0
  150. package/docs/guides/sillytavern-import.md +47 -0
  151. package/docs/guides/use-cases.md +65 -0
  152. package/docs/guides/web-editor.md +75 -0
  153. package/docs/reference/commands.md +60 -0
  154. package/docs/reference/configuration.md +66 -0
  155. package/docs/reference/features.md +280 -0
  156. package/docs/reference/macros-and-slots.md +82 -0
  157. package/docs/reference/public-api.md +28 -0
  158. package/docs/reference/stack-schema.md +167 -0
  159. package/docs/reference/subagent-adapter.md +204 -0
  160. package/docs/zh-CN/README.md +37 -0
  161. package/docs/zh-CN/concepts/agent-profiles.md +46 -0
  162. package/docs/zh-CN/concepts/prompt-stacks.md +42 -0
  163. package/docs/zh-CN/getting-started.md +81 -0
  164. package/docs/zh-CN/guides/delegation.md +66 -0
  165. package/docs/zh-CN/guides/web-editor.md +45 -0
  166. package/docs/zh-CN/reference/commands.md +60 -0
  167. package/package.json +29 -15
  168. package/dist/subagent/backend-registry.d.ts +0 -75
  169. package/dist/subagent/backend-registry.d.ts.map +0 -1
  170. package/dist/subagent/backend-registry.js +0 -463
  171. package/dist/subagent/backend-registry.js.map +0 -1
  172. package/dist/subagent/diagnostics.d.ts +0 -3
  173. package/dist/subagent/diagnostics.d.ts.map +0 -1
  174. package/dist/subagent/diagnostics.js +0 -5
  175. package/dist/subagent/diagnostics.js.map +0 -1
  176. package/dist/subagent/pi-model-runtime.d.ts +0 -8
  177. package/dist/subagent/pi-model-runtime.d.ts.map +0 -1
  178. package/dist/subagent/pi-model-runtime.js +0 -22
  179. package/dist/subagent/pi-model-runtime.js.map +0 -1
  180. package/dist/subagent/pi-sdk-backend.d.ts +0 -23
  181. package/dist/subagent/pi-sdk-backend.d.ts.map +0 -1
  182. package/dist/subagent/pi-sdk-backend.js +0 -383
  183. package/dist/subagent/pi-sdk-backend.js.map +0 -1
  184. package/dist/subagent/pi-subprocess-backend.d.ts +0 -72
  185. package/dist/subagent/pi-subprocess-backend.d.ts.map +0 -1
  186. package/dist/subagent/pi-subprocess-backend.js +0 -756
  187. package/dist/subagent/pi-subprocess-backend.js.map +0 -1
  188. package/dist/subagent/subprocess-bridge.d.ts +0 -21
  189. package/dist/subagent/subprocess-bridge.d.ts.map +0 -1
  190. package/dist/subagent/subprocess-bridge.js +0 -87
  191. package/dist/subagent/subprocess-bridge.js.map +0 -1
  192. package/dist/subagent/subprocess-report.d.ts +0 -4
  193. package/dist/subagent/subprocess-report.d.ts.map +0 -1
  194. package/dist/subagent/subprocess-report.js +0 -55
  195. package/dist/subagent/subprocess-report.js.map +0 -1
  196. package/dist/subagent-contract.d.ts +0 -8
  197. package/dist/subagent-contract.d.ts.map +0 -1
  198. package/dist/subagent-contract.js +0 -8
  199. package/dist/subagent-contract.js.map +0 -1
  200. package/dist/web-editor/client/api.d.ts +0 -9
  201. package/dist/web-editor/client/api.d.ts.map +0 -1
  202. package/dist/web-editor/client/api.js +0 -26
  203. package/dist/web-editor/client/api.js.map +0 -1
  204. package/dist/web-editor/client/dom.d.ts +0 -13
  205. package/dist/web-editor/client/dom.d.ts.map +0 -1
  206. package/dist/web-editor/client/dom.js +0 -30
  207. package/dist/web-editor/client/dom.js.map +0 -1
  208. package/dist/web-editor/client/inspector.d.ts +0 -22
  209. package/dist/web-editor/client/inspector.d.ts.map +0 -1
  210. package/dist/web-editor/client/inspector.js +0 -226
  211. package/dist/web-editor/client/inspector.js.map +0 -1
  212. package/dist/web-editor/client/main.d.ts +0 -2
  213. package/dist/web-editor/client/main.d.ts.map +0 -1
  214. package/dist/web-editor/client/main.js +0 -1468
  215. package/dist/web-editor/client/main.js.map +0 -1
  216. package/dist/web-editor/client/policy-editor.d.ts +0 -16
  217. package/dist/web-editor/client/policy-editor.d.ts.map +0 -1
  218. package/dist/web-editor/client/policy-editor.js +0 -330
  219. package/dist/web-editor/client/policy-editor.js.map +0 -1
  220. package/dist/web-editor/client/regex-editor.d.ts +0 -19
  221. package/dist/web-editor/client/regex-editor.d.ts.map +0 -1
  222. package/dist/web-editor/client/regex-editor.js +0 -281
  223. package/dist/web-editor/client/regex-editor.js.map +0 -1
  224. package/dist/web-editor/client/types.d.ts +0 -60
  225. package/dist/web-editor/client/types.d.ts.map +0 -1
  226. package/dist/web-editor/client/types.js +0 -2
  227. package/dist/web-editor/client/types.js.map +0 -1
@@ -1,199 +1,5 @@
1
- # Subagent Adapter Contract
1
+ # Subagent adapter contract
2
2
 
3
- Status: exported pure contract, host-preparation utilities, optional backend registry, retained `pi-sdk-isolated` compatibility adapter, and a default-approval `pi-subprocess-readonly` foreground path for the 0.4 beta. This is a narrow one-shot delegation boundary, not a background orchestration runner or an OS sandbox.
3
+ The authoritative experimental contract moved to [`docs/reference/subagent-adapter.md`](docs/reference/subagent-adapter.md).
4
4
 
5
- ## Public Surface
6
-
7
- New integrations should import this experimental 0.4 surface from `@zihanw/pi-forge/subagent`. The package root retains the same exports through the 0.4 prereleases for compatibility. Stability classifications and compatibility-path policy are recorded in [`PUBLIC_API.md`](PUBLIC_API.md).
8
-
9
- The package root exports:
10
-
11
- - `AgentRequest`, `AgentProfileSnapshot`, `BackendPreflightResult`, `AgentExecutionPlan`, and `AgentResponse`.
12
- - Granular access, limit, tool, media, context, artifact, trace, usage, and diagnostic types.
13
- - Host resolution through `resolveSubagentHostProfile()`.
14
- - Tool negotiation through `negotiateSubagentTools()`.
15
- - Deterministic context preparation through `budgetSubagentContext()`, `renderSubagentSelectedContext()`, and `prepareSubagentInitialMessages()`.
16
- - Protected Pi-message helpers used by the SDK spike.
17
- - Plan construction through `createAgentExecutionPlan()`.
18
- - Pure request, snapshot, preflight, plan, response, artifact, and trace validators.
19
- - Canonical `sha256:v1` profile, stack, and execution fingerprints.
20
- - Optional backend registration, validated dispatch, cancellation/timeout arbitration, response normalization, and authorization-scoped trace routing through `SubagentBackendRegistry`.
21
- - Experimental `PiSdkIsolatedBackend` compatibility adapter and the default `PiSubprocessBackend`, including their descriptors/IDs, report types, and host preparation through `prepareSubagentHostPlan()`.
22
-
23
- The existing `agentProfileFingerprint()` remains unchanged. It is still the legacy JSON provenance value used for branch drift. New portable fingerprints use separately named functions and semantics.
24
-
25
- ## Required Flow
26
-
27
- ```text
28
- AgentRequest
29
- -> resolveSubagentHostProfile
30
- -> SubagentBackendRegistry discovery/preflight
31
- -> registry-mediated exact or backend-assisted preparation
32
- -> createAgentExecutionPlan
33
- -> registry-validated backend execution
34
- -> validateAgentResponse
35
- ```
36
-
37
- No stage may substitute parent-runtime model objects, credentials, source file paths, or raw session history for the portable artifacts.
38
-
39
- ### 1. Request validation
40
-
41
- `validateAgentRequest()` checks:
42
-
43
- - Schema, IDs, task text/media references, and media digests.
44
- - Explicit selected-context byte budgets and provenance.
45
- - Delegation depth.
46
- - Access-level/workspace/working-directory/network/process combinations.
47
- - Required versus best-effort hard limits.
48
- - Result-projection bounds and remote-egress consent.
49
-
50
- Media references are opaque host resources with content digests. The contract does not place local absolute paths or media bytes in the portable request.
51
-
52
- ### 2. Host resolution
53
-
54
- `resolveSubagentHostProfile()` performs only backend-independent work:
55
-
56
- - Validates the loaded profile and exact prompt-stack reference.
57
- - Accepts null, default/replace, append, and prepend stack modes.
58
- - Scans prompt-stack items for custom macro and slot dependencies.
59
- - Requires those registrations to be loaded before final resolution.
60
- - Produces a path-free immutable profile snapshot and portable fingerprints.
61
-
62
- It deliberately does not inspect a model registry, authentication, backend tools, mounts, or limits. Parent `/profile use` resolution remains separate.
63
-
64
- Unknown macro commands and custom slots are treated as missing subagent dependencies. Static stack variables and built-in macros/slots are excluded. Custom registrations without a `source` still resolve but produce a warning because their dependency identity is anonymous.
65
-
66
- ### 3. Backend preflight
67
-
68
- An accepted `BackendPreflightResult` must identify the exact model/thinking level, dynamic tool catalog, granular capabilities, effective access receipt, and accepted limit receipt.
69
-
70
- `validateBackendPreflight()` enforces:
71
-
72
- - Exact profile model and thinking-level agreement.
73
- - Explicit consent for remote provider transport.
74
- - Requested media MIME support.
75
- - No missing, extra, upgraded, or mode-mismatched mounts.
76
- - Working-directory containment through backend mount IDs.
77
- - Read/write, symlink, process, and denied-network enforcement claims.
78
- - Every required limit uses `backend-hard` enforcement.
79
- - Best-effort limits are reported honestly, such as Pi SDK host-abort timeouts.
80
- - Rejected preflight results contain at least one error diagnostic.
81
-
82
- Prompt tool filtering is not accepted as an access receipt.
83
-
84
- ### 4. Tool negotiation
85
-
86
- Each backend tool declares a stable backend ID, policy-facing name, and effects:
87
-
88
- - `filesystem-read`
89
- - `filesystem-write`
90
- - `process`
91
- - `network`
92
-
93
- `negotiateSubagentTools()` applies prompt-stack policy to names, then removes tools whose declared effects exceed request access. Effect-free tools may remain under filesystem access `none`; network and process are independently controlled. Unmatched allow patterns remain warnings.
94
-
95
- Adapters must classify tool effects conservatively. A tool with undeclared effects invalidates the backend's enforcement claim even if name filtering succeeds.
96
-
97
- ### 5. Context and exact preparation
98
-
99
- `budgetSubagentContext()` measures the exact UTF-8 bytes of the rendered selected-context envelope. Required items are retained first. Optional items are considered newest-to-oldest without partial item truncation, and returned in original order. Required overflow fails preparation.
100
-
101
- `prepareSubagentInitialMessages()` creates:
102
-
103
- 1. One quoted selected-context message when the budget retains context.
104
- 2. Host-prepared prompt-stack messages.
105
- 3. The complete protected task/media message as the final user message.
106
-
107
- Prompt-stack messages cannot claim reserved selected-context or delegated-task markers.
108
-
109
- Backends such as Pi SDK may expose exact base-prompt runtime inputs only in a pre-provider hook. They may call the host preparer there, but provider transport must remain blocked until `createAgentExecutionPlan()` succeeds. A `partial` prompt-runtime preflight cannot produce an execution plan.
110
-
111
- ### 6. Plan and fingerprints
112
-
113
- `createAgentExecutionPlan()` revalidates the request, snapshot, preflight, deterministic context receipt, tool negotiation, runtime fidelity, and protected final task. It creates the run ID correlation and execution fingerprint before provider transport.
114
-
115
- The execution fingerprint covers all serialized plan fields except itself, including compiled system/messages, profile/stack/dependency provenance, the complete preflight receipt and adapter version, exact model/thinking, effective backend tool IDs, access and limit receipts, prompt-runtime fingerprint, context receipt, and result-projection bound.
116
-
117
- Canonical serialization sorts object keys, omits undefined object fields, rejects cycles/non-finite numbers/non-JSON values, preserves array order, and normalizes negative zero.
118
-
119
- ### 7. Response validation
120
-
121
- `validateAgentResponse()` enforces the terminal status matrix:
122
-
123
- | Status | Required terminal field | Output rule |
124
- |---|---|---|
125
- | `completed` | none | absent or `partial: false` |
126
- | `failed` | structured `error` | absent or `partial: true` |
127
- | `cancelled` | `reason` | absent or `partial: true` |
128
- | `timed-out` | `reason`, `enforcedTimeoutMs` | absent or `partial: true` |
129
- | `limit-reached` | `reachedLimit` | absent or `partial: true` |
130
-
131
- It also validates request/run/backend correlation, model and fingerprints, effective backend tool IDs, backend-produced enforcement receipts, duration, token/cost units, artifact namespaces, relative paths, cleanup ownership, and authorized trace handles. Cost requires an ISO 4217 currency code.
132
-
133
- ### 8. Optional backend registry
134
-
135
- `SubagentBackendRegistry` starts empty and never installs a default backend. It:
136
-
137
- - Validates backend descriptors and rejects duplicate identities.
138
- - Binds accepted preflight IDs to the exact backend, request, and profile fingerprint used during discovery.
139
- - Routes exact-preflight preparation directly to the host preparer and requires backend-assisted adapters to invoke the same host boundary.
140
- - Binds the exact runtime fingerprint, compiled system/messages, effective tools, and context receipt returned by host preparation; recomputing an execution fingerprint cannot substitute a different plan.
141
- - Routes dry-plan discard through the owning backend before forgetting the preflight binding.
142
- - Rejects malformed, tampered, foreign, or unbound execution plans before transport.
143
- - Arbitrates backend completion, explicit user cancellation, external abort signals, and declared host-abort timeouts through one terminal result.
144
- - Discards prepared backend state without invoking execution when cancellation wins before backend dispatch.
145
- - Normalizes thrown provider failures and malformed backend responses into contract-valid failed responses.
146
- - Replaces backend-reported duration with host-observed duration.
147
- - Keeps opaque backend trace IDs behind host-generated handles and enforces authorization scope, backend routing, expiry, and explicit forgetting during inspection.
148
- - Refuses backend unregistration while an execution remains active or is draining after cancellation.
149
-
150
- The registry validates receipts but does not manufacture filesystem, process, network, token, turn, or output isolation. Those remain adapter responsibilities.
151
-
152
- Access receipts may explicitly declare `executionBoundary: "shared-user"`. This boundary means the subprocess retains the invoking user's operating-system permissions and its effective access is constrained only by the tools exposed to the model. A shared-user receipt cannot claim mount, symlink, process, or network isolation. Omitting the field preserves the legacy `isolated` interpretation.
153
-
154
- ### 9. Experimental foreground subprocess and approval path
155
-
156
- `PiSubprocessBackend` is the extension's deliberately narrow default adapter:
157
-
158
- - It resolves the exact profile model through Pi's existing `ModelRegistry`, reuses the parent Pi 0.80.10 `ModelRuntime` so preparation sees the same authentication, and prepares the exact prompt inside an in-process Pi session held behind a provider gate.
159
- - After approval, it disposes the preparation session and launches a fresh foreground Pi subprocess with the approved model, thinking level, system prompt, messages, and tool IDs. Pi's ordinary text stdout is drained separately from a dedicated newline-delimited report channel.
160
- - Its bridge preserves the exact prepared messages and rejects tools outside the approved allowlist. Candidate tools are limited to `read`, `grep`, `find`, and `ls`, then intersected with prompt-stack policy.
161
- - It loads no write/edit/shell tools, skills, prompt templates, context files, themes, or third-party Pi extensions and writes no child session file.
162
- - It accepts text-only, one-shot, sequential `read-only` requests rooted at the project working directory, with no process tool and optional host-abort timeout. It advertises no artifact retention or contract trace inspection.
163
- - It records a bounded foreground execution report containing sanitized transcript events, tool calls/results, usage, stderr, status, and execution identity. Inline images remain available to the child model but cross the report boundary only as MIME/encoded-size metadata. Base64-like text is redacted, individual strings are capped, and retained messages form a 512 KiB rolling tail so large tool histories cannot make the parent TUI/session retain unbounded data. Temporary bridge inputs are mode `0600` and removed during cleanup.
164
- - Retained textual tool results are ordinary parent-session tool details. `/tree` can move the active branch away from them but does not erase abandoned entries from Pi's on-disk session JSONL; callers handling sensitive files must treat session-data deletion as a separate operation.
165
-
166
- This backend declares `executionBoundary: "shared-user"`. It does not create allowed-root mount containment, symlink-safe path containment, process isolation, or agent-network isolation. The subprocess retains the invoking user's OS permissions; `read-only` describes the tools exposed to the model, not a security sandbox. Network is therefore honestly recorded as allowed even though no dedicated network or shell tool is exposed.
167
-
168
- The model-callable `forge_subagent_profiles` tool reads the already-loaded host profile catalog without preparing a prompt or contacting a provider. It exposes IDs, names, descriptions, declared model/thinking/stack metadata, ready/unavailable resolution diagnostics, and whether parent policy currently exposes the invocation tool. A restrictive parent stack must allow both `forge_subagent_profiles` and `forge_subagent` for discovery followed by delegation.
169
-
170
- The model-callable `forge_subagent` tool and `/forge-agent run` use the same registry path. Both prepare an exact immutable plan while provider transport remains closed. `/forge-agent run` always shows a compact approval summary, allows inspection of the complete prompt, and requires interactive approval bound to the execution fingerprint. The tool does the same by default, but a trusted project may set `subagents.allowAgentInvocationWithoutApproval: true` in `.pi/forge/config.json`; this permits non-UI model invocation and records `trusted-project-config` in the result receipt without weakening preflight or plan binding. Missing, malformed, and untrusted-project settings fail closed. The tool returns bounded content to the parent model and expandable execution details to the human. `/forge-agent plan` still prepares and discards without provider transport; `/forge-agent backends` shows capabilities. The older access-none `PiSdkIsolatedBackend` remains exported and tested for compatibility but is not the extension default.
171
-
172
- ## Adapter-Enforced Responsibilities
173
-
174
- The exported validators cannot create isolation. Every adapter remains responsible for:
175
-
176
- - Credential and model availability in its own runtime.
177
- - Backend-side mount materialization and path canonicalization immediately before access.
178
- - Symlink-race-safe containment.
179
- - Process and agent-network isolation.
180
- - Accurate tool effects and stable tool mappings.
181
- - Required hard timeout, turn, token, and output limits.
182
- - Cancellation settlement and cleanup.
183
- - Media transport and remote-egress behavior.
184
- - Artifact authorization, retention, and cleanup.
185
- - Trace storage, authorization, redaction, pagination, and expiry.
186
- - Returning actual enforcement receipts rather than echoing request fields.
187
-
188
- An adapter must reject preflight when it cannot enforce a required field. The retained Pi SDK adapter can execute only access `none`; the subprocess adapter accepts shared-user read-only access and network allow. Both use best-effort host abort rather than a backend-hard timeout. Provider transport is always a separate, explicitly approved egress path.
189
-
190
- ## Deliberately Not Included
191
-
192
- - Filesystem writes, process/shell tools, media input, background runs, or general backend selection/configuration in the shipped path.
193
- - OS-level filesystem, process, or network sandboxing for the shared-user subprocess.
194
- - Automatic parent-history/context selection; the delegated task is explicit and starts a clean conversation.
195
- - Session resume, retries, queues, chains, or pipelines.
196
- - Artifact/trace storage implementations.
197
- - Automatic provider fallback.
198
-
199
- Those belong to later iterations and cannot be inferred from these pure types alone.
5
+ This compatibility pointer remains at the published root path so existing links continue to work.
@@ -1,5 +1,6 @@
1
1
  import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
2
2
  import { type Model } from "@earendil-works/pi-ai";
3
+ import { type ResourceScope } from "./resource-identity.ts";
3
4
  import type { LoadedPromptStack } from "./types.ts";
4
5
  export declare const AGENT_PROFILE_TYPE: "pi-forge.agent-profile";
5
6
  export declare const AGENT_PROFILE_THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
@@ -27,6 +28,11 @@ export interface AgentProfileDiagnostic {
27
28
  export interface LoadedAgentProfile {
28
29
  profile: AgentProfile;
29
30
  filePath: string;
31
+ scope: "global" | "project";
32
+ key: {
33
+ scope: "global" | "project";
34
+ id: string;
35
+ };
30
36
  diagnostics: AgentProfileDiagnostic[];
31
37
  }
32
38
  export interface AgentProfileResolutionResources {
@@ -49,6 +55,8 @@ export interface AgentProfileRuntimeSnapshot {
49
55
  }
50
56
  export interface AgentProfileProvenance {
51
57
  profileId: string;
58
+ /** Scope of the applied profile. Absent on legacy records, which are project-scoped. */
59
+ scope?: ResourceScope;
52
60
  sourcePath: string;
53
61
  sourceFingerprint: string;
54
62
  appliedAt: string;
@@ -57,10 +65,25 @@ export interface AgentProfileProvenance {
57
65
  export { agentProfilePath, agentProfilesDir } from "./storage.ts";
58
66
  export declare function isValidAgentProfileId(id: string): boolean;
59
67
  export declare function loadAgentProfiles(cwd: string): LoadedAgentProfile[];
68
+ /**
69
+ * Load both global and project profiles. Global definitions are user-owned
70
+ * and always load; project definitions load from the trusted project dirs.
71
+ * The caller decides whether project trust applies before calling.
72
+ */
73
+ export declare function loadAgentProfilesScoped(cwd: string, globalDir?: string): LoadedAgentProfile[];
74
+ /** Load only the user-owned global profiles, used by untrusted projects. */
75
+ export declare function loadGlobalAgentProfiles(globalDir?: string): LoadedAgentProfile[];
60
76
  export declare function chooseAutoActivateAgentProfile(profiles: readonly LoadedAgentProfile[]): LoadedAgentProfile | undefined;
61
77
  export declare function hasAutoActivateAgentProfile(profiles: readonly LoadedAgentProfile[]): boolean;
62
- export declare function loadAgentProfileFile(filePath: string): LoadedAgentProfile;
78
+ export declare function loadAgentProfileFile(filePath: string, scope?: "global" | "project"): LoadedAgentProfile;
63
79
  export declare function validateAgentProfile(profile: AgentProfile): AgentProfileDiagnostic[];
80
+ /**
81
+ * Validate the profile's stored `promptStack` selector against the profile's
82
+ * own scope. Bare references stay scope-relative; only global profiles are
83
+ * prohibited from referencing project stacks explicitly. Used by write paths
84
+ * so edited JSON cannot persist a scope-unsafe dependency.
85
+ */
86
+ export declare function validateAgentProfilePromptStackScope(profile: AgentProfile, scope: ResourceScope): AgentProfileDiagnostic[];
64
87
  export declare function resolveAgentProfile(loaded: LoadedAgentProfile, resources: AgentProfileResolutionResources): ResolvedAgentProfile;
65
88
  export declare function isUsableAgentProfile(loaded: LoadedAgentProfile): boolean;
66
89
  export declare function isResolvedAgentProfileUsable(resolved: ResolvedAgentProfile): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-profile.d.ts","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-profile.d.ts","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,45 @@ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { basename, join } from "node:path";
3
3
  import { clampThinkingLevel } from "@earendil-works/pi-ai";
4
4
  import { resourcePatternMatches } from "./policy.js";
5
- import { agentProfilesDir } from "./storage.js";
5
+ import { formatResourceKey, isResourceScope, isValidResourceId, parseResourceSelector } from "./resource-identity.js";
6
+ import { agentProfilesDir, globalAgentProfilesDir } from "./storage.js";
6
7
  export const AGENT_PROFILE_TYPE = "pi-forge.agent-profile";
7
8
  export const AGENT_PROFILE_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
8
9
  const VALID_THINKING_LEVELS = new Set(AGENT_PROFILE_THINKING_LEVELS);
9
- const PROFILE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
10
10
  const PROFILE_FIELDS = new Set(["schemaVersion", "type", "id", "name", "description", "model", "thinkingLevel", "promptStack", "autoActivate"]);
11
11
  const MODEL_FIELDS = new Set(["provider", "id"]);
12
12
  export { agentProfilePath, agentProfilesDir } from "./storage.js";
13
13
  export function isValidAgentProfileId(id) {
14
- return PROFILE_ID_PATTERN.test(id);
14
+ return isValidResourceId(id);
15
15
  }
16
16
  export function loadAgentProfiles(cwd) {
17
- const dir = agentProfilesDir(cwd);
17
+ const profiles = loadAgentProfilesFromDir(agentProfilesDir(cwd), "project");
18
+ annotateDuplicateProfileIds(profiles);
19
+ annotateAutoActivateConflicts(profiles);
20
+ return profiles;
21
+ }
22
+ /**
23
+ * Load both global and project profiles. Global definitions are user-owned
24
+ * and always load; project definitions load from the trusted project dirs.
25
+ * The caller decides whether project trust applies before calling.
26
+ */
27
+ export function loadAgentProfilesScoped(cwd, globalDir = globalAgentProfilesDir()) {
28
+ const profiles = [
29
+ ...loadAgentProfilesFromDir(globalDir, "global"),
30
+ ...loadAgentProfilesFromDir(agentProfilesDir(cwd), "project"),
31
+ ];
32
+ annotateDuplicateProfileIds(profiles);
33
+ annotateAutoActivateConflicts(profiles);
34
+ return profiles;
35
+ }
36
+ /** Load only the user-owned global profiles, used by untrusted projects. */
37
+ export function loadGlobalAgentProfiles(globalDir = globalAgentProfilesDir()) {
38
+ const profiles = loadAgentProfilesFromDir(globalDir, "global");
39
+ annotateDuplicateProfileIds(profiles);
40
+ annotateAutoActivateConflicts(profiles);
41
+ return profiles;
42
+ }
43
+ function loadAgentProfilesFromDir(dir, scope) {
18
44
  if (!existsSync(dir))
19
45
  return [];
20
46
  let entries;
@@ -24,19 +50,26 @@ export function loadAgentProfiles(cwd) {
24
50
  catch {
25
51
  return [];
26
52
  }
27
- const profiles = entries.map((name) => loadAgentProfileFile(join(dir, name)));
28
- annotateDuplicateProfileIds(profiles);
29
- annotateAutoActivateConflicts(profiles);
30
- return profiles;
53
+ return entries.map((name) => loadAgentProfileFile(join(dir, name), scope));
31
54
  }
32
55
  export function chooseAutoActivateAgentProfile(profiles) {
33
- const candidates = profiles.filter((loaded) => loaded.profile.autoActivate === true);
34
- return candidates.length === 1 ? candidates[0] : undefined;
56
+ // Project auto-activation has explicit precedence. An invalid or ambiguous
57
+ // project candidate fails closed instead of falling back to a global one.
58
+ const projectCandidates = profiles.filter((loaded) => loaded.scope === "project" && loaded.profile.autoActivate === true);
59
+ if (projectCandidates.length > 0) {
60
+ return projectCandidates.length === 1 && !hasAgentProfileErrors(projectCandidates[0].diagnostics)
61
+ ? projectCandidates[0]
62
+ : undefined;
63
+ }
64
+ const globalCandidates = profiles.filter((loaded) => loaded.scope === "global" && loaded.profile.autoActivate === true);
65
+ return globalCandidates.length === 1 && !hasAgentProfileErrors(globalCandidates[0].diagnostics)
66
+ ? globalCandidates[0]
67
+ : undefined;
35
68
  }
36
69
  export function hasAutoActivateAgentProfile(profiles) {
37
70
  return profiles.some((loaded) => loaded.profile.autoActivate === true);
38
71
  }
39
- export function loadAgentProfileFile(filePath) {
72
+ export function loadAgentProfileFile(filePath, scope = "project") {
40
73
  const diagnostics = [];
41
74
  let raw;
42
75
  try {
@@ -45,6 +78,8 @@ export function loadAgentProfileFile(filePath) {
45
78
  catch (error) {
46
79
  return {
47
80
  filePath,
81
+ scope,
82
+ key: { scope, id: basename(filePath, ".json") },
48
83
  profile: fallbackProfile(filePath),
49
84
  diagnostics: [{
50
85
  level: "error",
@@ -54,7 +89,7 @@ export function loadAgentProfileFile(filePath) {
54
89
  }
55
90
  const profile = normalizeAgentProfile(raw, filePath, diagnostics);
56
91
  diagnostics.push(...validateAgentProfile(profile));
57
- return { filePath, profile, diagnostics };
92
+ return { filePath, scope, key: { scope, id: profile.id }, profile, diagnostics };
58
93
  }
59
94
  export function validateAgentProfile(profile) {
60
95
  const diagnostics = [];
@@ -81,6 +116,28 @@ export function validateAgentProfile(profile) {
81
116
  }
82
117
  return diagnostics;
83
118
  }
119
+ /**
120
+ * Validate the profile's stored `promptStack` selector against the profile's
121
+ * own scope. Bare references stay scope-relative; only global profiles are
122
+ * prohibited from referencing project stacks explicitly. Used by write paths
123
+ * so edited JSON cannot persist a scope-unsafe dependency.
124
+ */
125
+ export function validateAgentProfilePromptStackScope(profile, scope) {
126
+ if (profile.promptStack === null)
127
+ return [];
128
+ const parsed = parseResourceSelector(profile.promptStack);
129
+ if (!parsed.ok) {
130
+ return [{ level: "error", field: "promptStack", message: parsed.error }];
131
+ }
132
+ if (scope === "global" && parsed.selector.scope === "project") {
133
+ return [{
134
+ level: "error",
135
+ field: "promptStack",
136
+ message: `Global profile ${profile.id} cannot reference project prompt stack ${parsed.selector.id}.`,
137
+ }];
138
+ }
139
+ return [];
140
+ }
84
141
  export function resolveAgentProfile(loaded, resources) {
85
142
  const diagnostics = [...loaded.diagnostics];
86
143
  const reference = loaded.profile.model;
@@ -112,15 +169,10 @@ export function resolveAgentProfile(loaded, resources) {
112
169
  }
113
170
  let promptStack;
114
171
  if (loaded.profile.promptStack !== null) {
115
- promptStack = resources.promptStacks.find((candidate) => candidate.stack.id === loaded.profile.promptStack);
116
- if (!promptStack) {
117
- diagnostics.push({
118
- level: "error",
119
- field: "promptStack",
120
- message: `Unknown prompt stack: ${loaded.profile.promptStack}`,
121
- });
122
- }
123
- else {
172
+ const resolution = resolveProfilePromptStack(loaded, resources.promptStacks);
173
+ diagnostics.push(...resolution.diagnostics);
174
+ promptStack = resolution.stack;
175
+ if (promptStack) {
124
176
  for (const diagnostic of promptStack.diagnostics) {
125
177
  diagnostics.push({
126
178
  level: diagnostic.level,
@@ -168,6 +220,7 @@ export function isAgentProfileProvenance(value) {
168
220
  return false;
169
221
  return typeof value.profileId === "string"
170
222
  && isValidAgentProfileId(value.profileId)
223
+ && (value.scope === undefined || isResourceScope(value.scope))
171
224
  && typeof value.sourcePath === "string"
172
225
  && typeof value.sourceFingerprint === "string"
173
226
  && typeof value.appliedAt === "string"
@@ -177,36 +230,93 @@ export function isAgentProfileProvenance(value) {
177
230
  && VALID_THINKING_LEVELS.has(value.snapshot.thinkingLevel)
178
231
  && (value.snapshot.promptStack === null || !!nonEmptyString(value.snapshot.promptStack));
179
232
  }
233
+ /**
234
+ * Resolve a profile's stored `promptStack` reference relative to the profile's
235
+ * own scope. Bare IDs resolve to the profile scope; explicit qualification
236
+ * overrides that scope. A global profile can never reference a project stack.
237
+ */
238
+ function resolveProfilePromptStack(loaded, promptStacks) {
239
+ const diagnostics = [];
240
+ const reference = loaded.profile.promptStack;
241
+ const parsed = parseResourceSelector(reference);
242
+ if (!parsed.ok) {
243
+ diagnostics.push({ level: "error", field: "promptStack", message: parsed.error });
244
+ return { stack: undefined, diagnostics };
245
+ }
246
+ if (loaded.scope === "global" && parsed.selector.scope === "project") {
247
+ diagnostics.push({
248
+ level: "error",
249
+ field: "promptStack",
250
+ message: `Global profile ${loaded.profile.id} cannot reference project prompt stack ${parsed.selector.id}.`,
251
+ });
252
+ return { stack: undefined, diagnostics };
253
+ }
254
+ const scope = parsed.selector.scope ?? loaded.scope;
255
+ const matches = promptStacks.filter((candidate) => candidate.scope === scope && candidate.stack.id === parsed.selector.id);
256
+ if (matches.length === 1)
257
+ return { stack: matches[0], diagnostics };
258
+ if (matches.length === 0) {
259
+ const suggestion = loaded.scope === "project" && scope === "project"
260
+ && promptStacks.some((candidate) => candidate.scope === "global" && candidate.stack.id === parsed.selector.id)
261
+ ? ` Use ${formatResourceKey({ scope: "global", id: parsed.selector.id })} to reference the global stack.`
262
+ : "";
263
+ diagnostics.push({
264
+ level: "error",
265
+ field: "promptStack",
266
+ message: `Unknown prompt stack: ${reference}.${suggestion}`,
267
+ });
268
+ return { stack: undefined, diagnostics };
269
+ }
270
+ diagnostics.push({
271
+ level: "error",
272
+ field: "promptStack",
273
+ message: `Prompt stack id is ambiguous: ${reference}`,
274
+ });
275
+ return { stack: undefined, diagnostics };
276
+ }
180
277
  function findModel(models, reference) {
181
278
  return models.find((model) => model.provider === reference.provider && model.id === reference.id);
182
279
  }
183
280
  function annotateDuplicateProfileIds(profiles) {
184
- const byId = new Map();
281
+ const byScopeId = new Map();
185
282
  for (const loaded of profiles) {
186
- const matches = byId.get(loaded.profile.id) ?? [];
283
+ const key = `${loaded.scope}\0${loaded.profile.id}`;
284
+ const matches = byScopeId.get(key) ?? [];
187
285
  matches.push(loaded);
188
- byId.set(loaded.profile.id, matches);
286
+ byScopeId.set(key, matches);
189
287
  }
190
- for (const [id, matches] of byId) {
288
+ for (const matches of byScopeId.values()) {
191
289
  if (matches.length <= 1)
192
290
  continue;
193
291
  const files = matches.map((loaded) => basename(loaded.filePath)).join(", ");
194
292
  for (const loaded of matches) {
195
- loaded.diagnostics.push({ level: "error", message: `Duplicate profile id: ${id} appears in multiple files (${files}).` });
293
+ loaded.diagnostics.push({
294
+ level: "error",
295
+ message: `Duplicate ${loaded.scope} profile id: ${loaded.profile.id} appears in multiple files (${files}).`,
296
+ });
196
297
  }
197
298
  }
198
299
  }
199
300
  function annotateAutoActivateConflicts(profiles) {
200
- const candidates = profiles.filter((loaded) => loaded.profile.autoActivate === true);
201
- if (candidates.length <= 1)
202
- return;
203
- const files = candidates.map((loaded) => basename(loaded.filePath)).join(", ");
204
- for (const loaded of candidates) {
205
- loaded.diagnostics.push({
206
- level: "error",
207
- field: "autoActivate",
208
- message: `Multiple profiles request auto-activation (${files}); exactly one is allowed.`,
209
- });
301
+ const byScope = new Map();
302
+ for (const loaded of profiles) {
303
+ if (loaded.profile.autoActivate !== true)
304
+ continue;
305
+ const matches = byScope.get(loaded.scope) ?? [];
306
+ matches.push(loaded);
307
+ byScope.set(loaded.scope, matches);
308
+ }
309
+ for (const [scope, candidates] of byScope) {
310
+ if (candidates.length <= 1)
311
+ continue;
312
+ const files = candidates.map((loaded) => basename(loaded.filePath)).join(", ");
313
+ for (const loaded of candidates) {
314
+ loaded.diagnostics.push({
315
+ level: "error",
316
+ field: "autoActivate",
317
+ message: `Multiple ${scope} profiles request auto-activation (${files}); exactly one is allowed.`,
318
+ });
319
+ }
210
320
  }
211
321
  }
212
322
  function normalizeAgentProfile(raw, filePath, diagnostics) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-profile.js","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-profile.js","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}