@ashx-j/lunr 0.2.19 → 0.2.21

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 (259) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/README.md +2 -2
  3. package/dist/builtin-extensions/index.d.ts.map +1 -1
  4. package/dist/builtin-extensions/index.js +0 -2
  5. package/dist/builtin-extensions/index.js.map +1 -1
  6. package/dist/builtin-extensions/lunr-todos.d.ts +6 -5
  7. package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
  8. package/dist/builtin-extensions/lunr-todos.js +9 -7
  9. package/dist/builtin-extensions/lunr-todos.js.map +1 -1
  10. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts +6 -4
  11. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts.map +1 -1
  12. package/dist/builtin-extensions/pi-intercom/broker/spawn.js +114 -61
  13. package/dist/builtin-extensions/pi-intercom/broker/spawn.js.map +1 -1
  14. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-intercom/index.js +360 -351
  16. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
  18. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +2 -2
  19. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +8 -6
  21. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +128 -57
  23. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +18 -8
  25. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -13
  27. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -3
  29. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  30. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +24 -14
  31. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  32. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +8 -1
  33. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  34. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js +247 -18
  35. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
  36. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts +1 -0
  37. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts.map +1 -1
  38. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js.map +1 -1
  40. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts +29 -0
  41. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts.map +1 -0
  42. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js +179 -0
  43. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js.map +1 -0
  44. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts +89 -0
  45. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts.map +1 -0
  46. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js +541 -0
  47. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js.map +1 -0
  48. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +11 -1
  49. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +38 -12
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +3 -2
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +2 -1
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
  57. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +35 -8
  58. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +7 -3
  60. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +26 -4
  62. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts +1 -0
  64. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
  65. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +55 -38
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +100 -0
  68. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  69. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +46 -31
  70. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  71. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +3 -6
  72. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js +64 -5
  74. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts +15 -2
  76. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js +14 -4
  78. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  80. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +2 -1
  81. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +21 -8
  84. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +0 -1
  89. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +71 -25
  91. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -0
  93. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +75 -18
  95. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
  96. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts +1 -1
  97. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts.map +1 -1
  98. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js +1 -1
  99. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js.map +1 -1
  100. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +13 -1
  101. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  102. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +67 -11
  103. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  104. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +1 -0
  105. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  106. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  107. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +3 -0
  108. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
  109. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +7 -2
  110. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
  111. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  112. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +13 -3
  113. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  114. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
  115. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
  116. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +5 -10
  117. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
  118. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts +2 -0
  119. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts.map +1 -0
  120. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js +3 -0
  121. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js.map +1 -0
  122. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +3 -0
  123. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
  124. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +68 -11
  125. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
  126. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +12 -1
  127. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
  128. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +21 -2
  129. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
  130. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +21 -4
  131. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  132. package/dist/builtin-extensions/pi-subagents/src/shared/types.js +1 -1
  133. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  134. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
  135. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
  136. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +7 -0
  137. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  138. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +11 -7
  139. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  140. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +6 -0
  141. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  142. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +46 -29
  143. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  144. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +46 -4
  145. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  146. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +407 -450
  147. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  148. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts.map +1 -1
  149. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js +1 -1
  150. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js.map +1 -1
  151. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts +2 -13
  152. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts.map +1 -1
  153. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js +5 -91
  154. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js.map +1 -1
  155. package/dist/core/customize.d.ts +2 -0
  156. package/dist/core/customize.d.ts.map +1 -1
  157. package/dist/core/customize.js +3 -0
  158. package/dist/core/customize.js.map +1 -1
  159. package/dist/core/permissions.d.ts +1 -0
  160. package/dist/core/permissions.d.ts.map +1 -1
  161. package/dist/core/permissions.js +8 -4
  162. package/dist/core/permissions.js.map +1 -1
  163. package/dist/core/plan-mode.d.ts.map +1 -1
  164. package/dist/core/plan-mode.js +0 -5
  165. package/dist/core/plan-mode.js.map +1 -1
  166. package/dist/core/runtime-bridges.d.ts.map +1 -1
  167. package/dist/core/runtime-bridges.js +0 -2
  168. package/dist/core/runtime-bridges.js.map +1 -1
  169. package/dist/core/settings-manager.d.ts +4 -0
  170. package/dist/core/settings-manager.d.ts.map +1 -1
  171. package/dist/core/settings-manager.js +11 -0
  172. package/dist/core/settings-manager.js.map +1 -1
  173. package/dist/core/subagent-cancellation.d.ts +21 -0
  174. package/dist/core/subagent-cancellation.d.ts.map +1 -0
  175. package/dist/core/subagent-cancellation.js +53 -0
  176. package/dist/core/subagent-cancellation.js.map +1 -0
  177. package/dist/core/subagent-spinner-setting.d.ts +6 -0
  178. package/dist/core/subagent-spinner-setting.d.ts.map +1 -0
  179. package/dist/core/subagent-spinner-setting.js +12 -0
  180. package/dist/core/subagent-spinner-setting.js.map +1 -0
  181. package/dist/core/subagent-spinner.d.ts +4 -0
  182. package/dist/core/subagent-spinner.d.ts.map +1 -0
  183. package/dist/core/subagent-spinner.js +6 -0
  184. package/dist/core/subagent-spinner.js.map +1 -0
  185. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  186. package/dist/modes/interactive/components/assistant-message.js +12 -18
  187. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  188. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  189. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  190. package/dist/modes/interactive/components/settings-selector.js +73 -1
  191. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  192. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  193. package/dist/modes/interactive/components/tool-execution.js +12 -0
  194. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  195. package/dist/modes/interactive/extension-widget-order.d.ts +8 -0
  196. package/dist/modes/interactive/extension-widget-order.d.ts.map +1 -0
  197. package/dist/modes/interactive/extension-widget-order.js +37 -0
  198. package/dist/modes/interactive/extension-widget-order.js.map +1 -0
  199. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  200. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  201. package/dist/modes/interactive/interactive-mode.js +44 -22
  202. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  203. package/dist/node-runtime/{agent-session-services-35WNVGMR.js → agent-session-services-C743TYQE.js} +6 -5
  204. package/dist/node-runtime/{builtin-extensions-322XDDEM.js → builtin-extensions-JCOPAAB5.js} +3 -2
  205. package/dist/node-runtime/{chunk-XATUM2HK.js → chunk-25I2BHAA.js} +1 -1
  206. package/dist/node-runtime/{chunk-TXHKBRHZ.js → chunk-2BUAYZ7K.js} +136 -53
  207. package/dist/node-runtime/chunk-5ZH3ZFIZ.js +308 -0
  208. package/dist/node-runtime/{chunk-J26TSGDL.js → chunk-6N22HULO.js} +8 -5
  209. package/dist/node-runtime/chunk-A3KMVBZV.js +60 -0
  210. package/dist/node-runtime/{chunk-4FX25LWP.js → chunk-AWVD5IEY.js} +20 -421
  211. package/dist/node-runtime/{chunk-ZRCBN365.js → chunk-GB2MGFLI.js} +12 -12
  212. package/dist/node-runtime/chunk-LISUTZS3.js +19 -0
  213. package/dist/node-runtime/{chunk-PNJSG3IZ.js → chunk-LTYWTR3V.js} +1 -369
  214. package/dist/node-runtime/{chunk-TFBIJTM3.js → chunk-PDNXVXMD.js} +13 -13
  215. package/dist/node-runtime/{chunk-MCUNIRD5.js → chunk-SY2TFMLO.js} +532 -261
  216. package/dist/node-runtime/{chunk-HQCKFM2O.js → chunk-VGYZ3APQ.js} +3 -0
  217. package/dist/node-runtime/{chunk-4DJ6HEGH.js → chunk-VZR3NCM7.js} +3 -3
  218. package/dist/node-runtime/chunk-W3SILANP.js +24 -0
  219. package/dist/node-runtime/{chunk-CBGB57XT.js → chunk-WLLDXJRT.js} +10 -0
  220. package/dist/node-runtime/{chunk-ATGA2WLC.js → chunk-XI77KVKA.js} +399 -36
  221. package/dist/node-runtime/{chunk-4CSFRBCN.js → chunk-Y5KOEMBH.js} +1 -1
  222. package/dist/node-runtime/{chunk-AROOY4BB.js → chunk-YMEAYRBE.js} +1 -1
  223. package/dist/node-runtime/{command-DWUM5X3U.js → command-P4NYCJ2M.js} +1 -1
  224. package/dist/node-runtime/{customize-XEXL2DGQ.js → customize-LF5VST47.js} +1 -1
  225. package/dist/node-runtime/{gateway-UZXMFGWY.js → gateway-BM6NLOH4.js} +2 -2
  226. package/dist/node-runtime/index.js +16 -13
  227. package/dist/node-runtime/{interactive-mode-QT5IKGQ5.js → interactive-mode-EVVBA64D.js} +11 -8
  228. package/dist/node-runtime/{lunr-cron-QPBTKBGI.js → lunr-cron-4VHP4E4B.js} +2 -2
  229. package/dist/node-runtime/main.js +14 -12
  230. package/dist/node-runtime/{package-manager-cli-7RKSZGEN.js → package-manager-cli-N37546V5.js} +5 -4
  231. package/dist/node-runtime/{pi-intercom-EEMBGQID.js → pi-intercom-NV2LW6X7.js} +108 -87
  232. package/dist/node-runtime/{pi-subagents-7YJ3I4VE.js → pi-subagents-6MUIFNDM.js} +1262 -599
  233. package/dist/node-runtime/rpc-entry.js +14 -12
  234. package/dist/node-runtime/{runtime-bridges-3RKBDLNA.js → runtime-bridges-2VQTLPOZ.js} +3 -5
  235. package/dist/node-runtime/{settings-manager-GHPTUN7R.js → settings-manager-CUGAZWAB.js} +2 -1
  236. package/dist/node-runtime/{subagent-executor-5Q5A4HJ2.js → subagent-executor-MH4A7CCF.js} +181 -294
  237. package/dist/node-runtime/{update-cli-L3JIBH2U.js → update-cli-XTZMZGOL.js} +2 -1
  238. package/docs/features.md +22 -4
  239. package/docs/keybindings.md +3 -1
  240. package/docs/settings.md +3 -2
  241. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  242. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  243. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  244. package/examples/extensions/gondolin/package-lock.json +2 -2
  245. package/examples/extensions/gondolin/package.json +1 -1
  246. package/examples/extensions/sandbox/package-lock.json +2 -2
  247. package/examples/extensions/sandbox/package.json +1 -1
  248. package/examples/extensions/with-deps/package-lock.json +2 -2
  249. package/examples/extensions/with-deps/package.json +1 -1
  250. package/package.json +4 -4
  251. package/dist/builtin-extensions/lunr-settings-tools.d.ts +0 -4
  252. package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +0 -1
  253. package/dist/builtin-extensions/lunr-settings-tools.js +0 -120
  254. package/dist/builtin-extensions/lunr-settings-tools.js.map +0 -1
  255. package/dist/core/settings-tools-bridge.d.ts +0 -35
  256. package/dist/core/settings-tools-bridge.d.ts.map +0 -1
  257. package/dist/core/settings-tools-bridge.js +0 -56
  258. package/dist/core/settings-tools-bridge.js.map +0 -1
  259. package/dist/node-runtime/chunk-3NMWLTPV.js +0 -64
