agent-tower 0.7.1-beta.2 → 0.7.1-beta.4

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 (379) 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/__tests__/workspaces.test.js +48 -6
  57. package/dist/routes/__tests__/workspaces.test.js.map +1 -1
  58. package/dist/routes/providers.d.ts +2 -0
  59. package/dist/routes/providers.d.ts.map +1 -1
  60. package/dist/routes/providers.js +79 -34
  61. package/dist/routes/providers.js.map +1 -1
  62. package/dist/routes/sessions.js +2 -2
  63. package/dist/routes/sessions.js.map +1 -1
  64. package/dist/runtime/__tests__/acp-agent-definitions.test.js +54 -6
  65. package/dist/runtime/__tests__/acp-agent-definitions.test.js.map +1 -1
  66. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +85 -12
  67. package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -1
  68. package/dist/runtime/__tests__/acp-driver.test.js +38 -1
  69. package/dist/runtime/__tests__/acp-driver.test.js.map +1 -1
  70. package/dist/runtime/__tests__/claude-cli-control.test.d.ts +2 -0
  71. package/dist/runtime/__tests__/claude-cli-control.test.d.ts.map +1 -0
  72. package/dist/runtime/__tests__/claude-cli-control.test.js +147 -0
  73. package/dist/runtime/__tests__/claude-cli-control.test.js.map +1 -0
  74. package/dist/runtime/__tests__/claude-cli-driver.test.d.ts +2 -0
  75. package/dist/runtime/__tests__/claude-cli-driver.test.d.ts.map +1 -0
  76. package/dist/runtime/__tests__/claude-cli-driver.test.js +327 -0
  77. package/dist/runtime/__tests__/claude-cli-driver.test.js.map +1 -0
  78. package/dist/runtime/__tests__/cli-driver-lifecycle.test.js +107 -2
  79. package/dist/runtime/__tests__/cli-driver-lifecycle.test.js.map +1 -1
  80. package/dist/runtime/__tests__/codex-cli-control.test.d.ts +2 -0
  81. package/dist/runtime/__tests__/codex-cli-control.test.d.ts.map +1 -0
  82. package/dist/runtime/__tests__/codex-cli-control.test.js +287 -0
  83. package/dist/runtime/__tests__/codex-cli-control.test.js.map +1 -0
  84. package/dist/runtime/__tests__/codex-cli-identity.test.d.ts +2 -0
  85. package/dist/runtime/__tests__/codex-cli-identity.test.d.ts.map +1 -0
  86. package/dist/runtime/__tests__/codex-cli-identity.test.js +166 -0
  87. package/dist/runtime/__tests__/codex-cli-identity.test.js.map +1 -0
  88. package/dist/runtime/__tests__/codex-runtime-resolution.test.js +34 -0
  89. package/dist/runtime/__tests__/codex-runtime-resolution.test.js.map +1 -1
  90. package/dist/runtime/__tests__/runtime-coordinator.test.js +74 -0
  91. package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -1
  92. package/dist/runtime/acp/acp-driver.d.ts.map +1 -1
  93. package/dist/runtime/acp/acp-driver.js +27 -9
  94. package/dist/runtime/acp/acp-driver.js.map +1 -1
  95. package/dist/runtime/acp/agents/claude-code.d.ts.map +1 -1
  96. package/dist/runtime/acp/agents/claude-code.js +6 -11
  97. package/dist/runtime/acp/agents/claude-code.js.map +1 -1
  98. package/dist/runtime/acp/agents/codex.d.ts.map +1 -1
  99. package/dist/runtime/acp/agents/codex.js +15 -6
  100. package/dist/runtime/acp/agents/codex.js.map +1 -1
  101. package/dist/runtime/acp/agents/cursor-agent.d.ts.map +1 -1
  102. package/dist/runtime/acp/agents/cursor-agent.js +2 -1
  103. package/dist/runtime/acp/agents/cursor-agent.js.map +1 -1
  104. package/dist/runtime/acp/agents/deepseek-hermes.js +3 -3
  105. package/dist/runtime/acp/agents/deepseek-hermes.js.map +1 -1
  106. package/dist/runtime/acp/agents/gemini-cli.d.ts.map +1 -1
  107. package/dist/runtime/acp/agents/gemini-cli.js +1 -0
  108. package/dist/runtime/acp/agents/gemini-cli.js.map +1 -1
  109. package/dist/runtime/acp/agents/grok-build.d.ts.map +1 -1
  110. package/dist/runtime/acp/agents/grok-build.js +4 -1
  111. package/dist/runtime/acp/agents/grok-build.js.map +1 -1
  112. package/dist/runtime/acp/agents/kiro-cli.d.ts.map +1 -1
  113. package/dist/runtime/acp/agents/kiro-cli.js +2 -1
  114. package/dist/runtime/acp/agents/kiro-cli.js.map +1 -1
  115. package/dist/runtime/acp/agents/minion-code.js +1 -1
  116. package/dist/runtime/acp/agents/minion-code.js.map +1 -1
  117. package/dist/runtime/acp/agents/native-agent.d.ts +2 -0
  118. package/dist/runtime/acp/agents/native-agent.d.ts.map +1 -1
  119. package/dist/runtime/acp/agents/native-agent.js +12 -16
  120. package/dist/runtime/acp/agents/native-agent.js.map +1 -1
  121. package/dist/runtime/acp/agents/opencode.d.ts.map +1 -1
  122. package/dist/runtime/acp/agents/opencode.js +50 -2
  123. package/dist/runtime/acp/agents/opencode.js.map +1 -1
  124. package/dist/runtime/acp/agents/pi-coding-agent.d.ts.map +1 -1
  125. package/dist/runtime/acp/agents/pi-coding-agent.js +2 -5
  126. package/dist/runtime/acp/agents/pi-coding-agent.js.map +1 -1
  127. package/dist/runtime/acp/agents/qwen-code.d.ts.map +1 -1
  128. package/dist/runtime/acp/agents/qwen-code.js +9 -11
  129. package/dist/runtime/acp/agents/qwen-code.js.map +1 -1
  130. package/dist/runtime/acp/agents/types.d.ts +4 -2
  131. package/dist/runtime/acp/agents/types.d.ts.map +1 -1
  132. package/dist/runtime/acp/codex-cli-identity.d.ts +52 -0
  133. package/dist/runtime/acp/codex-cli-identity.d.ts.map +1 -0
  134. package/dist/runtime/acp/codex-cli-identity.js +179 -0
  135. package/dist/runtime/acp/codex-cli-identity.js.map +1 -0
  136. package/dist/runtime/acp/codex-provider-config.d.ts +15 -2
  137. package/dist/runtime/acp/codex-provider-config.d.ts.map +1 -1
  138. package/dist/runtime/acp/codex-provider-config.js +42 -5
  139. package/dist/runtime/acp/codex-provider-config.js.map +1 -1
  140. package/dist/runtime/claude-cli-control.d.ts +32 -0
  141. package/dist/runtime/claude-cli-control.d.ts.map +1 -0
  142. package/dist/runtime/claude-cli-control.js +156 -0
  143. package/dist/runtime/claude-cli-control.js.map +1 -0
  144. package/dist/runtime/cli-action-summary.d.ts +3 -0
  145. package/dist/runtime/cli-action-summary.d.ts.map +1 -0
  146. package/dist/runtime/cli-action-summary.js +13 -0
  147. package/dist/runtime/cli-action-summary.js.map +1 -0
  148. package/dist/runtime/cli-driver.d.ts.map +1 -1
  149. package/dist/runtime/cli-driver.js +119 -26
  150. package/dist/runtime/cli-driver.js.map +1 -1
  151. package/dist/runtime/cli-parser.d.ts +4 -1
  152. package/dist/runtime/cli-parser.d.ts.map +1 -1
  153. package/dist/runtime/cli-parser.js +2 -2
  154. package/dist/runtime/cli-parser.js.map +1 -1
  155. package/dist/runtime/codex-cli-control.d.ts +63 -0
  156. package/dist/runtime/codex-cli-control.d.ts.map +1 -0
  157. package/dist/runtime/codex-cli-control.js +311 -0
  158. package/dist/runtime/codex-cli-control.js.map +1 -0
  159. package/dist/runtime/codex-cli-projector.d.ts +17 -0
  160. package/dist/runtime/codex-cli-projector.d.ts.map +1 -0
  161. package/dist/runtime/codex-cli-projector.js +80 -0
  162. package/dist/runtime/codex-cli-projector.js.map +1 -0
  163. package/dist/runtime/contracts.d.ts +12 -2
  164. package/dist/runtime/contracts.d.ts.map +1 -1
  165. package/dist/runtime/runtime-coordinator.d.ts +1 -1
  166. package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
  167. package/dist/runtime/runtime-coordinator.js +40 -6
  168. package/dist/runtime/runtime-coordinator.js.map +1 -1
  169. package/dist/services/__tests__/claude-cli-capabilities.service.test.d.ts +2 -0
  170. package/dist/services/__tests__/claude-cli-capabilities.service.test.d.ts.map +1 -0
  171. package/dist/services/__tests__/claude-cli-capabilities.service.test.js +37 -0
  172. package/dist/services/__tests__/claude-cli-capabilities.service.test.js.map +1 -0
  173. package/dist/services/__tests__/codex-cli-capabilities.service.test.d.ts +2 -0
  174. package/dist/services/__tests__/codex-cli-capabilities.service.test.d.ts.map +1 -0
  175. package/dist/services/__tests__/codex-cli-capabilities.service.test.js +35 -0
  176. package/dist/services/__tests__/codex-cli-capabilities.service.test.js.map +1 -0
  177. package/dist/services/__tests__/codex-model-capabilities.service.test.js +23 -2
  178. package/dist/services/__tests__/codex-model-capabilities.service.test.js.map +1 -1
  179. package/dist/services/__tests__/execution-permission.service.test.d.ts +2 -0
  180. package/dist/services/__tests__/execution-permission.service.test.d.ts.map +1 -0
  181. package/dist/services/__tests__/execution-permission.service.test.js +111 -0
  182. package/dist/services/__tests__/execution-permission.service.test.js.map +1 -0
  183. package/dist/services/__tests__/provider-config.service.test.js +1 -0
  184. package/dist/services/__tests__/provider-config.service.test.js.map +1 -1
  185. package/dist/services/__tests__/session-manager.lifecycle.test.js +151 -3
  186. package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
  187. package/dist/services/__tests__/workspace.service.test.js +38 -0
  188. package/dist/services/__tests__/workspace.service.test.js.map +1 -1
  189. package/dist/services/claude-cli-capabilities.service.d.ts +11 -0
  190. package/dist/services/claude-cli-capabilities.service.d.ts.map +1 -0
  191. package/dist/services/claude-cli-capabilities.service.js +54 -0
  192. package/dist/services/claude-cli-capabilities.service.js.map +1 -0
  193. package/dist/services/codex-cli-capabilities.service.d.ts +12 -0
  194. package/dist/services/codex-cli-capabilities.service.d.ts.map +1 -0
  195. package/dist/services/codex-cli-capabilities.service.js +65 -0
  196. package/dist/services/codex-cli-capabilities.service.js.map +1 -0
  197. package/dist/services/codex-model-capabilities.service.d.ts.map +1 -1
  198. package/dist/services/codex-model-capabilities.service.js +12 -1
  199. package/dist/services/codex-model-capabilities.service.js.map +1 -1
  200. package/dist/services/execution-permission.service.d.ts +30 -0
  201. package/dist/services/execution-permission.service.d.ts.map +1 -0
  202. package/dist/services/execution-permission.service.js +149 -0
  203. package/dist/services/execution-permission.service.js.map +1 -0
  204. package/dist/services/provider-config.service.d.ts.map +1 -1
  205. package/dist/services/provider-config.service.js +19 -29
  206. package/dist/services/provider-config.service.js.map +1 -1
  207. package/dist/services/session-manager.d.ts +9 -7
  208. package/dist/services/session-manager.d.ts.map +1 -1
  209. package/dist/services/session-manager.js +46 -7
  210. package/dist/services/session-manager.js.map +1 -1
  211. package/dist/services/task.service.d.ts +4 -4
  212. package/dist/services/workspace.service.d.ts +13 -7
  213. package/dist/services/workspace.service.d.ts.map +1 -1
  214. package/dist/services/workspace.service.js +1 -0
  215. package/dist/services/workspace.service.js.map +1 -1
  216. package/dist/utils/cli-duplex-channel.d.ts +21 -0
  217. package/dist/utils/cli-duplex-channel.d.ts.map +1 -0
  218. package/dist/utils/cli-duplex-channel.js +200 -0
  219. package/dist/utils/cli-duplex-channel.js.map +1 -0
  220. package/dist/utils/cli-duplex-channel.test.d.ts +2 -0
  221. package/dist/utils/cli-duplex-channel.test.d.ts.map +1 -0
  222. package/dist/utils/cli-duplex-channel.test.js +191 -0
  223. package/dist/utils/cli-duplex-channel.test.js.map +1 -0
  224. package/dist/utils/index.d.ts +1 -0
  225. package/dist/utils/index.d.ts.map +1 -1
  226. package/dist/utils/index.js +1 -0
  227. package/dist/utils/index.js.map +1 -1
  228. package/dist/utils/process-launch.d.ts +3 -0
  229. package/dist/utils/process-launch.d.ts.map +1 -1
  230. package/dist/utils/process-launch.js +129 -10
  231. package/dist/utils/process-launch.js.map +1 -1
  232. package/dist/utils/process-launch.test.js +103 -0
  233. package/dist/utils/process-launch.test.js.map +1 -1
  234. package/dist/web/assets/{AgentDemoPage-B6pABvRL.js → AgentDemoPage-B__0_CPX.js} +1 -1
  235. package/dist/web/assets/{AgentEnvironmentSettingsPage-CqMfdwkM.js → AgentEnvironmentSettingsPage-uSnG5iV3.js} +1 -1
  236. package/dist/web/assets/{AgentLogo-Ntqe3_Mx.js → AgentLogo-CoAT8dNB.js} +1 -1
  237. package/dist/web/assets/ConversationPage-BOfzGTyj.js +3 -0
  238. package/dist/web/assets/CreateTaskInput-DwQsAlWX.js +1 -0
  239. package/dist/web/assets/{DemoPage-D1Ki6sJ0.js → DemoPage-CuDLCuUQ.js} +1 -1
  240. package/dist/web/assets/ExecutionPermissionSelector-Cu7Z72Yk.js +29 -0
  241. package/dist/web/assets/{GeneralSettingsPage-DoAXPabw.js → GeneralSettingsPage-CmG_TW4-.js} +1 -1
  242. package/dist/web/assets/{Icons-KJJd6C8K.js → Icons-B6q-ul89.js} +1 -1
  243. package/dist/web/assets/{LoadingPreviewPage-BqCKBvgv.js → LoadingPreviewPage-Db5WcYw_.js} +1 -1
  244. package/dist/web/assets/{McpSettingsPage-QXVD4XCW.js → McpSettingsPage-CQV1RaHW.js} +1 -1
  245. package/dist/web/assets/{MemberAvatar-kbJEoyh0.js → MemberAvatar-BQA5sE4L.js} +1 -1
  246. package/dist/web/assets/{NotificationSettingsPage-BrqSeU--.js → NotificationSettingsPage-BGKJ6wO0.js} +1 -1
  247. package/dist/web/assets/{ProfileSettingsPage-BmWgVdnG.js → ProfileSettingsPage-dTvp-LFa.js} +1 -1
  248. package/dist/web/assets/{ProjectKanbanPage-D7RJm4yg.js → ProjectKanbanPage-CHZc9WB7.js} +35 -35
  249. package/dist/web/assets/{ProjectSettingsPage-BVINN99w.js → ProjectSettingsPage-CwLXTwwe.js} +1 -1
  250. package/dist/web/assets/ProviderSettingsPage-Ced1VN2f.js +67 -0
  251. package/dist/web/assets/{SettingsMasterDetail-OF28cvPV.js → SettingsMasterDetail-CEZsOwjq.js} +1 -1
  252. package/dist/web/assets/{TeamSettingsPage-BWGm0m7s.js → TeamSettingsPage-lErIz31n.js} +1 -1
  253. package/dist/web/assets/{arc-CqFgRaZU.js → arc-CgQPLQJF.js} +1 -1
  254. package/dist/web/assets/{architectureDiagram-3BPJPVTR-C0PMdIZJ.js → architectureDiagram-3BPJPVTR-BRns2_cB.js} +1 -1
  255. package/dist/web/assets/{blockDiagram-GPEHLZMM-SqqtxqkX.js → blockDiagram-GPEHLZMM-DUIPlzPN.js} +1 -1
  256. package/dist/web/assets/{c4Diagram-AAUBKEIU-DYJXB3xL.js → c4Diagram-AAUBKEIU-BfWsGU4R.js} +1 -1
  257. package/dist/web/assets/channel-CYUMBIeW.js +1 -0
  258. package/dist/web/assets/check-C_RQ5zOf.js +1 -0
  259. package/dist/web/assets/{chevron-down-BZfpVhYr.js → chevron-down-Dz61D9cJ.js} +1 -1
  260. package/dist/web/assets/{chevron-right-D52zUyOF.js → chevron-right-q_hHAFb1.js} +1 -1
  261. package/dist/web/assets/{chevron-up-CFOy5dmW.js → chevron-up-ChWM4fJS.js} +1 -1
  262. package/dist/web/assets/{chunk-2J33WTMH-DQCbv8W_.js → chunk-2J33WTMH-DOverrRX.js} +1 -1
  263. package/dist/web/assets/{chunk-4BX2VUAB-B_68_oNW.js → chunk-4BX2VUAB-BakE7rwb.js} +1 -1
  264. package/dist/web/assets/{chunk-55IACEB6-Bb-pPIxs.js → chunk-55IACEB6-BJY_hqWJ.js} +1 -1
  265. package/dist/web/assets/{chunk-727SXJPM-CAiaySk6.js → chunk-727SXJPM-Bz_y_ixN.js} +1 -1
  266. package/dist/web/assets/{chunk-AQP2D5EJ-ChCLJ4Wv.js → chunk-AQP2D5EJ-DPrP1E5u.js} +1 -1
  267. package/dist/web/assets/{chunk-FMBD7UC4-Kz0Cc0mv.js → chunk-FMBD7UC4--yjwIi92.js} +1 -1
  268. package/dist/web/assets/{chunk-ND2GUHAM-BttoT7UR.js → chunk-ND2GUHAM-BlN7Zpnx.js} +1 -1
  269. package/dist/web/assets/{chunk-QZHKN3VN-BcVhzXXK.js → chunk-QZHKN3VN-b97Y7iON.js} +1 -1
  270. package/dist/web/assets/{circle-alert-D67xfWMs.js → circle-alert-B3BU6yxp.js} +1 -1
  271. package/dist/web/assets/classDiagram-4FO5ZUOK-KLi01tMF.js +1 -0
  272. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-KLi01tMF.js +1 -0
  273. package/dist/web/assets/{code-block-OCS4YCEC-CMA1utSp.js → code-block-OCS4YCEC-pXxp6Ipb.js} +1 -1
  274. package/dist/web/assets/{confirm-dialog-BWvZEHpu.js → confirm-dialog-CeNfH2ZR.js} +1 -1
  275. package/dist/web/assets/{cose-bilkent-S5V4N54A-B391zTey.js → cose-bilkent-S5V4N54A-BE-ASlGZ.js} +1 -1
  276. package/dist/web/assets/cssMode-B8d06lCF.js +1 -0
  277. package/dist/web/assets/{dagre-BM42HDAG-CymH_FEZ.js → dagre-BM42HDAG-lAvNJn8H.js} +1 -1
  278. package/dist/web/assets/{diagram-2AECGRRQ-DXOIiLDr.js → diagram-2AECGRRQ-DBgI60j-.js} +1 -1
  279. package/dist/web/assets/{diagram-5GNKFQAL-B9ocgjdh.js → diagram-5GNKFQAL-BqFMhpcI.js} +1 -1
  280. package/dist/web/assets/{diagram-KO2AKTUF-DLMpk9Wg.js → diagram-KO2AKTUF-8dtMJ7XC.js} +1 -1
  281. package/dist/web/assets/{diagram-LMA3HP47-BBnF83je.js → diagram-LMA3HP47-CEbAGy_U.js} +1 -1
  282. package/dist/web/assets/{diagram-OG6HWLK6-AK4FunVI.js → diagram-OG6HWLK6-BTy4Wqho.js} +1 -1
  283. package/dist/web/assets/{erDiagram-TEJ5UH35-B1mryURg.js → erDiagram-TEJ5UH35-Fe0pjB7H.js} +1 -1
  284. package/dist/web/assets/{flowDiagram-I6XJVG4X-BjIG_1l5.js → flowDiagram-I6XJVG4X-Cn5xoMyS.js} +1 -1
  285. package/dist/web/assets/{folder-picker-CaM_drIJ.js → folder-picker-DlJ9hExj.js} +1 -1
  286. package/dist/web/assets/{freemarker2-Dj1C_6Ng.js → freemarker2-WBCTYbCf.js} +2 -2
  287. package/dist/web/assets/{ganttDiagram-6RSMTGT7-DjR6lyIQ.js → ganttDiagram-6RSMTGT7-Bwf7sOJW.js} +1 -1
  288. package/dist/web/assets/{gitGraphDiagram-PVQCEYII-BpW2L4ry.js → gitGraphDiagram-PVQCEYII-DEqHf_N3.js} +1 -1
  289. package/dist/web/assets/handlebars-aoMw8XNP.js +1 -0
  290. package/dist/web/assets/html-mP4L-gn5.js +1 -0
  291. package/dist/web/assets/htmlMode-BRkGssBX.js +1 -0
  292. package/dist/web/assets/index-BoQh7Rhc.css +1 -0
  293. package/dist/web/assets/{index-DaRxJqVy.js → index-DxE1UagD.js} +4 -4
  294. package/dist/web/assets/index-_mroLJ3-.js +122 -0
  295. package/dist/web/assets/{infoDiagram-5YYISTIA-Cu-PA_-6.js → infoDiagram-5YYISTIA-BzITBBR6.js} +1 -1
  296. package/dist/web/assets/{ishikawaDiagram-YF4QCWOH-S6Esbkdw.js → ishikawaDiagram-YF4QCWOH-Bd9MT4ne.js} +1 -1
  297. package/dist/web/assets/javascript-CzeLwCQy.js +1 -0
  298. package/dist/web/assets/{journeyDiagram-JHISSGLW-wPF9FT9V.js → journeyDiagram-JHISSGLW-CR2x5gV0.js} +1 -1
  299. package/dist/web/assets/{jsonMode-D6IoFlQF.js → jsonMode-BixD4b0P.js} +4 -4
  300. package/dist/web/assets/{kanban-definition-UN3LZRKU-C4jl9zOj.js → kanban-definition-UN3LZRKU-DZx-6dHw.js} +1 -1
  301. package/dist/web/assets/{layers-hQUUT3Gb.js → layers-DOM1D0GC.js} +1 -1
  302. package/dist/web/assets/{linear-D83xDp0H.js → linear-BBLqccsD.js} +1 -1
  303. package/dist/web/assets/liquid-DGETTZ3q.js +1 -0
  304. package/dist/web/assets/{lspLanguageFeatures-CUyibjAN.js → lspLanguageFeatures-DLBGi3go.js} +1 -1
  305. package/dist/web/assets/mdx-Co95_1jL.js +1 -0
  306. package/dist/web/assets/{mermaid-NOHMQCX5-CGCWmHha.js → mermaid-NOHMQCX5-K1Nm51AP.js} +45 -45
  307. package/dist/web/assets/{message-square-B-uYQiTq.js → message-square-eTP8tZLX.js} +1 -1
  308. package/dist/web/assets/{mindmap-definition-RKZ34NQL-D5v2uvjn.js → mindmap-definition-RKZ34NQL-BuB-92St.js} +1 -1
  309. package/dist/web/assets/{modal-D87uszzb.js → modal-CSnK65Cb.js} +1 -1
  310. package/dist/web/assets/{monaco-B25-2nEB.js → monaco-C17UmdbS.js} +3 -3
  311. package/dist/web/assets/{pencil-CY2RnQrx.js → pencil-l1-UifOH.js} +1 -1
  312. package/dist/web/assets/{pieDiagram-4H26LBE5-6wdFz_7x.js → pieDiagram-4H26LBE5--40xP_i_.js} +1 -1
  313. package/dist/web/assets/python-CQw9WtC1.js +1 -0
  314. package/dist/web/assets/{quadrantDiagram-W4KKPZXB-C1CrGMEK.js → quadrantDiagram-W4KKPZXB-BxiOfFTG.js} +1 -1
  315. package/dist/web/assets/razor-Du_XbZEg.js +1 -0
  316. package/dist/web/assets/{requirementDiagram-4Y6WPE33-mDtZrxpp.js → requirementDiagram-4Y6WPE33-GR0Dtr4T.js} +1 -1
  317. package/dist/web/assets/{sankeyDiagram-5OEKKPKP-hBlj0XoH.js → sankeyDiagram-5OEKKPKP-tWpKambG.js} +1 -1
  318. package/dist/web/assets/select-DB6L9-KB.js +1 -0
  319. package/dist/web/assets/{sequenceDiagram-3UESZ5HK-DsWmMm20.js → sequenceDiagram-3UESZ5HK-ByVTWC_r.js} +1 -1
  320. package/dist/web/assets/{server-qlZupTvg.js → server-CrODl9NC.js} +1 -1
  321. package/dist/web/assets/{stateDiagram-AJRCARHV-VNyX1L66.js → stateDiagram-AJRCARHV-Bd8b6zV5.js} +1 -1
  322. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-A6YN_ZNd.js +1 -0
  323. package/dist/web/assets/{switch-1pvXCcP-.js → switch-DvXJc47w.js} +1 -1
  324. package/dist/web/assets/{textarea-D9oaz-Ba.js → textarea-CSKljQWP.js} +1 -1
  325. package/dist/web/assets/{timeline-definition-PNZ67QCA-DuBxxd9E.js → timeline-definition-PNZ67QCA-BZhaE4Q8.js} +1 -1
  326. package/dist/web/assets/{trash-2-C0P8jNpJ.js → trash-2-DdOhDOCv.js} +1 -1
  327. package/dist/web/assets/{tsMode-ogL-3MSe.js → tsMode-D9Lc5Ctp.js} +2 -2
  328. package/dist/web/assets/typescript-jsG0idOk.js +1 -0
  329. package/dist/web/assets/{upload-BYgsDplu.js → upload-9nN5Lg83.js} +1 -1
  330. package/dist/web/assets/{use-profiles-BkGnmson.js → use-profiles-8YJrKR2I.js} +1 -1
  331. package/dist/web/assets/{use-projects-B4w00h5I.js → use-projects-BdSJ4zPv.js} +1 -1
  332. package/dist/web/assets/use-providers-BlqWIGOP.js +1 -0
  333. package/dist/web/assets/{useNormalizedLogs-MsDkcnRQ.js → useNormalizedLogs-B_LoDoiT.js} +1 -1
  334. package/dist/web/assets/{vennDiagram-CIIHVFJN-RbPPOLBo.js → vennDiagram-CIIHVFJN-COnwMBZG.js} +1 -1
  335. package/dist/web/assets/{wardley-L42UT6IY-DXzUbdMF.js → wardley-L42UT6IY-DnIbpfhs.js} +1 -1
  336. package/dist/web/assets/{wardleyDiagram-YWT4CUSO-B0QXobQM.js → wardleyDiagram-YWT4CUSO-QNFL1GWo.js} +1 -1
  337. package/dist/web/assets/xml-C_Zqe3tk.js +1 -0
  338. package/dist/web/assets/{xychartDiagram-2RQKCTM6-C7bFJItM.js → xychartDiagram-2RQKCTM6-CW7FVlM3.js} +1 -1
  339. package/dist/web/assets/yaml-CETOqGaS.js +1 -0
  340. package/dist/web/index.html +2 -2
  341. package/node_modules/@agent-tower/shared/dist/execution-permission.d.ts +19 -0
  342. package/node_modules/@agent-tower/shared/dist/execution-permission.d.ts.map +1 -0
  343. package/node_modules/@agent-tower/shared/dist/execution-permission.js +53 -0
  344. package/node_modules/@agent-tower/shared/dist/execution-permission.js.map +1 -0
  345. package/node_modules/@agent-tower/shared/dist/index.d.ts +1 -0
  346. package/node_modules/@agent-tower/shared/dist/index.d.ts.map +1 -1
  347. package/node_modules/@agent-tower/shared/dist/index.js +1 -0
  348. package/node_modules/@agent-tower/shared/dist/index.js.map +1 -1
  349. package/node_modules/@agent-tower/shared/dist/provider-capabilities.d.ts +6 -5
  350. package/node_modules/@agent-tower/shared/dist/provider-capabilities.d.ts.map +1 -1
  351. package/node_modules/@agent-tower/shared/dist/provider-capabilities.js.map +1 -1
  352. package/node_modules/@agent-tower/shared/dist/types.d.ts +49 -2
  353. package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
  354. package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
  355. package/package.json +1 -1
  356. package/dist/web/assets/ConversationPage-BINGA8XL.js +0 -3
  357. package/dist/web/assets/CreateTaskInput-8bLhHYOc.js +0 -1
  358. package/dist/web/assets/ProviderSettingsPage-BlgfQMwe.js +0 -95
  359. package/dist/web/assets/channel-B8s9dqlX.js +0 -1
  360. package/dist/web/assets/check-C1zWgxFO.js +0 -1
  361. package/dist/web/assets/classDiagram-4FO5ZUOK-61bPx188.js +0 -1
  362. package/dist/web/assets/classDiagram-v2-Q7XG4LA2-61bPx188.js +0 -1
  363. package/dist/web/assets/cssMode-CNU1q_Gl.js +0 -1
  364. package/dist/web/assets/handlebars-DNXOgRZc.js +0 -1
  365. package/dist/web/assets/html-C20FgNS-.js +0 -1
  366. package/dist/web/assets/htmlMode-CtcV1Ktd.js +0 -1
  367. package/dist/web/assets/index-dElqH2UR.css +0 -1
  368. package/dist/web/assets/index-oC5eh7mZ.js +0 -122
  369. package/dist/web/assets/javascript-CFAVZ6Tb.js +0 -1
  370. package/dist/web/assets/liquid-CuzuRJIN.js +0 -1
  371. package/dist/web/assets/mdx-C3rxTvel.js +0 -1
  372. package/dist/web/assets/python-BYGLbOzO.js +0 -1
  373. package/dist/web/assets/razor-m0U9iUAj.js +0 -1
  374. package/dist/web/assets/select-D7WkUiad.js +0 -1
  375. package/dist/web/assets/stateDiagram-v2-BHNVJYJU-DHz3oGyD.js +0 -1
  376. package/dist/web/assets/typescript-rHoDxTY8.js +0 -1
  377. package/dist/web/assets/use-providers-B70-BYNu.js +0 -1
  378. package/dist/web/assets/xml-BqnpQrAq.js +0 -1
  379. package/dist/web/assets/yaml-mz2Zn_K2.js +0 -1
