agent-tower 0.5.4 → 0.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +1 -1
  2. package/dist/core/event-bus.d.ts +4 -1
  3. package/dist/core/event-bus.d.ts.map +1 -1
  4. package/dist/core/event-bus.js.map +1 -1
  5. package/dist/executors/__tests__/codex.executor.test.js +27 -21
  6. package/dist/executors/__tests__/codex.executor.test.js.map +1 -1
  7. package/dist/executors/__tests__/providers-availability.test.js +23 -0
  8. package/dist/executors/__tests__/providers-availability.test.js.map +1 -1
  9. package/dist/executors/__tests__/providers.test.js +34 -1
  10. package/dist/executors/__tests__/providers.test.js.map +1 -1
  11. package/dist/executors/codex.executor.d.ts.map +1 -1
  12. package/dist/executors/codex.executor.js +4 -0
  13. package/dist/executors/codex.executor.js.map +1 -1
  14. package/dist/executors/default-providers.json +106 -0
  15. package/dist/executors/index.d.ts +1 -1
  16. package/dist/executors/index.d.ts.map +1 -1
  17. package/dist/executors/index.js +32 -13
  18. package/dist/executors/index.js.map +1 -1
  19. package/dist/executors/providers.d.ts +12 -3
  20. package/dist/executors/providers.d.ts.map +1 -1
  21. package/dist/executors/providers.js +45 -18
  22. package/dist/executors/providers.js.map +1 -1
  23. package/dist/output/types.d.ts +32 -2
  24. package/dist/output/types.d.ts.map +1 -1
  25. package/dist/output/types.js +10 -0
  26. package/dist/output/types.js.map +1 -1
  27. package/dist/routes/__tests__/providers.test.js +181 -1
  28. package/dist/routes/__tests__/providers.test.js.map +1 -1
  29. package/dist/routes/__tests__/sessions-runtime.test.d.ts +2 -0
  30. package/dist/routes/__tests__/sessions-runtime.test.d.ts.map +1 -0
  31. package/dist/routes/__tests__/sessions-runtime.test.js +107 -0
  32. package/dist/routes/__tests__/sessions-runtime.test.js.map +1 -0
  33. package/dist/routes/providers.d.ts.map +1 -1
  34. package/dist/routes/providers.js +3 -1
  35. package/dist/routes/providers.js.map +1 -1
  36. package/dist/routes/sessions.d.ts.map +1 -1
  37. package/dist/routes/sessions.js +50 -3
  38. package/dist/routes/sessions.js.map +1 -1
  39. package/dist/routes/system.d.ts.map +1 -1
  40. package/dist/routes/system.js +8 -0
  41. package/dist/routes/system.js.map +1 -1
  42. package/dist/runtime/__tests__/acp-agent-definitions.test.d.ts +2 -0
  43. package/dist/runtime/__tests__/acp-agent-definitions.test.d.ts.map +1 -0
  44. package/dist/runtime/__tests__/acp-agent-definitions.test.js +360 -0
  45. package/dist/runtime/__tests__/acp-agent-definitions.test.js.map +1 -0
  46. package/dist/runtime/__tests__/acp-driver-cleanup.test.d.ts +2 -0
  47. package/dist/runtime/__tests__/acp-driver-cleanup.test.d.ts.map +1 -0
  48. package/dist/runtime/__tests__/acp-driver-cleanup.test.js +39 -0
  49. package/dist/runtime/__tests__/acp-driver-cleanup.test.js.map +1 -0
  50. package/dist/runtime/__tests__/acp-driver.test.d.ts +2 -0
  51. package/dist/runtime/__tests__/acp-driver.test.d.ts.map +1 -0
  52. package/dist/runtime/__tests__/acp-driver.test.js +122 -0
  53. package/dist/runtime/__tests__/acp-driver.test.js.map +1 -0
  54. package/dist/runtime/__tests__/acp-process-manager.test.d.ts +2 -0
  55. package/dist/runtime/__tests__/acp-process-manager.test.d.ts.map +1 -0
  56. package/dist/runtime/__tests__/acp-process-manager.test.js +51 -0
  57. package/dist/runtime/__tests__/acp-process-manager.test.js.map +1 -0
  58. package/dist/runtime/__tests__/acp-projector.test.d.ts +2 -0
  59. package/dist/runtime/__tests__/acp-projector.test.d.ts.map +1 -0
  60. package/dist/runtime/__tests__/acp-projector.test.js +195 -0
  61. package/dist/runtime/__tests__/acp-projector.test.js.map +1 -0
  62. package/dist/runtime/__tests__/runtime-coordinator.test.d.ts +2 -0
  63. package/dist/runtime/__tests__/runtime-coordinator.test.d.ts.map +1 -0
  64. package/dist/runtime/__tests__/runtime-coordinator.test.js +134 -0
  65. package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -0
  66. package/dist/runtime/acp/acp-driver.d.ts +7 -0
  67. package/dist/runtime/acp/acp-driver.d.ts.map +1 -0
  68. package/dist/runtime/acp/acp-driver.js +406 -0
  69. package/dist/runtime/acp/acp-driver.js.map +1 -0
  70. package/dist/runtime/acp/agents/claude-code.d.ts +3 -0
  71. package/dist/runtime/acp/agents/claude-code.d.ts.map +1 -0
  72. package/dist/runtime/acp/agents/claude-code.js +147 -0
  73. package/dist/runtime/acp/agents/claude-code.js.map +1 -0
  74. package/dist/runtime/acp/agents/codex.d.ts +3 -0
  75. package/dist/runtime/acp/agents/codex.d.ts.map +1 -0
  76. package/dist/runtime/acp/agents/codex.js +68 -0
  77. package/dist/runtime/acp/agents/codex.js.map +1 -0
  78. package/dist/runtime/acp/agents/cursor-agent.d.ts +2 -0
  79. package/dist/runtime/acp/agents/cursor-agent.d.ts.map +1 -0
  80. package/dist/runtime/acp/agents/cursor-agent.js +12 -0
  81. package/dist/runtime/acp/agents/cursor-agent.js.map +1 -0
  82. package/dist/runtime/acp/agents/executable-resolution.d.ts +6 -0
  83. package/dist/runtime/acp/agents/executable-resolution.d.ts.map +1 -0
  84. package/dist/runtime/acp/agents/executable-resolution.js +72 -0
  85. package/dist/runtime/acp/agents/executable-resolution.js.map +1 -0
  86. package/dist/runtime/acp/agents/gemini-cli.d.ts +2 -0
  87. package/dist/runtime/acp/agents/gemini-cli.d.ts.map +1 -0
  88. package/dist/runtime/acp/agents/gemini-cli.js +13 -0
  89. package/dist/runtime/acp/agents/gemini-cli.js.map +1 -0
  90. package/dist/runtime/acp/agents/grok-build.d.ts +2 -0
  91. package/dist/runtime/acp/agents/grok-build.d.ts.map +1 -0
  92. package/dist/runtime/acp/agents/grok-build.js +26 -0
  93. package/dist/runtime/acp/agents/grok-build.js.map +1 -0
  94. package/dist/runtime/acp/agents/kiro-cli.d.ts +2 -0
  95. package/dist/runtime/acp/agents/kiro-cli.d.ts.map +1 -0
  96. package/dist/runtime/acp/agents/kiro-cli.js +18 -0
  97. package/dist/runtime/acp/agents/kiro-cli.js.map +1 -0
  98. package/dist/runtime/acp/agents/managed-directory.d.ts +6 -0
  99. package/dist/runtime/acp/agents/managed-directory.d.ts.map +1 -0
  100. package/dist/runtime/acp/agents/managed-directory.js +31 -0
  101. package/dist/runtime/acp/agents/managed-directory.js.map +1 -0
  102. package/dist/runtime/acp/agents/minion-acp-sitecustomize.d.ts +2 -0
  103. package/dist/runtime/acp/agents/minion-acp-sitecustomize.d.ts.map +1 -0
  104. package/dist/runtime/acp/agents/minion-acp-sitecustomize.js +118 -0
  105. package/dist/runtime/acp/agents/minion-acp-sitecustomize.js.map +1 -0
  106. package/dist/runtime/acp/agents/minion-code.d.ts +2 -0
  107. package/dist/runtime/acp/agents/minion-code.d.ts.map +1 -0
  108. package/dist/runtime/acp/agents/minion-code.js +53 -0
  109. package/dist/runtime/acp/agents/minion-code.js.map +1 -0
  110. package/dist/runtime/acp/agents/native-agent.d.ts +23 -0
  111. package/dist/runtime/acp/agents/native-agent.d.ts.map +1 -0
  112. package/dist/runtime/acp/agents/native-agent.js +158 -0
  113. package/dist/runtime/acp/agents/native-agent.js.map +1 -0
  114. package/dist/runtime/acp/agents/opencode.d.ts +2 -0
  115. package/dist/runtime/acp/agents/opencode.d.ts.map +1 -0
  116. package/dist/runtime/acp/agents/opencode.js +35 -0
  117. package/dist/runtime/acp/agents/opencode.js.map +1 -0
  118. package/dist/runtime/acp/agents/pi-coding-agent.d.ts +3 -0
  119. package/dist/runtime/acp/agents/pi-coding-agent.d.ts.map +1 -0
  120. package/dist/runtime/acp/agents/pi-coding-agent.js +178 -0
  121. package/dist/runtime/acp/agents/pi-coding-agent.js.map +1 -0
  122. package/dist/runtime/acp/agents/qwen-code.d.ts +3 -0
  123. package/dist/runtime/acp/agents/qwen-code.d.ts.map +1 -0
  124. package/dist/runtime/acp/agents/qwen-code.js +67 -0
  125. package/dist/runtime/acp/agents/qwen-code.js.map +1 -0
  126. package/dist/runtime/acp/agents/registry.d.ts +5 -0
  127. package/dist/runtime/acp/agents/registry.d.ts.map +1 -0
  128. package/dist/runtime/acp/agents/registry.js +34 -0
  129. package/dist/runtime/acp/agents/registry.js.map +1 -0
  130. package/dist/runtime/acp/agents/types.d.ts +35 -0
  131. package/dist/runtime/acp/agents/types.d.ts.map +1 -0
  132. package/dist/runtime/acp/agents/types.js +2 -0
  133. package/dist/runtime/acp/agents/types.js.map +1 -0
  134. package/dist/runtime/acp/codex-provider-config.d.ts +9 -0
  135. package/dist/runtime/acp/codex-provider-config.d.ts.map +1 -0
  136. package/dist/runtime/acp/codex-provider-config.js +107 -0
  137. package/dist/runtime/acp/codex-provider-config.js.map +1 -0
  138. package/dist/runtime/acp/process-manager.d.ts +33 -0
  139. package/dist/runtime/acp/process-manager.d.ts.map +1 -0
  140. package/dist/runtime/acp/process-manager.js +204 -0
  141. package/dist/runtime/acp/process-manager.js.map +1 -0
  142. package/dist/runtime/acp/projector.d.ts +23 -0
  143. package/dist/runtime/acp/projector.d.ts.map +1 -0
  144. package/dist/runtime/acp/projector.js +354 -0
  145. package/dist/runtime/acp/projector.js.map +1 -0
  146. package/dist/runtime/cli-driver.d.ts +7 -0
  147. package/dist/runtime/cli-driver.d.ts.map +1 -0
  148. package/dist/runtime/cli-driver.js +282 -0
  149. package/dist/runtime/cli-driver.js.map +1 -0
  150. package/dist/runtime/cli-parser.d.ts +5 -0
  151. package/dist/runtime/cli-parser.d.ts.map +1 -0
  152. package/dist/runtime/cli-parser.js +15 -0
  153. package/dist/runtime/cli-parser.js.map +1 -0
  154. package/dist/runtime/contracts.d.ts +109 -0
  155. package/dist/runtime/contracts.d.ts.map +1 -0
  156. package/dist/runtime/contracts.js +2 -0
  157. package/dist/runtime/contracts.js.map +1 -0
  158. package/dist/runtime/errors.d.ts +9 -0
  159. package/dist/runtime/errors.d.ts.map +1 -0
  160. package/dist/runtime/errors.js +29 -0
  161. package/dist/runtime/errors.js.map +1 -0
  162. package/dist/runtime/index.d.ts +9 -0
  163. package/dist/runtime/index.d.ts.map +1 -0
  164. package/dist/runtime/index.js +9 -0
  165. package/dist/runtime/index.js.map +1 -0
  166. package/dist/runtime/runtime-coordinator.d.ts +32 -0
  167. package/dist/runtime/runtime-coordinator.d.ts.map +1 -0
  168. package/dist/runtime/runtime-coordinator.js +327 -0
  169. package/dist/runtime/runtime-coordinator.js.map +1 -0
  170. package/dist/runtime/runtime-registry.d.ts +8 -0
  171. package/dist/runtime/runtime-registry.d.ts.map +1 -0
  172. package/dist/runtime/runtime-registry.js +17 -0
  173. package/dist/runtime/runtime-registry.js.map +1 -0
  174. package/dist/runtime/runtime-state-view.d.ts +5 -0
  175. package/dist/runtime/runtime-state-view.d.ts.map +1 -0
  176. package/dist/runtime/runtime-state-view.js +15 -0
  177. package/dist/runtime/runtime-state-view.js.map +1 -0
  178. package/dist/services/__tests__/provider-config.service.test.js +31 -2
  179. package/dist/services/__tests__/provider-config.service.test.js.map +1 -1
  180. package/dist/services/__tests__/session-manager.lifecycle.test.js +105 -2
  181. package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
  182. package/dist/services/__tests__/session-manager.team-run.test.js +16 -14
  183. package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
  184. package/dist/services/conversation.service.d.ts.map +1 -1
  185. package/dist/services/conversation.service.js +3 -0
  186. package/dist/services/conversation.service.js.map +1 -1
  187. package/dist/services/provider-config.service.d.ts.map +1 -1
  188. package/dist/services/provider-config.service.js +34 -5
  189. package/dist/services/provider-config.service.js.map +1 -1
  190. package/dist/services/provider-effective-connection.service.d.ts +7 -1
  191. package/dist/services/provider-effective-connection.service.d.ts.map +1 -1
  192. package/dist/services/provider-effective-connection.service.js +56 -1
  193. package/dist/services/provider-effective-connection.service.js.map +1 -1
  194. package/dist/services/session-manager.d.ts +32 -24
  195. package/dist/services/session-manager.d.ts.map +1 -1
  196. package/dist/services/session-manager.js +265 -448
  197. package/dist/services/session-manager.js.map +1 -1
  198. package/dist/services/team-reconciler.service.d.ts +3 -0
  199. package/dist/services/team-reconciler.service.d.ts.map +1 -1
  200. package/dist/services/team-reconciler.service.js +14 -3
  201. package/dist/services/team-reconciler.service.js.map +1 -1
  202. package/dist/services/team-run.service.d.ts.map +1 -1
  203. package/dist/services/team-run.service.js +5 -1
  204. package/dist/services/team-run.service.js.map +1 -1
  205. package/dist/services/workspace.service.d.ts +2 -0
  206. package/dist/services/workspace.service.d.ts.map +1 -1
  207. package/dist/socket/__tests__/socket-gateway.test.js +42 -0
  208. package/dist/socket/__tests__/socket-gateway.test.js.map +1 -1
  209. package/dist/socket/events.d.ts +1 -1
  210. package/dist/socket/events.d.ts.map +1 -1
  211. package/dist/socket/events.js.map +1 -1
  212. package/dist/socket/index.js +1 -1
  213. package/dist/socket/index.js.map +1 -1
  214. package/dist/socket/socket-gateway.d.ts.map +1 -1
  215. package/dist/socket/socket-gateway.js +13 -1
  216. package/dist/socket/socket-gateway.js.map +1 -1
  217. package/dist/types/index.d.ts +7 -1
  218. package/dist/types/index.d.ts.map +1 -1
  219. package/dist/types/index.js +6 -0
  220. package/dist/types/index.js.map +1 -1
  221. package/dist/utils/process-launch.d.ts.map +1 -1
  222. package/dist/utils/process-launch.js +3 -1
  223. package/dist/utils/process-launch.js.map +1 -1
  224. package/dist/utils/process-launch.test.js +17 -2
  225. package/dist/utils/process-launch.test.js.map +1 -1
  226. package/dist/web/assets/{AgentDemoPage-C3SHOCDR.js → AgentDemoPage-BpUO2gR6.js} +1 -1
  227. package/dist/web/assets/{AgentEnvironmentSettingsPage-D-BWLcC0.js → AgentEnvironmentSettingsPage-CSBMaAvL.js} +1 -1
  228. package/dist/web/assets/AgentLogo-C190Z6bw.js +1 -0
  229. package/dist/web/assets/ConversationPage-Cer_WtdC.js +3 -0
  230. package/dist/web/assets/CreateTaskInput-ByeWDjc8.js +1 -0
  231. package/dist/web/assets/{DemoPage-Cd1ggnZY.js → DemoPage-Dpb9aAKX.js} +1 -1
  232. package/dist/web/assets/{GeneralSettingsPage-B9D9wA_9.js → GeneralSettingsPage-TqbAsCZM.js} +1 -1
  233. package/dist/web/assets/{Icons-CM6Yg2lw.js → Icons-CyNNz4Z5.js} +1 -1
  234. package/dist/web/assets/{LoadingPreviewPage-BJ_Se_T_.js → LoadingPreviewPage-DmH1TGln.js} +1 -1
  235. package/dist/web/assets/{McpSettingsPage-B5GtqNme.js → McpSettingsPage-z1_NcsMR.js} +1 -1
  236. package/dist/web/assets/{MemberAvatar-yC8O30hv.js → MemberAvatar-BPoYS6Il.js} +1 -1
  237. package/dist/web/assets/{NotificationSettingsPage-BaJpYHLD.js → NotificationSettingsPage-CNsRJ6nN.js} +1 -1
  238. package/dist/web/assets/{ProfileSettingsPage-DYXew66J.js → ProfileSettingsPage-g1RKcEbo.js} +1 -1
  239. package/dist/web/assets/{ProjectKanbanPage-DbgIwiUC.js → ProjectKanbanPage-j2v5fLfg.js} +37 -36
  240. package/dist/web/assets/{ProjectSettingsPage-B2K8Kw_S.js → ProjectSettingsPage-Cp89NvwE.js} +1 -1
  241. package/dist/web/assets/ProviderSettingsPage-B-bBs2qN.js +93 -0
  242. package/dist/web/assets/{SettingsMasterDetail-ByKe_zcK.js → SettingsMasterDetail-BYB-1oyf.js} +1 -1
  243. package/dist/web/assets/{TeamSettingsPage-4sHo9Wpb.js → TeamSettingsPage-Y2zCVbVD.js} +1 -1
  244. package/dist/web/assets/agent-tower-lockup-DPAcheCt.png +0 -0
  245. package/dist/web/assets/{arc-g6Y4qqcK.js → arc-BmDnqN7Q.js} +1 -1
  246. package/dist/web/assets/{architectureDiagram-3BPJPVTR-ILRcqNPe.js → architectureDiagram-3BPJPVTR-BIG4K9gT.js} +1 -1
  247. package/dist/web/assets/{arrow-left-D0MkHwKU.js → arrow-left-CB4qTjQs.js} +1 -1
  248. package/dist/web/assets/{blockDiagram-GPEHLZMM-ZTMQ6CTT.js → blockDiagram-GPEHLZMM-CowveYw0.js} +1 -1
  249. package/dist/web/assets/{c4Diagram-AAUBKEIU-CAW8PcM8.js → c4Diagram-AAUBKEIU-CLjbYgNG.js} +1 -1
  250. package/dist/web/assets/channel-BsOpjSZw.js +1 -0
  251. package/dist/web/assets/check-BVOtZt28.js +1 -0
  252. package/dist/web/assets/{chevron-down-CmGXPki1.js → chevron-down-BXYCSpWd.js} +1 -1
  253. package/dist/web/assets/{chevron-right-jrkLz9qG.js → chevron-right-CkcSaX8x.js} +1 -1
  254. package/dist/web/assets/{chevron-up-UwBybVMK.js → chevron-up-Y8L6pbzc.js} +1 -1
  255. package/dist/web/assets/{chunk-2J33WTMH-BvuLBX1d.js → chunk-2J33WTMH-DRf_miP4.js} +1 -1
  256. package/dist/web/assets/{chunk-4BX2VUAB-DJO5Yx2A.js → chunk-4BX2VUAB-C6Ne_vwR.js} +1 -1
  257. package/dist/web/assets/{chunk-55IACEB6-Dc117Qwf.js → chunk-55IACEB6-DejCglMr.js} +1 -1
  258. package/dist/web/assets/{chunk-727SXJPM-DsZmTw67.js → chunk-727SXJPM-B0MC9Ojc.js} +1 -1
  259. package/dist/web/assets/{chunk-AQP2D5EJ-DgmF7gD6.js → chunk-AQP2D5EJ-D9f4hbMX.js} +1 -1
  260. package/dist/web/assets/{chunk-FMBD7UC4-vgh3Erl0.js → chunk-FMBD7UC4-k90hkOQq.js} +1 -1
  261. package/dist/web/assets/{chunk-ND2GUHAM-Ogtl4wwd.js → chunk-ND2GUHAM-CX2-qxPx.js} +1 -1
  262. package/dist/web/assets/{chunk-QZHKN3VN-Cif7bPpF.js → chunk-QZHKN3VN-CpFs7UD0.js} +1 -1
  263. package/dist/web/assets/{circle-alert-B6ZM3dSn.js → circle-alert-ClX4sQ2K.js} +1 -1
  264. package/dist/web/assets/classDiagram-4FO5ZUOK-KkLqUSdB.js +1 -0
  265. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-KkLqUSdB.js +1 -0
  266. package/dist/web/assets/{code-block-OCS4YCEC-BQnKZly0.js → code-block-OCS4YCEC-_lkU1VUC.js} +1 -1
  267. package/dist/web/assets/{confirm-dialog-BZeaAl5j.js → confirm-dialog-BJwzwwOk.js} +1 -1
  268. package/dist/web/assets/{copy-DqNqPI8d.js → copy-jQAntc98.js} +1 -1
  269. package/dist/web/assets/{cose-bilkent-S5V4N54A-rxJB-TPw.js → cose-bilkent-S5V4N54A-CLWAfEVg.js} +1 -1
  270. package/dist/web/assets/cssMode-q0rL0Hjc.js +1 -0
  271. package/dist/web/assets/{dagre-BM42HDAG-BkB6VpXn.js → dagre-BM42HDAG-DKviWU-X.js} +1 -1
  272. package/dist/web/assets/{diagram-2AECGRRQ-BH2e-eqy.js → diagram-2AECGRRQ-L6emXRJ1.js} +1 -1
  273. package/dist/web/assets/{diagram-5GNKFQAL-B0I47Yhs.js → diagram-5GNKFQAL-CXGUerks.js} +1 -1
  274. package/dist/web/assets/{diagram-KO2AKTUF-BVXUYRvI.js → diagram-KO2AKTUF-C8FHXqeH.js} +1 -1
  275. package/dist/web/assets/{diagram-LMA3HP47-C1fEOLke.js → diagram-LMA3HP47-Cng_aa5j.js} +1 -1
  276. package/dist/web/assets/{diagram-OG6HWLK6-CVE8cOcO.js → diagram-OG6HWLK6-BEC6IDf4.js} +1 -1
  277. package/dist/web/assets/{erDiagram-TEJ5UH35-qCfnXmfp.js → erDiagram-TEJ5UH35-BWMCTdYK.js} +1 -1
  278. package/dist/web/assets/{flowDiagram-I6XJVG4X-KMhbF5QC.js → flowDiagram-I6XJVG4X-aAEYIyx2.js} +1 -1
  279. package/dist/web/assets/{folder-picker-C3BgqamQ.js → folder-picker-CioQjSzV.js} +1 -1
  280. package/dist/web/assets/{freemarker2-tYgVOcFl.js → freemarker2-DZgAIr6s.js} +2 -2
  281. package/dist/web/assets/{ganttDiagram-6RSMTGT7-CaX3qYV1.js → ganttDiagram-6RSMTGT7-DVqWnwcH.js} +1 -1
  282. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-CBAlZX7C.js → gitGraphDiagram-PVQCEYII-BVWrTXBv.js} +1 -1
  283. package/dist/web/assets/handlebars-9RRQrLUb.js +1 -0
  284. package/dist/web/assets/html-BVI4F9TT.js +1 -0
  285. package/dist/web/assets/htmlMode-t0djrjSv.js +1 -0
  286. package/dist/web/assets/index-CjAJoGg5.css +1 -0
  287. package/dist/web/assets/{index-BuQDZjol.js → index-Da9mzleR.js} +4 -4
  288. package/dist/web/assets/{index-DHKgc87I.js → index-RYlllU6n.js} +18 -18
  289. package/dist/web/assets/{infoDiagram-5YYISTIA-Bp_GeFtA.js → infoDiagram-5YYISTIA-DYG1ew4x.js} +1 -1
  290. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-BfBNEV_D.js → ishikawaDiagram-YF4QCWOH-COBW1j3-.js} +1 -1
  291. package/dist/web/assets/javascript-DaUCpDvL.js +1 -0
  292. package/dist/web/assets/{journeyDiagram-JHISSGLW-DJkUQG4Z.js → journeyDiagram-JHISSGLW-BI_FlncW.js} +1 -1
  293. package/dist/web/assets/{jsonMode-D4_2geMa.js → jsonMode-A5wuW-PC.js} +2 -2
  294. package/dist/web/assets/{kanban-definition-UN3LZRKU-Bk7sA26p.js → kanban-definition-UN3LZRKU-BKrHEd7r.js} +1 -1
  295. package/dist/web/assets/{layers-BFkjcml2.js → layers-BZMh9pqm.js} +1 -1
  296. package/dist/web/assets/{linear-CmC68WUf.js → linear-DyoMQJGq.js} +1 -1
  297. package/dist/web/assets/liquid-HXqG_RIQ.js +1 -0
  298. package/dist/web/assets/{lspLanguageFeatures-vY541IS0.js → lspLanguageFeatures-s3xWnrXc.js} +1 -1
  299. package/dist/web/assets/mdx-k_7JTYp2.js +1 -0
  300. package/dist/web/assets/{mermaid-NOHMQCX5-C6wHDXti.js → mermaid-NOHMQCX5-orMHhlAj.js} +59 -61
  301. package/dist/web/assets/{message-square-Wwixl9YA.js → message-square-CStQg7sr.js} +1 -1
  302. package/dist/web/assets/{mindmap-definition-RKZ34NQL-Ck1je2Hf.js → mindmap-definition-RKZ34NQL-CKOIIjUJ.js} +1 -1
  303. package/dist/web/assets/{modal-kFSArLJi.js → modal-ZYdX5Krr.js} +1 -1
  304. package/dist/web/assets/{monaco-D3FVQqPj.js → monaco-DX9iObLO.js} +3 -3
  305. package/dist/web/assets/{pencil-5Kegi5_H.js → pencil-DoB4p30x.js} +1 -1
  306. package/dist/web/assets/{pieDiagram-4H26LBE5-6Ao8YaoY.js → pieDiagram-4H26LBE5-BW18kL8l.js} +1 -1
  307. package/dist/web/assets/python-abx8p9WS.js +1 -0
  308. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-md1eBgjS.js → quadrantDiagram-W4KKPZXB-Df_F1INR.js} +1 -1
  309. package/dist/web/assets/razor-DGdDlX86.js +1 -0
  310. package/dist/web/assets/{requirementDiagram-4Y6WPE33-DJOb4wf-.js → requirementDiagram-4Y6WPE33-De6R8t8O.js} +1 -1
  311. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-B7srXhHb.js → sankeyDiagram-5OEKKPKP-ChlLeN5m.js} +1 -1
  312. package/dist/web/assets/{select-C2v0aFwN.js → select-B9kjO67b.js} +1 -1
  313. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-L0qwgf37.js → sequenceDiagram-3UESZ5HK-CPVnbcvz.js} +1 -1
  314. package/dist/web/assets/{stateDiagram-AJRCARHV-DGbH9dJ5.js → stateDiagram-AJRCARHV-BFS1G-aJ.js} +1 -1
  315. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-DSxC8AfE.js +1 -0
  316. package/dist/web/assets/{switch-DjnF5A3R.js → switch-C2r5pofB.js} +1 -1
  317. package/dist/web/assets/{textarea-CbZnd5PO.js → textarea-BB3UoYxg.js} +1 -1
  318. package/dist/web/assets/{timeline-definition-PNZ67QCA-Dku_Yjmk.js → timeline-definition-PNZ67QCA-C1Rgs32y.js} +1 -1
  319. package/dist/web/assets/{trash-2-DA--Uikt.js → trash-2-BNiAEW-6.js} +1 -1
  320. package/dist/web/assets/{tsMode-CRNPFR24.js → tsMode-DHruHjGh.js} +2 -2
  321. package/dist/web/assets/typescript-SLYiKRhJ.js +1 -0
  322. package/dist/web/assets/{upload-hWnFHuhE.js → upload-BLLmywZY.js} +1 -1
  323. package/dist/web/assets/{use-profiles-roHXR8He.js → use-profiles-OJaV4lOv.js} +1 -1
  324. package/dist/web/assets/{use-projects-DiJMGduU.js → use-projects-D_Sq7ahS.js} +1 -1
  325. package/dist/web/assets/{use-providers-efX4HCcr.js → use-providers-SSHcslI-.js} +1 -1
  326. package/dist/web/assets/{useNormalizedLogs-xEobyuGF.js → useNormalizedLogs-DeA-fso_.js} +1 -1
  327. package/dist/web/assets/{vennDiagram-CIIHVFJN-_ufI1hxk.js → vennDiagram-CIIHVFJN-DLGPZTKg.js} +1 -1
  328. package/dist/web/assets/{wardley-L42UT6IY-Dve662aX.js → wardley-L42UT6IY-BVMPWfq9.js} +1 -1
  329. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-Dn2x3M_Q.js → wardleyDiagram-YWT4CUSO-_KXuEg6G.js} +1 -1
  330. package/dist/web/assets/xml-BmreQojr.js +1 -0
  331. package/dist/web/assets/{xychartDiagram-2RQKCTM6-BMe6JPre.js → xychartDiagram-2RQKCTM6-a-Do3v5G.js} +1 -1
  332. package/dist/web/assets/yaml-CJoLHuqv.js +1 -0
  333. package/dist/web/index.html +2 -2
  334. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.d.ts +9 -0
  335. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.d.ts.map +1 -0
  336. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.js +21 -0
  337. package/node_modules/@agent-tower/shared/dist/agent-runtime-support.js.map +1 -0
  338. package/node_modules/@agent-tower/shared/dist/index.d.ts +1 -0
  339. package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -1
  340. package/node_modules/@agent-tower/shared/dist/index.js +1 -0
  341. package/node_modules/@agent-tower/shared/dist/index.js.map +1 -1
  342. package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts +38 -3
  343. package/node_modules/@agent-tower/shared/dist/log-adapter.d.ts.map +1 -1
  344. package/node_modules/@agent-tower/shared/dist/log-adapter.js +21 -2
  345. package/node_modules/@agent-tower/shared/dist/log-adapter.js.map +1 -1
  346. package/node_modules/@agent-tower/shared/dist/provider-capabilities.d.ts.map +1 -1
  347. package/node_modules/@agent-tower/shared/dist/provider-capabilities.js +58 -0
  348. package/node_modules/@agent-tower/shared/dist/provider-capabilities.js.map +1 -1
  349. package/node_modules/@agent-tower/shared/dist/socket/events.d.ts +17 -0
  350. package/node_modules/@agent-tower/shared/dist/socket/events.d.ts.map +1 -1
  351. package/node_modules/@agent-tower/shared/dist/socket/events.js +3 -0
  352. package/node_modules/@agent-tower/shared/dist/socket/events.js.map +1 -1
  353. package/node_modules/@agent-tower/shared/dist/types.d.ts +63 -2
  354. package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
  355. package/node_modules/@agent-tower/shared/dist/types.js +12 -0
  356. package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
  357. package/package.json +9 -3
  358. package/prisma/migrations/20260723000000_add_agent_runtime/migration.sql +2 -0
  359. package/prisma/schema.prisma +2 -0
  360. package/scripts/patch-claude-agent-acp.mjs +77 -0
  361. package/scripts/postinstall.js +5 -0
  362. package/dist/web/assets/AgentLogo-DOc8QQHe.js +0 -1
  363. package/dist/web/assets/ConversationPage-sknzMK-I.js +0 -3
  364. package/dist/web/assets/CreateTaskInput-Cn0k5D8K.js +0 -1
  365. package/dist/web/assets/ProviderSettingsPage-n2AFrtkZ.js +0 -93
  366. package/dist/web/assets/channel-DpisCjBV.js +0 -1
  367. package/dist/web/assets/check-VMcYyBr4.js +0 -1
  368. package/dist/web/assets/classDiagram-4FO5ZUOK-ByrAXg7x.js +0 -1
  369. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-ByrAXg7x.js +0 -1
  370. package/dist/web/assets/cssMode-BvIKUSIl.js +0 -1
  371. package/dist/web/assets/handlebars-O23dzm6n.js +0 -1
  372. package/dist/web/assets/html-QaPgl834.js +0 -1
  373. package/dist/web/assets/htmlMode-CWyii3pY.js +0 -1
  374. package/dist/web/assets/index-BeEbDvc9.css +0 -1
  375. package/dist/web/assets/javascript-C_IpQDkn.js +0 -1
  376. package/dist/web/assets/liquid-C6FS7ekL.js +0 -1
  377. package/dist/web/assets/mdx-LQJToB8m.js +0 -1
  378. package/dist/web/assets/python-HMxhKAEt.js +0 -1
  379. package/dist/web/assets/razor-CfDc2DcT.js +0 -1
  380. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-Bq1LxgY_.js +0 -1
  381. package/dist/web/assets/typescript-CNopspEc.js +0 -1
  382. package/dist/web/assets/xml-dqhfYLW3.js +0 -1
  383. package/dist/web/assets/yaml-BOxNX83z.js +0 -1
