aws-runtime-bridge 1.0.0

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 (462) hide show
  1. package/README.md +56 -0
  2. package/dist/adapter/AdapterRegistry.d.ts +53 -0
  3. package/dist/adapter/AdapterRegistry.d.ts.map +1 -0
  4. package/dist/adapter/AdapterRegistry.js +100 -0
  5. package/dist/adapter/AdapterRegistry.test.d.ts +5 -0
  6. package/dist/adapter/AdapterRegistry.test.d.ts.map +1 -0
  7. package/dist/adapter/AdapterRegistry.test.js +109 -0
  8. package/dist/adapter/ClaudeSdkAdapter.d.ts +120 -0
  9. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -0
  10. package/dist/adapter/ClaudeSdkAdapter.js +1140 -0
  11. package/dist/adapter/ClaudeSdkAdapter.test.d.ts +2 -0
  12. package/dist/adapter/ClaudeSdkAdapter.test.d.ts.map +1 -0
  13. package/dist/adapter/ClaudeSdkAdapter.test.js +95 -0
  14. package/dist/adapter/CodexSdkAdapter.d.ts +48 -0
  15. package/dist/adapter/CodexSdkAdapter.d.ts.map +1 -0
  16. package/dist/adapter/CodexSdkAdapter.js +750 -0
  17. package/dist/adapter/CodexSdkAdapter.test.d.ts +2 -0
  18. package/dist/adapter/CodexSdkAdapter.test.d.ts.map +1 -0
  19. package/dist/adapter/CodexSdkAdapter.test.js +245 -0
  20. package/dist/adapter/OpencodeSdkAdapter.d.ts +45 -0
  21. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -0
  22. package/dist/adapter/OpencodeSdkAdapter.js +622 -0
  23. package/dist/adapter/OpencodeSdkAdapter.test.d.ts +2 -0
  24. package/dist/adapter/OpencodeSdkAdapter.test.d.ts.map +1 -0
  25. package/dist/adapter/OpencodeSdkAdapter.test.js +14 -0
  26. package/dist/adapter/SdkProviderSpi.d.ts +15 -0
  27. package/dist/adapter/SdkProviderSpi.d.ts.map +1 -0
  28. package/dist/adapter/SdkProviderSpi.js +46 -0
  29. package/dist/adapter/adapter.test.d.ts +5 -0
  30. package/dist/adapter/adapter.test.d.ts.map +1 -0
  31. package/dist/adapter/adapter.test.js +180 -0
  32. package/dist/adapter/index.d.ts +11 -0
  33. package/dist/adapter/index.d.ts.map +1 -0
  34. package/dist/adapter/index.js +10 -0
  35. package/dist/adapter/types.d.ts +278 -0
  36. package/dist/adapter/types.d.ts.map +1 -0
  37. package/dist/adapter/types.js +278 -0
  38. package/dist/adapter/types.test.d.ts +2 -0
  39. package/dist/adapter/types.test.d.ts.map +1 -0
  40. package/dist/adapter/types.test.js +59 -0
  41. package/dist/adapters/cc-switch/common.d.ts +52 -0
  42. package/dist/adapters/cc-switch/common.d.ts.map +1 -0
  43. package/dist/adapters/cc-switch/common.js +61 -0
  44. package/dist/adapters/cc-switch/index.d.ts +25 -0
  45. package/dist/adapters/cc-switch/index.d.ts.map +1 -0
  46. package/dist/adapters/cc-switch/index.js +51 -0
  47. package/dist/adapters/cc-switch/mcp-claude.d.ts +15 -0
  48. package/dist/adapters/cc-switch/mcp-claude.d.ts.map +1 -0
  49. package/dist/adapters/cc-switch/mcp-claude.js +88 -0
  50. package/dist/adapters/cc-switch/mcp-claudecode.d.ts +15 -0
  51. package/dist/adapters/cc-switch/mcp-claudecode.d.ts.map +1 -0
  52. package/dist/adapters/cc-switch/mcp-claudecode.js +77 -0
  53. package/dist/adapters/cc-switch/mcp-codex.d.ts +17 -0
  54. package/dist/adapters/cc-switch/mcp-codex.d.ts.map +1 -0
  55. package/dist/adapters/cc-switch/mcp-codex.js +248 -0
  56. package/dist/adapters/cc-switch/mcp-codex.test.d.ts +2 -0
  57. package/dist/adapters/cc-switch/mcp-codex.test.d.ts.map +1 -0
  58. package/dist/adapters/cc-switch/mcp-codex.test.js +125 -0
  59. package/dist/adapters/cc-switch/mcp-opencode.d.ts +23 -0
  60. package/dist/adapters/cc-switch/mcp-opencode.d.ts.map +1 -0
  61. package/dist/adapters/cc-switch/mcp-opencode.js +100 -0
  62. package/dist/adapters/cc-switch/mcp-placeholder.d.ts +14 -0
  63. package/dist/adapters/cc-switch/mcp-placeholder.d.ts.map +1 -0
  64. package/dist/adapters/cc-switch/mcp-placeholder.js +19 -0
  65. package/dist/adapters/cc-switch/skill-claude.d.ts +15 -0
  66. package/dist/adapters/cc-switch/skill-claude.d.ts.map +1 -0
  67. package/dist/adapters/cc-switch/skill-claude.js +91 -0
  68. package/dist/adapters/cc-switch/skill-claudecode.d.ts +15 -0
  69. package/dist/adapters/cc-switch/skill-claudecode.d.ts.map +1 -0
  70. package/dist/adapters/cc-switch/skill-claudecode.js +91 -0
  71. package/dist/adapters/cc-switch/skill-opencode.d.ts +15 -0
  72. package/dist/adapters/cc-switch/skill-opencode.d.ts.map +1 -0
  73. package/dist/adapters/cc-switch/skill-opencode.js +95 -0
  74. package/dist/adapters/cc-switch/skill-placeholder.d.ts +14 -0
  75. package/dist/adapters/cc-switch/skill-placeholder.d.ts.map +1 -0
  76. package/dist/adapters/cc-switch/skill-placeholder.js +19 -0
  77. package/dist/config.d.ts +76 -0
  78. package/dist/config.d.ts.map +1 -0
  79. package/dist/config.js +109 -0
  80. package/dist/index.d.ts +8 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +503 -0
  83. package/dist/middleware/auth.d.ts +12 -0
  84. package/dist/middleware/auth.d.ts.map +1 -0
  85. package/dist/middleware/auth.js +18 -0
  86. package/dist/routes/ai-sources.d.ts +2 -0
  87. package/dist/routes/ai-sources.d.ts.map +1 -0
  88. package/dist/routes/ai-sources.js +136 -0
  89. package/dist/routes/ai-sources.test.d.ts +2 -0
  90. package/dist/routes/ai-sources.test.d.ts.map +1 -0
  91. package/dist/routes/ai-sources.test.js +148 -0
  92. package/dist/routes/aws-mcp.d.ts +10 -0
  93. package/dist/routes/aws-mcp.d.ts.map +1 -0
  94. package/dist/routes/aws-mcp.js +74 -0
  95. package/dist/routes/aws-mcp.test.d.ts +2 -0
  96. package/dist/routes/aws-mcp.test.d.ts.map +1 -0
  97. package/dist/routes/aws-mcp.test.js +42 -0
  98. package/dist/routes/file-browser.d.ts +7 -0
  99. package/dist/routes/file-browser.d.ts.map +1 -0
  100. package/dist/routes/file-browser.js +227 -0
  101. package/dist/routes/file-browser.test.d.ts +5 -0
  102. package/dist/routes/file-browser.test.d.ts.map +1 -0
  103. package/dist/routes/file-browser.test.js +88 -0
  104. package/dist/routes/git.d.ts +7 -0
  105. package/dist/routes/git.d.ts.map +1 -0
  106. package/dist/routes/git.js +470 -0
  107. package/dist/routes/git.test.d.ts +5 -0
  108. package/dist/routes/git.test.d.ts.map +1 -0
  109. package/dist/routes/git.test.js +87 -0
  110. package/dist/routes/instance.d.ts +3 -0
  111. package/dist/routes/instance.d.ts.map +1 -0
  112. package/dist/routes/instance.js +170 -0
  113. package/dist/routes/instance.test.d.ts +5 -0
  114. package/dist/routes/instance.test.d.ts.map +1 -0
  115. package/dist/routes/instance.test.js +64 -0
  116. package/dist/routes/mcp.d.ts +2 -0
  117. package/dist/routes/mcp.d.ts.map +1 -0
  118. package/dist/routes/mcp.js +171 -0
  119. package/dist/routes/mcp.test.d.ts +5 -0
  120. package/dist/routes/mcp.test.d.ts.map +1 -0
  121. package/dist/routes/mcp.test.js +84 -0
  122. package/dist/routes/memory.d.ts +13 -0
  123. package/dist/routes/memory.d.ts.map +1 -0
  124. package/dist/routes/memory.js +429 -0
  125. package/dist/routes/processes.d.ts +7 -0
  126. package/dist/routes/processes.d.ts.map +1 -0
  127. package/dist/routes/processes.js +245 -0
  128. package/dist/routes/properties.d.ts +7 -0
  129. package/dist/routes/properties.d.ts.map +1 -0
  130. package/dist/routes/properties.js +72 -0
  131. package/dist/routes/properties.test.d.ts +5 -0
  132. package/dist/routes/properties.test.d.ts.map +1 -0
  133. package/dist/routes/properties.test.js +72 -0
  134. package/dist/routes/sessions.d.ts +7 -0
  135. package/dist/routes/sessions.d.ts.map +1 -0
  136. package/dist/routes/sessions.js +808 -0
  137. package/dist/routes/sessions.test.d.ts +5 -0
  138. package/dist/routes/sessions.test.d.ts.map +1 -0
  139. package/dist/routes/sessions.test.js +70 -0
  140. package/dist/routes/skills.d.ts +2 -0
  141. package/dist/routes/skills.d.ts.map +1 -0
  142. package/dist/routes/skills.js +162 -0
  143. package/dist/routes/skills.test.d.ts +5 -0
  144. package/dist/routes/skills.test.d.ts.map +1 -0
  145. package/dist/routes/skills.test.js +42 -0
  146. package/dist/routes/terminal.d.ts +18 -0
  147. package/dist/routes/terminal.d.ts.map +1 -0
  148. package/dist/routes/terminal.js +663 -0
  149. package/dist/routes/terminal.test.d.ts +2 -0
  150. package/dist/routes/terminal.test.d.ts.map +1 -0
  151. package/dist/routes/terminal.test.js +91 -0
  152. package/dist/routes/yml.d.ts +7 -0
  153. package/dist/routes/yml.d.ts.map +1 -0
  154. package/dist/routes/yml.js +223 -0
  155. package/dist/routes/yml.test.d.ts +5 -0
  156. package/dist/routes/yml.test.d.ts.map +1 -0
  157. package/dist/routes/yml.test.js +58 -0
  158. package/dist/services/agent-process-manager.d.ts +241 -0
  159. package/dist/services/agent-process-manager.d.ts.map +1 -0
  160. package/dist/services/agent-process-manager.js +762 -0
  161. package/dist/services/auto-register.d.ts +94 -0
  162. package/dist/services/auto-register.d.ts.map +1 -0
  163. package/dist/services/auto-register.js +510 -0
  164. package/dist/services/aws-client-agent-mcp.d.ts +26 -0
  165. package/dist/services/aws-client-agent-mcp.d.ts.map +1 -0
  166. package/dist/services/aws-client-agent-mcp.js +142 -0
  167. package/dist/services/aws-client-agent-mcp.test.d.ts +2 -0
  168. package/dist/services/aws-client-agent-mcp.test.d.ts.map +1 -0
  169. package/dist/services/aws-client-agent-mcp.test.js +89 -0
  170. package/dist/services/aws-mcp-http.d.ts +11 -0
  171. package/dist/services/aws-mcp-http.d.ts.map +1 -0
  172. package/dist/services/aws-mcp-http.js +225 -0
  173. package/dist/services/aws-mcp-http.test.d.ts +2 -0
  174. package/dist/services/aws-mcp-http.test.d.ts.map +1 -0
  175. package/dist/services/aws-mcp-http.test.js +27 -0
  176. package/dist/services/cc-switch-sdk.d.ts +18 -0
  177. package/dist/services/cc-switch-sdk.d.ts.map +1 -0
  178. package/dist/services/cc-switch-sdk.js +117 -0
  179. package/dist/services/easytier-manager.d.ts +106 -0
  180. package/dist/services/easytier-manager.d.ts.map +1 -0
  181. package/dist/services/easytier-manager.js +331 -0
  182. package/dist/services/easytier-manager.test.d.ts +5 -0
  183. package/dist/services/easytier-manager.test.d.ts.map +1 -0
  184. package/dist/services/easytier-manager.test.js +98 -0
  185. package/dist/services/instance-init-service.d.ts +35 -0
  186. package/dist/services/instance-init-service.d.ts.map +1 -0
  187. package/dist/services/instance-init-service.js +190 -0
  188. package/dist/services/instance-service.d.ts +88 -0
  189. package/dist/services/instance-service.d.ts.map +1 -0
  190. package/dist/services/instance-service.js +236 -0
  191. package/dist/services/instance-state.d.ts +36 -0
  192. package/dist/services/instance-state.d.ts.map +1 -0
  193. package/dist/services/instance-state.js +79 -0
  194. package/dist/services/instance-state.test.d.ts +2 -0
  195. package/dist/services/instance-state.test.d.ts.map +1 -0
  196. package/dist/services/instance-state.test.js +213 -0
  197. package/dist/services/memory-service.d.ts +195 -0
  198. package/dist/services/memory-service.d.ts.map +1 -0
  199. package/dist/services/memory-service.js +650 -0
  200. package/dist/services/orphan-monitor.d.ts +94 -0
  201. package/dist/services/orphan-monitor.d.ts.map +1 -0
  202. package/dist/services/orphan-monitor.js +321 -0
  203. package/dist/services/process-detector.d.ts +175 -0
  204. package/dist/services/process-detector.d.ts.map +1 -0
  205. package/dist/services/process-detector.js +992 -0
  206. package/dist/services/process-registry.d.ts +208 -0
  207. package/dist/services/process-registry.d.ts.map +1 -0
  208. package/dist/services/process-registry.js +354 -0
  209. package/dist/services/session-lookup.d.ts +20 -0
  210. package/dist/services/session-lookup.d.ts.map +1 -0
  211. package/dist/services/session-lookup.js +43 -0
  212. package/dist/services/session-output.d.ts +56 -0
  213. package/dist/services/session-output.d.ts.map +1 -0
  214. package/dist/services/session-output.js +122 -0
  215. package/dist/services/session-output.test.d.ts +5 -0
  216. package/dist/services/session-output.test.d.ts.map +1 -0
  217. package/dist/services/session-output.test.js +68 -0
  218. package/dist/services/terminal-persistence.d.ts +51 -0
  219. package/dist/services/terminal-persistence.d.ts.map +1 -0
  220. package/dist/services/terminal-persistence.js +125 -0
  221. package/dist/services/terminal-persistence.test.d.ts +5 -0
  222. package/dist/services/terminal-persistence.test.d.ts.map +1 -0
  223. package/dist/services/terminal-persistence.test.js +88 -0
  224. package/dist/services/tool-installer.d.ts +15 -0
  225. package/dist/services/tool-installer.d.ts.map +1 -0
  226. package/dist/services/tool-installer.js +297 -0
  227. package/dist/services/tool-installer.test.d.ts +2 -0
  228. package/dist/services/tool-installer.test.d.ts.map +1 -0
  229. package/dist/services/tool-installer.test.js +102 -0
  230. package/dist/services/user-api-key-service.d.ts +28 -0
  231. package/dist/services/user-api-key-service.d.ts.map +1 -0
  232. package/dist/services/user-api-key-service.js +75 -0
  233. package/dist/services/workspace-files.d.ts +85 -0
  234. package/dist/services/workspace-files.d.ts.map +1 -0
  235. package/dist/services/workspace-files.js +224 -0
  236. package/dist/services/workspace-files.test.d.ts +2 -0
  237. package/dist/services/workspace-files.test.d.ts.map +1 -0
  238. package/dist/services/workspace-files.test.js +117 -0
  239. package/dist/types.d.ts +233 -0
  240. package/dist/types.d.ts.map +1 -0
  241. package/dist/types.js +1 -0
  242. package/dist/utils/file-utils.d.ts +13 -0
  243. package/dist/utils/file-utils.d.ts.map +1 -0
  244. package/dist/utils/file-utils.js +140 -0
  245. package/dist/utils/file-utils.test.d.ts +2 -0
  246. package/dist/utils/file-utils.test.d.ts.map +1 -0
  247. package/dist/utils/file-utils.test.js +201 -0
  248. package/dist/utils/logger.d.ts +39 -0
  249. package/dist/utils/logger.d.ts.map +1 -0
  250. package/dist/utils/logger.js +110 -0
  251. package/dist/utils/logger.test.d.ts +2 -0
  252. package/dist/utils/logger.test.d.ts.map +1 -0
  253. package/dist/utils/logger.test.js +93 -0
  254. package/dist/utils/mcp-utils.d.ts +73 -0
  255. package/dist/utils/mcp-utils.d.ts.map +1 -0
  256. package/dist/utils/mcp-utils.js +165 -0
  257. package/dist/utils/path-utils.d.ts +24 -0
  258. package/dist/utils/path-utils.d.ts.map +1 -0
  259. package/dist/utils/path-utils.js +44 -0
  260. package/dist/utils/validation.d.ts +23 -0
  261. package/dist/utils/validation.d.ts.map +1 -0
  262. package/dist/utils/validation.js +53 -0
  263. package/dist/utils/validation.test.d.ts +2 -0
  264. package/dist/utils/validation.test.d.ts.map +1 -0
  265. package/dist/utils/validation.test.js +88 -0
  266. package/dist/utils/yaml-utils.d.ts +73 -0
  267. package/dist/utils/yaml-utils.d.ts.map +1 -0
  268. package/dist/utils/yaml-utils.js +309 -0
  269. package/dist/utils/yaml-utils.test.d.ts +2 -0
  270. package/dist/utils/yaml-utils.test.d.ts.map +1 -0
  271. package/dist/utils/yaml-utils.test.js +363 -0
  272. package/package/aws-client-agent-mcp/README.md +288 -0
  273. package/package/aws-client-agent-mcp/dist/activity-reporter.d.ts +150 -0
  274. package/package/aws-client-agent-mcp/dist/activity-reporter.d.ts.map +1 -0
  275. package/package/aws-client-agent-mcp/dist/activity-reporter.js +353 -0
  276. package/package/aws-client-agent-mcp/dist/activity-reporter.js.map +1 -0
  277. package/package/aws-client-agent-mcp/dist/activity-reporter.test.d.ts +2 -0
  278. package/package/aws-client-agent-mcp/dist/activity-reporter.test.d.ts.map +1 -0
  279. package/package/aws-client-agent-mcp/dist/activity-reporter.test.js +75 -0
  280. package/package/aws-client-agent-mcp/dist/activity-reporter.test.js.map +1 -0
  281. package/package/aws-client-agent-mcp/dist/activity-types.d.ts +96 -0
  282. package/package/aws-client-agent-mcp/dist/activity-types.d.ts.map +1 -0
  283. package/package/aws-client-agent-mcp/dist/activity-types.js +141 -0
  284. package/package/aws-client-agent-mcp/dist/activity-types.js.map +1 -0
  285. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +165 -0
  286. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -0
  287. package/package/aws-client-agent-mcp/dist/agent-client.js +588 -0
  288. package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -0
  289. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts +2 -0
  290. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts.map +1 -0
  291. package/package/aws-client-agent-mcp/dist/agent-client.test.js +534 -0
  292. package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +1 -0
  293. package/package/aws-client-agent-mcp/dist/config.d.ts +21 -0
  294. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -0
  295. package/package/aws-client-agent-mcp/dist/config.js +67 -0
  296. package/package/aws-client-agent-mcp/dist/config.js.map +1 -0
  297. package/package/aws-client-agent-mcp/dist/config.test.d.ts +2 -0
  298. package/package/aws-client-agent-mcp/dist/config.test.d.ts.map +1 -0
  299. package/package/aws-client-agent-mcp/dist/config.test.js +139 -0
  300. package/package/aws-client-agent-mcp/dist/config.test.js.map +1 -0
  301. package/package/aws-client-agent-mcp/dist/constants.d.ts +15 -0
  302. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -0
  303. package/package/aws-client-agent-mcp/dist/constants.js +19 -0
  304. package/package/aws-client-agent-mcp/dist/constants.js.map +1 -0
  305. package/package/aws-client-agent-mcp/dist/http-client.d.ts +27 -0
  306. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -0
  307. package/package/aws-client-agent-mcp/dist/http-client.js +65 -0
  308. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -0
  309. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts +2 -0
  310. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts.map +1 -0
  311. package/package/aws-client-agent-mcp/dist/http-client.test.js +228 -0
  312. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +1 -0
  313. package/package/aws-client-agent-mcp/dist/index.d.ts +14 -0
  314. package/package/aws-client-agent-mcp/dist/index.d.ts.map +1 -0
  315. package/package/aws-client-agent-mcp/dist/index.js +30 -0
  316. package/package/aws-client-agent-mcp/dist/index.js.map +1 -0
  317. package/package/aws-client-agent-mcp/dist/logger.d.ts +7 -0
  318. package/package/aws-client-agent-mcp/dist/logger.d.ts.map +1 -0
  319. package/package/aws-client-agent-mcp/dist/logger.js +19 -0
  320. package/package/aws-client-agent-mcp/dist/logger.js.map +1 -0
  321. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +77 -0
  322. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -0
  323. package/package/aws-client-agent-mcp/dist/mcp-server.js +427 -0
  324. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -0
  325. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts +2 -0
  326. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts.map +1 -0
  327. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +624 -0
  328. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -0
  329. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +78 -0
  330. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -0
  331. package/package/aws-client-agent-mcp/dist/mcp-tools.js +420 -0
  332. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -0
  333. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +61 -0
  334. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -0
  335. package/package/aws-client-agent-mcp/dist/memory-store.js +268 -0
  336. package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -0
  337. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts +2 -0
  338. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts.map +1 -0
  339. package/package/aws-client-agent-mcp/dist/memory-store.test.js +164 -0
  340. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -0
  341. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +74 -0
  342. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -0
  343. package/package/aws-client-agent-mcp/dist/message-buffer.js +159 -0
  344. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -0
  345. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts +2 -0
  346. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts.map +1 -0
  347. package/package/aws-client-agent-mcp/dist/message-buffer.test.js +44 -0
  348. package/package/aws-client-agent-mcp/dist/message-buffer.test.js.map +1 -0
  349. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +53 -0
  350. package/package/aws-client-agent-mcp/dist/messageContent.d.ts.map +1 -0
  351. package/package/aws-client-agent-mcp/dist/messageContent.js +125 -0
  352. package/package/aws-client-agent-mcp/dist/messageContent.js.map +1 -0
  353. package/package/aws-client-agent-mcp/dist/orchestration-tools.d.ts +19 -0
  354. package/package/aws-client-agent-mcp/dist/orchestration-tools.d.ts.map +1 -0
  355. package/package/aws-client-agent-mcp/dist/orchestration-tools.js +317 -0
  356. package/package/aws-client-agent-mcp/dist/orchestration-tools.js.map +1 -0
  357. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +66 -0
  358. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -0
  359. package/package/aws-client-agent-mcp/dist/status-reporter.js +220 -0
  360. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -0
  361. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts +2 -0
  362. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts.map +1 -0
  363. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +45 -0
  364. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +1 -0
  365. package/package/aws-client-agent-mcp/dist/types.d.ts +286 -0
  366. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -0
  367. package/package/aws-client-agent-mcp/dist/types.js +9 -0
  368. package/package/aws-client-agent-mcp/dist/types.js.map +1 -0
  369. package/package/aws-client-agent-mcp/dist/user-config-reader.d.ts +63 -0
  370. package/package/aws-client-agent-mcp/dist/user-config-reader.d.ts.map +1 -0
  371. package/package/aws-client-agent-mcp/dist/user-config-reader.js +161 -0
  372. package/package/aws-client-agent-mcp/dist/user-config-reader.js.map +1 -0
  373. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +94 -0
  374. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -0
  375. package/package/aws-client-agent-mcp/dist/websocket-client.js +316 -0
  376. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -0
  377. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts +2 -0
  378. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts.map +1 -0
  379. package/package/aws-client-agent-mcp/dist/websocket-client.test.js +191 -0
  380. package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +1 -0
  381. package/package/aws-client-agent-mcp/package.json +51 -0
  382. package/package/cc-switch-sdk/README.md +541 -0
  383. package/package/cc-switch-sdk/dist/adapters/common.d.ts +38 -0
  384. package/package/cc-switch-sdk/dist/adapters/common.d.ts.map +1 -0
  385. package/package/cc-switch-sdk/dist/adapters/common.js +47 -0
  386. package/package/cc-switch-sdk/dist/adapters/index.d.ts +5 -0
  387. package/package/cc-switch-sdk/dist/adapters/index.d.ts.map +1 -0
  388. package/package/cc-switch-sdk/dist/adapters/index.js +28 -0
  389. package/package/cc-switch-sdk/dist/adapters/mcp-claude.d.ts +10 -0
  390. package/package/cc-switch-sdk/dist/adapters/mcp-claude.d.ts.map +1 -0
  391. package/package/cc-switch-sdk/dist/adapters/mcp-claude.js +39 -0
  392. package/package/cc-switch-sdk/dist/adapters/mcp-claudecode.d.ts +10 -0
  393. package/package/cc-switch-sdk/dist/adapters/mcp-claudecode.d.ts.map +1 -0
  394. package/package/cc-switch-sdk/dist/adapters/mcp-claudecode.js +40 -0
  395. package/package/cc-switch-sdk/dist/adapters/mcp-opencode.d.ts +18 -0
  396. package/package/cc-switch-sdk/dist/adapters/mcp-opencode.d.ts.map +1 -0
  397. package/package/cc-switch-sdk/dist/adapters/mcp-opencode.js +63 -0
  398. package/package/cc-switch-sdk/dist/adapters/mcp-opencode.test.d.ts +2 -0
  399. package/package/cc-switch-sdk/dist/adapters/mcp-opencode.test.d.ts.map +1 -0
  400. package/package/cc-switch-sdk/dist/adapters/mcp-opencode.test.js +86 -0
  401. package/package/cc-switch-sdk/dist/adapters/mcp-placeholder.d.ts +9 -0
  402. package/package/cc-switch-sdk/dist/adapters/mcp-placeholder.d.ts.map +1 -0
  403. package/package/cc-switch-sdk/dist/adapters/mcp-placeholder.js +14 -0
  404. package/package/cc-switch-sdk/dist/adapters/skill-claude.d.ts +10 -0
  405. package/package/cc-switch-sdk/dist/adapters/skill-claude.d.ts.map +1 -0
  406. package/package/cc-switch-sdk/dist/adapters/skill-claude.js +51 -0
  407. package/package/cc-switch-sdk/dist/adapters/skill-claudecode.d.ts +10 -0
  408. package/package/cc-switch-sdk/dist/adapters/skill-claudecode.d.ts.map +1 -0
  409. package/package/cc-switch-sdk/dist/adapters/skill-claudecode.js +51 -0
  410. package/package/cc-switch-sdk/dist/adapters/skill-opencode.d.ts +10 -0
  411. package/package/cc-switch-sdk/dist/adapters/skill-opencode.d.ts.map +1 -0
  412. package/package/cc-switch-sdk/dist/adapters/skill-opencode.js +51 -0
  413. package/package/cc-switch-sdk/dist/adapters/skill-placeholder.d.ts +9 -0
  414. package/package/cc-switch-sdk/dist/adapters/skill-placeholder.d.ts.map +1 -0
  415. package/package/cc-switch-sdk/dist/adapters/skill-placeholder.js +14 -0
  416. package/package/cc-switch-sdk/dist/constants.d.ts +9 -0
  417. package/package/cc-switch-sdk/dist/constants.d.ts.map +1 -0
  418. package/package/cc-switch-sdk/dist/constants.js +54 -0
  419. package/package/cc-switch-sdk/dist/errors.d.ts +6 -0
  420. package/package/cc-switch-sdk/dist/errors.d.ts.map +1 -0
  421. package/package/cc-switch-sdk/dist/errors.js +8 -0
  422. package/package/cc-switch-sdk/dist/index.d.ts +11 -0
  423. package/package/cc-switch-sdk/dist/index.d.ts.map +1 -0
  424. package/package/cc-switch-sdk/dist/index.js +9 -0
  425. package/package/cc-switch-sdk/dist/schemas.d.ts +8 -0
  426. package/package/cc-switch-sdk/dist/schemas.d.ts.map +1 -0
  427. package/package/cc-switch-sdk/dist/schemas.js +37 -0
  428. package/package/cc-switch-sdk/dist/sdk.d.ts +91 -0
  429. package/package/cc-switch-sdk/dist/sdk.d.ts.map +1 -0
  430. package/package/cc-switch-sdk/dist/sdk.js +427 -0
  431. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts +75 -0
  432. package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts.map +1 -0
  433. package/package/cc-switch-sdk/dist/services/ai-config-service.js +280 -0
  434. package/package/cc-switch-sdk/dist/services/instance-service.d.ts +78 -0
  435. package/package/cc-switch-sdk/dist/services/instance-service.d.ts.map +1 -0
  436. package/package/cc-switch-sdk/dist/services/instance-service.js +180 -0
  437. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts +17 -0
  438. package/package/cc-switch-sdk/dist/services/mcp-model.d.ts.map +1 -0
  439. package/package/cc-switch-sdk/dist/services/mcp-model.js +34 -0
  440. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts +18 -0
  441. package/package/cc-switch-sdk/dist/services/mcp-service.d.ts.map +1 -0
  442. package/package/cc-switch-sdk/dist/services/mcp-service.js +9 -0
  443. package/package/cc-switch-sdk/dist/services/skill-model.d.ts +17 -0
  444. package/package/cc-switch-sdk/dist/services/skill-model.d.ts.map +1 -0
  445. package/package/cc-switch-sdk/dist/services/skill-model.js +38 -0
  446. package/package/cc-switch-sdk/dist/services/skill-service.d.ts +17 -0
  447. package/package/cc-switch-sdk/dist/services/skill-service.d.ts.map +1 -0
  448. package/package/cc-switch-sdk/dist/services/skill-service.js +9 -0
  449. package/package/cc-switch-sdk/dist/state.d.ts +4 -0
  450. package/package/cc-switch-sdk/dist/state.d.ts.map +1 -0
  451. package/package/cc-switch-sdk/dist/state.js +19 -0
  452. package/package/cc-switch-sdk/dist/types.d.ts +75 -0
  453. package/package/cc-switch-sdk/dist/types.d.ts.map +1 -0
  454. package/package/cc-switch-sdk/dist/types.js +1 -0
  455. package/package/cc-switch-sdk/dist/utils/fs.d.ts +10 -0
  456. package/package/cc-switch-sdk/dist/utils/fs.d.ts.map +1 -0
  457. package/package/cc-switch-sdk/dist/utils/fs.js +91 -0
  458. package/package/cc-switch-sdk/dist/utils/id.d.ts +4 -0
  459. package/package/cc-switch-sdk/dist/utils/id.d.ts.map +1 -0
  460. package/package/cc-switch-sdk/dist/utils/id.js +12 -0
  461. package/package/cc-switch-sdk/package.json +31 -0
  462. package/package.json +73 -0
