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,23 @@
1
1
 
2
2
 
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
3
21
  export declare const METRICS_SAMPLE_INTERVAL_MS = 5000;
4
22
 
5
23
  export declare const METRICS_HISTORY_CAPACITY = 900;
@@ -39,10 +57,19 @@ export interface RunningRunRef {
39
57
  pid: number;
40
58
  }
41
59
 
60
+
61
+
62
+
42
63
  export declare function parseWindowsProcessTable(output: string): ProcessEntry[];
43
64
 
65
+
66
+
67
+
44
68
  export declare function parsePsCpuTime(value: string): number;
45
69
 
70
+
71
+
72
+
46
73
  export declare function parseUnixProcessTable(output: string, threadsColumn: boolean): ProcessEntry[];
47
74
 
48
75
  export interface ProcessTreeAggregate {
@@ -53,8 +80,14 @@ export interface ProcessTreeAggregate {
53
80
  found: boolean;
54
81
  }
55
82
 
83
+
84
+
85
+
56
86
  export declare function aggregateProcessTree(entries: ProcessEntry[], rootPid: number): ProcessTreeAggregate;
57
87
 
88
+
89
+
90
+
58
91
  export declare function computeCpuPercent(previous: {
59
92
  at: number;
60
93
  totalCpuMs: number;
@@ -63,6 +96,12 @@ export declare function computeCpuPercent(previous: {
63
96
  totalCpuMs: number;
64
97
  }): number;
65
98
 
99
+
100
+
101
+
102
+
103
+
104
+
66
105
  export declare class LaunchMetricsMonitor {
67
106
  private readonly getRuns;
68
107
 
@@ -74,6 +113,9 @@ export declare class LaunchMetricsMonitor {
74
113
  private ticking;
75
114
  constructor(getRuns: () => RunningRunRef[]);
76
115
 
116
+
117
+
118
+
77
119
  ensureRunning(): void;
78
120
 
79
121
  stop(): void;
@@ -1,4 +1,15 @@
1
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
2
13
  export type LaunchStreamKind = "logs" | "metrics";
3
14
  export declare class LaunchStreamHub {
4
15
  private static instance;
@@ -8,10 +19,18 @@ export declare class LaunchStreamHub {
8
19
  private readonly statusSubscribers;
9
20
  static getInstance(): LaunchStreamHub;
10
21
 
22
+
23
+
24
+
25
+
11
26
  subscribe(configId: string, kind: LaunchStreamKind, send: (frame: string) => void): () => void;
12
27
 
13
28
  subscriberCount(configId: string, kind: LaunchStreamKind): number;
14
29
 
30
+
31
+
32
+
33
+
15
34
  subscribeStatus(send: (frame: string) => void): () => void;
16
35
 
17
36
  publishStatusRun(run: unknown): void;
@@ -30,5 +30,10 @@ export declare function createBridgeLifecycleOperation(input: {
30
30
  export declare function upsertBridgeLifecycleOperation(operation: BridgeLifecycleOperation): Promise<void>;
31
31
  export declare function removeBridgeLifecycleOperation(operationId: string): Promise<void>;
32
32
 
33
+
34
+
35
+
36
+
37
+
33
38
  export declare function deliverPendingBridgeLifecycleNotifications(): Promise<void>;
34
39
  export {};
@@ -1,9 +1,41 @@
1
1
 
2
2
 
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
3
31
  export declare const DEFAULT_LOG_RETENTION_DAYS = 7;
4
32
 
5
33
  export declare function normalizeLogRetentionDays(value: unknown): number;
6
34
 
35
+
36
+
37
+
38
+
7
39
  export declare function setLogRetentionDays(value: unknown): number;
8
40
 
9
41
  export declare function getLogRetentionDays(): number;
@@ -30,8 +62,14 @@ export interface LogRetentionSweepResult {
30
62
  bytesFreed: number;
31
63
  }
32
64
 
65
+
66
+
67
+
33
68
  export declare function sweepExpiredLogs(): Promise<LogRetentionSweepResult>;
34
69
 
70
+
71
+
72
+
35
73
  export declare function startLogRetention(): void;
36
74
 
37
75
  export declare function stopLogRetention(): void;
@@ -1,2 +1,2 @@
1
- import c from"node:fs/promises";import o from"node:path";import{getAutoRegisterConfigFilePath as N,getBridgeDataHome as I,getRuntimeHomeDir as S}from"../config.js";import{createLogger as x}from"../utils/logger.js";const w=x("log-retention"),m=7,b=7,_=6*60*60*1e3,M="Instance-ai-configuration-debug.log";let r=m,l=null,p=!1,y=!1,h=!1;function A(t,e){h||(h=!0,w.warn(`${t}${e instanceof Error?`: ${e.message}`:""}`))}function E(t){if(t==null||t===""||typeof t=="boolean")return m;const e=Number(t);return!Number.isFinite(e)||e<=0?m:Math.min(Math.floor(e),b)}function Y(t){const e=E(t);return y=!0,e!==r&&(r=e,F()),r}function V(){return r}function k(){r=m}function J(){r=m,y=!1,l&&(clearInterval(l),l=null),p=!1,h=!1}function O(){const t=o.join(I(),"log");return{logDir:t,agentLogDir:o.join(t,"agent"),instanceAiDebugLogPath:o.join(j(),M)}}function j(){return String(process.env.AWS_TEST_HOME||"").trim()||String(process.env.AWS_RUNTIME_HOME_DIR||"").trim()||S()}async function D(t,e,i){try{const n=await c.stat(t);return n.mtimeMs>=e?!1:(await c.unlink(t),i.removedFiles+=1,i.bytesFreed+=n.size,!0)}catch(n){return n.code!=="ENOENT"&&(i.failures+=1,A("[log-retention] \u5220\u9664\u8FC7\u671F\u65E5\u5FD7\u5931\u8D25",n)),!1}}async function $(t,e,i){let n=o.normalize(t);const s=o.normalize(e);for(;n.startsWith(s)&&n!==s;){try{await c.rmdir(n),i.removedDirs+=1}catch{return}n=o.dirname(n)}}async function W(t,e,i){let n;try{n=await c.readdir(t)}catch{return}for(const s of n)!s.startsWith("lifecycle-")||!s.endsWith(".jsonl")||await D(o.join(t,s),e,i)}async function z(t,e,i){const n=o.join(t,"aws-mcp-node");let s;try{s=(await c.readdir(n,{withFileTypes:!0})).filter(u=>u.isDirectory()).map(u=>o.join(n,u.name))}catch{return}for(const g of s){let u;try{u=(await c.readdir(g,{withFileTypes:!0})).filter(a=>a.isDirectory()).map(a=>o.join(g,a.name))}catch{continue}for(const f of u){let a;try{a=(await c.readdir(f,{withFileTypes:!0})).filter(d=>d.isFile()).map(d=>o.join(f,d.name))}catch{continue}let R=!0;for(const T of a)await D(T,e,i)||(R=!1);R&&a.length>0&&await $(f,n,i)}let L;try{L=(await c.readdir(g,{withFileTypes:!0})).filter(a=>a.isFile()).map(a=>o.join(g,a.name))}catch{continue}for(const f of L)await D(f,e,i)}}async function G(t,e,i){await D(t,e,i)}function F(){const t=async()=>{const e={retentionDays:r,removedFiles:0,removedDirs:0,failures:0,bytesFreed:0},i=Date.now()-r*24*60*60*1e3,n=O();try{await W(n.logDir,i,e),await z(n.agentLogDir,i,e),await G(n.instanceAiDebugLogPath,i,e)}catch(s){A("[log-retention] \u6E05\u7406\u8FC7\u671F\u65E5\u5FD7\u51FA\u9519",s)}return(e.removedFiles>0||e.removedDirs>0)&&w.info(`[log-retention] \u6E05\u7406\u5B8C\u6210\uFF1A\u5220\u9664 ${e.removedFiles} \u4E2A\u6587\u4EF6 / ${e.removedDirs} \u4E2A\u76EE\u5F55\uFF0C\u91CA\u653E ${(e.bytesFreed/1024/1024).toFixed(1)} MB\uFF08\u4FDD\u7559 ${r} \u5929\uFF09`),e};return p||(p=!0,v=t().finally(()=>{p=!1})),v}let v=Promise.resolve({retentionDays:r,removedFiles:0,removedDirs:0,failures:0,bytesFreed:0});function X(){if(l)return;const t=String(process.env.AWS_BRIDGE_LOG_RETENTION_DAYS||"").trim();t&&(r=E(t),y=!0),l=setInterval(()=>{F()},_),H().finally(()=>{F(),w.info(`[log-retention] \u65E5\u5FD7\u4FDD\u7559\u7B56\u7565\u5DF2\u542F\u52A8\uFF1A\u4FDD\u7559 ${r} \u5929\uFF0C\u6BCF ${_/36e5}h \u6E05\u7406\u4E00\u6B21`)})}async function H(){try{const t=await c.readFile(N(),"utf-8"),e=JSON.parse(t);e.logRetentionDays!==void 0&&!y&&(r=E(e.logRetentionDays))}catch{}}function q(){l&&(clearInterval(l),l=null)}export{m as DEFAULT_LOG_RETENTION_DAYS,V as getLogRetentionDays,O as getLogRetentionTargets,E as normalizeLogRetentionDays,k as resetLogRetentionDaysForTest,Y as setLogRetentionDays,X as startLogRetention,q as stopLogRetention,J as stopLogRetentionForTest,F as sweepExpiredLogs};
1
+ import c from"node:fs/promises";import o from"node:path";import{getAutoRegisterConfigFilePath as N,getBridgeDataHome as S,getRuntimeHomeDir as I}from"../config.js";import{createLogger as x}from"../utils/logger.js";import{sweepExpiredSnapshots as b}from"./fileSnapshotStore.js";import{getSnapshotRetentionDays as M,setSnapshotRetentionDays as O}from"./snapshot-retention.js";const w=x("log-retention"),m=7,j=7,_=6*60*60*1e3,$="Instance-ai-configuration-debug.log";let r=m,l=null,d=!1,y=!1,h=!1;function A(t,e){h||(h=!0,w.warn(`${t}${e instanceof Error?`: ${e.message}`:""}`))}function E(t){if(t==null||t===""||typeof t=="boolean")return m;const e=Number(t);return!Number.isFinite(e)||e<=0?m:Math.min(Math.floor(e),j)}function q(t){const e=E(t);return y=!0,e!==r&&(r=e,F()),r}function K(){return r}function Q(){r=m}function Z(){r=m,y=!1,l&&(clearInterval(l),l=null),d=!1,h=!1}function W(){const t=o.join(S(),"log");return{logDir:t,agentLogDir:o.join(t,"agent"),instanceAiDebugLogPath:o.join(z(),$)}}function z(){return String(process.env.AWS_TEST_HOME||"").trim()||String(process.env.AWS_RUNTIME_HOME_DIR||"").trim()||I()}async function D(t,e,i){try{const n=await c.stat(t);return n.mtimeMs>=e?!1:(await c.unlink(t),i.removedFiles+=1,i.bytesFreed+=n.size,!0)}catch(n){return n.code!=="ENOENT"&&(i.failures+=1,A("[log-retention] \u5220\u9664\u8FC7\u671F\u65E5\u5FD7\u5931\u8D25",n)),!1}}async function G(t,e,i){let n=o.normalize(t);const s=o.normalize(e);for(;n.startsWith(s)&&n!==s;){try{await c.rmdir(n),i.removedDirs+=1}catch{return}n=o.dirname(n)}}async function H(t,e,i){let n;try{n=await c.readdir(t)}catch{return}for(const s of n)!s.startsWith("lifecycle-")||!s.endsWith(".jsonl")||await D(o.join(t,s),e,i)}async function B(t,e,i){const n=o.join(t,"aws-mcp-node");let s;try{s=(await c.readdir(n,{withFileTypes:!0})).filter(u=>u.isDirectory()).map(u=>o.join(n,u.name))}catch{return}for(const g of s){let u;try{u=(await c.readdir(g,{withFileTypes:!0})).filter(a=>a.isDirectory()).map(a=>o.join(g,a.name))}catch{continue}for(const f of u){let a;try{a=(await c.readdir(f,{withFileTypes:!0})).filter(p=>p.isFile()).map(p=>o.join(f,p.name))}catch{continue}let L=!0;for(const T of a)await D(T,e,i)||(L=!1);L&&a.length>0&&await G(f,n,i)}let v;try{v=(await c.readdir(g,{withFileTypes:!0})).filter(a=>a.isFile()).map(a=>o.join(g,a.name))}catch{continue}for(const f of v)await D(f,e,i)}}async function P(t,e,i){await D(t,e,i)}function F(){const t=async()=>{const e={retentionDays:r,removedFiles:0,removedDirs:0,failures:0,bytesFreed:0},i=Date.now()-r*24*60*60*1e3,n=W();try{await H(n.logDir,i,e),await B(n.agentLogDir,i,e),await P(n.instanceAiDebugLogPath,i,e)}catch(s){A("[log-retention] \u6E05\u7406\u8FC7\u671F\u65E5\u5FD7\u51FA\u9519",s)}return await b(M()),(e.removedFiles>0||e.removedDirs>0)&&w.info(`[log-retention] \u6E05\u7406\u5B8C\u6210\uFF1A\u5220\u9664 ${e.removedFiles} \u4E2A\u6587\u4EF6 / ${e.removedDirs} \u4E2A\u76EE\u5F55\uFF0C\u91CA\u653E ${(e.bytesFreed/1024/1024).toFixed(1)} MB\uFF08\u4FDD\u7559 ${r} \u5929\uFF09`),e};return d||(d=!0,R=t().finally(()=>{d=!1})),R}let R=Promise.resolve({retentionDays:r,removedFiles:0,removedDirs:0,failures:0,bytesFreed:0});function ee(){if(l)return;const t=String(process.env.AWS_BRIDGE_LOG_RETENTION_DAYS||"").trim();t&&(r=E(t),y=!0),l=setInterval(()=>{F()},_),U().finally(()=>{F(),w.info(`[log-retention] \u65E5\u5FD7\u4FDD\u7559\u7B56\u7565\u5DF2\u542F\u52A8\uFF1A\u4FDD\u7559 ${r} \u5929\uFF0C\u6BCF ${_/36e5}h \u6E05\u7406\u4E00\u6B21`)})}async function U(){try{const t=await c.readFile(N(),"utf-8"),e=JSON.parse(t);e.logRetentionDays!==void 0&&!y&&(r=E(e.logRetentionDays)),e.snapshotRetentionDays!==void 0&&O(e.snapshotRetentionDays,!0)}catch{}}function te(){l&&(clearInterval(l),l=null)}export{m as DEFAULT_LOG_RETENTION_DAYS,K as getLogRetentionDays,W as getLogRetentionTargets,E as normalizeLogRetentionDays,Q as resetLogRetentionDaysForTest,q as setLogRetentionDays,ee as startLogRetention,te as stopLogRetention,Z as stopLogRetentionForTest,F as sweepExpiredLogs};
2
2
 
@@ -0,0 +1,55 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ import { type LspProviderSpec } from "./provider-registry.js";
17
+ export type LspInstallPhase = "queued" | "installing" | "done" | "error" | "removing";
18
+ export interface LspInstallTask {
19
+ providerId: string;
20
+ phase: LspInstallPhase;
21
+ startedAt: string;
22
+ finishedAt?: string;
23
+
24
+ logs: string[];
25
+ error?: string | null;
26
+ }
27
+
28
+
29
+
30
+
31
+ export declare function installLspProvider(providerId: string, options?: {
32
+ registry?: string;
33
+ }): Promise<LspInstallTask>;
34
+
35
+ export declare function uninstallLspProvider(providerId: string): Promise<LspInstallTask>;
36
+
37
+ export declare function getLspInstallTask(providerId: string): LspInstallTask | null;
38
+
39
+ export declare function listLspInstallTasks(): LspInstallTask[];
40
+
41
+
42
+
43
+
44
+ export declare function getProviderDiskUsage(providerId: string): Promise<number | null>;
45
+
46
+ export declare function detectNpmRegistry(): Promise<string | null>;
47
+
48
+ export declare function describeInstallStatus(providerId: string): {
49
+ providerId: string;
50
+ task: LspInstallTask | null;
51
+ };
52
+
53
+ export declare function isInstallBusy(): boolean;
54
+
55
+ export declare function listNpmProviders(): LspProviderSpec[];
@@ -0,0 +1,2 @@
1
+ import{execFile as v,spawn as x}from"node:child_process";import{promises as l}from"node:fs";import $ from"node:path";import{promisify as k}from"node:util";import{createLogger as L}from"../../utils/logger.js";import{getLspServerDir as d,getProvider as P,listAllProviders as S}from"./provider-registry.js";const A=k(v),m=L("lsp-install"),I=200,p=new Map;let u=null;function c(){return new Date().toISOString()}function w(){return process.platform==="win32"?"npm.cmd":"npm"}function f(t,r){for(const e of r.split(/\r?\n/)){const n=e.trim();n&&t.logs.push(n)}for(;t.logs.length>I;)t.logs.shift()}function h(t){const r=P(t);if(!r)throw new Error(`unknown lsp provider: ${t}`);if(r.kind!=="npm"||!r.npmPackage)throw new Error(r.kind==="builtin"?`${r.label} \u5DF2\u5185\u7F6E\uFF0C\u65E0\u9700\u5B89\u88C5`:`${r.label} \u9700\u8981\u5728\u672C\u673A\u5B89\u88C5\u539F\u751F\u8BED\u8A00\u670D\u52A1\uFF1A${(r.systemBinaries??[]).join(" / ")}`);return r}async function b(t,r,e){const n={...process.env};e.registry&&(n.npm_config_registry=e.registry),await new Promise((i,a)=>{const o=x(w(),r,{env:n,shell:process.platform==="win32",stdio:["ignore","pipe","pipe"]});o.stdout?.on("data",s=>f(t,s.toString("utf8"))),o.stderr?.on("data",s=>f(t,s.toString("utf8"))),o.on("error",s=>a(s)),o.on("exit",s=>{s===0?i():a(new Error(`npm ${r[0]??""} exited with code ${s}`))})})}async function B(t,r={}){const e=h(t),n=p.get(e.id);if(n&&(n.phase==="installing"||n.phase==="queued")||n&&n.phase==="done")return n;const i={providerId:e.id,phase:"queued",startedAt:c(),logs:[],error:null};return p.set(e.id,i),u=(async()=>{i.phase="installing";const o=d(e.id);await l.mkdir(o,{recursive:!0}),f(i,`\u5B89\u88C5 ${e.npmPackage}@${e.npmVersion} \u2192 ${o}`);try{await b(i,["install","--prefix",o,"--no-audit","--no-fund","--loglevel","error",`${e.npmPackage}@${e.npmVersion}`],r),i.phase="done",i.finishedAt=c(),m.info(`[lsp-install] \u5B89\u88C5\u5B8C\u6210 provider=${e.id}`)}catch(s){i.phase="error",i.error=s.message,i.finishedAt=c(),m.warn(`[lsp-install] \u5B89\u88C5\u5931\u8D25 provider=${e.id}: ${i.error}`)}finally{u=null}})(),await u,i}async function M(t){const r=h(t),e={providerId:r.id,phase:"removing",startedAt:c(),logs:[],error:null};p.set(r.id,e);const n=d(r.id);return await l.rm(n,{recursive:!0,force:!0}),e.phase="done",e.finishedAt=c(),f(e,`\u5DF2\u5220\u9664 ${n}`),m.info(`[lsp-install] \u5378\u8F7D\u5B8C\u6210 provider=${r.id}`),e}function D(t){return p.get(String(t||"").trim().toLowerCase())??null}function O(){return[...p.values()]}async function V(t){const r=d(t);try{if(!(await l.stat(r)).isDirectory())return null;let n=0;const i=async a=>{const o=await l.readdir(a,{withFileTypes:!0});for(const s of o){const g=$.join(a,s.name);if(s.isDirectory())await i(g);else if(s.isFile()){const y=await l.stat(g);n+=y.size}}};return await i(r),n}catch{return null}}async function j(){try{const{stdout:t}=await A(w(),["config","get","registry"],{timeout:1e4});return String(t||"").trim()||null}catch{return null}}function z(t){return{providerId:t,task:D(t)}}function C(){return u!==null}function G(){return S().filter(t=>t.kind==="npm")}export{z as describeInstallStatus,j as detectNpmRegistry,D as getLspInstallTask,V as getProviderDiskUsage,B as installLspProvider,C as isInstallBusy,O as listLspInstallTasks,G as listNpmProviders,M as uninstallLspProvider};
2
+
@@ -0,0 +1,108 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ export type LspProviderKind = "builtin" | "npm" | "system";
14
+ export interface LspProviderLanguage {
15
+
16
+ languageId: string;
17
+
18
+ extensions: string[];
19
+ }
20
+ export interface LspProviderSpec {
21
+ id: string;
22
+
23
+ label: string;
24
+ kind: LspProviderKind;
25
+ languages: LspProviderLanguage[];
26
+
27
+ npmPackage?: string;
28
+ npmVersion?: string;
29
+
30
+ binPath?: string;
31
+
32
+ args: string[];
33
+
34
+ env?: Record<string, string>;
35
+
36
+ initializationOptions?: Record<string, unknown>;
37
+
38
+ rootMarkers: string[];
39
+
40
+ systemBinaries?: string[];
41
+
42
+ systemArgs?: string[];
43
+
44
+ priority: number;
45
+
46
+ description: string;
47
+ }
48
+
49
+ export interface LspLaunchSpec {
50
+ providerId: string;
51
+ label: string;
52
+ command: string;
53
+ args: string[];
54
+ env: Record<string, string>;
55
+ cwd: string;
56
+ initializationOptions?: Record<string, unknown>;
57
+ }
58
+
59
+ export interface LspProviderSummary {
60
+ id: string;
61
+ label: string;
62
+ kind: LspProviderKind;
63
+ languages: string[];
64
+ extensions: string[];
65
+ npmPackage?: string;
66
+ npmVersion?: string;
67
+ systemBinaries?: string[];
68
+ rootMarkers: string[];
69
+ description: string;
70
+
71
+ available: boolean;
72
+
73
+ unavailableReason?: string;
74
+ }
75
+
76
+ export declare function getLspServersRoot(): string;
77
+
78
+ export declare function getLspServerDir(providerId: string): string;
79
+ export declare function listAllProviders(): LspProviderSpec[];
80
+ export declare function getProvider(providerId: string): LspProviderSpec | null;
81
+
82
+
83
+
84
+
85
+ export declare function resolveProviderForFile(filePath: string): LspProviderSpec | null;
86
+
87
+ export declare function resolveLanguageId(provider: LspProviderSpec, filePath: string): string;
88
+
89
+
90
+
91
+
92
+ export declare function resolveProviderRoot(provider: LspProviderSpec, workspacePath: string, filePath: string): Promise<string>;
93
+
94
+
95
+
96
+
97
+ export declare function checkProviderAvailability(provider: LspProviderSpec): {
98
+ available: boolean;
99
+ reason?: string;
100
+ command?: string;
101
+ };
102
+
103
+ export declare function buildLaunchSpec(provider: LspProviderSpec, ctx: {
104
+ workspacePath: string;
105
+ filePath: string;
106
+ }): Promise<LspLaunchSpec | null>;
107
+
108
+ export declare function listProviderSummaries(): Promise<LspProviderSummary[]>;
@@ -0,0 +1,2 @@
1
+ import{existsSync as u,readFileSync as j,promises as y}from"node:fs";import{createRequire as v}from"node:module";import t from"node:path";import{getBridgeDataHome as I}from"../../config.js";import{canonicalizePath as k}from"./uri-rewrite.js";const h=v(import.meta.url),_="typescript-language-server",M={id:"typescript",label:"TypeScript / JavaScript",kind:"builtin",languages:[{languageId:"typescript",extensions:[".ts",".tsx",".mts",".cts"]},{languageId:"javascript",extensions:[".js",".jsx",".mjs",".cjs"]}],npmPackage:_,args:["--stdio"],initializationOptions:{tsserver:{useSyntaxServer:"never"}},rootMarkers:["tsconfig.json","jsconfig.json","package.json"],priority:100,description:"\u968F bridge \u5185\u7F6E\uFF0C\u65E0\u9700\u5B89\u88C5\u3002"},A=[{id:"vue",label:"Vue",kind:"npm",languages:[{languageId:"vue",extensions:[".vue"]}],npmPackage:"@vue/language-server",npmVersion:"3.3.13",binPath:"bin/vue-language-server.js",args:["--stdio"],initializationOptions:{vue:{hybridMode:!1}},rootMarkers:["package.json","tsconfig.json","vite.config.ts","vite.config.js"],priority:90,description:"Vue \u5355\u6587\u4EF6\u7EC4\u4EF6\u8BED\u4E49\u8DF3\u8F6C\uFF08\u542B template \u5F15\u7528\uFF09\u3002"},{id:"python",label:"Python (Pyright)",kind:"npm",languages:[{languageId:"python",extensions:[".py",".pyi"]}],npmPackage:"pyright",npmVersion:"1.1.414",binPath:"langserver.index.js",args:["--stdio"],rootMarkers:["pyproject.toml","setup.py","setup.cfg","requirements.txt","pyrightconfig.json"],priority:90,description:"Pyright \u8BED\u8A00\u670D\u52A1\uFF0C\u7EAF JS \u5B9E\u73B0\uFF0C\u65E0\u9700\u672C\u673A Python\u3002"},{id:"json",label:"JSON",kind:"npm",languages:[{languageId:"json",extensions:[".json",".jsonc"]}],npmPackage:"vscode-langservers-extracted",npmVersion:"4.10.0",binPath:"bin/vscode-json-language-server",args:["--stdio"],rootMarkers:[".git"],priority:40,description:"JSON Schema \u6821\u9A8C\u4E0E\u8DF3\u8F6C\u3002"},{id:"css",label:"CSS / SCSS / Less",kind:"npm",languages:[{languageId:"css",extensions:[".css",".scss",".less",".sass",".pcss"]}],npmPackage:"vscode-langservers-extracted",npmVersion:"4.10.0",binPath:"bin/vscode-css-language-server",args:["--stdio"],rootMarkers:[".git"],priority:30,description:"CSS \u53D8\u91CF\u4E0E @import \u8DF3\u8F6C\u3002"},{id:"html",label:"HTML",kind:"npm",languages:[{languageId:"html",extensions:[".html",".htm"]}],npmPackage:"vscode-langservers-extracted",npmVersion:"4.10.0",binPath:"bin/vscode-html-language-server",args:["--stdio"],rootMarkers:[".git"],priority:30,description:"HTML \u7ED3\u6784\u4E0E\u8D44\u6E90\u5F15\u7528\u3002"},{id:"yaml",label:"YAML",kind:"npm",languages:[{languageId:"yaml",extensions:[".yaml",".yml"]}],npmPackage:"yaml-language-server",npmVersion:"2.0.0",binPath:"bin/yaml-language-server",args:["--stdio"],rootMarkers:[".git"],priority:30,description:"YAML Schema \u6821\u9A8C\u4E0E\u951A\u70B9\u8DF3\u8F6C\u3002"},{id:"bash",label:"Shell",kind:"npm",languages:[{languageId:"shellscript",extensions:[".sh",".bash",".zsh"]}],npmPackage:"bash-language-server",npmVersion:"5.8.1",binPath:"out/cli.js",args:["start"],rootMarkers:[".git"],priority:20,description:"Shell \u51FD\u6570\u4E0E\u53D8\u91CF\u8DF3\u8F6C\uFF08\u4F9D\u8D56\u672C\u673A shellcheck \u63D0\u4F9B\u8BCA\u65AD\uFF09\u3002"},{id:"dockerfile",label:"Dockerfile",kind:"npm",languages:[{languageId:"dockerfile",extensions:[".dockerfile"]}],npmPackage:"dockerfile-language-server-nodejs",npmVersion:"0.15.0",binPath:"bin/docker-langserver",args:["--stdio"],rootMarkers:[".git"],priority:20,description:"Dockerfile \u6307\u4EE4\u6821\u9A8C\uFF08\u6309\u6587\u4EF6\u540D\u8BC6\u522B\uFF0C\u89C1 resolveLanguageId\uFF09\u3002"},{id:"php",label:"PHP (Intelephense)",kind:"npm",languages:[{languageId:"php",extensions:[".php"]}],npmPackage:"intelephense",npmVersion:"1.18.5",binPath:"lib/intelephense.js",args:["--stdio"],rootMarkers:["composer.json"],priority:80,description:"Intelephense \u514D\u8D39\u7248\uFF1B\u5355\u6587\u4EF6\u4F53\u79EF\u8F83\u5927\uFF08\u7EA6 26MB\uFF09\u3002"}],L=[{id:"java",label:"Java (Eclipse JDT)",kind:"system",languages:[{languageId:"java",extensions:[".java"]}],args:[],systemBinaries:["jdtls","jdt-language-server"],systemArgs:["-data","{dataDir}"],rootMarkers:["pom.xml","build.gradle","build.gradle.kts","settings.gradle",".project"],priority:95,description:"\u9700\u8981\u672C\u673A\u5B89\u88C5 eclipse.jdt.ls\uFF08jdtls \u547D\u4EE4\uFF09\u3002"},{id:"go",label:"Go (gopls)",kind:"system",languages:[{languageId:"go",extensions:[".go"]}],args:[],systemBinaries:["gopls"],rootMarkers:["go.mod","go.work"],priority:95,description:"\u9700\u8981\u672C\u673A\u5B89\u88C5 gopls\uFF08go install golang.org/x/tools/gopls@latest\uFF09\u3002"},{id:"rust",label:"Rust (rust-analyzer)",kind:"system",languages:[{languageId:"rust",extensions:[".rs"]}],args:[],systemBinaries:["rust-analyzer"],rootMarkers:["Cargo.toml","rust-toolchain.toml"],priority:95,description:"\u9700\u8981\u672C\u673A\u5B89\u88C5 rust-analyzer\uFF08rustup component add rust-analyzer\uFF09\u3002"},{id:"clangd",label:"C / C++ (clangd)",kind:"system",languages:[{languageId:"c",extensions:[".c",".h"]},{languageId:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hxx"]}],args:[],systemBinaries:["clangd"],rootMarkers:["compile_commands.json","CMakeLists.txt",".clangd"],priority:95,description:"\u9700\u8981\u672C\u673A\u5B89\u88C5 clangd\uFF08LLVM \u53D1\u884C\u7248\u81EA\u5E26\uFF09\u3002"},{id:"csharp",label:"C# (csharp-ls)",kind:"system",languages:[{languageId:"csharp",extensions:[".cs"]}],args:[],systemBinaries:["csharp-ls","omnisharp","OmniSharp"],rootMarkers:["*.sln","*.csproj","*.fsproj"],priority:95,description:"\u9700\u8981\u672C\u673A\u5B89\u88C5 csharp-ls \u6216 OmniSharp\u3002"},{id:"ruby",label:"Ruby (solargraph)",kind:"system",languages:[{languageId:"ruby",extensions:[".rb",".rake",".gemspec"]}],args:[],systemBinaries:["solargraph"],systemArgs:["stdio"],rootMarkers:["Gemfile",".solargraph.yml"],priority:70,description:"\u9700\u8981\u672C\u673A\u5B89\u88C5 solargraph\uFF08gem install solargraph\uFF09\u3002"}],p=[M,...A,...L].sort((e,n)=>n.priority-e.priority),E=new Map(p.map(e=>[e.id,e]));function R(){return String(process.env.AWS_LSP_SERVER_ROOT||"").trim()||t.join(I(),"lsp-servers")}function b(e){return t.join(R(),e)}const B={dockerfile:"dockerfile","dockerfile.dev":"dockerfile","dockerfile.prod":"dockerfile",makefile:"makefile"},d=new Map;for(const e of p)for(const n of e.languages)for(const s of n.extensions)d.has(s)||d.set(s,e);function U(){return p}function V(e){return E.get(String(e||"").trim().toLowerCase())??null}function q(e){const n=String(e||"").trim().toLowerCase();if(!n)return null;const s=n.split(/[\\/]/).pop()??"",a=B[s];if(a&&a==="dockerfile")return V("dockerfile");const i=s.lastIndexOf(".");if(i<0)return null;const r=s.slice(i);return d.get(r)??null}function X(e,n){const a=String(n||"").trim().toLowerCase().split(/[\\/]/).pop()??"";if(a==="dockerfile"||a.startsWith("dockerfile."))return"dockerfile";const i=a.lastIndexOf("."),r=i<0?"":a.slice(i);for(const o of e.languages)if(o.extensions.includes(r))return o.languageId;return e.languages[0]?.languageId??"plaintext"}function m(e,n){return e.replace(/\{(\w+)\}/g,(s,a)=>n[a]??"")}async function O(e){try{return await y.access(e),!0}catch{return!1}}async function N(e,n,s){const a=t.resolve(String(n||"").trim()||process.cwd()),i=t.isAbsolute(s)?t.resolve(s):t.resolve(a,s);let r=t.dirname(i);for(let o=0;o<12;o+=1){for(const l of e.rootMarkers){if(l.includes("*")){const P=t.basename(l).replace(/^\*/,"");try{if((await y.readdir(r)).some(x=>x.endsWith(P)))return r}catch{}continue}if(await O(t.join(r,l)))return r}const c=t.dirname(r);if(c===r)break;const g=t.relative(a,c);if(g.startsWith("..")||t.isAbsolute(g))break;r=c}return a}function C(e){if(!e.npmPackage)return null;try{const n=h.resolve(`${e.npmPackage}/package.json`),a=JSON.parse(j(n,"utf8")).bin;if(!a)return null;if(typeof a=="string")return t.join(t.dirname(n),a);const i=Object.values(a)[0];return i?t.join(t.dirname(n),i):null}catch{return null}}function T(e){if(!e.npmPackage||!e.binPath)return null;const n=t.join(b(e.id),"node_modules",...e.npmPackage.split("/")),s=t.join(n,e.binPath);return u(s)?s:null}const w={java:"AWS_LSP_JAVA_BIN",go:"AWS_LSP_GO_BIN",rust:"AWS_LSP_RUST_BIN",clangd:"AWS_LSP_CLANGD_BIN",csharp:"AWS_LSP_CSHARP_BIN",ruby:"AWS_LSP_RUBY_BIN"};function D(e){const n=String(process.env.PATH||"").split(t.delimiter).map(a=>a.trim()).filter(Boolean),s=process.platform==="win32"?String(process.env.PATHEXT||".EXE;.CMD;.BAT").split(";").map(a=>a.toLowerCase()):[""];for(const a of n)for(const i of e)for(const r of s){const o=t.join(a,`${i}${r}`);if(u(o))return o}return null}function z(e){const n=w[e.id];if(n){const s=String(process.env[n]||"").trim();if(s&&u(s))return s}return D(e.systemBinaries??[])}function S(e){if(e.kind==="builtin"){const s=C(e);return s?{available:!0,command:s}:{available:!1,reason:"\u5185\u7F6E\u8BED\u8A00\u670D\u52A1\u5165\u53E3\u89E3\u6790\u5931\u8D25"}}if(e.kind==="npm"){const s=T(e);return s?{available:!0,command:s}:{available:!1,reason:`\u5C1A\u672A\u5B89\u88C5\uFF08${e.npmPackage}@${e.npmVersion}\uFF09`}}const n=z(e);return n?{available:!0,command:n}:{available:!1,reason:`\u672A\u627E\u5230\u53EF\u6267\u884C\u6587\u4EF6\uFF1A${(e.systemBinaries??[]).join(" / ")}`}}async function K(e,n){const s=S(e);if(!s.available||!s.command)return null;const a=k(await N(e,n.workspacePath,n.filePath)),i=t.join(b(e.id),"data",W(a)),r={workspace:k(n.workspacePath),root:a,dataDir:i};let o,c;e.kind==="system"?(o=s.command,c=[...e.args,...e.systemArgs??[]].map(l=>m(l,r))):(o=process.execPath,c=[s.command,...e.args.map(l=>m(l,r))]);const g={};for(const[l,f]of Object.entries(e.env??{}))g[l]=m(f,r);if(e.id==="typescript")try{g.TSSERVER_PATH=h.resolve("typescript/lib/tsserver.js")}catch{}return{providerId:e.id,label:e.label,command:o,args:c,env:g,cwd:a,initializationOptions:e.initializationOptions}}function W(e){let n=0;for(let s=0;s<e.length;s+=1)n=n*31+e.charCodeAt(s)|0;return Math.abs(n).toString(36)}async function Q(){return p.map(e=>{const n=S(e);return{id:e.id,label:e.label,kind:e.kind,languages:e.languages.map(s=>s.languageId),extensions:e.languages.flatMap(s=>s.extensions),npmPackage:e.npmPackage,npmVersion:e.npmVersion,systemBinaries:e.systemBinaries,rootMarkers:e.rootMarkers,description:e.description,available:n.available,unavailableReason:n.reason}})}export{K as buildLaunchSpec,S as checkProviderAvailability,b as getLspServerDir,R as getLspServersRoot,V as getProvider,U as listAllProviders,Q as listProviderSummaries,X as resolveLanguageId,q as resolveProviderForFile,N as resolveProviderRoot};
2
+
@@ -0,0 +1,44 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ export interface UriRewriteRule {
17
+ from: string;
18
+ to: string;
19
+ }
20
+
21
+ export declare function normalizeUriPath(value: string): string;
22
+
23
+ export declare function pathToFileUri(absolutePath: string): string;
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+ export declare function buildUriRewriteRules(workspacePath: string, canonicalWorkspace: string, filePath?: string, canonicalFile?: string): UriRewriteRule[];
33
+
34
+
35
+
36
+
37
+ export declare function rewriteMessageUris<T>(message: T, rules: UriRewriteRule[]): T;
38
+
39
+ export declare function invertRules(rules: UriRewriteRule[]): UriRewriteRule[];
40
+
41
+
42
+
43
+
44
+ export declare function canonicalizePath(target: string): string;
@@ -0,0 +1,2 @@
1
+ import{realpathSync as m}from"node:fs";import l from"node:path";function c(r){let t=String(r||"").replace(/\\/g,"/");try{t=decodeURIComponent(t)}catch{}return t.startsWith("file://")&&(t=t.slice(7),/^\/[a-zA-Z]:\//.test(t)&&(t=t.slice(1))),t}function u(r){const e=String(r||"").replace(/\\/g,"/").replace(/[^A-Za-z0-9\-._~:/@!$&'()*+,;=]/g,o=>encodeURIComponent(o));return e.startsWith("/")?`file://${e}`:`file:///${e}`}function h(r,t){return t?r.toLowerCase().startsWith(t.toLowerCase()):!1}function C(r,t,e,o){const n=[],i=c(r).replace(/\/+$/,""),a=c(t).replace(/\/+$/,"");if(i&&a&&i.toLowerCase()!==a.toLowerCase()&&n.push({from:i,to:a}),e&&o){const s=c(e),f=c(o);s&&f&&s.toLowerCase()!==f.toLowerCase()&&n.push({from:s,to:f})}return n.sort((s,f)=>f.from.length-s.from.length),n}function g(r,t){if(!r.startsWith("file://"))return r;const e=c(r);for(const o of t)if(h(e,o.from)){const n=e.slice(o.from.length);if(n===""||n.startsWith("/"))return u(o.to+n)}return r}function p(r,t,e){if(e>12)return r;if(typeof r=="string")return g(r,t);if(Array.isArray(r))return r.map(o=>p(o,t,e+1));if(r!==null&&typeof r=="object"){const o={};for(const[n,i]of Object.entries(r))o[n]=p(i,t,e+1);return o}return r}function W(r,t){return t.length===0?r:p(r,t,0)}function d(r){return r.map(t=>({from:t.to,to:t.from})).sort((t,e)=>e.from.length-t.from.length)}function U(r){const t=l.resolve(String(r||"").trim());if(process.platform!=="win32")return t;try{return m.native(t)}catch{return t}}export{C as buildUriRewriteRules,U as canonicalizePath,d as invertRules,c as normalizeUriPath,u as pathToFileUri,W as rewriteMessageUris};
2
+
@@ -1,6 +1,9 @@
1
1
 
2
2
  export declare function encodeLspStdioFrame(jsonText: string): Buffer;
3
3
 
4
+
5
+
6
+
4
7
  export declare class LspStdioFrameReader {
5
8
  private buffer;
6
9
 
@@ -13,6 +16,9 @@ export declare class LspStdioFrameReader {
13
16
  reset(): void;
14
17
  }
15
18
 
19
+
20
+
21
+
16
22
  export declare function resolveTypeScriptLanguageServerEntry(): string;
17
23
 
18
24
  export declare function resolveTsserverPath(): string;
@@ -27,20 +33,51 @@ export interface LspProcessBridgeCallbacks {
27
33
  onError?: (error: Error) => void;
28
34
  }
29
35
 
36
+ export interface LspLaunchCommand {
37
+ command: string;
38
+ args: string[];
39
+ env?: Record<string, string>;
40
+ cwd?: string;
41
+ }
42
+ export interface LspProcessBridgeOptions {
43
+
44
+ workspacePath: string;
45
+
46
+ language: string;
47
+
48
+
49
+
50
+
51
+ launch?: LspLaunchCommand;
52
+
53
+ providerId?: string;
54
+ }
55
+
56
+
57
+
58
+
59
+
60
+
61
+
30
62
  export declare class LspProcessBridge {
31
63
  readonly callbacks: LspProcessBridgeCallbacks;
32
64
  readonly workspacePath: string;
33
65
  readonly language: string;
66
+ readonly providerId: string;
67
+ private readonly launch?;
34
68
  private child;
35
69
  private readonly reader;
36
70
  private disposed;
37
- constructor(options: {
38
- workspacePath: string;
39
- language: string;
40
- }, callbacks: LspProcessBridgeCallbacks);
71
+ private readonly stderrTail;
72
+ constructor(options: LspProcessBridgeOptions, callbacks: LspProcessBridgeCallbacks);
41
73
  get running(): boolean;
42
74
 
75
+ getStderrTail(): string[];
76
+
77
+ private resolveLaunchCommand;
78
+
43
79
  start(): void;
80
+ private appendStderrTail;
44
81
 
45
82
  send(message: unknown): void;
46
83
 
@@ -1,6 +1,6 @@
1
- import{spawn as f}from"node:child_process";import d from"node:fs";import{createRequire as p}from"node:module";import c from"node:path";import{createLogger as u}from"../utils/logger.js";const i=u("lsp-stdio-bridge"),l=p(import.meta.url);function g(n){const e=Buffer.from(n,"utf8"),t=`Content-Length: ${e.length}\r
1
+ import{spawn as d}from"node:child_process";import f from"node:fs";import{createRequire as p}from"node:module";import c from"node:path";import{createLogger as u}from"../utils/logger.js";const i=u("lsp-stdio-bridge"),l=p(import.meta.url);function g(n){const t=Buffer.from(n,"utf8"),e=`Content-Length: ${t.length}\r
2
2
  \r
3
- `;return Buffer.concat([Buffer.from(t,"ascii"),e])}class a{constructor(){this.buffer=Buffer.alloc(0),this.headerDone=!1,this.contentLength=0}push(e){this.buffer=this.buffer.length===0?e:Buffer.concat([this.buffer,e]);const t=[];for(;;){if(!this.headerDone){const s=this.buffer.indexOf(`\r
3
+ `;return Buffer.concat([Buffer.from(e,"ascii"),t])}class h{constructor(){this.buffer=Buffer.alloc(0),this.headerDone=!1,this.contentLength=0}push(t){this.buffer=this.buffer.length===0?t:Buffer.concat([this.buffer,t]);const e=[];for(;;){if(!this.headerDone){const r=this.buffer.indexOf(`\r
4
4
  \r
5
- `);if(s===-1){if(this.buffer.length>a.MAX_HEADER_BYTES)throw new Error(`lsp stdio: header too large (${this.buffer.length} bytes), stream is malformed`);break}const o=this.buffer.subarray(0,s).toString("ascii"),h=/^Content-Length:\s*(\d+)/i.exec(o);if(!h)throw new Error(`lsp stdio: invalid header: ${o.slice(0,120)}`);if(this.contentLength=parseInt(h[1],10),this.contentLength<0||this.contentLength>512*1024*1024)throw new Error(`lsp stdio: implausible content length ${this.contentLength}`);this.buffer=this.buffer.subarray(s+4),this.headerDone=!0}if(this.buffer.length<this.contentLength)break;const r=this.buffer.subarray(0,this.contentLength).toString("utf8");this.buffer=this.buffer.subarray(this.contentLength),this.headerDone=!1,this.contentLength=0,t.push(r)}return t}reset(){this.buffer=Buffer.alloc(0),this.headerDone=!1,this.contentLength=0}}a.MAX_HEADER_BYTES=64*1024;function b(){const n=l.resolve("typescript-language-server/package.json"),e=JSON.parse(d.readFileSync(n,"utf8"));if(!e.bin)throw new Error("typescript-language-server package.json has no bin entry");const t=typeof e.bin=="string"?e.bin:Object.values(e.bin)[0];return c.join(c.dirname(n),t)}function m(){return l.resolve("typescript/lib/tsserver.js")}class L{constructor(e,t){this.callbacks=t,this.child=null,this.reader=new a,this.disposed=!1,this.workspacePath=e.workspacePath,this.language=e.language}get running(){return this.child!==null&&this.child.exitCode===null&&this.child.signalCode===null}start(){if(this.disposed)return;let e;try{e=b()}catch(t){i.warn(`[lsp-stdio] \u89E3\u6790 typescript-language-server \u5165\u53E3\u5931\u8D25: ${t.message}`),this.callbacks.onError?.(t);return}try{const t=f(process.execPath,[e,"--stdio"],{cwd:this.workspacePath,env:{...process.env,TSSERVER_PATH:m()},stdio:["pipe","pipe","pipe"]});this.child=t,t.on("error",r=>{i.warn(`[lsp-stdio] \u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B error: ${r.message}`),this.callbacks.onError?.(r)}),t.on("exit",(r,s)=>{this.child===t&&(this.child=null),i.info(`[lsp-stdio] \u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B\u9000\u51FA: code=${r}, signal=${String(s)}`),this.callbacks.onExit?.(r,s)}),t.stdout?.on("data",r=>{if(!this.disposed)try{for(const s of this.reader.push(r))try{this.callbacks.onMessage(JSON.parse(s))}catch(o){i.warn(`[lsp-stdio] \u65E0\u6CD5\u89E3\u6790 server \u6D88\u606F: ${s.slice(0,200)} err=${o.message}`)}}catch(s){i.warn(`[lsp-stdio] \u89E3\u6790 server \u8F93\u51FA\u5931\u8D25: ${s.message}`),this.callbacks.onError?.(s)}}),t.stderr?.on("data",r=>{this.disposed||this.callbacks.onStderr?.(r.toString("utf8"))}),i.info(`[lsp-stdio] \u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B\u5DF2\u542F\u52A8 workspace=${this.workspacePath} pid=${t.pid}`)}catch(t){i.warn(`[lsp-stdio] \u542F\u52A8\u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B\u5931\u8D25: ${t.message}`),this.callbacks.onError?.(t)}}send(e){const t=this.child;if(!t||!t.stdin?.writable){i.warn("[lsp-stdio] \u8FDB\u7A0B\u672A\u5C31\u7EEA\uFF0C\u4E22\u5F03\u6D88\u606F");return}t.stdin.write(g(JSON.stringify(e)))}dispose(){if(this.disposed)return;this.disposed=!0;const e=this.child;this.child=null,this.reader.reset(),e&&e.exitCode===null&&e.signalCode===null&&(i.info(`[lsp-stdio] \u7EC8\u6B62\u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B pid=${e.pid}`),e.kill())}}export{L as LspProcessBridge,a as LspStdioFrameReader,g as encodeLspStdioFrame,m as resolveTsserverPath,b as resolveTypeScriptLanguageServerEntry};
5
+ `);if(r===-1){if(this.buffer.length>h.MAX_HEADER_BYTES)throw new Error(`lsp stdio: header too large (${this.buffer.length} bytes), stream is malformed`);break}const o=this.buffer.subarray(0,r).toString("ascii"),a=/^Content-Length:\s*(\d+)/i.exec(o);if(!a)throw new Error(`lsp stdio: invalid header: ${o.slice(0,120)}`);if(this.contentLength=parseInt(a[1],10),this.contentLength<0||this.contentLength>512*1024*1024)throw new Error(`lsp stdio: implausible content length ${this.contentLength}`);this.buffer=this.buffer.subarray(r+4),this.headerDone=!0}if(this.buffer.length<this.contentLength)break;const s=this.buffer.subarray(0,this.contentLength).toString("utf8");this.buffer=this.buffer.subarray(this.contentLength),this.headerDone=!1,this.contentLength=0,e.push(s)}return e}reset(){this.buffer=Buffer.alloc(0),this.headerDone=!1,this.contentLength=0}}h.MAX_HEADER_BYTES=64*1024;function b(){const n=l.resolve("typescript-language-server/package.json"),t=JSON.parse(f.readFileSync(n,"utf8"));if(!t.bin)throw new Error("typescript-language-server package.json has no bin entry");const e=typeof t.bin=="string"?t.bin:Object.values(t.bin)[0];return c.join(c.dirname(n),e)}function m(){return l.resolve("typescript/lib/tsserver.js")}const v=40;class E{constructor(t,e){this.callbacks=e,this.child=null,this.reader=new h,this.disposed=!1,this.stderrTail=[],this.workspacePath=t.workspacePath,this.language=t.language,this.providerId=t.providerId??"typescript",this.launch=t.launch}get running(){return this.child!==null&&this.child.exitCode===null&&this.child.signalCode===null}getStderrTail(){return[...this.stderrTail]}resolveLaunchCommand(){if(this.launch)return this.launch;const t=b();return{command:process.execPath,args:[t,"--stdio"],env:{TSSERVER_PATH:m()},cwd:this.workspacePath}}start(){if(this.disposed)return;let t;try{t=this.resolveLaunchCommand()}catch(e){i.warn(`[lsp-stdio] \u89E3\u6790\u8BED\u8A00\u670D\u52A1\u5165\u53E3\u5931\u8D25 provider=${this.providerId}: ${e.message}`),this.callbacks.onError?.(e);return}try{const e=d(t.command,t.args,{cwd:t.cwd||this.workspacePath,env:{...process.env,...t.env??{}},stdio:["pipe","pipe","pipe"]});this.child=e,e.on("error",s=>{i.warn(`[lsp-stdio] \u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B error provider=${this.providerId}: ${s.message}`),this.callbacks.onError?.(s)}),e.on("exit",(s,r)=>{this.child===e&&(this.child=null),i.info(`[lsp-stdio] \u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B\u9000\u51FA provider=${this.providerId}: code=${s}, signal=${String(r)}`),this.callbacks.onExit?.(s,r)}),e.stdout?.on("data",s=>{if(!this.disposed)try{for(const r of this.reader.push(s))try{this.callbacks.onMessage(JSON.parse(r))}catch(o){i.warn(`[lsp-stdio] \u65E0\u6CD5\u89E3\u6790 server \u6D88\u606F: ${r.slice(0,200)} err=${o.message}`)}}catch(r){i.warn(`[lsp-stdio] \u89E3\u6790 server \u8F93\u51FA\u5931\u8D25: ${r.message}`),this.callbacks.onError?.(r)}}),e.stderr?.on("data",s=>{if(this.disposed)return;const r=s.toString("utf8");this.appendStderrTail(r),this.callbacks.onStderr?.(r)}),i.info(`[lsp-stdio] \u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B\u5DF2\u542F\u52A8 provider=${this.providerId} workspace=${this.workspacePath} pid=${e.pid} cmd=${t.command}`)}catch(e){i.warn(`[lsp-stdio] \u542F\u52A8\u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B\u5931\u8D25 provider=${this.providerId}: ${e.message}`),this.callbacks.onError?.(e)}}appendStderrTail(t){for(const e of t.split(/\r?\n/)){const s=e.trim();s&&this.stderrTail.push(s)}for(;this.stderrTail.length>v;)this.stderrTail.shift()}send(t){const e=this.child;if(!e||!e.stdin?.writable){i.warn("[lsp-stdio] \u8FDB\u7A0B\u672A\u5C31\u7EEA\uFF0C\u4E22\u5F03\u6D88\u606F");return}e.stdin.write(g(JSON.stringify(t)))}dispose(){if(this.disposed)return;this.disposed=!0;const t=this.child;this.child=null,this.reader.reset(),t&&t.exitCode===null&&t.signalCode===null&&(i.info(`[lsp-stdio] \u7EC8\u6B62\u8BED\u8A00\u670D\u52A1\u8FDB\u7A0B pid=${t.pid}`),t.kill())}}export{E as LspProcessBridge,h as LspStdioFrameReader,g as encodeLspStdioFrame,m as resolveTsserverPath,b as resolveTypeScriptLanguageServerEntry};
6
6
 
@@ -1,4 +1,17 @@
1
1
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+ import { type UserScope } from "./user-scope.js";
2
15
  export interface DeployedMcpEntry {
3
16
  name: string;
4
17
  fileName: string;
@@ -34,16 +47,30 @@ export interface McpDeploySpec {
34
47
  env?: Record<string, string>;
35
48
  headers?: Record<string, string>;
36
49
 
50
+
51
+
52
+
53
+
37
54
  collapsed?: boolean;
38
55
 
39
56
  description?: string;
40
57
  }
41
58
  export declare class McpDeployManager {
59
+ private readonly scope;
42
60
  private readonly rootDir;
43
- private static _instance;
44
- static getInstance(): McpDeployManager;
61
+ private readonly packagesRootDir;
62
+ private static instances;
63
+
64
+
65
+
66
+
67
+ static forScope(scope: UserScope): McpDeployManager;
45
68
  private constructor();
46
69
 
70
+
71
+
72
+
73
+
47
74
  private static isValidName;
48
75
  private manifestFile;
49
76
  private specFile;
@@ -60,6 +87,9 @@ export declare class McpDeployManager {
60
87
  private packagesDir;
61
88
  private packagesManifestFile;
62
89
 
90
+
91
+
92
+
63
93
  packageDir(name: string): string;
64
94
 
65
95
  isPackageHealthy(name: string): boolean;
@@ -68,6 +98,12 @@ export declare class McpDeployManager {
68
98
 
69
99
  private packageUpToDate;
70
100
 
101
+
102
+
103
+
104
+
105
+
106
+
71
107
  ensureMcpPackage(name: string, ref: McpPackageRef): Promise<McpDeployResult>;
72
108
 
73
109
  private removeMcpPackage;
@@ -76,9 +112,14 @@ export declare class McpDeployManager {
76
112
 
77
113
  getSpec(name: string): McpDeploySpec | null;
78
114
 
115
+
116
+
117
+
118
+
79
119
  resolveEnabledMcp(agentId: string, globalMcpServers: Record<string, unknown>): Record<string, unknown>;
80
120
 
81
121
  deployedDefaultEnabled(): Record<string, boolean>;
82
122
  }
83
- export declare const mcpDeployManager: McpDeployManager;
84
- export declare const reconcileMcpDefaultsFromDeployed: () => number;
123
+
124
+ export declare function getMcpDeployManager(scope: UserScope): McpDeployManager;
125
+ export declare const reconcileMcpDefaultsFromDeployed: (scope: UserScope) => number;