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,94 @@
1
+ /**
2
+ * Bridge 实例自动注册服务
3
+ *
4
+ * 实现 Bridge 实例启动后自动向调度中心注册的功能
5
+ *
6
+ * 配置来源(优先级从高到低):
7
+ * 1. 环境变量
8
+ * 2. 用户目录下的 .aws-bridge/config.json 文件
9
+ */
10
+ /**
11
+ * 自动注册配置
12
+ */
13
+ interface AutoRegisterConfig {
14
+ /** 是否启用自动注册 */
15
+ enabled: boolean;
16
+ /** 租户 ID(可选,如果提供 userKey 则可自动推导) */
17
+ tenantId?: string;
18
+ /** 用户 API Key(必填,用于验证身份和自动推导租户) */
19
+ userKey: string;
20
+ /** 实例名称(默认使用主机名) */
21
+ instanceName?: string;
22
+ /** 项目名称 */
23
+ projectName?: string;
24
+ /** 角色名称 */
25
+ roleName?: string;
26
+ /** 工作空间路径 */
27
+ workspacePath?: string;
28
+ /** 虚拟 IP(EasyTier) */
29
+ virtualIp?: string;
30
+ /** 注册重试次数 */
31
+ maxRetries?: number;
32
+ /** 注册重试间隔(毫秒) */
33
+ retryInterval?: number;
34
+ }
35
+ /**
36
+ * 加载自动注册配置
37
+ *
38
+ * 优先级:环境变量 > 配置文件 > 默认值
39
+ *
40
+ * 如果没有配置文件且没有环境变量,则不启用自动注册
41
+ */
42
+ export declare function loadConfig(): AutoRegisterConfig;
43
+ /**
44
+ * 自动注册主函数
45
+ *
46
+ * 带重试机制的注册逻辑
47
+ *
48
+ * 配置来源(优先级从高到低):
49
+ * 1. 传入的 customConfig
50
+ * 2. 环境变量
51
+ * 3. ~/.aws-bridge/config.json 配置文件
52
+ * 4. 默认值
53
+ */
54
+ export declare function autoRegister(customConfig?: Partial<AutoRegisterConfig>): Promise<boolean>;
55
+ /**
56
+ * 注销实例
57
+ */
58
+ export declare function unregister(): Promise<boolean>;
59
+ /**
60
+ * 获取注册状态
61
+ */
62
+ export declare function getRegistrationState(): {
63
+ registered: boolean;
64
+ instanceId?: string;
65
+ lastAttempt?: Date;
66
+ error?: string;
67
+ };
68
+ /**
69
+ * 检查是否已注册
70
+ */
71
+ export declare function isRegistered(): boolean;
72
+ /**
73
+ * 获取实例 ID
74
+ */
75
+ export declare function getInstanceId(): string | undefined;
76
+ /**
77
+ * ★★★ Bridge 重启清理
78
+ *
79
+ * 当 aws-runtime-bridge 重启时调用,通知调度中心将该 bridge 关联的所有 Agent 设置为离线。
80
+ *
81
+ * 清理逻辑:
82
+ * 1. 调用调度中心的 /api/instances/bridge-restart-cleanup 接口
83
+ * 2. 传入 instanceId 或 runtimeBridgeBaseUrl
84
+ * 3. 调度中心会将关联的 Agent 设置为 is_online=false, runtime_status='stopped'
85
+ *
86
+ * @returns 清理结果
87
+ */
88
+ export declare function bridgeRestartCleanup(): Promise<{
89
+ success: boolean;
90
+ agentCount?: number;
91
+ error?: string;
92
+ }>;
93
+ export {};
94
+ //# sourceMappingURL=auto-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-register.d.ts","sourceRoot":"","sources":["../../src/services/auto-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoCH;;GAEG;AACH,UAAU,kBAAkB;IAC1B,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAwJD;;;;;;GAMG;AACH,wBAAgB,UAAU,IAAI,kBAAkB,CAuC/C;AA2KD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAyE/F;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAuBnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB;gBA5dtB,OAAO;iBACN,MAAM;kBACL,IAAI;YACV,MAAM;EA2df;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA2D/G"}
@@ -0,0 +1,510 @@
1
+ /**
2
+ * Bridge 实例自动注册服务
3
+ *
4
+ * 实现 Bridge 实例启动后自动向调度中心注册的功能
5
+ *
6
+ * 配置来源(优先级从高到低):
7
+ * 1. 环境变量
8
+ * 2. 用户目录下的 .aws-bridge/config.json 文件
9
+ */
10
+ import axios from 'axios';
11
+ import os from 'node:os';
12
+ import path from 'node:path';
13
+ import fs from 'node:fs';
14
+ import { logger } from '../utils/logger.js';
15
+ import { schedulerBaseUrl, runtimeToken } from '../config.js';
16
+ // 默认配置
17
+ const DEFAULT_CONFIG = {
18
+ enabled: false,
19
+ maxRetries: 5,
20
+ retryInterval: 5000,
21
+ };
22
+ let registrationState = {
23
+ registered: false,
24
+ };
25
+ /**
26
+ * 配置文件路径
27
+ */
28
+ function getConfigFilePath() {
29
+ const homeDir = os.homedir();
30
+ return path.join(homeDir, '.aws-bridge', 'config.json');
31
+ }
32
+ /**
33
+ * 确保配置文件存在,如果不存在则创建空配置文件
34
+ */
35
+ function ensureConfigFile() {
36
+ const configPath = getConfigFilePath();
37
+ const configDir = path.dirname(configPath);
38
+ try {
39
+ // 检查配置文件是否已存在
40
+ if (fs.existsSync(configPath)) {
41
+ return true;
42
+ }
43
+ // 创建配置目录
44
+ if (!fs.existsSync(configDir)) {
45
+ fs.mkdirSync(configDir, { recursive: true });
46
+ }
47
+ // 创建空配置文件
48
+ const emptyConfig = {};
49
+ fs.writeFileSync(configPath, JSON.stringify(emptyConfig, null, 2), 'utf-8');
50
+ logger.info(`[AutoRegister] 已创建配置文件: ${configPath}`);
51
+ logger.info(`[AutoRegister] 要启用自动注册,请编辑配置文件设置 tenantId 和 userKey`);
52
+ return true;
53
+ }
54
+ catch (error) {
55
+ const err = error;
56
+ logger.warn(`[AutoRegister] 创建配置文件失败: ${configPath}, error: ${err.message}`);
57
+ return false;
58
+ }
59
+ }
60
+ /**
61
+ * 从配置文件加载配置
62
+ *
63
+ * 配置文件位置:~/.aws-bridge/config.json
64
+ *
65
+ * 配置文件格式:
66
+ * {
67
+ * "userKey": "aws_live_xxx", // 必填,用户 API Key
68
+ * "tenantId": "xxx", // 可选,租户 ID(不填则自动推导)
69
+ * "instanceName": "my-bridge", // 可选,默认使用主机名
70
+ * "projectName": "default", // 可选
71
+ * "roleName": "Bridge", // 可选
72
+ * "workspacePath": "/path/to/workspace", // 可选
73
+ * "virtualIp": "10.144.144.1", // 可选
74
+ * "maxRetries": 5, // 可选
75
+ * "retryInterval": 5000 // 可选
76
+ * }
77
+ */
78
+ function loadConfigFromFile() {
79
+ // 确保配置文件存在(如果不存在则创建模板)
80
+ ensureConfigFile();
81
+ const configPath = getConfigFilePath();
82
+ try {
83
+ if (!fs.existsSync(configPath)) {
84
+ logger.debug(`[AutoRegister] 配置文件不存在: ${configPath}`);
85
+ return null;
86
+ }
87
+ const content = fs.readFileSync(configPath, 'utf-8');
88
+ const config = JSON.parse(content);
89
+ logger.info(`[AutoRegister] 从配置文件加载配置: ${configPath}`);
90
+ return {
91
+ tenantId: config.tenantId,
92
+ userKey: config.userKey,
93
+ instanceName: config.instanceName,
94
+ projectName: config.projectName,
95
+ roleName: config.roleName,
96
+ workspacePath: config.workspacePath,
97
+ virtualIp: config.virtualIp,
98
+ maxRetries: config.maxRetries,
99
+ retryInterval: config.retryInterval,
100
+ };
101
+ }
102
+ catch (error) {
103
+ const err = error;
104
+ logger.warn(`[AutoRegister] 读取配置文件失败: ${configPath}, error: ${err.message}`);
105
+ return null;
106
+ }
107
+ }
108
+ /**
109
+ * 从环境变量加载配置
110
+ */
111
+ function loadConfigFromEnv() {
112
+ const envConfig = {};
113
+ if (process.env.AWS_AUTO_REGISTER === 'true') {
114
+ envConfig.enabled = true;
115
+ }
116
+ if (process.env.AWS_TENANT_ID) {
117
+ envConfig.tenantId = process.env.AWS_TENANT_ID;
118
+ }
119
+ if (process.env.AWS_USER_KEY) {
120
+ envConfig.userKey = process.env.AWS_USER_KEY;
121
+ }
122
+ if (process.env.AWS_INSTANCE_NAME) {
123
+ envConfig.instanceName = process.env.AWS_INSTANCE_NAME;
124
+ }
125
+ if (process.env.AWS_PROJECT_NAME) {
126
+ envConfig.projectName = process.env.AWS_PROJECT_NAME;
127
+ }
128
+ if (process.env.AWS_ROLE_NAME) {
129
+ envConfig.roleName = process.env.AWS_ROLE_NAME;
130
+ }
131
+ if (process.env.AWS_WORKSPACE_PATH) {
132
+ envConfig.workspacePath = process.env.AWS_WORKSPACE_PATH;
133
+ }
134
+ if (process.env.AWS_VIRTUAL_IP) {
135
+ envConfig.virtualIp = process.env.AWS_VIRTUAL_IP;
136
+ }
137
+ if (process.env.AWS_REGISTER_MAX_RETRIES) {
138
+ envConfig.maxRetries = parseInt(process.env.AWS_REGISTER_MAX_RETRIES, 10);
139
+ }
140
+ if (process.env.AWS_REGISTER_RETRY_INTERVAL) {
141
+ envConfig.retryInterval = parseInt(process.env.AWS_REGISTER_RETRY_INTERVAL, 10);
142
+ }
143
+ return envConfig;
144
+ }
145
+ /**
146
+ * 加载自动注册配置
147
+ *
148
+ * 优先级:环境变量 > 配置文件 > 默认值
149
+ *
150
+ * 如果没有配置文件且没有环境变量,则不启用自动注册
151
+ */
152
+ export function loadConfig() {
153
+ // 1. 尝试从配置文件加载
154
+ const fileConfig = loadConfigFromFile();
155
+ // 2. 从环境变量加载(可覆盖配置文件)
156
+ const envConfig = loadConfigFromEnv();
157
+ // 3. 合并配置:环境变量优先级最高
158
+ const merged = {
159
+ ...DEFAULT_CONFIG,
160
+ ...(fileConfig || {}),
161
+ ...envConfig,
162
+ };
163
+ // 4. 设置默认实例名(如果未配置)
164
+ const instanceName = merged.instanceName || os.hostname();
165
+ // 5. 判断是否启用
166
+ // 如果环境变量明确设置了 AWS_AUTO_REGISTER,使用环境变量的值
167
+ // 否则,如果配置文件存在(无论是否有内容),则启用自动注册
168
+ let enabled = false;
169
+ if (process.env.AWS_AUTO_REGISTER !== undefined) {
170
+ enabled = process.env.AWS_AUTO_REGISTER === 'true';
171
+ }
172
+ else if (fileConfig) {
173
+ enabled = true;
174
+ }
175
+ return {
176
+ enabled,
177
+ tenantId: merged.tenantId || '', // 保持为空字符串,后续会通过userKey自动推导
178
+ userKey: merged.userKey || '',
179
+ instanceName,
180
+ projectName: merged.projectName,
181
+ roleName: merged.roleName,
182
+ workspacePath: merged.workspacePath,
183
+ virtualIp: merged.virtualIp,
184
+ maxRetries: merged.maxRetries,
185
+ retryInterval: merged.retryInterval,
186
+ };
187
+ }
188
+ /**
189
+ * 获取本机所有非内部 IPv4 地址
190
+ */
191
+ function getAllLocalIpAddresses() {
192
+ const interfaces = os.networkInterfaces();
193
+ const addresses = [];
194
+ for (const name of Object.keys(interfaces)) {
195
+ const nets = interfaces[name];
196
+ if (!nets)
197
+ continue;
198
+ for (const net of nets) {
199
+ // 跳过内部和非 IPv4 地址
200
+ if (net.family === 'IPv4' && !net.internal) {
201
+ addresses.push({
202
+ address: net.address,
203
+ netmask: net.netmask,
204
+ name: name,
205
+ });
206
+ }
207
+ }
208
+ }
209
+ return addresses;
210
+ }
211
+ /**
212
+ * 将 IP 地址转换为整数
213
+ */
214
+ function ipToInt(ip) {
215
+ const parts = ip.split('.').map(Number);
216
+ return (parts[0] << 24) + (parts[1] << 16) + (parts[2] << 8) + parts[3];
217
+ }
218
+ /**
219
+ * 判断两个 IP 是否在同一子网
220
+ */
221
+ function isSameSubnet(ip1, ip2, netmask) {
222
+ const ip1Int = ipToInt(ip1);
223
+ const ip2Int = ipToInt(ip2);
224
+ const maskInt = ipToInt(netmask);
225
+ return (ip1Int & maskInt) === (ip2Int & maskInt);
226
+ }
227
+ /**
228
+ * 从 URL 中提取 IP 地址
229
+ */
230
+ function extractIpFromUrl(url) {
231
+ try {
232
+ const urlObj = new URL(url);
233
+ // 如果是主机名,尝试解析
234
+ if (urlObj.hostname === 'localhost' || urlObj.hostname === '127.0.0.1') {
235
+ return '127.0.0.1';
236
+ }
237
+ // 检查是否是有效的 IP 地址
238
+ const ipPattern = /^(\d{1,3}\.){3}\d{1,3}$/;
239
+ if (ipPattern.test(urlObj.hostname)) {
240
+ return urlObj.hostname;
241
+ }
242
+ // 对于主机名,返回 null(无法直接判断子网)
243
+ return null;
244
+ }
245
+ catch {
246
+ return null;
247
+ }
248
+ }
249
+ /**
250
+ * 获取与调度中心同局域网的本机 IP 地址
251
+ *
252
+ * 策略:
253
+ * 1. 解析调度中心 URL 获取其 IP
254
+ * 2. 遍历本机网卡,找到与调度中心同子网的 IP
255
+ * 3. 如果找不到同子网 IP,返回第一个非内部 IP
256
+ * 4. 如果没有任何非内部 IP,返回 127.0.0.1
257
+ */
258
+ function getPreferredIpAddress(schedulerUrl) {
259
+ const allIps = getAllLocalIpAddresses();
260
+ if (allIps.length === 0) {
261
+ logger.warn('[AutoRegister] 未找到任何非内部 IP 地址,使用 127.0.0.1');
262
+ return '127.0.0.1';
263
+ }
264
+ // 尝试从调度中心 URL 提取 IP
265
+ const schedulerIp = extractIpFromUrl(schedulerUrl);
266
+ if (schedulerIp) {
267
+ // 查找与调度中心同子网的 IP
268
+ for (const ipInfo of allIps) {
269
+ if (isSameSubnet(ipInfo.address, schedulerIp, ipInfo.netmask)) {
270
+ logger.info(`[AutoRegister] 找到与调度中心同子网的 IP: ${ipInfo.address} (网卡: ${ipInfo.name}, 子网掩码: ${ipInfo.netmask})`);
271
+ return ipInfo.address;
272
+ }
273
+ }
274
+ logger.warn(`[AutoRegister] 未找到与调度中心 (${schedulerIp}) 同子网的 IP,使用第一个可用 IP`);
275
+ }
276
+ else {
277
+ logger.info('[AutoRegister] 无法解析调度中心 IP,使用第一个可用 IP');
278
+ }
279
+ // 回退:返回第一个非内部 IP
280
+ return allIps[0].address;
281
+ }
282
+ /**
283
+ * 获取本机 IP 地址(兼容旧接口)
284
+ */
285
+ function getLocalIpAddress() {
286
+ return getPreferredIpAddress(schedulerBaseUrl);
287
+ }
288
+ /**
289
+ * 执行注册请求
290
+ */
291
+ async function doRegister(config) {
292
+ const instanceName = config.instanceName || os.hostname();
293
+ const localIp = getLocalIpAddress();
294
+ const port = process.env.AWS_RUNTIME_BRIDGE_PORT || 18081;
295
+ const request = {
296
+ tenantId: config.tenantId,
297
+ userKey: config.userKey,
298
+ instanceName,
299
+ hostname: os.hostname(),
300
+ virtualIp: config.virtualIp,
301
+ runtimeBridgeBaseUrl: `http://${config.virtualIp || localIp}:${port}`,
302
+ workspacePath: config.workspacePath,
303
+ projectName: config.projectName,
304
+ roleName: config.roleName,
305
+ };
306
+ logger.info(`[AutoRegister] 正在注册实例: ${instanceName}`);
307
+ logger.info(`[AutoRegister] 调度中心: ${schedulerBaseUrl}`);
308
+ logger.info(`[AutoRegister] 用户 Key: ${config.userKey ? '****' + config.userKey.slice(-4) : '(未设置)'}`);
309
+ logger.info(`[AutoRegister] 租户 ID: ${config.tenantId || '(自动推导)'}`);
310
+ const response = await axios.post(`${schedulerBaseUrl}/api/instances/register`, request, {
311
+ headers: {
312
+ 'Content-Type': 'application/json',
313
+ 'X-Runtime-Token': runtimeToken,
314
+ },
315
+ timeout: 10000,
316
+ });
317
+ return response.data;
318
+ }
319
+ /**
320
+ * 执行注销请求
321
+ */
322
+ async function doUnregister(instanceId) {
323
+ const response = await axios.post(`${schedulerBaseUrl}/api/instances/unregister`, { instanceId }, {
324
+ headers: {
325
+ 'Content-Type': 'application/json',
326
+ 'X-Runtime-Token': runtimeToken,
327
+ },
328
+ timeout: 10000,
329
+ });
330
+ return response.data;
331
+ }
332
+ /**
333
+ * 自动注册主函数
334
+ *
335
+ * 带重试机制的注册逻辑
336
+ *
337
+ * 配置来源(优先级从高到低):
338
+ * 1. 传入的 customConfig
339
+ * 2. 环境变量
340
+ * 3. ~/.aws-bridge/config.json 配置文件
341
+ * 4. 默认值
342
+ */
343
+ export async function autoRegister(customConfig) {
344
+ // 加载并合并配置
345
+ const config = {
346
+ ...loadConfig(),
347
+ ...customConfig,
348
+ };
349
+ // 检查是否启用
350
+ if (!config.enabled) {
351
+ logger.info('[AutoRegister] 自动注册未启用');
352
+ logger.info('[AutoRegister] 要启用自动注册,请创建配置文件 ~/.aws-bridge/config.json 或设置环境变量 AWS_AUTO_REGISTER=true');
353
+ return false;
354
+ }
355
+ // 验证必填字段(userKey 为必填,tenantId 现在可选)
356
+ if (!config.userKey) {
357
+ logger.error('[AutoRegister] 缺少用户 Key(在配置文件中设置 userKey 或设置环境变量 AWS_USER_KEY)');
358
+ return false;
359
+ }
360
+ // tenantId 现在是可选的,如果没有提供,后端会根据 userKey 自动推导
361
+ const maxRetries = config.maxRetries || 5;
362
+ const retryInterval = config.retryInterval || 5000;
363
+ // 重试循环
364
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
365
+ try {
366
+ registrationState.lastAttempt = new Date();
367
+ const response = await doRegister(config);
368
+ if (response.success) {
369
+ registrationState.registered = true;
370
+ registrationState.instanceId = response.instanceId;
371
+ registrationState.error = undefined;
372
+ logger.info(`[AutoRegister] ✓ 注册成功!`);
373
+ logger.info(`[AutoRegister] 实例 ID: ${response.instanceId}`);
374
+ logger.info(`[AutoRegister] 消息: ${response.message}`);
375
+ logger.info(`[AutoRegister] 更新: ${response.isUpdate ? '是' : '否'}`);
376
+ return true;
377
+ }
378
+ else {
379
+ logger.warn(`[AutoRegister] 注册失败: ${response.message}`);
380
+ registrationState.error = response.message;
381
+ }
382
+ }
383
+ catch (error) {
384
+ const err = error;
385
+ const message = err.response?.data ? JSON.stringify(err.response.data) : err.message;
386
+ logger.error(`[AutoRegister] 注册请求失败 (尝试 ${attempt}/${maxRetries}): ${message}`);
387
+ registrationState.error = message;
388
+ }
389
+ // 如果不是最后一次尝试,等待后重试
390
+ if (attempt < maxRetries) {
391
+ logger.info(`[AutoRegister] ${retryInterval / 1000} 秒后重试...`);
392
+ await new Promise(resolve => setTimeout(resolve, retryInterval));
393
+ }
394
+ }
395
+ logger.error(`[AutoRegister] ✗ 注册失败,已达最大重试次数`);
396
+ logger.error(`[AutoRegister] ========================================`);
397
+ logger.error(`[AutoRegister] 自动注册已启用但注册失败,实例无法正常工作`);
398
+ logger.error(`[AutoRegister] 请检查以下配置:`);
399
+ logger.error(`[AutoRegister] - 用户 Key (userKey): ${config.userKey ? '****' + config.userKey.slice(-4) : '(未设置)'}`);
400
+ logger.error(`[AutoRegister] - 租户 ID (tenantId): ${config.tenantId || '(可选,将自动推导)'}`);
401
+ logger.error(`[AutoRegister] - 实例名 (instanceName): ${config.instanceName || '(使用主机名)'}`);
402
+ logger.error(`[AutoRegister] - 调度中心地址: ${schedulerBaseUrl}`);
403
+ logger.error(`[AutoRegister] - 最后错误: ${registrationState.error || '未知'}`);
404
+ logger.error(`[AutoRegister] ========================================`);
405
+ logger.error(`[AutoRegister] 配置来源:~/.aws-bridge/config.json 或环境变量`);
406
+ return false;
407
+ }
408
+ /**
409
+ * 注销实例
410
+ */
411
+ export async function unregister() {
412
+ if (!registrationState.registered || !registrationState.instanceId) {
413
+ logger.info('[AutoRegister] 实例未注册,无需注销');
414
+ return true;
415
+ }
416
+ try {
417
+ const response = await doUnregister(registrationState.instanceId);
418
+ if (response.success) {
419
+ logger.info(`[AutoRegister] ✓ 注销成功: ${registrationState.instanceId}`);
420
+ registrationState.registered = false;
421
+ registrationState.instanceId = undefined;
422
+ return true;
423
+ }
424
+ else {
425
+ logger.warn(`[AutoRegister] 注销失败: ${response.message}`);
426
+ return false;
427
+ }
428
+ }
429
+ catch (error) {
430
+ const err = error;
431
+ logger.error(`[AutoRegister] 注销请求失败: ${err.message}`);
432
+ return false;
433
+ }
434
+ }
435
+ /**
436
+ * 获取注册状态
437
+ */
438
+ export function getRegistrationState() {
439
+ return { ...registrationState };
440
+ }
441
+ /**
442
+ * 检查是否已注册
443
+ */
444
+ export function isRegistered() {
445
+ return registrationState.registered;
446
+ }
447
+ /**
448
+ * 获取实例 ID
449
+ */
450
+ export function getInstanceId() {
451
+ return registrationState.instanceId;
452
+ }
453
+ /**
454
+ * ★★★ Bridge 重启清理
455
+ *
456
+ * 当 aws-runtime-bridge 重启时调用,通知调度中心将该 bridge 关联的所有 Agent 设置为离线。
457
+ *
458
+ * 清理逻辑:
459
+ * 1. 调用调度中心的 /api/instances/bridge-restart-cleanup 接口
460
+ * 2. 传入 instanceId 或 runtimeBridgeBaseUrl
461
+ * 3. 调度中心会将关联的 Agent 设置为 is_online=false, runtime_status='stopped'
462
+ *
463
+ * @returns 清理结果
464
+ */
465
+ export async function bridgeRestartCleanup() {
466
+ const config = loadConfig();
467
+ const instanceId = registrationState.instanceId;
468
+ // 构建清理请求
469
+ const requestBody = {};
470
+ if (instanceId) {
471
+ requestBody.instanceId = instanceId;
472
+ }
473
+ // 如果有配置,也传入 runtimeBridgeBaseUrl
474
+ if (config.enabled) {
475
+ const localIp = getLocalIpAddress();
476
+ const port = process.env.AWS_RUNTIME_BRIDGE_PORT || 18081;
477
+ requestBody.runtimeBridgeBaseUrl = `http://${config.virtualIp || localIp}:${port}`;
478
+ }
479
+ if (!requestBody.instanceId && !requestBody.runtimeBridgeBaseUrl) {
480
+ logger.info('[AutoRegister] Bridge 重启清理:没有 instanceId 或 runtimeBridgeBaseUrl,跳过清理');
481
+ return { success: true, agentCount: 0 };
482
+ }
483
+ try {
484
+ logger.info(`[AutoRegister] Bridge 重启清理:正在通知调度中心...`);
485
+ logger.info(`[AutoRegister] instanceId: ${requestBody.instanceId || '(无)'}`);
486
+ logger.info(`[AutoRegister] runtimeBridgeBaseUrl: ${requestBody.runtimeBridgeBaseUrl || '(无)'}`);
487
+ const response = await axios.post(`${schedulerBaseUrl}/api/instances/bridge-restart-cleanup`, requestBody, {
488
+ headers: {
489
+ 'Content-Type': 'application/json',
490
+ 'X-Runtime-Token': runtimeToken,
491
+ },
492
+ timeout: 10000,
493
+ });
494
+ if (response.data.success) {
495
+ logger.info(`[AutoRegister] ✓ Bridge 重启清理成功:${response.data.message}`);
496
+ logger.info(`[AutoRegister] 清理了 ${response.data.agentCount || 0} 个 Agent`);
497
+ return { success: true, agentCount: response.data.agentCount || 0 };
498
+ }
499
+ else {
500
+ logger.warn(`[AutoRegister] Bridge 重启清理失败:${response.data.message}`);
501
+ return { success: false, error: response.data.message };
502
+ }
503
+ }
504
+ catch (error) {
505
+ const err = error;
506
+ const message = err.response?.data ? JSON.stringify(err.response.data) : err.message;
507
+ logger.warn(`[AutoRegister] Bridge 重启清理请求失败:${message}`);
508
+ return { success: false, error: message };
509
+ }
510
+ }
@@ -0,0 +1,26 @@
1
+ export declare const AWS_MCP_SERVER_NAME = "aws-mcp";
2
+ export interface AwsMcpServerConfigInput {
3
+ agentId: string;
4
+ workspacePath: string;
5
+ }
6
+ export interface AwsMcpCommandSpec {
7
+ command: string;
8
+ args: string[];
9
+ }
10
+ export interface AwsMcpServerConfig extends AwsMcpCommandSpec {
11
+ env: Record<string, string>;
12
+ }
13
+ export interface ResolveAwsClientAgentMcpCommandOptions {
14
+ exists?: (filePath: string) => boolean;
15
+ release?: () => string | null;
16
+ }
17
+ export interface AwsMcpPreparedInfo extends AwsMcpCommandSpec {
18
+ source: 'override' | 'bundled' | 'global';
19
+ }
20
+ export declare function getReleasedMcpDistPath(): string;
21
+ export declare function releaseBundledAwsClientAgentMcp(): string | null;
22
+ export declare function resolveAwsClientAgentMcpCommand(options?: ResolveAwsClientAgentMcpCommandOptions): AwsMcpPreparedInfo;
23
+ export declare function getAwsClientAgentMcpPreparedInfo(options?: ResolveAwsClientAgentMcpCommandOptions): AwsMcpPreparedInfo;
24
+ export declare function buildAwsMcpServerConfig(input: AwsMcpServerConfigInput): AwsMcpServerConfig;
25
+ export declare function ensureAwsClientAgentMcpReleased(): void;
26
+ //# sourceMappingURL=aws-client-agent-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-client-agent-mcp.d.ts","sourceRoot":"","sources":["../../src/services/aws-client-agent-mcp.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAqB7C,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,sCAAsC;IACrD,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC3C;AAeD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAMD,wBAAgB,+BAA+B,IAAI,MAAM,GAAG,IAAI,CAoB/D;AA6CD,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,sCAA2C,GAAG,kBAAkB,CAExH;AAED,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,sCAA2C,GAAG,kBAAkB,CAuBzH;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAe1F;AAED,wBAAgB,+BAA+B,IAAI,IAAI,CAUtD"}