@@ -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"}
@@ -2,6 +2,9 @@ import { randomUUID } from 'node:crypto';
2
2
  import { readdirSync } from 'node:fs';
3
3
  import os from 'node:os';
4
4
  import path from 'node:path';
5
+ export const PTY_WRAPPER_FORCE_KILL_GRACE_MS = 5_000;
6
+ // Include the wrapper's escalation grace and final tree polling/PTY exit.
7
+ export const PTY_WRAPPER_EXIT_TIMEOUT_MS = PTY_WRAPPER_FORCE_KILL_GRACE_MS + 5_000;
5
8
  export function getNodeRuntimeCommand() {
6
9
  return process.env.AGENT_TOWER_NODE_RUNTIME || process.execPath;
7
10
  }
@@ -91,6 +94,10 @@ const trackedGroupMembers = new Map();
91
94
  const trackedWindowsMembers = new Map();
92
95
  let identityIncomplete = false;
93
96
  let childExited = false;
97
+ let lastProcessProbeFailure = null;
98
+ // Tree cleanup starts at root exit; duplex output completion is an independent
99
+ // barrier. The parent acknowledges only after consuming every output frame.
100
+ let finishOutput = null;
94
101
 
95
102
  function getChildEnv() {
96
103
  const env = { ...process.env };
@@ -116,18 +123,31 @@ function cleanup() {
116
123
  function parseProcessRows(stdout) {
117
124
  if (typeof stdout !== 'string' || !stdout.trim()) return null;
118
125
  const rows = stdout.split('\n').filter((line) => line.trim()).map((line) => {
119
- const match = /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\S+\s+\S+\s+\d+\s+\d\d:\d\d:\d\d\s+\d{4})\s+(.*)$/.exec(line);
126
+ const match = /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+\s+\S+\s+\d+\s+\d\d:\d\d:\d\d\s+\d{4})\s+(.*)$/.exec(line);
120
127
  return match ? {
121
128
  pid: Number(match[1]),
122
129
  ppid: Number(match[2]),
123
130
  pgid: Number(match[3]),
124
- birthIdentity: match[4],
125
- command: match[5],
131
+ state: match[4][0],
132
+ birthIdentity: match[5],
133
+ command: match[6],
126
134
  } : null;
127
135
  });
128
136
  return rows.length > 0 && !rows.some((row) => !row) ? rows : null;
129
137
  }
