@greppleai/grip 0.1.4 → 0.1.6

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 (569) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +2 -2
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/embedded-assets.d.ts.map +1 -1
  6. package/dist/bun/embedded-assets.js.map +1 -1
  7. package/dist/bun/register-bedrock.d.ts.map +1 -1
  8. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  9. package/dist/bun/restore-sandbox-env.js.map +1 -1
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/config-selector.d.ts.map +1 -1
  13. package/dist/cli/config-selector.js.map +1 -1
  14. package/dist/cli/file-processor.d.ts.map +1 -1
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/initial-message.d.ts +1 -1
  17. package/dist/cli/initial-message.d.ts.map +1 -1
  18. package/dist/cli/initial-message.js.map +1 -1
  19. package/dist/cli/list-models.d.ts.map +1 -1
  20. package/dist/cli/list-models.js.map +1 -1
  21. package/dist/cli/session-picker.d.ts.map +1 -1
  22. package/dist/cli/session-picker.js.map +1 -1
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js.map +1 -1
  27. package/dist/core/agent-session.d.ts +27 -0
  28. package/dist/core/agent-session.d.ts.map +1 -1
  29. package/dist/core/agent-session.js +117 -152
  30. package/dist/core/agent-session.js.map +1 -1
  31. package/dist/core/auth-guidance.d.ts.map +1 -1
  32. package/dist/core/auth-guidance.js.map +1 -1
  33. package/dist/core/auth-storage.d.ts +4 -0
  34. package/dist/core/auth-storage.d.ts.map +1 -1
  35. package/dist/core/auth-storage.js +6 -11
  36. package/dist/core/auth-storage.js.map +1 -1
  37. package/dist/core/bash-executor.d.ts.map +1 -1
  38. package/dist/core/bash-executor.js +19 -23
  39. package/dist/core/bash-executor.js.map +1 -1
  40. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  41. package/dist/core/compaction/branch-summarization.js.map +1 -1
  42. package/dist/core/compaction/compaction.d.ts.map +1 -1
  43. package/dist/core/compaction/compaction.js.map +1 -1
  44. package/dist/core/compaction/compression-detection-ledger.d.ts.map +1 -1
  45. package/dist/core/compaction/compression-detection-ledger.js.map +1 -1
  46. package/dist/core/compaction/compression-detector.d.ts +1 -0
  47. package/dist/core/compaction/compression-detector.d.ts.map +1 -1
  48. package/dist/core/compaction/compression-detector.js +10 -21
  49. package/dist/core/compaction/compression-detector.js.map +1 -1
  50. package/dist/core/compaction/compression-economics.d.ts.map +1 -1
  51. package/dist/core/compaction/compression-economics.js.map +1 -1
  52. package/dist/core/compaction/utils.d.ts.map +1 -1
  53. package/dist/core/compaction/utils.js.map +1 -1
  54. package/dist/core/defaults.d.ts.map +1 -1
  55. package/dist/core/diagnostics.d.ts.map +1 -1
  56. package/dist/core/event-bus.d.ts.map +1 -1
  57. package/dist/core/event-bus.js.map +1 -1
  58. package/dist/core/exec.d.ts.map +1 -1
  59. package/dist/core/exec.js.map +1 -1
  60. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  61. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  62. package/dist/core/export-html/index.d.ts.map +1 -1
  63. package/dist/core/export-html/index.js.map +1 -1
  64. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  65. package/dist/core/export-html/tool-renderer.js.map +1 -1
  66. package/dist/core/extensions/loader.d.ts.map +1 -1
  67. package/dist/core/extensions/loader.js.map +1 -1
  68. package/dist/core/extensions/runner.d.ts.map +1 -1
  69. package/dist/core/extensions/runner.js +18 -30
  70. package/dist/core/extensions/runner.js.map +1 -1
  71. package/dist/core/extensions/types.d.ts.map +1 -1
  72. package/dist/core/extensions/types.js.map +1 -1
  73. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  74. package/dist/core/extensions/wrapper.js.map +1 -1
  75. package/dist/core/footer-data-provider.d.ts.map +1 -1
  76. package/dist/core/footer-data-provider.js +15 -16
  77. package/dist/core/footer-data-provider.js.map +1 -1
  78. package/dist/core/grip-agent.d.ts.map +1 -1
  79. package/dist/core/grip-agent.js +11 -23
  80. package/dist/core/grip-agent.js.map +1 -1
  81. package/dist/core/grip-manifest.d.ts.map +1 -1
  82. package/dist/core/grip-manifest.js.map +1 -1
  83. package/dist/core/hooks/aggregate.d.ts.map +1 -1
  84. package/dist/core/hooks/aggregate.js.map +1 -1
  85. package/dist/core/hooks/config.d.ts.map +1 -1
  86. package/dist/core/hooks/config.js.map +1 -1
  87. package/dist/core/hooks/executor.d.ts.map +1 -1
  88. package/dist/core/hooks/executor.js.map +1 -1
  89. package/dist/core/hooks/index.d.ts.map +1 -1
  90. package/dist/core/hooks/index.js.map +1 -1
  91. package/dist/core/hooks/matcher.d.ts.map +1 -1
  92. package/dist/core/hooks/matcher.js.map +1 -1
  93. package/dist/core/hooks/trust-store.d.ts.map +1 -1
  94. package/dist/core/hooks/trust-store.js +0 -3
  95. package/dist/core/hooks/trust-store.js.map +1 -1
  96. package/dist/core/hooks/types.d.ts.map +1 -1
  97. package/dist/core/hooks/types.js.map +1 -1
  98. package/dist/core/http-dispatcher.d.ts.map +1 -1
  99. package/dist/core/http-dispatcher.js.map +1 -1
  100. package/dist/core/instruction-resource-loader.d.ts.map +1 -1
  101. package/dist/core/instruction-resource-loader.js +0 -3
  102. package/dist/core/instruction-resource-loader.js.map +1 -1
  103. package/dist/core/keybindings.d.ts.map +1 -1
  104. package/dist/core/keybindings.js +0 -1
  105. package/dist/core/keybindings.js.map +1 -1
  106. package/dist/core/lsp/abort.d.ts.map +1 -1
  107. package/dist/core/lsp/abort.js.map +1 -1
  108. package/dist/core/lsp/client.d.ts.map +1 -1
  109. package/dist/core/lsp/client.js +8 -22
  110. package/dist/core/lsp/client.js.map +1 -1
  111. package/dist/core/lsp/config-loader.d.ts.map +1 -1
  112. package/dist/core/lsp/config-loader.js.map +1 -1
  113. package/dist/core/lsp/config.d.ts.map +1 -1
  114. package/dist/core/lsp/config.js.map +1 -1
  115. package/dist/core/lsp/diagnostics.d.ts.map +1 -1
  116. package/dist/core/lsp/diagnostics.js.map +1 -1
  117. package/dist/core/lsp/file-sync.d.ts.map +1 -1
  118. package/dist/core/lsp/file-sync.js +7 -9
  119. package/dist/core/lsp/file-sync.js.map +1 -1
  120. package/dist/core/lsp/integration.d.ts.map +1 -1
  121. package/dist/core/lsp/integration.js.map +1 -1
  122. package/dist/core/lsp/language-map.d.ts.map +1 -1
  123. package/dist/core/lsp/language-map.js +2 -7
  124. package/dist/core/lsp/language-map.js.map +1 -1
  125. package/dist/core/lsp/manager.d.ts.map +1 -1
  126. package/dist/core/lsp/manager.js +18 -29
  127. package/dist/core/lsp/manager.js.map +1 -1
  128. package/dist/core/lsp/navigation.d.ts.map +1 -1
  129. package/dist/core/lsp/navigation.js.map +1 -1
  130. package/dist/core/lsp/portable-path.d.ts.map +1 -1
  131. package/dist/core/lsp/portable-path.js.map +1 -1
  132. package/dist/core/lsp/refactor.d.ts.map +1 -1
  133. package/dist/core/lsp/refactor.js.map +1 -1
  134. package/dist/core/lsp/transport.d.ts.map +1 -1
  135. package/dist/core/lsp/transport.js.map +1 -1
  136. package/dist/core/messages.d.ts.map +1 -1
  137. package/dist/core/messages.js.map +1 -1
  138. package/dist/core/model-registry.d.ts.map +1 -1
  139. package/dist/core/model-registry.js +5 -7
  140. package/dist/core/model-registry.js.map +1 -1
  141. package/dist/core/model-resolver.d.ts.map +1 -1
  142. package/dist/core/model-resolver.js.map +1 -1
  143. package/dist/core/output-guard.d.ts.map +1 -1
  144. package/dist/core/output-guard.js.map +1 -1
  145. package/dist/core/package-manager.d.ts.map +1 -1
  146. package/dist/core/package-manager.js +0 -6
  147. package/dist/core/package-manager.js.map +1 -1
  148. package/dist/core/prompt-templates.d.ts.map +1 -1
  149. package/dist/core/prompt-templates.js.map +1 -1
  150. package/dist/core/provider-display-names.d.ts.map +1 -1
  151. package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -1
  152. package/dist/core/remote-workspace-protocol/contract.js +4 -2
  153. package/dist/core/remote-workspace-protocol/contract.js.map +1 -1
  154. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts.map +1 -1
  155. package/dist/core/remote-workspace-protocol/guest-shared-client.js +1 -5
  156. package/dist/core/remote-workspace-protocol/guest-shared-client.js.map +1 -1
  157. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts.map +1 -1
  158. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js +5 -10
  159. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js.map +1 -1
  160. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts.map +1 -1
  161. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js +2 -9
  162. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js.map +1 -1
  163. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts.map +1 -1
  164. package/dist/core/remote-workspace-protocol/lima-owner-directory.js.map +1 -1
  165. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts.map +1 -1
  166. package/dist/core/remote-workspace-protocol/lima-owner-lock.js.map +1 -1
  167. package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -1
  168. package/dist/core/remote-workspace-protocol/session.js +27 -65
  169. package/dist/core/remote-workspace-protocol/session.js.map +1 -1
  170. package/dist/core/remote-workspace-protocol/shared-transport.d.ts.map +1 -1
  171. package/dist/core/remote-workspace-protocol/shared-transport.js.map +1 -1
  172. package/dist/core/resolve-config-value.d.ts.map +1 -1
  173. package/dist/core/resolve-config-value.js.map +1 -1
  174. package/dist/core/resource-loader.d.ts.map +1 -1
  175. package/dist/core/resource-loader.js +0 -48
  176. package/dist/core/resource-loader.js.map +1 -1
  177. package/dist/core/rules.d.ts.map +1 -1
  178. package/dist/core/rules.js.map +1 -1
  179. package/dist/core/sandbox/command.d.ts.map +1 -1
  180. package/dist/core/sandbox/command.js.map +1 -1
  181. package/dist/core/sandbox/config.d.ts.map +1 -1
  182. package/dist/core/sandbox/config.js.map +1 -1
  183. package/dist/core/sandbox/lima-guest-binary.d.ts.map +1 -1
  184. package/dist/core/sandbox/lima-guest-binary.js.map +1 -1
  185. package/dist/core/sandbox/lima.d.ts +2 -0
  186. package/dist/core/sandbox/lima.d.ts.map +1 -1
  187. package/dist/core/sandbox/lima.js +9 -15
  188. package/dist/core/sandbox/lima.js.map +1 -1
  189. package/dist/core/sandbox/shared-lima-roots.d.ts.map +1 -1
  190. package/dist/core/sandbox/shared-lima-roots.js.map +1 -1
  191. package/dist/core/sandbox/update-shared-guest-binary.d.ts.map +1 -1
  192. package/dist/core/sandbox/update-shared-guest-binary.js.map +1 -1
  193. package/dist/core/session/constants.d.ts.map +1 -1
  194. package/dist/core/session/context-metadata.d.ts.map +1 -1
  195. package/dist/core/session/context-metadata.js.map +1 -1
  196. package/dist/core/session/context.d.ts.map +1 -1
  197. package/dist/core/session/context.js.map +1 -1
  198. package/dist/core/session/ids.d.ts.map +1 -1
  199. package/dist/core/session/ids.js.map +1 -1
  200. package/dist/core/session/in-memory-session-manager.d.ts.map +1 -1
  201. package/dist/core/session/in-memory-session-manager.js +0 -1
  202. package/dist/core/session/in-memory-session-manager.js.map +1 -1
  203. package/dist/core/session/in-memory-session.d.ts.map +1 -1
  204. package/dist/core/session/in-memory-session.js.map +1 -1
  205. package/dist/core/session/jsonl-errors.d.ts.map +1 -1
  206. package/dist/core/session/jsonl-errors.js +0 -11
  207. package/dist/core/session/jsonl-errors.js.map +1 -1
  208. package/dist/core/session/jsonl-helpers.d.ts.map +1 -1
  209. package/dist/core/session/jsonl-helpers.js.map +1 -1
  210. package/dist/core/session/local-session-manager.d.ts.map +1 -1
  211. package/dist/core/session/local-session-manager.js +4 -6
  212. package/dist/core/session/local-session-manager.js.map +1 -1
  213. package/dist/core/session/local-session.d.ts.map +1 -1
  214. package/dist/core/session/local-session.js.map +1 -1
  215. package/dist/core/session/migrations.d.ts.map +1 -1
  216. package/dist/core/session/migrations.js.map +1 -1
  217. package/dist/core/session/remote-session-client.d.ts.map +1 -1
  218. package/dist/core/session/remote-session-client.js +0 -6
  219. package/dist/core/session/remote-session-client.js.map +1 -1
  220. package/dist/core/session/remote-session-manager.d.ts.map +1 -1
  221. package/dist/core/session/remote-session-manager.js +0 -3
  222. package/dist/core/session/remote-session-manager.js.map +1 -1
  223. package/dist/core/session/remote-session.d.ts.map +1 -1
  224. package/dist/core/session/remote-session.js +0 -1
  225. package/dist/core/session/remote-session.js.map +1 -1
  226. package/dist/core/session/session-manager.d.ts.map +1 -1
  227. package/dist/core/session/session.d.ts.map +1 -1
  228. package/dist/core/session/session.js +1 -5
  229. package/dist/core/session/session.js.map +1 -1
  230. package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -1
  231. package/dist/core/session/stores/in-memory-session-store.js +7 -6
  232. package/dist/core/session/stores/in-memory-session-store.js.map +1 -1
  233. package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -1
  234. package/dist/core/session/stores/jsonl-session-store.js +6 -14
  235. package/dist/core/session/stores/jsonl-session-store.js.map +1 -1
  236. package/dist/core/session/stores/remote-session-store.d.ts.map +1 -1
  237. package/dist/core/session/stores/remote-session-store.js +3 -8
  238. package/dist/core/session/stores/remote-session-store.js.map +1 -1
  239. package/dist/core/session/stores/session-store.d.ts.map +1 -1
  240. package/dist/core/session/types.d.ts.map +1 -1
  241. package/dist/core/session/usage-ledger.d.ts.map +1 -1
  242. package/dist/core/session/usage-ledger.js.map +1 -1
  243. package/dist/core/session-cwd.d.ts.map +1 -1
  244. package/dist/core/session-cwd.js +0 -1
  245. package/dist/core/session-cwd.js.map +1 -1
  246. package/dist/core/settings-manager.d.ts.map +1 -1
  247. package/dist/core/settings-manager.js +9 -17
  248. package/dist/core/settings-manager.js.map +1 -1
  249. package/dist/core/skills.d.ts.map +1 -1
  250. package/dist/core/skills.js.map +1 -1
  251. package/dist/core/slash-commands.d.ts.map +1 -1
  252. package/dist/core/source-info.d.ts.map +1 -1
  253. package/dist/core/source-info.js.map +1 -1
  254. package/dist/core/system-prompt.d.ts.map +1 -1
  255. package/dist/core/system-prompt.js.map +1 -1
  256. package/dist/core/telemetry.d.ts.map +1 -1
  257. package/dist/core/telemetry.js.map +1 -1
  258. package/dist/core/timings.d.ts.map +1 -1
  259. package/dist/core/timings.js.map +1 -1
  260. package/dist/core/tools/bash.d.ts.map +1 -1
  261. package/dist/core/tools/bash.js +8 -5
  262. package/dist/core/tools/bash.js.map +1 -1
  263. package/dist/core/tools/compress-context.d.ts.map +1 -1
  264. package/dist/core/tools/compress-context.js.map +1 -1
  265. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  266. package/dist/core/tools/edit-diff.js.map +1 -1
  267. package/dist/core/tools/edit.d.ts.map +1 -1
  268. package/dist/core/tools/edit.js.map +1 -1
  269. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  270. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  271. package/dist/core/tools/find.d.ts.map +1 -1
  272. package/dist/core/tools/find.js.map +1 -1
  273. package/dist/core/tools/grep.d.ts.map +1 -1
  274. package/dist/core/tools/grep.js.map +1 -1
  275. package/dist/core/tools/hash-store.d.ts.map +1 -1
  276. package/dist/core/tools/hash-store.js.map +1 -1
  277. package/dist/core/tools/hashline/apply.d.ts.map +1 -1
  278. package/dist/core/tools/hashline/apply.js.map +1 -1
  279. package/dist/core/tools/hashline/hash.d.ts.map +1 -1
  280. package/dist/core/tools/hashline/hash.js.map +1 -1
  281. package/dist/core/tools/hashline/parse.d.ts.map +1 -1
  282. package/dist/core/tools/hashline/parse.js.map +1 -1
  283. package/dist/core/tools/hashline/resolve.d.ts.map +1 -1
  284. package/dist/core/tools/hashline/resolve.js.map +1 -1
  285. package/dist/core/tools/hashline-utils.d.ts.map +1 -1
  286. package/dist/core/tools/hashline-utils.js.map +1 -1
  287. package/dist/core/tools/index.d.ts.map +1 -1
  288. package/dist/core/tools/index.js.map +1 -1
  289. package/dist/core/tools/ls.d.ts.map +1 -1
  290. package/dist/core/tools/ls.js.map +1 -1
  291. package/dist/core/tools/operations.d.ts +5 -0
  292. package/dist/core/tools/operations.d.ts.map +1 -1
  293. package/dist/core/tools/operations.js +26 -24
  294. package/dist/core/tools/operations.js.map +1 -1
  295. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  296. package/dist/core/tools/output-accumulator.js +12 -18
  297. package/dist/core/tools/output-accumulator.js.map +1 -1
  298. package/dist/core/tools/path-utils.d.ts.map +1 -1
  299. package/dist/core/tools/path-utils.js.map +1 -1
  300. package/dist/core/tools/read.d.ts.map +1 -1
  301. package/dist/core/tools/read.js.map +1 -1
  302. package/dist/core/tools/render-utils.d.ts.map +1 -1
  303. package/dist/core/tools/render-utils.js.map +1 -1
  304. package/dist/core/tools/replace-diff.d.ts.map +1 -1
  305. package/dist/core/tools/replace-diff.js.map +1 -1
  306. package/dist/core/tools/replace-normalize.d.ts.map +1 -1
  307. package/dist/core/tools/replace-normalize.js.map +1 -1
  308. package/dist/core/tools/replace-render.d.ts +1 -1
  309. package/dist/core/tools/replace-render.d.ts.map +1 -1
  310. package/dist/core/tools/replace-render.js.map +1 -1
  311. package/dist/core/tools/runtime.d.ts.map +1 -1
  312. package/dist/core/tools/runtime.js.map +1 -1
  313. package/dist/core/tools/session-history.d.ts.map +1 -1
  314. package/dist/core/tools/session-history.js.map +1 -1
  315. package/dist/core/tools/subagent-agents.d.ts.map +1 -1
  316. package/dist/core/tools/subagent-agents.js.map +1 -1
  317. package/dist/core/tools/subagent.d.ts.map +1 -1
  318. package/dist/core/tools/subagent.js.map +1 -1
  319. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  320. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  321. package/dist/core/tools/truncate.d.ts.map +1 -1
  322. package/dist/core/tools/truncate.js.map +1 -1
  323. package/dist/core/tools/websearch.d.ts.map +1 -1
  324. package/dist/core/tools/websearch.js.map +1 -1
  325. package/dist/core/tools/workspace-tool-host.d.ts +1 -0
  326. package/dist/core/tools/workspace-tool-host.d.ts.map +1 -1
  327. package/dist/core/tools/workspace-tool-host.js +36 -22
  328. package/dist/core/tools/workspace-tool-host.js.map +1 -1
  329. package/dist/core/tools/write.d.ts.map +1 -1
  330. package/dist/core/tools/write.js +0 -1
  331. package/dist/core/tools/write.js.map +1 -1
  332. package/dist/core/workspace-identity.d.ts.map +1 -1
  333. package/dist/daemon/activity-budget.d.ts.map +1 -1
  334. package/dist/daemon/activity-budget.js +2 -3
  335. package/dist/daemon/activity-budget.js.map +1 -1
  336. package/dist/daemon/command.d.ts.map +1 -1
  337. package/dist/daemon/command.js.map +1 -1
  338. package/dist/daemon/config.d.ts +2 -0
  339. package/dist/daemon/config.d.ts.map +1 -1
  340. package/dist/daemon/config.js +4 -0
  341. package/dist/daemon/config.js.map +1 -1
  342. package/dist/daemon/help.d.ts.map +1 -1
  343. package/dist/daemon/help.js +4 -3
  344. package/dist/daemon/help.js.map +1 -1
  345. package/dist/daemon/lsp-config.d.ts.map +1 -1
  346. package/dist/daemon/lsp-config.js.map +1 -1
  347. package/dist/daemon/outbound-budget.d.ts.map +1 -1
  348. package/dist/daemon/outbound-budget.js +2 -4
  349. package/dist/daemon/outbound-budget.js.map +1 -1
  350. package/dist/daemon/security.d.ts.map +1 -1
  351. package/dist/daemon/security.js.map +1 -1
  352. package/dist/daemon/server.d.ts.map +1 -1
  353. package/dist/daemon/server.js.map +1 -1
  354. package/dist/daemon/shared-connection.d.ts.map +1 -1
  355. package/dist/daemon/shared-connection.js +10 -15
  356. package/dist/daemon/shared-connection.js.map +1 -1
  357. package/dist/daemon/shared-revision.d.ts.map +1 -1
  358. package/dist/daemon/shared-revision.js +2 -1
  359. package/dist/daemon/shared-revision.js.map +1 -1
  360. package/dist/daemon/shared-roots.d.ts.map +1 -1
  361. package/dist/daemon/shared-roots.js +0 -1
  362. package/dist/daemon/shared-roots.js.map +1 -1
  363. package/dist/daemon/workspace-runtime.d.ts +2 -0
  364. package/dist/daemon/workspace-runtime.d.ts.map +1 -1
  365. package/dist/daemon/workspace-runtime.js +43 -15
  366. package/dist/daemon/workspace-runtime.js.map +1 -1
  367. package/dist/index.d.ts.map +1 -1
  368. package/dist/main.d.ts.map +1 -1
  369. package/dist/main.js.map +1 -1
  370. package/dist/migrations.d.ts.map +1 -1
  371. package/dist/migrations.js.map +1 -1
  372. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  373. package/dist/modes/interactive/components/assistant-message.js +21 -17
  374. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  375. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  376. package/dist/modes/interactive/components/bash-execution.js +4 -9
  377. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  378. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  379. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  380. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  381. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  382. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  383. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  384. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  385. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  386. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  387. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  388. package/dist/modes/interactive/components/config-selector.js +6 -16
  389. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  390. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  391. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  392. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  393. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  394. package/dist/modes/interactive/components/custom-editor.js +1 -8
  395. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  396. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  397. package/dist/modes/interactive/components/custom-message.js +1 -6
  398. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  399. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  400. package/dist/modes/interactive/components/diff.js.map +1 -1
  401. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  402. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  403. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  404. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  405. package/dist/modes/interactive/components/extension-editor.js +1 -7
  406. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  407. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  408. package/dist/modes/interactive/components/extension-input.js +2 -8
  409. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  410. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  411. package/dist/modes/interactive/components/extension-selector.js +1 -9
  412. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  413. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  414. package/dist/modes/interactive/components/footer.js +1 -3
  415. package/dist/modes/interactive/components/footer.js.map +1 -1
  416. package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -1
  417. package/dist/modes/interactive/components/hook-execution.js +2 -5
  418. package/dist/modes/interactive/components/hook-execution.js.map +1 -1
  419. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  420. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  421. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  422. package/dist/modes/interactive/components/login-dialog.js +3 -9
  423. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  424. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  425. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  426. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  427. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  428. package/dist/modes/interactive/components/message-card.d.ts.map +1 -1
  429. package/dist/modes/interactive/components/message-card.js +0 -1
  430. package/dist/modes/interactive/components/message-card.js.map +1 -1
  431. package/dist/modes/interactive/components/model-selector.d.ts +26 -18
  432. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  433. package/dist/modes/interactive/components/model-selector.js +223 -210
  434. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  435. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  436. package/dist/modes/interactive/components/oauth-selector.js +3 -12
  437. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  438. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  439. package/dist/modes/interactive/components/scoped-models-selector.js +9 -13
  440. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  441. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  442. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  443. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  444. package/dist/modes/interactive/components/session-selector.js +33 -58
  445. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  446. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  447. package/dist/modes/interactive/components/settings-selector.js +0 -4
  448. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  449. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  450. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  451. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  452. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  453. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  454. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  455. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  456. package/dist/modes/interactive/components/theme-selector.js +0 -2
  457. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  458. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  459. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  460. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  461. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  462. package/dist/modes/interactive/components/tool-execution.js +9 -24
  463. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  464. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  465. package/dist/modes/interactive/components/tree-selector.js +18 -34
  466. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  467. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  469. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  470. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/user-message.js +0 -4
  472. package/dist/modes/interactive/components/user-message.js.map +1 -1
  473. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  475. package/dist/modes/interactive/interactive-mode.d.ts +14 -0
  476. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  477. package/dist/modes/interactive/interactive-mode.js +223 -137
  478. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  479. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  480. package/dist/modes/interactive/theme/theme.js +0 -7
  481. package/dist/modes/interactive/theme/theme.js.map +1 -1
  482. package/dist/modes/json-event.d.ts.map +1 -1
  483. package/dist/modes/json-event.js.map +1 -1
  484. package/dist/modes/print-mode.d.ts.map +1 -1
  485. package/dist/modes/print-mode.js.map +1 -1
  486. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  487. package/dist/modes/rpc/jsonl.js.map +1 -1
  488. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  489. package/dist/modes/rpc/rpc-client.js +10 -11
  490. package/dist/modes/rpc/rpc-client.js.map +1 -1
  491. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  492. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  493. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  494. package/dist/package-manager-cli.d.ts.map +1 -1
  495. package/dist/package-manager-cli.js.map +1 -1
  496. package/dist/utils/ansi.d.ts.map +1 -1
  497. package/dist/utils/ansi.js.map +1 -1
  498. package/dist/utils/changelog.d.ts.map +1 -1
  499. package/dist/utils/changelog.js.map +1 -1
  500. package/dist/utils/child-process.d.ts.map +1 -1
  501. package/dist/utils/child-process.js.map +1 -1
  502. package/dist/utils/clipboard-image.d.ts.map +1 -1
  503. package/dist/utils/clipboard-image.js.map +1 -1
  504. package/dist/utils/clipboard-native.d.ts.map +1 -1
  505. package/dist/utils/clipboard-native.js.map +1 -1
  506. package/dist/utils/clipboard.d.ts.map +1 -1
  507. package/dist/utils/clipboard.js.map +1 -1
  508. package/dist/utils/deprecation.d.ts.map +1 -1
  509. package/dist/utils/deprecation.js.map +1 -1
  510. package/dist/utils/directory-completions.d.ts.map +1 -1
  511. package/dist/utils/directory-completions.js.map +1 -1
  512. package/dist/utils/exif-orientation.d.ts.map +1 -1
  513. package/dist/utils/exif-orientation.js.map +1 -1
  514. package/dist/utils/frontmatter.d.ts.map +1 -1
  515. package/dist/utils/frontmatter.js.map +1 -1
  516. package/dist/utils/fs-watch.d.ts.map +1 -1
  517. package/dist/utils/fs-watch.js.map +1 -1
  518. package/dist/utils/git.d.ts.map +1 -1
  519. package/dist/utils/git.js.map +1 -1
  520. package/dist/utils/grip-user-agent.d.ts.map +1 -1
  521. package/dist/utils/grip-user-agent.js +1 -1
  522. package/dist/utils/grip-user-agent.js.map +1 -1
  523. package/dist/utils/html.d.ts.map +1 -1
  524. package/dist/utils/html.js.map +1 -1
  525. package/dist/utils/image-convert.d.ts.map +1 -1
  526. package/dist/utils/image-convert.js.map +1 -1
  527. package/dist/utils/image-process.d.ts.map +1 -1
  528. package/dist/utils/image-process.js.map +1 -1
  529. package/dist/utils/image-resize-core.d.ts.map +1 -1
  530. package/dist/utils/image-resize-core.js.map +1 -1
  531. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  532. package/dist/utils/image-resize-worker.js.map +1 -1
  533. package/dist/utils/image-resize.d.ts.map +1 -1
  534. package/dist/utils/image-resize.js.map +1 -1
  535. package/dist/utils/json.d.ts.map +1 -1
  536. package/dist/utils/json.js.map +1 -1
  537. package/dist/utils/mime.d.ts.map +1 -1
  538. package/dist/utils/mime.js.map +1 -1
  539. package/dist/utils/open-browser.d.ts.map +1 -1
  540. package/dist/utils/open-browser.js.map +1 -1
  541. package/dist/utils/paths.d.ts.map +1 -1
  542. package/dist/utils/paths.js.map +1 -1
  543. package/dist/utils/photon.d.ts.map +1 -1
  544. package/dist/utils/photon.js +10 -5
  545. package/dist/utils/photon.js.map +1 -1
  546. package/dist/utils/shell.d.ts.map +1 -1
  547. package/dist/utils/shell.js.map +1 -1
  548. package/dist/utils/sleep.d.ts.map +1 -1
  549. package/dist/utils/sleep.js.map +1 -1
  550. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  551. package/dist/utils/syntax-highlight.js +1 -1
  552. package/dist/utils/syntax-highlight.js.map +1 -1
  553. package/dist/utils/tools-manager.d.ts.map +1 -1
  554. package/dist/utils/tools-manager.js.map +1 -1
  555. package/dist/utils/version-check.d.ts.map +1 -1
  556. package/dist/utils/version-check.js.map +1 -1
  557. package/dist/utils/windows-self-update.d.ts.map +1 -1
  558. package/dist/utils/windows-self-update.js.map +1 -1
  559. package/docs/keybindings.md +3 -1
  560. package/docs/providers.md +3 -1
  561. package/docs/sandbox.md +7 -1
  562. package/docs/sessions.md +1 -1
  563. package/docs/usage.md +39 -2
  564. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  565. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  566. package/examples/extensions/sandbox/package.json +2 -2
  567. package/examples/extensions/with-deps/package.json +1 -1
  568. package/npm-shrinkwrap.json +601 -833
  569. package/package.json +20 -21
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../../src/core/tools/subagent.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Subagent Tool - Delegate tasks to specialized agents\n *\n * Runs each task in a fresh embedded AgentSession using an injected runner.\n *\n * Supports three modes:\n * - Single: { task: \"...\", responseFormat: \"...\", systemPrompt: \"...\" }\n * - Parallel: { tasks: [{ task: \"...\", model: \"...\" }, ...] }\n * - Chain: { chain: [{ task: \"... {previous} ...\" }, ...] }\n */\n\nimport * as os from \"node:os\";\nimport type { AgentTool, AgentToolResult } from \"@greppleai/grip-agent-core\";\nimport type { Api, AssistantMessage, Message, Model, TextContent } from \"@greppleai/grip-ai\";\nimport { StringEnum } from \"@greppleai/grip-ai\";\nimport { Container, Markdown, Spacer, Text } from \"@greppleai/grip-tui\";\nimport { type Static, Type } from \"typebox\";\nimport { getMarkdownTheme, type Theme, type ThemeColor } from \"../../modes/interactive/theme/theme.ts\";\nimport type { ExtensionContext, ToolDefinition } from \"../extensions/types.ts\";\nimport type { ToolOperations } from \"./operations.ts\";\nimport {\n\ttype AgentConfig,\n\ttype AgentScope,\n\ttype AgentSource,\n\tdiscoverAgentsWithOperations,\n} from \"./subagent-agents.ts\";\nimport { wrapToolDefinition } from \"./tool-definition-wrapper.ts\";\n\nconst GENERIC_SYSTEM_PROMPT =\n\t\"You are an isolated subagent. Complete the delegated task autonomously and return only the information requested by the parent agent.\";\nconst MAX_PARALLEL_TASKS = 8;\nconst MAX_CHAIN_STEPS = 16;\nconst MAX_CONCURRENCY = 4;\nconst COLLAPSED_ITEM_COUNT = 10;\nconst PER_TASK_OUTPUT_CAP = 50 * 1024;\nconst MAX_RETAINED_MESSAGE_CHARS = 64 * 1024;\nconst MAX_RETAINED_TASK_CHARS = 256 * 1024;\nconst MAX_RETAINED_TASK_MESSAGES = 100;\nconst MAX_RETAINED_TASK_DESCRIPTION_CHARS = 16 * 1024;\n\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\treturn `${(count / 1000000).toFixed(1)}M`;\n}\n\ntype SubagentUsageDisplayMetrics = Omit<SubagentUsageStats, \"contextTokens\" | \"turns\"> &\n\tPartial<Pick<SubagentUsageStats, \"contextTokens\" | \"turns\">>;\n\nfunction formatUsageStats(usage: SubagentUsageDisplayMetrics, model?: string): string {\n\tconst parts: string[] = [];\n\tif (usage.turns) parts.push(`${usage.turns} turn${usage.turns > 1 ? \"s\" : \"\"}`);\n\tif (usage.input) parts.push(`in:${formatTokens(usage.input)}`);\n\tif (usage.output) parts.push(`out:${formatTokens(usage.output)}`);\n\tif (usage.cacheRead) parts.push(`R${formatTokens(usage.cacheRead)}`);\n\tif (usage.cacheWrite) parts.push(`W${formatTokens(usage.cacheWrite)}`);\n\tif (usage.cost) parts.push(`$${usage.cost.toFixed(4)}`);\n\tif (usage.contextTokens && usage.contextTokens > 0) {\n\t\tparts.push(`ctx:${formatTokens(usage.contextTokens)}`);\n\t}\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\nexport function formatSubagentModelCatalog(\n\tcurrentModel: Model<Api> | undefined,\n\tavailableModels: Model<Api>[],\n): string | undefined {\n\tif (!currentModel) return undefined;\n\tconst providerModels = availableModels.filter((model) => model.provider === currentModel.provider);\n\tif (providerModels.length === 0) return undefined;\n\n\tconst lines = [\n\t\t`Authenticated subagent models for the current ${currentModel.provider} provider:`,\n\t\t\"Omit model to inherit the current model.\",\n\t];\n\tfor (const model of providerModels) {\n\t\tconst capabilities = [\n\t\t\tmodel.reasoning ? \"reasoning\" : \"non-reasoning\",\n\t\t\t`context ${formatTokens(model.contextWindow)}`,\n\t\t\t`max output ${formatTokens(model.maxTokens)}`,\n\t\t\t`input $${model.cost.input}/M`,\n\t\t\t`output $${model.cost.output}/M`,\n\t\t];\n\t\tif (model.cost.cacheRead > 0) capabilities.push(`cache read $${model.cost.cacheRead}/M`);\n\t\tif (model.cost.cacheWrite > 0) capabilities.push(`cache write $${model.cost.cacheWrite}/M`);\n\t\tlines.push(`- ${model.provider}/${model.id}: ${capabilities.join(\", \")}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\ntype SubagentToolThemeForeground = (color: ThemeColor, text: string) => string;\n\nfunction shortenSubagentToolPath(filePath: string): string {\n\tconst home = os.homedir();\n\treturn filePath.startsWith(home) ? `~${filePath.slice(home.length)}` : filePath;\n}\n\nfunction formatBashToolCall(args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tconst command = (args.command as string) || \"...\";\n\tconst preview = command.length > 60 ? `${command.slice(0, 60)}...` : command;\n\treturn themeFg(\"muted\", \"$ \") + themeFg(\"toolOutput\", preview);\n}\n\nfunction formatReadToolCall(args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tconst rawPath = (args.file_path || args.path || \"...\") as string;\n\tconst filePath = shortenSubagentToolPath(rawPath);\n\tconst offset = args.offset as number | undefined;\n\tconst limit = args.limit as number | undefined;\n\tlet text = themeFg(\"accent\", filePath);\n\tif (offset !== undefined || limit !== undefined) {\n\t\tconst startLine = offset ?? 1;\n\t\tconst endLine = limit !== undefined ? startLine + limit - 1 : \"\";\n\t\ttext += themeFg(\"warning\", `:${startLine}${endLine ? `-${endLine}` : \"\"}`);\n\t}\n\treturn themeFg(\"muted\", \"read \") + text;\n}\n\nfunction formatWriteToolCall(args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tconst rawPath = (args.file_path || args.path || \"...\") as string;\n\tconst filePath = shortenSubagentToolPath(rawPath);\n\tconst content = (args.content || \"\") as string;\n\tconst lines = content.split(\"\\n\").length;\n\tlet text = themeFg(\"muted\", \"write \") + themeFg(\"accent\", filePath);\n\tif (lines > 1) text += themeFg(\"dim\", ` (${lines} lines)`);\n\treturn text;\n}\n\nfunction formatToolCall(toolName: string, args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tswitch (toolName) {\n\t\tcase \"bash\":\n\t\t\treturn formatBashToolCall(args, themeFg);\n\t\tcase \"read\":\n\t\t\treturn formatReadToolCall(args, themeFg);\n\t\tcase \"write\":\n\t\t\treturn formatWriteToolCall(args, themeFg);\n\t\tcase \"edit\": {\n\t\t\tconst rawPath = (args.file_path || args.path || \"...\") as string;\n\t\t\treturn themeFg(\"muted\", \"edit \") + themeFg(\"accent\", shortenSubagentToolPath(rawPath));\n\t\t}\n\t\tcase \"ls\": {\n\t\t\tconst rawPath = (args.path || \".\") as string;\n\t\t\treturn themeFg(\"muted\", \"ls \") + themeFg(\"accent\", shortenSubagentToolPath(rawPath));\n\t\t}\n\t\tcase \"find\": {\n\t\t\tconst pattern = (args.pattern || \"*\") as string;\n\t\t\tconst rawPath = (args.path || \".\") as string;\n\t\t\treturn (\n\t\t\t\tthemeFg(\"muted\", \"find \") +\n\t\t\t\tthemeFg(\"accent\", pattern) +\n\t\t\t\tthemeFg(\"dim\", ` in ${shortenSubagentToolPath(rawPath)}`)\n\t\t\t);\n\t\t}\n\t\tcase \"grep\": {\n\t\t\tconst pattern = (args.pattern || \"\") as string;\n\t\t\tconst rawPath = (args.path || \".\") as string;\n\t\t\treturn (\n\t\t\t\tthemeFg(\"muted\", \"grep \") +\n\t\t\t\tthemeFg(\"accent\", `/${pattern}/`) +\n\t\t\t\tthemeFg(\"dim\", ` in ${shortenSubagentToolPath(rawPath)}`)\n\t\t\t);\n\t\t}\n\t\tdefault: {\n\t\t\tconst argsStr = JSON.stringify(args);\n\t\t\tconst preview = argsStr.length > 50 ? `${argsStr.slice(0, 50)}...` : argsStr;\n\t\t\treturn themeFg(\"accent\", toolName) + themeFg(\"dim\", ` ${preview}`);\n\t\t}\n\t}\n}\n\nexport interface SubagentUsageStats {\n\tinput: number;\n\toutput: number;\n\tcacheRead: number;\n\tcacheWrite: number;\n\tcost: number;\n\tcontextTokens: number;\n\tturns: number;\n}\n\nexport type SubagentStatus = \"queued\" | \"running\" | \"completed\" | \"failed\";\nexport type SubagentRunStatus = Exclude<SubagentStatus, \"queued\">;\nexport type SubagentMode = \"single\" | \"parallel\" | \"chain\";\nexport type SubagentAgentSource = AgentSource | \"ad-hoc\" | \"unknown\";\n\nexport interface SubagentResult {\n\tstatus: SubagentStatus;\n\trunId?: string;\n\tsessionReference?: string;\n\tagent: string;\n\tagentSource: SubagentAgentSource;\n\ttask: string;\n\texitCode: number;\n\tmessages: Message[];\n\tstderr: string;\n\tusage: SubagentUsageStats;\n\tmodel?: string;\n\tstopReason?: string;\n\terrorMessage?: string;\n\tresponseFormat?: string;\n\tstep?: number;\n}\nexport interface SubagentDetails {\n\tmode: SubagentMode;\n\tagentScope: AgentScope;\n\tprojectAgentsDir: string | null;\n\tresults: SubagentResult[];\n}\n\nexport interface SubagentRunInfo {\n\trunId: string;\n\tsessionReference?: string;\n\tstatus: SubagentRunStatus;\n\tagent: string;\n\ttask: string;\n\tcwd: string;\n\tmodel?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tlastOutput?: string;\n}\n\nexport type SubagentModelHint =\n\t| \"cheapest\"\n\t| \"fastest\"\n\t| \"strongest\"\n\t| \"best-reasoning\"\n\t| \"large-context\"\n\t| \"same-as-parent\"\n\t| \"balanced\";\n\nexport interface SessionSubagentConfig {\n\tname: string;\n\tdescription: string;\n\tsystemPrompt: string;\n\ttools?: string[];\n\tmodel?: string;\n\tmodelHint?: SubagentModelHint;\n\tskills?: string[];\n\tcwd?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport interface SubagentRunRegistry {\n\tlist(): SubagentRunInfo[];\n}\n\nexport interface SubagentConfigRegistry {\n\tlist(): SessionSubagentConfig[];\n\tupsert(config: SessionSubagentConfig): void;\n\tget(name: string): SessionSubagentConfig | undefined;\n}\n\ninterface PresentationSegment {\n\tdisplayItemCount: number;\n\tassistantOutput?: string;\n}\n\ninterface SubagentPresentationState {\n\tdisplayItems: DisplayItem[];\n\tassistantOutputs: string[];\n\tsegments: PresentationSegment[];\n}\n\ninterface RetainedSubagentMessageState {\n\tpresentation: SubagentPresentationState;\n\tretainedChars: number;\n\tretainedSizes: number[];\n}\n\nconst presentationCache = new WeakMap<Message[], SubagentPresentationState>();\n\nfunction appendPresentationMessage(state: SubagentPresentationState, message: Message): void {\n\tconst segment: PresentationSegment = { displayItemCount: 0 };\n\tif (message.role === \"assistant\") {\n\t\tconst textParts: string[] = [];\n\t\tfor (const part of message.content) {\n\t\t\tif (part.type === \"text\") {\n\t\t\t\tstate.displayItems.push({ type: \"text\", text: part.text });\n\t\t\t\ttextParts.push(part.text);\n\t\t\t\tsegment.displayItemCount++;\n\t\t\t} else if (part.type === \"toolCall\") {\n\t\t\t\tstate.displayItems.push({ type: \"toolCall\", name: part.name, args: part.arguments });\n\t\t\t\tsegment.displayItemCount++;\n\t\t\t}\n\t\t}\n\t\tif (textParts.length > 0) {\n\t\t\tsegment.assistantOutput = textParts.join(\"\\n\");\n\t\t\tstate.assistantOutputs.push(segment.assistantOutput);\n\t\t}\n\t}\n\tstate.segments.push(segment);\n}\n\nfunction removeOldestPresentationMessage(state: SubagentPresentationState): void {\n\tconst segment = state.segments.shift();\n\tif (!segment) return;\n\tif (segment.displayItemCount > 0) state.displayItems.splice(0, segment.displayItemCount);\n\tif (segment.assistantOutput !== undefined) state.assistantOutputs.shift();\n}\n\nfunction getPresentationState(messages: Message[]): SubagentPresentationState {\n\tconst cached = presentationCache.get(messages);\n\tif (cached) return cached;\n\tconst state: SubagentPresentationState = { displayItems: [], assistantOutputs: [], segments: [] };\n\tfor (const message of messages) appendPresentationMessage(state, message);\n\tpresentationCache.set(messages, state);\n\treturn state;\n}\n\nfunction getFinalOutput(messages: Message[]): string {\n\treturn getPresentationState(messages).assistantOutputs.at(-1) ?? \"\";\n}\n\nfunction isFailedResult(result: SubagentResult): boolean {\n\treturn result.status === \"failed\";\n}\n\nfunction getResultOutput(result: SubagentResult): string {\n\tif (isFailedResult(result)) {\n\t\treturn result.errorMessage || result.stderr || getFinalOutput(result.messages) || \"(no output)\";\n\t}\n\treturn getFinalOutput(result.messages) || \"(no output)\";\n}\n\nfunction truncateParallelOutput(output: string): string {\n\tconst byteLength = Buffer.byteLength(output, \"utf8\");\n\tif (byteLength <= PER_TASK_OUTPUT_CAP) return output;\n\n\tlet truncated = output.slice(0, PER_TASK_OUTPUT_CAP);\n\twhile (Buffer.byteLength(truncated, \"utf8\") > PER_TASK_OUTPUT_CAP) {\n\t\ttruncated = truncated.slice(0, -1);\n\t}\n\treturn `${truncated}\\n\\n[Output truncated: ${byteLength - Buffer.byteLength(truncated, \"utf8\")} bytes omitted.]`;\n}\n\ntype DisplayItem = { type: \"text\"; text: string } | { type: \"toolCall\"; name: string; args: Record<string, unknown> };\n\nfunction getDisplayItems(messages: Message[]): DisplayItem[] {\n\treturn getPresentationState(messages).displayItems;\n}\n\nasync function mapWithConcurrencyLimit<TIn, TOut>(\n\titems: TIn[],\n\tconcurrency: number,\n\tfn: (item: TIn, index: number) => Promise<TOut>,\n): Promise<TOut[]> {\n\tif (items.length === 0) return [];\n\tconst limit = Math.max(1, Math.min(concurrency, items.length));\n\tconst results: TOut[] = new Array(items.length);\n\tlet nextIndex = 0;\n\tconst workers = new Array(limit).fill(null).map(async () => {\n\t\twhile (true) {\n\t\t\tconst current = nextIndex++;\n\t\t\tif (current >= items.length) return;\n\t\t\tresults[current] = await fn(items[current], current);\n\t\t}\n\t});\n\tawait Promise.all(workers);\n\treturn results;\n}\nfunction truncateRetainedTask(task: string): string {\n\tif (task.length <= MAX_RETAINED_TASK_DESCRIPTION_CHARS) return task;\n\treturn `${task.slice(0, MAX_RETAINED_TASK_DESCRIPTION_CHARS)}\\n\\n[Task truncated in retained details]`;\n}\n\nfunction truncateRetainedText(text: string): string {\n\tif (text.length <= MAX_RETAINED_MESSAGE_CHARS) return text;\n\treturn `${text.slice(0, MAX_RETAINED_MESSAGE_CHARS)}\\n\\n[Retained output truncated: ${text.length - MAX_RETAINED_MESSAGE_CHARS} characters omitted.]`;\n}\n\nfunction compactRetainedMessage(message: Message): Message | undefined {\n\tif (JSON.stringify(message).length <= MAX_RETAINED_MESSAGE_CHARS) return message;\n\tif (message.role === \"assistant\") {\n\t\tconst text = message.content\n\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t.map((part) => part.text)\n\t\t\t.join(\"\\n\");\n\t\treturn {\n\t\t\t...message,\n\t\t\terrorMessage: message.errorMessage ? truncateRetainedText(message.errorMessage) : undefined,\n\t\t\tcontent: [{ type: \"text\", text: truncateRetainedText(text || \"[Oversized assistant event omitted]\") }],\n\t\t};\n\t}\n\tif (message.role === \"toolResult\") {\n\t\tconst text = message.content\n\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t.map((part) => part.text)\n\t\t\t.join(\"\\n\");\n\t\treturn {\n\t\t\t...message,\n\t\t\ttoolCallId: message.toolCallId.slice(0, 1024),\n\t\t\ttoolName: message.toolName.slice(0, 1024),\n\t\t\tdetails: undefined,\n\t\t\tcontent: [{ type: \"text\", text: truncateRetainedText(text || \"[Oversized tool result omitted]\") }],\n\t\t};\n\t}\n\treturn undefined;\n}\nfunction retainSubagentMessage(result: SubagentResult, state: RetainedSubagentMessageState, message: Message): void {\n\tconst retainedMessage = compactRetainedMessage(message);\n\tif (!retainedMessage) return;\n\n\tconst retainedSize = JSON.stringify(retainedMessage).length;\n\tresult.messages.push(retainedMessage);\n\tappendPresentationMessage(state.presentation, retainedMessage);\n\tstate.retainedSizes.push(retainedSize);\n\tstate.retainedChars += retainedSize;\n\twhile (\n\t\tresult.messages.length > MAX_RETAINED_TASK_MESSAGES ||\n\t\t(state.retainedChars > MAX_RETAINED_TASK_CHARS && result.messages.length > 1)\n\t) {\n\t\tresult.messages.shift();\n\t\tremoveOldestPresentationMessage(state.presentation);\n\t\tstate.retainedChars -= state.retainedSizes.shift() ?? 0;\n\t}\n}\n\nfunction recordSubagentAssistantMessage(result: SubagentResult, message: AssistantMessage): void {\n\tresult.usage.turns++;\n\tconst usage = message.usage;\n\tif (usage) {\n\t\tresult.usage.input += usage.input || 0;\n\t\tresult.usage.output += usage.output || 0;\n\t\tresult.usage.cacheRead += usage.cacheRead || 0;\n\t\tresult.usage.cacheWrite += usage.cacheWrite || 0;\n\t\tresult.usage.cost += usage.cost?.total || 0;\n\t\tresult.usage.contextTokens = usage.totalTokens || 0;\n\t}\n\tif (!result.model && message.model) result.model = message.model;\n\tif (message.stopReason) result.stopReason = message.stopReason;\n\tresult.errorMessage = message.errorMessage;\n}\n\ntype OnUpdateCallback = (partial: AgentToolResult<SubagentDetails>) => void;\n\nexport interface SubagentRunRequest {\n\tcwd: string;\n\ttoolOperations?: ToolOperations;\n\tprompt: string;\n\t/** Human-readable delegated task, without wrapper markup. */\n\ttask: string;\n\tagent: string;\n\tagentSource: SubagentAgentSource;\n\tsystemPrompt: string;\n\tmodel?: string;\n\ttools?: string[];\n\tskills?: string[];\n\tcontinueSession?: string;\n\tsignal?: AbortSignal;\n\tonMessage: (message: Message) => void;\n}\n\nexport interface SubagentRunOutcome {\n\texitCode: number;\n\tstderr: string;\n\trunId?: string;\n\tsessionReference?: string;\n}\n\nexport type SubagentRunner = (request: SubagentRunRequest) => Promise<SubagentRunOutcome>;\n\ninterface SubagentTaskSpec {\n\tagent?: string;\n\ttask: string;\n\tresponseFormat?: string;\n\tsystemPrompt?: string;\n\tmodel?: string;\n\tmodelHint?: SubagentModelHint;\n\ttools?: string[];\n\tskills?: string[];\n\tcwd?: string;\n\ttoolOperations?: ToolOperations;\n\tcontinueSession?: string;\n}\ninterface SubagentModelSelection {\n\tspec: SubagentTaskSpec;\n\tpreset: AgentConfig | undefined;\n\tinheritedModel: string | undefined;\n\tagentName: string;\n\tresult: SubagentResult;\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined;\n}\n\nfunction selectSubagentModel(selection: SubagentModelSelection): string | undefined {\n\tconst { spec, preset, inheritedModel, agentName, result, resolveModelHintOption } = selection;\n\treturn (\n\t\tspec.model ??\n\t\t(spec.modelHint\n\t\t\t? resolveModelHint(spec.modelHint, resolveModelHintOption, `task \"${agentName}\"`, result)\n\t\t\t: undefined) ??\n\t\tpreset?.model ??\n\t\t(preset?.modelHint\n\t\t\t? resolveModelHint(\n\t\t\t\t\tpreset.modelHint as SubagentModelHint,\n\t\t\t\t\tresolveModelHintOption,\n\t\t\t\t\t`agent \"${agentName}\"`,\n\t\t\t\t\tresult,\n\t\t\t\t)\n\t\t\t: undefined) ??\n\t\tinheritedModel\n\t);\n}\n\nfunction finalizeSubagentRun(result: SubagentResult, outcome: SubagentRunOutcome, aborted: boolean): SubagentResult {\n\tresult.runId = outcome.runId;\n\tresult.sessionReference = outcome.sessionReference;\n\tresult.exitCode = outcome.exitCode;\n\tresult.stderr = outcome.stderr;\n\tif (aborted) {\n\t\tresult.status = \"failed\";\n\t\tresult.stopReason = \"aborted\";\n\t\tresult.errorMessage ??= outcome.stderr || \"Subagent was aborted\";\n\t\treturn result;\n\t}\n\tresult.status =\n\t\toutcome.exitCode !== 0 || result.stopReason === \"error\" || result.stopReason === \"aborted\"\n\t\t\t? \"failed\"\n\t\t\t: \"completed\";\n\treturn result;\n}\nasync function invokeSubagentRunner(runner: SubagentRunner, request: SubagentRunRequest): Promise<SubagentRunOutcome> {\n\ttry {\n\t\treturn await runner(request);\n\t} catch (error) {\n\t\tif (!request.signal?.aborted) throw error;\n\t\treturn { exitCode: 1, stderr: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function formatSubagentTaskPrompt(task: string, responseFormat?: string): string {\n\tconst sections = [`<task>\\n${task}\\n</task>`];\n\tif (responseFormat?.trim()) {\n\t\tsections.push(`<response-format>\\n${responseFormat}\\n</response-format>`);\n\t}\n\treturn sections.join(\"\\n\\n\");\n}\n\nasync function runSingleAgent(\n\tdefaultCwd: string,\n\tagents: AgentConfig[],\n\tspec: SubagentTaskSpec,\n\tinheritedModel: string | undefined,\n\trunner: SubagentRunner,\n\tstep: number | undefined,\n\tsignal: AbortSignal | undefined,\n\tonUpdate: OnUpdateCallback | undefined,\n\tmakeDetails: (results: SubagentResult[]) => SubagentDetails,\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined,\n): Promise<SubagentResult> {\n\tconst preset = spec.agent ? agents.find((agent) => agent.name === spec.agent) : undefined;\n\tconst agentName = spec.agent ?? \"ad-hoc\";\n\tif (spec.agent && !preset) {\n\t\tconst available = agents.map((agent) => `\"${agent.name}\"`).join(\", \") || \"none\";\n\t\treturn {\n\t\t\tstatus: \"failed\",\n\t\t\tagent: agentName,\n\t\t\tagentSource: \"unknown\",\n\t\t\ttask: truncateRetainedTask(spec.task),\n\t\t\tresponseFormat: spec.responseFormat,\n\t\t\texitCode: 1,\n\t\t\tmessages: [],\n\t\t\tstderr: `Unknown agent: \"${agentName}\". Available agents: ${available}.`,\n\t\t\tusage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },\n\t\t\tstep,\n\t\t};\n\t}\n\n\tconst currentResult: SubagentResult = {\n\t\tstatus: \"running\",\n\t\tagent: agentName,\n\t\tagentSource: preset?.source ?? \"ad-hoc\",\n\t\ttask: truncateRetainedTask(spec.task),\n\t\tresponseFormat: spec.responseFormat,\n\t\texitCode: -1,\n\t\tmessages: [],\n\t\tstderr: \"\",\n\t\tusage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },\n\t\tstep,\n\t};\n\tconst effectiveModel = selectSubagentModel({\n\t\tspec,\n\t\tpreset,\n\t\tinheritedModel,\n\t\tagentName,\n\t\tresult: currentResult,\n\t\tresolveModelHintOption,\n\t});\n\tconst effectiveTools = spec.tools ?? preset?.tools;\n\tconst effectiveSkills = spec.skills ?? preset?.skills;\n\tconst effectiveCwd = spec.cwd ?? preset?.cwd ?? defaultCwd;\n\tconst effectiveSystemPrompt = spec.systemPrompt ?? preset?.systemPrompt ?? GENERIC_SYSTEM_PROMPT;\n\tcurrentResult.model = effectiveModel;\n\tif (currentResult.status === \"failed\") return currentResult;\n\tif (signal?.aborted) {\n\t\tcurrentResult.status = \"failed\";\n\t\tcurrentResult.exitCode = 1;\n\t\tcurrentResult.stderr = \"Subagent was aborted\";\n\t\tcurrentResult.stopReason = \"aborted\";\n\t\tcurrentResult.errorMessage = \"Subagent was aborted\";\n\t\treturn currentResult;\n\t}\n\tconst retainedMessageState: RetainedSubagentMessageState = {\n\t\tpresentation: getPresentationState(currentResult.messages),\n\t\tretainedChars: 0,\n\t\tretainedSizes: [],\n\t};\n\tconst emitUpdate = (): void => {\n\t\tonUpdate?.({\n\t\t\tcontent: [{ type: \"text\", text: getFinalOutput(currentResult.messages) || \"(running...)\" }],\n\t\t\tdetails: makeDetails([currentResult]),\n\t\t});\n\t};\n\tconst onMessage = (message: Message): void => {\n\t\tretainSubagentMessage(currentResult, retainedMessageState, message);\n\t\tif (message.role === \"assistant\") recordSubagentAssistantMessage(currentResult, message);\n\t\temitUpdate();\n\t};\n\n\temitUpdate();\n\tconst outcome = await invokeSubagentRunner(runner, {\n\t\tcwd: effectiveCwd,\n\t\ttoolOperations: spec.toolOperations,\n\t\tprompt: formatSubagentTaskPrompt(spec.task, spec.responseFormat),\n\t\ttask: spec.task,\n\t\tagent: agentName,\n\t\tagentSource: preset?.source ?? \"ad-hoc\",\n\t\tsystemPrompt: effectiveSystemPrompt,\n\t\tmodel: effectiveModel,\n\t\ttools: effectiveTools,\n\t\tskills: effectiveSkills,\n\t\tcontinueSession: spec.continueSession,\n\t\tsignal,\n\t\tonMessage,\n\t});\n\treturn finalizeSubagentRun(currentResult, outcome, signal?.aborted === true);\n}\n\nconst MODEL_DESCRIPTION = \"Model for this task. Omit to inherit the parent model\";\nconst STEP_MODEL_DESCRIPTION = \"Model for this step. Omit to inherit the parent model\";\nconst MODEL_HINT_VALUES = [\n\t\"cheapest\",\n\t\"fastest\",\n\t\"strongest\",\n\t\"best-reasoning\",\n\t\"large-context\",\n\t\"same-as-parent\",\n\t\"balanced\",\n] as const;\nconst MODEL_HINT_DESCRIPTION =\n\t\"Advisory model selection hint. Exact model overrides this. Supported: cheapest, fastest, strongest, best-reasoning, large-context, same-as-parent, balanced.\";\n\nfunction appendModelCatalog(description: string, modelCatalog?: string): string {\n\treturn modelCatalog ? `${description}.\\n\\n${modelCatalog}` : description;\n}\n\nfunction createModelHintSchema() {\n\treturn StringEnum(MODEL_HINT_VALUES, { description: MODEL_HINT_DESCRIPTION });\n}\n\nfunction mergeSessionAgents(agents: AgentConfig[], configs: SessionSubagentConfig[]): AgentConfig[] {\n\tconst agentMap = new Map<string, AgentConfig>();\n\tfor (const agent of agents) agentMap.set(agent.name, agent);\n\tfor (const config of configs) {\n\t\tagentMap.set(config.name, {\n\t\t\tname: config.name,\n\t\t\tdescription: config.description,\n\t\t\tsystemPrompt: config.systemPrompt,\n\t\t\ttools: config.tools,\n\t\t\tmodel: config.model,\n\t\t\tmodelHint: config.modelHint,\n\t\t\tskills: config.skills,\n\t\t\tcwd: config.cwd,\n\t\t\tsource: \"session\",\n\t\t\tfilePath: `<session-subagent:${config.name}>`,\n\t\t});\n\t}\n\treturn Array.from(agentMap.values());\n}\n\nfunction resolveModelHint(\n\thint: SubagentModelHint | undefined,\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined,\n\tcontext: string,\n\tresult: SubagentResult,\n): string | undefined {\n\tif (!hint) return undefined;\n\tconst resolved = resolveModelHintOption?.(hint);\n\tif (!resolved) {\n\t\tresult.status = \"failed\";\n\t\tresult.exitCode = 1;\n\t\tresult.stderr = `Could not resolve modelHint \"${hint}\" for ${context}.`;\n\t\tresult.errorMessage = result.stderr;\n\t\tresult.stopReason = \"error\";\n\t\treturn undefined;\n\t}\n\treturn resolved;\n}\n\nfunction createSubagentParamsSchema(modelCatalog?: string) {\n\tconst TaskItem = Type.Object({\n\t\tagent: Type.Optional(Type.String({ description: \"Optional named agent preset\" })),\n\t\ttask: Type.String({ description: \"Task to delegate\" }),\n\t\tresponseFormat: Type.Optional(Type.String({ description: \"Requested response content and structure\" })),\n\t\tsystemPrompt: Type.Optional(\n\t\t\tType.String({ description: \"Persona/instructions overriding the preset system prompt\" }),\n\t\t),\n\t\tmodel: Type.Optional(Type.String({ description: appendModelCatalog(MODEL_DESCRIPTION, modelCatalog) })),\n\t\tmodelHint: Type.Optional(createModelHintSchema()),\n\t\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Tool allowlist overriding preset defaults\" })),\n\t\tskills: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Skills to preload before the first subagent turn\" }),\n\t\t),\n\t\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent session\" })),\n\t});\n\n\tconst ChainItem = Type.Object({\n\t\tagent: Type.Optional(Type.String({ description: \"Optional named agent preset\" })),\n\t\ttask: Type.String({ description: \"Task with optional {previous} placeholder for prior output\" }),\n\t\tresponseFormat: Type.Optional(Type.String({ description: \"Requested response content and structure\" })),\n\t\tsystemPrompt: Type.Optional(\n\t\t\tType.String({ description: \"Persona/instructions overriding the preset system prompt\" }),\n\t\t),\n\t\tmodel: Type.Optional(Type.String({ description: appendModelCatalog(STEP_MODEL_DESCRIPTION, modelCatalog) })),\n\t\tmodelHint: Type.Optional(createModelHintSchema()),\n\t\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Tool allowlist overriding preset defaults\" })),\n\t\tskills: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Skills to preload before the first subagent turn\" }),\n\t\t),\n\t\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent session\" })),\n\t});\n\n\tconst AgentScopeSchema = StringEnum([\"user\", \"project\", \"both\"] as const, {\n\t\tdescription: 'Which agent directories to use. Default: \"user\". Use \"both\" to include project-local agents.',\n\t\tdefault: \"user\",\n\t});\n\n\treturn Type.Object({\n\t\tagent: Type.Optional(Type.String({ description: \"Optional named agent preset (single mode)\" })),\n\t\ttask: Type.Optional(\n\t\t\tType.String({ description: \"Task to delegate (single mode) or follow-up prompt when continuing a subagent\" }),\n\t\t),\n\t\tresponseFormat: Type.Optional(Type.String({ description: \"Requested response content and structure\" })),\n\t\tsystemPrompt: Type.Optional(\n\t\t\tType.String({ description: \"Persona/instructions overriding the preset system prompt\" }),\n\t\t),\n\t\tmodel: Type.Optional(Type.String({ description: appendModelCatalog(MODEL_DESCRIPTION, modelCatalog) })),\n\t\tmodelHint: Type.Optional(createModelHintSchema()),\n\t\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Tool allowlist overriding preset defaults\" })),\n\t\tskills: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Skills to preload before the first subagent turn\" }),\n\t\t),\n\t\ttasks: Type.Optional(Type.Array(TaskItem, { description: \"Tasks for parallel execution\" })),\n\t\tchain: Type.Optional(\n\t\t\tType.Array(ChainItem, { description: \"Tasks for sequential execution\", maxItems: MAX_CHAIN_STEPS }),\n\t\t),\n\t\tagentScope: Type.Optional(AgentScopeSchema),\n\t\tcontinueSession: Type.Optional(Type.String({ description: \"Run id of a previous subagent run to continue\" })),\n\t\tcwd: Type.Optional(Type.String({ description: \"Working directory for the subagent session (single mode)\" })),\n\t});\n}\n\nexport const subagentParamsSchema = createSubagentParamsSchema();\n\nexport type SubagentToolInput = Static<typeof subagentParamsSchema>;\n\nexport interface SubagentToolOptions {\n\trunner?: SubagentRunner;\n\tmodelCatalog?: string;\n\tresolveModelHint?: (hint: SubagentModelHint) => string | undefined;\n\t/** Host-controlled trust grant for project-local agent presets. */\n\ttrustProjectAgents?: boolean;\n\trunRegistry?: SubagentRunRegistry;\n\tconfigRegistry?: SubagentConfigRegistry;\n}\nconst subagentRunsParamsSchema = Type.Object({\n\tstatus: Type.Optional(\n\t\tStringEnum([\"running\", \"completed\", \"failed\"] as const, { description: \"Filter runs by status\" }),\n\t),\n});\n\nexport type SubagentRunsToolInput = Static<typeof subagentRunsParamsSchema>;\n\nfunction truncateRunPreview(text: string | undefined): string {\n\tif (!text) return \"\";\n\tconst trimmed = text.trim();\n\treturn trimmed.length > 240 ? `${trimmed.slice(0, 240)}...` : trimmed;\n}\n\nexport interface SubagentRunsDetails {\n\truns: SubagentRunInfo[];\n}\n\nexport function createSubagentRunsToolDefinition(\n\tregistry?: SubagentRunRegistry,\n): ToolDefinition<typeof subagentRunsParamsSchema, SubagentRunsDetails> {\n\treturn {\n\t\tname: \"subagent_runs\",\n\t\tlabel: \"Subagent Runs\",\n\t\tdescription: \"List subagent runs in the current session so one can be selected and continued by run id.\",\n\t\tpromptSnippet: \"List subagent runs from the current session for continuation\",\n\t\tparameters: subagentRunsParamsSchema,\n\t\tasync execute(_toolCallId, params) {\n\t\t\tif (!registry) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagent run registry is not configured for this session.\" }],\n\t\t\t\t\tdetails: { runs: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst runs = registry.list().filter((run) => !params.status || run.status === params.status);\n\t\t\tif (runs.length === 0) {\n\t\t\t\treturn { content: [{ type: \"text\", text: \"No subagent runs found.\" }], details: { runs } };\n\t\t\t}\n\t\t\tconst text = runs\n\t\t\t\t.map((run, index) => {\n\t\t\t\t\tconst lines = [\n\t\t\t\t\t\t`${index + 1}. ${run.runId} [${run.status}] ${run.agent}${run.model ? ` (${run.model})` : \"\"}`,\n\t\t\t\t\t\t` Task: ${run.task.replace(/\\s+/g, \" \")}`,\n\t\t\t\t\t\t` CWD: ${run.cwd}`,\n\t\t\t\t\t];\n\t\t\t\t\tif (run.sessionReference) lines.push(` Session: ${run.sessionReference}`);\n\t\t\t\t\tconst preview = truncateRunPreview(run.lastOutput);\n\t\t\t\t\tif (preview) lines.push(` Output: ${preview}`);\n\t\t\t\t\treturn lines.join(\"\\n\");\n\t\t\t\t})\n\t\t\t\t.join(\"\\n\\n\");\n\t\t\treturn { content: [{ type: \"text\", text }], details: { runs } };\n\t\t},\n\t\trenderCall(_args, theme) {\n\t\t\treturn new Text(theme.fg(\"toolTitle\", theme.bold(\"subagent_runs\")), 0, 0);\n\t\t},\n\t\trenderResult(result, _options, theme) {\n\t\t\tconst text = result.content\n\t\t\t\t.filter((part): part is TextContent => part.type === \"text\")\n\t\t\t\t.map((part) => part.text)\n\t\t\t\t.join(\"\\n\")\n\t\t\t\t.trim();\n\t\t\treturn new Text(theme.fg(\"toolOutput\", text), 0, 0);\n\t\t},\n\t};\n}\nconst createSubagentConfigParamsSchema = Type.Object({\n\tname: Type.String({ description: \"Session-scoped subagent preset name\" }),\n\tdescription: Type.String({ description: \"Short description shown when this preset is available\" }),\n\tsystemPrompt: Type.String({ description: \"System prompt/persona for this subagent preset\" }),\n\tmodel: Type.Optional(Type.String({ description: \"Exact model for this preset. Overrides modelHint.\" })),\n\tmodelHint: Type.Optional(createModelHintSchema()),\n\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Default tool allowlist for this preset\" })),\n\tskills: Type.Optional(\n\t\tType.Array(Type.String(), { description: \"Skill names to preload before the first subagent turn\" }),\n\t),\n\tcwd: Type.Optional(Type.String({ description: \"Default working directory for this preset\" })),\n});\n\nexport type CreateSubagentToolInput = Static<typeof createSubagentConfigParamsSchema>;\n\nexport interface CreateSubagentDetails {\n\tconfig?: SessionSubagentConfig;\n\tconfigs: SessionSubagentConfig[];\n}\n\nexport function createCreateSubagentToolDefinition(\n\tregistry?: SubagentConfigRegistry,\n): ToolDefinition<typeof createSubagentConfigParamsSchema, CreateSubagentDetails> {\n\treturn {\n\t\tname: \"create_subagent\",\n\t\tlabel: \"Create Subagent\",\n\t\tdescription: \"Create or replace a session-scoped named subagent preset for later subagent calls.\",\n\t\tpromptSnippet: \"Create session-scoped subagent presets with tools, skills, cwd, and model hints\",\n\t\tpromptGuidelines: [\n\t\t\t\"Use create_subagent when a reusable temporary role would reduce repeated subagent configuration.\",\n\t\t\t\"Prefer modelHint for cost/performance intent unless an exact model is required.\",\n\t\t],\n\t\tparameters: createSubagentConfigParamsSchema,\n\t\tasync execute(_toolCallId, params) {\n\t\t\tif (!registry) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagent config registry is not configured for this session.\" }],\n\t\t\t\t\tdetails: { configs: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst trimmedName = params.name.trim();\n\t\t\tif (!/^[A-Za-z0-9_-]{1,64}$/.test(trimmedName)) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{ type: \"text\", text: \"Invalid subagent name. Use 1-64 letters, numbers, underscores, or hyphens.\" },\n\t\t\t\t\t],\n\t\t\t\t\tdetails: { configs: registry.list() },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst now = new Date().toISOString();\n\t\t\tconst existing = registry.get(trimmedName);\n\t\t\tconst config: SessionSubagentConfig = {\n\t\t\t\tname: trimmedName,\n\t\t\t\tdescription: params.description.trim(),\n\t\t\t\tsystemPrompt: params.systemPrompt,\n\t\t\t\tmodel: params.model?.trim() || undefined,\n\t\t\t\tmodelHint: params.modelHint,\n\t\t\t\ttools: params.tools?.map((tool) => tool.trim()).filter(Boolean),\n\t\t\t\tskills: params.skills?.map((skill) => skill.trim()).filter(Boolean),\n\t\t\t\tcwd: params.cwd?.trim() || undefined,\n\t\t\t\tcreatedAt: existing?.createdAt ?? now,\n\t\t\t\tupdatedAt: now,\n\t\t\t};\n\t\t\tregistry.upsert(config);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: `Created subagent preset \"${config.name}\".` }],\n\t\t\t\tdetails: { config, configs: registry.list() },\n\t\t\t};\n\t\t},\n\t\trenderCall(args, theme) {\n\t\t\treturn new Text(theme.fg(\"toolTitle\", theme.bold(\"create_subagent \")) + theme.fg(\"accent\", args.name), 0, 0);\n\t\t},\n\t\trenderResult(result, _options, theme) {\n\t\t\tconst text = result.content\n\t\t\t\t.filter((part): part is TextContent => part.type === \"text\")\n\t\t\t\t.map((part) => part.text)\n\t\t\t\t.join(\"\\n\");\n\t\t\treturn new Text(theme.fg(\"toolOutput\", text), 0, 0);\n\t\t},\n\t};\n}\n\ninterface SubagentModeSelection {\n\tmode: SubagentMode;\n\thasChain: boolean;\n\thasTasks: boolean;\n\thasSingle: boolean;\n\tmodeCount: number;\n}\n\ntype SubagentDetailsBuilder = (results: SubagentResult[]) => SubagentDetails;\ntype SubagentDetailsFactory = (mode: SubagentMode) => SubagentDetailsBuilder;\n\ninterface SubagentExecutionEnvironment {\n\tagents: AgentConfig[];\n\tworkspaceCwd: string;\n\tworkspaceOperations: ToolOperations;\n\tinheritedModel: string | undefined;\n\trunner: SubagentRunner;\n\tsignal: AbortSignal | undefined;\n\tonUpdate: OnUpdateCallback | undefined;\n\tmakeDetails: SubagentDetailsFactory;\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined;\n}\n\ninterface SubagentToolExecutionResult extends AgentToolResult<SubagentDetails> {\n\tisError?: boolean;\n}\n\nfunction inheritedSubagentModelName(model: Model<Api> | undefined): string | undefined {\n\treturn model ? `${model.provider}/${model.id}` : undefined;\n}\n\nfunction selectSubagentMode(params: SubagentToolInput): SubagentModeSelection {\n\tconst hasChain = (params.chain?.length ?? 0) > 0;\n\tconst hasTasks = (params.tasks?.length ?? 0) > 0;\n\tconst hasSingle = Boolean(params.task);\n\treturn {\n\t\tmode: hasChain ? \"chain\" : hasTasks ? \"parallel\" : \"single\",\n\t\thasChain,\n\t\thasTasks,\n\t\thasSingle,\n\t\tmodeCount: Number(hasChain) + Number(hasTasks) + Number(hasSingle),\n\t};\n}\n\nfunction createSubagentDetailsFactory(agentScope: AgentScope, projectAgentsDir: string | null): SubagentDetailsFactory {\n\treturn (mode) => (results) => ({ mode, agentScope, projectAgentsDir, results });\n}\n\nfunction hasContinuedSessionOverrides(params: SubagentToolInput): boolean {\n\treturn (\n\t\tparams.agent !== undefined ||\n\t\tparams.systemPrompt !== undefined ||\n\t\tparams.model !== undefined ||\n\t\tparams.modelHint !== undefined ||\n\t\tparams.tools !== undefined ||\n\t\tparams.skills !== undefined ||\n\t\tparams.cwd !== undefined ||\n\t\tparams.agentScope !== undefined\n\t);\n}\n\nfunction validateSubagentRequest(\n\tparams: SubagentToolInput,\n\tselection: SubagentModeSelection,\n\tagents: AgentConfig[],\n\tmakeDetails: SubagentDetailsFactory,\n): SubagentToolExecutionResult | undefined {\n\tif (selection.modeCount !== 1) {\n\t\tconst available = agents.map((agent) => `${agent.name} (${agent.source})`).join(\", \") || \"none\";\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{ type: \"text\", text: `Invalid parameters. Provide exactly one mode.\\nAvailable agents: ${available}` },\n\t\t\t],\n\t\t\tdetails: makeDetails(\"single\")([]),\n\t\t};\n\t}\n\tif (params.continueSession && !selection.hasSingle) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: \"Invalid parameters. continueSession requires a single follow-up task.\" }],\n\t\t\tdetails: makeDetails(selection.mode)([]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\tif (params.continueSession && hasContinuedSessionOverrides(params)) {\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"Invalid parameters. A continued subagent may only specify task and responseFormat.\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: makeDetails(\"single\")([]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction collectRequestedAgentNames(params: SubagentToolInput): Set<string> {\n\tconst names = new Set<string>();\n\tfor (const step of params.chain ?? []) if (step.agent) names.add(step.agent);\n\tfor (const task of params.tasks ?? []) if (task.agent) names.add(task.agent);\n\tif (params.agent) names.add(params.agent);\n\treturn names;\n}\n\nasync function authorizeProjectAgents(\n\tparams: SubagentToolInput,\n\tagentScope: AgentScope,\n\tagents: AgentConfig[],\n\tprojectAgentsDir: string | null,\n\ttrustProjectAgents: boolean | undefined,\n\tctx: ExtensionContext,\n\tmakeDetails: SubagentDetailsFactory,\n\tmode: SubagentMode,\n): Promise<SubagentToolExecutionResult | undefined> {\n\tif (agentScope === \"user\") return undefined;\n\tconst agentsByName = new Map<string, AgentConfig>();\n\tfor (const agent of agents) {\n\t\tif (!agentsByName.has(agent.name)) agentsByName.set(agent.name, agent);\n\t}\n\tconst projectAgents: AgentConfig[] = [];\n\tfor (const name of collectRequestedAgentNames(params)) {\n\t\tconst agent = agentsByName.get(name);\n\t\tif (agent?.source === \"project\") projectAgents.push(agent);\n\t}\n\tif (projectAgents.length === 0 || trustProjectAgents) return undefined;\n\tconst names = projectAgents.map((agent) => agent.name).join(\", \");\n\tconst dir = projectAgentsDir ?? \"(unknown)\";\n\tif (!ctx.hasUI) {\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: `Project-local agents require host approval, but no interactive UI is available. Agents: ${names}. Source: ${dir}.`,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: makeDetails(mode)([]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\tconst approved = await ctx.ui.confirm(\n\t\t\"Run project-local agents?\",\n\t\t`Agents: ${names}\\nSource: ${dir}\\n\\nProject agents are repo-controlled. Only continue for trusted repositories.`,\n\t);\n\tif (approved) return undefined;\n\treturn {\n\t\tcontent: [{ type: \"text\", text: \"Canceled: project-local agents not approved.\" }],\n\t\tdetails: makeDetails(mode)([]),\n\t\tisError: true,\n\t};\n}\n\nfunction createChainUpdate(\n\tonUpdate: OnUpdateCallback | undefined,\n\tresults: SubagentResult[],\n\tmakeDetails: SubagentDetailsFactory,\n): OnUpdateCallback | undefined {\n\tif (!onUpdate) return undefined;\n\treturn (partial) => {\n\t\tconst currentResult = partial.details?.results[0];\n\t\tif (!currentResult) return;\n\t\tonUpdate({\n\t\t\tcontent: partial.content,\n\t\t\tdetails: makeDetails(\"chain\")([...results, currentResult]),\n\t\t});\n\t};\n}\n\nasync function executeSubagentChain(\n\tparams: SubagentToolInput,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tconst chain = params.chain ?? [];\n\tif (chain.length > MAX_CHAIN_STEPS) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Too many chain steps (${chain.length}). Max is ${MAX_CHAIN_STEPS}.` }],\n\t\t\tdetails: environment.makeDetails(\"chain\")([]),\n\t\t};\n\t}\n\tconst results: SubagentResult[] = [];\n\tlet previousOutput = \"\";\n\tfor (let index = 0; index < chain.length; index++) {\n\t\tconst step = chain[index];\n\t\tconst result = await runSingleAgent(\n\t\t\tenvironment.workspaceCwd,\n\t\t\tenvironment.agents,\n\t\t\t{\n\t\t\t\t...step,\n\t\t\t\ttask: step.task.replace(/\\{previous\\}/g, previousOutput),\n\t\t\t\ttoolOperations: environment.workspaceOperations,\n\t\t\t},\n\t\t\tenvironment.inheritedModel,\n\t\t\tenvironment.runner,\n\t\t\tindex + 1,\n\t\t\tenvironment.signal,\n\t\t\tcreateChainUpdate(environment.onUpdate, results, environment.makeDetails),\n\t\t\tenvironment.makeDetails(\"chain\"),\n\t\t\tenvironment.resolveModelHintOption,\n\t\t);\n\t\tresults.push(result);\n\t\tif (isFailedResult(result)) {\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: `Chain stopped at step ${index + 1} (${result.agent}): ${getResultOutput(result)}`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: environment.makeDetails(\"chain\")(results),\n\t\t\t\tisError: true,\n\t\t\t};\n\t\t}\n\t\tpreviousOutput = getFinalOutput(result.messages);\n\t}\n\treturn {\n\t\tcontent: [{ type: \"text\", text: getFinalOutput(results[results.length - 1].messages) || \"(no output)\" }],\n\t\tdetails: environment.makeDetails(\"chain\")(results),\n\t};\n}\n\nfunction createQueuedSubagentResult(\n\ttask: SubagentTaskSpec,\n\tagents: AgentConfig[],\n\tinheritedModel: string | undefined,\n): SubagentResult {\n\treturn {\n\t\tstatus: \"queued\",\n\t\tagent: task.agent ?? \"ad-hoc\",\n\t\tagentSource: task.agent ? \"unknown\" : \"ad-hoc\",\n\t\ttask: truncateRetainedTask(task.task),\n\t\tresponseFormat: task.responseFormat,\n\t\texitCode: -1,\n\t\tmessages: [],\n\t\tstderr: \"\",\n\t\tusage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },\n\t\tmodel:\n\t\t\ttask.model ??\n\t\t\t(task.modelHint ? `hint:${task.modelHint}` : undefined) ??\n\t\t\tagents.find((agent) => agent.name === task.agent)?.model ??\n\t\t\tinheritedModel,\n\t};\n}\n\nfunction emitParallelSubagentUpdate(\n\tonUpdate: OnUpdateCallback | undefined,\n\tresults: SubagentResult[],\n\tmakeDetails: SubagentDetailsFactory,\n): void {\n\tif (!onUpdate) return;\n\tconst running = results.filter((result) => result.status === \"running\" || result.status === \"queued\").length;\n\tconst done = results.length - running;\n\tonUpdate({\n\t\tcontent: [{ type: \"text\", text: `Parallel: ${done}/${results.length} done, ${running} running...` }],\n\t\tdetails: makeDetails(\"parallel\")([...results]),\n\t});\n}\n\nfunction formatParallelSubagentSummary(result: SubagentResult): string {\n\tconst output = truncateParallelOutput(getResultOutput(result));\n\tconst status = isFailedResult(result)\n\t\t? `failed${result.stopReason && result.stopReason !== \"end\" ? ` (${result.stopReason})` : \"\"}`\n\t\t: \"completed\";\n\treturn `### [${result.agent}] ${status}\\n\\n${output}`;\n}\n\nasync function executeParallelSubagents(\n\tparams: SubagentToolInput,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tconst tasks = params.tasks ?? [];\n\tif (tasks.length > MAX_PARALLEL_TASKS) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Too many parallel tasks (${tasks.length}). Max is ${MAX_PARALLEL_TASKS}.` }],\n\t\t\tdetails: environment.makeDetails(\"parallel\")([]),\n\t\t};\n\t}\n\tconst currentResults = tasks.map((task) =>\n\t\tcreateQueuedSubagentResult(task, environment.agents, environment.inheritedModel),\n\t);\n\tconst results = await mapWithConcurrencyLimit(tasks, MAX_CONCURRENCY, async (task, index) => {\n\t\tconst result = await runSingleAgent(\n\t\t\tenvironment.workspaceCwd,\n\t\t\tenvironment.agents,\n\t\t\t{ ...task, toolOperations: environment.workspaceOperations },\n\t\t\tenvironment.inheritedModel,\n\t\t\tenvironment.runner,\n\t\t\tundefined,\n\t\t\tenvironment.signal,\n\t\t\t(partial) => {\n\t\t\t\tconst currentResult = partial.details?.results[0];\n\t\t\t\tif (!currentResult) return;\n\t\t\t\tcurrentResults[index] = currentResult;\n\t\t\t\temitParallelSubagentUpdate(environment.onUpdate, currentResults, environment.makeDetails);\n\t\t\t},\n\t\t\tenvironment.makeDetails(\"parallel\"),\n\t\t\tenvironment.resolveModelHintOption,\n\t\t);\n\t\tcurrentResults[index] = result;\n\t\temitParallelSubagentUpdate(environment.onUpdate, currentResults, environment.makeDetails);\n\t\treturn result;\n\t});\n\tconst successCount = results.filter((result) => !isFailedResult(result)).length;\n\tconst summaries = results.map(formatParallelSubagentSummary);\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: `Parallel: ${successCount}/${results.length} succeeded\\n\\n${summaries.join(\"\\n\\n---\\n\\n\")}`,\n\t\t\t},\n\t\t],\n\t\tdetails: environment.makeDetails(\"parallel\")(results),\n\t};\n}\n\nasync function executeSingleSubagent(\n\tparams: SubagentToolInput,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tconst result = await runSingleAgent(\n\t\tenvironment.workspaceCwd,\n\t\tenvironment.agents,\n\t\t{\n\t\t\tagent: params.agent,\n\t\t\ttask: params.task ?? \"\",\n\t\t\tresponseFormat: params.responseFormat,\n\t\t\tsystemPrompt: params.systemPrompt,\n\t\t\tmodel: params.model,\n\t\t\tmodelHint: params.modelHint,\n\t\t\ttools: params.tools,\n\t\t\tskills: params.skills,\n\t\t\tcwd: params.cwd,\n\t\t\ttoolOperations: environment.workspaceOperations,\n\t\t\tcontinueSession: params.continueSession,\n\t\t},\n\t\tenvironment.inheritedModel,\n\t\tenvironment.runner,\n\t\tundefined,\n\t\tenvironment.signal,\n\t\tenvironment.onUpdate,\n\t\tenvironment.makeDetails(\"single\"),\n\t\tenvironment.resolveModelHintOption,\n\t);\n\tif (isFailedResult(result)) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Agent ${result.stopReason || \"failed\"}: ${getResultOutput(result)}` }],\n\t\t\tdetails: environment.makeDetails(\"single\")([result]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\treturn {\n\t\tcontent: [{ type: \"text\", text: getFinalOutput(result.messages) || \"(no output)\" }],\n\t\tdetails: environment.makeDetails(\"single\")([result]),\n\t};\n}\n\nfunction executeSelectedSubagentMode(\n\tparams: SubagentToolInput,\n\tselection: SubagentModeSelection,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tif (selection.hasChain) return executeSubagentChain(params, environment);\n\tif (selection.hasTasks) return executeParallelSubagents(params, environment);\n\treturn executeSingleSubagent(params, environment);\n}\n\nfunction truncateSubagentCallTask(task: string, maxCharacters: number): string {\n\treturn task.length > maxCharacters ? `${task.slice(0, maxCharacters)}...` : task;\n}\n\nfunction renderSubagentChainCall(args: SubagentToolInput, scope: AgentScope, theme: Theme): Text {\n\tconst chain = args.chain ?? [];\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"subagent \")) +\n\t\ttheme.fg(\"accent\", `chain (${chain.length} steps)`) +\n\t\ttheme.fg(\"muted\", ` [${scope}]`);\n\tfor (let index = 0; index < Math.min(chain.length, 3); index++) {\n\t\tconst step = chain[index];\n\t\tconst cleanTask = step.task.replace(/\\{previous\\}/g, \"\").trim();\n\t\tconst preview = truncateSubagentCallTask(cleanTask, 40);\n\t\ttext +=\n\t\t\t\"\\n \" +\n\t\t\ttheme.fg(\"muted\", `${index + 1}.`) +\n\t\t\t\" \" +\n\t\t\ttheme.fg(\"accent\", step.agent ?? \"ad-hoc\") +\n\t\t\ttheme.fg(\"muted\", ` [${step.model ?? \"parent model\"}]`) +\n\t\t\ttheme.fg(\"dim\", ` ${preview}`);\n\t}\n\tif (chain.length > 3) text += `\\n ${theme.fg(\"muted\", `... +${chain.length - 3} more`)}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderParallelSubagentCall(args: SubagentToolInput, scope: AgentScope, theme: Theme): Text {\n\tconst tasks = args.tasks ?? [];\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"subagent \")) +\n\t\ttheme.fg(\"accent\", `parallel (${tasks.length} tasks)`) +\n\t\ttheme.fg(\"muted\", ` [${scope}]`);\n\tfor (const task of tasks.slice(0, 3)) {\n\t\tconst preview = truncateSubagentCallTask(task.task, 40);\n\t\ttext += `\\n ${theme.fg(\"accent\", task.agent ?? \"ad-hoc\")}${theme.fg(\"muted\", ` [${task.model ?? \"parent model\"}]`)}${theme.fg(\"dim\", ` ${preview}`)}`;\n\t}\n\tif (tasks.length > 3) text += `\\n ${theme.fg(\"muted\", `... +${tasks.length - 3} more`)}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderSingleSubagentCall(args: SubagentToolInput, scope: AgentScope, theme: Theme): Text {\n\tconst agentName = args.agent || \"ad-hoc\";\n\tconst preview = args.task ? truncateSubagentCallTask(args.task, 60) : \"...\";\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"subagent \")) +\n\t\ttheme.fg(\"accent\", agentName) +\n\t\ttheme.fg(\"muted\", ` [${scope}] [${args.model ?? \"parent model\"}]`);\n\ttext += `\\n ${theme.fg(\"dim\", preview)}`;\n\treturn new Text(text, 0, 0);\n}\n\ninterface SubagentStatusCounts {\n\tcompleted: number;\n\tfailed: number;\n\tactive: number;\n}\n\nfunction renderSubagentStatusIcon(status: SubagentStatus, theme: Theme): string {\n\tif (status === \"queued\") return theme.fg(\"muted\", \"[queued]\");\n\tif (status === \"running\") return theme.fg(\"warning\", \"[running]\");\n\tif (status === \"failed\") return theme.fg(\"error\", \"[failed]\");\n\treturn theme.fg(\"success\", \"[done]\");\n}\n\nfunction renderSubagentModel(model: string | undefined, theme: Theme): string {\n\treturn theme.fg(\"muted\", ` [${model ?? \"model pending\"}]`);\n}\n\nfunction renderSubagentDisplayItems(items: DisplayItem[], expanded: boolean, theme: Theme, limit?: number): string {\n\tconst toShow = limit ? items.slice(-limit) : items;\n\tconst skipped = limit && items.length > limit ? items.length - limit : 0;\n\tlet text = skipped > 0 ? theme.fg(\"muted\", `... ${skipped} earlier items\\n`) : \"\";\n\tfor (const item of toShow) {\n\t\tif (item.type === \"text\") {\n\t\t\tconst preview = expanded ? item.text : item.text.split(\"\\n\").slice(0, 3).join(\"\\n\");\n\t\t\ttext += `${theme.fg(\"toolOutput\", preview)}\\n`;\n\t\t\tcontinue;\n\t\t}\n\t\ttext += `${theme.fg(\"muted\", \"-> \") + formatToolCall(item.name, item.args, theme.fg.bind(theme))}\\n`;\n\t}\n\treturn text.trimEnd();\n}\n\nfunction aggregateSubagentUsage(results: SubagentResult[]): SubagentUsageDisplayMetrics {\n\tconst total = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 0 };\n\tfor (const result of results) {\n\t\ttotal.input += result.usage.input;\n\t\ttotal.output += result.usage.output;\n\t\ttotal.cacheRead += result.usage.cacheRead;\n\t\ttotal.cacheWrite += result.usage.cacheWrite;\n\t\ttotal.cost += result.usage.cost;\n\t\ttotal.turns += result.usage.turns;\n\t}\n\treturn total;\n}\n\nfunction countSubagentStatuses(results: SubagentResult[]): SubagentStatusCounts {\n\tconst counts: SubagentStatusCounts = { completed: 0, failed: 0, active: 0 };\n\tfor (const result of results) {\n\t\tif (result.status === \"completed\") counts.completed++;\n\t\telse if (result.status === \"failed\") counts.failed++;\n\t\telse counts.active++;\n\t}\n\treturn counts;\n}\n\nfunction appendSubagentToolCalls(container: Container, items: DisplayItem[], theme: Theme): void {\n\tfor (const item of items) {\n\t\tif (item.type !== \"toolCall\") continue;\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"-> \") + formatToolCall(item.name, item.args, theme.fg.bind(theme)), 0, 0),\n\t\t);\n\t}\n}\n\nfunction appendSubagentMarkdown(container: Container, output: string): void {\n\tif (!output) return;\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Markdown(output.trim(), 0, 0, getMarkdownTheme()));\n}\n\nfunction appendSubagentUsage(\n\tcontainer: Container,\n\tusage: SubagentUsageDisplayMetrics,\n\ttheme: Theme,\n\tmodel?: string,\n\tprefix = \"\",\n\twithSpacer = false,\n): void {\n\tconst text = formatUsageStats(usage, model);\n\tif (!text) return;\n\tif (withSpacer) container.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(theme.fg(\"dim\", `${prefix}${text}`), 0, 0));\n}\n\nfunction appendExpandedBatchResult(container: Container, result: SubagentResult, heading: string, theme: Theme): void {\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(heading, 0, 0));\n\tcontainer.addChild(new Text(theme.fg(\"muted\", \"Task: \") + theme.fg(\"dim\", result.task), 0, 0));\n\tif (result.responseFormat) {\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Response format: \") + theme.fg(\"dim\", result.responseFormat), 0, 0),\n\t\t);\n\t}\n\tappendSubagentToolCalls(container, getDisplayItems(result.messages), theme);\n\tappendSubagentMarkdown(container, getFinalOutput(result.messages));\n\tappendSubagentUsage(container, result.usage, theme, result.model);\n}\n\nfunction renderExpandedSingleSubagent(result: SubagentResult, theme: Theme): Container {\n\tconst container = new Container();\n\tconst failed = isFailedResult(result);\n\tlet header = `${renderSubagentStatusIcon(result.status, theme)} ${theme.fg(\"toolTitle\", theme.bold(result.agent))}${theme.fg(\"muted\", ` (${result.agentSource})`)}${renderSubagentModel(result.model, theme)}`;\n\tif (failed && result.stopReason) header += ` ${theme.fg(\"error\", `[${result.stopReason}]`)}`;\n\tcontainer.addChild(new Text(header, 0, 0));\n\tif (failed && result.errorMessage) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", `Error: ${result.errorMessage}`), 0, 0));\n\t}\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(theme.fg(\"muted\", \"─── Task ───\"), 0, 0));\n\tcontainer.addChild(new Text(theme.fg(\"dim\", result.task), 0, 0));\n\tif (result.responseFormat) {\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Response format: \") + theme.fg(\"dim\", result.responseFormat), 0, 0),\n\t\t);\n\t}\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(theme.fg(\"muted\", \"─── Output ───\"), 0, 0));\n\tconst displayItems = getDisplayItems(result.messages);\n\tconst finalOutput = getFinalOutput(result.messages);\n\tif (displayItems.length === 0 && !finalOutput) {\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", result.status === \"running\" ? \"(running...)\" : \"(no output)\"), 0, 0),\n\t\t);\n\t} else {\n\t\tappendSubagentToolCalls(container, displayItems, theme);\n\t\tappendSubagentMarkdown(container, finalOutput);\n\t}\n\tappendSubagentUsage(container, result.usage, theme, result.model, \"\", true);\n\treturn container;\n}\n\nfunction renderCollapsedSingleSubagent(result: SubagentResult, theme: Theme): Text {\n\tconst failed = isFailedResult(result);\n\tconst displayItems = getDisplayItems(result.messages);\n\tlet text = `${renderSubagentStatusIcon(result.status, theme)} ${theme.fg(\"toolTitle\", theme.bold(result.agent))}${theme.fg(\"muted\", ` (${result.agentSource})`)}${renderSubagentModel(result.model, theme)}`;\n\tif (failed && result.stopReason) text += ` ${theme.fg(\"error\", `[${result.stopReason}]`)}`;\n\tif (failed && result.errorMessage) text += `\\n${theme.fg(\"error\", `Error: ${result.errorMessage}`)}`;\n\telse if (displayItems.length === 0) {\n\t\ttext += `\\n${theme.fg(\"muted\", result.status === \"running\" ? \"(running...)\" : \"(no output)\")}`;\n\t} else {\n\t\ttext += `\\n${renderSubagentDisplayItems(displayItems, false, theme, COLLAPSED_ITEM_COUNT)}`;\n\t\tif (displayItems.length > COLLAPSED_ITEM_COUNT) text += `\\n${theme.fg(\"muted\", \"(Ctrl+O to expand)\")}`;\n\t}\n\tconst usage = formatUsageStats(result.usage, result.model);\n\tif (usage) text += `\\n${theme.fg(\"dim\", usage)}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderSingleSubagentResult(result: SubagentResult, expanded: boolean, theme: Theme): Text | Container {\n\treturn expanded ? renderExpandedSingleSubagent(result, theme) : renderCollapsedSingleSubagent(result, theme);\n}\n\nfunction renderExpandedSubagentChain(\n\tresults: SubagentResult[],\n\tcounts: SubagentStatusCounts,\n\ticon: string,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tcontainer.addChild(\n\t\tnew Text(\n\t\t\ticon +\n\t\t\t\t\" \" +\n\t\t\t\ttheme.fg(\"toolTitle\", theme.bold(\"chain \")) +\n\t\t\t\ttheme.fg(\"accent\", `${counts.completed}/${results.length} steps`),\n\t\t\t0,\n\t\t\t0,\n\t\t),\n\t);\n\tfor (const result of results) {\n\t\tconst heading = `${theme.fg(\"muted\", `─── Step ${result.step}: `) + theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tappendExpandedBatchResult(container, result, heading, theme);\n\t}\n\tappendSubagentUsage(container, aggregateSubagentUsage(results), theme, undefined, \"Total: \", true);\n\treturn container;\n}\n\nfunction renderCollapsedSubagentChain(\n\tresults: SubagentResult[],\n\tcounts: SubagentStatusCounts,\n\ticon: string,\n\ttheme: Theme,\n): Text {\n\tlet text =\n\t\ticon +\n\t\t\" \" +\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"chain \")) +\n\t\ttheme.fg(\"accent\", `${counts.completed}/${results.length} steps`);\n\tfor (const result of results) {\n\t\tconst items = getDisplayItems(result.messages);\n\t\ttext += `\\n\\n${theme.fg(\"muted\", `─── Step ${result.step}: `)}${theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tif (items.length === 0) {\n\t\t\tconst empty =\n\t\t\t\tresult.status === \"running\" || result.status === \"queued\" ? `(${result.status}...)` : \"(no output)\";\n\t\t\ttext += `\\n${theme.fg(\"muted\", empty)}`;\n\t\t} else text += `\\n${renderSubagentDisplayItems(items, false, theme, 5)}`;\n\t}\n\tconst usage = formatUsageStats(aggregateSubagentUsage(results));\n\tif (usage) text += `\\n\\n${theme.fg(\"dim\", `Total: ${usage}`)}`;\n\ttext += `\\n${theme.fg(\"muted\", \"(Ctrl+O to expand)\")}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderSubagentChain(results: SubagentResult[], expanded: boolean, theme: Theme): Text | Container {\n\tconst counts = countSubagentStatuses(results);\n\tconst icon =\n\t\tcounts.active > 0\n\t\t\t? theme.fg(\"warning\", \"[running]\")\n\t\t\t: counts.failed > 0\n\t\t\t\t? theme.fg(\"error\", \"[failed]\")\n\t\t\t\t: theme.fg(\"success\", \"[done]\");\n\treturn expanded\n\t\t? renderExpandedSubagentChain(results, counts, icon, theme)\n\t\t: renderCollapsedSubagentChain(results, counts, icon, theme);\n}\n\nfunction parallelSubagentStatus(counts: SubagentStatusCounts, total: number): string {\n\treturn counts.active > 0\n\t\t? `${counts.completed + counts.failed}/${total} done, ${counts.active} running`\n\t\t: `${counts.completed}/${total} tasks`;\n}\n\nfunction renderExpandedParallelSubagents(\n\tresults: SubagentResult[],\n\ticon: string,\n\tstatus: string,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tcontainer.addChild(\n\t\tnew Text(`${icon} ${theme.fg(\"toolTitle\", theme.bold(\"parallel \"))}${theme.fg(\"accent\", status)}`, 0, 0),\n\t);\n\tfor (const result of results) {\n\t\tconst heading = `${theme.fg(\"muted\", \"─── \") + theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tappendExpandedBatchResult(container, result, heading, theme);\n\t}\n\tappendSubagentUsage(container, aggregateSubagentUsage(results), theme, undefined, \"Total: \", true);\n\treturn container;\n}\n\nfunction renderCollapsedParallelSubagents(\n\tresults: SubagentResult[],\n\texpanded: boolean,\n\tcounts: SubagentStatusCounts,\n\ticon: string,\n\tstatus: string,\n\ttheme: Theme,\n): Text {\n\tlet text = `${icon} ${theme.fg(\"toolTitle\", theme.bold(\"parallel \"))}${theme.fg(\"accent\", status)}`;\n\tfor (const result of results) {\n\t\tconst items = getDisplayItems(result.messages);\n\t\ttext += `\\n\\n${theme.fg(\"muted\", \"─── \")}${theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tif (items.length === 0) {\n\t\t\tconst empty =\n\t\t\t\tresult.status === \"running\" || result.status === \"queued\" ? `(${result.status}...)` : \"(no output)\";\n\t\t\ttext += `\\n${theme.fg(\"muted\", empty)}`;\n\t\t} else text += `\\n${renderSubagentDisplayItems(items, expanded, theme, 5)}`;\n\t}\n\tif (counts.active === 0) {\n\t\tconst usage = formatUsageStats(aggregateSubagentUsage(results));\n\t\tif (usage) text += `\\n\\n${theme.fg(\"dim\", `Total: ${usage}`)}`;\n\t}\n\tif (!expanded) text += `\\n${theme.fg(\"muted\", \"(Ctrl+O to expand)\")}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderParallelSubagents(results: SubagentResult[], expanded: boolean, theme: Theme): Text | Container {\n\tconst counts = countSubagentStatuses(results);\n\tconst icon =\n\t\tcounts.active > 0\n\t\t\t? theme.fg(\"warning\", \"[running]\")\n\t\t\t: counts.failed > 0\n\t\t\t\t? theme.fg(\"warning\", \"[partial]\")\n\t\t\t\t: theme.fg(\"success\", \"[done]\");\n\tconst status = parallelSubagentStatus(counts, results.length);\n\treturn expanded && counts.active === 0\n\t\t? renderExpandedParallelSubagents(results, icon, status, theme)\n\t\t: renderCollapsedParallelSubagents(results, expanded, counts, icon, status, theme);\n}\n\nfunction renderSubagentFallback(result: AgentToolResult<SubagentDetails>): Text {\n\tconst content = result.content[0];\n\treturn new Text(content?.type === \"text\" ? content.text : \"(no output)\", 0, 0);\n}\n\nfunction renderSubagentResult(\n\tresult: AgentToolResult<SubagentDetails>,\n\texpanded: boolean,\n\ttheme: Theme,\n): Text | Container {\n\tconst details = result.details;\n\tif (!details || details.results.length === 0) return renderSubagentFallback(result);\n\tif (details.mode === \"single\" && details.results.length === 1) {\n\t\treturn renderSingleSubagentResult(details.results[0], expanded, theme);\n\t}\n\tif (details.mode === \"chain\") return renderSubagentChain(details.results, expanded, theme);\n\tif (details.mode === \"parallel\") return renderParallelSubagents(details.results, expanded, theme);\n\treturn renderSubagentFallback(result);\n}\n\nexport function createSubagentToolDefinition(\n\toptions: SubagentToolOptions = {},\n): ToolDefinition<typeof subagentParamsSchema, SubagentDetails> {\n\tconst runner = options.runner;\n\tconst parameters = options.modelCatalog ? createSubagentParamsSchema(options.modelCatalog) : subagentParamsSchema;\n\treturn {\n\t\tname: \"subagent\",\n\t\tlabel: \"Subagent\",\n\t\tdescription: [\n\t\t\t\"Delegate tasks to isolated subagent sessions with optional named presets.\",\n\t\t\t\"Modes: single (task), parallel (tasks array), chain (sequential with {previous} placeholder).\",\n\t\t\t\"Each task can specify responseFormat, systemPrompt, model, tools, cwd, and an optional agent preset.\",\n\t\t\t\"Omitted models inherit the parent model. Bundled presets: explore, worker, reviewer.\",\n\t\t\t'Default agent scope is \"user\"; project-local presets require host approval or trustProjectAgents in the host configuration.',\n\t\t].join(\" \"),\n\t\tpromptSnippet: \"Delegate tasks to specialized agents in isolated sessions\",\n\t\tpromptGuidelines: [\n\t\t\t\"Use subagent for focused parallel investigation or when a task benefits from an isolated context window.\",\n\t\t\t\"Do not delegate trivial work that is faster to perform directly.\",\n\t\t],\n\t\tparameters,\n\n\t\tasync execute(_toolCallId, params, signal, onUpdate, ctx) {\n\t\t\tconst selection = selectSubagentMode(params);\n\t\t\tconst agentScope: AgentScope = params.agentScope ?? \"user\";\n\t\t\tconst workspaceOperations = ctx.toolOperations;\n\t\t\tif (!workspaceOperations) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagents require explicit workspace tool operations.\" }],\n\t\t\t\t\tdetails: { mode: selection.mode, agentScope, projectAgentsDir: null, results: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst backendInfo = workspaceOperations.getBackendInfo?.();\n\t\t\tif (backendInfo?.type === \"remote\" && !backendInfo.configured) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagents cannot run with an unconfigured remote backend.\" }],\n\t\t\t\t\tdetails: { mode: selection.mode, agentScope, projectAgentsDir: null, results: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst workspaceCwd = workspaceOperations.cwd ?? ctx.cwd;\n\t\t\tconst discovery = await discoverAgentsWithOperations(workspaceCwd, agentScope, workspaceOperations);\n\t\t\tconst agents = mergeSessionAgents(discovery.agents, options.configRegistry?.list() ?? []);\n\t\t\tconst makeDetails = createSubagentDetailsFactory(agentScope, discovery.projectAgentsDir);\n\t\t\tconst validationError = validateSubagentRequest(params, selection, agents, makeDetails);\n\t\t\tif (validationError) return validationError;\n\t\t\tif (!runner) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagent runner is not configured for this session.\" }],\n\t\t\t\t\tdetails: makeDetails(selection.mode)([]),\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst authorizationError = await authorizeProjectAgents(\n\t\t\t\tparams,\n\t\t\t\tagentScope,\n\t\t\t\tagents,\n\t\t\t\tdiscovery.projectAgentsDir,\n\t\t\t\toptions.trustProjectAgents,\n\t\t\t\tctx,\n\t\t\t\tmakeDetails,\n\t\t\t\tselection.mode,\n\t\t\t);\n\t\t\tif (authorizationError) return authorizationError;\n\t\t\treturn executeSelectedSubagentMode(params, selection, {\n\t\t\t\tagents,\n\t\t\t\tworkspaceCwd,\n\t\t\t\tworkspaceOperations,\n\t\t\t\tinheritedModel: inheritedSubagentModelName(ctx.model),\n\t\t\t\trunner,\n\t\t\t\tsignal,\n\t\t\t\tonUpdate,\n\t\t\t\tmakeDetails,\n\t\t\t\tresolveModelHintOption: options.resolveModelHint,\n\t\t\t});\n\t\t},\n\n\t\trenderCall(args, theme, _context) {\n\t\t\tconst scope: AgentScope = args.agentScope ?? \"user\";\n\t\t\tif (args.chain && args.chain.length > 0) return renderSubagentChainCall(args, scope, theme);\n\t\t\tif (args.tasks && args.tasks.length > 0) return renderParallelSubagentCall(args, scope, theme);\n\t\t\treturn renderSingleSubagentCall(args, scope, theme);\n\t\t},\n\n\t\trenderResult(result, { expanded }, theme, _context) {\n\t\t\treturn renderSubagentResult(result, expanded, theme);\n\t\t},\n\t};\n}\nexport function createSubagentRunsTool(\n\tregistry?: SubagentRunRegistry,\n): AgentTool<typeof subagentRunsParamsSchema, SubagentRunsDetails> {\n\treturn wrapToolDefinition(createSubagentRunsToolDefinition(registry));\n}\n\nexport function createCreateSubagentTool(\n\tregistry?: SubagentConfigRegistry,\n): AgentTool<typeof createSubagentConfigParamsSchema, CreateSubagentDetails> {\n\treturn wrapToolDefinition(createCreateSubagentToolDefinition(registry));\n}\n\nexport function createSubagentTool(\n\toptions?: SubagentToolOptions,\n): AgentTool<typeof subagentParamsSchema, SubagentDetails> {\n\treturn wrapToolDefinition(createSubagentToolDefinition(options));\n}\n"]}
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../../src/core/tools/subagent.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Subagent Tool - Delegate tasks to specialized agents\n *\n * Runs each task in a fresh embedded AgentSession using an injected runner.\n *\n * Supports three modes:\n * - Single: { task: \"...\", responseFormat: \"...\", systemPrompt: \"...\" }\n * - Parallel: { tasks: [{ task: \"...\", model: \"...\" }, ...] }\n * - Chain: { chain: [{ task: \"... {previous} ...\" }, ...] }\n */\n\nimport * as os from \"node:os\";\nimport type { AgentTool, AgentToolResult } from \"@greppleai/grip-agent-core\";\nimport type { Api, AssistantMessage, Message, Model, TextContent } from \"@greppleai/grip-ai\";\nimport { StringEnum } from \"@greppleai/grip-ai\";\nimport { Container, Markdown, Spacer, Text } from \"@greppleai/grip-tui\";\nimport { type Static, Type } from \"typebox\";\nimport { getMarkdownTheme, type Theme, type ThemeColor } from \"../../modes/interactive/theme/theme.ts\";\nimport type { ExtensionContext, ToolDefinition } from \"../extensions/types.ts\";\nimport type { ToolOperations } from \"./operations.ts\";\nimport {\n\ttype AgentConfig,\n\ttype AgentScope,\n\ttype AgentSource,\n\tdiscoverAgentsWithOperations,\n} from \"./subagent-agents.ts\";\nimport { wrapToolDefinition } from \"./tool-definition-wrapper.ts\";\n\nconst GENERIC_SYSTEM_PROMPT =\n\t\"You are an isolated subagent. Complete the delegated task autonomously and return only the information requested by the parent agent.\";\nconst MAX_PARALLEL_TASKS = 8;\nconst MAX_CHAIN_STEPS = 16;\nconst MAX_CONCURRENCY = 4;\nconst COLLAPSED_ITEM_COUNT = 10;\nconst PER_TASK_OUTPUT_CAP = 50 * 1024;\nconst MAX_RETAINED_MESSAGE_CHARS = 64 * 1024;\nconst MAX_RETAINED_TASK_CHARS = 256 * 1024;\nconst MAX_RETAINED_TASK_MESSAGES = 100;\nconst MAX_RETAINED_TASK_DESCRIPTION_CHARS = 16 * 1024;\n\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\treturn `${(count / 1000000).toFixed(1)}M`;\n}\n\ntype SubagentUsageDisplayMetrics = Omit<SubagentUsageStats, \"contextTokens\" | \"turns\"> &\n\tPartial<Pick<SubagentUsageStats, \"contextTokens\" | \"turns\">>;\n\nfunction formatUsageStats(usage: SubagentUsageDisplayMetrics, model?: string): string {\n\tconst parts: string[] = [];\n\tif (usage.turns) parts.push(`${usage.turns} turn${usage.turns > 1 ? \"s\" : \"\"}`);\n\tif (usage.input) parts.push(`in:${formatTokens(usage.input)}`);\n\tif (usage.output) parts.push(`out:${formatTokens(usage.output)}`);\n\tif (usage.cacheRead) parts.push(`R${formatTokens(usage.cacheRead)}`);\n\tif (usage.cacheWrite) parts.push(`W${formatTokens(usage.cacheWrite)}`);\n\tif (usage.cost) parts.push(`$${usage.cost.toFixed(4)}`);\n\tif (usage.contextTokens && usage.contextTokens > 0) {\n\t\tparts.push(`ctx:${formatTokens(usage.contextTokens)}`);\n\t}\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\nexport function formatSubagentModelCatalog(\n\tcurrentModel: Model<Api> | undefined,\n\tavailableModels: Model<Api>[],\n): string | undefined {\n\tif (!currentModel) return undefined;\n\tconst providerModels = availableModels.filter((model) => model.provider === currentModel.provider);\n\tif (providerModels.length === 0) return undefined;\n\n\tconst lines = [\n\t\t`Authenticated subagent models for the current ${currentModel.provider} provider:`,\n\t\t\"Omit model to inherit the current model.\",\n\t];\n\tfor (const model of providerModels) {\n\t\tconst capabilities = [\n\t\t\tmodel.reasoning ? \"reasoning\" : \"non-reasoning\",\n\t\t\t`context ${formatTokens(model.contextWindow)}`,\n\t\t\t`max output ${formatTokens(model.maxTokens)}`,\n\t\t\t`input $${model.cost.input}/M`,\n\t\t\t`output $${model.cost.output}/M`,\n\t\t];\n\t\tif (model.cost.cacheRead > 0) capabilities.push(`cache read $${model.cost.cacheRead}/M`);\n\t\tif (model.cost.cacheWrite > 0) capabilities.push(`cache write $${model.cost.cacheWrite}/M`);\n\t\tlines.push(`- ${model.provider}/${model.id}: ${capabilities.join(\", \")}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\ntype SubagentToolThemeForeground = (color: ThemeColor, text: string) => string;\n\nfunction shortenSubagentToolPath(filePath: string): string {\n\tconst home = os.homedir();\n\treturn filePath.startsWith(home) ? `~${filePath.slice(home.length)}` : filePath;\n}\n\nfunction formatBashToolCall(args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tconst command = (args.command as string) || \"...\";\n\tconst preview = command.length > 60 ? `${command.slice(0, 60)}...` : command;\n\treturn themeFg(\"muted\", \"$ \") + themeFg(\"toolOutput\", preview);\n}\n\nfunction formatReadToolCall(args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tconst rawPath = (args.file_path || args.path || \"...\") as string;\n\tconst filePath = shortenSubagentToolPath(rawPath);\n\tconst offset = args.offset as number | undefined;\n\tconst limit = args.limit as number | undefined;\n\tlet text = themeFg(\"accent\", filePath);\n\tif (offset !== undefined || limit !== undefined) {\n\t\tconst startLine = offset ?? 1;\n\t\tconst endLine = limit !== undefined ? startLine + limit - 1 : \"\";\n\t\ttext += themeFg(\"warning\", `:${startLine}${endLine ? `-${endLine}` : \"\"}`);\n\t}\n\treturn themeFg(\"muted\", \"read \") + text;\n}\n\nfunction formatWriteToolCall(args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tconst rawPath = (args.file_path || args.path || \"...\") as string;\n\tconst filePath = shortenSubagentToolPath(rawPath);\n\tconst content = (args.content || \"\") as string;\n\tconst lines = content.split(\"\\n\").length;\n\tlet text = themeFg(\"muted\", \"write \") + themeFg(\"accent\", filePath);\n\tif (lines > 1) text += themeFg(\"dim\", ` (${lines} lines)`);\n\treturn text;\n}\n\nfunction formatToolCall(toolName: string, args: Record<string, unknown>, themeFg: SubagentToolThemeForeground): string {\n\tswitch (toolName) {\n\t\tcase \"bash\":\n\t\t\treturn formatBashToolCall(args, themeFg);\n\t\tcase \"read\":\n\t\t\treturn formatReadToolCall(args, themeFg);\n\t\tcase \"write\":\n\t\t\treturn formatWriteToolCall(args, themeFg);\n\t\tcase \"edit\": {\n\t\t\tconst rawPath = (args.file_path || args.path || \"...\") as string;\n\t\t\treturn themeFg(\"muted\", \"edit \") + themeFg(\"accent\", shortenSubagentToolPath(rawPath));\n\t\t}\n\t\tcase \"ls\": {\n\t\t\tconst rawPath = (args.path || \".\") as string;\n\t\t\treturn themeFg(\"muted\", \"ls \") + themeFg(\"accent\", shortenSubagentToolPath(rawPath));\n\t\t}\n\t\tcase \"find\": {\n\t\t\tconst pattern = (args.pattern || \"*\") as string;\n\t\t\tconst rawPath = (args.path || \".\") as string;\n\t\t\treturn (\n\t\t\t\tthemeFg(\"muted\", \"find \") +\n\t\t\t\tthemeFg(\"accent\", pattern) +\n\t\t\t\tthemeFg(\"dim\", ` in ${shortenSubagentToolPath(rawPath)}`)\n\t\t\t);\n\t\t}\n\t\tcase \"grep\": {\n\t\t\tconst pattern = (args.pattern || \"\") as string;\n\t\t\tconst rawPath = (args.path || \".\") as string;\n\t\t\treturn (\n\t\t\t\tthemeFg(\"muted\", \"grep \") +\n\t\t\t\tthemeFg(\"accent\", `/${pattern}/`) +\n\t\t\t\tthemeFg(\"dim\", ` in ${shortenSubagentToolPath(rawPath)}`)\n\t\t\t);\n\t\t}\n\t\tdefault: {\n\t\t\tconst argsStr = JSON.stringify(args);\n\t\t\tconst preview = argsStr.length > 50 ? `${argsStr.slice(0, 50)}...` : argsStr;\n\t\t\treturn themeFg(\"accent\", toolName) + themeFg(\"dim\", ` ${preview}`);\n\t\t}\n\t}\n}\n\nexport interface SubagentUsageStats {\n\tinput: number;\n\toutput: number;\n\tcacheRead: number;\n\tcacheWrite: number;\n\tcost: number;\n\tcontextTokens: number;\n\tturns: number;\n}\n\nexport type SubagentStatus = \"queued\" | \"running\" | \"completed\" | \"failed\";\nexport type SubagentRunStatus = Exclude<SubagentStatus, \"queued\">;\nexport type SubagentMode = \"single\" | \"parallel\" | \"chain\";\nexport type SubagentAgentSource = AgentSource | \"ad-hoc\" | \"unknown\";\n\nexport interface SubagentResult {\n\tstatus: SubagentStatus;\n\trunId?: string;\n\tsessionReference?: string;\n\tagent: string;\n\tagentSource: SubagentAgentSource;\n\ttask: string;\n\texitCode: number;\n\tmessages: Message[];\n\tstderr: string;\n\tusage: SubagentUsageStats;\n\tmodel?: string;\n\tstopReason?: string;\n\terrorMessage?: string;\n\tresponseFormat?: string;\n\tstep?: number;\n}\nexport interface SubagentDetails {\n\tmode: SubagentMode;\n\tagentScope: AgentScope;\n\tprojectAgentsDir: string | null;\n\tresults: SubagentResult[];\n}\n\nexport interface SubagentRunInfo {\n\trunId: string;\n\tsessionReference?: string;\n\tstatus: SubagentRunStatus;\n\tagent: string;\n\ttask: string;\n\tcwd: string;\n\tmodel?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n\tlastOutput?: string;\n}\n\nexport type SubagentModelHint =\n\t| \"cheapest\"\n\t| \"fastest\"\n\t| \"strongest\"\n\t| \"best-reasoning\"\n\t| \"large-context\"\n\t| \"same-as-parent\"\n\t| \"balanced\";\n\nexport interface SessionSubagentConfig {\n\tname: string;\n\tdescription: string;\n\tsystemPrompt: string;\n\ttools?: string[];\n\tmodel?: string;\n\tmodelHint?: SubagentModelHint;\n\tskills?: string[];\n\tcwd?: string;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport interface SubagentRunRegistry {\n\tlist(): SubagentRunInfo[];\n}\n\nexport interface SubagentConfigRegistry {\n\tlist(): SessionSubagentConfig[];\n\tupsert(config: SessionSubagentConfig): void;\n\tget(name: string): SessionSubagentConfig | undefined;\n}\n\ninterface PresentationSegment {\n\tdisplayItemCount: number;\n\tassistantOutput?: string;\n}\n\ninterface SubagentPresentationState {\n\tdisplayItems: DisplayItem[];\n\tassistantOutputs: string[];\n\tsegments: PresentationSegment[];\n}\n\ninterface RetainedSubagentMessageState {\n\tpresentation: SubagentPresentationState;\n\tretainedChars: number;\n\tretainedSizes: number[];\n}\n\nconst presentationCache = new WeakMap<Message[], SubagentPresentationState>();\n\nfunction appendPresentationMessage(state: SubagentPresentationState, message: Message): void {\n\tconst segment: PresentationSegment = { displayItemCount: 0 };\n\tif (message.role === \"assistant\") {\n\t\tconst textParts: string[] = [];\n\t\tfor (const part of message.content) {\n\t\t\tif (part.type === \"text\") {\n\t\t\t\tstate.displayItems.push({ type: \"text\", text: part.text });\n\t\t\t\ttextParts.push(part.text);\n\t\t\t\tsegment.displayItemCount++;\n\t\t\t} else if (part.type === \"toolCall\") {\n\t\t\t\tstate.displayItems.push({ type: \"toolCall\", name: part.name, args: part.arguments });\n\t\t\t\tsegment.displayItemCount++;\n\t\t\t}\n\t\t}\n\t\tif (textParts.length > 0) {\n\t\t\tsegment.assistantOutput = textParts.join(\"\\n\");\n\t\t\tstate.assistantOutputs.push(segment.assistantOutput);\n\t\t}\n\t}\n\tstate.segments.push(segment);\n}\n\nfunction removeOldestPresentationMessage(state: SubagentPresentationState): void {\n\tconst segment = state.segments.shift();\n\tif (!segment) return;\n\tif (segment.displayItemCount > 0) state.displayItems.splice(0, segment.displayItemCount);\n\tif (segment.assistantOutput !== undefined) state.assistantOutputs.shift();\n}\n\nfunction getPresentationState(messages: Message[]): SubagentPresentationState {\n\tconst cached = presentationCache.get(messages);\n\tif (cached) return cached;\n\tconst state: SubagentPresentationState = { displayItems: [], assistantOutputs: [], segments: [] };\n\tfor (const message of messages) appendPresentationMessage(state, message);\n\tpresentationCache.set(messages, state);\n\treturn state;\n}\n\nfunction getFinalOutput(messages: Message[]): string {\n\treturn getPresentationState(messages).assistantOutputs.at(-1) ?? \"\";\n}\n\nfunction isFailedResult(result: SubagentResult): boolean {\n\treturn result.status === \"failed\";\n}\n\nfunction getResultOutput(result: SubagentResult): string {\n\tif (isFailedResult(result)) {\n\t\treturn result.errorMessage || result.stderr || getFinalOutput(result.messages) || \"(no output)\";\n\t}\n\treturn getFinalOutput(result.messages) || \"(no output)\";\n}\n\nfunction truncateParallelOutput(output: string): string {\n\tconst byteLength = Buffer.byteLength(output, \"utf8\");\n\tif (byteLength <= PER_TASK_OUTPUT_CAP) return output;\n\n\tlet truncated = output.slice(0, PER_TASK_OUTPUT_CAP);\n\twhile (Buffer.byteLength(truncated, \"utf8\") > PER_TASK_OUTPUT_CAP) {\n\t\ttruncated = truncated.slice(0, -1);\n\t}\n\treturn `${truncated}\\n\\n[Output truncated: ${byteLength - Buffer.byteLength(truncated, \"utf8\")} bytes omitted.]`;\n}\n\ntype DisplayItem = { type: \"text\"; text: string } | { type: \"toolCall\"; name: string; args: Record<string, unknown> };\n\nfunction getDisplayItems(messages: Message[]): DisplayItem[] {\n\treturn getPresentationState(messages).displayItems;\n}\n\nasync function mapWithConcurrencyLimit<TIn, TOut>(\n\titems: TIn[],\n\tconcurrency: number,\n\tfn: (item: TIn, index: number) => Promise<TOut>,\n): Promise<TOut[]> {\n\tif (items.length === 0) return [];\n\tconst limit = Math.max(1, Math.min(concurrency, items.length));\n\tconst results: TOut[] = new Array(items.length);\n\tlet nextIndex = 0;\n\tconst workers = new Array(limit).fill(null).map(async () => {\n\t\twhile (true) {\n\t\t\tconst current = nextIndex++;\n\t\t\tif (current >= items.length) return;\n\t\t\tresults[current] = await fn(items[current], current);\n\t\t}\n\t});\n\tawait Promise.all(workers);\n\treturn results;\n}\nfunction truncateRetainedTask(task: string): string {\n\tif (task.length <= MAX_RETAINED_TASK_DESCRIPTION_CHARS) return task;\n\treturn `${task.slice(0, MAX_RETAINED_TASK_DESCRIPTION_CHARS)}\\n\\n[Task truncated in retained details]`;\n}\n\nfunction truncateRetainedText(text: string): string {\n\tif (text.length <= MAX_RETAINED_MESSAGE_CHARS) return text;\n\treturn `${text.slice(0, MAX_RETAINED_MESSAGE_CHARS)}\\n\\n[Retained output truncated: ${text.length - MAX_RETAINED_MESSAGE_CHARS} characters omitted.]`;\n}\n\nfunction compactRetainedMessage(message: Message): Message | undefined {\n\tif (JSON.stringify(message).length <= MAX_RETAINED_MESSAGE_CHARS) return message;\n\tif (message.role === \"assistant\") {\n\t\tconst text = message.content\n\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t.map((part) => part.text)\n\t\t\t.join(\"\\n\");\n\t\treturn {\n\t\t\t...message,\n\t\t\terrorMessage: message.errorMessage ? truncateRetainedText(message.errorMessage) : undefined,\n\t\t\tcontent: [{ type: \"text\", text: truncateRetainedText(text || \"[Oversized assistant event omitted]\") }],\n\t\t};\n\t}\n\tif (message.role === \"toolResult\") {\n\t\tconst text = message.content\n\t\t\t.filter((part) => part.type === \"text\")\n\t\t\t.map((part) => part.text)\n\t\t\t.join(\"\\n\");\n\t\treturn {\n\t\t\t...message,\n\t\t\ttoolCallId: message.toolCallId.slice(0, 1024),\n\t\t\ttoolName: message.toolName.slice(0, 1024),\n\t\t\tdetails: undefined,\n\t\t\tcontent: [{ type: \"text\", text: truncateRetainedText(text || \"[Oversized tool result omitted]\") }],\n\t\t};\n\t}\n\treturn undefined;\n}\nfunction retainSubagentMessage(result: SubagentResult, state: RetainedSubagentMessageState, message: Message): void {\n\tconst retainedMessage = compactRetainedMessage(message);\n\tif (!retainedMessage) return;\n\n\tconst retainedSize = JSON.stringify(retainedMessage).length;\n\tresult.messages.push(retainedMessage);\n\tappendPresentationMessage(state.presentation, retainedMessage);\n\tstate.retainedSizes.push(retainedSize);\n\tstate.retainedChars += retainedSize;\n\twhile (\n\t\tresult.messages.length > MAX_RETAINED_TASK_MESSAGES ||\n\t\t(state.retainedChars > MAX_RETAINED_TASK_CHARS && result.messages.length > 1)\n\t) {\n\t\tresult.messages.shift();\n\t\tremoveOldestPresentationMessage(state.presentation);\n\t\tstate.retainedChars -= state.retainedSizes.shift() ?? 0;\n\t}\n}\n\nfunction recordSubagentAssistantMessage(result: SubagentResult, message: AssistantMessage): void {\n\tresult.usage.turns++;\n\tconst usage = message.usage;\n\tif (usage) {\n\t\tresult.usage.input += usage.input || 0;\n\t\tresult.usage.output += usage.output || 0;\n\t\tresult.usage.cacheRead += usage.cacheRead || 0;\n\t\tresult.usage.cacheWrite += usage.cacheWrite || 0;\n\t\tresult.usage.cost += usage.cost?.total || 0;\n\t\tresult.usage.contextTokens = usage.totalTokens || 0;\n\t}\n\tif (!result.model && message.model) result.model = message.model;\n\tif (message.stopReason) result.stopReason = message.stopReason;\n\tresult.errorMessage = message.errorMessage;\n}\n\ntype OnUpdateCallback = (partial: AgentToolResult<SubagentDetails>) => void;\n\nexport interface SubagentRunRequest {\n\tcwd: string;\n\ttoolOperations?: ToolOperations;\n\tprompt: string;\n\t/** Human-readable delegated task, without wrapper markup. */\n\ttask: string;\n\tagent: string;\n\tagentSource: SubagentAgentSource;\n\tsystemPrompt: string;\n\tmodel?: string;\n\ttools?: string[];\n\tskills?: string[];\n\tcontinueSession?: string;\n\tsignal?: AbortSignal;\n\tonMessage: (message: Message) => void;\n}\n\nexport interface SubagentRunOutcome {\n\texitCode: number;\n\tstderr: string;\n\trunId?: string;\n\tsessionReference?: string;\n}\n\nexport type SubagentRunner = (request: SubagentRunRequest) => Promise<SubagentRunOutcome>;\n\ninterface SubagentTaskSpec {\n\tagent?: string;\n\ttask: string;\n\tresponseFormat?: string;\n\tsystemPrompt?: string;\n\tmodel?: string;\n\tmodelHint?: SubagentModelHint;\n\ttools?: string[];\n\tskills?: string[];\n\tcwd?: string;\n\ttoolOperations?: ToolOperations;\n\tcontinueSession?: string;\n}\ninterface SubagentModelSelection {\n\tspec: SubagentTaskSpec;\n\tpreset: AgentConfig | undefined;\n\tinheritedModel: string | undefined;\n\tagentName: string;\n\tresult: SubagentResult;\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined;\n}\n\nfunction selectSubagentModel(selection: SubagentModelSelection): string | undefined {\n\tconst { spec, preset, inheritedModel, agentName, result, resolveModelHintOption } = selection;\n\treturn (\n\t\tspec.model ??\n\t\t(spec.modelHint\n\t\t\t? resolveModelHint(spec.modelHint, resolveModelHintOption, `task \"${agentName}\"`, result)\n\t\t\t: undefined) ??\n\t\tpreset?.model ??\n\t\t(preset?.modelHint\n\t\t\t? resolveModelHint(\n\t\t\t\t\tpreset.modelHint as SubagentModelHint,\n\t\t\t\t\tresolveModelHintOption,\n\t\t\t\t\t`agent \"${agentName}\"`,\n\t\t\t\t\tresult,\n\t\t\t\t)\n\t\t\t: undefined) ??\n\t\tinheritedModel\n\t);\n}\n\nfunction finalizeSubagentRun(result: SubagentResult, outcome: SubagentRunOutcome, aborted: boolean): SubagentResult {\n\tresult.runId = outcome.runId;\n\tresult.sessionReference = outcome.sessionReference;\n\tresult.exitCode = outcome.exitCode;\n\tresult.stderr = outcome.stderr;\n\tif (aborted) {\n\t\tresult.status = \"failed\";\n\t\tresult.stopReason = \"aborted\";\n\t\tresult.errorMessage ??= outcome.stderr || \"Subagent was aborted\";\n\t\treturn result;\n\t}\n\tresult.status =\n\t\toutcome.exitCode !== 0 || result.stopReason === \"error\" || result.stopReason === \"aborted\"\n\t\t\t? \"failed\"\n\t\t\t: \"completed\";\n\treturn result;\n}\nasync function invokeSubagentRunner(runner: SubagentRunner, request: SubagentRunRequest): Promise<SubagentRunOutcome> {\n\ttry {\n\t\treturn await runner(request);\n\t} catch (error) {\n\t\tif (!request.signal?.aborted) throw error;\n\t\treturn { exitCode: 1, stderr: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function formatSubagentTaskPrompt(task: string, responseFormat?: string): string {\n\tconst sections = [`<task>\\n${task}\\n</task>`];\n\tif (responseFormat?.trim()) {\n\t\tsections.push(`<response-format>\\n${responseFormat}\\n</response-format>`);\n\t}\n\treturn sections.join(\"\\n\\n\");\n}\n\nasync function runSingleAgent(\n\tdefaultCwd: string,\n\tagents: AgentConfig[],\n\tspec: SubagentTaskSpec,\n\tinheritedModel: string | undefined,\n\trunner: SubagentRunner,\n\tstep: number | undefined,\n\tsignal: AbortSignal | undefined,\n\tonUpdate: OnUpdateCallback | undefined,\n\tmakeDetails: (results: SubagentResult[]) => SubagentDetails,\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined,\n): Promise<SubagentResult> {\n\tconst preset = spec.agent ? agents.find((agent) => agent.name === spec.agent) : undefined;\n\tconst agentName = spec.agent ?? \"ad-hoc\";\n\tif (spec.agent && !preset) {\n\t\tconst available = agents.map((agent) => `\"${agent.name}\"`).join(\", \") || \"none\";\n\t\treturn {\n\t\t\tstatus: \"failed\",\n\t\t\tagent: agentName,\n\t\t\tagentSource: \"unknown\",\n\t\t\ttask: truncateRetainedTask(spec.task),\n\t\t\tresponseFormat: spec.responseFormat,\n\t\t\texitCode: 1,\n\t\t\tmessages: [],\n\t\t\tstderr: `Unknown agent: \"${agentName}\". Available agents: ${available}.`,\n\t\t\tusage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },\n\t\t\tstep,\n\t\t};\n\t}\n\n\tconst currentResult: SubagentResult = {\n\t\tstatus: \"running\",\n\t\tagent: agentName,\n\t\tagentSource: preset?.source ?? \"ad-hoc\",\n\t\ttask: truncateRetainedTask(spec.task),\n\t\tresponseFormat: spec.responseFormat,\n\t\texitCode: -1,\n\t\tmessages: [],\n\t\tstderr: \"\",\n\t\tusage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },\n\t\tstep,\n\t};\n\tconst effectiveModel = selectSubagentModel({\n\t\tspec,\n\t\tpreset,\n\t\tinheritedModel,\n\t\tagentName,\n\t\tresult: currentResult,\n\t\tresolveModelHintOption,\n\t});\n\tconst effectiveTools = spec.tools ?? preset?.tools;\n\tconst effectiveSkills = spec.skills ?? preset?.skills;\n\tconst effectiveCwd = spec.cwd ?? preset?.cwd ?? defaultCwd;\n\tconst effectiveSystemPrompt = spec.systemPrompt ?? preset?.systemPrompt ?? GENERIC_SYSTEM_PROMPT;\n\tcurrentResult.model = effectiveModel;\n\tif (currentResult.status === \"failed\") return currentResult;\n\tif (signal?.aborted) {\n\t\tcurrentResult.status = \"failed\";\n\t\tcurrentResult.exitCode = 1;\n\t\tcurrentResult.stderr = \"Subagent was aborted\";\n\t\tcurrentResult.stopReason = \"aborted\";\n\t\tcurrentResult.errorMessage = \"Subagent was aborted\";\n\t\treturn currentResult;\n\t}\n\tconst retainedMessageState: RetainedSubagentMessageState = {\n\t\tpresentation: getPresentationState(currentResult.messages),\n\t\tretainedChars: 0,\n\t\tretainedSizes: [],\n\t};\n\tconst emitUpdate = (): void => {\n\t\tonUpdate?.({\n\t\t\tcontent: [{ type: \"text\", text: getFinalOutput(currentResult.messages) || \"(running...)\" }],\n\t\t\tdetails: makeDetails([currentResult]),\n\t\t});\n\t};\n\tconst onMessage = (message: Message): void => {\n\t\tretainSubagentMessage(currentResult, retainedMessageState, message);\n\t\tif (message.role === \"assistant\") recordSubagentAssistantMessage(currentResult, message);\n\t\temitUpdate();\n\t};\n\n\temitUpdate();\n\tconst outcome = await invokeSubagentRunner(runner, {\n\t\tcwd: effectiveCwd,\n\t\ttoolOperations: spec.toolOperations,\n\t\tprompt: formatSubagentTaskPrompt(spec.task, spec.responseFormat),\n\t\ttask: spec.task,\n\t\tagent: agentName,\n\t\tagentSource: preset?.source ?? \"ad-hoc\",\n\t\tsystemPrompt: effectiveSystemPrompt,\n\t\tmodel: effectiveModel,\n\t\ttools: effectiveTools,\n\t\tskills: effectiveSkills,\n\t\tcontinueSession: spec.continueSession,\n\t\tsignal,\n\t\tonMessage,\n\t});\n\treturn finalizeSubagentRun(currentResult, outcome, signal?.aborted === true);\n}\n\nconst MODEL_DESCRIPTION = \"Model for this task. Omit to inherit the parent model\";\nconst STEP_MODEL_DESCRIPTION = \"Model for this step. Omit to inherit the parent model\";\nconst MODEL_HINT_VALUES = [\n\t\"cheapest\",\n\t\"fastest\",\n\t\"strongest\",\n\t\"best-reasoning\",\n\t\"large-context\",\n\t\"same-as-parent\",\n\t\"balanced\",\n] as const;\nconst MODEL_HINT_DESCRIPTION =\n\t\"Advisory model selection hint. Exact model overrides this. Supported: cheapest, fastest, strongest, best-reasoning, large-context, same-as-parent, balanced.\";\n\nfunction appendModelCatalog(description: string, modelCatalog?: string): string {\n\treturn modelCatalog ? `${description}.\\n\\n${modelCatalog}` : description;\n}\n\nfunction createModelHintSchema() {\n\treturn StringEnum(MODEL_HINT_VALUES, { description: MODEL_HINT_DESCRIPTION });\n}\n\nfunction mergeSessionAgents(agents: AgentConfig[], configs: SessionSubagentConfig[]): AgentConfig[] {\n\tconst agentMap = new Map<string, AgentConfig>();\n\tfor (const agent of agents) agentMap.set(agent.name, agent);\n\tfor (const config of configs) {\n\t\tagentMap.set(config.name, {\n\t\t\tname: config.name,\n\t\t\tdescription: config.description,\n\t\t\tsystemPrompt: config.systemPrompt,\n\t\t\ttools: config.tools,\n\t\t\tmodel: config.model,\n\t\t\tmodelHint: config.modelHint,\n\t\t\tskills: config.skills,\n\t\t\tcwd: config.cwd,\n\t\t\tsource: \"session\",\n\t\t\tfilePath: `<session-subagent:${config.name}>`,\n\t\t});\n\t}\n\treturn Array.from(agentMap.values());\n}\n\nfunction resolveModelHint(\n\thint: SubagentModelHint | undefined,\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined,\n\tcontext: string,\n\tresult: SubagentResult,\n): string | undefined {\n\tif (!hint) return undefined;\n\tconst resolved = resolveModelHintOption?.(hint);\n\tif (!resolved) {\n\t\tresult.status = \"failed\";\n\t\tresult.exitCode = 1;\n\t\tresult.stderr = `Could not resolve modelHint \"${hint}\" for ${context}.`;\n\t\tresult.errorMessage = result.stderr;\n\t\tresult.stopReason = \"error\";\n\t\treturn undefined;\n\t}\n\treturn resolved;\n}\n\nfunction createSubagentParamsSchema(modelCatalog?: string) {\n\tconst TaskItem = Type.Object({\n\t\tagent: Type.Optional(Type.String({ description: \"Optional named agent preset\" })),\n\t\ttask: Type.String({ description: \"Task to delegate\" }),\n\t\tresponseFormat: Type.Optional(Type.String({ description: \"Requested response content and structure\" })),\n\t\tsystemPrompt: Type.Optional(\n\t\t\tType.String({ description: \"Persona/instructions overriding the preset system prompt\" }),\n\t\t),\n\t\tmodel: Type.Optional(Type.String({ description: appendModelCatalog(MODEL_DESCRIPTION, modelCatalog) })),\n\t\tmodelHint: Type.Optional(createModelHintSchema()),\n\t\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Tool allowlist overriding preset defaults\" })),\n\t\tskills: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Skills to preload before the first subagent turn\" }),\n\t\t),\n\t\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent session\" })),\n\t});\n\n\tconst ChainItem = Type.Object({\n\t\tagent: Type.Optional(Type.String({ description: \"Optional named agent preset\" })),\n\t\ttask: Type.String({ description: \"Task with optional {previous} placeholder for prior output\" }),\n\t\tresponseFormat: Type.Optional(Type.String({ description: \"Requested response content and structure\" })),\n\t\tsystemPrompt: Type.Optional(\n\t\t\tType.String({ description: \"Persona/instructions overriding the preset system prompt\" }),\n\t\t),\n\t\tmodel: Type.Optional(Type.String({ description: appendModelCatalog(STEP_MODEL_DESCRIPTION, modelCatalog) })),\n\t\tmodelHint: Type.Optional(createModelHintSchema()),\n\t\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Tool allowlist overriding preset defaults\" })),\n\t\tskills: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Skills to preload before the first subagent turn\" }),\n\t\t),\n\t\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent session\" })),\n\t});\n\n\tconst AgentScopeSchema = StringEnum([\"user\", \"project\", \"both\"] as const, {\n\t\tdescription: 'Which agent directories to use. Default: \"user\". Use \"both\" to include project-local agents.',\n\t\tdefault: \"user\",\n\t});\n\n\treturn Type.Object({\n\t\tagent: Type.Optional(Type.String({ description: \"Optional named agent preset (single mode)\" })),\n\t\ttask: Type.Optional(\n\t\t\tType.String({ description: \"Task to delegate (single mode) or follow-up prompt when continuing a subagent\" }),\n\t\t),\n\t\tresponseFormat: Type.Optional(Type.String({ description: \"Requested response content and structure\" })),\n\t\tsystemPrompt: Type.Optional(\n\t\t\tType.String({ description: \"Persona/instructions overriding the preset system prompt\" }),\n\t\t),\n\t\tmodel: Type.Optional(Type.String({ description: appendModelCatalog(MODEL_DESCRIPTION, modelCatalog) })),\n\t\tmodelHint: Type.Optional(createModelHintSchema()),\n\t\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Tool allowlist overriding preset defaults\" })),\n\t\tskills: Type.Optional(\n\t\t\tType.Array(Type.String(), { description: \"Skills to preload before the first subagent turn\" }),\n\t\t),\n\t\ttasks: Type.Optional(Type.Array(TaskItem, { description: \"Tasks for parallel execution\" })),\n\t\tchain: Type.Optional(\n\t\t\tType.Array(ChainItem, { description: \"Tasks for sequential execution\", maxItems: MAX_CHAIN_STEPS }),\n\t\t),\n\t\tagentScope: Type.Optional(AgentScopeSchema),\n\t\tcontinueSession: Type.Optional(Type.String({ description: \"Run id of a previous subagent run to continue\" })),\n\t\tcwd: Type.Optional(Type.String({ description: \"Working directory for the subagent session (single mode)\" })),\n\t});\n}\n\nexport const subagentParamsSchema = createSubagentParamsSchema();\n\nexport type SubagentToolInput = Static<typeof subagentParamsSchema>;\n\nexport interface SubagentToolOptions {\n\trunner?: SubagentRunner;\n\tmodelCatalog?: string;\n\tresolveModelHint?: (hint: SubagentModelHint) => string | undefined;\n\t/** Host-controlled trust grant for project-local agent presets. */\n\ttrustProjectAgents?: boolean;\n\trunRegistry?: SubagentRunRegistry;\n\tconfigRegistry?: SubagentConfigRegistry;\n}\nconst subagentRunsParamsSchema = Type.Object({\n\tstatus: Type.Optional(\n\t\tStringEnum([\"running\", \"completed\", \"failed\"] as const, { description: \"Filter runs by status\" }),\n\t),\n});\n\nexport type SubagentRunsToolInput = Static<typeof subagentRunsParamsSchema>;\n\nfunction truncateRunPreview(text: string | undefined): string {\n\tif (!text) return \"\";\n\tconst trimmed = text.trim();\n\treturn trimmed.length > 240 ? `${trimmed.slice(0, 240)}...` : trimmed;\n}\n\nexport interface SubagentRunsDetails {\n\truns: SubagentRunInfo[];\n}\n\nexport function createSubagentRunsToolDefinition(\n\tregistry?: SubagentRunRegistry,\n): ToolDefinition<typeof subagentRunsParamsSchema, SubagentRunsDetails> {\n\treturn {\n\t\tname: \"subagent_runs\",\n\t\tlabel: \"Subagent Runs\",\n\t\tdescription: \"List subagent runs in the current session so one can be selected and continued by run id.\",\n\t\tpromptSnippet: \"List subagent runs from the current session for continuation\",\n\t\tparameters: subagentRunsParamsSchema,\n\t\tasync execute(_toolCallId, params) {\n\t\t\tif (!registry) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagent run registry is not configured for this session.\" }],\n\t\t\t\t\tdetails: { runs: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst runs = registry.list().filter((run) => !params.status || run.status === params.status);\n\t\t\tif (runs.length === 0) {\n\t\t\t\treturn { content: [{ type: \"text\", text: \"No subagent runs found.\" }], details: { runs } };\n\t\t\t}\n\t\t\tconst text = runs\n\t\t\t\t.map((run, index) => {\n\t\t\t\t\tconst lines = [\n\t\t\t\t\t\t`${index + 1}. ${run.runId} [${run.status}] ${run.agent}${run.model ? ` (${run.model})` : \"\"}`,\n\t\t\t\t\t\t` Task: ${run.task.replace(/\\s+/g, \" \")}`,\n\t\t\t\t\t\t` CWD: ${run.cwd}`,\n\t\t\t\t\t];\n\t\t\t\t\tif (run.sessionReference) lines.push(` Session: ${run.sessionReference}`);\n\t\t\t\t\tconst preview = truncateRunPreview(run.lastOutput);\n\t\t\t\t\tif (preview) lines.push(` Output: ${preview}`);\n\t\t\t\t\treturn lines.join(\"\\n\");\n\t\t\t\t})\n\t\t\t\t.join(\"\\n\\n\");\n\t\t\treturn { content: [{ type: \"text\", text }], details: { runs } };\n\t\t},\n\t\trenderCall(_args, theme) {\n\t\t\treturn new Text(theme.fg(\"toolTitle\", theme.bold(\"subagent_runs\")), 0, 0);\n\t\t},\n\t\trenderResult(result, _options, theme) {\n\t\t\tconst text = result.content\n\t\t\t\t.filter((part): part is TextContent => part.type === \"text\")\n\t\t\t\t.map((part) => part.text)\n\t\t\t\t.join(\"\\n\")\n\t\t\t\t.trim();\n\t\t\treturn new Text(theme.fg(\"toolOutput\", text), 0, 0);\n\t\t},\n\t};\n}\nconst createSubagentConfigParamsSchema = Type.Object({\n\tname: Type.String({ description: \"Session-scoped subagent preset name\" }),\n\tdescription: Type.String({ description: \"Short description shown when this preset is available\" }),\n\tsystemPrompt: Type.String({ description: \"System prompt/persona for this subagent preset\" }),\n\tmodel: Type.Optional(Type.String({ description: \"Exact model for this preset. Overrides modelHint.\" })),\n\tmodelHint: Type.Optional(createModelHintSchema()),\n\ttools: Type.Optional(Type.Array(Type.String(), { description: \"Default tool allowlist for this preset\" })),\n\tskills: Type.Optional(\n\t\tType.Array(Type.String(), { description: \"Skill names to preload before the first subagent turn\" }),\n\t),\n\tcwd: Type.Optional(Type.String({ description: \"Default working directory for this preset\" })),\n});\n\nexport type CreateSubagentToolInput = Static<typeof createSubagentConfigParamsSchema>;\n\nexport interface CreateSubagentDetails {\n\tconfig?: SessionSubagentConfig;\n\tconfigs: SessionSubagentConfig[];\n}\n\nexport function createCreateSubagentToolDefinition(\n\tregistry?: SubagentConfigRegistry,\n): ToolDefinition<typeof createSubagentConfigParamsSchema, CreateSubagentDetails> {\n\treturn {\n\t\tname: \"create_subagent\",\n\t\tlabel: \"Create Subagent\",\n\t\tdescription: \"Create or replace a session-scoped named subagent preset for later subagent calls.\",\n\t\tpromptSnippet: \"Create session-scoped subagent presets with tools, skills, cwd, and model hints\",\n\t\tpromptGuidelines: [\n\t\t\t\"Use create_subagent when a reusable temporary role would reduce repeated subagent configuration.\",\n\t\t\t\"Prefer modelHint for cost/performance intent unless an exact model is required.\",\n\t\t],\n\t\tparameters: createSubagentConfigParamsSchema,\n\t\tasync execute(_toolCallId, params) {\n\t\t\tif (!registry) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagent config registry is not configured for this session.\" }],\n\t\t\t\t\tdetails: { configs: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst trimmedName = params.name.trim();\n\t\t\tif (!/^[A-Za-z0-9_-]{1,64}$/.test(trimmedName)) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{ type: \"text\", text: \"Invalid subagent name. Use 1-64 letters, numbers, underscores, or hyphens.\" },\n\t\t\t\t\t],\n\t\t\t\t\tdetails: { configs: registry.list() },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst now = new Date().toISOString();\n\t\t\tconst existing = registry.get(trimmedName);\n\t\t\tconst config: SessionSubagentConfig = {\n\t\t\t\tname: trimmedName,\n\t\t\t\tdescription: params.description.trim(),\n\t\t\t\tsystemPrompt: params.systemPrompt,\n\t\t\t\tmodel: params.model?.trim() || undefined,\n\t\t\t\tmodelHint: params.modelHint,\n\t\t\t\ttools: params.tools?.map((tool) => tool.trim()).filter(Boolean),\n\t\t\t\tskills: params.skills?.map((skill) => skill.trim()).filter(Boolean),\n\t\t\t\tcwd: params.cwd?.trim() || undefined,\n\t\t\t\tcreatedAt: existing?.createdAt ?? now,\n\t\t\t\tupdatedAt: now,\n\t\t\t};\n\t\t\tregistry.upsert(config);\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: `Created subagent preset \"${config.name}\".` }],\n\t\t\t\tdetails: { config, configs: registry.list() },\n\t\t\t};\n\t\t},\n\t\trenderCall(args, theme) {\n\t\t\treturn new Text(theme.fg(\"toolTitle\", theme.bold(\"create_subagent \")) + theme.fg(\"accent\", args.name), 0, 0);\n\t\t},\n\t\trenderResult(result, _options, theme) {\n\t\t\tconst text = result.content\n\t\t\t\t.filter((part): part is TextContent => part.type === \"text\")\n\t\t\t\t.map((part) => part.text)\n\t\t\t\t.join(\"\\n\");\n\t\t\treturn new Text(theme.fg(\"toolOutput\", text), 0, 0);\n\t\t},\n\t};\n}\n\ninterface SubagentModeSelection {\n\tmode: SubagentMode;\n\thasChain: boolean;\n\thasTasks: boolean;\n\thasSingle: boolean;\n\tmodeCount: number;\n}\n\ntype SubagentDetailsBuilder = (results: SubagentResult[]) => SubagentDetails;\ntype SubagentDetailsFactory = (mode: SubagentMode) => SubagentDetailsBuilder;\n\ninterface SubagentExecutionEnvironment {\n\tagents: AgentConfig[];\n\tworkspaceCwd: string;\n\tworkspaceOperations: ToolOperations;\n\tinheritedModel: string | undefined;\n\trunner: SubagentRunner;\n\tsignal: AbortSignal | undefined;\n\tonUpdate: OnUpdateCallback | undefined;\n\tmakeDetails: SubagentDetailsFactory;\n\tresolveModelHintOption: ((hint: SubagentModelHint) => string | undefined) | undefined;\n}\n\ninterface SubagentToolExecutionResult extends AgentToolResult<SubagentDetails> {\n\tisError?: boolean;\n}\n\nfunction inheritedSubagentModelName(model: Model<Api> | undefined): string | undefined {\n\treturn model ? `${model.provider}/${model.id}` : undefined;\n}\n\nfunction selectSubagentMode(params: SubagentToolInput): SubagentModeSelection {\n\tconst hasChain = (params.chain?.length ?? 0) > 0;\n\tconst hasTasks = (params.tasks?.length ?? 0) > 0;\n\tconst hasSingle = Boolean(params.task);\n\treturn {\n\t\tmode: hasChain ? \"chain\" : hasTasks ? \"parallel\" : \"single\",\n\t\thasChain,\n\t\thasTasks,\n\t\thasSingle,\n\t\tmodeCount: Number(hasChain) + Number(hasTasks) + Number(hasSingle),\n\t};\n}\n\nfunction createSubagentDetailsFactory(agentScope: AgentScope, projectAgentsDir: string | null): SubagentDetailsFactory {\n\treturn (mode) => (results) => ({ mode, agentScope, projectAgentsDir, results });\n}\n\nfunction hasContinuedSessionOverrides(params: SubagentToolInput): boolean {\n\treturn (\n\t\tparams.agent !== undefined ||\n\t\tparams.systemPrompt !== undefined ||\n\t\tparams.model !== undefined ||\n\t\tparams.modelHint !== undefined ||\n\t\tparams.tools !== undefined ||\n\t\tparams.skills !== undefined ||\n\t\tparams.cwd !== undefined ||\n\t\tparams.agentScope !== undefined\n\t);\n}\n\nfunction validateSubagentRequest(\n\tparams: SubagentToolInput,\n\tselection: SubagentModeSelection,\n\tagents: AgentConfig[],\n\tmakeDetails: SubagentDetailsFactory,\n): SubagentToolExecutionResult | undefined {\n\tif (selection.modeCount !== 1) {\n\t\tconst available = agents.map((agent) => `${agent.name} (${agent.source})`).join(\", \") || \"none\";\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{ type: \"text\", text: `Invalid parameters. Provide exactly one mode.\\nAvailable agents: ${available}` },\n\t\t\t],\n\t\t\tdetails: makeDetails(\"single\")([]),\n\t\t};\n\t}\n\tif (params.continueSession && !selection.hasSingle) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: \"Invalid parameters. continueSession requires a single follow-up task.\" }],\n\t\t\tdetails: makeDetails(selection.mode)([]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\tif (params.continueSession && hasContinuedSessionOverrides(params)) {\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: \"Invalid parameters. A continued subagent may only specify task and responseFormat.\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: makeDetails(\"single\")([]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction collectRequestedAgentNames(params: SubagentToolInput): Set<string> {\n\tconst names = new Set<string>();\n\tfor (const step of params.chain ?? []) if (step.agent) names.add(step.agent);\n\tfor (const task of params.tasks ?? []) if (task.agent) names.add(task.agent);\n\tif (params.agent) names.add(params.agent);\n\treturn names;\n}\n\nasync function authorizeProjectAgents(\n\tparams: SubagentToolInput,\n\tagentScope: AgentScope,\n\tagents: AgentConfig[],\n\tprojectAgentsDir: string | null,\n\ttrustProjectAgents: boolean | undefined,\n\tctx: ExtensionContext,\n\tmakeDetails: SubagentDetailsFactory,\n\tmode: SubagentMode,\n): Promise<SubagentToolExecutionResult | undefined> {\n\tif (agentScope === \"user\") return undefined;\n\tconst agentsByName = new Map<string, AgentConfig>();\n\tfor (const agent of agents) {\n\t\tif (!agentsByName.has(agent.name)) agentsByName.set(agent.name, agent);\n\t}\n\tconst projectAgents: AgentConfig[] = [];\n\tfor (const name of collectRequestedAgentNames(params)) {\n\t\tconst agent = agentsByName.get(name);\n\t\tif (agent?.source === \"project\") projectAgents.push(agent);\n\t}\n\tif (projectAgents.length === 0 || trustProjectAgents) return undefined;\n\tconst names = projectAgents.map((agent) => agent.name).join(\", \");\n\tconst dir = projectAgentsDir ?? \"(unknown)\";\n\tif (!ctx.hasUI) {\n\t\treturn {\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: `Project-local agents require host approval, but no interactive UI is available. Agents: ${names}. Source: ${dir}.`,\n\t\t\t\t},\n\t\t\t],\n\t\t\tdetails: makeDetails(mode)([]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\tconst approved = await ctx.ui.confirm(\n\t\t\"Run project-local agents?\",\n\t\t`Agents: ${names}\\nSource: ${dir}\\n\\nProject agents are repo-controlled. Only continue for trusted repositories.`,\n\t);\n\tif (approved) return undefined;\n\treturn {\n\t\tcontent: [{ type: \"text\", text: \"Canceled: project-local agents not approved.\" }],\n\t\tdetails: makeDetails(mode)([]),\n\t\tisError: true,\n\t};\n}\n\nfunction createChainUpdate(\n\tonUpdate: OnUpdateCallback | undefined,\n\tresults: SubagentResult[],\n\tmakeDetails: SubagentDetailsFactory,\n): OnUpdateCallback | undefined {\n\tif (!onUpdate) return undefined;\n\treturn (partial) => {\n\t\tconst currentResult = partial.details?.results[0];\n\t\tif (!currentResult) return;\n\t\tonUpdate({\n\t\t\tcontent: partial.content,\n\t\t\tdetails: makeDetails(\"chain\")([...results, currentResult]),\n\t\t});\n\t};\n}\n\nasync function executeSubagentChain(\n\tparams: SubagentToolInput,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tconst chain = params.chain ?? [];\n\tif (chain.length > MAX_CHAIN_STEPS) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Too many chain steps (${chain.length}). Max is ${MAX_CHAIN_STEPS}.` }],\n\t\t\tdetails: environment.makeDetails(\"chain\")([]),\n\t\t};\n\t}\n\tconst results: SubagentResult[] = [];\n\tlet previousOutput = \"\";\n\tfor (let index = 0; index < chain.length; index++) {\n\t\tconst step = chain[index];\n\t\tconst result = await runSingleAgent(\n\t\t\tenvironment.workspaceCwd,\n\t\t\tenvironment.agents,\n\t\t\t{\n\t\t\t\t...step,\n\t\t\t\ttask: step.task.replace(/\\{previous\\}/g, previousOutput),\n\t\t\t\ttoolOperations: environment.workspaceOperations,\n\t\t\t},\n\t\t\tenvironment.inheritedModel,\n\t\t\tenvironment.runner,\n\t\t\tindex + 1,\n\t\t\tenvironment.signal,\n\t\t\tcreateChainUpdate(environment.onUpdate, results, environment.makeDetails),\n\t\t\tenvironment.makeDetails(\"chain\"),\n\t\t\tenvironment.resolveModelHintOption,\n\t\t);\n\t\tresults.push(result);\n\t\tif (isFailedResult(result)) {\n\t\t\treturn {\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: `Chain stopped at step ${index + 1} (${result.agent}): ${getResultOutput(result)}`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: environment.makeDetails(\"chain\")(results),\n\t\t\t\tisError: true,\n\t\t\t};\n\t\t}\n\t\tpreviousOutput = getFinalOutput(result.messages);\n\t}\n\treturn {\n\t\tcontent: [{ type: \"text\", text: getFinalOutput(results[results.length - 1].messages) || \"(no output)\" }],\n\t\tdetails: environment.makeDetails(\"chain\")(results),\n\t};\n}\n\nfunction createQueuedSubagentResult(\n\ttask: SubagentTaskSpec,\n\tagents: AgentConfig[],\n\tinheritedModel: string | undefined,\n): SubagentResult {\n\treturn {\n\t\tstatus: \"queued\",\n\t\tagent: task.agent ?? \"ad-hoc\",\n\t\tagentSource: task.agent ? \"unknown\" : \"ad-hoc\",\n\t\ttask: truncateRetainedTask(task.task),\n\t\tresponseFormat: task.responseFormat,\n\t\texitCode: -1,\n\t\tmessages: [],\n\t\tstderr: \"\",\n\t\tusage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, contextTokens: 0, turns: 0 },\n\t\tmodel:\n\t\t\ttask.model ??\n\t\t\t(task.modelHint ? `hint:${task.modelHint}` : undefined) ??\n\t\t\tagents.find((agent) => agent.name === task.agent)?.model ??\n\t\t\tinheritedModel,\n\t};\n}\n\nfunction emitParallelSubagentUpdate(\n\tonUpdate: OnUpdateCallback | undefined,\n\tresults: SubagentResult[],\n\tmakeDetails: SubagentDetailsFactory,\n): void {\n\tif (!onUpdate) return;\n\tconst running = results.filter((result) => result.status === \"running\" || result.status === \"queued\").length;\n\tconst done = results.length - running;\n\tonUpdate({\n\t\tcontent: [{ type: \"text\", text: `Parallel: ${done}/${results.length} done, ${running} running...` }],\n\t\tdetails: makeDetails(\"parallel\")([...results]),\n\t});\n}\n\nfunction formatParallelSubagentSummary(result: SubagentResult): string {\n\tconst output = truncateParallelOutput(getResultOutput(result));\n\tconst status = isFailedResult(result)\n\t\t? `failed${result.stopReason && result.stopReason !== \"end\" ? ` (${result.stopReason})` : \"\"}`\n\t\t: \"completed\";\n\treturn `### [${result.agent}] ${status}\\n\\n${output}`;\n}\n\nasync function executeParallelSubagents(\n\tparams: SubagentToolInput,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tconst tasks = params.tasks ?? [];\n\tif (tasks.length > MAX_PARALLEL_TASKS) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Too many parallel tasks (${tasks.length}). Max is ${MAX_PARALLEL_TASKS}.` }],\n\t\t\tdetails: environment.makeDetails(\"parallel\")([]),\n\t\t};\n\t}\n\tconst currentResults = tasks.map((task) =>\n\t\tcreateQueuedSubagentResult(task, environment.agents, environment.inheritedModel),\n\t);\n\tconst results = await mapWithConcurrencyLimit(tasks, MAX_CONCURRENCY, async (task, index) => {\n\t\tconst result = await runSingleAgent(\n\t\t\tenvironment.workspaceCwd,\n\t\t\tenvironment.agents,\n\t\t\t{ ...task, toolOperations: environment.workspaceOperations },\n\t\t\tenvironment.inheritedModel,\n\t\t\tenvironment.runner,\n\t\t\tundefined,\n\t\t\tenvironment.signal,\n\t\t\t(partial) => {\n\t\t\t\tconst currentResult = partial.details?.results[0];\n\t\t\t\tif (!currentResult) return;\n\t\t\t\tcurrentResults[index] = currentResult;\n\t\t\t\temitParallelSubagentUpdate(environment.onUpdate, currentResults, environment.makeDetails);\n\t\t\t},\n\t\t\tenvironment.makeDetails(\"parallel\"),\n\t\t\tenvironment.resolveModelHintOption,\n\t\t);\n\t\tcurrentResults[index] = result;\n\t\temitParallelSubagentUpdate(environment.onUpdate, currentResults, environment.makeDetails);\n\t\treturn result;\n\t});\n\tconst successCount = results.filter((result) => !isFailedResult(result)).length;\n\tconst summaries = results.map(formatParallelSubagentSummary);\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: `Parallel: ${successCount}/${results.length} succeeded\\n\\n${summaries.join(\"\\n\\n---\\n\\n\")}`,\n\t\t\t},\n\t\t],\n\t\tdetails: environment.makeDetails(\"parallel\")(results),\n\t};\n}\n\nasync function executeSingleSubagent(\n\tparams: SubagentToolInput,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tconst result = await runSingleAgent(\n\t\tenvironment.workspaceCwd,\n\t\tenvironment.agents,\n\t\t{\n\t\t\tagent: params.agent,\n\t\t\ttask: params.task ?? \"\",\n\t\t\tresponseFormat: params.responseFormat,\n\t\t\tsystemPrompt: params.systemPrompt,\n\t\t\tmodel: params.model,\n\t\t\tmodelHint: params.modelHint,\n\t\t\ttools: params.tools,\n\t\t\tskills: params.skills,\n\t\t\tcwd: params.cwd,\n\t\t\ttoolOperations: environment.workspaceOperations,\n\t\t\tcontinueSession: params.continueSession,\n\t\t},\n\t\tenvironment.inheritedModel,\n\t\tenvironment.runner,\n\t\tundefined,\n\t\tenvironment.signal,\n\t\tenvironment.onUpdate,\n\t\tenvironment.makeDetails(\"single\"),\n\t\tenvironment.resolveModelHintOption,\n\t);\n\tif (isFailedResult(result)) {\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `Agent ${result.stopReason || \"failed\"}: ${getResultOutput(result)}` }],\n\t\t\tdetails: environment.makeDetails(\"single\")([result]),\n\t\t\tisError: true,\n\t\t};\n\t}\n\treturn {\n\t\tcontent: [{ type: \"text\", text: getFinalOutput(result.messages) || \"(no output)\" }],\n\t\tdetails: environment.makeDetails(\"single\")([result]),\n\t};\n}\n\nfunction executeSelectedSubagentMode(\n\tparams: SubagentToolInput,\n\tselection: SubagentModeSelection,\n\tenvironment: SubagentExecutionEnvironment,\n): Promise<SubagentToolExecutionResult> {\n\tif (selection.hasChain) return executeSubagentChain(params, environment);\n\tif (selection.hasTasks) return executeParallelSubagents(params, environment);\n\treturn executeSingleSubagent(params, environment);\n}\n\nfunction truncateSubagentCallTask(task: string, maxCharacters: number): string {\n\treturn task.length > maxCharacters ? `${task.slice(0, maxCharacters)}...` : task;\n}\n\nfunction renderSubagentChainCall(args: SubagentToolInput, scope: AgentScope, theme: Theme): Text {\n\tconst chain = args.chain ?? [];\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"subagent \")) +\n\t\ttheme.fg(\"accent\", `chain (${chain.length} steps)`) +\n\t\ttheme.fg(\"muted\", ` [${scope}]`);\n\tfor (let index = 0; index < Math.min(chain.length, 3); index++) {\n\t\tconst step = chain[index];\n\t\tconst cleanTask = step.task.replace(/\\{previous\\}/g, \"\").trim();\n\t\tconst preview = truncateSubagentCallTask(cleanTask, 40);\n\t\ttext +=\n\t\t\t\"\\n \" +\n\t\t\ttheme.fg(\"muted\", `${index + 1}.`) +\n\t\t\t\" \" +\n\t\t\ttheme.fg(\"accent\", step.agent ?? \"ad-hoc\") +\n\t\t\ttheme.fg(\"muted\", ` [${step.model ?? \"parent model\"}]`) +\n\t\t\ttheme.fg(\"dim\", ` ${preview}`);\n\t}\n\tif (chain.length > 3) text += `\\n ${theme.fg(\"muted\", `... +${chain.length - 3} more`)}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderParallelSubagentCall(args: SubagentToolInput, scope: AgentScope, theme: Theme): Text {\n\tconst tasks = args.tasks ?? [];\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"subagent \")) +\n\t\ttheme.fg(\"accent\", `parallel (${tasks.length} tasks)`) +\n\t\ttheme.fg(\"muted\", ` [${scope}]`);\n\tfor (const task of tasks.slice(0, 3)) {\n\t\tconst preview = truncateSubagentCallTask(task.task, 40);\n\t\ttext += `\\n ${theme.fg(\"accent\", task.agent ?? \"ad-hoc\")}${theme.fg(\"muted\", ` [${task.model ?? \"parent model\"}]`)}${theme.fg(\"dim\", ` ${preview}`)}`;\n\t}\n\tif (tasks.length > 3) text += `\\n ${theme.fg(\"muted\", `... +${tasks.length - 3} more`)}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderSingleSubagentCall(args: SubagentToolInput, scope: AgentScope, theme: Theme): Text {\n\tconst agentName = args.agent || \"ad-hoc\";\n\tconst preview = args.task ? truncateSubagentCallTask(args.task, 60) : \"...\";\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"subagent \")) +\n\t\ttheme.fg(\"accent\", agentName) +\n\t\ttheme.fg(\"muted\", ` [${scope}] [${args.model ?? \"parent model\"}]`);\n\ttext += `\\n ${theme.fg(\"dim\", preview)}`;\n\treturn new Text(text, 0, 0);\n}\n\ninterface SubagentStatusCounts {\n\tcompleted: number;\n\tfailed: number;\n\tactive: number;\n}\n\nfunction renderSubagentStatusIcon(status: SubagentStatus, theme: Theme): string {\n\tif (status === \"queued\") return theme.fg(\"muted\", \"[queued]\");\n\tif (status === \"running\") return theme.fg(\"warning\", \"[running]\");\n\tif (status === \"failed\") return theme.fg(\"error\", \"[failed]\");\n\treturn theme.fg(\"success\", \"[done]\");\n}\n\nfunction renderSubagentModel(model: string | undefined, theme: Theme): string {\n\treturn theme.fg(\"muted\", ` [${model ?? \"model pending\"}]`);\n}\n\nfunction renderSubagentDisplayItems(items: DisplayItem[], expanded: boolean, theme: Theme, limit?: number): string {\n\tconst toShow = limit ? items.slice(-limit) : items;\n\tconst skipped = limit && items.length > limit ? items.length - limit : 0;\n\tlet text = skipped > 0 ? theme.fg(\"muted\", `... ${skipped} earlier items\\n`) : \"\";\n\tfor (const item of toShow) {\n\t\tif (item.type === \"text\") {\n\t\t\tconst preview = expanded ? item.text : item.text.split(\"\\n\").slice(0, 3).join(\"\\n\");\n\t\t\ttext += `${theme.fg(\"toolOutput\", preview)}\\n`;\n\t\t\tcontinue;\n\t\t}\n\t\ttext += `${theme.fg(\"muted\", \"-> \") + formatToolCall(item.name, item.args, theme.fg.bind(theme))}\\n`;\n\t}\n\treturn text.trimEnd();\n}\n\nfunction aggregateSubagentUsage(results: SubagentResult[]): SubagentUsageDisplayMetrics {\n\tconst total = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 0 };\n\tfor (const result of results) {\n\t\ttotal.input += result.usage.input;\n\t\ttotal.output += result.usage.output;\n\t\ttotal.cacheRead += result.usage.cacheRead;\n\t\ttotal.cacheWrite += result.usage.cacheWrite;\n\t\ttotal.cost += result.usage.cost;\n\t\ttotal.turns += result.usage.turns;\n\t}\n\treturn total;\n}\n\nfunction countSubagentStatuses(results: SubagentResult[]): SubagentStatusCounts {\n\tconst counts: SubagentStatusCounts = { completed: 0, failed: 0, active: 0 };\n\tfor (const result of results) {\n\t\tif (result.status === \"completed\") counts.completed++;\n\t\telse if (result.status === \"failed\") counts.failed++;\n\t\telse counts.active++;\n\t}\n\treturn counts;\n}\n\nfunction appendSubagentToolCalls(container: Container, items: DisplayItem[], theme: Theme): void {\n\tfor (const item of items) {\n\t\tif (item.type !== \"toolCall\") continue;\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"-> \") + formatToolCall(item.name, item.args, theme.fg.bind(theme)), 0, 0),\n\t\t);\n\t}\n}\n\nfunction appendSubagentMarkdown(container: Container, output: string): void {\n\tif (!output) return;\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Markdown(output.trim(), 0, 0, getMarkdownTheme()));\n}\n\nfunction appendSubagentUsage(\n\tcontainer: Container,\n\tusage: SubagentUsageDisplayMetrics,\n\ttheme: Theme,\n\tmodel?: string,\n\tprefix = \"\",\n\twithSpacer = false,\n): void {\n\tconst text = formatUsageStats(usage, model);\n\tif (!text) return;\n\tif (withSpacer) container.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(theme.fg(\"dim\", `${prefix}${text}`), 0, 0));\n}\n\nfunction appendExpandedBatchResult(container: Container, result: SubagentResult, heading: string, theme: Theme): void {\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(heading, 0, 0));\n\tcontainer.addChild(new Text(theme.fg(\"muted\", \"Task: \") + theme.fg(\"dim\", result.task), 0, 0));\n\tif (result.responseFormat) {\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Response format: \") + theme.fg(\"dim\", result.responseFormat), 0, 0),\n\t\t);\n\t}\n\tappendSubagentToolCalls(container, getDisplayItems(result.messages), theme);\n\tappendSubagentMarkdown(container, getFinalOutput(result.messages));\n\tappendSubagentUsage(container, result.usage, theme, result.model);\n}\n\nfunction renderExpandedSingleSubagent(result: SubagentResult, theme: Theme): Container {\n\tconst container = new Container();\n\tconst failed = isFailedResult(result);\n\tlet header = `${renderSubagentStatusIcon(result.status, theme)} ${theme.fg(\"toolTitle\", theme.bold(result.agent))}${theme.fg(\"muted\", ` (${result.agentSource})`)}${renderSubagentModel(result.model, theme)}`;\n\tif (failed && result.stopReason) header += ` ${theme.fg(\"error\", `[${result.stopReason}]`)}`;\n\tcontainer.addChild(new Text(header, 0, 0));\n\tif (failed && result.errorMessage) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", `Error: ${result.errorMessage}`), 0, 0));\n\t}\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(theme.fg(\"muted\", \"─── Task ───\"), 0, 0));\n\tcontainer.addChild(new Text(theme.fg(\"dim\", result.task), 0, 0));\n\tif (result.responseFormat) {\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", \"Response format: \") + theme.fg(\"dim\", result.responseFormat), 0, 0),\n\t\t);\n\t}\n\tcontainer.addChild(new Spacer(1));\n\tcontainer.addChild(new Text(theme.fg(\"muted\", \"─── Output ───\"), 0, 0));\n\tconst displayItems = getDisplayItems(result.messages);\n\tconst finalOutput = getFinalOutput(result.messages);\n\tif (displayItems.length === 0 && !finalOutput) {\n\t\tcontainer.addChild(\n\t\t\tnew Text(theme.fg(\"muted\", result.status === \"running\" ? \"(running...)\" : \"(no output)\"), 0, 0),\n\t\t);\n\t} else {\n\t\tappendSubagentToolCalls(container, displayItems, theme);\n\t\tappendSubagentMarkdown(container, finalOutput);\n\t}\n\tappendSubagentUsage(container, result.usage, theme, result.model, \"\", true);\n\treturn container;\n}\n\nfunction renderCollapsedSingleSubagent(result: SubagentResult, theme: Theme): Text {\n\tconst failed = isFailedResult(result);\n\tconst displayItems = getDisplayItems(result.messages);\n\tlet text = `${renderSubagentStatusIcon(result.status, theme)} ${theme.fg(\"toolTitle\", theme.bold(result.agent))}${theme.fg(\"muted\", ` (${result.agentSource})`)}${renderSubagentModel(result.model, theme)}`;\n\tif (failed && result.stopReason) text += ` ${theme.fg(\"error\", `[${result.stopReason}]`)}`;\n\tif (failed && result.errorMessage) text += `\\n${theme.fg(\"error\", `Error: ${result.errorMessage}`)}`;\n\telse if (displayItems.length === 0) {\n\t\ttext += `\\n${theme.fg(\"muted\", result.status === \"running\" ? \"(running...)\" : \"(no output)\")}`;\n\t} else {\n\t\ttext += `\\n${renderSubagentDisplayItems(displayItems, false, theme, COLLAPSED_ITEM_COUNT)}`;\n\t\tif (displayItems.length > COLLAPSED_ITEM_COUNT) text += `\\n${theme.fg(\"muted\", \"(Ctrl+O to expand)\")}`;\n\t}\n\tconst usage = formatUsageStats(result.usage, result.model);\n\tif (usage) text += `\\n${theme.fg(\"dim\", usage)}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderSingleSubagentResult(result: SubagentResult, expanded: boolean, theme: Theme): Text | Container {\n\treturn expanded ? renderExpandedSingleSubagent(result, theme) : renderCollapsedSingleSubagent(result, theme);\n}\n\nfunction renderExpandedSubagentChain(\n\tresults: SubagentResult[],\n\tcounts: SubagentStatusCounts,\n\ticon: string,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tcontainer.addChild(\n\t\tnew Text(\n\t\t\ticon +\n\t\t\t\t\" \" +\n\t\t\t\ttheme.fg(\"toolTitle\", theme.bold(\"chain \")) +\n\t\t\t\ttheme.fg(\"accent\", `${counts.completed}/${results.length} steps`),\n\t\t\t0,\n\t\t\t0,\n\t\t),\n\t);\n\tfor (const result of results) {\n\t\tconst heading = `${theme.fg(\"muted\", `─── Step ${result.step}: `) + theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tappendExpandedBatchResult(container, result, heading, theme);\n\t}\n\tappendSubagentUsage(container, aggregateSubagentUsage(results), theme, undefined, \"Total: \", true);\n\treturn container;\n}\n\nfunction renderCollapsedSubagentChain(\n\tresults: SubagentResult[],\n\tcounts: SubagentStatusCounts,\n\ticon: string,\n\ttheme: Theme,\n): Text {\n\tlet text =\n\t\ticon +\n\t\t\" \" +\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"chain \")) +\n\t\ttheme.fg(\"accent\", `${counts.completed}/${results.length} steps`);\n\tfor (const result of results) {\n\t\tconst items = getDisplayItems(result.messages);\n\t\ttext += `\\n\\n${theme.fg(\"muted\", `─── Step ${result.step}: `)}${theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tif (items.length === 0) {\n\t\t\tconst empty =\n\t\t\t\tresult.status === \"running\" || result.status === \"queued\" ? `(${result.status}...)` : \"(no output)\";\n\t\t\ttext += `\\n${theme.fg(\"muted\", empty)}`;\n\t\t} else text += `\\n${renderSubagentDisplayItems(items, false, theme, 5)}`;\n\t}\n\tconst usage = formatUsageStats(aggregateSubagentUsage(results));\n\tif (usage) text += `\\n\\n${theme.fg(\"dim\", `Total: ${usage}`)}`;\n\ttext += `\\n${theme.fg(\"muted\", \"(Ctrl+O to expand)\")}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderSubagentChain(results: SubagentResult[], expanded: boolean, theme: Theme): Text | Container {\n\tconst counts = countSubagentStatuses(results);\n\tconst icon =\n\t\tcounts.active > 0\n\t\t\t? theme.fg(\"warning\", \"[running]\")\n\t\t\t: counts.failed > 0\n\t\t\t\t? theme.fg(\"error\", \"[failed]\")\n\t\t\t\t: theme.fg(\"success\", \"[done]\");\n\treturn expanded\n\t\t? renderExpandedSubagentChain(results, counts, icon, theme)\n\t\t: renderCollapsedSubagentChain(results, counts, icon, theme);\n}\n\nfunction parallelSubagentStatus(counts: SubagentStatusCounts, total: number): string {\n\treturn counts.active > 0\n\t\t? `${counts.completed + counts.failed}/${total} done, ${counts.active} running`\n\t\t: `${counts.completed}/${total} tasks`;\n}\n\nfunction renderExpandedParallelSubagents(\n\tresults: SubagentResult[],\n\ticon: string,\n\tstatus: string,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tcontainer.addChild(\n\t\tnew Text(`${icon} ${theme.fg(\"toolTitle\", theme.bold(\"parallel \"))}${theme.fg(\"accent\", status)}`, 0, 0),\n\t);\n\tfor (const result of results) {\n\t\tconst heading = `${theme.fg(\"muted\", \"─── \") + theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tappendExpandedBatchResult(container, result, heading, theme);\n\t}\n\tappendSubagentUsage(container, aggregateSubagentUsage(results), theme, undefined, \"Total: \", true);\n\treturn container;\n}\n\nfunction renderCollapsedParallelSubagents(\n\tresults: SubagentResult[],\n\texpanded: boolean,\n\tcounts: SubagentStatusCounts,\n\ticon: string,\n\tstatus: string,\n\ttheme: Theme,\n): Text {\n\tlet text = `${icon} ${theme.fg(\"toolTitle\", theme.bold(\"parallel \"))}${theme.fg(\"accent\", status)}`;\n\tfor (const result of results) {\n\t\tconst items = getDisplayItems(result.messages);\n\t\ttext += `\\n\\n${theme.fg(\"muted\", \"─── \")}${theme.fg(\"accent\", result.agent)}${renderSubagentModel(result.model, theme)} ${renderSubagentStatusIcon(result.status, theme)}`;\n\t\tif (items.length === 0) {\n\t\t\tconst empty =\n\t\t\t\tresult.status === \"running\" || result.status === \"queued\" ? `(${result.status}...)` : \"(no output)\";\n\t\t\ttext += `\\n${theme.fg(\"muted\", empty)}`;\n\t\t} else text += `\\n${renderSubagentDisplayItems(items, expanded, theme, 5)}`;\n\t}\n\tif (counts.active === 0) {\n\t\tconst usage = formatUsageStats(aggregateSubagentUsage(results));\n\t\tif (usage) text += `\\n\\n${theme.fg(\"dim\", `Total: ${usage}`)}`;\n\t}\n\tif (!expanded) text += `\\n${theme.fg(\"muted\", \"(Ctrl+O to expand)\")}`;\n\treturn new Text(text, 0, 0);\n}\n\nfunction renderParallelSubagents(results: SubagentResult[], expanded: boolean, theme: Theme): Text | Container {\n\tconst counts = countSubagentStatuses(results);\n\tconst icon =\n\t\tcounts.active > 0\n\t\t\t? theme.fg(\"warning\", \"[running]\")\n\t\t\t: counts.failed > 0\n\t\t\t\t? theme.fg(\"warning\", \"[partial]\")\n\t\t\t\t: theme.fg(\"success\", \"[done]\");\n\tconst status = parallelSubagentStatus(counts, results.length);\n\treturn expanded && counts.active === 0\n\t\t? renderExpandedParallelSubagents(results, icon, status, theme)\n\t\t: renderCollapsedParallelSubagents(results, expanded, counts, icon, status, theme);\n}\n\nfunction renderSubagentFallback(result: AgentToolResult<SubagentDetails>): Text {\n\tconst content = result.content[0];\n\treturn new Text(content?.type === \"text\" ? content.text : \"(no output)\", 0, 0);\n}\n\nfunction renderSubagentResult(\n\tresult: AgentToolResult<SubagentDetails>,\n\texpanded: boolean,\n\ttheme: Theme,\n): Text | Container {\n\tconst details = result.details;\n\tif (!details || details.results.length === 0) return renderSubagentFallback(result);\n\tif (details.mode === \"single\" && details.results.length === 1) {\n\t\treturn renderSingleSubagentResult(details.results[0], expanded, theme);\n\t}\n\tif (details.mode === \"chain\") return renderSubagentChain(details.results, expanded, theme);\n\tif (details.mode === \"parallel\") return renderParallelSubagents(details.results, expanded, theme);\n\treturn renderSubagentFallback(result);\n}\n\nexport function createSubagentToolDefinition(\n\toptions: SubagentToolOptions = {},\n): ToolDefinition<typeof subagentParamsSchema, SubagentDetails> {\n\tconst runner = options.runner;\n\tconst parameters = options.modelCatalog ? createSubagentParamsSchema(options.modelCatalog) : subagentParamsSchema;\n\treturn {\n\t\tname: \"subagent\",\n\t\tlabel: \"Subagent\",\n\t\tdescription: [\n\t\t\t\"Delegate tasks to isolated subagent sessions with optional named presets.\",\n\t\t\t\"Modes: single (task), parallel (tasks array), chain (sequential with {previous} placeholder).\",\n\t\t\t\"Each task can specify responseFormat, systemPrompt, model, tools, cwd, and an optional agent preset.\",\n\t\t\t\"Omitted models inherit the parent model. Bundled presets: explore, worker, reviewer.\",\n\t\t\t'Default agent scope is \"user\"; project-local presets require host approval or trustProjectAgents in the host configuration.',\n\t\t].join(\" \"),\n\t\tpromptSnippet: \"Delegate tasks to specialized agents in isolated sessions\",\n\t\tpromptGuidelines: [\n\t\t\t\"Use subagent for focused parallel investigation or when a task benefits from an isolated context window.\",\n\t\t\t\"Do not delegate trivial work that is faster to perform directly.\",\n\t\t],\n\t\tparameters,\n\n\t\tasync execute(_toolCallId, params, signal, onUpdate, ctx) {\n\t\t\tconst selection = selectSubagentMode(params);\n\t\t\tconst agentScope: AgentScope = params.agentScope ?? \"user\";\n\t\t\tconst workspaceOperations = ctx.toolOperations;\n\t\t\tif (!workspaceOperations) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagents require explicit workspace tool operations.\" }],\n\t\t\t\t\tdetails: { mode: selection.mode, agentScope, projectAgentsDir: null, results: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst backendInfo = workspaceOperations.getBackendInfo?.();\n\t\t\tif (backendInfo?.type === \"remote\" && !backendInfo.configured) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagents cannot run with an unconfigured remote backend.\" }],\n\t\t\t\t\tdetails: { mode: selection.mode, agentScope, projectAgentsDir: null, results: [] },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst workspaceCwd = workspaceOperations.cwd ?? ctx.cwd;\n\t\t\tconst discovery = await discoverAgentsWithOperations(workspaceCwd, agentScope, workspaceOperations);\n\t\t\tconst agents = mergeSessionAgents(discovery.agents, options.configRegistry?.list() ?? []);\n\t\t\tconst makeDetails = createSubagentDetailsFactory(agentScope, discovery.projectAgentsDir);\n\t\t\tconst validationError = validateSubagentRequest(params, selection, agents, makeDetails);\n\t\t\tif (validationError) return validationError;\n\t\t\tif (!runner) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Subagent runner is not configured for this session.\" }],\n\t\t\t\t\tdetails: makeDetails(selection.mode)([]),\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst authorizationError = await authorizeProjectAgents(\n\t\t\t\tparams,\n\t\t\t\tagentScope,\n\t\t\t\tagents,\n\t\t\t\tdiscovery.projectAgentsDir,\n\t\t\t\toptions.trustProjectAgents,\n\t\t\t\tctx,\n\t\t\t\tmakeDetails,\n\t\t\t\tselection.mode,\n\t\t\t);\n\t\t\tif (authorizationError) return authorizationError;\n\t\t\treturn executeSelectedSubagentMode(params, selection, {\n\t\t\t\tagents,\n\t\t\t\tworkspaceCwd,\n\t\t\t\tworkspaceOperations,\n\t\t\t\tinheritedModel: inheritedSubagentModelName(ctx.model),\n\t\t\t\trunner,\n\t\t\t\tsignal,\n\t\t\t\tonUpdate,\n\t\t\t\tmakeDetails,\n\t\t\t\tresolveModelHintOption: options.resolveModelHint,\n\t\t\t});\n\t\t},\n\n\t\trenderCall(args, theme, _context) {\n\t\t\tconst scope: AgentScope = args.agentScope ?? \"user\";\n\t\t\tif (args.chain && args.chain.length > 0) return renderSubagentChainCall(args, scope, theme);\n\t\t\tif (args.tasks && args.tasks.length > 0) return renderParallelSubagentCall(args, scope, theme);\n\t\t\treturn renderSingleSubagentCall(args, scope, theme);\n\t\t},\n\n\t\trenderResult(result, { expanded }, theme, _context) {\n\t\t\treturn renderSubagentResult(result, expanded, theme);\n\t\t},\n\t};\n}\nexport function createSubagentRunsTool(\n\tregistry?: SubagentRunRegistry,\n): AgentTool<typeof subagentRunsParamsSchema, SubagentRunsDetails> {\n\treturn wrapToolDefinition(createSubagentRunsToolDefinition(registry));\n}\n\nexport function createCreateSubagentTool(\n\tregistry?: SubagentConfigRegistry,\n): AgentTool<typeof createSubagentConfigParamsSchema, CreateSubagentDetails> {\n\treturn wrapToolDefinition(createCreateSubagentToolDefinition(registry));\n}\n\nexport function createSubagentTool(\n\toptions?: SubagentToolOptions,\n): AgentTool<typeof subagentParamsSchema, SubagentDetails> {\n\treturn wrapToolDefinition(createSubagentToolDefinition(options));\n}\n"]}