@@ -1 +1 @@
1
- {"version":3,"file":"native-supervisor-channel.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport type { ExtensionAPI, ExtensionContext, ToolDefinition } from \"@ashx-j/lunr\";\nimport { Type } from \"typebox\";\nimport {\n\tSUBAGENT_CHILD_AGENT_ENV,\n\tSUBAGENT_CHILD_INDEX_ENV,\n\tSUBAGENT_ORCHESTRATOR_SESSION_ID_ENV,\n\tSUBAGENT_ORCHESTRATOR_TARGET_ENV,\n\tSUBAGENT_RUN_ID_ENV,\n\tSUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV,\n} from \"../runs/shared/pi-args.ts\";\nimport { INTERCOM_DETACH_REQUEST_EVENT, POLL_INTERVAL_MS, TEMP_ROOT_DIR, type IntercomEventBus, type SubagentState } from \"../shared/types.ts\";\nimport { writeAtomicJson } from \"../shared/atomic-json.ts\";\n\nconst SUPERVISOR_CHANNEL_ROOT = path.join(TEMP_ROOT_DIR, \"supervisor-channels\");\nconst REQUESTS_DIR = \"requests\";\nconst REPLIES_DIR = \"replies\";\nexport const NATIVE_SUPERVISOR_TOOL_NAME = \"subagent_supervisor\";\nconst MAX_MESSAGE_BYTES = 64 * 1024;\nconst DEFAULT_ASK_TIMEOUT_MS = 10 * 60 * 1000;\nconst CHANNEL_POLL_MS = Math.min(POLL_INTERVAL_MS, 500);\nconst STALE_EMPTY_CHANNEL_AGE_MS = 60 * 1000;\nconst STALE_EMPTY_CHANNEL_CLEANUP_INTERVAL_MS = 60 * 1000;\n\ntype SupervisorReason = \"need_decision\" | \"interview_request\" | \"progress_update\";\n\ninterface SupervisorRequest {\n\ttype: \"subagent.supervisor.request\";\n\tid: string;\n\tcreatedAt: number;\n\texpiresAt?: number;\n\treason: SupervisorReason;\n\tmessage: string;\n\texpectsReply: boolean;\n\torchestratorTarget?: string;\n\torchestratorSessionId?: string;\n\trunId: string;\n\tagent: string;\n\tchildIndex: number;\n\tchildTarget?: string;\n\tinterview?: unknown;\n}\n\ninterface PendingSupervisorRequest extends SupervisorRequest {\n\tchannelDir: string;\n\trequestFile: string;\n}\n\ninterface SupervisorReply {\n\ttype: \"subagent.supervisor.reply\";\n\trequestId: string;\n\tcreatedAt: number;\n\tmessage: string;\n}\n\ninterface ContactSupervisorParams {\n\treason: SupervisorReason;\n\tmessage?: string;\n\tinterview?: unknown;\n}\n\ninterface IntercomParams {\n\taction: \"list\" | \"send\" | \"ask\" | \"reply\" | \"pending\" | \"status\";\n\tto?: string;\n\tmessage?: string;\n\treplyTo?: string;\n}\n\nconst ContactSupervisorParamsSchema = Type.Object({\n\treason: Type.String({ enum: [\"need_decision\", \"interview_request\", \"progress_update\"] }),\n\tmessage: Type.Optional(Type.String()),\n\tinterview: Type.Optional(Type.Unsafe({ type: \"object\", additionalProperties: true })),\n}, { additionalProperties: false });\n\nconst IntercomParamsSchema = Type.Object({\n\taction: Type.String({ enum: [\"list\", \"send\", \"ask\", \"reply\", \"pending\", \"status\"] }),\n\tto: Type.Optional(Type.String()),\n\tmessage: Type.Optional(Type.String()),\n\treplyTo: Type.Optional(Type.String()),\n}, { additionalProperties: false });\n\nfunction safeSegment(value: string): string {\n\treturn value.trim().replace(/[^A-Za-z0-9._-]+/g, \"-\").replace(/^-+|-+$/g, \"\") || \"unknown\";\n}\n\nexport function resolveSupervisorChannelDir(runId: string, agent: string, childIndex: number): string {\n\treturn path.join(SUPERVISOR_CHANNEL_ROOT, `${safeSegment(runId)}-${safeSegment(agent)}-${childIndex}`);\n}\n\nexport function ensureSupervisorChannelDir(channelDir: string): void {\n\tfs.mkdirSync(path.join(channelDir, REQUESTS_DIR), { recursive: true, mode: 0o700 });\n\tfs.mkdirSync(path.join(channelDir, REPLIES_DIR), { recursive: true, mode: 0o700 });\n}\n\nfunction requestPath(channelDir: string, requestId: string): string {\n\treturn path.join(channelDir, REQUESTS_DIR, `${safeSegment(requestId)}.json`);\n}\n\nfunction replyPath(channelDir: string, requestId: string): string {\n\treturn path.join(channelDir, REPLIES_DIR, `${safeSegment(requestId)}.json`);\n}\n\nfunction readTextEnv(name: string): string | undefined {\n\tconst value = process.env[name]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction readChildMetadata(): {\n\tchannelDir: string;\n\trunId: string;\n\tagent: string;\n\tchildIndex: number;\n\torchestratorTarget?: string;\n\torchestratorSessionId?: string;\n\tchildTarget?: string;\n} | undefined {\n\tconst channelDir = readTextEnv(SUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV);\n\tconst runId = readTextEnv(SUBAGENT_RUN_ID_ENV);\n\tconst agent = readTextEnv(SUBAGENT_CHILD_AGENT_ENV);\n\tconst rawIndex = readTextEnv(SUBAGENT_CHILD_INDEX_ENV);\n\tconst orchestratorSessionId = readTextEnv(SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV);\n\tif (!channelDir || !runId || !agent || !orchestratorSessionId || rawIndex === undefined || !/^\\d+$/.test(rawIndex)) return undefined;\n\treturn {\n\t\tchannelDir,\n\t\trunId,\n\t\tagent,\n\t\tchildIndex: Number(rawIndex),\n\t\torchestratorTarget: readTextEnv(SUBAGENT_ORCHESTRATOR_TARGET_ENV),\n\t\torchestratorSessionId,\n\t\tchildTarget: readTextEnv(\"PI_SUBAGENT_INTERCOM_SESSION_NAME\"),\n\t};\n}\n\nfunction reasonHeading(reason: SupervisorReason): string {\n\tif (reason === \"interview_request\") return \"Subagent requests a structured supervisor interview.\";\n\tif (reason === \"progress_update\") return \"Subagent progress update.\";\n\treturn \"Subagent needs a supervisor decision.\";\n}\n\nfunction formatChildMessage(input: {\n\treason: SupervisorReason;\n\tmessage?: string;\n\tinterview?: unknown;\n\trunId: string;\n\tagent: string;\n\tchildIndex: number;\n\tchildTarget?: string;\n}): string {\n\tconst lines = [\n\t\treasonHeading(input.reason),\n\t\t`Run: ${input.runId}`,\n\t\t`Agent: ${input.agent}`,\n\t\t`Child index: ${input.childIndex}`,\n\t];\n\tif (input.childTarget) lines.push(`Child intercom target: ${input.childTarget}`);\n\tlines.push(\"\");\n\tif (input.message?.trim()) lines.push(input.message.trim());\n\tif (input.reason === \"interview_request\") {\n\t\tlines.push(\n\t\t\t\"\",\n\t\t\t\"Structured response requested. Reply with JSON, optionally fenced in ```json, matching the requested interview shape.\",\n\t\t);\n\t\tif (input.interview !== undefined) lines.push(JSON.stringify(input.interview, null, \"\\t\"));\n\t}\n\treturn lines.join(\"\\n\").trimEnd();\n}\n\nfunction parseStructuredReply(message: string): { value?: unknown; error?: string } {\n\tconst trimmed = message.trim();\n\tconst fenced = trimmed.match(/^```(?:json)?\\s*([\\s\\S]*?)\\s*```$/i)?.[1]?.trim();\n\ttry {\n\t\treturn { value: JSON.parse(fenced ?? trimmed) };\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? `${error.name}: ${error.message}` : String(error) };\n\t}\n}\n\nfunction askTimeoutMs(): number {\n\tconst parsed = Number(process.env.PI_INTERCOM_ASK_TIMEOUT_MS);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_ASK_TIMEOUT_MS;\n}\n\nfunction delay(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) {\n\t\t\treject(new Error(\"Supervisor request cancelled.\"));\n\t\t\treturn;\n\t\t}\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst cleanup = () => {\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t};\n\t\tconst onAbort = () => {\n\t\t\tcleanup();\n\t\t\treject(new Error(\"Supervisor request cancelled.\"));\n\t\t};\n\t\ttimer = setTimeout(() => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t}, ms);\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\nasync function waitForReply(channelDir: string, requestId: string, deadline: number, signal?: AbortSignal): Promise<SupervisorReply> {\n\tconst file = replyPath(channelDir, requestId);\n\twhile (Date.now() <= deadline) {\n\t\tif (signal?.aborted) throw new Error(\"Supervisor request cancelled.\");\n\t\tif (fs.existsSync(file)) {\n\t\t\tconst parsed = JSON.parse(fs.readFileSync(file, \"utf-8\")) as Partial<SupervisorReply>;\n\t\t\tif (parsed.type === \"subagent.supervisor.reply\" && parsed.requestId === requestId && typeof parsed.message === \"string\") {\n\t\t\t\treturn parsed as SupervisorReply;\n\t\t\t}\n\t\t}\n\t\tawait delay(250, signal);\n\t}\n\tthrow new Error(\"Timed out waiting for supervisor reply.\");\n}\n\nasync function sendSupervisorRequest(params: ContactSupervisorParams, signal?: AbortSignal): Promise<AgentToolResult<Record<string, unknown>>> {\n\tconst metadata = readChildMetadata();\n\tif (!metadata) throw new Error(\"Native supervisor channel is not available for this subagent.\");\n\tif (params.reason !== \"progress_update\" && !params.message?.trim() && params.reason !== \"interview_request\") {\n\t\tthrow new Error(\"message is required for supervisor decisions.\");\n\t}\n\tensureSupervisorChannelDir(metadata.channelDir);\n\tconst requestId = randomUUID();\n\tconst expectsReply = params.reason !== \"progress_update\";\n\tconst createdAt = Date.now();\n\tconst replyDeadline = createdAt + askTimeoutMs();\n\tconst expiresAt = expectsReply ? replyDeadline : undefined;\n\tconst message = formatChildMessage({ ...metadata, reason: params.reason, message: params.message, interview: params.interview });\n\tconst request: SupervisorRequest = {\n\t\ttype: \"subagent.supervisor.request\",\n\t\tid: requestId,\n\t\tcreatedAt,\n\t\t...(expiresAt !== undefined ? { expiresAt } : {}),\n\t\treason: params.reason,\n\t\tmessage,\n\t\texpectsReply,\n\t\t...(metadata.orchestratorTarget ? { orchestratorTarget: metadata.orchestratorTarget } : {}),\n\t\t...(metadata.orchestratorSessionId ? { orchestratorSessionId: metadata.orchestratorSessionId } : {}),\n\t\trunId: metadata.runId,\n\t\tagent: metadata.agent,\n\t\tchildIndex: metadata.childIndex,\n\t\t...(metadata.childTarget ? { childTarget: metadata.childTarget } : {}),\n\t\t...(params.interview !== undefined ? { interview: params.interview } : {}),\n\t};\n\tconst serialized = JSON.stringify(request, null, \"\\t\");\n\tif (Buffer.byteLength(serialized, \"utf-8\") > MAX_MESSAGE_BYTES) throw new Error(\"Supervisor request is too large.\");\n\twriteAtomicJson(requestPath(metadata.channelDir, requestId), request);\n\n\tif (!expectsReply) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: \"Supervisor progress update queued.\" }],\n\t\t\tdetails: { delivered: true, requestId, reason: params.reason },\n\t\t};\n\t}\n\n\ttry {\n\t\tconst reply = await waitForReply(metadata.channelDir, requestId, replyDeadline, signal);\n\t\tconst details: Record<string, unknown> = { requestId, reason: params.reason };\n\t\tif (params.reason === \"interview_request\") {\n\t\t\tconst structured = parseStructuredReply(reply.message);\n\t\t\tif (structured.error) details.structuredReplyParseError = structured.error;\n\t\t\telse details.structuredReply = structured.value;\n\t\t}\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `**Reply from supervisor:**\\n${reply.message}` }],\n\t\t\tdetails,\n\t\t};\n\t} catch (error) {\n\t\tremoveRequestFile(requestPath(metadata.channelDir, requestId));\n\t\tthrow error;\n\t}\n}\n\nfunction hasTool(pi: ExtensionAPI, name: string): boolean {\n\ttry {\n\t\treturn pi.getAllTools?.().some((tool: { name?: unknown }) => tool.name === name) === true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function registerNativeSupervisorClient(pi: ExtensionAPI, options: { includeIntercomFallback?: boolean } = {}): void {\n\tif (!readChildMetadata()) return;\n\tconst includeIntercomFallback = options.includeIntercomFallback !== false;\n\tif (!hasTool(pi, \"contact_supervisor\")) {\n\t\tconst tool: ToolDefinition<typeof ContactSupervisorParamsSchema, Record<string, unknown>> = {\n\t\t\tname: \"contact_supervisor\",\n\t\t\tlabel: \"Contact Supervisor\",\n\t\t\tdescription: \"Contact the parent/supervisor session for a blocking decision, structured interview, or progress update.\",\n\t\t\tparameters: ContactSupervisorParamsSchema,\n\t\t\texecute(_id, params, signal) {\n\t\t\t\treturn sendSupervisorRequest(params as ContactSupervisorParams, signal);\n\t\t\t},\n\t\t};\n\t\tpi.registerTool(tool);\n\t}\n\tif (includeIntercomFallback && !hasTool(pi, \"intercom\")) {\n\t\tconst tool: ToolDefinition<typeof IntercomParamsSchema, Record<string, unknown>> = {\n\t\t\tname: \"intercom\",\n\t\t\tlabel: \"Intercom\",\n\t\t\tdescription: \"Native supervisor-channel intercom fallback for subagents. Prefer contact_supervisor when available.\",\n\t\t\tparameters: IntercomParamsSchema,\n\t\t\tasync execute(_id, params, signal) {\n\t\t\t\tconst action = (params as IntercomParams).action;\n\t\t\t\tif (action === \"status\") return { content: [{ type: \"text\", text: \"Native supervisor channel is active.\" }], details: { active: true } };\n\t\t\t\tif (action === \"list\") return { content: [{ type: \"text\", text: \"Supervisor session available through contact_supervisor.\" }], details: { sessions: [] } };\n\t\t\t\tif (action === \"send\") return sendSupervisorRequest({ reason: \"progress_update\", message: (params as IntercomParams).message ?? \"\" }, signal);\n\t\t\t\tif (action === \"ask\") return sendSupervisorRequest({ reason: \"need_decision\", message: (params as IntercomParams).message ?? \"\" }, signal);\n\t\t\t\tthrow new Error(\"Native child intercom supports status, list, send, and ask. Use parent intercom reply from the supervisor session.\");\n\t\t\t},\n\t\t};\n\t\tpi.registerTool(tool);\n\t}\n}\n\nfunction parseRequestFile(file: string, channelDir: string): PendingSupervisorRequest | undefined {\n\ttry {\n\t\tconst parsed = JSON.parse(fs.readFileSync(file, \"utf-8\")) as Partial<SupervisorRequest>;\n\t\tif (parsed.type !== \"subagent.supervisor.request\") return undefined;\n\t\tif (typeof parsed.id !== \"string\" || !parsed.id) return undefined;\n\t\tif (parsed.reason !== \"need_decision\" && parsed.reason !== \"interview_request\" && parsed.reason !== \"progress_update\") return undefined;\n\t\tif (typeof parsed.message !== \"string\" || !parsed.message) return undefined;\n\t\tif (typeof parsed.runId !== \"string\" || typeof parsed.agent !== \"string\" || typeof parsed.childIndex !== \"number\") return undefined;\n\t\treturn { ...parsed as SupervisorRequest, channelDir, requestFile: file };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction listRequestFiles(): Array<{ channelDir: string; file: string }> {\n\tlet channelEntries: fs.Dirent[];\n\ttry {\n\t\tchannelEntries = fs.readdirSync(SUPERVISOR_CHANNEL_ROOT, { withFileTypes: true });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\tthrow error;\n\t}\n\tconst files: Array<{ channelDir: string; file: string }> = [];\n\tfor (const entry of channelEntries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\tconst channelDir = path.join(SUPERVISOR_CHANNEL_ROOT, entry.name);\n\t\tconst requestsDir = path.join(channelDir, REQUESTS_DIR);\n\t\tlet requestEntries: fs.Dirent[];\n\t\ttry {\n\t\t\trequestEntries = fs.readdirSync(requestsDir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const requestEntry of requestEntries) {\n\t\t\tif (requestEntry.isFile() && requestEntry.name.endsWith(\".json\")) files.push({ channelDir, file: path.join(requestsDir, requestEntry.name) });\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction readDirectoryEntries(dir: string): fs.Dirent[] | undefined {\n\ttry {\n\t\treturn fs.readdirSync(dir, { withFileTypes: true });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\treturn undefined;\n\t}\n}\n\nfunction directoryMtimeMs(dir: string): number {\n\ttry {\n\t\treturn fs.statSync(dir).mtimeMs;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n\nfunction removeEmptyDirectory(dir: string): boolean {\n\ttry {\n\t\tfs.rmdirSync(dir);\n\t\treturn true;\n\t} catch (error) {\n\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\tif (code === \"ENOENT\") return true;\n\t\tif (code === \"ENOTEMPTY\" || code === \"EEXIST\" || code === \"EPERM\" || code === \"EBUSY\") return false;\n\t\tthrow error;\n\t}\n}\n\nfunction removeStaleEmptySupervisorChannel(channelDir: string, nowMs: number): boolean {\n\tconst requestsDir = path.join(channelDir, REQUESTS_DIR);\n\tconst repliesDir = path.join(channelDir, REPLIES_DIR);\n\tconst newestKnownMtimeMs = Math.max(\n\t\tdirectoryMtimeMs(channelDir),\n\t\tdirectoryMtimeMs(requestsDir),\n\t\tdirectoryMtimeMs(repliesDir),\n\t);\n\tif (nowMs - newestKnownMtimeMs < STALE_EMPTY_CHANNEL_AGE_MS) return false;\n\n\tconst requestEntries = readDirectoryEntries(requestsDir);\n\tif (!requestEntries || requestEntries.length > 0) return false;\n\tconst replyEntries = readDirectoryEntries(repliesDir);\n\tif (!replyEntries || replyEntries.length > 0) return false;\n\n\tif (!removeEmptyDirectory(requestsDir)) return false;\n\tif (!removeEmptyDirectory(repliesDir)) return false;\n\tif (!removeEmptyDirectory(channelDir)) return false;\n\treturn true;\n}\n\nfunction cleanupStaleEmptySupervisorChannels(nowMs = Date.now()): number {\n\tlet channelEntries: fs.Dirent[];\n\ttry {\n\t\tchannelEntries = fs.readdirSync(SUPERVISOR_CHANNEL_ROOT, { withFileTypes: true });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return 0;\n\t\tthrow error;\n\t}\n\n\tlet removed = 0;\n\tfor (const entry of channelEntries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\ttry {\n\t\t\tif (removeStaleEmptySupervisorChannel(path.join(SUPERVISOR_CHANNEL_ROOT, entry.name), nowMs)) removed++;\n\t\t} catch {\n\t\t\t// Cleanup is opportunistic; active writers can race with us and will be picked up by a later pass.\n\t\t}\n\t}\n\treturn removed;\n}\n\nfunction currentContextSessionId(state: Pick<SubagentState, \"currentSessionId\">, ctx: ExtensionContext): string | undefined {\n\ttry {\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tif (sessionId) return sessionId;\n\t} catch {\n\t\t// Fall through to the last known identity.\n\t}\n\treturn state.currentSessionId ?? undefined;\n}\n\nfunction requestMatchesContext(request: SupervisorRequest, state: Pick<SubagentState, \"currentSessionId\">, ctx: ExtensionContext): boolean {\n\tconst currentSessionId = currentContextSessionId(state, ctx);\n\treturn Boolean(currentSessionId && request.orchestratorSessionId === currentSessionId);\n}\n\nfunction removeRequestFile(file: string): void {\n\ttry {\n\t\tfs.rmSync(file, { force: true });\n\t} catch {\n\t\t// Request cleanup is best-effort; reply files and timeout errors remain authoritative.\n\t}\n}\n\ntype SupervisorRequestLifecycle = \"pending\" | \"resolved\" | \"expired\" | \"inactive\" | \"missing\" | \"wrong-session\";\n\nfunction requestExpiresAt(request: SupervisorRequest, now: number): number {\n\tconst expiresAt = (request as { expiresAt?: unknown }).expiresAt;\n\tif (typeof expiresAt === \"number\" && Number.isFinite(expiresAt)) return expiresAt;\n\treturn Number.isFinite(request.createdAt) ? request.createdAt + askTimeoutMs() : now;\n}\n\nfunction requestRunInactive(request: SupervisorRequest, state: SubagentState): boolean {\n\tif (state.foregroundControls.has(request.runId)) return false;\n\tconst foregroundRun = state.foregroundRuns?.get(request.runId);\n\tconst foregroundChild = foregroundRun?.children.find((child) => child.index === request.childIndex && child.agent === request.agent)\n\t\t?? foregroundRun?.children[request.childIndex];\n\tif (foregroundChild) return foregroundChild.status !== \"detached\";\n\n\tconst asyncJob = state.asyncJobs.get(request.runId);\n\tif (!asyncJob) return false;\n\tif (asyncJob.status === \"complete\" || asyncJob.status === \"failed\" || asyncJob.status === \"paused\") return true;\n\tconst stepStatus = asyncJob.steps?.[request.childIndex]?.status;\n\treturn stepStatus === \"complete\" || stepStatus === \"completed\" || stepStatus === \"failed\" || stepStatus === \"paused\";\n}\n\nfunction requestLifecycle(request: PendingSupervisorRequest, state: SubagentState, ctx: ExtensionContext | undefined, now: number): SupervisorRequestLifecycle {\n\tif (ctx && !requestMatchesContext(request, state, ctx)) return \"wrong-session\";\n\tif (!fs.existsSync(request.requestFile)) return \"missing\";\n\tif (request.expectsReply && fs.existsSync(replyPath(request.channelDir, request.id))) return \"resolved\";\n\tif (request.expectsReply && now > requestExpiresAt(request, now)) return \"expired\";\n\tif (request.expectsReply && requestRunInactive(request, state)) return \"inactive\";\n\treturn \"pending\";\n}\n\nfunction cleanupRequestLifecycle(request: PendingSupervisorRequest, lifecycle: SupervisorRequestLifecycle): void {\n\tif (lifecycle === \"resolved\" || lifecycle === \"expired\" || lifecycle === \"inactive\") removeRequestFile(request.requestFile);\n}\n\nfunction refreshPendingRequests(pending: Map<string, PendingSupervisorRequest>, state: SubagentState, ctx: ExtensionContext | undefined): void {\n\tconst now = Date.now();\n\tfor (const request of pending.values()) {\n\t\tconst lifecycle = requestLifecycle(request, state, ctx, now);\n\t\tif (lifecycle === \"pending\") continue;\n\t\tpending.delete(request.id);\n\t\tcleanupRequestLifecycle(request, lifecycle);\n\t}\n}\n\nfunction formatPendingLine(request: PendingSupervisorRequest): string {\n\tconst replyHint = request.expectsReply ? ` Reply: ${NATIVE_SUPERVISOR_TOOL_NAME}({ action: \"reply\", replyTo: \"${request.id}\", message: \"...\" })` : \"\";\n\treturn `- ${request.id}: ${request.agent} [${request.runId}#${request.childIndex}] ${request.reason}.${replyHint}`;\n}\n\nfunction requestVisibleText(request: PendingSupervisorRequest): string {\n\tconst lines = [request.message];\n\tif (request.expectsReply) {\n\t\tlines.push(\"\", `Reply with: ${NATIVE_SUPERVISOR_TOOL_NAME}({ action: \"reply\", replyTo: \"${request.id}\", message: \"...\" })`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction writeReply(request: PendingSupervisorRequest, message: string): void {\n\tif (!message.trim()) throw new Error(\"message is required for supervisor replies.\");\n\tconst reply: SupervisorReply = {\n\t\ttype: \"subagent.supervisor.reply\",\n\t\trequestId: request.id,\n\t\tcreatedAt: Date.now(),\n\t\tmessage: message.trim(),\n\t};\n\twriteAtomicJson(replyPath(request.channelDir, request.id), reply);\n\tremoveRequestFile(request.requestFile);\n}\n\nfunction resolvePendingRequest(pending: Map<string, PendingSupervisorRequest>, params: IntercomParams): PendingSupervisorRequest {\n\tif (params.replyTo) {\n\t\tconst request = pending.get(params.replyTo);\n\t\tif (!request) throw new Error(`No pending supervisor request found for replyTo '${params.replyTo}'.`);\n\t\treturn request;\n\t}\n\tconst requests = [...pending.values()].filter((request) => request.expectsReply);\n\tif (params.to) {\n\t\tconst normalizedTo = params.to.toLowerCase();\n\t\tconst matches = requests.filter((request) =>\n\t\t\trequest.id.toLowerCase().startsWith(normalizedTo)\n\t\t\t|| request.agent.toLowerCase() === normalizedTo\n\t\t\t|| request.childTarget?.toLowerCase() === normalizedTo,\n\t\t);\n\t\tif (matches.length === 1) return matches[0]!;\n\t\tif (matches.length > 1) throw new Error(`Multiple pending supervisor requests match '${params.to}'. Use replyTo.`);\n\t}\n\tif (requests.length === 1) return requests[0]!;\n\tif (requests.length === 0) throw new Error(\"No pending supervisor requests need a reply.\");\n\tthrow new Error(\"Multiple pending supervisor requests need replies. Use replyTo.\");\n}\n\nfunction publicPendingRequests(pending: Map<string, PendingSupervisorRequest>): Array<Record<string, unknown>> {\n\treturn [...pending.values()].map((request) => ({\n\t\tid: request.id,\n\t\trunId: request.runId,\n\t\tagent: request.agent,\n\t\tchildIndex: request.childIndex,\n\t\treason: request.reason,\n\t\texpectsReply: request.expectsReply,\n\t}));\n}\n\nfunction buildParentIntercomTool(pending: Map<string, PendingSupervisorRequest>, state: SubagentState, name = \"intercom\"): ToolDefinition<typeof IntercomParamsSchema, Record<string, unknown>> {\n\treturn {\n\t\tname,\n\t\tlabel: name === \"intercom\" ? \"Intercom\" : \"Subagent Supervisor\",\n\t\tdescription: name === \"intercom\"\n\t\t\t? \"Native pi-subagents supervisor channel. Use reply/pending/status to answer child subagent requests.\"\n\t\t\t: \"Native pi-subagents supervisor channel. Use reply/pending/status to answer child subagent requests without overriding pi-intercom.\",\n\t\tparameters: IntercomParamsSchema,\n\t\tasync execute(_id, params) {\n\t\t\trefreshPendingRequests(pending, state, state.lastUiContext ?? undefined);\n\t\t\tconst input = params as IntercomParams;\n\t\t\tif (input.action === \"status\") {\n\t\t\t\treturn { content: [{ type: \"text\", text: `Native supervisor channel active. Pending replies: ${pending.size}.` }], details: { active: true, pending: pending.size, root: SUPERVISOR_CHANNEL_ROOT } };\n\t\t\t}\n\t\t\tif (input.action === \"pending\" || input.action === \"list\") {\n\t\t\t\tconst lines = [...pending.values()].filter((request) => request.expectsReply).map(formatPendingLine);\n\t\t\t\treturn { content: [{ type: \"text\", text: lines.length ? lines.join(\"\\n\") : \"No pending supervisor requests.\" }], details: { pending: publicPendingRequests(pending) } };\n\t\t\t}\n\t\t\tif (input.action === \"reply\") {\n\t\t\t\tconst request = resolvePendingRequest(pending, input);\n\t\t\t\twriteReply(request, input.message ?? \"\");\n\t\t\t\tpending.delete(request.id);\n\t\t\t\treturn { content: [{ type: \"text\", text: `Replied to supervisor request ${request.id}.` }], details: { replyTo: request.id, runId: request.runId, agent: request.agent } };\n\t\t\t}\n\t\t\tif (input.action === \"send\" || input.action === \"ask\") {\n\t\t\t\tthrow new Error(\"Native pi-subagents intercom currently handles supervisor replies. Child agents initiate asks with contact_supervisor.\");\n\t\t\t}\n\t\t\tthrow new Error(`Unsupported intercom action: ${input.action}`);\n\t\t},\n\t};\n}\n\nexport function createNativeSupervisorChannel(pi: ExtensionAPI, state: SubagentState): { start: () => void; dispose: () => void; pending: Map<string, PendingSupervisorRequest> } {\n\tconst pending = new Map<string, PendingSupervisorRequest>();\n\tconst seenFiles = new Set<string>();\n\tlet poller: ReturnType<typeof setInterval> | undefined;\n\tlet lastStaleCleanupAt = 0;\n\n\tconst registerParentTools = (): void => {\n\t\tif (!hasTool(pi, NATIVE_SUPERVISOR_TOOL_NAME)) pi.registerTool(buildParentIntercomTool(pending, state, NATIVE_SUPERVISOR_TOOL_NAME));\n\t\tif (!hasTool(pi, \"intercom\")) pi.registerTool(buildParentIntercomTool(pending, state));\n\t};\n\n\tconst cleanupStaleChannelsIfDue = (): void => {\n\t\tconst nowMs = Date.now();\n\t\tif (nowMs - lastStaleCleanupAt < STALE_EMPTY_CHANNEL_CLEANUP_INTERVAL_MS) return;\n\t\tlastStaleCleanupAt = nowMs;\n\t\ttry {\n\t\t\tcleanupStaleEmptySupervisorChannels(nowMs);\n\t\t} catch {\n\t\t\t// Supervisor delivery must not fail because best-effort temp cleanup failed.\n\t\t}\n\t};\n\n\tconst poll = (): void => {\n\t\tcleanupStaleChannelsIfDue();\n\t\tconst ctx = state.lastUiContext;\n\t\tif (!ctx) return;\n\t\trefreshPendingRequests(pending, state, ctx);\n\t\tconst now = Date.now();\n\t\tfor (const { channelDir, file } of listRequestFiles()) {\n\t\t\tif (seenFiles.has(file)) continue;\n\t\t\tconst request = parseRequestFile(file, channelDir);\n\t\t\tif (!request || !requestMatchesContext(request, state, ctx)) continue;\n\t\t\tconst lifecycle = requestLifecycle(request, state, undefined, now);\n\t\t\tif (lifecycle !== \"pending\") {\n\t\t\t\tseenFiles.add(file);\n\t\t\t\tcleanupRequestLifecycle(request, lifecycle);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseenFiles.add(file);\n\t\t\tif (request.expectsReply) pending.set(request.id, request);\n\t\t\telse {\n\t\t\t\tremoveRequestFile(request.requestFile);\n\t\t\t}\n\t\t\tpi.sendMessage({\n\t\t\t\tcustomType: \"subagent_supervisor_request\",\n\t\t\t\tcontent: requestVisibleText(request),\n\t\t\t\tdisplay: true,\n\t\t\t\tdetails: {\n\t\t\t\t\tid: request.id,\n\t\t\t\t\treason: request.reason,\n\t\t\t\t\texpectsReply: request.expectsReply,\n\t\t\t\t\trunId: request.runId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\tchildIndex: request.childIndex,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (request.expectsReply) {\n\t\t\t\t(pi as { events?: IntercomEventBus }).events?.emit(INTERCOM_DETACH_REQUEST_EVENT, {\n\t\t\t\t\trequestId: request.id,\n\t\t\t\t\trunId: request.runId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\tchildIndex: request.childIndex,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\treturn {\n\t\tstart: () => {\n\t\t\tif (poller) return;\n\t\t\tregisterParentTools();\n\t\t\tpoll();\n\t\t\tpoller = setInterval(poll, CHANNEL_POLL_MS);\n\t\t\tpoller.unref?.();\n\t\t},\n\t\tdispose: () => {\n\t\t\tif (poller) clearInterval(poller);\n\t\t\tpoller = undefined;\n\t\t\tpending.clear();\n\t\t\tseenFiles.clear();\n\t\t},\n\t\tpending,\n\t};\n}\n"]}
1
+ {"version":3,"file":"native-supervisor-channel.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport type { ExtensionAPI, ExtensionContext, ToolDefinition } from \"@ashx-j/lunr\";\nimport { Type } from \"typebox\";\nimport {\n\tSUBAGENT_CHILD_AGENT_ENV,\n\tSUBAGENT_CHILD_INDEX_ENV,\n\tSUBAGENT_ORCHESTRATOR_SESSION_ID_ENV,\n\tSUBAGENT_ORCHESTRATOR_TARGET_ENV,\n\tSUBAGENT_RUN_ID_ENV,\n\tSUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV,\n\tSUBAGENT_SUPERVISOR_SESSION_ID_ENV,\n} from \"../runs/shared/pi-args.ts\";\nimport { INTERCOM_DETACH_REQUEST_EVENT, POLL_INTERVAL_MS, SUBAGENT_CONTROL_EVENT, type IntercomEventBus, type SubagentState } from \"../shared/types.ts\";\nimport { writeAtomicJson } from \"../shared/atomic-json.ts\";\nimport { askRunningAsyncChild, reconcileAsyncQuestion } from \"./supervisor-ask.ts\";\nimport {\n\tanswerSupervisorQuestion,\n\tcancelPendingSupervisorQuestionsForOwner,\n\tcancelSupervisorQuestion,\n\tclaimQuestionNotification,\n\tformatSupervisorQuestionAnswer,\n\thasOutstandingQuestionForChild,\n\tisQuestionWaitActive,\n\tlistSupervisorChannelDirs,\n\tlistSupervisorQuestions,\n\tmarkSupervisorQuestionDelivered,\n\toutstandingQuestionsForChild,\n\tpendingSupervisorQuestionsForDelivery,\n\tQUESTIONS_DIR,\n\treadSupervisorQuestion,\n\tresolveSupervisorChannelDir as resolveQuestionChannelDir,\n\tSUBAGENT_QUESTION_EVENT,\n\tSUBAGENT_SUPERVISOR_ANSWER_TYPE,\n\tSUPERVISOR_CHANNEL_ROOT,\n\tsupervisorQuestionIsTerminal,\n\tsupervisorQuestionPublicState,\n\ttype SupervisorQuestion,\n\ttype SupervisorQuestionOwner,\n} from \"./supervisor-questions.ts\";\n\nconst REQUESTS_DIR = \"requests\";\nconst REPLIES_DIR = \"replies\";\nexport const NATIVE_SUPERVISOR_TOOL_NAME = \"subagent_supervisor\";\nexport const resolveSupervisorChannelDir = resolveQuestionChannelDir;\nconst MAX_MESSAGE_BYTES = 64 * 1024;\nconst DEFAULT_ASK_TIMEOUT_MS = 10 * 60 * 1000;\nconst CHANNEL_POLL_MS = Math.min(POLL_INTERVAL_MS, 500);\nconst STALE_EMPTY_CHANNEL_AGE_MS = 60 * 1000;\nconst STALE_EMPTY_CHANNEL_CLEANUP_INTERVAL_MS = 60 * 1000;\n\ntype SupervisorReason = \"need_decision\" | \"interview_request\" | \"progress_update\";\n\ninterface SupervisorRequest {\n\ttype: \"subagent.supervisor.request\";\n\tid: string;\n\tcreatedAt: number;\n\texpiresAt?: number;\n\treason: SupervisorReason;\n\tmessage: string;\n\texpectsReply: boolean;\n\torchestratorTarget?: string;\n\torchestratorSessionId?: string;\n\tsupervisorSessionId?: string;\n\trunId: string;\n\tagent: string;\n\tchildIndex: number;\n\tchildTarget?: string;\n\tinterview?: unknown;\n}\n\ninterface PendingSupervisorRequest extends SupervisorRequest {\n\tchannelDir: string;\n\trequestFile: string;\n}\n\ninterface SupervisorReply {\n\ttype: \"subagent.supervisor.reply\";\n\trequestId: string;\n\tcreatedAt: number;\n\tmessage: string;\n}\n\ninterface ContactSupervisorParams {\n\treason?: SupervisorReason;\n\tmessage?: string;\n\tinterview?: unknown;\n\taction?: \"reply\";\n\treplyTo?: string;\n}\n\ninterface IntercomParams {\n\taction: \"list\" | \"send\" | \"ask\" | \"reply\" | \"pending\" | \"status\";\n\tto?: string;\n\tmessage?: string;\n\treplyTo?: string;\n\tid?: string;\n\tindex?: number;\n\tchildId?: string;\n\treason?: string;\n}\n\nconst PARENT_ASK_DESCRIPTION = [\n\t\"Ask a specific running async child, or reply to a child supervisor request.\",\n\t\"Ask only when the child owns missing context, the answer changes a concrete next decision, and waiting risks a block or rework.\",\n\t\"Use available results first, batch related questions, and keep working while awaiting the answer. Do not use ask for status checks, polling, duplicate queries, or step-by-step supervision. Follow up only when the answer leaves the original decision unresolved.\",\n\t\"Returns a question id immediately. The child's explicit answer is delivered separately from the final run result.\",\n\t'Ask: { action: \"ask\", id: \"<runId>\", index?: 0, childId?: \"...\", reason: \"<concrete decision>\", message: \"...\" }',\n\t\"Use pending or list to find child requests awaiting your reply; status reports channel availability. Free-form send is unsupported. Asking never revives a child or changes its assignment.\",\n\t'Reply: { action: \"reply\", replyTo: \"<requestId>\", message: \"...\" }',\n].join(\" \");\n\nconst CHILD_CONTACT_DESCRIPTION = [\n\t\"Contact the parent/supervisor session for a blocking decision, structured interview, progress update, or reply to a parent question.\",\n\t\"For parent questions use action='reply' with replyTo set to the question id. Answer from current findings and uncertainty; do not start extra investigation just to reply. Continue the assigned task after replying.\",\n\t\"Do not open a blocking need_decision while a parent question is already outstanding for this child.\",\n].join(\" \");\n\nconst ContactSupervisorParamsSchema = Type.Object({\n\treason: Type.Optional(Type.String({ enum: [\"need_decision\", \"interview_request\", \"progress_update\"] })),\n\tmessage: Type.Optional(Type.String()),\n\tinterview: Type.Optional(Type.Unsafe({ type: \"object\", additionalProperties: true })),\n\taction: Type.Optional(Type.String({ enum: [\"reply\"] })),\n\treplyTo: Type.Optional(Type.String()),\n}, { additionalProperties: false });\n\nconst IntercomParamsSchema = Type.Object({\n\taction: Type.String({ enum: [\"list\", \"send\", \"ask\", \"reply\", \"pending\", \"status\"] }),\n\tto: Type.Optional(Type.String()),\n\tmessage: Type.Optional(Type.String()),\n\treplyTo: Type.Optional(Type.String()),\n\tid: Type.Optional(Type.String({ description: \"Async run id for action='ask'.\" })),\n\tindex: Type.Optional(Type.Integer({ minimum: 0, description: \"Zero-based child index for action='ask'. Select index or childId when more than one child is running.\" })),\n\tchildId: Type.Optional(Type.String({ description: \"Private child identity for action='ask'.\" })),\n\treason: Type.Optional(Type.String({ description: \"Concrete decision the child's answer will change. Required for action='ask'.\" })),\n}, { additionalProperties: false });\n\nconst ParentSupervisorParamsSchema = Type.Object({\n\t...IntercomParamsSchema.properties,\n\taction: Type.String({ enum: [\"list\", \"ask\", \"reply\", \"pending\", \"status\"] }),\n}, { additionalProperties: false });\n\nfunction safeSegment(value: string): string {\n\treturn value.trim().replace(/[^A-Za-z0-9._-]+/g, \"-\").replace(/^-+|-+$/g, \"\") || \"unknown\";\n}\n\nexport function ensureSupervisorChannelDir(channelDir: string): void {\n\tfs.mkdirSync(path.join(channelDir, REQUESTS_DIR), { recursive: true, mode: 0o700 });\n\tfs.mkdirSync(path.join(channelDir, REPLIES_DIR), { recursive: true, mode: 0o700 });\n\tfs.mkdirSync(path.join(channelDir, QUESTIONS_DIR), { recursive: true, mode: 0o700 });\n}\n\nfunction requestPath(channelDir: string, requestId: string): string {\n\treturn path.join(channelDir, REQUESTS_DIR, `${safeSegment(requestId)}.json`);\n}\n\nfunction replyPath(channelDir: string, requestId: string): string {\n\treturn path.join(channelDir, REPLIES_DIR, `${safeSegment(requestId)}.json`);\n}\n\nfunction readTextEnv(name: string): string | undefined {\n\tconst value = process.env[name]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction readChildMetadata(): {\n\tchannelDir: string;\n\trunId: string;\n\tagent: string;\n\tchildIndex: number;\n\torchestratorTarget?: string;\n\torchestratorSessionId?: string;\n\tchildTarget?: string;\n\tsupervisorSessionId?: string;\n} | undefined {\n\tconst channelDir = readTextEnv(SUBAGENT_SUPERVISOR_CHANNEL_DIR_ENV);\n\tconst runId = readTextEnv(SUBAGENT_RUN_ID_ENV);\n\tconst agent = readTextEnv(SUBAGENT_CHILD_AGENT_ENV);\n\tconst rawIndex = readTextEnv(SUBAGENT_CHILD_INDEX_ENV);\n\tconst orchestratorSessionId = readTextEnv(SUBAGENT_ORCHESTRATOR_SESSION_ID_ENV);\n\tif (!channelDir || !runId || !agent || !orchestratorSessionId || rawIndex === undefined || !/^\\d+$/.test(rawIndex)) return undefined;\n\treturn {\n\t\tchannelDir,\n\t\trunId,\n\t\tagent,\n\t\tchildIndex: Number(rawIndex),\n\t\torchestratorTarget: readTextEnv(SUBAGENT_ORCHESTRATOR_TARGET_ENV),\n\t\torchestratorSessionId,\n\t\tsupervisorSessionId: readTextEnv(SUBAGENT_SUPERVISOR_SESSION_ID_ENV),\n\t\tchildTarget: readTextEnv(\"PI_SUBAGENT_INTERCOM_SESSION_NAME\"),\n\t};\n}\n\nfunction readChildQuestionOwner(metadata = readChildMetadata()): SupervisorQuestionOwner | undefined {\n\tif (!metadata) return undefined;\n\tconst readyAt = Number(process.env.PI_SUBAGENT_STEER_READY_AT);\n\tif (!Number.isFinite(readyAt) || readyAt <= 0) return undefined;\n\treturn {\n\t\trunId: metadata.runId,\n\t\tchildIndex: metadata.childIndex,\n\t\tchildId: metadata.agent,\n\t\tpid: process.pid,\n\t\treadyAt,\n\t};\n}\n\nfunction answerParentQuestion(params: ContactSupervisorParams): AgentToolResult<Record<string, unknown>> {\n\tconst metadata = readChildMetadata();\n\tconst owner = readChildQuestionOwner(metadata);\n\tif (!metadata || !owner) throw new Error(\"Native supervisor channel is not available for this subagent.\");\n\tconst replyTo = params.replyTo?.trim();\n\tif (!replyTo) throw new Error(\"action='reply' requires replyTo with the parent question id.\");\n\tconst message = params.message?.trim();\n\tif (!message) throw new Error(\"message is required for supervisor question replies.\");\n\tconst question = readSupervisorQuestion(metadata.channelDir, replyTo);\n\tif (question?.parentSessionId !== (metadata.supervisorSessionId ?? metadata.orchestratorSessionId)) throw new Error(\"Question belongs to a different supervisor session.\");\n\tconst answered = answerSupervisorQuestion(metadata.channelDir, replyTo, message, owner);\n\treturn {\n\t\tcontent: [{ type: \"text\", text: `Replied to parent question ${answered.id}. Continue the assigned task.` }],\n\t\tdetails: {\n\t\t\treplyTo: answered.id,\n\t\t\tstate: supervisorQuestionPublicState(answered),\n\t\t\tanswered: true,\n\t\t},\n\t};\n}\n\nfunction reasonHeading(reason: SupervisorReason): string {\n\tif (reason === \"interview_request\") return \"Subagent requests a structured supervisor interview.\";\n\tif (reason === \"progress_update\") return \"Subagent progress update.\";\n\treturn \"Subagent needs a supervisor decision.\";\n}\n\nfunction formatChildMessage(input: {\n\treason: SupervisorReason;\n\tmessage?: string;\n\tinterview?: unknown;\n\trunId: string;\n\tagent: string;\n\tchildIndex: number;\n\tchildTarget?: string;\n}): string {\n\tconst lines = [\n\t\treasonHeading(input.reason),\n\t\t`Run: ${input.runId}`,\n\t\t`Agent: ${input.agent}`,\n\t\t`Child index: ${input.childIndex}`,\n\t];\n\tif (input.childTarget) lines.push(`Child intercom target: ${input.childTarget}`);\n\tlines.push(\"\");\n\tif (input.message?.trim()) lines.push(input.message.trim());\n\tif (input.reason === \"interview_request\") {\n\t\tlines.push(\n\t\t\t\"\",\n\t\t\t\"Structured response requested. Reply with JSON, optionally fenced in ```json, matching the requested interview shape.\",\n\t\t);\n\t\tif (input.interview !== undefined) lines.push(JSON.stringify(input.interview, null, \"\\t\"));\n\t}\n\treturn lines.join(\"\\n\").trimEnd();\n}\n\nfunction parseStructuredReply(message: string): { value?: unknown; error?: string } {\n\tconst trimmed = message.trim();\n\tconst fenced = trimmed.match(/^```(?:json)?\\s*([\\s\\S]*?)\\s*```$/i)?.[1]?.trim();\n\ttry {\n\t\treturn { value: JSON.parse(fenced ?? trimmed) };\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? `${error.name}: ${error.message}` : String(error) };\n\t}\n}\n\nfunction askTimeoutMs(): number {\n\tconst parsed = Number(process.env.PI_INTERCOM_ASK_TIMEOUT_MS);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_ASK_TIMEOUT_MS;\n}\n\nfunction delay(ms: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal?.aborted) {\n\t\t\treject(new Error(\"Supervisor request cancelled.\"));\n\t\t\treturn;\n\t\t}\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst cleanup = () => {\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t};\n\t\tconst onAbort = () => {\n\t\t\tcleanup();\n\t\t\treject(new Error(\"Supervisor request cancelled.\"));\n\t\t};\n\t\ttimer = setTimeout(() => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t}, ms);\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\nasync function waitForReply(channelDir: string, requestId: string, deadline: number, signal?: AbortSignal): Promise<SupervisorReply> {\n\tconst file = replyPath(channelDir, requestId);\n\twhile (Date.now() <= deadline) {\n\t\tif (signal?.aborted) throw new Error(\"Supervisor request cancelled.\");\n\t\tif (fs.existsSync(file)) {\n\t\t\tconst parsed = JSON.parse(fs.readFileSync(file, \"utf-8\")) as Partial<SupervisorReply>;\n\t\t\tif (parsed.type === \"subagent.supervisor.reply\" && parsed.requestId === requestId && typeof parsed.message === \"string\") {\n\t\t\t\treturn parsed as SupervisorReply;\n\t\t\t}\n\t\t}\n\t\tawait delay(250, signal);\n\t}\n\tthrow new Error(\"Timed out waiting for supervisor reply.\");\n}\n\nasync function sendSupervisorRequest(params: ContactSupervisorParams, signal?: AbortSignal): Promise<AgentToolResult<Record<string, unknown>>> {\n\tif (params.action === \"reply\" || params.replyTo?.trim()) {\n\t\treturn answerParentQuestion(params);\n\t}\n\tconst metadata = readChildMetadata();\n\tif (!metadata) throw new Error(\"Native supervisor channel is not available for this subagent.\");\n\tif (!params.reason) throw new Error(\"reason is required for supervisor contact.\");\n\tif (params.reason !== \"progress_update\" && hasOutstandingQuestionForChild(metadata.channelDir, metadata.childIndex, metadata.agent)) {\n\t\tthrow new Error(\"A parent question is already outstanding for this child. Answer it with action='reply' before opening a blocking supervisor request.\");\n\t}\n\tif (params.reason !== \"progress_update\" && !params.message?.trim() && params.reason !== \"interview_request\") {\n\t\tthrow new Error(\"message is required for supervisor decisions.\");\n\t}\n\tensureSupervisorChannelDir(metadata.channelDir);\n\tconst requestId = randomUUID();\n\tconst expectsReply = params.reason !== \"progress_update\";\n\tconst createdAt = Date.now();\n\tconst replyDeadline = createdAt + askTimeoutMs();\n\tconst expiresAt = expectsReply ? replyDeadline : undefined;\n\tconst message = formatChildMessage({ ...metadata, reason: params.reason, message: params.message, interview: params.interview });\n\tconst request: SupervisorRequest = {\n\t\ttype: \"subagent.supervisor.request\",\n\t\tid: requestId,\n\t\tcreatedAt,\n\t\t...(expiresAt !== undefined ? { expiresAt } : {}),\n\t\treason: params.reason,\n\t\tmessage,\n\t\texpectsReply,\n\t\t...(metadata.orchestratorTarget ? { orchestratorTarget: metadata.orchestratorTarget } : {}),\n\t\t...(metadata.orchestratorSessionId ? { orchestratorSessionId: metadata.orchestratorSessionId } : {}),\n\t\t...(metadata.supervisorSessionId ? { supervisorSessionId: metadata.supervisorSessionId } : {}),\n\t\trunId: metadata.runId,\n\t\tagent: metadata.agent,\n\t\tchildIndex: metadata.childIndex,\n\t\t...(metadata.childTarget ? { childTarget: metadata.childTarget } : {}),\n\t\t...(params.interview !== undefined ? { interview: params.interview } : {}),\n\t};\n\tconst serialized = JSON.stringify(request, null, \"\\t\");\n\tif (Buffer.byteLength(serialized, \"utf-8\") > MAX_MESSAGE_BYTES) throw new Error(\"Supervisor request is too large.\");\n\twriteAtomicJson(requestPath(metadata.channelDir, requestId), request);\n\tif (expectsReply) {\n\t\tfor (const question of outstandingQuestionsForChild(metadata.channelDir, metadata.childIndex, metadata.agent)) {\n\t\t\tcancelSupervisorQuestion(metadata.channelDir, question.id, \"child needs a supervisor decision; reply to its request first\");\n\t\t}\n\t}\n\n\tif (!expectsReply) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: \"Supervisor progress update queued.\" }],\n\t\t\tdetails: { delivered: true, requestId, reason: params.reason },\n\t\t};\n\t}\n\n\ttry {\n\t\tconst reply = await waitForReply(metadata.channelDir, requestId, replyDeadline, signal);\n\t\tconst details: Record<string, unknown> = { requestId, reason: params.reason };\n\t\tif (params.reason === \"interview_request\") {\n\t\t\tconst structured = parseStructuredReply(reply.message);\n\t\t\tif (structured.error) details.structuredReplyParseError = structured.error;\n\t\t\telse details.structuredReply = structured.value;\n\t\t}\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `**Reply from supervisor:**\\n${reply.message}` }],\n\t\t\tdetails,\n\t\t};\n\t} catch (error) {\n\t\tremoveRequestFile(requestPath(metadata.channelDir, requestId));\n\t\tthrow error;\n\t}\n}\n\nfunction hasTool(pi: ExtensionAPI, name: string): boolean {\n\ttry {\n\t\treturn pi.getAllTools?.().some((tool: { name?: unknown }) => tool.name === name) === true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function registerNativeSupervisorClient(pi: ExtensionAPI, options: { includeIntercomFallback?: boolean } = {}): void {\n\tif (!readChildMetadata()) return;\n\tconst includeIntercomFallback = options.includeIntercomFallback !== false;\n\tif (!hasTool(pi, \"contact_supervisor\")) {\n\t\tconst tool: ToolDefinition<typeof ContactSupervisorParamsSchema, Record<string, unknown>> = {\n\t\t\tname: \"contact_supervisor\",\n\t\t\tlabel: \"Contact Supervisor\",\n\t\t\tdescription: CHILD_CONTACT_DESCRIPTION,\n\t\t\tparameters: ContactSupervisorParamsSchema,\n\t\t\texecute(_id, params, signal) {\n\t\t\t\treturn sendSupervisorRequest(params as ContactSupervisorParams, signal);\n\t\t\t},\n\t\t};\n\t\tpi.registerTool(tool);\n\t}\n\tif (includeIntercomFallback && !hasTool(pi, \"intercom\")) {\n\t\tconst tool: ToolDefinition<typeof IntercomParamsSchema, Record<string, unknown>> = {\n\t\t\tname: \"intercom\",\n\t\t\tlabel: \"Intercom\",\n\t\t\tdescription: \"Native supervisor-channel intercom fallback for subagents. Prefer contact_supervisor when available.\",\n\t\t\tparameters: IntercomParamsSchema,\n\t\t\tasync execute(_id, params, signal) {\n\t\t\t\tconst action = (params as IntercomParams).action;\n\t\t\t\tif (action === \"status\") return { content: [{ type: \"text\", text: \"Native supervisor channel is active.\" }], details: { active: true } };\n\t\t\t\tif (action === \"list\") return { content: [{ type: \"text\", text: \"Supervisor session available through contact_supervisor.\" }], details: { sessions: [] } };\n\t\t\t\tif (action === \"send\") return sendSupervisorRequest({ reason: \"progress_update\", message: (params as IntercomParams).message ?? \"\" }, signal);\n\t\t\t\tif (action === \"ask\") return sendSupervisorRequest({ reason: \"need_decision\", message: (params as IntercomParams).message ?? \"\" }, signal);\n\t\t\t\tthrow new Error(\"Native child intercom supports status, list, send, and ask. Use parent intercom reply from the supervisor session.\");\n\t\t\t},\n\t\t};\n\t\tpi.registerTool(tool);\n\t}\n}\n\nfunction parseRequestFile(file: string, channelDir: string): PendingSupervisorRequest | undefined {\n\ttry {\n\t\tconst parsed = JSON.parse(fs.readFileSync(file, \"utf-8\")) as Partial<SupervisorRequest>;\n\t\tif (parsed.type !== \"subagent.supervisor.request\") return undefined;\n\t\tif (parsed.supervisorSessionId !== undefined && (typeof parsed.supervisorSessionId !== \"string\" || !parsed.supervisorSessionId.trim())) return undefined;\n\t\tif (typeof parsed.id !== \"string\" || !parsed.id) return undefined;\n\t\tif (parsed.reason !== \"need_decision\" && parsed.reason !== \"interview_request\" && parsed.reason !== \"progress_update\") return undefined;\n\t\tif (typeof parsed.message !== \"string\" || !parsed.message) return undefined;\n\t\tif (typeof parsed.runId !== \"string\" || typeof parsed.agent !== \"string\" || typeof parsed.childIndex !== \"number\") return undefined;\n\t\treturn { ...parsed as SupervisorRequest, channelDir, requestFile: file };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function hasPendingBlockingSupervisorRequest(runId: string, sessionId?: string | null, now = Date.now()): boolean {\n\tif (!runId) return false;\n\tfor (const { channelDir, file } of listRequestFiles()) {\n\t\tconst request = parseRequestFile(file, channelDir);\n\t\tif (!request?.expectsReply) continue;\n\t\tif (request.runId !== runId) continue;\n\t\tif (sessionId && (request.supervisorSessionId ?? request.orchestratorSessionId) !== sessionId) continue;\n\t\tif (fs.existsSync(replyPath(request.channelDir, request.id))) continue;\n\t\tif (now > requestExpiresAt(request, now)) continue;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction listRequestFiles(): Array<{ channelDir: string; file: string }> {\n\tlet channelEntries: fs.Dirent[];\n\ttry {\n\t\tchannelEntries = fs.readdirSync(SUPERVISOR_CHANNEL_ROOT, { withFileTypes: true });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\tthrow error;\n\t}\n\tconst files: Array<{ channelDir: string; file: string }> = [];\n\tfor (const entry of channelEntries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\tconst channelDir = path.join(SUPERVISOR_CHANNEL_ROOT, entry.name);\n\t\tconst requestsDir = path.join(channelDir, REQUESTS_DIR);\n\t\tlet requestEntries: fs.Dirent[];\n\t\ttry {\n\t\t\trequestEntries = fs.readdirSync(requestsDir, { withFileTypes: true });\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const requestEntry of requestEntries) {\n\t\t\tif (requestEntry.isFile() && requestEntry.name.endsWith(\".json\")) files.push({ channelDir, file: path.join(requestsDir, requestEntry.name) });\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction readDirectoryEntries(dir: string): fs.Dirent[] | undefined {\n\ttry {\n\t\treturn fs.readdirSync(dir, { withFileTypes: true });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return [];\n\t\treturn undefined;\n\t}\n}\n\nfunction directoryMtimeMs(dir: string): number {\n\ttry {\n\t\treturn fs.statSync(dir).mtimeMs;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n\nfunction removeEmptyDirectory(dir: string): boolean {\n\ttry {\n\t\tfs.rmdirSync(dir);\n\t\treturn true;\n\t} catch (error) {\n\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\tif (code === \"ENOENT\") return true;\n\t\tif (code === \"ENOTEMPTY\" || code === \"EEXIST\" || code === \"EPERM\" || code === \"EBUSY\") return false;\n\t\tthrow error;\n\t}\n}\n\nfunction removeStaleEmptySupervisorChannel(channelDir: string, nowMs: number): boolean {\n\tconst requestsDir = path.join(channelDir, REQUESTS_DIR);\n\tconst repliesDir = path.join(channelDir, REPLIES_DIR);\n\tconst questionsPath = path.join(channelDir, QUESTIONS_DIR);\n\tconst newestKnownMtimeMs = Math.max(\n\t\tdirectoryMtimeMs(channelDir),\n\t\tdirectoryMtimeMs(requestsDir),\n\t\tdirectoryMtimeMs(repliesDir),\n\t\tdirectoryMtimeMs(questionsPath),\n\t);\n\tif (nowMs - newestKnownMtimeMs < STALE_EMPTY_CHANNEL_AGE_MS) return false;\n\n\tconst requestEntries = readDirectoryEntries(requestsDir);\n\tif (!requestEntries || requestEntries.length > 0) return false;\n\tconst replyEntries = readDirectoryEntries(repliesDir);\n\tif (!replyEntries || replyEntries.length > 0) return false;\n\tconst questionEntries = readDirectoryEntries(questionsPath);\n\tif (!questionEntries || questionEntries.length > 0) return false;\n\n\tif (!removeEmptyDirectory(requestsDir)) return false;\n\tif (!removeEmptyDirectory(repliesDir)) return false;\n\tif (!removeEmptyDirectory(questionsPath)) return false;\n\tif (!removeEmptyDirectory(channelDir)) return false;\n\treturn true;\n}\n\nfunction cleanupStaleEmptySupervisorChannels(nowMs = Date.now()): number {\n\tlet channelEntries: fs.Dirent[];\n\ttry {\n\t\tchannelEntries = fs.readdirSync(SUPERVISOR_CHANNEL_ROOT, { withFileTypes: true });\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return 0;\n\t\tthrow error;\n\t}\n\n\tlet removed = 0;\n\tfor (const entry of channelEntries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\ttry {\n\t\t\tif (removeStaleEmptySupervisorChannel(path.join(SUPERVISOR_CHANNEL_ROOT, entry.name), nowMs)) removed++;\n\t\t} catch {\n\t\t\t// Cleanup is opportunistic; active writers can race with us and will be picked up by a later pass.\n\t\t}\n\t}\n\treturn removed;\n}\n\nfunction currentContextSessionId(state: Pick<SubagentState, \"currentSessionId\">, ctx: ExtensionContext): string | undefined {\n\ttry {\n\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\tif (sessionId) return sessionId;\n\t} catch {\n\t\t// Fall through to the last known identity.\n\t}\n\treturn state.currentSessionId ?? undefined;\n}\n\nfunction currentSupervisorSessionId(state: Pick<SubagentState, \"currentSessionId\">, ctx: ExtensionContext): string | undefined {\n\ttry {\n\t\treturn ctx.sessionManager.getSessionFile?.() ?? currentContextSessionId(state, ctx);\n\t} catch {\n\t\treturn state.currentSessionId ?? undefined;\n\t}\n}\n\nfunction requestMatchesContext(request: SupervisorRequest, state: Pick<SubagentState, \"currentSessionId\">, ctx: ExtensionContext): boolean {\n\tconst currentSessionId = request.supervisorSessionId !== undefined\n\t\t? currentSupervisorSessionId(state, ctx)\n\t\t: currentContextSessionId(state, ctx);\n\treturn Boolean(currentSessionId && (request.supervisorSessionId ?? request.orchestratorSessionId) === currentSessionId);\n}\n\nfunction removeRequestFile(file: string): void {\n\ttry {\n\t\tfs.rmSync(file, { force: true });\n\t} catch {\n\t\t// Request cleanup is best-effort; reply files and timeout errors remain authoritative.\n\t}\n}\n\ntype SupervisorRequestLifecycle = \"pending\" | \"resolved\" | \"expired\" | \"inactive\" | \"missing\" | \"wrong-session\";\n\nfunction requestExpiresAt(request: SupervisorRequest, now: number): number {\n\tconst expiresAt = (request as { expiresAt?: unknown }).expiresAt;\n\tif (typeof expiresAt === \"number\" && Number.isFinite(expiresAt)) return expiresAt;\n\treturn Number.isFinite(request.createdAt) ? request.createdAt + askTimeoutMs() : now;\n}\n\nfunction requestRunInactive(request: SupervisorRequest, state: SubagentState): boolean {\n\tif (state.foregroundControls.has(request.runId)) return false;\n\tconst foregroundRun = state.foregroundRuns?.get(request.runId);\n\tconst foregroundChild = foregroundRun?.children.find((child) => child.index === request.childIndex && child.agent === request.agent)\n\t\t?? foregroundRun?.children[request.childIndex];\n\tif (foregroundChild) return foregroundChild.status !== \"detached\";\n\n\tconst asyncJob = state.asyncJobs.get(request.runId);\n\tif (!asyncJob) return false;\n\tif (asyncJob.status === \"complete\" || asyncJob.status === \"failed\" || asyncJob.status === \"paused\") return true;\n\tconst stepStatus = asyncJob.steps?.[request.childIndex]?.status;\n\treturn stepStatus === \"complete\" || stepStatus === \"completed\" || stepStatus === \"failed\" || stepStatus === \"paused\";\n}\n\nfunction requestLifecycle(request: PendingSupervisorRequest, state: SubagentState, ctx: ExtensionContext | undefined, now: number): SupervisorRequestLifecycle {\n\tif (ctx && !requestMatchesContext(request, state, ctx)) return \"wrong-session\";\n\tif (!fs.existsSync(request.requestFile)) return \"missing\";\n\tif (request.expectsReply && fs.existsSync(replyPath(request.channelDir, request.id))) return \"resolved\";\n\tif (request.expectsReply && now > requestExpiresAt(request, now)) return \"expired\";\n\tif (request.expectsReply && requestRunInactive(request, state)) return \"inactive\";\n\treturn \"pending\";\n}\n\nfunction cleanupRequestLifecycle(request: PendingSupervisorRequest, lifecycle: SupervisorRequestLifecycle): void {\n\tif (lifecycle === \"resolved\" || lifecycle === \"expired\" || lifecycle === \"inactive\") removeRequestFile(request.requestFile);\n}\n\nfunction refreshPendingRequests(pending: Map<string, PendingSupervisorRequest>, state: SubagentState, ctx: ExtensionContext | undefined): void {\n\tconst now = Date.now();\n\tfor (const request of pending.values()) {\n\t\tconst lifecycle = requestLifecycle(request, state, ctx, now);\n\t\tif (lifecycle === \"pending\") continue;\n\t\tpending.delete(request.id);\n\t\tcleanupRequestLifecycle(request, lifecycle);\n\t}\n}\n\nfunction formatPendingLine(request: PendingSupervisorRequest): string {\n\tconst replyHint = request.expectsReply ? ` Reply: ${NATIVE_SUPERVISOR_TOOL_NAME}({ action: \"reply\", replyTo: \"${request.id}\", message: \"...\" })` : \"\";\n\treturn `- ${request.id}: ${request.agent} [${request.runId}#${request.childIndex}] ${request.reason}.${replyHint}`;\n}\n\nfunction requestVisibleText(request: PendingSupervisorRequest): string {\n\tconst lines = [request.message];\n\tif (request.expectsReply) {\n\t\tlines.push(\"\", `Reply with: ${NATIVE_SUPERVISOR_TOOL_NAME}({ action: \"reply\", replyTo: \"${request.id}\", message: \"...\" })`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction writeReply(request: PendingSupervisorRequest, message: string): void {\n\tif (!message.trim()) throw new Error(\"message is required for supervisor replies.\");\n\tconst reply: SupervisorReply = {\n\t\ttype: \"subagent.supervisor.reply\",\n\t\trequestId: request.id,\n\t\tcreatedAt: Date.now(),\n\t\tmessage: message.trim(),\n\t};\n\twriteAtomicJson(replyPath(request.channelDir, request.id), reply);\n\tremoveRequestFile(request.requestFile);\n}\n\nfunction resolvePendingRequest(pending: Map<string, PendingSupervisorRequest>, params: IntercomParams): PendingSupervisorRequest {\n\tif (params.replyTo) {\n\t\tconst request = pending.get(params.replyTo);\n\t\tif (!request) throw new Error(`No pending supervisor request found for replyTo '${params.replyTo}'.`);\n\t\treturn request;\n\t}\n\tconst requests = [...pending.values()].filter((request) => request.expectsReply);\n\tif (params.to) {\n\t\tconst normalizedTo = params.to.toLowerCase();\n\t\tconst matches = requests.filter((request) =>\n\t\t\trequest.id.toLowerCase().startsWith(normalizedTo)\n\t\t\t|| request.agent.toLowerCase() === normalizedTo\n\t\t\t|| request.childTarget?.toLowerCase() === normalizedTo,\n\t\t);\n\t\tif (matches.length === 1) return matches[0]!;\n\t\tif (matches.length > 1) throw new Error(`Multiple pending supervisor requests match '${params.to}'. Use replyTo.`);\n\t}\n\tif (requests.length === 1) return requests[0]!;\n\tif (requests.length === 0) throw new Error(\"No pending supervisor requests need a reply.\");\n\tthrow new Error(\"Multiple pending supervisor requests need replies. Use replyTo.\");\n}\n\nfunction publicPendingRequests(pending: Map<string, PendingSupervisorRequest>): Array<Record<string, unknown>> {\n\treturn [...pending.values()].map((request) => ({\n\t\tid: request.id,\n\t\trunId: request.runId,\n\t\tagent: request.agent,\n\t\tchildIndex: request.childIndex,\n\t\treason: request.reason,\n\t\texpectsReply: request.expectsReply,\n\t}));\n}\n\nfunction buildParentIntercomTool(pending: Map<string, PendingSupervisorRequest>, state: SubagentState, name = \"intercom\"): ToolDefinition<typeof ParentSupervisorParamsSchema, Record<string, unknown>> {\n\treturn {\n\t\tname,\n\t\tlabel: name === \"intercom\" ? \"Intercom\" : \"Subagent Supervisor\",\n\t\tdescription: PARENT_ASK_DESCRIPTION,\n\t\tparameters: ParentSupervisorParamsSchema,\n\t\tasync execute(_id, params) {\n\t\t\trefreshPendingRequests(pending, state, state.lastUiContext ?? undefined);\n\t\t\tconst input = params as IntercomParams;\n\t\t\tif (input.action === \"status\") {\n\t\t\t\treturn { content: [{ type: \"text\", text: `Native supervisor channel active. Pending replies: ${pending.size}.` }], details: { active: true, pending: pending.size, root: SUPERVISOR_CHANNEL_ROOT } };\n\t\t\t}\n\t\t\tif (input.action === \"pending\" || input.action === \"list\") {\n\t\t\t\tconst lines = [...pending.values()].filter((request) => request.expectsReply).map(formatPendingLine);\n\t\t\t\treturn { content: [{ type: \"text\", text: lines.length ? lines.join(\"\\n\") : \"No pending supervisor requests.\" }], details: { pending: publicPendingRequests(pending) } };\n\t\t\t}\n\t\t\tif (input.action === \"reply\") {\n\t\t\t\tconst request = resolvePendingRequest(pending, input);\n\t\t\t\twriteReply(request, input.message ?? \"\");\n\t\t\t\tpending.delete(request.id);\n\t\t\t\treturn { content: [{ type: \"text\", text: `Replied to supervisor request ${request.id}.` }], details: { replyTo: request.id, runId: request.runId, agent: request.agent } };\n\t\t\t}\n\t\t\tif (input.action === \"ask\") {\n\t\t\t\treturn askRunningAsyncChild({\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tid: input.id,\n\t\t\t\t\t\tindex: input.index,\n\t\t\t\t\t\tchildId: input.childId,\n\t\t\t\t\t\treason: input.reason,\n\t\t\t\t\t\tmessage: input.message,\n\t\t\t\t\t},\n\t\t\t\t\tstate,\n\t\t\t\t\tchildRequests: pending.values(),\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (input.action === \"send\") {\n\t\t\t\tthrow new Error(\"Native pi-subagents intercom does not support free-form send. Use action='ask' for a running async child or action='reply' for a pending child request.\");\n\t\t\t}\n\t\t\tthrow new Error(`Unsupported intercom action: ${input.action}`);\n\t\t},\n\t};\n}\n\nfunction questionMatchesParentContext(question: SupervisorQuestion, state: SubagentState, ctx: ExtensionContext): boolean {\n\tconst sessionId = currentSupervisorSessionId(state, ctx);\n\tif (!sessionId || question.parentSessionId !== sessionId) return false;\n\tif ((state.sessionGeneration ?? 0) !== question.parentGeneration) return false;\n\treturn true;\n}\n\nfunction notifyQuestionTerminal(pi: ExtensionAPI, question: SupervisorQuestion, channelDir: string): void {\n\tif (!supervisorQuestionIsTerminal(question) || question.notifiedAt) return;\n\t(pi as { events?: IntercomEventBus }).events?.emit(SUBAGENT_QUESTION_EVENT, {\n\t\tquestionId: question.id,\n\t\tstate: supervisorQuestionPublicState(question),\n\t\trunId: question.runId,\n\t});\n\tif (isQuestionWaitActive(question.id)) return;\n\tif (!claimQuestionNotification(channelDir, question.id)) return;\n\tconst state = supervisorQuestionPublicState(question);\n\tpi.sendMessage({\n\t\tcustomType: SUBAGENT_SUPERVISOR_ANSWER_TYPE,\n\t\tcontent: formatSupervisorQuestionAnswer(question),\n\t\tdisplay: state === \"answered\",\n\t\tdetails: {\n\t\t\tquestionId: question.id,\n\t\t\tstate,\n\t\t\trunId: question.runId,\n\t\t\tchildIndex: question.childIndex,\n\t\t\tchildId: question.childId,\n\t\t\treason: question.reason,\n\t\t\tanswered: state === \"answered\",\n\t\t\tdelivered: Boolean(question.deliveredAt),\n\t\t},\n\t}, { triggerTurn: state === \"answered\" });\n}\n\nfunction pollSupervisorQuestions(pi: ExtensionAPI, state: SubagentState, ctx: ExtensionContext): void {\n\tfor (const channelDir of listSupervisorChannelDirs()) {\n\t\tfor (const question of listSupervisorQuestions(channelDir)) {\n\t\t\tif (!questionMatchesParentContext(question, state, ctx)) continue;\n\t\t\tconst current = reconcileAsyncQuestion(channelDir, question, state);\n\t\t\tnotifyQuestionTerminal(pi, current, channelDir);\n\t\t}\n\t}\n}\n\nexport function createNativeSupervisorChannel(pi: ExtensionAPI, state: SubagentState): {\n\tstart: () => void;\n\tdispose: () => void;\n\tpending: Map<string, PendingSupervisorRequest>;\n\tcancelOwnedQuestions: (reason: string) => void;\n\tsettleRunQuestions: (runId: string, reason: string) => void;\n} {\n\tconst pending = new Map<string, PendingSupervisorRequest>();\n\tconst seenFiles = new Set<string>();\n\tlet poller: ReturnType<typeof setInterval> | undefined;\n\tlet lastStaleCleanupAt = 0;\n\n\tconst registerParentTools = (): void => {\n\t\tif (!hasTool(pi, NATIVE_SUPERVISOR_TOOL_NAME)) pi.registerTool(buildParentIntercomTool(pending, state, NATIVE_SUPERVISOR_TOOL_NAME));\n\t\tif (!hasTool(pi, \"intercom\")) pi.registerTool(buildParentIntercomTool(pending, state));\n\t};\n\n\tconst cleanupStaleChannelsIfDue = (): void => {\n\t\tconst nowMs = Date.now();\n\t\tif (nowMs - lastStaleCleanupAt < STALE_EMPTY_CHANNEL_CLEANUP_INTERVAL_MS) return;\n\t\tlastStaleCleanupAt = nowMs;\n\t\ttry {\n\t\t\tcleanupStaleEmptySupervisorChannels(nowMs);\n\t\t} catch {\n\t\t\t// Supervisor delivery must not fail because best-effort temp cleanup failed.\n\t\t}\n\t};\n\n\tconst cancelOwnedQuestions = (reason: string): void => {\n\t\tif (!state.currentSessionId) return;\n\t\tcancelPendingSupervisorQuestionsForOwner({\n\t\t\tparentSessionId: state.currentSessionId,\n\t\t\tparentGeneration: state.sessionGeneration ?? 0,\n\t\t\treason,\n\t\t});\n\t};\n\n\tconst settleRunQuestions = (runId: string, reason: string): void => {\n\t\tif (!state.currentSessionId) return;\n\t\tcancelPendingSupervisorQuestionsForOwner({\n\t\t\tparentSessionId: state.currentSessionId,\n\t\t\trunId,\n\t\t\treason,\n\t\t});\n\t};\n\n\tconst poll = (): void => {\n\t\tcleanupStaleChannelsIfDue();\n\t\tconst ctx = state.lastUiContext;\n\t\tif (!ctx) return;\n\t\trefreshPendingRequests(pending, state, ctx);\n\t\tpollSupervisorQuestions(pi, state, ctx);\n\t\tconst now = Date.now();\n\t\tfor (const { channelDir, file } of listRequestFiles()) {\n\t\t\tif (seenFiles.has(file)) continue;\n\t\t\tconst request = parseRequestFile(file, channelDir);\n\t\t\tif (!request || !requestMatchesContext(request, state, ctx)) continue;\n\t\t\tconst lifecycle = requestLifecycle(request, state, undefined, now);\n\t\t\tif (lifecycle !== \"pending\") {\n\t\t\t\tseenFiles.add(file);\n\t\t\t\tcleanupRequestLifecycle(request, lifecycle);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseenFiles.add(file);\n\t\t\tif (request.expectsReply) pending.set(request.id, request);\n\t\t\telse {\n\t\t\t\tremoveRequestFile(request.requestFile);\n\t\t\t}\n\t\t\tpi.sendMessage({\n\t\t\t\tcustomType: \"subagent_supervisor_request\",\n\t\t\t\tcontent: requestVisibleText(request),\n\t\t\t\tdisplay: true,\n\t\t\t\tdetails: {\n\t\t\t\t\tid: request.id,\n\t\t\t\t\treason: request.reason,\n\t\t\t\t\texpectsReply: request.expectsReply,\n\t\t\t\t\trunId: request.runId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\tchildIndex: request.childIndex,\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (request.expectsReply) {\n\t\t\t\tconst job = state.asyncJobs.get(request.runId);\n\t\t\t\tif (job) job.activityState = \"needs_attention\";\n\t\t\t\tconst events = (pi as { events?: IntercomEventBus }).events;\n\t\t\t\tevents?.emit(INTERCOM_DETACH_REQUEST_EVENT, {\n\t\t\t\t\trequestId: request.id,\n\t\t\t\t\trunId: request.runId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\tchildIndex: request.childIndex,\n\t\t\t\t});\n\t\t\t\tevents?.emit(SUBAGENT_CONTROL_EVENT, {\n\t\t\t\t\ttype: \"needs_attention\",\n\t\t\t\t\tto: \"needs_attention\",\n\t\t\t\t\trunId: request.runId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\tindex: request.childIndex,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\treturn {\n\t\tstart: () => {\n\t\t\tif (poller) return;\n\t\t\tregisterParentTools();\n\t\t\tpoll();\n\t\t\tpoller = setInterval(poll, CHANNEL_POLL_MS);\n\t\t\tpoller.unref?.();\n\t\t},\n\t\tdispose: () => {\n\t\t\tcancelOwnedQuestions(\"parent supervisor channel disposed\");\n\t\t\tif (poller) clearInterval(poller);\n\t\t\tpoller = undefined;\n\t\t\tpending.clear();\n\t\t\tseenFiles.clear();\n\t\t},\n\t\tpending,\n\t\tcancelOwnedQuestions,\n\t\tsettleRunQuestions,\n\t};\n}\n\nexport function isPendingQuestionForCurrentChild(questionId: string): boolean {\n\tconst metadata = readChildMetadata();\n\tconst owner = readChildQuestionOwner(metadata);\n\tif (!metadata || !owner) return false;\n\treturn pendingSupervisorQuestionsForDelivery(metadata.channelDir, owner).some((question) =>\n\t\tquestion.id === questionId && question.parentSessionId === (metadata.supervisorSessionId ?? metadata.orchestratorSessionId),\n\t);\n}\n\nexport function markDeliveredSupervisorQuestionFromChild(message: string): void {\n\tconst match = message.match(/Parent question \\(([^)\\s]+)\\)/);\n\tif (!match?.[1]) return;\n\tconst metadata = readChildMetadata();\n\tconst owner = readChildQuestionOwner(metadata);\n\tif (!metadata || !owner) return;\n\tif (!isPendingQuestionForCurrentChild(match[1])) return;\n\ttry {\n\t\tmarkSupervisorQuestionDelivered(metadata.channelDir, match[1], owner);\n\t} catch {\n\t\t// Delivery markers are best-effort; answer ownership still enforces identity.\n\t}\n}\n"]}
@@ -8,6 +8,7 @@ export declare function resolveSubagentResultStatus(input: {
8
8
  }): SubagentResultStatus;
