aws-runtime-bridge 1.9.33 → 1.9.41

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 (324) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +66 -5
  2. package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
  3. package/dist/adapter/AcodeSdkAdapter.js +771 -69
  4. package/dist/adapter/ClaudeSdkAdapter.d.ts +6 -0
  5. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
  6. package/dist/adapter/ClaudeSdkAdapter.js +24 -1
  7. package/dist/adapter/OpencodeSdkAdapter.d.ts +19 -0
  8. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
  9. package/dist/adapter/OpencodeSdkAdapter.js +62 -0
  10. package/dist/adapter/idle-poll-loop.d.ts +2 -1
  11. package/dist/adapter/idle-poll-loop.d.ts.map +1 -1
  12. package/dist/adapter/types.d.ts +86 -9
  13. package/dist/adapter/types.d.ts.map +1 -1
  14. package/dist/adapter/types.js +15 -5
  15. package/dist/index.js +15 -0
  16. package/dist/routes/acode-todos.d.ts +11 -0
  17. package/dist/routes/acode-todos.d.ts.map +1 -0
  18. package/dist/routes/acode-todos.js +75 -0
  19. package/dist/routes/ai-sources.js +4 -1
  20. package/dist/routes/dashboard.d.ts.map +1 -1
  21. package/dist/routes/dashboard.js +1 -1
  22. package/dist/routes/memory.d.ts +1 -1
  23. package/dist/routes/memory.d.ts.map +1 -1
  24. package/dist/routes/memory.js +3 -3
  25. package/dist/routes/pty.d.ts.map +1 -1
  26. package/dist/routes/pty.js +9 -0
  27. package/dist/routes/runtime-binding.d.ts.map +1 -1
  28. package/dist/routes/runtime-binding.js +6 -3
  29. package/dist/routes/sessions.js +89 -4
  30. package/dist/routes/sub-agents.d.ts +14 -0
  31. package/dist/routes/sub-agents.d.ts.map +1 -0
  32. package/dist/routes/sub-agents.js +267 -0
  33. package/dist/routes/terminal.d.ts +12 -1
  34. package/dist/routes/terminal.d.ts.map +1 -1
  35. package/dist/routes/terminal.js +326 -24
  36. package/dist/services/acode-package.d.ts +8 -1
  37. package/dist/services/acode-package.d.ts.map +1 -1
  38. package/dist/services/acode-package.js +33 -4
  39. package/dist/services/agent-event-store.d.ts +1 -0
  40. package/dist/services/agent-event-store.d.ts.map +1 -1
  41. package/dist/services/aws-client-agent-mcp.d.ts.map +1 -1
  42. package/dist/services/aws-client-agent-mcp.js +11 -4
  43. package/dist/services/event-delta-pusher.js +4 -4
  44. package/dist/services/fileSnapshotStore.js +1 -1
  45. package/dist/services/legacy-path-migration.d.ts +3 -0
  46. package/dist/services/legacy-path-migration.d.ts.map +1 -0
  47. package/dist/services/legacy-path-migration.js +66 -0
  48. package/dist/services/lifecycle-state.d.ts.map +1 -1
  49. package/dist/services/lifecycle-state.js +1 -1
  50. package/dist/services/runtime-binding.d.ts +5 -0
  51. package/dist/services/runtime-binding.d.ts.map +1 -1
  52. package/dist/services/runtime-binding.js +33 -1
  53. package/dist/services/session-output.d.ts +10 -1
  54. package/dist/services/session-output.d.ts.map +1 -1
  55. package/dist/services/session-output.js +54 -4
  56. package/dist/services/sub-agent-manager-instance.d.ts +4 -0
  57. package/dist/services/sub-agent-manager-instance.d.ts.map +1 -0
  58. package/dist/services/sub-agent-manager-instance.js +12 -0
  59. package/dist/services/workspace-files.d.ts +1 -0
  60. package/dist/services/workspace-files.d.ts.map +1 -1
  61. package/dist/services/workspace-files.js +57 -1
  62. package/package/acode/dist/ask-user-question-tool.d.ts +47 -0
  63. package/package/acode/dist/ask-user-question-tool.d.ts.map +1 -0
  64. package/package/acode/dist/ask-user-question-tool.js +233 -0
  65. package/package/acode/dist/built-in-file-tools.d.ts +2 -0
  66. package/package/acode/dist/built-in-file-tools.d.ts.map +1 -1
  67. package/package/acode/dist/built-in-file-tools.js +504 -3
  68. package/package/acode/dist/compaction.d.ts +242 -0
  69. package/package/acode/dist/compaction.d.ts.map +1 -0
  70. package/package/acode/dist/compaction.js +919 -0
  71. package/package/acode/dist/config.d.ts +6 -1
  72. package/package/acode/dist/config.d.ts.map +1 -1
  73. package/package/acode/dist/config.js +27 -2
  74. package/package/acode/dist/index.d.ts +4 -0
  75. package/package/acode/dist/index.d.ts.map +1 -1
  76. package/package/acode/dist/index.js +4 -0
  77. package/package/acode/dist/runtime.d.ts +257 -0
  78. package/package/acode/dist/runtime.d.ts.map +1 -1
  79. package/package/acode/dist/runtime.js +1843 -191
  80. package/package/acode/dist/skill-tool.d.ts +30 -0
  81. package/package/acode/dist/skill-tool.d.ts.map +1 -0
  82. package/package/acode/dist/skill-tool.js +174 -0
  83. package/package/acode/dist/sub-agent-manager.d.ts +264 -0
  84. package/package/acode/dist/sub-agent-manager.d.ts.map +1 -0
  85. package/package/acode/dist/sub-agent-manager.js +825 -0
  86. package/package/acode/dist/sub-agent-store.d.ts +40 -0
  87. package/package/acode/dist/sub-agent-store.d.ts.map +1 -0
  88. package/package/acode/dist/sub-agent-store.js +164 -0
  89. package/package/acode/dist/sub-agent-tools.d.ts +72 -0
  90. package/package/acode/dist/sub-agent-tools.d.ts.map +1 -0
  91. package/package/acode/dist/sub-agent-tools.js +429 -0
  92. package/package/acode/dist/sub-agent-types.d.ts +85 -0
  93. package/package/acode/dist/sub-agent-types.d.ts.map +1 -0
  94. package/package/acode/dist/sub-agent-types.js +8 -0
  95. package/package/acode/dist/todo-store.d.ts +42 -0
  96. package/package/acode/dist/todo-store.d.ts.map +1 -0
  97. package/package/acode/dist/todo-store.js +68 -0
  98. package/package/acode/dist/todo-tool.d.ts +6 -0
  99. package/package/acode/dist/todo-tool.d.ts.map +1 -0
  100. package/package/acode/dist/todo-tool.js +138 -0
  101. package/package/acode/dist/types.d.ts +41 -1
  102. package/package/acode/dist/types.d.ts.map +1 -1
  103. package/package/acode/package.json +13 -2
  104. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +9 -0
  105. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
  106. package/package/aws-client-agent-mcp/dist/agent-client.js +69 -10
  107. package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
  108. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
  109. package/package/aws-client-agent-mcp/dist/config.js +4 -0
  110. package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
  111. package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
  112. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -1
  113. package/package/aws-client-agent-mcp/dist/constants.js +3 -1
  114. package/package/aws-client-agent-mcp/dist/constants.js.map +1 -1
  115. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +4 -1
  116. package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +1 -1
  117. package/package/aws-client-agent-mcp/dist/context-manager.js +6 -2
  118. package/package/aws-client-agent-mcp/dist/context-manager.js.map +1 -1
  119. package/package/aws-client-agent-mcp/dist/context-manager.test.js +5 -3
  120. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
  121. package/package/aws-client-agent-mcp/dist/http-client.d.ts +5 -0
  122. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
  123. package/package/aws-client-agent-mcp/dist/http-client.js +15 -1
  124. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
  125. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +162 -71
  126. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
  127. package/package/aws-client-agent-mcp/dist/mcp-server.js +1007 -504
  128. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
  129. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +371 -253
  130. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
  131. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +6 -17
  132. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
  133. package/package/aws-client-agent-mcp/dist/mcp-tools.js +20 -75
  134. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
  135. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +45 -45
  136. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
  137. package/package/aws-client-agent-mcp/dist/memory-store.js +114 -162
  138. package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
  139. package/package/aws-client-agent-mcp/dist/memory-store.test.js +175 -164
  140. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -1
  141. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +3 -9
  142. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
  143. package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -58
  144. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
  145. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +40 -9
  146. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -1
  147. package/package/aws-client-agent-mcp/dist/message-buffer.js +123 -23
  148. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -1
  149. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +13 -13
  150. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
  151. package/package/aws-client-agent-mcp/dist/server-memory-store.js +23 -16
  152. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
  153. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
  154. package/package/aws-client-agent-mcp/dist/status-reporter.js +8 -5
  155. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
  156. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +93 -0
  157. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +1 -1
  158. package/package/aws-client-agent-mcp/dist/types.d.ts +12 -25
  159. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
  160. package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
  161. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +34 -1
  162. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
  163. package/package/aws-client-agent-mcp/dist/websocket-client.js +146 -18
  164. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
  165. package/package.json +17 -7
  166. package/dist/adapter/AcodeSdkAdapter.test.d.ts +0 -2
  167. package/dist/adapter/AcodeSdkAdapter.test.d.ts.map +0 -1
  168. package/dist/adapter/AcodeSdkAdapter.test.js +0 -2000
  169. package/dist/adapter/AdapterRegistry.test.d.ts +0 -5
  170. package/dist/adapter/AdapterRegistry.test.d.ts.map +0 -1
  171. package/dist/adapter/AdapterRegistry.test.js +0 -118
  172. package/dist/adapter/ClaudeSdkAdapter.test.d.ts +0 -2
  173. package/dist/adapter/ClaudeSdkAdapter.test.d.ts.map +0 -1
  174. package/dist/adapter/ClaudeSdkAdapter.test.js +0 -311
  175. package/dist/adapter/CodexSdkAdapter.test.d.ts +0 -2
  176. package/dist/adapter/CodexSdkAdapter.test.d.ts.map +0 -1
  177. package/dist/adapter/CodexSdkAdapter.test.js +0 -270
  178. package/dist/adapter/OpencodeSdkAdapter.test.d.ts +0 -2
  179. package/dist/adapter/OpencodeSdkAdapter.test.d.ts.map +0 -1
  180. package/dist/adapter/OpencodeSdkAdapter.test.js +0 -158
  181. package/dist/adapter/acode-tool-names.test.d.ts +0 -2
  182. package/dist/adapter/acode-tool-names.test.d.ts.map +0 -1
  183. package/dist/adapter/acode-tool-names.test.js +0 -28
  184. package/dist/adapter/adapter.test.d.ts +0 -5
  185. package/dist/adapter/adapter.test.d.ts.map +0 -1
  186. package/dist/adapter/adapter.test.js +0 -180
  187. package/dist/adapter/idle-poll-loop.test.d.ts +0 -2
  188. package/dist/adapter/idle-poll-loop.test.d.ts.map +0 -1
  189. package/dist/adapter/idle-poll-loop.test.js +0 -85
  190. package/dist/adapter/types.test.d.ts +0 -2
  191. package/dist/adapter/types.test.d.ts.map +0 -1
  192. package/dist/adapter/types.test.js +0 -50
  193. package/dist/adapters/cc-switch/mcp-acode.test.d.ts +0 -2
  194. package/dist/adapters/cc-switch/mcp-acode.test.d.ts.map +0 -1
  195. package/dist/adapters/cc-switch/mcp-acode.test.js +0 -80
  196. package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts +0 -2
  197. package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts.map +0 -1
  198. package/dist/adapters/cc-switch/mcp-claudecode.test.js +0 -75
  199. package/dist/adapters/cc-switch/mcp-codex.test.d.ts +0 -2
  200. package/dist/adapters/cc-switch/mcp-codex.test.d.ts.map +0 -1
  201. package/dist/adapters/cc-switch/mcp-codex.test.js +0 -126
  202. package/dist/adapters/cc-switch/mcp-opencode.test.d.ts +0 -2
  203. package/dist/adapters/cc-switch/mcp-opencode.test.d.ts.map +0 -1
  204. package/dist/adapters/cc-switch/mcp-opencode.test.js +0 -62
  205. package/dist/adapters/cc-switch/skill-directory.test.d.ts +0 -2
  206. package/dist/adapters/cc-switch/skill-directory.test.d.ts.map +0 -1
  207. package/dist/adapters/cc-switch/skill-directory.test.js +0 -74
  208. package/dist/config.test.d.ts +0 -2
  209. package/dist/config.test.d.ts.map +0 -1
  210. package/dist/config.test.js +0 -107
  211. package/dist/routes/ai-sources.test.d.ts +0 -2
  212. package/dist/routes/ai-sources.test.d.ts.map +0 -1
  213. package/dist/routes/ai-sources.test.js +0 -169
  214. package/dist/routes/file-browser.test.d.ts +0 -5
  215. package/dist/routes/file-browser.test.d.ts.map +0 -1
  216. package/dist/routes/file-browser.test.js +0 -155
  217. package/dist/routes/git.test.d.ts +0 -2
  218. package/dist/routes/git.test.d.ts.map +0 -1
  219. package/dist/routes/git.test.js +0 -330
  220. package/dist/routes/instance.test.d.ts +0 -5
  221. package/dist/routes/instance.test.d.ts.map +0 -1
  222. package/dist/routes/instance.test.js +0 -389
  223. package/dist/routes/mcp.test.d.ts +0 -5
  224. package/dist/routes/mcp.test.d.ts.map +0 -1
  225. package/dist/routes/mcp.test.js +0 -92
  226. package/dist/routes/memory-route-wiring.test.d.ts +0 -2
  227. package/dist/routes/memory-route-wiring.test.d.ts.map +0 -1
  228. package/dist/routes/memory-route-wiring.test.js +0 -15
  229. package/dist/routes/memory.test.d.ts +0 -2
  230. package/dist/routes/memory.test.d.ts.map +0 -1
  231. package/dist/routes/memory.test.js +0 -177
  232. package/dist/routes/properties.test.d.ts +0 -5
  233. package/dist/routes/properties.test.d.ts.map +0 -1
  234. package/dist/routes/properties.test.js +0 -72
  235. package/dist/routes/pty.test.d.ts +0 -2
  236. package/dist/routes/pty.test.d.ts.map +0 -1
  237. package/dist/routes/pty.test.js +0 -82
  238. package/dist/routes/runtime-binding.test.d.ts +0 -2
  239. package/dist/routes/runtime-binding.test.d.ts.map +0 -1
  240. package/dist/routes/runtime-binding.test.js +0 -32
  241. package/dist/routes/sessions.test.d.ts +0 -5
  242. package/dist/routes/sessions.test.d.ts.map +0 -1
  243. package/dist/routes/sessions.test.js +0 -86
  244. package/dist/routes/skills.test.d.ts +0 -5
  245. package/dist/routes/skills.test.d.ts.map +0 -1
  246. package/dist/routes/skills.test.js +0 -50
  247. package/dist/routes/system-metrics.test.d.ts +0 -2
  248. package/dist/routes/system-metrics.test.d.ts.map +0 -1
  249. package/dist/routes/system-metrics.test.js +0 -16
  250. package/dist/routes/terminal.stop-options.test.d.ts +0 -2
  251. package/dist/routes/terminal.stop-options.test.d.ts.map +0 -1
  252. package/dist/routes/terminal.stop-options.test.js +0 -39
  253. package/dist/routes/terminal.test.d.ts +0 -2
  254. package/dist/routes/terminal.test.d.ts.map +0 -1
  255. package/dist/routes/terminal.test.js +0 -746
  256. package/dist/routes/yml.test.d.ts +0 -5
  257. package/dist/routes/yml.test.d.ts.map +0 -1
  258. package/dist/routes/yml.test.js +0 -58
  259. package/dist/services/ai-source-apply.test.d.ts +0 -2
  260. package/dist/services/ai-source-apply.test.d.ts.map +0 -1
  261. package/dist/services/ai-source-apply.test.js +0 -138
  262. package/dist/services/auto-register.test.d.ts +0 -2
  263. package/dist/services/auto-register.test.d.ts.map +0 -1
  264. package/dist/services/auto-register.test.js +0 -184
  265. package/dist/services/aws-client-agent-mcp.test.d.ts +0 -2
  266. package/dist/services/aws-client-agent-mcp.test.d.ts.map +0 -1
  267. package/dist/services/aws-client-agent-mcp.test.js +0 -242
  268. package/dist/services/bridge-package-publish-hooks.test.d.ts +0 -2
  269. package/dist/services/bridge-package-publish-hooks.test.d.ts.map +0 -1
  270. package/dist/services/bridge-package-publish-hooks.test.js +0 -136
  271. package/dist/services/cc-switch-discovery.test.d.ts +0 -2
  272. package/dist/services/cc-switch-discovery.test.d.ts.map +0 -1
  273. package/dist/services/cc-switch-discovery.test.js +0 -56
  274. package/dist/services/cli-commands.test.d.ts +0 -2
  275. package/dist/services/cli-commands.test.d.ts.map +0 -1
  276. package/dist/services/cli-commands.test.js +0 -230
  277. package/dist/services/instance-init-service.test.d.ts +0 -2
  278. package/dist/services/instance-init-service.test.d.ts.map +0 -1
  279. package/dist/services/instance-init-service.test.js +0 -140
  280. package/dist/services/instance-state.test.d.ts +0 -2
  281. package/dist/services/instance-state.test.d.ts.map +0 -1
  282. package/dist/services/instance-state.test.js +0 -245
  283. package/dist/services/mcp-launch-binding-queue.test.d.ts +0 -2
  284. package/dist/services/mcp-launch-binding-queue.test.d.ts.map +0 -1
  285. package/dist/services/mcp-launch-binding-queue.test.js +0 -181
  286. package/dist/services/runtime-binding.test.d.ts +0 -2
  287. package/dist/services/runtime-binding.test.d.ts.map +0 -1
  288. package/dist/services/runtime-binding.test.js +0 -78
  289. package/dist/services/runtime-lifecycle-policy.test.d.ts +0 -2
  290. package/dist/services/runtime-lifecycle-policy.test.d.ts.map +0 -1
  291. package/dist/services/runtime-lifecycle-policy.test.js +0 -41
  292. package/dist/services/session-output.test.d.ts +0 -5
  293. package/dist/services/session-output.test.d.ts.map +0 -1
  294. package/dist/services/session-output.test.js +0 -177
  295. package/dist/services/startup-config-wizard.test.d.ts +0 -2
  296. package/dist/services/startup-config-wizard.test.d.ts.map +0 -1
  297. package/dist/services/startup-config-wizard.test.js +0 -184
  298. package/dist/services/terminal-persistence.test.d.ts +0 -5
  299. package/dist/services/terminal-persistence.test.d.ts.map +0 -1
  300. package/dist/services/terminal-persistence.test.js +0 -159
  301. package/dist/services/tool-installer.test.d.ts +0 -2
  302. package/dist/services/tool-installer.test.d.ts.map +0 -1
  303. package/dist/services/tool-installer.test.js +0 -225
  304. package/dist/services/workspace-files.test.d.ts +0 -2
  305. package/dist/services/workspace-files.test.d.ts.map +0 -1
  306. package/dist/services/workspace-files.test.js +0 -648
  307. package/dist/services/workspace-watch.test.d.ts +0 -2
  308. package/dist/services/workspace-watch.test.d.ts.map +0 -1
  309. package/dist/services/workspace-watch.test.js +0 -38
  310. package/dist/utils/file-utils.test.d.ts +0 -2
  311. package/dist/utils/file-utils.test.d.ts.map +0 -1
  312. package/dist/utils/file-utils.test.js +0 -244
  313. package/dist/utils/logger.test.d.ts +0 -2
  314. package/dist/utils/logger.test.d.ts.map +0 -1
  315. package/dist/utils/logger.test.js +0 -93
  316. package/dist/utils/sdk-package-loader.test.d.ts +0 -2
  317. package/dist/utils/sdk-package-loader.test.d.ts.map +0 -1
  318. package/dist/utils/sdk-package-loader.test.js +0 -84
  319. package/dist/utils/validation.test.d.ts +0 -2
  320. package/dist/utils/validation.test.d.ts.map +0 -1
  321. package/dist/utils/validation.test.js +0 -88
  322. package/dist/utils/yaml-utils.test.d.ts +0 -2
  323. package/dist/utils/yaml-utils.test.d.ts.map +0 -1
  324. package/dist/utils/yaml-utils.test.js +0 -363
