@narumitw/pi-subagents 2.1.3 → 3.0.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 (314) hide show
  1. package/README.md +181 -1250
  2. package/dist/child-communication-bridge.ts +136 -0
  3. package/dist/child-communication-bridge.ts.map +7 -0
  4. package/dist/chunks/chunk-UKTWUQRM.js +667 -0
  5. package/dist/chunks/chunk-UKTWUQRM.js.map +7 -0
  6. package/dist/index.ts +1448 -1598
  7. package/dist/index.ts.map +4 -4
  8. package/docs/design-principles.md +31 -0
  9. package/docs/ipc-transport-idea.md +103 -0
  10. package/docs/tools.md +109 -0
  11. package/package.json +11 -19
  12. package/src/broker-credentials.ts +71 -0
  13. package/src/child-communication-bridge.ts +153 -0
  14. package/src/child-communication-tools.ts +147 -0
  15. package/src/completion-renderer.ts +60 -0
  16. package/src/index.ts +1 -1
  17. package/src/message-broker.ts +628 -0
  18. package/src/model-output.ts +42 -0
  19. package/src/process.ts +688 -0
  20. package/src/runtime.ts +538 -0
  21. package/src/subagents.ts +33 -34
  22. package/src/tools.ts +416 -0
  23. package/src/types.ts +85 -0
  24. package/src/widget.ts +130 -0
  25. package/dist/chunks/auto-transport-FUUKFDIG.ts +0 -109
  26. package/dist/chunks/auto-transport-FUUKFDIG.ts.map +0 -7
  27. package/dist/chunks/capability-grant-PR72SWWS.ts +0 -19
  28. package/dist/chunks/capability-grant-PR72SWWS.ts.map +0 -7
  29. package/dist/chunks/child-peer-bridge.ts +0 -108
  30. package/dist/chunks/child-peer-bridge.ts.map +0 -7
  31. package/dist/chunks/chunk-2LMJU25E.ts +0 -1641
  32. package/dist/chunks/chunk-2LMJU25E.ts.map +0 -7
  33. package/dist/chunks/chunk-47SK2QYC.ts +0 -56
  34. package/dist/chunks/chunk-47SK2QYC.ts.map +0 -7
  35. package/dist/chunks/chunk-4AQSF7AS.ts +0 -29
  36. package/dist/chunks/chunk-4AQSF7AS.ts.map +0 -7
  37. package/dist/chunks/chunk-5DGRMKNV.ts +0 -126
  38. package/dist/chunks/chunk-5DGRMKNV.ts.map +0 -7
  39. package/dist/chunks/chunk-6H6TBBED.ts +0 -108
  40. package/dist/chunks/chunk-6H6TBBED.ts.map +0 -7
  41. package/dist/chunks/chunk-6KJ34M6S.ts +0 -159
  42. package/dist/chunks/chunk-6KJ34M6S.ts.map +0 -7
  43. package/dist/chunks/chunk-6NSJVPXX.ts +0 -480
  44. package/dist/chunks/chunk-6NSJVPXX.ts.map +0 -7
  45. package/dist/chunks/chunk-7AAJEUSL.ts +0 -238
  46. package/dist/chunks/chunk-7AAJEUSL.ts.map +0 -7
  47. package/dist/chunks/chunk-BFK2Z4ZF.ts +0 -189
  48. package/dist/chunks/chunk-BFK2Z4ZF.ts.map +0 -7
  49. package/dist/chunks/chunk-BOAXY55Y.ts +0 -153
  50. package/dist/chunks/chunk-BOAXY55Y.ts.map +0 -7
  51. package/dist/chunks/chunk-D4CR7T73.ts +0 -353
  52. package/dist/chunks/chunk-D4CR7T73.ts.map +0 -7
  53. package/dist/chunks/chunk-FEVPWRMU.ts +0 -300
  54. package/dist/chunks/chunk-FEVPWRMU.ts.map +0 -7
  55. package/dist/chunks/chunk-G6VZTCFH.ts +0 -70
  56. package/dist/chunks/chunk-G6VZTCFH.ts.map +0 -7
  57. package/dist/chunks/chunk-H3FP6DLR.ts +0 -160
  58. package/dist/chunks/chunk-H3FP6DLR.ts.map +0 -7
  59. package/dist/chunks/chunk-HA36LPCO.ts +0 -130
  60. package/dist/chunks/chunk-HA36LPCO.ts.map +0 -7
  61. package/dist/chunks/chunk-HOP5FXDT.ts +0 -27
  62. package/dist/chunks/chunk-HOP5FXDT.ts.map +0 -7
  63. package/dist/chunks/chunk-IGAMVWFN.ts +0 -139
  64. package/dist/chunks/chunk-IGAMVWFN.ts.map +0 -7
  65. package/dist/chunks/chunk-ILEQ27AL.ts +0 -45
  66. package/dist/chunks/chunk-ILEQ27AL.ts.map +0 -7
  67. package/dist/chunks/chunk-ITVWPNU4.ts +0 -819
  68. package/dist/chunks/chunk-ITVWPNU4.ts.map +0 -7
  69. package/dist/chunks/chunk-IWC32VPY.ts +0 -172
  70. package/dist/chunks/chunk-IWC32VPY.ts.map +0 -7
  71. package/dist/chunks/chunk-JSZIP73U.ts +0 -362
  72. package/dist/chunks/chunk-JSZIP73U.ts.map +0 -7
  73. package/dist/chunks/chunk-JU6LUNLP.ts +0 -380
  74. package/dist/chunks/chunk-JU6LUNLP.ts.map +0 -7
  75. package/dist/chunks/chunk-KMGKCEO4.ts +0 -38
  76. package/dist/chunks/chunk-KMGKCEO4.ts.map +0 -7
  77. package/dist/chunks/chunk-LASD73CM.ts +0 -339
  78. package/dist/chunks/chunk-LASD73CM.ts.map +0 -7
  79. package/dist/chunks/chunk-LEOYDZI3.ts +0 -22
  80. package/dist/chunks/chunk-LEOYDZI3.ts.map +0 -7
  81. package/dist/chunks/chunk-LL4LP2T7.ts +0 -737
  82. package/dist/chunks/chunk-LL4LP2T7.ts.map +0 -7
  83. package/dist/chunks/chunk-N2T5IN4X.ts +0 -18
  84. package/dist/chunks/chunk-N2T5IN4X.ts.map +0 -7
  85. package/dist/chunks/chunk-N7BLVXKK.ts +0 -73
  86. package/dist/chunks/chunk-N7BLVXKK.ts.map +0 -7
  87. package/dist/chunks/chunk-NLT67IZS.ts +0 -322
  88. package/dist/chunks/chunk-NLT67IZS.ts.map +0 -7
  89. package/dist/chunks/chunk-NTRPLF46.ts +0 -63
  90. package/dist/chunks/chunk-NTRPLF46.ts.map +0 -7
  91. package/dist/chunks/chunk-ONDTY4EL.ts +0 -91
  92. package/dist/chunks/chunk-ONDTY4EL.ts.map +0 -7
  93. package/dist/chunks/chunk-OVPHFGKO.ts +0 -1769
  94. package/dist/chunks/chunk-OVPHFGKO.ts.map +0 -7
  95. package/dist/chunks/chunk-P7OH4XMF.ts +0 -60
  96. package/dist/chunks/chunk-P7OH4XMF.ts.map +0 -7
  97. package/dist/chunks/chunk-PBZMBTNJ.ts +0 -422
  98. package/dist/chunks/chunk-PBZMBTNJ.ts.map +0 -7
  99. package/dist/chunks/chunk-PGLSFLYW.ts +0 -52
  100. package/dist/chunks/chunk-PGLSFLYW.ts.map +0 -7
  101. package/dist/chunks/chunk-RRR66UWR.ts +0 -28
  102. package/dist/chunks/chunk-RRR66UWR.ts.map +0 -7
  103. package/dist/chunks/chunk-RSUXZD6S.ts +0 -275
  104. package/dist/chunks/chunk-RSUXZD6S.ts.map +0 -7
  105. package/dist/chunks/chunk-RTCVYIZA.ts +0 -221
  106. package/dist/chunks/chunk-RTCVYIZA.ts.map +0 -7
  107. package/dist/chunks/chunk-RY2AEGMZ.ts +0 -34
  108. package/dist/chunks/chunk-RY2AEGMZ.ts.map +0 -7
  109. package/dist/chunks/chunk-SWGQLFSD.ts +0 -60
  110. package/dist/chunks/chunk-SWGQLFSD.ts.map +0 -7
  111. package/dist/chunks/chunk-TM2R67J3.ts +0 -52
  112. package/dist/chunks/chunk-TM2R67J3.ts.map +0 -7
  113. package/dist/chunks/chunk-TMZRHIIK.ts +0 -497
  114. package/dist/chunks/chunk-TMZRHIIK.ts.map +0 -7
  115. package/dist/chunks/chunk-TZ34IQ3M.ts +0 -59
  116. package/dist/chunks/chunk-TZ34IQ3M.ts.map +0 -7
  117. package/dist/chunks/chunk-UMBPMVJW.ts +0 -22
  118. package/dist/chunks/chunk-UMBPMVJW.ts.map +0 -7
  119. package/dist/chunks/chunk-VDG7LTYE.ts +0 -80
  120. package/dist/chunks/chunk-VDG7LTYE.ts.map +0 -7
  121. package/dist/chunks/chunk-X4NMONPE.ts +0 -73
  122. package/dist/chunks/chunk-X4NMONPE.ts.map +0 -7
  123. package/dist/chunks/chunk-YPJEN6NU.ts +0 -65
  124. package/dist/chunks/chunk-YPJEN6NU.ts.map +0 -7
  125. package/dist/chunks/chunk-YU53SHA7.ts +0 -328
  126. package/dist/chunks/chunk-YU53SHA7.ts.map +0 -7
  127. package/dist/chunks/completion-delivery-RSJU6BXL.ts +0 -17
  128. package/dist/chunks/completion-delivery-RSJU6BXL.ts.map +0 -7
  129. package/dist/chunks/config-status-FKGDECZ3.ts +0 -35
  130. package/dist/chunks/config-status-FKGDECZ3.ts.map +0 -7
  131. package/dist/chunks/config-ui-ABHYNGQ7.ts +0 -1212
  132. package/dist/chunks/config-ui-ABHYNGQ7.ts.map +0 -7
  133. package/dist/chunks/consult-LJU3IQY5.ts +0 -519
  134. package/dist/chunks/consult-LJU3IQY5.ts.map +0 -7
  135. package/dist/chunks/context-QDKLVQXE.ts +0 -11
  136. package/dist/chunks/context-QDKLVQXE.ts.map +0 -7
  137. package/dist/chunks/create-stateful-transport-JWC2EFYL.ts +0 -130
  138. package/dist/chunks/create-stateful-transport-JWC2EFYL.ts.map +0 -7
  139. package/dist/chunks/cwd-policy-NB6XZ5GF.ts +0 -17
  140. package/dist/chunks/cwd-policy-NB6XZ5GF.ts.map +0 -7
  141. package/dist/chunks/delegation-contract-LA56I5DT.ts +0 -24
  142. package/dist/chunks/delegation-contract-LA56I5DT.ts.map +0 -7
  143. package/dist/chunks/discovery-MIFB2U4Y.ts +0 -12
  144. package/dist/chunks/discovery-MIFB2U4Y.ts.map +0 -7
  145. package/dist/chunks/execution-Q2JZLKJA.ts +0 -4037
  146. package/dist/chunks/execution-Q2JZLKJA.ts.map +0 -7
  147. package/dist/chunks/in-process-transport-HJ6TZXC3.ts +0 -39
  148. package/dist/chunks/in-process-transport-HJ6TZXC3.ts.map +0 -7
  149. package/dist/chunks/inspect-UH2TKH6E.ts +0 -634
  150. package/dist/chunks/inspect-UH2TKH6E.ts.map +0 -7
  151. package/dist/chunks/peer-communication-KL36Z6CO.ts +0 -294
  152. package/dist/chunks/peer-communication-KL36Z6CO.ts.map +0 -7
  153. package/dist/chunks/persistence-UY3PY6E5.ts +0 -348
  154. package/dist/chunks/persistence-UY3PY6E5.ts.map +0 -7
  155. package/dist/chunks/registry-BT54L6CY.ts +0 -1445
  156. package/dist/chunks/registry-BT54L6CY.ts.map +0 -7
  157. package/dist/chunks/retained-semantic-state-GM75FZGE.ts +0 -81
  158. package/dist/chunks/retained-semantic-state-GM75FZGE.ts.map +0 -7
  159. package/dist/chunks/rpc-transport-7R7DVCEB.ts +0 -1222
  160. package/dist/chunks/rpc-transport-7R7DVCEB.ts.map +0 -7
  161. package/dist/chunks/runtime-policy-5YELCOVC.ts +0 -15
  162. package/dist/chunks/runtime-policy-5YELCOVC.ts.map +0 -7
  163. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts +0 -19
  164. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts.map +0 -7
  165. package/dist/chunks/spawn-idempotency-BNHOSMZW.ts +0 -13
  166. package/dist/chunks/spawn-idempotency-BNHOSMZW.ts.map +0 -7
  167. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts +0 -15
  168. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts.map +0 -7
  169. package/dist/chunks/subprocess-transport-VHZJRBTW.ts +0 -160
  170. package/dist/chunks/subprocess-transport-VHZJRBTW.ts.map +0 -7
  171. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts +0 -164
  172. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts.map +0 -7
  173. package/dist/chunks/workspace-WDKLN72J.ts +0 -11
  174. package/dist/chunks/workspace-WDKLN72J.ts.map +0 -7
  175. package/docs/async-runtime-protocol.md +0 -84
  176. package/docs/implementation-notes/pi-subagents-capability-matrix.md +0 -62
  177. package/docs/implementation-notes/pi-subagents-current-direction.md +0 -99
  178. package/docs/implementation-notes/pi-subagents-rpc-v1.md +0 -153
  179. package/docs/pi-subagents-diagrams.md +0 -183
  180. package/src/adaptive-scheduler.ts +0 -224
  181. package/src/admission-benchmark.ts +0 -95
  182. package/src/admission-policy.ts +0 -78
  183. package/src/agent-projection.ts +0 -53
  184. package/src/agents/built-ins.ts +0 -71
  185. package/src/agents/catalog.ts +0 -241
  186. package/src/agents/discovery.ts +0 -265
  187. package/src/agents/types.ts +0 -100
  188. package/src/agents.ts +0 -51
  189. package/src/async-subagent-benchmark.ts +0 -532
  190. package/src/auto-transport.ts +0 -121
  191. package/src/blocking-status.ts +0 -63
  192. package/src/cached-module-loader.ts +0 -18
  193. package/src/capabilities.ts +0 -145
  194. package/src/capability-grant.ts +0 -115
  195. package/src/capability-router.ts +0 -107
  196. package/src/child-peer-bridge.ts +0 -124
  197. package/src/child-peer-tools.ts +0 -132
  198. package/src/completion-delivery.ts +0 -409
  199. package/src/completion-render.ts +0 -190
  200. package/src/completion-requirement.ts +0 -479
  201. package/src/completion-routing.ts +0 -24
  202. package/src/config-registration.ts +0 -114
  203. package/src/config-status.ts +0 -217
  204. package/src/config-ui.ts +0 -983
  205. package/src/consult-policy.ts +0 -15
  206. package/src/consult-registration.ts +0 -125
  207. package/src/consult-render.ts +0 -194
  208. package/src/consult-resources.ts +0 -51
  209. package/src/consult-tool.ts +0 -95
  210. package/src/consult.ts +0 -566
  211. package/src/context.ts +0 -126
  212. package/src/create-stateful-transport.ts +0 -157
  213. package/src/cwd-policy.ts +0 -183
  214. package/src/delegation-contract.ts +0 -463
  215. package/src/execution/budget.ts +0 -56
  216. package/src/execution/runtime-policy.ts +0 -19
  217. package/src/execution-plan.ts +0 -322
  218. package/src/execution-ui.ts +0 -259
  219. package/src/execution.ts +0 -1679
  220. package/src/in-process-transport.ts +0 -941
  221. package/src/inspect-registration.ts +0 -64
  222. package/src/inspect-render.ts +0 -334
  223. package/src/inspect-tool.ts +0 -45
  224. package/src/inspect.ts +0 -769
  225. package/src/integration-controller.ts +0 -98
  226. package/src/limits.ts +0 -75
  227. package/src/orchestration-metrics.ts +0 -116
  228. package/src/outcome.ts +0 -61
  229. package/src/panel-child-group.ts +0 -35
  230. package/src/panel-contract.ts +0 -343
  231. package/src/panel-evidence.ts +0 -59
  232. package/src/panel-execution.ts +0 -769
  233. package/src/panel-failure.ts +0 -56
  234. package/src/panel-planning.ts +0 -175
  235. package/src/panel-presets.ts +0 -3
  236. package/src/panel-prompts.ts +0 -132
  237. package/src/panel-reconciliation.ts +0 -57
  238. package/src/panel-render.ts +0 -103
  239. package/src/parallel-limit-ui.ts +0 -113
  240. package/src/params.ts +0 -278
  241. package/src/peer-communication.ts +0 -352
  242. package/src/peer-transport.ts +0 -49
  243. package/src/persistence.ts +0 -522
  244. package/src/pi-args.ts +0 -43
  245. package/src/pi-invocation.ts +0 -168
  246. package/src/process-control.ts +0 -43
  247. package/src/prompt-resources.ts +0 -38
  248. package/src/prompt-source-safety.ts +0 -48
  249. package/src/protocol.ts +0 -76
  250. package/src/registry-types.ts +0 -204
  251. package/src/registry.ts +0 -1698
  252. package/src/render-common.ts +0 -252
  253. package/src/render.ts +0 -704
  254. package/src/result-contract.ts +0 -431
  255. package/src/retained-semantic-state.ts +0 -100
  256. package/src/rpc-timeout-finalization.ts +0 -207
  257. package/src/rpc-transport-metadata.ts +0 -65
  258. package/src/rpc-transport.ts +0 -1035
  259. package/src/rpc-turn-capture.ts +0 -217
  260. package/src/runner-outcome.ts +0 -31
  261. package/src/runner-result.ts +0 -55
  262. package/src/runner-types.ts +0 -102
  263. package/src/runner-usage.ts +0 -48
  264. package/src/runner.ts +0 -866
  265. package/src/safe-text.ts +0 -67
  266. package/src/semantic-snapshot.ts +0 -214
  267. package/src/session-guidance-contract.ts +0 -399
  268. package/src/settings/inspection.ts +0 -302
  269. package/src/settings/schema.ts +0 -195
  270. package/src/settings-reader.ts +0 -215
  271. package/src/settings.ts +0 -452
  272. package/src/spawn-idempotency.ts +0 -68
  273. package/src/stateful-agent-view.ts +0 -85
  274. package/src/stateful-config.ts +0 -13
  275. package/src/stateful-guidance.ts +0 -29
  276. package/src/stateful-lifecycle.ts +0 -74
  277. package/src/stateful-limit-ui.ts +0 -249
  278. package/src/stateful-limits.ts +0 -96
  279. package/src/stateful-prompt.ts +0 -49
  280. package/src/stateful-registration.ts +0 -1320
  281. package/src/stateful-render.ts +0 -318
  282. package/src/stateful-safety.ts +0 -47
  283. package/src/stateful-tool-params.ts +0 -215
  284. package/src/stateful.ts +0 -12
  285. package/src/subagent-details.ts +0 -43
  286. package/src/subagents-extension.ts +0 -355
  287. package/src/subprocess-transport.ts +0 -145
  288. package/src/supervision.ts +0 -104
  289. package/src/task-path.ts +0 -65
  290. package/src/timeout-checkpoint.ts +0 -305
  291. package/src/timeout-finalization.ts +0 -75
  292. package/src/tool-schema-compatibility.ts +0 -73
  293. package/src/transport-types.ts +0 -74
  294. package/src/transport-ui.ts +0 -135
  295. package/src/transport.ts +0 -43
  296. package/src/turn-budget.ts +0 -109
  297. package/src/usage-format.ts +0 -42
  298. package/src/usage-recording-config.ts +0 -13
  299. package/src/usage-recording-store.ts +0 -183
  300. package/src/usage-recording.ts +0 -478
  301. package/src/verification-harness.ts +0 -516
  302. package/src/verification-policy.ts +0 -67
  303. package/src/verification-receipt.ts +0 -275
  304. package/src/verified-execution-benchmark.ts +0 -86
  305. package/src/verified-execution-contract.ts +0 -191
  306. package/src/verified-execution-schema.ts +0 -32
  307. package/src/work-item-ledger.ts +0 -1404
  308. package/src/work-item-persistence.ts +0 -254
  309. package/src/workflow-completion-controller.ts +0 -397
  310. package/src/workflow-planning.ts +0 -172
  311. package/src/workflow-tree-identity.ts +0 -289
  312. package/src/workflow-ui.ts +0 -69
  313. package/src/workflow-verification.ts +0 -296
  314. package/src/workspace.ts +0 -174
