aws-runtime-bridge 1.9.33 → 1.9.41

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 (324) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +66 -5
  2. package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
  3. package/dist/adapter/AcodeSdkAdapter.js +771 -69
  4. package/dist/adapter/ClaudeSdkAdapter.d.ts +6 -0
  5. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
  6. package/dist/adapter/ClaudeSdkAdapter.js +24 -1
  7. package/dist/adapter/OpencodeSdkAdapter.d.ts +19 -0
  8. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
  9. package/dist/adapter/OpencodeSdkAdapter.js +62 -0
  10. package/dist/adapter/idle-poll-loop.d.ts +2 -1
  11. package/dist/adapter/idle-poll-loop.d.ts.map +1 -1
  12. package/dist/adapter/types.d.ts +86 -9
  13. package/dist/adapter/types.d.ts.map +1 -1
  14. package/dist/adapter/types.js +15 -5
  15. package/dist/index.js +15 -0
  16. package/dist/routes/acode-todos.d.ts +11 -0
  17. package/dist/routes/acode-todos.d.ts.map +1 -0
  18. package/dist/routes/acode-todos.js +75 -0
  19. package/dist/routes/ai-sources.js +4 -1
  20. package/dist/routes/dashboard.d.ts.map +1 -1
  21. package/dist/routes/dashboard.js +1 -1
  22. package/dist/routes/memory.d.ts +1 -1
  23. package/dist/routes/memory.d.ts.map +1 -1
  24. package/dist/routes/memory.js +3 -3
  25. package/dist/routes/pty.d.ts.map +1 -1
  26. package/dist/routes/pty.js +9 -0
  27. package/dist/routes/runtime-binding.d.ts.map +1 -1
  28. package/dist/routes/runtime-binding.js +6 -3
  29. package/dist/routes/sessions.js +89 -4
  30. package/dist/routes/sub-agents.d.ts +14 -0
  31. package/dist/routes/sub-agents.d.ts.map +1 -0
  32. package/dist/routes/sub-agents.js +267 -0
  33. package/dist/routes/terminal.d.ts +12 -1
  34. package/dist/routes/terminal.d.ts.map +1 -1
  35. package/dist/routes/terminal.js +326 -24
  36. package/dist/services/acode-package.d.ts +8 -1
  37. package/dist/services/acode-package.d.ts.map +1 -1
  38. package/dist/services/acode-package.js +33 -4
  39. package/dist/services/agent-event-store.d.ts +1 -0
  40. package/dist/services/agent-event-store.d.ts.map +1 -1
  41. package/dist/services/aws-client-agent-mcp.d.ts.map +1 -1
  42. package/dist/services/aws-client-agent-mcp.js +11 -4
  43. package/dist/services/event-delta-pusher.js +4 -4
  44. package/dist/services/fileSnapshotStore.js +1 -1
  45. package/dist/services/legacy-path-migration.d.ts +3 -0
  46. package/dist/services/legacy-path-migration.d.ts.map +1 -0
  47. package/dist/services/legacy-path-migration.js +66 -0
  48. package/dist/services/lifecycle-state.d.ts.map +1 -1
  49. package/dist/services/lifecycle-state.js +1 -1
  50. package/dist/services/runtime-binding.d.ts +5 -0
  51. package/dist/services/runtime-binding.d.ts.map +1 -1
  52. package/dist/services/runtime-binding.js +33 -1
  53. package/dist/services/session-output.d.ts +10 -1
  54. package/dist/services/session-output.d.ts.map +1 -1
  55. package/dist/services/session-output.js +54 -4
  56. package/dist/services/sub-agent-manager-instance.d.ts +4 -0
  57. package/dist/services/sub-agent-manager-instance.d.ts.map +1 -0
  58. package/dist/services/sub-agent-manager-instance.js +12 -0
  59. package/dist/services/workspace-files.d.ts +1 -0
  60. package/dist/services/workspace-files.d.ts.map +1 -1
  61. package/dist/services/workspace-files.js +57 -1
  62. package/package/acode/dist/ask-user-question-tool.d.ts +47 -0
  63. package/package/acode/dist/ask-user-question-tool.d.ts.map +1 -0
  64. package/package/acode/dist/ask-user-question-tool.js +233 -0
  65. package/package/acode/dist/built-in-file-tools.d.ts +2 -0
  66. package/package/acode/dist/built-in-file-tools.d.ts.map +1 -1
  67. package/package/acode/dist/built-in-file-tools.js +504 -3
  68. package/package/acode/dist/compaction.d.ts +242 -0
  69. package/package/acode/dist/compaction.d.ts.map +1 -0
  70. package/package/acode/dist/compaction.js +919 -0
  71. package/package/acode/dist/config.d.ts +6 -1
  72. package/package/acode/dist/config.d.ts.map +1 -1
  73. package/package/acode/dist/config.js +27 -2
  74. package/package/acode/dist/index.d.ts +4 -0
  75. package/package/acode/dist/index.d.ts.map +1 -1
  76. package/package/acode/dist/index.js +4 -0
  77. package/package/acode/dist/runtime.d.ts +257 -0
  78. package/package/acode/dist/runtime.d.ts.map +1 -1
  79. package/package/acode/dist/runtime.js +1843 -191
  80. package/package/acode/dist/skill-tool.d.ts +30 -0
  81. package/package/acode/dist/skill-tool.d.ts.map +1 -0
  82. package/package/acode/dist/skill-tool.js +174 -0
  83. package/package/acode/dist/sub-agent-manager.d.ts +264 -0
  84. package/package/acode/dist/sub-agent-manager.d.ts.map +1 -0
  85. package/package/acode/dist/sub-agent-manager.js +825 -0
  86. package/package/acode/dist/sub-agent-store.d.ts +40 -0
  87. package/package/acode/dist/sub-agent-store.d.ts.map +1 -0
  88. package/package/acode/dist/sub-agent-store.js +164 -0
  89. package/package/acode/dist/sub-agent-tools.d.ts +72 -0
  90. package/package/acode/dist/sub-agent-tools.d.ts.map +1 -0
  91. package/package/acode/dist/sub-agent-tools.js +429 -0
  92. package/package/acode/dist/sub-agent-types.d.ts +85 -0
  93. package/package/acode/dist/sub-agent-types.d.ts.map +1 -0
  94. package/package/acode/dist/sub-agent-types.js +8 -0
  95. package/package/acode/dist/todo-store.d.ts +42 -0
  96. package/package/acode/dist/todo-store.d.ts.map +1 -0
  97. package/package/acode/dist/todo-store.js +68 -0
  98. package/package/acode/dist/todo-tool.d.ts +6 -0
  99. package/package/acode/dist/todo-tool.d.ts.map +1 -0
  100. package/package/acode/dist/todo-tool.js +138 -0
  101. package/package/acode/dist/types.d.ts +41 -1
  102. package/package/acode/dist/types.d.ts.map +1 -1
  103. package/package/acode/package.json +13 -2
  104. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +9 -0
  105. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
  106. package/package/aws-client-agent-mcp/dist/agent-client.js +69 -10
  107. package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
  108. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
  109. package/package/aws-client-agent-mcp/dist/config.js +4 -0
  110. package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
  111. package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
  112. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -1
  113. package/package/aws-client-agent-mcp/dist/constants.js +3 -1
  114. package/package/aws-client-agent-mcp/dist/constants.js.map +1 -1
  115. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +4 -1
  116. package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +1 -1
  117. package/package/aws-client-agent-mcp/dist/context-manager.js +6 -2
  118. package/package/aws-client-agent-mcp/dist/context-manager.js.map +1 -1
  119. package/package/aws-client-agent-mcp/dist/context-manager.test.js +5 -3
  120. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
  121. package/package/aws-client-agent-mcp/dist/http-client.d.ts +5 -0
  122. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
  123. package/package/aws-client-agent-mcp/dist/http-client.js +15 -1
  124. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
  125. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +162 -71
  126. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
  127. package/package/aws-client-agent-mcp/dist/mcp-server.js +1007 -504
  128. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
  129. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +371 -253
  130. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
  131. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +6 -17
  132. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
  133. package/package/aws-client-agent-mcp/dist/mcp-tools.js +20 -75
  134. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
  135. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +45 -45
  136. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
  137. package/package/aws-client-agent-mcp/dist/memory-store.js +114 -162
  138. package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
  139. package/package/aws-client-agent-mcp/dist/memory-store.test.js +175 -164
  140. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -1
  141. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +3 -9
  142. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
  143. package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -58
  144. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
  145. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +40 -9
  146. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -1
  147. package/package/aws-client-agent-mcp/dist/message-buffer.js +123 -23
  148. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -1
  149. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +13 -13
  150. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
  151. package/package/aws-client-agent-mcp/dist/server-memory-store.js +23 -16
  152. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
  153. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
  154. package/package/aws-client-agent-mcp/dist/status-reporter.js +8 -5
  155. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
  156. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +93 -0
  157. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +1 -1
  158. package/package/aws-client-agent-mcp/dist/types.d.ts +12 -25
  159. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
  160. package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
  161. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +34 -1
  162. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
  163. package/package/aws-client-agent-mcp/dist/websocket-client.js +146 -18
  164. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
  165. package/package.json +17 -7
  166. package/dist/adapter/AcodeSdkAdapter.test.d.ts +0 -2
  167. package/dist/adapter/AcodeSdkAdapter.test.d.ts.map +0 -1
  168. package/dist/adapter/AcodeSdkAdapter.test.js +0 -2000
  169. package/dist/adapter/AdapterRegistry.test.d.ts +0 -5
  170. package/dist/adapter/AdapterRegistry.test.d.ts.map +0 -1
  171. package/dist/adapter/AdapterRegistry.test.js +0 -118
  172. package/dist/adapter/ClaudeSdkAdapter.test.d.ts +0 -2
  173. package/dist/adapter/ClaudeSdkAdapter.test.d.ts.map +0 -1
  174. package/dist/adapter/ClaudeSdkAdapter.test.js +0 -311
  175. package/dist/adapter/CodexSdkAdapter.test.d.ts +0 -2
  176. package/dist/adapter/CodexSdkAdapter.test.d.ts.map +0 -1
  177. package/dist/adapter/CodexSdkAdapter.test.js +0 -270
  178. package/dist/adapter/OpencodeSdkAdapter.test.d.ts +0 -2
  179. package/dist/adapter/OpencodeSdkAdapter.test.d.ts.map +0 -1
  180. package/dist/adapter/OpencodeSdkAdapter.test.js +0 -158
  181. package/dist/adapter/acode-tool-names.test.d.ts +0 -2
  182. package/dist/adapter/acode-tool-names.test.d.ts.map +0 -1
  183. package/dist/adapter/acode-tool-names.test.js +0 -28
  184. package/dist/adapter/adapter.test.d.ts +0 -5
  185. package/dist/adapter/adapter.test.d.ts.map +0 -1
  186. package/dist/adapter/adapter.test.js +0 -180
  187. package/dist/adapter/idle-poll-loop.test.d.ts +0 -2
  188. package/dist/adapter/idle-poll-loop.test.d.ts.map +0 -1
  189. package/dist/adapter/idle-poll-loop.test.js +0 -85
  190. package/dist/adapter/types.test.d.ts +0 -2
  191. package/dist/adapter/types.test.d.ts.map +0 -1
  192. package/dist/adapter/types.test.js +0 -50
  193. package/dist/adapters/cc-switch/mcp-acode.test.d.ts +0 -2
  194. package/dist/adapters/cc-switch/mcp-acode.test.d.ts.map +0 -1
  195. package/dist/adapters/cc-switch/mcp-acode.test.js +0 -80
  196. package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts +0 -2
  197. package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts.map +0 -1
  198. package/dist/adapters/cc-switch/mcp-claudecode.test.js +0 -75
  199. package/dist/adapters/cc-switch/mcp-codex.test.d.ts +0 -2
  200. package/dist/adapters/cc-switch/mcp-codex.test.d.ts.map +0 -1
  201. package/dist/adapters/cc-switch/mcp-codex.test.js +0 -126
  202. package/dist/adapters/cc-switch/mcp-opencode.test.d.ts +0 -2
  203. package/dist/adapters/cc-switch/mcp-opencode.test.d.ts.map +0 -1
  204. package/dist/adapters/cc-switch/mcp-opencode.test.js +0 -62
  205. package/dist/adapters/cc-switch/skill-directory.test.d.ts +0 -2
  206. package/dist/adapters/cc-switch/skill-directory.test.d.ts.map +0 -1
  207. package/dist/adapters/cc-switch/skill-directory.test.js +0 -74
  208. package/dist/config.test.d.ts +0 -2
  209. package/dist/config.test.d.ts.map +0 -1
  210. package/dist/config.test.js +0 -107
  211. package/dist/routes/ai-sources.test.d.ts +0 -2
  212. package/dist/routes/ai-sources.test.d.ts.map +0 -1
  213. package/dist/routes/ai-sources.test.js +0 -169
  214. package/dist/routes/file-browser.test.d.ts +0 -5
  215. package/dist/routes/file-browser.test.d.ts.map +0 -1
  216. package/dist/routes/file-browser.test.js +0 -155
  217. package/dist/routes/git.test.d.ts +0 -2
  218. package/dist/routes/git.test.d.ts.map +0 -1
  219. package/dist/routes/git.test.js +0 -330
  220. package/dist/routes/instance.test.d.ts +0 -5
  221. package/dist/routes/instance.test.d.ts.map +0 -1
  222. package/dist/routes/instance.test.js +0 -389
  223. package/dist/routes/mcp.test.d.ts +0 -5
  224. package/dist/routes/mcp.test.d.ts.map +0 -1
  225. package/dist/routes/mcp.test.js +0 -92
  226. package/dist/routes/memory-route-wiring.test.d.ts +0 -2
  227. package/dist/routes/memory-route-wiring.test.d.ts.map +0 -1
  228. package/dist/routes/memory-route-wiring.test.js +0 -15
  229. package/dist/routes/memory.test.d.ts +0 -2
  230. package/dist/routes/memory.test.d.ts.map +0 -1
  231. package/dist/routes/memory.test.js +0 -177
  232. package/dist/routes/properties.test.d.ts +0 -5
  233. package/dist/routes/properties.test.d.ts.map +0 -1
  234. package/dist/routes/properties.test.js +0 -72
  235. package/dist/routes/pty.test.d.ts +0 -2
  236. package/dist/routes/pty.test.d.ts.map +0 -1
  237. package/dist/routes/pty.test.js +0 -82
  238. package/dist/routes/runtime-binding.test.d.ts +0 -2
  239. package/dist/routes/runtime-binding.test.d.ts.map +0 -1
  240. package/dist/routes/runtime-binding.test.js +0 -32
  241. package/dist/routes/sessions.test.d.ts +0 -5
  242. package/dist/routes/sessions.test.d.ts.map +0 -1
  243. package/dist/routes/sessions.test.js +0 -86
  244. package/dist/routes/skills.test.d.ts +0 -5
  245. package/dist/routes/skills.test.d.ts.map +0 -1
  246. package/dist/routes/skills.test.js +0 -50
  247. package/dist/routes/system-metrics.test.d.ts +0 -2
  248. package/dist/routes/system-metrics.test.d.ts.map +0 -1
  249. package/dist/routes/system-metrics.test.js +0 -16
  250. package/dist/routes/terminal.stop-options.test.d.ts +0 -2
  251. package/dist/routes/terminal.stop-options.test.d.ts.map +0 -1
  252. package/dist/routes/terminal.stop-options.test.js +0 -39
  253. package/dist/routes/terminal.test.d.ts +0 -2
  254. package/dist/routes/terminal.test.d.ts.map +0 -1
  255. package/dist/routes/terminal.test.js +0 -746
  256. package/dist/routes/yml.test.d.ts +0 -5
  257. package/dist/routes/yml.test.d.ts.map +0 -1
  258. package/dist/routes/yml.test.js +0 -58
  259. package/dist/services/ai-source-apply.test.d.ts +0 -2
  260. package/dist/services/ai-source-apply.test.d.ts.map +0 -1
  261. package/dist/services/ai-source-apply.test.js +0 -138
  262. package/dist/services/auto-register.test.d.ts +0 -2
  263. package/dist/services/auto-register.test.d.ts.map +0 -1
  264. package/dist/services/auto-register.test.js +0 -184
  265. package/dist/services/aws-client-agent-mcp.test.d.ts +0 -2
  266. package/dist/services/aws-client-agent-mcp.test.d.ts.map +0 -1
  267. package/dist/services/aws-client-agent-mcp.test.js +0 -242
  268. package/dist/services/bridge-package-publish-hooks.test.d.ts +0 -2
  269. package/dist/services/bridge-package-publish-hooks.test.d.ts.map +0 -1
  270. package/dist/services/bridge-package-publish-hooks.test.js +0 -136
  271. package/dist/services/cc-switch-discovery.test.d.ts +0 -2
  272. package/dist/services/cc-switch-discovery.test.d.ts.map +0 -1
  273. package/dist/services/cc-switch-discovery.test.js +0 -56
  274. package/dist/services/cli-commands.test.d.ts +0 -2
  275. package/dist/services/cli-commands.test.d.ts.map +0 -1
  276. package/dist/services/cli-commands.test.js +0 -230
  277. package/dist/services/instance-init-service.test.d.ts +0 -2
  278. package/dist/services/instance-init-service.test.d.ts.map +0 -1
  279. package/dist/services/instance-init-service.test.js +0 -140
  280. package/dist/services/instance-state.test.d.ts +0 -2
  281. package/dist/services/instance-state.test.d.ts.map +0 -1
  282. package/dist/services/instance-state.test.js +0 -245
  283. package/dist/services/mcp-launch-binding-queue.test.d.ts +0 -2
  284. package/dist/services/mcp-launch-binding-queue.test.d.ts.map +0 -1
  285. package/dist/services/mcp-launch-binding-queue.test.js +0 -181
  286. package/dist/services/runtime-binding.test.d.ts +0 -2
  287. package/dist/services/runtime-binding.test.d.ts.map +0 -1
  288. package/dist/services/runtime-binding.test.js +0 -78
  289. package/dist/services/runtime-lifecycle-policy.test.d.ts +0 -2
  290. package/dist/services/runtime-lifecycle-policy.test.d.ts.map +0 -1
  291. package/dist/services/runtime-lifecycle-policy.test.js +0 -41
  292. package/dist/services/session-output.test.d.ts +0 -5
  293. package/dist/services/session-output.test.d.ts.map +0 -1
  294. package/dist/services/session-output.test.js +0 -177
  295. package/dist/services/startup-config-wizard.test.d.ts +0 -2
  296. package/dist/services/startup-config-wizard.test.d.ts.map +0 -1
  297. package/dist/services/startup-config-wizard.test.js +0 -184
  298. package/dist/services/terminal-persistence.test.d.ts +0 -5
  299. package/dist/services/terminal-persistence.test.d.ts.map +0 -1
  300. package/dist/services/terminal-persistence.test.js +0 -159
  301. package/dist/services/tool-installer.test.d.ts +0 -2
  302. package/dist/services/tool-installer.test.d.ts.map +0 -1
  303. package/dist/services/tool-installer.test.js +0 -225
  304. package/dist/services/workspace-files.test.d.ts +0 -2
  305. package/dist/services/workspace-files.test.d.ts.map +0 -1
  306. package/dist/services/workspace-files.test.js +0 -648
  307. package/dist/services/workspace-watch.test.d.ts +0 -2
  308. package/dist/services/workspace-watch.test.d.ts.map +0 -1
  309. package/dist/services/workspace-watch.test.js +0 -38
  310. package/dist/utils/file-utils.test.d.ts +0 -2
  311. package/dist/utils/file-utils.test.d.ts.map +0 -1
  312. package/dist/utils/file-utils.test.js +0 -244
  313. package/dist/utils/logger.test.d.ts +0 -2
  314. package/dist/utils/logger.test.d.ts.map +0 -1
  315. package/dist/utils/logger.test.js +0 -93
  316. package/dist/utils/sdk-package-loader.test.d.ts +0 -2
  317. package/dist/utils/sdk-package-loader.test.d.ts.map +0 -1
  318. package/dist/utils/sdk-package-loader.test.js +0 -84
  319. package/dist/utils/validation.test.d.ts +0 -2
  320. package/dist/utils/validation.test.d.ts.map +0 -1
  321. package/dist/utils/validation.test.js +0 -88
  322. package/dist/utils/yaml-utils.test.d.ts +0 -2
  323. package/dist/utils/yaml-utils.test.d.ts.map +0 -1
  324. package/dist/utils/yaml-utils.test.js +0 -363
