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,208 @@
1
+ /**
2
+ * 进程注册表服务
3
+ *
4
+ * 集中管理 Agent 进程生命周期状态,支持进程注册、追踪、状态管理和持久化
5
+ */
6
+ /**
7
+ * 进程状态类型
8
+ */
9
+ export type ProcessState = 'creating' | 'running' | 'stopping' | 'orphaned' | 'terminated' | 'unknown';
10
+ /**
11
+ * 进程健康状态
12
+ */
13
+ export interface HealthStatus {
14
+ cpu: number;
15
+ memoryMB: number;
16
+ status: string;
17
+ }
18
+ /**
19
+ * 进程记录接口
20
+ */
21
+ export interface ProcessRecord {
22
+ agentId: string;
23
+ sessionId: string;
24
+ pid: number;
25
+ mode: 'pty' | 'sdk';
26
+ state: ProcessState;
27
+ workspacePath: string;
28
+ command: string;
29
+ createdAt: string;
30
+ lastHeartbeat?: string;
31
+ healthStatus?: HealthStatus;
32
+ orphanedAt?: string;
33
+ metadata?: Record<string, unknown>;
34
+ }
35
+ /**
36
+ * 持久化会话输入(用于重建注册表)
37
+ */
38
+ export interface PersistedSessionInput {
39
+ agentId: string;
40
+ sessionId: string;
41
+ pid?: number;
42
+ workspacePath?: string;
43
+ command?: string;
44
+ mode?: 'pty' | 'sdk';
45
+ }
46
+ /**
47
+ * 获取持久化注册表文件路径
48
+ *
49
+ * @returns 注册表文件路径
50
+ */
51
+ export declare function getProcessRegistryFile(): string;
52
+ /**
53
+ * 进程注册表类
54
+ *
55
+ * 管理所有 Agent 进程的生命周期状态,提供注册、查询、更新和持久化功能
56
+ */
57
+ export declare class ProcessRegistry {
58
+ private static instance;
59
+ private readonly records;
60
+ private readonly pidToAgentId;
61
+ /**
62
+ * 私有构造函数,强制使用单例模式
63
+ */
64
+ private constructor();
65
+ /**
66
+ * 获取 ProcessRegistry 单例实例
67
+ *
68
+ * @returns ProcessRegistry 实例
69
+ */
70
+ static getInstance(): ProcessRegistry;
71
+ /**
72
+ * 持久化注册表状态到文件
73
+ */
74
+ private persist;
75
+ /**
76
+ * 注册新进程
77
+ *
78
+ * @param record - 进程记录(不包含 createdAt)
79
+ * @returns 是否注册成功
80
+ */
81
+ register(record: Omit<ProcessRecord, 'createdAt'>): Promise<void>;
82
+ /**
83
+ * 更新进程记录
84
+ *
85
+ * @param agentId - Agent ID
86
+ * @param updates - 要更新的字段
87
+ * @returns 是否更新成功
88
+ */
89
+ update(agentId: string, updates: Partial<ProcessRecord>): Promise<boolean>;
90
+ /**
91
+ * 通过 agentId 获取进程记录
92
+ *
93
+ * @param agentId - Agent ID
94
+ * @returns 进程记录或 undefined
95
+ */
96
+ get(agentId: string): ProcessRecord | undefined;
97
+ /**
98
+ * 通过 PID 获取进程记录
99
+ *
100
+ * @param pid - 进程 ID
101
+ * @returns 进程记录或 undefined
102
+ */
103
+ getByPid(pid: number): ProcessRecord | undefined;
104
+ /**
105
+ * 获取所有进程记录
106
+ *
107
+ * @returns 所有进程记录的数组
108
+ */
109
+ getAll(): ProcessRecord[];
110
+ /**
111
+ * 通过状态过滤进程记录
112
+ *
113
+ * @param state - 进程状态
114
+ * @returns 符合状态的进程记录数组
115
+ */
116
+ getByState(state: ProcessState): ProcessRecord[];
117
+ /**
118
+ * 检查进程是否被管理
119
+ *
120
+ * @param agentId - Agent ID
121
+ * @returns 是否被管理
122
+ */
123
+ isManaged(agentId: string): boolean;
124
+ /**
125
+ * 检查 PID 是否被管理
126
+ *
127
+ * @param pid - 进程 ID
128
+ * @returns 是否被管理
129
+ */
130
+ isManagedByPid(pid: number): boolean;
131
+ /**
132
+ * 标记进程为孤儿状态
133
+ *
134
+ * @param agentId - Agent ID
135
+ * @returns 是否标记成功
136
+ */
137
+ markOrphaned(agentId: string): Promise<boolean>;
138
+ /**
139
+ * 标记进程为终止状态
140
+ *
141
+ * @param agentId - Agent ID
142
+ * @returns 是否标记成功
143
+ */
144
+ markTerminated(agentId: string): Promise<boolean>;
145
+ /**
146
+ * 移除进程记录
147
+ *
148
+ * @param agentId - Agent ID
149
+ * @returns 是否移除成功
150
+ */
151
+ remove(agentId: string): Promise<boolean>;
152
+ /**
153
+ * 更新进程心跳时间
154
+ *
155
+ * @param agentId - Agent ID
156
+ * @returns 是否更新成功
157
+ */
158
+ updateHeartbeat(agentId: string): Promise<boolean>;
159
+ /**
160
+ * 更新进程健康状态
161
+ *
162
+ * @param agentId - Agent ID
163
+ * @param health - 健康状态
164
+ * @returns 是否更新成功
165
+ */
166
+ updateHealth(agentId: string, health: HealthStatus): Promise<boolean>;
167
+ /**
168
+ * 从持久化会话重建注册表
169
+ *
170
+ * @param sessions - 持久化会话数组
171
+ */
172
+ rebuildFromPersisted(sessions: PersistedSessionInput[]): Promise<void>;
173
+ /**
174
+ * 导出所有进程记录用于持久化
175
+ *
176
+ * @returns 所有进程记录的数组
177
+ */
178
+ exportState(): ProcessRecord[];
179
+ /**
180
+ * 获取进程数量统计
181
+ *
182
+ * @returns 各状态的进程数量
183
+ */
184
+ getStats(): Record<ProcessState | 'total', number>;
185
+ /**
186
+ * 清空所有进程记录
187
+ */
188
+ clear(): Promise<void>;
189
+ }
190
+ /**
191
+ * 获取 ProcessRegistry 单例实例的便捷函数
192
+ *
193
+ * @returns ProcessRegistry 实例
194
+ */
195
+ export declare function getProcessRegistry(): ProcessRegistry;
196
+ /**
197
+ * 加载持久化的进程注册表
198
+ *
199
+ * @returns 进程记录数组
200
+ */
201
+ export declare function loadPersistedProcessRegistry(): Promise<ProcessRecord[]>;
202
+ /**
203
+ * 保存进程注册表到持久化文件
204
+ *
205
+ * @param records - 进程记录数组
206
+ */
207
+ export declare function savePersistedProcessRegistry(records: ProcessRecord[]): Promise<void>;
208
+ //# sourceMappingURL=process-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-registry.d.ts","sourceRoot":"","sources":["../../src/services/process-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,354 @@
1
+ /**
2
+ * 进程注册表服务
3
+ *
4
+ * 集中管理 Agent 进程生命周期状态,支持进程注册、追踪、状态管理和持久化
5
+ */
6
+ import os from 'node:os';
7
+ import path from 'node:path';
8
+ import { promises as fs } from 'node:fs';
9
+ import { createLogger } from '../utils/logger.js';
10
+ import { ensureDir } from '../utils/file-utils.js';
11
+ const log = createLogger('process-registry');
12
+ /**
13
+ * 获取持久化注册表文件路径
14
+ *
15
+ * @returns 注册表文件路径
16
+ */
17
+ export function getProcessRegistryFile() {
18
+ return path.join(os.tmpdir(), 'agentswork-runtime-bridge', 'process-registry.json');
19
+ }
20
+ /**
21
+ * 进程注册表类
22
+ *
23
+ * 管理所有 Agent 进程的生命周期状态,提供注册、查询、更新和持久化功能
24
+ */
25
+ export class ProcessRegistry {
26
+ /**
27
+ * 私有构造函数,强制使用单例模式
28
+ */
29
+ constructor() {
30
+ this.records = new Map();
31
+ this.pidToAgentId = new Map();
32
+ }
33
+ /**
34
+ * 获取 ProcessRegistry 单例实例
35
+ *
36
+ * @returns ProcessRegistry 实例
37
+ */
38
+ static getInstance() {
39
+ if (ProcessRegistry.instance === null) {
40
+ ProcessRegistry.instance = new ProcessRegistry();
41
+ }
42
+ return ProcessRegistry.instance;
43
+ }
44
+ /**
45
+ * 持久化注册表状态到文件
46
+ */
47
+ async persist() {
48
+ const filePath = getProcessRegistryFile();
49
+ try {
50
+ await ensureDir(path.dirname(filePath));
51
+ const records = Array.from(this.records.values());
52
+ await fs.writeFile(filePath, JSON.stringify(records, null, 2), 'utf-8');
53
+ log.debug(`[persist] 已持久化 ${records.length} 条进程记录`);
54
+ }
55
+ catch (error) {
56
+ log.error('[persist] 持久化失败:', error);
57
+ }
58
+ }
59
+ /**
60
+ * 注册新进程
61
+ *
62
+ * @param record - 进程记录(不包含 createdAt)
63
+ * @returns 是否注册成功
64
+ */
65
+ async register(record) {
66
+ const fullRecord = {
67
+ ...record,
68
+ createdAt: new Date().toISOString(),
69
+ };
70
+ // 如果已存在相同 agentId,先移除旧的映射
71
+ const existing = this.records.get(record.agentId);
72
+ if (existing) {
73
+ this.pidToAgentId.delete(existing.pid);
74
+ }
75
+ this.records.set(record.agentId, fullRecord);
76
+ this.pidToAgentId.set(record.pid, record.agentId);
77
+ log.info(`[register] 注册进程: agentId=${record.agentId}, pid=${record.pid}, mode=${record.mode}, state=${record.state}`);
78
+ await this.persist();
79
+ }
80
+ /**
81
+ * 更新进程记录
82
+ *
83
+ * @param agentId - Agent ID
84
+ * @param updates - 要更新的字段
85
+ * @returns 是否更新成功
86
+ */
87
+ async update(agentId, updates) {
88
+ const record = this.records.get(agentId);
89
+ if (!record) {
90
+ log.warn(`[update] 未找到进程: agentId=${agentId}`);
91
+ return false;
92
+ }
93
+ // 如果更新包含 pid,需要更新 pid 映射
94
+ if (updates.pid !== undefined && updates.pid !== record.pid) {
95
+ this.pidToAgentId.delete(record.pid);
96
+ this.pidToAgentId.set(updates.pid, agentId);
97
+ }
98
+ Object.assign(record, updates);
99
+ log.debug(`[update] 更新进程: agentId=${agentId}, updates=${JSON.stringify(updates)}`);
100
+ await this.persist();
101
+ return true;
102
+ }
103
+ /**
104
+ * 通过 agentId 获取进程记录
105
+ *
106
+ * @param agentId - Agent ID
107
+ * @returns 进程记录或 undefined
108
+ */
109
+ get(agentId) {
110
+ return this.records.get(agentId);
111
+ }
112
+ /**
113
+ * 通过 PID 获取进程记录
114
+ *
115
+ * @param pid - 进程 ID
116
+ * @returns 进程记录或 undefined
117
+ */
118
+ getByPid(pid) {
119
+ const agentId = this.pidToAgentId.get(pid);
120
+ if (!agentId) {
121
+ return undefined;
122
+ }
123
+ return this.records.get(agentId);
124
+ }
125
+ /**
126
+ * 获取所有进程记录
127
+ *
128
+ * @returns 所有进程记录的数组
129
+ */
130
+ getAll() {
131
+ return Array.from(this.records.values());
132
+ }
133
+ /**
134
+ * 通过状态过滤进程记录
135
+ *
136
+ * @param state - 进程状态
137
+ * @returns 符合状态的进程记录数组
138
+ */
139
+ getByState(state) {
140
+ return this.getAll().filter(record => record.state === state);
141
+ }
142
+ /**
143
+ * 检查进程是否被管理
144
+ *
145
+ * @param agentId - Agent ID
146
+ * @returns 是否被管理
147
+ */
148
+ isManaged(agentId) {
149
+ return this.records.has(agentId);
150
+ }
151
+ /**
152
+ * 检查 PID 是否被管理
153
+ *
154
+ * @param pid - 进程 ID
155
+ * @returns 是否被管理
156
+ */
157
+ isManagedByPid(pid) {
158
+ return this.pidToAgentId.has(pid);
159
+ }
160
+ /**
161
+ * 标记进程为孤儿状态
162
+ *
163
+ * @param agentId - Agent ID
164
+ * @returns 是否标记成功
165
+ */
166
+ async markOrphaned(agentId) {
167
+ const record = this.records.get(agentId);
168
+ if (!record) {
169
+ log.warn(`[markOrphaned] 未找到进程: agentId=${agentId}`);
170
+ return false;
171
+ }
172
+ record.state = 'orphaned';
173
+ record.orphanedAt = new Date().toISOString();
174
+ log.info(`[markOrphaned] 标记进程为孤儿: agentId=${agentId}, orphanedAt=${record.orphanedAt}`);
175
+ await this.persist();
176
+ return true;
177
+ }
178
+ /**
179
+ * 标记进程为终止状态
180
+ *
181
+ * @param agentId - Agent ID
182
+ * @returns 是否标记成功
183
+ */
184
+ async markTerminated(agentId) {
185
+ const record = this.records.get(agentId);
186
+ if (!record) {
187
+ log.warn(`[markTerminated] 未找到进程: agentId=${agentId}`);
188
+ return false;
189
+ }
190
+ record.state = 'terminated';
191
+ log.info(`[markTerminated] 标记进程为终止: agentId=${agentId}`);
192
+ await this.persist();
193
+ return true;
194
+ }
195
+ /**
196
+ * 移除进程记录
197
+ *
198
+ * @param agentId - Agent ID
199
+ * @returns 是否移除成功
200
+ */
201
+ async remove(agentId) {
202
+ const record = this.records.get(agentId);
203
+ if (!record) {
204
+ log.warn(`[remove] 未找到进程: agentId=${agentId}`);
205
+ return false;
206
+ }
207
+ this.records.delete(agentId);
208
+ this.pidToAgentId.delete(record.pid);
209
+ log.info(`[remove] 移除进程: agentId=${agentId}, pid=${record.pid}`);
210
+ await this.persist();
211
+ return true;
212
+ }
213
+ /**
214
+ * 更新进程心跳时间
215
+ *
216
+ * @param agentId - Agent ID
217
+ * @returns 是否更新成功
218
+ */
219
+ async updateHeartbeat(agentId) {
220
+ const record = this.records.get(agentId);
221
+ if (!record) {
222
+ log.warn(`[updateHeartbeat] 未找到进程: agentId=${agentId}`);
223
+ return false;
224
+ }
225
+ record.lastHeartbeat = new Date().toISOString();
226
+ log.debug(`[updateHeartbeat] 更新心跳: agentId=${agentId}, lastHeartbeat=${record.lastHeartbeat}`);
227
+ await this.persist();
228
+ return true;
229
+ }
230
+ /**
231
+ * 更新进程健康状态
232
+ *
233
+ * @param agentId - Agent ID
234
+ * @param health - 健康状态
235
+ * @returns 是否更新成功
236
+ */
237
+ async updateHealth(agentId, health) {
238
+ const record = this.records.get(agentId);
239
+ if (!record) {
240
+ log.warn(`[updateHealth] 未找到进程: agentId=${agentId}`);
241
+ return false;
242
+ }
243
+ record.healthStatus = health;
244
+ log.debug(`[updateHealth] 更新健康状态: agentId=${agentId}, health=${JSON.stringify(health)}`);
245
+ await this.persist();
246
+ return true;
247
+ }
248
+ /**
249
+ * 从持久化会话重建注册表
250
+ *
251
+ * @param sessions - 持久化会话数组
252
+ */
253
+ async rebuildFromPersisted(sessions) {
254
+ log.info(`[rebuildFromPersisted] 从 ${sessions.length} 个持久化会话重建注册表`);
255
+ this.records.clear();
256
+ this.pidToAgentId.clear();
257
+ for (const session of sessions) {
258
+ if (!session.pid) {
259
+ log.warn(`[rebuildFromPersisted] 跳过无 PID 的会话: agentId=${session.agentId}`);
260
+ continue;
261
+ }
262
+ const record = {
263
+ agentId: session.agentId,
264
+ sessionId: session.sessionId,
265
+ pid: session.pid,
266
+ mode: session.mode || 'sdk',
267
+ state: 'unknown', // 重建时状态未知,需要外部检测
268
+ workspacePath: session.workspacePath || '',
269
+ command: session.command || '',
270
+ createdAt: new Date().toISOString(),
271
+ };
272
+ this.records.set(record.agentId, record);
273
+ this.pidToAgentId.set(record.pid, record.agentId);
274
+ log.debug(`[rebuildFromPersisted] 重建进程记录: agentId=${record.agentId}, pid=${record.pid}`);
275
+ }
276
+ log.info(`[rebuildFromPersisted] 重建完成,共 ${this.records.size} 条记录`);
277
+ await this.persist();
278
+ }
279
+ /**
280
+ * 导出所有进程记录用于持久化
281
+ *
282
+ * @returns 所有进程记录的数组
283
+ */
284
+ exportState() {
285
+ return this.getAll();
286
+ }
287
+ /**
288
+ * 获取进程数量统计
289
+ *
290
+ * @returns 各状态的进程数量
291
+ */
292
+ getStats() {
293
+ const stats = {
294
+ creating: 0,
295
+ running: 0,
296
+ stopping: 0,
297
+ orphaned: 0,
298
+ terminated: 0,
299
+ unknown: 0,
300
+ total: this.records.size,
301
+ };
302
+ for (const record of this.records.values()) {
303
+ stats[record.state]++;
304
+ }
305
+ return stats;
306
+ }
307
+ /**
308
+ * 清空所有进程记录
309
+ */
310
+ async clear() {
311
+ const count = this.records.size;
312
+ this.records.clear();
313
+ this.pidToAgentId.clear();
314
+ log.info(`[clear] 清空所有进程记录: ${count} 条`);
315
+ await this.persist();
316
+ }
317
+ }
318
+ ProcessRegistry.instance = null;
319
+ /**
320
+ * 获取 ProcessRegistry 单例实例的便捷函数
321
+ *
322
+ * @returns ProcessRegistry 实例
323
+ */
324
+ export function getProcessRegistry() {
325
+ return ProcessRegistry.getInstance();
326
+ }
327
+ /**
328
+ * 加载持久化的进程注册表
329
+ *
330
+ * @returns 进程记录数组
331
+ */
332
+ export async function loadPersistedProcessRegistry() {
333
+ const filePath = getProcessRegistryFile();
334
+ try {
335
+ const raw = await fs.readFile(filePath, 'utf-8');
336
+ const records = JSON.parse(raw);
337
+ log.debug(`[loadPersistedProcessRegistry] 加载了 ${records.length} 条进程记录`);
338
+ return records;
339
+ }
340
+ catch {
341
+ return [];
342
+ }
343
+ }
344
+ /**
345
+ * 保存进程注册表到持久化文件
346
+ *
347
+ * @param records - 进程记录数组
348
+ */
349
+ export async function savePersistedProcessRegistry(records) {
350
+ const filePath = getProcessRegistryFile();
351
+ await ensureDir(path.dirname(filePath));
352
+ await fs.writeFile(filePath, JSON.stringify(records, null, 2), 'utf-8');
353
+ log.debug(`[savePersistedProcessRegistry] 保存了 ${records.length} 条进程记录`);
354
+ }
@@ -0,0 +1,20 @@
1
+ import type { PersistedSession } from '../types.js';
2
+ type ActiveSessionSnapshot = {
3
+ sessionId: string;
4
+ workspacePath: string;
5
+ mode: 'pty' | 'sdk';
6
+ };
7
+ type PersistedSessionSnapshot = Pick<PersistedSession, 'sessionId' | 'workspacePath' | 'command' | 'status' | 'startedAt'> & {
8
+ mode?: 'pty';
9
+ };
10
+ /**
11
+ * 构建按 Agent 查询会话状态的统一响应。
12
+ *
13
+ * 主流程:
14
+ * 1. 活跃会话返回 hasActiveSession=true 且 isActive=true
15
+ * 2. 持久化可恢复会话返回 hasActiveSession=true 且 isActive=false
16
+ * 3. 无会话返回 false/false
17
+ */
18
+ export declare function buildSessionLookupResponse(agentId: string, activeSession?: ActiveSessionSnapshot | null, persistedSession?: PersistedSessionSnapshot | null): Record<string, unknown>;
19
+ export {};
20
+ //# sourceMappingURL=session-lookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-lookup.d.ts","sourceRoot":"","sources":["../../src/services/session-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB,CAAC;AAEF,KAAK,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG;IAC3H,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,qBAAqB,GAAG,IAAI,EAC5C,gBAAgB,CAAC,EAAE,wBAAwB,GAAG,IAAI,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoCzB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 构建按 Agent 查询会话状态的统一响应。
3
+ *
4
+ * 主流程:
5
+ * 1. 活跃会话返回 hasActiveSession=true 且 isActive=true
6
+ * 2. 持久化可恢复会话返回 hasActiveSession=true 且 isActive=false
7
+ * 3. 无会话返回 false/false
8
+ */
9
+ export function buildSessionLookupResponse(agentId, activeSession, persistedSession) {
10
+ if (activeSession) {
11
+ return {
12
+ ok: true,
13
+ agentId,
14
+ sessionId: activeSession.sessionId,
15
+ workspacePath: activeSession.workspacePath,
16
+ status: 'running',
17
+ mode: activeSession.mode,
18
+ hasActiveSession: true,
19
+ isActive: true,
20
+ };
21
+ }
22
+ if (persistedSession) {
23
+ return {
24
+ ok: true,
25
+ agentId,
26
+ sessionId: persistedSession.sessionId,
27
+ workspacePath: persistedSession.workspacePath,
28
+ command: persistedSession.command,
29
+ status: persistedSession.status,
30
+ startedAt: persistedSession.startedAt,
31
+ mode: persistedSession.mode ?? 'pty',
32
+ hasActiveSession: true,
33
+ isActive: false,
34
+ };
35
+ }
36
+ return {
37
+ ok: true,
38
+ agentId,
39
+ status: 'none',
40
+ hasActiveSession: false,
41
+ isActive: false,
42
+ };
43
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * 会话输出缓冲服务
3
+ *
4
+ * 管理终端会话的输出缓冲和刷新机制
5
+ */
6
+ import type { Session } from '../types.js';
7
+ /** 活跃会话存储 */
8
+ export declare const sessions: Map<string, Session>;
9
+ /**
10
+ * 发送状态更新到调度器
11
+ *
12
+ * @param agentId - Agent ID
13
+ * @param sessionId - 会话 ID
14
+ * @param status - 状态
15
+ * @param actionInfo - 可选的动作详情
16
+ */
17
+ export declare function sendStatus(agentId: string, sessionId: string | null, status: string, actionInfo?: {
18
+ actionType?: string;
19
+ actionLabel?: string;
20
+ actionDetail?: string;
21
+ }, usage?: {
22
+ inputTokens: number;
23
+ outputTokens: number;
24
+ }): Promise<void | {
25
+ data: unknown;
26
+ }>;
27
+ /**
28
+ * 发送输出到调度器
29
+ *
30
+ * @param agentId - Agent ID
31
+ * @param output - 输出内容
32
+ * @param sessionId - 会话 ID
33
+ * @param seq - 序列号
34
+ */
35
+ export declare function sendOutput(agentId: string, output: string, sessionId: string, seq: number): Promise<void>;
36
+ /**
37
+ * 发送 AskUserQuestion 事件到调度器。
38
+ *
39
+ * @param agentId - Agent ID
40
+ * @param sessionId - SDK 会话 ID
41
+ * @param questions - 结构化问题列表
42
+ */
43
+ export declare function sendQuestionRequest(agentId: string, sessionId: string, questions: unknown[]): Promise<void>;
44
+ /**
45
+ * 调度输出刷新
46
+ *
47
+ * @param sessionId - 会话 ID
48
+ */
49
+ export declare function scheduleOutputFlush(sessionId: string): void;
50
+ /**
51
+ * 刷新会话输出
52
+ *
53
+ * @param sessionId - 会话 ID
54
+ */
55
+ export declare function flushSessionOutput(sessionId: string): Promise<void>;
56
+ //# sourceMappingURL=session-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-output.d.ts","sourceRoot":"","sources":["../../src/services/session-output.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,aAAa;AACb,eAAO,MAAM,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAa,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,EACjF,KAAK,CAAC,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBnC;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAa3D;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE"}