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,278 @@
1
+ /**
2
+ * Provider Adapter 抽象层类型定义
3
+ * SDK 架构核心 —— 统一事件流接口
4
+ *
5
+ * 参考自 SpectrAI 项目的 adapter 设计,用于支持多种 AI Provider
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ /**
9
+ * 已知的 MCP 工具名映射表
10
+ * 用于识别 MCP 工具并确定其来源 server
11
+ *
12
+ * 格式: { 工具名: MCP server 名称 }
13
+ */
14
+ const KNOWN_MCP_TOOLS = {
15
+ // aws-mcp 工具
16
+ 'get_colleague': 'aws-mcp',
17
+ 'get_group_rooms': 'aws-mcp',
18
+ 'get_profile': 'aws-mcp',
19
+ 'get_status': 'aws-mcp',
20
+ 'hire_colleague': 'aws-mcp',
21
+ 'hire_colleagues_batch': 'aws-mcp',
22
+ 'send_group': 'aws-mcp',
23
+ 'send_private': 'aws-mcp',
24
+ 'poll_message': 'aws-mcp',
25
+ 'get_message': 'aws-mcp',
26
+ 'get_dm_history': 'aws-mcp',
27
+ 'get_group_history': 'aws-mcp',
28
+ 'my_task': 'aws-mcp',
29
+ 'start_task': 'aws-mcp',
30
+ 'submit_task_result': 'aws-mcp',
31
+ 'reject_task': 'aws-mcp',
32
+ 'terminate_task': 'aws-mcp',
33
+ };
34
+ /**
35
+ * 根据工具名称获取动作类型信息
36
+ * @param toolName 工具名称
37
+ * @param toolInput 工具输入参数
38
+ * @param metadata SDK 提供的元数据(可能包含 MCP server 信息)
39
+ */
40
+ export function getToolActionInfo(toolName, toolInput, metadata) {
41
+ if (!toolName) {
42
+ return { actionType: 'other', actionLabel: '调用工具' };
43
+ }
44
+ const name = toolName.toLowerCase();
45
+ const normalizedName = name.replace(/[_-]/g, '');
46
+ const semanticToolName = name.startsWith('mcp__')
47
+ ? name.split('__').slice(2).join('__')
48
+ : name.includes('-mcp__')
49
+ ? name.slice(name.indexOf('-mcp__') + 6)
50
+ : name;
51
+ const normalizedSemanticToolName = semanticToolName.replace(/[_-]/g, '');
52
+ const normalizeSkillList = (value) => {
53
+ if (!Array.isArray(value)) {
54
+ return [];
55
+ }
56
+ return value
57
+ .map((item) => String(item ?? '').trim())
58
+ .filter((item) => item.length > 0);
59
+ };
60
+ const firstString = (...values) => {
61
+ for (const value of values) {
62
+ if (typeof value === 'string' && value.trim()) {
63
+ return value;
64
+ }
65
+ if (Array.isArray(value) && value.length > 0) {
66
+ const first = value[0];
67
+ if (typeof first === 'string' && first.trim()) {
68
+ return first;
69
+ }
70
+ }
71
+ }
72
+ return undefined;
73
+ };
74
+ const matchesToolName = (...toolNames) => {
75
+ const normalizedToolNames = toolNames.map((item) => item.replace(/[_-]/g, ''));
76
+ return normalizedToolNames.includes(normalizedName) || normalizedToolNames.includes(normalizedSemanticToolName);
77
+ };
78
+ // 调试日志:记录工具名
79
+ console.log(`[getToolActionInfo] toolName="${toolName}", name="${name}"`);
80
+ const loadSkills = normalizeSkillList(toolInput?.load_skills);
81
+ if (matchesToolName('poll_message')) {
82
+ return {
83
+ actionType: 'idle',
84
+ actionLabel: '空闲等待消息',
85
+ actionDetail: 'Agent 正在等待新消息',
86
+ };
87
+ }
88
+ if ((name === 'task' || name === 'task()') && loadSkills.length > 0) {
89
+ return {
90
+ actionType: 'skill',
91
+ actionLabel: '加载技能',
92
+ actionDetail: loadSkills.join(', '),
93
+ };
94
+ }
95
+ // Skill 调用
96
+ // 识别策略:
97
+ // 1. 工具名是 'skill' (官方 Skill 工具)
98
+ // 2. 工具名包含 'skill' 关键词(如 load_skill, skill-trigger 等)
99
+ // 3. 排除 mcp 工具(mcp__xxx__skill 格式是 MCP 工具,不是 Skill)
100
+ //
101
+ // 注意:SDK 发送的 tool_name 可能是 'Skill'(大写)或 'skill'(小写)
102
+ // 使用 toLowerCase() 统一处理
103
+ const isSkillTool = name === 'skill' ||
104
+ name === 'load_skill' ||
105
+ name === 'disclosecontext' ||
106
+ (name.includes('skill') && !name.startsWith('mcp__') && !name.includes('mcp_'));
107
+ console.log(`[getToolActionInfo] Skill detection: name="${name}", isSkillTool=${isSkillTool}`);
108
+ if (isSkillTool) {
109
+ // Skill 参数可能有多种格式:
110
+ // 1. { skill: "skillName" }
111
+ // 2. { name: "skillName" }
112
+ // 3. { args: { name: "skillName", ... } } // task() 格式
113
+ // 4. { load_skills: ["skill1", "skill2"] } // task() 加载技能格式
114
+ let skillName = '';
115
+ // 检查 load_skills 格式(task 工具)
116
+ if (Array.isArray(toolInput?.load_skills) && toolInput.load_skills.length > 0) {
117
+ skillName = toolInput.load_skills.join(', ');
118
+ }
119
+ // 检查 skill 参数
120
+ else if (typeof toolInput?.skill === 'string') {
121
+ skillName = toolInput.skill;
122
+ }
123
+ // 检查 name 参数
124
+ else if (typeof toolInput?.name === 'string') {
125
+ skillName = toolInput.name;
126
+ }
127
+ // 检查嵌套的 args.name
128
+ else if (toolInput?.args && typeof toolInput.args === 'object') {
129
+ const args = toolInput.args;
130
+ if (typeof args.name === 'string') {
131
+ skillName = args.name;
132
+ }
133
+ else if (typeof args.skill === 'string') {
134
+ skillName = args.skill;
135
+ }
136
+ }
137
+ console.log(`[getToolActionInfo] Detected Skill tool: skillName="${skillName}", toolInput=${JSON.stringify(toolInput)}`);
138
+ return { actionType: 'skill', actionLabel: '使用技能', actionDetail: skillName || undefined };
139
+ }
140
+ // 文件/命令工具即使走 MCP 命名,也优先按语义显示为读取/编辑/命令执行。
141
+ if (matchesToolName('edit', 'editfile', 'strreplace', 'editcode', 'apply_patch', 'multiedit', 'replace')) {
142
+ const filePath = firstString(toolInput?.file_path, toolInput?.filePath, toolInput?.path, toolInput?.target_file, toolInput?.targetFile);
143
+ return { actionType: 'edit_file', actionLabel: '编辑文件', actionDetail: filePath };
144
+ }
145
+ if (matchesToolName('write', 'writefile', 'fswrite')) {
146
+ const filePath = firstString(toolInput?.file_path, toolInput?.filePath, toolInput?.path, toolInput?.target_file, toolInput?.targetFile);
147
+ return { actionType: 'write_file', actionLabel: '写入文件', actionDetail: filePath };
148
+ }
149
+ if (matchesToolName('read', 'readfile', 'readcode', 'readmultiplefiles', 'read_file')) {
150
+ if (Array.isArray(toolInput?.paths)) {
151
+ return { actionType: 'read_file', actionLabel: '读取文件', actionDetail: `${toolInput.paths.length}个文件` };
152
+ }
153
+ const filePath = firstString(toolInput?.file_path, toolInput?.filePath, toolInput?.path, toolInput?.paths, toolInput?.target_file, toolInput?.targetFile);
154
+ return { actionType: 'read_file', actionLabel: '读取文件', actionDetail: filePath };
155
+ }
156
+ if (matchesToolName('bash', 'shell', 'command', 'executepwsh', 'controlpwshprocess', 'execute', 'run_command', 'execute_command')) {
157
+ const command = firstString(toolInput?.command, toolInput?.cmd, toolInput?.argv);
158
+ return { actionType: 'bash', actionLabel: '执行命令', actionDetail: command?.slice(0, 50) };
159
+ }
160
+ // MCP 工具调用
161
+ // 优先使用 metadata 中的 mcpServer 信息(SDK 直接提供)
162
+ // 格式包括:
163
+ // 1. metadata.mcpServer(SDK 提供的 MCP server 名称)
164
+ // 2. 已知 MCP 工具名白名单(KNOWN_MCP_TOOLS)
165
+ // 3. mcp__server__tool (标准格式)
166
+ // 4. xxx-mcp__tool (自定义格式,如 aws-mcp__get_profile)
167
+ // 5. 包含 'mcp_' 的工具名
168
+ // 6. Kiro 的 kiroPowers
169
+ //
170
+ // actionDetail 格式: server/tool(包含 MCP server 名称,便于用户识别工具来源)
171
+ // 优先检查 metadata 中的 MCP server 信息
172
+ if (metadata?.mcpServer) {
173
+ const mcpServer = metadata.mcpServer;
174
+ const mcpTool = toolName || '';
175
+ const detail = mcpTool ? `${mcpServer}/${mcpTool}` : mcpServer;
176
+ console.log(`[getToolActionInfo] MCP from metadata: server="${mcpServer}", tool="${mcpTool}"`);
177
+ return { actionType: 'mcp', actionLabel: '调用MCP', actionDetail: detail };
178
+ }
179
+ // 检查是否在已知 MCP 工具列表中
180
+ const knownMcpServer = KNOWN_MCP_TOOLS[toolName];
181
+ if (knownMcpServer) {
182
+ const detail = `${knownMcpServer}/${toolName}`;
183
+ console.log(`[getToolActionInfo] MCP from known list: server="${knownMcpServer}", tool="${toolName}"`);
184
+ return { actionType: 'mcp', actionLabel: '调用MCP', actionDetail: detail };
185
+ }
186
+ const isMcpTool = name.startsWith('mcp__') ||
187
+ name.includes('-mcp__') ||
188
+ (name.includes('mcp_') && !name.includes('skill')) ||
189
+ name === 'kiropowers';
190
+ if (isMcpTool) {
191
+ let mcpServer = '';
192
+ let mcpTool = '';
193
+ if (name.startsWith('mcp__')) {
194
+ // 标准格式: mcp__server__tool
195
+ const parts = toolName.split('__');
196
+ mcpServer = parts[1] || '';
197
+ mcpTool = parts.slice(2).join('__') || '';
198
+ }
199
+ else if (name.includes('-mcp__')) {
200
+ // 自定义格式: xxx-mcp__tool (如 aws-mcp__get_profile)
201
+ const idx = name.indexOf('-mcp__');
202
+ mcpServer = name.substring(0, idx + 4); // "xxx-mcp"(保留完整 server 名)
203
+ mcpTool = name.substring(idx + 6); // 去掉 "-mcp__" 前缀,得到工具名
204
+ }
205
+ else if (name === 'kiropowers') {
206
+ mcpServer = 'kiro';
207
+ mcpTool = (toolInput?.powerName || toolInput?.action) || '';
208
+ }
209
+ else {
210
+ // 其他包含 mcp_ 的格式
211
+ mcpServer = 'mcp';
212
+ mcpTool = toolName;
213
+ }
214
+ // 格式: server/tool(便于用户识别 MCP server 来源)
215
+ const detail = mcpServer && mcpTool ? `${mcpServer}/${mcpTool}` : (mcpTool || toolName);
216
+ return { actionType: 'mcp', actionLabel: '调用MCP', actionDetail: detail };
217
+ }
218
+ // 文件编辑 (Kiro: strReplace, editCode)
219
+ if (matchesToolName('edit', 'editfile', 'strreplace', 'editcode', 'apply_patch', 'multiedit', 'replace')) {
220
+ const filePath = firstString(toolInput?.file_path, toolInput?.filePath, toolInput?.path, toolInput?.target_file, toolInput?.targetFile);
221
+ return { actionType: 'edit_file', actionLabel: '编辑文件', actionDetail: filePath };
222
+ }
223
+ // 文件写入 (Kiro: fsWrite)
224
+ if (matchesToolName('write', 'writefile', 'fswrite')) {
225
+ const filePath = firstString(toolInput?.file_path, toolInput?.filePath, toolInput?.path, toolInput?.target_file, toolInput?.targetFile);
226
+ return { actionType: 'write_file', actionLabel: '写入文件', actionDetail: filePath };
227
+ }
228
+ // 文件读取 (Kiro: readFile, readCode, readMultipleFiles)
229
+ if (matchesToolName('read', 'readfile', 'readcode', 'readmultiplefiles', 'read_file')) {
230
+ if (Array.isArray(toolInput?.paths)) {
231
+ return { actionType: 'read_file', actionLabel: '读取文件', actionDetail: `${toolInput.paths.length}个文件` };
232
+ }
233
+ const filePath = firstString(toolInput?.file_path, toolInput?.filePath, toolInput?.path, toolInput?.paths, toolInput?.target_file, toolInput?.targetFile);
234
+ return { actionType: 'read_file', actionLabel: '读取文件', actionDetail: filePath };
235
+ }
236
+ // Bash 命令 (Kiro: executePwsh, controlPwshProcess)
237
+ if (matchesToolName('bash', 'shell', 'command', 'executepwsh', 'controlpwshprocess', 'execute', 'run_command', 'execute_command')) {
238
+ const command = firstString(toolInput?.command, toolInput?.cmd, toolInput?.argv);
239
+ return { actionType: 'bash', actionLabel: '执行命令', actionDetail: command?.slice(0, 50) };
240
+ }
241
+ // 文件搜索 (Kiro: grepSearch, fileSearch)
242
+ if (name === 'glob' || name === 'grep' || name === 'find' || name === 'search' || name === 'grepsearch' || name === 'filesearch') {
243
+ const query = (toolInput?.query || toolInput?.pattern);
244
+ return { actionType: 'search', actionLabel: '搜索文件', actionDetail: query?.slice(0, 30) };
245
+ }
246
+ // 网络操作 (Kiro: webFetch, remote_web_search)
247
+ if (name === 'webfetch' || name === 'websearch' || name === 'fetch' || name === 'http' || name === 'remote_web_search') {
248
+ const url = (toolInput?.url || toolInput?.query);
249
+ return { actionType: 'web', actionLabel: '网络请求', actionDetail: url?.slice(0, 50) };
250
+ }
251
+ // LSP 操作
252
+ if (name.startsWith('lsp') || name.includes('language_server')) {
253
+ return { actionType: 'lsp', actionLabel: 'LSP操作' };
254
+ }
255
+ // Notebook 编辑
256
+ if (name === 'notebookedit' || name.includes('notebook')) {
257
+ return { actionType: 'notebook', actionLabel: '编辑Notebook' };
258
+ }
259
+ // 其他工具
260
+ return { actionType: 'other', actionLabel: '调用工具', actionDetail: toolName };
261
+ }
262
+ // ============ Adapter 基类 ============
263
+ /**
264
+ * Provider Adapter 基类
265
+ *
266
+ * 每个 AI CLI 工具对应一个 Adapter 实现,负责:
267
+ * 1. 管理 CLI 进程/SDK 客户端的生命周期
268
+ * 2. 将 Provider 特定的消息格式转换为统一的 ProviderEvent
269
+ * 3. 维护对话消息历史
270
+ *
271
+ * 事件:
272
+ * - 'event'(ProviderEvent) — 统一事件流
273
+ * - 'status-change'(sessionId, SessionStatus) — 会话状态变更
274
+ * - 'permission-request'(PermissionRequest) — 权限确认请求
275
+ * - 'ask-user-question'(AskUserQuestionRequest) — 用户问答请求
276
+ */
277
+ export class BaseProviderAdapter extends EventEmitter {
278
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/adapter/types.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getToolActionInfo } from './types.js';
3
+ describe('getToolActionInfo', () => {
4
+ it('classifies direct Skill tool invocations as skill actions', () => {
5
+ const info = getToolActionInfo('Skill', {
6
+ name: 'frontend-design'
7
+ });
8
+ expect(info).toEqual({
9
+ actionType: 'skill',
10
+ actionLabel: '调用Skill',
11
+ actionDetail: 'frontend-design'
12
+ });
13
+ });
14
+ it('classifies slashcommand skill invocations as skill actions', () => {
15
+ const info = getToolActionInfo('slashcommand', {
16
+ command: 'frontend-design',
17
+ user_message: 'build a polished page'
18
+ });
19
+ expect(info).toEqual({
20
+ actionType: 'skill',
21
+ actionLabel: '调用Skill',
22
+ actionDetail: 'frontend-design'
23
+ });
24
+ });
25
+ it('classifies camelCase loadSkills invocations as skill actions', () => {
26
+ const info = getToolActionInfo('loadSkills', {
27
+ skills: ['brainstorming', 'writing-plans']
28
+ });
29
+ expect(info).toEqual({
30
+ actionType: 'skill',
31
+ actionLabel: '调用Skill',
32
+ actionDetail: 'brainstorming, writing-plans'
33
+ });
34
+ });
35
+ it('classifies explicit skill loading as skill actions', () => {
36
+ const info = getToolActionInfo('load_skills', {
37
+ skills: ['brainstorming', 'writing-plans']
38
+ });
39
+ expect(info).toEqual({
40
+ actionType: 'skill',
41
+ actionLabel: '调用Skill',
42
+ actionDetail: 'brainstorming, writing-plans'
43
+ });
44
+ });
45
+ it('keeps mcp tools classified as mcp actions', () => {
46
+ const info = getToolActionInfo('mcp__aws__send_private', {
47
+ targetId: 'agent-1'
48
+ });
49
+ expect(info.actionType).toBe('mcp');
50
+ expect(info.actionLabel).toBe('调用MCP');
51
+ expect(info.actionDetail).toBe('aws__send_private');
52
+ });
53
+ it('does not misclassify mcp-related skill strings as skill actions', () => {
54
+ const info = getToolActionInfo('mcp_skill_bridge', {
55
+ name: 'bridge'
56
+ });
57
+ expect(info.actionType).not.toBe('skill');
58
+ });
59
+ });
@@ -0,0 +1,52 @@
1
+ /**
2
+ * CC-Switch Adapters 共享类型和工具函数
3
+ *
4
+ * 从 cc-switch-sdk 包导入接口定义,在此实现具体适配器
5
+ */
6
+ import type { AppId, McpServer, McpServerSpec } from '@cc-switch/sdk';
7
+ export type JsonRecord = Record<string, unknown>;
8
+ export interface ClaudeConfig {
9
+ mcpServers?: Record<string, McpServerSpec>;
10
+ [key: string]: unknown;
11
+ }
12
+ export interface OpenCodeLocalServer {
13
+ type: "local";
14
+ command: string[];
15
+ environment?: Record<string, string>;
16
+ cwd?: string;
17
+ enabled?: boolean;
18
+ }
19
+ export interface OpenCodeRemoteServer {
20
+ type: "remote";
21
+ url: string;
22
+ headers?: Record<string, string>;
23
+ enabled?: boolean;
24
+ }
25
+ export type OpenCodeServer = OpenCodeLocalServer | OpenCodeRemoteServer;
26
+ export interface OpenCodeConfig {
27
+ mcp?: Record<string, OpenCodeServer>;
28
+ mcpServers?: Record<string, OpenCodeServer>;
29
+ [key: string]: unknown;
30
+ }
31
+ export type ClaudecodeLocalServer = OpenCodeLocalServer;
32
+ export type ClaudecodeRemoteServer = OpenCodeRemoteServer;
33
+ export type ClaudecodeServer = OpenCodeServer;
34
+ export interface ClaudecodeConfig {
35
+ mcpServers?: Record<string, ClaudecodeServer>;
36
+ [key: string]: unknown;
37
+ }
38
+ /**
39
+ * 将 OpenCode/Claudecode server 格式转换为 MCP spec
40
+ */
41
+ export declare function toMcpSpecFromOpenCode(input: OpenCodeServer): McpServerSpec;
42
+ /**
43
+ * 将 MCP spec 转换为 OpenCode/Claudecode server 格式
44
+ */
45
+ export declare function toOpenCodeServer(input: McpServerSpec): OpenCodeServer;
46
+ /**
47
+ * 导入时合并 App 标记
48
+ */
49
+ export declare function mergeAppFlagOnImport(server: McpServer, appId: AppId): McpServer;
50
+ export declare const toMcpSpecFromClaudecode: typeof toMcpSpecFromOpenCode;
51
+ export declare const toClaudecodeServer: typeof toOpenCodeServer;
52
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AACxD,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAiB1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAoBrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,GACX,SAAS,CAQX;AAGD,eAAO,MAAM,uBAAuB,8BAAwB,CAAC;AAC7D,eAAO,MAAM,kBAAkB,yBAAmB,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * CC-Switch Adapters 共享类型和工具函数
3
+ *
4
+ * 从 cc-switch-sdk 包导入接口定义,在此实现具体适配器
5
+ */
6
+ /**
7
+ * 将 OpenCode/Claudecode server 格式转换为 MCP spec
8
+ */
9
+ export function toMcpSpecFromOpenCode(input) {
10
+ if (input.type === "local") {
11
+ const [command, ...args] = input.command;
12
+ return {
13
+ type: "stdio",
14
+ command,
15
+ args,
16
+ env: input.environment,
17
+ cwd: input.cwd,
18
+ };
19
+ }
20
+ return {
21
+ type: "sse",
22
+ url: input.url,
23
+ headers: input.headers,
24
+ };
25
+ }
26
+ /**
27
+ * 将 MCP spec 转换为 OpenCode/Claudecode server 格式
28
+ */
29
+ export function toOpenCodeServer(input) {
30
+ if (input.type === "stdio") {
31
+ const commandParts = [input.command, ...(input.args ?? [])].filter((entry) => Boolean(entry));
32
+ return {
33
+ type: "local",
34
+ command: commandParts,
35
+ environment: input.env,
36
+ cwd: input.cwd,
37
+ enabled: true,
38
+ };
39
+ }
40
+ return {
41
+ type: "remote",
42
+ url: input.url ?? "",
43
+ headers: input.headers,
44
+ enabled: true,
45
+ };
46
+ }
47
+ /**
48
+ * 导入时合并 App 标记
49
+ */
50
+ export function mergeAppFlagOnImport(server, appId) {
51
+ return {
52
+ ...server,
53
+ apps: {
54
+ ...server.apps,
55
+ [appId]: true,
56
+ },
57
+ };
58
+ }
59
+ // Claudecode uses the same conversion functions as OpenCode
60
+ export const toMcpSpecFromClaudecode = toMcpSpecFromOpenCode;
61
+ export const toClaudecodeServer = toOpenCodeServer;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * CC-Switch Adapters 入口
3
+ *
4
+ * 提供工厂函数创建所有 MCP 和 Skill 适配器实例
5
+ */
6
+ import type { AppId, IMcpAdapter, ISkillAdapter, SdkPaths } from '@cc-switch/sdk';
7
+ export { ClaudeMcpAdapter } from './mcp-claude.js';
8
+ export { ClaudecodeMcpAdapter } from './mcp-claudecode.js';
9
+ export { CodexMcpAdapter } from './mcp-codex.js';
10
+ export { OpenCodeMcpAdapter } from './mcp-opencode.js';
11
+ export { PlaceholderMcpAdapter } from './mcp-placeholder.js';
12
+ export { ClaudeSkillAdapter } from './skill-claude.js';
13
+ export { ClaudecodeSkillAdapter } from './skill-claudecode.js';
14
+ export { OpenCodeSkillAdapter } from './skill-opencode.js';
15
+ export { PlaceholderSkillAdapter } from './skill-placeholder.js';
16
+ export * from './common.js';
17
+ /**
18
+ * 创建所有 MCP 适配器实例
19
+ */
20
+ export declare function createMcpAdapters(paths: SdkPaths): Record<AppId, IMcpAdapter>;
21
+ /**
22
+ * 创建所有 Skill 适配器实例
23
+ */
24
+ export declare function createSkillAdapters(paths: SdkPaths): Record<AppId, ISkillAdapter>;
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAYlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,cAAc,aAAa,CAAC;AAE5B;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAS7E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CASjF"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * CC-Switch Adapters 入口
3
+ *
4
+ * 提供工厂函数创建所有 MCP 和 Skill 适配器实例
5
+ */
6
+ import { ClaudeMcpAdapter } from './mcp-claude.js';
7
+ import { ClaudecodeMcpAdapter } from './mcp-claudecode.js';
8
+ import { CodexMcpAdapter } from './mcp-codex.js';
9
+ import { OpenCodeMcpAdapter } from './mcp-opencode.js';
10
+ import { PlaceholderMcpAdapter } from './mcp-placeholder.js';
11
+ import { ClaudeSkillAdapter } from './skill-claude.js';
12
+ import { ClaudecodeSkillAdapter } from './skill-claudecode.js';
13
+ import { OpenCodeSkillAdapter } from './skill-opencode.js';
14
+ import { PlaceholderSkillAdapter } from './skill-placeholder.js';
15
+ // 导出所有适配器类
16
+ export { ClaudeMcpAdapter } from './mcp-claude.js';
17
+ export { ClaudecodeMcpAdapter } from './mcp-claudecode.js';
18
+ export { CodexMcpAdapter } from './mcp-codex.js';
19
+ export { OpenCodeMcpAdapter } from './mcp-opencode.js';
20
+ export { PlaceholderMcpAdapter } from './mcp-placeholder.js';
21
+ export { ClaudeSkillAdapter } from './skill-claude.js';
22
+ export { ClaudecodeSkillAdapter } from './skill-claudecode.js';
23
+ export { OpenCodeSkillAdapter } from './skill-opencode.js';
24
+ export { PlaceholderSkillAdapter } from './skill-placeholder.js';
25
+ export * from './common.js';
26
+ /**
27
+ * 创建所有 MCP 适配器实例
28
+ */
29
+ export function createMcpAdapters(paths) {
30
+ return {
31
+ claude: new ClaudeMcpAdapter(paths.claudeConfigFile),
32
+ claudecode: new ClaudecodeMcpAdapter(paths.claudecodeConfigFile),
33
+ opencode: new OpenCodeMcpAdapter(paths.opencodeConfigFile),
34
+ codex: new CodexMcpAdapter(paths.codexConfigFile),
35
+ gemini: new PlaceholderMcpAdapter("gemini"),
36
+ openclaw: new PlaceholderMcpAdapter("openclaw"),
37
+ };
38
+ }
39
+ /**
40
+ * 创建所有 Skill 适配器实例
41
+ */
42
+ export function createSkillAdapters(paths) {
43
+ return {
44
+ claude: new ClaudeSkillAdapter(paths.claudeSkillsDir),
45
+ claudecode: new ClaudecodeSkillAdapter(paths.claudecodeSkillsDir),
46
+ opencode: new OpenCodeSkillAdapter(paths.opencodeSkillsDir),
47
+ codex: new PlaceholderSkillAdapter("codex"),
48
+ gemini: new PlaceholderSkillAdapter("gemini"),
49
+ openclaw: new PlaceholderSkillAdapter("openclaw"),
50
+ };
51
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Claude MCP Adapter
3
+ *
4
+ * 实现 IMcpAdapter 接口,负责 Claude Desktop 的 MCP 配置读写
5
+ */
6
+ import type { IMcpAdapter, McpServer } from '@cc-switch/sdk';
7
+ export declare class ClaudeMcpAdapter implements IMcpAdapter {
8
+ private readonly configPath;
9
+ readonly appId: "claude";
10
+ constructor(configPath: string);
11
+ importServers(): Promise<McpServer[]>;
12
+ syncServer(server: McpServer): Promise<void>;
13
+ removeServer(server: McpServer): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=mcp-claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-claude.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/mcp-claude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAqD5E,qBAAa,gBAAiB,YAAW,WAAW;IAGtC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAgB,KAAK,EAAG,QAAQ,CAAU;gBAEb,UAAU,EAAE,MAAM;IAEzC,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAmBrC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CASrD"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Claude MCP Adapter
3
+ *
4
+ * 实现 IMcpAdapter 接口,负责 Claude Desktop 的 MCP 配置读写
5
+ */
6
+ /**
7
+ * JSON 文件读取工具
8
+ */
9
+ async function readJsonFile(filePath, fallback) {
10
+ try {
11
+ const raw = await import('node:fs/promises').then(fs => fs.readFile(filePath, "utf-8"));
12
+ const parsed = JSON.parse(raw);
13
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
14
+ return parsed;
15
+ }
16
+ return { ...fallback };
17
+ }
18
+ catch {
19
+ return { ...fallback };
20
+ }
21
+ }
22
+ /**
23
+ * JSON 文件写入工具
24
+ */
25
+ async function writeJsonFile(filePath, content) {
26
+ const fs = await import('node:fs/promises');
27
+ const path = await import('node:path');
28
+ const parent = path.dirname(filePath);
29
+ await fs.mkdir(parent, { recursive: true });
30
+ await fs.writeFile(filePath, JSON.stringify(content, null, 2), "utf-8");
31
+ }
32
+ /**
33
+ * 生成唯一 ID
34
+ */
35
+ function createId(prefix) {
36
+ const timestamp = Date.now().toString(36);
37
+ const random = Math.random().toString(36).slice(2, 8);
38
+ return `${prefix}_${timestamp}_${random}`;
39
+ }
40
+ /**
41
+ * 将 Claude config 格式转换为 MCP spec
42
+ */
43
+ function toMcpSpecFromClaude(input) {
44
+ return input;
45
+ }
46
+ /**
47
+ * 将 MCP spec 转换为 Claude config 格式
48
+ */
49
+ function toClaudeServer(input) {
50
+ return input;
51
+ }
52
+ export class ClaudeMcpAdapter {
53
+ constructor(configPath) {
54
+ this.configPath = configPath;
55
+ this.appId = "claude";
56
+ }
57
+ async importServers() {
58
+ const config = await readJsonFile(this.configPath, {});
59
+ const entries = Object.entries(config.mcpServers ?? {});
60
+ return entries.map(([name, server]) => ({
61
+ id: createId("mcp"),
62
+ name,
63
+ server: toMcpSpecFromClaude(server),
64
+ apps: {
65
+ claude: true,
66
+ claudecode: false,
67
+ codex: false,
68
+ gemini: false,
69
+ opencode: false,
70
+ openclaw: false,
71
+ },
72
+ }));
73
+ }
74
+ async syncServer(server) {
75
+ const config = await readJsonFile(this.configPath, {});
76
+ config.mcpServers = config.mcpServers ?? {};
77
+ config.mcpServers[server.name] = toClaudeServer(server.server);
78
+ await writeJsonFile(this.configPath, config);
79
+ }
80
+ async removeServer(server) {
81
+ const config = await readJsonFile(this.configPath, {});
82
+ if (!config.mcpServers) {
83
+ return;
84
+ }
85
+ delete config.mcpServers[server.name];
86
+ await writeJsonFile(this.configPath, config);
87
+ }
88
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * ClaudeCode MCP Adapter
3
+ *
4
+ * 实现 IMcpAdapter 接口,负责 ClaudeCode 的 MCP 配置读写
5
+ */
6
+ import type { IMcpAdapter, McpServer } from '@cc-switch/sdk';
7
+ export declare class ClaudecodeMcpAdapter implements IMcpAdapter {
8
+ private readonly configPath;
9
+ readonly appId: "claudecode";
10
+ constructor(configPath: string);
11
+ importServers(): Promise<McpServer[]>;
12
+ syncServer(server: McpServer): Promise<void>;
13
+ removeServer(server: McpServer): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=mcp-claudecode.d.ts.map