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,624 @@
1
+ import assert from "node:assert/strict";
2
+ import { describe, it } from "node:test";
3
+ import { AgentClient } from "./agent-client.js";
4
+ import { McpServer } from "./mcp-server.js";
5
+ import { MessageBuffer } from "./message-buffer.js";
6
+ function createServerWithUnread(unreadMessages, overrides = {}) {
7
+ const server = new McpServer();
8
+ Reflect.set(server, "messageBuffer", new MessageBuffer());
9
+ const agentClientStub = {
10
+ fetchUnreadMessages: async () => unreadMessages,
11
+ getStatusReporter: () => null,
12
+ getMyTasks: async () => [],
13
+ getState: () => ({
14
+ agentId: "agent-self",
15
+ displayName: "Self Agent",
16
+ isConnected: true,
17
+ isRegistered: true,
18
+ }),
19
+ ...overrides,
20
+ };
21
+ Reflect.set(server, "agentClient", agentClientStub);
22
+ return server;
23
+ }
24
+ describe("McpServer unread backlog hydration", () => {
25
+ it("poll_message should return unread direct and group messages fetched after restart", async () => {
26
+ const directMessage = {
27
+ msgId: "dm-offline-1",
28
+ senderId: "agent-b",
29
+ senderName: "Agent B",
30
+ content: "offline dm",
31
+ requireReply: false,
32
+ timestamp: new Date().toISOString(),
33
+ };
34
+ const groupMessage = {
35
+ msgId: 101,
36
+ senderId: "agent-c",
37
+ senderName: "Agent C",
38
+ content: "offline group",
39
+ timestamp: new Date().toISOString(),
40
+ projectName: "demo",
41
+ };
42
+ const server = createServerWithUnread({
43
+ directMessages: [directMessage],
44
+ groupMessages: [groupMessage],
45
+ });
46
+ const handleToolCall = Reflect.get(server, "handleToolCall");
47
+ const result = await handleToolCall.call(server, "poll_message", {});
48
+ assert.deepEqual(result, {
49
+ directMessages: [directMessage],
50
+ groupMessages: [groupMessage],
51
+ fromBuffer: true,
52
+ });
53
+ });
54
+ it("get_message should return unread messages fetched when local buffer is empty", async () => {
55
+ const directMessage = {
56
+ msgId: "dm-offline-2",
57
+ senderId: "agent-d",
58
+ senderName: "Agent D",
59
+ content: "wake up dm",
60
+ requireReply: false,
61
+ timestamp: new Date().toISOString(),
62
+ };
63
+ const server = createServerWithUnread({
64
+ directMessages: [directMessage],
65
+ groupMessages: [],
66
+ });
67
+ const handleToolCall = Reflect.get(server, "handleToolCall");
68
+ const result = await handleToolCall.call(server, "get_message", {});
69
+ assert.deepEqual(result, {
70
+ directMessages: [directMessage],
71
+ groupMessages: [],
72
+ fromBuffer: false,
73
+ });
74
+ });
75
+ it("get_message should still hydrate unread group messages after profile push is received", async () => {
76
+ const groupMessage = {
77
+ msgId: 301,
78
+ senderId: "agent-e",
79
+ senderName: "Agent E",
80
+ content: "offline group after profile",
81
+ timestamp: new Date().toISOString(),
82
+ projectName: "demo",
83
+ roomId: "inner_group:g-1",
84
+ };
85
+ const server = createServerWithUnread({
86
+ directMessages: [],
87
+ groupMessages: [groupMessage],
88
+ });
89
+ const messageBuffer = Reflect.get(server, "messageBuffer");
90
+ messageBuffer.setProfileMessage({
91
+ id: "agent-1",
92
+ displayName: "Agent One",
93
+ roleName: "Backend Agent",
94
+ prompt: "prompt",
95
+ isOnline: true,
96
+ onlineSince: new Date().toISOString(),
97
+ createdAt: new Date().toISOString(),
98
+ projectName: "demo",
99
+ });
100
+ const handleToolCall = Reflect.get(server, "handleToolCall");
101
+ const result = (await handleToolCall.call(server, "get_message", {}));
102
+ assert.equal(result.fromBuffer, false);
103
+ assert.deepEqual(result.directMessages, []);
104
+ assert.deepEqual(result.groupMessages, [groupMessage]);
105
+ });
106
+ it("get_message should filter out self-sent unread group messages fetched from server", async () => {
107
+ const selfGroupMessage = {
108
+ msgId: 401,
109
+ senderId: "agent-self",
110
+ senderName: "Self Agent",
111
+ content: "my own group message",
112
+ timestamp: new Date().toISOString(),
113
+ projectName: "demo",
114
+ roomId: "project:demo",
115
+ };
116
+ const otherGroupMessage = {
117
+ msgId: 402,
118
+ senderId: "agent-other",
119
+ senderName: "Other Agent",
120
+ content: "other group message",
121
+ timestamp: new Date().toISOString(),
122
+ projectName: "demo",
123
+ roomId: "project:demo",
124
+ };
125
+ const server = createServerWithUnread({
126
+ directMessages: [],
127
+ groupMessages: [selfGroupMessage, otherGroupMessage],
128
+ });
129
+ Reflect.set(server, "agentClient", {
130
+ fetchUnreadMessages: async () => ({
131
+ directMessages: [],
132
+ groupMessages: [selfGroupMessage, otherGroupMessage],
133
+ }),
134
+ getState: () => ({
135
+ agentId: "agent-self",
136
+ displayName: "Self Agent",
137
+ isConnected: true,
138
+ isRegistered: true,
139
+ }),
140
+ getMyTasks: async () => [],
141
+ getStatusReporter: () => null,
142
+ });
143
+ const handleToolCall = Reflect.get(server, "handleToolCall");
144
+ const result = await handleToolCall.call(server, "get_message", {});
145
+ assert.deepEqual(result, {
146
+ directMessages: [],
147
+ groupMessages: [otherGroupMessage],
148
+ fromBuffer: false,
149
+ });
150
+ });
151
+ it("get_message should inject non-persistent task notification when active tasks exist", async () => {
152
+ const server = createServerWithUnread({
153
+ directMessages: [],
154
+ groupMessages: [],
155
+ }, {
156
+ getMyTasks: async () => [
157
+ {
158
+ nodeId: "node-1",
159
+ taskName: "实现接口",
160
+ nodeStatus: "PENDING",
161
+ },
162
+ {
163
+ nodeId: "node-2",
164
+ taskName: "整理结果",
165
+ nodeStatus: "PROCESSING",
166
+ },
167
+ ],
168
+ });
169
+ const handleToolCall = Reflect.get(server, "handleToolCall");
170
+ const result = (await handleToolCall.call(server, "get_message", {}));
171
+ assert.equal(result.directMessages.length, 1);
172
+ assert.match(result.directMessages[0].msgId, /^task-notify-/);
173
+ assert.equal(result.directMessages[0].senderId, "MCP-System");
174
+ assert.equal(result.directMessages[0].receiverId, "agent-self");
175
+ assert.match(result.directMessages[0].content, /实现接口/);
176
+ assert.match(result.directMessages[0].content, /整理结果/);
177
+ assert.match(result.directMessages[0].prompt ?? "", /自动生成,无需持久化/);
178
+ assert.deepEqual(result.groupMessages, []);
179
+ assert.equal(result.fromBuffer, false);
180
+ });
181
+ it("poll_message should return immediately with task notification when active tasks exist", async () => {
182
+ const server = createServerWithUnread({
183
+ directMessages: [],
184
+ groupMessages: [],
185
+ }, {
186
+ getMyTasks: async () => [
187
+ {
188
+ nodeId: "node-3",
189
+ taskName: "处理流程任务",
190
+ nodeStatus: "PENDING",
191
+ },
192
+ ],
193
+ });
194
+ const handleToolCall = Reflect.get(server, "handleToolCall");
195
+ const result = (await handleToolCall.call(server, "poll_message", {}));
196
+ assert.equal(result.directMessages.length, 1);
197
+ assert.match(result.directMessages[0].msgId, /^task-notify-/);
198
+ assert.equal(result.directMessages[0].senderId, "MCP-System");
199
+ assert.match(result.directMessages[0].content, /处理流程任务/);
200
+ assert.deepEqual(result.groupMessages, []);
201
+ assert.equal(result.fromBuffer, true);
202
+ });
203
+ });
204
+ describe("McpServer group discovery tool", () => {
205
+ it("get_group_rooms should proxy discoverable groups from agent client", async () => {
206
+ const server = new McpServer();
207
+ Reflect.set(server, "agentClient", {
208
+ discoverGroupRooms: async () => ({
209
+ groups: [
210
+ {
211
+ id: "project:demo",
212
+ projectName: "demo",
213
+ roomType: "project",
214
+ scopeRefId: "demo",
215
+ name: "demo 公共群聊",
216
+ memberUserIds: ["agent-1"],
217
+ },
218
+ {
219
+ id: "inner_group:g-1",
220
+ projectName: "demo",
221
+ roomType: "inner_group",
222
+ scopeRefId: "g-1",
223
+ name: "后端小组",
224
+ memberUserIds: ["agent-1", "agent-2"],
225
+ },
226
+ ],
227
+ }),
228
+ getStatusReporter: () => null,
229
+ });
230
+ const handleToolCall = Reflect.get(server, "handleToolCall");
231
+ const result = await handleToolCall.call(server, "get_group_rooms", {});
232
+ assert.deepEqual(result, {
233
+ groups: [
234
+ {
235
+ id: "project:demo",
236
+ projectName: "demo",
237
+ roomType: "project",
238
+ scopeRefId: "demo",
239
+ name: "demo 公共群聊",
240
+ memberUserIds: ["agent-1"],
241
+ },
242
+ {
243
+ id: "inner_group:g-1",
244
+ projectName: "demo",
245
+ roomType: "inner_group",
246
+ scopeRefId: "g-1",
247
+ name: "后端小组",
248
+ memberUserIds: ["agent-1", "agent-2"],
249
+ },
250
+ ],
251
+ });
252
+ });
253
+ it("send_group should forward roomId to agent client", async () => {
254
+ const server = new McpServer();
255
+ let capturedArgs = null;
256
+ Reflect.set(server, "agentClient", {
257
+ sendGroupMessage: async (content, projectName, roomId) => {
258
+ capturedArgs = { content, projectName, roomId };
259
+ return {
260
+ msgId: 1,
261
+ timestamp: new Date().toISOString(),
262
+ };
263
+ },
264
+ getStatusReporter: () => null,
265
+ });
266
+ const handleToolCall = Reflect.get(server, "handleToolCall");
267
+ await handleToolCall.call(server, "send_group", {
268
+ content: "hello room",
269
+ projectName: "demo",
270
+ roomId: "inner_group:g-1",
271
+ });
272
+ assert.deepEqual(capturedArgs, {
273
+ content: "hello room",
274
+ projectName: "demo",
275
+ roomId: "inner_group:g-1",
276
+ });
277
+ });
278
+ it("hire_colleague should forward role creation payload to agent client", async () => {
279
+ const server = new McpServer();
280
+ let capturedArgs = null;
281
+ const hiredResult = {
282
+ id: "agent-new",
283
+ displayName: "后端开发同事-AB12",
284
+ roleName: "后端开发同事",
285
+ projectName: "demo",
286
+ workspacePath: "D:/workspace/demo",
287
+ runtimeBridgeBaseUrl: "http://127.0.0.1:18081",
288
+ runtimeStatus: "stopped",
289
+ };
290
+ Reflect.set(server, "agentClient", {
291
+ hireColleague: async (args) => {
292
+ capturedArgs = args;
293
+ return hiredResult;
294
+ },
295
+ getStatusReporter: () => null,
296
+ });
297
+ const handleToolCall = Reflect.get(server, "handleToolCall");
298
+ const result = await handleToolCall.call(server, "hire_colleague", {
299
+ projectName: "demo",
300
+ roleName: "后端开发同事",
301
+ displayName: "后端开发同事-AB12",
302
+ prompt: "负责后端接口开发",
303
+ workspacePath: "D:/workspace/demo",
304
+ runtimeSkillEnabled: true,
305
+ runtimeMcpEnabled: true,
306
+ });
307
+ assert.deepEqual(capturedArgs, {
308
+ projectName: "demo",
309
+ roleName: "后端开发同事",
310
+ displayName: "后端开发同事-AB12",
311
+ prompt: "负责后端接口开发",
312
+ workspacePath: "D:/workspace/demo",
313
+ runtimeSkillEnabled: true,
314
+ runtimeMcpEnabled: true,
315
+ });
316
+ assert.deepEqual(result, hiredResult);
317
+ });
318
+ it("hire_colleague should validate required workspacePath", async () => {
319
+ const server = new McpServer();
320
+ const handleToolCall = Reflect.get(server, "handleToolCall");
321
+ await assert.rejects(async () => {
322
+ await handleToolCall.call(server, "hire_colleague", {
323
+ roleName: "后端开发同事",
324
+ });
325
+ }, /workspacePath 参数是必需的/);
326
+ });
327
+ it("hire_colleagues_batch should forward batch payload to agent client", async () => {
328
+ const server = new McpServer();
329
+ let capturedArgs = null;
330
+ const batchResult = {
331
+ batchId: "hire-batch-001",
332
+ projectName: "demo",
333
+ summary: {
334
+ total: 2,
335
+ approved: 1,
336
+ rejected: 1,
337
+ created: 1,
338
+ failed: 0,
339
+ },
340
+ results: [
341
+ {
342
+ itemId: "item-1",
343
+ decision: "APPROVED",
344
+ status: "CREATED",
345
+ createdAgent: {
346
+ id: "agent-new",
347
+ displayName: "后端开发同事-AB12",
348
+ roleName: "后端开发同事",
349
+ },
350
+ },
351
+ {
352
+ itemId: "item-2",
353
+ decision: "REJECTED",
354
+ status: "REJECTED",
355
+ reason: "当前阶段暂不需要",
356
+ },
357
+ ],
358
+ };
359
+ Reflect.set(server, "agentClient", {
360
+ hireColleaguesBatch: async (args) => {
361
+ capturedArgs = args;
362
+ return batchResult;
363
+ },
364
+ getStatusReporter: () => null,
365
+ });
366
+ const handleToolCall = Reflect.get(server, "handleToolCall");
367
+ const result = await handleToolCall.call(server, "hire_colleagues_batch", {
368
+ projectName: "demo",
369
+ items: [
370
+ {
371
+ roleName: "后端开发同事",
372
+ displayName: "后端开发同事-AB12",
373
+ prompt: "负责后端接口开发",
374
+ workspacePath: "D:/workspace/demo/backend",
375
+ },
376
+ {
377
+ newRoleName: "测试开发同事",
378
+ displayName: "测试开发同事-CD34",
379
+ prompt: "负责接口测试",
380
+ workspacePath: "D:/workspace/demo/test",
381
+ },
382
+ ],
383
+ });
384
+ assert.deepEqual(capturedArgs, {
385
+ projectName: "demo",
386
+ items: [
387
+ {
388
+ roleName: "后端开发同事",
389
+ displayName: "后端开发同事-AB12",
390
+ prompt: "负责后端接口开发",
391
+ workspacePath: "D:/workspace/demo/backend",
392
+ },
393
+ {
394
+ newRoleName: "测试开发同事",
395
+ displayName: "测试开发同事-CD34",
396
+ prompt: "负责接口测试",
397
+ workspacePath: "D:/workspace/demo/test",
398
+ },
399
+ ],
400
+ });
401
+ assert.deepEqual(result, batchResult);
402
+ });
403
+ it("hire_colleagues_batch should validate required items", async () => {
404
+ const server = new McpServer();
405
+ const handleToolCall = Reflect.get(server, "handleToolCall");
406
+ await assert.rejects(async () => {
407
+ await handleToolCall.call(server, "hire_colleagues_batch", {
408
+ projectName: "demo",
409
+ items: [],
410
+ });
411
+ }, /items 参数是必需的/);
412
+ });
413
+ it("hire_colleagues_batch should validate every item workspacePath", async () => {
414
+ const server = new McpServer();
415
+ const handleToolCall = Reflect.get(server, "handleToolCall");
416
+ await assert.rejects(async () => {
417
+ await handleToolCall.call(server, "hire_colleagues_batch", {
418
+ projectName: "demo",
419
+ items: [
420
+ {
421
+ roleName: "后端开发同事",
422
+ workspacePath: "D:/workspace/demo/backend",
423
+ },
424
+ {
425
+ roleName: "测试开发同事",
426
+ },
427
+ ],
428
+ });
429
+ }, /items\[1\].workspacePath 参数是必需的/);
430
+ });
431
+ });
432
+ describe("McpServer incoming group message filtering", () => {
433
+ it("should ignore self-sent group messages pushed from websocket events", async () => {
434
+ const server = new McpServer();
435
+ Reflect.set(server, "messageBuffer", new MessageBuffer());
436
+ Reflect.set(server, "agentClient", {
437
+ getState: () => ({
438
+ agentId: "agent-self",
439
+ displayName: "Self Agent",
440
+ isConnected: true,
441
+ isRegistered: true,
442
+ }),
443
+ getStatusReporter: () => null,
444
+ });
445
+ const selfGroupMessage = {
446
+ msgId: 501,
447
+ senderId: "agent-self",
448
+ senderName: "Self Agent",
449
+ content: "loopback group message",
450
+ timestamp: new Date().toISOString(),
451
+ projectName: "demo",
452
+ roomId: "project:demo",
453
+ };
454
+ const handleIncomingMessage = Reflect.get(server, "handleIncomingMessage");
455
+ await handleIncomingMessage.call(server, selfGroupMessage);
456
+ const messageBuffer = Reflect.get(server, "messageBuffer");
457
+ const drained = messageBuffer.get();
458
+ assert.deepEqual(drained, {
459
+ directMessages: [],
460
+ groupMessages: [],
461
+ });
462
+ });
463
+ });
464
+ describe("AgentClient group room aggregation", () => {
465
+ it("fetchUnreadMessages should aggregate unread messages from all discoverable rooms", async () => {
466
+ const client = new AgentClient();
467
+ Reflect.set(client, "agentId", "agent-1");
468
+ Reflect.set(client, "projectName", "demo");
469
+ const calls = [];
470
+ Reflect.set(client, "httpClient", {
471
+ callTool: async (toolName, args) => {
472
+ calls.push({ toolName, args });
473
+ if (toolName === "get_dm_messages") {
474
+ return { messages: [] };
475
+ }
476
+ if (toolName === "discover_group_rooms") {
477
+ return {
478
+ groups: [
479
+ {
480
+ id: "project:demo",
481
+ projectName: "demo",
482
+ roomType: "project",
483
+ scopeRefId: "demo",
484
+ name: "demo 公共群聊",
485
+ memberUserIds: ["agent-1"],
486
+ },
487
+ {
488
+ id: "inner_group:g-1",
489
+ projectName: "demo",
490
+ roomType: "inner_group",
491
+ scopeRefId: "g-1",
492
+ name: "后端小组",
493
+ memberUserIds: ["agent-1", "agent-2"],
494
+ },
495
+ ],
496
+ };
497
+ }
498
+ if (toolName === "get_group_messages") {
499
+ if (args.roomId === "project:demo") {
500
+ return {
501
+ messages: [
502
+ {
503
+ msgId: 1,
504
+ senderId: "agent-a",
505
+ senderName: "Agent A",
506
+ projectName: "demo",
507
+ roomId: "project:demo",
508
+ content: "project message",
509
+ timestamp: new Date().toISOString(),
510
+ },
511
+ ],
512
+ currentReadPos: 1,
513
+ hasMore: false,
514
+ };
515
+ }
516
+ if (args.roomId === "inner_group:g-1") {
517
+ return {
518
+ messages: [
519
+ {
520
+ msgId: 2,
521
+ senderId: "agent-b",
522
+ senderName: "Agent B",
523
+ projectName: "demo",
524
+ roomId: "inner_group:g-1",
525
+ content: "inner group message",
526
+ timestamp: new Date().toISOString(),
527
+ },
528
+ ],
529
+ currentReadPos: 2,
530
+ hasMore: false,
531
+ };
532
+ }
533
+ }
534
+ throw new Error(`unexpected tool call: ${toolName}`);
535
+ },
536
+ });
537
+ const result = await client.fetchUnreadMessages();
538
+ assert.equal(result.directMessages.length, 0);
539
+ assert.deepEqual(result.groupMessages.map((message) => ({
540
+ roomId: message.roomId,
541
+ content: message.content,
542
+ })), [
543
+ { roomId: "project:demo", content: "project message" },
544
+ { roomId: "inner_group:g-1", content: "inner group message" },
545
+ ]);
546
+ assert.equal(calls.filter((call) => call.toolName === "get_group_messages").length, 2);
547
+ });
548
+ it("getGroupHistory should aggregate history from all discoverable rooms when roomId is omitted", async () => {
549
+ const client = new AgentClient();
550
+ Reflect.set(client, "agentId", "agent-1");
551
+ Reflect.set(client, "projectName", "demo");
552
+ Reflect.set(client, "httpClient", {
553
+ callTool: async (toolName, args) => {
554
+ if (toolName === "discover_group_rooms") {
555
+ return {
556
+ groups: [
557
+ {
558
+ id: "project:demo",
559
+ projectName: "demo",
560
+ roomType: "project",
561
+ scopeRefId: "demo",
562
+ name: "demo 公共群聊",
563
+ memberUserIds: ["agent-1"],
564
+ },
565
+ {
566
+ id: "inner_group:g-1",
567
+ projectName: "demo",
568
+ roomType: "inner_group",
569
+ scopeRefId: "g-1",
570
+ name: "后端小组",
571
+ memberUserIds: ["agent-1", "agent-2"],
572
+ },
573
+ ],
574
+ };
575
+ }
576
+ if (toolName === "get_group_history") {
577
+ if (args.roomId === "project:demo") {
578
+ return {
579
+ messages: [
580
+ {
581
+ msgId: 1,
582
+ senderId: "agent-a",
583
+ senderName: "Agent A",
584
+ projectName: "demo",
585
+ roomId: "project:demo",
586
+ content: "project history",
587
+ timestamp: "2026-03-25T10:00:00.000Z",
588
+ },
589
+ ],
590
+ count: 1,
591
+ };
592
+ }
593
+ if (args.roomId === "inner_group:g-1") {
594
+ return {
595
+ messages: [
596
+ {
597
+ msgId: 2,
598
+ senderId: "agent-b",
599
+ senderName: "Agent B",
600
+ projectName: "demo",
601
+ roomId: "inner_group:g-1",
602
+ content: "group history",
603
+ timestamp: "2026-03-25T11:00:00.000Z",
604
+ },
605
+ ],
606
+ count: 1,
607
+ };
608
+ }
609
+ }
610
+ throw new Error(`unexpected tool call: ${toolName}`);
611
+ },
612
+ });
613
+ const result = await client.getGroupHistory(50);
614
+ assert.deepEqual(result.messages.map((message) => ({
615
+ roomId: message.roomId,
616
+ content: message.content,
617
+ })), [
618
+ { roomId: "project:demo", content: "project history" },
619
+ { roomId: "inner_group:g-1", content: "group history" },
620
+ ]);
621
+ assert.equal(result.count, 2);
622
+ });
623
+ });
624
+ //# sourceMappingURL=mcp-server.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.test.js","sourceRoot":"","sources":["../src/mcp-server.test.ts"],"names":[],"mappings":"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"}