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,190 @@
1
+ import path from 'node:path';
2
+ import { promises as fs } from 'node:fs';
3
+ import { getAgentInitRoot, loadInstanceState, saveInstanceState } from './instance-state.js';
4
+ import { loadCcSwitchSdk, runCcSwitchAdapter, toSdkAppsFromEnabledTools } from './cc-switch-sdk.js';
5
+ import { ensureDir, installSkillPackageToSdk } from '../utils/file-utils.js';
6
+ import { buildMcpConfigContent, normalizeSdkMcpServerSpec, toLegacyMcpStateItem, toLegacySkillStateItem } from '../utils/mcp-utils.js';
7
+ import { ensureEnabledTools, parseBoolean } from '../utils/validation.js';
8
+ import { normalizeMcpPayload } from '../utils/mcp-utils.js';
9
+ import { detectToolStatuses, ensureToolsInstalled } from './tool-installer.js';
10
+ export async function syncLegacyStateFromSdk(agentId, sdk) {
11
+ const state = await loadInstanceState(agentId);
12
+ const mcpServers = sdk.getAllMcpServers().map((item) => toLegacyMcpStateItem(item));
13
+ const skills = sdk.getAllSkills().map((item) => toLegacySkillStateItem(item));
14
+ state.mcpServers = mcpServers;
15
+ state.skills = skills;
16
+ const initRoot = getAgentInitRoot(agentId);
17
+ const mcpDir = await ensureDir(path.join(initRoot, 'mcp'));
18
+ const mcpConfigPath = path.join(mcpDir, 'mcp-servers.json');
19
+ await fs.writeFile(mcpConfigPath, buildMcpConfigContent(mcpServers), 'utf-8');
20
+ const saved = await saveInstanceState(agentId, state);
21
+ return {
22
+ state: saved,
23
+ configPath: mcpConfigPath,
24
+ skills,
25
+ mcpServers,
26
+ };
27
+ }
28
+ export async function initInstance(agentId, workspacePath, options) {
29
+ const normalizedWorkspace = path.resolve(workspacePath);
30
+ const initRoot = getAgentInitRoot(agentId);
31
+ const logs = [];
32
+ function pushLog(step, status, message, details) {
33
+ logs.push({
34
+ step,
35
+ status,
36
+ message,
37
+ timestamp: new Date().toISOString(),
38
+ details,
39
+ });
40
+ }
41
+ pushLog('prepare', 'running', '开始初始化实例', {
42
+ agentId: String(agentId),
43
+ workspacePath: normalizedWorkspace,
44
+ });
45
+ await ensureDir(initRoot);
46
+ pushLog('prepare', 'success', '初始化目录已就绪', { initRoot });
47
+ const tools = ensureEnabledTools(options.ccSwitchEnabledTools);
48
+ pushLog('detect-tools', 'running', '开始检测工具安装状态', { tools });
49
+ const detectedToolStatus = await detectToolStatuses(tools);
50
+ pushLog('detect-tools', 'success', '工具安装状态检测完成', {
51
+ installedTools: Object.values(detectedToolStatus).filter((item) => item.installed).map((item) => item.tool),
52
+ missingTools: Object.values(detectedToolStatus).filter((item) => !item.installed).map((item) => item.tool),
53
+ });
54
+ const initResult = {
55
+ ok: true,
56
+ agentId: String(agentId),
57
+ workspacePath: normalizedWorkspace,
58
+ initRoot,
59
+ enabledTools: tools,
60
+ toolStatus: detectedToolStatus,
61
+ logs,
62
+ skill: {
63
+ enabled: parseBoolean(options.skillEnabled, true),
64
+ packagePresent: false,
65
+ },
66
+ mcp: {
67
+ enabled: parseBoolean(options.mcpEnabled, true),
68
+ configPath: null,
69
+ },
70
+ };
71
+ const state = await loadInstanceState(agentId);
72
+ pushLog('install-tools', 'running', '开始自动安装缺失工具', { tools });
73
+ const ensuredToolStatus = await ensureToolsInstalled(tools);
74
+ initResult.toolStatus = ensuredToolStatus;
75
+ const failedTools = Object.values(ensuredToolStatus).filter((item) => !item.installed);
76
+ if (failedTools.length > 0) {
77
+ pushLog('install-tools', 'error', '部分工具自动安装失败', {
78
+ failedTools: failedTools.map((item) => ({ tool: item.tool, error: item.error })),
79
+ });
80
+ }
81
+ else {
82
+ pushLog('install-tools', 'success', '工具安装步骤完成', {
83
+ installedTools: Object.values(ensuredToolStatus).map((item) => ({ tool: item.tool, version: item.version })),
84
+ });
85
+ }
86
+ pushLog('load-sdk', 'running', '开始加载 CC Switch SDK');
87
+ const sdk = await loadCcSwitchSdk(agentId);
88
+ const sdkApps = toSdkAppsFromEnabledTools(tools);
89
+ pushLog('load-sdk', 'success', 'CC Switch SDK 加载完成', { sdkApps });
90
+ if (initResult.skill.enabled) {
91
+ pushLog('install-skills', 'running', '开始安装技能包', {
92
+ count: Array.isArray(options.skillPackages) ? options.skillPackages.length : (options.skillPackage ? 1 : 0),
93
+ });
94
+ const skillDir = await ensureDir(path.join(initRoot, 'skills'));
95
+ const skillCandidates = Array.isArray(options.skillPackages) && options.skillPackages.length > 0
96
+ ? options.skillPackages
97
+ : (options.skillPackage ? [options.skillPackage] : []);
98
+ const installedSkills = [];
99
+ for (const candidate of skillCandidates) {
100
+ const installed = await installSkillPackageToSdk(sdk, candidate, skillDir, sdkApps);
101
+ if (!installed) {
102
+ continue;
103
+ }
104
+ installedSkills.push(toLegacySkillStateItem(installed));
105
+ }
106
+ if (installedSkills.length > 0) {
107
+ initResult.skill.packagePresent = true;
108
+ initResult.skill.installedCount = installedSkills.length;
109
+ initResult.skill.installed = installedSkills;
110
+ pushLog('install-skills', 'success', '技能包安装完成', {
111
+ installedCount: installedSkills.length,
112
+ skills: installedSkills.map((item) => item.name),
113
+ });
114
+ }
115
+ else {
116
+ pushLog('install-skills', 'skipped', '没有可安装的技能包');
117
+ }
118
+ }
119
+ else {
120
+ pushLog('install-skills', 'skipped', '已跳过技能包安装(skillEnabled=false)');
121
+ }
122
+ if (initResult.mcp.enabled) {
123
+ pushLog('install-mcp', 'running', '开始写入 MCP 配置', {
124
+ count: Array.isArray(options.mcpServers) ? options.mcpServers.length : 0,
125
+ });
126
+ const normalizedMcpServers = (Array.isArray(options.mcpServers) ? options.mcpServers : [])
127
+ .map((item) => normalizeMcpPayload(item))
128
+ .filter((item) => item != null);
129
+ const appliedMcp = [];
130
+ for (const item of normalizedMcpServers) {
131
+ const allMcps = sdk.getAllMcpServers();
132
+ const existing = allMcps.find((server) => String(server?.name || '').trim() === item.name);
133
+ const mcpInput = {
134
+ name: item.name,
135
+ server: normalizeSdkMcpServerSpec(item),
136
+ apps: sdkApps,
137
+ };
138
+ const existingId = String(existing?.id || '').trim();
139
+ const upserted = existingId
140
+ ? await sdk.updateMcpServer(existingId, mcpInput)
141
+ : await sdk.createMcpServer(mcpInput);
142
+ appliedMcp.push(toLegacyMcpStateItem(upserted));
143
+ }
144
+ initResult.mcp.installedCount = appliedMcp.length;
145
+ pushLog('install-mcp', 'success', 'MCP 配置写入完成', {
146
+ installedCount: appliedMcp.length,
147
+ mcpServers: appliedMcp.map((item) => item.name),
148
+ });
149
+ }
150
+ else {
151
+ pushLog('install-mcp', 'skipped', '已跳过 MCP 配置(mcpEnabled=false)');
152
+ }
153
+ pushLog('persist-state', 'running', '开始保存实例状态');
154
+ state.initialized = true;
155
+ state.enabledTools = tools;
156
+ state.toolStatus = ensuredToolStatus;
157
+ state.skillEnabled = initResult.skill.enabled;
158
+ state.mcpEnabled = initResult.mcp.enabled;
159
+ await saveInstanceState(agentId, state);
160
+ pushLog('persist-state', 'success', '实例状态保存完成');
161
+ pushLog('sync-state', 'running', '开始同步 CC Switch 状态快照');
162
+ const synced = await syncLegacyStateFromSdk(agentId, sdk);
163
+ const savedState = synced.state;
164
+ initResult.mcp.configPath = synced.configPath;
165
+ pushLog('sync-state', 'success', 'CC Switch 状态同步完成', {
166
+ skillCount: savedState.skills.length,
167
+ mcpCount: savedState.mcpServers.length,
168
+ configPath: synced.configPath,
169
+ });
170
+ pushLog('adapter', 'running', '开始执行适配器回写');
171
+ const adapterResult = await runCcSwitchAdapter('init-instance', agentId, {
172
+ enabledTools: savedState.enabledTools,
173
+ skillEnabled: savedState.skillEnabled,
174
+ mcpEnabled: savedState.mcpEnabled,
175
+ skillCount: savedState.skills.length,
176
+ mcpCount: savedState.mcpServers.length,
177
+ }, sdk);
178
+ pushLog('adapter', 'success', '适配器回写完成', {
179
+ snapshot: adapterResult.snapshot,
180
+ });
181
+ pushLog('complete', failedTools.length > 0 ? 'error' : 'success', failedTools.length > 0 ? '实例初始化完成,但存在工具安装失败项' : '实例初始化完成');
182
+ return {
183
+ ...initResult,
184
+ adapterResult,
185
+ installed: {
186
+ skills: savedState.skills,
187
+ mcpServers: savedState.mcpServers,
188
+ },
189
+ };
190
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * InstanceService - Agent 实例初始化服务
3
+ *
4
+ * 负责 Agent 实例的生命周期管理:
5
+ * - 实例根目录、workspace 路径管理
6
+ * - 实例状态持久化
7
+ * - Skill/MCP 包安装流程
8
+ *
9
+ * 注意:此服务属于 Agent 运行时层,不属于 cc-switch-sdk 配置管理层
10
+ */
11
+ import type { AppId, InstalledSkill, McpServer } from '@cc-switch/sdk';
12
+ import { CcSwitchSdk } from '@cc-switch/sdk';
13
+ export interface SkillPackage {
14
+ downloadUrl?: string;
15
+ fileName?: string;
16
+ sha256?: string;
17
+ skillName?: string;
18
+ localPath?: string;
19
+ }
20
+ export interface McpServerInput {
21
+ id?: string;
22
+ name: string;
23
+ transport?: string;
24
+ command?: string;
25
+ url?: string;
26
+ args?: string[];
27
+ env?: Record<string, string>;
28
+ enabled?: boolean;
29
+ }
30
+ export interface InstanceOptions {
31
+ skillEnabled?: boolean;
32
+ mcpEnabled?: boolean;
33
+ enabledApps?: AppId[];
34
+ skillPackage?: SkillPackage;
35
+ skillPackages?: SkillPackage[];
36
+ mcpServers?: McpServerInput[];
37
+ }
38
+ export interface InstanceState {
39
+ initialized: boolean;
40
+ skills: InstalledSkill[];
41
+ mcpServers: McpServer[];
42
+ enabledApps: AppId[];
43
+ skillEnabled: boolean;
44
+ mcpEnabled: boolean;
45
+ updatedAt: string | null;
46
+ }
47
+ export interface InstanceInitResult {
48
+ ok: boolean;
49
+ instanceId: string;
50
+ workspacePath: string;
51
+ instanceRoot: string;
52
+ enabledApps: AppId[];
53
+ skill: {
54
+ enabled: boolean;
55
+ packagePresent: boolean;
56
+ installedCount?: number;
57
+ installed?: InstalledSkill[];
58
+ };
59
+ mcp: {
60
+ enabled: boolean;
61
+ installedCount?: number;
62
+ installed?: McpServer[];
63
+ };
64
+ }
65
+ export interface InstancePaths {
66
+ instanceRoot: string;
67
+ stateFile: string;
68
+ skillsDir: string;
69
+ mcpDir: string;
70
+ }
71
+ export declare class InstanceService {
72
+ private readonly sdk;
73
+ private readonly instanceRoot;
74
+ private readonly workspacePath;
75
+ constructor(sdk: CcSwitchSdk, instanceRoot: string, workspacePath: string);
76
+ private getPaths;
77
+ loadState(): Promise<InstanceState>;
78
+ saveState(state: InstanceState): Promise<InstanceState>;
79
+ private ensureInstanceRoot;
80
+ private toAppFlags;
81
+ initialize(options?: InstanceOptions): Promise<InstanceInitResult>;
82
+ private installSkillPackage;
83
+ private upsertMcpServer;
84
+ getState(): Promise<InstanceState>;
85
+ updateState(partial: Partial<InstanceState>): Promise<InstanceState>;
86
+ reset(): Promise<void>;
87
+ }
88
+ //# sourceMappingURL=instance-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-service.d.ts","sourceRoot":"","sources":["../../src/services/instance-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,236 @@
1
+ /**
2
+ * InstanceService - Agent 实例初始化服务
3
+ *
4
+ * 负责 Agent 实例的生命周期管理:
5
+ * - 实例根目录、workspace 路径管理
6
+ * - 实例状态持久化
7
+ * - Skill/MCP 包安装流程
8
+ *
9
+ * 注意:此服务属于 Agent 运行时层,不属于 cc-switch-sdk 配置管理层
10
+ */
11
+ import path from "node:path";
12
+ import { promises as fs } from "node:fs";
13
+ /**
14
+ * 生成唯一 ID
15
+ */
16
+ function generateId(prefix = "inst") {
17
+ const timestamp = Date.now().toString(36);
18
+ const random = Math.random().toString(36).slice(2, 8);
19
+ return `${prefix}_${timestamp}_${random}`;
20
+ }
21
+ /**
22
+ * 检查路径是否存在
23
+ */
24
+ async function pathExists(target) {
25
+ try {
26
+ await fs.access(target);
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ /**
34
+ * 递归复制目录
35
+ */
36
+ async function copyDir(source, target) {
37
+ await fs.mkdir(target, { recursive: true });
38
+ const entries = await fs.readdir(source, { withFileTypes: true });
39
+ for (const entry of entries) {
40
+ const srcPath = path.join(source, entry.name);
41
+ const tgtPath = path.join(target, entry.name);
42
+ if (entry.isDirectory()) {
43
+ await copyDir(srcPath, tgtPath);
44
+ }
45
+ else {
46
+ await fs.copyFile(srcPath, tgtPath);
47
+ }
48
+ }
49
+ }
50
+ /**
51
+ * 删除路径(如果存在)
52
+ */
53
+ async function removeIfExists(target) {
54
+ try {
55
+ await fs.rm(target, { recursive: true, force: true });
56
+ }
57
+ catch {
58
+ // ignore
59
+ }
60
+ }
61
+ export class InstanceService {
62
+ constructor(sdk, instanceRoot, workspacePath) {
63
+ this.sdk = sdk;
64
+ this.instanceRoot = instanceRoot;
65
+ this.workspacePath = workspacePath;
66
+ }
67
+ getPaths() {
68
+ return {
69
+ instanceRoot: this.instanceRoot,
70
+ stateFile: path.join(this.instanceRoot, "instance-state.json"),
71
+ skillsDir: path.join(this.instanceRoot, "skills"),
72
+ mcpDir: path.join(this.instanceRoot, "mcp"),
73
+ };
74
+ }
75
+ async loadState() {
76
+ const paths = this.getPaths();
77
+ try {
78
+ const raw = await fs.readFile(paths.stateFile, "utf-8");
79
+ const parsed = JSON.parse(raw);
80
+ return parsed;
81
+ }
82
+ catch {
83
+ return {
84
+ initialized: false,
85
+ skills: [],
86
+ mcpServers: [],
87
+ enabledApps: [],
88
+ skillEnabled: true,
89
+ mcpEnabled: true,
90
+ updatedAt: null,
91
+ };
92
+ }
93
+ }
94
+ async saveState(state) {
95
+ const paths = this.getPaths();
96
+ state.updatedAt = new Date().toISOString();
97
+ await fs.mkdir(path.dirname(paths.stateFile), { recursive: true });
98
+ await fs.writeFile(paths.stateFile, JSON.stringify(state, null, 2), "utf-8");
99
+ return state;
100
+ }
101
+ async ensureInstanceRoot() {
102
+ await fs.mkdir(this.instanceRoot, { recursive: true });
103
+ }
104
+ toAppFlags(appIds) {
105
+ return {
106
+ claude: appIds.includes("claude"),
107
+ claudecode: appIds.includes("claudecode"),
108
+ codex: appIds.includes("codex"),
109
+ gemini: appIds.includes("gemini"),
110
+ opencode: appIds.includes("opencode"),
111
+ openclaw: appIds.includes("openclaw"),
112
+ };
113
+ }
114
+ async initialize(options = {}) {
115
+ await this.ensureInstanceRoot();
116
+ const paths = this.getPaths();
117
+ const enabledApps = options.enabledApps ?? ["claudecode", "opencode"];
118
+ const appFlags = this.toAppFlags(enabledApps);
119
+ const result = {
120
+ ok: true,
121
+ instanceId: generateId(),
122
+ workspacePath: this.workspacePath,
123
+ instanceRoot: this.instanceRoot,
124
+ enabledApps,
125
+ skill: {
126
+ enabled: options.skillEnabled ?? true,
127
+ packagePresent: false,
128
+ },
129
+ mcp: {
130
+ enabled: options.mcpEnabled ?? true,
131
+ },
132
+ };
133
+ const state = await this.loadState();
134
+ state.initialized = true;
135
+ state.enabledApps = enabledApps;
136
+ state.skillEnabled = result.skill.enabled;
137
+ state.mcpEnabled = result.mcp.enabled;
138
+ if (result.skill.enabled) {
139
+ await fs.mkdir(paths.skillsDir, { recursive: true });
140
+ const skillCandidates = Array.isArray(options.skillPackages) && options.skillPackages.length > 0
141
+ ? options.skillPackages
142
+ : options.skillPackage
143
+ ? [options.skillPackage]
144
+ : [];
145
+ const installedSkills = [];
146
+ for (const candidate of skillCandidates) {
147
+ const installed = await this.installSkillPackage(candidate, paths.skillsDir, appFlags);
148
+ if (installed) {
149
+ installedSkills.push(installed);
150
+ }
151
+ }
152
+ if (installedSkills.length > 0) {
153
+ result.skill.packagePresent = true;
154
+ result.skill.installedCount = installedSkills.length;
155
+ result.skill.installed = installedSkills;
156
+ state.skills = installedSkills;
157
+ }
158
+ }
159
+ if (result.mcp.enabled) {
160
+ const mcpServers = Array.isArray(options.mcpServers)
161
+ ? options.mcpServers
162
+ : [];
163
+ const installedMcps = [];
164
+ for (const input of mcpServers) {
165
+ const server = await this.upsertMcpServer(input, appFlags);
166
+ if (server) {
167
+ installedMcps.push(server);
168
+ }
169
+ }
170
+ if (installedMcps.length > 0) {
171
+ result.mcp.installedCount = installedMcps.length;
172
+ result.mcp.installed = installedMcps;
173
+ state.mcpServers = installedMcps;
174
+ }
175
+ }
176
+ await this.saveState(state);
177
+ return result;
178
+ }
179
+ async installSkillPackage(pkg, targetDir, apps) {
180
+ const sourceDir = pkg.localPath;
181
+ if (!sourceDir || !(await pathExists(sourceDir))) {
182
+ return null;
183
+ }
184
+ const skillName = pkg.skillName || path.basename(sourceDir).replace(/\.skill$/, "");
185
+ const skillId = generateId("skill");
186
+ const targetSkillDir = path.join(targetDir, skillName);
187
+ await copyDir(sourceDir, targetSkillDir);
188
+ const installed = await this.sdk.installSkill({
189
+ sourceDir: targetSkillDir,
190
+ name: skillName,
191
+ apps,
192
+ });
193
+ return installed;
194
+ }
195
+ async upsertMcpServer(input, apps) {
196
+ const name = String(input.name || "").trim();
197
+ if (!name) {
198
+ return null;
199
+ }
200
+ const existingMcps = this.sdk.getAllMcpServers();
201
+ const existing = existingMcps.find((s) => s.name === name);
202
+ const serverSpec = {
203
+ type: input.transport || "stdio",
204
+ command: input.command,
205
+ url: input.url,
206
+ args: input.args,
207
+ env: input.env,
208
+ };
209
+ if (existing) {
210
+ return this.sdk.updateMcpServer(existing.id, {
211
+ name,
212
+ server: serverSpec,
213
+ apps,
214
+ });
215
+ }
216
+ return this.sdk.createMcpServer({
217
+ name,
218
+ server: serverSpec,
219
+ apps,
220
+ });
221
+ }
222
+ async getState() {
223
+ return this.loadState();
224
+ }
225
+ async updateState(partial) {
226
+ const state = await this.loadState();
227
+ Object.assign(state, partial);
228
+ return this.saveState(state);
229
+ }
230
+ async reset() {
231
+ const paths = this.getPaths();
232
+ await removeIfExists(paths.stateFile);
233
+ await removeIfExists(paths.skillsDir);
234
+ await removeIfExists(paths.mcpDir);
235
+ }
236
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 实例状态持久化服务
3
+ *
4
+ * 管理 Agent 实例的初始化状态持久化
5
+ */
6
+ import type { InstanceState } from '../types.js';
7
+ /**
8
+ * 获取实例状态文件路径
9
+ *
10
+ * @param agentId - Agent ID
11
+ * @returns 状态文件路径
12
+ */
13
+ export declare function getInstanceStateFile(agentId: string): string;
14
+ /**
15
+ * 加载实例状态
16
+ *
17
+ * @param agentId - Agent ID
18
+ * @returns 实例状态
19
+ */
20
+ export declare function loadInstanceState(agentId: string): Promise<InstanceState>;
21
+ /**
22
+ * 保存实例状态
23
+ *
24
+ * @param agentId - Agent ID
25
+ * @param state - 部分实例状态
26
+ * @returns 完整的实例状态
27
+ */
28
+ export declare function saveInstanceState(agentId: string, state: Partial<InstanceState>): Promise<InstanceState>;
29
+ /**
30
+ * 获取 Agent 初始化根目录
31
+ *
32
+ * @param agentId - Agent ID
33
+ * @returns 初始化根目录路径
34
+ */
35
+ export declare function getAgentInitRoot(agentId: string): string;
36
+ //# sourceMappingURL=instance-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-state.d.ts","sourceRoot":"","sources":["../../src/services/instance-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiB/E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,GAC5B,OAAO,CAAC,aAAa,CAAC,CAiBxB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 实例状态持久化服务
3
+ *
4
+ * 管理 Agent 实例的初始化状态持久化
5
+ */
6
+ import path from 'node:path';
7
+ import os from 'node:os';
8
+ import { promises as fs } from 'node:fs';
9
+ import { ensureEnabledTools } from '../utils/validation.js';
10
+ import { parseBoolean } from '../utils/validation.js';
11
+ import { ensureDir } from '../utils/file-utils.js';
12
+ /**
13
+ * 获取实例状态文件路径
14
+ *
15
+ * @param agentId - Agent ID
16
+ * @returns 状态文件路径
17
+ */
18
+ export function getInstanceStateFile(agentId) {
19
+ return path.join(os.tmpdir(), 'agentswork-runtime-init', String(agentId), 'state.json');
20
+ }
21
+ /**
22
+ * 加载实例状态
23
+ *
24
+ * @param agentId - Agent ID
25
+ * @returns 实例状态
26
+ */
27
+ export async function loadInstanceState(agentId) {
28
+ const filePath = getInstanceStateFile(agentId);
29
+ try {
30
+ const raw = await fs.readFile(filePath, 'utf-8');
31
+ return JSON.parse(raw);
32
+ }
33
+ catch {
34
+ return {
35
+ initialized: false,
36
+ skills: [],
37
+ mcpServers: [],
38
+ enabledTools: ['claude', 'opencode', 'codex'],
39
+ toolStatus: {},
40
+ skillEnabled: true,
41
+ mcpEnabled: true,
42
+ updatedAt: null,
43
+ };
44
+ }
45
+ }
46
+ /**
47
+ * 保存实例状态
48
+ *
49
+ * @param agentId - Agent ID
50
+ * @param state - 部分实例状态
51
+ * @returns 完整的实例状态
52
+ */
53
+ export async function saveInstanceState(agentId, state) {
54
+ const filePath = getInstanceStateFile(agentId);
55
+ await ensureDir(path.dirname(filePath));
56
+ const next = {
57
+ initialized: Boolean(state?.initialized),
58
+ skills: Array.isArray(state?.skills) ? state.skills : [],
59
+ mcpServers: Array.isArray(state?.mcpServers) ? state.mcpServers : [],
60
+ enabledTools: ensureEnabledTools(state?.enabledTools),
61
+ toolStatus: state?.toolStatus && typeof state.toolStatus === 'object' && !Array.isArray(state.toolStatus)
62
+ ? state.toolStatus
63
+ : {},
64
+ skillEnabled: parseBoolean(state?.skillEnabled, true),
65
+ mcpEnabled: parseBoolean(state?.mcpEnabled, true),
66
+ updatedAt: new Date().toISOString(),
67
+ };
68
+ await fs.writeFile(filePath, JSON.stringify(next, null, 2), 'utf-8');
69
+ return next;
70
+ }
71
+ /**
72
+ * 获取 Agent 初始化根目录
73
+ *
74
+ * @param agentId - Agent ID
75
+ * @returns 初始化根目录路径
76
+ */
77
+ export function getAgentInitRoot(agentId) {
78
+ return path.join(os.tmpdir(), 'agentswork-runtime-init', String(agentId));
79
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=instance-state.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-state.test.d.ts","sourceRoot":"","sources":["../../src/services/instance-state.test.ts"],"names":[],"mappings":""}