aws-runtime-bridge 1.9.172 → 1.9.179

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 (383) hide show
  1. package/CHANGELOG.md +314 -0
  2. package/README.md +61 -2
  3. package/dist/adapter/AcodeSdkAdapter.d.ts +374 -1
  4. package/dist/adapter/AcodeSdkAdapter.js +3 -3
  5. package/dist/adapter/AdapterRegistry.d.ts +28 -0
  6. package/dist/adapter/ClaudeSdkAdapter.d.ts +71 -0
  7. package/dist/adapter/CodexSdkAdapter.d.ts +14 -0
  8. package/dist/adapter/OpencodeSdkAdapter.d.ts +44 -0
  9. package/dist/adapter/acode-tool-names.d.ts +9 -0
  10. package/dist/adapter/idle-poll-loop.d.ts +20 -0
  11. package/dist/adapter/index.d.ts +3 -0
  12. package/dist/adapter/instance-ai-config-resolver.d.ts +20 -0
  13. package/dist/adapter/prompts.d.ts +12 -0
  14. package/dist/adapter/types.d.ts +184 -0
  15. package/dist/browser/browser-bootstrap.d.ts +15 -0
  16. package/dist/browser/browser-connect-token.d.ts +11 -0
  17. package/dist/browser/browser-frame-encode.d.ts +32 -0
  18. package/dist/browser/browser-pool.d.ts +129 -0
  19. package/dist/browser/browser-profile-store.d.ts +41 -0
  20. package/dist/browser/browser-ws-bridge.d.ts +20 -0
  21. package/dist/browser/built-in-browser-tools.d.ts +44 -0
  22. package/dist/browser/element-locator.d.ts +25 -0
  23. package/dist/browser/element-picker.d.ts +30 -0
  24. package/dist/browser/frame-encode.d.ts +19 -0
  25. package/dist/browser/input-dispatcher.d.ts +35 -0
  26. package/dist/browser/listener-store.d.ts +44 -0
  27. package/dist/browser/page-listener-manager.d.ts +88 -0
  28. package/dist/browser/page-listener-types.d.ts +38 -0
  29. package/dist/browser/screencast-differ.d.ts +10 -0
  30. package/dist/browser/screencast-manager.d.ts +94 -0
  31. package/dist/browser/snapshot-serializer.d.ts +56 -0
  32. package/dist/browser/ssrf-guard.d.ts +44 -0
  33. package/dist/browser/stealth.d.ts +21 -0
  34. package/dist/browser/step-archive.d.ts +13 -0
  35. package/dist/browser/types.d.ts +100 -0
  36. package/dist/browser/ws-server.d.ts +54 -0
  37. package/dist/config.d.ts +138 -2
  38. package/dist/config.js +2 -2
  39. package/dist/desktop/built-in-desktop-tools.d.ts +68 -0
  40. package/dist/desktop/built-in-desktop-tools.js +2 -1
  41. package/dist/desktop/desktop-control.d.ts +142 -0
  42. package/dist/desktop/desktop-control.js +2 -0
  43. package/dist/desktop/desktop-mcp-client.d.ts +28 -0
  44. package/dist/desktop/desktop-staleness.d.ts +66 -0
  45. package/dist/desktop/desktop-staleness.js +2 -0
  46. package/dist/index.d.ts +4 -0
  47. package/dist/index.js +1 -1
  48. package/dist/middleware/auth.d.ts +26 -0
  49. package/dist/middleware/auth.js +1 -1
  50. package/dist/remote-desktop/computer-control.d.ts +3 -0
  51. package/dist/remote-desktop/coords.d.ts +6 -0
  52. package/dist/remote-desktop/frame-backpressure.d.ts +10 -0
  53. package/dist/remote-desktop/frame-encode.d.ts +3 -0
  54. package/dist/remote-desktop/index.js +2 -2
  55. package/dist/remote-desktop/input-dispatcher.d.ts +4 -0
  56. package/dist/remote-desktop/permission-manager.d.ts +3 -0
  57. package/dist/remote-desktop/screen-capture.d.ts +91 -0
  58. package/dist/remote-desktop/session-manager.d.ts +47 -0
  59. package/dist/remote-desktop/session-manager.js +1 -1
  60. package/dist/remote-desktop/system-backend.d.ts +64 -0
  61. package/dist/remote-desktop/types.d.ts +25 -0
  62. package/dist/remote-desktop/ui-automation.d.ts +11 -0
  63. package/dist/remote-desktop/win32-api.d.ts +10 -0
  64. package/dist/routes/acode-todos.d.ts +13 -0
  65. package/dist/routes/agent-state.d.ts +15 -0
  66. package/dist/routes/ai-sources.js +1 -1
  67. package/dist/routes/background-tasks.d.ts +18 -0
  68. package/dist/routes/background-tasks.js +2 -2
  69. package/dist/routes/bridge-temp-files.d.ts +1 -0
  70. package/dist/routes/bridge-temp-files.js +2 -0
  71. package/dist/routes/browser-listeners.d.ts +17 -0
  72. package/dist/routes/browser-sessions.d.ts +10 -0
  73. package/dist/routes/capabilities.js +1 -1
  74. package/dist/routes/dashboard-icon.d.ts +9 -0
  75. package/dist/routes/dashboard-icon.js +2 -0
  76. package/dist/routes/dashboard-theme.d.ts +24 -0
  77. package/dist/routes/dashboard-theme.js +157 -0
  78. package/dist/routes/dashboard.d.ts +9 -0
  79. package/dist/routes/dashboard.js +2021 -628
  80. package/dist/routes/debug-mount.d.ts +16 -0
  81. package/dist/routes/desktop-control.d.ts +15 -0
  82. package/dist/routes/desktop-control.js +2 -0
  83. package/dist/routes/events.d.ts +4 -0
  84. package/dist/routes/file-browser.d.ts +15 -10
  85. package/dist/routes/file-browser.js +1 -1
  86. package/dist/routes/file-change-diff.d.ts +25 -0
  87. package/dist/routes/file-diff-rollback.d.ts +28 -0
  88. package/dist/routes/file-snapshot.d.ts +7 -0
  89. package/dist/routes/git.d.ts +185 -0
  90. package/dist/routes/git.js +34 -34
  91. package/dist/routes/instance-tool-status.d.ts +5 -0
  92. package/dist/routes/instance.d.ts +8 -0
  93. package/dist/routes/instance.js +1 -1
  94. package/dist/routes/jdks.d.ts +4 -0
  95. package/dist/routes/launch.d.ts +5 -0
  96. package/dist/routes/lsp-providers.d.ts +11 -0
  97. package/dist/routes/lsp-providers.js +2 -0
  98. package/dist/routes/lsp.d.ts +41 -0
  99. package/dist/routes/lsp.js +4 -2
  100. package/dist/routes/mcp-extra.d.ts +15 -0
  101. package/dist/routes/mcp.d.ts +16 -0
  102. package/dist/routes/mcp.js +1 -1
  103. package/dist/routes/plugins.d.ts +19 -0
  104. package/dist/routes/plugins.js +1 -1
  105. package/dist/routes/processes.d.ts +4 -0
  106. package/dist/routes/properties.d.ts +4 -0
  107. package/dist/routes/pty.d.ts +29 -0
  108. package/dist/routes/runtime-binding.d.ts +3 -0
  109. package/dist/routes/sessions.d.ts +22 -0
  110. package/dist/routes/sessions.js +1 -1
  111. package/dist/routes/skills.d.ts +15 -0
  112. package/dist/routes/skills.js +1 -1
  113. package/dist/routes/sub-agents.d.ts +11 -0
  114. package/dist/routes/sub-agents.js +1 -1
  115. package/dist/routes/task-context.d.ts +5 -0
  116. package/dist/routes/tech-stack.d.ts +6 -0
  117. package/dist/routes/tech-stack.js +2 -0
  118. package/dist/routes/terminal.d.ts +122 -0
  119. package/dist/routes/terminal.js +22 -22
  120. package/dist/routes/workspace-index.d.ts +12 -0
  121. package/dist/routes/workspace-index.js +2 -0
  122. package/dist/routes/yml.d.ts +4 -0
  123. package/dist/scripts/migrate-user-scopes.d.ts +26 -0
  124. package/dist/scripts/migrate-user-scopes.js +2 -0
  125. package/dist/services/access-control.d.ts +21 -0
  126. package/dist/services/acode-bg-manager.d.ts +21 -0
  127. package/dist/services/acode-package.d.ts +10 -0
  128. package/dist/services/acode-package.js +1 -1
  129. package/dist/services/agent-capability-sync.d.ts +26 -0
  130. package/dist/services/agent-capability-sync.js +1 -1
  131. package/dist/services/agent-event-store.d.ts +20 -0
  132. package/dist/services/agent-ownership.d.ts +58 -0
  133. package/dist/services/agent-ownership.js +3 -0
  134. package/dist/services/agent-process-manager.d.ts +154 -0
  135. package/dist/services/agent-pty-manager.d.ts +39 -0
  136. package/dist/services/agent-pty-manager.js +5 -4
  137. package/dist/services/agent-startup-memory.d.ts +34 -0
  138. package/dist/services/agent-startup-memory.js +4 -4
  139. package/dist/services/ai-config-service.d.ts +26 -52
  140. package/dist/services/ai-config-service.js +1 -3
  141. package/dist/services/ai-source-apply.d.ts +7 -15
  142. package/dist/services/ai-source-apply.js +1 -1
  143. package/dist/services/auto-register.d.ts +165 -1
  144. package/dist/services/auto-register.js +1 -1
  145. package/dist/services/aws-client-agent-mcp.d.ts +14 -0
  146. package/dist/services/aws-client-agent-mcp.js +2 -2
  147. package/dist/services/bridge-package-publish-hooks.d.ts +14 -0
  148. package/dist/services/bridge-pairing.d.ts +82 -0
  149. package/dist/services/bridge-pairing.js +2 -0
  150. package/dist/services/bridge-temp-files.d.ts +65 -0
  151. package/dist/services/bridge-temp-files.js +2 -0
  152. package/dist/services/browser-session-manager.d.ts +71 -0
  153. package/dist/services/capability-config.d.ts +60 -15
  154. package/dist/services/capability-config.js +2 -2
  155. package/dist/services/change-cache-retention.d.ts +9 -0
  156. package/dist/services/changelog.d.ts +9 -0
  157. package/dist/services/cli-commands.d.ts +82 -0
  158. package/dist/services/cli-commands.js +6 -6
  159. package/dist/services/connection-key-rotation.d.ts +27 -0
  160. package/dist/services/connection-key-rotation.js +2 -0
  161. package/dist/services/debug-mount.d.ts +49 -0
  162. package/dist/services/desktop-mcp-manager.d.ts +103 -1
  163. package/dist/services/desktop-mcp-manager.js +1 -1
  164. package/dist/services/event-delta-pusher.d.ts +15 -0
  165. package/dist/services/fileSnapshotStore.d.ts +42 -0
  166. package/dist/services/fileSnapshotStore.js +1 -1
  167. package/dist/services/gitignore.d.ts +21 -0
  168. package/dist/services/gitignore.js +2 -0
  169. package/dist/services/instance-ai-config-service.d.ts +9 -0
  170. package/dist/services/instance-ai-config-service.js +1 -1
  171. package/dist/services/instance-features.d.ts +127 -0
  172. package/dist/services/instance-features.js +1 -1
  173. package/dist/services/instance-init-service.d.ts +3 -0
  174. package/dist/services/instance-init-service.js +1 -1
  175. package/dist/services/instance-state.d.ts +23 -0
  176. package/dist/services/jdk-scanner.d.ts +15 -0
  177. package/dist/services/launch-manager.d.ts +138 -0
  178. package/dist/services/launch-metrics.d.ts +42 -0
  179. package/dist/services/launch-streams.d.ts +19 -0
  180. package/dist/services/lifecycle-state.d.ts +5 -0
  181. package/dist/services/log-retention.d.ts +38 -0
  182. package/dist/services/log-retention.js +1 -1
  183. package/dist/services/lsp/install-manager.d.ts +55 -0
  184. package/dist/services/lsp/install-manager.js +2 -0
  185. package/dist/services/lsp/provider-registry.d.ts +108 -0
  186. package/dist/services/lsp/provider-registry.js +2 -0
  187. package/dist/services/lsp/uri-rewrite.d.ts +44 -0
  188. package/dist/services/lsp/uri-rewrite.js +2 -0
  189. package/dist/services/lsp-stdio-bridge.d.ts +41 -4
  190. package/dist/services/lsp-stdio-bridge.js +3 -3
  191. package/dist/services/mcp-deploy.d.ts +45 -4
  192. package/dist/services/mcp-deploy.js +4 -4
  193. package/dist/services/mcp-env-injector.d.ts +52 -0
  194. package/dist/services/mcp-launch-binding-queue.d.ts +12 -0
  195. package/dist/services/mcp-package.d.ts +22 -0
  196. package/dist/services/mcp-package.js +1 -1
  197. package/dist/services/mcp-probe-client.d.ts +19 -0
  198. package/dist/services/mcp-probe-client.js +1 -1
  199. package/dist/services/open-doc-events.d.ts +43 -0
  200. package/dist/services/open-doc-events.js +2 -0
  201. package/dist/services/open-doc-registry.d.ts +59 -0
  202. package/dist/services/open-doc-registry.js +2 -0
  203. package/dist/services/orphan-monitor.d.ts +43 -0
  204. package/dist/services/panel-auth.d.ts +24 -0
  205. package/dist/services/panel-env.d.ts +28 -0
  206. package/dist/services/plugin-deployment.d.ts +34 -1
  207. package/dist/services/plugin-deployment.js +2 -2
  208. package/dist/services/plugin-event-buffer.d.ts +21 -0
  209. package/dist/services/plugin-fs.d.ts +11 -0
  210. package/dist/services/plugin-handler-adapter.d.ts +13 -0
  211. package/dist/services/plugin-listener-runner.d.ts +10 -0
  212. package/dist/services/plugin-loader.d.ts +15 -0
  213. package/dist/services/plugin-manager.d.ts +95 -9
  214. package/dist/services/plugin-manager.js +4 -4
  215. package/dist/services/plugin-manifest.d.ts +14 -0
  216. package/dist/services/plugin-package.d.ts +13 -0
  217. package/dist/services/plugin-runtime.d.ts +15 -0
  218. package/dist/services/port-detector.d.ts +15 -0
  219. package/dist/services/process-detail.d.ts +3 -0
  220. package/dist/services/process-detector.d.ts +132 -0
  221. package/dist/services/process-registry.d.ts +120 -0
  222. package/dist/services/process-top.d.ts +6 -0
  223. package/dist/services/request-identity.d.ts +77 -0
  224. package/dist/services/request-identity.js +2 -0
  225. package/dist/services/request-invalid-dump.d.ts +4 -0
  226. package/dist/services/request-invalid-dump.js +1 -1
  227. package/dist/services/ring-buffer.d.ts +33 -0
  228. package/dist/services/runtime-binding.d.ts +56 -4
  229. package/dist/services/runtime-binding.js +4 -4
  230. package/dist/services/runtime-lifecycle-policy.d.ts +17 -0
  231. package/dist/services/runtime-resources-snapshot.d.ts +26 -0
  232. package/dist/services/runtime-resources-snapshot.js +2 -2
  233. package/dist/services/sdk-tool-file-change-recorder.d.ts +9 -0
  234. package/dist/services/session-output.d.ts +63 -0
  235. package/dist/services/session-output.js +3 -3
  236. package/dist/services/skill-manager.d.ts +42 -5
  237. package/dist/services/skill-manager.js +3 -3
  238. package/dist/services/snapshot-retention.d.ts +30 -0
  239. package/dist/services/snapshot-retention.js +2 -0
  240. package/dist/services/startup-config-wizard.d.ts +7 -1
  241. package/dist/services/startup-config-wizard.js +10 -10
  242. package/dist/services/system-metrics.d.ts +3 -0
  243. package/dist/services/tech-stack-scanner.d.ts +43 -0
  244. package/dist/services/tech-stack-scanner.js +2 -0
  245. package/dist/services/terminal-persistence.d.ts +43 -0
  246. package/dist/services/tool-installer.d.ts +12 -0
  247. package/dist/services/tunnel-client.d.ts +99 -2
  248. package/dist/services/tunnel-client.js +1 -1
  249. package/dist/services/update-log.d.ts +6 -0
  250. package/dist/services/update-notifier.d.ts +17 -0
  251. package/dist/services/update-notifier.js +2 -2
  252. package/dist/services/user-scope.d.ts +115 -0
  253. package/dist/services/user-scope.js +2 -0
  254. package/dist/services/windows-service-manager.d.ts +12 -0
  255. package/dist/services/workspace-files.d.ts +64 -0
  256. package/dist/services/workspace-index/index-manager.d.ts +46 -0
  257. package/dist/services/workspace-index/index-manager.js +2 -0
  258. package/dist/services/workspace-index/indexer.d.ts +15 -0
  259. package/dist/services/workspace-index/indexer.js +2 -0
  260. package/dist/services/workspace-index/query.d.ts +74 -0
  261. package/dist/services/workspace-index/query.js +5 -0
  262. package/dist/services/workspace-index/resolver.d.ts +26 -0
  263. package/dist/services/workspace-index/resolver.js +2 -0
  264. package/dist/services/workspace-index/types.d.ts +89 -0
  265. package/dist/services/workspace-index/types.js +2 -0
  266. package/dist/services/workspace-watch.d.ts +4 -0
  267. package/dist/services/workspaceTaskChangeWatcher.d.ts +49 -0
  268. package/dist/services/workspaceTaskChangeWatcher.js +2 -2
  269. package/dist/types.d.ts +9 -0
  270. package/dist/utils/config-write-queue.d.ts +11 -0
  271. package/dist/utils/env-safety.d.ts +21 -0
  272. package/dist/utils/file-utils.d.ts +15 -0
  273. package/dist/utils/instance-ai-config-debug-logger.d.ts +15 -0
  274. package/dist/utils/lifecycle-log.d.ts +5 -0
  275. package/dist/utils/logger.d.ts +13 -0
  276. package/dist/utils/logger.js +2 -1
  277. package/dist/utils/npm-version.d.ts +10 -0
  278. package/dist/utils/path-utils.d.ts +12 -0
  279. package/dist/utils/scheduler-url.d.ts +18 -0
  280. package/dist/utils/scheduler-url.js +2 -0
  281. package/dist/utils/sdk-package-loader.d.ts +13 -0
  282. package/dist/utils/sdk-package-loader.js +1 -1
  283. package/dist/utils/target-identity.d.ts +31 -0
  284. package/dist/utils/target-identity.js +2 -0
  285. package/dist/utils/validation.d.ts +17 -0
  286. package/dist/utils/yaml-utils.d.ts +48 -0
  287. package/package/acode/dist/__tests__/summary-request-helper.d.ts +12 -0
  288. package/package/acode/dist/__tests__/summary-request-helper.js +2 -0
  289. package/package/acode/dist/ask-user-question-tool.d.ts +17 -0
  290. package/package/acode/dist/await-complete-tool.d.ts +12 -0
  291. package/package/acode/dist/background-command-manager.d.ts +105 -0
  292. package/package/acode/dist/background-command-store.d.ts +27 -0
  293. package/package/acode/dist/background-command-tools.d.ts +8 -0
  294. package/package/acode/dist/background-output-ringbuffer.d.ts +15 -0
  295. package/package/acode/dist/built-in-file-tools.d.ts +65 -0
  296. package/package/acode/dist/built-in-symbols-tool.d.ts +3 -0
  297. package/package/acode/dist/builtins/commandArtifacts.d.ts +3 -0
  298. package/package/acode/dist/builtins/shellCommandPreparation.d.ts +17 -0
  299. package/package/acode/dist/builtins/shellCommandRunner.d.ts +4 -0
  300. package/package/acode/dist/builtins/shellOutputDecoder.d.ts +15 -0
  301. package/package/acode/dist/cache-control.d.ts +71 -0
  302. package/package/acode/dist/cache-control.js +2 -0
  303. package/package/acode/dist/commands/commandLoader.d.ts +3 -0
  304. package/package/acode/dist/commands/commandParser.d.ts +3 -0
  305. package/package/acode/dist/commands/commandRegistry.d.ts +3 -0
  306. package/package/acode/dist/compaction.d.ts +388 -4
  307. package/package/acode/dist/compaction.js +19 -17
  308. package/package/acode/dist/config.d.ts +3 -0
  309. package/package/acode/dist/context-overflow.d.ts +32 -0
  310. package/package/acode/dist/fs-utils.d.ts +18 -0
  311. package/package/acode/dist/hooks/hookBus.d.ts +3 -0
  312. package/package/acode/dist/image-utils.d.ts +35 -0
  313. package/package/acode/dist/index.d.ts +1 -0
  314. package/package/acode/dist/index.js +1 -1
  315. package/package/acode/dist/mcpToolNames.d.ts +32 -0
  316. package/package/acode/dist/microcompact.d.ts +110 -0
  317. package/package/acode/dist/microcompact.js +2 -0
  318. package/package/acode/dist/parsers/ast-cache.d.ts +41 -0
  319. package/package/acode/dist/parsers/file-index.d.ts +83 -0
  320. package/package/acode/dist/parsers/file-index.js +4 -0
  321. package/package/acode/dist/parsers/language-detector.d.ts +4 -0
  322. package/package/acode/dist/parsers/tree-sitter-loader.d.ts +12 -0
  323. package/package/acode/dist/parsers/types.d.ts +11 -0
  324. package/package/acode/dist/paths.d.ts +14 -0
  325. package/package/acode/dist/plugin-types.d.ts +34 -0
  326. package/package/acode/dist/read-file-state.d.ts +15 -0
  327. package/package/acode/dist/runtime-environment.d.ts +16 -0
  328. package/package/acode/dist/runtime.d.ts +828 -9
  329. package/package/acode/dist/runtime.js +40 -33
  330. package/package/acode/dist/skill-tool.d.ts +20 -0
  331. package/package/acode/dist/sub-agent-manager.d.ts +169 -0
  332. package/package/acode/dist/sub-agent-manager.js +1 -1
  333. package/package/acode/dist/sub-agent-store.d.ts +50 -0
  334. package/package/acode/dist/sub-agent-tools.d.ts +15 -0
  335. package/package/acode/dist/sub-agent-types.d.ts +13 -0
  336. package/package/acode/dist/terminal-tool.d.ts +15 -0
  337. package/package/acode/dist/terminal-types.d.ts +10 -0
  338. package/package/acode/dist/todo-store.d.ts +15 -0
  339. package/package/acode/dist/token-estimator.d.ts +32 -0
  340. package/package/acode/dist/token-estimator.js +2 -0
  341. package/package/acode/dist/tool-allocation.d.ts +113 -0
  342. package/package/acode/dist/tool-concurrency/index.d.ts +8 -0
  343. package/package/acode/dist/tool-concurrency/observability.d.ts +32 -0
  344. package/package/acode/dist/tool-concurrency/resource-lock.d.ts +30 -0
  345. package/package/acode/dist/tool-concurrency/scheduler.d.ts +19 -0
  346. package/package/acode/dist/tool-concurrency/types.d.ts +57 -0
  347. package/package/acode/dist/tool-group-manager.d.ts +195 -0
  348. package/package/acode/dist/tool-group-manager.js +4 -4
  349. package/package/acode/dist/types.d.ts +192 -0
  350. package/package/aws-client-agent-mcp/README.md +130 -215
  351. package/package/aws-client-agent-mcp/dist/ability-market-tools.d.ts +57 -0
  352. package/package/aws-client-agent-mcp/dist/ability-market-tools.js +1 -1
  353. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +290 -3
  354. package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
  355. package/package/aws-client-agent-mcp/dist/config.d.ts +18 -0
  356. package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
  357. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +70 -0
  358. package/package/aws-client-agent-mcp/dist/http-client.d.ts +61 -0
  359. package/package/aws-client-agent-mcp/dist/index.d.ts +10 -0
  360. package/package/aws-client-agent-mcp/dist/logger.d.ts +24 -0
  361. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +610 -0
  362. package/package/aws-client-agent-mcp/dist/mcp-server.js +25 -23
  363. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +158 -0
  364. package/package/aws-client-agent-mcp/dist/mcp-tools.js +38 -22
  365. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +102 -2
  366. package/package/aws-client-agent-mcp/dist/memory-store.js +27 -2
  367. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +18 -0
  368. package/package/aws-client-agent-mcp/dist/memory-tools.js +13 -9
  369. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +86 -0
  370. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +24 -0
  371. package/package/aws-client-agent-mcp/dist/office/office-equation.d.ts +19 -0
  372. package/package/aws-client-agent-mcp/dist/office/office-image.d.ts +18 -0
  373. package/package/aws-client-agent-mcp/dist/office/office-workspace.d.ts +29 -0
  374. package/package/aws-client-agent-mcp/dist/parent-lifecycle.d.ts +18 -0
  375. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +6 -0
  376. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +5 -1
  377. package/package/aws-client-agent-mcp/dist/server-memory-store.js +1 -1
  378. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +41 -0
  379. package/package/aws-client-agent-mcp/dist/tool-groups.d.ts +136 -0
  380. package/package/aws-client-agent-mcp/dist/types.d.ts +174 -0
  381. package/package/aws-client-agent-mcp/dist/watchdog.d.ts +7 -0
  382. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +108 -0
  383. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import{existsSync as f,mkdirSync as p,readFileSync as d,renameSync as y,rmSync as h,writeFileSync as M}from"node:fs";import s from"node:path";import{getBridgeTemplateMcpDir as v,getBridgeTemplateMcpPackagesDir as $}from"../config.js";import{downloadPluginZip as N}from"../utils/file-utils.js";import{createLogger as j}from"../utils/logger.js";import{setDeployedDefaultsProvider as C,reconcileDefaultsFromDeployed as F}from"./capability-config.js";import{isCapabilityEnabled as P}from"./instance-features.js";import{extractMcpPackageZip as E,runMcpPackageInstall as b}from"./mcp-package.js";const g=j("mcp-deploy"),O=1;class c{static getInstance(){return this._instance||(this._instance=new c(s.join(v(),"deployed"))),this._instance}constructor(e){this.rootDir=e}static isValidName(e){return!e||e==="."||e===".."||e!==s.basename(e)?!1:/^[a-zA-Z0-9_.-]+$/.test(e)}manifestFile(){return s.join(this.rootDir,"manifest.json")}specFile(e){const r=s.join(this.rootDir,`${e}.json`),t=s.resolve(this.rootDir);if(s.resolve(r)!==s.join(t,`${e}.json`))throw new Error(`MCP \u6A21\u677F\u6587\u4EF6\u8D8A\u51FA\u90E8\u7F72\u533A: ${e}`);return r}isHealthy(e){return f(this.specFile(e))}readManifest(){try{const e=JSON.parse(d(this.manifestFile(),"utf8"));return Array.isArray(e.servers)?e.servers.filter(r=>r&&r.name):[]}catch{return[]}}writeManifest(e){p(this.rootDir,{recursive:!0}),M(this.manifestFile(),`${JSON.stringify({version:O,servers:e},null,2)}
2
- `,"utf8")}saveMcp(e,r,t=!0,i){if(!c.isValidName(e))return{ok:!1,error:`MCP \u540D\u975E\u6CD5: ${JSON.stringify(e)}`};p(this.rootDir,{recursive:!0});try{M(this.specFile(e),`${JSON.stringify(r,null,2)}
3
- `,"utf8")}catch(n){return{ok:!1,error:`MCP \u6A21\u677F\u5199\u5165\u5931\u8D25: ${n instanceof Error?n.message:String(n)}`}}const a=this.readManifest().filter(n=>n.name!==e);return a.push({name:e,fileName:`${e}.json`,defaultEnabled:t,sha256:i}),this.writeManifest(a),g.info("[mcp] MCP \u6A21\u677F\u5DF2\u90E8\u7F72\u5230 bridge: %s",e),{ok:!0,name:e}}removeMcp(e){if(!c.isValidName(e))return{ok:!1,error:"name \u975E\u6CD5"};const r=this.readManifest().filter(t=>t.name!==e);this.writeManifest(r);try{h(this.specFile(e),{force:!0})}catch(t){return{ok:!1,error:`\u6A21\u677F\u6587\u4EF6\u6E05\u7406\u5931\u8D25: ${t instanceof Error?t.message:String(t)}`}}return this.removeMcpPackage(e),g.info("[mcp] MCP \u6A21\u677F\u5DF2\u4ECE bridge \u79FB\u9664\u90E8\u7F72: %s",e),{ok:!0}}packagesDir(){return $()}packagesManifestFile(){return s.join(this.packagesDir(),"manifest.json")}packageDir(e){if(!c.isValidName(e))throw new Error(`\u975E\u6CD5 MCP \u540D: ${JSON.stringify(e)}`);const r=s.join(this.packagesDir(),e),t=s.resolve(this.packagesDir());if(s.resolve(r)!==s.join(t,e))throw new Error(`MCP \u5305\u76EE\u5F55\u8D8A\u51FA\u90E8\u7F72\u533A: ${e}`);return r}isPackageHealthy(e){try{return f(s.join(this.packageDir(e),"mcp.json"))}catch{return!1}}readPackagesManifest(){try{const e=JSON.parse(d(this.packagesManifestFile(),"utf8"));return Array.isArray(e.packages)?e.packages.filter(r=>r&&r.name):[]}catch{return[]}}writePackagesManifest(e){p(this.packagesDir(),{recursive:!0}),M(this.packagesManifestFile(),`${JSON.stringify({version:1,packages:e},null,2)}
4
- `,"utf8")}packageUpToDate(e,r){return this.isPackageHealthy(e)?r?this.readPackagesManifest().find(i=>i.name===e)?.packageSha256===r:!0:!1}async ensureMcpPackage(e,r){if(!c.isValidName(e))return{ok:!1,error:`MCP \u540D\u975E\u6CD5: ${JSON.stringify(e)}`};const t=String(r?.packageUrl??"").trim();if(!t)return{ok:!1,error:"packageUrl \u4E3A\u7A7A"};if(this.packageUpToDate(e,r.packageSha256))return{ok:!0,name:e};const i=s.join(this.packagesDir(),"tmp",`pull-${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{p(i,{recursive:!0});const a=r.fileName?.trim()||`${e}.zip`,n=await N({downloadUrl:t,fileName:a,sha256:r.packageSha256},i);if(!n)return{ok:!1,error:`\u4E0B\u8F7D MCP \u5305\u65E0\u54CD\u5E94: ${t}`};const S=d(n.outputPath),w=s.join(i,"extract"),o=await E(S,w);await b(o.packageDir,o.manifest),p(this.packagesDir(),{recursive:!0});const l=this.packageDir(e),u=s.join(this.packagesDir(),`.old-${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);let k=!1;f(l)&&(y(l,u),k=!0);try{y(o.packageDir,l)}catch(m){throw k&&f(u)&&(h(l,{recursive:!0,force:!0}),y(u,l)),m}k&&f(u)&&h(u,{recursive:!0,force:!0});const D=this.readPackagesManifest().filter(m=>m.name!==e);return D.push({name:e,fileName:n.fileName,packageSha256:r.packageSha256,dependencies:o.manifest.dependencies}),this.writePackagesManifest(D),g.info("[mcp] \u5305\u578B MCP \u5DF2\u90E8\u7F72\u5230 bridge: %s\uFF08%d \u4E2A\u6587\u4EF6, dependencies=%s\uFF09",e,o.fileCount,o.manifest.dependencies),{ok:!0,name:e}}catch(a){const n=a instanceof Error?a.message:String(a);return g.warn("[mcp] \u5305\u578B MCP \u90E8\u7F72\u5931\u8D25\uFF08%s\uFF09: %s",e,n),{ok:!1,error:`MCP \u5305\u90E8\u7F72\u5931\u8D25: ${n}`}}finally{try{h(i,{recursive:!0,force:!0})}catch{}}}removeMcpPackage(e){try{const t=this.packageDir(e);f(t)&&h(t,{recursive:!0,force:!0})}catch(t){g.warn("[mcp] MCP \u5305\u76EE\u5F55\u6E05\u7406\u5931\u8D25\uFF08%s\uFF09: %s",e,t instanceof Error?t.message:String(t))}const r=this.readPackagesManifest().filter(t=>t.name!==e);try{this.writePackagesManifest(r)}catch{}}listDeployed(){return this.readManifest().map(e=>({...e,deployed:this.isHealthy(e.name)}))}getSpec(e){if(!this.isHealthy(e))return null;try{return JSON.parse(d(this.specFile(e),"utf8"))}catch{return null}}resolveEnabledMcp(e,r){const t={};for(const i of this.readManifest()){if(!P(e,"mcp",i.name)||!this.isHealthy(i.name))continue;const a=this.getSpec(i.name);a&&(t[i.name]={...a,type:a.type||"stdio"})}for(const[i,a]of Object.entries(r))P(e,"mcp",i)&&(t[i]||(t[i]=a));return t}deployedDefaultEnabled(){const e={};for(const r of this.readManifest())e[r.name]=r.defaultEnabled;return e}}c._instance=null;const J=c.getInstance();C("mcp",()=>J.deployedDefaultEnabled());const z=()=>F("mcp");export{c as McpDeployManager,J as mcpDeployManager,z as reconcileMcpDefaultsFromDeployed};
1
+ import{existsSync as l,mkdirSync as h,readFileSync as d,renameSync as M,rmSync as g,writeFileSync as D}from"node:fs";import s from"node:path";import{downloadPluginZip as $}from"../utils/file-utils.js";import{createLogger as N}from"../utils/logger.js";import{setDeployedDefaultsProvider as j,reconcileDefaultsFromDeployed as C}from"./capability-config.js";import{isCapabilityEnabled as P}from"./instance-features.js";import{extractMcpPackageZip as F,runMcpPackageInstall as E}from"./mcp-package.js";import{getUserMcpDeployedDir as b,getUserMcpPackagesDir as O}from"./user-scope.js";const k=N("mcp-deploy"),J=1;class o{static forScope(e){const r=b(e),t=s.resolve(r);let i=this.instances.get(t);return i||(i=new o(e,r,O(e)),this.instances.set(t,i)),i}constructor(e,r,t){this.scope=e,this.rootDir=r,this.packagesRootDir=t}static isValidName(e){return!e||e==="."||e===".."||e!==s.basename(e)?!1:/^[a-zA-Z0-9_.-]+$/.test(e)}manifestFile(){return s.join(this.rootDir,"manifest.json")}specFile(e){const r=s.join(this.rootDir,`${e}.json`),t=s.resolve(this.rootDir);if(s.resolve(r)!==s.join(t,`${e}.json`))throw new Error(`MCP \u6A21\u677F\u6587\u4EF6\u8D8A\u51FA\u90E8\u7F72\u533A: ${e}`);return r}isHealthy(e){return l(this.specFile(e))}readManifest(){try{const e=JSON.parse(d(this.manifestFile(),"utf8"));return Array.isArray(e.servers)?e.servers.filter(r=>r&&r.name):[]}catch{return[]}}writeManifest(e){h(this.rootDir,{recursive:!0}),D(this.manifestFile(),`${JSON.stringify({version:J,servers:e},null,2)}
2
+ `,"utf8")}saveMcp(e,r,t=!0,i){if(!o.isValidName(e))return{ok:!1,error:`MCP \u540D\u975E\u6CD5: ${JSON.stringify(e)}`};h(this.rootDir,{recursive:!0});try{D(this.specFile(e),`${JSON.stringify(r,null,2)}
3
+ `,"utf8")}catch(n){return{ok:!1,error:`MCP \u6A21\u677F\u5199\u5165\u5931\u8D25: ${n instanceof Error?n.message:String(n)}`}}const a=this.readManifest().filter(n=>n.name!==e);return a.push({name:e,fileName:`${e}.json`,defaultEnabled:t,sha256:i}),this.writeManifest(a),k.info("[mcp] MCP \u6A21\u677F\u5DF2\u90E8\u7F72\u5230 bridge: %s",e),{ok:!0,name:e}}removeMcp(e){if(!o.isValidName(e))return{ok:!1,error:"name \u975E\u6CD5"};const r=this.readManifest().filter(t=>t.name!==e);this.writeManifest(r);try{g(this.specFile(e),{force:!0})}catch(t){return{ok:!1,error:`\u6A21\u677F\u6587\u4EF6\u6E05\u7406\u5931\u8D25: ${t instanceof Error?t.message:String(t)}`}}return this.removeMcpPackage(e),k.info("[mcp] MCP \u6A21\u677F\u5DF2\u4ECE bridge \u79FB\u9664\u90E8\u7F72: %s",e),{ok:!0}}packagesDir(){return this.packagesRootDir}packagesManifestFile(){return s.join(this.packagesDir(),"manifest.json")}packageDir(e){if(!o.isValidName(e))throw new Error(`\u975E\u6CD5 MCP \u540D: ${JSON.stringify(e)}`);const r=s.join(this.packagesDir(),e),t=s.resolve(this.packagesDir());if(s.resolve(r)!==s.join(t,e))throw new Error(`MCP \u5305\u76EE\u5F55\u8D8A\u51FA\u90E8\u7F72\u533A: ${e}`);return r}isPackageHealthy(e){try{return l(s.join(this.packageDir(e),"mcp.json"))}catch{return!1}}readPackagesManifest(){try{const e=JSON.parse(d(this.packagesManifestFile(),"utf8"));return Array.isArray(e.packages)?e.packages.filter(r=>r&&r.name):[]}catch{return[]}}writePackagesManifest(e){h(this.packagesDir(),{recursive:!0}),D(this.packagesManifestFile(),`${JSON.stringify({version:1,packages:e},null,2)}
4
+ `,"utf8")}packageUpToDate(e,r){return this.isPackageHealthy(e)?r?this.readPackagesManifest().find(i=>i.name===e)?.packageSha256===r:!0:!1}async ensureMcpPackage(e,r){if(!o.isValidName(e))return{ok:!1,error:`MCP \u540D\u975E\u6CD5: ${JSON.stringify(e)}`};const t=String(r?.packageUrl??"").trim();if(!t)return{ok:!1,error:"packageUrl \u4E3A\u7A7A"};if(this.packageUpToDate(e,r.packageSha256))return{ok:!0,name:e};const i=s.join(this.packagesDir(),"tmp",`pull-${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{h(i,{recursive:!0});const a=r.fileName?.trim()||`${e}.zip`,n=await $({downloadUrl:t,fileName:a,sha256:r.packageSha256},i);if(!n)return{ok:!1,error:`\u4E0B\u8F7D MCP \u5305\u65E0\u54CD\u5E94: ${t}`};const w=d(n.outputPath),v=s.join(i,"extract"),f=await F(w,v);await E(f.packageDir,f.manifest),h(this.packagesDir(),{recursive:!0});const u=this.packageDir(e),p=s.join(this.packagesDir(),`.old-${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);let y=!1;l(u)&&(M(u,p),y=!0);try{M(f.packageDir,u)}catch(m){throw y&&l(p)&&(g(u,{recursive:!0,force:!0}),M(p,u)),m}y&&l(p)&&g(p,{recursive:!0,force:!0});const S=this.readPackagesManifest().filter(m=>m.name!==e);return S.push({name:e,fileName:n.fileName,packageSha256:r.packageSha256,dependencies:f.manifest.dependencies}),this.writePackagesManifest(S),k.info("[mcp] \u5305\u578B MCP \u5DF2\u90E8\u7F72\u5230 bridge: %s\uFF08%d \u4E2A\u6587\u4EF6, dependencies=%s\uFF09",e,f.fileCount,f.manifest.dependencies),{ok:!0,name:e}}catch(a){const n=a instanceof Error?a.message:String(a);return k.warn("[mcp] \u5305\u578B MCP \u90E8\u7F72\u5931\u8D25\uFF08%s\uFF09: %s",e,n),{ok:!1,error:`MCP \u5305\u90E8\u7F72\u5931\u8D25: ${n}`}}finally{try{g(i,{recursive:!0,force:!0})}catch{}}}removeMcpPackage(e){try{const t=this.packageDir(e);l(t)&&g(t,{recursive:!0,force:!0})}catch(t){k.warn("[mcp] MCP \u5305\u76EE\u5F55\u6E05\u7406\u5931\u8D25\uFF08%s\uFF09: %s",e,t instanceof Error?t.message:String(t))}const r=this.readPackagesManifest().filter(t=>t.name!==e);try{this.writePackagesManifest(r)}catch{}}listDeployed(){return this.readManifest().map(e=>({...e,deployed:this.isHealthy(e.name)}))}getSpec(e){if(!this.isHealthy(e))return null;try{return JSON.parse(d(this.specFile(e),"utf8"))}catch{return null}}resolveEnabledMcp(e,r){const t={};for(const i of this.readManifest()){if(!P(e,"mcp",i.name)||!this.isHealthy(i.name))continue;const a=this.getSpec(i.name);a&&(t[i.name]={...a,type:a.type||"stdio"})}for(const[i,a]of Object.entries(r))P(e,"mcp",i)&&(t[i]||(t[i]=a));return t}deployedDefaultEnabled(){const e={};for(const r of this.readManifest())e[r.name]=r.defaultEnabled;return e}}o.instances=new Map;function Z(c){return o.forScope(c)}j("mcp",c=>c?o.forScope(c).deployedDefaultEnabled():{});const B=c=>C(c,"mcp");export{o as McpDeployManager,Z as getMcpDeployManager,B as reconcileMcpDefaultsFromDeployed};
5
5
 
