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 @@
1
+ {"version":3,"file":"mcp-claudecode.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/mcp-claudecode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwC7D,qBAAa,oBAAqB,YAAW,WAAW;IAG1C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAgB,KAAK,EAAG,YAAY,CAAU;gBAEjB,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,77 @@
1
+ /**
2
+ * ClaudeCode MCP Adapter
3
+ *
4
+ * 实现 IMcpAdapter 接口,负责 ClaudeCode 的 MCP 配置读写
5
+ */
6
+ import { toMcpSpecFromClaudecode, toClaudecodeServer } from './common.js';
7
+ /**
8
+ * JSON 文件读取工具
9
+ */
10
+ async function readJsonFile(filePath, fallback) {
11
+ try {
12
+ const raw = await import('node:fs/promises').then(fs => fs.readFile(filePath, "utf-8"));
13
+ const parsed = JSON.parse(raw);
14
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
15
+ return parsed;
16
+ }
17
+ return { ...fallback };
18
+ }
19
+ catch {
20
+ return { ...fallback };
21
+ }
22
+ }
23
+ /**
24
+ * JSON 文件写入工具
25
+ */
26
+ async function writeJsonFile(filePath, content) {
27
+ const fs = await import('node:fs/promises');
28
+ const path = await import('node:path');
29
+ const parent = path.dirname(filePath);
30
+ await fs.mkdir(parent, { recursive: true });
31
+ await fs.writeFile(filePath, JSON.stringify(content, null, 2), "utf-8");
32
+ }
33
+ /**
34
+ * 生成唯一 ID
35
+ */
36
+ function createId(prefix) {
37
+ const timestamp = Date.now().toString(36);
38
+ const random = Math.random().toString(36).slice(2, 8);
39
+ return `${prefix}_${timestamp}_${random}`;
40
+ }
41
+ export class ClaudecodeMcpAdapter {
42
+ constructor(configPath) {
43
+ this.configPath = configPath;
44
+ this.appId = "claudecode";
45
+ }
46
+ async importServers() {
47
+ const config = await readJsonFile(this.configPath, {});
48
+ const entries = Object.entries(config.mcpServers ?? {});
49
+ return entries.map(([name, server]) => ({
50
+ id: createId("mcp"),
51
+ name,
52
+ server: toMcpSpecFromClaudecode(server),
53
+ apps: {
54
+ claude: false,
55
+ claudecode: true,
56
+ codex: false,
57
+ gemini: false,
58
+ opencode: false,
59
+ openclaw: false,
60
+ },
61
+ }));
62
+ }
63
+ async syncServer(server) {
64
+ const config = await readJsonFile(this.configPath, {});
65
+ config.mcpServers = config.mcpServers ?? {};
66
+ config.mcpServers[server.name] = toClaudecodeServer(server.server);
67
+ await writeJsonFile(this.configPath, config);
68
+ }
69
+ async removeServer(server) {
70
+ const config = await readJsonFile(this.configPath, {});
71
+ if (!config.mcpServers) {
72
+ return;
73
+ }
74
+ delete config.mcpServers[server.name];
75
+ await writeJsonFile(this.configPath, config);
76
+ }
77
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Codex MCP Adapter
3
+ *
4
+ * Codex does not receive per-session MCP servers from the current SDK surface.
5
+ * This adapter persists MCP servers into Codex's config.toml while preserving
6
+ * unrelated user-owned config text.
7
+ */
8
+ import type { IMcpAdapter, McpServer } from '@cc-switch/sdk';
9
+ export declare class CodexMcpAdapter implements IMcpAdapter {
10
+ private readonly configPath;
11
+ readonly appId: "codex";
12
+ constructor(configPath: string);
13
+ importServers(): Promise<McpServer[]>;
14
+ syncServer(server: McpServer): Promise<void>;
15
+ removeServer(server: McpServer): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=mcp-codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/mcp-codex.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAuP5E,qBAAa,eAAgB,YAAW,WAAW;IAGrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAgB,KAAK,EAAG,OAAO,CAAU;gBAEZ,UAAU,EAAE,MAAM;IAEzC,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBrC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAQrD"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Codex MCP Adapter
3
+ *
4
+ * Codex does not receive per-session MCP servers from the current SDK surface.
5
+ * This adapter persists MCP servers into Codex's config.toml while preserving
6
+ * unrelated user-owned config text.
7
+ */
8
+ const MCP_TABLE_PATTERN = /^\s*\[mcp_servers\.("(?:\\.|[^"])+"|[A-Za-z0-9_-]+)\]\s*$/;
9
+ const TABLE_PATTERN = /^\s*\[[^\]]+\]\s*$/;
10
+ const KEY_VALUE_PATTERN = /^\s*([A-Za-z0-9_-]+)\s*=\s*(.*)\s*$/;
11
+ async function readTextFile(filePath) {
12
+ try {
13
+ const fs = await import('node:fs/promises');
14
+ return await fs.readFile(filePath, 'utf-8');
15
+ }
16
+ catch {
17
+ return '';
18
+ }
19
+ }
20
+ async function writeTextFile(filePath, content) {
21
+ const fs = await import('node:fs/promises');
22
+ const path = await import('node:path');
23
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
24
+ await fs.writeFile(filePath, content, 'utf-8');
25
+ }
26
+ function createId(prefix) {
27
+ const timestamp = Date.now().toString(36);
28
+ const random = Math.random().toString(36).slice(2, 8);
29
+ return `${prefix}_${timestamp}_${random}`;
30
+ }
31
+ function escapeTomlString(value) {
32
+ return String(value).replace(/\\/g, '\\\\').replace(/"/g, '\\"');
33
+ }
34
+ function unescapeTomlString(value) {
35
+ return value.replace(/\\"/g, '"').replace(/\\\\/g, '\\');
36
+ }
37
+ function quoteTomlString(value) {
38
+ return `"${escapeTomlString(value)}"`;
39
+ }
40
+ function parseTomlString(raw) {
41
+ const trimmed = raw.trim();
42
+ if (!trimmed.startsWith('"') || !trimmed.endsWith('"')) {
43
+ return undefined;
44
+ }
45
+ return unescapeTomlString(trimmed.slice(1, -1));
46
+ }
47
+ function parseTomlStringArray(raw) {
48
+ const trimmed = raw.trim();
49
+ if (!trimmed.startsWith('[') || !trimmed.endsWith(']')) {
50
+ return undefined;
51
+ }
52
+ const values = [];
53
+ let current = '';
54
+ let inString = false;
55
+ let escaping = false;
56
+ for (const char of trimmed.slice(1, -1)) {
57
+ if (escaping) {
58
+ current += char;
59
+ escaping = false;
60
+ continue;
61
+ }
62
+ if (char === '\\' && inString) {
63
+ escaping = true;
64
+ continue;
65
+ }
66
+ if (char === '"') {
67
+ if (inString) {
68
+ values.push(unescapeTomlString(current));
69
+ current = '';
70
+ }
71
+ inString = !inString;
72
+ continue;
73
+ }
74
+ if (inString) {
75
+ current += char;
76
+ }
77
+ }
78
+ return values;
79
+ }
80
+ function formatTomlArray(values) {
81
+ return `[${(values ?? []).map(quoteTomlString).join(', ')}]`;
82
+ }
83
+ function parseTableName(rawName) {
84
+ const trimmed = rawName.trim();
85
+ if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
86
+ return unescapeTomlString(trimmed.slice(1, -1));
87
+ }
88
+ return trimmed;
89
+ }
90
+ function isNestedMcpTableForServer(line, serverName) {
91
+ const trimmed = line.trim();
92
+ const quotedPrefix = `[mcp_servers.${quoteTomlString(serverName)}.`;
93
+ const barePrefix = `[mcp_servers.${serverName}.`;
94
+ return trimmed.startsWith(quotedPrefix) || trimmed.startsWith(barePrefix);
95
+ }
96
+ function findMcpBlocks(raw) {
97
+ const lines = raw.split(/\r?\n/);
98
+ const blocks = [];
99
+ let currentName = null;
100
+ let currentStart = null;
101
+ const flushCurrent = (end) => {
102
+ if (currentName === null || currentStart === null) {
103
+ return;
104
+ }
105
+ blocks.push({
106
+ name: currentName,
107
+ start: currentStart,
108
+ end,
109
+ lines: lines.slice(currentStart, end),
110
+ });
111
+ currentName = null;
112
+ currentStart = null;
113
+ };
114
+ lines.forEach((line, index) => {
115
+ const mcpMatch = line.match(MCP_TABLE_PATTERN);
116
+ if (mcpMatch) {
117
+ flushCurrent(index);
118
+ currentName = parseTableName(mcpMatch[1]);
119
+ currentStart = index;
120
+ return;
121
+ }
122
+ if (line.match(TABLE_PATTERN) && currentName && !isNestedMcpTableForServer(line, currentName)) {
123
+ flushCurrent(index);
124
+ }
125
+ });
126
+ flushCurrent(lines.length);
127
+ return blocks;
128
+ }
129
+ function buildCodexMcpBlock(server) {
130
+ const spec = server.server;
131
+ const lines = [`[mcp_servers.${quoteTomlString(server.name)}]`];
132
+ if (spec.command) {
133
+ lines.push(`command = ${quoteTomlString(spec.command)}`);
134
+ }
135
+ if (spec.args) {
136
+ lines.push(`args = ${formatTomlArray(spec.args)}`);
137
+ }
138
+ if (spec.cwd) {
139
+ lines.push(`cwd = ${quoteTomlString(spec.cwd)}`);
140
+ }
141
+ if (spec.url) {
142
+ lines.push(`url = ${quoteTomlString(spec.url)}`);
143
+ }
144
+ const envEntries = Object.entries(spec.env ?? {}).sort(([left], [right]) => left.localeCompare(right));
145
+ if (envEntries.length > 0) {
146
+ lines.push('');
147
+ lines.push(`[mcp_servers.${quoteTomlString(server.name)}.env]`);
148
+ for (const [key, value] of envEntries) {
149
+ lines.push(`${key} = ${quoteTomlString(value)}`);
150
+ }
151
+ }
152
+ return lines.join('\n');
153
+ }
154
+ function removeCodexMcpBlock(raw, serverName) {
155
+ const lines = raw.split(/\r?\n/);
156
+ const block = findMcpBlocks(raw).find((entry) => entry.name === serverName);
157
+ if (!block) {
158
+ return raw;
159
+ }
160
+ const nextLines = [...lines.slice(0, block.start), ...lines.slice(block.end)];
161
+ return nextLines.join('\n').replace(/\n{3,}/g, '\n\n').trimEnd();
162
+ }
163
+ function upsertCodexMcpBlock(raw, server) {
164
+ const withoutExisting = removeCodexMcpBlock(raw, server.name).trimEnd();
165
+ const block = buildCodexMcpBlock(server);
166
+ if (!withoutExisting) {
167
+ return `${block}\n`;
168
+ }
169
+ return `${withoutExisting}\n\n${block}\n`;
170
+ }
171
+ function parseCodexBlock(block) {
172
+ const spec = { type: 'stdio' };
173
+ const env = {};
174
+ let inEnv = false;
175
+ for (const line of block.lines.slice(1)) {
176
+ const trimmed = line.trim();
177
+ if (!trimmed || trimmed.startsWith('#')) {
178
+ continue;
179
+ }
180
+ if (trimmed === `[mcp_servers.${quoteTomlString(block.name)}.env]`) {
181
+ inEnv = true;
182
+ continue;
183
+ }
184
+ const match = line.match(KEY_VALUE_PATTERN);
185
+ if (!match) {
186
+ continue;
187
+ }
188
+ const [, key, rawValue] = match;
189
+ if (inEnv) {
190
+ const value = parseTomlString(rawValue);
191
+ if (value !== undefined) {
192
+ env[key] = value;
193
+ }
194
+ continue;
195
+ }
196
+ if (key === 'args') {
197
+ spec.args = parseTomlStringArray(rawValue) ?? [];
198
+ continue;
199
+ }
200
+ if (key === 'command' || key === 'cwd' || key === 'url') {
201
+ const value = parseTomlString(rawValue);
202
+ if (value !== undefined) {
203
+ spec[key] = value;
204
+ }
205
+ }
206
+ }
207
+ if (Object.keys(env).length > 0) {
208
+ spec.env = env;
209
+ }
210
+ if (spec.url) {
211
+ spec.type = 'sse';
212
+ }
213
+ return spec;
214
+ }
215
+ export class CodexMcpAdapter {
216
+ constructor(configPath) {
217
+ this.configPath = configPath;
218
+ this.appId = 'codex';
219
+ }
220
+ async importServers() {
221
+ const raw = await readTextFile(this.configPath);
222
+ return findMcpBlocks(raw).map((block) => ({
223
+ id: createId('mcp'),
224
+ name: block.name,
225
+ server: parseCodexBlock(block),
226
+ apps: {
227
+ claude: false,
228
+ claudecode: false,
229
+ codex: true,
230
+ gemini: false,
231
+ opencode: false,
232
+ openclaw: false,
233
+ },
234
+ }));
235
+ }
236
+ async syncServer(server) {
237
+ const raw = await readTextFile(this.configPath);
238
+ await writeTextFile(this.configPath, upsertCodexMcpBlock(raw, server));
239
+ }
240
+ async removeServer(server) {
241
+ const raw = await readTextFile(this.configPath);
242
+ const next = removeCodexMcpBlock(raw, server.name);
243
+ if (next === raw) {
244
+ return;
245
+ }
246
+ await writeTextFile(this.configPath, next ? `${next}\n` : '');
247
+ }
248
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-codex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-codex.test.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/mcp-codex.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { CodexMcpAdapter } from './mcp-codex.js';
6
+ let tempDir;
7
+ let configPath;
8
+ function buildServer(name = 'aws-client-agent-mcp') {
9
+ return {
10
+ id: 'mcp_test',
11
+ name,
12
+ server: {
13
+ type: 'stdio',
14
+ command: 'node',
15
+ args: ['D:\\code\\AgentsWorkStudio\\aws-runtime-bridge\\package\\cc-switch-sdk\\dist\\index.js'],
16
+ env: {
17
+ AWS_AGENT_ID: 'agent-1',
18
+ },
19
+ },
20
+ apps: {
21
+ claude: false,
22
+ claudecode: false,
23
+ codex: true,
24
+ gemini: false,
25
+ opencode: false,
26
+ openclaw: false,
27
+ },
28
+ };
29
+ }
30
+ beforeEach(async () => {
31
+ tempDir = await mkdtemp(path.join(os.tmpdir(), 'codex-mcp-adapter-'));
32
+ configPath = path.join(tempDir, 'config.toml');
33
+ });
34
+ afterEach(async () => {
35
+ await rm(tempDir, { recursive: true, force: true });
36
+ });
37
+ describe('CodexMcpAdapter', () => {
38
+ it('creates a Codex config with an MCP block when none exists', async () => {
39
+ const adapter = new CodexMcpAdapter(configPath);
40
+ await adapter.syncServer(buildServer());
41
+ const written = await readFile(configPath, 'utf-8');
42
+ expect(written).toContain('[mcp_servers."aws-client-agent-mcp"]');
43
+ expect(written).toContain('command = "node"');
44
+ expect(written).toContain('args = ["D:\\\\code\\\\AgentsWorkStudio\\\\aws-runtime-bridge\\\\package\\\\cc-switch-sdk\\\\dist\\\\index.js"]');
45
+ expect(written).toContain('[mcp_servers."aws-client-agent-mcp".env]');
46
+ expect(written).toContain('AWS_AGENT_ID = "agent-1"');
47
+ });
48
+ it('preserves unrelated Codex model/provider config while appending MCP config', async () => {
49
+ const existing = [
50
+ '# user comment',
51
+ 'model = "gpt-5.1"',
52
+ 'model_provider = "custom"',
53
+ '',
54
+ '[model_providers.custom]',
55
+ 'name = "Custom"',
56
+ 'base_url = "https://example.test/v1"',
57
+ '',
58
+ ].join('\n');
59
+ await writeFile(configPath, existing, 'utf-8');
60
+ const adapter = new CodexMcpAdapter(configPath);
61
+ await adapter.syncServer(buildServer());
62
+ const written = await readFile(configPath, 'utf-8');
63
+ expect(written).toContain(existing.trimEnd());
64
+ expect(written).toContain('[mcp_servers."aws-client-agent-mcp"]');
65
+ });
66
+ it('updates an existing MCP block without duplicating it', async () => {
67
+ const adapter = new CodexMcpAdapter(configPath);
68
+ await adapter.syncServer(buildServer());
69
+ await adapter.syncServer({
70
+ ...buildServer(),
71
+ server: {
72
+ type: 'stdio',
73
+ command: 'node',
74
+ args: ['new-index.js'],
75
+ env: {
76
+ AWS_AGENT_ID: 'agent-2',
77
+ },
78
+ },
79
+ });
80
+ const written = await readFile(configPath, 'utf-8');
81
+ expect(written.match(/\[mcp_servers\."aws-client-agent-mcp"\]/g)).toHaveLength(1);
82
+ expect(written).toContain('args = ["new-index.js"]');
83
+ expect(written).toContain('AWS_AGENT_ID = "agent-2"');
84
+ expect(written).not.toContain('agent-1');
85
+ });
86
+ it('removes the MCP block and its nested env table only', async () => {
87
+ const adapter = new CodexMcpAdapter(configPath);
88
+ await writeFile(configPath, [
89
+ 'model = "gpt-5.1"',
90
+ '',
91
+ '[mcp_servers."aws-client-agent-mcp"]',
92
+ 'command = "node"',
93
+ 'args = ["old.js"]',
94
+ '',
95
+ '[mcp_servers."aws-client-agent-mcp".env]',
96
+ 'AWS_AGENT_ID = "agent-1"',
97
+ '',
98
+ '[model_providers.custom]',
99
+ 'name = "Custom"',
100
+ '',
101
+ ].join('\n'), 'utf-8');
102
+ await adapter.removeServer(buildServer());
103
+ const written = await readFile(configPath, 'utf-8');
104
+ expect(written).toContain('model = "gpt-5.1"');
105
+ expect(written).toContain('[model_providers.custom]');
106
+ expect(written).not.toContain('aws-client-agent-mcp');
107
+ expect(written).not.toContain('AWS_AGENT_ID');
108
+ });
109
+ it('imports Codex MCP blocks', async () => {
110
+ const adapter = new CodexMcpAdapter(configPath);
111
+ await adapter.syncServer(buildServer());
112
+ const servers = await adapter.importServers();
113
+ expect(servers).toHaveLength(1);
114
+ expect(servers[0]).toMatchObject({
115
+ name: 'aws-client-agent-mcp',
116
+ apps: { codex: true },
117
+ server: {
118
+ type: 'stdio',
119
+ command: 'node',
120
+ args: ['D:\\code\\AgentsWorkStudio\\aws-runtime-bridge\\package\\cc-switch-sdk\\dist\\index.js'],
121
+ env: { AWS_AGENT_ID: 'agent-1' },
122
+ },
123
+ });
124
+ });
125
+ });
@@ -0,0 +1,23 @@
1
+ /**
2
+ * OpenCode MCP Adapter
3
+ *
4
+ * 实现 IMcpAdapter 接口,负责 OpenCode 的 MCP 配置读写
5
+ */
6
+ import type { IMcpAdapter, McpServer } from '@cc-switch/sdk';
7
+ export declare class OpenCodeMcpAdapter implements IMcpAdapter {
8
+ private readonly configPath;
9
+ readonly appId: "opencode";
10
+ constructor(configPath: string);
11
+ /**
12
+ * 读取 OpenCode MCP 映射,优先使用合法的 mcp 字段,兼容历史错误写入的 mcpServers。
13
+ */
14
+ private getMcpMap;
15
+ /**
16
+ * 将 MCP 服务器写回 OpenCode 配置,只保留合法的 mcp 字段并清理错误的 mcpServers。
17
+ */
18
+ private saveMcpMap;
19
+ importServers(): Promise<McpServer[]>;
20
+ syncServer(server: McpServer): Promise<void>;
21
+ removeServer(server: McpServer): Promise<void>;
22
+ }
23
+ //# sourceMappingURL=mcp-opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/mcp-opencode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwC7D,qBAAa,kBAAmB,YAAW,WAAW;IAGxC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAgB,KAAK,EAAG,UAAU,CAAU;gBAEf,UAAU,EAAE,MAAM;IAE/C;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;YACW,UAAU;IAQlB,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;CAUrD"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * OpenCode MCP Adapter
3
+ *
4
+ * 实现 IMcpAdapter 接口,负责 OpenCode 的 MCP 配置读写
5
+ */
6
+ import { toMcpSpecFromOpenCode, toOpenCodeServer } from './common.js';
7
+ /**
8
+ * JSON 文件读取工具
9
+ */
10
+ async function readJsonFile(filePath, fallback) {
11
+ try {
12
+ const raw = await import('node:fs/promises').then(fs => fs.readFile(filePath, "utf-8"));
13
+ const parsed = JSON.parse(raw);
14
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
15
+ return parsed;
16
+ }
17
+ return { ...fallback };
18
+ }
19
+ catch {
20
+ return { ...fallback };
21
+ }
22
+ }
23
+ /**
24
+ * JSON 文件写入工具
25
+ */
26
+ async function writeJsonFile(filePath, content) {
27
+ const fs = await import('node:fs/promises');
28
+ const path = await import('node:path');
29
+ const parent = path.dirname(filePath);
30
+ await fs.mkdir(parent, { recursive: true });
31
+ await fs.writeFile(filePath, JSON.stringify(content, null, 2), "utf-8");
32
+ }
33
+ /**
34
+ * 生成唯一 ID
35
+ */
36
+ function createId(prefix) {
37
+ const timestamp = Date.now().toString(36);
38
+ const random = Math.random().toString(36).slice(2, 8);
39
+ return `${prefix}_${timestamp}_${random}`;
40
+ }
41
+ export class OpenCodeMcpAdapter {
42
+ constructor(configPath) {
43
+ this.configPath = configPath;
44
+ this.appId = "opencode";
45
+ }
46
+ /**
47
+ * 读取 OpenCode MCP 映射,优先使用合法的 mcp 字段,兼容历史错误写入的 mcpServers。
48
+ */
49
+ getMcpMap(config) {
50
+ if (config.mcp && typeof config.mcp === "object") {
51
+ return config.mcp;
52
+ }
53
+ if (config.mcpServers && typeof config.mcpServers === "object") {
54
+ return config.mcpServers;
55
+ }
56
+ return {};
57
+ }
58
+ /**
59
+ * 将 MCP 服务器写回 OpenCode 配置,只保留合法的 mcp 字段并清理错误的 mcpServers。
60
+ */
61
+ async saveMcpMap(config, mcp) {
62
+ config.mcp = mcp;
63
+ if ("mcpServers" in config) {
64
+ delete config.mcpServers;
65
+ }
66
+ await writeJsonFile(this.configPath, config);
67
+ }
68
+ async importServers() {
69
+ const config = await readJsonFile(this.configPath, {});
70
+ const entries = Object.entries(this.getMcpMap(config));
71
+ return entries.map(([name, server]) => ({
72
+ id: createId("mcp"),
73
+ name,
74
+ server: toMcpSpecFromOpenCode(server),
75
+ apps: {
76
+ claude: false,
77
+ claudecode: false,
78
+ codex: false,
79
+ gemini: false,
80
+ opencode: true,
81
+ openclaw: false,
82
+ },
83
+ }));
84
+ }
85
+ async syncServer(server) {
86
+ const config = await readJsonFile(this.configPath, {});
87
+ const mcp = this.getMcpMap(config);
88
+ mcp[server.name] = toOpenCodeServer(server.server);
89
+ await this.saveMcpMap(config, mcp);
90
+ }
91
+ async removeServer(server) {
92
+ const config = await readJsonFile(this.configPath, {});
93
+ const mcp = this.getMcpMap(config);
94
+ if (!mcp[server.name]) {
95
+ return;
96
+ }
97
+ delete mcp[server.name];
98
+ await this.saveMcpMap(config, mcp);
99
+ }
100
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Placeholder MCP Adapter
3
+ *
4
+ * 用于尚未实现的 AI 工具(Codex、Gemini、OpenClaw)
5
+ */
6
+ import type { AppId, IMcpAdapter, McpServer } from '@cc-switch/sdk';
7
+ export declare class PlaceholderMcpAdapter implements IMcpAdapter {
8
+ readonly appId: AppId;
9
+ constructor(appId: AppId);
10
+ importServers(): Promise<McpServer[]>;
11
+ syncServer(): Promise<void>;
12
+ removeServer(): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=mcp-placeholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-placeholder.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/mcp-placeholder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpE,qBAAa,qBAAsB,YAAW,WAAW;aAC3B,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAElC,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Placeholder MCP Adapter
3
+ *
4
+ * 用于尚未实现的 AI 工具(Codex、Gemini、OpenClaw)
5
+ */
6
+ export class PlaceholderMcpAdapter {
7
+ constructor(appId) {
8
+ this.appId = appId;
9
+ }
10
+ async importServers() {
11
+ return [];
12
+ }
13
+ async syncServer() {
14
+ return;
15
+ }
16
+ async removeServer() {
17
+ return;
18
+ }
19
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Claude Skill Adapter
3
+ *
4
+ * 实现 ISkillAdapter 接口,负责 Claude Desktop 的 Skill 目录管理
5
+ */
6
+ import type { ISkillAdapter, InstalledSkill, SkillSyncMethod } from '@cc-switch/sdk';
7
+ export declare class ClaudeSkillAdapter implements ISkillAdapter {
8
+ private readonly skillsDir;
9
+ readonly appId: "claude";
10
+ constructor(skillsDir: string);
11
+ importSkills(): Promise<Array<Pick<InstalledSkill, "id" | "name" | "directory" | "description">>>;
12
+ syncSkill(skill: InstalledSkill, sourceDir: string, method: SkillSyncMethod): Promise<void>;
13
+ removeSkill(skill: InstalledSkill): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=skill-claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-claude.d.ts","sourceRoot":"","sources":["../../../src/adapters/cc-switch/skill-claude.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAoErF,qBAAa,kBAAmB,YAAW,aAAa;IAG1C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,SAAgB,KAAK,EAAG,QAAQ,CAAU;gBAEb,SAAS,EAAE,MAAM;IAExC,YAAY,IAAI,OAAO,CAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC,CAAC,CACzE;IAmBK,SAAS,CACb,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC;IAMV,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxD"}