9
9
  export declare function compactNestedResultChildren(children: Array<NestedRunSummary | PublicNestedRunSummary> | undefined): PublicNestedRunSummary[] | undefined;
10
10
  export declare function attachNestedChildrenToResultChildren(runId: string, children: SubagentResultIntercomChild[], nestedChildren: NestedRunSummary[] | undefined): SubagentResultIntercomChild[];
11
+ export declare function formatNestedResultLines(children: PublicNestedRunSummary[] | undefined): string[];
11
12
  interface GroupedResultIntercomMessageInput {
12
13
  to: string;
13
14
  runId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"result-intercom.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/intercom/result-intercom.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,oBAAoB,CASvB;AA+FD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,SAAS,GAAG,sBAAsB,EAAE,GAAG,SAAS,CAGxJ;AAED,wBAAgB,oCAAoC,CACnD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,2BAA2B,EAAE,EACvC,cAAc,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAC5C,2BAA2B,EAAE,CAa/B;AAwBD,UAAU,iCAAiC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,QAAQ,EAAE,2BAA2B,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAmED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,iCAAiC,GAAG,6BAA6B,CA4B1H;AAED,wBAAsB,kCAAkC,CACvD,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,6BAA6B,EACtC,SAAS,SAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,mCAAmC,CACxD,MAAM,EAAE,gBAAgB,EACxB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,SAAS,SAAM,EACf,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAWD,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK/E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,6BAA6B,CAAC;CACvC,GAAG,MAAM,CAuCT","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport {\n\ttype Details,\n\ttype IntercomEventBus,\n\ttype NestedRunSummary,\n\ttype PublicNestedRunSummary,\n\ttype SingleResult,\n\ttype SubagentResultIntercomChild,\n\ttype SubagentResultIntercomPayload,\n\ttype SubagentResultStatus,\n\ttype SubagentRunMode,\n\tSUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT,\n\tSUBAGENT_RESULT_INTERCOM_EVENT,\n} from \"../shared/types.ts\";\n\nexport function resolveSubagentResultStatus(input: {\n\texitCode?: number;\n\tsuccess?: boolean;\n\tstate?: string;\n\tinterrupted?: boolean;\n\tdetached?: boolean;\n}): SubagentResultStatus {\n\tif (input.detached) return \"detached\";\n\tif (input.state === \"stopped\") return \"stopped\";\n\tif (input.interrupted || input.state === \"paused\") return \"paused\";\n\tif (typeof input.success === \"boolean\") return input.success ? \"completed\" : \"failed\";\n\tif (input.state === \"complete\") return \"completed\";\n\tif (input.state === \"failed\") return \"failed\";\n\tif (typeof input.exitCode === \"number\") return input.exitCode === 0 ? \"completed\" : \"failed\";\n\treturn \"failed\";\n}\n\nfunction countStatuses(children: SubagentResultIntercomChild[]): Record<SubagentResultStatus, number> {\n\tconst counts: Record<SubagentResultStatus, number> = {\n\t\tcompleted: 0,\n\t\tfailed: 0,\n\t\tpaused: 0,\n\t\tstopped: 0,\n\t\tdetached: 0,\n\t};\n\tfor (const child of children) {\n\t\tcounts[child.status] += 1;\n\t}\n\treturn counts;\n}\n\nfunction formatStatusCounts(counts: Record<SubagentResultStatus, number>): string {\n\tconst parts = [\n\t\tcounts.completed ? `${counts.completed} completed` : undefined,\n\t\tcounts.failed ? `${counts.failed} failed` : undefined,\n\t\tcounts.stopped ? `${counts.stopped} stopped` : undefined,\n\t\tcounts.paused ? `${counts.paused} paused` : undefined,\n\t\tcounts.detached ? `${counts.detached} detached` : undefined,\n\t].filter((part): part is string => Boolean(part));\n\treturn parts.length ? parts.join(\", \") : \"0 results\";\n}\n\nfunction resolveGroupedStatus(children: SubagentResultIntercomChild[]): SubagentResultStatus {\n\tconst counts = countStatuses(children);\n\tif (counts.failed > 0) return \"failed\";\n\tif (counts.stopped > 0) return \"stopped\";\n\tif (counts.paused > 0) return \"paused\";\n\tif (counts.completed > 0) return \"completed\";\n\tif (counts.detached > 0) return \"detached\";\n\treturn \"failed\";\n}\n\nfunction compactNestedRun(run: NestedRunSummary | PublicNestedRunSummary, depth = 0): PublicNestedRunSummary {\n\treturn {\n\t\tid: run.id,\n\t\tparentRunId: run.parentRunId,\n\t\t...(run.parentStepIndex !== undefined ? { parentStepIndex: run.parentStepIndex } : {}),\n\t\t...(run.parentAgent ? { parentAgent: run.parentAgent } : {}),\n\t\tdepth: run.depth,\n\t\tpath: run.path.slice(0, 4).map((part) => ({\n\t\t\trunId: part.runId,\n\t\t\t...(part.stepIndex !== undefined ? { stepIndex: part.stepIndex } : {}),\n\t\t\t...(part.agent ? { agent: part.agent } : {}),\n\t\t})),\n\t\t...(run.asyncDir ? { asyncDir: run.asyncDir } : {}),\n\t\t...(run.sessionId ? { sessionId: run.sessionId } : {}),\n\t\t...(run.sessionFile ? { sessionFile: run.sessionFile } : {}),\n\t\t...(run.intercomTarget ? { intercomTarget: run.intercomTarget } : {}),\n\t\t...(run.ownerIntercomTarget ? { ownerIntercomTarget: run.ownerIntercomTarget } : {}),\n\t\t...(run.leafIntercomTarget ? { leafIntercomTarget: run.leafIntercomTarget } : {}),\n\t\t...(run.ownerState ? { ownerState: run.ownerState } : {}),\n\t\t...(run.mode ? { mode: run.mode } : {}),\n\t\tstate: run.state,\n\t\t...(run.agent ? { agent: run.agent } : {}),\n\t\t...(run.agents?.length ? { agents: run.agents.slice(0, 12) } : {}),\n\t\t...(run.currentStep !== undefined ? { currentStep: run.currentStep } : {}),\n\t\t...(run.chainStepCount !== undefined ? { chainStepCount: run.chainStepCount } : {}),\n\t\t...(run.parallelGroups?.length ? { parallelGroups: run.parallelGroups.slice(0, 8) } : {}),\n\t\t...(run.activityState ? { activityState: run.activityState } : {}),\n\t\t...(run.lastActivityAt !== undefined ? { lastActivityAt: run.lastActivityAt } : {}),\n\t\t...(run.currentTool ? { currentTool: run.currentTool } : {}),\n\t\t...(run.currentToolStartedAt !== undefined ? { currentToolStartedAt: run.currentToolStartedAt } : {}),\n\t\t...(run.currentPath ? { currentPath: run.currentPath } : {}),\n\t\t...(run.turnCount !== undefined ? { turnCount: run.turnCount } : {}),\n\t\t...(run.toolCount !== undefined ? { toolCount: run.toolCount } : {}),\n\t\t...(run.totalTokens ? { totalTokens: run.totalTokens } : {}),\n\t\t...(run.startedAt !== undefined ? { startedAt: run.startedAt } : {}),\n\t\t...(run.endedAt !== undefined ? { endedAt: run.endedAt } : {}),\n\t\t...(run.lastUpdate !== undefined ? { lastUpdate: run.lastUpdate } : {}),\n\t\t...(run.error ? { error: run.error } : {}),\n\t\t...(run.steps?.length ? { steps: run.steps.slice(0, 12).map((step) => ({\n\t\t\tagent: step.agent,\n\t\t\tstatus: step.status,\n\t\t\t...(step.sessionFile ? { sessionFile: step.sessionFile } : {}),\n\t\t\t...(step.activityState ? { activityState: step.activityState } : {}),\n\t\t\t...(step.lastActivityAt !== undefined ? { lastActivityAt: step.lastActivityAt } : {}),\n\t\t\t...(step.currentTool ? { currentTool: step.currentTool } : {}),\n\t\t\t...(step.currentToolStartedAt !== undefined ? { currentToolStartedAt: step.currentToolStartedAt } : {}),\n\t\t\t...(step.currentPath ? { currentPath: step.currentPath } : {}),\n\t\t\t...(step.turnCount !== undefined ? { turnCount: step.turnCount } : {}),\n\t\t\t...(step.toolCount !== undefined ? { toolCount: step.toolCount } : {}),\n\t\t\t...(step.startedAt !== undefined ? { startedAt: step.startedAt } : {}),\n\t\t\t...(step.endedAt !== undefined ? { endedAt: step.endedAt } : {}),\n\t\t\t...(step.error ? { error: step.error } : {}),\n\t\t\t...(depth < 2 && step.children?.length ? { children: step.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t\t})) } : {}),\n\t\t...(depth < 2 && run.children?.length ? { children: run.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t};\n}\n\nexport function compactNestedResultChildren(children: Array<NestedRunSummary | PublicNestedRunSummary> | undefined): PublicNestedRunSummary[] | undefined {\n\tif (!children?.length) return undefined;\n\treturn children.slice(0, 16).map((child) => compactNestedRun(child));\n}\n\nexport function attachNestedChildrenToResultChildren(\n\trunId: string,\n\tchildren: SubagentResultIntercomChild[],\n\tnestedChildren: NestedRunSummary[] | undefined,\n): SubagentResultIntercomChild[] {\n\tconst compact = compactNestedResultChildren(nestedChildren);\n\tif (!compact?.length) return children.map((child) => ({ ...child, children: compactNestedResultChildren(child.children) }));\n\treturn children.map((child, index) => {\n\t\tconst childIndex = child.index ?? index;\n\t\tconst alreadyAttachedIds = new Set(child.children?.map((nested) => nested.id) ?? []);\n\t\tconst attached = compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === childIndex && !alreadyAttachedIds.has(nested.id));\n\t\tconst fallbackAttached = children.length === 1\n\t\t\t? compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === undefined && !alreadyAttachedIds.has(nested.id))\n\t\t\t: [];\n\t\tconst merged = compactNestedResultChildren([...(child.children ?? []), ...attached, ...fallbackAttached]);\n\t\treturn merged?.length ? { ...child, children: merged } : { ...child, children: undefined };\n\t});\n}\n\nfunction formatNestedResultLines(children: PublicNestedRunSummary[] | undefined): string[] {\n\tif (!children?.length) return [];\n\tconst lines = [\"Nested subagents:\"];\n\tlet remaining = 10;\n\tconst append = (runs: PublicNestedRunSummary[] | undefined, indent: string): void => {\n\t\tfor (const run of runs ?? []) {\n\t\t\tif (remaining <= 0) {\n\t\t\t\tlines.push(`${indent}↳ +more nested runs; inspect status for full tree`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tremaining--;\n\t\t\tconst label = run.agent ?? run.agents?.join(\"+\") ?? run.id;\n\t\t\tlines.push(`${indent}↳ ${label} — ${run.state} [${run.id}]`);\n\t\t\tif (run.sessionFile) lines.push(`${indent} Session: ${run.sessionFile}`);\n\t\t\tappend(run.children, `${indent} `);\n\t\t\tfor (const step of run.steps ?? []) append(step.children, `${indent} `);\n\t\t}\n\t};\n\tappend(children, \"\");\n\treturn lines;\n}\n\ninterface GroupedResultIntercomMessageInput {\n\tto: string;\n\trunId: string;\n\tmode: SubagentRunMode;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}\n\nfunction asyncResumeGuidance(input: {\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n}): string | undefined {\n\tif (input.source !== \"async\" || !input.asyncId) return undefined;\n\tconst resumable = input.children.filter((child) => typeof child.sessionPath === \"string\" && fs.existsSync(child.sessionPath));\n\tif (input.children.length === 1 && resumable.length === 1) {\n\t\treturn `Revive: subagent({ action: \"resume\", id: \"${input.asyncId}\", message: \"...\" })`;\n\t}\n\tif (resumable.length > 0) {\n\t\tconst firstIndex = resumable[0]?.index ?? input.children.indexOf(resumable[0]!);\n\t\treturn `Revive child: subagent({ action: \"resume\", id: \"${input.asyncId}\", index: ${firstIndex}, message: \"...\" })`;\n\t}\n\treturn \"Resume: unavailable; no child session file was persisted.\";\n}\n\nfunction formatSubagentResultIntercomMessage(input: {\n\trunId: string;\n\tmode: SubagentRunMode;\n\tstatus: SubagentResultStatus;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}): string {\n\tconst counts = countStatuses(input.children);\n\tconst lines: string[] = [\n\t\t\"subagent results\",\n\t\t\"\",\n\t\t`Run: ${input.runId}`,\n\t\t`Mode: ${input.mode}`,\n\t\t`Status: ${input.status}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\tif (input.mode === \"chain\" && typeof input.chainSteps === \"number\") {\n\t\tlines.push(`Chain steps: ${input.chainSteps}`);\n\t}\n\tif (input.asyncId) lines.push(`Async id: ${input.asyncId}`);\n\tif (input.asyncDir) lines.push(`Async dir: ${input.asyncDir}`);\n\tconst resumeGuidance = asyncResumeGuidance(input);\n\tif (resumeGuidance) lines.push(resumeGuidance);\n\tif (input.children.some((child) => child.intercomTarget)) {\n\t\tlines.push(\"\");\n\t\tlines.push(input.source === \"async\"\n\t\t\t? \"Previous intercom targets below identify child sessions used while they were running. Inspect artifacts or session logs if resume is unavailable.\"\n\t\t\t: \"Intercom targets below identify child sessions used while they were running; completed child sessions may no longer be reachable. Inspect artifacts or session logs for follow-up.\");\n\t}\n\n\tfor (let index = 0; index < input.children.length; index++) {\n\t\tconst child = input.children[index]!;\n\t\tlines.push(\"\");\n\t\tlines.push(`${index + 1}. ${child.agent} — ${child.status}`);\n\t\tif (child.intercomTarget) lines.push(`${input.source === \"async\" ? \"Previous intercom target\" : \"Run intercom target\"}: ${child.intercomTarget}`);\n\t\tif (child.artifactPath) lines.push(`Output artifact: ${child.artifactPath}`);\n\t\tif (child.sessionPath) lines.push(`Session: ${child.sessionPath}`);\n\t\tlines.push(...formatNestedResultLines(child.children));\n\t\tlines.push(\"Summary:\");\n\t\tlines.push(child.summary);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport function buildSubagentResultIntercomPayload(input: GroupedResultIntercomMessageInput): SubagentResultIntercomPayload {\n\tconst children = input.children.map((child) => ({\n\t\t...child,\n\t\tsummary: child.summary.trim() || \"(no output)\",\n\t\tchildren: compactNestedResultChildren(child.children),\n\t}));\n\tconst status = resolveGroupedStatus(children);\n\tconst summary = formatStatusCounts(countStatuses(children));\n\tconst firstChild = children[0];\n\tconst payload: SubagentResultIntercomPayload = {\n\t\tto: input.to,\n\t\trunId: input.runId,\n\t\tmode: input.mode,\n\t\tstatus,\n\t\tsummary,\n\t\tsource: input.source,\n\t\tchildren,\n\t\t...(input.asyncId ? { asyncId: input.asyncId } : {}),\n\t\t...(input.asyncDir ? { asyncDir: input.asyncDir } : {}),\n\t\t...(typeof input.chainSteps === \"number\" ? { chainSteps: input.chainSteps } : {}),\n\t\t...(firstChild?.agent ? { agent: firstChild.agent } : {}),\n\t\t...(firstChild?.index !== undefined ? { index: firstChild.index } : {}),\n\t\t...(firstChild?.artifactPath ? { artifactPath: firstChild.artifactPath } : {}),\n\t\t...(firstChild?.sessionPath ? { sessionPath: firstChild.sessionPath } : {}),\n\t\tmessage: \"\",\n\t};\n\tpayload.message = formatSubagentResultIntercomMessage(payload);\n\treturn payload;\n}\n\nexport async function deliverSubagentResultIntercomEvent(\n\tevents: IntercomEventBus,\n\tpayload: SubagentResultIntercomPayload,\n\ttimeoutMs = 500,\n): Promise<boolean> {\n\treturn deliverSubagentIntercomMessageEvent(events, payload.to, payload.message, timeoutMs, payload);\n}\n\nexport async function deliverSubagentIntercomMessageEvent(\n\tevents: IntercomEventBus,\n\tto: string,\n\tmessage: string,\n\ttimeoutMs = 500,\n\textra: Record<string, unknown> = {},\n): Promise<boolean> {\n\tif (typeof events.on !== \"function\" || typeof events.emit !== \"function\") return false;\n\tconst requestId = typeof extra.requestId === \"string\" ? extra.requestId : randomUUID();\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tlet unsubscribe: (() => void) | undefined;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst finish = (delivered: boolean) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tunsubscribe?.();\n\t\t\tresolve(delivered);\n\t\t};\n\t\tunsubscribe = events.on(SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT, (data) => {\n\t\t\tif (!data || typeof data !== \"object\") return;\n\t\t\tconst delivery = data as { requestId?: unknown; delivered?: unknown };\n\t\t\tif (delivery.requestId !== requestId) return;\n\t\t\tfinish(delivery.delivered === true);\n\t\t});\n\t\ttimer = setTimeout(() => finish(false), timeoutMs);\n\t\ttry {\n\t\t\tevents.emit(SUBAGENT_RESULT_INTERCOM_EVENT, { ...extra, to, message, requestId });\n\t\t} catch {\n\t\t\tfinish(false);\n\t\t}\n\t});\n}\n\nfunction stripSingleResultOutputs(result: SingleResult): SingleResult {\n\treturn {\n\t\t...result,\n\t\tmessages: undefined,\n\t\tfinalOutput: undefined,\n\t\ttruncation: undefined,\n\t};\n}\n\nexport function stripDetailsOutputsForIntercomReceipt(details: Details): Details {\n\treturn {\n\t\t...details,\n\t\tresults: details.results.map(stripSingleResultOutputs),\n\t};\n}\n\nexport function formatSubagentResultReceipt(input: {\n\tmode: SubagentRunMode;\n\trunId: string;\n\tpayload: SubagentResultIntercomPayload;\n}): string {\n\tconst counts = countStatuses(input.payload.children);\n\tconst modeLabel = input.mode === \"single\"\n\t\t? \"single subagent result\"\n\t\t: input.mode === \"parallel\"\n\t\t\t? \"parallel subagent results\"\n\t\t\t: \"chain subagent results\";\n\tconst lines = [\n\t\t`Delivered ${modeLabel} via intercom.`,\n\t\t`Run: ${input.runId}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\n\tconst artifacts = input.payload.children.filter((child) => typeof child.artifactPath === \"string\");\n\tif (artifacts.length > 0) {\n\t\tlines.push(\"Artifacts:\");\n\t\tfor (const child of artifacts) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.artifactPath}`);\n\t\t}\n\t}\n\n\tconst intercomTargets = input.payload.children.filter((child) => typeof child.intercomTarget === \"string\");\n\tif (intercomTargets.length > 0) {\n\t\tlines.push(\"Run intercom targets (may be inactive after completion):\");\n\t\tfor (const child of intercomTargets) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.intercomTarget}`);\n\t\t}\n\t}\n\n\tconst sessions = input.payload.children.filter((child) => typeof child.sessionPath === \"string\");\n\tif (sessions.length > 0) {\n\t\tlines.push(\"Sessions:\");\n\t\tfor (const child of sessions) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.sessionPath}`);\n\t\t}\n\t}\n\n\tlines.push(\"Full grouped output was sent over intercom.\");\n\treturn lines.join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"result-intercom.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/intercom/result-intercom.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE3B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAGpB,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,oBAAoB,CASvB;AA+FD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,SAAS,GAAG,sBAAsB,EAAE,GAAG,SAAS,CAGxJ;AAED,wBAAgB,oCAAoC,CACnD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,2BAA2B,EAAE,EACvC,cAAc,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAC5C,2BAA2B,EAAE,CAa/B;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAoBhG;AAED,UAAU,iCAAiC;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,QAAQ,EAAE,2BAA2B,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAmED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,iCAAiC,GAAG,6BAA6B,CA4B1H;AAED,wBAAsB,kCAAkC,CACvD,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,6BAA6B,EACtC,SAAS,SAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,mCAAmC,CACxD,MAAM,EAAE,gBAAgB,EACxB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,SAAS,SAAM,EACf,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAWD,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK/E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,6BAA6B,CAAC;CACvC,GAAG,MAAM,CAuCT","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport {\n\ttype Details,\n\ttype IntercomEventBus,\n\ttype NestedRunSummary,\n\ttype PublicNestedRunSummary,\n\ttype SingleResult,\n\ttype SubagentResultIntercomChild,\n\ttype SubagentResultIntercomPayload,\n\ttype SubagentResultStatus,\n\ttype SubagentRunMode,\n\tSUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT,\n\tSUBAGENT_RESULT_INTERCOM_EVENT,\n} from \"../shared/types.ts\";\n\nexport function resolveSubagentResultStatus(input: {\n\texitCode?: number;\n\tsuccess?: boolean;\n\tstate?: string;\n\tinterrupted?: boolean;\n\tdetached?: boolean;\n}): SubagentResultStatus {\n\tif (input.detached) return \"detached\";\n\tif (input.state === \"stopped\") return \"stopped\";\n\tif (input.interrupted || input.state === \"paused\") return \"paused\";\n\tif (typeof input.success === \"boolean\") return input.success ? \"completed\" : \"failed\";\n\tif (input.state === \"complete\") return \"completed\";\n\tif (input.state === \"failed\") return \"failed\";\n\tif (typeof input.exitCode === \"number\") return input.exitCode === 0 ? \"completed\" : \"failed\";\n\treturn \"failed\";\n}\n\nfunction countStatuses(children: SubagentResultIntercomChild[]): Record<SubagentResultStatus, number> {\n\tconst counts: Record<SubagentResultStatus, number> = {\n\t\tcompleted: 0,\n\t\tfailed: 0,\n\t\tpaused: 0,\n\t\tstopped: 0,\n\t\tdetached: 0,\n\t};\n\tfor (const child of children) {\n\t\tcounts[child.status] += 1;\n\t}\n\treturn counts;\n}\n\nfunction formatStatusCounts(counts: Record<SubagentResultStatus, number>): string {\n\tconst parts = [\n\t\tcounts.completed ? `${counts.completed} completed` : undefined,\n\t\tcounts.failed ? `${counts.failed} failed` : undefined,\n\t\tcounts.stopped ? `${counts.stopped} stopped` : undefined,\n\t\tcounts.paused ? `${counts.paused} paused` : undefined,\n\t\tcounts.detached ? `${counts.detached} detached` : undefined,\n\t].filter((part): part is string => Boolean(part));\n\treturn parts.length ? parts.join(\", \") : \"0 results\";\n}\n\nfunction resolveGroupedStatus(children: SubagentResultIntercomChild[]): SubagentResultStatus {\n\tconst counts = countStatuses(children);\n\tif (counts.failed > 0) return \"failed\";\n\tif (counts.stopped > 0) return \"stopped\";\n\tif (counts.paused > 0) return \"paused\";\n\tif (counts.completed > 0) return \"completed\";\n\tif (counts.detached > 0) return \"detached\";\n\treturn \"failed\";\n}\n\nfunction compactNestedRun(run: NestedRunSummary | PublicNestedRunSummary, depth = 0): PublicNestedRunSummary {\n\treturn {\n\t\tid: run.id,\n\t\tparentRunId: run.parentRunId,\n\t\t...(run.parentStepIndex !== undefined ? { parentStepIndex: run.parentStepIndex } : {}),\n\t\t...(run.parentAgent ? { parentAgent: run.parentAgent } : {}),\n\t\tdepth: run.depth,\n\t\tpath: run.path.slice(0, 4).map((part) => ({\n\t\t\trunId: part.runId,\n\t\t\t...(part.stepIndex !== undefined ? { stepIndex: part.stepIndex } : {}),\n\t\t\t...(part.agent ? { agent: part.agent } : {}),\n\t\t})),\n\t\t...(run.asyncDir ? { asyncDir: run.asyncDir } : {}),\n\t\t...(run.sessionId ? { sessionId: run.sessionId } : {}),\n\t\t...(run.sessionFile ? { sessionFile: run.sessionFile } : {}),\n\t\t...(run.intercomTarget ? { intercomTarget: run.intercomTarget } : {}),\n\t\t...(run.ownerIntercomTarget ? { ownerIntercomTarget: run.ownerIntercomTarget } : {}),\n\t\t...(run.leafIntercomTarget ? { leafIntercomTarget: run.leafIntercomTarget } : {}),\n\t\t...(run.ownerState ? { ownerState: run.ownerState } : {}),\n\t\t...(run.mode ? { mode: run.mode } : {}),\n\t\tstate: run.state,\n\t\t...(run.agent ? { agent: run.agent } : {}),\n\t\t...(run.agents?.length ? { agents: run.agents.slice(0, 12) } : {}),\n\t\t...(run.currentStep !== undefined ? { currentStep: run.currentStep } : {}),\n\t\t...(run.chainStepCount !== undefined ? { chainStepCount: run.chainStepCount } : {}),\n\t\t...(run.parallelGroups?.length ? { parallelGroups: run.parallelGroups.slice(0, 8) } : {}),\n\t\t...(run.activityState ? { activityState: run.activityState } : {}),\n\t\t...(run.lastActivityAt !== undefined ? { lastActivityAt: run.lastActivityAt } : {}),\n\t\t...(run.currentTool ? { currentTool: run.currentTool } : {}),\n\t\t...(run.currentToolStartedAt !== undefined ? { currentToolStartedAt: run.currentToolStartedAt } : {}),\n\t\t...(run.currentPath ? { currentPath: run.currentPath } : {}),\n\t\t...(run.turnCount !== undefined ? { turnCount: run.turnCount } : {}),\n\t\t...(run.toolCount !== undefined ? { toolCount: run.toolCount } : {}),\n\t\t...(run.totalTokens ? { totalTokens: run.totalTokens } : {}),\n\t\t...(run.startedAt !== undefined ? { startedAt: run.startedAt } : {}),\n\t\t...(run.endedAt !== undefined ? { endedAt: run.endedAt } : {}),\n\t\t...(run.lastUpdate !== undefined ? { lastUpdate: run.lastUpdate } : {}),\n\t\t...(run.error ? { error: run.error } : {}),\n\t\t...(run.steps?.length ? { steps: run.steps.slice(0, 12).map((step) => ({\n\t\t\tagent: step.agent,\n\t\t\tstatus: step.status,\n\t\t\t...(step.sessionFile ? { sessionFile: step.sessionFile } : {}),\n\t\t\t...(step.activityState ? { activityState: step.activityState } : {}),\n\t\t\t...(step.lastActivityAt !== undefined ? { lastActivityAt: step.lastActivityAt } : {}),\n\t\t\t...(step.currentTool ? { currentTool: step.currentTool } : {}),\n\t\t\t...(step.currentToolStartedAt !== undefined ? { currentToolStartedAt: step.currentToolStartedAt } : {}),\n\t\t\t...(step.currentPath ? { currentPath: step.currentPath } : {}),\n\t\t\t...(step.turnCount !== undefined ? { turnCount: step.turnCount } : {}),\n\t\t\t...(step.toolCount !== undefined ? { toolCount: step.toolCount } : {}),\n\t\t\t...(step.startedAt !== undefined ? { startedAt: step.startedAt } : {}),\n\t\t\t...(step.endedAt !== undefined ? { endedAt: step.endedAt } : {}),\n\t\t\t...(step.error ? { error: step.error } : {}),\n\t\t\t...(depth < 2 && step.children?.length ? { children: step.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t\t})) } : {}),\n\t\t...(depth < 2 && run.children?.length ? { children: run.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t};\n}\n\nexport function compactNestedResultChildren(children: Array<NestedRunSummary | PublicNestedRunSummary> | undefined): PublicNestedRunSummary[] | undefined {\n\tif (!children?.length) return undefined;\n\treturn children.slice(0, 16).map((child) => compactNestedRun(child));\n}\n\nexport function attachNestedChildrenToResultChildren(\n\trunId: string,\n\tchildren: SubagentResultIntercomChild[],\n\tnestedChildren: NestedRunSummary[] | undefined,\n): SubagentResultIntercomChild[] {\n\tconst compact = compactNestedResultChildren(nestedChildren);\n\tif (!compact?.length) return children.map((child) => ({ ...child, children: compactNestedResultChildren(child.children) }));\n\treturn children.map((child, index) => {\n\t\tconst childIndex = child.index ?? index;\n\t\tconst alreadyAttachedIds = new Set(child.children?.map((nested) => nested.id) ?? []);\n\t\tconst attached = compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === childIndex && !alreadyAttachedIds.has(nested.id));\n\t\tconst fallbackAttached = children.length === 1\n\t\t\t? compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === undefined && !alreadyAttachedIds.has(nested.id))\n\t\t\t: [];\n\t\tconst merged = compactNestedResultChildren([...(child.children ?? []), ...attached, ...fallbackAttached]);\n\t\treturn merged?.length ? { ...child, children: merged } : { ...child, children: undefined };\n\t});\n}\n\nexport function formatNestedResultLines(children: PublicNestedRunSummary[] | undefined): string[] {\n\tif (!children?.length) return [];\n\tconst lines = [\"Nested subagents:\"];\n\tlet remaining = 10;\n\tconst append = (runs: PublicNestedRunSummary[] | undefined, indent: string): void => {\n\t\tfor (const run of runs ?? []) {\n\t\t\tif (remaining <= 0) {\n\t\t\t\tlines.push(`${indent}↳ +more nested runs; inspect status for full tree`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tremaining--;\n\t\t\tconst label = run.agent ?? run.agents?.join(\"+\") ?? run.id;\n\t\t\tlines.push(`${indent}↳ ${label} — ${run.state} [${run.id}]`);\n\t\t\tif (run.sessionFile) lines.push(`${indent} Session: ${run.sessionFile}`);\n\t\t\tappend(run.children, `${indent} `);\n\t\t\tfor (const step of run.steps ?? []) append(step.children, `${indent} `);\n\t\t}\n\t};\n\tappend(children, \"\");\n\treturn lines;\n}\n\ninterface GroupedResultIntercomMessageInput {\n\tto: string;\n\trunId: string;\n\tmode: SubagentRunMode;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}\n\nfunction asyncResumeGuidance(input: {\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n}): string | undefined {\n\tif (input.source !== \"async\" || !input.asyncId) return undefined;\n\tconst resumable = input.children.filter((child) => typeof child.sessionPath === \"string\" && fs.existsSync(child.sessionPath));\n\tif (input.children.length === 1 && resumable.length === 1) {\n\t\treturn `Revive: subagent({ action: \"resume\", id: \"${input.asyncId}\", message: \"...\" })`;\n\t}\n\tif (resumable.length > 0) {\n\t\tconst firstIndex = resumable[0]?.index ?? input.children.indexOf(resumable[0]!);\n\t\treturn `Revive child: subagent({ action: \"resume\", id: \"${input.asyncId}\", index: ${firstIndex}, message: \"...\" })`;\n\t}\n\treturn \"Resume: unavailable; no child session file was persisted.\";\n}\n\nfunction formatSubagentResultIntercomMessage(input: {\n\trunId: string;\n\tmode: SubagentRunMode;\n\tstatus: SubagentResultStatus;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}): string {\n\tconst counts = countStatuses(input.children);\n\tconst lines: string[] = [\n\t\t\"subagent results\",\n\t\t\"\",\n\t\t`Run: ${input.runId}`,\n\t\t`Mode: ${input.mode}`,\n\t\t`Status: ${input.status}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\tif (input.mode === \"chain\" && typeof input.chainSteps === \"number\") {\n\t\tlines.push(`Chain steps: ${input.chainSteps}`);\n\t}\n\tif (input.asyncId) lines.push(`Async id: ${input.asyncId}`);\n\tif (input.asyncDir) lines.push(`Async dir: ${input.asyncDir}`);\n\tconst resumeGuidance = asyncResumeGuidance(input);\n\tif (resumeGuidance) lines.push(resumeGuidance);\n\tif (input.children.some((child) => child.intercomTarget)) {\n\t\tlines.push(\"\");\n\t\tlines.push(input.source === \"async\"\n\t\t\t? \"Previous intercom targets below identify child sessions used while they were running. Inspect artifacts or session logs if resume is unavailable.\"\n\t\t\t: \"Intercom targets below identify child sessions used while they were running; completed child sessions may no longer be reachable. Inspect artifacts or session logs for follow-up.\");\n\t}\n\n\tfor (let index = 0; index < input.children.length; index++) {\n\t\tconst child = input.children[index]!;\n\t\tlines.push(\"\");\n\t\tlines.push(`${index + 1}. ${child.agent} — ${child.status}`);\n\t\tif (child.intercomTarget) lines.push(`${input.source === \"async\" ? \"Previous intercom target\" : \"Run intercom target\"}: ${child.intercomTarget}`);\n\t\tif (child.artifactPath) lines.push(`Output artifact: ${child.artifactPath}`);\n\t\tif (child.sessionPath) lines.push(`Session: ${child.sessionPath}`);\n\t\tlines.push(...formatNestedResultLines(child.children));\n\t\tlines.push(\"Summary:\");\n\t\tlines.push(child.summary);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport function buildSubagentResultIntercomPayload(input: GroupedResultIntercomMessageInput): SubagentResultIntercomPayload {\n\tconst children = input.children.map((child) => ({\n\t\t...child,\n\t\tsummary: child.summary.trim() || \"(no output)\",\n\t\tchildren: compactNestedResultChildren(child.children),\n\t}));\n\tconst status = resolveGroupedStatus(children);\n\tconst summary = formatStatusCounts(countStatuses(children));\n\tconst firstChild = children[0];\n\tconst payload: SubagentResultIntercomPayload = {\n\t\tto: input.to,\n\t\trunId: input.runId,\n\t\tmode: input.mode,\n\t\tstatus,\n\t\tsummary,\n\t\tsource: input.source,\n\t\tchildren,\n\t\t...(input.asyncId ? { asyncId: input.asyncId } : {}),\n\t\t...(input.asyncDir ? { asyncDir: input.asyncDir } : {}),\n\t\t...(typeof input.chainSteps === \"number\" ? { chainSteps: input.chainSteps } : {}),\n\t\t...(firstChild?.agent ? { agent: firstChild.agent } : {}),\n\t\t...(firstChild?.index !== undefined ? { index: firstChild.index } : {}),\n\t\t...(firstChild?.artifactPath ? { artifactPath: firstChild.artifactPath } : {}),\n\t\t...(firstChild?.sessionPath ? { sessionPath: firstChild.sessionPath } : {}),\n\t\tmessage: \"\",\n\t};\n\tpayload.message = formatSubagentResultIntercomMessage(payload);\n\treturn payload;\n}\n\nexport async function deliverSubagentResultIntercomEvent(\n\tevents: IntercomEventBus,\n\tpayload: SubagentResultIntercomPayload,\n\ttimeoutMs = 500,\n): Promise<boolean> {\n\treturn deliverSubagentIntercomMessageEvent(events, payload.to, payload.message, timeoutMs, payload);\n}\n\nexport async function deliverSubagentIntercomMessageEvent(\n\tevents: IntercomEventBus,\n\tto: string,\n\tmessage: string,\n\ttimeoutMs = 500,\n\textra: Record<string, unknown> = {},\n): Promise<boolean> {\n\tif (typeof events.on !== \"function\" || typeof events.emit !== \"function\") return false;\n\tconst requestId = typeof extra.requestId === \"string\" ? extra.requestId : randomUUID();\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tlet unsubscribe: (() => void) | undefined;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst finish = (delivered: boolean) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tunsubscribe?.();\n\t\t\tresolve(delivered);\n\t\t};\n\t\tunsubscribe = events.on(SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT, (data) => {\n\t\t\tif (!data || typeof data !== \"object\") return;\n\t\t\tconst delivery = data as { requestId?: unknown; delivered?: unknown };\n\t\t\tif (delivery.requestId !== requestId) return;\n\t\t\tfinish(delivery.delivered === true);\n\t\t});\n\t\ttimer = setTimeout(() => finish(false), timeoutMs);\n\t\ttry {\n\t\t\tevents.emit(SUBAGENT_RESULT_INTERCOM_EVENT, { ...extra, to, message, requestId });\n\t\t} catch {\n\t\t\tfinish(false);\n\t\t}\n\t});\n}\n\nfunction stripSingleResultOutputs(result: SingleResult): SingleResult {\n\treturn {\n\t\t...result,\n\t\tmessages: undefined,\n\t\tfinalOutput: undefined,\n\t\ttruncation: undefined,\n\t};\n}\n\nexport function stripDetailsOutputsForIntercomReceipt(details: Details): Details {\n\treturn {\n\t\t...details,\n\t\tresults: details.results.map(stripSingleResultOutputs),\n\t};\n}\n\nexport function formatSubagentResultReceipt(input: {\n\tmode: SubagentRunMode;\n\trunId: string;\n\tpayload: SubagentResultIntercomPayload;\n}): string {\n\tconst counts = countStatuses(input.payload.children);\n\tconst modeLabel = input.mode === \"single\"\n\t\t? \"single subagent result\"\n\t\t: input.mode === \"parallel\"\n\t\t\t? \"parallel subagent results\"\n\t\t\t: \"chain subagent results\";\n\tconst lines = [\n\t\t`Delivered ${modeLabel} via intercom.`,\n\t\t`Run: ${input.runId}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\n\tconst artifacts = input.payload.children.filter((child) => typeof child.artifactPath === \"string\");\n\tif (artifacts.length > 0) {\n\t\tlines.push(\"Artifacts:\");\n\t\tfor (const child of artifacts) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.artifactPath}`);\n\t\t}\n\t}\n\n\tconst intercomTargets = input.payload.children.filter((child) => typeof child.intercomTarget === \"string\");\n\tif (intercomTargets.length > 0) {\n\t\tlines.push(\"Run intercom targets (may be inactive after completion):\");\n\t\tfor (const child of intercomTargets) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.intercomTarget}`);\n\t\t}\n\t}\n\n\tconst sessions = input.payload.children.filter((child) => typeof child.sessionPath === \"string\");\n\tif (sessions.length > 0) {\n\t\tlines.push(\"Sessions:\");\n\t\tfor (const child of sessions) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.sessionPath}`);\n\t\t}\n\t}\n\n\tlines.push(\"Full grouped output was sent over intercom.\");\n\treturn lines.join(\"\\n\");\n}\n"]}
