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,5 +0,0 @@
1
- /**
2
- * AdapterRegistry 测试
3
- */
4
- export {};
5
- //# sourceMappingURL=AdapterRegistry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AdapterRegistry.test.d.ts","sourceRoot":"","sources":["../../src/adapter/AdapterRegistry.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,118 +0,0 @@
1
- /**
2
- * AdapterRegistry 测试
3
- */
4
- import { EventEmitter } from 'node:events';
5
- import { beforeEach, describe, expect, it } from 'vitest';
6
- import { AdapterRegistry } from '../adapter/AdapterRegistry.js';
7
- import { toAcodeEsmImportSpecifier } from '../adapter/AcodeSdkAdapter.js';
8
- import { registerSdkProviders } from '../adapter/SdkProviderSpi.js';
9
- import { CodexSdkAdapter } from './CodexSdkAdapter.js';
10
- // 创建测试用的 Mock Adapter
11
- class MockAdapter extends EventEmitter {
12
- constructor() {
13
- super(...arguments);
14
- this.providerId = 'mock-provider';
15
- this.displayName = 'Mock Provider';
16
- }
17
- async startSession(sessionId, _config) {
18
- this.emit('status-change', sessionId, 'running');
19
- }
20
- async sendMessage(_sessionId, _message) { }
21
- async sendConfirmation(_sessionId, _accept) { }
22
- async abortCurrentTurn(_sessionId) { }
23
- async terminateSession(_sessionId) { }
24
- async resumeSession(_sessionId, _providerSessionId, _config) { }
25
- getConversation(_sessionId) {
26
- return [];
27
- }
28
- hasSession(_sessionId) {
29
- return false;
30
- }
31
- getProviderSessionId(_sessionId) {
32
- return undefined;
33
- }
34
- getSessionStatus(_sessionId) {
35
- return undefined;
36
- }
37
- cleanup() { }
38
- }
39
- describe('AdapterRegistry', () => {
40
- let registry;
41
- beforeEach(() => {
42
- registry = new AdapterRegistry();
43
- });
44
- describe('register', () => {
45
- it('should register an adapter', () => {
46
- const adapter = new MockAdapter();
47
- registry.register(adapter);
48
- expect(registry.has('mock-provider')).toBe(true);
49
- });
50
- it('should throw error when registering duplicate providerId', () => {
51
- const adapter1 = new MockAdapter();
52
- const adapter2 = new MockAdapter();
53
- registry.register(adapter1);
54
- expect(() => registry.register(adapter2)).toThrow('Adapter already registered');
55
- });
56
- });
57
- describe('get', () => {
58
- it('should return registered adapter', () => {
59
- const adapter = new MockAdapter();
60
- registry.register(adapter);
61
- const result = registry.get('mock-provider');
62
- expect(result).toBe(adapter);
63
- });
64
- it('should throw error when adapter not found', () => {
65
- expect(() => registry.get('non-existent')).toThrow('No adapter registered');
66
- });
67
- it('should return registered codex adapter', () => {
68
- const adapter = new CodexSdkAdapter();
69
- registry.register(adapter);
70
- const result = registry.get('codex');
71
- expect(result).toBe(adapter);
72
- expect(registry.has('codex')).toBe(true);
73
- });
74
- });
75
- describe('has', () => {
76
- it('should return true for registered adapter', () => {
77
- const adapter = new MockAdapter();
78
- registry.register(adapter);
79
- expect(registry.has('mock-provider')).toBe(true);
80
- });
81
- it('should return false for non-existent adapter', () => {
82
- expect(registry.has('non-existent')).toBe(false);
83
- });
84
- });
85
- describe('getRegisteredIds', () => {
86
- it('should return all registered provider IDs', () => {
87
- const adapter = new MockAdapter();
88
- registry.register(adapter);
89
- expect(registry.getRegisteredIds()).toContain('mock-provider');
90
- });
91
- it('should return empty array when no adapters registered', () => {
92
- expect(registry.getRegisteredIds()).toEqual([]);
93
- });
94
- });
95
- describe('SDK provider SPI', () => {
96
- it('registers built-in SDK providers through one extension point', () => {
97
- registerSdkProviders(registry, () => { });
98
- expect(registry.getRegisteredIds().sort()).toEqual(['acode', 'claude-code', 'codex', 'opencode']);
99
- expect(registry.get('codex').providerId).toBe('codex');
100
- });
101
- });
102
- describe('ACode ESM import specifier', () => {
103
- it('converts Windows absolute paths to file URLs for dynamic import', () => {
104
- const specifier = toAcodeEsmImportSpecifier('C:\\runtime-home\\.agentswork\\runtime-bridge\\packages\\acode\\dist\\index.js');
105
- expect(specifier).toMatch(/^file:\/\//);
106
- expect(specifier).not.toMatch(/^c:/i);
107
- expect(specifier).toContain('acode');
108
- });
109
- });
110
- describe('cleanup', () => {
111
- it('should clear all adapters', () => {
112
- const adapter = new MockAdapter();
113
- registry.register(adapter);
114
- registry.cleanup();
115
- expect(registry.getRegisteredIds()).toEqual([]);
116
- });
117
- });
118
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ClaudeSdkAdapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ClaudeSdkAdapter.test.d.ts","sourceRoot":"","sources":["../../src/adapter/ClaudeSdkAdapter.test.ts"],"names":[],"mappings":""}
@@ -1,311 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as os from 'os';
3
- import * as path from 'path';
4
- import { afterEach, describe, expect, it, vi } from 'vitest';
5
- import { ClaudeSdkAdapter } from './ClaudeSdkAdapter.js';
6
- const POLL_PROMPT = '系统提醒:当前工作已完成或运行时已进入空闲状态。请立即调用 poll_message 工具阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理;完成任务后调用 submit_task_result 提交结果,然后继续 poll_message。';
7
- describe('ClaudeSdkAdapter', () => {
8
- afterEach(() => {
9
- vi.useRealTimers();
10
- vi.restoreAllMocks();
11
- });
12
- it('resolves claude from PATH without shelling out to which or where', () => {
13
- const adapter = new ClaudeSdkAdapter();
14
- const originalPath = process.env.PATH;
15
- const originalPathExt = process.env.PATHEXT;
16
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-path-'));
17
- const commandPath = path.join(commandDirectory, process.platform === 'win32' ? 'claude.EXE' : 'claude');
18
- fs.writeFileSync(commandPath, '#!/usr/bin/env node\n');
19
- if (process.platform !== 'win32') {
20
- fs.chmodSync(commandPath, 0o755);
21
- }
22
- process.env.PATH = commandDirectory;
23
- process.env.PATHEXT = '.EXE;.CMD';
24
- try {
25
- const result = adapter.findClaudeExecutable('claude');
26
- expect(result).toBe(commandPath);
27
- }
28
- finally {
29
- process.env.PATH = originalPath;
30
- process.env.PATHEXT = originalPathExt;
31
- fs.rmSync(commandDirectory, { recursive: true, force: true });
32
- }
33
- });
34
- it('extracts the executable before resolving commands that include flags', () => {
35
- const adapter = new ClaudeSdkAdapter();
36
- const originalPath = process.env.PATH;
37
- const originalPathExt = process.env.PATHEXT;
38
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-flags-'));
39
- const commandPath = path.join(commandDirectory, process.platform === 'win32' ? 'claude.EXE' : 'claude');
40
- const unexpectedCommandWithFlags = path.join(commandDirectory, process.platform === 'win32' ? 'claude --model sonnet.EXE' : 'claude --model sonnet');
41
- fs.writeFileSync(commandPath, '#!/usr/bin/env node\n');
42
- if (process.platform !== 'win32') {
43
- fs.chmodSync(commandPath, 0o755);
44
- }
45
- process.env.PATH = commandDirectory;
46
- process.env.PATHEXT = '.EXE;.CMD';
47
- try {
48
- const result = adapter.findClaudeExecutable('claude --model sonnet');
49
- expect(result).toBe(commandPath);
50
- expect(fs.existsSync(unexpectedCommandWithFlags)).toBe(false);
51
- }
52
- finally {
53
- process.env.PATH = originalPath;
54
- process.env.PATHEXT = originalPathExt;
55
- fs.rmSync(commandDirectory, { recursive: true, force: true });
56
- }
57
- });
58
- it.skipIf(process.platform !== 'win32')('resolves uppercase Windows wrapper extensions before returning PATH candidate', () => {
59
- const adapter = new ClaudeSdkAdapter();
60
- const originalPath = process.env.PATH;
61
- const originalPathExt = process.env.PATHEXT;
62
- const originalLocalAppData = process.env.LOCALAPPDATA;
63
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-wrapper-'));
64
- const localAppDataDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-localappdata-'));
65
- const wrapperPath = path.join(commandDirectory, 'claude.CMD');
66
- const cliPath = path.join(localAppDataDirectory, 'Volta', 'tools', 'shared', '@anthropic-ai', 'claude-code', 'cli.js');
67
- fs.mkdirSync(path.dirname(cliPath), { recursive: true });
68
- fs.writeFileSync(wrapperPath, 'volta run %~n0 %*\n');
69
- fs.writeFileSync(cliPath, '#!/usr/bin/env node\n');
70
- process.env.PATH = commandDirectory;
71
- process.env.PATHEXT = '.EXE;.CMD;.PS1';
72
- process.env.LOCALAPPDATA = localAppDataDirectory;
73
- try {
74
- const result = adapter.findClaudeExecutable('claude');
75
- expect(result).toBe(cliPath);
76
- }
77
- finally {
78
- process.env.PATH = originalPath;
79
- process.env.PATHEXT = originalPathExt;
80
- process.env.LOCALAPPDATA = originalLocalAppData;
81
- fs.rmSync(commandDirectory, { recursive: true, force: true });
82
- fs.rmSync(localAppDataDirectory, { recursive: true, force: true });
83
- }
84
- });
85
- it.skipIf(process.platform !== 'win32')('resolves npm command wrappers to the Claude Code cli.js file', () => {
86
- const adapter = new ClaudeSdkAdapter();
87
- const originalPath = process.env.PATH;
88
- const originalPathExt = process.env.PATHEXT;
89
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-npm-wrapper-'));
90
- const wrapperPath = path.join(commandDirectory, process.platform === 'win32' ? 'claude.CMD' : 'claude.ps1');
91
- const cliPath = path.join(commandDirectory, 'node_modules', '@anthropic-ai', 'claude-code', 'cli.js');
92
- fs.mkdirSync(path.dirname(cliPath), { recursive: true });
93
- fs.writeFileSync(wrapperPath, '@ECHO off\nnode "%~dp0\\node_modules\\@anthropic-ai\\claude-code\\cli.js" %*\n');
94
- fs.writeFileSync(cliPath, '#!/usr/bin/env node\n');
95
- process.env.PATH = commandDirectory;
96
- process.env.PATHEXT = '.EXE;.CMD;.PS1';
97
- try {
98
- const result = adapter.findClaudeExecutable('claude');
99
- expect(result).toBe(cliPath);
100
- }
101
- finally {
102
- process.env.PATH = originalPath;
103
- process.env.PATHEXT = originalPathExt;
104
- fs.rmSync(commandDirectory, { recursive: true, force: true });
105
- }
106
- });
107
- it('skips unresolved command wrappers instead of returning them to the SDK', () => {
108
- const adapter = new ClaudeSdkAdapter();
109
- const originalPath = process.env.PATH;
110
- const originalPathExt = process.env.PATHEXT;
111
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-unresolved-wrapper-'));
112
- const wrapperPath = path.join(commandDirectory, 'claude.CMD');
113
- fs.writeFileSync(wrapperPath, '@ECHO off\nnode missing-cli.js %*\n');
114
- process.env.PATH = commandDirectory;
115
- process.env.PATHEXT = '.EXE;.CMD;.PS1';
116
- try {
117
- const result = adapter.findClaudeExecutable('claude');
118
- expect(result).not.toBe(wrapperPath);
119
- }
120
- finally {
121
- process.env.PATH = originalPath;
122
- process.env.PATHEXT = originalPathExt;
123
- fs.rmSync(commandDirectory, { recursive: true, force: true });
124
- }
125
- });
126
- it('resolves absolute npm command wrappers before passing them to the SDK', () => {
127
- const adapter = new ClaudeSdkAdapter();
128
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-absolute-wrapper-'));
129
- const wrapperPath = path.join(commandDirectory, 'claude.cmd');
130
- const cliPath = path.join(commandDirectory, 'node_modules', '@anthropic-ai', 'claude-code', 'cli.js');
131
- fs.mkdirSync(path.dirname(cliPath), { recursive: true });
132
- fs.writeFileSync(wrapperPath, '@ECHO off\nnode "%~dp0\\node_modules\\@anthropic-ai\\claude-code\\cli.js" %*\n');
133
- fs.writeFileSync(cliPath, '#!/usr/bin/env node\n');
134
- try {
135
- const result = adapter.findClaudeExecutable(wrapperPath);
136
- expect(result).toBe(cliPath);
137
- }
138
- finally {
139
- fs.rmSync(commandDirectory, { recursive: true, force: true });
140
- }
141
- });
142
- it('does not pass unresolved absolute wrapper scripts to the SDK', () => {
143
- const adapter = new ClaudeSdkAdapter();
144
- const commandDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'claude-absolute-unresolved-wrapper-'));
145
- const wrapperPath = path.join(commandDirectory, 'claude.bat');
146
- fs.writeFileSync(wrapperPath, '@ECHO off\nnode missing-cli.js %*\n');
147
- try {
148
- const result = adapter.findClaudeExecutable(wrapperPath);
149
- expect(result).toBeUndefined();
150
- }
151
- finally {
152
- fs.rmSync(commandDirectory, { recursive: true, force: true });
153
- }
154
- });
155
- it('auto-wakes Claude immediately when workflow idle commands include poll_message and my_task guidance', async () => {
156
- const adapter = new ClaudeSdkAdapter();
157
- const sentPrompts = [];
158
- Reflect.set(adapter, 'sessions', new Map([
159
- [
160
- 'session-1',
161
- {
162
- sessionId: 'session-1',
163
- status: 'waiting_input',
164
- messages: [],
165
- createdAt: new Date().toISOString(),
166
- totalUsage: { inputTokens: 0, outputTokens: 0 },
167
- },
168
- ],
169
- ]));
170
- const sendIdlePrompt = vi
171
- .spyOn(adapter, 'sendIdlePrompt')
172
- .mockImplementation((_sessionId, prompt) => {
173
- sentPrompts.push(prompt);
174
- });
175
- adapter.setIdleCommands('session-1', {
176
- idleInputCommand: 'system: 请保持工作循环:持续调用 poll_message 阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理,完成后调用 submit_task_result 提交结果,然后继续 poll_message。',
177
- nonInputCommand: '',
178
- });
179
- expect(sendIdlePrompt).toHaveBeenCalledTimes(1);
180
- expect(sentPrompts).toEqual([POLL_PROMPT]);
181
- expect(adapter.getSessionStatus('session-1')).toBe('waiting_input');
182
- });
183
- it('starts a blocking poll turn for poll_message-style idle commands', async () => {
184
- const adapter = new ClaudeSdkAdapter();
185
- const sentPrompts = [];
186
- Reflect.set(adapter, 'sessions', new Map([
187
- [
188
- 'session-1',
189
- {
190
- sessionId: 'session-1',
191
- status: 'waiting_input',
192
- messages: [],
193
- createdAt: new Date().toISOString(),
194
- totalUsage: { inputTokens: 0, outputTokens: 0 },
195
- },
196
- ],
197
- ]));
198
- vi.spyOn(adapter, 'sendIdlePrompt')
199
- .mockImplementation((_sessionId, prompt) => {
200
- sentPrompts.push(prompt);
201
- });
202
- adapter.setIdleCommands('session-1', {
203
- idleInputCommand: 'system: 请保持工作循环:持续调用 poll_message 阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理,完成后调用 submit_task_result 提交结果,然后继续 poll_message。',
204
- nonInputCommand: '',
205
- });
206
- expect(sentPrompts).toEqual([POLL_PROMPT]);
207
- expect(adapter.getSessionStatus('session-1')).toBe('waiting_input');
208
- });
209
- it('starts poll_message idle loop when idle commands are configured before startup reaches waiting_input', () => {
210
- const adapter = new ClaudeSdkAdapter();
211
- const sentPrompts = [];
212
- Reflect.set(adapter, 'sessions', new Map([
213
- [
214
- 'session-1',
215
- {
216
- sessionId: 'session-1',
217
- status: 'starting',
218
- messages: [],
219
- createdAt: new Date().toISOString(),
220
- totalUsage: { inputTokens: 0, outputTokens: 0 },
221
- },
222
- ],
223
- ]));
224
- vi.spyOn(adapter, 'sendIdlePrompt')
225
- .mockImplementation((_sessionId, prompt) => {
226
- sentPrompts.push(prompt);
227
- });
228
- adapter.setIdleCommands('session-1', {
229
- idleInputCommand: 'system: 请保持工作循环:持续调用 poll_message 阻塞等待新消息和流程线任务提醒;收到流程任务提醒后调用 my_task 查看已由后台静默抢占的任务详情并直接处理,完成后调用 submit_task_result 提交结果,然后继续 poll_message。',
230
- nonInputCommand: '',
231
- });
232
- expect(sentPrompts).toEqual([]);
233
- const session = adapter.sessions.get('session-1');
234
- session.status = 'waiting_input';
235
- adapter.startIdleDetection('session-1');
236
- expect(sentPrompts).toEqual([POLL_PROMPT]);
237
- expect(adapter.getSessionStatus('session-1')).toBe('waiting_input');
238
- });
239
- it('still auto-wakes Claude for regular idle commands', async () => {
240
- vi.useFakeTimers();
241
- const adapter = new ClaudeSdkAdapter();
242
- const sentPrompts = [];
243
- Reflect.set(adapter, 'sessions', new Map([
244
- [
245
- 'session-1',
246
- {
247
- sessionId: 'session-1',
248
- status: 'waiting_input',
249
- messages: [],
250
- createdAt: new Date().toISOString(),
251
- totalUsage: { inputTokens: 0, outputTokens: 0 },
252
- },
253
- ],
254
- ]));
255
- vi.spyOn(adapter, 'sendIdlePrompt')
256
- .mockImplementation((_sessionId, prompt) => {
257
- sentPrompts.push(prompt);
258
- });
259
- adapter.setIdleCommands('session-1', {
260
- idleInputCommand: 'continue',
261
- nonInputCommand: '',
262
- });
263
- await vi.advanceTimersByTimeAsync(1000);
264
- expect(sentPrompts).toHaveLength(0);
265
- await vi.advanceTimersByTimeAsync(600);
266
- expect(sentPrompts).toEqual(['continue']);
267
- });
268
- it('applies assistant message usage before final result usage is available', () => {
269
- const adapter = new ClaudeSdkAdapter();
270
- const emittedEvents = [];
271
- const statusChanges = [];
272
- const session = {
273
- sessionId: 'session-1',
274
- status: 'thinking',
275
- messages: [],
276
- createdAt: new Date().toISOString(),
277
- totalUsage: { inputTokens: 0, outputTokens: 0 },
278
- };
279
- vi.spyOn(adapter, 'emitEvent')
280
- .mockImplementation((_sessionId, event) => {
281
- emittedEvents.push(event);
282
- });
283
- vi.spyOn(adapter, 'emit')
284
- .mockImplementation((_eventName, _sessionId, status, actionInfo) => {
285
- statusChanges.push({ status, usage: actionInfo?.usage });
286
- return true;
287
- });
288
- const handler = adapter;
289
- handler.handleSdkMessage('session-1', session, {
290
- type: 'assistant',
291
- message: {
292
- id: 'msg-1',
293
- usage: { input_tokens: 123, output_tokens: 45 },
294
- content: [],
295
- },
296
- });
297
- handler.handleSdkMessage('session-1', session, {
298
- type: 'result',
299
- subtype: 'success',
300
- result: 'done',
301
- });
302
- expect(emittedEvents.find((event) => event.type === 'turn_complete')?.data?.usage).toEqual({
303
- inputTokens: 123,
304
- outputTokens: 45,
305
- });
306
- expect(statusChanges.at(-1)).toEqual({
307
- status: 'waiting_input',
308
- usage: { inputTokens: 123, outputTokens: 45 },
309
- });
310
- });
311
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=CodexSdkAdapter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodexSdkAdapter.test.d.ts","sourceRoot":"","sources":["../../src/adapter/CodexSdkAdapter.test.ts"],"names":[],"mappings":""}