@@ -0,0 +1,354 @@
1
+ import { addNormalizedEntry, createAssistantMessage, createErrorMessage, createThinking, createTokenUsageInfo, createToolUse, createWarningMessage, replaceNormalizedEntry, updateEntryContent, } from '../../output/index.js';
2
+ import { randomUUID } from 'node:crypto';
3
+ const MAX_TEXT_LENGTH = 64 * 1024;
4
+ export class AcpProjector {
5
+ msgStore;
6
+ sink;
7
+ messages = new Map();
8
+ tools = new Map();
9
+ planIndex;
10
+ usageIndex;
11
+ activeSyntheticMessage;
12
+ constructor(msgStore, sink) {
13
+ this.msgStore = msgStore;
14
+ this.sink = sink;
15
+ }
16
+ project(notification) {
17
+ const update = notification.update;
18
+ switch (update.sessionUpdate) {
19
+ case 'agent_message_chunk':
20
+ this.projectContent(update, 'assistant');
21
+ break;
22
+ case 'agent_thought_chunk':
23
+ this.projectContent(update, 'thought');
24
+ break;
25
+ case 'tool_call':
26
+ case 'tool_call_update':
27
+ this.activeSyntheticMessage = undefined;
28
+ this.projectTool(update);
29
+ break;
30
+ case 'plan':
31
+ case 'plan_update':
32
+ case 'plan_removed':
33
+ this.activeSyntheticMessage = undefined;
34
+ this.projectPlan(update);
35
+ break;
36
+ case 'usage_update':
37
+ this.projectUsage(update);
38
+ break;
39
+ default:
40
+ this.sink.stream({ type: 'progress' });
41
+ }
42
+ }
43
+ projectError(error) {
44
+ const message = sanitizeText(error instanceof Error ? error.message : String(error));
45
+ const entry = createErrorMessage(message || 'ACP turn failed', message);
46
+ const index = this.msgStore.entryIndex.next();
47
+ this.pushPatch(addNormalizedEntry(index, entry));
48
+ }
49
+ projectContent(update, role) {
50
+ const content = asRecord(update.content);
51
+ if (content?.type !== 'text' || typeof content.text !== 'string')
52
+ return;
53
+ const rawId = this.resolveMessageId(update, role);
54
+ const key = `${role}:${rawId}`;
55
+ const text = sanitizeText(content.text);
56
+ const existing = this.messages.get(key);
57
+ if (existing) {
58
+ existing.content = sanitizeText(`${existing.content}${text}`);
59
+ this.pushPatch(updateEntryContent(existing.index, existing.content));
60
+ return;
61
+ }
62
+ const entry = role === 'assistant'
63
+ ? createAssistantMessage(text, opaqueId('message', rawId))
64
+ : createThinking(text, opaqueId('thought', rawId));
65
+ const index = this.msgStore.entryIndex.next();
66
+ this.messages.set(key, { index, content: text });
67
+ this.pushPatch(addNormalizedEntry(index, entry));
68
+ }
69
+ resolveMessageId(update, role) {
70
+ if (typeof update.messageId === 'string') {
71
+ this.activeSyntheticMessage = undefined;
72
+ return update.messageId;
73
+ }
74
+ const meta = asRecord(update._meta);
75
+ if (meta?.qwenDiscreteMessage === true) {
76
+ this.activeSyntheticMessage = undefined;
77
+ return `${role}:${randomUUID()}`;
78
+ }
79
+ if (this.activeSyntheticMessage?.role === role)
80
+ return this.activeSyntheticMessage.id;
81
+ const id = `${role}:${randomUUID()}`;
82
+ this.activeSyntheticMessage = { role, id };
83
+ return id;
84
+ }
85
+ projectTool(update) {
86
+ const toolId = typeof update.toolCallId === 'string' ? update.toolCallId : 'unknown';
87
+ const existing = this.tools.get(toolId);
88
+ const tool = existing ?? {
89
+ timestamp: Date.now(),
90
+ toolId,
91
+ };
92
+ mergeToolUpdate(tool, update);
93
+ if (isMcpStartupDiagnostic(tool)) {
94
+ this.tools.set(toolId, tool);
95
+ if (tool.status !== 'failed')
96
+ return;
97
+ const message = summarizeMcpStartupDiagnostic(tool);
98
+ const base = createWarningMessage(message, message, opaqueId('diagnostic', toolId));
99
+ this.upsertToolEntry(tool, { ...base, timestamp: tool.timestamp });
100
+ return;
101
+ }
102
+ const title = tool.title || tool.kind || 'Tool call';
103
+ const kind = tool.kind || 'other';
104
+ const content = summarizeTool(tool, title);
105
+ const base = createToolUse(title, content, toolAction(kind), toolId, opaqueId('tool', toolId));
106
+ const entry = {
107
+ ...base,
108
+ timestamp: tool.timestamp,
109
+ metadata: {
110
+ ...base.metadata,
111
+ toolKind: kind,
112
+ status: mapToolStatus(tool.status),
113
+ ...(tool.content ? { toolContent: tool.content } : {}),
114
+ ...(tool.locations ? { toolLocations: tool.locations } : {}),
115
+ ...(tool.inputSummary !== undefined ? { toolInputSummary: tool.inputSummary } : {}),
116
+ ...(tool.outputSummary !== undefined ? { toolOutputSummary: tool.outputSummary } : {}),
117
+ },
118
+ };
119
+ this.tools.set(toolId, tool);
120
+ this.upsertToolEntry(tool, entry);
121
+ }
122
+ upsertToolEntry(tool, entry) {
123
+ if (tool.index !== undefined) {
124
+ this.pushPatch(replaceNormalizedEntry(tool.index, entry));
125
+ return;
126
+ }
127
+ tool.index = this.msgStore.entryIndex.next();
128
+ this.pushPatch(addNormalizedEntry(tool.index, entry));
129
+ }
130
+ projectPlan(update) {
131
+ const entries = Array.isArray(update.entries) ? update.entries : [];
132
+ const todos = entries.slice(0, 100).flatMap((value) => {
133
+ const item = asRecord(value);
134
+ if (!item || typeof item.content !== 'string')
135
+ return [];
136
+ const todo = {
137
+ content: sanitizeText(item.content),
138
+ status: typeof item.status === 'string' ? item.status : 'pending',
139
+ };
140
+ if (typeof item.priority === 'string')
141
+ todo.priority = item.priority;
142
+ return [todo];
143
+ });
144
+ const content = todos.map((todo) => todo.content).join('\n') || 'Plan updated';
145
+ const base = createToolUse('plan', content, 'todo_management', 'acp-plan', 'acp-plan', {
146
+ todos,
147
+ todoOperation: 'update',
148
+ });
149
+ const entry = {
150
+ ...base,
151
+ metadata: { ...base.metadata, status: 'success' },
152
+ };
153
+ if (this.planIndex !== undefined) {
154
+ this.pushPatch(replaceNormalizedEntry(this.planIndex, entry));
155
+ return;
156
+ }
157
+ this.planIndex = this.msgStore.entryIndex.next();
158
+ this.pushPatch(addNormalizedEntry(this.planIndex, entry));
159
+ }
160
+ projectUsage(update) {
161
+ const used = safeInteger(update.used);
162
+ const size = safeInteger(update.size);
163
+ if (used === undefined)
164
+ return;
165
+ const entry = createTokenUsageInfo(used, size, 'acp-usage');
166
+ if (this.usageIndex !== undefined) {
167
+ this.pushPatch(replaceNormalizedEntry(this.usageIndex, entry));
168
+ return;
169
+ }
170
+ this.usageIndex = this.msgStore.entryIndex.next();
171
+ this.pushPatch(addNormalizedEntry(this.usageIndex, entry));
172
+ }
173
+ pushPatch(patch) {
174
+ const seq = this.msgStore.pushPatch(patch);
175
+ this.sink.stream({ type: 'conversation_patch', patch, seq });
176
+ }
177
+ }
178
+ function mergeToolUpdate(tool, update) {
179
+ if (hasOwn(update, 'title')) {
180
+ tool.title = typeof update.title === 'string' ? sanitizeText(update.title, 4_096) : undefined;
181
+ }
182
+ if (hasOwn(update, 'kind')) {
183
+ tool.kind = typeof update.kind === 'string' ? sanitizeText(update.kind, 128) : undefined;
184
+ }
185
+ if (hasOwn(update, 'status')) {
186
+ tool.status = typeof update.status === 'string' ? update.status : undefined;
187
+ }
188
+ if (hasOwn(update, 'content')) {
189
+ tool.content = Array.isArray(update.content)
190
+ ? update.content.slice(0, 32).map(mapToolContent)
191
+ : undefined;
192
+ }
193
+ if (hasOwn(update, 'locations')) {
194
+ tool.locations = Array.isArray(update.locations)
195
+ ? update.locations.slice(0, 32).flatMap(mapToolLocation)
196
+ : undefined;
197
+ }
198
+ if (hasOwn(update, 'rawInput') && update.rawInput !== undefined) {
199
+ tool.inputSummary = update.rawInput === null ? undefined : safeSummary(update.rawInput);
200
+ }
201
+ if (hasOwn(update, 'rawOutput') && update.rawOutput !== undefined) {
202
+ tool.outputSummary = update.rawOutput === null ? undefined : safeSummary(update.rawOutput);
203
+ }
204
+ }
205
+ function summarizeTool(tool, fallback) {
206
+ const parts = [];
207
+ if (tool.inputSummary)
208
+ parts.push(`Input\n${tool.inputSummary}`);
209
+ if (tool.outputSummary)
210
+ parts.push(`Output\n${tool.outputSummary}`);
211
+ const content = tool.content?.map(summarizeToolContent).filter(Boolean).join('\n');
212
+ if (content)
213
+ parts.push(`Content\n${content}`);
214
+ const locations = tool.locations?.map((location) => (location.line === undefined ? location.path : `${location.path}:${location.line}`)).join('\n');
215
+ if (locations)
216
+ parts.push(`Locations\n${locations}`);
217
+ return sanitizeText(parts.join('\n\n') || fallback);
218
+ }
219
+ function isMcpStartupDiagnostic(tool) {
220
+ return tool.toolId.startsWith('mcp_startup.');
221
+ }
222
+ function summarizeMcpStartupDiagnostic(tool) {
223
+ const detail = tool.content?.find((content) => content.type === 'text');
224
+ const message = detail?.type === 'text'
225
+ ? detail.text
226
+ : tool.outputSummary || tool.title || 'MCP server failed to start';
227
+ return sanitizeText(message.replace(/^\[codex-acp forwarded startup error\]\s*/i, ''));
228
+ }
229
+ function safeSummary(value) {
230
+ try {
231
+ return sanitizeText(typeof value === 'string' ? value : JSON.stringify(value), 32 * 1024);
232
+ }
233
+ catch {
234
+ return '[Unsupported tool data]';
235
+ }
236
+ }
237
+ function mapToolContent(value) {
238
+ const item = asRecord(value);
239
+ if (!item || typeof item.type !== 'string') {
240
+ return { type: 'unsupported', contentType: 'unknown' };
241
+ }
242
+ if (item.type === 'content') {
243
+ const content = asRecord(item.content);
244
+ if (content?.type === 'text' && typeof content.text === 'string') {
245
+ return { type: 'text', text: sanitizeText(content.text, 16 * 1024) };
246
+ }
247
+ if (content?.type === 'resource_link' && typeof content.uri === 'string') {
248
+ return {
249
+ type: 'resource_link',
250
+ uri: sanitizeText(content.uri, 4_096),
251
+ ...(typeof content.name === 'string' ? { name: sanitizeText(content.name, 1_024) } : {}),
252
+ };
253
+ }
254
+ if (content?.type === 'resource') {
255
+ const resource = asRecord(content.resource);
256
+ if (resource && typeof resource.text === 'string') {
257
+ return { type: 'text', text: sanitizeText(resource.text, 16 * 1024) };
258
+ }
259
+ }
260
+ return {
261
+ type: 'unsupported',
262
+ contentType: typeof content?.type === 'string' ? sanitizeText(content.type, 128) : 'content',
263
+ };
264
+ }
265
+ if (item.type === 'diff' && typeof item.path === 'string' && typeof item.newText === 'string') {
266
+ return {
267
+ type: 'diff',
268
+ path: sanitizeText(item.path, 4_096),
269
+ ...(typeof item.oldText === 'string' ? { oldText: sanitizeText(item.oldText, 16 * 1024) } : {}),
270
+ newText: sanitizeText(item.newText, 16 * 1024),
271
+ };
272
+ }
273
+ if (item.type === 'terminal' && typeof item.terminalId === 'string') {
274
+ return { type: 'terminal', terminalId: sanitizeText(item.terminalId, 1_024) };
275
+ }
276
+ return { type: 'unsupported', contentType: sanitizeText(item.type, 128) };
277
+ }
278
+ function summarizeToolContent(content) {
279
+ switch (content.type) {
280
+ case 'text':
281
+ return content.text;
282
+ case 'resource_link':
283
+ return content.name ? `${content.name}: ${content.uri}` : content.uri;
284
+ case 'diff':
285
+ return `${content.path}\n${content.newText}`;
286
+ case 'terminal':
287
+ return `Terminal: ${content.terminalId}`;
288
+ case 'unsupported':
289
+ return `[${content.contentType}]`;
290
+ }
291
+ }
292
+ function mapToolLocation(value) {
293
+ const location = asRecord(value);
294
+ if (!location || typeof location.path !== 'string')
295
+ return [];
296
+ return [{
297
+ path: sanitizeText(location.path, 4_096),
298
+ ...(isUint32(location.line) ? { line: location.line } : {}),
299
+ }];
300
+ }
301
+ function sanitizeText(value, maxLength = MAX_TEXT_LENGTH) {
302
+ const redacted = value
303
+ .replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, '')
304
+ .replace(/\b(?:sk|key|token|secret)-[A-Za-z0-9._-]{8,}\b/gi, '[REDACTED]');
305
+ return redacted.length > maxLength
306
+ ? `${redacted.slice(0, maxLength)}\n[TRUNCATED]`
307
+ : redacted;
308
+ }
309
+ function opaqueId(prefix, raw) {
310
+ return `acp-${prefix}-${Buffer.from(raw).toString('base64url').slice(0, 96)}`;
311
+ }
312
+ function mapToolStatus(status) {
313
+ if (status === 'completed')
314
+ return 'success';
315
+ if (status === 'failed')
316
+ return 'failed';
317
+ if (status === 'pending')
318
+ return 'pending';
319
+ if (status === 'in_progress')
320
+ return 'in_progress';
321
+ return 'created';
322
+ }
323
+ function toolAction(kind) {
324
+ const lower = kind.toLowerCase();
325
+ if (lower.includes('read'))
326
+ return 'file_read';
327
+ if (lower.includes('edit') || lower.includes('write') || lower.includes('delete') || lower.includes('move'))
328
+ return 'file_edit';
329
+ if (lower.includes('terminal') || lower.includes('command') || lower.includes('execute'))
330
+ return 'command_run';
331
+ if (lower.includes('search'))
332
+ return 'search';
333
+ if (lower.includes('fetch'))
334
+ return 'web_fetch';
335
+ return 'tool';
336
+ }
337
+ function hasOwn(value, key) {
338
+ return Object.prototype.hasOwnProperty.call(value, key);
339
+ }
340
+ function asRecord(value) {
341
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
342
+ ? value
343
+ : undefined;
344
+ }
345
+ function safeInteger(value) {
346
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
347
+ }
348
+ function isUint32(value) {
349
+ return typeof value === 'number'
350
+ && Number.isInteger(value)
351
+ && value >= 0
352
+ && value <= 0xffff_ffff;
353
+ }
354
+ //# sourceMappingURL=projector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projector.js","sourceRoot":"","sources":["../../../src/runtime/acp/projector.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EAQtB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;AAoBlC,MAAM,OAAO,YAAY;IAQJ;IACA;IARF,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC7C,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,SAAS,CAAU;IACnB,UAAU,CAAU;IACpB,sBAAsB,CAAiD;IAE/E,YACmB,QAAkB,EAClB,IAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAU;QAClB,SAAI,GAAJ,IAAI,CAAwB;IAC5C,CAAC;IAEJ,OAAO,CAAC,YAAiC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAiD,CAAC;QAC9E,QAAQ,MAAM,CAAC,aAAa,EAAE,CAAC;YAC7B,KAAK,qBAAqB;gBACxB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,qBAAqB;gBACxB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,WAAW,CAAC;YACjB,KAAK,kBAAkB;gBACrB,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,MAAkD,CAAC,CAAC;gBACrE,MAAM;YACR,KAAK,MAAM,CAAC;YACZ,KAAK,aAAa,CAAC;YACnB,KAAK,cAAc;gBACjB,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM;YACR;gBACE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,IAAI,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,cAAc,CAAC,MAA+B,EAAE,IAA6B;QACnF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,KAAK,WAAW;YAChC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,gBAAgB,CACtB,MAA+B,EAC/B,IAA6B;QAE7B,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;YACxC,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;YACxC,OAAO,GAAG,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,CAAC,sBAAsB,EAAE,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtF,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,sBAAsB,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,WAAW,CAAC,MAAgD;QAClE,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,IAAI;YACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM;SACP,CAAC;QACF,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9B,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO;YAErC,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC;QAClC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAoB;YAC7B,GAAG,IAAI;YACP,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE;gBACR,GAAG,IAAI,CAAC,QAAQ;gBAChB,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvF;SACF,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,eAAe,CAAC,IAAmB,EAAE,KAAsB;QACjE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,WAAW,CAAC,MAA+B;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,GAAe,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACzD,MAAM,IAAI,GAAa;gBACrB,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAClE,CAAC;YACF,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;QAC/E,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE;YACrF,KAAK;YACL,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAC;QACH,MAAM,KAAK,GAAoB;YAC7B,GAAG,IAAI;YACP,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;SAClD,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,YAAY,CAAC,MAA+B;QAClD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAC/B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEO,SAAS,CAAC,KAA2C;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,SAAS,eAAe,CAAC,IAAmB,EAAE,MAA+B;IAC3E,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;YACjD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;YACxD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAmB,EAAE,QAAgB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAClD,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAClF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACrD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAmB;IACjD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAmB;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,EAAE,IAAI,KAAK,MAAM;QACrC,CAAC,CAAC,MAAM,CAAC,IAAI;QACb,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,4BAA4B,CAAC;IACrE,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,4CAA4C,EAAE,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,yBAAyB,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,OAAO,EAAE,IAAI,KAAK,eAAe,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO;gBACL,IAAI,EAAE,eAAe;gBACrB,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;gBACrC,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACxE,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7F,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9F,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YACpC,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAoB;IAChD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,KAAK,eAAe;YAClB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACxE,KAAK,MAAM;YACT,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,KAAK,UAAU;YACb,OAAO,aAAa,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,KAAK,aAAa;YAChB,OAAO,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC9D,OAAO,CAAC;YACN,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;YACxC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,SAAS,GAAG,eAAe;IAC9D,MAAM,QAAQ,GAAG,KAAK;SACnB,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC;SACrD,OAAO,CAAC,kDAAkD,EAAE,YAAY,CAAC,CAAC;IAC7E,OAAO,QAAQ,CAAC,MAAM,GAAG,SAAS;QAChC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe;QAChD,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,GAAW;IAC3C,OAAO,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAC;IAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAC;IAChI,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,aAAa,CAAC;IAC/G,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,KAA8B,EAAE,GAAW;IACzD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ;WAC3B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;WACvB,KAAK,IAAI,CAAC;WACV,KAAK,IAAI,WAAW,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { RuntimeType } from '@agent-tower/shared';
2
+ import type { DriverSession, RuntimeDriver, RuntimeOpenInput } from './contracts.js';
3
+ export declare class CliRuntimeDriver implements RuntimeDriver {
4
+ readonly type = RuntimeType.CLI;
5
+ open(input: RuntimeOpenInput): Promise<DriverSession>;
6
+ }
7
+ //# sourceMappingURL=cli-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-driver.d.ts","sourceRoot":"","sources":["../../src/runtime/cli-driver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAclD,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EAEb,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AAuBxB,qBAAa,gBAAiB,YAAW,aAAa;IACpD,QAAQ,CAAC,IAAI,mBAAmB;IAE1B,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;CAG5D"}
@@ -0,0 +1,282 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { RuntimeType } from '@agent-tower/shared';
3
+ import { EventBus } from '../core/event-bus.js';
4
+ import { getExecutor, getExecutorByProvider, ExecutorConfigurationError, ExecutorNotFoundError, normalizeExecutorStartError, } from '../executors/index.js';
5
+ import { AgentPipeline } from '../pipeline/agent-pipeline.js';
6
+ import { AgentRuntimeError } from './errors.js';
7
+ import { createCliParser } from './cli-parser.js';
8
+ const LOGICAL_COMPLETION_GRACE_MS = 250;
9
+ const PROCESS_EXIT_LISTENER_TIMEOUT_MS = 5_000;
10
+ export class CliRuntimeDriver {
11
+ type = RuntimeType.CLI;
12
+ async open(input) {
13
+ return new CliDriverSession(input);
14
+ }
15
+ }
16
+ class CliDriverSession {
17
+ input;
18
+ capabilities = {
19
+ loadSession: true,
20
+ terminalInput: true,
21
+ terminalResize: true,
22
+ permissions: false,
23
+ };
24
+ active;
25
+ currentRuntimeInstanceId = randomUUID();
26
+ currentExternalSessionId;
27
+ closed = false;
28
+ constructor(input) {
29
+ this.input = input;
30
+ this.currentExternalSessionId = input.externalSessionId ?? undefined;
31
+ }
32
+ get runtimeInstanceId() {
33
+ return this.currentRuntimeInstanceId;
34
+ }
35
+ get externalSessionId() {
36
+ return this.currentExternalSessionId;
37
+ }
38
+ async runTurn(input, sink) {
39
+ if (this.closed) {
40
+ throw new AgentRuntimeError('runtime_disposed', 'prompt', 'CLI runtime session is closed', true);
41
+ }
42
+ if (this.active && !this.active.settled) {
43
+ throw new AgentRuntimeError('turn_already_running', 'prompt', 'CLI turn is already running', false);
44
+ }
45
+ this.cleanupActive();
46
+ const executor = this.resolveExecutor();
47
+ const spawnConfig = {
48
+ workingDir: this.input.workingDir,
49
+ prompt: input.prompt,
50
+ env: this.input.env,
51
+ };
52
+ let spawnResult;
53
+ try {
54
+ const resumeId = input.resumeExternalSessionId ?? this.currentExternalSessionId;
55
+ if (resumeId && executor.spawnFollowUp) {
56
+ try {
57
+ spawnResult = await executor.spawnFollowUp(spawnConfig, resumeId);
58
+ }
59
+ catch {
60
+ spawnResult = await executor.spawn(spawnConfig);
61
+ }
62
+ }
63
+ else {
64
+ spawnResult = await executor.spawn(spawnConfig);
65
+ }
66
+ }
67
+ catch (error) {
68
+ throw normalizeExecutorStartError(error);
69
+ }
70
+ this.currentRuntimeInstanceId = randomUUID();
71
+ const active = createActiveTurn(input.turnId, this.currentRuntimeInstanceId);
72
+ this.active = active;
73
+ try {
74
+ await sink.process({
75
+ type: 'started',
76
+ runtimeInstanceId: active.runtimeInstanceId,
77
+ pid: spawnResult.pid,
78
+ });
79
+ this.attachSpawnedTurn(active, spawnResult, input.msgStore, sink);
80
+ }
81
+ catch (error) {
82
+ void active.completion.catch(() => undefined);
83
+ try {
84
+ spawnResult.cancel?.cancel();
85
+ spawnResult.pty.kill();
86
+ }
87
+ catch {
88
+ // The host error remains authoritative.
89
+ }
90
+ this.settleFailure(active, error);
91
+ throw error;
92
+ }
93
+ return { completion: active.completion };
94
+ }
95
+ async cancelTurn(turnId) {
96
+ const active = this.active;
97
+ if (!active || active.turnId !== turnId)
98
+ return;
99
+ active.cancel?.cancel();
100
+ active.pipeline?.destroy();
101
+ this.settleFailure(active, new AgentRuntimeError('turn_cancelled', 'cancel', 'CLI turn was cancelled', true));
102
+ }
103
+ writeInput(data) {
104
+ this.active?.pipeline?.write(data);
105
+ }
106
+ resize(cols, rows) {
107
+ this.active?.pipeline?.resize(cols, rows);
108
+ }
109
+ async close() {
110
+ if (this.closed)
111
+ return;
112
+ this.closed = true;
113
+ const active = this.active;
114
+ if (!active)
115
+ return;
116
+ active.cancel?.cancel();
117
+ active.pipeline?.destroy();
118
+ this.settleFailure(active, new AgentRuntimeError('runtime_disposed', 'close', 'CLI runtime session was closed', true));
119
+ await Promise.race([
120
+ active.completion.catch(() => undefined),
121
+ new Promise((resolve) => setTimeout(resolve, 2_000)),
122
+ ]);
123
+ this.cleanupActive();
124
+ }
125
+ attachSpawnedTurn(active, spawnResult, msgStore, sink) {
126
+ const bus = new EventBus();
127
+ const onStdout = ({ data }) => sink.stream({ type: 'stdout', data });
128
+ const onPatch = ({ patch, seq }) => {
129
+ sink.stream({ type: 'conversation_patch', patch: patch, seq });
130
+ };
131
+ const onSessionId = ({ agentSessionId }) => {
132
+ this.currentExternalSessionId = agentSessionId;
133
+ sink.stream({ type: 'external_session_id', externalSessionId: agentSessionId });
134
+ };
135
+ const onCompleted = () => {
136
+ this.settleSuccess(active, {});
137
+ this.schedulePipelineCleanup(active);
138
+ };
139
+ const onFailed = () => {
140
+ this.settleFailure(active, new AgentRuntimeError('turn_failed', 'prompt', 'CLI agent reported a failed turn', true));
141
+ this.schedulePipelineCleanup(active);
142
+ };
143
+ const onExit = ({ exitCode }) => {
144
+ if (typeof exitCode === 'number' && exitCode !== 0) {
145
+ this.settleFailure(active, new AgentRuntimeError('process_exit', 'runtime', `CLI process exited with code ${exitCode}`, true));
146
+ }
147
+ else {
148
+ this.settleSuccess(active, {});
149
+ }
150
+ this.cleanupTurnResources(active);
151
+ };
152
+ bus.on('session:stdout', onStdout);
153
+ bus.on('session:patch', onPatch);
154
+ bus.on('session:sessionId', onSessionId);
155
+ bus.on('session:turn-completed', onCompleted);
156
+ bus.on('session:turn-failed', onFailed);
157
+ bus.on('session:exit', onExit);
158
+ active.cleanups.push(() => bus.off('session:stdout', onStdout), () => bus.off('session:patch', onPatch), () => bus.off('session:sessionId', onSessionId), () => bus.off('session:turn-completed', onCompleted), () => bus.off('session:turn-failed', onFailed), () => bus.off('session:exit', onExit));
159
+ let processExitReported = false;
160
+ const reportProcessExit = (exitCode, signal) => {
161
+ if (processExitReported)
162
+ return;
163
+ processExitReported = true;
164
+ active.processExited = true;
165
+ void sink.process({
166
+ type: 'exited',
167
+ runtimeInstanceId: active.runtimeInstanceId,
168
+ exitCode,
169
+ signal,
170
+ }).finally(() => this.cleanupRawExitTracking(active));
171
+ };
172
+ active.offRawExit = spawnResult.pty.onExit(({ exitCode, signal }) => {
173
+ reportProcessExit(exitCode, signal);
174
+ });
175
+ const earlyEvents = spawnResult.takeEarlyEvents?.() ?? [];
176
+ const earlyExit = earlyEvents.find((event) => event.type === 'exit');
177
+ if (earlyExit?.type === 'exit')
178
+ reportProcessExit(earlyExit.exitCode);
179
+ const parser = createCliParser(this.input.agentType, this.input.workingDir, msgStore);
180
+ const pipeline = new AgentPipeline(this.input.towerSessionId, spawnResult.pty, parser, msgStore, bus, earlyEvents);
181
+ active.pipeline = pipeline;
182
+ active.cancel = spawnResult.cancel;
183
+ if (!pipeline.isAlive)
184
+ this.cleanupTurnResources(active);
185
+ }
186
+ resolveExecutor() {
187
+ const agentType = this.input.agentType;
188
+ let executor;
189
+ try {
190
+ executor = this.input.providerId
191
+ ? getExecutorByProvider(this.input.providerId)
192
+ : getExecutor(agentType, this.input.variant);
193
+ }
194
+ catch (error) {
195
+ throw new ExecutorConfigurationError(agentType, error, this.input.providerId);
196
+ }
197
+ if (!executor) {
198
+ throw new ExecutorNotFoundError(agentType, this.input.providerId);
199
+ }
200
+ return executor;
201
+ }
202
+ settleSuccess(active, outcome) {
203
+ if (active.settled)
204
+ return;
205
+ active.settled = true;
206
+ active.resolve(outcome);
207
+ }
208
+ settleFailure(active, error) {
209
+ if (active.settled)
210
+ return;
211
+ active.settled = true;
212
+ active.reject(error);
213
+ }
214
+ schedulePipelineCleanup(active) {
215
+ if (active.cleanupTimer)
216
+ return;
217
+ active.cleanupTimer = setTimeout(() => {
218
+ active.cleanupTimer = undefined;
219
+ active.pipeline?.destroy();
220
+ this.cleanupTurnResources(active);
221
+ }, LOGICAL_COMPLETION_GRACE_MS);
222
+ active.cleanupTimer.unref?.();
223
+ }
224
+ cleanupTurnResources(active) {
225
+ if (active.cleanupTimer)
226
+ clearTimeout(active.cleanupTimer);
227
+ active.cleanupTimer = undefined;
228
+ for (const cleanup of active.cleanups.splice(0))
229
+ cleanup();
230
+ active.pipeline = undefined;
231
+ active.cancel = undefined;
232
+ if (active.processExited) {
233
+ this.cleanupRawExitTracking(active);
234
+ }
235
+ else {
236
+ this.scheduleRawExitCleanup(active);
237
+ }
238
+ }
239
+ scheduleRawExitCleanup(active) {
240
+ if (!active.offRawExit || active.processExitTimer)
241
+ return;
242
+ active.processExitTimer = setTimeout(() => {
243
+ active.processExitTimer = undefined;
244
+ this.cleanupRawExitTracking(active);
245
+ }, PROCESS_EXIT_LISTENER_TIMEOUT_MS);
246
+ active.processExitTimer.unref?.();
247
+ }
248
+ cleanupRawExitTracking(active) {
249
+ if (active.processExitTimer)
250
+ clearTimeout(active.processExitTimer);
251
+ active.processExitTimer = undefined;
252
+ active.offRawExit?.dispose();
253
+ active.offRawExit = undefined;
254
+ }
255
+ cleanupActive() {
256
+ const active = this.active;
257
+ if (!active)
258
+ return;
259
+ active.pipeline?.destroy();
260
+ this.cleanupTurnResources(active);
261
+ this.active = undefined;
262
+ }
263
+ }
264
+ function createActiveTurn(turnId, runtimeInstanceId) {
265
+ let resolve;
266
+ let reject;
267
+ const completion = new Promise((res, rej) => {
268
+ resolve = res;
269
+ reject = rej;
270
+ });
271
+ return {
272
+ turnId,
273
+ runtimeInstanceId,
274
+ completion,
275
+ resolve,
276
+ reject,
277
+ settled: false,
278
+ processExited: false,
279
+ cleanups: [],
280
+ };
281
+ }
282
+ //# sourceMappingURL=cli-driver.js.map