@@ -1,4 +1,4 @@
1
- export type MemoryType = 'task_list' | 'recently_memory' | 'memory' | 'session_context';
1
+ export type MemoryType = 'recently_memory' | 'agent_memory' | 'project_memory' | 'session_context';
2
2
  /**
3
3
  * 规范化绑定的文件路径。
4
4
  * 项目约定以下前缀都表示工作区根路径:
@@ -22,13 +22,10 @@ export interface MemoryRecord {
22
22
  keywords?: string[];
23
23
  bound_files?: string[];
24
24
  file_md5_map?: Record<string, string>;
25
- update_status?: 'normal' | 'updating';
26
25
  updating_agent_id?: string;
27
26
  last_check_time?: string;
28
27
  expiresAt?: string;
29
- recall_status?: 'normal' | 'recalling';
30
- todo_status?: 'pending' | 'completed';
31
- memory_status?: 'normal' | 'recalling' | 'pending' | 'completed';
28
+ memory_status?: 'normal' | 'recalling' | 'updating';
32
29
  }
33
30
  export type TodoStatus = 'pending' | 'completed';
34
31
  export interface CreateMemoryInput {
@@ -51,13 +48,11 @@ export interface UpdateMemoryInput {
51
48
  append?: string;
52
49
  keywords?: string[];
53
50
  bound_files?: string[];
54
- update_status?: 'normal' | 'updating';
55
51
  updating_agent_id?: string;
56
52
  file_md5_map?: Record<string, string>;
57
53
  last_check_time?: string;
58
54
  expiresAt?: string;
59
- recall_status?: 'normal' | 'recalling';
60
- todo_status?: 'pending' | 'completed';
55
+ memory_status?: 'normal' | 'recalling' | 'updating';
61
56
  }
62
57
  export interface ReadMemoryInput {
63
58
  memory_type?: MemoryType;
@@ -130,7 +125,6 @@ export interface MemoryStorePort {
130
125
  results: MemoryRecord[];
131
126
  }>;
132
127
  listByType(memory_type: string): Promise<MemoryRecord[]>;
133
- archiveRecentlyMemory(uri: string): Promise<MemoryRecord>;
134
128
  listByFile(filePath: string, memory_type?: MemoryType | ListByFileOptions): Promise<MemoryRecord[]>;
135
129
  listExpiredRecentlyMemories(): Promise<MemoryRecord[]>;
136
130
  markExpiredMemoriesRecalling(uris?: string[]): Promise<{
@@ -141,14 +135,19 @@ export interface MemoryStorePort {
141
135
  deleted: number;
142
136
  uris: string[];
143
137
  }>;
144
- listByTodoStatus(todo_status: 'pending' | 'completed'): Promise<MemoryRecord[]>;
145
- todoCompleted(uri: string): Promise<{
146
- completed: boolean;
147
- uri: string;
148
- allCleaned: boolean;
149
- cleanedCount: number;
150
- cleanedUris: string[];
138
+ claimMemoryUpdate(uris: string[], leaseMinutes: number, memoryType?: string): Promise<{
139
+ claimed_uris: string[];
151
140
  }>;
141
+ renewMemoryLease(leaseMinutes: number): Promise<{
142
+ renewed: number;
143
+ }>;
144
+ releaseMemoryClaim(uri: string): Promise<{
145
+ released: boolean;
146
+ }>;
147
+ releaseAllMemoryClaims(): Promise<{
148
+ released: number;
149
+ }>;
150
+ getMyClaimedUris(): Promise<string[]>;
152
151
  }
153
152
  export declare class MemoryStore implements MemoryStorePort {
154
153
  private readonly storePath;
@@ -188,7 +187,7 @@ export declare class MemoryStore implements MemoryStorePort {
188
187
  private generateId;
189
188
  /**
190
189
  * 校验可列出记忆容量。
191
- * 主流程:仅限制 task_list/recently_memory 新建 -> 先校验该类型数量 -> 再校验可 list 总量。
190
+ * 主流程:仅限制 recently_memory/agent_memory/project_memory 新建 -> 先校验该类型数量 -> 再校验可 list 总量。
192
191
  */