@@ -4,10 +4,30 @@ export declare function isStdioMcpSpec(spec: unknown): boolean;
4
4
  export declare const MCP_PACKAGE_DIR_PLACEHOLDER = "${MCP_PACKAGE_DIR}";
5
5
  export declare const MCP_NODE_PLACEHOLDER = "${MCP_NODE}";
6
6
 
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
7
17
  export declare function expandMcpPackagePlaceholders(record: Record<string, unknown>, packageDir?: string, nodePath?: string): boolean;
8
18
 
9
19
  export declare function isBuiltinMcpName(name: string): boolean;
10
20
 
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
11
31
  export declare const AGENT_META_ENV_KEYS: {
12
32
  readonly agentId: "AWS_AGENT_ID";
13
33
  readonly roleId: "AWS_AGENT_ROLE_ID";
@@ -21,16 +41,48 @@ export interface AgentMetaEnvInput {
21
41
  projectId?: string;
22
42
  }
23
43
 
44
+
45
+
46
+
24
47
  export declare function buildAgentMetaEnv(meta: AgentMetaEnvInput | undefined): Record<string, string>;
25
48
 
49
+
50
+
51
+
52
+
53
+
54
+
26
55
  export declare function expandEnvPlaceholders(text: string, env: Record<string, string>): string;
27
56
  export interface InjectEnvOptions {
28
57
 
58
+
59
+
60
+
29
61
  overwriteExisting?: boolean;
30
62
 
63
+
64
+
65
+
66
+
31
67
  resolvePackageDir?: (name: string) => string | undefined;
32
68
 
69
+
70
+
71
+
72
+
33
73
  agentMeta?: AgentMetaEnvInput;
34
74
  }
35
75
 
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
36
88
  export declare function injectEffectiveEnvIntoMcpServers(servers: Record<string, unknown>, effectiveEnv: Record<string, string>, options?: InjectEnvOptions): string[];
@@ -32,17 +32,29 @@ export declare function enqueueMcpLaunchBinding(input: McpLaunchBindingInput): M
32
32
  export declare function claimMcpLaunchBinding(request: McpLaunchBindingClaimRequest): ClaimedMcpLaunchBinding | null;
33
33
  export declare function getMcpLaunchQueueSize(workspacePath: unknown): number;
34
34
 
35
+
36
+
37
+
35
38
  export declare function removeMcpLaunchBinding(bindingId: string): boolean;
36
39
  export declare function clearMcpLaunchBindingQueues(): void;
37
40
 
41
+
42
+
43
+
38
44
  export declare function getLatestAgentToken(agentId: string): {
39
45
  runtimeAccessToken: string;
40
46
  } | null;
41
47
 
48
+
49
+
50
+
42
51
  export declare function getLatestAgentTokenEntry(agentId: string): {
43
52
  runtimeAccessToken: string;
44
53
  schedulerBaseUrl?: string;
45
54
  updatedAt: number;
46
55
  } | null;
47
56
 
57
+
58
+
59
+
48
60
  export declare function updateLatestAgentToken(agentId: string, runtimeAccessToken: string, schedulerBaseUrl?: string): void;
@@ -1,4 +1,15 @@
1
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
2
13
  export interface McpPackageManifestEnvField {
3
14
  key: string;
4
15
  required?: boolean;
@@ -17,9 +28,14 @@ export interface McpPackageManifest {
17
28
  install?: string;
18
29
  description?: string;
19
30
 
31
+
32
+
33
+
20
34
  env?: McpPackageManifestEnvField[];
21
35
  }
22
36
 
37
+
38
+
23
39
  export declare function validateMcpPackageManifest(raw: unknown): McpPackageManifest;
24
40
 
25
41
  export declare function readMcpPackageManifest(packageDir: string): McpPackageManifest;
@@ -30,6 +46,12 @@ export interface McpPackageExtractResult {
30
46
  manifest: McpPackageManifest;
31
47
  }
32
48
 
49
+
50
+
51
+
33
52
  export declare function extractMcpPackageZip(zipBuffer: Buffer, stagingRoot: string): Promise<McpPackageExtractResult>;
34
53
 
54
+
55
+
56
+
35
57
  export declare function runMcpPackageInstall(packageDir: string, manifest: McpPackageManifest): Promise<void>;
@@ -1,2 +1,2 @@
1
- import{spawn as l}from"node:child_process";import{existsSync as E,readFileSync as g}from"node:fs";import h from"node:path";import{createLogger as S}from"../utils/logger.js";import{BLOCKED_ENV_KEYS as w,ENV_KEY_PATTERN as y}from"../utils/env-safety.js";import{extractPluginZip as T}from"./plugin-package.js";const A=S("mcp-package"),$=new Set(["node","python","binary"]),M=new Set(["bundled","npm"]),d="mcp.json",N=/^[A-Za-z0-9_./@+-]+$/,a=/^(npm|pnpm|yarn)\s+(ci|install)(\s+[A-Za-z0-9@._/:=+-]+)*$/,u=5*60*1e3,P=64*1024;function f(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function _(n){if(n==null)return;if(!Array.isArray(n))throw new Error("mcp.json \u7684 env \u975E\u6CD5\uFF08\u987B\u4E3A\u6570\u7EC4\uFF09");if(n.length===0)return;if(n.length>64)throw new Error("mcp.json \u7684 env \u6700\u591A\u58F0\u660E 64 \u9879");const i=new Set,e=[];for(const r of n){if(!f(r))throw new Error("mcp.json \u7684 env \u5143\u7D20\u975E\u6CD5\uFF08\u987B\u4E3A\u5BF9\u8C61\uFF09");const t=String(r.key??"").trim();if(!t)throw new Error("mcp.json \u7684 env \u5143\u7D20\u7F3A\u5C11 key");if(!y.test(t))throw new Error(`mcp.json \u7684 env \u53D8\u91CF\u540D\u975E\u6CD5: ${t}`);if(w.has(t.toUpperCase()))throw new Error(`mcp.json \u58F0\u660E\u4E86\u7981\u6B62\u7684\u5371\u9669\u73AF\u5883\u53D8\u91CF: ${t}`);if(i.has(t))throw new Error(`mcp.json \u7684 env \u91CD\u590D\u58F0\u660E: ${t}`);i.add(t),e.push({key:t,required:r.required===!0,sensitive:r.sensitive===!0,description:r.description!==void 0?String(r.description):void 0,example:r.example!==void 0?String(r.example):void 0})}return e}function v(n){if(!f(n))throw new Error("mcp.json \u5FC5\u987B\u662F JSON \u5BF9\u8C61");const i=String(n.runtime??"").trim().toLowerCase();if(!$.has(i))throw new Error(`mcp.json \u7684 runtime \u975E\u6CD5\uFF08\u4EC5 node/python/binary\uFF09: ${String(n.runtime)}`);const e=String(n.entry??"").trim();if(!e||!N.test(e)||e.startsWith("/")||/^[A-Za-z]:/.test(e)||e.split(/[\\/]/).includes(".."))throw new Error(`mcp.json \u7684 entry \u975E\u6CD5\uFF08\u987B\u4E3A\u5305\u5185\u76F8\u5BF9\u8DEF\u5F84\uFF09: ${e}`);const r=String(n.dependencies??"bundled").trim().toLowerCase()||"bundled";if(!M.has(r))throw new Error(`mcp.json \u7684 dependencies \u975E\u6CD5\uFF08\u4EC5 bundled/npm\uFF09: ${r}`);let t;if(r==="npm"&&(t=String(n.install??"").trim(),!t||!a.test(t)))throw new Error(`dependencies=npm \u65F6\u5FC5\u987B\u58F0\u660E\u5408\u6CD5\u7684 install \u547D\u4EE4\uFF08\u4EC5 npm/pnpm/yarn \u7684 install/ci\uFF09: ${t}`);const o=Array.isArray(n.args)?n.args.filter(s=>s!=null).map(String):void 0;return{name:n.name!==void 0?String(n.name):void 0,version:n.version!==void 0?String(n.version):void 0,runtime:i,entry:e,args:o,dependencies:r,install:t,description:n.description!==void 0?String(n.description):void 0,env:_(n.env)}}function j(n){const i=h.join(n,d);if(!E(i))throw new Error(`MCP \u5305\u5185\u7F3A\u5C11 ${d}\uFF08\u5305\u578B MCP \u5FC5\u987B\u81EA\u63CF\u8FF0 runtime/entry\uFF09`);let e;try{e=JSON.parse(g(i,"utf8"))}catch(r){throw new Error(`MCP \u5305\u5185 ${d} \u89E3\u6790\u5931\u8D25: ${r instanceof Error?r.message:String(r)}`)}return v(e)}async function O(n,i){const{pluginDir:e,fileCount:r}=await T(n,i),t=j(e);return{packageDir:e,fileCount:r,manifest:t}}async function R(n,i){if(i.dependencies!=="npm")return;const e=String(i.install??"").trim();if(!a.test(e))throw new Error(`\u62D2\u7EDD\u6267\u884C\u975E\u767D\u540D\u5355\u5B89\u88C5\u547D\u4EE4: ${e}`);await new Promise((r,t)=>{A.info("[mcp-package] \u6267\u884C\u4F9D\u8D56\u5B89\u88C5: %s (cwd=%s)",e,n);const o=l(e,{cwd:n,shell:!0,windowsHide:!0});let s="";const p=c=>{s.length<P&&(s+=c.toString("utf8"))};o.stdout?.on("data",p),o.stderr?.on("data",p);const m=setTimeout(()=>{o.kill(),t(new Error(`\u4F9D\u8D56\u5B89\u88C5\u8D85\u65F6\uFF08${u}ms\uFF09: ${e}`))},u);o.on("error",c=>{clearTimeout(m),t(new Error(`\u4F9D\u8D56\u5B89\u88C5\u8FDB\u7A0B\u542F\u52A8\u5931\u8D25: ${c.message}`))}),o.on("close",c=>{if(clearTimeout(m),c!==0){t(new Error(`\u4F9D\u8D56\u5B89\u88C5\u5931\u8D25\uFF08\u9000\u51FA\u7801 ${c}\uFF09: ${s.trim().slice(0,600)||"(\u65E0\u8F93\u51FA)"}`));return}r()})})}export{O as extractMcpPackageZip,j as readMcpPackageManifest,R as runMcpPackageInstall,v as validateMcpPackageManifest};
1
+ import{spawn as l}from"node:child_process";import{existsSync as E,readFileSync as g}from"node:fs";import h from"node:path";import{BLOCKED_ENV_KEYS as S,ENV_KEY_PATTERN as w}from"../utils/env-safety.js";import{createLogger as y}from"../utils/logger.js";import{extractPluginZip as T}from"./plugin-package.js";const A=y("mcp-package"),$=new Set(["node","python","binary"]),M=new Set(["bundled","npm"]),d="mcp.json",N=/^[A-Za-z0-9_./@+-]+$/,a=/^(npm|pnpm|yarn)\s+(ci|install)(\s+[A-Za-z0-9@._/:=+-]+)*$/,u=5*60*1e3,P=64*1024;function f(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function _(n){if(n==null)return;if(!Array.isArray(n))throw new Error("mcp.json \u7684 env \u975E\u6CD5\uFF08\u987B\u4E3A\u6570\u7EC4\uFF09");if(n.length===0)return;if(n.length>64)throw new Error("mcp.json \u7684 env \u6700\u591A\u58F0\u660E 64 \u9879");const i=new Set,e=[];for(const r of n){if(!f(r))throw new Error("mcp.json \u7684 env \u5143\u7D20\u975E\u6CD5\uFF08\u987B\u4E3A\u5BF9\u8C61\uFF09");const t=String(r.key??"").trim();if(!t)throw new Error("mcp.json \u7684 env \u5143\u7D20\u7F3A\u5C11 key");if(!w.test(t))throw new Error(`mcp.json \u7684 env \u53D8\u91CF\u540D\u975E\u6CD5: ${t}`);if(S.has(t.toUpperCase()))throw new Error(`mcp.json \u58F0\u660E\u4E86\u7981\u6B62\u7684\u5371\u9669\u73AF\u5883\u53D8\u91CF: ${t}`);if(i.has(t))throw new Error(`mcp.json \u7684 env \u91CD\u590D\u58F0\u660E: ${t}`);i.add(t),e.push({key:t,required:r.required===!0,sensitive:r.sensitive===!0,description:r.description!==void 0?String(r.description):void 0,example:r.example!==void 0?String(r.example):void 0})}return e}function v(n){if(!f(n))throw new Error("mcp.json \u5FC5\u987B\u662F JSON \u5BF9\u8C61");const i=String(n.runtime??"").trim().toLowerCase();if(!$.has(i))throw new Error(`mcp.json \u7684 runtime \u975E\u6CD5\uFF08\u4EC5 node/python/binary\uFF09: ${String(n.runtime)}`);const e=String(n.entry??"").trim();if(!e||!N.test(e)||e.startsWith("/")||/^[A-Za-z]:/.test(e)||e.split(/[\\/]/).includes(".."))throw new Error(`mcp.json \u7684 entry \u975E\u6CD5\uFF08\u987B\u4E3A\u5305\u5185\u76F8\u5BF9\u8DEF\u5F84\uFF09: ${e}`);const r=String(n.dependencies??"bundled").trim().toLowerCase()||"bundled";if(!M.has(r))throw new Error(`mcp.json \u7684 dependencies \u975E\u6CD5\uFF08\u4EC5 bundled/npm\uFF09: ${r}`);let t;if(r==="npm"&&(t=String(n.install??"").trim(),!t||!a.test(t)))throw new Error(`dependencies=npm \u65F6\u5FC5\u987B\u58F0\u660E\u5408\u6CD5\u7684 install \u547D\u4EE4\uFF08\u4EC5 npm/pnpm/yarn \u7684 install/ci\uFF09: ${t}`);const o=Array.isArray(n.args)?n.args.filter(s=>s!=null).map(String):void 0;return{name:n.name!==void 0?String(n.name):void 0,version:n.version!==void 0?String(n.version):void 0,runtime:i,entry:e,args:o,dependencies:r,install:t,description:n.description!==void 0?String(n.description):void 0,env:_(n.env)}}function j(n){const i=h.join(n,d);if(!E(i))throw new Error(`MCP \u5305\u5185\u7F3A\u5C11 ${d}\uFF08\u5305\u578B MCP \u5FC5\u987B\u81EA\u63CF\u8FF0 runtime/entry\uFF09`);let e;try{e=JSON.parse(g(i,"utf8"))}catch(r){throw new Error(`MCP \u5305\u5185 ${d} \u89E3\u6790\u5931\u8D25: ${r instanceof Error?r.message:String(r)}`)}return v(e)}async function O(n,i){const{pluginDir:e,fileCount:r}=await T(n,i),t=j(e);return{packageDir:e,fileCount:r,manifest:t}}async function R(n,i){if(i.dependencies!=="npm")return;const e=String(i.install??"").trim();if(!a.test(e))throw new Error(`\u62D2\u7EDD\u6267\u884C\u975E\u767D\u540D\u5355\u5B89\u88C5\u547D\u4EE4: ${e}`);await new Promise((r,t)=>{A.info("[mcp-package] \u6267\u884C\u4F9D\u8D56\u5B89\u88C5: %s (cwd=%s)",e,n);const o=l(e,{cwd:n,shell:!0,windowsHide:!0});let s="";const p=c=>{s.length<P&&(s+=c.toString("utf8"))};o.stdout?.on("data",p),o.stderr?.on("data",p);const m=setTimeout(()=>{o.kill(),t(new Error(`\u4F9D\u8D56\u5B89\u88C5\u8D85\u65F6\uFF08${u}ms\uFF09: ${e}`))},u);o.on("error",c=>{clearTimeout(m),t(new Error(`\u4F9D\u8D56\u5B89\u88C5\u8FDB\u7A0B\u542F\u52A8\u5931\u8D25: ${c.message}`))}),o.on("close",c=>{if(clearTimeout(m),c!==0){t(new Error(`\u4F9D\u8D56\u5B89\u88C5\u5931\u8D25\uFF08\u9000\u51FA\u7801 ${c}\uFF09: ${s.trim().slice(0,600)||"(\u65E0\u8F93\u51FA)"}`));return}r()})})}export{O as extractMcpPackageZip,j as readMcpPackageManifest,R as runMcpPackageInstall,v as validateMcpPackageManifest};
2
2
 
@@ -1,4 +1,16 @@
1
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
2
14
  import { type AgentMetaEnvInput } from "./mcp-env-injector.js";
3
15
  export interface McpProbeTool {
4
16
  name: string;
@@ -15,6 +27,8 @@ export interface McpProbeResult {
15
27
  }
16
28
  export interface McpProbeOptions {
17
29
 
30
+ scope?: import("./user-scope.js").UserScope;
31
+
18
32
  effectiveEnv?: Record<string, string>;
19
33
 
20
34
  agentMeta?: AgentMetaEnvInput;
@@ -22,4 +36,9 @@ export interface McpProbeOptions {
22
36
  listToolsTimeoutMs?: number;
23
37
  }
24
38
 
39
+
40
+
41
+
42
+
43
+
25
44
  export declare function probeDeployedMcp(name: string, options?: McpProbeOptions): Promise<McpProbeResult>;
@@ -1,2 +1,2 @@
1
- import{Client as C}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as P}from"@modelcontextprotocol/sdk/client/stdio.js";import{SSEClientTransport as k}from"@modelcontextprotocol/sdk/client/sse.js";import{StreamableHTTPClientTransport as _}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{mcpDeployManager as f}from"./mcp-deploy.js";import{buildAgentMetaEnv as b,expandEnvPlaceholders as u,expandMcpPackagePlaceholders as v,isBuiltinMcpName as y}from"./mcp-env-injector.js";import{sanitizeEnvForChild as g}from"../utils/env-safety.js";import{createLogger as L}from"../utils/logger.js";const $=L("mcp-probe"),O=1e4,D=1e4;async function N(t,n={}){const e=String(t??"").trim();if(!e)return{ok:!1,name:e,tools:[],error:"name is required"};if(!/^[a-zA-Z0-9_.-]+$/.test(e))return{ok:!1,name:e,tools:[],error:`MCP \u540D\u975E\u6CD5: ${e}`};if(y(e))return{ok:!1,name:e,tools:[],error:`\u300C${e}\u300D\u662F\u5185\u7F6E\u901A\u8BAF MCP\uFF0C\u4E0D\u63A5\u53D7\u63A2\u6D4B`};const m=f.getSpec(e);if(!m)return{ok:!1,name:e,tools:[],error:`\u672A\u5728\u90E8\u7F72\u533A\u627E\u5230\u8BE5 MCP: ${e}\uFF08\u8BF7\u5148\u5B89\u88C5/\u90E8\u7F72\uFF09`};const i=n.connectTimeoutMs??O,s=n.listToolsTimeoutMs??D,r=new C({name:"aws-runtime-bridge-probe",version:"1.0.0"});try{const a=U(m,n.effectiveEnv??{},e,n.agentMeta);await M(r.connect(a),i,`MCP initialize timeout after ${i}ms`);const{tools:c}=await M(r.listTools(),s,`MCP listTools timeout after ${s}ms`),l=r.getInstructions();return{ok:!0,name:e,tools:(c??[]).map(o=>({name:o.name,...o.description?{description:o.description}:{},...o.inputSchema?{inputSchema:o.inputSchema}:{}})),...l?{instructions:l}:{}}}catch(a){const c=a instanceof Error?a.message:String(a);return $.warn(`[mcp] \u63A2\u6D4B\u5931\u8D25: ${e}: ${c}`),{ok:!1,name:e,tools:[],error:c}}finally{try{await r.close()}catch{}}}function U(t,n,e,m){const i=String(t.type??"stdio").toLowerCase();if(i==="stdio"||t.command){if(!t.command)throw new Error("stdio MCP server requires command");const l=g(n),o=g(t.env??{}),d={...l,...o,...b(m)},w=e&&f.isPackageHealthy(e)?f.packageDir(e):void 0,p={command:t.command,args:t.args??[]};v(p,w);const S=u(String(p.command),d),E=p.args.map(h=>u(String(h),d)),T=new P({command:S,args:E,env:d,stderr:"pipe"});return T.stderr?.on("data",()=>{}),T}if(!t.url)throw new Error("remote MCP server requires url");const s=g(n),r=u(t.url,s),a=t.headers?Object.fromEntries(Object.entries(t.headers).map(([l,o])=>[l,u(String(o),s)])):void 0,c=a?{headers:a}:void 0;return i==="sse"?new k(new URL(r),{requestInit:c}):new _(new URL(r),{requestInit:c})}function M(t,n,e){return new Promise((m,i)=>{const s=setTimeout(()=>i(new Error(e)),n);t.then(r=>{clearTimeout(s),m(r)},r=>{clearTimeout(s),i(r instanceof Error?r:new Error(String(r)))})})}export{N as probeDeployedMcp};
1
+ import{Client as k}from"@modelcontextprotocol/sdk/client/index.js";import{SSEClientTransport as _}from"@modelcontextprotocol/sdk/client/sse.js";import{StdioClientTransport as b}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as v}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{sanitizeEnvForChild as T}from"../utils/env-safety.js";import{createLogger as y}from"../utils/logger.js";import{McpDeployManager as S}from"./mcp-deploy.js";import{buildAgentMetaEnv as $,expandEnvPlaceholders as u,expandMcpPackagePlaceholders as L,isBuiltinMcpName as O}from"./mcp-env-injector.js";const D=y("mcp-probe"),U=1e4,I=1e4;async function B(r,t={}){const e=String(r??"").trim();if(!e)return{ok:!1,name:e,tools:[],error:"name is required"};if(!/^[a-zA-Z0-9_.-]+$/.test(e))return{ok:!1,name:e,tools:[],error:`MCP \u540D\u975E\u6CD5: ${e}`};if(O(e))return{ok:!1,name:e,tools:[],error:`\u300C${e}\u300D\u662F\u5185\u7F6E\u901A\u8BAF MCP\uFF0C\u4E0D\u63A5\u53D7\u63A2\u6D4B`};const c=t.scope?S.forScope(t.scope).getSpec(e):null;if(!c&&!t.scope)return{ok:!1,name:e,tools:[],error:`\u672A\u5728\u90E8\u7F72\u533A\u627E\u5230\u8BE5 MCP: ${e}\uFF08\u7F3A\u7528\u6237\u4F5C\u7528\u57DF\uFF09`};if(!c)return{ok:!1,name:e,tools:[],error:`\u672A\u5728\u90E8\u7F72\u533A\u627E\u5230\u8BE5 MCP: ${e}\uFF08\u8BF7\u5148\u5B89\u88C5/\u90E8\u7F72\uFF09`};const s=t.connectTimeoutMs??U,i=t.listToolsTimeoutMs??I,n=new k({name:"aws-runtime-bridge-probe",version:"1.0.0"});try{const a=q(c,t.effectiveEnv??{},e,t.agentMeta,t.scope);await w(n.connect(a),s,`MCP initialize timeout after ${s}ms`);const{tools:m}=await w(n.listTools(),i,`MCP listTools timeout after ${i}ms`),l=n.getInstructions();return{ok:!0,name:e,tools:(m??[]).map(o=>({name:o.name,...o.description?{description:o.description}:{},...o.inputSchema?{inputSchema:o.inputSchema}:{}})),...l?{instructions:l}:{}}}catch(a){const m=a instanceof Error?a.message:String(a);return D.warn(`[mcp] \u63A2\u6D4B\u5931\u8D25: ${e}: ${m}`),{ok:!1,name:e,tools:[],error:m}}finally{try{await n.close()}catch{}}}function q(r,t,e,c,s){const i=String(r.type??"stdio").toLowerCase();if(i==="stdio"||r.command){if(!r.command)throw new Error("stdio MCP server requires command");const o=T(t),d=T(r.env??{}),f={...o,...d,...$(c)},p=s?S.forScope(s):null,E=p&&e&&p.isPackageHealthy(e)?p.packageDir(e):void 0,g={command:r.command,args:r.args??[]};L(g,E);const h=u(String(g.command),f),C=g.args.map(P=>u(String(P),f)),M=new b({command:h,args:C,env:f,stderr:"pipe"});return M.stderr?.on("data",()=>{}),M}if(!r.url)throw new Error("remote MCP server requires url");const n=T(t),a=u(r.url,n),m=r.headers?Object.fromEntries(Object.entries(r.headers).map(([o,d])=>[o,u(String(d),n)])):void 0,l=m?{headers:m}:void 0;return i==="sse"?new _(new URL(a),{requestInit:l}):new v(new URL(a),{requestInit:l})}function w(r,t,e){return new Promise((c,s)=>{const i=setTimeout(()=>s(new Error(e)),t);r.then(n=>{clearTimeout(i),c(n)},n=>{clearTimeout(i),s(n instanceof Error?n:new Error(String(n)))})})}export{B as probeDeployedMcp};
2
2
 
@@ -0,0 +1,43 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ import type { OpenDocKind } from "./open-doc-registry.js";
13
+
14
+ export type OpenDocEvent = {
15
+ action: "open";
16
+ kind: OpenDocKind;
17
+ docId: string;
18
+ name: string;
19
+ detail?: string;
20
+ } | {
21
+ action: "close";
22
+ kind: OpenDocKind;
23
+ } | {
24
+ action: "delete";
25
+ kind: OpenDocKind;
26
+ docId: string;
27
+ };
28
+
29
+
30
+
31
+
32
+
33
+
34
+ export declare function normalizeSemanticToolName(raw: string | undefined): string;
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ export declare function resolveOpenDocEvent(toolName: string | undefined, args: Record<string, unknown> | undefined, result: unknown): OpenDocEvent | null;
@@ -0,0 +1,2 @@
1
+ const d={pencil_open_document:"pencil",pencil_close_document:"pencil",pencil_delete_document:"pencil",draw_open_document:"draw",draw_close_document:"draw",draw_delete_document:"draw",office_open_document:"office",office_close_document:"office",office_delete_document:"office"};function s(t){let e=String(t??"").trim().toLowerCase();if(!e)return"";const n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e.includes("__")&&(e=e.split("__").pop()??e),e}function p(t,e){if(t!=="call_tool"||!e)return null;const n=e.name;if(typeof n!="string"||!n.trim())return null;const r=e.arguments&&typeof e.arguments=="object"&&!Array.isArray(e.arguments)?e.arguments:{};return{innerName:s(n),innerArgs:r}}function a(t){const e=String(t??"").trim().replace(/\\/g,"/"),n=e.lastIndexOf("/");return n>=0?e.slice(n+1):e}function _(t){if(t&&typeof t=="object"&&!Array.isArray(t))return t;if(typeof t!="string")return null;try{const e=JSON.parse(t);return!e||typeof e!="object"||Array.isArray(e)?null:e}catch{return null}}function g(t,e,n){let r=s(t),c=e;if(r==="call_tool"){const u=p(r,e);if(!u)return null;r=u.innerName,c=u.innerArgs}const o=d[r];if(!o)return null;if(r.endsWith("_close_document"))return{action:"close",kind:o};const i=_(n),f=typeof i?.docId=="string"?i.docId.trim():typeof c?.docId=="string"?c.docId.trim():"";if(r.endsWith("_delete_document"))return f?{action:"delete",kind:o,docId:f}:null;if(!i||i.ok===!1)return null;const l=y(r,o,i,c);if(!l)return null;const m=o==="office"&&typeof i.kind=="string"&&i.kind.trim()?i.kind.trim():void 0;return{action:"open",kind:o,docId:f,name:l,...m?{detail:m}:{}}}function y(t,e,n,r){if(e!=="office"){const f=typeof n.name=="string"?n.name.trim():"";return f||(typeof r?.name=="string"?r.name.trim():"")}const c=typeof n.fileName=="string"?n.fileName.trim():"";if(c)return c;const o=typeof n.file=="string"?n.file.trim():"";if(o)return a(o);const i=typeof r?.file=="string"?r.file.trim():"";return i?a(i):""}export{s as normalizeSemanticToolName,g as resolveOpenDocEvent};
2
+
@@ -0,0 +1,59 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+ export type OpenDocKind = "pencil" | "draw" | "office";
26
+
27
+ export interface OpenDocEntry {
28
+
29
+ kind: OpenDocKind;
30
+
31
+ docId: string;
32
+
33
+ name: string;
34
+
35
+ detail?: string;
36
+ }
37
+
38
+
39
+
40
+
41
+
42
+
43
+ export declare function recordOpenDocument(agentId: string | undefined, entry: OpenDocEntry): void;
44
+
45
+
46
+
47
+
48
+ export declare function closeOpenDocument(agentId: string | undefined, kind: OpenDocKind): void;
49
+
50
+
51
+
52
+
53
+
54
+
55
+ export declare function removeOpenDocument(agentId: string | undefined, kind: OpenDocKind, docId: string): void;
56
+
57
+ export declare function listOpenDocuments(agentId: string | undefined): OpenDocEntry[];
58
+
59
+ export declare function clearOpenDocuments(agentId: string | undefined): void;
@@ -0,0 +1,2 @@
1
+ const o=new Map;function s(r,t){const e=String(r??"").trim();if(!e||!t.name.trim())return;let n=o.get(e);n||(n=new Map,o.set(e,n)),n.set(t.kind,{...t,docId:t.docId.trim(),name:t.name.trim()})}function f(r,t){const e=String(r??"").trim();e&&o.get(e)?.delete(t)}function g(r,t,e){const n=String(r??"").trim();if(!n)return;const c=e.trim();if(!c)return;const i=o.get(n)?.get(t);i&&i.docId&&i.docId===c&&o.get(n)?.delete(t)}function m(r){const t=String(r??"").trim();if(!t)return[];const e=o.get(t);if(!e)return[];const n=["pencil","draw","office"],c=[];for(const i of n){const u=e.get(i);u&&c.push(u)}return c}function d(r){const t=String(r??"").trim();t&&o.delete(t)}export{d as clearOpenDocuments,f as closeOpenDocument,m as listOpenDocuments,s as recordOpenDocument,g as removeOpenDocument};
2
+
@@ -1,7 +1,15 @@
1
1
 
2
2
 
3
+
4
+
5
+
6
+
7
+
8
+
3
9
  export type OrphanEventType = 'orphan_detected' | 'orphan_cleaned' | 'process_unresponsive' | 'process_high_cpu' | 'process_high_memory' | 'health_check';
4
10
 
11
+
12
+
5
13
  export interface OrphanEvent {
6
14
  type: OrphanEventType;
7
15
  agentId: string;
@@ -11,36 +19,65 @@ export interface OrphanEvent {
11
19
  details?: Record<string, unknown>;
12
20
  }
13
21
 
22
+
23
+
14
24
  export declare class OrphanMonitor {
15
25
  private intervalId;
16
26
  private lastScanTime;
17
27
  private eventListeners;
18
28
  private stopped;
19
29
 
30
+
31
+
20
32
  start(): Promise<void>;
21
33
 
34
+
35
+
22
36
  stop(): void;
23
37
 
38
+
39
+
24
40
  scan(): Promise<void>;
25
41
 
42
+
43
+
26
44
  private handleOrphanDetected;
27
45
 
46
+
47
+
28
48
  private handleHealthIssue;
29
49
 
50
+
51
+
30
52
  private autoCleanOrphan;
31
53
 
54
+
55
+
32
56
  private cleanupDeadSessions;
33
57
 
58
+
59
+
60
+
34
61
  private checkAgentExistsOnServer;
35
62
 
63
+
64
+
36
65
  private reportToScheduler;
37
66
 
67
+
68
+
38
69
  onEvent(listener: (event: OrphanEvent) => void): void;
39
70
 
71
+
72
+
40
73
  offEvent(listener: (event: OrphanEvent) => void): void;
41
74
 
75
+
76
+
42
77
  private emit;
43
78
 
79
+
80
+
44
81
  getStatus(): {
45
82
  running: boolean;
46
83
  lastScanTime: Date | null;
@@ -48,8 +85,14 @@ export declare class OrphanMonitor {
48
85
  };
49
86
  }
50
87
 
88
+
89
+
51
90
  export declare function getOrphanMonitor(): OrphanMonitor;
52
91
 
92
+
93
+
53
94
  export declare function startOrphanMonitor(): Promise<void>;
54
95
 
96
+
97
+
55
98
  export declare function stopOrphanMonitor(): void;
@@ -1,5 +1,12 @@
1
1
 
2
2
 
3
+
4
+
5
+
6
+
7
+
8
+
9
+
3
10
  export declare function createSession(): string;
4
11
 
5
12
  export declare function validateSession(token: string | undefined | null): boolean;
@@ -34,11 +41,28 @@ export declare function validateCredentials(username: string, password: string):
34
41
 
35
42
  export declare function clearCredentialsCache(): void;
36
43
 
44
+
45
+
46
+
47
+
37
48
  export declare function hasConfiguredCredentials(): boolean;
38
49
 
50
+
51
+
39
52
  export declare function isDefaultCredentials(): boolean;
40
53
 
54
+
55
+
56
+
57
+
58
+
41
59
  export declare function setPanelCredentials(username: string, password: string): Promise<void>;
42
60
 
61
+
62
+
63
+
64
+
65
+
66
+
43
67
  export declare function migrateLegacyPanelCredentials(): Promise<boolean>;
44
68
  export {};
@@ -1,12 +1,40 @@
1
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
2
21
  import type { AgentMetaEnvInput } from "./mcp-env-injector.js";
3
22
 
23
+
24
+
25
+
4
26
  export declare function setPanelEnvVars(agentId: string | undefined, env: unknown): void;
5
27
 
6
28
  export declare function getPanelEnvVars(agentId?: string): Record<string, string>;
7
29
 
30
+
31
+
32
+
8
33
  export declare function setAgentMeta(agentId: string | undefined, meta: unknown): void;
9
34
 
35
+
36
+
37
+
10
38
  export declare function getAgentMeta(agentId?: string): AgentMetaEnvInput | undefined;
11
39
 
12
40
  export declare function clearPanelEnvVars(agentId: string | undefined): void;
@@ -1,19 +1,46 @@
1
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
2
11
  import type { PluginLoader } from "./plugin-loader.js";
3
12
  import type { SharedPluginEntry } from "./plugin-runtime.js";
4
13
  export declare class PluginDeploymentStore {
5
14
  private readonly rootDir;
6
15
  private readonly runtimeRootDir;
7
16
  private readonly loader;
8
- constructor(rootDir: string, runtimeRootDir: string | undefined, loader: PluginLoader);
17
+
18
+ private readonly legacyRootDir?;
19
+ constructor(rootDir: string, runtimeRootDir: string | undefined, loader: PluginLoader,
20
+
21
+ legacyRootDir?: string | undefined);
9
22
  deployedDir(): string;
10
23
  deployedManifestFile(): string;
11
24
 
25
+ private legacyDeployedDir;
26
+ private legacyDeployedManifestFile;
27
+
28
+
29
+
30
+
31
+
12
32
  deployedPluginDir(name: string): string;
13
33
 
14
34
  private legacySharedDir;
15
35
 
16
36
  deployedPluginHealthy(name: string): boolean;
37
+
38
+ private legacyPluginHealthy;
39
+
40
+
41
+
42
+
43
+ resolveDeployedSourceDir(name: string): string | null;
17
44
  readSharedManifest(): SharedPluginEntry[];
18
45
  writeSharedManifest(entries: SharedPluginEntry[]): void;
19
46
 
@@ -21,12 +48,18 @@ export declare class PluginDeploymentStore {
21
48
 
22
49
  deployPluginZipToPersistentDir(zipBuffer: Buffer, expectedName?: string): Promise<SharedPluginEntry | null>;
23
50
 
51
+
52
+
53
+
24
54
  replaceDeployedDir(pluginName: string, sourceDir: string): void;
25
55
 
26
56
  removeDeployedDir(pluginName: string): void;
27
57
 
28
58
  updateSharedManifest(mutator: (entries: SharedPluginEntry[]) => SharedPluginEntry[]): Promise<void>;
29
59
 
60
+
61
+
62
+
30
63
  runtimeDirFor(agentId: string): string;
31
64
  runtimeLinkPath(agentId: string, name: string): string;
32
65