@@ -0,0 +1,142 @@
1
+ import { cpSync, existsSync, mkdirSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { getRuntimeHomeDir, schedulerBaseUrl } from '../config.js';
5
+ import { logger } from '../utils/logger.js';
6
+ export const AWS_MCP_SERVER_NAME = 'aws-mcp';
7
+ const AWS_MCP_ALLOWED_ENV_KEYS = [
8
+ 'AWS_INTERNAL_API_KEY',
9
+ 'AWS_PROJECT_NAME',
10
+ 'AWS_PROMPT',
11
+ 'AWS_ROLE_NAME',
12
+ 'AWS_SERVER_URL',
13
+ 'AWS_MCP_HTTP_URL',
14
+ 'AWS_HEARTBEAT_INTERVAL',
15
+ 'AWS_HEARTBEAT_TIMEOUT',
16
+ 'PATH',
17
+ 'HOME',
18
+ 'USERPROFILE',
19
+ 'TMP',
20
+ 'TEMP',
21
+ 'SystemRoot',
22
+ 'COMSPEC',
23
+ 'PATHEXT',
24
+ 'WINDIR',
25
+ ];
26
+ function getPackageRoot() {
27
+ const currentFile = fileURLToPath(import.meta.url);
28
+ return path.resolve(path.dirname(currentFile), '..', '..');
29
+ }
30
+ function getBundledEntryPath() {
31
+ return path.join(getPackageRoot(), 'package', 'aws-client-agent-mcp', 'dist', 'index.js');
32
+ }
33
+ function getReleasedMcpRoot() {
34
+ return path.join(getRuntimeHomeDir(), '.aws-bridge', 'mcp');
35
+ }
36
+ export function getReleasedMcpDistPath() {
37
+ return path.join(getReleasedMcpRoot(), 'dist');
38
+ }
39
+ function getReleasedEntryPath() {
40
+ return path.join(getReleasedMcpDistPath(), 'index.js');
41
+ }
42
+ export function releaseBundledAwsClientAgentMcp() {
43
+ const bundledDist = path.dirname(getBundledEntryPath());
44
+ const releasedDist = getReleasedMcpDistPath();
45
+ const releasedEntry = path.join(releasedDist, 'index.js');
46
+ if (!existsSync(path.join(bundledDist, 'index.js'))) {
47
+ return null;
48
+ }
49
+ if (!existsSync(releasedEntry)) {
50
+ mkdirSync(releasedDist, { recursive: true });
51
+ cpSync(bundledDist, releasedDist, {
52
+ errorOnExist: false,
53
+ force: true,
54
+ recursive: true,
55
+ });
56
+ logger.info(`[runtime-bridge] ${AWS_MCP_SERVER_NAME} MCP 已释放到: ${releasedDist}`);
57
+ }
58
+ return releasedEntry;
59
+ }
60
+ function getStringEnv() {
61
+ return Object.fromEntries(Object.entries(process.env).filter((entry) => typeof entry[1] === 'string'));
62
+ }
63
+ function getAllowedAwsMcpEnv(baseEnv) {
64
+ return Object.fromEntries(AWS_MCP_ALLOWED_ENV_KEYS.flatMap((key) => {
65
+ const value = baseEnv[key];
66
+ return typeof value === 'string' && value.length > 0 ? [[key, value]] : [];
67
+ }));
68
+ }
69
+ function parseAwsClientAgentMcpArgs(raw) {
70
+ try {
71
+ const parsed = JSON.parse(raw);
72
+ if (Array.isArray(parsed) && parsed.every((value) => typeof value === 'string')) {
73
+ return parsed;
74
+ }
75
+ }
76
+ catch (error) {
77
+ logger.warn(`[runtime-bridge] AWS_CLIENT_AGENT_MCP_ARGS 不是合法 JSON,已忽略: ${error instanceof Error ? error.message : String(error)}`);
78
+ }
79
+ logger.warn('[runtime-bridge] AWS_CLIENT_AGENT_MCP_ARGS 必须是 string[] JSON,已忽略');
80
+ return [];
81
+ }
82
+ function toWebSocketUrl(baseUrl) {
83
+ const url = new URL('/ws/agent', baseUrl);
84
+ if (url.protocol === 'https:') {
85
+ url.protocol = 'wss:';
86
+ }
87
+ else {
88
+ url.protocol = 'ws:';
89
+ }
90
+ return url.toString();
91
+ }
92
+ function toMcpHttpUrl(baseUrl) {
93
+ return new URL('/mcp/call', baseUrl).toString();
94
+ }
95
+ export function resolveAwsClientAgentMcpCommand(options = {}) {
96
+ return getAwsClientAgentMcpPreparedInfo(options);
97
+ }
98
+ export function getAwsClientAgentMcpPreparedInfo(options = {}) {
99
+ const overrideCommand = String(process.env.AWS_CLIENT_AGENT_MCP_COMMAND || '').trim();
100
+ if (overrideCommand) {
101
+ return {
102
+ source: 'override',
103
+ command: overrideCommand,
104
+ args: process.env.AWS_CLIENT_AGENT_MCP_ARGS ? parseAwsClientAgentMcpArgs(process.env.AWS_CLIENT_AGENT_MCP_ARGS) : [],
105
+ };
106
+ }
107
+ const exists = options.exists || existsSync;
108
+ const releasedEntry = getReleasedEntryPath();
109
+ if (exists(releasedEntry)) {
110
+ return { source: 'bundled', command: process.execPath, args: [releasedEntry] };
111
+ }
112
+ const release = options.release || releaseBundledAwsClientAgentMcp;
113
+ const released = release();
114
+ if (released && exists(released)) {
115
+ return { source: 'bundled', command: process.execPath, args: [released] };
116
+ }
117
+ return { source: 'global', command: 'aws-client-agent-mcp', args: [] };
118
+ }
119
+ export function buildAwsMcpServerConfig(input) {
120
+ const env = getStringEnv();
121
+ const command = getAwsClientAgentMcpPreparedInfo();
122
+ return {
123
+ command: command.command,
124
+ args: command.args,
125
+ env: {
126
+ ...getAllowedAwsMcpEnv(env),
127
+ AWS_AGENT_ID: input.agentId,
128
+ AWS_WORKSPACE_PATH: input.workspacePath,
129
+ AWS_SERVER_URL: env.AWS_SERVER_URL || toWebSocketUrl(schedulerBaseUrl),
130
+ AWS_MCP_HTTP_URL: env.AWS_MCP_HTTP_URL || toMcpHttpUrl(schedulerBaseUrl),
131
+ },
132
+ };
133
+ }
134
+ export function ensureAwsClientAgentMcpReleased() {
135
+ const prepared = getAwsClientAgentMcpPreparedInfo();
136
+ const commandLine = prepared.args[0] ? `${prepared.command} ${prepared.args.join(' ')}` : prepared.command;
137
+ if (prepared.source === 'global') {
138
+ logger.warn(`[runtime-bridge] ${AWS_MCP_SERVER_NAME} MCP 未找到 bundled 产物,启动时将回退到 PATH 命令: ${commandLine}`);
139
+ return;
140
+ }
141
+ logger.info(`[runtime-bridge] ${AWS_MCP_SERVER_NAME} MCP 已准备(${prepared.source}): ${commandLine}`);
142
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=aws-client-agent-mcp.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-client-agent-mcp.test.d.ts","sourceRoot":"","sources":["../../src/services/aws-client-agent-mcp.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import { afterEach, describe, expect, it, vi } from 'vitest';
4
+ const originalEnv = { ...process.env };
5
+ afterEach(() => {
6
+ process.env = { ...originalEnv };
7
+ vi.resetModules();
8
+ vi.restoreAllMocks();
9
+ });
10
+ describe('aws-client-agent-mcp service', () => {
11
+ it('prefers explicit command override from env', async () => {
12
+ process.env.AWS_CLIENT_AGENT_MCP_COMMAND = 'custom-aws-client-agent-mcp';
13
+ process.env.AWS_CLIENT_AGENT_MCP_ARGS = JSON.stringify(['--stdio', '--trace']);
14
+ const mod = await import('./aws-client-agent-mcp.js');
15
+ expect(mod.resolveAwsClientAgentMcpCommand()).toEqual({
16
+ source: 'override',
17
+ command: 'custom-aws-client-agent-mcp',
18
+ args: ['--stdio', '--trace'],
19
+ });
20
+ });
21
+ it('uses bundled dist entry when present', async () => {
22
+ process.env.AWS_CLIENT_AGENT_MCP_COMMAND = '';
23
+ const mod = await import('./aws-client-agent-mcp.js');
24
+ const exists = vi.fn().mockReturnValue(true);
25
+ const resolved = mod.resolveAwsClientAgentMcpCommand({ exists });
26
+ const releasedEntry = path.join(os.homedir(), '.aws-bridge', 'mcp', 'dist', 'index.js');
27
+ expect(resolved).toEqual({
28
+ source: 'bundled',
29
+ command: process.execPath,
30
+ args: [releasedEntry],
31
+ });
32
+ expect(exists).toHaveBeenCalled();
33
+ });
34
+ it('releases bundled mcp into home directory when runtime dist is missing', async () => {
35
+ process.env.AWS_CLIENT_AGENT_MCP_COMMAND = '';
36
+ const mod = await import('./aws-client-agent-mcp.js');
37
+ const releasedEntry = path.join(os.homedir(), '.aws-bridge', 'mcp', 'dist', 'index.js');
38
+ let released = false;
39
+ const exists = vi.fn((filePath) => released && filePath === releasedEntry);
40
+ const release = vi.fn(() => {
41
+ released = true;
42
+ return releasedEntry;
43
+ });
44
+ expect(mod.resolveAwsClientAgentMcpCommand({ exists, release })).toEqual({
45
+ source: 'bundled',
46
+ command: process.execPath,
47
+ args: [releasedEntry],
48
+ });
49
+ expect(release).toHaveBeenCalledOnce();
50
+ });
51
+ it('falls back to global aws-client-agent-mcp command when bundle is missing', async () => {
52
+ process.env.AWS_CLIENT_AGENT_MCP_COMMAND = '';
53
+ const mod = await import('./aws-client-agent-mcp.js');
54
+ expect(mod.resolveAwsClientAgentMcpCommand({ exists: () => false, release: () => null })).toEqual({
55
+ source: 'global',
56
+ command: 'aws-client-agent-mcp',
57
+ args: [],
58
+ });
59
+ });
60
+ it('builds aws-mcp server config with inferred scheduler urls', async () => {
61
+ process.env.AWS_CLIENT_AGENT_MCP_COMMAND = 'aws-client-agent-mcp';
62
+ process.env.AWS_RUNTIME_CALLBACK_TOKEN = 'secret-runtime-token';
63
+ process.env.CUSTOM_SECRET = 'should-not-leak';
64
+ process.env.AWS_SERVER_URL = '';
65
+ process.env.AWS_MCP_HTTP_URL = '';
66
+ const mod = await import('./aws-client-agent-mcp.js');
67
+ const config = mod.buildAwsMcpServerConfig({
68
+ agentId: 'agent-1',
69
+ workspacePath: '/workspace/demo',
70
+ });
71
+ expect(config.command).toBe('aws-client-agent-mcp');
72
+ expect(config.env.AWS_AGENT_ID).toBe('agent-1');
73
+ expect(config.env.AWS_WORKSPACE_PATH).toBe('/workspace/demo');
74
+ expect(config.env.AWS_SERVER_URL).toBe('ws://localhost:8080/ws/agent');
75
+ expect(config.env.AWS_MCP_HTTP_URL).toBe('http://localhost:8080/mcp/call');
76
+ expect(config.env.AWS_RUNTIME_CALLBACK_TOKEN).toBeUndefined();
77
+ expect(config.env.CUSTOM_SECRET).toBeUndefined();
78
+ });
79
+ it('ignores malformed AWS_CLIENT_AGENT_MCP_ARGS JSON', async () => {
80
+ process.env.AWS_CLIENT_AGENT_MCP_COMMAND = 'custom-aws-client-agent-mcp';
81
+ process.env.AWS_CLIENT_AGENT_MCP_ARGS = '{bad json';
82
+ const mod = await import('./aws-client-agent-mcp.js');
83
+ expect(mod.resolveAwsClientAgentMcpCommand()).toEqual({
84
+ source: 'override',
85
+ command: 'custom-aws-client-agent-mcp',
86
+ args: [],
87
+ });
88
+ });
89
+ });
@@ -0,0 +1,11 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ export interface AwsMcpContext {
3
+ agentId: string;
4
+ workspacePath?: string;
5
+ }
6
+ export declare const AWS_MCP_TOOLS: Tool[];
7
+ export declare function normalizeAwsMcpArgs(args: unknown): Record<string, unknown>;
8
+ export declare function mapAwsMcpToolName(toolName: string): string;
9
+ export declare function injectAwsMcpContext(toolName: string, args: Record<string, unknown>, context: AwsMcpContext): Record<string, unknown>;
10
+ export declare function callAwsMcpTool(toolName: string, args: unknown, context: AwsMcpContext): Promise<unknown>;
11
+ //# sourceMappingURL=aws-mcp-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-mcp-http.d.ts","sourceRoot":"","sources":["../../src/services/aws-mcp-http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAW/D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0BD,eAAO,MAAM,aAAa,EAAE,IAAI,EAwH/B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUpI;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAa9G"}
@@ -0,0 +1,225 @@
1
+ import axios from 'axios';
2
+ import { schedulerBaseUrl } from '../config.js';
3
+ import { createLogger } from '../utils/logger.js';
4
+ const log = createLogger('aws-mcp-http');
5
+ const DEFAULT_INTERNAL_API_KEY = 'agentswork-internal-dev-key';
6
+ const DEFAULT_TOOL_TIMEOUT_MS = 30000;
7
+ const POLL_MESSAGE_TIMEOUT_MS = 65000;
8
+ export const AWS_MCP_TOOLS = [
9
+ {
10
+ name: 'get_colleague',
11
+ description: '获取当前 Agent 可见的同事 Agent 列表,包含在线和离线状态。',
12
+ inputSchema: { type: 'object', properties: {}, required: [] },
13
+ },
14
+ {
15
+ name: 'get_group_rooms',
16
+ description: '获取当前 Agent 在关系图中可发现的群组列表,包括项目公共群聊以及自己所在的小组群。',
17
+ inputSchema: { type: 'object', properties: {}, required: [] },
18
+ },
19
+ {
20
+ name: 'get_profile',
21
+ description: '获取当前 Agent 的个人信息,包括 ID、显示名称、角色名称、Prompt、在线状态等。',
22
+ inputSchema: { type: 'object', properties: {}, required: [] },
23
+ },
24
+ {
25
+ name: 'get_status',
26
+ description: '获取当前 Agent 的运行状态(连接状态、消息循环状态等)。',
27
+ inputSchema: { type: 'object', properties: {}, required: [] },
28
+ },
29
+ {
30
+ name: 'send_group',
31
+ description: '向公共群聊发送消息,所有在线参与者都能收到。回复群消息时建议传入消息中的 projectName,确保回复到正确的项目群聊。',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {
35
+ content: { type: 'string', description: '消息内容' },
36
+ projectName: { type: 'string', description: '目标项目名(可选)。不传则使用 Agent 所属项目(由服务端决定)。' },
37
+ roomId: { type: 'string', description: '目标群聊房间 ID(可选)。' },
38
+ },
39
+ required: ['content'],
40
+ },
41
+ },
42
+ {
43
+ name: 'send_private',
44
+ description: '发送私信给指定用户。支持两种模式:通知式(waitReply=false)和调用式(waitReply=true,阻塞等待回复)。',
45
+ inputSchema: {
46
+ type: 'object',
47
+ properties: {
48
+ targetId: { type: 'string', description: '目标用户ID' },
49
+ content: { type: 'string', description: '消息内容' },
50
+ waitReply: { type: 'boolean', description: '是否等待对方回复(调用式)。' },
51
+ replyToCallId: { type: 'string', description: '回复的调用ID(用于回复调用式消息)' },
52
+ timeoutMs: { type: 'number', description: '等待回复的超时时间(毫秒,可选)。' },
53
+ },
54
+ required: ['targetId', 'content'],
55
+ },
56
+ },
57
+ {
58
+ name: 'poll_message',
59
+ description: '获取未读消息(包括群消息和私信),持续阻塞等待直到有新消息,这是获取消息的主要接口。',
60
+ inputSchema: { type: 'object', properties: {}, required: [] },
61
+ },
62
+ {
63
+ name: 'get_message',
64
+ description: '获取未读消息(非阻塞),从消息缓冲区获取消息,立即返回,若当前没有任务应使用 poll_message。',
65
+ inputSchema: { type: 'object', properties: {}, required: [] },
66
+ },
67
+ {
68
+ name: 'get_dm_history',
69
+ description: '获取私信历史消息。可以获取与特定用户的对话历史,或获取所有私信历史。',
70
+ inputSchema: {
71
+ type: 'object',
72
+ properties: {
73
+ targetUserId: { type: 'string', description: '目标用户ID(可选)。' },
74
+ limit: { type: 'number', description: '获取最近历史消息的数量(默认50)' },
75
+ since: { type: 'string', description: '起始时间(ISO 8601 格式,可选)。' },
76
+ },
77
+ required: [],
78
+ },
79
+ },
80
+ {
81
+ name: 'get_group_history',
82
+ description: '获取公共群聊的历史消息。',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {
86
+ limit: { type: 'number', description: '获取最近历史消息的数量(默认50)' },
87
+ roomId: { type: 'string', description: '目标群聊房间 ID(可选)。' },
88
+ since: { type: 'string', description: '起始时间(ISO 8601 格式,可选)。' },
89
+ },
90
+ required: [],
91
+ },
92
+ },
93
+ {
94
+ name: 'hire_colleague',
95
+ description: '向人事部发起招聘同事请求,直接按创建角色实例所需参数创建一个新的 Agent 同事。',
96
+ inputSchema: { type: 'object', properties: {}, required: [] },
97
+ },
98
+ {
99
+ name: 'hire_colleagues_batch',
100
+ description: '向人事部发起批量招聘同事请求,一次提交多个待审批招聘项。',
101
+ inputSchema: { type: 'object', properties: {}, required: [] },
102
+ },
103
+ {
104
+ name: 'my_task',
105
+ description: '获取当前 Agent 被分配的流程线任务列表。',
106
+ inputSchema: { type: 'object', properties: {}, required: [] },
107
+ },
108
+ {
109
+ name: 'start_task',
110
+ description: '将流程线任务节点标记为处理中。',
111
+ inputSchema: { type: 'object', properties: { nodeId: { type: 'string' } }, required: ['nodeId'] },
112
+ },
113
+ {
114
+ name: 'submit_task_result',
115
+ description: '提交流程线任务的执行结果。',
116
+ inputSchema: { type: 'object', properties: { nodeId: { type: 'string' }, outputPayload: { type: 'string' } }, required: ['nodeId', 'outputPayload'] },
117
+ },
118
+ {
119
+ name: 'reject_task',
120
+ description: '拒绝对前序节点输出的任务,任务将回退到前一个节点重新执行。',
121
+ inputSchema: { type: 'object', properties: { nodeId: { type: 'string' }, reason: { type: 'string' } }, required: ['nodeId', 'reason'] },
122
+ },
123
+ {
124
+ name: 'terminate_task',
125
+ description: '终止整个流程线任务。',
126
+ inputSchema: { type: 'object', properties: { taskInstanceId: { type: 'string' }, reason: { type: 'string' } }, required: ['taskInstanceId', 'reason'] },
127
+ },
128
+ ];
129
+ export function normalizeAwsMcpArgs(args) {
130
+ return args && typeof args === 'object' && !Array.isArray(args) ? { ...args } : {};
131
+ }
132
+ export function mapAwsMcpToolName(toolName) {
133
+ const mapping = {
134
+ get_colleague: 'discover_colleague',
135
+ get_group_rooms: 'discover_group_rooms',
136
+ send_group: 'send_group_message',
137
+ send_private: 'send_dm',
138
+ };
139
+ return mapping[toolName] || toolName;
140
+ }
141
+ export function injectAwsMcpContext(toolName, args, context) {
142
+ const nextArgs = { ...args, agentId: context.agentId };
143
+ if (context.workspacePath && nextArgs.workspacePath == null) {
144
+ nextArgs.workspacePath = context.workspacePath;
145
+ }
146
+ if (toolName === 'send_private') {
147
+ nextArgs.requireReply = Boolean(nextArgs.waitReply);
148
+ delete nextArgs.waitReply;
149
+ }
150
+ return nextArgs;
151
+ }
152
+ export async function callAwsMcpTool(toolName, args, context) {
153
+ const normalizedArgs = normalizeAwsMcpArgs(args);
154
+ if (toolName === 'get_status') {
155
+ return { agentId: context.agentId, isConnected: true, transport: 'http', bridge: 'aws-runtime-bridge' };
156
+ }
157
+ if (toolName === 'poll_message') {
158
+ return pollMessages(context, true);
159
+ }
160
+ if (toolName === 'get_message') {
161
+ return pollMessages(context, false);
162
+ }
163
+ return callSchedulerMcpTool(mapAwsMcpToolName(toolName), injectAwsMcpContext(toolName, normalizedArgs, context));
164
+ }
165
+ async function pollMessages(context, blockIfEmpty) {
166
+ const direct = await callSchedulerMcpTool('get_dm_messages', {
167
+ agentId: context.agentId,
168
+ blockIfEmpty,
169
+ });
170
+ const directMessages = Array.isArray(direct.messages) ? direct.messages : [];
171
+ const groupResult = await fetchAllUnreadGroupMessages(context);
172
+ return {
173
+ directMessages,
174
+ groupMessages: groupResult.messages,
175
+ ...(groupResult.errors.length > 0 ? { groupErrors: groupResult.errors } : {}),
176
+ fromBuffer: false,
177
+ };
178
+ }
179
+ async function fetchAllUnreadGroupMessages(context) {
180
+ const messages = [];
181
+ const errors = [];
182
+ try {
183
+ const rooms = await callSchedulerMcpTool('discover_group_rooms', { agentId: context.agentId });
184
+ const groups = Array.isArray(rooms.groups) ? rooms.groups : [];
185
+ if (groups.length === 0) {
186
+ const result = await callSchedulerMcpTool('get_group_messages', { agentId: context.agentId });
187
+ return { messages: Array.isArray(result.messages) ? result.messages : [], errors };
188
+ }
189
+ for (const group of groups) {
190
+ try {
191
+ const result = await callSchedulerMcpTool('get_group_messages', {
192
+ agentId: context.agentId,
193
+ projectName: group.projectName,
194
+ roomId: group.id,
195
+ });
196
+ if (Array.isArray(result.messages)) {
197
+ messages.push(...result.messages);
198
+ }
199
+ }
200
+ catch (error) {
201
+ errors.push(`group ${group.id || 'unknown'}: ${error instanceof Error ? error.message : String(error)}`);
202
+ }
203
+ }
204
+ }
205
+ catch (error) {
206
+ const message = `discover groups failed: ${error instanceof Error ? error.message : String(error)}`;
207
+ log.warn(message);
208
+ errors.push(message);
209
+ }
210
+ return { messages, errors };
211
+ }
212
+ async function callSchedulerMcpTool(tool, args) {
213
+ const response = await axios.post(new URL('/mcp/call', schedulerBaseUrl).toString(), { tool, arguments: args }, {
214
+ headers: {
215
+ 'Content-Type': 'application/json',
216
+ 'X-Internal-API-Key': process.env.AWS_INTERNAL_API_KEY || DEFAULT_INTERNAL_API_KEY,
217
+ },
218
+ timeout: tool === 'get_dm_messages' && args.blockIfEmpty === true ? POLL_MESSAGE_TIMEOUT_MS : DEFAULT_TOOL_TIMEOUT_MS,
219
+ });
220
+ const data = typeof response.data === 'string' ? JSON.parse(response.data) : response.data;
221
+ if (data?.error) {
222
+ throw new Error(String(data.error));
223
+ }
224
+ return data;
225
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=aws-mcp-http.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-mcp-http.test.d.ts","sourceRoot":"","sources":["../../src/services/aws-mcp-http.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { injectAwsMcpContext, mapAwsMcpToolName, normalizeAwsMcpArgs } from './aws-mcp-http.js';
3
+ describe('aws mcp http service helpers', () => {
4
+ it('maps public aws-mcp tool names to scheduler tool names', () => {
5
+ expect(mapAwsMcpToolName('get_colleague')).toBe('discover_colleague');
6
+ expect(mapAwsMcpToolName('get_group_rooms')).toBe('discover_group_rooms');
7
+ expect(mapAwsMcpToolName('send_group')).toBe('send_group_message');
8
+ expect(mapAwsMcpToolName('send_private')).toBe('send_dm');
9
+ expect(mapAwsMcpToolName('my_task')).toBe('my_task');
10
+ });
11
+ it('normalizes non-object args to an empty object', () => {
12
+ expect(normalizeAwsMcpArgs(undefined)).toEqual({});
13
+ expect(normalizeAwsMcpArgs(null)).toEqual({});
14
+ expect(normalizeAwsMcpArgs([])).toEqual({});
15
+ expect(normalizeAwsMcpArgs({ content: 'hello' })).toEqual({ content: 'hello' });
16
+ });
17
+ it('injects bridge-bound agent context and converts waitReply for send_private', () => {
18
+ const args = injectAwsMcpContext('send_private', { targetId: 'agent-2', content: 'ping', waitReply: true }, { agentId: 'agent-1', workspacePath: '/workspace/demo' });
19
+ expect(args).toEqual({
20
+ agentId: 'agent-1',
21
+ workspacePath: '/workspace/demo',
22
+ targetId: 'agent-2',
23
+ content: 'ping',
24
+ requireReply: true,
25
+ });
26
+ });
27
+ });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * CC-Switch SDK 包装层
3
+ *
4
+ * 负责创建 SDK 实例并注入 adapters。
5
+ * adapters 实现在 src/adapters/cc-switch/ 中。
6
+ */
7
+ import { CcSwitchSdk, AiConfigService, type AppFlags } from '@cc-switch/sdk';
8
+ import { InstanceService } from './instance-service.js';
9
+ import type { CcSwitchAppPaths, AdapterResult, SdkApps } from '../types.js';
10
+ export declare function getCcSwitchAppPaths(): CcSwitchAppPaths;
11
+ export declare function getCcSwitchSdk(agentId: string): CcSwitchSdk;
12
+ export declare function loadCcSwitchSdk(agentId: string): Promise<CcSwitchSdk>;
13
+ export declare function getAiConfigService(): AiConfigService;
14
+ export declare function getInstanceService(agentId: string, workspacePath: string): InstanceService;
15
+ export declare function runCcSwitchAdapter(action: string, agentId: string, payload: unknown, sdk?: CcSwitchSdk): Promise<AdapterResult>;
16
+ export declare function toSdkAppsFromEnabledTools(enabledTools: string[]): AppFlags;
17
+ export declare function toSdkApps(apps: SdkApps | undefined): AppFlags;
18
+ //# sourceMappingURL=cc-switch-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-switch-sdk.d.ts","sourceRoot":"","sources":["../../src/services/cc-switch-sdk.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAc,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAWzF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE5E,wBAAgB,mBAAmB,IAAI,gBAAgB,CAWtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA8B3D;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAI3E;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAOpD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,eAAe,CAI1F;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,QAAQ,CAW1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAmB7D"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * CC-Switch SDK 包装层
3
+ *
4
+ * 负责创建 SDK 实例并注入 adapters。
5
+ * adapters 实现在 src/adapters/cc-switch/ 中。
6
+ */
7
+ import path from 'node:path';
8
+ import { CcSwitchSdk, AiConfigService } from '@cc-switch/sdk';
9
+ import { createMcpAdapters, createSkillAdapters } from '../adapters/cc-switch/index.js';
10
+ import { getCodexConfigFile, getRuntimeHomeDir, getClaudeConfigFile, getClaudeSkillsDir, getOpencodeConfigFile, getOpencodeSkillsDir, } from '../config.js';
11
+ import { getAgentInitRoot } from './instance-state.js';
12
+ import { InstanceService } from './instance-service.js';
13
+ export function getCcSwitchAppPaths() {
14
+ const runtimeHome = path.resolve(getRuntimeHomeDir());
15
+ return {
16
+ runtimeHome,
17
+ claudeConfigFile: path.resolve(getClaudeConfigFile(runtimeHome)),
18
+ claudeSkillsDir: path.resolve(getClaudeSkillsDir(runtimeHome)),
19
+ codexConfigFile: path.resolve(getCodexConfigFile(runtimeHome)),
20
+ opencodeConfigFile: path.resolve(getOpencodeConfigFile(runtimeHome)),
21
+ opencodeSkillsDir: path.resolve(getOpencodeSkillsDir(runtimeHome)),
22
+ };
23
+ }
24
+ export function getCcSwitchSdk(agentId) {
25
+ const initRoot = getAgentInitRoot(agentId);
26
+ const sdkRoot = path.join(initRoot, 'cc-switch-sdk');
27
+ const appPaths = getCcSwitchAppPaths();
28
+ const paths = {
29
+ stateFile: path.join(sdkRoot, 'state.json'),
30
+ backupDir: path.join(sdkRoot, 'backups'),
31
+ claudeConfigFile: appPaths.claudeConfigFile,
32
+ claudeSkillsDir: appPaths.claudeSkillsDir,
33
+ claudecodeConfigFile: appPaths.claudeConfigFile, // 使用 claude 路径
34
+ claudecodeSkillsDir: appPaths.claudeSkillsDir, // 使用 claude 路径
35
+ codexConfigFile: appPaths.codexConfigFile,
36
+ opencodeConfigFile: appPaths.opencodeConfigFile,
37
+ opencodeSkillsDir: appPaths.opencodeSkillsDir,
38
+ ssotSkillsDir: path.join(sdkRoot, 'skills'),
39
+ };
40
+ // 创建 adapters 实例并注入
41
+ const mcpAdapters = createMcpAdapters(paths);
42
+ const skillAdapters = createSkillAdapters(paths);
43
+ return new CcSwitchSdk({
44
+ rootDir: sdkRoot,
45
+ paths,
46
+ adapters: {
47
+ mcp: mcpAdapters,
48
+ skill: skillAdapters,
49
+ },
50
+ });
51
+ }
52
+ export async function loadCcSwitchSdk(agentId) {
53
+ const sdk = getCcSwitchSdk(agentId);
54
+ await sdk.load();
55
+ return sdk;
56
+ }
57
+ export function getAiConfigService() {
58
+ const appPaths = getCcSwitchAppPaths();
59
+ return new AiConfigService({
60
+ claudecodeConfigFile: appPaths.claudeConfigFile,
61
+ codexConfigFile: appPaths.codexConfigFile,
62
+ opencodeConfigFile: appPaths.opencodeConfigFile,
63
+ });
64
+ }
65
+ export function getInstanceService(agentId, workspacePath) {
66
+ const sdk = getCcSwitchSdk(agentId);
67
+ const initRoot = getAgentInitRoot(agentId);
68
+ return new InstanceService(sdk, initRoot, workspacePath);
69
+ }
70
+ export async function runCcSwitchAdapter(action, agentId, payload, sdk) {
71
+ const activeSdk = sdk || (await loadCcSwitchSdk(agentId));
72
+ const appPaths = getCcSwitchAppPaths();
73
+ return {
74
+ ok: true,
75
+ adapter: 'cc-switch-sdk',
76
+ action,
77
+ agentId: String(agentId),
78
+ payload,
79
+ paths: appPaths,
80
+ snapshot: {
81
+ skills: activeSdk.getAllSkills().length,
82
+ mcpServers: activeSdk.getAllMcpServers().length,
83
+ },
84
+ };
85
+ }
86
+ export function toSdkAppsFromEnabledTools(enabledTools) {
87
+ const tools = Array.isArray(enabledTools) ? enabledTools : [];
88
+ const includes = (name) => tools.includes(name);
89
+ return {
90
+ claude: includes('claude'),
91
+ claudecode: includes('claudecode'),
92
+ codex: includes('codex'),
93
+ gemini: includes('gemini'),
94
+ opencode: includes('opencode'),
95
+ openclaw: includes('openclaw'),
96
+ };
97
+ }
98
+ export function toSdkApps(apps) {
99
+ if (!apps) {
100
+ return {
101
+ claude: false,
102
+ claudecode: false,
103
+ codex: false,
104
+ gemini: false,
105
+ opencode: false,
106
+ openclaw: false,
107
+ };
108
+ }
109
+ return {
110
+ claude: Boolean(apps.claude),
111
+ claudecode: false,
112
+ codex: Boolean(apps.codex),
113
+ gemini: Boolean(apps.gemini),
114
+ opencode: Boolean(apps.opencode),
115
+ openclaw: Boolean(apps.openclaw),
116
+ };
117
+ }