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,4 +1,33 @@
1
- export type MemoryType = 'instance_memory' | 'instance_long_memory' | 'project_memory' | 'session_context';
1
+ export type MemoryType = 'instance_hotspot_memory' | 'instance_permanent_memory' | 'project_doc_memory' | 'session_context';
2
+
3
+
4
+
5
+
6
+
7
+ export declare const LEGACY_MEMORY_TYPE_ALIASES: Record<string, MemoryType>;
8
+
9
+ export declare const MEMORY_TYPE_GUIDE: string;
10
+
11
+
12
+
13
+ export declare function normalizeMemoryTypeName(input: unknown): MemoryType | null;
14
+
15
+
16
+
17
+
18
+
19
+ export declare function validateTypeConstraints(memoryType: MemoryType, input: {
20
+ title?: string;
21
+ content?: string;
22
+ bound_files?: string[];
23
+ }): void;
24
+
25
+
26
+
27
+
28
+
29
+
30
+
2
31
 
3
32
  export declare function normalizeBoundFilePath(filePath: string): string;
4
33
  export interface MemoryRecord {
@@ -152,54 +181,125 @@ export interface MemoryStorePort {
152
181
  export declare class MemoryStore implements MemoryStorePort {
153
182
  private readonly storePath;
154
183
 
184
+
185
+
186
+
187
+
155
188
  private readonly domainJsonCache;
156
189
  constructor(storePath: string);
157
190
  private nowIso;
158
191
  private normalizeUri;
159
- private normalizeMemoryType;
192
+
193
+
194
+
195
+
196
+
197
+ normalizeMemoryType(input: unknown, allowedTypes?: MemoryType[]): MemoryType;
160
198
  private ensureTypeMatch;
161
199
 
200
+
201
+
202
+
162
203
  private ensureStoreDir;
163
204
 
205
+
206
+
207
+
164
208
  private loadMemoryFile;
165
209
 
210
+
211
+
212
+
166
213
  private loadData;
167
214
  private writeJsonAtomically;
168
215
 
216
+
217
+
218
+
169
219
  private saveData;
170
220
  private createEmptyStats;
171
221
 
222
+
223
+
224
+
172
225
  private calculateStats;
173
226
  private generateId;
174
227
 
228
+
229
+
230
+
175
231
  private ensureListableMemoryCapacity;
176
232
 
233
+
234
+
235
+
177
236
  private ensureSessionContextCapacity;
178
237
  getStats(): Promise<MemoryStats>;
179
238
 
239
+
240
+
180
241
  private static calcAgentMemoryExpiresAt;
181
242
 
243
+
244
+
245
+
246
+
182
247
  static isExpirableType(memoryType: string | undefined): boolean;
248
+
249
+
250
+
251
+
252
+ validateTypeConstraints(memoryType: MemoryType, input: {
253
+ title?: string;
254
+ content?: string;
255
+ bound_files?: string[];
256
+ }): void;
183
257
  createMemory(input: CreateMemoryInput): Promise<MemoryRecord>;
184
258
  readMemory(input: ReadMemoryInput): Promise<MemoryRecord | null>;
185
259
  updateMemory(input: UpdateMemoryInput): Promise<MemoryRecord>;
186
260
  deleteMemory(input: DeleteMemoryInput): Promise<boolean>;
187
261
 
262
+
263
+
264
+
265
+
266
+
267
+
268
+
188
269
  listExpiredRecentlyMemories(): Promise<MemoryRecord[]>;
189
270
 
271
+
272
+
273
+
274
+
190
275
  searchMemory(input: SearchMemoryInput): Promise<{
191
276
  query: string;
192
277
  results: MemoryRecord[];
193
278
  }>;
194
279
  listByType(memory_type: string): Promise<MemoryRecord[]>;
195
280
 
281
+
282
+
283
+
196
284
  listByFile(filePath: string, memory_type?: MemoryType | ListByFileOptions): Promise<MemoryRecord[]>;
197
285
 
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
198
294
  markExpiredMemoriesRecalling(uris?: string[]): Promise<{
199
295
  marked: number;
200
296
  uris: string[];
201
297
  }>;
202
298
 
299
+
300
+
301
+
302
+
203
303
  clearRecallingExpiredMemories(uris?: string[]): Promise<{
204
304
  deleted: number;
205
305
  uris: string[];
@@ -1,4 +1,29 @@
1
- const E=["instance_memory","instance_long_memory","project_memory","session_context"],h=["instance_memory","instance_long_memory"],C=64,R=32,Y=128,$=64,P=1024;function L(y){const e=String(y||"").trim().replace(/\\/g,"/");if(!e)return e;const t=e.startsWith("@/")?e.substring(1):e;return t.startsWith("./")?t:`./${t.replace(/^\/+/,"")}`}class T extends Error{details;constructor(e,t){super(e),this.name="MemoryCapacityError",this.details=t}}const b=/^([a-zA-Z_][a-zA-Z0-9_]*):\/\/(.*)$/,g="local",S=50,x=10;function D(y){const e=(y||"").trim();return e?e.split("|").map(t=>t.trim()).filter(Boolean).map(t=>t.split(/\s+/).filter(Boolean)):[]}function O(y,e){return y.length===0?!1:y.some(t=>t.every(o=>e.includes(o)))}class p{storePath;domainJsonCache=new Map;constructor(e){this.storePath=e}nowIso(){return new Date().toISOString()}normalizeUri(e){const t=String(e||"").trim(),o=b.exec(t);if(!o)throw new Error(`Invalid memory uri: ${e}`);const r=o[1],n=o[2];if(!r||!n)throw new Error(`Invalid memory uri: ${e}`);const a=r.toLowerCase(),s=n.replace(/^\/+|\/+$/g,"");if(!s)throw new Error(`Invalid memory uri path: ${e}`);return{uri:`${a}://${s}`,domain:a,path:s}}normalizeMemoryType(e,t=E){const o=String(e||"").trim();if(!t.includes(o))throw new Error(`Invalid memory_type: ${e}`);return o}ensureTypeMatch(e,t){if(t&&e.memory_type!==t)throw new Error(`Memory type mismatch: expected ${t}, actual ${e.memory_type}`)}async ensureStoreDir(){const{mkdir:e}=await import("node:fs/promises");await e(this.storePath,{recursive:!0})}async loadMemoryFile(e){const{readFile:t}=await import("node:fs/promises");try{const o=await t(e,"utf-8"),r=JSON.parse(o),n=r.by_uri&&typeof r.by_uri=="object"?r.by_uri:{},a={};for(const[s,d]of Object.entries(n)){const i=this.normalizeMemoryType(d.memory_type||"project_memory"),l=this.normalizeUri(d.uri||s),m=d;let c=m.memory_status;c||(m.update_status==="updating"?c="updating":m.recall_status==="recalling"?c="recalling":c="normal");const u={...d};delete u.update_status,delete u.recall_status,a[l.uri]={...u,uri:l.uri,domain:l.domain,path:l.path,memory_type:i,memory_status:c}}return{by_uri:a}}catch{return{by_uri:{}}}}async loadData(){const{readdir:e}=await import("node:fs/promises"),t=await import("node:path");try{const o=await e(this.storePath,{withFileTypes:!0}),r={by_uri:{}};for(const n of o){if(!n.isFile()||!n.name.endsWith(".json"))continue;const a=await this.loadMemoryFile(t.join(this.storePath,n.name));Object.assign(r.by_uri,a.by_uri)}return r}catch{return{by_uri:{}}}}async writeJsonAtomically(e,t,o=JSON.stringify(t,null,2)){const{rename:r,rm:n,writeFile:a}=await import("node:fs/promises"),s=`${e}.${process.pid}.${Date.now()}.tmp`;try{await a(s,o,"utf-8"),await r(s,e)}catch(d){throw await n(s,{force:!0}),d}}async saveData(e){const{readFile:t,readdir:o,rm:r}=await import("node:fs/promises"),n=await import("node:path");await this.ensureStoreDir();const a=new Map;for(const i of Object.values(e.by_uri)){const l=a.get(i.domain)??{by_uri:{}};l.by_uri[i.uri]=i,a.set(i.domain,l)}for(const[i,l]of a.entries()){const m=n.join(this.storePath,`${i}.json`),c=JSON.stringify(l,null,2);if(this.domainJsonCache.get(m)===c)continue;let _;try{_=await t(m,"utf-8")}catch{_=void 0}if(_===c){this.domainJsonCache.set(m,c);continue}await this.writeJsonAtomically(m,l,c),this.domainJsonCache.set(m,c)}const s=new Set([...a.keys()].map(i=>`${i}.json`)),d=await o(this.storePath,{withFileTypes:!0});for(const i of d)if(i.isFile()&&i.name.endsWith(".json")&&!s.has(i.name)){const l=n.join(this.storePath,i.name);await r(l,{force:!0}),this.domainJsonCache.delete(l)}}createEmptyStats(){return{total:0,listable:{count:0,limit:64,hardLimit:128,exceeded:!1,hardExceeded:!1},by_type:{instance_memory:{count:0,limit:32,hardLimit:64,exceeded:!1,hardExceeded:!1,listable:!0,domainCount:0,by_domain:{}},instance_long_memory:{count:0,limit:32,hardLimit:64,exceeded:!1,hardExceeded:!1,listable:!0,domainCount:0,by_domain:{}},project_memory:{count:0,limit:null,hardLimit:null,exceeded:!1,hardExceeded:!1,listable:!1,domainCount:0,by_domain:{}},session_context:{count:0,limit:null,hardLimit:1024,exceeded:!1,hardExceeded:!1,listable:!1,domainCount:0,by_domain:{}}}}}calculateStats(e){const t=this.createEmptyStats();for(const o of Object.values(e.by_uri)){t.total+=1;const r=t.by_type[o.memory_type];r.count+=1;const n=d=>h.includes(d)?32:null,a=d=>h.includes(d)?64:d==="session_context"?1024:null,s=r.by_domain[o.domain]??{count:0,limit:n(o.memory_type),hardLimit:a(o.memory_type),exceeded:!1,hardExceeded:!1};s.count+=1,r.by_domain[o.domain]=s,h.includes(o.memory_type)&&(t.listable.count+=1)}t.listable.exceeded=t.listable.count>t.listable.limit,t.listable.hardExceeded=t.listable.count>=t.listable.hardLimit;for(const o of E){const r=t.by_type[o];r.domainCount=Object.keys(r.by_domain).length,r.limit!==null&&r.hardLimit!==null&&(r.exceeded=r.domainCount>r.limit,r.hardExceeded=r.domainCount>=r.hardLimit);for(const n of Object.values(r.by_domain))n.limit!==null&&n.hardLimit!==null&&(n.exceeded=n.count>n.limit,n.hardExceeded=n.count>=n.hardLimit)}return t}generateId(e){return`${e.replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,"")}_${Date.now().toString(36)}`}ensureListableMemoryCapacity(e,t,o){if(!h.includes(t))return;const n=this.calculateStats(e).by_type[t],a=n.by_domain[o.domain];if(!a&&n.domainCount>=64)throw new T(`Cannot create ${t}: hard domain type limit 64 reached. Please delete an existing ${t} domain type before creating a new ${t}.`,{code:"MEMORY_TYPE_LIMIT_REACHED",memory_type:t,limit:64,current:n.domainCount,recommended_actions:[`list_memories({ memory_type: '${t}' })`,`delete_memory({ uri, memory_type: '${t}' })`]});if(a&&a.count>=64)throw new T(`Cannot create ${t}: hard memory limit 64 reached under domain ${o.domain}. Please delete or archive existing ${o.domain}://${t} memories before creating a new one.`,{code:"MEMORY_TYPE_LIMIT_REACHED",memory_type:t,domain:o.domain,limit:64,current:a.count,recommended_actions:[`list_memories({ memory_type: '${t}' })`,`delete_memory({ uri, memory_type: '${t}' })`]})}ensureSessionContextCapacity(e,t,o){if(t!=="session_context")return;const r=Object.values(e.by_uri).filter(n=>n.memory_type==="session_context"&&n.domain===o.domain).length;if(r>=1024)throw new T(`Cannot create session_context: hard limit 1024 reached under domain ${o.domain}. Please delete existing session_context memories before creating a new one.`,{code:"MEMORY_TYPE_LIMIT_REACHED",memory_type:t,domain:o.domain,limit:1024,current:r,recommended_actions:["list_memories({ memory_type: 'session_context' })","delete_memory({ uri, memory_type: 'session_context' })"]})}async getStats(){const e=await this.loadData();return this.calculateStats(e)}static calcAgentMemoryExpiresAt(){return new Date(Date.now()+432e5).toISOString()}static isExpirableType(e){return e==="instance_long_memory"||e==="instance_memory"}async createMemory(e){const t=this.normalizeMemoryType(e.memory_type),o=this.normalizeUri(e.uri),r=await this.loadData();if(r.by_uri[o.uri])throw new Error(`Memory already exists: ${o.uri}`);this.ensureListableMemoryCapacity(r,t,o),this.ensureSessionContextCapacity(r,t,o);const n=this.nowIso(),a={id:this.generateId(o.uri),uri:o.uri,domain:o.domain,path:o.path,title:e.title||void 0,content:String(e.content||""),memory_type:t,createdAt:n,updatedAt:n,version:1,keywords:e.keywords,bound_files:e.bound_files,file_md5_map:e.file_md5_map||void 0,updating_agent_id:void 0,last_check_time:e.last_check_time||void 0,expiresAt:e.expiresAt||(p.isExpirableType(t)?p.calcAgentMemoryExpiresAt():void 0),memory_status:"normal"};return r.by_uri[o.uri]=a,await this.saveData(r),a}async readMemory(e){const t=this.normalizeUri(e.uri),o=typeof e.memory_type=="string"?this.normalizeMemoryType(e.memory_type):void 0,n=(await this.loadData()).by_uri[t.uri]??null;return n?(this.ensureTypeMatch(n,o),n):null}async updateMemory(e){const t=this.normalizeUri(e.uri),o=typeof e.memory_type=="string"?this.normalizeMemoryType(e.memory_type):void 0,r=await this.loadData(),n=r.by_uri[t.uri];if(!n)throw new Error(`Memory not found: ${t.uri}`);this.ensureTypeMatch(n,o);let a=n.content;if(typeof e.old_string=="string"&&typeof e.new_string=="string"){const m=e.old_string;if(!m)throw new Error("old_string cannot be empty when replacing");const c=a.split(m).length-1;if(c===0)throw new Error("old_string not found in memory content");if(c>1)throw new Error("old_string appears multiple times; replace is ambiguous");a=a.replace(m,e.new_string)}typeof e.append=="string"&&e.append.length>0&&(a=`${a}${e.append}`);const s=a!==n.content||typeof e.title=="string"&&e.title!==n.title,d=this.nowIso();let i=n.expiresAt;if(p.isExpirableType(n.memory_type))if(n.memory_type==="instance_memory")i=new Date(Date.now()+24*60*60*1e3).toISOString();else{const m=n.expiresAt?new Date(n.expiresAt):null,c=n.updatedAt?new Date(n.updatedAt):null,u=m&&c&&!isNaN(c.getTime())?Math.max(12*60*60*1e3,m.getTime()-c.getTime()):12*60*60*1e3;i=new Date(Date.now()+u*2).toISOString()}e.expiresAt!==void 0&&(i=e.expiresAt);const l={...n,content:a,title:e.title!==void 0?e.title:n.title,updatedAt:d,version:n.version+1,keywords:e.keywords!==void 0?e.keywords:n.keywords,bound_files:e.bound_files!==void 0?e.bound_files:n.bound_files,file_md5_map:e.file_md5_map!==void 0?e.file_md5_map:e.bound_files!==void 0?void 0:n.file_md5_map,memory_status:e.memory_status!==void 0?e.memory_status:n.memory_status==="updating"?"normal":n.memory_status||"normal",updating_agent_id:e.memory_status!==void 0?e.updating_agent_id||void 0:n.memory_status==="updating"?void 0:n.updating_agent_id,last_check_time:e.last_check_time!==void 0?e.last_check_time:n.last_check_time,expiresAt:i};return r.by_uri[t.uri]=l,await this.saveData(r),l}async deleteMemory(e){const t=this.normalizeUri(e.uri),o=typeof e.memory_type=="string"?this.normalizeMemoryType(e.memory_type):void 0,r=await this.loadData(),n=r.by_uri[t.uri];return n?(this.ensureTypeMatch(n,o),delete r.by_uri[t.uri],await this.saveData(r),!0):!1}async listExpiredRecentlyMemories(){const e=await this.loadData(),t=new Date,o=[];for(const r of Object.values(e.by_uri))r.memory_type!=="instance_long_memory"&&r.memory_type!=="instance_memory"||r.expiresAt&&(new Date(r.expiresAt)>t||r.memory_status==="recalling"&&r.updating_agent_id!==g||o.push(r));return o.sort((r,n)=>r.expiresAt.localeCompare(n.expiresAt))}async searchMemory(e){const t=await this.loadData(),r=String(e.query||"").trim().toLowerCase(),n=e.memory_type?this.normalizeMemoryType(e.memory_type):void 0,a=typeof e.limit=="number"&&e.limit>0?e.limit:10,s=e.keywords?.map(c=>c.toLowerCase()),d=e.keyword_mode==="all"?"all":"any",i=D(r);if(i.length===0&&(!s||s.length===0))return{query:r,results:[]};const l=new Set,m=[];for(const c of Object.values(t.by_uri)){if(n&&c.memory_type!==n||l.has(c.id))continue;let u=0;if(s&&s.length>0&&c.keywords){const _=c.keywords.map(f=>f.toLowerCase());if(d==="all"){if(s.every(w=>_.includes(w)))u+=10*s.length;else if(i.length===0)continue}else for(const f of s)_.includes(f)&&(u+=10)}if(i.length>0){const _=`${c.uri}
1
+ const M=["instance_hotspot_memory","instance_permanent_memory","project_doc_memory","session_context"],w=["instance_hotspot_memory","instance_permanent_memory"],A={task_list:"instance_hotspot_memory",recently_memory:"instance_hotspot_memory",instance_memory:"instance_hotspot_memory",agent_memory:"instance_permanent_memory",instance_long_memory:"instance_permanent_memory",memory:"project_doc_memory",project_memory:"project_doc_memory"},p=["\u8BB0\u5FC6\u7C7B\u578B\u4E09\u9009\u4E00\uFF08\u6309\u300C\u8FD9\u6761\u5185\u5BB9\u672A\u6765\u88AB\u8C01\u8BFB\u5230\u3001\u4F55\u65F6\u8BFB\u5230\u300D\u9009\u62E9\uFF09\uFF1A","- instance_hotspot_memory \u5B9E\u4F8B\u70ED\u70B9\u8BB0\u5FC6\uFF1A\u4E0B\u6B21\u4F1A\u8BDD\u5F00\u573A\u5C31\u8981\u7528\u7684\u5DE5\u4F5C\u72B6\u6001\uFF08\u8FDB\u5EA6/\u5F85\u529E/\u4E34\u65F6\u7ED3\u8BBA\uFF09\u3002\u6761\u6570\u6709\u9650\u3001\u77ED TTL\uFF0C\u81EA\u52A8\u6CE8\u5165\u4E0B\u6B21\u4F1A\u8BDD\u8BB0\u5FC6\u5757\u3002\u7981\u6B62\u5B58\u957F\u671F\u7ECF\u9A8C\u4E0E\u9879\u76EE\u6587\u6863\u3002","- instance_permanent_memory \u5B9E\u4F8B\u6C38\u4E45\u8BB0\u5FC6\uFF1A\u672C\u5B9E\u4F8B\u5BF9\u73AF\u5883/\u5DE5\u5177/\u6D41\u7A0B\u7684\u957F\u671F\u7ECF\u9A8C\u7ED3\u8BBA\uFF08\u6559\u8BAD/\u7EA6\u5B9A/\u80FD\u529B\u8FB9\u754C\uFF09\u3002\u65E0\u8FC7\u671F\uFF0C\u9760 search_memory \u68C0\u7D22\u3002\u4E0D\u8981\u6C42\u7ED1\u5B9A\u6587\u4EF6\u3002","- project_doc_memory \u9879\u76EE\u6587\u6863\u8BB0\u5FC6\uFF1A\u5BF9\u9879\u76EE\u6587\u4EF6\u96C6\u7684\u5BA2\u89C2\u7B14\u8BB0\uFF08\u67B6\u6784/\u6A21\u5757\u804C\u8D23/\u63A5\u53E3\u7EA6\u5B9A/\u5751\u70B9\uFF09\u3002\u5E94\u5C3D\u91CF\u7528 bound_files \u5173\u8054\u6587\u4EF6\uFF0C\u6807\u9898\u5FC5\u586B\u3001\u5185\u5BB9\u9700\u542B markdown \u5C0F\u8282\uFF08## \uFF09\uFF0C\u89D2\u8272\u7EA7\u5171\u4EAB\u3001\u968F\u6587\u4EF6\u53D8\u66F4\u7EF4\u62A4\u3002","\u9009\u62E9\u89C4\u5219\uFF1A\u5185\u5BB9\u6307\u5411\u5177\u4F53\u9879\u76EE\u6587\u4EF6\u3001\u9700\u968F\u6587\u4EF6\u53D8\u66F4\u7EF4\u62A4 \u2192 project_doc_memory\uFF1B\u73AF\u5883/\u5DE5\u5177\u7ECF\u9A8C\u3001\u4E0D\u6307\u5411\u5177\u4F53\u6587\u4EF6 \u2192 instance_permanent_memory\uFF1B\u672C\u6B21\u4EFB\u52A1\u8FDB\u5EA6\u3001\u4E0B\u6B21\u4F1A\u8BDD\u63A5\u7740\u5E72 \u2192 instance_hotspot_memory\u3002"].join(`
2
+ `);function Y(_){const e=String(_||"").trim(),t=A[e]??e;return M.includes(t)?t:null}function j(_,e){const t=(e.bound_files||[]).filter(o=>String(o||"").trim()),r=String(e.title||"").trim(),n=String(e.content||"");if(_==="project_doc_memory"){if(!r)throw new Error(`project_doc_memory \u5FC5\u987B\u586B\u5199 title\uFF08\u226450 \u5B57\u7684\u89C4\u8303\u6807\u9898\uFF0C\u4FBF\u4E8E\u68C0\u7D22\u4E0E\u53D8\u66F4\u8FFD\u8E2A\uFF09\u3002
3
+ \u63A8\u8350\u683C\u5F0F\uFF1A\u300C<\u6A21\u5757/\u6587\u4EF6\u96C6> - <\u4E3B\u9898>\u300D\uFF0C\u4F8B\u5982\u300Csrc/api - \u63A5\u53E3\u5C42\u804C\u8D23\u4E0E\u7EA6\u5B9A\u300D\u3002
4
+ `+p);if(r.length>50)throw new Error(`project_doc_memory \u7684 title \u4E0D\u5F97\u8D85\u8FC7 50 \u5B57\uFF08\u5F53\u524D ${r.length} \u5B57\uFF09\u3002\u8BF7\u7CBE\u70BC\u4E3A\u300C<\u6A21\u5757/\u6587\u4EF6\u96C6> - <\u4E3B\u9898>\u300D\u5F62\u5F0F\u3002`);if(!/^##\s+\S/m.test(n))throw new Error(`project_doc_memory \u7684 content \u5FC5\u987B\u5305\u542B\u81F3\u5C11\u4E00\u4E2A markdown \u5C0F\u8282\uFF08## \u6807\u9898\uFF09\uFF0C\u6309\u5BA2\u89C2\u7B14\u8BB0\u89C4\u8303\u7EC4\u7EC7\u3002
5
+ \u63A8\u8350\u6A21\u677F\uFF1A
6
+ ## \u6982\u8FF0
7
+ <\u4E00\u53E5\u8BDD\u8BF4\u660E\u8FD9\u4EFD\u7B14\u8BB0\u8986\u76D6\u54EA\u4E9B\u6587\u4EF6>
8
+ ## \u7ED3\u6784
9
+ <\u6A21\u5757/\u6587\u4EF6\u804C\u8D23\u3001\u4F9D\u8D56\u5173\u7CFB>
10
+ ## \u5173\u952E\u7ED3\u8BBA
11
+ <\u63A5\u53E3\u7EA6\u5B9A\u3001\u8BBE\u8BA1\u51B3\u7B56>
12
+ ## \u8E29\u5751
13
+ <\u5DF2\u77E5\u95EE\u9898\u4E0E\u89C4\u907F\u65B9\u5F0F>
14
+ `+p)}if(_==="instance_hotspot_memory"){if(!r)throw new Error(`instance_hotspot_memory \u5FC5\u987B\u586B\u5199 title\uFF08\u7B80\u77ED\u6807\u9898\uFF0C\u8BF4\u660E\u8FD9\u6761\u70ED\u70B9\u8BB0\u5FC6\u662F\u4EC0\u4E48\u5DE5\u4F5C\u72B6\u6001\uFF09\u3002
15
+ `+p);if(n.length>2e3)throw new Error(`instance_hotspot_memory \u7684 content \u4E0D\u5F97\u8D85\u8FC7 2000 \u5B57\uFF08\u5F53\u524D ${n.length} \u5B57\uFF09\u3002\u70ED\u70B9\u8BB0\u5FC6\u53EA\u5B58\u4E0B\u6B21\u4F1A\u8BDD\u5F00\u573A\u9700\u8981\u7684\u5DE5\u4F5C\u72B6\u6001\uFF1B\u957F\u671F\u7ECF\u9A8C\u8BF7\u6539\u7528 instance_permanent_memory\uFF0C\u9879\u76EE\u6587\u6863\u8BF7\u6539\u7528 project_doc_memory \u5E76\u62C6\u5206\u5230\u5BF9\u5E94\u6587\u4EF6\u7B14\u8BB0\u3002`)}if(_==="instance_permanent_memory"&&t.length>0)throw new Error(`instance_permanent_memory \u4E0D\u8981\u6C42\u4E5F\u4E0D\u5EFA\u8BAE\u7ED1\u5B9A\u6587\u4EF6\uFF1A\u7ED1\u5B9A\u6587\u4EF6\u7684\u5185\u5BB9\u5C5E\u4E8E\u9879\u76EE\u6587\u6863\uFF0C\u5E94\u6539\u7528 project_doc_memory\uFF08bound_files + \u89C4\u8303\u6807\u9898/\u5185\u5BB9\uFF09\u3002
16
+ \u82E5\u786E\u5B9E\u53EA\u662F\u73AF\u5883\u7ECF\u9A8C\u3001\u53EA\u662F\u987A\u5E26\u8BB0\u5F55\u4E86\u6587\u4EF6\u8DEF\u5F84\uFF0C\u8BF7\u53BB\u6389 bound_files \u518D\u4FDD\u5B58\u4E3A instance_permanent_memory\u3002
17
+ `+p)}const L=64,x=32,O=L*2,h=x*2,g=1024;function I(_){const e=String(_||"").trim().replace(/\\/g,"/");if(!e)return e;const t=e.startsWith("@/")?e.substring(1):e;return t.startsWith("./")?t:`./${t.replace(/^\/+/,"")}`}class S extends Error{details;constructor(e,t){super(e),this.name="MemoryCapacityError",this.details=t}}const v=/^([a-zA-Z_][a-zA-Z0-9_]*):\/\/(.*)$/,C="local",k=50,R=10;function P(_){const e=(_||"").trim();return e?e.split("|").map(t=>t.trim()).filter(Boolean).map(t=>t.split(/\s+/).filter(Boolean)):[]}function z(_,e){return _.length===0?!1:_.some(t=>t.every(r=>e.includes(r)))}class b{storePath;domainJsonCache=new Map;constructor(e){this.storePath=e}nowIso(){return new Date().toISOString()}normalizeUri(e){const t=String(e||"").trim(),r=v.exec(t);if(!r)throw new Error(`Invalid memory uri: ${e}`);const n=r[1],o=r[2];if(!n||!o)throw new Error(`Invalid memory uri: ${e}`);const i=n.toLowerCase(),s=o.replace(/^\/+|\/+$/g,"");if(!s)throw new Error(`Invalid memory uri path: ${e}`);return{uri:`${i}://${s}`,domain:i,path:s}}normalizeMemoryType(e,t=M){const r=String(e||"").trim(),n=A[r]??r;if(!t.includes(n))throw new Error(`Invalid memory_type: ${e}
18
+ ${p}`+(A[r]?`
19
+ \u63D0\u793A\uFF1A\u65E7\u7C7B\u578B\u540D ${r} \u5DF2\u66F4\u540D\u4E3A ${n}\u3002`:""));return n}ensureTypeMatch(e,t){if(t&&e.memory_type!==t)throw new Error(`Memory type mismatch: expected ${t}, actual ${e.memory_type}`)}async ensureStoreDir(){const{mkdir:e}=await import("node:fs/promises");await e(this.storePath,{recursive:!0})}async loadMemoryFile(e){const{readFile:t}=await import("node:fs/promises");try{const r=await t(e,"utf-8"),n=JSON.parse(r),o=n.by_uri&&typeof n.by_uri=="object"?n.by_uri:{},i={};for(const[s,d]of Object.entries(o)){const a=this.normalizeMemoryType(d.memory_type||"project_doc_memory"),m=this.normalizeUri(d.uri||s),l=d;let c=l.memory_status;c||(l.update_status==="updating"?c="updating":l.recall_status==="recalling"?c="recalling":c="normal");const y={...d};delete y.update_status,delete y.recall_status,i[m.uri]={...y,uri:m.uri,domain:m.domain,path:m.path,memory_type:a,memory_status:c}}return{by_uri:i}}catch{return{by_uri:{}}}}async loadData(){const{readdir:e}=await import("node:fs/promises"),t=await import("node:path");try{const r=await e(this.storePath,{withFileTypes:!0}),n={by_uri:{}};for(const o of r){if(!o.isFile()||!o.name.endsWith(".json"))continue;const i=await this.loadMemoryFile(t.join(this.storePath,o.name));Object.assign(n.by_uri,i.by_uri)}return n}catch{return{by_uri:{}}}}async writeJsonAtomically(e,t,r=JSON.stringify(t,null,2)){const{rename:n,rm:o,writeFile:i}=await import("node:fs/promises"),s=`${e}.${process.pid}.${Date.now()}.tmp`;try{await i(s,r,"utf-8"),await n(s,e)}catch(d){throw await o(s,{force:!0}),d}}async saveData(e){const{readFile:t,readdir:r,rm:n}=await import("node:fs/promises"),o=await import("node:path");await this.ensureStoreDir();const i=new Map;for(const a of Object.values(e.by_uri)){const m=i.get(a.domain)??{by_uri:{}};m.by_uri[a.uri]=a,i.set(a.domain,m)}for(const[a,m]of i.entries()){const l=o.join(this.storePath,`${a}.json`),c=JSON.stringify(m,null,2);if(this.domainJsonCache.get(l)===c)continue;let u;try{u=await t(l,"utf-8")}catch{u=void 0}if(u===c){this.domainJsonCache.set(l,c);continue}await this.writeJsonAtomically(l,m,c),this.domainJsonCache.set(l,c)}const s=new Set([...i.keys()].map(a=>`${a}.json`)),d=await r(this.storePath,{withFileTypes:!0});for(const a of d)if(a.isFile()&&a.name.endsWith(".json")&&!s.has(a.name)){const m=o.join(this.storePath,a.name);await n(m,{force:!0}),this.domainJsonCache.delete(m)}}createEmptyStats(){return{total:0,listable:{count:0,limit:L,hardLimit:O,exceeded:!1,hardExceeded:!1},by_type:{instance_hotspot_memory:{count:0,limit:x,hardLimit:h,exceeded:!1,hardExceeded:!1,listable:!0,domainCount:0,by_domain:{}},instance_permanent_memory:{count:0,limit:x,hardLimit:h,exceeded:!1,hardExceeded:!1,listable:!0,domainCount:0,by_domain:{}},project_doc_memory:{count:0,limit:null,hardLimit:null,exceeded:!1,hardExceeded:!1,listable:!1,domainCount:0,by_domain:{}},session_context:{count:0,limit:null,hardLimit:g,exceeded:!1,hardExceeded:!1,listable:!1,domainCount:0,by_domain:{}}}}}calculateStats(e){const t=this.createEmptyStats();for(const r of Object.values(e.by_uri)){t.total+=1;const n=t.by_type[r.memory_type];n.count+=1;const o=d=>w.includes(d)?x:null,i=d=>w.includes(d)?h:d==="session_context"?g:null,s=n.by_domain[r.domain]??{count:0,limit:o(r.memory_type),hardLimit:i(r.memory_type),exceeded:!1,hardExceeded:!1};s.count+=1,n.by_domain[r.domain]=s,w.includes(r.memory_type)&&(t.listable.count+=1)}t.listable.exceeded=t.listable.count>t.listable.limit,t.listable.hardExceeded=t.listable.count>=t.listable.hardLimit;for(const r of M){const n=t.by_type[r];n.domainCount=Object.keys(n.by_domain).length,n.limit!==null&&n.hardLimit!==null&&(n.exceeded=n.domainCount>n.limit,n.hardExceeded=n.domainCount>=n.hardLimit);for(const o of Object.values(n.by_domain))o.limit!==null&&o.hardLimit!==null&&(o.exceeded=o.count>o.limit,o.hardExceeded=o.count>=o.hardLimit)}return t}generateId(e){return`${e.replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,"")}_${Date.now().toString(36)}`}ensureListableMemoryCapacity(e,t,r){if(!w.includes(t))return;const o=this.calculateStats(e).by_type[t],i=o.by_domain[r.domain];if(!i&&o.domainCount>=h)throw new S(`Cannot create ${t}: hard domain type limit ${h} reached. Please delete an existing ${t} domain type before creating a new ${t}.`,{code:"MEMORY_TYPE_LIMIT_REACHED",memory_type:t,limit:h,current:o.domainCount,recommended_actions:[`list_memories({ memory_type: '${t}' })`,`delete_memory({ uri, memory_type: '${t}' })`]});if(i&&i.count>=h)throw new S(`Cannot create ${t}: hard memory limit ${h} reached under domain ${r.domain}. Please delete or archive existing ${r.domain}://${t} memories before creating a new one.`,{code:"MEMORY_TYPE_LIMIT_REACHED",memory_type:t,domain:r.domain,limit:h,current:i.count,recommended_actions:[`list_memories({ memory_type: '${t}' })`,`delete_memory({ uri, memory_type: '${t}' })`]})}ensureSessionContextCapacity(e,t,r){if(t!=="session_context")return;const n=Object.values(e.by_uri).filter(o=>o.memory_type==="session_context"&&o.domain===r.domain).length;if(n>=g)throw new S(`Cannot create session_context: hard limit ${g} reached under domain ${r.domain}. Please delete existing session_context memories before creating a new one.`,{code:"MEMORY_TYPE_LIMIT_REACHED",memory_type:t,domain:r.domain,limit:g,current:n,recommended_actions:["list_memories({ memory_type: 'session_context' })","delete_memory({ uri, memory_type: 'session_context' })"]})}async getStats(){const e=await this.loadData();return this.calculateStats(e)}static calcAgentMemoryExpiresAt(){return new Date(Date.now()+432e5).toISOString()}static isExpirableType(e){return e==="instance_hotspot_memory"}validateTypeConstraints(e,t){j(e,t)}async createMemory(e){const t=this.normalizeMemoryType(e.memory_type),r=this.normalizeUri(e.uri),n=await this.loadData();if(n.by_uri[r.uri])throw new Error(`Memory already exists: ${r.uri}`);this.validateTypeConstraints(t,e),this.ensureListableMemoryCapacity(n,t,r),this.ensureSessionContextCapacity(n,t,r);const o=this.nowIso(),i={id:this.generateId(r.uri),uri:r.uri,domain:r.domain,path:r.path,title:e.title||void 0,content:String(e.content||""),memory_type:t,createdAt:o,updatedAt:o,version:1,keywords:e.keywords,bound_files:e.bound_files,file_md5_map:e.file_md5_map||void 0,updating_agent_id:void 0,last_check_time:e.last_check_time||void 0,expiresAt:e.expiresAt||(b.isExpirableType(t)?b.calcAgentMemoryExpiresAt():void 0),memory_status:"normal"};return n.by_uri[r.uri]=i,await this.saveData(n),i}async readMemory(e){const t=this.normalizeUri(e.uri),r=typeof e.memory_type=="string"?this.normalizeMemoryType(e.memory_type):void 0,o=(await this.loadData()).by_uri[t.uri]??null;return o?(this.ensureTypeMatch(o,r),o):null}async updateMemory(e){const t=this.normalizeUri(e.uri),r=typeof e.memory_type=="string"?this.normalizeMemoryType(e.memory_type):void 0,n=await this.loadData(),o=n.by_uri[t.uri];if(!o)throw new Error(`Memory not found: ${t.uri}`);this.ensureTypeMatch(o,r);let i=o.content;if(typeof e.old_string=="string"&&typeof e.new_string=="string"){const l=e.old_string;if(!l)throw new Error("old_string cannot be empty when replacing");const c=i.split(l).length-1;if(c===0)throw new Error("old_string not found in memory content");if(c>1)throw new Error("old_string appears multiple times; replace is ambiguous");i=i.replace(l,e.new_string)}typeof e.append=="string"&&e.append.length>0&&(i=`${i}${e.append}`);const s=i!==o.content||typeof e.title=="string"&&e.title!==o.title,d=this.nowIso();if(Array.isArray(e.bound_files)){const l=(e.bound_files||[]).filter(c=>String(c||"").trim());if(o.memory_type==="instance_permanent_memory"&&l.length>0)throw new Error(`instance_permanent_memory \u4E0D\u8981\u6C42\u4E5F\u4E0D\u5EFA\u8BAE\u7ED1\u5B9A\u6587\u4EF6\uFF1A\u7ED1\u5B9A\u6587\u4EF6\u7684\u5185\u5BB9\u5C5E\u4E8E\u9879\u76EE\u6587\u6863\uFF0C\u5E94\u6539\u7528 project_doc_memory\u3002
20
+ `+p)}if(typeof e.title=="string"&&o.memory_type==="project_doc_memory"){const l=e.title.trim();if(!l)throw new Error("project_doc_memory \u7684 title \u4E0D\u80FD\u4E3A\u7A7A\u3002\u63A8\u8350\u683C\u5F0F\uFF1A\u300C<\u6A21\u5757/\u6587\u4EF6\u96C6> - <\u4E3B\u9898>\u300D\u3002");if(l.length>50)throw new Error(`project_doc_memory \u7684 title \u4E0D\u5F97\u8D85\u8FC7 50 \u5B57\uFF08\u5F53\u524D ${l.length} \u5B57\uFF09\u3002\u8BF7\u7CBE\u70BC\u4E3A\u300C<\u6A21\u5757/\u6587\u4EF6\u96C6> - <\u4E3B\u9898>\u300D\u5F62\u5F0F\u3002`)}if(s&&o.memory_type==="project_doc_memory"&&!/^##\s+\S/m.test(i))throw new Error(`project_doc_memory \u7684 content \u5FC5\u987B\u4FDD\u7559\u81F3\u5C11\u4E00\u4E2A markdown \u5C0F\u8282\uFF08## \u6807\u9898\uFF09\u3002
21
+ \u63A8\u8350\u6A21\u677F\uFF1A
22
+ ## \u6982\u8FF0
23
+ ## \u7ED3\u6784
24
+ ## \u5173\u952E\u7ED3\u8BBA
25
+ ## \u8E29\u5751
26
+ `);if(s&&o.memory_type==="instance_hotspot_memory"&&i.length>2e3)throw new Error(`instance_hotspot_memory \u7684 content \u4E0D\u5F97\u8D85\u8FC7 2000 \u5B57\uFF08\u5F53\u524D ${i.length} \u5B57\uFF09\u3002\u957F\u671F\u7ECF\u9A8C\u8BF7\u6539\u7528 instance_permanent_memory\uFF0C\u9879\u76EE\u6587\u6863\u8BF7\u6539\u7528 project_doc_memory\u3002`);let a=o.expiresAt;b.isExpirableType(o.memory_type)?a=new Date(Date.now()+24*60*60*1e3).toISOString():a=void 0,e.expiresAt!==void 0&&(a=e.expiresAt);const m={...o,content:i,title:e.title!==void 0?e.title:o.title,updatedAt:d,version:o.version+1,keywords:e.keywords!==void 0?e.keywords:o.keywords,bound_files:e.bound_files!==void 0?e.bound_files:o.bound_files,file_md5_map:e.file_md5_map!==void 0?e.file_md5_map:e.bound_files!==void 0?void 0:o.file_md5_map,memory_status:e.memory_status!==void 0?e.memory_status:o.memory_status==="updating"?"normal":o.memory_status||"normal",updating_agent_id:e.memory_status!==void 0?e.updating_agent_id||void 0:o.memory_status==="updating"?void 0:o.updating_agent_id,last_check_time:e.last_check_time!==void 0?e.last_check_time:o.last_check_time,expiresAt:a};return n.by_uri[t.uri]=m,await this.saveData(n),m}async deleteMemory(e){const t=this.normalizeUri(e.uri),r=typeof e.memory_type=="string"?this.normalizeMemoryType(e.memory_type):void 0,n=await this.loadData(),o=n.by_uri[t.uri];return o?(this.ensureTypeMatch(o,r),delete n.by_uri[t.uri],await this.saveData(n),!0):!1}async listExpiredRecentlyMemories(){const e=await this.loadData(),t=new Date,r=[];for(const n of Object.values(e.by_uri))n.memory_type==="instance_hotspot_memory"&&n.expiresAt&&(new Date(n.expiresAt)>t||n.memory_status==="recalling"&&n.updating_agent_id!==C||r.push(n));return r.sort((n,o)=>n.expiresAt.localeCompare(o.expiresAt))}async searchMemory(e){const t=await this.loadData(),n=String(e.query||"").trim().toLowerCase(),o=e.memory_type?this.normalizeMemoryType(e.memory_type):void 0,i=typeof e.limit=="number"&&e.limit>0?e.limit:10,s=e.keywords?.map(c=>c.toLowerCase()),d=e.keyword_mode==="all"?"all":"any",a=P(n);if(a.length===0&&(!s||s.length===0))return{query:n,results:[]};const m=new Set,l=[];for(const c of Object.values(t.by_uri)){if(o&&c.memory_type!==o||m.has(c.id))continue;let y=0;if(s&&s.length>0&&c.keywords){const u=c.keywords.map(f=>f.toLowerCase());if(d==="all"){if(s.every(E=>u.includes(E)))y+=10*s.length;else if(a.length===0)continue}else for(const f of s)u.includes(f)&&(y+=10)}if(a.length>0){const u=`${c.uri}
2
27
  ${c.title||""}
3
- ${c.content}`.toLowerCase();if(!O(i,_)&&u===0)continue;for(const f of i){const w=f.filter(M=>_.includes(M)).length;if(w>0){const M=c.uri.toLowerCase(),I=f.filter(A=>M.includes(A)).length;u+=w+I}}}u!==0&&(l.add(c.id),m.push({score:u,record:c}))}return m.sort((c,u)=>u.score!==c.score?u.score-c.score:u.record.updatedAt.localeCompare(c.record.updatedAt)),{query:r,results:m.slice(0,a).map(c=>c.record)}}async listByType(e){const t=e==="session_context"||e==="project_memory"?E:h,o=this.normalizeMemoryType(e,t),r=await this.loadData(),n=new Set,a=[];for(const s of Object.values(r.by_uri))s.memory_type===o&&(n.has(s.id)||(n.add(s.id),a.push(s)));return a.sort((s,d)=>d.updatedAt.localeCompare(s.updatedAt)),a}async listByFile(e,t){const o=await this.loadData(),r=typeof t=="object"&&t!==null?t.memory_type:t,n=r?this.normalizeMemoryType(r):void 0,a=L(e),s=new Set,d=[];for(const i of Object.values(o.by_uri))n&&i.memory_type!==n||s.has(i.id)||i.bound_files&&i.bound_files.length>0&&i.bound_files.some(m=>L(m)===a)&&(s.add(i.id),d.push(i));return d.sort((i,l)=>l.updatedAt.localeCompare(i.updatedAt)),d}async markExpiredMemoriesRecalling(e){const t=await this.listExpiredRecentlyMemories();if(t.length===0)return{marked:0,uris:[]};const o=t.filter(i=>i.memory_status!=="recalling"),r=e?o.filter(i=>e.includes(i.uri)):o.slice(0,S);if(r.length===0){const i=t.filter(l=>l.memory_status==="recalling").map(l=>l.uri);return{marked:i.length,uris:i}}const n=await this.loadData(),a=this.nowIso(),s=new Date(Date.now()+x*60*1e3).toISOString(),d=[];for(const i of r){const l=n.by_uri[i.uri];l&&(l.memory_status="recalling",l.updating_agent_id=g,l.lease_expires_at=s,l.updatedAt=a,l.version=(l.version||1)+1,d.push(i.uri))}return d.length>0&&await this.saveData(n),{marked:d.length,uris:d}}async clearRecallingExpiredMemories(e){const t=await this.loadData(),o=new Date,r=[];for(const n of Object.values(t.by_uri))p.isExpirableType(n.memory_type)&&n.memory_status==="recalling"&&n.updating_agent_id===g&&n.expiresAt&&(new Date(n.expiresAt)>o||r.push(n.uri));if(e){const n=new Set(e),a=r.filter(s=>n.has(s));r.length=0,r.push(...a)}if(r.length===0)return{deleted:0,uris:[]};for(const n of r)delete t.by_uri[n];return await this.saveData(t),{deleted:r.length,uris:r}}async claimMemoryUpdate(e,t,o){throw new Error("claimMemoryUpdate not supported in local MemoryStore")}async renewMemoryLease(e){throw new Error("renewMemoryLease not supported in local MemoryStore")}async releaseMemoryClaim(e){throw new Error("releaseMemoryClaim not supported in local MemoryStore")}async releaseAllMemoryClaims(){throw new Error("releaseAllMemoryClaims not supported in local MemoryStore")}async getMyClaimedUris(){throw new Error("getMyClaimedUris not supported in local MemoryStore")}}export{T as MemoryCapacityError,p as MemoryStore,L as normalizeBoundFilePath};
28
+ ${c.content}`.toLowerCase();if(!z(a,u)&&y===0)continue;for(const f of a){const E=f.filter(T=>u.includes(T)).length;if(E>0){const T=c.uri.toLowerCase(),$=f.filter(D=>T.includes(D)).length;y+=E+$}}}y!==0&&(m.add(c.id),l.push({score:y,record:c}))}return l.sort((c,y)=>y.score!==c.score?y.score-c.score:y.record.updatedAt.localeCompare(c.record.updatedAt)),{query:n,results:l.slice(0,i).map(c=>c.record)}}async listByType(e){const t=e==="session_context"||e==="project_doc_memory"?M:w,r=this.normalizeMemoryType(e,t),n=await this.loadData(),o=new Set,i=[];for(const s of Object.values(n.by_uri))s.memory_type===r&&(o.has(s.id)||(o.add(s.id),i.push(s)));return i.sort((s,d)=>d.updatedAt.localeCompare(s.updatedAt)),i}async listByFile(e,t){const r=await this.loadData(),n=typeof t=="object"&&t!==null?t.memory_type:t,o=n?this.normalizeMemoryType(n):void 0,i=I(e),s=new Set,d=[];for(const a of Object.values(r.by_uri))o&&a.memory_type!==o||s.has(a.id)||a.bound_files&&a.bound_files.length>0&&a.bound_files.some(l=>I(l)===i)&&(s.add(a.id),d.push(a));return d.sort((a,m)=>m.updatedAt.localeCompare(a.updatedAt)),d}async markExpiredMemoriesRecalling(e){const t=await this.listExpiredRecentlyMemories();if(t.length===0)return{marked:0,uris:[]};const r=t.filter(a=>a.memory_status!=="recalling"),n=e?r.filter(a=>e.includes(a.uri)):r.slice(0,k);if(n.length===0){const a=t.filter(m=>m.memory_status==="recalling").map(m=>m.uri);return{marked:a.length,uris:a}}const o=await this.loadData(),i=this.nowIso(),s=new Date(Date.now()+R*60*1e3).toISOString(),d=[];for(const a of n){const m=o.by_uri[a.uri];m&&(m.memory_status="recalling",m.updating_agent_id=C,m.lease_expires_at=s,m.updatedAt=i,m.version=(m.version||1)+1,d.push(a.uri))}return d.length>0&&await this.saveData(o),{marked:d.length,uris:d}}async clearRecallingExpiredMemories(e){const t=await this.loadData(),r=new Date,n=[];for(const o of Object.values(t.by_uri))b.isExpirableType(o.memory_type)&&o.memory_status==="recalling"&&o.updating_agent_id===C&&o.expiresAt&&(new Date(o.expiresAt)>r||n.push(o.uri));if(e){const o=new Set(e),i=n.filter(s=>o.has(s));n.length=0,n.push(...i)}if(n.length===0)return{deleted:0,uris:[]};for(const o of n)delete t.by_uri[o];return await this.saveData(t),{deleted:n.length,uris:n}}async claimMemoryUpdate(e,t,r){throw new Error("claimMemoryUpdate not supported in local MemoryStore")}async renewMemoryLease(e){throw new Error("renewMemoryLease not supported in local MemoryStore")}async releaseMemoryClaim(e){throw new Error("releaseMemoryClaim not supported in local MemoryStore")}async releaseAllMemoryClaims(){throw new Error("releaseAllMemoryClaims not supported in local MemoryStore")}async getMyClaimedUris(){throw new Error("getMyClaimedUris not supported in local MemoryStore")}}export{A as LEGACY_MEMORY_TYPE_ALIASES,p as MEMORY_TYPE_GUIDE,S as MemoryCapacityError,b as MemoryStore,I as normalizeBoundFilePath,Y as normalizeMemoryTypeName,j as validateTypeConstraints};
4
29
 
@@ -7,10 +7,28 @@ export declare const SEARCH_MEMORY_TOOL: Tool;
7
7
  export declare const LIST_MEMORIES_TOOL: Tool;
8
8
  export declare const GET_MEMORY_STATS_TOOL: Tool;
9
9
 
10
+
11
+
10
12
  export declare const LIST_MEMORIES_BY_FILE_TOOL: Tool;
11
13
 
14
+
15
+
12
16
  export declare const ABANDON_MEMORY_UPDATE_TOOL: Tool;
13
17
 
18
+
19
+
20
+
21
+
22
+
23
+
14
24
  export declare const MEMORY_RECURRENCE_TOOL: Tool;
15
25
 
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
16
34
  export declare const MEMORY_RECURRENCE_COMPLETE_TOOL: Tool;
@@ -1,10 +1,14 @@
1
- const e={type:"string",enum:["instance_memory","instance_long_memory","project_memory"],description:"\u8BB0\u5FC6\u7C7B\u578B\uFF1Ainstance_memory \u8868\u793A Agent \u5B9E\u4F8B\u5373\u65F6\u8BB0\u5FC6\uFF08\u4F1A\u8BDD\u7EA7\u77ED\u671F\u5DE5\u4F5C\u8BB0\u5FC6\uFF0C\u6709\u6761\u6570\u4E0A\u9650\uFF0C\u8FC7\u671F\u540E\u8D70\u56DE\u5FC6\u6D41\u7A0B\uFF09\uFF1Binstance_long_memory \u8868\u793A Agent \u5B9E\u4F8B\u957F\u671F\u8BB0\u5FC6\uFF08\u5BF9\u5916\u90E8\u73AF\u5883\u7684\u8BA4\u77E5\u8BB0\u5FC6\uFF0C\u8FC7\u671F\u540E\u8D70\u56DE\u5FC6\u6D41\u7A0B\uFF09\uFF1Bproject_memory \u8868\u793A\u9879\u76EE\u8BB0\u5FC6\uFF08\u5BF9\u5F53\u524D\u5DE5\u4F5C\u533A\u9879\u76EE\u7684\u7406\u89E3\uFF0C\u89D2\u8272\u7EA7\u5171\u4EAB\u3001\u65E0\u8FC7\u671F\uFF09\u3002"},r={type:"string",enum:["instance_memory","instance_long_memory","project_memory","session_context"],description:"\u53EF\u76F4\u63A5\u5217\u51FA\u7684\u8BB0\u5FC6\u7C7B\u578B\u3002instance_long_memory \u4E3B\u8981\u7528 search_memory \u68C0\u7D22\uFF1Bproject_memory \u4E0E session_context \u540C\u6837\u652F\u6301 list\u3002"},t={type:"string",description:"\u8BB0\u5FC6 URI\uFF0C\u683C\u5F0F\u4E3A domain://path\uFF0C\u4F8B\u5982 core://agent/profile \u6216 task://todo/current\u3002domain \u4F1A\u81EA\u52A8\u8F6C\u5C0F\u5199\u3002"},n={name:"create_memory",description:"\u5728\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u521B\u5EFA\u4E00\u6761\u672C\u5730\u8BB0\u5FC6\u3002\u9002\u5408\u4FDD\u5B58\u9879\u76EE\u8BB0\u5FC6\u3001Agent \u5B9E\u4F8B\u957F\u671F\u8BB0\u5FC6\u6216 Agent \u5B9E\u4F8B\u5373\u65F6\u8BB0\u5FC6\uFF1B\u540C\u4E00 uri \u5DF2\u5B58\u5728\u65F6\u4F1A\u5931\u8D25\uFF0C\u907F\u514D\u610F\u5916\u8986\u76D6\u3002",inputSchema:{type:"object",properties:{memory_type:{type:"string",enum:["instance_memory","instance_long_memory","project_memory"],description:`\u8BB0\u5FC6\u7C7B\u578B\uFF1Ainstance_memory \u8868\u793A Agent \u5B9E\u4F8B\u5373\u65F6\u8BB0\u5FC6\uFF08\u4F1A\u8BDD\u7EA7\u77ED\u671F\u5DE5\u4F5C\u8BB0\u5FC6\uFF0C\u6709\u6761\u6570\u4E0A\u9650\uFF0C\u8FC7\u671F\u540E\u8D70\u56DE\u5FC6\u6D41\u7A0B\uFF09\uFF1Binstance_long_memory \u8868\u793A Agent \u5B9E\u4F8B\u957F\u671F\u8BB0\u5FC6\uFF08\u5BF9\u5916\u90E8\u73AF\u5883\u7684\u8BA4\u77E5\u8BB0\u5FC6\uFF0C\u8FC7\u671F\u540E\u8D70\u56DE\u5FC6\u6D41\u7A0B\uFF09\uFF1Bproject_memory \u8868\u793A\u9879\u76EE\u8BB0\u5FC6\uFF08\u5BF9\u5F53\u524D\u5DE5\u4F5C\u533A\u9879\u76EE\u7684\u7406\u89E3\uFF0C\u89D2\u8272\u7EA7\u5171\u4EAB\u3001\u65E0\u8FC7\u671F\uFF09\u3002
2
- \u6CE8\u610F\uFF1A\u9009\u62E9 project_memory \u65F6\uFF0C\u5E94\u540C\u65F6\u586B\u5199 bound_files \u5173\u8054\u5230\u5177\u4F53\u6587\u4EF6\uFF0C\u4EE5\u4FBF\u957F\u671F\u7EF4\u62A4\u4E0E\u53D8\u66F4\u8FFD\u8E2A\u3002`},uri:t,title:{type:"string",description:"\u8BB0\u5FC6\u6807\u9898\uFF0C\u7528\u4E8E\u5FEB\u901F\u8BC6\u522B\u8BB0\u5FC6\u5185\u5BB9\u3002"},content:{type:"string",description:"\u8BB0\u5FC6\u5185\u5BB9\u3002"},keywords:{type:"array",items:{type:"string"},description:'\u5173\u952E\u8BCD\u5217\u8868\uFF0C\u7528\u4E8E\u5FEB\u901F\u641C\u7D22\u548C\u5206\u7C7B\uFF0C\u4F8B\u5982 ["React", "\u524D\u7AEF", "\u6700\u4F73\u5B9E\u8DF5"]\u3002'},bound_files:{type:"array",items:{type:"string"},description:`\u7ED1\u5B9A\u7684\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\uFF0C\u7528\u4E8E\u81EA\u52A8\u68C0\u6D4B\u6587\u4EF6\u53D8\u66F4\u5E76\u63D0\u9192\u66F4\u65B0\u8BB0\u5FC6\uFF0C\u4F8B\u5982 ["./path/to/file.md"]\u3002\uFF08/ \u524D\u7F00\u4F1A\u88AB\u89C6\u4E3A\u5DE5\u4F5C\u533A\u6839\u8DEF\u5F84\uFF0C\u7EDF\u4E00\u8F6C\u4E3A ./\uFF09
3
- \u3010\u5F3A\u70C8\u5EFA\u8BAE\u3011\u5F53 memory_type=project_memory \u65F6\uFF0C\u5E94\u81F3\u5C11\u5173\u8054\u4E00\u4E2A\u5177\u4F53\u6587\u4EF6\uFF08\u5982\u8BE5\u6761\u9879\u76EE\u8BB0\u5FC6\u6240\u5BF9\u5E94\u7684\u6838\u5FC3\u6E90\u7801\u3001\u914D\u7F6E\u6216\u6587\u6863\u6587\u4EF6\uFF09\uFF0C\u4EE5\u4FBF\u957F\u671F\u7EF4\u62A4\u4E0E\u53D8\u66F4\u8FFD\u8E2A\u3002`}},required:["memory_type","uri","content"]}},i={name:"read_memory",description:"\u6309 uri \u8BFB\u53D6\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u4E00\u6761\u672C\u5730\u8BB0\u5FC6\u3002\u53EF\u4F20 memory_type \u505A\u7C7B\u578B\u6821\u9A8C\uFF0C\u907F\u514D\u8BFB\u9519\u5206\u7C7B\u3002",inputSchema:{type:"object",properties:{uri:t,memory_type:e},required:["uri"]}},o={name:"update_memory",description:"\u66F4\u65B0\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u4E00\u6761\u672C\u5730\u8BB0\u5FC6\u3002\u652F\u6301\u4E09\u79CD\u5199\u6CD5\uFF1A1) \u7CBE\u786E\u66FF\u6362\u65F6\u5FC5\u987B\u540C\u65F6\u63D0\u4F9B old_string \u548C new_string\uFF1B2) \u8FFD\u52A0\u65F6\u53EA\u63D0\u4F9B append\uFF1B3) \u4EC5\u4F20 uri\uFF08\u4E0D\u63D0\u4F9B\u5185\u5BB9\u53C2\u6570\uFF09\u505A\u65E0\u5185\u5BB9\u66F4\u65B0\u2014\u2014\u6B64\u65F6\u5185\u5BB9\u4E0D\u53D8\uFF0C\u4F46\u4F1A\u5237\u65B0\u7ED1\u5B9A\u6587\u4EF6 MD5\u3001\u91CA\u653E updating \u72B6\u6001\u3001\u5E76\u5BF9 instance_long_memory/instance_memory \u7EED\u671F TTL\xD72\u3002\u82E5\u8BB0\u5FC6\u4E0D\u5B58\u5728\u8BF7\u4F7F\u7528 create_memory\u3002",inputSchema:{type:"object",properties:{uri:t,memory_type:e,title:{type:"string",description:"\u66F4\u65B0\u6807\u9898\u3002\u4F20\u5165\u6B64\u5B57\u6BB5\u4F1A\u8986\u76D6\u73B0\u6709\u6807\u9898\u3002"},old_string:{type:"string",minLength:1,description:"\u8981\u88AB\u66FF\u6362\u7684\u65E7\u5185\u5BB9\u3002\u66FF\u6362\u65F6\u5FC5\u987B\u4E0E new_string \u540C\u65F6\u4F20\u5165\uFF1B\u8FFD\u52A0\u6216\u4EC5\u72B6\u6001\u66F4\u65B0\u65F6\u4E0D\u8981\u4F20\u6B64\u5B57\u6BB5\u3002"},new_string:{type:"string",description:"\u66FF\u6362\u540E\u7684\u65B0\u5185\u5BB9\u3002\u66FF\u6362\u65F6\u5FC5\u987B\u4E0E old_string \u540C\u65F6\u4F20\u5165\uFF1B\u8FFD\u52A0\u6216\u4EC5\u72B6\u6001\u66F4\u65B0\u65F6\u4E0D\u8981\u4F20\u6B64\u5B57\u6BB5\u3002\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\u8868\u793A\u5220\u9664\u65E7\u5185\u5BB9\u3002"},append:{type:"string",minLength:1,description:"\u8FFD\u52A0\u5230\u8BB0\u5FC6\u672B\u5C3E\u7684\u5185\u5BB9\u3002\u8FFD\u52A0\u65F6\u53EA\u4F20 append\uFF0C\u4E0D\u8981\u4F20 old_string/new_string\u3002"},keywords:{type:"array",items:{type:"string"},description:"\u66F4\u65B0\u5173\u952E\u8BCD\u5217\u8868\u3002"},bound_files:{type:"array",items:{type:"string"},description:"\u66F4\u65B0\u7ED1\u5B9A\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\u3002\u66F4\u65B0\u540E\u4F1A\u91CD\u65B0\u8BA1\u7B97\u6587\u4EF6 MD5\u3002"}},required:["uri"]}},m={name:"delete_memory",description:`\u5220\u9664\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u672C\u5730\u8BB0\u5FC6\u3002\u652F\u6301\u4E24\u79CD\u8C03\u7528\u65B9\u5F0F\uFF08uri \u4E0E memories \u4E92\u65A5\uFF09\uFF1A
1
+ const r=`\u8BB0\u5FC6\u7C7B\u578B\u4E09\u9009\u4E00\uFF08\u6309\u300C\u8FD9\u6761\u5185\u5BB9\u672A\u6765\u88AB\u8C01\u8BFB\u5230\u3001\u4F55\u65F6\u8BFB\u5230\u300D\u9009\u62E9\uFF09\uFF1A
2
+ - instance_hotspot_memory \u5B9E\u4F8B\u70ED\u70B9\u8BB0\u5FC6\uFF1A\u4E0B\u6B21\u4F1A\u8BDD\u5F00\u573A\u5C31\u8981\u7528\u7684\u5DE5\u4F5C\u72B6\u6001\uFF08\u8FDB\u5EA6/\u5F85\u529E/\u4E34\u65F6\u7ED3\u8BBA\uFF09\u3002\u6761\u6570\u6709\u9650\u3001\u77ED TTL\uFF0C\u81EA\u52A8\u6CE8\u5165\u4E0B\u6B21\u4F1A\u8BDD\u8BB0\u5FC6\u5757\u3002\u7981\u6B62\u5B58\u957F\u671F\u7ECF\u9A8C\u4E0E\u9879\u76EE\u6587\u6863\u3002
3
+ - instance_permanent_memory \u5B9E\u4F8B\u6C38\u4E45\u8BB0\u5FC6\uFF1A\u672C\u5B9E\u4F8B\u5BF9\u73AF\u5883/\u5DE5\u5177/\u6D41\u7A0B\u7684\u957F\u671F\u7ECF\u9A8C\u7ED3\u8BBA\uFF08\u6559\u8BAD/\u7EA6\u5B9A/\u80FD\u529B\u8FB9\u754C\uFF09\u3002\u65E0\u8FC7\u671F\uFF0C\u9760 search_memory \u68C0\u7D22\u3002\u4E0D\u8981\u6C42\u7ED1\u5B9A\u6587\u4EF6\u3002
4
+ - project_doc_memory \u9879\u76EE\u6587\u6863\u8BB0\u5FC6\uFF1A\u5BF9\u9879\u76EE\u6587\u4EF6\u96C6\u7684\u5BA2\u89C2\u7B14\u8BB0\uFF08\u67B6\u6784/\u6A21\u5757\u804C\u8D23/\u63A5\u53E3\u7EA6\u5B9A/\u5751\u70B9\uFF09\u3002\u5E94\u5C3D\u91CF\u7528 bound_files \u5173\u8054\u6587\u4EF6\uFF0C\u6807\u9898\u5FC5\u586B\uFF08\u226450 \u5B57\uFF0C\u300C<\u6A21\u5757/\u6587\u4EF6\u96C6> - <\u4E3B\u9898>\u300D\uFF09\uFF0C\u5185\u5BB9\u9700\u542B markdown \u5C0F\u8282\uFF08## \uFF09\uFF0C\u89D2\u8272\u7EA7\u5171\u4EAB\u3001\u968F\u6587\u4EF6\u53D8\u66F4\u7EF4\u62A4\u3002
5
+ \u9009\u62E9\u89C4\u5219\uFF1A\u5185\u5BB9\u6307\u5411\u5177\u4F53\u9879\u76EE\u6587\u4EF6\u3001\u9700\u968F\u6587\u4EF6\u53D8\u66F4\u7EF4\u62A4 \u2192 project_doc_memory\uFF1B\u73AF\u5883/\u5DE5\u5177\u7ECF\u9A8C\u3001\u4E0D\u6307\u5411\u5177\u4F53\u6587\u4EF6 \u2192 instance_permanent_memory\uFF1B\u672C\u6B21\u4EFB\u52A1\u8FDB\u5EA6\u3001\u4E0B\u6B21\u4F1A\u8BDD\u63A5\u7740\u5E72 \u2192 instance_hotspot_memory\u3002
6
+ \u53CD\u4F8B\uFF1A\u628A\u300Cpptx \u5706\u89D2\u8981\u5199 round_rect\u300D\u5199\u8FDB hotspot \u662F\u9519\u7684\uFF08\u5B83\u662F\u6C38\u4E45\u7ECF\u9A8C\uFF09\uFF1B\u628A\u300C\u9879\u76EE API \u5728 src/api \u4E0B\u300D\u5199\u8FDB permanent \u662F\u9519\u7684\uFF08\u5B83\u662F\u9879\u76EE\u6587\u6863\uFF09\u3002`,e={type:"string",enum:["instance_hotspot_memory","instance_permanent_memory","project_doc_memory"],description:r},n={type:"string",enum:["instance_hotspot_memory","instance_permanent_memory","project_doc_memory","session_context"],description:"\u53EF\u76F4\u63A5\u5217\u51FA\u7684\u8BB0\u5FC6\u7C7B\u578B\u3002instance_permanent_memory \u4E3B\u8981\u7528 search_memory \u68C0\u7D22\uFF1Bproject_doc_memory \u4E0E session_context \u540C\u6837\u652F\u6301 list\u3002"},t={type:"string",description:"\u8BB0\u5FC6 URI\uFF0C\u683C\u5F0F\u4E3A domain://path\uFF0C\u4F8B\u5982 core://agent/profile \u6216 task://todo/current\u3002domain \u4F1A\u81EA\u52A8\u8F6C\u5C0F\u5199\u3002"},o={name:"create_memory",description:"\u5728\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u521B\u5EFA\u4E00\u6761\u672C\u5730\u8BB0\u5FC6\u3002\u4E09\u79CD\u7C7B\u578B\u5B9A\u4F4D\u4E0D\u540C\uFF0C\u5199\u9519\u7C7B\u578B\u4F1A\u88AB\u62D2\u7EDD\u5E76\u63D0\u793A\u6B63\u786E\u5F52\u5BBF\uFF1B\u540C\u4E00 uri \u5DF2\u5B58\u5728\u65F6\u4F1A\u5931\u8D25\uFF0C\u907F\u514D\u610F\u5916\u8986\u76D6\u3002",inputSchema:{type:"object",properties:{memory_type:{type:"string",enum:["instance_hotspot_memory","instance_permanent_memory","project_doc_memory"],description:r},uri:t,title:{type:"string",description:"\u8BB0\u5FC6\u6807\u9898\uFF0C\u7528\u4E8E\u5FEB\u901F\u8BC6\u522B\u8BB0\u5FC6\u5185\u5BB9\u3002project_doc_memory \u4E0E instance_hotspot_memory \u5FC5\u586B\uFF1Bproject_doc_memory \u6807\u9898\u987B \u226450 \u5B57\uFF0C\u63A8\u8350\u300C<\u6A21\u5757/\u6587\u4EF6\u96C6> - <\u4E3B\u9898>\u300D\u683C\u5F0F\u3002"},content:{type:"string",description:"\u8BB0\u5FC6\u5185\u5BB9\u3002project_doc_memory \u5FC5\u987B\u542B\u81F3\u5C11\u4E00\u4E2A markdown \u5C0F\u8282\uFF08## \u6807\u9898\uFF09\uFF0C\u6309\u300C\u6982\u8FF0/\u7ED3\u6784/\u5173\u952E\u7ED3\u8BBA/\u8E29\u5751\u300D\u7EC4\u7EC7\u5BA2\u89C2\u7B14\u8BB0\uFF1Binstance_hotspot_memory \u4E0D\u8D85\u8FC7 2000 \u5B57\u3002"},keywords:{type:"array",items:{type:"string"},description:'\u5173\u952E\u8BCD\u5217\u8868\uFF0C\u7528\u4E8E\u5FEB\u901F\u641C\u7D22\u548C\u5206\u7C7B\uFF0C\u4F8B\u5982 ["React", "\u524D\u7AEF", "\u6700\u4F73\u5B9E\u8DF5"]\u3002'},bound_files:{type:"array",items:{type:"string"},description:`\u7ED1\u5B9A\u7684\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\uFF0C\u7528\u4E8E\u81EA\u52A8\u68C0\u6D4B\u6587\u4EF6\u53D8\u66F4\u5E76\u63D0\u9192\u66F4\u65B0\u8BB0\u5FC6\uFF0C\u4F8B\u5982 ["./path/to/file.md"]\u3002\uFF08/ \u524D\u7F00\u4F1A\u88AB\u89C6\u4E3A\u5DE5\u4F5C\u533A\u6839\u8DEF\u5F84\uFF0C\u7EDF\u4E00\u8F6C\u4E3A ./\uFF09
7
+ project_doc_memory \u5FC5\u586B\uFF08\u81F3\u5C11\u4E00\u4E2A\u6587\u4EF6\uFF09\uFF1Binstance_permanent_memory \u7981\u6B62\u7ED1\u5B9A\uFF08\u7ED1\u5B9A\u6587\u4EF6\u7684\u5185\u5BB9\u5C5E\u4E8E\u9879\u76EE\u6587\u6863\uFF0C\u8BF7\u6539\u7528 project_doc_memory\uFF09\u3002`}},required:["memory_type","uri","content"]}},i={name:"read_memory",description:"\u6309 uri \u8BFB\u53D6\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u4E00\u6761\u672C\u5730\u8BB0\u5FC6\u3002\u53EF\u4F20 memory_type \u505A\u7C7B\u578B\u6821\u9A8C\uFF0C\u907F\u514D\u8BFB\u9519\u5206\u7C7B\u3002",inputSchema:{type:"object",properties:{uri:t,memory_type:e},required:["uri"]}},m={name:"update_memory",description:"\u66F4\u65B0\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u4E00\u6761\u672C\u5730\u8BB0\u5FC6\u3002\u652F\u6301\u4E09\u79CD\u5199\u6CD5\uFF1A1) \u7CBE\u786E\u66FF\u6362\u65F6\u5FC5\u987B\u540C\u65F6\u63D0\u4F9B old_string \u548C new_string\uFF1B2) \u8FFD\u52A0\u65F6\u53EA\u63D0\u4F9B append\uFF1B3) \u4EC5\u4F20 uri\uFF08\u4E0D\u63D0\u4F9B\u5185\u5BB9\u53C2\u6570\uFF09\u505A\u65E0\u5185\u5BB9\u66F4\u65B0\u2014\u2014\u6B64\u65F6\u5185\u5BB9\u4E0D\u53D8\uFF0C\u4F46\u4F1A\u5237\u65B0\u7ED1\u5B9A\u6587\u4EF6 MD5\u3001\u91CA\u653E updating \u72B6\u6001\u3001\u5E76\u5BF9 instance_hotspot_memory \u7EED\u671F\uFF08\u56FA\u5B9A 24h TTL\uFF09\u3002\u82E5\u8BB0\u5FC6\u4E0D\u5B58\u5728\u8BF7\u4F7F\u7528 create_memory\u3002",inputSchema:{type:"object",properties:{uri:t,memory_type:e,title:{type:"string",description:"\u66F4\u65B0\u6807\u9898\u3002\u4F20\u5165\u6B64\u5B57\u6BB5\u4F1A\u8986\u76D6\u73B0\u6709\u6807\u9898\u3002"},old_string:{type:"string",minLength:1,description:"\u8981\u88AB\u66FF\u6362\u7684\u65E7\u5185\u5BB9\u3002\u66FF\u6362\u65F6\u5FC5\u987B\u4E0E new_string \u540C\u65F6\u4F20\u5165\uFF1B\u8FFD\u52A0\u6216\u4EC5\u72B6\u6001\u66F4\u65B0\u65F6\u4E0D\u8981\u4F20\u6B64\u5B57\u6BB5\u3002"},new_string:{type:"string",description:"\u66FF\u6362\u540E\u7684\u65B0\u5185\u5BB9\u3002\u66FF\u6362\u65F6\u5FC5\u987B\u4E0E old_string \u540C\u65F6\u4F20\u5165\uFF1B\u8FFD\u52A0\u6216\u4EC5\u72B6\u6001\u66F4\u65B0\u65F6\u4E0D\u8981\u4F20\u6B64\u5B57\u6BB5\u3002\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\u8868\u793A\u5220\u9664\u65E7\u5185\u5BB9\u3002"},append:{type:"string",minLength:1,description:"\u8FFD\u52A0\u5230\u8BB0\u5FC6\u672B\u5C3E\u7684\u5185\u5BB9\u3002\u8FFD\u52A0\u65F6\u53EA\u4F20 append\uFF0C\u4E0D\u8981\u4F20 old_string/new_string\u3002"},keywords:{type:"array",items:{type:"string"},description:"\u66F4\u65B0\u5173\u952E\u8BCD\u5217\u8868\u3002"},bound_files:{type:"array",items:{type:"string"},description:"\u66F4\u65B0\u7ED1\u5B9A\u6587\u4EF6\u8DEF\u5F84\u5217\u8868\u3002\u66F4\u65B0\u540E\u4F1A\u91CD\u65B0\u8BA1\u7B97\u6587\u4EF6 MD5\u3002"}},required:["uri"]}},p={name:"delete_memory",description:`\u5220\u9664\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u672C\u5730\u8BB0\u5FC6\u3002\u652F\u6301\u4E24\u79CD\u8C03\u7528\u65B9\u5F0F\uFF08uri \u4E0E memories \u4E92\u65A5\uFF09\uFF1A
4
8
  1) \u5355\u6761\uFF1A\u4F20 uri\uFF08+ \u53EF\u9009 memory_type \u505A\u7C7B\u578B\u6821\u9A8C\uFF09\uFF0C\u8FD4\u56DE { deleted: boolean }\u3002
5
9
  2) \u6279\u91CF\uFF1A\u4F20 memories \u6570\u7EC4\uFF0C\u6BCF\u9879\u4E3A { uri, memory_type? }\uFF08\u5B57\u6BB5\u7ED3\u6784\u4E0E read_memory \u4E00\u81F4\uFF09\uFF0C\u8FD4\u56DE { deleted: number, not_found: string[], failed: Array<{uri, reason}> }\u3002
6
10
  \u6279\u91CF\u6A21\u5F0F\u9010\u6761\u5220\u9664\uFF0C\u5355\u6761\u5931\u8D25\uFF08\u7C7B\u578B\u4E0D\u5339\u914D\u7B49\uFF09\u4E0D\u963B\u65AD\u5176\u4ED6\uFF1B\u6BCF\u6761\u53EF\u72EC\u7ACB\u6307\u5B9A memory_type\uFF0C\u7701\u7565\u65F6\u7531\u7CFB\u7EDF\u81EA\u52A8\u5224\u5B9A\u3002
7
- \u9002\u7528\u573A\u666F\uFF1A\u8FC7\u671F\u56DE\u5FC6\u6D41\u7A0B\u4E2D recalling \u72B6\u6001\u540C\u65F6\u542B instance_long_memory \u4E0E instance_memory\uFF0C\u53EF\u7528\u4E00\u6B21\u8C03\u7528\u8DE8\u7C7B\u578B\u6279\u91CF\u6E05\u7406\u3002`,inputSchema:{type:"object",properties:{uri:t,memory_type:e,memories:{type:"array",items:{type:"object",properties:{uri:t,memory_type:e},required:["uri"]},description:"\u6279\u91CF\u5220\u9664\u7684\u6761\u76EE\u5217\u8868\uFF0C\u6BCF\u9879\u4E3A { uri, memory_type? }\u3002\u4E0E uri \u4E92\u65A5\u3002memory_type \u53EF\u9009\uFF0C\u4E0D\u4F20\u65F6\u7531\u7CFB\u7EDF\u81EA\u52A8\u5224\u5B9A\u7C7B\u578B\u3002"}},anyOf:[{required:["uri"]},{required:["memories"]}]}},p={name:"search_memory",description:`\u6309\u5173\u952E\u5B57\u641C\u7D22\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u672C\u5730\u8BB0\u5FC6\u3002\u4F1A\u540C\u65F6\u5339\u914D uri\u3001title \u4E0E content\uFF0C\u4F18\u5148\u6309\u5173\u952E\u8BCD\u5339\u914D\uFF0C\u7136\u540E\u6309\u5185\u5BB9\u5339\u914D\u3002\u652F\u6301scope\u53C2\u6570\u641C\u7D22\u5B50Agent\uFF08\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E3A\u5F53\u524D\u8DEF\u5F84\u5B50\u76EE\u5F55\u7684Agent\uFF09\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\u3002
11
+ \u9002\u7528\u573A\u666F\uFF1A\u8FC7\u671F\u56DE\u5FC6\u6D41\u7A0B\u4E2D\u6279\u91CF\u6E05\u7406 recalling \u72B6\u6001\u7684 instance_hotspot_memory\u3002`,inputSchema:{type:"object",properties:{uri:t,memory_type:e,memories:{type:"array",items:{type:"object",properties:{uri:t,memory_type:e},required:["uri"]},description:"\u6279\u91CF\u5220\u9664\u7684\u6761\u76EE\u5217\u8868\uFF0C\u6BCF\u9879\u4E3A { uri, memory_type? }\u3002\u4E0E uri \u4E92\u65A5\u3002memory_type \u53EF\u9009\uFF0C\u4E0D\u4F20\u65F6\u7531\u7CFB\u7EDF\u81EA\u52A8\u5224\u5B9A\u7C7B\u578B\u3002"}},anyOf:[{required:["uri"]},{required:["memories"]}]}},s={name:"search_memory",description:`\u6309\u5173\u952E\u5B57\u641C\u7D22\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u672C\u5730\u8BB0\u5FC6\u3002\u4F1A\u540C\u65F6\u5339\u914D uri\u3001title \u4E0E content\uFF0C\u4F18\u5148\u6309\u5173\u952E\u8BCD\u5339\u914D\uFF0C\u7136\u540E\u6309\u5185\u5BB9\u5339\u914D\u3002\u652F\u6301scope\u53C2\u6570\u641C\u7D22\u5B50Agent\uFF08\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E3A\u5F53\u524D\u8DEF\u5F84\u5B50\u76EE\u5F55\u7684Agent\uFF09\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\u3002
8
12
 
9
13
  \u3010\u641C\u7D22\u8BED\u6CD5\u3011
10
14
  - OR \u641C\u7D22\uFF1A\u4F7F\u7528 | \u5206\u9694\u591A\u4E2A\u8BCD\uFF0C\u5339\u914D\u4EFB\u4E00\u5373\u8FD4\u56DE\u3002\u4F8B\u5982\u300C\u67B6\u6784|\u6280\u672F\u300D\u5339\u914D\u5305\u542B\u300C\u67B6\u6784\u300D\u6216\u300C\u6280\u672F\u300D\u7684\u8BB0\u5F55\u3002
@@ -18,15 +22,15 @@ const e={type:"string",enum:["instance_memory","instance_long_memory","project_m
18
22
 
19
23
  \u3010\u641C\u7D22\u6548\u7387\u3011
20
24
  - \u641C\u7D22\u7ED3\u679C\u4F7F\u7528 5 \u79D2\u5185\u5B58\u7F13\u5B58\uFF0C\u8FDE\u7EED\u641C\u7D22\u4E0D\u4F1A\u91CD\u590D\u8BFB\u76D8\u3002
21
- - \u8BB0\u5FC6\u5199\u5165\u64CD\u4F5C\u4F1A\u81EA\u52A8\u6E05\u9664\u7F13\u5B58\uFF0C\u786E\u4FDD\u6570\u636E\u4E00\u81F4\u6027\u3002`,inputSchema:{type:"object",properties:{query:{type:"string",description:"\u641C\u7D22\u5173\u952E\u5B57\u3002\u652F\u6301 | OR \u5206\u9694\u7B26\u548C\u7A7A\u683C AND \u8BCD\u7EC4\u3002\u4F8B\u5982\u300C\u67B6\u6784|\u6280\u672F \u8BBE\u8BA1\u300D\u8868\u793A\u641C\u7D22\u5305\u542B\u300C\u67B6\u6784\u300D\u6216\u540C\u65F6\u5305\u542B\u300C\u6280\u672F+\u8BBE\u8BA1\u300D\u7684\u8BB0\u5F55\u3002"},limit:{type:"number",description:"\u6700\u591A\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4 10\u3002"},memory_type:e,keywords:{type:"array",items:{type:"string"},description:"\u6309\u5173\u952E\u8BCD\u8FC7\u6EE4\u3002\u914D\u5408 keyword_mode \u63A7\u5236\u5339\u914D\u903B\u8F91\uFF08any=\u4EFB\u4E00\u5339\u914D\uFF0Call=\u5168\u90E8\u5339\u914D\uFF09\u3002\u5173\u952E\u8BCD\u5339\u914D\u4F18\u5148\u7EA7\u9AD8\u4E8E\u5185\u5BB9\u5339\u914D\u3002"},keyword_mode:{type:"string",enum:["any","all"],description:"\u5173\u952E\u8BCD\u8FC7\u6EE4\u6A21\u5F0F\uFF1Aany\uFF08\u9ED8\u8BA4\uFF0C\u4EFB\u4E00\u5173\u952E\u8BCD\u5339\u914D\u5373\u9009\u4E2D\uFF09\u3001all\uFF08\u6240\u6709\u5173\u952E\u8BCD\u90FD\u9700\u5339\u914D\uFF09\u3002"},scope:{type:"string",enum:["own","children","all"],description:"\u641C\u7D22\u8303\u56F4\uFF1Aown\uFF08\u9ED8\u8BA4\uFF0C\u4EC5\u641C\u7D22\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF09\u3001children\uFF08\u641C\u7D22\u5B50Agent\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\uFF09\u3001all\uFF08\u5408\u5E76\u641C\u7D22\u81EA\u5DF1\u548C\u5B50Agent\u7684\u8BB0\u5FC6\uFF09\u3002"}},required:["query"]}},s={name:"list_memories",description:"\u6309\u7C7B\u578B\u5217\u51FA\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u5373\u65F6/\u957F\u671F/\u9879\u76EE\u8BB0\u5FC6\uFF0C\u652F\u6301\u5206\u9875\u3002\u53EF\u5217\u7C7B\u578B\uFF1Ainstance_memory\u3001instance_long_memory\u3001project_memory\u3001session_context\u3002\u5206\u9875\u53C2\u6570\u5747\u4E3A\u53EF\u9009\uFF1Aoffset\uFF08\u504F\u79FB\u91CF\uFF0C\u4ECE 0 \u5F00\u59CB\uFF0C\u9ED8\u8BA4 0\uFF09\u3001limit\uFF08\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 30\uFF09\u3002\u8FD4\u56DE\u7ED3\u679C\u5305\u542B\u5206\u9875\u5143\u4FE1\u606F { memory_type, total, offset, limit, has_more, memories }\uFF0Chas_more \u4E3A true \u65F6\u53EF\u7528\u589E\u5927 offset \u7EE7\u7EED\u7FFB\u9875\u3002instance_long_memory \u4E3B\u8981\u7528 search_memory \u68C0\u7D22\uFF1Bproject_memory \u540C\u6837\u652F\u6301 list\u3002",inputSchema:{type:"object",properties:{memory_type:r,offset:{type:"integer",minimum:0,description:"\u5206\u9875\u504F\u79FB\u91CF\uFF0C\u8DF3\u8FC7\u524D N \u6761\u8BB0\u5F55\uFF08\u4ECE 0 \u5F00\u59CB\uFF09\uFF0C\u9ED8\u8BA4 0\u3002"},limit:{type:"integer",minimum:1,description:"\u6BCF\u9875\u8FD4\u56DE\u7684\u6761\u6570\uFF0C\u9ED8\u8BA4 30\u3002"}},required:["memory_type"]}},y={name:"get_memory_stats",description:"\u83B7\u53D6\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u672C\u5730\u8BB0\u5FC6\u7684\u5BB9\u91CF\u7EDF\u8BA1\u3002\u9ED8\u8BA4\u8FD4\u56DE\u5373\u65F6/\u957F\u671F/\u9879\u76EE\u603B\u6570\u3001\u5373\u65F6/\u957F\u671F\u4E0B\u7684 URI domain \u7C7B\u578B\u5360\u7528\u3001\u4EE5\u53CA\u6BCF\u4E2A domain \u4E0B memory \u6761\u6570\u5360\u7528\u3002",inputSchema:{type:"object",properties:{memory_type:{...e,description:"\u8BB0\u5FC6\u7C7B\u578B\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u65F6\u8FD4\u56DE\u5373\u65F6/\u957F\u671F/\u9879\u76EE\u603B\u6570\u4E0E\u5404 domain \u5360\u7528\u7EDF\u8BA1\uFF1B\u4F20\u6307\u5B9A\u7C7B\u578B\u65F6\u53EA\u8FD4\u56DE\u8BE5\u7C7B\u578B\u7684\u5360\u7528\u8BE6\u60C5\u3002"}},required:[]}},_={name:"list_memories_by_file",description:"\u67E5\u8BE2\u7ED1\u5B9A\u4E86\u6307\u5B9A\u6587\u4EF6\u7684\u6240\u6709 Memory\u3002\u9ED8\u8BA4\u5408\u5E76\u641C\u7D22\u81EA\u8EAB\u3001\u540C\u5DE5\u4F5C\u8DEF\u5F84\u5176\u4ED6\u89D2\u8272\uFF08\u540Cbridge\u5B9E\u4F8B\uFF09\u4E0E\u5B50Agent\uFF08\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E3A\u5F53\u524D\u8DEF\u5F84\u5B50\u76EE\u5F55\u7684Agent\uFF09\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\u3002\u5B50Agent\u7684\u8BB0\u5FC6\u4F1A\u505Apath_prefix\u81EA\u52A8\u5339\u914D\uFF0C\u65E0\u9700\u624B\u52A8\u8BA1\u7B97\u8DEF\u5F84\u3002\u540C\u5DE5\u4F5C\u8DEF\u5F84\u5176\u4ED6\u89D2\u8272\u7684\u5171\u4EAB\u8BB0\u5FC6\u4EC5\u9650\u7ED1\u5B9A\u6587\u4EF6\u7684project_memory\uFF0C\u5E26 readonly=true \u4E0E source_role_name \u6765\u6E90\u6807\u8BB0\uFF0C\u53EA\u8BFB\u4E0D\u53EF\u4FEE\u6539\u3002\u4F8B\u5982\u7236Agent\u641C\u7D22 ./a/b/c/src/a.txt\uFF0C\u5B50Agent(\u5DE5\u4F5C\u8DEF\u5F84./a/b/c)\u7ED1\u5B9A./src/a.txt\u7684\u8BB0\u5FC6\u4F1A\u88AB\u81EA\u52A8\u5339\u914D\u3002",inputSchema:{type:"object",properties:{file_path:{type:"string",description:"\u6587\u4EF6\u8DEF\u5F84\uFF0C\u4F8B\u5982 /path/to/file.md"},memory_type:e,scope:{type:"string",enum:["own","children","all"],description:"\u641C\u7D22\u8303\u56F4\uFF1Aown\uFF08\u4EC5\u641C\u7D22\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF09\u3001children\uFF08\u641C\u7D22\u5B50Agent\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\uFF0C\u6309path_prefix\u81EA\u52A8\u5339\u914D\uFF09\u3001all\uFF08\u9ED8\u8BA4\uFF0C\u5408\u5E76\u641C\u7D22\u81EA\u5DF1\u3001\u540C\u5DE5\u4F5C\u8DEF\u5F84\u5176\u4ED6\u89D2\u8272\u7684\u53EA\u8BFB\u5171\u4EAB\u8BB0\u5FC6\uFF08\u4EC5project_memory\uFF09\u3001\u5B50Agent\u7684\u8BB0\u5FC6\uFF09\u3002"}},required:["file_path"]}},c={name:"abandon_memory_update",description:"\u653E\u5F03\u6307\u5B9A Memory \u7684\u66F4\u65B0\u4E2D\u72B6\u6001\u3002\u5F53\u7CFB\u7EDF\u68C0\u6D4B\u5230\u6587\u4EF6\u53D8\u66F4\u5E76\u81EA\u52A8\u6807\u8BB0\u4E3A\u66F4\u65B0\u4E2D\u540E\uFF0C\u5982\u679C Agent \u51B3\u5B9A\u6682\u4E0D\u66F4\u65B0\uFF0C\u53EF\u4EE5\u8C03\u7528\u6B64\u5DE5\u5177\u6E05\u9664\u66F4\u65B0\u6807\u8BB0\u3002\u6CE8\u610F\uFF1A\u82E5\u5F53\u524D\u5DF2\u7ED1\u5B9A\u7684\u6587\u4EF6\u4E2D\u5B58\u5728\u5DF2\u5220\u9664\u7684\u6587\u4EF6\uFF0C\u653E\u5F03\u66F4\u65B0\u5C06\u5931\u8D25\uFF0C\u9700\u5148\u901A\u8FC7 update_memory \u4FEE\u6B63 bound_files \u5217\u8868\uFF08\u79FB\u9664\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\uFF09\u3002",inputSchema:{type:"object",properties:{uri:t,memory_type:e},required:["uri"]}},a={name:"memory_recurrence",description:`\u83B7\u53D6\u5DF2\u8FC7\u671F\u7684\u53EF\u8FC7\u671F\u8BB0\u5FC6\uFF08instance_long_memory\uFF1AAgent \u5B9E\u4F8B\u957F\u671F\u8BB0\u5FC6\uFF1Binstance_memory\uFF1AAgent \u5B9E\u4F8B\u5373\u65F6\u8BB0\u5FC6\uFF09\u3002
22
- \u8FC7\u671F\u6761\u4EF6\uFF1A\u4E0A\u8FF0\u4E24\u79CD\u7C7B\u578B\u7684 expires_at < NOW()\u3002\u521D\u59CB TTL 12h\uFF1Bupdate_memory \u7EED\u671F\uFF1Ainstance_memory \u5237\u65B0\u4E3A\u56FA\u5B9A\u5468\u671F\uFF0Cinstance_long_memory \u6BCF\u6B21\u7EED\u671F TTL \xD72\u3002
25
+ - \u8BB0\u5FC6\u5199\u5165\u64CD\u4F5C\u4F1A\u81EA\u52A8\u6E05\u9664\u7F13\u5B58\uFF0C\u786E\u4FDD\u6570\u636E\u4E00\u81F4\u6027\u3002`,inputSchema:{type:"object",properties:{query:{type:"string",description:"\u641C\u7D22\u5173\u952E\u5B57\u3002\u652F\u6301 | OR \u5206\u9694\u7B26\u548C\u7A7A\u683C AND \u8BCD\u7EC4\u3002\u4F8B\u5982\u300C\u67B6\u6784|\u6280\u672F \u8BBE\u8BA1\u300D\u8868\u793A\u641C\u7D22\u5305\u542B\u300C\u67B6\u6784\u300D\u6216\u540C\u65F6\u5305\u542B\u300C\u6280\u672F+\u8BBE\u8BA1\u300D\u7684\u8BB0\u5F55\u3002"},limit:{type:"number",description:"\u6700\u591A\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4 10\u3002"},memory_type:e,keywords:{type:"array",items:{type:"string"},description:"\u6309\u5173\u952E\u8BCD\u8FC7\u6EE4\u3002\u914D\u5408 keyword_mode \u63A7\u5236\u5339\u914D\u903B\u8F91\uFF08any=\u4EFB\u4E00\u5339\u914D\uFF0Call=\u5168\u90E8\u5339\u914D\uFF09\u3002\u5173\u952E\u8BCD\u5339\u914D\u4F18\u5148\u7EA7\u9AD8\u4E8E\u5185\u5BB9\u5339\u914D\u3002"},keyword_mode:{type:"string",enum:["any","all"],description:"\u5173\u952E\u8BCD\u8FC7\u6EE4\u6A21\u5F0F\uFF1Aany\uFF08\u9ED8\u8BA4\uFF0C\u4EFB\u4E00\u5173\u952E\u8BCD\u5339\u914D\u5373\u9009\u4E2D\uFF09\u3001all\uFF08\u6240\u6709\u5173\u952E\u8BCD\u90FD\u9700\u5339\u914D\uFF09\u3002"},scope:{type:"string",enum:["own","children","all"],description:"\u641C\u7D22\u8303\u56F4\uFF1Aown\uFF08\u9ED8\u8BA4\uFF0C\u4EC5\u641C\u7D22\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF09\u3001children\uFF08\u641C\u7D22\u5B50Agent\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\uFF09\u3001all\uFF08\u5408\u5E76\u641C\u7D22\u81EA\u5DF1\u548C\u5B50Agent\u7684\u8BB0\u5FC6\uFF09\u3002"}},required:["query"]}},_={name:"list_memories",description:"\u6309\u7C7B\u578B\u5217\u51FA\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u7684\u70ED\u70B9/\u6C38\u4E45/\u9879\u76EE\u6587\u6863\u8BB0\u5FC6\uFF0C\u652F\u6301\u5206\u9875\u3002\u53EF\u5217\u7C7B\u578B\uFF1Ainstance_hotspot_memory\u3001instance_permanent_memory\u3001project_doc_memory\u3001session_context\u3002\u5206\u9875\u53C2\u6570\u5747\u4E3A\u53EF\u9009\uFF1Aoffset\uFF08\u504F\u79FB\u91CF\uFF0C\u4ECE 0 \u5F00\u59CB\uFF0C\u9ED8\u8BA4 0\uFF09\u3001limit\uFF08\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 30\uFF09\u3002\u8FD4\u56DE\u7ED3\u679C\u5305\u542B\u5206\u9875\u5143\u4FE1\u606F { memory_type, total, offset, limit, has_more, memories }\uFF0Chas_more \u4E3A true \u65F6\u53EF\u7528\u589E\u5927 offset \u7EE7\u7EED\u7FFB\u9875\u3002instance_permanent_memory \u4E3B\u8981\u7528 search_memory \u68C0\u7D22\uFF1Bproject_doc_memory \u540C\u6837\u652F\u6301 list\u3002",inputSchema:{type:"object",properties:{memory_type:n,offset:{type:"integer",minimum:0,description:"\u5206\u9875\u504F\u79FB\u91CF\uFF0C\u8DF3\u8FC7\u524D N \u6761\u8BB0\u5F55\uFF08\u4ECE 0 \u5F00\u59CB\uFF09\uFF0C\u9ED8\u8BA4 0\u3002"},limit:{type:"integer",minimum:1,description:"\u6BCF\u9875\u8FD4\u56DE\u7684\u6761\u6570\uFF0C\u9ED8\u8BA4 30\u3002"}},required:["memory_type"]}},c={name:"get_memory_stats",description:"\u83B7\u53D6\u5F53\u524D Agent \u5DE5\u4F5C\u533A\u672C\u5730\u8BB0\u5FC6\u7684\u5BB9\u91CF\u7EDF\u8BA1\u3002\u9ED8\u8BA4\u8FD4\u56DE\u5373\u65F6/\u957F\u671F/\u9879\u76EE\u603B\u6570\u3001\u5373\u65F6/\u957F\u671F\u4E0B\u7684 URI domain \u7C7B\u578B\u5360\u7528\u3001\u4EE5\u53CA\u6BCF\u4E2A domain \u4E0B memory \u6761\u6570\u5360\u7528\u3002",inputSchema:{type:"object",properties:{memory_type:{...e,description:"\u8BB0\u5FC6\u7C7B\u578B\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u65F6\u8FD4\u56DE\u5373\u65F6/\u957F\u671F/\u9879\u76EE\u603B\u6570\u4E0E\u5404 domain \u5360\u7528\u7EDF\u8BA1\uFF1B\u4F20\u6307\u5B9A\u7C7B\u578B\u65F6\u53EA\u8FD4\u56DE\u8BE5\u7C7B\u578B\u7684\u5360\u7528\u8BE6\u60C5\u3002"}},required:[]}},y={name:"list_memories_by_file",description:"\u67E5\u8BE2\u7ED1\u5B9A\u4E86\u6307\u5B9A\u6587\u4EF6\u7684\u6240\u6709 Memory\u3002\u9ED8\u8BA4\u5408\u5E76\u641C\u7D22\u81EA\u8EAB\u3001\u540C\u5DE5\u4F5C\u8DEF\u5F84\u5176\u4ED6\u89D2\u8272\uFF08\u540Cbridge\u5B9E\u4F8B\uFF09\u4E0E\u5B50Agent\uFF08\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E3A\u5F53\u524D\u8DEF\u5F84\u5B50\u76EE\u5F55\u7684Agent\uFF09\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\u3002\u5B50Agent\u7684\u8BB0\u5FC6\u4F1A\u505Apath_prefix\u81EA\u52A8\u5339\u914D\uFF0C\u65E0\u9700\u624B\u52A8\u8BA1\u7B97\u8DEF\u5F84\u3002\u540C\u5DE5\u4F5C\u8DEF\u5F84\u5176\u4ED6\u89D2\u8272\u7684\u5171\u4EAB\u8BB0\u5FC6\u4EC5\u9650\u7ED1\u5B9A\u6587\u4EF6\u7684 project_doc_memory\uFF0C\u5E26 readonly=true \u4E0E source_role_name \u6765\u6E90\u6807\u8BB0\uFF0C\u53EA\u8BFB\u4E0D\u53EF\u4FEE\u6539\u3002\u4F8B\u5982\u7236Agent\u641C\u7D22 ./a/b/c/src/a.txt\uFF0C\u5B50Agent(\u5DE5\u4F5C\u8DEF\u5F84./a/b/c)\u7ED1\u5B9A./src/a.txt\u7684\u8BB0\u5FC6\u4F1A\u88AB\u81EA\u52A8\u5339\u914D\u3002",inputSchema:{type:"object",properties:{file_path:{type:"string",description:"\u6587\u4EF6\u8DEF\u5F84\uFF0C\u4F8B\u5982 /path/to/file.md"},memory_type:e,scope:{type:"string",enum:["own","children","all"],description:"\u641C\u7D22\u8303\u56F4\uFF1Aown\uFF08\u4EC5\u641C\u7D22\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF09\u3001children\uFF08\u641C\u7D22\u5B50Agent\u7ED1\u5B9A\u4E86\u6587\u4EF6\u7684\u8BB0\u5FC6\uFF0C\u6309path_prefix\u81EA\u52A8\u5339\u914D\uFF09\u3001all\uFF08\u9ED8\u8BA4\uFF0C\u5408\u5E76\u641C\u7D22\u81EA\u5DF1\u3001\u540C\u5DE5\u4F5C\u8DEF\u5F84\u5176\u4ED6\u89D2\u8272\u7684\u53EA\u8BFB\u5171\u4EAB\u8BB0\u5FC6\uFF08\u4EC5 project_doc_memory\uFF09\u3001\u5B50Agent\u7684\u8BB0\u5FC6\uFF09\u3002"}},required:["file_path"]}},a={name:"abandon_memory_update",description:"\u653E\u5F03\u6307\u5B9A Memory \u7684\u66F4\u65B0\u4E2D\u72B6\u6001\u3002\u5F53\u7CFB\u7EDF\u68C0\u6D4B\u5230\u6587\u4EF6\u53D8\u66F4\u5E76\u81EA\u52A8\u6807\u8BB0\u4E3A\u66F4\u65B0\u4E2D\u540E\uFF0C\u5982\u679C Agent \u51B3\u5B9A\u6682\u4E0D\u66F4\u65B0\uFF0C\u53EF\u4EE5\u8C03\u7528\u6B64\u5DE5\u5177\u6E05\u9664\u66F4\u65B0\u6807\u8BB0\u3002\u6CE8\u610F\uFF1A\u82E5\u5F53\u524D\u5DF2\u7ED1\u5B9A\u7684\u6587\u4EF6\u4E2D\u5B58\u5728\u5DF2\u5220\u9664\u7684\u6587\u4EF6\uFF0C\u653E\u5F03\u66F4\u65B0\u5C06\u5931\u8D25\uFF0C\u9700\u5148\u901A\u8FC7 update_memory \u4FEE\u6B63 bound_files \u5217\u8868\uFF08\u79FB\u9664\u4E0D\u5B58\u5728\u7684\u6587\u4EF6\uFF09\u3002",inputSchema:{type:"object",properties:{uri:t,memory_type:e},required:["uri"]}},d={name:"memory_recurrence",description:`\u83B7\u53D6\u5DF2\u8FC7\u671F\u7684\u53EF\u8FC7\u671F\u8BB0\u5FC6\uFF08\u4EC5 instance_hotspot_memory \u5B9E\u4F8B\u70ED\u70B9\u8BB0\u5FC6\uFF1Binstance_permanent_memory / project_doc_memory \u65E0\u8FC7\u671F\uFF09\u3002
26
+ \u8FC7\u671F\u6761\u4EF6\uFF1Aexpires_at < NOW()\u3002\u521D\u59CB TTL 12h\uFF1Bupdate_memory \u7EED\u671F\u5237\u65B0\u4E3A\u56FA\u5B9A 24h\u3002
23
27
  \u8C03\u7528\u540E\uFF0C\u7CFB\u7EDF\u4F1A\u539F\u5B50\u8BA4\u9886\u6700\u591A 50 \u6761\u5DF2\u8FC7\u671F\u8BB0\u5FC6\u4E3A[\u56DE\u5FC6\u4E2D](recalling)\u72B6\u6001\uFF08\u8BA4\u9886\u8005+\u8BA4\u9886\u79DF\u7EA6\uFF0C\u5E42\u7B49\u53EF\u91CD\u590D\u8C03\u7528\uFF09\u3002
24
28
  \u5DF2\u7EED\u671F\u7684\u8BB0\u5FC6\uFF08expiresAt \u5728\u672A\u6765\uFF09\u4E0D\u4F1A\u518D\u6B21\u51FA\u73B0\uFF1B\u51B3\u5B9A\u4E0D\u4FDD\u7559\u7684\u8BB0\u5FC6\u4FDD\u6301[\u56DE\u5FC6\u4E2D]\u72B6\u6001\uFF0C
25
29
  \u5728\u672C\u6279\u5BA1\u67E5\u5B8C\u6BD5\u540E\u901A\u8FC7 memory_recurrence_complete \u6E05\u7406\u5220\u9664\u3002
26
30
  Agent \u5E94\u5BA1\u67E5\u8FD9\u4E9B\u8BB0\u5FC6\u5185\u5BB9\uFF0C\u51B3\u5B9A\u662F\uFF1A
27
31
  1) \u901A\u8FC7 update_memory \u7EED\u671F\uFF08\u7EED\u671F\u540E\u4E0D\u518D\u88AB\u672C\u6D41\u7A0B\u56DE\u6536\uFF09
28
- 2) \u4E0D\u7EED\u671F\uFF0C\u672C\u6279\u5BA1\u67E5\u5B8C\u6BD5\u540E\u8C03\u7528 memory_recurrence_complete \u5220\u9664\u5B83\u4EEC`,inputSchema:{type:"object",properties:{limit:{type:"number",description:"\u6BCF\u6B21\u6279\u91CF\u5904\u7406\u7684\u8BB0\u5FC6\u6570\u91CF\uFF08\u6309\u8FC7\u671F\u65F6\u95F4\u6700\u65E9\u4F18\u5148\uFF0C\u9ED8\u8BA4 10\uFF09\u3002\u4F8B\u5982 totalExpired=40\u3001limit=10 \u65F6\u7B2C\u4E00\u6B21\u8FD4\u56DE 10 \u6761\uFF0Cremaining=30\u3002",default:10}},required:[]}},d={name:"memory_recurrence_complete",description:`\u5B8C\u6210\u5373\u5C06\u9057\u5FD8\u7684\u8BB0\u5FC6\u758F\u7406\u5DE5\u4F5C\u3002
29
- \u5220\u9664\u672C\u4EBA\u8BA4\u9886\u7684[\u56DE\u5FC6\u4E2D](recalling)\u72B6\u6001\u5DF2\u8FC7\u671F\u53EF\u8FC7\u671F\u8BB0\u5FC6\uFF08instance_long_memory / instance_memory\uFF09\u3002
32
+ 2) \u4E0D\u7EED\u671F\uFF0C\u672C\u6279\u5BA1\u67E5\u5B8C\u6BD5\u540E\u8C03\u7528 memory_recurrence_complete \u5220\u9664\u5B83\u4EEC`,inputSchema:{type:"object",properties:{limit:{type:"number",description:"\u6BCF\u6B21\u6279\u91CF\u5904\u7406\u7684\u8BB0\u5FC6\u6570\u91CF\uFF08\u6309\u8FC7\u671F\u65F6\u95F4\u6700\u65E9\u4F18\u5148\uFF0C\u9ED8\u8BA4 10\uFF09\u3002\u4F8B\u5982 totalExpired=40\u3001limit=10 \u65F6\u7B2C\u4E00\u6B21\u8FD4\u56DE 10 \u6761\uFF0Cremaining=30\u3002",default:10}},required:[]}},u={name:"memory_recurrence_complete",description:`\u5B8C\u6210\u5373\u5C06\u9057\u5FD8\u7684\u8BB0\u5FC6\u758F\u7406\u5DE5\u4F5C\u3002
33
+ \u5220\u9664\u672C\u4EBA\u8BA4\u9886\u7684[\u56DE\u5FC6\u4E2D](recalling)\u72B6\u6001\u5DF2\u8FC7\u671F\u53EF\u8FC7\u671F\u8BB0\u5FC6\uFF08instance_hotspot_memory\uFF09\u3002
30
34
  \u63A8\u8350\u7528\u6CD5\uFF1A\u968F\u5BA1\u67E5\u5206\u6279\u6E05\u7406\uFF08\u6BCF\u6279\u4F20\u5165\u672C\u6279\u786E\u5B9A\u5220\u9664\u7684 URI\uFF09\uFF1B\u5168\u90E8\u6279\u6B21\u5904\u7406\u5B8C\u6BD5\u540E\u4E0D\u5E26\u53C2\u6570\u8C03\u7528\u4E00\u6B21\uFF0C\u6E05\u7406\u5269\u4F59\u5168\u90E8\u3002
31
- \u8BE5\u5DE5\u5177\u4EC5\u5220\u9664\uFF0C\u4E0D\u505A\u5F52\u6863\uFF1B\u9700\u8981\u957F\u671F\u4FDD\u7559\u7684\u5185\u5BB9\u8BF7\u5148\u8C03\u7528 create_memory \u4FDD\u5B58\u540E\u518D\u5220\u9664\u65E7\u6761\u76EE\u3002`,inputSchema:{type:"object",properties:{uris:{type:"array",items:{type:"string"},description:"\u53EF\u9009\u3002\u672C\u6279\u786E\u5B9A\u5220\u9664\u7684 memory URI \u5217\u8868\uFF1B\u4E0D\u4F20\u65F6\u5220\u9664\u672C\u4EBA\u8BA4\u9886\u7684\u5168\u90E8[\u56DE\u5FC6\u4E2D]\u5DF2\u8FC7\u671F\u8BB0\u5FC6\u3002"}},required:[]}};export{c as ABANDON_MEMORY_UPDATE_TOOL,n as CREATE_MEMORY_TOOL,m as DELETE_MEMORY_TOOL,y as GET_MEMORY_STATS_TOOL,_ as LIST_MEMORIES_BY_FILE_TOOL,s as LIST_MEMORIES_TOOL,d as MEMORY_RECURRENCE_COMPLETE_TOOL,a as MEMORY_RECURRENCE_TOOL,i as READ_MEMORY_TOOL,p as SEARCH_MEMORY_TOOL,o as UPDATE_MEMORY_TOOL};
35
+ \u8BE5\u5DE5\u5177\u4EC5\u5220\u9664\uFF0C\u4E0D\u505A\u5F52\u6863\uFF1B\u9700\u8981\u957F\u671F\u4FDD\u7559\u7684\u5185\u5BB9\u8BF7\u5148\u8C03\u7528 create_memory \u4FDD\u5B58\u540E\u518D\u5220\u9664\u65E7\u6761\u76EE\u3002`,inputSchema:{type:"object",properties:{uris:{type:"array",items:{type:"string"},description:"\u53EF\u9009\u3002\u672C\u6279\u786E\u5B9A\u5220\u9664\u7684 memory URI \u5217\u8868\uFF1B\u4E0D\u4F20\u65F6\u5220\u9664\u672C\u4EBA\u8BA4\u9886\u7684\u5168\u90E8[\u56DE\u5FC6\u4E2D]\u5DF2\u8FC7\u671F\u8BB0\u5FC6\u3002"}},required:[]}};export{a as ABANDON_MEMORY_UPDATE_TOOL,o as CREATE_MEMORY_TOOL,p as DELETE_MEMORY_TOOL,c as GET_MEMORY_STATS_TOOL,y as LIST_MEMORIES_BY_FILE_TOOL,_ as LIST_MEMORIES_TOOL,u as MEMORY_RECURRENCE_COMPLETE_TOOL,d as MEMORY_RECURRENCE_TOOL,i as READ_MEMORY_TOOL,s as SEARCH_MEMORY_TOOL,m as UPDATE_MEMORY_TOOL};
32
36
 
