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.
- package/dist/adapter/AcodeSdkAdapter.d.ts +66 -5
- package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/AcodeSdkAdapter.js +771 -69
- package/dist/adapter/ClaudeSdkAdapter.d.ts +6 -0
- package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/ClaudeSdkAdapter.js +24 -1
- package/dist/adapter/OpencodeSdkAdapter.d.ts +19 -0
- package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/OpencodeSdkAdapter.js +62 -0
- package/dist/adapter/idle-poll-loop.d.ts +2 -1
- package/dist/adapter/idle-poll-loop.d.ts.map +1 -1
- package/dist/adapter/types.d.ts +86 -9
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/adapter/types.js +15 -5
- package/dist/index.js +15 -0
- package/dist/routes/acode-todos.d.ts +11 -0
- package/dist/routes/acode-todos.d.ts.map +1 -0
- package/dist/routes/acode-todos.js +75 -0
- package/dist/routes/ai-sources.js +4 -1
- package/dist/routes/dashboard.d.ts.map +1 -1
- package/dist/routes/dashboard.js +1 -1
- package/dist/routes/memory.d.ts +1 -1
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/memory.js +3 -3
- package/dist/routes/pty.d.ts.map +1 -1
- package/dist/routes/pty.js +9 -0
- package/dist/routes/runtime-binding.d.ts.map +1 -1
- package/dist/routes/runtime-binding.js +6 -3
- package/dist/routes/sessions.js +89 -4
- package/dist/routes/sub-agents.d.ts +14 -0
- package/dist/routes/sub-agents.d.ts.map +1 -0
- package/dist/routes/sub-agents.js +267 -0
- package/dist/routes/terminal.d.ts +12 -1
- package/dist/routes/terminal.d.ts.map +1 -1
- package/dist/routes/terminal.js +326 -24
- package/dist/services/acode-package.d.ts +8 -1
- package/dist/services/acode-package.d.ts.map +1 -1
- package/dist/services/acode-package.js +33 -4
- package/dist/services/agent-event-store.d.ts +1 -0
- package/dist/services/agent-event-store.d.ts.map +1 -1
- package/dist/services/aws-client-agent-mcp.d.ts.map +1 -1
- package/dist/services/aws-client-agent-mcp.js +11 -4
- package/dist/services/event-delta-pusher.js +4 -4
- package/dist/services/fileSnapshotStore.js +1 -1
- package/dist/services/legacy-path-migration.d.ts +3 -0
- package/dist/services/legacy-path-migration.d.ts.map +1 -0
- package/dist/services/legacy-path-migration.js +66 -0
- package/dist/services/lifecycle-state.d.ts.map +1 -1
- package/dist/services/lifecycle-state.js +1 -1
- package/dist/services/runtime-binding.d.ts +5 -0
- package/dist/services/runtime-binding.d.ts.map +1 -1
- package/dist/services/runtime-binding.js +33 -1
- package/dist/services/session-output.d.ts +10 -1
- package/dist/services/session-output.d.ts.map +1 -1
- package/dist/services/session-output.js +54 -4
- package/dist/services/sub-agent-manager-instance.d.ts +4 -0
- package/dist/services/sub-agent-manager-instance.d.ts.map +1 -0
- package/dist/services/sub-agent-manager-instance.js +12 -0
- package/dist/services/workspace-files.d.ts +1 -0
- package/dist/services/workspace-files.d.ts.map +1 -1
- package/dist/services/workspace-files.js +57 -1
- package/package/acode/dist/ask-user-question-tool.d.ts +47 -0
- package/package/acode/dist/ask-user-question-tool.d.ts.map +1 -0
- package/package/acode/dist/ask-user-question-tool.js +233 -0
- package/package/acode/dist/built-in-file-tools.d.ts +2 -0
- package/package/acode/dist/built-in-file-tools.d.ts.map +1 -1
- package/package/acode/dist/built-in-file-tools.js +504 -3
- package/package/acode/dist/compaction.d.ts +242 -0
- package/package/acode/dist/compaction.d.ts.map +1 -0
- package/package/acode/dist/compaction.js +919 -0
- package/package/acode/dist/config.d.ts +6 -1
- package/package/acode/dist/config.d.ts.map +1 -1
- package/package/acode/dist/config.js +27 -2
- package/package/acode/dist/index.d.ts +4 -0
- package/package/acode/dist/index.d.ts.map +1 -1
- package/package/acode/dist/index.js +4 -0
- package/package/acode/dist/runtime.d.ts +257 -0
- package/package/acode/dist/runtime.d.ts.map +1 -1
- package/package/acode/dist/runtime.js +1843 -191
- package/package/acode/dist/skill-tool.d.ts +30 -0
- package/package/acode/dist/skill-tool.d.ts.map +1 -0
- package/package/acode/dist/skill-tool.js +174 -0
- package/package/acode/dist/sub-agent-manager.d.ts +264 -0
- package/package/acode/dist/sub-agent-manager.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-manager.js +825 -0
- package/package/acode/dist/sub-agent-store.d.ts +40 -0
- package/package/acode/dist/sub-agent-store.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-store.js +164 -0
- package/package/acode/dist/sub-agent-tools.d.ts +72 -0
- package/package/acode/dist/sub-agent-tools.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-tools.js +429 -0
- package/package/acode/dist/sub-agent-types.d.ts +85 -0
- package/package/acode/dist/sub-agent-types.d.ts.map +1 -0
- package/package/acode/dist/sub-agent-types.js +8 -0
- package/package/acode/dist/todo-store.d.ts +42 -0
- package/package/acode/dist/todo-store.d.ts.map +1 -0
- package/package/acode/dist/todo-store.js +68 -0
- package/package/acode/dist/todo-tool.d.ts +6 -0
- package/package/acode/dist/todo-tool.d.ts.map +1 -0
- package/package/acode/dist/todo-tool.js +138 -0
- package/package/acode/dist/types.d.ts +41 -1
- package/package/acode/dist/types.d.ts.map +1 -1
- package/package/acode/package.json +13 -2
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +9 -0
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js +69 -10
- package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/config.js +4 -0
- package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/constants.js +3 -1
- package/package/aws-client-agent-mcp/dist/constants.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts +4 -1
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.js +6 -2
- package/package/aws-client-agent-mcp/dist/context-manager.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.js +5 -3
- package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +5 -0
- package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.js +15 -1
- package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +162 -71
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +1007 -504
- package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +371 -253
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +6 -17
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +20 -75
- package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +45 -45
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.js +114 -162
- package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.js +175 -164
- package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +3 -9
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -58
- package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +40 -9
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.js +123 -23
- package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +13 -13
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.js +23 -16
- package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js +8 -5
- package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.test.js +93 -0
- package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +12 -25
- package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +34 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js +146 -18
- package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
- package/package.json +17 -7
- package/dist/adapter/AcodeSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/AcodeSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/AcodeSdkAdapter.test.js +0 -2000
- package/dist/adapter/AdapterRegistry.test.d.ts +0 -5
- package/dist/adapter/AdapterRegistry.test.d.ts.map +0 -1
- package/dist/adapter/AdapterRegistry.test.js +0 -118
- package/dist/adapter/ClaudeSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/ClaudeSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/ClaudeSdkAdapter.test.js +0 -311
- package/dist/adapter/CodexSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/CodexSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/CodexSdkAdapter.test.js +0 -270
- package/dist/adapter/OpencodeSdkAdapter.test.d.ts +0 -2
- package/dist/adapter/OpencodeSdkAdapter.test.d.ts.map +0 -1
- package/dist/adapter/OpencodeSdkAdapter.test.js +0 -158
- package/dist/adapter/acode-tool-names.test.d.ts +0 -2
- package/dist/adapter/acode-tool-names.test.d.ts.map +0 -1
- package/dist/adapter/acode-tool-names.test.js +0 -28
- package/dist/adapter/adapter.test.d.ts +0 -5
- package/dist/adapter/adapter.test.d.ts.map +0 -1
- package/dist/adapter/adapter.test.js +0 -180
- package/dist/adapter/idle-poll-loop.test.d.ts +0 -2
- package/dist/adapter/idle-poll-loop.test.d.ts.map +0 -1
- package/dist/adapter/idle-poll-loop.test.js +0 -85
- package/dist/adapter/types.test.d.ts +0 -2
- package/dist/adapter/types.test.d.ts.map +0 -1
- package/dist/adapter/types.test.js +0 -50
- package/dist/adapters/cc-switch/mcp-acode.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-acode.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-acode.test.js +0 -80
- package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-claudecode.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-claudecode.test.js +0 -75
- package/dist/adapters/cc-switch/mcp-codex.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-codex.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-codex.test.js +0 -126
- package/dist/adapters/cc-switch/mcp-opencode.test.d.ts +0 -2
- package/dist/adapters/cc-switch/mcp-opencode.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-opencode.test.js +0 -62
- package/dist/adapters/cc-switch/skill-directory.test.d.ts +0 -2
- package/dist/adapters/cc-switch/skill-directory.test.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-directory.test.js +0 -74
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -107
- package/dist/routes/ai-sources.test.d.ts +0 -2
- package/dist/routes/ai-sources.test.d.ts.map +0 -1
- package/dist/routes/ai-sources.test.js +0 -169
- package/dist/routes/file-browser.test.d.ts +0 -5
- package/dist/routes/file-browser.test.d.ts.map +0 -1
- package/dist/routes/file-browser.test.js +0 -155
- package/dist/routes/git.test.d.ts +0 -2
- package/dist/routes/git.test.d.ts.map +0 -1
- package/dist/routes/git.test.js +0 -330
- package/dist/routes/instance.test.d.ts +0 -5
- package/dist/routes/instance.test.d.ts.map +0 -1
- package/dist/routes/instance.test.js +0 -389
- package/dist/routes/mcp.test.d.ts +0 -5
- package/dist/routes/mcp.test.d.ts.map +0 -1
- package/dist/routes/mcp.test.js +0 -92
- package/dist/routes/memory-route-wiring.test.d.ts +0 -2
- package/dist/routes/memory-route-wiring.test.d.ts.map +0 -1
- package/dist/routes/memory-route-wiring.test.js +0 -15
- package/dist/routes/memory.test.d.ts +0 -2
- package/dist/routes/memory.test.d.ts.map +0 -1
- package/dist/routes/memory.test.js +0 -177
- package/dist/routes/properties.test.d.ts +0 -5
- package/dist/routes/properties.test.d.ts.map +0 -1
- package/dist/routes/properties.test.js +0 -72
- package/dist/routes/pty.test.d.ts +0 -2
- package/dist/routes/pty.test.d.ts.map +0 -1
- package/dist/routes/pty.test.js +0 -82
- package/dist/routes/runtime-binding.test.d.ts +0 -2
- package/dist/routes/runtime-binding.test.d.ts.map +0 -1
- package/dist/routes/runtime-binding.test.js +0 -32
- package/dist/routes/sessions.test.d.ts +0 -5
- package/dist/routes/sessions.test.d.ts.map +0 -1
- package/dist/routes/sessions.test.js +0 -86
- package/dist/routes/skills.test.d.ts +0 -5
- package/dist/routes/skills.test.d.ts.map +0 -1
- package/dist/routes/skills.test.js +0 -50
- package/dist/routes/system-metrics.test.d.ts +0 -2
- package/dist/routes/system-metrics.test.d.ts.map +0 -1
- package/dist/routes/system-metrics.test.js +0 -16
- package/dist/routes/terminal.stop-options.test.d.ts +0 -2
- package/dist/routes/terminal.stop-options.test.d.ts.map +0 -1
- package/dist/routes/terminal.stop-options.test.js +0 -39
- package/dist/routes/terminal.test.d.ts +0 -2
- package/dist/routes/terminal.test.d.ts.map +0 -1
- package/dist/routes/terminal.test.js +0 -746
- package/dist/routes/yml.test.d.ts +0 -5
- package/dist/routes/yml.test.d.ts.map +0 -1
- package/dist/routes/yml.test.js +0 -58
- package/dist/services/ai-source-apply.test.d.ts +0 -2
- package/dist/services/ai-source-apply.test.d.ts.map +0 -1
- package/dist/services/ai-source-apply.test.js +0 -138
- package/dist/services/auto-register.test.d.ts +0 -2
- package/dist/services/auto-register.test.d.ts.map +0 -1
- package/dist/services/auto-register.test.js +0 -184
- package/dist/services/aws-client-agent-mcp.test.d.ts +0 -2
- package/dist/services/aws-client-agent-mcp.test.d.ts.map +0 -1
- package/dist/services/aws-client-agent-mcp.test.js +0 -242
- package/dist/services/bridge-package-publish-hooks.test.d.ts +0 -2
- package/dist/services/bridge-package-publish-hooks.test.d.ts.map +0 -1
- package/dist/services/bridge-package-publish-hooks.test.js +0 -136
- package/dist/services/cc-switch-discovery.test.d.ts +0 -2
- package/dist/services/cc-switch-discovery.test.d.ts.map +0 -1
- package/dist/services/cc-switch-discovery.test.js +0 -56
- package/dist/services/cli-commands.test.d.ts +0 -2
- package/dist/services/cli-commands.test.d.ts.map +0 -1
- package/dist/services/cli-commands.test.js +0 -230
- package/dist/services/instance-init-service.test.d.ts +0 -2
- package/dist/services/instance-init-service.test.d.ts.map +0 -1
- package/dist/services/instance-init-service.test.js +0 -140
- package/dist/services/instance-state.test.d.ts +0 -2
- package/dist/services/instance-state.test.d.ts.map +0 -1
- package/dist/services/instance-state.test.js +0 -245
- package/dist/services/mcp-launch-binding-queue.test.d.ts +0 -2
- package/dist/services/mcp-launch-binding-queue.test.d.ts.map +0 -1
- package/dist/services/mcp-launch-binding-queue.test.js +0 -181
- package/dist/services/runtime-binding.test.d.ts +0 -2
- package/dist/services/runtime-binding.test.d.ts.map +0 -1
- package/dist/services/runtime-binding.test.js +0 -78
- package/dist/services/runtime-lifecycle-policy.test.d.ts +0 -2
- package/dist/services/runtime-lifecycle-policy.test.d.ts.map +0 -1
- package/dist/services/runtime-lifecycle-policy.test.js +0 -41
- package/dist/services/session-output.test.d.ts +0 -5
- package/dist/services/session-output.test.d.ts.map +0 -1
- package/dist/services/session-output.test.js +0 -177
- package/dist/services/startup-config-wizard.test.d.ts +0 -2
- package/dist/services/startup-config-wizard.test.d.ts.map +0 -1
- package/dist/services/startup-config-wizard.test.js +0 -184
- package/dist/services/terminal-persistence.test.d.ts +0 -5
- package/dist/services/terminal-persistence.test.d.ts.map +0 -1
- package/dist/services/terminal-persistence.test.js +0 -159
- package/dist/services/tool-installer.test.d.ts +0 -2
- package/dist/services/tool-installer.test.d.ts.map +0 -1
- package/dist/services/tool-installer.test.js +0 -225
- package/dist/services/workspace-files.test.d.ts +0 -2
- package/dist/services/workspace-files.test.d.ts.map +0 -1
- package/dist/services/workspace-files.test.js +0 -648
- package/dist/services/workspace-watch.test.d.ts +0 -2
- package/dist/services/workspace-watch.test.d.ts.map +0 -1
- package/dist/services/workspace-watch.test.js +0 -38
- package/dist/utils/file-utils.test.d.ts +0 -2
- package/dist/utils/file-utils.test.d.ts.map +0 -1
- package/dist/utils/file-utils.test.js +0 -244
- package/dist/utils/logger.test.d.ts +0 -2
- package/dist/utils/logger.test.d.ts.map +0 -1
- package/dist/utils/logger.test.js +0 -93
- package/dist/utils/sdk-package-loader.test.d.ts +0 -2
- package/dist/utils/sdk-package-loader.test.d.ts.map +0 -1
- package/dist/utils/sdk-package-loader.test.js +0 -84
- package/dist/utils/validation.test.d.ts +0 -2
- package/dist/utils/validation.test.d.ts.map +0 -1
- package/dist/utils/validation.test.js +0 -88
- package/dist/utils/yaml-utils.test.d.ts +0 -2
- package/dist/utils/yaml-utils.test.d.ts.map +0 -1
- package/dist/utils/yaml-utils.test.js +0 -363
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type MemoryType = '
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
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
|
-
* 主流程:仅限制
|
|
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 过期时间(当前时间 +
|
|
200
|
+
* 计算 agent_memory / recently_memory 过期时间(当前时间 + 12 小时,初始 TTL)。
|
|
202
201
|
*/
|
|
203
|
-
private static
|
|
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 记录(
|
|
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
|
-
*
|
|
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
|
-
* 逐条更新
|
|
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
|
-
* 清理所有「
|
|
266
|
-
* 主流程:遍历所有数据 ->
|
|
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":"AAAA,MAAM,MAAM,UAAU,GAAG,
|
|
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 = ['
|
|
2
|
-
const LISTABLE_MEMORY_TYPES = ['
|
|
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 || '
|
|
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
|
-
...
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
258
|
+
project_memory: {
|
|
241
259
|
count: 0,
|
|
242
|
-
limit:
|
|
243
|
-
hardLimit:
|
|
260
|
+
limit: LISTABLE_MEMORY_TYPE_LIMIT,
|
|
261
|
+
hardLimit: LISTABLE_MEMORY_TYPE_HARD_LIMIT,
|
|
244
262
|
exceeded: false,
|
|
245
263
|
hardExceeded: false,
|
|
246
|
-
listable:
|
|
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
|
-
* 主流程:仅限制
|
|
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:
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
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:
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
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 过期时间(当前时间 +
|
|
409
|
+
* 计算 agent_memory / recently_memory 过期时间(当前时间 + 12 小时,初始 TTL)。
|
|
408
410
|
*/
|
|
409
|
-
static
|
|
410
|
-
const expires = new Date(Date.now() +
|
|
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
|
-
|
|
443
|
-
|
|
444
|
-
//
|
|
445
|
-
|
|
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
|
-
//
|
|
510
|
-
|
|
511
|
-
|
|
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
|
|
519
|
-
|
|
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 记录(
|
|
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 和
|
|
671
|
-
//
|
|
693
|
+
// session_context 和 project_memory 类型可以通过 listByType 列出
|
|
694
|
+
// project_memory 类型原本设计为仅通过 search 检索,但文件变更检测(buildMemoryFileChangeNotification)
|
|
672
695
|
// 需要枚举所有永久记忆以检查绑定文件的 MD5 变化,因此放开此限制。
|
|
673
|
-
const allowedTypes = (memory_type === 'session_context' || memory_type === '
|
|
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
|
-
*
|
|
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
|
-
* 逐条更新
|
|
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.
|
|
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
|
-
* 清理所有「
|
|
854
|
-
* 主流程:遍历所有数据 ->
|
|
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
|
|
796
|
+
if (!MemoryStore.isExpirableType(record.memory_type))
|
|
862
797
|
continue;
|
|
863
|
-
if (record.
|
|
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
|