@ashx-j/lunr 0.2.24 → 0.2.26

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 (254) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/dist/builtin-extensions/index.d.ts.map +1 -1
  3. package/dist/builtin-extensions/index.js +1 -0
  4. package/dist/builtin-extensions/index.js.map +1 -1
  5. package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
  6. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
  7. package/dist/builtin-extensions/lunr-computer-use.js +179 -0
  8. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
  9. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  10. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +1 -1
  11. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  12. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -4
  13. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  14. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +8 -5
  15. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  16. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +1 -0
  17. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  18. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +11 -2
  19. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +3 -3
  22. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  23. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +15 -1
  25. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.d.ts +1 -0
  27. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.d.ts.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.js +5 -0
  29. package/dist/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.js.map +1 -1
  30. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
  31. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
  32. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
  33. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
  34. package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts.map +1 -1
  35. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js +1 -1
  36. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js.map +1 -1
  37. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +1 -0
  38. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +5 -3
  40. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  41. package/dist/core/computer-use/adapter.d.ts +28 -0
  42. package/dist/core/computer-use/adapter.d.ts.map +1 -0
  43. package/dist/core/computer-use/adapter.js +133 -0
  44. package/dist/core/computer-use/adapter.js.map +1 -0
  45. package/dist/core/computer-use/image.d.ts +27 -0
  46. package/dist/core/computer-use/image.d.ts.map +1 -0
  47. package/dist/core/computer-use/image.js +72 -0
  48. package/dist/core/computer-use/image.js.map +1 -0
  49. package/dist/core/computer-use/lease.d.ts +18 -0
  50. package/dist/core/computer-use/lease.d.ts.map +1 -0
  51. package/dist/core/computer-use/lease.js +129 -0
  52. package/dist/core/computer-use/lease.js.map +1 -0
  53. package/dist/core/computer-use/macos-runtime.d.ts +14 -0
  54. package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
  55. package/dist/core/computer-use/macos-runtime.js +148 -0
  56. package/dist/core/computer-use/macos-runtime.js.map +1 -0
  57. package/dist/core/computer-use/policy.d.ts +19 -0
  58. package/dist/core/computer-use/policy.d.ts.map +1 -0
  59. package/dist/core/computer-use/policy.js +67 -0
  60. package/dist/core/computer-use/policy.js.map +1 -0
  61. package/dist/core/computer-use/release.generated.d.ts +31 -0
  62. package/dist/core/computer-use/release.generated.d.ts.map +1 -0
  63. package/dist/core/computer-use/release.generated.js +36 -0
  64. package/dist/core/computer-use/release.generated.js.map +1 -0
  65. package/dist/core/computer-use/runtime.d.ts +13 -0
  66. package/dist/core/computer-use/runtime.d.ts.map +1 -0
  67. package/dist/core/computer-use/runtime.js +158 -0
  68. package/dist/core/computer-use/runtime.js.map +1 -0
  69. package/dist/core/computer-use/schemas.d.ts +100 -0
  70. package/dist/core/computer-use/schemas.d.ts.map +1 -0
  71. package/dist/core/computer-use/schemas.js +79 -0
  72. package/dist/core/computer-use/schemas.js.map +1 -0
  73. package/dist/core/computer-use/windows-desktop.d.ts +3 -0
  74. package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
  75. package/dist/core/computer-use/windows-desktop.js +48 -0
  76. package/dist/core/computer-use/windows-desktop.js.map +1 -0
  77. package/dist/core/computer-use/workflow.d.ts +38 -0
  78. package/dist/core/computer-use/workflow.d.ts.map +1 -0
  79. package/dist/core/computer-use/workflow.js +560 -0
  80. package/dist/core/computer-use/workflow.js.map +1 -0
  81. package/dist/core/extensions/loader.d.ts.map +1 -1
  82. package/dist/core/extensions/loader.js +4 -0
  83. package/dist/core/extensions/loader.js.map +1 -1
  84. package/dist/core/permissions.d.ts +1 -1
  85. package/dist/core/permissions.d.ts.map +1 -1
  86. package/dist/core/permissions.js +14 -3
  87. package/dist/core/permissions.js.map +1 -1
  88. package/dist/core/plan-mode.d.ts.map +1 -1
  89. package/dist/core/plan-mode.js +9 -0
  90. package/dist/core/plan-mode.js.map +1 -1
  91. package/dist/core/settings-manager.d.ts +6 -0
  92. package/dist/core/settings-manager.d.ts.map +1 -1
  93. package/dist/core/settings-manager.js +19 -0
  94. package/dist/core/settings-manager.js.map +1 -1
  95. package/dist/core/subagent-event-transport.d.ts +3 -0
  96. package/dist/core/subagent-event-transport.d.ts.map +1 -0
  97. package/dist/core/subagent-event-transport.js +61 -0
  98. package/dist/core/subagent-event-transport.js.map +1 -0
  99. package/dist/gateway/adapters/discord.d.ts.map +1 -1
  100. package/dist/gateway/adapters/discord.js +4 -9
  101. package/dist/gateway/adapters/discord.js.map +1 -1
  102. package/dist/gateway/adapters/telegram.d.ts.map +1 -1
  103. package/dist/gateway/adapters/telegram.js +7 -0
  104. package/dist/gateway/adapters/telegram.js.map +1 -1
  105. package/dist/gateway/agent-bridge.d.ts +4 -1
  106. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  107. package/dist/gateway/agent-bridge.js +57 -17
  108. package/dist/gateway/agent-bridge.js.map +1 -1
  109. package/dist/gateway/approval.d.ts.map +1 -1
  110. package/dist/gateway/approval.js +3 -3
  111. package/dist/gateway/approval.js.map +1 -1
  112. package/dist/gateway/authz.d.ts +4 -4
  113. package/dist/gateway/authz.d.ts.map +1 -1
  114. package/dist/gateway/authz.js +8 -12
  115. package/dist/gateway/authz.js.map +1 -1
  116. package/dist/gateway/buttons.d.ts.map +1 -1
  117. package/dist/gateway/buttons.js +29 -19
  118. package/dist/gateway/buttons.js.map +1 -1
  119. package/dist/gateway/commands.d.ts +2 -0
  120. package/dist/gateway/commands.d.ts.map +1 -1
  121. package/dist/gateway/commands.js +35 -18
  122. package/dist/gateway/commands.js.map +1 -1
  123. package/dist/gateway/config.d.ts +1 -0
  124. package/dist/gateway/config.d.ts.map +1 -1
  125. package/dist/gateway/config.js +2 -0
  126. package/dist/gateway/config.js.map +1 -1
  127. package/dist/gateway/cron.d.ts +1 -1
  128. package/dist/gateway/cron.d.ts.map +1 -1
  129. package/dist/gateway/cron.js +22 -8
  130. package/dist/gateway/cron.js.map +1 -1
  131. package/dist/gateway/index.d.ts.map +1 -1
  132. package/dist/gateway/index.js +26 -26
  133. package/dist/gateway/index.js.map +1 -1
  134. package/dist/gateway/mobile-commands.d.ts.map +1 -1
  135. package/dist/gateway/mobile-commands.js +11 -11
  136. package/dist/gateway/mobile-commands.js.map +1 -1
  137. package/dist/gateway/presenter.d.ts +12 -1
  138. package/dist/gateway/presenter.d.ts.map +1 -1
  139. package/dist/gateway/presenter.js +148 -50
  140. package/dist/gateway/presenter.js.map +1 -1
  141. package/dist/gateway/router.d.ts +5 -5
  142. package/dist/gateway/router.d.ts.map +1 -1
  143. package/dist/gateway/router.js +95 -43
  144. package/dist/gateway/router.js.map +1 -1
  145. package/dist/gateway/service.d.ts.map +1 -1
  146. package/dist/gateway/service.js +13 -4
  147. package/dist/gateway/service.js.map +1 -1
  148. package/dist/gateway/setup.d.ts +5 -0
  149. package/dist/gateway/setup.d.ts.map +1 -1
  150. package/dist/gateway/setup.js +101 -43
  151. package/dist/gateway/setup.js.map +1 -1
  152. package/dist/gateway/stream.d.ts +6 -5
  153. package/dist/gateway/stream.d.ts.map +1 -1
  154. package/dist/gateway/stream.js +24 -11
  155. package/dist/gateway/stream.js.map +1 -1
  156. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  157. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  158. package/dist/modes/interactive/components/settings-selector.js +20 -0
  159. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  160. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  161. package/dist/modes/interactive/interactive-mode.js +8 -0
  162. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  163. package/dist/modes/print-mode.d.ts.map +1 -1
  164. package/dist/modes/print-mode.js +9 -1
  165. package/dist/modes/print-mode.js.map +1 -1
  166. package/dist/node-runtime/adapter-VFG7WNPX.js +17 -0
  167. package/dist/node-runtime/{agent-session-services-IEF7LQWD.js → agent-session-services-5YXS2PLF.js} +13 -10
  168. package/dist/node-runtime/{builtin-extensions-EBAWTH4M.js → builtin-extensions-I2HIFEMY.js} +3 -2
  169. package/dist/node-runtime/{chunk-K5AGHH57.js → chunk-2CFDTH5B.js} +7 -3
  170. package/dist/node-runtime/{chunk-VWCE2HSZ.js → chunk-2HMIRK7W.js} +4 -4
  171. package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
  172. package/dist/node-runtime/{chunk-IGV54Q5V.js → chunk-3MISGG4S.js} +137 -76
  173. package/dist/node-runtime/chunk-4SBQAI4T.js +2185 -0
  174. package/dist/node-runtime/{chunk-WHLRAGUQ.js → chunk-5B5QN3ZQ.js} +16 -16
  175. package/dist/node-runtime/chunk-5B6VKFEV.js +180 -0
  176. package/dist/node-runtime/{chunk-AD6VXAO7.js → chunk-5Q4A37RB.js} +15 -104
  177. package/dist/node-runtime/{chunk-4TLO4PO2.js → chunk-7IQGBKBJ.js} +7 -1401
  178. package/dist/node-runtime/{chunk-R3K2F5GI.js → chunk-B4HP6ZWM.js} +2 -0
  179. package/dist/node-runtime/{chunk-OCVIXVTZ.js → chunk-D5UCKPBQ.js} +12 -1
  180. package/dist/node-runtime/chunk-DVQSHCVP.js +97 -0
  181. package/dist/node-runtime/{chunk-HFVZUPFJ.js → chunk-E75WFZ33.js} +2 -2
  182. package/dist/node-runtime/chunk-FY4A63RK.js +73 -0
  183. package/dist/node-runtime/{chunk-RORY2HMJ.js → chunk-I74LN5JG.js} +16 -1
  184. package/dist/node-runtime/chunk-IKU6Y7DL.js +287 -0
  185. package/dist/node-runtime/{chunk-QM43FEAE.js → chunk-L24TPBS4.js} +6 -5
  186. package/dist/node-runtime/{chunk-DE2JB6J5.js → chunk-LJTIVM7I.js} +7 -7
  187. package/dist/node-runtime/{chunk-DSIKTUPW.js → chunk-LWJXTA6Z.js} +274 -2433
  188. package/dist/node-runtime/{chunk-YVI6L6LU.js → chunk-P7XBVXGT.js} +36 -21
  189. package/dist/node-runtime/{chunk-OVX6X377.js → chunk-PTFBPO3C.js} +1 -1
  190. package/dist/node-runtime/{chunk-F4FLTQKV.js → chunk-RAK2QA2B.js} +186 -1529
  191. package/dist/node-runtime/{chunk-L3LX4SNR.js → chunk-RCR3XAQY.js} +36 -8
  192. package/dist/node-runtime/chunk-RGQAEOM5.js +81 -0
  193. package/dist/node-runtime/{chunk-UWPJL22I.js → chunk-SLVOAQOY.js} +15 -4
  194. package/dist/node-runtime/chunk-SN2KSMPQ.js +1364 -0
  195. package/dist/node-runtime/{chunk-FU6OODRZ.js → chunk-SPVDBUOS.js} +1 -1
  196. package/dist/node-runtime/{chunk-5Q3EHOHI.js → chunk-T4DA4XE7.js} +19 -17
  197. package/dist/node-runtime/chunk-U5F4IC7R.js +53 -0
  198. package/dist/node-runtime/{chunk-UP2XBVH5.js → chunk-UOEDI7RP.js} +1 -1
  199. package/dist/node-runtime/{chunk-Y73WPE6S.js → chunk-UVWCDQYF.js} +79 -44
  200. package/dist/node-runtime/{chunk-ZXSGTGJ6.js → chunk-WIF24I7G.js} +21 -5
  201. package/dist/node-runtime/{chunk-OF7PWMG4.js → chunk-X3PGBLQ7.js} +3 -87
  202. package/dist/node-runtime/chunk-XHIRAZ26.js +108 -0
  203. package/dist/node-runtime/{chunk-YDO2F2IA.js → chunk-YWOJIGFY.js} +1 -1
  204. package/dist/node-runtime/{command-7BG7VVTS.js → command-FSBU2EVZ.js} +5 -5
  205. package/dist/node-runtime/{commands-NZLSOHPE.js → commands-EMBQQVVT.js} +4 -2
  206. package/dist/node-runtime/{commands-QFDKNQTL.js → commands-NAAL7KNT.js} +7 -6
  207. package/dist/node-runtime/{config-RORQUQFG.js → config-D4QUPAHX.js} +1 -1
  208. package/dist/node-runtime/{direct-tool-executor-77GW4F5P.js → direct-tool-executor-4D7UXYU4.js} +7 -4
  209. package/dist/node-runtime/{gateway-TWR3N65G.js → gateway-DQM333YV.js} +140 -85
  210. package/dist/node-runtime/index.js +28 -21
  211. package/dist/node-runtime/{init-HS6NQXSK.js → init-P5AUV77I.js} +4 -2
  212. package/dist/node-runtime/{install-cli-VAP6KBFN.js → install-cli-NN4YAU44.js} +3 -3
  213. package/dist/node-runtime/{interactive-mode-6J5VZ2TT.js → interactive-mode-YOHZVMKX.js} +14 -11
  214. package/dist/node-runtime/{lunr-browser-J5ZZYVGM.js → lunr-browser-IR7TL3J7.js} +3 -3
  215. package/dist/node-runtime/lunr-computer-use-Y23CCDIJ.js +158 -0
  216. package/dist/node-runtime/{lunr-cron-CXOL37AL.js → lunr-cron-USHC4LXH.js} +9 -7
  217. package/dist/node-runtime/main.js +19 -15
  218. package/dist/node-runtime/{mcp-auth-flow-QIXHW6QN.js → mcp-auth-flow-QVLFVLEO.js} +2 -1
  219. package/dist/node-runtime/{mobile-commands-VTBM5DSZ.js → mobile-commands-O5LCHL32.js} +6 -5
  220. package/dist/node-runtime/{package-manager-cli-ZLW5DZXF.js → package-manager-cli-Q7BL6KZO.js} +12 -8
  221. package/dist/node-runtime/{pi-mcp-adapter-5UKBZP44.js → pi-mcp-adapter-3PHF4KZ4.js} +5 -5
  222. package/dist/node-runtime/{pi-subagents-XPCLLKIM.js → pi-subagents-7IBSSGEW.js} +27 -21
  223. package/dist/node-runtime/{print-mode-XSFM26EL.js → print-mode-XQ76CYMT.js} +2 -1
  224. package/dist/node-runtime/{proxy-modes-LGEUYD7R.js → proxy-modes-5FAPSZEZ.js} +7 -4
  225. package/dist/node-runtime/rpc-entry.js +19 -15
  226. package/dist/node-runtime/runtime-EFPPD2UW.js +21 -0
  227. package/dist/node-runtime/{runtime-bridges-QYXUX2TG.js → runtime-bridges-7WVCLI76.js} +6 -5
  228. package/dist/node-runtime/{service-ISSP6VHE.js → service-MDQIPQ26.js} +1 -1
  229. package/dist/node-runtime/{settings-manager-WCQDUVQB.js → settings-manager-DJDM5AHM.js} +5 -4
  230. package/dist/node-runtime/setup-PFBWRNUI.js +215 -0
  231. package/dist/node-runtime/{subagent-executor-OTNISDQU.js → subagent-executor-LPZ4BHWE.js} +32 -14
  232. package/dist/node-runtime/{update-cli-VBR2777K.js → update-cli-HNMOTNGX.js} +5 -4
  233. package/dist/node-runtime/workflow-OHPBEFO4.js +637 -0
  234. package/dist/utils/image-resize-core.d.ts +2 -0
  235. package/dist/utils/image-resize-core.d.ts.map +1 -1
  236. package/dist/utils/image-resize-core.js +10 -0
  237. package/dist/utils/image-resize-core.js.map +1 -1
  238. package/docs/computer-use.md +362 -0
  239. package/docs/features.md +9 -7
  240. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  241. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  242. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  243. package/examples/extensions/gondolin/package-lock.json +2 -2
  244. package/examples/extensions/gondolin/package.json +1 -1
  245. package/examples/extensions/sandbox/package-lock.json +2 -2
  246. package/examples/extensions/sandbox/package.json +1 -1
  247. package/examples/extensions/with-deps/package-lock.json +2 -2
  248. package/examples/extensions/with-deps/package.json +1 -1
  249. package/install-lock/package-lock.json +3841 -0
  250. package/install-lock/package.json +18 -0
  251. package/native/computer-use/LICENSE.md +21 -0
  252. package/npm-shrinkwrap.json +3822 -0
  253. package/package.json +15 -9
  254. package/dist/node-runtime/setup-YRBKH2LD.js +0 -155