130
138
 
139
+ function isExitedProcessRow(row) {
140
+ return row.state === 'Z' || row.state === 'X';
141
+ }
142
+
143
+ function reportProcessProbeFailure(status, detail) {
144
+ const diagnostic = JSON.stringify({ status, detail });
145
+ if (diagnostic === lastProcessProbeFailure) return;
146
+ lastProcessProbeFailure = diagnostic;
147
+ // Never print ps stdout: it contains every process's environment.
148
+ console.error('[PTY wrapper] Process tree probe failed: ' + diagnostic);
149
+ }
150
+
131
151
  function readProcessTable() {
132
152
  if (!child || isWin) return { status: 'IDENTITY_INCOMPLETE', rows: [], complete: false };
133
153
  const probeEnv = { ...process.env };
@@ -137,22 +157,32 @@ function readProcessTable() {
137
157
  // portable C layout even when the server inherits a localized user env.
138
158
  probeEnv.LC_ALL = 'C';
139
159
  probeEnv.LANG = 'C';
140
- const base = spawnSync('ps', ['eww', '-axo', 'pid=,ppid=,pgid=,lstart=,command='], {
160
+ // -A selects all processes on both macOS and Linux. Mixing BSD 'eww'
161
+ // with '-ax' makes procps-ng reject -x under its default personality.
162
+ const base = spawnSync('ps', ['eww', '-Ao', 'pid=,ppid=,pgid=,stat=,lstart=,command='], {
141
163
  encoding: 'utf8',
142
164
  windowsHide: true,
143
165
  maxBuffer: 256 * 1024 * 1024,
144
166
  env: probeEnv,
145
167
  });
146
168
  if (base.error || base.status !== 0 || typeof base.stdout !== 'string' || !base.stdout.trim()) {
169
+ reportProcessProbeFailure('PROBE_UNAVAILABLE', {
170
+ code: base.error && base.error.code,
171
+ exitCode: base.status,
172
+ stderr: typeof base.stderr === 'string' ? base.stderr.trim().slice(0, 500) : undefined,
173
+ });
147
174
  return { status: 'PROBE_UNAVAILABLE', rows: [], complete: false };
148
175
  }
149
176
  const rows = parseProcessRows(base.stdout);
150
177
  if (!rows) {
178
+ reportProcessProbeFailure('IDENTITY_INCOMPLETE', 'Malformed process table');
151
179
  return { status: 'IDENTITY_INCOMPLETE', rows: [], complete: false };
152
180
  }
153
181
  if (rows.length > 16_384) {
182
+ reportProcessProbeFailure('IDENTITY_INCOMPLETE', 'Process table exceeds row limit');
154
183
  return { status: 'IDENTITY_INCOMPLETE', rows: [], complete: false };
155
184
  }
185
+ lastProcessProbeFailure = null;
156
186
  const owned = rows.filter((row) => (
157
187
  row.pid !== process.pid
158
188
  && row.command.includes(processIdentityEnvKey + '=' + processIdentityToken)
@@ -264,7 +294,8 @@ function matchingTrackedGroupMembers() {
264
294
  const probe = readProcessTable();
265
295
  if (probe.status !== 'ALIVE') return null;
266
296
  return probe.rows.filter((row) => (
267
- trackedGroupMembers.get(row.pid)?.pgid === row.pgid
297
+ !isExitedProcessRow(row)
298
+ && trackedGroupMembers.get(row.pid)?.pgid === row.pgid
268
299
  && trackedGroupMembers.get(row.pid)?.birthIdentity === row.birthIdentity
269
300
  ));
270
301
  }
@@ -301,7 +332,8 @@ const unixIdentityAdapter = {
301
332
  return childExited && probe.complete ? 'CLEAN_EMPTY' : 'IDENTITY_INCOMPLETE';
302
333
  }
303
334
  const matches = probe.rows.filter((row) => (
304
- trackedGroupMembers.get(row.pid)?.pgid === row.pgid
335
+ !isExitedProcessRow(row)
336
+ && trackedGroupMembers.get(row.pid)?.pgid === row.pgid
305
337
  && trackedGroupMembers.get(row.pid)?.birthIdentity === row.birthIdentity
306
338
  ));
307
339
  return matches.length > 0 ? 'ALIVE' : 'CLEAN_EMPTY';
@@ -454,7 +486,7 @@ function scheduleForceKill() {
454
486
  if (forceKillTimer) return;
455
487
  forceKillTimer = setTimeout(() => {
456
488
  killTree('SIGKILL');
457
- }, 5000);
489
+ }, ${PTY_WRAPPER_FORCE_KILL_GRACE_MS});
458
490
  if (forceKillTimer.unref) forceKillTimer.unref();
459
491
  }
460
492
 
@@ -478,9 +510,14 @@ async function exitWithChildResult(code, signal) {
478
510
  // 否则 PTY owner 会把 wrapper exit 误判为进程树已清空。
479
511
  killTree('SIGHUP');
480
512
  const exitCode = typeof code === 'number' ? code : signal ? 1 : 0;
513
+ const finishExit = () => {
514
+ if (!finishOutput) { process.exit(exitCode); return; }
515
+ return finishOutput().then(outputComplete => process.exit(outputComplete ? exitCode : 1));
516
+ };
481
517
  const initialState = isWin ? windowsTreeState() : unixIdentityAdapter.groupState();
482
518
  if (initialState === 'CLEAN_EMPTY') {
483
- process.exit(exitCode);
519
+ await finishExit();
520
+ return;
484
521
  }
485
522
 
486
523
  scheduleForceKill();
@@ -494,7 +531,7 @@ async function exitWithChildResult(code, signal) {
494
531
  if (state === 'CLEAN_EMPTY') {
495
532
  if (forceKillTimer) clearTimeout(forceKillTimer);
496
533
  forceKillTimer = null;
497
- process.exit(exitCode);
534
+ await finishExit();
498
535
  return;
499
536
  }
500
537
  killTree(attempt >= 5 ? 'SIGKILL' : 'SIGHUP');
@@ -560,7 +597,86 @@ function spawnChild(args, stdioOpt) {
560
597
  });
561
598
  });
562
599
 
563
- if (mode === 'pipe-file') {
600
+ if (mode === 'pipe-duplex') {
601
+ const [configFile, ...args] = rest;
602
+ let config;
603
+ try { config = JSON.parse(require('node:fs').readFileSync(configFile, 'utf8')); unlinkSync(configFile); }
604
+ catch (error) { exitWithError(error); }
605
+ const socket = require('node:net').connect(config.endpoint);
606
+ let buffer = '';
607
+ let writes = Promise.resolve();
608
+ let connected = false;
609
+ let connectionFailed = false;
610
+ let outputComplete = false;
611
+ let completeOutput;
612
+ const outputCompletion = new Promise(resolve => { completeOutput = resolve; });
613
+ // Bound transport failure/absent readers without mistaking a timeout for EOF.
614
+ finishOutput = () => new Promise(resolve => {
615
+ const timer = setTimeout(() => { socket.destroy(); resolve(false); }, 10000);
616
+ outputCompletion.then(success => { clearTimeout(timer); resolve(success); });
617
+ });
618
+ const send = (frame) => socket.write(JSON.stringify(frame) + '\n');
619
+ const fail = () => {
620
+ if (connectionFailed) return;
621
+ connectionFailed = true;
622
+ completeOutput(false);
623
+ killTree('SIGTERM'); scheduleForceKill();
624
+ // The actual root exit starts cleanup; do not mark a still-running root
625
+ // exited or race a second cleanup state machine against its exit event.
626
+ if (!child) exitWithError(new Error('CLI duplex connection failed'));
627
+ else if (child.exitCode !== null || child.signalCode !== null || !child.pid) void exitWithChildResult(1);
628
+ };
629
+ const connectTimer = setTimeout(fail, 10000);
630
+ socket.setEncoding('utf8');
631
+ socket.on('error', fail);
632
+ socket.on('close', () => { if (!outputComplete) fail(); });
633
+ socket.on('connect', () => {
634
+ clearTimeout(connectTimer); connected = true;
635
+ send({ type: 'hello', secret: config.secret });
636
+ child = isCmdBat ? spawnCmd(args, ['pipe', 'pipe', 'pipe']) : spawnChild(args, ['pipe', 'pipe', 'pipe']);
637
+ scheduleProcessGroupIdentityCapture();
638
+ child.stdin.on('error', fail);
639
+ for (const type of ['stdout', 'stderr']) {
640
+ child[type].setEncoding('utf8');
641
+ child[type].on('data', data => { if (!send({ type, data })) child[type].pause(); });
642
+ }
643
+ socket.on('drain', () => { child.stdout.resume(); child.stderr.resume(); });
644
+ child.stdout.on('end', () => send({ type: 'eof' }));
645
+ let streamsEnded = 0;
646
+ for (const type of ['stdout', 'stderr']) {
647
+ child[type].on('end', () => {
648
+ if (++streamsEnded === 2) send({ type: 'output_complete' });
649
+ });
650
+ }
651
+ child.on('error', fail);
652
+ // Do not wait for close: a descendant can retain stdout indefinitely.
653
+ // Cleanup releases those fds; final exit separately waits for EOF + consumption.
654
+ child.on('exit', exitWithChildResult);
655
+ });
656
+ socket.on('data', data => {
657
+ buffer += data;
658
+ if (buffer.length > 16 * 1024 * 1024) { fail(); return; }
659
+ let newline;
660
+ while ((newline = buffer.indexOf('\n')) >= 0) {
661
+ const line = buffer.slice(0, newline); buffer = buffer.slice(newline + 1);
662
+ let frame;
663
+ try { frame = JSON.parse(line); } catch { fail(); return; }
664
+ if (connected && frame.type === 'output_consumed') {
665
+ outputComplete = true; completeOutput(true); continue;
666
+ }
667
+ if (!connected || !Number.isSafeInteger(frame.id) || !['write', 'end'].includes(frame.type)
668
+ || (frame.type === 'write' && typeof frame.data !== 'string')) { fail(); return; }
669
+ writes = writes.then(() => new Promise(resolve => {
670
+ if (childExited || !child.stdin || child.stdin.destroyed || child.stdin.writableEnded) {
671
+ send({ type: 'ack', id: frame.id, error: frame.type !== 'end' }); resolve(); return;
672
+ }
673
+ const done = error => { send({ type: 'ack', id: frame.id, error: !!error }); resolve(); };
674
+ if (frame.type === 'end') child.stdin.end(done);
675
+ else child.stdin.write(frame.data, done);
676
+ })).catch(fail);
677
+ }
678
+ });
679
+ } else if (mode === 'pipe-file') {
564
680
  const [stdinFile, ...args] = rest;
565
681
  cleanupTarget = stdinFile;
566
682
  let stdinStream = null;
@@ -822,4 +938,7 @@ export function normalizeCommandLookupOutput(stdout, platform = process.platform
822
938
  }
823
939
  return lines[0];
824
940
  }
941
+ export function buildPtyCommandWithDuplex(programPath, args, configFile) {
942
+ return { command: getNodeRuntimeCommand(), args: ['-e', PTY_WRAPPER_SCRIPT, 'pipe-duplex', programPath, configFile, ...args] };
943
+ }
825
944
  //# sourceMappingURL=process-launch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-launch.js","sourceRoot":"","sources":["../../src/utils/process-launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-launch.js","sourceRoot":"","sources":["../../src/utils/process-launch.ts"],"names":[],"mappings":"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"}