@@ -133,7 +133,7 @@ export function attachNestedChildrenToResultChildren(runId, children, nestedChil
133
133
  return merged?.length ? { ...child, children: merged } : { ...child, children: undefined };
134
134
  });
135
135
  }
136
- function formatNestedResultLines(children) {
136
+ export function formatNestedResultLines(children) {
137
137
  if (!children?.length)
138
138
  return [];
139
139
  const lines = ["Nested subagents:"];
@@ -1 +1 @@
1
- {"version":3,"file":"result-intercom.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/intercom/result-intercom.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport {\n\ttype Details,\n\ttype IntercomEventBus,\n\ttype NestedRunSummary,\n\ttype PublicNestedRunSummary,\n\ttype SingleResult,\n\ttype SubagentResultIntercomChild,\n\ttype SubagentResultIntercomPayload,\n\ttype SubagentResultStatus,\n\ttype SubagentRunMode,\n\tSUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT,\n\tSUBAGENT_RESULT_INTERCOM_EVENT,\n} from \"../shared/types.ts\";\n\nexport function resolveSubagentResultStatus(input: {\n\texitCode?: number;\n\tsuccess?: boolean;\n\tstate?: string;\n\tinterrupted?: boolean;\n\tdetached?: boolean;\n}): SubagentResultStatus {\n\tif (input.detached) return \"detached\";\n\tif (input.state === \"stopped\") return \"stopped\";\n\tif (input.interrupted || input.state === \"paused\") return \"paused\";\n\tif (typeof input.success === \"boolean\") return input.success ? \"completed\" : \"failed\";\n\tif (input.state === \"complete\") return \"completed\";\n\tif (input.state === \"failed\") return \"failed\";\n\tif (typeof input.exitCode === \"number\") return input.exitCode === 0 ? \"completed\" : \"failed\";\n\treturn \"failed\";\n}\n\nfunction countStatuses(children: SubagentResultIntercomChild[]): Record<SubagentResultStatus, number> {\n\tconst counts: Record<SubagentResultStatus, number> = {\n\t\tcompleted: 0,\n\t\tfailed: 0,\n\t\tpaused: 0,\n\t\tstopped: 0,\n\t\tdetached: 0,\n\t};\n\tfor (const child of children) {\n\t\tcounts[child.status] += 1;\n\t}\n\treturn counts;\n}\n\nfunction formatStatusCounts(counts: Record<SubagentResultStatus, number>): string {\n\tconst parts = [\n\t\tcounts.completed ? `${counts.completed} completed` : undefined,\n\t\tcounts.failed ? `${counts.failed} failed` : undefined,\n\t\tcounts.stopped ? `${counts.stopped} stopped` : undefined,\n\t\tcounts.paused ? `${counts.paused} paused` : undefined,\n\t\tcounts.detached ? `${counts.detached} detached` : undefined,\n\t].filter((part): part is string => Boolean(part));\n\treturn parts.length ? parts.join(\", \") : \"0 results\";\n}\n\nfunction resolveGroupedStatus(children: SubagentResultIntercomChild[]): SubagentResultStatus {\n\tconst counts = countStatuses(children);\n\tif (counts.failed > 0) return \"failed\";\n\tif (counts.stopped > 0) return \"stopped\";\n\tif (counts.paused > 0) return \"paused\";\n\tif (counts.completed > 0) return \"completed\";\n\tif (counts.detached > 0) return \"detached\";\n\treturn \"failed\";\n}\n\nfunction compactNestedRun(run: NestedRunSummary | PublicNestedRunSummary, depth = 0): PublicNestedRunSummary {\n\treturn {\n\t\tid: run.id,\n\t\tparentRunId: run.parentRunId,\n\t\t...(run.parentStepIndex !== undefined ? { parentStepIndex: run.parentStepIndex } : {}),\n\t\t...(run.parentAgent ? { parentAgent: run.parentAgent } : {}),\n\t\tdepth: run.depth,\n\t\tpath: run.path.slice(0, 4).map((part) => ({\n\t\t\trunId: part.runId,\n\t\t\t...(part.stepIndex !== undefined ? { stepIndex: part.stepIndex } : {}),\n\t\t\t...(part.agent ? { agent: part.agent } : {}),\n\t\t})),\n\t\t...(run.asyncDir ? { asyncDir: run.asyncDir } : {}),\n\t\t...(run.sessionId ? { sessionId: run.sessionId } : {}),\n\t\t...(run.sessionFile ? { sessionFile: run.sessionFile } : {}),\n\t\t...(run.intercomTarget ? { intercomTarget: run.intercomTarget } : {}),\n\t\t...(run.ownerIntercomTarget ? { ownerIntercomTarget: run.ownerIntercomTarget } : {}),\n\t\t...(run.leafIntercomTarget ? { leafIntercomTarget: run.leafIntercomTarget } : {}),\n\t\t...(run.ownerState ? { ownerState: run.ownerState } : {}),\n\t\t...(run.mode ? { mode: run.mode } : {}),\n\t\tstate: run.state,\n\t\t...(run.agent ? { agent: run.agent } : {}),\n\t\t...(run.agents?.length ? { agents: run.agents.slice(0, 12) } : {}),\n\t\t...(run.currentStep !== undefined ? { currentStep: run.currentStep } : {}),\n\t\t...(run.chainStepCount !== undefined ? { chainStepCount: run.chainStepCount } : {}),\n\t\t...(run.parallelGroups?.length ? { parallelGroups: run.parallelGroups.slice(0, 8) } : {}),\n\t\t...(run.activityState ? { activityState: run.activityState } : {}),\n\t\t...(run.lastActivityAt !== undefined ? { lastActivityAt: run.lastActivityAt } : {}),\n\t\t...(run.currentTool ? { currentTool: run.currentTool } : {}),\n\t\t...(run.currentToolStartedAt !== undefined ? { currentToolStartedAt: run.currentToolStartedAt } : {}),\n\t\t...(run.currentPath ? { currentPath: run.currentPath } : {}),\n\t\t...(run.turnCount !== undefined ? { turnCount: run.turnCount } : {}),\n\t\t...(run.toolCount !== undefined ? { toolCount: run.toolCount } : {}),\n\t\t...(run.totalTokens ? { totalTokens: run.totalTokens } : {}),\n\t\t...(run.startedAt !== undefined ? { startedAt: run.startedAt } : {}),\n\t\t...(run.endedAt !== undefined ? { endedAt: run.endedAt } : {}),\n\t\t...(run.lastUpdate !== undefined ? { lastUpdate: run.lastUpdate } : {}),\n\t\t...(run.error ? { error: run.error } : {}),\n\t\t...(run.steps?.length ? { steps: run.steps.slice(0, 12).map((step) => ({\n\t\t\tagent: step.agent,\n\t\t\tstatus: step.status,\n\t\t\t...(step.sessionFile ? { sessionFile: step.sessionFile } : {}),\n\t\t\t...(step.activityState ? { activityState: step.activityState } : {}),\n\t\t\t...(step.lastActivityAt !== undefined ? { lastActivityAt: step.lastActivityAt } : {}),\n\t\t\t...(step.currentTool ? { currentTool: step.currentTool } : {}),\n\t\t\t...(step.currentToolStartedAt !== undefined ? { currentToolStartedAt: step.currentToolStartedAt } : {}),\n\t\t\t...(step.currentPath ? { currentPath: step.currentPath } : {}),\n\t\t\t...(step.turnCount !== undefined ? { turnCount: step.turnCount } : {}),\n\t\t\t...(step.toolCount !== undefined ? { toolCount: step.toolCount } : {}),\n\t\t\t...(step.startedAt !== undefined ? { startedAt: step.startedAt } : {}),\n\t\t\t...(step.endedAt !== undefined ? { endedAt: step.endedAt } : {}),\n\t\t\t...(step.error ? { error: step.error } : {}),\n\t\t\t...(depth < 2 && step.children?.length ? { children: step.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t\t})) } : {}),\n\t\t...(depth < 2 && run.children?.length ? { children: run.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t};\n}\n\nexport function compactNestedResultChildren(children: Array<NestedRunSummary | PublicNestedRunSummary> | undefined): PublicNestedRunSummary[] | undefined {\n\tif (!children?.length) return undefined;\n\treturn children.slice(0, 16).map((child) => compactNestedRun(child));\n}\n\nexport function attachNestedChildrenToResultChildren(\n\trunId: string,\n\tchildren: SubagentResultIntercomChild[],\n\tnestedChildren: NestedRunSummary[] | undefined,\n): SubagentResultIntercomChild[] {\n\tconst compact = compactNestedResultChildren(nestedChildren);\n\tif (!compact?.length) return children.map((child) => ({ ...child, children: compactNestedResultChildren(child.children) }));\n\treturn children.map((child, index) => {\n\t\tconst childIndex = child.index ?? index;\n\t\tconst alreadyAttachedIds = new Set(child.children?.map((nested) => nested.id) ?? []);\n\t\tconst attached = compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === childIndex && !alreadyAttachedIds.has(nested.id));\n\t\tconst fallbackAttached = children.length === 1\n\t\t\t? compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === undefined && !alreadyAttachedIds.has(nested.id))\n\t\t\t: [];\n\t\tconst merged = compactNestedResultChildren([...(child.children ?? []), ...attached, ...fallbackAttached]);\n\t\treturn merged?.length ? { ...child, children: merged } : { ...child, children: undefined };\n\t});\n}\n\nfunction formatNestedResultLines(children: PublicNestedRunSummary[] | undefined): string[] {\n\tif (!children?.length) return [];\n\tconst lines = [\"Nested subagents:\"];\n\tlet remaining = 10;\n\tconst append = (runs: PublicNestedRunSummary[] | undefined, indent: string): void => {\n\t\tfor (const run of runs ?? []) {\n\t\t\tif (remaining <= 0) {\n\t\t\t\tlines.push(`${indent}↳ +more nested runs; inspect status for full tree`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tremaining--;\n\t\t\tconst label = run.agent ?? run.agents?.join(\"+\") ?? run.id;\n\t\t\tlines.push(`${indent}↳ ${label} — ${run.state} [${run.id}]`);\n\t\t\tif (run.sessionFile) lines.push(`${indent} Session: ${run.sessionFile}`);\n\t\t\tappend(run.children, `${indent} `);\n\t\t\tfor (const step of run.steps ?? []) append(step.children, `${indent} `);\n\t\t}\n\t};\n\tappend(children, \"\");\n\treturn lines;\n}\n\ninterface GroupedResultIntercomMessageInput {\n\tto: string;\n\trunId: string;\n\tmode: SubagentRunMode;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}\n\nfunction asyncResumeGuidance(input: {\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n}): string | undefined {\n\tif (input.source !== \"async\" || !input.asyncId) return undefined;\n\tconst resumable = input.children.filter((child) => typeof child.sessionPath === \"string\" && fs.existsSync(child.sessionPath));\n\tif (input.children.length === 1 && resumable.length === 1) {\n\t\treturn `Revive: subagent({ action: \"resume\", id: \"${input.asyncId}\", message: \"...\" })`;\n\t}\n\tif (resumable.length > 0) {\n\t\tconst firstIndex = resumable[0]?.index ?? input.children.indexOf(resumable[0]!);\n\t\treturn `Revive child: subagent({ action: \"resume\", id: \"${input.asyncId}\", index: ${firstIndex}, message: \"...\" })`;\n\t}\n\treturn \"Resume: unavailable; no child session file was persisted.\";\n}\n\nfunction formatSubagentResultIntercomMessage(input: {\n\trunId: string;\n\tmode: SubagentRunMode;\n\tstatus: SubagentResultStatus;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}): string {\n\tconst counts = countStatuses(input.children);\n\tconst lines: string[] = [\n\t\t\"subagent results\",\n\t\t\"\",\n\t\t`Run: ${input.runId}`,\n\t\t`Mode: ${input.mode}`,\n\t\t`Status: ${input.status}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\tif (input.mode === \"chain\" && typeof input.chainSteps === \"number\") {\n\t\tlines.push(`Chain steps: ${input.chainSteps}`);\n\t}\n\tif (input.asyncId) lines.push(`Async id: ${input.asyncId}`);\n\tif (input.asyncDir) lines.push(`Async dir: ${input.asyncDir}`);\n\tconst resumeGuidance = asyncResumeGuidance(input);\n\tif (resumeGuidance) lines.push(resumeGuidance);\n\tif (input.children.some((child) => child.intercomTarget)) {\n\t\tlines.push(\"\");\n\t\tlines.push(input.source === \"async\"\n\t\t\t? \"Previous intercom targets below identify child sessions used while they were running. Inspect artifacts or session logs if resume is unavailable.\"\n\t\t\t: \"Intercom targets below identify child sessions used while they were running; completed child sessions may no longer be reachable. Inspect artifacts or session logs for follow-up.\");\n\t}\n\n\tfor (let index = 0; index < input.children.length; index++) {\n\t\tconst child = input.children[index]!;\n\t\tlines.push(\"\");\n\t\tlines.push(`${index + 1}. ${child.agent} — ${child.status}`);\n\t\tif (child.intercomTarget) lines.push(`${input.source === \"async\" ? \"Previous intercom target\" : \"Run intercom target\"}: ${child.intercomTarget}`);\n\t\tif (child.artifactPath) lines.push(`Output artifact: ${child.artifactPath}`);\n\t\tif (child.sessionPath) lines.push(`Session: ${child.sessionPath}`);\n\t\tlines.push(...formatNestedResultLines(child.children));\n\t\tlines.push(\"Summary:\");\n\t\tlines.push(child.summary);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport function buildSubagentResultIntercomPayload(input: GroupedResultIntercomMessageInput): SubagentResultIntercomPayload {\n\tconst children = input.children.map((child) => ({\n\t\t...child,\n\t\tsummary: child.summary.trim() || \"(no output)\",\n\t\tchildren: compactNestedResultChildren(child.children),\n\t}));\n\tconst status = resolveGroupedStatus(children);\n\tconst summary = formatStatusCounts(countStatuses(children));\n\tconst firstChild = children[0];\n\tconst payload: SubagentResultIntercomPayload = {\n\t\tto: input.to,\n\t\trunId: input.runId,\n\t\tmode: input.mode,\n\t\tstatus,\n\t\tsummary,\n\t\tsource: input.source,\n\t\tchildren,\n\t\t...(input.asyncId ? { asyncId: input.asyncId } : {}),\n\t\t...(input.asyncDir ? { asyncDir: input.asyncDir } : {}),\n\t\t...(typeof input.chainSteps === \"number\" ? { chainSteps: input.chainSteps } : {}),\n\t\t...(firstChild?.agent ? { agent: firstChild.agent } : {}),\n\t\t...(firstChild?.index !== undefined ? { index: firstChild.index } : {}),\n\t\t...(firstChild?.artifactPath ? { artifactPath: firstChild.artifactPath } : {}),\n\t\t...(firstChild?.sessionPath ? { sessionPath: firstChild.sessionPath } : {}),\n\t\tmessage: \"\",\n\t};\n\tpayload.message = formatSubagentResultIntercomMessage(payload);\n\treturn payload;\n}\n\nexport async function deliverSubagentResultIntercomEvent(\n\tevents: IntercomEventBus,\n\tpayload: SubagentResultIntercomPayload,\n\ttimeoutMs = 500,\n): Promise<boolean> {\n\treturn deliverSubagentIntercomMessageEvent(events, payload.to, payload.message, timeoutMs, payload);\n}\n\nexport async function deliverSubagentIntercomMessageEvent(\n\tevents: IntercomEventBus,\n\tto: string,\n\tmessage: string,\n\ttimeoutMs = 500,\n\textra: Record<string, unknown> = {},\n): Promise<boolean> {\n\tif (typeof events.on !== \"function\" || typeof events.emit !== \"function\") return false;\n\tconst requestId = typeof extra.requestId === \"string\" ? extra.requestId : randomUUID();\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tlet unsubscribe: (() => void) | undefined;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst finish = (delivered: boolean) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tunsubscribe?.();\n\t\t\tresolve(delivered);\n\t\t};\n\t\tunsubscribe = events.on(SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT, (data) => {\n\t\t\tif (!data || typeof data !== \"object\") return;\n\t\t\tconst delivery = data as { requestId?: unknown; delivered?: unknown };\n\t\t\tif (delivery.requestId !== requestId) return;\n\t\t\tfinish(delivery.delivered === true);\n\t\t});\n\t\ttimer = setTimeout(() => finish(false), timeoutMs);\n\t\ttry {\n\t\t\tevents.emit(SUBAGENT_RESULT_INTERCOM_EVENT, { ...extra, to, message, requestId });\n\t\t} catch {\n\t\t\tfinish(false);\n\t\t}\n\t});\n}\n\nfunction stripSingleResultOutputs(result: SingleResult): SingleResult {\n\treturn {\n\t\t...result,\n\t\tmessages: undefined,\n\t\tfinalOutput: undefined,\n\t\ttruncation: undefined,\n\t};\n}\n\nexport function stripDetailsOutputsForIntercomReceipt(details: Details): Details {\n\treturn {\n\t\t...details,\n\t\tresults: details.results.map(stripSingleResultOutputs),\n\t};\n}\n\nexport function formatSubagentResultReceipt(input: {\n\tmode: SubagentRunMode;\n\trunId: string;\n\tpayload: SubagentResultIntercomPayload;\n}): string {\n\tconst counts = countStatuses(input.payload.children);\n\tconst modeLabel = input.mode === \"single\"\n\t\t? \"single subagent result\"\n\t\t: input.mode === \"parallel\"\n\t\t\t? \"parallel subagent results\"\n\t\t\t: \"chain subagent results\";\n\tconst lines = [\n\t\t`Delivered ${modeLabel} via intercom.`,\n\t\t`Run: ${input.runId}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\n\tconst artifacts = input.payload.children.filter((child) => typeof child.artifactPath === \"string\");\n\tif (artifacts.length > 0) {\n\t\tlines.push(\"Artifacts:\");\n\t\tfor (const child of artifacts) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.artifactPath}`);\n\t\t}\n\t}\n\n\tconst intercomTargets = input.payload.children.filter((child) => typeof child.intercomTarget === \"string\");\n\tif (intercomTargets.length > 0) {\n\t\tlines.push(\"Run intercom targets (may be inactive after completion):\");\n\t\tfor (const child of intercomTargets) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.intercomTarget}`);\n\t\t}\n\t}\n\n\tconst sessions = input.payload.children.filter((child) => typeof child.sessionPath === \"string\");\n\tif (sessions.length > 0) {\n\t\tlines.push(\"Sessions:\");\n\t\tfor (const child of sessions) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.sessionPath}`);\n\t\t}\n\t}\n\n\tlines.push(\"Full grouped output was sent over intercom.\");\n\treturn lines.join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"result-intercom.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/intercom/result-intercom.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport {\n\ttype Details,\n\ttype IntercomEventBus,\n\ttype NestedRunSummary,\n\ttype PublicNestedRunSummary,\n\ttype SingleResult,\n\ttype SubagentResultIntercomChild,\n\ttype SubagentResultIntercomPayload,\n\ttype SubagentResultStatus,\n\ttype SubagentRunMode,\n\tSUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT,\n\tSUBAGENT_RESULT_INTERCOM_EVENT,\n} from \"../shared/types.ts\";\n\nexport function resolveSubagentResultStatus(input: {\n\texitCode?: number;\n\tsuccess?: boolean;\n\tstate?: string;\n\tinterrupted?: boolean;\n\tdetached?: boolean;\n}): SubagentResultStatus {\n\tif (input.detached) return \"detached\";\n\tif (input.state === \"stopped\") return \"stopped\";\n\tif (input.interrupted || input.state === \"paused\") return \"paused\";\n\tif (typeof input.success === \"boolean\") return input.success ? \"completed\" : \"failed\";\n\tif (input.state === \"complete\") return \"completed\";\n\tif (input.state === \"failed\") return \"failed\";\n\tif (typeof input.exitCode === \"number\") return input.exitCode === 0 ? \"completed\" : \"failed\";\n\treturn \"failed\";\n}\n\nfunction countStatuses(children: SubagentResultIntercomChild[]): Record<SubagentResultStatus, number> {\n\tconst counts: Record<SubagentResultStatus, number> = {\n\t\tcompleted: 0,\n\t\tfailed: 0,\n\t\tpaused: 0,\n\t\tstopped: 0,\n\t\tdetached: 0,\n\t};\n\tfor (const child of children) {\n\t\tcounts[child.status] += 1;\n\t}\n\treturn counts;\n}\n\nfunction formatStatusCounts(counts: Record<SubagentResultStatus, number>): string {\n\tconst parts = [\n\t\tcounts.completed ? `${counts.completed} completed` : undefined,\n\t\tcounts.failed ? `${counts.failed} failed` : undefined,\n\t\tcounts.stopped ? `${counts.stopped} stopped` : undefined,\n\t\tcounts.paused ? `${counts.paused} paused` : undefined,\n\t\tcounts.detached ? `${counts.detached} detached` : undefined,\n\t].filter((part): part is string => Boolean(part));\n\treturn parts.length ? parts.join(\", \") : \"0 results\";\n}\n\nfunction resolveGroupedStatus(children: SubagentResultIntercomChild[]): SubagentResultStatus {\n\tconst counts = countStatuses(children);\n\tif (counts.failed > 0) return \"failed\";\n\tif (counts.stopped > 0) return \"stopped\";\n\tif (counts.paused > 0) return \"paused\";\n\tif (counts.completed > 0) return \"completed\";\n\tif (counts.detached > 0) return \"detached\";\n\treturn \"failed\";\n}\n\nfunction compactNestedRun(run: NestedRunSummary | PublicNestedRunSummary, depth = 0): PublicNestedRunSummary {\n\treturn {\n\t\tid: run.id,\n\t\tparentRunId: run.parentRunId,\n\t\t...(run.parentStepIndex !== undefined ? { parentStepIndex: run.parentStepIndex } : {}),\n\t\t...(run.parentAgent ? { parentAgent: run.parentAgent } : {}),\n\t\tdepth: run.depth,\n\t\tpath: run.path.slice(0, 4).map((part) => ({\n\t\t\trunId: part.runId,\n\t\t\t...(part.stepIndex !== undefined ? { stepIndex: part.stepIndex } : {}),\n\t\t\t...(part.agent ? { agent: part.agent } : {}),\n\t\t})),\n\t\t...(run.asyncDir ? { asyncDir: run.asyncDir } : {}),\n\t\t...(run.sessionId ? { sessionId: run.sessionId } : {}),\n\t\t...(run.sessionFile ? { sessionFile: run.sessionFile } : {}),\n\t\t...(run.intercomTarget ? { intercomTarget: run.intercomTarget } : {}),\n\t\t...(run.ownerIntercomTarget ? { ownerIntercomTarget: run.ownerIntercomTarget } : {}),\n\t\t...(run.leafIntercomTarget ? { leafIntercomTarget: run.leafIntercomTarget } : {}),\n\t\t...(run.ownerState ? { ownerState: run.ownerState } : {}),\n\t\t...(run.mode ? { mode: run.mode } : {}),\n\t\tstate: run.state,\n\t\t...(run.agent ? { agent: run.agent } : {}),\n\t\t...(run.agents?.length ? { agents: run.agents.slice(0, 12) } : {}),\n\t\t...(run.currentStep !== undefined ? { currentStep: run.currentStep } : {}),\n\t\t...(run.chainStepCount !== undefined ? { chainStepCount: run.chainStepCount } : {}),\n\t\t...(run.parallelGroups?.length ? { parallelGroups: run.parallelGroups.slice(0, 8) } : {}),\n\t\t...(run.activityState ? { activityState: run.activityState } : {}),\n\t\t...(run.lastActivityAt !== undefined ? { lastActivityAt: run.lastActivityAt } : {}),\n\t\t...(run.currentTool ? { currentTool: run.currentTool } : {}),\n\t\t...(run.currentToolStartedAt !== undefined ? { currentToolStartedAt: run.currentToolStartedAt } : {}),\n\t\t...(run.currentPath ? { currentPath: run.currentPath } : {}),\n\t\t...(run.turnCount !== undefined ? { turnCount: run.turnCount } : {}),\n\t\t...(run.toolCount !== undefined ? { toolCount: run.toolCount } : {}),\n\t\t...(run.totalTokens ? { totalTokens: run.totalTokens } : {}),\n\t\t...(run.startedAt !== undefined ? { startedAt: run.startedAt } : {}),\n\t\t...(run.endedAt !== undefined ? { endedAt: run.endedAt } : {}),\n\t\t...(run.lastUpdate !== undefined ? { lastUpdate: run.lastUpdate } : {}),\n\t\t...(run.error ? { error: run.error } : {}),\n\t\t...(run.steps?.length ? { steps: run.steps.slice(0, 12).map((step) => ({\n\t\t\tagent: step.agent,\n\t\t\tstatus: step.status,\n\t\t\t...(step.sessionFile ? { sessionFile: step.sessionFile } : {}),\n\t\t\t...(step.activityState ? { activityState: step.activityState } : {}),\n\t\t\t...(step.lastActivityAt !== undefined ? { lastActivityAt: step.lastActivityAt } : {}),\n\t\t\t...(step.currentTool ? { currentTool: step.currentTool } : {}),\n\t\t\t...(step.currentToolStartedAt !== undefined ? { currentToolStartedAt: step.currentToolStartedAt } : {}),\n\t\t\t...(step.currentPath ? { currentPath: step.currentPath } : {}),\n\t\t\t...(step.turnCount !== undefined ? { turnCount: step.turnCount } : {}),\n\t\t\t...(step.toolCount !== undefined ? { toolCount: step.toolCount } : {}),\n\t\t\t...(step.startedAt !== undefined ? { startedAt: step.startedAt } : {}),\n\t\t\t...(step.endedAt !== undefined ? { endedAt: step.endedAt } : {}),\n\t\t\t...(step.error ? { error: step.error } : {}),\n\t\t\t...(depth < 2 && step.children?.length ? { children: step.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t\t})) } : {}),\n\t\t...(depth < 2 && run.children?.length ? { children: run.children.slice(0, 8).map((child) => compactNestedRun(child, depth + 1)) } : {}),\n\t};\n}\n\nexport function compactNestedResultChildren(children: Array<NestedRunSummary | PublicNestedRunSummary> | undefined): PublicNestedRunSummary[] | undefined {\n\tif (!children?.length) return undefined;\n\treturn children.slice(0, 16).map((child) => compactNestedRun(child));\n}\n\nexport function attachNestedChildrenToResultChildren(\n\trunId: string,\n\tchildren: SubagentResultIntercomChild[],\n\tnestedChildren: NestedRunSummary[] | undefined,\n): SubagentResultIntercomChild[] {\n\tconst compact = compactNestedResultChildren(nestedChildren);\n\tif (!compact?.length) return children.map((child) => ({ ...child, children: compactNestedResultChildren(child.children) }));\n\treturn children.map((child, index) => {\n\t\tconst childIndex = child.index ?? index;\n\t\tconst alreadyAttachedIds = new Set(child.children?.map((nested) => nested.id) ?? []);\n\t\tconst attached = compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === childIndex && !alreadyAttachedIds.has(nested.id));\n\t\tconst fallbackAttached = children.length === 1\n\t\t\t? compact.filter((nested) => nested.parentRunId === runId && nested.parentStepIndex === undefined && !alreadyAttachedIds.has(nested.id))\n\t\t\t: [];\n\t\tconst merged = compactNestedResultChildren([...(child.children ?? []), ...attached, ...fallbackAttached]);\n\t\treturn merged?.length ? { ...child, children: merged } : { ...child, children: undefined };\n\t});\n}\n\nexport function formatNestedResultLines(children: PublicNestedRunSummary[] | undefined): string[] {\n\tif (!children?.length) return [];\n\tconst lines = [\"Nested subagents:\"];\n\tlet remaining = 10;\n\tconst append = (runs: PublicNestedRunSummary[] | undefined, indent: string): void => {\n\t\tfor (const run of runs ?? []) {\n\t\t\tif (remaining <= 0) {\n\t\t\t\tlines.push(`${indent}↳ +more nested runs; inspect status for full tree`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tremaining--;\n\t\t\tconst label = run.agent ?? run.agents?.join(\"+\") ?? run.id;\n\t\t\tlines.push(`${indent}↳ ${label} — ${run.state} [${run.id}]`);\n\t\t\tif (run.sessionFile) lines.push(`${indent} Session: ${run.sessionFile}`);\n\t\t\tappend(run.children, `${indent} `);\n\t\t\tfor (const step of run.steps ?? []) append(step.children, `${indent} `);\n\t\t}\n\t};\n\tappend(children, \"\");\n\treturn lines;\n}\n\ninterface GroupedResultIntercomMessageInput {\n\tto: string;\n\trunId: string;\n\tmode: SubagentRunMode;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}\n\nfunction asyncResumeGuidance(input: {\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n}): string | undefined {\n\tif (input.source !== \"async\" || !input.asyncId) return undefined;\n\tconst resumable = input.children.filter((child) => typeof child.sessionPath === \"string\" && fs.existsSync(child.sessionPath));\n\tif (input.children.length === 1 && resumable.length === 1) {\n\t\treturn `Revive: subagent({ action: \"resume\", id: \"${input.asyncId}\", message: \"...\" })`;\n\t}\n\tif (resumable.length > 0) {\n\t\tconst firstIndex = resumable[0]?.index ?? input.children.indexOf(resumable[0]!);\n\t\treturn `Revive child: subagent({ action: \"resume\", id: \"${input.asyncId}\", index: ${firstIndex}, message: \"...\" })`;\n\t}\n\treturn \"Resume: unavailable; no child session file was persisted.\";\n}\n\nfunction formatSubagentResultIntercomMessage(input: {\n\trunId: string;\n\tmode: SubagentRunMode;\n\tstatus: SubagentResultStatus;\n\tsource: \"foreground\" | \"async\";\n\tchildren: SubagentResultIntercomChild[];\n\tasyncId?: string;\n\tasyncDir?: string;\n\tchainSteps?: number;\n}): string {\n\tconst counts = countStatuses(input.children);\n\tconst lines: string[] = [\n\t\t\"subagent results\",\n\t\t\"\",\n\t\t`Run: ${input.runId}`,\n\t\t`Mode: ${input.mode}`,\n\t\t`Status: ${input.status}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\tif (input.mode === \"chain\" && typeof input.chainSteps === \"number\") {\n\t\tlines.push(`Chain steps: ${input.chainSteps}`);\n\t}\n\tif (input.asyncId) lines.push(`Async id: ${input.asyncId}`);\n\tif (input.asyncDir) lines.push(`Async dir: ${input.asyncDir}`);\n\tconst resumeGuidance = asyncResumeGuidance(input);\n\tif (resumeGuidance) lines.push(resumeGuidance);\n\tif (input.children.some((child) => child.intercomTarget)) {\n\t\tlines.push(\"\");\n\t\tlines.push(input.source === \"async\"\n\t\t\t? \"Previous intercom targets below identify child sessions used while they were running. Inspect artifacts or session logs if resume is unavailable.\"\n\t\t\t: \"Intercom targets below identify child sessions used while they were running; completed child sessions may no longer be reachable. Inspect artifacts or session logs for follow-up.\");\n\t}\n\n\tfor (let index = 0; index < input.children.length; index++) {\n\t\tconst child = input.children[index]!;\n\t\tlines.push(\"\");\n\t\tlines.push(`${index + 1}. ${child.agent} — ${child.status}`);\n\t\tif (child.intercomTarget) lines.push(`${input.source === \"async\" ? \"Previous intercom target\" : \"Run intercom target\"}: ${child.intercomTarget}`);\n\t\tif (child.artifactPath) lines.push(`Output artifact: ${child.artifactPath}`);\n\t\tif (child.sessionPath) lines.push(`Session: ${child.sessionPath}`);\n\t\tlines.push(...formatNestedResultLines(child.children));\n\t\tlines.push(\"Summary:\");\n\t\tlines.push(child.summary);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport function buildSubagentResultIntercomPayload(input: GroupedResultIntercomMessageInput): SubagentResultIntercomPayload {\n\tconst children = input.children.map((child) => ({\n\t\t...child,\n\t\tsummary: child.summary.trim() || \"(no output)\",\n\t\tchildren: compactNestedResultChildren(child.children),\n\t}));\n\tconst status = resolveGroupedStatus(children);\n\tconst summary = formatStatusCounts(countStatuses(children));\n\tconst firstChild = children[0];\n\tconst payload: SubagentResultIntercomPayload = {\n\t\tto: input.to,\n\t\trunId: input.runId,\n\t\tmode: input.mode,\n\t\tstatus,\n\t\tsummary,\n\t\tsource: input.source,\n\t\tchildren,\n\t\t...(input.asyncId ? { asyncId: input.asyncId } : {}),\n\t\t...(input.asyncDir ? { asyncDir: input.asyncDir } : {}),\n\t\t...(typeof input.chainSteps === \"number\" ? { chainSteps: input.chainSteps } : {}),\n\t\t...(firstChild?.agent ? { agent: firstChild.agent } : {}),\n\t\t...(firstChild?.index !== undefined ? { index: firstChild.index } : {}),\n\t\t...(firstChild?.artifactPath ? { artifactPath: firstChild.artifactPath } : {}),\n\t\t...(firstChild?.sessionPath ? { sessionPath: firstChild.sessionPath } : {}),\n\t\tmessage: \"\",\n\t};\n\tpayload.message = formatSubagentResultIntercomMessage(payload);\n\treturn payload;\n}\n\nexport async function deliverSubagentResultIntercomEvent(\n\tevents: IntercomEventBus,\n\tpayload: SubagentResultIntercomPayload,\n\ttimeoutMs = 500,\n): Promise<boolean> {\n\treturn deliverSubagentIntercomMessageEvent(events, payload.to, payload.message, timeoutMs, payload);\n}\n\nexport async function deliverSubagentIntercomMessageEvent(\n\tevents: IntercomEventBus,\n\tto: string,\n\tmessage: string,\n\ttimeoutMs = 500,\n\textra: Record<string, unknown> = {},\n): Promise<boolean> {\n\tif (typeof events.on !== \"function\" || typeof events.emit !== \"function\") return false;\n\tconst requestId = typeof extra.requestId === \"string\" ? extra.requestId : randomUUID();\n\treturn new Promise((resolve) => {\n\t\tlet settled = false;\n\t\tlet unsubscribe: (() => void) | undefined;\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst finish = (delivered: boolean) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tif (timer) clearTimeout(timer);\n\t\t\tunsubscribe?.();\n\t\t\tresolve(delivered);\n\t\t};\n\t\tunsubscribe = events.on(SUBAGENT_RESULT_INTERCOM_DELIVERY_EVENT, (data) => {\n\t\t\tif (!data || typeof data !== \"object\") return;\n\t\t\tconst delivery = data as { requestId?: unknown; delivered?: unknown };\n\t\t\tif (delivery.requestId !== requestId) return;\n\t\t\tfinish(delivery.delivered === true);\n\t\t});\n\t\ttimer = setTimeout(() => finish(false), timeoutMs);\n\t\ttry {\n\t\t\tevents.emit(SUBAGENT_RESULT_INTERCOM_EVENT, { ...extra, to, message, requestId });\n\t\t} catch {\n\t\t\tfinish(false);\n\t\t}\n\t});\n}\n\nfunction stripSingleResultOutputs(result: SingleResult): SingleResult {\n\treturn {\n\t\t...result,\n\t\tmessages: undefined,\n\t\tfinalOutput: undefined,\n\t\ttruncation: undefined,\n\t};\n}\n\nexport function stripDetailsOutputsForIntercomReceipt(details: Details): Details {\n\treturn {\n\t\t...details,\n\t\tresults: details.results.map(stripSingleResultOutputs),\n\t};\n}\n\nexport function formatSubagentResultReceipt(input: {\n\tmode: SubagentRunMode;\n\trunId: string;\n\tpayload: SubagentResultIntercomPayload;\n}): string {\n\tconst counts = countStatuses(input.payload.children);\n\tconst modeLabel = input.mode === \"single\"\n\t\t? \"single subagent result\"\n\t\t: input.mode === \"parallel\"\n\t\t\t? \"parallel subagent results\"\n\t\t\t: \"chain subagent results\";\n\tconst lines = [\n\t\t`Delivered ${modeLabel} via intercom.`,\n\t\t`Run: ${input.runId}`,\n\t\t`Children: ${formatStatusCounts(counts)}`,\n\t];\n\n\tconst artifacts = input.payload.children.filter((child) => typeof child.artifactPath === \"string\");\n\tif (artifacts.length > 0) {\n\t\tlines.push(\"Artifacts:\");\n\t\tfor (const child of artifacts) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.artifactPath}`);\n\t\t}\n\t}\n\n\tconst intercomTargets = input.payload.children.filter((child) => typeof child.intercomTarget === \"string\");\n\tif (intercomTargets.length > 0) {\n\t\tlines.push(\"Run intercom targets (may be inactive after completion):\");\n\t\tfor (const child of intercomTargets) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.intercomTarget}`);\n\t\t}\n\t}\n\n\tconst sessions = input.payload.children.filter((child) => typeof child.sessionPath === \"string\");\n\tif (sessions.length > 0) {\n\t\tlines.push(\"Sessions:\");\n\t\tfor (const child of sessions) {\n\t\t\tlines.push(`- ${child.agent} [${child.status}]: ${child.sessionPath}`);\n\t\t}\n\t}\n\n\tlines.push(\"Full grouped output was sent over intercom.\");\n\treturn lines.join(\"\\n\");\n}\n"]}