aws-runtime-bridge 1.9.79 → 1.9.81

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 (596) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +0 -1
  2. package/dist/adapter/AcodeSdkAdapter.js +11 -1986
  3. package/dist/adapter/AdapterRegistry.d.ts +0 -1
  4. package/dist/adapter/AdapterRegistry.js +2 -100
  5. package/dist/adapter/ClaudeSdkAdapter.d.ts +0 -1
  6. package/dist/adapter/ClaudeSdkAdapter.js +4 -1300
  7. package/dist/adapter/CodexSdkAdapter.d.ts +0 -1
  8. package/dist/adapter/CodexSdkAdapter.js +4 -836
  9. package/dist/adapter/OpencodeSdkAdapter.d.ts +0 -1
  10. package/dist/adapter/OpencodeSdkAdapter.js +4 -879
  11. package/dist/adapter/SdkProviderSpi.d.ts +0 -1
  12. package/dist/adapter/SdkProviderSpi.js +2 -55
  13. package/dist/adapter/acode-tool-names.d.ts +0 -1
  14. package/dist/adapter/acode-tool-names.js +2 -37
  15. package/dist/adapter/idle-poll-loop.d.ts +0 -1
  16. package/dist/adapter/idle-poll-loop.js +2 -59
  17. package/dist/adapter/index.d.ts +0 -1
  18. package/dist/adapter/index.js +2 -11
  19. package/dist/adapter/instance-ai-config-resolver.d.ts +0 -1
  20. package/dist/adapter/instance-ai-config-resolver.js +2 -46
  21. package/dist/adapter/types.d.ts +0 -1
  22. package/dist/adapter/types.js +2 -443
  23. package/dist/adapters/cc-switch/common.d.ts +0 -1
  24. package/dist/adapters/cc-switch/common.js +2 -61
  25. package/dist/adapters/cc-switch/index.d.ts +0 -1
  26. package/dist/adapters/cc-switch/index.js +2 -57
  27. package/dist/adapters/cc-switch/mcp-acode.d.ts +0 -1
  28. package/dist/adapters/cc-switch/mcp-acode.js +2 -71
  29. package/dist/adapters/cc-switch/mcp-claude.d.ts +0 -1
  30. package/dist/adapters/cc-switch/mcp-claude.js +2 -89
  31. package/dist/adapters/cc-switch/mcp-claudecode.d.ts +0 -1
  32. package/dist/adapters/cc-switch/mcp-claudecode.js +2 -77
  33. package/dist/adapters/cc-switch/mcp-codex.d.ts +0 -1
  34. package/dist/adapters/cc-switch/mcp-codex.js +11 -249
  35. package/dist/adapters/cc-switch/mcp-opencode.d.ts +0 -1
  36. package/dist/adapters/cc-switch/mcp-opencode.js +2 -97
  37. package/dist/adapters/cc-switch/mcp-placeholder.d.ts +0 -1
  38. package/dist/adapters/cc-switch/mcp-placeholder.js +2 -19
  39. package/dist/adapters/cc-switch/skill-acode.d.ts +0 -1
  40. package/dist/adapters/cc-switch/skill-acode.js +2 -12
  41. package/dist/adapters/cc-switch/skill-claude.d.ts +0 -1
  42. package/dist/adapters/cc-switch/skill-claude.js +2 -11
  43. package/dist/adapters/cc-switch/skill-claudecode.d.ts +0 -1
  44. package/dist/adapters/cc-switch/skill-claudecode.js +2 -11
  45. package/dist/adapters/cc-switch/skill-codex.d.ts +0 -1
  46. package/dist/adapters/cc-switch/skill-codex.js +2 -6
  47. package/dist/adapters/cc-switch/skill-directory.d.ts +0 -1
  48. package/dist/adapters/cc-switch/skill-directory.js +3 -137
  49. package/dist/adapters/cc-switch/skill-opencode.d.ts +0 -1
  50. package/dist/adapters/cc-switch/skill-opencode.js +2 -11
  51. package/dist/adapters/cc-switch/skill-placeholder.d.ts +0 -1
  52. package/dist/adapters/cc-switch/skill-placeholder.js +2 -19
  53. package/dist/config.d.ts +0 -1
  54. package/dist/config.js +2 -290
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.js +2 -573
  57. package/dist/middleware/auth.d.ts +0 -1
  58. package/dist/middleware/auth.js +2 -98
  59. package/dist/routes/acode-todos.d.ts +0 -1
  60. package/dist/routes/acode-todos.js +2 -75
  61. package/dist/routes/ai-sources.d.ts +0 -1
  62. package/dist/routes/ai-sources.js +2 -132
  63. package/dist/routes/dashboard.d.ts +0 -1
  64. package/dist/routes/dashboard.js +182 -649
  65. package/dist/routes/events.d.ts +0 -1
  66. package/dist/routes/events.js +2 -22
  67. package/dist/routes/file-browser.d.ts +0 -1
  68. package/dist/routes/file-browser.js +2 -781
  69. package/dist/routes/file-diff-rollback.d.ts +0 -1
  70. package/dist/routes/file-diff-rollback.js +2 -301
  71. package/dist/routes/file-snapshot.d.ts +0 -1
  72. package/dist/routes/file-snapshot.js +2 -156
  73. package/dist/routes/git.d.ts +0 -1
  74. package/dist/routes/git.js +28 -1900
  75. package/dist/routes/instance.d.ts +0 -1
  76. package/dist/routes/instance.js +3 -748
  77. package/dist/routes/mcp.d.ts +0 -1
  78. package/dist/routes/mcp.js +2 -196
  79. package/dist/routes/processes.d.ts +0 -1
  80. package/dist/routes/processes.js +2 -252
  81. package/dist/routes/properties.d.ts +0 -1
  82. package/dist/routes/properties.js +2 -72
  83. package/dist/routes/pty.d.ts +0 -1
  84. package/dist/routes/pty.js +6 -560
  85. package/dist/routes/runtime-binding.d.ts +0 -1
  86. package/dist/routes/runtime-binding.js +2 -263
  87. package/dist/routes/sessions.d.ts +0 -1
  88. package/dist/routes/sessions.js +2 -758
  89. package/dist/routes/skills.d.ts +0 -1
  90. package/dist/routes/skills.js +2 -187
  91. package/dist/routes/sub-agents.d.ts +0 -1
  92. package/dist/routes/sub-agents.js +20 -279
  93. package/dist/routes/system-metrics.d.ts +0 -1
  94. package/dist/routes/system-metrics.js +2 -20
  95. package/dist/routes/task-context.d.ts +0 -1
  96. package/dist/routes/task-context.js +2 -78
  97. package/dist/routes/terminal.d.ts +0 -1
  98. package/dist/routes/terminal.js +54 -2882
  99. package/dist/routes/yml.d.ts +0 -1
  100. package/dist/routes/yml.js +2 -223
  101. package/dist/services/acode-package.d.ts +0 -1
  102. package/dist/services/acode-package.js +2 -111
  103. package/dist/services/agent-event-store.d.ts +0 -1
  104. package/dist/services/agent-event-store.js +2 -81
  105. package/dist/services/agent-process-manager.d.ts +0 -1
  106. package/dist/services/agent-process-manager.js +2 -796
  107. package/dist/services/ai-source-apply.d.ts +0 -1
  108. package/dist/services/ai-source-apply.js +2 -83
  109. package/dist/services/auto-register.d.ts +5 -1
  110. package/dist/services/auto-register.js +2 -1053
  111. package/dist/services/aws-client-agent-mcp.d.ts +0 -1
  112. package/dist/services/aws-client-agent-mcp.js +3 -337
  113. package/dist/services/bridge-package-publish-hooks.d.ts +0 -1
  114. package/dist/services/bridge-package-publish-hooks.js +2 -115
  115. package/dist/services/cc-switch-sdk.d.ts +0 -1
  116. package/dist/services/cc-switch-sdk.js +2 -135
  117. package/dist/services/cli-commands.d.ts +6 -1
  118. package/dist/services/cli-commands.js +6 -645
  119. package/dist/services/event-delta-pusher.d.ts +0 -1
  120. package/dist/services/event-delta-pusher.js +2 -95
  121. package/dist/services/fileSnapshotStore.d.ts +0 -1
  122. package/dist/services/fileSnapshotStore.js +2 -500
  123. package/dist/services/instance-ai-config-service.d.ts +0 -1
  124. package/dist/services/instance-ai-config-service.js +2 -174
  125. package/dist/services/instance-init-service.d.ts +0 -1
  126. package/dist/services/instance-init-service.js +2 -193
  127. package/dist/services/instance-service.d.ts +0 -1
  128. package/dist/services/instance-service.js +2 -237
  129. package/dist/services/instance-state.d.ts +0 -1
  130. package/dist/services/instance-state.js +2 -94
  131. package/dist/services/legacy-path-migration.d.ts +0 -1
  132. package/dist/services/legacy-path-migration.js +2 -66
  133. package/dist/services/lifecycle-state.d.ts +0 -1
  134. package/dist/services/lifecycle-state.js +3 -110
  135. package/dist/services/mcp-launch-binding-queue.d.ts +0 -1
  136. package/dist/services/mcp-launch-binding-queue.js +2 -175
  137. package/dist/services/orphan-monitor.d.ts +0 -1
  138. package/dist/services/orphan-monitor.js +2 -382
  139. package/dist/services/panel-auth.d.ts +0 -1
  140. package/dist/services/panel-auth.js +2 -168
  141. package/dist/services/process-detector.d.ts +0 -1
  142. package/dist/services/process-detector.js +18 -1019
  143. package/dist/services/process-registry.d.ts +0 -1
  144. package/dist/services/process-registry.js +2 -375
  145. package/dist/services/ring-buffer.d.ts +0 -1
  146. package/dist/services/ring-buffer.js +2 -103
  147. package/dist/services/runtime-binding.d.ts +0 -1
  148. package/dist/services/runtime-binding.js +6 -363
  149. package/dist/services/runtime-lifecycle-policy.d.ts +0 -1
  150. package/dist/services/runtime-lifecycle-policy.js +2 -35
  151. package/dist/services/session-output.d.ts +0 -1
  152. package/dist/services/session-output.js +5 -539
  153. package/dist/services/startup-config-wizard.d.ts +0 -1
  154. package/dist/services/startup-config-wizard.js +14 -258
  155. package/dist/services/sub-agent-manager-instance.d.ts +0 -1
  156. package/dist/services/sub-agent-manager-instance.js +2 -12
  157. package/dist/services/system-metrics.d.ts +0 -1
  158. package/dist/services/system-metrics.js +2 -252
  159. package/dist/services/terminal-persistence.d.ts +0 -1
  160. package/dist/services/terminal-persistence.js +2 -176
  161. package/dist/services/tool-installer.d.ts +0 -1
  162. package/dist/services/tool-installer.js +5 -751
  163. package/dist/services/tunnel-client.d.ts +0 -1
  164. package/dist/services/tunnel-client.js +2 -402
  165. package/dist/services/windows-service-manager.d.ts +3 -3
  166. package/dist/services/windows-service-manager.js +2 -59
  167. package/dist/services/workspace-files.d.ts +0 -1
  168. package/dist/services/workspace-files.js +2 -1275
  169. package/dist/services/workspace-watch.d.ts +0 -1
  170. package/dist/services/workspace-watch.js +2 -123
  171. package/dist/services/workspaceTaskChangeWatcher.d.ts +0 -1
  172. package/dist/services/workspaceTaskChangeWatcher.js +2 -483
  173. package/dist/types.d.ts +0 -1
  174. package/dist/types.js +1 -1
  175. package/dist/utils/file-utils.d.ts +0 -1
  176. package/dist/utils/file-utils.js +3 -208
  177. package/dist/utils/instance-ai-config-debug-logger.d.ts +0 -1
  178. package/dist/utils/instance-ai-config-debug-logger.js +4 -63
  179. package/dist/utils/logger.d.ts +0 -1
  180. package/dist/utils/logger.js +2 -154
  181. package/dist/utils/mcp-utils.d.ts +0 -1
  182. package/dist/utils/mcp-utils.js +2 -187
  183. package/dist/utils/path-utils.d.ts +0 -1
  184. package/dist/utils/path-utils.js +2 -44
  185. package/dist/utils/sdk-package-loader.d.ts +0 -1
  186. package/dist/utils/sdk-package-loader.js +2 -78
  187. package/dist/utils/validation.d.ts +0 -1
  188. package/dist/utils/validation.js +2 -53
  189. package/dist/utils/yaml-utils.d.ts +0 -1
  190. package/dist/utils/yaml-utils.js +2 -312
  191. package/node_modules/@cc-switch/sdk/dist/constants.d.ts +0 -1
  192. package/node_modules/@cc-switch/sdk/dist/constants.js +2 -63
  193. package/node_modules/@cc-switch/sdk/dist/errors.d.ts +0 -1
  194. package/node_modules/@cc-switch/sdk/dist/errors.js +2 -8
  195. package/node_modules/@cc-switch/sdk/dist/index.d.ts +0 -1
  196. package/node_modules/@cc-switch/sdk/dist/index.js +2 -9
  197. package/node_modules/@cc-switch/sdk/dist/schemas.d.ts +0 -1
  198. package/node_modules/@cc-switch/sdk/dist/schemas.js +2 -38
  199. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +0 -1
  200. package/node_modules/@cc-switch/sdk/dist/sdk.js +2 -470
  201. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts +0 -1
  202. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.js +4 -307
  203. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts +0 -1
  204. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.js +2 -37
  205. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts +0 -1
  206. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.js +2 -9
  207. package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts +0 -1
  208. package/node_modules/@cc-switch/sdk/dist/services/skill-model.js +2 -41
  209. package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts +0 -1
  210. package/node_modules/@cc-switch/sdk/dist/services/skill-service.js +2 -9
  211. package/node_modules/@cc-switch/sdk/dist/state.d.ts +0 -1
  212. package/node_modules/@cc-switch/sdk/dist/state.js +2 -19
  213. package/node_modules/@cc-switch/sdk/dist/types.d.ts +0 -1
  214. package/node_modules/@cc-switch/sdk/dist/types.js +1 -1
  215. package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts +0 -1
  216. package/node_modules/@cc-switch/sdk/dist/utils/fs.js +3 -114
  217. package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts +0 -1
  218. package/node_modules/@cc-switch/sdk/dist/utils/id.js +2 -12
  219. package/node_modules/@cc-switch/sdk/package.json +1 -1
  220. package/package/acode/dist/ask-user-question-tool.d.ts +0 -1
  221. package/package/acode/dist/ask-user-question-tool.js +4 -233
  222. package/package/acode/dist/built-in-file-tools.d.ts +0 -1
  223. package/package/acode/dist/built-in-file-tools.js +4 -966
  224. package/package/acode/dist/built-in-symbols-tool.d.ts +0 -1
  225. package/package/acode/dist/built-in-symbols-tool.js +2 -117
  226. package/package/acode/dist/builtins/commandArtifacts.d.ts +0 -1
  227. package/package/acode/dist/builtins/commandArtifacts.js +9 -97
  228. package/package/acode/dist/builtins/commandOutputEvents.d.ts +0 -1
  229. package/package/acode/dist/builtins/commandOutputEvents.js +2 -56
  230. package/package/acode/dist/builtins/shellCommandPreparation.d.ts +0 -1
  231. package/package/acode/dist/builtins/shellCommandPreparation.js +5 -44
  232. package/package/acode/dist/builtins/shellCommandResult.d.ts +0 -1
  233. package/package/acode/dist/builtins/shellCommandResult.js +2 -71
  234. package/package/acode/dist/builtins/shellCommandRunner.d.ts +0 -1
  235. package/package/acode/dist/builtins/shellCommandRunner.js +2 -115
  236. package/package/acode/dist/builtins/shellOutputDecoder.d.ts +0 -1
  237. package/package/acode/dist/builtins/shellOutputDecoder.js +2 -94
  238. package/package/acode/dist/cli.d.ts +0 -1
  239. package/package/acode/dist/cli.js +4 -38
  240. package/package/acode/dist/commands/commandLoader.d.ts +0 -1
  241. package/package/acode/dist/commands/commandLoader.js +2 -33
  242. package/package/acode/dist/commands/commandParser.d.ts +0 -1
  243. package/package/acode/dist/commands/commandParser.js +3 -77
  244. package/package/acode/dist/commands/commandRegistry.d.ts +0 -1
  245. package/package/acode/dist/commands/commandRegistry.js +2 -30
  246. package/package/acode/dist/compaction.d.ts +0 -1
  247. package/package/acode/dist/compaction.js +7 -919
  248. package/package/acode/dist/config.d.ts +0 -1
  249. package/package/acode/dist/config.js +5 -105
  250. package/package/acode/dist/fs-utils.d.ts +0 -1
  251. package/package/acode/dist/fs-utils.js +2 -79
  252. package/package/acode/dist/hooks/hookBus.d.ts +0 -1
  253. package/package/acode/dist/hooks/hookBus.js +2 -40
  254. package/package/acode/dist/index.d.ts +0 -1
  255. package/package/acode/dist/index.js +2 -19
  256. package/package/acode/dist/mcpToolNames.d.ts +0 -1
  257. package/package/acode/dist/mcpToolNames.js +2 -17
  258. package/package/acode/dist/parsers/ast-cache.d.ts +0 -1
  259. package/package/acode/dist/parsers/ast-cache.js +2 -76
  260. package/package/acode/dist/parsers/language-detector.d.ts +0 -1
  261. package/package/acode/dist/parsers/language-detector.js +2 -44
  262. package/package/acode/dist/parsers/language-queries.d.ts +0 -1
  263. package/package/acode/dist/parsers/language-queries.js +12 -602
  264. package/package/acode/dist/parsers/symbol-extractor.d.ts +0 -1
  265. package/package/acode/dist/parsers/symbol-extractor.js +3 -164
  266. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +0 -1
  267. package/package/acode/dist/parsers/tree-sitter-loader.js +2 -64
  268. package/package/acode/dist/parsers/types.d.ts +0 -1
  269. package/package/acode/dist/parsers/types.js +1 -7
  270. package/package/acode/dist/runtime.d.ts +0 -1
  271. package/package/acode/dist/runtime.js +86 -3771
  272. package/package/acode/dist/skill-tool.d.ts +0 -1
  273. package/package/acode/dist/skill-tool.js +5 -174
  274. package/package/acode/dist/sub-agent-manager.d.ts +0 -1
  275. package/package/acode/dist/sub-agent-manager.js +2 -1159
  276. package/package/acode/dist/sub-agent-store.d.ts +0 -1
  277. package/package/acode/dist/sub-agent-store.js +4 -236
  278. package/package/acode/dist/sub-agent-tools.d.ts +0 -1
  279. package/package/acode/dist/sub-agent-tools.js +15 -369
  280. package/package/acode/dist/sub-agent-types.d.ts +0 -1
  281. package/package/acode/dist/sub-agent-types.js +1 -8
  282. package/package/acode/dist/todo-store.d.ts +0 -1
  283. package/package/acode/dist/todo-store.js +2 -73
  284. package/package/acode/dist/todo-tool.d.ts +0 -1
  285. package/package/acode/dist/todo-tool.js +5 -121
  286. package/package/acode/dist/types.d.ts +0 -1
  287. package/package/acode/dist/types.js +1 -1
  288. package/package/acode/package.json +2 -2
  289. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +0 -1
  290. package/package/aws-client-agent-mcp/dist/agent-client.js +2 -890
  291. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts +0 -1
  292. package/package/aws-client-agent-mcp/dist/agent-client.test.js +0 -1
  293. package/package/aws-client-agent-mcp/dist/config.d.ts +0 -1
  294. package/package/aws-client-agent-mcp/dist/config.js +2 -243
  295. package/package/aws-client-agent-mcp/dist/config.test.d.ts +0 -1
  296. package/package/aws-client-agent-mcp/dist/config.test.js +0 -1
  297. package/package/aws-client-agent-mcp/dist/constants.d.ts +0 -1
  298. package/package/aws-client-agent-mcp/dist/constants.js +2 -24
  299. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +0 -1
  300. package/package/aws-client-agent-mcp/dist/context-manager.js +2 -477
  301. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +0 -1
  302. package/package/aws-client-agent-mcp/dist/context-manager.test.js +0 -1
  303. package/package/aws-client-agent-mcp/dist/http-client.d.ts +0 -1
  304. package/package/aws-client-agent-mcp/dist/http-client.js +2 -446
  305. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts +0 -1
  306. package/package/aws-client-agent-mcp/dist/http-client.test.js +0 -1
  307. package/package/aws-client-agent-mcp/dist/index.d.ts +0 -1
  308. package/package/aws-client-agent-mcp/dist/index.js +2 -34
  309. package/package/aws-client-agent-mcp/dist/logger.d.ts +0 -1
  310. package/package/aws-client-agent-mcp/dist/logger.js +3 -178
  311. package/package/aws-client-agent-mcp/dist/logger.test.d.ts +0 -1
  312. package/package/aws-client-agent-mcp/dist/logger.test.js +0 -1
  313. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +0 -1
  314. package/package/aws-client-agent-mcp/dist/mcp-server.js +38 -2709
  315. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts +0 -1
  316. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +0 -1
  317. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +0 -1
  318. package/package/aws-client-agent-mcp/dist/mcp-tools.js +22 -562
  319. package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts +0 -1
  320. package/package/aws-client-agent-mcp/dist/mcp-tools.test.js +0 -1
  321. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +0 -1
  322. package/package/aws-client-agent-mcp/dist/memory-store.js +4 -826
  323. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts +0 -1
  324. package/package/aws-client-agent-mcp/dist/memory-store.test.js +0 -1
  325. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +0 -1
  326. package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -294
  327. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +0 -1
  328. package/package/aws-client-agent-mcp/dist/message-buffer.js +2 -288
  329. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts +0 -1
  330. package/package/aws-client-agent-mcp/dist/message-buffer.test.js +0 -1
  331. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +0 -1
  332. package/package/aws-client-agent-mcp/dist/messageContent.js +2 -125
  333. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +0 -1
  334. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js +2 -103
  335. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts +0 -1
  336. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js +0 -1
  337. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +0 -1
  338. package/package/aws-client-agent-mcp/dist/server-memory-store.js +2 -96
  339. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +0 -1
  340. package/package/aws-client-agent-mcp/dist/status-reporter.js +3 -327
  341. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts +0 -1
  342. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +0 -1
  343. package/package/aws-client-agent-mcp/dist/types.d.ts +0 -1
  344. package/package/aws-client-agent-mcp/dist/types.js +2 -9
  345. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +0 -1
  346. package/package/aws-client-agent-mcp/dist/websocket-client.js +2 -677
  347. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts +0 -1
  348. package/package/aws-client-agent-mcp/dist/websocket-client.test.js +0 -1
  349. package/package/aws-client-agent-mcp/package.json +1 -1
  350. package/package/cc-switch-sdk/dist/constants.d.ts +0 -1
  351. package/package/cc-switch-sdk/dist/constants.js +2 -63
  352. package/package/cc-switch-sdk/dist/errors.d.ts +0 -1
  353. package/package/cc-switch-sdk/dist/errors.js +2 -8
  354. package/package/cc-switch-sdk/dist/index.d.ts +0 -1
  355. package/package/cc-switch-sdk/dist/index.js +2 -9
  356. package/package/cc-switch-sdk/dist/schemas.d.ts +0 -1
  357. package/package/cc-switch-sdk/dist/schemas.js +2 -38
  358. package/package/cc-switch-sdk/dist/sdk.d.ts +0 -1
  359. package/package/cc-switch-sdk/dist/sdk.js +2 -470
  360. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts +0 -1
  361. package/package/cc-switch-sdk/dist/services/ai-config-service.js +4 -307
  362. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts +0 -1
  363. package/package/cc-switch-sdk/dist/services/mcp-model.js +2 -37
  364. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts +0 -1
  365. package/package/cc-switch-sdk/dist/services/mcp-service.js +2 -9
  366. package/package/cc-switch-sdk/dist/services/skill-model.d.ts +0 -1
  367. package/package/cc-switch-sdk/dist/services/skill-model.js +2 -41
  368. package/package/cc-switch-sdk/dist/services/skill-service.d.ts +0 -1
  369. package/package/cc-switch-sdk/dist/services/skill-service.js +2 -9
  370. package/package/cc-switch-sdk/dist/state.d.ts +0 -1
  371. package/package/cc-switch-sdk/dist/state.js +2 -19
  372. package/package/cc-switch-sdk/dist/types.d.ts +0 -1
  373. package/package/cc-switch-sdk/dist/types.js +1 -1
  374. package/package/cc-switch-sdk/dist/utils/fs.d.ts +0 -1
  375. package/package/cc-switch-sdk/dist/utils/fs.js +3 -114
  376. package/package/cc-switch-sdk/dist/utils/id.d.ts +0 -1
  377. package/package/cc-switch-sdk/dist/utils/id.js +2 -12
  378. package/package/cc-switch-sdk/package.json +1 -1
  379. package/package.json +4 -2
  380. package/dist/adapter/AcodeSdkAdapter.d.ts.map +0 -1
  381. package/dist/adapter/AdapterRegistry.d.ts.map +0 -1
  382. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +0 -1
  383. package/dist/adapter/CodexSdkAdapter.d.ts.map +0 -1
  384. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +0 -1
  385. package/dist/adapter/SdkProviderSpi.d.ts.map +0 -1
  386. package/dist/adapter/acode-tool-names.d.ts.map +0 -1
  387. package/dist/adapter/idle-poll-loop.d.ts.map +0 -1
  388. package/dist/adapter/index.d.ts.map +0 -1
  389. package/dist/adapter/instance-ai-config-resolver.d.ts.map +0 -1
  390. package/dist/adapter/types.d.ts.map +0 -1
  391. package/dist/adapters/cc-switch/common.d.ts.map +0 -1
  392. package/dist/adapters/cc-switch/index.d.ts.map +0 -1
  393. package/dist/adapters/cc-switch/mcp-acode.d.ts.map +0 -1
  394. package/dist/adapters/cc-switch/mcp-claude.d.ts.map +0 -1
  395. package/dist/adapters/cc-switch/mcp-claudecode.d.ts.map +0 -1
  396. package/dist/adapters/cc-switch/mcp-codex.d.ts.map +0 -1
  397. package/dist/adapters/cc-switch/mcp-opencode.d.ts.map +0 -1
  398. package/dist/adapters/cc-switch/mcp-placeholder.d.ts.map +0 -1
  399. package/dist/adapters/cc-switch/skill-acode.d.ts.map +0 -1
  400. package/dist/adapters/cc-switch/skill-claude.d.ts.map +0 -1
  401. package/dist/adapters/cc-switch/skill-claudecode.d.ts.map +0 -1
  402. package/dist/adapters/cc-switch/skill-codex.d.ts.map +0 -1
  403. package/dist/adapters/cc-switch/skill-directory.d.ts.map +0 -1
  404. package/dist/adapters/cc-switch/skill-opencode.d.ts.map +0 -1
  405. package/dist/adapters/cc-switch/skill-placeholder.d.ts.map +0 -1
  406. package/dist/config.d.ts.map +0 -1
  407. package/dist/index.d.ts.map +0 -1
  408. package/dist/middleware/auth.d.ts.map +0 -1
  409. package/dist/routes/acode-todos.d.ts.map +0 -1
  410. package/dist/routes/ai-sources.d.ts.map +0 -1
  411. package/dist/routes/dashboard.d.ts.map +0 -1
  412. package/dist/routes/events.d.ts.map +0 -1
  413. package/dist/routes/file-browser.d.ts.map +0 -1
  414. package/dist/routes/file-diff-rollback.d.ts.map +0 -1
  415. package/dist/routes/file-snapshot.d.ts.map +0 -1
  416. package/dist/routes/git.d.ts.map +0 -1
  417. package/dist/routes/instance.d.ts.map +0 -1
  418. package/dist/routes/mcp.d.ts.map +0 -1
  419. package/dist/routes/processes.d.ts.map +0 -1
  420. package/dist/routes/properties.d.ts.map +0 -1
  421. package/dist/routes/pty.d.ts.map +0 -1
  422. package/dist/routes/runtime-binding.d.ts.map +0 -1
  423. package/dist/routes/sessions.d.ts.map +0 -1
  424. package/dist/routes/skills.d.ts.map +0 -1
  425. package/dist/routes/sub-agents.d.ts.map +0 -1
  426. package/dist/routes/system-metrics.d.ts.map +0 -1
  427. package/dist/routes/task-context.d.ts.map +0 -1
  428. package/dist/routes/terminal.d.ts.map +0 -1
  429. package/dist/routes/yml.d.ts.map +0 -1
  430. package/dist/services/acode-package.d.ts.map +0 -1
  431. package/dist/services/agent-event-store.d.ts.map +0 -1
  432. package/dist/services/agent-process-manager.d.ts.map +0 -1
  433. package/dist/services/ai-source-apply.d.ts.map +0 -1
  434. package/dist/services/auto-register.d.ts.map +0 -1
  435. package/dist/services/aws-client-agent-mcp.d.ts.map +0 -1
  436. package/dist/services/bridge-package-publish-hooks.d.ts.map +0 -1
  437. package/dist/services/cc-switch-sdk.d.ts.map +0 -1
  438. package/dist/services/cli-commands.d.ts.map +0 -1
  439. package/dist/services/event-delta-pusher.d.ts.map +0 -1
  440. package/dist/services/fileSnapshotStore.d.ts.map +0 -1
  441. package/dist/services/instance-ai-config-service.d.ts.map +0 -1
  442. package/dist/services/instance-init-service.d.ts.map +0 -1
  443. package/dist/services/instance-service.d.ts.map +0 -1
  444. package/dist/services/instance-state.d.ts.map +0 -1
  445. package/dist/services/legacy-path-migration.d.ts.map +0 -1
  446. package/dist/services/lifecycle-state.d.ts.map +0 -1
  447. package/dist/services/mcp-launch-binding-queue.d.ts.map +0 -1
  448. package/dist/services/orphan-monitor.d.ts.map +0 -1
  449. package/dist/services/panel-auth.d.ts.map +0 -1
  450. package/dist/services/process-detector.d.ts.map +0 -1
  451. package/dist/services/process-registry.d.ts.map +0 -1
  452. package/dist/services/ring-buffer.d.ts.map +0 -1
  453. package/dist/services/runtime-binding.d.ts.map +0 -1
  454. package/dist/services/runtime-lifecycle-policy.d.ts.map +0 -1
  455. package/dist/services/session-output.d.ts.map +0 -1
  456. package/dist/services/startup-config-wizard.d.ts.map +0 -1
  457. package/dist/services/sub-agent-manager-instance.d.ts.map +0 -1
  458. package/dist/services/system-metrics.d.ts.map +0 -1
  459. package/dist/services/terminal-persistence.d.ts.map +0 -1
  460. package/dist/services/tool-installer.d.ts.map +0 -1
  461. package/dist/services/tunnel-client.d.ts.map +0 -1
  462. package/dist/services/windows-service-manager.d.ts.map +0 -1
  463. package/dist/services/workspace-files.d.ts.map +0 -1
  464. package/dist/services/workspace-watch.d.ts.map +0 -1
  465. package/dist/services/workspaceTaskChangeWatcher.d.ts.map +0 -1
  466. package/dist/types.d.ts.map +0 -1
  467. package/dist/utils/file-utils.d.ts.map +0 -1
  468. package/dist/utils/instance-ai-config-debug-logger.d.ts.map +0 -1
  469. package/dist/utils/logger.d.ts.map +0 -1
  470. package/dist/utils/mcp-utils.d.ts.map +0 -1
  471. package/dist/utils/path-utils.d.ts.map +0 -1
  472. package/dist/utils/sdk-package-loader.d.ts.map +0 -1
  473. package/dist/utils/validation.d.ts.map +0 -1
  474. package/dist/utils/yaml-utils.d.ts.map +0 -1
  475. package/node_modules/@cc-switch/sdk/dist/constants.d.ts.map +0 -1
  476. package/node_modules/@cc-switch/sdk/dist/errors.d.ts.map +0 -1
  477. package/node_modules/@cc-switch/sdk/dist/index.d.ts.map +0 -1
  478. package/node_modules/@cc-switch/sdk/dist/schemas.d.ts.map +0 -1
  479. package/node_modules/@cc-switch/sdk/dist/sdk.d.ts.map +0 -1
  480. package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts.map +0 -1
  481. package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts.map +0 -1
  482. package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts.map +0 -1
  483. package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts.map +0 -1
  484. package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts.map +0 -1
  485. package/node_modules/@cc-switch/sdk/dist/state.d.ts.map +0 -1
  486. package/node_modules/@cc-switch/sdk/dist/types.d.ts.map +0 -1
  487. package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts.map +0 -1
  488. package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts.map +0 -1
  489. package/package/acode/dist/ask-user-question-tool.d.ts.map +0 -1
  490. package/package/acode/dist/built-in-file-tools.d.ts.map +0 -1
  491. package/package/acode/dist/built-in-symbols-tool.d.ts.map +0 -1
  492. package/package/acode/dist/builtins/commandArtifacts.d.ts.map +0 -1
  493. package/package/acode/dist/builtins/commandOutputEvents.d.ts.map +0 -1
  494. package/package/acode/dist/builtins/shellCommandPreparation.d.ts.map +0 -1
  495. package/package/acode/dist/builtins/shellCommandResult.d.ts.map +0 -1
  496. package/package/acode/dist/builtins/shellCommandRunner.d.ts.map +0 -1
  497. package/package/acode/dist/builtins/shellOutputDecoder.d.ts.map +0 -1
  498. package/package/acode/dist/cli.d.ts.map +0 -1
  499. package/package/acode/dist/commands/commandLoader.d.ts.map +0 -1
  500. package/package/acode/dist/commands/commandParser.d.ts.map +0 -1
  501. package/package/acode/dist/commands/commandRegistry.d.ts.map +0 -1
  502. package/package/acode/dist/compaction.d.ts.map +0 -1
  503. package/package/acode/dist/config.d.ts.map +0 -1
  504. package/package/acode/dist/fs-utils.d.ts.map +0 -1
  505. package/package/acode/dist/hooks/hookBus.d.ts.map +0 -1
  506. package/package/acode/dist/index.d.ts.map +0 -1
  507. package/package/acode/dist/mcpToolNames.d.ts.map +0 -1
  508. package/package/acode/dist/parsers/ast-cache.d.ts.map +0 -1
  509. package/package/acode/dist/parsers/language-detector.d.ts.map +0 -1
  510. package/package/acode/dist/parsers/language-queries.d.ts.map +0 -1
  511. package/package/acode/dist/parsers/symbol-extractor.d.ts.map +0 -1
  512. package/package/acode/dist/parsers/tree-sitter-loader.d.ts.map +0 -1
  513. package/package/acode/dist/parsers/types.d.ts.map +0 -1
  514. package/package/acode/dist/runtime.d.ts.map +0 -1
  515. package/package/acode/dist/skill-tool.d.ts.map +0 -1
  516. package/package/acode/dist/sub-agent-manager.d.ts.map +0 -1
  517. package/package/acode/dist/sub-agent-store.d.ts.map +0 -1
  518. package/package/acode/dist/sub-agent-tools.d.ts.map +0 -1
  519. package/package/acode/dist/sub-agent-types.d.ts.map +0 -1
  520. package/package/acode/dist/todo-store.d.ts.map +0 -1
  521. package/package/acode/dist/todo-tool.d.ts.map +0 -1
  522. package/package/acode/dist/types.d.ts.map +0 -1
  523. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +0 -1
  524. package/package/aws-client-agent-mcp/dist/agent-client.js.map +0 -1
  525. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts.map +0 -1
  526. package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +0 -1
  527. package/package/aws-client-agent-mcp/dist/config.d.ts.map +0 -1
  528. package/package/aws-client-agent-mcp/dist/config.js.map +0 -1
  529. package/package/aws-client-agent-mcp/dist/config.test.d.ts.map +0 -1
  530. package/package/aws-client-agent-mcp/dist/config.test.js.map +0 -1
  531. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +0 -1
  532. package/package/aws-client-agent-mcp/dist/constants.js.map +0 -1
  533. package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +0 -1
  534. package/package/aws-client-agent-mcp/dist/context-manager.js.map +0 -1
  535. package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts.map +0 -1
  536. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +0 -1
  537. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +0 -1
  538. package/package/aws-client-agent-mcp/dist/http-client.js.map +0 -1
  539. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts.map +0 -1
  540. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +0 -1
  541. package/package/aws-client-agent-mcp/dist/index.d.ts.map +0 -1
  542. package/package/aws-client-agent-mcp/dist/index.js.map +0 -1
  543. package/package/aws-client-agent-mcp/dist/logger.d.ts.map +0 -1
  544. package/package/aws-client-agent-mcp/dist/logger.js.map +0 -1
  545. package/package/aws-client-agent-mcp/dist/logger.test.d.ts.map +0 -1
  546. package/package/aws-client-agent-mcp/dist/logger.test.js.map +0 -1
  547. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +0 -1
  548. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +0 -1
  549. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts.map +0 -1
  550. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +0 -1
  551. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +0 -1
  552. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +0 -1
  553. package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts.map +0 -1
  554. package/package/aws-client-agent-mcp/dist/mcp-tools.test.js.map +0 -1
  555. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +0 -1
  556. package/package/aws-client-agent-mcp/dist/memory-store.js.map +0 -1
  557. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts.map +0 -1
  558. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +0 -1
  559. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +0 -1
  560. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +0 -1
  561. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +0 -1
  562. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +0 -1
  563. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts.map +0 -1
  564. package/package/aws-client-agent-mcp/dist/message-buffer.test.js.map +0 -1
  565. package/package/aws-client-agent-mcp/dist/messageContent.d.ts.map +0 -1
  566. package/package/aws-client-agent-mcp/dist/messageContent.js.map +0 -1
  567. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts.map +0 -1
  568. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js.map +0 -1
  569. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts.map +0 -1
  570. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js.map +0 -1
  571. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +0 -1
  572. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +0 -1
  573. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +0 -1
  574. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +0 -1
  575. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts.map +0 -1
  576. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +0 -1
  577. package/package/aws-client-agent-mcp/dist/types.d.ts.map +0 -1
  578. package/package/aws-client-agent-mcp/dist/types.js.map +0 -1
  579. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +0 -1
  580. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +0 -1
  581. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts.map +0 -1
  582. package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +0 -1
  583. package/package/cc-switch-sdk/dist/constants.d.ts.map +0 -1
  584. package/package/cc-switch-sdk/dist/errors.d.ts.map +0 -1
  585. package/package/cc-switch-sdk/dist/index.d.ts.map +0 -1
  586. package/package/cc-switch-sdk/dist/schemas.d.ts.map +0 -1
  587. package/package/cc-switch-sdk/dist/sdk.d.ts.map +0 -1
  588. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts.map +0 -1
  589. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts.map +0 -1
  590. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts.map +0 -1
  591. package/package/cc-switch-sdk/dist/services/skill-model.d.ts.map +0 -1
  592. package/package/cc-switch-sdk/dist/services/skill-service.d.ts.map +0 -1
  593. package/package/cc-switch-sdk/dist/state.d.ts.map +0 -1
  594. package/package/cc-switch-sdk/dist/types.d.ts.map +0 -1
  595. package/package/cc-switch-sdk/dist/utils/fs.d.ts.map +0 -1
  596. package/package/cc-switch-sdk/dist/utils/id.d.ts.map +0 -1