@@ -1 +1 @@
1
- {"version":3,"file":"chain-outputs.d.ts","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,KAAK,SAAS,EAAuB,MAAM,0BAA0B,CAAC;AACtH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/F,OAAO,EAA8C,KAAK,mBAAmB,EAA4B,MAAM,qBAAqB,CAAC;AAKrI,qBAAa,0BAA2B,SAAQ,KAAK;CAAG;AAExD,MAAM,WAAW,4BAA4B;IAC5C,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAE,mBAAwB,GAAG,IAAI,CAEnH;AAED,wBAAgB,sCAAsC,CACrD,KAAK,EAAE,SAAS,EAAE,EAClB,mBAAmB,GAAE,mBAAwB,EAC7C,OAAO,GAAE,4BAAiC,GACxC,IAAI,CA8CN;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CASzF;AAMD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOlG;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOxJ","sourcesContent":["// @ts-nocheck\nimport { isDynamicParallelStep, isParallelStep, type ChainStep, type SequentialStep } from \"../../shared/settings.ts\";\nimport type { ChainOutputMap, ChainOutputMapEntry, SingleResult } from \"../../shared/types.ts\";\nimport { getSingleResultOutput } from \"../../shared/utils.ts\";\nimport { DynamicFanoutError, hasDynamicFanoutFields, type DynamicFanoutConfig, validateDynamicStepShape } from \"./dynamic-fanout.ts\";\n\nconst OUTPUT_REF_PATTERN = /\\{outputs\\.([^}]*)\\}/g;\nconst SAFE_OUTPUT_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\nexport class ChainOutputValidationError extends Error {}\n\nexport interface ChainOutputValidationContext {\n\tpriorOutputNames?: Iterable<string>;\n\tstartStepIndex?: number;\n}\n\nfunction outputNamesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.as).filter((name): name is string => Boolean(name));\n\tif (isDynamicParallelStep(step)) return [step.collect.as];\n\tconst name = (step as SequentialStep).as;\n\treturn name ? [name] : [];\n}\n\nfunction taskTemplatesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.task ?? \"{previous}\");\n\tif (isDynamicParallelStep(step)) return [step.parallel.task ?? \"{previous}\", step.parallel.label ?? \"\"].filter(Boolean);\n\treturn [(step as SequentialStep).task ?? \"{previous}\"];\n}\n\nexport function validateChainOutputBindings(steps: ChainStep[], dynamicFanoutConfig: DynamicFanoutConfig = {}): void {\n\tvalidateChainOutputBindingsWithContext(steps, dynamicFanoutConfig);\n}\n\nexport function validateChainOutputBindingsWithContext(\n\tsteps: ChainStep[],\n\tdynamicFanoutConfig: DynamicFanoutConfig = {},\n\tcontext: ChainOutputValidationContext = {},\n): void {\n\tconst priorOutputNames = [...(context.priorOutputNames ?? [])];\n\tconst available = new Set<string>(priorOutputNames);\n\tconst seen = new Set<string>(priorOutputNames);\n\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\tconst displayStepIndex = (context.startStepIndex ?? 0) + stepIndex + 1;\n\t\tconst step = steps[stepIndex]!;\n\t\tif (hasDynamicFanoutFields(step)) {\n\t\t\tif (!isDynamicParallelStep(step)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} requires expand, a single parallel template object, and collect; dynamic expand/collect cannot be mixed with static parallel arrays.`);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvalidateDynamicStepShape(step, displayStepIndex - 1, dynamicFanoutConfig);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DynamicFanoutError) throw new ChainOutputValidationError(error.message);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!available.has(step.expand.from.output)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} references unknown output '${step.expand.from.output}'. Named outputs are only available after producing step/group completes.`);\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output name '${name}' at step ${displayStepIndex}. Use /^[A-Za-z_][A-Za-z0-9_]*$/.`);\n\t\t\t}\n\t\t\tif (seen.has(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Duplicate chain output name '${name}'. Each as name must be unique.`);\n\t\t\t}\n\t\t\tseen.add(name);\n\t\t}\n\t\tfor (const template of taskTemplatesForStep(step)) {\n\t\t\tfor (const match of template.matchAll(OUTPUT_REF_PATTERN)) {\n\t\t\t\tconst rawReference = match[0];\n\t\t\t\tconst name = match[1]!;\n\t\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}' at step ${displayStepIndex}. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t\t\t}\n\t\t\t\tif (!available.has(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Unknown chain output reference '${rawReference}' at step ${displayStepIndex}. Named outputs are only available after producing step/group completes.`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tavailable.add(name);\n\t\t}\n\t}\n}\n\nexport function resolveOutputReferences(template: string, outputs: ChainOutputMap): string {\n\treturn template.replace(OUTPUT_REF_PATTERN, (rawReference, name: string) => {\n\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}'. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t}\n\t\tconst entry = outputs[name];\n\t\tif (!entry) throw new ChainOutputValidationError(`Unknown chain output reference '${rawReference}'.`);\n\t\treturn entry.text;\n\t});\n}\n\nfunction compactStructuredText(value: unknown): string {\n\treturn JSON.stringify(value);\n}\n\nexport function outputEntryFromResult(result: SingleResult, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : getSingleResultOutput(result),\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n\nexport function outputEntryFromAsyncResult(result: { agent: string; output: string; structuredOutput?: unknown }, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : result.output,\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n"]}
1
+ {"version":3,"file":"chain-outputs.d.ts","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,KAAK,SAAS,EAAuB,MAAM,0BAA0B,CAAC;AACtH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/F,OAAO,EAA8C,KAAK,mBAAmB,EAA4B,MAAM,qBAAqB,CAAC;AAKrI,qBAAa,0BAA2B,SAAQ,KAAK;CAAG;AAExD,MAAM,WAAW,4BAA4B;IAC5C,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAE,mBAAwB,GAAG,IAAI,CAEnH;AAED,wBAAgB,sCAAsC,CACrD,KAAK,EAAE,SAAS,EAAE,EAClB,mBAAmB,GAAE,mBAAwB,EAC7C,OAAO,GAAE,4BAAiC,GACxC,IAAI,CA8CN;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAI3E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CASzF;AAMD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOlG;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOxJ","sourcesContent":["// @ts-nocheck\nimport { isDynamicParallelStep, isParallelStep, type ChainStep, type SequentialStep } from \"../../shared/settings.ts\";\nimport type { ChainOutputMap, ChainOutputMapEntry, SingleResult } from \"../../shared/types.ts\";\nimport { getSingleResultOutput } from \"../../shared/utils.ts\";\nimport { DynamicFanoutError, hasDynamicFanoutFields, type DynamicFanoutConfig, validateDynamicStepShape } from \"./dynamic-fanout.ts\";\n\nconst OUTPUT_REF_PATTERN = /\\{outputs\\.([^}]*)\\}/g;\nconst SAFE_OUTPUT_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\nexport class ChainOutputValidationError extends Error {}\n\nexport interface ChainOutputValidationContext {\n\tpriorOutputNames?: Iterable<string>;\n\tstartStepIndex?: number;\n}\n\nfunction outputNamesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.as).filter((name): name is string => Boolean(name));\n\tif (isDynamicParallelStep(step)) return [step.collect.as];\n\tconst name = (step as SequentialStep).as;\n\treturn name ? [name] : [];\n}\n\nfunction taskTemplatesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.task ?? \"{previous}\");\n\tif (isDynamicParallelStep(step)) return [step.parallel.task ?? \"{previous}\", step.parallel.label ?? \"\"].filter(Boolean);\n\treturn [(step as SequentialStep).task ?? \"{previous}\"];\n}\n\nexport function validateChainOutputBindings(steps: ChainStep[], dynamicFanoutConfig: DynamicFanoutConfig = {}): void {\n\tvalidateChainOutputBindingsWithContext(steps, dynamicFanoutConfig);\n}\n\nexport function validateChainOutputBindingsWithContext(\n\tsteps: ChainStep[],\n\tdynamicFanoutConfig: DynamicFanoutConfig = {},\n\tcontext: ChainOutputValidationContext = {},\n): void {\n\tconst priorOutputNames = [...(context.priorOutputNames ?? [])];\n\tconst available = new Set<string>(priorOutputNames);\n\tconst seen = new Set<string>(priorOutputNames);\n\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\tconst displayStepIndex = (context.startStepIndex ?? 0) + stepIndex + 1;\n\t\tconst step = steps[stepIndex]!;\n\t\tif (hasDynamicFanoutFields(step)) {\n\t\t\tif (!isDynamicParallelStep(step)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} requires expand, a single parallel template object, and collect; dynamic expand/collect cannot be mixed with static parallel arrays.`);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvalidateDynamicStepShape(step, displayStepIndex - 1, dynamicFanoutConfig);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DynamicFanoutError) throw new ChainOutputValidationError(error.message);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!available.has(step.expand.from.output)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} references unknown output '${step.expand.from.output}'. Named outputs are only available after producing step/group completes.`);\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output name '${name}' at step ${displayStepIndex}. Use /^[A-Za-z_][A-Za-z0-9_]*$/.`);\n\t\t\t}\n\t\t\tif (seen.has(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Duplicate chain output name '${name}'. Each as name must be unique.`);\n\t\t\t}\n\t\t\tseen.add(name);\n\t\t}\n\t\tfor (const template of taskTemplatesForStep(step)) {\n\t\t\tfor (const match of template.matchAll(OUTPUT_REF_PATTERN)) {\n\t\t\t\tconst rawReference = match[0];\n\t\t\t\tconst name = match[1]!;\n\t\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}' at step ${displayStepIndex}. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t\t\t}\n\t\t\t\tif (!available.has(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Unknown chain output reference '${rawReference}' at step ${displayStepIndex}. Named outputs are only available after producing step/group completes.`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tavailable.add(name);\n\t\t}\n\t}\n}\n\nexport function withChainHandoff(task: string, hasNextStep: boolean): string {\n\treturn hasNextStep\n\t\t? `${task}\\n\\nYour final output will be handed to the next agent. Briefly summarize results, relevant references, verification, and remaining work.`\n\t\t: task;\n}\n\nexport function resolveOutputReferences(template: string, outputs: ChainOutputMap): string {\n\treturn template.replace(OUTPUT_REF_PATTERN, (rawReference, name: string) => {\n\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}'. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t}\n\t\tconst entry = outputs[name];\n\t\tif (!entry) throw new ChainOutputValidationError(`Unknown chain output reference '${rawReference}'.`);\n\t\treturn entry.text;\n\t});\n}\n\nfunction compactStructuredText(value: unknown): string {\n\treturn JSON.stringify(value);\n}\n\nexport function outputEntryFromResult(result: SingleResult, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : getSingleResultOutput(result),\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n\nexport function outputEntryFromAsyncResult(result: { agent: string; output: string; structuredOutput?: unknown }, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : result.output,\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n"]}
@@ -73,6 +73,11 @@ export function validateChainOutputBindingsWithContext(steps, dynamicFanoutConfi
73
73
  }
