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,107 +0,0 @@
1
- import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
2
- import os from "node:os";
3
- import path from "node:path";
4
- import { afterEach, describe, expect, it, vi } from "vitest";
5
- vi.mock("node:os", async () => {
6
- const actual = await vi.importActual("node:os");
7
- const mocked = {
8
- ...actual,
9
- homedir: () => process.env.AWS_TEST_HOME || actual.homedir(),
10
- };
11
- return {
12
- ...mocked,
13
- default: mocked,
14
- };
15
- });
16
- const originalEnv = { ...process.env };
17
- const tempRoots = [];
18
- function createRuntimeHome() {
19
- const root = mkdtempSync(path.join(os.tmpdir(), "aws-config-"));
20
- tempRoots.push(root);
21
- return root;
22
- }
23
- function useRuntimeHome(runtimeHome) {
24
- process.env.AWS_TEST_HOME = runtimeHome;
25
- process.env.HOME = runtimeHome;
26
- process.env.USERPROFILE = runtimeHome;
27
- process.env.AWS_RUNTIME_HOME_DIR = runtimeHome;
28
- delete process.env.AWS_RUNTIME_SCHEDULER_BASE_URL;
29
- }
30
- function writeBridgeConfig(runtimeHome, autoRegisterTargets) {
31
- const configPath = path.join(runtimeHome, ".aws-bridge", "config.json");
32
- mkdirSync(path.dirname(configPath), { recursive: true });
33
- writeFileSync(configPath, `${JSON.stringify({ connectionKey: "bridge-key", autoRegisterTargets }, null, 2)}\n`, "utf-8");
34
- }
35
- afterEach(() => {
36
- process.env = { ...originalEnv };
37
- vi.resetModules();
38
- vi.clearAllMocks();
39
- vi.restoreAllMocks();
40
- for (const root of tempRoots.splice(0)) {
41
- rmSync(root, { recursive: true, force: true });
42
- }
43
- });
44
- describe("scheduler base URL resolution", () => {
45
- it("keeps scheduler URL supplied by the server request as the highest priority", async () => {
46
- const runtimeHome = createRuntimeHome();
47
- useRuntimeHome(runtimeHome);
48
- process.env.AWS_RUNTIME_SCHEDULER_BASE_URL = "http://env.local:7380";
49
- writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380" }]);
50
- const { resolveSchedulerBaseUrlFrom } = await import("./config.js");
51
- expect(resolveSchedulerBaseUrlFrom("http://server.local:7380/api")).toEqual({
52
- url: "http://server.local:7380",
53
- source: "request",
54
- ambiguousTargetUrls: [],
55
- });
56
- });
57
- it("keeps explicit AWS_RUNTIME_SCHEDULER_BASE_URL as the highest priority", async () => {
58
- const runtimeHome = createRuntimeHome();
59
- useRuntimeHome(runtimeHome);
60
- process.env.AWS_RUNTIME_SCHEDULER_BASE_URL = "http://explicit.local:7380/path";
61
- writeBridgeConfig(runtimeHome, [{ serverUrl: "http://target.local:7380" }]);
62
- const { resolveSchedulerBaseUrl } = await import("./config.js");
63
- expect(resolveSchedulerBaseUrl()).toEqual({
64
- url: "http://explicit.local:7380",
65
- source: "env",
66
- ambiguousTargetUrls: [],
67
- });
68
- });
69
- it("uses a single auto-register target serverUrl when scheduler env is absent", async () => {
70
- const runtimeHome = createRuntimeHome();
71
- useRuntimeHome(runtimeHome);
72
- writeBridgeConfig(runtimeHome, [{ serverUrl: "http://127.0.0.1:7380" }]);
73
- const { resolveSchedulerBaseUrl } = await import("./config.js");
74
- expect(resolveSchedulerBaseUrl()).toEqual({
75
- url: "http://127.0.0.1:7380",
76
- source: "single-auto-register-target",
77
- ambiguousTargetUrls: [],
78
- });
79
- });
80
- it("does not silently select the first auto-register target when multiple URLs exist", async () => {
81
- const runtimeHome = createRuntimeHome();
82
- useRuntimeHome(runtimeHome);
83
- writeBridgeConfig(runtimeHome, [
84
- { serverUrl: "http://scheduler-a.local:7380" },
85
- { serverUrl: "http://scheduler-b.local:7380" },
86
- ]);
87
- const { DEFAULT_SCHEDULER_BASE_URL, resolveSchedulerBaseUrl } = await import("./config.js");
88
- expect(resolveSchedulerBaseUrl()).toEqual({
89
- url: DEFAULT_SCHEDULER_BASE_URL,
90
- source: "ambiguous-auto-register-targets",
91
- ambiguousTargetUrls: [
92
- "http://scheduler-a.local:7380",
93
- "http://scheduler-b.local:7380",
94
- ],
95
- });
96
- });
97
- it("falls back to the legacy localhost default when no scheduler source exists", async () => {
98
- const runtimeHome = createRuntimeHome();
99
- useRuntimeHome(runtimeHome);
100
- const { DEFAULT_SCHEDULER_BASE_URL, resolveSchedulerBaseUrl } = await import("./config.js");
101
- expect(resolveSchedulerBaseUrl()).toEqual({
102
- url: DEFAULT_SCHEDULER_BASE_URL,
103
- source: "default",
104
- ambiguousTargetUrls: [],
105
- });
106
- });
107
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ai-sources.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-sources.test.d.ts","sourceRoot":"","sources":["../../src/routes/ai-sources.test.ts"],"names":[],"mappings":""}
@@ -1,169 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import assert from 'node:assert/strict';
3
- function buildUnifiedToolConfig(template) {
4
- const normalizedBaseUrl = String(template.baseUrl || '').trim();
5
- const normalizedApiKey = String(template.apiKey || '').trim();
6
- const normalizedModels = [
7
- ...(Array.isArray(template.models) ? template.models : []),
8
- template.model,
9
- ]
10
- .map((item) => String(item || '').trim())
11
- .filter((item, index, list) => item && list.indexOf(item) === index);
12
- const normalizedModel = normalizedModels[0] || String(template.model || '').trim();
13
- const normalizedOpenCodeBaseUrl = normalizedBaseUrl.endsWith('/v1')
14
- ? normalizedBaseUrl
15
- : `${normalizedBaseUrl.replace(/\/+$/, '')}/v1`;
16
- const opencodeModels = Object.fromEntries(normalizedModels.map((model) => [model, {
17
- name: model,
18
- modalities: {
19
- input: ['text', 'image'],
20
- output: ['text'],
21
- },
22
- }]));
23
- return {
24
- claudecode: {
25
- env: {
26
- ANTHROPIC_BASE_URL: normalizedBaseUrl,
27
- ANTHROPIC_AUTH_TOKEN: normalizedApiKey,
28
- ANTHROPIC_MODEL: normalizedModel,
29
- },
30
- },
31
- opencode: {
32
- provider: {
33
- default: {
34
- npm: '@ai-sdk/openai-compatible',
35
- options: {
36
- baseURL: normalizedOpenCodeBaseUrl,
37
- apiKey: normalizedApiKey,
38
- },
39
- models: opencodeModels,
40
- },
41
- },
42
- },
43
- };
44
- }
45
- function normalizeListedModels(payload) {
46
- if (!payload || typeof payload !== 'object' || Array.isArray(payload)) {
47
- return [];
48
- }
49
- const records = Array.isArray(payload.data)
50
- ? payload.data
51
- : [];
52
- const ids = new Set();
53
- for (const item of records) {
54
- if (!item || typeof item !== 'object' || Array.isArray(item)) {
55
- continue;
56
- }
57
- const id = String(item.id || '').trim();
58
- if (id) {
59
- ids.add(id);
60
- }
61
- }
62
- return [...ids];
63
- }
64
- function buildModelListCandidates(baseUrl, protocol) {
65
- const normalizedBaseUrl = baseUrl.replace(/\/+$/, '');
66
- if (protocol === 'anthropic') {
67
- return [`${normalizedBaseUrl}/v1/models`];
68
- }
69
- if (protocol === 'openai') {
70
- return normalizedBaseUrl.endsWith('/v1')
71
- ? [`${normalizedBaseUrl}/models`]
72
- : [`${normalizedBaseUrl}/models`, `${normalizedBaseUrl}/v1/models`];
73
- }
74
- const openAiCandidates = normalizedBaseUrl.endsWith('/v1')
75
- ? [`${normalizedBaseUrl}/models`]
76
- : [`${normalizedBaseUrl}/models`, `${normalizedBaseUrl}/v1/models`];
77
- return [...openAiCandidates, `${normalizedBaseUrl}/v1/models`];
78
- }
79
- function buildApplyAiSourcesResponse(body) {
80
- return {
81
- acodeModelEffort: String(body.acodeModelEffort || ''),
82
- claudecodeModelEffort: String(body.claudecodeModelEffort || ''),
83
- codexModelEffort: String(body.codexModelEffort || ''),
84
- opencodeModelEffort: String(body.opencodeModelEffort || ''),
85
- };
86
- }
87
- describe('ai source unified config generation', () => {
88
- it('builds tool-specific configs from unified template fields', () => {
89
- assert.deepEqual(buildUnifiedToolConfig({
90
- baseUrl: 'https://example.com',
91
- apiKey: 'sk-demo',
92
- model: 'claude-sonnet-4-5',
93
- models: ['claude-sonnet-4-5', 'claude-haiku-4-5'],
94
- }), {
95
- claudecode: {
96
- env: {
97
- ANTHROPIC_BASE_URL: 'https://example.com',
98
- ANTHROPIC_AUTH_TOKEN: 'sk-demo',
99
- ANTHROPIC_MODEL: 'claude-sonnet-4-5',
100
- },
101
- },
102
- opencode: {
103
- provider: {
104
- default: {
105
- npm: '@ai-sdk/openai-compatible',
106
- options: {
107
- baseURL: 'https://example.com/v1',
108
- apiKey: 'sk-demo',
109
- },
110
- models: {
111
- 'claude-sonnet-4-5': {
112
- name: 'claude-sonnet-4-5',
113
- modalities: {
114
- input: ['text', 'image'],
115
- output: ['text'],
116
- },
117
- },
118
- 'claude-haiku-4-5': {
119
- name: 'claude-haiku-4-5',
120
- modalities: {
121
- input: ['text', 'image'],
122
- output: ['text'],
123
- },
124
- },
125
- },
126
- },
127
- },
128
- },
129
- });
130
- });
131
- it('extracts model ids from an OpenAI-compatible models payload', () => {
132
- expect(normalizeListedModels({
133
- data: [
134
- { id: 'claude-sonnet-4-5' },
135
- { id: 'claude-haiku-4-5' },
136
- { id: 'claude-sonnet-4-5' },
137
- ],
138
- })).toEqual(['claude-sonnet-4-5', 'claude-haiku-4-5']);
139
- });
140
- it('builds fallback candidates for openai-compatible and anthropic model listing', () => {
141
- expect(buildModelListCandidates('https://octopus.721579.xyz', 'openai')).toEqual([
142
- 'https://octopus.721579.xyz/models',
143
- 'https://octopus.721579.xyz/v1/models',
144
- ]);
145
- expect(buildModelListCandidates('https://api.anthropic.com', 'anthropic')).toEqual([
146
- 'https://api.anthropic.com/v1/models',
147
- ]);
148
- });
149
- it('keeps openai-compatible baseURL unchanged when template already includes /v1', () => {
150
- expect(buildUnifiedToolConfig({
151
- baseUrl: 'https://octopus.721579.xyz/v1',
152
- apiKey: 'sk-demo',
153
- model: 'gpt-test',
154
- }).opencode.provider.default.options.baseURL).toBe('https://octopus.721579.xyz/v1');
155
- });
156
- it('echoes selected model effort metadata in apply-ai-sources responses', () => {
157
- expect(buildApplyAiSourcesResponse({
158
- acodeModelEffort: 'xhigh',
159
- claudecodeModelEffort: 'high',
160
- codexModelEffort: 'max',
161
- opencodeModelEffort: 'high',
162
- })).toEqual({
163
- acodeModelEffort: 'xhigh',
164
- claudecodeModelEffort: 'high',
165
- codexModelEffort: 'max',
166
- opencodeModelEffort: 'high',
167
- });
168
- });
169
- });
@@ -1,5 +0,0 @@
1
- /**
2
- * File Browser 路由单元测试
3
- */
4
- export {};
5
- //# sourceMappingURL=file-browser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-browser.test.d.ts","sourceRoot":"","sources":["../../src/routes/file-browser.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,155 +0,0 @@
1
- /**
2
- * File Browser 路由单元测试
3
- */
4
- import { describe, it, expect } from 'vitest';
5
- import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises';
6
- import { tmpdir } from 'node:os';
7
- import path from 'node:path';
8
- import multer from 'multer';
9
- import { createWorkspaceUploadLimitResponse, isIgnoredByGitIgnore, listHostDirectoryTree, parseGitIgnoreRules, parseWorkspaceUploadRelativePaths, WORKSPACE_UPLOAD_FILE_LIMIT } from './file-browser.js';
10
- describe('file-browser route validation', () => {
11
- it('returns root drives on Windows when path is empty', () => {
12
- const getRootForWindows = () => {
13
- const drives = [];
14
- for (let i = 67; i <= 90; i++)
15
- drives.push(String.fromCharCode(i) + ':\\');
16
- return drives;
17
- };
18
- const drives = getRootForWindows();
19
- expect(drives.length).toBe(24);
20
- expect(drives.includes('C:\\')).toBe(true);
21
- });
22
- it('validates workspacePath for workspace/list', () => {
23
- const validateWorkspaceListRequest = (body) => {
24
- if (!body.workspacePath)
25
- return { valid: false, error: 'workspacePath is required' };
26
- return { valid: true };
27
- };
28
- expect(validateWorkspaceListRequest({}).valid).toBe(false);
29
- expect(validateWorkspaceListRequest({ workspacePath: '/project' }).valid).toBe(true);
30
- });
31
- it('validates filePath for workspace/read', () => {
32
- const validateReadRequest = (body) => {
33
- if (!body.workspacePath || !body.filePath)
34
- return { valid: false, error: 'workspacePath and filePath are required' };
35
- return { valid: true };
36
- };
37
- expect(validateReadRequest({}).valid).toBe(false);
38
- expect(validateReadRequest({ workspacePath: '/project', filePath: 'file.txt' }).valid).toBe(true);
39
- });
40
- it('validates create request', () => {
41
- const validateCreateRequest = (body) => {
42
- if (!body.workspacePath)
43
- return { valid: false, error: 'workspacePath is required' };
44
- if (!body.entryName)
45
- return { valid: false, error: 'entryName is required' };
46
- return { valid: true };
47
- };
48
- expect(validateCreateRequest({}).valid).toBe(false);
49
- expect(validateCreateRequest({ workspacePath: '/p', entryName: 'new-file' }).valid).toBe(true);
50
- });
51
- it('validates rename request', () => {
52
- const validateRenameRequest = (body) => {
53
- if (!body.workspacePath || !body.targetPath || !body.newName)
54
- return { valid: false, error: 'workspacePath, targetPath, and newName are required' };
55
- return { valid: true };
56
- };
57
- expect(validateRenameRequest({}).valid).toBe(false);
58
- expect(validateRenameRequest({ workspacePath: '/p', targetPath: '/p/old', newName: 'new' }).valid).toBe(true);
59
- });
60
- it('validates delete request', () => {
61
- const validateDeleteRequest = (body) => {
62
- if (!body.workspacePath || !body.targetPath)
63
- return { valid: false, error: 'workspacePath and targetPath are required' };
64
- return { valid: true };
65
- };
66
- expect(validateDeleteRequest({}).valid).toBe(false);
67
- expect(validateDeleteRequest({ workspacePath: '/p', targetPath: '/p/file' }).valid).toBe(true);
68
- });
69
- it('validates move request', () => {
70
- const validateMoveRequest = (body) => {
71
- if (!body.workspacePath || !body.targetPath || !body.destinationPath)
72
- return { valid: false, error: 'workspacePath, targetPath, and destinationPath are required' };
73
- return { valid: true };
74
- };
75
- expect(validateMoveRequest({}).valid).toBe(false);
76
- expect(validateMoveRequest({ workspacePath: '/p', targetPath: '/p/file', destinationPath: '/p/dest' }).valid).toBe(true);
77
- });
78
- });
79
- describe('file-browser response building', () => {
80
- it('builds correct list response', () => {
81
- const response = {
82
- isWindows: true,
83
- currentPath: 'C:\\Users',
84
- items: [
85
- { name: 'Documents', path: 'C:\\Users\\Documents', isDirectory: true },
86
- { name: 'Downloads', path: 'C:\\Users\\Downloads', isDirectory: true },
87
- ],
88
- };
89
- expect(response.isWindows).toBe(true);
90
- expect(response.items.length).toBe(2);
91
- });
92
- it('categorizes entries by type', () => {
93
- const entries = [
94
- { name: 'src', isDir: true },
95
- { name: 'package.json', isDir: false },
96
- ];
97
- const directories = entries.filter(e => e.isDir).map(e => e.name);
98
- const files = entries.filter(e => !e.isDir).map(e => e.name);
99
- expect(directories).toEqual(['src']);
100
- expect(files).toEqual(['package.json']);
101
- });
102
- it('returns JSON guidance when folder upload exceeds file count limit', () => {
103
- const response = createWorkspaceUploadLimitResponse(new multer.MulterError('LIMIT_FILE_COUNT'));
104
- expect(response.status).toBe(400);
105
- expect(response.body).toEqual({
106
- error: `一次最多上传 ${WORKSPACE_UPLOAD_FILE_LIMIT} 个文件,请拆分文件夹后重试。`,
107
- code: 'LIMIT_FILE_COUNT'
108
- });
109
- });
110
- it('parses relative paths from a JSON manifest to preserve folder hierarchy', () => {
111
- const relativePaths = parseWorkspaceUploadRelativePaths({
112
- relativePathsJson: JSON.stringify(['a/b/c.txt', 'a/d/e.txt'])
113
- });
114
- expect(relativePaths).toEqual(['a/b/c.txt', 'a/d/e.txt']);
115
- });
116
- it('keeps backward compatibility with repeated relativePaths fields', () => {
117
- const relativePaths = parseWorkspaceUploadRelativePaths({
118
- relativePaths: ['a/b/c.txt', 'a/d/e.txt']
119
- });
120
- expect(relativePaths).toEqual(['a/b/c.txt', 'a/d/e.txt']);
121
- });
122
- });
123
- describe('directory tree gitignore filtering', () => {
124
- it('matches ignored directories from .gitignore rules', () => {
125
- const rules = parseGitIgnoreRules(`
126
- node_modules/
127
- /dist/
128
- logs*
129
- !logs-keep/
130
- `);
131
- expect(isIgnoredByGitIgnore('node_modules', true, rules)).toBe(true);
132
- expect(isIgnoredByGitIgnore('packages/app/node_modules', true, rules)).toBe(true);
133
- expect(isIgnoredByGitIgnore('dist', true, rules)).toBe(true);
134
- expect(isIgnoredByGitIgnore('packages/app/dist', true, rules)).toBe(false);
135
- expect(isIgnoredByGitIgnore('logs-temp', true, rules)).toBe(true);
136
- expect(isIgnoredByGitIgnore('logs-keep', true, rules)).toBe(false);
137
- });
138
- it('filters actual directory tree entries using root .gitignore', async () => {
139
- const root = await mkdtemp(path.join(tmpdir(), 'aws-tree-ignore-'));
140
- try {
141
- await mkdir(path.join(root, 'src'));
142
- await mkdir(path.join(root, 'node_modules'));
143
- await mkdir(path.join(root, 'dist'));
144
- await writeFile(path.join(root, '.gitignore'), 'node_modules/\n/dist/\n');
145
- const result = await listHostDirectoryTree(root);
146
- const names = result.tree.map((item) => item.name);
147
- expect(names).toContain('src');
148
- expect(names).not.toContain('node_modules');
149
- expect(names).not.toContain('dist');
150
- }
151
- finally {
152
- await rm(root, { recursive: true, force: true });
153
- }
154
- });
155
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=git.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.test.d.ts","sourceRoot":"","sources":["../../src/routes/git.test.ts"],"names":[],"mappings":""}