193
192
  private ensureListableMemoryCapacity;
194
193
  /**
@@ -198,9 +197,15 @@ export declare class MemoryStore implements MemoryStorePort {
198
197
  private ensureSessionContextCapacity;
199
198
  getStats(): Promise<MemoryStats>;
200
199
  /**
201
- * 计算 recently_memory 过期时间(当前时间 + 24小时)。
200
+ * 计算 agent_memory / recently_memory 过期时间(当前时间 + 12 小时,初始 TTL)。
202
201
  */
203
- private static calcRecentlyExpiresAt;
202
+ private static calcAgentMemoryExpiresAt;
203
+ /**
204
+ * 判断 memory_type 是否支持过期回忆机制。
205
+ * v1.19.0: recently_memory 与 agent_memory 都支持过期、续期、recalling 状态流转。
206
+ * project_memory 为永久记忆,不支持过期。
207
+ */
208
+ static isExpirableType(memoryType: string | undefined): boolean;
204
209
  createMemory(input: CreateMemoryInput): Promise<MemoryRecord>;
205
210
  readMemory(input: ReadMemoryInput): Promise<MemoryRecord | null>;
206
211
  updateMemory(input: UpdateMemoryInput): Promise<MemoryRecord>;
@@ -211,8 +216,9 @@ export declare class MemoryStore implements MemoryStorePort {
211
216
  */
212
217
  private loadDataCached;
213
218
  /**
214
- * 列出已过期的 recently_memory 记录(recall_status 为 normal 或 recalling)。
215
- * 主流程:读取所有数据 -> 筛选 recently_memory 类型 -> 检查 expiresAt 是否已过期。
219
+ * 列出已过期的 agent_memory / recently_memory 记录(memory_status 为 normal 或 recalling)。
220
+ * 主流程:读取所有数据 -> 筛选 agent_memory / recently_memory 类型 -> 检查 expiresAt 是否已过期。
221
+ * v1.19.0: recently_memory 纳入过期回忆流程,行为对齐 agent_memory。
216
222
  */
217
223
  listExpiredRecentlyMemories(): Promise<MemoryRecord[]>;
218
224
  /**
@@ -225,36 +231,16 @@ export declare class MemoryStore implements MemoryStorePort {
225
231
  results: MemoryRecord[];
226
232
  }>;
227
233
  listByType(memory_type: string): Promise<MemoryRecord[]>;
228
- archiveRecentlyMemory(uri: string): Promise<MemoryRecord>;
229
234
  /**
230
235
  * 按文件查询绑定了该文件的所有 Memory
231
236
  * Memory 增强功能 (v1.6.0)
232
237
  */
233
238
  listByFile(filePath: string, memory_type?: MemoryType | ListByFileOptions): Promise<MemoryRecord[]>;
234
239
  /**
235
- * TODO 状态列出 task_list 记忆。
236
- * 主流程:读取所有数据 -> 筛选 task_list 类型 -> 按 todo_status 过滤。
237
- */
238
- listByTodoStatus(todo_status: 'pending' | 'completed'): Promise<MemoryRecord[]>;
239
- /**
240
- * 标记指定 task_list 短期记忆为已完成,并检查是否全部已完成以触发自动清理。
241
- * 主流程:
242
- * 1. 按 uri 查找 task_list 记录 -> 将 todo_status 设为 'completed'
243
- * 2. 检查该 Agent 所有 task_list 是否均为 completed
244
- * 3. 若全部已完成,删除所有 completed 项
245
- */
246
- todoCompleted(uri: string): Promise<{
247
- completed: boolean;
248
- uri: string;
249
- allCleaned: boolean;
250
- cleanedCount: number;
251
- cleanedUris: string[];
252
- }>;
253
- /**
254
- * 标记已过期的 recently_memory 记录为 recalling 状态 (v1.13.0)。
240
+ * 标记已过期的 agent_memory 记录为 recalling 状态 (v1.13.0)。
255
241
  * 主流程:复用 listExpiredRecentlyMemories 找出过期记录 ->
256
242
  * 若传入 uris 则只标记指定 URI 的过期记录(分批处理用) ->
257
- * 逐条更新 recall_status='recalling'。
243
+ * 逐条更新 memory_status='recalling'。
258
244
  * @param uris 可选,指定要标记的 URI 列表;不传时标记所有过期记忆
259
245
  */
260
246
  markExpiredMemoriesRecalling(uris?: string[]): Promise<{
@@ -262,12 +248,26 @@ export declare class MemoryStore implements MemoryStorePort {
262
248
  uris: string[];
263
249
  }>;
264
250
  /**
265
- * 清理所有「recall_status='recalling' + 已过期」的 recently_memory 记录 (v1.13.0)。
266
- * 主流程:遍历所有数据 -> 筛选 recently_memory 类型 + recall_status='recalling' + expiresAt 已过期 -> 删除。
251
+ * 清理所有「memory_status='recalling' + 已过期」的 agent_memory / recently_memory 记录 (v1.13.0, v1.19.0 扩展)。
252
+ * 主流程:遍历所有数据 -> 筛选可过期类型 + memory_status='recalling' + expiresAt 已过期 -> 删除。
253
+ * v1.19.0: recently_memory 纳入清理范围。
267
254
  */
268
255
  clearRecallingExpiredMemories(): Promise<{
269
256
  deleted: number;
270
257
  uris: string[];
271
258
  }>;
259
+ claimMemoryUpdate(_uris: string[], _leaseMinutes: number, _memoryType?: string): Promise<{
260
+ claimed_uris: string[];
261
+ }>;
262
+ renewMemoryLease(_leaseMinutes: number): Promise<{
263
+ renewed: number;
264
+ }>;
265
+ releaseMemoryClaim(_uri: string): Promise<{
266
+ released: boolean;
267
+ }>;
268
+ releaseAllMemoryClaims(): Promise<{
269
+ released: number;
270
+ }>;
271
+ getMyClaimedUris(): Promise<string[]>;
272
272
  }
273
273
  //# sourceMappingURL=memory-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- const ALL_MEMORY_TYPES = ['task_list', 'recently_memory', 'memory', 'session_context'];
2
- const LISTABLE_MEMORY_TYPES = ['task_list', 'recently_memory'];
1
+ const ALL_MEMORY_TYPES = ['recently_memory', 'agent_memory', 'project_memory', 'session_context'];
2
+ const LISTABLE_MEMORY_TYPES = ['recently_memory', 'agent_memory', 'project_memory'];
3
3
  const LISTABLE_MEMORY_TOTAL_LIMIT = 64;
4
4
  const LISTABLE_MEMORY_TYPE_LIMIT = 32;
5
5
  const LISTABLE_MEMORY_TOTAL_HARD_LIMIT = LISTABLE_MEMORY_TOTAL_LIMIT * 2;
@@ -126,14 +126,32 @@ export class MemoryStore {
126
126
  const original = parsed.by_uri && typeof parsed.by_uri === 'object' ? parsed.by_uri : {};
127
127
  const normalizedByUri = {};
128
128
  for (const [uri, record] of Object.entries(original)) {
129
- const memory_type = this.normalizeMemoryType(record.memory_type || 'memory');
129
+ const memory_type = this.normalizeMemoryType(record.memory_type || 'project_memory');
130
130
  const normalized = this.normalizeUri(record.uri || uri);
131
+ // v1.24.0 兼容:旧格式含 update_status / recall_status 但无 memory_status,读取时迁移
132
+ const oldRecord = record;
133
+ let memory_status = oldRecord.memory_status;
134
+ if (!memory_status) {
135
+ if (oldRecord.update_status === 'updating') {
136
+ memory_status = 'updating';
137
+ }
138
+ else if (oldRecord.recall_status === 'recalling') {
139
+ memory_status = 'recalling';
140
+ }
141
+ else {
142
+ memory_status = 'normal';
143
+ }
144
+ }
145
+ const migrated = { ...record };
146
+ delete migrated.update_status;
147
+ delete migrated.recall_status;
131
148
  normalizedByUri[normalized.uri] = {
132
- ...record,
149
+ ...migrated,
133
150
  uri: normalized.uri,
134
151
  domain: normalized.domain,
135
152
  path: normalized.path,
136
- memory_type
153
+ memory_type,
154
+ memory_status,
137
155
  };
138
156
  }
139
157
  return { by_uri: normalizedByUri };
@@ -217,7 +235,7 @@ export class MemoryStore {
217
235
  hardExceeded: false
218
236
  },
219
237
  by_type: {
220
- task_list: {
238
+ recently_memory: {
221
239
  count: 0,
222
240
  limit: LISTABLE_MEMORY_TYPE_LIMIT,
223
241
  hardLimit: LISTABLE_MEMORY_TYPE_HARD_LIMIT,
@@ -227,7 +245,7 @@ export class MemoryStore {
227
245
  domainCount: 0,
228
246
  by_domain: {}
229
247
  },
230
- recently_memory: {
248
+ agent_memory: {
231
249
  count: 0,
232
250
  limit: LISTABLE_MEMORY_TYPE_LIMIT,
233
251
  hardLimit: LISTABLE_MEMORY_TYPE_HARD_LIMIT,
@@ -237,13 +255,13 @@ export class MemoryStore {
237
255
  domainCount: 0,
238
256
  by_domain: {}
239
257
  },
240
- memory: {
258
+ project_memory: {
241
259
  count: 0,
242
- limit: null,
243
- hardLimit: null,
260
+ limit: LISTABLE_MEMORY_TYPE_LIMIT,
261
+ hardLimit: LISTABLE_MEMORY_TYPE_HARD_LIMIT,
244
262
  exceeded: false,
245
263
  hardExceeded: false,
246
- listable: false,
264
+ listable: true,
247
265
  domainCount: 0,
248
266
  by_domain: {}
249
267
  },
@@ -321,7 +339,7 @@ export class MemoryStore {
321
339
  }
322
340
  /**
323
341
  * 校验可列出记忆容量。
324
- * 主流程:仅限制 task_list/recently_memory 新建 -> 先校验该类型数量 -> 再校验可 list 总量。
342
+ * 主流程:仅限制 recently_memory/agent_memory/project_memory 新建 -> 先校验该类型数量 -> 再校验可 list 总量。
325
343
  */
326
344
  ensureListableMemoryCapacity(data, memory_type, normalizedUri) {
327
345
  if (!LISTABLE_MEMORY_TYPES.includes(memory_type)) {
@@ -333,25 +351,15 @@ export class MemoryStore {
333
351
  const isNewDomain = !domainStats;
334
352
  if (isNewDomain && typeStats.domainCount >= LISTABLE_MEMORY_TYPE_HARD_LIMIT) {
335
353
  throw new MemoryCapacityError(`Cannot create ${memory_type}: hard domain type limit ${LISTABLE_MEMORY_TYPE_HARD_LIMIT} reached. ` +
336
- `Please delete an existing ${memory_type} domain type` +
337
- (memory_type === 'recently_memory'
338
- ? ' or archive one to long-term memory with archive_recently_memory'
339
- : '') +
340
- ` before creating a new ${memory_type}.`, {
354
+ `Please delete an existing ${memory_type} domain type before creating a new ${memory_type}.`, {
341
355
  code: 'MEMORY_TYPE_LIMIT_REACHED',
342
356
  memory_type,
343
357
  limit: LISTABLE_MEMORY_TYPE_HARD_LIMIT,
344
358
  current: typeStats.domainCount,
345
- recommended_actions: memory_type === 'recently_memory'
346
- ? [
347
- "list_memories({ memory_type: 'recently_memory' })",
348
- 'archive_recently_memory({ uri })',
349
- "delete_memory({ uri, memory_type: 'recently_memory' })"
350
- ]
351
- : [
352
- "list_memories({ memory_type: 'task_list' })",
353
- "delete_memory({ uri, memory_type: 'task_list' })"
354
- ]
359
+ recommended_actions: [
360
+ `list_memories({ memory_type: '${memory_type}' })`,
361
+ `delete_memory({ uri, memory_type: '${memory_type}' })`,
362
+ ]
355
363
  });
356
364
  }
357
365
  if (domainStats && domainStats.count >= LISTABLE_MEMORY_TYPE_HARD_LIMIT) {
@@ -362,16 +370,10 @@ export class MemoryStore {
362
370
  domain: normalizedUri.domain,
363
371
  limit: LISTABLE_MEMORY_TYPE_HARD_LIMIT,
364
372
  current: domainStats.count,
365
- recommended_actions: memory_type === 'recently_memory'
366
- ? [
367
- "list_memories({ memory_type: 'recently_memory' })",
368
- 'archive_recently_memory({ uri })',
369
- "delete_memory({ uri, memory_type: 'recently_memory' })"
370
- ]
371
- : [
372
- "list_memories({ memory_type: 'task_list' })",
373
- "delete_memory({ uri, memory_type: 'task_list' })"
374
- ]
373
+ recommended_actions: [
374
+ `list_memories({ memory_type: '${memory_type}' })`,
375
+ `delete_memory({ uri, memory_type: '${memory_type}' })`,
376
+ ]
375
377
  });
376
378
  }
377
379
  }
@@ -404,12 +406,20 @@ export class MemoryStore {
404
406
  return this.calculateStats(data);
405
407
  }
406
408
  /**
407
- * 计算 recently_memory 过期时间(当前时间 + 24小时)。
409
+ * 计算 agent_memory / recently_memory 过期时间(当前时间 + 12 小时,初始 TTL)。
408
410
  */
409
- static calcRecentlyExpiresAt() {
410
- const expires = new Date(Date.now() + 24 * 60 * 60 * 1000);
411
+ static calcAgentMemoryExpiresAt() {
412
+ const expires = new Date(Date.now() + 12 * 60 * 60 * 1000);
411
413
  return expires.toISOString();
412
414
  }
415
+ /**
416
+ * 判断 memory_type 是否支持过期回忆机制。
417
+ * v1.19.0: recently_memory 与 agent_memory 都支持过期、续期、recalling 状态流转。
418
+ * project_memory 为永久记忆,不支持过期。
419
+ */
420
+ static isExpirableType(memoryType) {
421
+ return memoryType === 'agent_memory' || memoryType === 'recently_memory';
422
+ }
413
423
  async createMemory(input) {
414
424
  const normalizedType = this.normalizeMemoryType(input.memory_type);
415
425
  const normalized = this.normalizeUri(input.uri);
@@ -435,14 +445,13 @@ export class MemoryStore {
435
445
  keywords: input.keywords,
436
446
  bound_files: input.bound_files,
437
447
  file_md5_map: input.file_md5_map || undefined,
438
- update_status: 'normal',
439
448
  updating_agent_id: undefined,
440
449
  last_check_time: input.last_check_time || undefined,
441
- // Memory 近期记忆过期 (v1.11.0)
442
- expiresAt: input.expiresAt || (normalizedType === 'recently_memory' ? MemoryStore.calcRecentlyExpiresAt() : undefined),
443
- recall_status: 'normal',
444
- // Memory 短期记忆 TODO 状态 (v1.12.0)
445
- todo_status: normalizedType === 'task_list' ? 'pending' : undefined,
450
+ // Memory 近期记忆过期 (v1.11.0, v1.19.0 扩展)
451
+ // v1.19.0: recently_memory 行为对齐 agent_memory,同样默认 12h 后过期
452
+ expiresAt: input.expiresAt || (MemoryStore.isExpirableType(normalizedType) ? MemoryStore.calcAgentMemoryExpiresAt() : undefined),
453
+ // v1.24.0: update_status / recall_status 合并为 memory_status
454
+ memory_status: 'normal',
446
455
  };
447
456
  data.by_uri[normalized.uri] = record;
448
457
  await this.saveData(data);
@@ -493,6 +502,22 @@ export class MemoryStore {
493
502
  const contentChanged = nextContent !== existing.content ||
494
503
  (typeof input.title === 'string' && input.title !== existing.title);
495
504
  const nowIso = this.nowIso();
505
+ // agent_memory / recently_memory 续期:调用 update_memory 即续期 TTL ×2
506
+ // (基于现有 expiresAt 反推旧 TTL,再翻倍)。无现有 expiresAt 时按初始 12h 处理。
507
+ // v1.19.0: recently_memory 行为对齐 agent_memory
508
+ // v1.22.0: 无内容更新时也续期——调用 update_memory 本身即表示"这条记忆还有价值",
509
+ // 用于过期/文件变更场景下内容不需要改但需要续期避免被清理。
510
+ let nextExpiresAt = existing.expiresAt;
511
+ if (MemoryStore.isExpirableType(existing.memory_type)) {
512
+ const oldExpiresAt = existing.expiresAt ? new Date(existing.expiresAt) : null;
513
+ const oldTtlMs = oldExpiresAt
514
+ ? Math.max(12 * 60 * 60 * 1000, oldExpiresAt.getTime() - new Date(existing.createdAt).getTime())
515
+ : 12 * 60 * 60 * 1000;
516
+ nextExpiresAt = new Date(Date.now() + oldTtlMs * 2).toISOString();
517
+ }
518
+ if (input.expiresAt !== undefined) {
519
+ nextExpiresAt = input.expiresAt;
520
+ }
496
521
  const updated = {
497
522
  ...existing,
498
523
  content: nextContent,
@@ -506,24 +531,21 @@ export class MemoryStore {
506
531
  file_md5_map: input.file_md5_map !== undefined
507
532
  ? input.file_md5_map
508
533
  : (input.bound_files !== undefined ? undefined : existing.file_md5_map),
509
- // 当显式传入 update_status 时使用传入值(如标记 updating),否则重置为 normal
510
- update_status: input.update_status !== undefined ? input.update_status : 'normal',
511
- updating_agent_id: input.update_status !== undefined
534
+ // v1.24.0: memory_status 合并了原 update_status recall_status
535
+ // 语义:显式传入则使用传入值;未传入时,若原状态为 updating 则重置为 normal(释放 claim),
536
+ // 其他状态(normal/recalling)保留原值。
537
+ memory_status: input.memory_status !== undefined
538
+ ? input.memory_status
539
+ : (existing.memory_status === 'updating' ? 'normal' : (existing.memory_status || 'normal')),
540
+ updating_agent_id: input.memory_status !== undefined
512
541
  ? (input.updating_agent_id || undefined)
513
- : undefined,
542
+ : (existing.memory_status === 'updating' ? undefined : existing.updating_agent_id),
514
543
  last_check_time: input.last_check_time !== undefined
515
544
  ? input.last_check_time
516
545
  : existing.last_check_time,
517
- // Memory 近期记忆过期 (v1.11.0):
518
- // recently_memory 内容更新时自动续期(延长24小时过期时间),
519
- // 或显式传入 expiresAt 时使用传入值
520
- expiresAt: (existing.memory_type === 'recently_memory' && contentChanged)
521
- ? MemoryStore.calcRecentlyExpiresAt()
522
- : (input.memory_type !== undefined ? existing.expiresAt : existing.expiresAt),
523
- // recall_status: 显式传入则使用传入值,否则保留现有值
524
- recall_status: input.recall_status !== undefined ? input.recall_status : existing.recall_status,
525
- // todo_status: 显式传入则使用传入值,否则保留现有值
526
- todo_status: input.todo_status !== undefined ? input.todo_status : existing.todo_status,
546
+ // Memory 近期记忆过期 (v1.11.0, v1.19.0 扩展):
547
+ // agent_memory / recently_memory 内容更新时 TTL ×2 续期,或显式传入 expiresAt 时使用传入值
548
+ expiresAt: nextExpiresAt,
527
549
  };
528
550
  data.by_uri[normalized.uri] = updated;
529
551
  await this.saveData(data);
@@ -559,15 +581,16 @@ export class MemoryStore {
559
581
  return data;
560
582
  }
561
583
  /**
562
- * 列出已过期的 recently_memory 记录(recall_status 为 normal 或 recalling)。
563
- * 主流程:读取所有数据 -> 筛选 recently_memory 类型 -> 检查 expiresAt 是否已过期。
584
+ * 列出已过期的 agent_memory / recently_memory 记录(memory_status 为 normal 或 recalling)。
585
+ * 主流程:读取所有数据 -> 筛选 agent_memory / recently_memory 类型 -> 检查 expiresAt 是否已过期。
586
+ * v1.19.0: recently_memory 纳入过期回忆流程,行为对齐 agent_memory。
564
587
  */
565
588
  async listExpiredRecentlyMemories() {
566
589
  const data = await this.loadData();
567
590
  const now = new Date();
568
591
  const results = [];
569
592
  for (const record of Object.values(data.by_uri)) {
570
- if (record.memory_type !== 'recently_memory')
593
+ if (record.memory_type !== 'agent_memory' && record.memory_type !== 'recently_memory')
571
594
  continue;
572
595
  if (!record.expiresAt)
573
596
  continue; // 无过期时间视为永不过期
@@ -667,10 +690,10 @@ export class MemoryStore {
667
690
  };
668
691
  }
669
692
  async listByType(memory_type) {
670
- // session_context 和 memory 类型可以通过 listByType 列出
671
- // memory 类型原本设计为仅通过 search 检索,但文件变更检测(buildMemoryFileChangeNotification)
693
+ // session_context 和 project_memory 类型可以通过 listByType 列出
694
+ // project_memory 类型原本设计为仅通过 search 检索,但文件变更检测(buildMemoryFileChangeNotification)
672
695
  // 需要枚举所有永久记忆以检查绑定文件的 MD5 变化,因此放开此限制。
673
- const allowedTypes = (memory_type === 'session_context' || memory_type === 'memory') ? ALL_MEMORY_TYPES : LISTABLE_MEMORY_TYPES;
696
+ const allowedTypes = (memory_type === 'session_context' || memory_type === 'project_memory') ? ALL_MEMORY_TYPES : LISTABLE_MEMORY_TYPES;
674
697
  const listType = this.normalizeMemoryType(memory_type, allowedTypes);
675
698
  const data = await this.loadData();
676
699
  const seenById = new Set();
@@ -688,29 +711,6 @@ export class MemoryStore {
688
711
  list.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
689
712
  return list;
690
713
  }
691
- async archiveRecentlyMemory(uri) {
692
- const record = await this.readMemory({ uri });
693
- if (!record) {
694
- throw new Error(`Memory not found: ${uri}`);
695
- }
696
- if (record.memory_type !== 'recently_memory') {
697
- throw new Error('recently_memory_archive only supports recently_memory type');
698
- }
699
- const data = await this.loadData();
700
- const existing = data.by_uri[record.uri];
701
- if (!existing) {
702
- throw new Error(`Memory not found: ${uri}`);
703
- }
704
- const archived = {
705
- ...existing,
706
- memory_type: 'memory',
707
- updatedAt: this.nowIso(),
708
- version: existing.version + 1
709
- };
710
- data.by_uri[record.uri] = archived;
711
- await this.saveData(data);
712
- return archived;
713
- }
714
714
  /**
715
715
  * 按文件查询绑定了该文件的所有 Memory
716
716
  * Memory 增强功能 (v1.6.0)
@@ -748,76 +748,10 @@ export class MemoryStore {
748
748
  return list;
749
749
  }
750
750
  /**
751
- * TODO 状态列出 task_list 记忆。
752
- * 主流程:读取所有数据 -> 筛选 task_list 类型 -> 按 todo_status 过滤。
753
- */
754
- async listByTodoStatus(todo_status) {
755
- const data = await this.loadData();
756
- const results = [];
757
- for (const record of Object.values(data.by_uri)) {
758
- if (record.memory_type !== 'task_list')
759
- continue;
760
- if ((record.todo_status || 'pending') !== todo_status)
761
- continue;
762
- results.push(record);
763
- }
764
- return results.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
765
- }
766
- /**
767
- * 标记指定 task_list 短期记忆为已完成,并检查是否全部已完成以触发自动清理。
768
- * 主流程:
769
- * 1. 按 uri 查找 task_list 记录 -> 将 todo_status 设为 'completed'
770
- * 2. 检查该 Agent 所有 task_list 是否均为 completed
771
- * 3. 若全部已完成,删除所有 completed 项
772
- */
773
- async todoCompleted(uri) {
774
- const normalized = this.normalizeUri(uri);
775
- const data = await this.loadData();
776
- const existing = data.by_uri[normalized.uri];
777
- if (!existing) {
778
- throw new Error(`Memory not found: ${normalized.uri}`);
779
- }
780
- if (existing.memory_type !== 'task_list') {
781
- throw new Error(`todo_completed only supports task_list type, actual: ${existing.memory_type}`);
782
- }
783
- // 1. 标记为 completed
784
- existing.todo_status = 'completed';
785
- existing.memory_status = 'completed';
786
- existing.updatedAt = this.nowIso();
787
- existing.version = (existing.version || 1) + 1;
788
- // 2. 检查是否还有 pending 项
789
- const hasPending = Object.values(data.by_uri).some(r => r.memory_type === 'task_list' && (r.todo_status || 'pending') === 'pending');
790
- // 3. 若全部已完成,删除所有 completed 项
791
- let cleanedCount = 0;
792
- const cleanedUris = [];
793
- if (!hasPending) {
794
- const completedUris = [];
795
- for (const [memUri, record] of Object.entries(data.by_uri)) {
796
- if (record.memory_type === 'task_list' && (record.todo_status || 'pending') === 'completed') {
797
- completedUris.push(memUri);
798
- }
799
- }
800
- for (const memUri of completedUris) {
801
- delete data.by_uri[memUri];
802
- cleanedUris.push(memUri);
803
- cleanedCount++;
804
- }
805
- }
806
- // 仅在非全清理时保存中间状态(全清理时上面已经改了 data)
807
- await this.saveData(data);
808
- return {
809
- completed: true,
810
- uri: normalized.uri,
811
- allCleaned: cleanedCount > 0,
812
- cleanedCount,
813
- cleanedUris,
814
- };
815
- }
816
- /**
817
- * 标记已过期的 recently_memory 记录为 recalling 状态 (v1.13.0)。
751
+ * 标记已过期的 agent_memory 记录为 recalling 状态 (v1.13.0)。
818
752
  * 主流程:复用 listExpiredRecentlyMemories 找出过期记录 ->
819
753
  * 若传入 uris 则只标记指定 URI 的过期记录(分批处理用) ->
820
- * 逐条更新 recall_status='recalling'。
754
+ * 逐条更新 memory_status='recalling'。
821
755
  * @param uris 可选,指定要标记的 URI 列表;不传时标记所有过期记忆
822
756
  */
823
757
  async markExpiredMemoriesRecalling(uris) {
@@ -839,7 +773,7 @@ export class MemoryStore {
839
773
  const existing = data.by_uri[record.uri];
840
774
  if (!existing)
841
775
  continue;
842
- existing.recall_status = 'recalling';
776
+ existing.memory_status = 'recalling';
843
777
  existing.updatedAt = now;
844
778
  existing.version = (existing.version || 1) + 1;
845
779
  markedUris.push(record.uri);
@@ -850,17 +784,18 @@ export class MemoryStore {
850
784
  return { marked: markedUris.length, uris: markedUris };
851
785
  }
852
786
  /**
853
- * 清理所有「recall_status='recalling' + 已过期」的 recently_memory 记录 (v1.13.0)。
854
- * 主流程:遍历所有数据 -> 筛选 recently_memory 类型 + recall_status='recalling' + expiresAt 已过期 -> 删除。
787
+ * 清理所有「memory_status='recalling' + 已过期」的 agent_memory / recently_memory 记录 (v1.13.0, v1.19.0 扩展)。
788
+ * 主流程:遍历所有数据 -> 筛选可过期类型 + memory_status='recalling' + expiresAt 已过期 -> 删除。
789
+ * v1.19.0: recently_memory 纳入清理范围。
855
790
  */
856
791
  async clearRecallingExpiredMemories() {
857
792
  const data = await this.loadData();
858
793
  const now = new Date();
859
794
  const urisToDelete = [];
860
795
  for (const record of Object.values(data.by_uri)) {
861
- if (record.memory_type !== 'recently_memory')
796
+ if (!MemoryStore.isExpirableType(record.memory_type))
862
797
  continue;
863
- if (record.recall_status !== 'recalling')
798
+ if (record.memory_status !== 'recalling')
864
799
  continue;
865
800
  if (!record.expiresAt)
866
801
  continue;
@@ -877,5 +812,22 @@ export class MemoryStore {
877
812
  await this.saveData(data);
878
813
  return { deleted: urisToDelete.length, uris: urisToDelete };
879
814
  }
815
+ // ========== Memory 租约管理 (v1.21.0) ==========
816
+ // 本地文件存储不支持租约(单实例无并发场景);调用时抛异常,由 McpServer 降级到本地直接标记。
817
+ async claimMemoryUpdate(_uris, _leaseMinutes, _memoryType) {
818
+ throw new Error("claimMemoryUpdate not supported in local MemoryStore");
819
+ }
820
+ async renewMemoryLease(_leaseMinutes) {
821
+ throw new Error("renewMemoryLease not supported in local MemoryStore");
822
+ }
823
+ async releaseMemoryClaim(_uri) {
824
+ throw new Error("releaseMemoryClaim not supported in local MemoryStore");
825
+ }
826
+ async releaseAllMemoryClaims() {
827
+ throw new Error("releaseAllMemoryClaims not supported in local MemoryStore");
828
+ }
829
+ async getMyClaimedUris() {
830
+ throw new Error("getMyClaimedUris not supported in local MemoryStore");
831
+ }
880
832
  }
881
833
  //# sourceMappingURL=memory-store.js.map