@@ -1,751 +1,5 @@
1
- import { execFile } from "node:child_process";
2
- import { access, readFile } from "node:fs/promises";
3
- import os from "node:os";
4
- import path from "node:path";
5
- import { promisify } from "node:util";
6
- import { createLogger } from "../utils/logger.js";
7
- import { BRIDGE_PACKAGE_ROOT, importBridgeSdkPackage } from "../utils/sdk-package-loader.js";
8
- const execFileAsync = promisify(execFile);
9
- const log = createLogger("tool-installer");
10
- const bridgePackageRoot = BRIDGE_PACKAGE_ROOT;
11
- const isWindows = process.platform === "win32";
12
- function quoteCommandArg(value) {
13
- if (isWindows) {
14
- return `"${value.replaceAll('"', '\\"')}"`;
15
- }
16
- return `'${value.replaceAll("'", "'\\''")}'`;
17
- }
18
- function npmInstallIntoBridgeCommand(packages) {
19
- return `npm install --prefix ${quoteCommandArg(bridgePackageRoot)} ${packages.join(" ")}`;
20
- }
21
- function npmInstallIntoBridgeWithOptionsCommand(packages, options) {
22
- return `npm install --prefix ${quoteCommandArg(bridgePackageRoot)} ${packages.join(" ")} ${options.join(" ")}`;
23
- }
24
- function npmGlobalInstallCommand(packages) {
25
- return `npm install -g ${packages.join(" ")}`;
26
- }
27
- function npmUninstallFromBridgeCommand(packages) {
28
- return `npm uninstall --prefix ${quoteCommandArg(bridgePackageRoot)} ${packages.join(" ")}`;
29
- }
30
- function npmBridgeInstallCommand(packages, options = []) {
31
- return {
32
- kind: "execFile",
33
- command: npmExecutableName(),
34
- args: ["install", "--prefix", bridgePackageRoot, ...packages, ...options],
35
- display: options.length > 0
36
- ? npmInstallIntoBridgeWithOptionsCommand(packages, options)
37
- : npmInstallIntoBridgeCommand(packages),
38
- };
39
- }
40
- function npmExecutableName() {
41
- return isWindows ? "npm.cmd" : "npm";
42
- }
43
- /**
44
- * 构建 bridge 本地 npm 包安装/卸载命令。
45
- * 主流程:展示层保留可读命令;执行层使用参数数组,避免 Windows shell 引号被 npm 当作路径内容。
46
- */
47
- function npmBridgeCommand(action, packages) {
48
- if (action === "install") {
49
- return npmBridgeInstallCommand(packages);
50
- }
51
- return {
52
- kind: "execFile",
53
- command: npmExecutableName(),
54
- args: [action, "--prefix", bridgePackageRoot, ...packages],
55
- display: npmUninstallFromBridgeCommand(packages),
56
- };
57
- }
58
- function npmGlobalCommand(action, packages) {
59
- return {
60
- kind: "execFile",
61
- command: npmExecutableName(),
62
- args: [action, "-g", ...packages],
63
- display: npmGlobalInstallCommand(packages),
64
- };
65
- }
66
- function shellToolCommand(command) {
67
- return { kind: "shell", display: command };
68
- }
69
- function nowIso() {
70
- return new Date().toISOString();
71
- }
72
- function finishAttempt(attempt, updates) {
73
- const finishedAt = nowIso();
74
- return {
75
- ...attempt,
76
- ...updates,
77
- finishedAt,
78
- durationMs: Date.parse(finishedAt) - Date.parse(attempt.startedAt),
79
- };
80
- }
81
- const TOOL_DEFINITIONS = {
82
- claude: {
83
- key: "claude",
84
- packageName: "@anthropic-ai/claude-agent-sdk",
85
- sdkPackageName: "@anthropic-ai/claude-agent-sdk",
86
- aliases: [],
87
- versionArgs: [],
88
- installCommands: [
89
- npmBridgeCommand("uninstall", ["@anthropic-ai/claude-agent-sdk", "@anthropic-ai/sdk"]),
90
- npmBridgeInstallCommand(["@anthropic-ai/sdk@latest"]),
91
- npmBridgeInstallCommand(["@anthropic-ai/claude-agent-sdk@latest"]),
92
- npmBridgeInstallCommand(["@anthropic-ai/claude-agent-sdk@latest"], ["--legacy-peer-deps"]),
93
- npmGlobalCommand("install", ["@anthropic-ai/claude-code@latest"]),
94
- ],
95
- uninstallCommands: [
96
- npmBridgeCommand("uninstall", ["@anthropic-ai/claude-agent-sdk"]),
97
- ],
98
- cliDependency: {
99
- packageName: "@anthropic-ai/claude-code",
100
- aliases: isWindows
101
- ? ["claude.cmd", "claude.exe", "claude"]
102
- : ["claude"],
103
- versionArgs: ["--version"],
104
- installCommands: [npmGlobalCommand("install", ["@anthropic-ai/claude-code@latest"])],
105
- },
106
- },
107
- claudecode: {
108
- key: "claudecode",
109
- packageName: "@anthropic-ai/claude-agent-sdk",
110
- sdkPackageName: "@anthropic-ai/claude-agent-sdk",
111
- aliases: [],
112
- versionArgs: [],
113
- installCommands: [
114
- npmBridgeCommand("uninstall", ["@anthropic-ai/claude-agent-sdk", "@anthropic-ai/sdk"]),
115
- npmBridgeInstallCommand(["@anthropic-ai/sdk@latest"]),
116
- npmBridgeInstallCommand(["@anthropic-ai/claude-agent-sdk@latest"]),
117
- npmBridgeInstallCommand(["@anthropic-ai/claude-agent-sdk@latest"], ["--legacy-peer-deps"]),
118
- npmGlobalCommand("install", ["@anthropic-ai/claude-code@latest"]),
119
- ],
120
- uninstallCommands: [
121
- npmBridgeCommand("uninstall", ["@anthropic-ai/claude-agent-sdk"]),
122
- ],
123
- cliDependency: {
124
- packageName: "@anthropic-ai/claude-code",
125
- aliases: isWindows
126
- ? ["claude.cmd", "claude.exe", "claude"]
127
- : ["claude"],
128
- versionArgs: ["--version"],
129
- installCommands: [npmGlobalCommand("install", ["@anthropic-ai/claude-code@latest"])],
130
- },
131
- },
132
- opencode: {
133
- key: "opencode",
134
- packageName: "@opencode-ai/sdk",
135
- sdkPackageName: "@opencode-ai/sdk",
136
- aliases: isWindows
137
- ? ["opencode.cmd", "opencode.exe", "opencode"]
138
- : ["opencode"],
139
- versionArgs: ["--version"],
140
- installCommands: [
141
- npmBridgeCommand("install", ["@opencode-ai/sdk@latest", "opencode-ai@latest"]),
142
- ],
143
- uninstallCommands: isWindows
144
- ? [
145
- npmBridgeCommand("uninstall", ["@opencode-ai/sdk", "opencode-ai"]),
146
- ]
147
- : [
148
- npmBridgeCommand("uninstall", ["@opencode-ai/sdk", "opencode-ai"]),
149
- shellToolCommand("opencode uninstall --force"),
150
- shellToolCommand("rm -f ~/.opencode/bin/opencode"),
151
- ],
152
- extraSearchPaths: () => {
153
- const home = os.homedir();
154
- return [
155
- process.env.OPENCODE_INSTALL_DIR || "",
156
- process.env.XDG_BIN_DIR || "",
157
- path.join(home, "bin"),
158
- path.join(home, ".opencode", "bin"),
159
- path.join(home, "go", "bin"),
160
- ].filter(Boolean);
161
- },
162
- },
163
- codex: {
164
- key: "codex",
165
- packageName: "@openai/codex-sdk",
166
- sdkPackageName: "@openai/codex-sdk",
167
- aliases: [],
168
- versionArgs: [],
169
- installCommands: [npmBridgeCommand("install", ["@openai/codex-sdk@latest"])],
170
- uninstallCommands: [npmBridgeCommand("uninstall", ["@openai/codex-sdk"])],
171
- },
172
- };
173
- export const SUPPORTED_INSTALLABLE_TOOLS = Object.freeze(Object.keys(TOOL_DEFINITIONS));
174
- export const SUPPORTED_UNINSTALLABLE_TOOLS = Object.freeze(Object.keys(TOOL_DEFINITIONS).filter((tool) => TOOL_DEFINITIONS[tool].uninstallCommands.length > 0));
175
- /**
176
- * 返回工具对应的全局卸载命令副本,用于诊断与测试卸载覆盖范围。
177
- */
178
- export function getToolUninstallCommands(tool) {
179
- const normalizedTool = String(tool || "")
180
- .trim()
181
- .toLowerCase();
182
- return (TOOL_DEFINITIONS[normalizedTool]?.uninstallCommands || []).map((command) => command.display);
183
- }
184
- /**
185
- * 返回工具对应的安装/卸载执行参数副本,用于验证 Windows 下不会把路径引号传给 npm。
186
- */
187
- export function getToolCommandSpecs(tool, phase) {
188
- const normalizedTool = String(tool || "")
189
- .trim()
190
- .toLowerCase();
191
- const commands = phase === "install"
192
- ? TOOL_DEFINITIONS[normalizedTool]?.installCommands
193
- : TOOL_DEFINITIONS[normalizedTool]?.uninstallCommands;
194
- return (commands || []).map((command) => ({
195
- command: command.kind === "execFile" ? command.command : command.display,
196
- args: command.kind === "execFile" ? [...command.args] : [],
197
- display: command.display,
198
- kind: command.kind,
199
- }));
200
- }
201
- function parseVersion(output) {
202
- const normalized = String(output || "").trim();
203
- if (!normalized) {
204
- return null;
205
- }
206
- const match = normalized.match(/(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)/);
207
- return match?.[1] || normalized.split(/\s+/)[0] || null;
208
- }
209
- function splitPathEntries(rawPath) {
210
- return String(rawPath || "")
211
- .split(path.delimiter)
212
- .map((item) => item.trim())
213
- .filter(Boolean);
214
- }
215
- function uniquePaths(paths) {
216
- return [...new Set(paths.filter(Boolean))];
217
- }
218
- function describeExecError(error) {
219
- if (!error || typeof error !== "object") {
220
- return "unknown detection error";
221
- }
222
- const code = "code" in error ? String(error.code || "").trim() : "";
223
- const errno = "errno" in error ? String(error.errno || "").trim() : "";
224
- const message = "message" in error ? String(error.message || "").trim() : "";
225
- if (code === "ENOENT") {
226
- return "command not found in PATH";
227
- }
228
- if (code === "EACCES" || code === "EPERM") {
229
- return "command found but not executable";
230
- }
231
- if (code === "ETIMEDOUT") {
232
- return "version command timed out";
233
- }
234
- if (code === "UNKNOWN" && /not recognized|not found/i.test(message)) {
235
- return "command not found in PATH";
236
- }
237
- if (errno === "-4058") {
238
- return "command not found in PATH";
239
- }
240
- if (errno === "-4048" || errno === "-13") {
241
- return "command found but not executable";
242
- }
243
- return message || "command execution failed";
244
- }
245
- export function isVoltaShimPath(commandPath) {
246
- const normalizedPath = path
247
- .normalize(commandPath)
248
- .replaceAll("\\", "/")
249
- .toLowerCase();
250
- return /(?:^|\/)\.?volta\/bin\//.test(normalizedPath);
251
- }
252
- export function buildSdkCliInstallStatus(tool, sdkResult, cliResult, requiresCli) {
253
- const isSdkInstalled = Boolean(sdkResult.executable);
254
- const isCliInstalled = requiresCli ? Boolean(cliResult.executable) : true;
255
- const errorMessages = [
256
- isSdkInstalled ? null : sdkResult.error,
257
- isCliInstalled ? null : cliResult.error,
258
- ].filter(Boolean);
259
- return {
260
- tool,
261
- installed: isSdkInstalled && isCliInstalled,
262
- executable: [sdkResult.executable, cliResult.executable]
263
- .filter(Boolean)
264
- .join("; ") || null,
265
- version: sdkResult.version,
266
- installing: false,
267
- error: errorMessages.length > 0 ? errorMessages.join("; ") : null,
268
- };
269
- }
270
- async function isVoltaPackageInstalled(packageName) {
271
- try {
272
- const { stdout, stderr } = await execFileAsync("volta", ["list", "--format", "plain"], {
273
- timeout: 20_000,
274
- });
275
- const output = `${stdout || ""}\n${stderr || ""}`;
276
- const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
277
- return new RegExp(`^package\\s+${escapedPackageName}(?:@|\\s)`, "im").test(output);
278
- }
279
- catch {
280
- return false;
281
- }
282
- }
283
- /**
284
- * 在 Windows 上执行命令(处理 .cmd/.bat 文件)
285
- * 在 Unix 系统上直接执行
286
- */
287
- async function executeVersionCommand(command, args) {
288
- if (isWindows) {
289
- // Windows 上需要通过 cmd.exe 执行命令(尤其是 .cmd/.bat 文件)
290
- const result = await execFileAsync("cmd.exe", ["/d", "/s", "/c", `${command} ${args.join(" ")}`], { timeout: 20_000 });
291
- return { stdout: result.stdout || "", stderr: result.stderr || "" };
292
- }
293
- const result = await execFileAsync(command, args, { timeout: 20_000 });
294
- return { stdout: result.stdout || "", stderr: result.stderr || "" };
295
- }
296
- async function resolveExecutableCandidate(definition) {
297
- const searchPaths = uniquePaths([
298
- ...splitPathEntries(process.env.PATH),
299
- ...(definition.extraSearchPaths ? definition.extraSearchPaths() : []),
300
- // Windows 上额外搜索 Volta 等常见路径
301
- ...(isWindows
302
- ? [
303
- path.join(process.env.APPDATA || "", "npm"),
304
- path.join(process.env.LOCALAPPDATA || "", "Volta", "bin"),
305
- path.join(process.env.APPDATA || "", "Volta", "bin"),
306
- "C:\\Program Files\\nodejs",
307
- ]
308
- : [
309
- path.join(os.homedir(), ".local", "bin"),
310
- "/usr/local/bin",
311
- "/usr/bin",
312
- ]),
313
- ]);
314
- let foundCommandPath = null;
315
- let executionFailureMessage = null;
316
- for (const alias of definition.aliases) {
317
- try {
318
- const { stdout, stderr } = await executeVersionCommand(alias, definition.versionArgs);
319
- const version = parseVersion(`${stdout || ""}\n${stderr || ""}`);
320
- if (!version) {
321
- return {
322
- executable: alias,
323
- version: null,
324
- error: "command executable but version output unavailable",
325
- };
326
- }
327
- return { executable: alias, version, error: null };
328
- }
329
- catch (error) {
330
- executionFailureMessage = describeExecError(error);
331
- if (!isWindows && executionFailureMessage !== "command not found in PATH") {
332
- return {
333
- executable: alias,
334
- version: null,
335
- error: executionFailureMessage,
336
- };
337
- }
338
- }
339
- for (const dir of searchPaths) {
340
- const absolutePath = path.join(dir, alias);
341
- try {
342
- await access(absolutePath);
343
- foundCommandPath = absolutePath;
344
- if (isVoltaShimPath(absolutePath) &&
345
- !(await isVoltaPackageInstalled(definition.packageName))) {
346
- foundCommandPath = null;
347
- continue;
348
- }
349
- const { stdout, stderr } = await executeVersionCommand(absolutePath, definition.versionArgs);
350
- const version = parseVersion(`${stdout || ""}\n${stderr || ""}`);
351
- if (!version) {
352
- return {
353
- executable: absolutePath,
354
- version: null,
355
- error: "command executable but version output unavailable",
356
- };
357
- }
358
- return { executable: absolutePath, version, error: null };
359
- }
360
- catch (error) {
361
- executionFailureMessage = describeExecError(error);
362
- if (foundCommandPath) {
363
- return {
364
- executable: foundCommandPath,
365
- version: null,
366
- error: executionFailureMessage,
367
- };
368
- }
369
- }
370
- }
371
- }
372
- if (foundCommandPath) {
373
- return {
374
- executable: foundCommandPath,
375
- version: null,
376
- error: executionFailureMessage || "command found but failed to execute",
377
- };
378
- }
379
- return { executable: null, version: null, error: "command not installed" };
380
- }
381
- async function readPackageVersion(packageJsonPath) {
382
- try {
383
- const rawPackageJson = await readFile(packageJsonPath, "utf8");
384
- const parsedPackageJson = JSON.parse(rawPackageJson);
385
- return typeof parsedPackageJson.version === "string"
386
- ? parsedPackageJson.version
387
- : null;
388
- }
389
- catch {
390
- return null;
391
- }
392
- }
393
- async function readInstalledPackageVersion(packageName) {
394
- const packageJsonPath = path.join(bridgePackageRoot, "node_modules", ...packageName.split("/"), "package.json");
395
- return readPackageVersion(packageJsonPath);
396
- }
397
- /**
398
- * 检测 SDK provider 包是否能被当前 bridge 进程解析。
399
- * 主流程:使用与运行时代码相同的模块解析上下文,避免把全局 CLI 安装误报为 SDK 可用。
400
- */
401
- async function resolveSdkPackageCandidate(definition) {
402
- const sdkPackageName = definition.sdkPackageName;
403
- if (!sdkPackageName) {
404
- return resolveExecutableCandidate(definition);
405
- }
406
- try {
407
- await importBridgeSdkPackage(sdkPackageName);
408
- return {
409
- executable: sdkPackageName,
410
- version: await readInstalledPackageVersion(sdkPackageName),
411
- error: null,
412
- };
413
- }
414
- catch (error) {
415
- const message = error instanceof Error ? error.message : String(error || "");
416
- return {
417
- executable: null,
418
- version: null,
419
- error: message.includes(sdkPackageName)
420
- ? `SDK package ${sdkPackageName} is not installed in aws-runtime-bridge`
421
- : message || `SDK package ${sdkPackageName} is not installed in aws-runtime-bridge`,
422
- };
423
- }
424
- }
425
- /**
426
- * 检测工具必需的终端 CLI 是否可执行。
427
- * 主流程:SDK 负责程序化调用,CLI 负责实际 Claude Code 运行;两者都可用才算集成可用。
428
- */
429
- async function resolveCliDependencyCandidate(definition) {
430
- const cliDependency = definition.cliDependency;
431
- if (!cliDependency) {
432
- return { executable: null, version: null, error: null };
433
- }
434
- const cliResult = await resolveExecutableCandidate(cliDependency);
435
- if (cliResult.executable) {
436
- return cliResult;
437
- }
438
- return {
439
- ...cliResult,
440
- error: `CLI package ${cliDependency.packageName} is not installed or command is unavailable: ${cliResult.error || "command not installed"}`,
441
- };
442
- }
443
- function describeCommandFailure(error) {
444
- if (!error || typeof error !== "object") {
445
- return {
446
- step: "install_command",
447
- command: null,
448
- message: String(error || "command failed"),
449
- code: null,
450
- signal: null,
451
- stdout: "",
452
- stderr: "",
453
- };
454
- }
455
- const failure = error;
456
- return {
457
- step: "install_command",
458
- command: null,
459
- message: typeof failure.message === "string" ? failure.message : String(error),
460
- code: typeof failure.code === "string" || typeof failure.code === "number" ? failure.code : null,
461
- signal: typeof failure.signal === "string" ? failure.signal : null,
462
- stdout: typeof failure.stdout === "string" ? failure.stdout : "",
463
- stderr: typeof failure.stderr === "string" ? failure.stderr : "",
464
- };
465
- }
466
- function buildFailureFromAttempt(attempt, fallbackMessage) {
467
- return {
468
- step: attempt.step,
469
- command: attempt.command,
470
- message: attempt.error || fallbackMessage,
471
- stdout: attempt.stdout || "",
472
- stderr: attempt.stderr || "",
473
- code: attempt.code ?? null,
474
- signal: attempt.signal ?? null,
475
- };
476
- }
477
- async function runToolCommand(command) {
478
- if (command.kind === "execFile") {
479
- const needsWindowsCmdShim = isWindows && /\.(?:cmd|bat)$/i.test(command.command);
480
- const result = needsWindowsCmdShim
481
- ? await execFileAsync("cmd.exe", ["/d", "/s", "/c", command.command, ...command.args], {
482
- timeout: 10 * 60 * 1000,
483
- windowsVerbatimArguments: false,
484
- })
485
- : await execFileAsync(command.command, command.args, {
486
- timeout: 10 * 60 * 1000,
487
- windowsVerbatimArguments: false,
488
- });
489
- return { stdout: result.stdout || "", stderr: result.stderr || "" };
490
- }
491
- if (isWindows) {
492
- const result = await execFileAsync("cmd.exe", ["/d", "/s", "/c", command.display], {
493
- timeout: 10 * 60 * 1000,
494
- });
495
- return { stdout: result.stdout || "", stderr: result.stderr || "" };
496
- }
497
- const result = await execFileAsync("/bin/sh", ["-lc", command.display], {
498
- timeout: 10 * 60 * 1000,
499
- });
500
- return { stdout: result.stdout || "", stderr: result.stderr || "" };
501
- }
502
- /**
503
- * 检查单个工具的 CLI 可执行状态,供实例状态展示与初始化前判断使用。
504
- */
505
- export async function detectToolInstallStatus(tool) {
506
- const normalizedTool = String(tool || "")
507
- .trim()
508
- .toLowerCase();
509
- if (normalizedTool === "acode") {
510
- return {
511
- tool: normalizedTool,
512
- installed: true,
513
- executable: "built-in",
514
- version: "bundled",
515
- installing: false,
516
- error: null,
517
- };
518
- }
519
- const definition = TOOL_DEFINITIONS[normalizedTool];
520
- if (!definition) {
521
- log.warn("Unsupported tool status requested", { tool: normalizedTool });
522
- return {
523
- tool: normalizedTool,
524
- installed: false,
525
- executable: null,
526
- version: null,
527
- installing: false,
528
- error: "unsupported tool",
529
- };
530
- }
531
- const sdkResult = await resolveSdkPackageCandidate(definition);
532
- if (definition.sdkPackageName) {
533
- const cliResult = await resolveCliDependencyCandidate(definition);
534
- return buildSdkCliInstallStatus(normalizedTool, sdkResult, cliResult, Boolean(definition.cliDependency));
535
- }
536
- const result = await resolveExecutableCandidate(definition);
537
- return {
538
- tool: normalizedTool,
539
- installed: Boolean(result.executable),
540
- executable: result.executable,
541
- version: result.version,
542
- installing: false,
543
- error: result.error,
544
- };
545
- }
546
- /**
547
- * 批量检查工具安装状态,统一返回给前端面板和实例状态持久化。
548
- */
549
- export async function detectToolStatuses(tools) {
550
- const normalizedTools = [
551
- ...new Set((Array.isArray(tools) ? tools : [])
552
- .map((item) => String(item || "")
553
- .trim()
554
- .toLowerCase())
555
- .filter(Boolean)),
556
- ];
557
- const entries = await Promise.all(normalizedTools.map(async (tool) => [tool, await detectToolInstallStatus(tool)]));
558
- return Object.fromEntries(entries);
559
- }
560
- /**
561
- * 根据勾选工具自动安装缺失 CLI,安装后重新检测状态并返回。
562
- */
563
- export async function ensureToolsInstalled(tools) {
564
- log.info("Install request received", {
565
- requestedTools: tools,
566
- bridgePackageRoot,
567
- platform: process.platform,
568
- node: process.version,
569
- });
570
- const initialStatuses = await detectToolStatuses(tools);
571
- log.info("Initial install status detected", { statuses: initialStatuses });
572
- const nextStatuses = { ...initialStatuses };
573
- for (const tool of Object.keys(initialStatuses)) {
574
- const current = initialStatuses[tool];
575
- if (current.installed) {
576
- log.info("Skipping install because tool SDK is already available", {
577
- tool,
578
- version: current.version,
579
- executable: current.executable,
580
- });
581
- continue;
582
- }
583
- const definition = TOOL_DEFINITIONS[tool];
584
- if (!definition) {
585
- log.warn("Skipping install because tool is unsupported", { tool, current });
586
- continue;
587
- }
588
- const attempts = [];
589
- const initialAttempt = finishAttempt({
590
- step: "detect_initial",
591
- label: "检测当前安装状态",
592
- command: null,
593
- status: "running",
594
- startedAt: nowIso(),
595
- }, {
596
- status: current.installed ? "success" : "error",
597
- error: current.installed ? null : current.error,
598
- });
599
- attempts.push(initialAttempt);
600
- let lastError = current.error;
601
- let lastFailure = current.installed
602
- ? null
603
- : buildFailureFromAttempt(initialAttempt, current.error || "tool is not installed");
604
- for (const [index, command] of definition.installCommands.entries()) {
605
- const commandAttempt = {
606
- step: `install_command_${index + 1}`,
607
- label: `执行安装命令 ${index + 1}/${definition.installCommands.length}`,
608
- command: command.display,
609
- status: "running",
610
- startedAt: nowIso(),
611
- };
612
- try {
613
- log.info("Running install command", {
614
- tool,
615
- command: command.display,
616
- sdkPackageName: definition.sdkPackageName || null,
617
- packageName: definition.packageName,
618
- });
619
- const commandResult = await runToolCommand(command);
620
- attempts.push(finishAttempt(commandAttempt, {
621
- status: "success",
622
- stdout: commandResult.stdout,
623
- stderr: commandResult.stderr,
624
- error: null,
625
- }));
626
- log.info("Install command completed", {
627
- tool,
628
- command: command.display,
629
- stdout: commandResult.stdout,
630
- stderr: commandResult.stderr,
631
- });
632
- const detected = await detectToolInstallStatus(tool);
633
- const detectAttempt = finishAttempt({
634
- step: `detect_after_command_${index + 1}`,
635
- label: `验证安装结果 ${index + 1}/${definition.installCommands.length}`,
636
- command: null,
637
- status: "running",
638
- startedAt: nowIso(),
639
- }, {
640
- status: detected.installed ? "success" : "error",
641
- error: detected.installed ? null : detected.error,
642
- });
643
- attempts.push(detectAttempt);
644
- nextStatuses[tool] = {
645
- ...detected,
646
- currentStep: detected.installed ? "安装完成" : detectAttempt.label,
647
- attempts: [...attempts],
648
- failure: detected.installed
649
- ? null
650
- : buildFailureFromAttempt(detectAttempt, detected.error || "install verification failed"),
651
- };
652
- log.info("Post-install status detected", { tool, status: detected });
653
- if (detected.installed) {
654
- lastError = null;
655
- lastFailure = null;
656
- break;
657
- }
658
- lastError = detected.error;
659
- lastFailure = buildFailureFromAttempt(detectAttempt, detected.error || "install verification failed");
660
- }
661
- catch (error) {
662
- const failure = {
663
- ...describeCommandFailure(error),
664
- step: commandAttempt.step,
665
- command: command.display,
666
- };
667
- attempts.push(finishAttempt(commandAttempt, {
668
- status: "error",
669
- error: failure.message,
670
- stdout: failure.stdout,
671
- stderr: failure.stderr,
672
- code: failure.code,
673
- signal: failure.signal,
674
- }));
675
- log.error("Install command failed", {
676
- tool,
677
- command: command.display,
678
- failure,
679
- });
680
- lastError = failure.message;
681
- lastFailure = failure;
682
- }
683
- }
684
- if (!nextStatuses[tool]?.installed) {
685
- nextStatuses[tool] = {
686
- ...nextStatuses[tool],
687
- tool,
688
- installed: false,
689
- installing: false,
690
- error: lastError || "install failed",
691
- currentStep: attempts.at(-1)?.label || "安装失败",
692
- attempts: [...attempts],
693
- failure: lastFailure,
694
- };
695
- log.warn("Tool SDK remains unavailable after install attempts", {
696
- tool,
697
- status: nextStatuses[tool],
698
- attemptedCommands: definition.installCommands,
699
- attemptedCommandDisplays: definition.installCommands.map((command) => command.display),
700
- });
701
- }
702
- }
703
- log.info("Install request completed", { statuses: nextStatuses });
704
- return nextStatuses;
705
- }
706
- /**
707
- * 按工具定义执行全局卸载命令,随后重新检测并返回最新安装状态。
708
- */
709
- export async function uninstallTools(tools) {
710
- const normalizedTools = [
711
- ...new Set((Array.isArray(tools) ? tools : [])
712
- .map((item) => String(item || "")
713
- .trim()
714
- .toLowerCase())
715
- .filter(Boolean)),
716
- ];
717
- const nextStatuses = {};
718
- for (const tool of normalizedTools) {
719
- const definition = TOOL_DEFINITIONS[tool];
720
- if (!definition) {
721
- nextStatuses[tool] = await detectToolInstallStatus(tool);
722
- continue;
723
- }
724
- let lastError = null;
725
- for (const command of definition.uninstallCommands) {
726
- try {
727
- await runToolCommand(command);
728
- lastError = null;
729
- const detectedAfterCommand = await detectToolInstallStatus(tool);
730
- if (!detectedAfterCommand.installed) {
731
- nextStatuses[tool] = detectedAfterCommand;
732
- break;
733
- }
734
- }
735
- catch (error) {
736
- lastError =
737
- error instanceof Error
738
- ? error.message
739
- : String(error || "uninstall failed");
740
- }
741
- }
742
- const detected = await detectToolInstallStatus(tool);
743
- nextStatuses[tool] = {
744
- ...detected,
745
- error: detected.installed
746
- ? lastError || detected.error || "uninstall completed but command is still available"
747
- : detected.error,
748
- };
749
- }
750
- return nextStatuses;
751
- }
1
+ import{execFile as F}from"node:child_process";import{access as z,readFile as V}from"node:fs/promises";import j from"node:os";import d from"node:path";import{promisify as R}from"node:util";import{createLogger as U}from"../utils/logger.js";import{BRIDGE_PACKAGE_ROOT as q,importBridgeSdkPackage as K}from"../utils/sdk-package-loader.js";const b=R(F),u=U("tool-installer"),k=q,m=process.platform==="win32";function N(e){return m?`"${e.replaceAll('"','\\"')}"`:`'${e.replaceAll("'","'\\''")}'`}function G(e){return`npm install --prefix ${N(k)} ${e.join(" ")}`}function H(e,t){return`npm install --prefix ${N(k)} ${e.join(" ")} ${t.join(" ")}`}function M(e){return`npm install -g ${e.join(" ")}`}function W(e){return`npm uninstall --prefix ${N(k)} ${e.join(" ")}`}function x(e,t=[]){return{kind:"execFile",command:I(),args:["install","--prefix",k,...e,...t],display:t.length>0?H(e,t):G(e)}}function I(){return m?"npm.cmd":"npm"}function p(e,t){return e==="install"?x(t):{kind:"execFile",command:I(),args:[e,"--prefix",k,...t],display:W(t)}}function S(e,t){return{kind:"execFile",command:I(),args:[e,"-g",...t],display:M(t)}}function D(e){return{kind:"shell",display:e}}function A(){return new Date().toISOString()}function P(e,t){const n=A();return{...e,...t,finishedAt:n,durationMs:Date.parse(n)-Date.parse(e.startedAt)}}const f={claude:{key:"claude",packageName:"@anthropic-ai/claude-agent-sdk",sdkPackageName:"@anthropic-ai/claude-agent-sdk",aliases:[],versionArgs:[],installCommands:[p("uninstall",["@anthropic-ai/claude-agent-sdk","@anthropic-ai/sdk"]),x(["@anthropic-ai/sdk@latest"]),x(["@anthropic-ai/claude-agent-sdk@latest"]),x(["@anthropic-ai/claude-agent-sdk@latest"],["--legacy-peer-deps"]),S("install",["@anthropic-ai/claude-code@latest"])],uninstallCommands:[p("uninstall",["@anthropic-ai/claude-agent-sdk"])],cliDependency:{packageName:"@anthropic-ai/claude-code",aliases:m?["claude.cmd","claude.exe","claude"]:["claude"],versionArgs:["--version"],installCommands:[S("install",["@anthropic-ai/claude-code@latest"])]}},claudecode:{key:"claudecode",packageName:"@anthropic-ai/claude-agent-sdk",sdkPackageName:"@anthropic-ai/claude-agent-sdk",aliases:[],versionArgs:[],installCommands:[p("uninstall",["@anthropic-ai/claude-agent-sdk","@anthropic-ai/sdk"]),x(["@anthropic-ai/sdk@latest"]),x(["@anthropic-ai/claude-agent-sdk@latest"]),x(["@anthropic-ai/claude-agent-sdk@latest"],["--legacy-peer-deps"]),S("install",["@anthropic-ai/claude-code@latest"])],uninstallCommands:[p("uninstall",["@anthropic-ai/claude-agent-sdk"])],cliDependency:{packageName:"@anthropic-ai/claude-code",aliases:m?["claude.cmd","claude.exe","claude"]:["claude"],versionArgs:["--version"],installCommands:[S("install",["@anthropic-ai/claude-code@latest"])]}},opencode:{key:"opencode",packageName:"@opencode-ai/sdk",sdkPackageName:"@opencode-ai/sdk",aliases:m?["opencode.cmd","opencode.exe","opencode"]:["opencode"],versionArgs:["--version"],installCommands:[p("install",["@opencode-ai/sdk@latest","opencode-ai@latest"])],uninstallCommands:m?[p("uninstall",["@opencode-ai/sdk","opencode-ai"])]:[p("uninstall",["@opencode-ai/sdk","opencode-ai"]),D("opencode uninstall --force"),D("rm -f ~/.opencode/bin/opencode")],extraSearchPaths:()=>{const e=j.homedir();return[process.env.OPENCODE_INSTALL_DIR||"",process.env.XDG_BIN_DIR||"",d.join(e,"bin"),d.join(e,".opencode","bin"),d.join(e,"go","bin")].filter(Boolean)}},codex:{key:"codex",packageName:"@openai/codex-sdk",sdkPackageName:"@openai/codex-sdk",aliases:[],versionArgs:[],installCommands:[p("install",["@openai/codex-sdk@latest"])],uninstallCommands:[p("uninstall",["@openai/codex-sdk"])]}},pe=Object.freeze(Object.keys(f)),fe=Object.freeze(Object.keys(f).filter(e=>f[e].uninstallCommands.length>0));function ge(e){const t=String(e||"").trim().toLowerCase();return(f[t]?.uninstallCommands||[]).map(n=>n.display)}function be(e,t){const n=String(e||"").trim().toLowerCase();return((t==="install"?f[n]?.installCommands:f[n]?.uninstallCommands)||[]).map(s=>({command:s.kind==="execFile"?s.command:s.display,args:s.kind==="execFile"?[...s.args]:[],display:s.display,kind:s.kind}))}function O(e){const t=String(e||"").trim();return t&&(t.match(/(\d+\.\d+\.\d+(?:[-+][\w.-]+)?)/)?.[1]||t.split(/\s+/)[0])||null}function J(e){return String(e||"").split(d.delimiter).map(t=>t.trim()).filter(Boolean)}function X(e){return[...new Set(e.filter(Boolean))]}function _(e){if(!e||typeof e!="object")return"unknown detection error";const t="code"in e?String(e.code||"").trim():"",n="errno"in e?String(e.errno||"").trim():"",a="message"in e?String(e.message||"").trim():"";return t==="ENOENT"?"command not found in PATH":t==="EACCES"||t==="EPERM"?"command found but not executable":t==="ETIMEDOUT"?"version command timed out":t==="UNKNOWN"&&/not recognized|not found/i.test(a)||n==="-4058"?"command not found in PATH":n==="-4048"||n==="-13"?"command found but not executable":a||"command execution failed"}function Q(e){const t=d.normalize(e).replaceAll("\\","/").toLowerCase();return/(?:^|\/)\.?volta\/bin\//.test(t)}function Y(e,t,n,a){const s=!!t.executable,r=a?!!n.executable:!0,o=[s?null:t.error,r?null:n.error].filter(Boolean);return{tool:e,installed:s&&r,executable:[t.executable,n.executable].filter(Boolean).join("; ")||null,version:t.version,installing:!1,error:o.length>0?o.join("; "):null}}async function Z(e){try{const{stdout:t,stderr:n}=await b("volta",["list","--format","plain"],{timeout:2e4}),a=`${t||""}
2
+ ${n||""}`,s=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^package\\s+${s}(?:@|\\s)`,"im").test(a)}catch{return!1}}async function B(e,t){if(m){const a=await b("cmd.exe",["/d","/s","/c",`${e} ${t.join(" ")}`],{timeout:2e4});return{stdout:a.stdout||"",stderr:a.stderr||""}}const n=await b(e,t,{timeout:2e4});return{stdout:n.stdout||"",stderr:n.stderr||""}}async function $(e){const t=X([...J(process.env.PATH),...e.extraSearchPaths?e.extraSearchPaths():[],...m?[d.join(process.env.APPDATA||"","npm"),d.join(process.env.LOCALAPPDATA||"","Volta","bin"),d.join(process.env.APPDATA||"","Volta","bin"),"C:\\Program Files\\nodejs"]:[d.join(j.homedir(),".local","bin"),"/usr/local/bin","/usr/bin"]]);let n=null,a=null;for(const s of e.aliases){try{const{stdout:r,stderr:o}=await B(s,e.versionArgs),c=O(`${r||""}
3
+ ${o||""}`);return c?{executable:s,version:c,error:null}:{executable:s,version:null,error:"command executable but version output unavailable"}}catch(r){if(a=_(r),!m&&a!=="command not found in PATH")return{executable:s,version:null,error:a}}for(const r of t){const o=d.join(r,s);try{if(await z(o),n=o,Q(o)&&!await Z(e.packageName)){n=null;continue}const{stdout:c,stderr:i}=await B(o,e.versionArgs),g=O(`${c||""}
4
+ ${i||""}`);return g?{executable:o,version:g,error:null}:{executable:o,version:null,error:"command executable but version output unavailable"}}catch(c){if(a=_(c),n)return{executable:n,version:null,error:a}}}}return n?{executable:n,version:null,error:a||"command found but failed to execute"}:{executable:null,version:null,error:"command not installed"}}async function ee(e){try{const t=await V(e,"utf8"),n=JSON.parse(t);return typeof n.version=="string"?n.version:null}catch{return null}}async function te(e){const t=d.join(k,"node_modules",...e.split("/"),"package.json");return ee(t)}async function ne(e){const t=e.sdkPackageName;if(!t)return $(e);try{return await K(t),{executable:t,version:await te(t),error:null}}catch(n){const a=n instanceof Error?n.message:String(n||"");return{executable:null,version:null,error:a.includes(t)?`SDK package ${t} is not installed in aws-runtime-bridge`:a||`SDK package ${t} is not installed in aws-runtime-bridge`}}}async function ae(e){const t=e.cliDependency;if(!t)return{executable:null,version:null,error:null};const n=await $(t);return n.executable?n:{...n,error:`CLI package ${t.packageName} is not installed or command is unavailable: ${n.error||"command not installed"}`}}function se(e){if(!e||typeof e!="object")return{step:"install_command",command:null,message:String(e||"command failed"),code:null,signal:null,stdout:"",stderr:""};const t=e;return{step:"install_command",command:null,message:typeof t.message=="string"?t.message:String(e),code:typeof t.code=="string"||typeof t.code=="number"?t.code:null,signal:typeof t.signal=="string"?t.signal:null,stdout:typeof t.stdout=="string"?t.stdout:"",stderr:typeof t.stderr=="string"?t.stderr:""}}function E(e,t){return{step:e.step,command:e.command,message:e.error||t,stdout:e.stdout||"",stderr:e.stderr||"",code:e.code??null,signal:e.signal??null}}async function L(e){if(e.kind==="execFile"){const a=m&&/\.(?:cmd|bat)$/i.test(e.command)?await b("cmd.exe",["/d","/s","/c",e.command,...e.args],{timeout:10*60*1e3,windowsVerbatimArguments:!1}):await b(e.command,e.args,{timeout:10*60*1e3,windowsVerbatimArguments:!1});return{stdout:a.stdout||"",stderr:a.stderr||""}}if(m){const n=await b("cmd.exe",["/d","/s","/c",e.display],{timeout:6e5});return{stdout:n.stdout||"",stderr:n.stderr||""}}const t=await b("/bin/sh",["-lc",e.display],{timeout:10*60*1e3});return{stdout:t.stdout||"",stderr:t.stderr||""}}async function v(e){const t=String(e||"").trim().toLowerCase();if(t==="acode")return{tool:t,installed:!0,executable:"built-in",version:"bundled",installing:!1,error:null};const n=f[t];if(!n)return u.warn("Unsupported tool status requested",{tool:t}),{tool:t,installed:!1,executable:null,version:null,installing:!1,error:"unsupported tool"};const a=await ne(n);if(n.sdkPackageName){const r=await ae(n);return Y(t,a,r,!!n.cliDependency)}const s=await $(n);return{tool:t,installed:!!s.executable,executable:s.executable,version:s.version,installing:!1,error:s.error}}async function oe(e){const t=[...new Set((Array.isArray(e)?e:[]).map(a=>String(a||"").trim().toLowerCase()).filter(Boolean))],n=await Promise.all(t.map(async a=>[a,await v(a)]));return Object.fromEntries(n)}async function ke(e){u.info("Install request received",{requestedTools:e,bridgePackageRoot:k,platform:process.platform,node:process.version});const t=await oe(e);u.info("Initial install status detected",{statuses:t});const n={...t};for(const a of Object.keys(t)){const s=t[a];if(s.installed){u.info("Skipping install because tool SDK is already available",{tool:a,version:s.version,executable:s.executable});continue}const r=f[a];if(!r){u.warn("Skipping install because tool is unsupported",{tool:a,current:s});continue}const o=[],c=P({step:"detect_initial",label:"\u68C0\u6D4B\u5F53\u524D\u5B89\u88C5\u72B6\u6001",command:null,status:"running",startedAt:A()},{status:s.installed?"success":"error",error:s.installed?null:s.error});o.push(c);let i=s.error,g=s.installed?null:E(c,s.error||"tool is not installed");for(const[h,y]of r.installCommands.entries()){const T={step:`install_command_${h+1}`,label:`\u6267\u884C\u5B89\u88C5\u547D\u4EE4 ${h+1}/${r.installCommands.length}`,command:y.display,status:"running",startedAt:A()};try{u.info("Running install command",{tool:a,command:y.display,sdkPackageName:r.sdkPackageName||null,packageName:r.packageName});const C=await L(y);o.push(P(T,{status:"success",stdout:C.stdout,stderr:C.stderr,error:null})),u.info("Install command completed",{tool:a,command:y.display,stdout:C.stdout,stderr:C.stderr});const l=await v(a),w=P({step:`detect_after_command_${h+1}`,label:`\u9A8C\u8BC1\u5B89\u88C5\u7ED3\u679C ${h+1}/${r.installCommands.length}`,command:null,status:"running",startedAt:A()},{status:l.installed?"success":"error",error:l.installed?null:l.error});if(o.push(w),n[a]={...l,currentStep:l.installed?"\u5B89\u88C5\u5B8C\u6210":w.label,attempts:[...o],failure:l.installed?null:E(w,l.error||"install verification failed")},u.info("Post-install status detected",{tool:a,status:l}),l.installed){i=null,g=null;break}i=l.error,g=E(w,l.error||"install verification failed")}catch(C){const l={...se(C),step:T.step,command:y.display};o.push(P(T,{status:"error",error:l.message,stdout:l.stdout,stderr:l.stderr,code:l.code,signal:l.signal})),u.error("Install command failed",{tool:a,command:y.display,failure:l}),i=l.message,g=l}}n[a]?.installed||(n[a]={...n[a],tool:a,installed:!1,installing:!1,error:i||"install failed",currentStep:o.at(-1)?.label||"\u5B89\u88C5\u5931\u8D25",attempts:[...o],failure:g},u.warn("Tool SDK remains unavailable after install attempts",{tool:a,status:n[a],attemptedCommands:r.installCommands,attemptedCommandDisplays:r.installCommands.map(h=>h.display)}))}return u.info("Install request completed",{statuses:n}),n}async function xe(e){const t=[...new Set((Array.isArray(e)?e:[]).map(a=>String(a||"").trim().toLowerCase()).filter(Boolean))],n={};for(const a of t){const s=f[a];if(!s){n[a]=await v(a);continue}let r=null;for(const c of s.uninstallCommands)try{await L(c),r=null;const i=await v(a);if(!i.installed){n[a]=i;break}}catch(i){r=i instanceof Error?i.message:String(i||"uninstall failed")}const o=await v(a);n[a]={...o,error:o.installed?r||o.error||"uninstall completed but command is still available":o.error}}return n}export{pe as SUPPORTED_INSTALLABLE_TOOLS,fe as SUPPORTED_UNINSTALLABLE_TOOLS,Y as buildSdkCliInstallStatus,v as detectToolInstallStatus,oe as detectToolStatuses,ke as ensureToolsInstalled,be as getToolCommandSpecs,ge as getToolUninstallCommands,Q as isVoltaShimPath,xe as uninstallTools};
5
+