@@ -1,225 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { SUPPORTED_INSTALLABLE_TOOLS, SUPPORTED_UNINSTALLABLE_TOOLS, buildSdkCliInstallStatus, detectToolInstallStatus, detectToolStatuses, getToolCommandSpecs, getToolUninstallCommands, isVoltaShimPath } from './tool-installer.js';
3
- describe('tool installer service', () => {
4
- it('returns structured status for supported tools', async () => {
5
- const statuses = await detectToolStatuses(['claude', 'opencode', 'codex']);
6
- expect(typeof statuses.claude.installed).toBe('boolean');
7
- expect(typeof statuses.opencode.installed).toBe('boolean');
8
- expect(typeof statuses.codex.installed).toBe('boolean');
9
- expect(statuses.claude.tool).toBe('claude');
10
- expect(statuses.opencode.tool).toBe('opencode');
11
- expect(statuses.codex.tool).toBe('codex');
12
- });
13
- it('deduplicates repeated tool names', async () => {
14
- const statuses = await detectToolStatuses(['claude', 'claude', 'opencode']);
15
- expect(Object.keys(statuses).sort()).toEqual(['claude', 'opencode']);
16
- });
17
- it('returns unsupported status for unknown tool', async () => {
18
- const status = await detectToolInstallStatus('unknown-tool');
19
- expect(status.installed).toBe(false);
20
- expect(status.error).toBe('unsupported tool');
21
- });
22
- it('uses a precise message when a tool command is missing', async () => {
23
- const status = await detectToolInstallStatus('claude');
24
- // error can be null (when installed) or string (when not installed)
25
- expect(status.error === null || typeof status.error === 'string').toBe(true);
26
- if (!status.installed && status.error) {
27
- expect(status.error).not.toBe('not installed or not executable');
28
- }
29
- });
30
- it('treats discovered command path as installed even when version is unavailable', async () => {
31
- const status = await detectToolInstallStatus('opencode');
32
- if (status.executable) {
33
- expect(status.installed).toBe(true);
34
- }
35
- });
36
- it('normalizes tool names to lowercase', async () => {
37
- const statuses = await detectToolStatuses(['CLAUDE', 'OpenCode']);
38
- expect(statuses.claude).toBeDefined();
39
- expect(statuses.opencode).toBeDefined();
40
- });
41
- it('handles empty tool array', async () => {
42
- const statuses = await detectToolStatuses([]);
43
- expect(statuses).toEqual({});
44
- });
45
- it('handles null input for detectToolStatuses', async () => {
46
- const statuses = await detectToolStatuses(null);
47
- expect(statuses).toEqual({});
48
- });
49
- it('handles undefined input for detectToolStatuses', async () => {
50
- const statuses = await detectToolStatuses(undefined);
51
- expect(statuses).toEqual({});
52
- });
53
- it('filters out empty and whitespace tool names', async () => {
54
- const statuses = await detectToolStatuses(['claude', '', ' ', 'opencode']);
55
- expect(Object.keys(statuses).sort()).toEqual(['claude', 'opencode']);
56
- });
57
- it('returns correct structure for tool status', async () => {
58
- const status = await detectToolInstallStatus('claude');
59
- expect(typeof status.tool).toBe('string');
60
- expect(typeof status.installed).toBe('boolean');
61
- expect(status.executable === null || typeof status.executable === 'string').toBe(true);
62
- expect(status.version === null || typeof status.version === 'string').toBe(true);
63
- expect(typeof status.installing).toBe('boolean');
64
- expect(status.error === null || typeof status.error === 'string').toBe(true);
65
- });
66
- it('supports claudecode as alias for claude', async () => {
67
- const status = await detectToolInstallStatus('claudecode');
68
- expect(status.tool).toBe('claudecode');
69
- // claudecode shares same detection as claude
70
- expect(typeof status.installed).toBe('boolean');
71
- });
72
- it('supports codex as an installable tool', async () => {
73
- expect(SUPPORTED_INSTALLABLE_TOOLS).toContain('codex');
74
- const status = await detectToolInstallStatus('codex');
75
- expect(status.tool).toBe('codex');
76
- expect(typeof status.installed).toBe('boolean');
77
- expect(status.error).not.toBe('unsupported tool');
78
- });
79
- it('detects OpenCode by SDK package instead of CLI availability', async () => {
80
- const status = await detectToolInstallStatus('opencode');
81
- expect(status.tool).toBe('opencode');
82
- expect(status.executable === null || status.executable === '@opencode-ai/sdk').toBe(true);
83
- if (!status.installed) {
84
- expect(status.error).toContain('@opencode-ai/sdk');
85
- }
86
- });
87
- it('detects Codex by SDK package instead of CLI availability', async () => {
88
- const status = await detectToolInstallStatus('codex');
89
- expect(status.tool).toBe('codex');
90
- expect(status.executable === null || status.executable === '@openai/codex-sdk').toBe(true);
91
- if (!status.installed) {
92
- expect(status.error).toContain('@openai/codex-sdk');
93
- }
94
- });
95
- it('supports all panel tools as uninstallable tools', () => {
96
- expect(SUPPORTED_UNINSTALLABLE_TOOLS).toEqual(expect.arrayContaining(['claude', 'opencode', 'codex']));
97
- });
98
- it('covers npm and native installer uninstall paths for OpenCode', () => {
99
- const commands = getToolUninstallCommands('opencode');
100
- expect(commands.some(command => command.includes('npm uninstall --prefix'))).toBe(true);
101
- expect(commands.some(command => command.includes('@opencode-ai/sdk'))).toBe(true);
102
- expect(commands.some(command => command.includes('opencode-ai'))).toBe(true);
103
- if (process.platform !== 'win32') {
104
- expect(commands).toContain('opencode uninstall --force');
105
- expect(commands).toContain('rm -f ~/.opencode/bin/opencode');
106
- }
107
- });
108
- it('covers bridge-local SDK uninstall path for Claude Code', () => {
109
- const commands = getToolUninstallCommands('claude');
110
- expect(commands.some(command => command.includes('npm uninstall --prefix'))).toBe(true);
111
- expect(commands.some(command => command.includes('@anthropic-ai/claude-agent-sdk'))).toBe(true);
112
- });
113
- it('installs Claude Code SDK and terminal CLI together', () => {
114
- const commands = getToolCommandSpecs('claude', 'install');
115
- expect(commands).toHaveLength(5);
116
- expect(commands[0].args).toEqual([
117
- 'uninstall',
118
- '--prefix',
119
- expect.any(String),
120
- '@anthropic-ai/claude-agent-sdk',
121
- '@anthropic-ai/sdk'
122
- ]);
123
- expect(commands[1].args).toEqual([
124
- 'install',
125
- '--prefix',
126
- expect.any(String),
127
- '@anthropic-ai/sdk@latest'
128
- ]);
129
- expect(commands[2].args).toEqual([
130
- 'install',
131
- '--prefix',
132
- expect.any(String),
133
- '@anthropic-ai/claude-agent-sdk@latest'
134
- ]);
135
- expect(commands[3].args).toEqual([
136
- 'install',
137
- '--prefix',
138
- expect.any(String),
139
- '@anthropic-ai/claude-agent-sdk@latest',
140
- '--legacy-peer-deps'
141
- ]);
142
- expect(commands[4].args).toEqual([
143
- 'install',
144
- '-g',
145
- '@anthropic-ai/claude-code@latest'
146
- ]);
147
- expect(commands[3].display).toContain('--legacy-peer-deps');
148
- expect(commands[4].display).toBe('npm install -g @anthropic-ai/claude-code@latest');
149
- });
150
- it('installs Claude Code CLI for the claudecode alias too', () => {
151
- const commands = getToolCommandSpecs('claudecode', 'install');
152
- expect(commands.some(command => command.args.includes('@anthropic-ai/claude-agent-sdk@latest'))).toBe(true);
153
- expect(commands.some(command => command.args.includes('@anthropic-ai/sdk@latest'))).toBe(true);
154
- expect(commands.some(command => command.args.includes('--legacy-peer-deps'))).toBe(true);
155
- expect(commands.some(command => command.args.includes('@anthropic-ai/claude-code@latest'))).toBe(true);
156
- });
157
- it('marks Claude unavailable when SDK exists but terminal CLI is missing', () => {
158
- const status = buildSdkCliInstallStatus('claude', {
159
- executable: '@anthropic-ai/claude-agent-sdk',
160
- version: '0.2.87',
161
- error: null
162
- }, {
163
- executable: null,
164
- error: 'CLI package @anthropic-ai/claude-code is not installed or command is unavailable: command not installed'
165
- }, true);
166
- expect(status.installed).toBe(false);
167
- expect(status.executable).toBe('@anthropic-ai/claude-agent-sdk');
168
- expect(status.error).toContain('@anthropic-ai/claude-code');
169
- });
170
- it('covers bridge-local SDK uninstall path for Codex', () => {
171
- const commands = getToolUninstallCommands('codex');
172
- expect(commands.some(command => command.includes('npm uninstall --prefix'))).toBe(true);
173
- expect(commands.some(command => command.includes('@openai/codex-sdk'))).toBe(true);
174
- });
175
- it('executes npm-backed install and uninstall commands with prefix as an unquoted argument', () => {
176
- const expectedPackagesByTool = {
177
- claude: '@anthropic-ai/claude-agent-sdk',
178
- claudecode: '@anthropic-ai/claude-agent-sdk',
179
- opencode: '@opencode-ai/sdk',
180
- codex: '@openai/codex-sdk'
181
- };
182
- for (const [tool, packageName] of Object.entries(expectedPackagesByTool)) {
183
- for (const phase of ['install', 'uninstall']) {
184
- const commands = getToolCommandSpecs(tool, phase);
185
- const command = commands.find(spec => spec.args.some(arg => arg.startsWith(packageName))) || commands[0];
186
- const expectedCommandAction = command.args[0];
187
- expect(command.kind).toBe('execFile');
188
- expect(command.command).toMatch(/^npm(?:\.cmd)?$/);
189
- expect(command.args.slice(0, 3)).toEqual([expectedCommandAction, '--prefix', expect.any(String)]);
190
- expect(command.args[2]).not.toMatch(/^"|"$/);
191
- expect(command.args.some(arg => arg.startsWith(packageName))).toBe(true);
192
- expect(command.display).toContain(`npm ${expectedCommandAction} --prefix`);
193
- }
194
- }
195
- });
196
- it('recognizes Volta shim paths for package-manager-aware detection', () => {
197
- expect(isVoltaShimPath('C:\\Users\\tester\\AppData\\Local\\Volta\\bin\\codex.cmd')).toBe(true);
198
- expect(isVoltaShimPath('/home/tester/.volta/bin/codex')).toBe(true);
199
- expect(isVoltaShimPath('/Users/tester/.volta/bin/claude')).toBe(true);
200
- expect(isVoltaShimPath('/usr/local/bin/codex')).toBe(false);
201
- });
202
- it('detectToolStatuses returns status for all requested tools', async () => {
203
- const tools = ['claude', 'opencode', 'unknown-tool'];
204
- const statuses = await detectToolStatuses(tools);
205
- expect(statuses.claude).toBeDefined();
206
- expect(statuses.opencode).toBeDefined();
207
- // unknown-tool should also be in results with unsupported status
208
- expect(statuses['unknown-tool']).toBeDefined();
209
- expect(statuses['unknown-tool'].error).toBe('unsupported tool');
210
- });
211
- it('handles mixed case tool names', async () => {
212
- const statuses = await detectToolStatuses(['Claude', 'OPENCODE', 'ClaudeCode']);
213
- expect(statuses.claude).toBeDefined();
214
- expect(statuses.opencode).toBeDefined();
215
- expect(statuses.claudecode).toBeDefined();
216
- });
217
- it('sets installing flag to false by default', async () => {
218
- const status = await detectToolInstallStatus('claude');
219
- expect(status.installing).toBe(false);
220
- });
221
- it('returns consistent tool name in lowercase', async () => {
222
- const status = await detectToolInstallStatus('CLAUDE');
223
- expect(status.tool).toBe('claude');
224
- });
225
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=workspace-files.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-files.test.d.ts","sourceRoot":"","sources":["../../src/services/workspace-files.test.ts"],"names":[],"mappings":""}