74
74
  }
75
75
  }
76
+ export function withChainHandoff(task, hasNextStep) {
77
+ return hasNextStep
78
+ ? `${task}\n\nYour final output will be handed to the next agent. Briefly summarize results, relevant references, verification, and remaining work.`
79
+ : task;
80
+ }
76
81
  export function resolveOutputReferences(template, outputs) {
77
82
  return template.replace(OUTPUT_REF_PATTERN, (rawReference, name) => {
78
83
  if (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"chain-outputs.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { isDynamicParallelStep, isParallelStep, type ChainStep, type SequentialStep } from \"../../shared/settings.ts\";\nimport type { ChainOutputMap, ChainOutputMapEntry, SingleResult } from \"../../shared/types.ts\";\nimport { getSingleResultOutput } from \"../../shared/utils.ts\";\nimport { DynamicFanoutError, hasDynamicFanoutFields, type DynamicFanoutConfig, validateDynamicStepShape } from \"./dynamic-fanout.ts\";\n\nconst OUTPUT_REF_PATTERN = /\\{outputs\\.([^}]*)\\}/g;\nconst SAFE_OUTPUT_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\nexport class ChainOutputValidationError extends Error {}\n\nexport interface ChainOutputValidationContext {\n\tpriorOutputNames?: Iterable<string>;\n\tstartStepIndex?: number;\n}\n\nfunction outputNamesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.as).filter((name): name is string => Boolean(name));\n\tif (isDynamicParallelStep(step)) return [step.collect.as];\n\tconst name = (step as SequentialStep).as;\n\treturn name ? [name] : [];\n}\n\nfunction taskTemplatesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.task ?? \"{previous}\");\n\tif (isDynamicParallelStep(step)) return [step.parallel.task ?? \"{previous}\", step.parallel.label ?? \"\"].filter(Boolean);\n\treturn [(step as SequentialStep).task ?? \"{previous}\"];\n}\n\nexport function validateChainOutputBindings(steps: ChainStep[], dynamicFanoutConfig: DynamicFanoutConfig = {}): void {\n\tvalidateChainOutputBindingsWithContext(steps, dynamicFanoutConfig);\n}\n\nexport function validateChainOutputBindingsWithContext(\n\tsteps: ChainStep[],\n\tdynamicFanoutConfig: DynamicFanoutConfig = {},\n\tcontext: ChainOutputValidationContext = {},\n): void {\n\tconst priorOutputNames = [...(context.priorOutputNames ?? [])];\n\tconst available = new Set<string>(priorOutputNames);\n\tconst seen = new Set<string>(priorOutputNames);\n\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\tconst displayStepIndex = (context.startStepIndex ?? 0) + stepIndex + 1;\n\t\tconst step = steps[stepIndex]!;\n\t\tif (hasDynamicFanoutFields(step)) {\n\t\t\tif (!isDynamicParallelStep(step)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} requires expand, a single parallel template object, and collect; dynamic expand/collect cannot be mixed with static parallel arrays.`);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvalidateDynamicStepShape(step, displayStepIndex - 1, dynamicFanoutConfig);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DynamicFanoutError) throw new ChainOutputValidationError(error.message);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!available.has(step.expand.from.output)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} references unknown output '${step.expand.from.output}'. Named outputs are only available after producing step/group completes.`);\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output name '${name}' at step ${displayStepIndex}. Use /^[A-Za-z_][A-Za-z0-9_]*$/.`);\n\t\t\t}\n\t\t\tif (seen.has(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Duplicate chain output name '${name}'. Each as name must be unique.`);\n\t\t\t}\n\t\t\tseen.add(name);\n\t\t}\n\t\tfor (const template of taskTemplatesForStep(step)) {\n\t\t\tfor (const match of template.matchAll(OUTPUT_REF_PATTERN)) {\n\t\t\t\tconst rawReference = match[0];\n\t\t\t\tconst name = match[1]!;\n\t\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}' at step ${displayStepIndex}. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t\t\t}\n\t\t\t\tif (!available.has(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Unknown chain output reference '${rawReference}' at step ${displayStepIndex}. Named outputs are only available after producing step/group completes.`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tavailable.add(name);\n\t\t}\n\t}\n}\n\nexport function resolveOutputReferences(template: string, outputs: ChainOutputMap): string {\n\treturn template.replace(OUTPUT_REF_PATTERN, (rawReference, name: string) => {\n\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}'. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t}\n\t\tconst entry = outputs[name];\n\t\tif (!entry) throw new ChainOutputValidationError(`Unknown chain output reference '${rawReference}'.`);\n\t\treturn entry.text;\n\t});\n}\n\nfunction compactStructuredText(value: unknown): string {\n\treturn JSON.stringify(value);\n}\n\nexport function outputEntryFromResult(result: SingleResult, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : getSingleResultOutput(result),\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n\nexport function outputEntryFromAsyncResult(result: { agent: string; output: string; structuredOutput?: unknown }, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : result.output,\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n"]}
1
+ {"version":3,"file":"chain-outputs.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/chain-outputs.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { isDynamicParallelStep, isParallelStep, type ChainStep, type SequentialStep } from \"../../shared/settings.ts\";\nimport type { ChainOutputMap, ChainOutputMapEntry, SingleResult } from \"../../shared/types.ts\";\nimport { getSingleResultOutput } from \"../../shared/utils.ts\";\nimport { DynamicFanoutError, hasDynamicFanoutFields, type DynamicFanoutConfig, validateDynamicStepShape } from \"./dynamic-fanout.ts\";\n\nconst OUTPUT_REF_PATTERN = /\\{outputs\\.([^}]*)\\}/g;\nconst SAFE_OUTPUT_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\nexport class ChainOutputValidationError extends Error {}\n\nexport interface ChainOutputValidationContext {\n\tpriorOutputNames?: Iterable<string>;\n\tstartStepIndex?: number;\n}\n\nfunction outputNamesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.as).filter((name): name is string => Boolean(name));\n\tif (isDynamicParallelStep(step)) return [step.collect.as];\n\tconst name = (step as SequentialStep).as;\n\treturn name ? [name] : [];\n}\n\nfunction taskTemplatesForStep(step: ChainStep): string[] {\n\tif (isParallelStep(step)) return step.parallel.map((task) => task.task ?? \"{previous}\");\n\tif (isDynamicParallelStep(step)) return [step.parallel.task ?? \"{previous}\", step.parallel.label ?? \"\"].filter(Boolean);\n\treturn [(step as SequentialStep).task ?? \"{previous}\"];\n}\n\nexport function validateChainOutputBindings(steps: ChainStep[], dynamicFanoutConfig: DynamicFanoutConfig = {}): void {\n\tvalidateChainOutputBindingsWithContext(steps, dynamicFanoutConfig);\n}\n\nexport function validateChainOutputBindingsWithContext(\n\tsteps: ChainStep[],\n\tdynamicFanoutConfig: DynamicFanoutConfig = {},\n\tcontext: ChainOutputValidationContext = {},\n): void {\n\tconst priorOutputNames = [...(context.priorOutputNames ?? [])];\n\tconst available = new Set<string>(priorOutputNames);\n\tconst seen = new Set<string>(priorOutputNames);\n\tfor (let stepIndex = 0; stepIndex < steps.length; stepIndex++) {\n\t\tconst displayStepIndex = (context.startStepIndex ?? 0) + stepIndex + 1;\n\t\tconst step = steps[stepIndex]!;\n\t\tif (hasDynamicFanoutFields(step)) {\n\t\t\tif (!isDynamicParallelStep(step)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} requires expand, a single parallel template object, and collect; dynamic expand/collect cannot be mixed with static parallel arrays.`);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvalidateDynamicStepShape(step, displayStepIndex - 1, dynamicFanoutConfig);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof DynamicFanoutError) throw new ChainOutputValidationError(error.message);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!available.has(step.expand.from.output)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Dynamic chain step ${displayStepIndex} references unknown output '${step.expand.from.output}'. Named outputs are only available after producing step/group completes.`);\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output name '${name}' at step ${displayStepIndex}. Use /^[A-Za-z_][A-Za-z0-9_]*$/.`);\n\t\t\t}\n\t\t\tif (seen.has(name)) {\n\t\t\t\tthrow new ChainOutputValidationError(`Duplicate chain output name '${name}'. Each as name must be unique.`);\n\t\t\t}\n\t\t\tseen.add(name);\n\t\t}\n\t\tfor (const template of taskTemplatesForStep(step)) {\n\t\t\tfor (const match of template.matchAll(OUTPUT_REF_PATTERN)) {\n\t\t\t\tconst rawReference = match[0];\n\t\t\t\tconst name = match[1]!;\n\t\t\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}' at step ${displayStepIndex}. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t\t\t}\n\t\t\t\tif (!available.has(name)) {\n\t\t\t\t\tthrow new ChainOutputValidationError(`Unknown chain output reference '${rawReference}' at step ${displayStepIndex}. Named outputs are only available after producing step/group completes.`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const name of outputNamesForStep(step)) {\n\t\t\tavailable.add(name);\n\t\t}\n\t}\n}\n\nexport function withChainHandoff(task: string, hasNextStep: boolean): string {\n\treturn hasNextStep\n\t\t? `${task}\\n\\nYour final output will be handed to the next agent. Briefly summarize results, relevant references, verification, and remaining work.`\n\t\t: task;\n}\n\nexport function resolveOutputReferences(template: string, outputs: ChainOutputMap): string {\n\treturn template.replace(OUTPUT_REF_PATTERN, (rawReference, name: string) => {\n\t\tif (!SAFE_OUTPUT_NAME_PATTERN.test(name)) {\n\t\t\tthrow new ChainOutputValidationError(`Invalid chain output reference '${rawReference}'. Use {outputs.name} with /^[A-Za-z_][A-Za-z0-9_]*$/ names.`);\n\t\t}\n\t\tconst entry = outputs[name];\n\t\tif (!entry) throw new ChainOutputValidationError(`Unknown chain output reference '${rawReference}'.`);\n\t\treturn entry.text;\n\t});\n}\n\nfunction compactStructuredText(value: unknown): string {\n\treturn JSON.stringify(value);\n}\n\nexport function outputEntryFromResult(result: SingleResult, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : getSingleResultOutput(result),\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n\nexport function outputEntryFromAsyncResult(result: { agent: string; output: string; structuredOutput?: unknown }, stepIndex: number): ChainOutputMapEntry {\n\treturn {\n\t\ttext: result.structuredOutput !== undefined ? compactStructuredText(result.structuredOutput) : result.output,\n\t\t...(result.structuredOutput !== undefined ? { structured: result.structuredOutput } : {}),\n\t\tagent: result.agent,\n\t\tstepIndex,\n\t};\n}\n"]}
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import type { ChildPermission } from "../../../../../core/subagent-permission-inherit.ts";
13
13
  /** Parent-owned / persistent tools excluded even from full children. */
14
- export declare const PARENT_OWNED_CHILD_TOOLS: readonly ["cron", "memory_add", "memory_remove", "memory_load", "present_plan", "goal_complete", "goal_blocked", "subagent", "subagent_wait"];
14
+ export declare const PARENT_OWNED_CHILD_TOOLS: readonly ["computer_load", "computer_apps", "computer_observe", "computer_click", "computer_hover", "computer_drag", "computer_key", "computer_text", "computer_window", "computer_launch", "computer_scroll", "computer_end", "cron", "memory_add", "memory_remove", "memory_load", "present_plan", "goal_complete", "goal_blocked", "subagent", "subagent_wait"];
15
15
  /** Mutating coding tools omitted from the read-only child registry. */
16
16
  export declare const READ_ONLY_EXCLUDED_CHILD_TOOLS: readonly ["edit", "write", "code_rewrite", "lsp_rename"];
17
17
  export interface ResolveChildExcludeToolsInput {
@@ -1 +1 @@
1
- {"version":3,"file":"child-tools.d.ts","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/child-tools.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAE1F,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,+IAU3B,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,0DAKjC,CAAC;AAKX,MAAM,WAAW,6BAA6B;IAC7C,WAAW,EAAE,eAAe,CAAC;IAC7B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,MAAM,EAAE,CASvF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE","sourcesContent":["// @ts-nocheck\n/**\n * Central permission-to-tool resolver for prompt-driven children.\n *\n * Full access is the coding-tool set (read/search/shell/edit/write/web/LSP/MCP\n * plus output and supervisor coordination). It is not parent-equivalent: cron,\n * memory, goals, plan approval, nested subagent management, and other\n * persistent/user-config tools stay excluded.\n *\n * Read-only drops mutating coding tools from the registry and still runs under\n * Read-only mode as defense in depth.\n */\n\nimport type { ChildPermission } from \"../../../../../core/subagent-permission-inherit.ts\";\n\n/** Parent-owned / persistent tools excluded even from full children. */\nexport const PARENT_OWNED_CHILD_TOOLS = [\n\t\"cron\",\n\t\"memory_add\",\n\t\"memory_remove\",\n\t\"memory_load\",\n\t\"present_plan\",\n\t\"goal_complete\",\n\t\"goal_blocked\",\n\t\"subagent\",\n\t\"subagent_wait\",\n] as const;\n\n/** Mutating coding tools omitted from the read-only child registry. */\nexport const READ_ONLY_EXCLUDED_CHILD_TOOLS = [\n\t\"edit\",\n\t\"write\",\n\t\"code_rewrite\",\n\t\"lsp_rename\",\n] as const;\n\nconst PARENT_OWNED_SET = new Set<string>(PARENT_OWNED_CHILD_TOOLS);\nconst READ_ONLY_SET = new Set<string>(READ_ONLY_EXCLUDED_CHILD_TOOLS);\n\nexport interface ResolveChildExcludeToolsInput {\n\tpermissions: ChildPermission;\n\t/** Dynamic fanout children may keep the child-safe subagent tool. */\n\tfanoutAuthorized?: boolean;\n}\n\nexport function resolveChildExcludeTools(input: ResolveChildExcludeToolsInput): string[] {\n\tconst excluded = new Set<string>(PARENT_OWNED_SET);\n\tif (input.fanoutAuthorized) {\n\t\texcluded.delete(\"subagent\");\n\t}\n\tif (input.permissions === \"read-only\") {\n\t\tfor (const tool of READ_ONLY_SET) excluded.add(tool);\n\t}\n\treturn [...excluded];\n}\n\nexport function isParentOwnedChildTool(name: string): boolean {\n\treturn PARENT_OWNED_SET.has(name);\n}\n\nexport function isReadOnlyExcludedChildTool(name: string): boolean {\n\treturn READ_ONLY_SET.has(name);\n}\n"]}
1
+ {"version":3,"file":"child-tools.d.ts","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/child-tools.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAE1F,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,oWAW3B,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,0DAKjC,CAAC;AAKX,MAAM,WAAW,6BAA6B;IAC7C,WAAW,EAAE,eAAe,CAAC;IAC7B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,MAAM,EAAE,CASvF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE","sourcesContent":["// @ts-nocheck\n/**\n * Central permission-to-tool resolver for prompt-driven children.\n *\n * Full access is the coding-tool set (read/search/shell/edit/write/web/LSP/MCP\n * plus output and supervisor coordination). It is not parent-equivalent: cron,\n * memory, goals, plan approval, nested subagent management, and other\n * persistent/user-config tools stay excluded.\n *\n * Read-only drops mutating coding tools from the registry and still runs under\n * Read-only mode as defense in depth.\n */\n\nimport { COMPUTER_TOOLS } from \"../../../../../core/computer-use/policy.ts\";\nimport type { ChildPermission } from \"../../../../../core/subagent-permission-inherit.ts\";\n\n/** Parent-owned / persistent tools excluded even from full children. */\nexport const PARENT_OWNED_CHILD_TOOLS = [\n\t...COMPUTER_TOOLS,\n\t\"cron\",\n\t\"memory_add\",\n\t\"memory_remove\",\n\t\"memory_load\",\n\t\"present_plan\",\n\t\"goal_complete\",\n\t\"goal_blocked\",\n\t\"subagent\",\n\t\"subagent_wait\",\n] as const;\n\n/** Mutating coding tools omitted from the read-only child registry. */\nexport const READ_ONLY_EXCLUDED_CHILD_TOOLS = [\n\t\"edit\",\n\t\"write\",\n\t\"code_rewrite\",\n\t\"lsp_rename\",\n] as const;\n\nconst PARENT_OWNED_SET = new Set<string>(PARENT_OWNED_CHILD_TOOLS);\nconst READ_ONLY_SET = new Set<string>(READ_ONLY_EXCLUDED_CHILD_TOOLS);\n\nexport interface ResolveChildExcludeToolsInput {\n\tpermissions: ChildPermission;\n\t/** Dynamic fanout children may keep the child-safe subagent tool. */\n\tfanoutAuthorized?: boolean;\n}\n\nexport function resolveChildExcludeTools(input: ResolveChildExcludeToolsInput): string[] {\n\tconst excluded = new Set<string>(PARENT_OWNED_SET);\n\tif (input.fanoutAuthorized) {\n\t\texcluded.delete(\"subagent\");\n\t}\n\tif (input.permissions === \"read-only\") {\n\t\tfor (const tool of READ_ONLY_SET) excluded.add(tool);\n\t}\n\treturn [...excluded];\n}\n\nexport function isParentOwnedChildTool(name: string): boolean {\n\treturn PARENT_OWNED_SET.has(name);\n}\n\nexport function isReadOnlyExcludedChildTool(name: string): boolean {\n\treturn READ_ONLY_SET.has(name);\n}\n"]}
@@ -10,8 +10,10 @@
10
10
  * Read-only drops mutating coding tools from the registry and still runs under
11
11
  * Read-only mode as defense in depth.
12
12
  */
13
+ import { COMPUTER_TOOLS } from "../../../../../core/computer-use/policy.js";
13
14
  /** Parent-owned / persistent tools excluded even from full children. */
14
15
  export const PARENT_OWNED_CHILD_TOOLS = [
16
+ ...COMPUTER_TOOLS,
15
17
  "cron",
16
18
  "memory_add",
17
19
  "memory_remove",
@@ -1 +1 @@
1
- {"version":3,"file":"child-tools.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/child-tools.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;;;;GAUG;AAIH,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,MAAM;IACN,YAAY;IACZ,eAAe;IACf,aAAa;IACb,cAAc;IACd,eAAe;IACf,cAAc;IACd,UAAU;IACV,eAAe;CACN,CAAC;AAEX,uEAAuE;AACvE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC7C,MAAM;IACN,OAAO;IACP,cAAc;IACd,YAAY;CACH,CAAC;AAEX,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS,8BAA8B,CAAC,CAAC;AAQtE,MAAM,UAAU,wBAAwB,CAAC,KAAoC,EAAY;IACxF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,aAAa;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,CACrB;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAW;IAC7D,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,CAClC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAW;IAClE,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,CAC/B","sourcesContent":["// @ts-nocheck\n/**\n * Central permission-to-tool resolver for prompt-driven children.\n *\n * Full access is the coding-tool set (read/search/shell/edit/write/web/LSP/MCP\n * plus output and supervisor coordination). It is not parent-equivalent: cron,\n * memory, goals, plan approval, nested subagent management, and other\n * persistent/user-config tools stay excluded.\n *\n * Read-only drops mutating coding tools from the registry and still runs under\n * Read-only mode as defense in depth.\n */\n\nimport type { ChildPermission } from \"../../../../../core/subagent-permission-inherit.ts\";\n\n/** Parent-owned / persistent tools excluded even from full children. */\nexport const PARENT_OWNED_CHILD_TOOLS = [\n\t\"cron\",\n\t\"memory_add\",\n\t\"memory_remove\",\n\t\"memory_load\",\n\t\"present_plan\",\n\t\"goal_complete\",\n\t\"goal_blocked\",\n\t\"subagent\",\n\t\"subagent_wait\",\n] as const;\n\n/** Mutating coding tools omitted from the read-only child registry. */\nexport const READ_ONLY_EXCLUDED_CHILD_TOOLS = [\n\t\"edit\",\n\t\"write\",\n\t\"code_rewrite\",\n\t\"lsp_rename\",\n] as const;\n\nconst PARENT_OWNED_SET = new Set<string>(PARENT_OWNED_CHILD_TOOLS);\nconst READ_ONLY_SET = new Set<string>(READ_ONLY_EXCLUDED_CHILD_TOOLS);\n\nexport interface ResolveChildExcludeToolsInput {\n\tpermissions: ChildPermission;\n\t/** Dynamic fanout children may keep the child-safe subagent tool. */\n\tfanoutAuthorized?: boolean;\n}\n\nexport function resolveChildExcludeTools(input: ResolveChildExcludeToolsInput): string[] {\n\tconst excluded = new Set<string>(PARENT_OWNED_SET);\n\tif (input.fanoutAuthorized) {\n\t\texcluded.delete(\"subagent\");\n\t}\n\tif (input.permissions === \"read-only\") {\n\t\tfor (const tool of READ_ONLY_SET) excluded.add(tool);\n\t}\n\treturn [...excluded];\n}\n\nexport function isParentOwnedChildTool(name: string): boolean {\n\treturn PARENT_OWNED_SET.has(name);\n}\n\nexport function isReadOnlyExcludedChildTool(name: string): boolean {\n\treturn READ_ONLY_SET.has(name);\n}\n"]}
1
+ {"version":3,"file":"child-tools.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/child-tools.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAG5E,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,GAAG,cAAc;IACjB,MAAM;IACN,YAAY;IACZ,eAAe;IACf,aAAa;IACb,cAAc;IACd,eAAe;IACf,cAAc;IACd,UAAU;IACV,eAAe;CACN,CAAC;AAEX,uEAAuE;AACvE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC7C,MAAM;IACN,OAAO;IACP,cAAc;IACd,YAAY;CACH,CAAC;AAEX,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS,8BAA8B,CAAC,CAAC;AAQtE,MAAM,UAAU,wBAAwB,CAAC,KAAoC,EAAY;IACxF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,aAAa;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,CACrB;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAW;IAC7D,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,CAClC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAW;IAClE,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAAA,CAC/B","sourcesContent":["// @ts-nocheck\n/**\n * Central permission-to-tool resolver for prompt-driven children.\n *\n * Full access is the coding-tool set (read/search/shell/edit/write/web/LSP/MCP\n * plus output and supervisor coordination). It is not parent-equivalent: cron,\n * memory, goals, plan approval, nested subagent management, and other\n * persistent/user-config tools stay excluded.\n *\n * Read-only drops mutating coding tools from the registry and still runs under\n * Read-only mode as defense in depth.\n */\n\nimport { COMPUTER_TOOLS } from \"../../../../../core/computer-use/policy.ts\";\nimport type { ChildPermission } from \"../../../../../core/subagent-permission-inherit.ts\";\n\n/** Parent-owned / persistent tools excluded even from full children. */\nexport const PARENT_OWNED_CHILD_TOOLS = [\n\t...COMPUTER_TOOLS,\n\t\"cron\",\n\t\"memory_add\",\n\t\"memory_remove\",\n\t\"memory_load\",\n\t\"present_plan\",\n\t\"goal_complete\",\n\t\"goal_blocked\",\n\t\"subagent\",\n\t\"subagent_wait\",\n] as const;\n\n/** Mutating coding tools omitted from the read-only child registry. */\nexport const READ_ONLY_EXCLUDED_CHILD_TOOLS = [\n\t\"edit\",\n\t\"write\",\n\t\"code_rewrite\",\n\t\"lsp_rename\",\n] as const;\n\nconst PARENT_OWNED_SET = new Set<string>(PARENT_OWNED_CHILD_TOOLS);\nconst READ_ONLY_SET = new Set<string>(READ_ONLY_EXCLUDED_CHILD_TOOLS);\n\nexport interface ResolveChildExcludeToolsInput {\n\tpermissions: ChildPermission;\n\t/** Dynamic fanout children may keep the child-safe subagent tool. */\n\tfanoutAuthorized?: boolean;\n}\n\nexport function resolveChildExcludeTools(input: ResolveChildExcludeToolsInput): string[] {\n\tconst excluded = new Set<string>(PARENT_OWNED_SET);\n\tif (input.fanoutAuthorized) {\n\t\texcluded.delete(\"subagent\");\n\t}\n\tif (input.permissions === \"read-only\") {\n\t\tfor (const tool of READ_ONLY_SET) excluded.add(tool);\n\t}\n\treturn [...excluded];\n}\n\nexport function isParentOwnedChildTool(name: string): boolean {\n\treturn PARENT_OWNED_SET.has(name);\n}\n\nexport function isReadOnlyExcludedChildTool(name: string): boolean {\n\treturn READ_ONLY_SET.has(name);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGhG;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAOlH;AAED,UAAU,iBAAiB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,SAAS,EAC/F,aAAa,CAAC,EAAE,qBAAqB,EACrC,YAAY,CAAC,EAAE,MAAM,GACnB,SAAS,CASX;AAED,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACV,SAAS,CAcX","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n\tdisplayTitle?: string,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tconst title = theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`));\n\tcontainer.addChild(new Text(displayTitle ? `${title} ${theme.fg(\"accent\", displayTitle)}` : title, 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
1
+ {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGhG;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAOlH;AAED,UAAU,iBAAiB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,SAAS,EAC/F,aAAa,CAAC,EAAE,qBAAqB,EACrC,YAAY,CAAC,EAAE,MAAM,GACnB,SAAS,CASX;AAED,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACV,SAAS,CAcX","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind === \"handoff\" ? \"progress\" : communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n\tdisplayTitle?: string,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tconst title = theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`));\n\tcontainer.addChild(new Text(displayTitle ? `${title} ${theme.fg(\"accent\", displayTitle)}` : title, 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
@@ -6,7 +6,7 @@ export function renderCommunicationBody(communication, theme) {
6
6
  }
7
7
  export function renderCommunicationCard(communication, expanded, theme) {
8
8
  const box = new Box(1, 1, (text) => theme.bg("toolSuccessBg", text));
9
- box.addChild(new Text(theme.fg("toolTitle", theme.bold(`● subagent ${communication.kind}`)), 0, 0));
9
+ box.addChild(new Text(theme.fg("toolTitle", theme.bold(`● subagent ${communication.kind === "handoff" ? "progress" : communication.kind}`)), 0, 0));
10
10
  if (expanded) {
11
11
  box.addChild(renderCommunicationBody(communication, theme));
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"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","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n\tdisplayTitle?: string,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tconst title = theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`));\n\tcontainer.addChild(new Text(displayTitle ? `${title} ${theme.fg(\"accent\", displayTitle)}` : title, 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
1
+ {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"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","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind === \"handoff\" ? \"progress\" : communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n\tdisplayTitle?: string,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tconst title = theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`));\n\tcontainer.addChild(new Text(displayTitle ? `${title} ${theme.fg(\"accent\", displayTitle)}` : title, 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
@@ -37,6 +37,7 @@ export declare function formatCompactSubagentRow(theme: Theme, width: number, pa
37
37
  durationMs: number;
38
38
  prefix?: string;
39
39
  terminalStatus?: string;
40
+ waiting?: boolean;
40
41
  }): string;
41
42
  export declare function widgetRenderKey(job: AsyncJobState): string;
42
43
  export declare function buildWidgetLines(jobs: AsyncJobState[], theme: Theme, width?: number, expanded?: boolean, now?: number): string[];