@@ -1,519 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- resolveConsultTools
5
- } from "./chunk-UMBPMVJW.ts";
6
- import {
7
- assertConsultationTargetAllowed,
8
- resolveSubagentTarget
9
- } from "./chunk-HA36LPCO.ts";
10
- import {
11
- runSingleAgent
12
- } from "./chunk-ITVWPNU4.ts";
13
- import "./chunk-47SK2QYC.ts";
14
- import "./chunk-YPJEN6NU.ts";
15
- import "./chunk-7AAJEUSL.ts";
16
- import "./chunk-6H6TBBED.ts";
17
- import "./chunk-IGAMVWFN.ts";
18
- import {
19
- resolvePiPromptResources
20
- } from "./chunk-G6VZTCFH.ts";
21
- import "./chunk-NTRPLF46.ts";
22
- import {
23
- DEFAULT_AGENT_CATALOG_MAX_ITEMS,
24
- SubagentConsultParams,
25
- registerSubagentConsult
26
- } from "./chunk-6NSJVPXX.ts";
27
- import "./chunk-HOP5FXDT.ts";
28
- import {
29
- getResultFinalOutput,
30
- isResultError
31
- } from "./chunk-X4NMONPE.ts";
32
- import "./chunk-RTCVYIZA.ts";
33
- import "./chunk-ONDTY4EL.ts";
34
- import {
35
- discoverAgents
36
- } from "./chunk-LASD73CM.ts";
37
- import "./chunk-RSUXZD6S.ts";
38
- import {
39
- resolveSubagentThinkingLevel
40
- } from "./chunk-D4CR7T73.ts";
41
- import {
42
- DEFAULT_CONSULTATION_CWD_POLICY,
43
- DEFAULT_CONSULT_RESOURCE_POLICY
44
- } from "./chunk-TMZRHIIK.ts";
45
- import "./chunk-VDG7LTYE.ts";
46
- import {
47
- isThinkingLevel
48
- } from "./chunk-4AQSF7AS.ts";
49
- import "./chunk-BFK2Z4ZF.ts";
50
- import {
51
- boundText,
52
- boundedPrivateText,
53
- safeDisplayPath,
54
- safeTerminalLine
55
- } from "./chunk-SWGQLFSD.ts";
56
- import {
57
- DEFAULT_MAX_CONTEXT_BYTES,
58
- DEFAULT_MAX_STDERR_BYTES,
59
- MAX_SUBAGENT_TIMEOUT_MS,
60
- truncateUtf8
61
- } from "./chunk-H3FP6DLR.ts";
62
- import {
63
- assertSubagentDepthAllowed,
64
- resolveDefaultSubagentTimeoutMs
65
- } from "./chunk-RRR66UWR.ts";
66
-
67
- // src/consult.ts
68
- import * as path from "node:path";
69
- import { CONFIG_DIR_NAME } from "@earendil-works/pi-coding-agent";
70
-
71
- // src/consult-resources.ts
72
- var MINIMAL_CONSULT_SYSTEM_PROMPT = "You are a read-only consultation assistant. Analyze the delegated task using only executor-provided capabilities and return a grounded answer.";
73
- async function resolveConsultResourceLaunchPolicy(policy, projectTrusted, cwd) {
74
- if (policy === "none") {
75
- return {
76
- disableExtensions: true,
77
- disableSkills: true,
78
- disablePromptTemplates: true,
79
- disableContextFiles: true,
80
- projectTrust: false,
81
- baseSystemPrompt: MINIMAL_CONSULT_SYSTEM_PROMPT
82
- };
83
- }
84
- const resources = await resolvePiPromptResources(cwd, projectTrusted);
85
- const discoveredSystemPrompt = resources.systemPrompt;
86
- const baseSystemPrompt = discoveredSystemPrompt ? truncateUtf8(discoveredSystemPrompt, DEFAULT_MAX_CONTEXT_BYTES).text : void 0;
87
- const appendSystemPromptPaths = resources.appendSystemPromptPaths;
88
- const shared = {
89
- disableExtensions: true,
90
- disableContextFiles: !projectTrusted,
91
- projectTrust: projectTrusted,
92
- baseSystemPrompt,
93
- appendSystemPromptPaths: appendSystemPromptPaths.length > 0 ? appendSystemPromptPaths : void 0
94
- };
95
- if (policy === "project-context") {
96
- return {
97
- ...shared,
98
- disableSkills: true,
99
- disablePromptTemplates: true
100
- };
101
- }
102
- return shared;
103
- }
104
-
105
- // src/consult.ts
106
- var READ_ONLY_INSTRUCTION = [
107
- "This is a read-only consultation.",
108
- "Use only the tools made available by the executor to inspect and reason about existing content.",
109
- "Do not claim to edit files, run shell commands, mutate state, or persist a session.",
110
- "If the task asks for implementation, return analysis or instructions instead of claiming changes."
111
- ].join("\n");
112
- var MAX_UNKNOWN_AGENT_NAME_BYTES = 128;
113
- async function executeSubagentConsult(params, signal, onUpdate, ctx, options, isCurrent = () => true) {
114
- const operation = validateConsultParams(params);
115
- assertSubagentDepthAllowed();
116
- if (signal.aborted) throw abortError("Subagent consultation was aborted before start");
117
- return executeConsult(
118
- operation,
119
- ctx,
120
- signal,
121
- options,
122
- (partial) => {
123
- if (signal.aborted || !isCurrent()) return;
124
- onUpdate?.(partial);
125
- },
126
- isCurrent,
127
- () => void 0
128
- );
129
- }
130
- function formatAvailableConsultAgents(discovery) {
131
- const listed = discovery.agents.slice(0, DEFAULT_AGENT_CATALOG_MAX_ITEMS);
132
- const labels = listed.map(
133
- (agent) => `${safeTerminalLine(agent.name, MAX_UNKNOWN_AGENT_NAME_BYTES)} (${agent.source})`
134
- );
135
- const omitted = discovery.agents.length - listed.length + (discovery.omittedAgentDefinitions ?? 0);
136
- const parts = [labels.join(", ") || "none"];
137
- if (omitted > 0) {
138
- parts.push(`[${omitted} additional agent definition${omitted === 1 ? "" : "s"} omitted.]`);
139
- }
140
- if (discovery.metadataDiscoveryIncomplete) {
141
- parts.push("[Agent metadata discovery was incomplete; some definitions may be unavailable.]");
142
- }
143
- return parts.join(" ");
144
- }
145
- function validateConsultParams(params) {
146
- if (!params || typeof params !== "object" || Array.isArray(params)) {
147
- throw new Error("subagent_consult parameters must be an object");
148
- }
149
- const values = params;
150
- const allowed = [
151
- "agent",
152
- "task",
153
- "agentScope",
154
- "confirmProjectAgents",
155
- "cwd",
156
- "timeoutMs",
157
- "thinkingLevel"
158
- ];
159
- const unexpected = Object.keys(values).find(
160
- (key) => values[key] !== void 0 && !allowed.includes(key)
161
- );
162
- if (unexpected) throw new Error(`subagent_consult does not accept ${unexpected}`);
163
- const agent = requiredString(values.agent, "agent");
164
- const task = requiredString(values.task, "task");
165
- if (task.includes("\0")) throw new Error("subagent_consult task must not contain NUL bytes");
166
- if (Buffer.byteLength(task, "utf8") > DEFAULT_MAX_CONTEXT_BYTES) {
167
- throw new Error(
168
- `subagent_consult task must be at most ${DEFAULT_MAX_CONTEXT_BYTES} UTF-8 bytes`
169
- );
170
- }
171
- const agentScope = optionalScope(values.agentScope);
172
- if (values.confirmProjectAgents !== void 0 && typeof values.confirmProjectAgents !== "boolean") {
173
- throw new Error("subagent_consult confirmProjectAgents must be boolean");
174
- }
175
- if (values.cwd !== void 0 && (typeof values.cwd !== "string" || !values.cwd.trim())) {
176
- throw new Error("subagent_consult cwd must be a non-empty string");
177
- }
178
- if (values.timeoutMs !== void 0 && (typeof values.timeoutMs !== "number" || !Number.isFinite(values.timeoutMs) || values.timeoutMs < 1 || values.timeoutMs > MAX_SUBAGENT_TIMEOUT_MS)) {
179
- throw new Error(`subagent_consult timeoutMs must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}`);
180
- }
181
- if (values.thinkingLevel !== void 0 && !isThinkingLevel(values.thinkingLevel)) {
182
- throw new Error("subagent_consult thinkingLevel is invalid");
183
- }
184
- return {
185
- agent,
186
- task,
187
- agentScope,
188
- confirmProjectAgents: values.confirmProjectAgents !== false,
189
- cwd: values.cwd,
190
- timeoutMs: values.timeoutMs,
191
- thinkingLevel: values.thinkingLevel
192
- };
193
- }
194
- async function executeConsult(operation, ctx, signal, options, emitUpdate, isCurrent, trackWork) {
195
- if ((operation.agentScope === "project" || operation.agentScope === "both") && !ctx.isProjectTrusted()) {
196
- throw new Error("Project-local subagent definitions require a trusted project");
197
- }
198
- const settings = options.getSettings();
199
- const target = resolveSubagentTarget({
200
- workspace: ctx.cwd,
201
- requestedCwd: operation.cwd,
202
- currentProjectTrusted: ctx.isProjectTrusted()
203
- });
204
- assertConsultationTargetAllowed(
205
- target,
206
- settings?.cwdPolicy?.consultation ?? DEFAULT_CONSULTATION_CWD_POLICY
207
- );
208
- const discovery = discoverAgents(ctx.cwd, operation.agentScope, settings);
209
- const agent = discovery.agents.find((candidate) => candidate.name === operation.agent);
210
- if (!agent) {
211
- throw new Error(
212
- `Unknown subagent definition: ${boundedPrivateText(operation.agent, 256)}. Available agents for agentScope "${operation.agentScope}": ${formatAvailableConsultAgents(discovery)}`
213
- );
214
- }
215
- const setupWork = resolveConsultSetup(operation, agent, settings, target, options);
216
- trackWork(setupWork);
217
- const setup = await setupWork;
218
- assertCurrentRequest(signal, isCurrent);
219
- if (agent.source === "project" && operation.confirmProjectAgents) {
220
- if (!ctx.hasUI) {
221
- throw new Error(
222
- "Project-local subagent confirmation requires UI; pass confirmProjectAgents: false explicitly in a trusted project"
223
- );
224
- }
225
- const approved = await ctx.ui.confirm(
226
- "Run project-local read-only agent?",
227
- `Agent: ${safeTerminalLine(agent.name, 256)}
228
- Source: ${safeTerminalLine(path.posix.join(CONFIG_DIR_NAME, "agents", path.basename(agent.filePath)))}`
229
- );
230
- assertCurrentRequest(signal, isCurrent);
231
- if (!approved) {
232
- return {
233
- content: [{ type: "text", text: "Read-only subagent consultation cancelled." }],
234
- details: { ...setup.details, cancelled: true }
235
- };
236
- }
237
- }
238
- assertCurrentRequest(signal, isCurrent);
239
- emitUpdate(consultStartingUpdate(setup.details));
240
- assertCurrentRequest(signal, isCurrent);
241
- const runChild = options.runChild ?? ((request) => runConsultChild(request, options));
242
- const child = runChild({
243
- agent: setup.agent,
244
- task: operation.task,
245
- cwd: setup.cwd,
246
- agentScope: operation.agentScope,
247
- thinkingLevel: setup.thinkingLevel,
248
- timeoutMs: setup.timeoutMs,
249
- effectiveTools: setup.effectiveTools,
250
- resourcePolicy: setup.resourcePolicy,
251
- launchPolicy: setup.launchPolicy,
252
- signal,
253
- onUpdate: (result2) => {
254
- if (signal.aborted || !isCurrent()) return;
255
- emitUpdate(consultUpdate(result2, setup.details));
256
- }
257
- });
258
- trackWork(child);
259
- const result = await child;
260
- if (!isCurrent()) throw abortError("Subagent consultation owner was replaced");
261
- if (result.aborted && !result.processStarted) {
262
- throw abortError(result.errorMessage || "Subagent consultation was aborted before launch");
263
- }
264
- if (result.launchFailed) {
265
- throw new Error(
266
- boundedPrivateText(
267
- result.errorMessage || result.stderr.trim() || "Subagent consultation failed to launch",
268
- 2 * 1024
269
- )
270
- );
271
- }
272
- const error = isResultError(result);
273
- const output = error ? formatConsultFailure(result) : getResultFinalOutput(result) || "(no output)";
274
- const bounded = boundText(output);
275
- const details = {
276
- ...setup.details,
277
- child: projectChildResult(result),
278
- ...error ? { isError: true } : {},
279
- ...bounded.truncated ? { truncated: true } : {}
280
- };
281
- return {
282
- content: [{ type: "text", text: bounded.text }],
283
- details,
284
- usage: usageFromResult(result)
285
- };
286
- }
287
- async function resolveConsultSetup(operation, agent, settings, target, options) {
288
- const requestedResourcePolicy = settings?.consult?.resources ?? DEFAULT_CONSULT_RESOURCE_POLICY;
289
- const resourcePolicy = target.trust.projectTrusted ? requestedResourcePolicy : "none";
290
- const effectiveTools = resolveConsultTools(agent.tools);
291
- const projectTrusted = target.trust.projectTrusted;
292
- const thinkingLevel = resolveSubagentThinkingLevel([agent], agent.name, operation.thinkingLevel);
293
- const timeoutMs = operation.timeoutMs ?? agent.timeoutMs ?? resolveDefaultSubagentTimeoutMs();
294
- if (!Number.isFinite(timeoutMs) || timeoutMs < 1 || timeoutMs > MAX_SUBAGENT_TIMEOUT_MS) {
295
- throw new Error(
296
- `Subagent consultation timeout must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}ms`
297
- );
298
- }
299
- const resolveResources = options.resolveResourceLaunchPolicy ?? resolveConsultResourceLaunchPolicy;
300
- const launchPolicy = await resolveResources(resourcePolicy, projectTrusted, target.cwd);
301
- launchPolicy.tools = effectiveTools;
302
- const childAgent = {
303
- ...agent,
304
- tools: effectiveTools,
305
- systemPrompt: [agent.systemPrompt, READ_ONLY_INSTRUCTION].filter(Boolean).join("\n\n")
306
- };
307
- const effectiveResources = {
308
- policy: resourcePolicy,
309
- projectResources: projectTrusted && resourcePolicy !== "none",
310
- contextFiles: !launchPolicy.disableContextFiles,
311
- skills: !launchPolicy.disableSkills,
312
- promptTemplates: !launchPolicy.disablePromptTemplates
313
- };
314
- const details = {
315
- agent: boundedPrivateText(agent.name, 256),
316
- agentSource: agent.source,
317
- agentScope: operation.agentScope,
318
- cwd: safeDisplayPath(target.cwd, target.workspace),
319
- model: agent.model ? boundedPrivateText(agent.model, 256) : void 0,
320
- thinkingLevel,
321
- timeoutMs,
322
- policy: {
323
- requestedTools: agent.tools === void 0 ? null : agent.tools.slice(0, 100).map((tool) => boundedPrivateText(tool, 256)),
324
- effectiveTools,
325
- cwdBoundary: target.boundary,
326
- targetTrust: {
327
- kind: target.trust.kind,
328
- projectTrusted,
329
- sourcePath: target.trust.sourcePath ? safeDisplayPath(target.trust.sourcePath, target.workspace) : void 0,
330
- warning: target.trust.warning
331
- },
332
- requestedResources: requestedResourcePolicy,
333
- effectiveResources,
334
- ...resourcePolicy !== requestedResourcePolicy ? { resourceDowngradeReason: `Target trust is ${target.trust.kind}` } : {},
335
- extensions: "disabled",
336
- sessionPersistence: "disabled",
337
- retainedAgent: false
338
- }
339
- };
340
- return {
341
- agent: childAgent,
342
- cwd: target.cwd,
343
- resourcePolicy,
344
- effectiveTools,
345
- thinkingLevel,
346
- timeoutMs,
347
- launchPolicy,
348
- details
349
- };
350
- }
351
- async function runConsultChild(request, options) {
352
- return runSingleAgent(
353
- request.cwd,
354
- [request.agent],
355
- request.agent.name,
356
- request.task,
357
- request.cwd,
358
- void 0,
359
- request.signal,
360
- request.thinkingLevel,
361
- request.timeoutMs,
362
- (partial) => {
363
- const result = partial.details.results[0];
364
- if (result) request.onUpdate?.(result);
365
- },
366
- (results) => ({
367
- mode: "single",
368
- agentScope: request.agentScope,
369
- projectAgentsDir: null,
370
- results
371
- }),
372
- options.invocationOverride,
373
- request.launchPolicy
374
- );
375
- }
376
- function consultStartingUpdate(details) {
377
- return {
378
- content: [{ type: "text", text: "Read-only subagent consultation starting." }],
379
- details: {
380
- ...details,
381
- progress: {
382
- phase: "starting",
383
- recentActivity: [],
384
- recentActivityTotal: 0,
385
- usage: emptyProgressUsage()
386
- }
387
- }
388
- };
389
- }
390
- function consultUpdate(result, details) {
391
- const output = boundText(getResultFinalOutput(result) || "(running...)");
392
- return {
393
- content: [{ type: "text", text: output.text }],
394
- details: {
395
- ...details,
396
- child: projectChildResult(result),
397
- progress: projectConsultProgress(result)
398
- }
399
- };
400
- }
401
- var CONSULT_ACTIVITY_ARGUMENTS = {
402
- read: ["path", "file_path", "offset", "limit"],
403
- grep: ["pattern", "path", "glob", "limit"],
404
- find: ["pattern", "path", "limit"],
405
- ls: ["path", "limit"]
406
- };
407
- function projectConsultProgress(result) {
408
- const recentActivity = [];
409
- for (const item of result.recentActivity ?? []) {
410
- if (item.type === "text") {
411
- const text = boundedPrivateText(item.text, 1024).trim();
412
- if (text) recentActivity.push({ type: "text", text });
413
- continue;
414
- }
415
- if (!Object.hasOwn(CONSULT_ACTIVITY_ARGUMENTS, item.name)) continue;
416
- const name = item.name;
417
- const args = {};
418
- for (const key of CONSULT_ACTIVITY_ARGUMENTS[name]) {
419
- const value = item.args[key];
420
- if (typeof value === "string") args[key] = safeTerminalLine(value, 512);
421
- else if (typeof value === "number" && Number.isFinite(value)) args[key] = value;
422
- else if (typeof value === "boolean") args[key] = value;
423
- }
424
- recentActivity.push({ type: "toolCall", name, args });
425
- }
426
- return {
427
- phase: "running",
428
- recentActivity,
429
- recentActivityTotal: Math.max(recentActivity.length, result.recentActivityTotal ?? 0),
430
- actualProvider: result.actualProvider ? boundedPrivateText(result.actualProvider, 256) : void 0,
431
- actualModel: result.actualModel ? boundedPrivateText(result.actualModel, 256) : void 0,
432
- usage: {
433
- input: result.usage.input,
434
- output: result.usage.output,
435
- cacheRead: result.usage.cacheRead,
436
- cacheWrite: result.usage.cacheWrite,
437
- cost: result.usage.cost,
438
- contextTokens: result.usage.contextTokens,
439
- turns: result.usage.turns
440
- }
441
- };
442
- }
443
- function emptyProgressUsage() {
444
- return {
445
- input: 0,
446
- output: 0,
447
- cacheRead: 0,
448
- cacheWrite: 0,
449
- cost: 0,
450
- contextTokens: 0,
451
- turns: 0
452
- };
453
- }
454
- function projectChildResult(result) {
455
- return {
456
- exitCode: result.exitCode,
457
- stopReason: typeof result.stopReason === "string" ? boundedPrivateText(result.stopReason, 256) : void 0,
458
- timedOut: result.timedOut,
459
- aborted: result.aborted,
460
- truncated: result.truncated,
461
- malformedEvents: result.malformedEvents,
462
- processStarted: result.processStarted,
463
- actualProvider: result.actualProvider ? boundedPrivateText(result.actualProvider, 256) : void 0,
464
- actualModel: result.actualModel ? boundedPrivateText(result.actualModel, 256) : void 0,
465
- partialOutput: result.finalOutput ? boundedPrivateText(result.finalOutput, 8 * 1024) : void 0,
466
- error: result.errorMessage ? boundedPrivateText(result.errorMessage, 2 * 1024) : void 0,
467
- usage: { ...result.usage }
468
- };
469
- }
470
- function formatConsultFailure(result) {
471
- const rawError = result.errorMessage || result.stderr.trim();
472
- const error = rawError ? boundedPrivateText(rawError, DEFAULT_MAX_STDERR_BYTES) : "";
473
- const output = getResultFinalOutput(result);
474
- return error && output ? `${error}
475
-
476
- Partial output:
477
- ${output}` : error || output || "(no output)";
478
- }
479
- function usageFromResult(result) {
480
- return {
481
- input: result.usage.input,
482
- output: result.usage.output,
483
- cacheRead: result.usage.cacheRead,
484
- cacheWrite: result.usage.cacheWrite,
485
- totalTokens: result.usage.totalTokens ?? result.usage.input + result.usage.output + result.usage.cacheRead + result.usage.cacheWrite,
486
- cost: {
487
- input: result.usage.costInput ?? 0,
488
- output: result.usage.costOutput ?? 0,
489
- cacheRead: result.usage.costCacheRead ?? 0,
490
- cacheWrite: result.usage.costCacheWrite ?? 0,
491
- total: result.usage.cost
492
- }
493
- };
494
- }
495
- function assertCurrentRequest(signal, isCurrent) {
496
- if (signal.aborted || !isCurrent()) throw abortError("Subagent consultation owner was replaced");
497
- }
498
- function abortError(message) {
499
- const error = new Error(message);
500
- error.name = "AbortError";
501
- return error;
502
- }
503
- function requiredString(value, name) {
504
- if (typeof value !== "string" || !value.trim()) {
505
- throw new Error(`subagent_consult requires ${name}`);
506
- }
507
- return value;
508
- }
509
- function optionalScope(value) {
510
- if (value === void 0) return "user";
511
- if (value === "user" || value === "project" || value === "both") return value;
512
- throw new Error("subagent_consult agentScope must be user, project, or both");
513
- }
514
- export {
515
- SubagentConsultParams,
516
- executeSubagentConsult,
517
- registerSubagentConsult
518
- };
519
- //# sourceMappingURL=consult-LJU3IQY5.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/consult.ts", "../../src/consult-resources.ts"],
4
- "sourcesContent": ["import * as path from \"node:path\";\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport type { Usage } from \"@earendil-works/pi-ai\";\nimport { CONFIG_DIR_NAME, type ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { DEFAULT_AGENT_CATALOG_MAX_ITEMS } from \"./agents/catalog.js\";\nimport { type AgentDiscoveryResult, discoverAgents } from \"./agents/discovery.js\";\nimport {\n\ttype AgentConfig,\n\ttype AgentScope,\n\ttype ConsultResourcePolicy,\n\tisThinkingLevel,\n\ttype SubagentSettings,\n\ttype THINKING_LEVELS,\n} from \"./agents/types.js\";\nimport { resolveConsultTools } from \"./consult-policy.js\";\nimport { resolveConsultResourceLaunchPolicy } from \"./consult-resources.js\";\nimport type {\n\tConsultDetails,\n\tConsultProgress,\n\tConsultProgressActivity,\n\tSubagentConsultParams,\n} from \"./consult-tool.js\";\nimport {\n\tassertConsultationTargetAllowed,\n\ttype ResolvedSubagentTarget,\n\tresolveSubagentTarget,\n} from \"./cwd-policy.js\";\nimport {\n\tassertSubagentDepthAllowed,\n\tresolveDefaultSubagentTimeoutMs,\n} from \"./execution/runtime-policy.js\";\nimport {\n\tDEFAULT_MAX_CONTEXT_BYTES,\n\tDEFAULT_MAX_STDERR_BYTES,\n\tMAX_SUBAGENT_TIMEOUT_MS,\n} from \"./limits.js\";\nimport { getResultFinalOutput, isResultError, runSingleAgent } from \"./runner.js\";\nimport type { ChildLaunchPolicy, SingleResult } from \"./runner-types.js\";\nimport { boundedPrivateText, boundText, safeDisplayPath, safeTerminalLine } from \"./safe-text.js\";\nimport {\n\tDEFAULT_CONSULT_RESOURCE_POLICY,\n\tDEFAULT_CONSULTATION_CWD_POLICY,\n} from \"./settings/inspection.js\";\nimport { resolveSubagentThinkingLevel } from \"./settings.js\";\nimport type { SubagentDetails } from \"./subagent-details.js\";\n\nexport { registerSubagentConsult } from \"./consult-registration.js\";\nexport type {\n\tConsultDetails,\n\tConsultProgress,\n\tConsultProgressActivity,\n} from \"./consult-tool.js\";\nexport { SubagentConsultParams } from \"./consult-tool.js\";\n\nexport interface ConsultChildRequest {\n\tagent: AgentConfig;\n\ttask: string;\n\tcwd: string;\n\tagentScope: AgentScope;\n\tthinkingLevel?: (typeof THINKING_LEVELS)[number];\n\ttimeoutMs: number;\n\teffectiveTools: string[];\n\tresourcePolicy: ConsultResourcePolicy;\n\tlaunchPolicy: ChildLaunchPolicy;\n\tsignal: AbortSignal;\n\tonUpdate?: (result: SingleResult) => void;\n}\n\nexport interface RegisterSubagentConsultOptions {\n\tgetSettings(): SubagentSettings | undefined;\n\trunChild?: (request: ConsultChildRequest) => Promise<SingleResult>;\n\tinvocationOverride?: { command: string; argsPrefix?: string[] };\n\tresolveResourceLaunchPolicy?: typeof resolveConsultResourceLaunchPolicy;\n}\n\nconst READ_ONLY_INSTRUCTION = [\n\t\"This is a read-only consultation.\",\n\t\"Use only the tools made available by the executor to inspect and reason about existing content.\",\n\t\"Do not claim to edit files, run shell commands, mutate state, or persist a session.\",\n\t\"If the task asks for implementation, return analysis or instructions instead of claiming changes.\",\n].join(\"\\n\");\n\nconst MAX_UNKNOWN_AGENT_NAME_BYTES = 128;\n\nexport async function executeSubagentConsult(\n\tparams: SubagentConsultParams,\n\tsignal: AbortSignal,\n\tonUpdate: ((partial: AgentToolResult<ConsultDetails>) => void) | undefined,\n\tctx: ExtensionContext,\n\toptions: RegisterSubagentConsultOptions,\n\tisCurrent: () => boolean = () => true,\n): Promise<AgentToolResult<ConsultDetails>> {\n\tconst operation = validateConsultParams(params);\n\tassertSubagentDepthAllowed();\n\tif (signal.aborted) throw abortError(\"Subagent consultation was aborted before start\");\n\treturn executeConsult(\n\t\toperation,\n\t\tctx,\n\t\tsignal,\n\t\toptions,\n\t\t(partial) => {\n\t\t\tif (signal.aborted || !isCurrent()) return;\n\t\t\tonUpdate?.(partial);\n\t\t},\n\t\tisCurrent,\n\t\t() => undefined,\n\t);\n}\n\nfunction formatAvailableConsultAgents(discovery: AgentDiscoveryResult): string {\n\tconst listed = discovery.agents.slice(0, DEFAULT_AGENT_CATALOG_MAX_ITEMS);\n\tconst labels = listed.map(\n\t\t(agent) => `${safeTerminalLine(agent.name, MAX_UNKNOWN_AGENT_NAME_BYTES)} (${agent.source})`,\n\t);\n\tconst omitted =\n\t\tdiscovery.agents.length - listed.length + (discovery.omittedAgentDefinitions ?? 0);\n\tconst parts = [labels.join(\", \") || \"none\"];\n\tif (omitted > 0) {\n\t\tparts.push(`[${omitted} additional agent definition${omitted === 1 ? \"\" : \"s\"} omitted.]`);\n\t}\n\tif (discovery.metadataDiscoveryIncomplete) {\n\t\tparts.push(\"[Agent metadata discovery was incomplete; some definitions may be unavailable.]\");\n\t}\n\treturn parts.join(\" \");\n}\n\nfunction validateConsultParams(\n\tparams: unknown,\n): Required<Pick<SubagentConsultParams, \"agent\" | \"task\" | \"agentScope\" | \"confirmProjectAgents\">> &\n\tPick<SubagentConsultParams, \"cwd\" | \"timeoutMs\" | \"thinkingLevel\"> {\n\tif (!params || typeof params !== \"object\" || Array.isArray(params)) {\n\t\tthrow new Error(\"subagent_consult parameters must be an object\");\n\t}\n\tconst values = params as Record<string, unknown>;\n\tconst allowed = [\n\t\t\"agent\",\n\t\t\"task\",\n\t\t\"agentScope\",\n\t\t\"confirmProjectAgents\",\n\t\t\"cwd\",\n\t\t\"timeoutMs\",\n\t\t\"thinkingLevel\",\n\t];\n\tconst unexpected = Object.keys(values).find(\n\t\t(key) => values[key] !== undefined && !allowed.includes(key),\n\t);\n\tif (unexpected) throw new Error(`subagent_consult does not accept ${unexpected}`);\n\tconst agent = requiredString(values.agent, \"agent\");\n\tconst task = requiredString(values.task, \"task\");\n\tif (task.includes(\"\\0\")) throw new Error(\"subagent_consult task must not contain NUL bytes\");\n\tif (Buffer.byteLength(task, \"utf8\") > DEFAULT_MAX_CONTEXT_BYTES) {\n\t\tthrow new Error(\n\t\t\t`subagent_consult task must be at most ${DEFAULT_MAX_CONTEXT_BYTES} UTF-8 bytes`,\n\t\t);\n\t}\n\tconst agentScope = optionalScope(values.agentScope);\n\tif (\n\t\tvalues.confirmProjectAgents !== undefined &&\n\t\ttypeof values.confirmProjectAgents !== \"boolean\"\n\t) {\n\t\tthrow new Error(\"subagent_consult confirmProjectAgents must be boolean\");\n\t}\n\tif (values.cwd !== undefined && (typeof values.cwd !== \"string\" || !values.cwd.trim())) {\n\t\tthrow new Error(\"subagent_consult cwd must be a non-empty string\");\n\t}\n\tif (\n\t\tvalues.timeoutMs !== undefined &&\n\t\t(typeof values.timeoutMs !== \"number\" ||\n\t\t\t!Number.isFinite(values.timeoutMs) ||\n\t\t\tvalues.timeoutMs < 1 ||\n\t\t\tvalues.timeoutMs > MAX_SUBAGENT_TIMEOUT_MS)\n\t) {\n\t\tthrow new Error(`subagent_consult timeoutMs must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}`);\n\t}\n\tif (values.thinkingLevel !== undefined && !isThinkingLevel(values.thinkingLevel)) {\n\t\tthrow new Error(\"subagent_consult thinkingLevel is invalid\");\n\t}\n\treturn {\n\t\tagent,\n\t\ttask,\n\t\tagentScope,\n\t\tconfirmProjectAgents: values.confirmProjectAgents !== false,\n\t\tcwd: values.cwd as string | undefined,\n\t\ttimeoutMs: values.timeoutMs as number | undefined,\n\t\tthinkingLevel: values.thinkingLevel as (typeof THINKING_LEVELS)[number] | undefined,\n\t};\n}\n\nasync function executeConsult(\n\toperation: ReturnType<typeof validateConsultParams>,\n\tctx: ExtensionContext,\n\tsignal: AbortSignal,\n\toptions: RegisterSubagentConsultOptions,\n\temitUpdate: (partial: AgentToolResult<ConsultDetails>) => void,\n\tisCurrent: () => boolean,\n\ttrackWork: (work: Promise<unknown>) => void,\n): Promise<AgentToolResult<ConsultDetails>> {\n\tif (\n\t\t(operation.agentScope === \"project\" || operation.agentScope === \"both\") &&\n\t\t!ctx.isProjectTrusted()\n\t) {\n\t\tthrow new Error(\"Project-local subagent definitions require a trusted project\");\n\t}\n\tconst settings = options.getSettings();\n\tconst target = resolveSubagentTarget({\n\t\tworkspace: ctx.cwd,\n\t\trequestedCwd: operation.cwd,\n\t\tcurrentProjectTrusted: ctx.isProjectTrusted(),\n\t});\n\tassertConsultationTargetAllowed(\n\t\ttarget,\n\t\tsettings?.cwdPolicy?.consultation ?? DEFAULT_CONSULTATION_CWD_POLICY,\n\t);\n\tconst discovery = discoverAgents(ctx.cwd, operation.agentScope, settings);\n\tconst agent = discovery.agents.find((candidate) => candidate.name === operation.agent);\n\tif (!agent) {\n\t\tthrow new Error(\n\t\t\t`Unknown subagent definition: ${boundedPrivateText(operation.agent, 256)}. ` +\n\t\t\t\t`Available agents for agentScope \"${operation.agentScope}\": ${formatAvailableConsultAgents(discovery)}`,\n\t\t);\n\t}\n\tconst setupWork = resolveConsultSetup(operation, agent, settings, target, options);\n\ttrackWork(setupWork);\n\tconst setup = await setupWork;\n\tassertCurrentRequest(signal, isCurrent);\n\n\tif (agent.source === \"project\" && operation.confirmProjectAgents) {\n\t\tif (!ctx.hasUI) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Project-local subagent confirmation requires UI; pass confirmProjectAgents: false explicitly in a trusted project\",\n\t\t\t);\n\t\t}\n\t\tconst approved = await ctx.ui.confirm(\n\t\t\t\"Run project-local read-only agent?\",\n\t\t\t`Agent: ${safeTerminalLine(agent.name, 256)}\\nSource: ${safeTerminalLine(path.posix.join(CONFIG_DIR_NAME, \"agents\", path.basename(agent.filePath)))}`,\n\t\t);\n\t\tassertCurrentRequest(signal, isCurrent);\n\t\tif (!approved) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"Read-only subagent consultation cancelled.\" }],\n\t\t\t\tdetails: { ...setup.details, cancelled: true },\n\t\t\t};\n\t\t}\n\t}\n\tassertCurrentRequest(signal, isCurrent);\n\temitUpdate(consultStartingUpdate(setup.details));\n\tassertCurrentRequest(signal, isCurrent);\n\tconst runChild = options.runChild ?? ((request) => runConsultChild(request, options));\n\tconst child = runChild({\n\t\tagent: setup.agent,\n\t\ttask: operation.task,\n\t\tcwd: setup.cwd,\n\t\tagentScope: operation.agentScope,\n\t\tthinkingLevel: setup.thinkingLevel,\n\t\ttimeoutMs: setup.timeoutMs,\n\t\teffectiveTools: setup.effectiveTools,\n\t\tresourcePolicy: setup.resourcePolicy,\n\t\tlaunchPolicy: setup.launchPolicy,\n\t\tsignal,\n\t\tonUpdate: (result) => {\n\t\t\tif (signal.aborted || !isCurrent()) return;\n\t\t\temitUpdate(consultUpdate(result, setup.details));\n\t\t},\n\t});\n\ttrackWork(child);\n\tconst result = await child;\n\tif (!isCurrent()) throw abortError(\"Subagent consultation owner was replaced\");\n\tif (result.aborted && !result.processStarted) {\n\t\tthrow abortError(result.errorMessage || \"Subagent consultation was aborted before launch\");\n\t}\n\tif (result.launchFailed) {\n\t\tthrow new Error(\n\t\t\tboundedPrivateText(\n\t\t\t\tresult.errorMessage || result.stderr.trim() || \"Subagent consultation failed to launch\",\n\t\t\t\t2 * 1024,\n\t\t\t),\n\t\t);\n\t}\n\tconst error = isResultError(result);\n\tconst output = error\n\t\t? formatConsultFailure(result)\n\t\t: getResultFinalOutput(result) || \"(no output)\";\n\tconst bounded = boundText(output);\n\tconst details: ConsultDetails = {\n\t\t...setup.details,\n\t\tchild: projectChildResult(result),\n\t\t...(error ? { isError: true } : {}),\n\t\t...(bounded.truncated ? { truncated: true } : {}),\n\t};\n\treturn {\n\t\tcontent: [{ type: \"text\", text: bounded.text }],\n\t\tdetails,\n\t\tusage: usageFromResult(result),\n\t};\n}\n\nasync function resolveConsultSetup(\n\toperation: ReturnType<typeof validateConsultParams>,\n\tagent: AgentConfig,\n\tsettings: SubagentSettings | undefined,\n\ttarget: ResolvedSubagentTarget,\n\toptions: RegisterSubagentConsultOptions,\n) {\n\tconst requestedResourcePolicy = settings?.consult?.resources ?? DEFAULT_CONSULT_RESOURCE_POLICY;\n\tconst resourcePolicy = target.trust.projectTrusted ? requestedResourcePolicy : \"none\";\n\tconst effectiveTools = resolveConsultTools(agent.tools);\n\tconst projectTrusted = target.trust.projectTrusted;\n\tconst thinkingLevel = resolveSubagentThinkingLevel([agent], agent.name, operation.thinkingLevel);\n\tconst timeoutMs = operation.timeoutMs ?? agent.timeoutMs ?? resolveDefaultSubagentTimeoutMs();\n\tif (!Number.isFinite(timeoutMs) || timeoutMs < 1 || timeoutMs > MAX_SUBAGENT_TIMEOUT_MS) {\n\t\tthrow new Error(\n\t\t\t`Subagent consultation timeout must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}ms`,\n\t\t);\n\t}\n\tconst resolveResources =\n\t\toptions.resolveResourceLaunchPolicy ?? resolveConsultResourceLaunchPolicy;\n\tconst launchPolicy = await resolveResources(resourcePolicy, projectTrusted, target.cwd);\n\tlaunchPolicy.tools = effectiveTools;\n\tconst childAgent: AgentConfig = {\n\t\t...agent,\n\t\ttools: effectiveTools,\n\t\tsystemPrompt: [agent.systemPrompt, READ_ONLY_INSTRUCTION].filter(Boolean).join(\"\\n\\n\"),\n\t};\n\tconst effectiveResources = {\n\t\tpolicy: resourcePolicy,\n\t\tprojectResources: projectTrusted && resourcePolicy !== \"none\",\n\t\tcontextFiles: !launchPolicy.disableContextFiles,\n\t\tskills: !launchPolicy.disableSkills,\n\t\tpromptTemplates: !launchPolicy.disablePromptTemplates,\n\t};\n\tconst details: ConsultDetails = {\n\t\tagent: boundedPrivateText(agent.name, 256),\n\t\tagentSource: agent.source,\n\t\tagentScope: operation.agentScope,\n\t\tcwd: safeDisplayPath(target.cwd, target.workspace),\n\t\tmodel: agent.model ? boundedPrivateText(agent.model, 256) : undefined,\n\t\tthinkingLevel,\n\t\ttimeoutMs,\n\t\tpolicy: {\n\t\t\trequestedTools:\n\t\t\t\tagent.tools === undefined\n\t\t\t\t\t? null\n\t\t\t\t\t: agent.tools.slice(0, 100).map((tool) => boundedPrivateText(tool, 256)),\n\t\t\teffectiveTools,\n\t\t\tcwdBoundary: target.boundary,\n\t\t\ttargetTrust: {\n\t\t\t\tkind: target.trust.kind,\n\t\t\t\tprojectTrusted,\n\t\t\t\tsourcePath: target.trust.sourcePath\n\t\t\t\t\t? safeDisplayPath(target.trust.sourcePath, target.workspace)\n\t\t\t\t\t: undefined,\n\t\t\t\twarning: target.trust.warning,\n\t\t\t},\n\t\t\trequestedResources: requestedResourcePolicy,\n\t\t\teffectiveResources,\n\t\t\t...(resourcePolicy !== requestedResourcePolicy\n\t\t\t\t? { resourceDowngradeReason: `Target trust is ${target.trust.kind}` }\n\t\t\t\t: {}),\n\t\t\textensions: \"disabled\",\n\t\t\tsessionPersistence: \"disabled\",\n\t\t\tretainedAgent: false,\n\t\t},\n\t};\n\treturn {\n\t\tagent: childAgent,\n\t\tcwd: target.cwd,\n\t\tresourcePolicy,\n\t\teffectiveTools,\n\t\tthinkingLevel,\n\t\ttimeoutMs,\n\t\tlaunchPolicy,\n\t\tdetails,\n\t};\n}\n\nasync function runConsultChild(\n\trequest: ConsultChildRequest,\n\toptions: RegisterSubagentConsultOptions,\n): Promise<SingleResult> {\n\treturn runSingleAgent(\n\t\trequest.cwd,\n\t\t[request.agent],\n\t\trequest.agent.name,\n\t\trequest.task,\n\t\trequest.cwd,\n\t\tundefined,\n\t\trequest.signal,\n\t\trequest.thinkingLevel,\n\t\trequest.timeoutMs,\n\t\t(partial) => {\n\t\t\tconst result = partial.details.results[0];\n\t\t\tif (result) request.onUpdate?.(result);\n\t\t},\n\t\t(results): SubagentDetails => ({\n\t\t\tmode: \"single\",\n\t\t\tagentScope: request.agentScope,\n\t\t\tprojectAgentsDir: null,\n\t\t\tresults,\n\t\t}),\n\t\toptions.invocationOverride,\n\t\trequest.launchPolicy,\n\t);\n}\n\nfunction consultStartingUpdate(details: ConsultDetails): AgentToolResult<ConsultDetails> {\n\treturn {\n\t\tcontent: [{ type: \"text\", text: \"Read-only subagent consultation starting.\" }],\n\t\tdetails: {\n\t\t\t...details,\n\t\t\tprogress: {\n\t\t\t\tphase: \"starting\",\n\t\t\t\trecentActivity: [],\n\t\t\t\trecentActivityTotal: 0,\n\t\t\t\tusage: emptyProgressUsage(),\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction consultUpdate(\n\tresult: SingleResult,\n\tdetails: ConsultDetails,\n): AgentToolResult<ConsultDetails> {\n\tconst output = boundText(getResultFinalOutput(result) || \"(running...)\");\n\treturn {\n\t\tcontent: [{ type: \"text\", text: output.text }],\n\t\tdetails: {\n\t\t\t...details,\n\t\t\tchild: projectChildResult(result),\n\t\t\tprogress: projectConsultProgress(result),\n\t\t},\n\t};\n}\n\nconst CONSULT_ACTIVITY_ARGUMENTS: Record<\"read\" | \"grep\" | \"find\" | \"ls\", readonly string[]> = {\n\tread: [\"path\", \"file_path\", \"offset\", \"limit\"],\n\tgrep: [\"pattern\", \"path\", \"glob\", \"limit\"],\n\tfind: [\"pattern\", \"path\", \"limit\"],\n\tls: [\"path\", \"limit\"],\n};\n\nfunction projectConsultProgress(result: SingleResult): ConsultProgress {\n\tconst recentActivity: ConsultProgressActivity[] = [];\n\tfor (const item of result.recentActivity ?? []) {\n\t\tif (item.type === \"text\") {\n\t\t\tconst text = boundedPrivateText(item.text, 1024).trim();\n\t\t\tif (text) recentActivity.push({ type: \"text\", text });\n\t\t\tcontinue;\n\t\t}\n\t\tif (!Object.hasOwn(CONSULT_ACTIVITY_ARGUMENTS, item.name)) continue;\n\t\tconst name = item.name as keyof typeof CONSULT_ACTIVITY_ARGUMENTS;\n\t\tconst args: Record<string, string | number | boolean> = {};\n\t\tfor (const key of CONSULT_ACTIVITY_ARGUMENTS[name]) {\n\t\t\tconst value = item.args[key];\n\t\t\tif (typeof value === \"string\") args[key] = safeTerminalLine(value, 512);\n\t\t\telse if (typeof value === \"number\" && Number.isFinite(value)) args[key] = value;\n\t\t\telse if (typeof value === \"boolean\") args[key] = value;\n\t\t}\n\t\trecentActivity.push({ type: \"toolCall\", name, args });\n\t}\n\treturn {\n\t\tphase: \"running\",\n\t\trecentActivity,\n\t\trecentActivityTotal: Math.max(recentActivity.length, result.recentActivityTotal ?? 0),\n\t\tactualProvider: result.actualProvider\n\t\t\t? boundedPrivateText(result.actualProvider, 256)\n\t\t\t: undefined,\n\t\tactualModel: result.actualModel ? boundedPrivateText(result.actualModel, 256) : undefined,\n\t\tusage: {\n\t\t\tinput: result.usage.input,\n\t\t\toutput: result.usage.output,\n\t\t\tcacheRead: result.usage.cacheRead,\n\t\t\tcacheWrite: result.usage.cacheWrite,\n\t\t\tcost: result.usage.cost,\n\t\t\tcontextTokens: result.usage.contextTokens,\n\t\t\tturns: result.usage.turns,\n\t\t},\n\t};\n}\n\nfunction emptyProgressUsage(): ConsultProgress[\"usage\"] {\n\treturn {\n\t\tinput: 0,\n\t\toutput: 0,\n\t\tcacheRead: 0,\n\t\tcacheWrite: 0,\n\t\tcost: 0,\n\t\tcontextTokens: 0,\n\t\tturns: 0,\n\t};\n}\n\nfunction projectChildResult(result: SingleResult): Record<string, unknown> {\n\treturn {\n\t\texitCode: result.exitCode,\n\t\tstopReason:\n\t\t\ttypeof result.stopReason === \"string\"\n\t\t\t\t? boundedPrivateText(result.stopReason, 256)\n\t\t\t\t: undefined,\n\t\ttimedOut: result.timedOut,\n\t\taborted: result.aborted,\n\t\ttruncated: result.truncated,\n\t\tmalformedEvents: result.malformedEvents,\n\t\tprocessStarted: result.processStarted,\n\t\tactualProvider: result.actualProvider\n\t\t\t? boundedPrivateText(result.actualProvider, 256)\n\t\t\t: undefined,\n\t\tactualModel: result.actualModel ? boundedPrivateText(result.actualModel, 256) : undefined,\n\t\tpartialOutput: result.finalOutput\n\t\t\t? boundedPrivateText(result.finalOutput, 8 * 1024)\n\t\t\t: undefined,\n\t\terror: result.errorMessage ? boundedPrivateText(result.errorMessage, 2 * 1024) : undefined,\n\t\tusage: { ...result.usage },\n\t};\n}\n\nfunction formatConsultFailure(result: SingleResult): string {\n\tconst rawError = result.errorMessage || result.stderr.trim();\n\tconst error = rawError ? boundedPrivateText(rawError, DEFAULT_MAX_STDERR_BYTES) : \"\";\n\tconst output = getResultFinalOutput(result);\n\treturn error && output\n\t\t? `${error}\\n\\nPartial output:\\n${output}`\n\t\t: error || output || \"(no output)\";\n}\n\nfunction usageFromResult(result: SingleResult): Usage {\n\treturn {\n\t\tinput: result.usage.input,\n\t\toutput: result.usage.output,\n\t\tcacheRead: result.usage.cacheRead,\n\t\tcacheWrite: result.usage.cacheWrite,\n\t\ttotalTokens:\n\t\t\tresult.usage.totalTokens ??\n\t\t\tresult.usage.input + result.usage.output + result.usage.cacheRead + result.usage.cacheWrite,\n\t\tcost: {\n\t\t\tinput: result.usage.costInput ?? 0,\n\t\t\toutput: result.usage.costOutput ?? 0,\n\t\t\tcacheRead: result.usage.costCacheRead ?? 0,\n\t\t\tcacheWrite: result.usage.costCacheWrite ?? 0,\n\t\t\ttotal: result.usage.cost,\n\t\t},\n\t};\n}\n\nfunction assertCurrentRequest(signal: AbortSignal, isCurrent: () => boolean): void {\n\tif (signal.aborted || !isCurrent()) throw abortError(\"Subagent consultation owner was replaced\");\n}\n\nfunction abortError(message: string): Error {\n\tconst error = new Error(message);\n\terror.name = \"AbortError\";\n\treturn error;\n}\n\nfunction requiredString(value: unknown, name: string): string {\n\tif (typeof value !== \"string\" || !value.trim()) {\n\t\tthrow new Error(`subagent_consult requires ${name}`);\n\t}\n\treturn value;\n}\n\nfunction optionalScope(value: unknown): AgentScope {\n\tif (value === undefined) return \"user\";\n\tif (value === \"user\" || value === \"project\" || value === \"both\") return value;\n\tthrow new Error(\"subagent_consult agentScope must be user, project, or both\");\n}\n", "import type { ConsultResourcePolicy } from \"./agents/types.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES, truncateUtf8 } from \"./limits.js\";\nimport { resolvePiPromptResources } from \"./prompt-resources.js\";\nimport type { ChildLaunchPolicy } from \"./runner-types.js\";\n\nconst MINIMAL_CONSULT_SYSTEM_PROMPT =\n\t\"You are a read-only consultation assistant. Analyze the delegated task using only executor-provided capabilities and return a grounded answer.\";\n\n/**\n * Resolve Pi-owned prompt files without loading target settings, packages, or extensions.\n * The child still owns context-file, skill, and prompt-template loading according to this policy.\n */\nexport async function resolveConsultResourceLaunchPolicy(\n\tpolicy: ConsultResourcePolicy,\n\tprojectTrusted: boolean,\n\tcwd: string,\n): Promise<ChildLaunchPolicy> {\n\tif (policy === \"none\") {\n\t\treturn {\n\t\t\tdisableExtensions: true,\n\t\t\tdisableSkills: true,\n\t\t\tdisablePromptTemplates: true,\n\t\t\tdisableContextFiles: true,\n\t\t\tprojectTrust: false,\n\t\t\tbaseSystemPrompt: MINIMAL_CONSULT_SYSTEM_PROMPT,\n\t\t};\n\t}\n\n\tconst resources = await resolvePiPromptResources(cwd, projectTrusted);\n\tconst discoveredSystemPrompt = resources.systemPrompt;\n\tconst baseSystemPrompt = discoveredSystemPrompt\n\t\t? truncateUtf8(discoveredSystemPrompt, DEFAULT_MAX_CONTEXT_BYTES).text\n\t\t: undefined;\n\tconst appendSystemPromptPaths = resources.appendSystemPromptPaths;\n\tconst shared = {\n\t\tdisableExtensions: true,\n\t\tdisableContextFiles: !projectTrusted,\n\t\tprojectTrust: projectTrusted,\n\t\tbaseSystemPrompt,\n\t\tappendSystemPromptPaths:\n\t\t\tappendSystemPromptPaths.length > 0 ? appendSystemPromptPaths : undefined,\n\t};\n\tif (policy === \"project-context\") {\n\t\treturn {\n\t\t\t...shared,\n\t\t\tdisableSkills: true,\n\t\t\tdisablePromptTemplates: true,\n\t\t};\n\t}\n\treturn shared;\n}\n"],
5
- "mappings": "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",
6
- "names": ["result"]
7
- }
@@ -1,11 +0,0 @@
1
- // @generated by scripts/build-runtime.mjs; do not edit.
2
- // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
- import {
4
- buildContextSnapshot,
5
- redactPrivateText
6
- } from "./chunk-H3FP6DLR.ts";
7
- export {
8
- buildContextSnapshot,
9
- redactPrivateText
10
- };
11
- //# sourceMappingURL=context-QDKLVQXE.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }