agent-tower 0.7.1-beta.3 → 0.7.1

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 (373) hide show
  1. package/dist/executors/__tests__/base.executor.test.js +2 -2
  2. package/dist/executors/__tests__/base.executor.test.js.map +1 -1
  3. package/dist/executors/__tests__/codex.executor.test.js +137 -25
  4. package/dist/executors/__tests__/codex.executor.test.js.map +1 -1
  5. package/dist/executors/__tests__/providers.test.js +69 -2
  6. package/dist/executors/__tests__/providers.test.js.map +1 -1
  7. package/dist/executors/__tests__/stdin-prompt.executors.test.js +61 -3
  8. package/dist/executors/__tests__/stdin-prompt.executors.test.js.map +1 -1
  9. package/dist/executors/base.executor.d.ts +8 -1
  10. package/dist/executors/base.executor.d.ts.map +1 -1
  11. package/dist/executors/base.executor.js +22 -8
  12. package/dist/executors/base.executor.js.map +1 -1
  13. package/dist/executors/claude-code.executor.d.ts +2 -0
  14. package/dist/executors/claude-code.executor.d.ts.map +1 -1
  15. package/dist/executors/claude-code.executor.js +51 -41
  16. package/dist/executors/claude-code.executor.js.map +1 -1
  17. package/dist/executors/codex.executor.d.ts +3 -0
  18. package/dist/executors/codex.executor.d.ts.map +1 -1
  19. package/dist/executors/codex.executor.js +35 -1
  20. package/dist/executors/codex.executor.js.map +1 -1
  21. package/dist/executors/cursor-agent.executor.d.ts +1 -0
  22. package/dist/executors/cursor-agent.executor.d.ts.map +1 -1
  23. package/dist/executors/cursor-agent.executor.js +2 -0
  24. package/dist/executors/cursor-agent.executor.js.map +1 -1
  25. package/dist/executors/default-providers.json +45 -39
  26. package/dist/executors/gemini-cli.executor.d.ts +3 -1
  27. package/dist/executors/gemini-cli.executor.d.ts.map +1 -1
  28. package/dist/executors/gemini-cli.executor.js +18 -12
  29. package/dist/executors/gemini-cli.executor.js.map +1 -1
  30. package/dist/executors/index.d.ts +4 -0
  31. package/dist/executors/index.d.ts.map +1 -1
  32. package/dist/executors/index.js +14 -4
  33. package/dist/executors/index.js.map +1 -1
  34. package/dist/executors/providers.d.ts +4 -1
  35. package/dist/executors/providers.d.ts.map +1 -1
  36. package/dist/executors/providers.js +20 -5
  37. package/dist/executors/providers.js.map +1 -1
  38. package/dist/output/__tests__/claude-code-parser-lifecycle.test.d.ts +2 -0
  39. package/dist/output/__tests__/claude-code-parser-lifecycle.test.d.ts.map +1 -0
  40. package/dist/output/__tests__/claude-code-parser-lifecycle.test.js +84 -0
  41. package/dist/output/__tests__/claude-code-parser-lifecycle.test.js.map +1 -0
  42. package/dist/output/claude-code-parser.d.ts +14 -2
  43. package/dist/output/claude-code-parser.d.ts.map +1 -1
  44. package/dist/output/claude-code-parser.js +55 -8
  45. package/dist/output/claude-code-parser.js.map +1 -1
  46. package/dist/pipeline/__tests__/agent-pipeline.test.js +48 -1
  47. package/dist/pipeline/__tests__/agent-pipeline.test.js.map +1 -1
  48. package/dist/pipeline/agent-pipeline.d.ts +6 -1
  49. package/dist/pipeline/agent-pipeline.d.ts.map +1 -1
  50. package/dist/pipeline/agent-pipeline.js +42 -4
  51. package/dist/pipeline/agent-pipeline.js.map +1 -1
  52. package/dist/routes/__tests__/providers.test.js +287 -12
  53. package/dist/routes/__tests__/providers.test.js.map +1 -1
  54. package/dist/routes/__tests__/sessions-runtime.test.js +9 -0
  55. package/dist/routes/__tests__/sessions-runtime.test.js.map +1 -1
  56. package/dist/routes/providers.d.ts +2 -0
  57. package/dist/routes/providers.d.ts.map +1 -1
  58. package/dist/routes/providers.js +79 -34
  59. package/dist/routes/providers.js.map +1 -1
  60. package/dist/routes/sessions.js +2 -2
  61. package/dist/routes/sessions.js.map +1 -1
  62. package/dist/runtime/__tests__/acp-agent-definitions.test.js +54 -6
  63. package/dist/runtime/__tests__/acp-agent-definitions.test.js.map +1 -1
  64. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +85 -12
  65. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -1
  66. package/dist/runtime/__tests__/acp-driver.test.js +38 -1
  67. package/dist/runtime/__tests__/acp-driver.test.js.map +1 -1
  68. package/dist/runtime/__tests__/claude-cli-control.test.d.ts +2 -0
  69. package/dist/runtime/__tests__/claude-cli-control.test.d.ts.map +1 -0
  70. package/dist/runtime/__tests__/claude-cli-control.test.js +147 -0
  71. package/dist/runtime/__tests__/claude-cli-control.test.js.map +1 -0
  72. package/dist/runtime/__tests__/claude-cli-driver.test.d.ts +2 -0
  73. package/dist/runtime/__tests__/claude-cli-driver.test.d.ts.map +1 -0
  74. package/dist/runtime/__tests__/claude-cli-driver.test.js +327 -0
  75. package/dist/runtime/__tests__/claude-cli-driver.test.js.map +1 -0
  76. package/dist/runtime/__tests__/cli-driver-lifecycle.test.js +107 -2
  77. package/dist/runtime/__tests__/cli-driver-lifecycle.test.js.map +1 -1
  78. package/dist/runtime/__tests__/codex-cli-control.test.d.ts +2 -0
  79. package/dist/runtime/__tests__/codex-cli-control.test.d.ts.map +1 -0
  80. package/dist/runtime/__tests__/codex-cli-control.test.js +287 -0
  81. package/dist/runtime/__tests__/codex-cli-control.test.js.map +1 -0
  82. package/dist/runtime/__tests__/codex-cli-identity.test.d.ts +2 -0
  83. package/dist/runtime/__tests__/codex-cli-identity.test.d.ts.map +1 -0
  84. package/dist/runtime/__tests__/codex-cli-identity.test.js +166 -0
  85. package/dist/runtime/__tests__/codex-cli-identity.test.js.map +1 -0
  86. package/dist/runtime/__tests__/codex-runtime-resolution.test.js +32 -0
  87. package/dist/runtime/__tests__/codex-runtime-resolution.test.js.map +1 -1
  88. package/dist/runtime/__tests__/runtime-coordinator.test.js +74 -0
  89. package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -1
  90. package/dist/runtime/acp/acp-driver.d.ts.map +1 -1
  91. package/dist/runtime/acp/acp-driver.js +27 -9
  92. package/dist/runtime/acp/acp-driver.js.map +1 -1
  93. package/dist/runtime/acp/agents/claude-code.d.ts.map +1 -1
  94. package/dist/runtime/acp/agents/claude-code.js +6 -11
  95. package/dist/runtime/acp/agents/claude-code.js.map +1 -1
  96. package/dist/runtime/acp/agents/codex.d.ts.map +1 -1
  97. package/dist/runtime/acp/agents/codex.js +15 -6
  98. package/dist/runtime/acp/agents/codex.js.map +1 -1
  99. package/dist/runtime/acp/agents/cursor-agent.d.ts.map +1 -1
  100. package/dist/runtime/acp/agents/cursor-agent.js +2 -1
  101. package/dist/runtime/acp/agents/cursor-agent.js.map +1 -1
  102. package/dist/runtime/acp/agents/deepseek-hermes.js +3 -3
  103. package/dist/runtime/acp/agents/deepseek-hermes.js.map +1 -1
  104. package/dist/runtime/acp/agents/gemini-cli.d.ts.map +1 -1
  105. package/dist/runtime/acp/agents/gemini-cli.js +1 -0
  106. package/dist/runtime/acp/agents/gemini-cli.js.map +1 -1
  107. package/dist/runtime/acp/agents/grok-build.d.ts.map +1 -1
  108. package/dist/runtime/acp/agents/grok-build.js +4 -1
  109. package/dist/runtime/acp/agents/grok-build.js.map +1 -1
  110. package/dist/runtime/acp/agents/kiro-cli.d.ts.map +1 -1
  111. package/dist/runtime/acp/agents/kiro-cli.js +2 -1
  112. package/dist/runtime/acp/agents/kiro-cli.js.map +1 -1
  113. package/dist/runtime/acp/agents/minion-code.js +1 -1
  114. package/dist/runtime/acp/agents/minion-code.js.map +1 -1
  115. package/dist/runtime/acp/agents/native-agent.d.ts +2 -0
  116. package/dist/runtime/acp/agents/native-agent.d.ts.map +1 -1
  117. package/dist/runtime/acp/agents/native-agent.js +12 -16
  118. package/dist/runtime/acp/agents/native-agent.js.map +1 -1
  119. package/dist/runtime/acp/agents/opencode.d.ts.map +1 -1
  120. package/dist/runtime/acp/agents/opencode.js +50 -2
  121. package/dist/runtime/acp/agents/opencode.js.map +1 -1
  122. package/dist/runtime/acp/agents/pi-coding-agent.d.ts.map +1 -1
  123. package/dist/runtime/acp/agents/pi-coding-agent.js +2 -5
  124. package/dist/runtime/acp/agents/pi-coding-agent.js.map +1 -1
  125. package/dist/runtime/acp/agents/qwen-code.d.ts.map +1 -1
  126. package/dist/runtime/acp/agents/qwen-code.js +9 -11
  127. package/dist/runtime/acp/agents/qwen-code.js.map +1 -1
  128. package/dist/runtime/acp/agents/types.d.ts +4 -2
  129. package/dist/runtime/acp/agents/types.d.ts.map +1 -1
  130. package/dist/runtime/acp/codex-cli-identity.d.ts +52 -0
  131. package/dist/runtime/acp/codex-cli-identity.d.ts.map +1 -0
  132. package/dist/runtime/acp/codex-cli-identity.js +179 -0
  133. package/dist/runtime/acp/codex-cli-identity.js.map +1 -0
  134. package/dist/runtime/acp/codex-provider-config.d.ts +15 -2
  135. package/dist/runtime/acp/codex-provider-config.d.ts.map +1 -1
  136. package/dist/runtime/acp/codex-provider-config.js +42 -5
  137. package/dist/runtime/acp/codex-provider-config.js.map +1 -1
  138. package/dist/runtime/claude-cli-control.d.ts +32 -0
  139. package/dist/runtime/claude-cli-control.d.ts.map +1 -0
  140. package/dist/runtime/claude-cli-control.js +156 -0
  141. package/dist/runtime/claude-cli-control.js.map +1 -0
  142. package/dist/runtime/cli-action-summary.d.ts +3 -0
  143. package/dist/runtime/cli-action-summary.d.ts.map +1 -0
  144. package/dist/runtime/cli-action-summary.js +13 -0
  145. package/dist/runtime/cli-action-summary.js.map +1 -0
  146. package/dist/runtime/cli-driver.d.ts.map +1 -1
  147. package/dist/runtime/cli-driver.js +119 -26
  148. package/dist/runtime/cli-driver.js.map +1 -1
  149. package/dist/runtime/cli-parser.d.ts +4 -1
  150. package/dist/runtime/cli-parser.d.ts.map +1 -1
  151. package/dist/runtime/cli-parser.js +2 -2
  152. package/dist/runtime/cli-parser.js.map +1 -1
  153. package/dist/runtime/codex-cli-control.d.ts +63 -0
  154. package/dist/runtime/codex-cli-control.d.ts.map +1 -0
  155. package/dist/runtime/codex-cli-control.js +311 -0
  156. package/dist/runtime/codex-cli-control.js.map +1 -0
  157. package/dist/runtime/codex-cli-projector.d.ts +17 -0
  158. package/dist/runtime/codex-cli-projector.d.ts.map +1 -0
  159. package/dist/runtime/codex-cli-projector.js +80 -0
  160. package/dist/runtime/codex-cli-projector.js.map +1 -0
  161. package/dist/runtime/contracts.d.ts +12 -2
  162. package/dist/runtime/contracts.d.ts.map +1 -1
  163. package/dist/runtime/runtime-coordinator.d.ts +1 -1
  164. package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
  165. package/dist/runtime/runtime-coordinator.js +40 -6
  166. package/dist/runtime/runtime-coordinator.js.map +1 -1
  167. package/dist/services/__tests__/claude-cli-capabilities.service.test.d.ts +2 -0
  168. package/dist/services/__tests__/claude-cli-capabilities.service.test.d.ts.map +1 -0
  169. package/dist/services/__tests__/claude-cli-capabilities.service.test.js +37 -0
  170. package/dist/services/__tests__/claude-cli-capabilities.service.test.js.map +1 -0
  171. package/dist/services/__tests__/codex-cli-capabilities.service.test.d.ts +2 -0
  172. package/dist/services/__tests__/codex-cli-capabilities.service.test.d.ts.map +1 -0
  173. package/dist/services/__tests__/codex-cli-capabilities.service.test.js +35 -0
  174. package/dist/services/__tests__/codex-cli-capabilities.service.test.js.map +1 -0
  175. package/dist/services/__tests__/codex-model-capabilities.service.test.js +23 -2
  176. package/dist/services/__tests__/codex-model-capabilities.service.test.js.map +1 -1
  177. package/dist/services/__tests__/execution-permission.service.test.d.ts +2 -0
  178. package/dist/services/__tests__/execution-permission.service.test.d.ts.map +1 -0
  179. package/dist/services/__tests__/execution-permission.service.test.js +111 -0
  180. package/dist/services/__tests__/execution-permission.service.test.js.map +1 -0
  181. package/dist/services/__tests__/provider-config.service.test.js +1 -0
  182. package/dist/services/__tests__/provider-config.service.test.js.map +1 -1
  183. package/dist/services/__tests__/session-manager.lifecycle.test.js +151 -3
  184. package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
  185. package/dist/services/claude-cli-capabilities.service.d.ts +11 -0
  186. package/dist/services/claude-cli-capabilities.service.d.ts.map +1 -0
  187. package/dist/services/claude-cli-capabilities.service.js +54 -0
  188. package/dist/services/claude-cli-capabilities.service.js.map +1 -0
  189. package/dist/services/codex-cli-capabilities.service.d.ts +12 -0
  190. package/dist/services/codex-cli-capabilities.service.d.ts.map +1 -0
  191. package/dist/services/codex-cli-capabilities.service.js +65 -0
  192. package/dist/services/codex-cli-capabilities.service.js.map +1 -0
  193. package/dist/services/codex-model-capabilities.service.d.ts.map +1 -1
  194. package/dist/services/codex-model-capabilities.service.js +12 -1
  195. package/dist/services/codex-model-capabilities.service.js.map +1 -1
  196. package/dist/services/execution-permission.service.d.ts +30 -0
  197. package/dist/services/execution-permission.service.d.ts.map +1 -0
  198. package/dist/services/execution-permission.service.js +149 -0
  199. package/dist/services/execution-permission.service.js.map +1 -0
  200. package/dist/services/provider-config.service.d.ts.map +1 -1
  201. package/dist/services/provider-config.service.js +19 -29
  202. package/dist/services/provider-config.service.js.map +1 -1
  203. package/dist/services/session-manager.d.ts +9 -7
  204. package/dist/services/session-manager.d.ts.map +1 -1
  205. package/dist/services/session-manager.js +46 -7
  206. package/dist/services/session-manager.js.map +1 -1
  207. package/dist/services/task.service.d.ts +4 -4
  208. package/dist/services/workspace.service.d.ts +7 -7
  209. package/dist/utils/cli-duplex-channel.d.ts +21 -0
  210. package/dist/utils/cli-duplex-channel.d.ts.map +1 -0
  211. package/dist/utils/cli-duplex-channel.js +200 -0
  212. package/dist/utils/cli-duplex-channel.js.map +1 -0
  213. package/dist/utils/cli-duplex-channel.test.d.ts +2 -0
  214. package/dist/utils/cli-duplex-channel.test.d.ts.map +1 -0
  215. package/dist/utils/cli-duplex-channel.test.js +191 -0
  216. package/dist/utils/cli-duplex-channel.test.js.map +1 -0
  217. package/dist/utils/index.d.ts +1 -0
  218. package/dist/utils/index.d.ts.map +1 -1
  219. package/dist/utils/index.js +1 -0
  220. package/dist/utils/index.js.map +1 -1
  221. package/dist/utils/process-launch.d.ts +3 -0
  222. package/dist/utils/process-launch.d.ts.map +1 -1
  223. package/dist/utils/process-launch.js +129 -10
  224. package/dist/utils/process-launch.js.map +1 -1
  225. package/dist/utils/process-launch.test.js +103 -0
  226. package/dist/utils/process-launch.test.js.map +1 -1
  227. package/dist/web/assets/{AgentDemoPage-B6pABvRL.js → AgentDemoPage-Gr8q6VxC.js} +1 -1
  228. package/dist/web/assets/{AgentEnvironmentSettingsPage-CqMfdwkM.js → AgentEnvironmentSettingsPage-b0XzUzna.js} +1 -1
  229. package/dist/web/assets/{AgentLogo-Ntqe3_Mx.js → AgentLogo-q8Chady2.js} +1 -1
  230. package/dist/web/assets/ConversationPage-DQRA8WuD.js +3 -0
  231. package/dist/web/assets/CreateTaskInput-Dr6Lvllw.js +1 -0
  232. package/dist/web/assets/{DemoPage-D1Ki6sJ0.js → DemoPage-DaDC_MIJ.js} +1 -1
  233. package/dist/web/assets/ExecutionPermissionSelector-DglILGVC.js +29 -0
  234. package/dist/web/assets/{GeneralSettingsPage-DoAXPabw.js → GeneralSettingsPage-BKRf-usO.js} +1 -1
  235. package/dist/web/assets/{Icons-KJJd6C8K.js → Icons-7lThaqQv.js} +1 -1
  236. package/dist/web/assets/{LoadingPreviewPage-BqCKBvgv.js → LoadingPreviewPage-BHAQCQDA.js} +1 -1
  237. package/dist/web/assets/{McpSettingsPage-QXVD4XCW.js → McpSettingsPage-CVOEPwCv.js} +1 -1
  238. package/dist/web/assets/{MemberAvatar-kbJEoyh0.js → MemberAvatar-DUXHTIXf.js} +1 -1
  239. package/dist/web/assets/{NotificationSettingsPage-BrqSeU--.js → NotificationSettingsPage-DBe1YCNN.js} +1 -1
  240. package/dist/web/assets/{ProfileSettingsPage-BmWgVdnG.js → ProfileSettingsPage-DwziCseV.js} +1 -1
  241. package/dist/web/assets/ProjectKanbanPage-Dcz8KXWU.js +86 -0
  242. package/dist/web/assets/{ProjectSettingsPage-BVINN99w.js → ProjectSettingsPage-hzSrj79M.js} +1 -1
  243. package/dist/web/assets/ProviderSettingsPage-CC3zkdf6.js +67 -0
  244. package/dist/web/assets/{SettingsMasterDetail-OF28cvPV.js → SettingsMasterDetail-D5lNH2f6.js} +1 -1
  245. package/dist/web/assets/{TeamSettingsPage-BWGm0m7s.js → TeamSettingsPage-Cdbvh2ne.js} +1 -1
  246. package/dist/web/assets/{arc-CqFgRaZU.js → arc-d2D24uRQ.js} +1 -1
  247. package/dist/web/assets/{architectureDiagram-3BPJPVTR-C0PMdIZJ.js → architectureDiagram-3BPJPVTR-C_p9_AH2.js} +1 -1
  248. package/dist/web/assets/{blockDiagram-GPEHLZMM-SqqtxqkX.js → blockDiagram-GPEHLZMM-CKsR1Tax.js} +1 -1
  249. package/dist/web/assets/{c4Diagram-AAUBKEIU-DYJXB3xL.js → c4Diagram-AAUBKEIU-BBUKt2FW.js} +1 -1
  250. package/dist/web/assets/channel-D0hF47LU.js +1 -0
  251. package/dist/web/assets/check-BqhuHtHP.js +1 -0
  252. package/dist/web/assets/{chevron-down-BZfpVhYr.js → chevron-down-Bw_76CB_.js} +1 -1
  253. package/dist/web/assets/{chevron-right-D52zUyOF.js → chevron-right-DbcFf_Dw.js} +1 -1
  254. package/dist/web/assets/{chevron-up-CFOy5dmW.js → chevron-up-x1n3MhC-.js} +1 -1
  255. package/dist/web/assets/{chunk-2J33WTMH-DQCbv8W_.js → chunk-2J33WTMH-BcGNhDoU.js} +1 -1
  256. package/dist/web/assets/{chunk-4BX2VUAB-B_68_oNW.js → chunk-4BX2VUAB-9dL7TVjW.js} +1 -1
  257. package/dist/web/assets/{chunk-55IACEB6-Bb-pPIxs.js → chunk-55IACEB6-CzJzh0tH.js} +1 -1
  258. package/dist/web/assets/{chunk-727SXJPM-CAiaySk6.js → chunk-727SXJPM-Bp5EOgoG.js} +1 -1
  259. package/dist/web/assets/{chunk-AQP2D5EJ-ChCLJ4Wv.js → chunk-AQP2D5EJ-BaLnh9ac.js} +1 -1
  260. package/dist/web/assets/{chunk-FMBD7UC4-Kz0Cc0mv.js → chunk-FMBD7UC4-BcbzC8r4.js} +1 -1
  261. package/dist/web/assets/{chunk-ND2GUHAM-BttoT7UR.js → chunk-ND2GUHAM-DkT5Stbd.js} +1 -1
  262. package/dist/web/assets/{chunk-QZHKN3VN-BcVhzXXK.js → chunk-QZHKN3VN-DszScpAV.js} +1 -1
  263. package/dist/web/assets/{circle-alert-D67xfWMs.js → circle-alert-ChWS5BPS.js} +1 -1
  264. package/dist/web/assets/classDiagram-4FO5ZUOK-ulXJsBKw.js +1 -0
  265. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-ulXJsBKw.js +1 -0
  266. package/dist/web/assets/{code-block-OCS4YCEC-CMA1utSp.js → code-block-OCS4YCEC-G8tEtSdL.js} +1 -1
  267. package/dist/web/assets/{confirm-dialog-BWvZEHpu.js → confirm-dialog-0vHzUzvI.js} +1 -1
  268. package/dist/web/assets/{cose-bilkent-S5V4N54A-B391zTey.js → cose-bilkent-S5V4N54A-DueZsNr5.js} +1 -1
  269. package/dist/web/assets/cssMode-Dqx3XDOC.js +1 -0
  270. package/dist/web/assets/{dagre-BM42HDAG-CymH_FEZ.js → dagre-BM42HDAG-BkQGrA8s.js} +1 -1
  271. package/dist/web/assets/{diagram-2AECGRRQ-DXOIiLDr.js → diagram-2AECGRRQ-D4qtEjjj.js} +1 -1
  272. package/dist/web/assets/{diagram-5GNKFQAL-B9ocgjdh.js → diagram-5GNKFQAL-ZuFk-7GO.js} +1 -1
  273. package/dist/web/assets/{diagram-KO2AKTUF-DLMpk9Wg.js → diagram-KO2AKTUF-kwBr5lw0.js} +1 -1
  274. package/dist/web/assets/{diagram-LMA3HP47-BBnF83je.js → diagram-LMA3HP47-m88-mNyr.js} +1 -1
  275. package/dist/web/assets/{diagram-OG6HWLK6-AK4FunVI.js → diagram-OG6HWLK6-B9gV1dxA.js} +1 -1
  276. package/dist/web/assets/{erDiagram-TEJ5UH35-B1mryURg.js → erDiagram-TEJ5UH35-De_DsoOX.js} +1 -1
  277. package/dist/web/assets/{flowDiagram-I6XJVG4X-BjIG_1l5.js → flowDiagram-I6XJVG4X-9VwLS0b3.js} +1 -1
  278. package/dist/web/assets/{folder-picker-CaM_drIJ.js → folder-picker-B0khMt7A.js} +1 -1
  279. package/dist/web/assets/{freemarker2-Dj1C_6Ng.js → freemarker2-CLp1Yffb.js} +2 -2
  280. package/dist/web/assets/{ganttDiagram-6RSMTGT7-DjR6lyIQ.js → ganttDiagram-6RSMTGT7-DoOyYr5i.js} +1 -1
  281. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-BpW2L4ry.js → gitGraphDiagram-PVQCEYII-CMGuTxMz.js} +1 -1
  282. package/dist/web/assets/handlebars-CmLfR6Uy.js +1 -0
  283. package/dist/web/assets/html-D34UDOLc.js +1 -0
  284. package/dist/web/assets/htmlMode-qjrvkZFJ.js +1 -0
  285. package/dist/web/assets/{index-DaRxJqVy.js → index-DI7lHrAR.js} +4 -4
  286. package/dist/web/assets/index-DrzmyANC.js +122 -0
  287. package/dist/web/assets/index-MMCbS8_L.css +1 -0
  288. package/dist/web/assets/{infoDiagram-5YYISTIA-Cu-PA_-6.js → infoDiagram-5YYISTIA-gUCDmQX7.js} +1 -1
  289. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-S6Esbkdw.js → ishikawaDiagram-YF4QCWOH-CmfFhhIz.js} +1 -1
  290. package/dist/web/assets/javascript-D5tp0LcO.js +1 -0
  291. package/dist/web/assets/{journeyDiagram-JHISSGLW-wPF9FT9V.js → journeyDiagram-JHISSGLW-BvV5GoR_.js} +1 -1
  292. package/dist/web/assets/{jsonMode-D6IoFlQF.js → jsonMode-BbjYNQ7Q.js} +4 -4
  293. package/dist/web/assets/{kanban-definition-UN3LZRKU-C4jl9zOj.js → kanban-definition-UN3LZRKU-BpTm0MC-.js} +1 -1
  294. package/dist/web/assets/{layers-hQUUT3Gb.js → layers-DslPQJ3T.js} +1 -1
  295. package/dist/web/assets/{linear-D83xDp0H.js → linear-BJ_g8wqu.js} +1 -1
  296. package/dist/web/assets/liquid-DBu3_6XS.js +1 -0
  297. package/dist/web/assets/{lspLanguageFeatures-CUyibjAN.js → lspLanguageFeatures-PSX0tqnR.js} +1 -1
  298. package/dist/web/assets/mdx-Bb4nrA8s.js +1 -0
  299. package/dist/web/assets/{mermaid-NOHMQCX5-CGCWmHha.js → mermaid-NOHMQCX5-B44shuzc.js} +45 -45
  300. package/dist/web/assets/{message-square-B-uYQiTq.js → message-square-C-22K3oa.js} +1 -1
  301. package/dist/web/assets/{mindmap-definition-RKZ34NQL-D5v2uvjn.js → mindmap-definition-RKZ34NQL-DS5GLydx.js} +1 -1
  302. package/dist/web/assets/{modal-D87uszzb.js → modal-CFVLBZ5p.js} +1 -1
  303. package/dist/web/assets/{monaco-B25-2nEB.js → monaco-CkaUvvB4.js} +3 -3
  304. package/dist/web/assets/{pencil-CY2RnQrx.js → pencil-DB3VPszm.js} +1 -1
  305. package/dist/web/assets/{pieDiagram-4H26LBE5-6wdFz_7x.js → pieDiagram-4H26LBE5-C1PJJGsh.js} +1 -1
  306. package/dist/web/assets/python-BfodDYt4.js +1 -0
  307. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-C1CrGMEK.js → quadrantDiagram-W4KKPZXB-CzDfs-TQ.js} +1 -1
  308. package/dist/web/assets/razor-DdED1MBH.js +1 -0
  309. package/dist/web/assets/{requirementDiagram-4Y6WPE33-mDtZrxpp.js → requirementDiagram-4Y6WPE33-qHbU7oZa.js} +1 -1
  310. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-hBlj0XoH.js → sankeyDiagram-5OEKKPKP-BfRgrEeN.js} +1 -1
  311. package/dist/web/assets/select-CL78HCY0.js +1 -0
  312. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DsWmMm20.js → sequenceDiagram-3UESZ5HK-CGTNzKk3.js} +1 -1
  313. package/dist/web/assets/{server-qlZupTvg.js → server-Cd7APx6v.js} +1 -1
  314. package/dist/web/assets/{stateDiagram-AJRCARHV-VNyX1L66.js → stateDiagram-AJRCARHV-BY1LJ4b7.js} +1 -1
  315. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-BV_JKRZC.js +1 -0
  316. package/dist/web/assets/{switch-1pvXCcP-.js → switch-DmQ0Brgd.js} +1 -1
  317. package/dist/web/assets/{textarea-D9oaz-Ba.js → textarea-DOte4pMQ.js} +1 -1
  318. package/dist/web/assets/{timeline-definition-PNZ67QCA-DuBxxd9E.js → timeline-definition-PNZ67QCA-BBhCKsly.js} +1 -1
  319. package/dist/web/assets/{trash-2-C0P8jNpJ.js → trash-2-BSAHXKfW.js} +1 -1
  320. package/dist/web/assets/{tsMode-ogL-3MSe.js → tsMode-B6rHoWny.js} +2 -2
  321. package/dist/web/assets/typescript-C2A3q8UY.js +1 -0
  322. package/dist/web/assets/{upload-BYgsDplu.js → upload-e87qV_RH.js} +1 -1
  323. package/dist/web/assets/{use-profiles-BkGnmson.js → use-profiles-Cv2zBJOC.js} +1 -1
  324. package/dist/web/assets/{use-projects-B4w00h5I.js → use-projects-C8WDJXdj.js} +1 -1
  325. package/dist/web/assets/use-providers-CnpIgITQ.js +1 -0
  326. package/dist/web/assets/{useNormalizedLogs-MsDkcnRQ.js → useNormalizedLogs-AbIXa8s-.js} +1 -1
  327. package/dist/web/assets/{vennDiagram-CIIHVFJN-RbPPOLBo.js → vennDiagram-CIIHVFJN-DrDrt_Jg.js} +1 -1
  328. package/dist/web/assets/{wardley-L42UT6IY-DXzUbdMF.js → wardley-L42UT6IY-CMYQm14y.js} +1 -1
  329. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-B0QXobQM.js → wardleyDiagram-YWT4CUSO-COLA9A80.js} +1 -1
  330. package/dist/web/assets/xml-D4xDxfjR.js +1 -0
  331. package/dist/web/assets/{xychartDiagram-2RQKCTM6-C7bFJItM.js → xychartDiagram-2RQKCTM6-BDegkKoT.js} +1 -1
  332. package/dist/web/assets/yaml-yJExA7tq.js +1 -0
  333. package/dist/web/index.html +2 -2
  334. package/node_modules/@agent-tower/shared/dist/execution-permission.d.ts +19 -0
  335. package/node_modules/@agent-tower/shared/dist/execution-permission.d.ts.map +1 -0
  336. package/node_modules/@agent-tower/shared/dist/execution-permission.js +53 -0
  337. package/node_modules/@agent-tower/shared/dist/execution-permission.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/provider-capabilities.d.ts +6 -5
  343. package/node_modules/@agent-tower/shared/dist/provider-capabilities.d.ts.map +1 -1
  344. package/node_modules/@agent-tower/shared/dist/provider-capabilities.js.map +1 -1
  345. package/node_modules/@agent-tower/shared/dist/types.d.ts +49 -2
  346. package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
  347. package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
  348. package/package.json +1 -1
  349. package/dist/web/assets/ConversationPage-BINGA8XL.js +0 -3
  350. package/dist/web/assets/CreateTaskInput-8bLhHYOc.js +0 -1
  351. package/dist/web/assets/ProjectKanbanPage-D7RJm4yg.js +0 -92
  352. package/dist/web/assets/ProviderSettingsPage-BlgfQMwe.js +0 -95
  353. package/dist/web/assets/channel-B8s9dqlX.js +0 -1
  354. package/dist/web/assets/check-C1zWgxFO.js +0 -1
  355. package/dist/web/assets/classDiagram-4FO5ZUOK-61bPx188.js +0 -1
  356. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-61bPx188.js +0 -1
  357. package/dist/web/assets/cssMode-CNU1q_Gl.js +0 -1
  358. package/dist/web/assets/handlebars-DNXOgRZc.js +0 -1
  359. package/dist/web/assets/html-C20FgNS-.js +0 -1
  360. package/dist/web/assets/htmlMode-CtcV1Ktd.js +0 -1
  361. package/dist/web/assets/index-dElqH2UR.css +0 -1
  362. package/dist/web/assets/index-oC5eh7mZ.js +0 -122
  363. package/dist/web/assets/javascript-CFAVZ6Tb.js +0 -1
  364. package/dist/web/assets/liquid-CuzuRJIN.js +0 -1
  365. package/dist/web/assets/mdx-C3rxTvel.js +0 -1
  366. package/dist/web/assets/python-BYGLbOzO.js +0 -1
  367. package/dist/web/assets/razor-m0U9iUAj.js +0 -1
  368. package/dist/web/assets/select-D7WkUiad.js +0 -1
  369. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-DHz3oGyD.js +0 -1
  370. package/dist/web/assets/typescript-rHoDxTY8.js +0 -1
  371. package/dist/web/assets/use-providers-B70-BYNu.js +0 -1
  372. package/dist/web/assets/xml-BqnpQrAq.js +0 -1
  373. package/dist/web/assets/yaml-mz2Zn_K2.js +0 -1