@@ -1,4 +1,7 @@
1
1
 
2
+
3
+
4
+
2
5
  import type { DirectMessage, GroupMessage, ProfileInfo } from './types.js';
3
6
 
4
7
  export interface ClassifiedMessages {
@@ -8,6 +11,9 @@ export interface ClassifiedMessages {
8
11
 
9
12
  export type OnMessageArrivedCallback = () => void;
10
13
 
14
+
15
+
16
+
11
17
  export declare class MessageBuffer {
12
18
  private buffer;
13
19
  private resolvers;
@@ -15,45 +21,125 @@ export declare class MessageBuffer {
15
21
  private isPolling;
16
22
  private seenMsgIds;
17
23
 
24
+
25
+
26
+
18
27
  setOnMessageArrived(callback: OnMessageArrivedCallback | null): void;
19
28
 
29
+
30
+
20
31
  setIsPolling(polling: boolean): void;
21
32
 
33
+
34
+
22
35
  private markSeen;
23
36
 
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
24
46
  private isDuplicate;
25
47
 
48
+
49
+
50
+
26
51
  private cleanupSeenMsgIds;
27
52
 
53
+
54
+
28
55
  push(message: DirectMessage | GroupMessage): void;
29
56
 
57
+
58
+
59
+
30
60
  setProfileMessage(profile: ProfileInfo): void;
31
61
 
62
+
63
+
64
+
32
65
  removeProfileMessage(): void;
33
66
 
67
+
68
+
69
+
34
70
  hasProfileMessage(): boolean;
35
71
 
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
36
83
  wakeUpWaiters(): void;
37
84
 
85
+
86
+
87
+
38
88
  getProfileMessage(): null;
39
89
 
90
+
91
+
40
92
  private updatePollingState;
41
93
 
94
+
95
+
96
+
97
+
42
98
  poll(timeoutMs?: number): Promise<ClassifiedMessages>;
43
99
 
100
+
101
+
44
102
  get(): ClassifiedMessages;
45
103
 
104
+
105
+
106
+
107
+
46
108
  takeForceDirectMessages(): ClassifiedMessages;
47
109
 
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
48
121
  requeue(messages: ClassifiedMessages): void;
49
122
 
123
+
124
+
50
125
  size(): number;
51
126
 
127
+
128
+
52
129
  clear(): void;
53
130
 
131
+
132
+
54
133
  private tryDispatch;
55
134
 
135
+
136
+
56
137
  private consumeAll;
57
138
 
139
+
140
+
141
+
142
+
143
+
58
144
  private isDirectMessage;
59
145
  }
@@ -1,5 +1,13 @@
1
1
 
2
2
 
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
3
11
  export interface ImageAttachment {
4
12
  type: "image";
5
13
  url: string;
@@ -8,14 +16,30 @@ export interface ImageAttachment {
8
16
  size: number;
9
17
  }
10
18
 
19
+
20
+
11
21
  export interface ParsedMessageContent {
12
22
  text: string;
13
23
  attachments: ImageAttachment[];
14
24
  hasImages: boolean;
15
25
  }
16
26
 
27
+
28
+
29
+
30
+
31
+
17
32
  export declare function parseMessageContent(content: string): ParsedMessageContent;
18
33
 
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
19
43
  export declare function buildMultimodalContentBlocks(parsedContent: ParsedMessageContent, _baseUrl: string): Array<{
20
44
  type: string;
21
45
  text?: string;
@@ -1,5 +1,24 @@
1
1
 
2
2
 
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
3
18
  export declare function latexToOmml(latex: string, displayMode?: boolean): string;
4
19
 
20
+
21
+
22
+
23
+
5
24
  export declare function prepareOfficeEquationCommands(commands: unknown[]): void;