@@ -0,0 +1,200 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdtemp, chmod, writeFile, rm } from 'node:fs/promises';
3
+ import { createServer } from 'node:net';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ const MAX_FRAME = 16 * 1024 * 1024;
7
+ const DEADLINE_MS = 10_000;
8
+ /** Private launch-scoped IPC. Agent stdio never travels through the terminal PTY. */
9
+ export async function createCliDuplexChannel() {
10
+ const dir = await mkdtemp(path.join(os.tmpdir(), 'tower-duplex-'));
11
+ await chmod(dir, 0o700);
12
+ const endpoint = process.platform === 'win32' ? `\\\\.\\pipe\\tower-duplex-${randomUUID()}` : path.join(dir, 'io.sock');
13
+ const secret = randomUUID();
14
+ let socket;
15
+ let listener;
16
+ let events = [];
17
+ let buffered = 0;
18
+ let failure;
19
+ let ended = false;
20
+ let outputConsumed = false;
21
+ let seq = 0;
22
+ let serial = Promise.resolve();
23
+ let connected;
24
+ let rejectConnection;
25
+ const connection = new Promise((resolve, reject) => { connected = resolve; rejectConnection = reject; });
26
+ void connection.catch(() => undefined);
27
+ const connectionTimer = setTimeout(() => fail(new Error('CLI I/O connection timed out')), DEADLINE_MS);
28
+ const pending = new Map();
29
+ const deliver = (event) => {
30
+ if (event.type === 'output_complete') {
31
+ outputConsumed = true;
32
+ socket?.write(JSON.stringify({ type: 'output_consumed' }) + '\n');
33
+ }
34
+ else
35
+ listener?.(event);
36
+ };
37
+ const emit = (event) => {
38
+ if (listener)
39
+ deliver(event);
40
+ else {
41
+ buffered += 'data' in event ? Buffer.byteLength(event.data) : 0;
42
+ if (buffered > MAX_FRAME) {
43
+ fail(new Error('CLI early output exceeded its limit'));
44
+ return;
45
+ }
46
+ events.push(event);
47
+ }
48
+ };
49
+ const fail = (error) => {
50
+ if (failure)
51
+ return;
52
+ failure = error;
53
+ clearTimeout(connectionTimer);
54
+ rejectConnection(error);
55
+ buffered = 0;
56
+ for (const item of pending.values()) {
57
+ clearTimeout(item.timer);
58
+ item.reject(error);
59
+ }
60
+ pending.clear();
61
+ socket?.destroy();
62
+ emit({ type: 'disconnected', error });
63
+ };
64
+ const server = createServer(candidate => {
65
+ if (socket || failure) {
66
+ candidate.destroy();
67
+ return;
68
+ }
69
+ let authenticated = false;
70
+ let buffer = '';
71
+ candidate.setEncoding('utf8');
72
+ candidate.on('error', () => { if (authenticated)
73
+ fail(new Error('CLI I/O failed')); });
74
+ candidate.on('close', () => { if (authenticated && !outputConsumed)
75
+ fail(new Error('CLI I/O disconnected')); });
76
+ candidate.on('data', (data) => {
77
+ buffer += data;
78
+ if (buffer.length > MAX_FRAME) {
79
+ candidate.destroy();
80
+ if (authenticated)
81
+ fail(new Error('CLI I/O frame exceeded its limit'));
82
+ return;
83
+ }
84
+ let newline;
85
+ while ((newline = buffer.indexOf('\n')) >= 0) {
86
+ const line = buffer.slice(0, newline);
87
+ buffer = buffer.slice(newline + 1);
88
+ try {
89
+ const frame = JSON.parse(line);
90
+ if (!authenticated) {
91
+ if (frame.type !== 'hello' || frame.secret !== secret) {
92
+ candidate.destroy();
93
+ return;
94
+ }
95
+ authenticated = true;
96
+ socket = candidate;
97
+ clearTimeout(connectionTimer);
98
+ connected();
99
+ continue;
100
+ }
101
+ if (frame.type === 'ack') {
102
+ const item = pending.get(frame.id);
103
+ if (!item)
104
+ continue;
105
+ pending.delete(frame.id);
106
+ clearTimeout(item.timer);
107
+ if (frame.error) {
108
+ const error = new Error('CLI stdin write failed');
109
+ item.reject(error);
110
+ fail(error);
111
+ }
112
+ else
113
+ item.resolve();
114
+ }
115
+ else if ((frame.type === 'stdout' || frame.type === 'stderr') && typeof frame.data === 'string') {
116
+ emit({ type: frame.type, data: frame.data });
117
+ }
118
+ else if (frame.type === 'eof')
119
+ emit({ type: 'eof' });
120
+ else if (frame.type === 'output_complete')
121
+ emit({ type: 'output_complete' });
122
+ else
123
+ throw new Error('Invalid CLI I/O frame');
124
+ }
125
+ catch {
126
+ fail(new Error('Invalid CLI I/O frame'));
127
+ return;
128
+ }
129
+ }
130
+ });
131
+ const authTimer = setTimeout(() => { if (!authenticated)
132
+ candidate.destroy(); }, DEADLINE_MS);
133
+ authTimer.unref();
134
+ candidate.once('close', () => clearTimeout(authTimer));
135
+ });
136
+ try {
137
+ await new Promise((resolve, reject) => { server.once('error', reject); server.listen(endpoint, resolve); });
138
+ if (process.platform !== 'win32')
139
+ await chmod(endpoint, 0o600);
140
+ const configFile = path.join(dir, 'launch.json');
141
+ await writeFile(configFile, JSON.stringify({ endpoint, secret }), { mode: 0o600 });
142
+ const send = (type, data, isCurrent) => {
143
+ const operation = serial.then(async () => {
144
+ await connection;
145
+ if (failure)
146
+ throw failure;
147
+ if (outputConsumed)
148
+ throw new Error('CLI output has ended');
149
+ if (isCurrent && !isCurrent())
150
+ throw new Error('CLI request is no longer active');
151
+ if (ended)
152
+ throw new Error('CLI stdin has ended');
153
+ if (!socket || socket.destroyed)
154
+ throw new Error('CLI I/O is not connected');
155
+ if (type === 'end')
156
+ ended = true;
157
+ const id = ++seq;
158
+ const frame = JSON.stringify({ type, id, data }) + '\n';
159
+ if (Buffer.byteLength(frame) > MAX_FRAME)
160
+ throw new Error('CLI input exceeded its limit');
161
+ await new Promise((resolve, reject) => {
162
+ const timer = setTimeout(() => fail(new Error('CLI stdin write timed out')), DEADLINE_MS);
163
+ pending.set(id, { resolve, reject, timer });
164
+ socket.write(frame, error => { if (error)
165
+ fail(new Error('CLI stdin write failed')); });
166
+ });
167
+ });
168
+ serial = operation.catch(() => undefined);
169
+ return operation;
170
+ };
171
+ return {
172
+ configFile,
173
+ subscribe(next) {
174
+ if (listener)
175
+ throw new Error('CLI I/O already has a reader');
176
+ listener = next;
177
+ const early = events;
178
+ events = [];
179
+ buffered = 0;
180
+ for (const event of early)
181
+ deliver(event);
182
+ return () => { if (listener === next)
183
+ listener = undefined; };
184
+ },
185
+ write: (data, current) => send('write', data, current),
186
+ end: () => send('end'),
187
+ close() {
188
+ fail(new Error('CLI I/O closed'));
189
+ server.close();
190
+ void rm(dir, { recursive: true, force: true }).catch(() => undefined);
191
+ },
192
+ };
193
+ }
194
+ catch (error) {
195
+ server.close();
196
+ await rm(dir, { recursive: true, force: true });
197
+ throw error;
198
+ }
199
+ }
200
+ //# sourceMappingURL=cli-duplex-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-duplex-channel.js","sourceRoot":"","sources":["../../src/utils/cli-duplex-channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli-duplex-channel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-duplex-channel.test.d.ts","sourceRoot":"","sources":["../../src/utils/cli-duplex-channel.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,191 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { once } from 'node:events';
3
+ import { mkdtemp, rm, writeFile, readFile } from 'node:fs/promises';
4
+ import { createServer } from 'node:net';
5
+ import os from 'node:os';
6
+ import path from 'node:path';
7
+ import { describe, it, expect } from 'vitest';
8
+ import { createCliDuplexChannel } from './cli-duplex-channel.js';
9
+ import { buildPtyCommandWithDuplex, buildPtyWrapperEnv } from './process-launch.js';
10
+ async function waitUntil(test, timeoutMs = 5000) {
11
+ const deadline = Date.now() + timeoutMs;
12
+ while (!test() && Date.now() < deadline)
13
+ await new Promise(r => setTimeout(r, 10));
14
+ expect(test()).toBe(true);
15
+ }
16
+ describe('launch-scoped duplex transport', () => {
17
+ it('waits for the late reader to consume result, usage and EOF before wrapper exit', async () => {
18
+ const io = await createCliDuplexChannel();
19
+ const dir = await mkdtemp(path.join(os.tmpdir(), 'tower-duplex-late-reader-'));
20
+ const rootExit = path.join(dir, 'root-exit');
21
+ const invocation = buildPtyCommandWithDuplex(process.execPath, ['-e', `process.stdout.write(JSON.stringify({type:'result',usage:{input_tokens:17,output_tokens:9}})+'\\n',()=>{require('node:fs').writeFileSync(process.argv[1],'done');process.exit(0);});`, rootExit], io.configFile);
22
+ const child = spawn(invocation.command, invocation.args, { env: buildPtyWrapperEnv(process.env), stdio: 'ignore' });
23
+ const exit = once(child, 'exit');
24
+ const events = [];
25
+ try {
26
+ await waitUntil(() => child.pid !== undefined);
27
+ const deadline = Date.now() + 5000;
28
+ while (!(await readFile(rootExit, 'utf8').catch(() => '')) && Date.now() < deadline)
29
+ await new Promise(r => setTimeout(r, 10));
30
+ expect(await readFile(rootExit, 'utf8')).toBe('done');
31
+ await new Promise(r => setTimeout(r, 350));
32
+ expect(child.exitCode).toBeNull();
33
+ io.subscribe(event => events.push(event));
34
+ await exit;
35
+ expect(child.exitCode).toBe(0);
36
+ expect(events.flatMap(e => e.type === 'stdout' ? [e.data] : []).join('')).toContain('"usage":{"input_tokens":17,"output_tokens":9}');
37
+ expect(events.at(-1)?.type).toBe('eof');
38
+ }
39
+ finally {
40
+ io.close();
41
+ if (child.exitCode === null) {
42
+ child.kill('SIGTERM');
43
+ await exit;
44
+ }
45
+ await rm(dir, { recursive: true, force: true });
46
+ }
47
+ }, 10_000);
48
+ it('drains backpressured output beyond 100ms and cleans a hung descendant before consumption ACK', async () => {
49
+ const dir = await mkdtemp(path.join(os.tmpdir(), 'tower-duplex-backpressure-'));
50
+ const endpoint = path.join(dir, 'io.sock');
51
+ const configFile = path.join(dir, 'launch.json');
52
+ await writeFile(configFile, JSON.stringify({ endpoint, secret: 'test' }));
53
+ let peer;
54
+ let output = '';
55
+ let buffer = '';
56
+ let eof = false;
57
+ let complete = false;
58
+ let startedAt = 0;
59
+ let consumedAt = 0;
60
+ const server = createServer(socket => {
61
+ peer = socket;
62
+ socket.setEncoding('utf8');
63
+ socket.on('data', data => {
64
+ buffer += data;
65
+ let newline;
66
+ while ((newline = buffer.indexOf('\n')) >= 0) {
67
+ const frame = JSON.parse(buffer.slice(0, newline));
68
+ buffer = buffer.slice(newline + 1);
69
+ if (frame.type === 'hello') {
70
+ startedAt = Date.now();
71
+ socket.pause();
72
+ setTimeout(() => socket.resume(), 350);
73
+ }
74
+ else if (frame.type === 'stdout')
75
+ output += frame.data;
76
+ else if (frame.type === 'eof')
77
+ eof = true;
78
+ else if (frame.type === 'output_complete')
79
+ complete = true;
80
+ }
81
+ });
82
+ });
83
+ await new Promise(resolve => server.listen(endpoint, resolve));
84
+ const payload = 'x'.repeat(4 * 1024 * 1024);
85
+ const script = `const {spawn}=require('node:child_process');const grand=spawn(process.execPath,['-e',"process.on('SIGHUP',()=>{});setInterval(()=>{},1000)"],{stdio:'inherit'});process.stdout.write('GRAND:'+grand.pid+'\\n');process.stdout.write('x'.repeat(4*1024*1024),()=>process.stdout.write('\\n'+JSON.stringify({type:'result',usage:{input_tokens:23,output_tokens:11}})+'\\n',()=>process.exit(0)));`;
86
+ const invocation = buildPtyCommandWithDuplex(process.execPath, ['-e', script], configFile);
87
+ const child = spawn(invocation.command, invocation.args, { env: buildPtyWrapperEnv(process.env), stdio: 'ignore' });
88
+ const exit = once(child, 'exit');
89
+ try {
90
+ await waitUntil(() => complete, 10_000);
91
+ consumedAt = Date.now();
92
+ expect(consumedAt - startedAt).toBeGreaterThan(300);
93
+ expect(eof).toBe(true);
94
+ expect(output).toContain(payload + '\n{"type":"result","usage":{"input_tokens":23,"output_tokens":11}}\n');
95
+ const pid = Number(/GRAND:(\d+)/.exec(output)?.[1]);
96
+ expect(pid).toBeGreaterThan(0);
97
+ expect(() => process.kill(pid, 0)).toThrow();
98
+ expect(child.exitCode).toBeNull();
99
+ peer.write(JSON.stringify({ type: 'output_consumed' }) + '\n');
100
+ await exit;
101
+ expect(child.exitCode).toBe(0);
102
+ }
103
+ finally {
104
+ peer?.destroy();
105
+ if (child.exitCode === null) {
106
+ child.kill('SIGTERM');
107
+ await exit;
108
+ }
109
+ await new Promise(resolve => server.close(() => resolve()));
110
+ await rm(dir, { recursive: true, force: true });
111
+ }
112
+ }, 15_000);
113
+ it('keeps real stdin open, separates Unicode stdout/stderr, serializes writes, and closes with EOF', async () => {
114
+ const io = await createCliDuplexChannel();
115
+ const events = [];
116
+ const script = `process.stdin.setEncoding('utf8'); let input=''; process.stdin.on('data', c=>{input+=c; process.stdout.write(c);}); process.stderr.write('诊断\\n'); process.stdin.on('end',()=>{process.stdout.write('EOF:'+input.length+'\\n');});`;
117
+ const invocation = buildPtyCommandWithDuplex(process.execPath, ['-e', script], io.configFile);
118
+ const child = spawn(invocation.command, invocation.args, { env: buildPtyWrapperEnv(process.env), stdio: 'ignore' });
119
+ const exit = once(child, 'exit');
120
+ const off = io.subscribe(event => events.push(event));
121
+ try {
122
+ await Promise.all([io.write('你好\n'), io.write('x'.repeat(100_000) + '\n'), io.write('last\n')]);
123
+ await waitUntil(() => events.some(e => e.type === 'stdout' && e.data.includes('last')));
124
+ expect(child.exitCode).toBeNull();
125
+ await io.end();
126
+ await exit;
127
+ const stdout = events.flatMap(e => e.type === 'stdout' ? [e.data] : []).join('');
128
+ const stderr = events.flatMap(e => e.type === 'stderr' ? [e.data] : []).join('');
129
+ expect(stdout).toContain('你好\n' + 'x'.repeat(100_000) + '\nlast\n');
130
+ expect(stdout).not.toContain('诊断');
131
+ expect(stderr).toBe('诊断\n');
132
+ expect(events.some(e => e.type === 'eof')).toBe(true);
133
+ await expect(io.write('late')).rejects.toThrow();
134
+ }
135
+ finally {
136
+ off();
137
+ io.close();
138
+ if (child.exitCode === null) {
139
+ child.kill('SIGTERM');
140
+ await exit;
141
+ }
142
+ }
143
+ }, 10_000);
144
+ it('cleans a descendant retaining stdout after the native root exits', async () => {
145
+ const io = await createCliDuplexChannel();
146
+ let output = '';
147
+ const script = `const {spawn}=require('node:child_process'); const grand=spawn(process.execPath,['-e','setInterval(()=>{},1000)'],{stdio:'inherit'}); process.stdout.write('GRAND:'+grand.pid+'\\n'); setTimeout(()=>process.exit(0),50);`;
148
+ const invocation = buildPtyCommandWithDuplex(process.execPath, ['-e', script], io.configFile);
149
+ const child = spawn(invocation.command, invocation.args, { env: buildPtyWrapperEnv(process.env), stdio: 'ignore' });
150
+ const exit = once(child, 'exit');
151
+ io.subscribe(event => { if (event.type === 'stdout')
152
+ output += event.data; });
153
+ try {
154
+ await exit;
155
+ const pid = Number(/GRAND:(\d+)/.exec(output)?.[1]);
156
+ expect(pid).toBeGreaterThan(0);
157
+ expect(() => process.kill(pid, 0)).toThrow();
158
+ }
159
+ finally {
160
+ io.close();
161
+ if (child.exitCode === null) {
162
+ child.kill('SIGTERM');
163
+ await exit;
164
+ }
165
+ }
166
+ }, 10_000);
167
+ it('rejects queued writes invalidated before delivery and cleans the child on host disconnect', async () => {
168
+ const io = await createCliDuplexChannel();
169
+ const dir = await mkdtemp(path.join(os.tmpdir(), 'tower-duplex-test-'));
170
+ const invocation = buildPtyCommandWithDuplex(process.execPath, ['-e', `process.stdin.resume(); setInterval(()=>{},1000);`], io.configFile);
171
+ const child = spawn(invocation.command, invocation.args, { cwd: dir, env: buildPtyWrapperEnv(process.env), stdio: 'ignore' });
172
+ const exit = once(child, 'exit');
173
+ io.subscribe(() => { });
174
+ try {
175
+ await io.write('first');
176
+ await expect(io.write('cancelled', () => false)).rejects.toThrow('no longer active');
177
+ io.close();
178
+ await exit;
179
+ expect(child.exitCode).not.toBeNull();
180
+ }
181
+ finally {
182
+ io.close();
183
+ if (child.exitCode === null) {
184
+ child.kill('SIGTERM');
185
+ await exit;
186
+ }
187
+ await rm(dir, { recursive: true, force: true });
188
+ }
189
+ }, 10_000);
190
+ });
191
+ //# sourceMappingURL=cli-duplex-channel.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-duplex-channel.test.js","sourceRoot":"","sources":["../../src/utils/cli-duplex-channel.test.ts"],"names":[],"mappings":"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"}
@@ -18,5 +18,6 @@ export declare function execAsync(command: string, options?: ExecOptions): Promi
18
18
  export declare function which(command: string, options?: {
19
19
  platform?: NodeJS.Platform;
20
20
  env?: NodeJS.ProcessEnv;
21
+ timeoutMs?: number;
21
22
  }): Promise<string | null>;
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAU3D,eAAO,MAAM,MAAM,+GAAqB,CAAC;AAEzC,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAczD;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7C;AAED;;;GAGG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CACnB,GACL,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAU3D,eAAO,MAAM,MAAM,+GAAqB,CAAC;AAEzC,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAczD;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7C;AAED;;;GAGG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACd,GACL,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB"}
@@ -43,6 +43,7 @@ export async function which(command, options = {}) {
43
43
  const { stdout } = await execFileAsync(lookupCommand, [command], {
44
44
  encoding: 'utf-8',
45
45
  windowsHide: true,
46
+ timeout: options.timeoutMs,
46
47
  env: platform === 'win32'
47
48
  ? withWindowsUserPathFallbacks(env)
48
49
  : platform === 'darwin' || platform === 'linux'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAoB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;AAC7B,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C,IAAI,6BAA6B,GAAyB,IAAI,CAAC;AAE/D;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,6BAA6B,EAAE,CAAC;QAClC,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,6BAA6B,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;QAC1D,MAAM,MAAM,CAAC,eAAe,CAAC,yBAAyB,sBAAsB,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnB,6BAA6B,GAAG,IAAI,CAAC;QACrC,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,6BAA6B,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAAqB;IAErB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAAe,EACf,UAGI,EAAE;IAEN,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;QACtD,MAAM,aAAa,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE;YAC/D,QAAQ,EAAE,OAAO;YACjB,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE,QAAQ,KAAK,OAAO;gBACvB,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC;gBACnC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO;oBAC7C,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,QAAQ,CAAC;oBAC1C,CAAC,CAAC,GAAG;SACV,CAAC,CAAC;QACH,OAAO,4BAA4B,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ export interface CommandInvocation {
2
2
  command: string;
3
3
  args: string[];
4
4
  }
5
+ export declare const PTY_WRAPPER_FORCE_KILL_GRACE_MS = 5000;
6
+ export declare const PTY_WRAPPER_EXIT_TIMEOUT_MS: number;
5
7
  export declare function getNodeRuntimeCommand(): string;
6
8
  export declare const PTY_WRAPPER_ENV_KEYS: readonly ["AGENT_TOWER_NODE_RUNTIME", "ELECTRON_RUN_AS_NODE", "AGENT_TOWER_TREE_CLEANUP_CHANNEL", "AGENT_TOWER_TREE_CLEANUP_SECRET", "AGENT_TOWER_PROCESS_IDENTITY", "AGENT_TOWER_PTY_IDENTITY_SEED"];
7
9
  export declare function buildPtyWrapperEnv(agentEnv: Record<string, string>, parentEnv?: NodeJS.ProcessEnv, ownershipToken?: string, cleanupChannel?: Record<string, string>): Record<string, string>;
@@ -17,4 +19,5 @@ export declare function withUnixUserPathFallbacks(env?: NodeJS.ProcessEnv, platf
17
19
  export declare function getDefaultTerminalShell(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv): CommandInvocation;
18
20
  export declare function getPtyLogFilePath(tmpDir?: string): string;
19
21
  export declare function normalizeCommandLookupOutput(stdout: string, platform?: NodeJS.Platform): string | null;
22
+ export declare function buildPtyCommandWithDuplex(programPath: string, args: string[], configFile: string): CommandInvocation;
20
23
  //# sourceMappingURL=process-launch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-launch.d.ts","sourceRoot":"","sources":["../../src/utils/process-launch.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAcD,eAAO,MAAM,oBAAoB,uMAOvB,CAAC;AAEX,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,GAAE,MAAM,CAAC,UAAwB,EAC1C,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkCxB;AAslBD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAK5E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAKtF;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAKnB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1F;AAaD,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAmB/F;AAED,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAQpG;AAkCD,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,GAAE,QAAQ,GAAG,OAA4D,GAChF,MAAM,GAAG,SAAS,CAkCpB;AAED,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,QAAQ,GAAG,OAA4D,GAChF,MAAM,CAAC,UAAU,CAOnB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,CAYnB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,MAAoB,GAAG,MAAM,CAEtE;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CAkBf"}
1
+ {"version":3,"file":"process-launch.d.ts","sourceRoot":"","sources":["../../src/utils/process-launch.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AAErD,eAAO,MAAM,2BAA2B,QAA0C,CAAC;AAEnF,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAcD,eAAO,MAAM,oBAAoB,uMAOvB,CAAC;AAEX,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,GAAE,MAAM,CAAC,UAAwB,EAC1C,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkCxB;AAusBD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAK5E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAKtF;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,GAChB,iBAAiB,CAKnB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1F;AAaD,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAmB/F;AAED,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAQpG;AAkCD,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,GAAE,QAAQ,GAAG,OAA4D,GAChF,MAAM,GAAG,SAAS,CAkCpB;AAED,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,QAAQ,GAAG,OAA4D,GAChF,MAAM,CAAC,UAAU,CAOnB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,CAYnB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,MAAoB,GAAG,MAAM,CAEtE;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,IAAI,CAkBf;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAEpH"}