@orion-agents/orion-code 0.1.2 → 0.1.4-2
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/README.md +98 -4
- package/README.zh-CN.md +116 -5
- package/dist/agents/coder.d.ts.map +1 -1
- package/dist/agents/coder.js.map +1 -1
- package/dist/agents/fork.d.ts +12 -4
- package/dist/agents/fork.d.ts.map +1 -1
- package/dist/agents/fork.js +28 -32
- package/dist/agents/fork.js.map +1 -1
- package/dist/agents/leader.d.ts.map +1 -1
- package/dist/agents/leader.js.map +1 -1
- package/dist/agents/worker-pool.d.ts.map +1 -1
- package/dist/agents/worker-pool.js +38 -29
- package/dist/agents/worker-pool.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +0 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/context-commands.d.ts +4 -0
- package/dist/commands/context-commands.d.ts.map +1 -0
- package/dist/commands/context-commands.js +52 -0
- package/dist/commands/context-commands.js.map +1 -0
- package/dist/commands/context-tool-command-handlers.d.ts +13 -0
- package/dist/commands/context-tool-command-handlers.d.ts.map +1 -0
- package/dist/commands/context-tool-command-handlers.js +573 -0
- package/dist/commands/context-tool-command-handlers.js.map +1 -0
- package/dist/commands/core-command-handlers.d.ts +12 -0
- package/dist/commands/core-command-handlers.d.ts.map +1 -0
- package/dist/commands/core-command-handlers.js +798 -0
- package/dist/commands/core-command-handlers.js.map +1 -0
- package/dist/commands/diagnostic-command-handlers.d.ts +14 -0
- package/dist/commands/diagnostic-command-handlers.d.ts.map +1 -0
- package/dist/commands/diagnostic-command-handlers.js +1043 -0
- package/dist/commands/diagnostic-command-handlers.js.map +1 -0
- package/dist/commands/diagnostic-commands.d.ts +4 -0
- package/dist/commands/diagnostic-commands.d.ts.map +1 -0
- package/dist/commands/diagnostic-commands.js +132 -0
- package/dist/commands/diagnostic-commands.js.map +1 -0
- package/dist/commands/index.d.ts +7 -8
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +34 -3448
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/legacy-commands.d.ts +4 -0
- package/dist/commands/legacy-commands.d.ts.map +1 -0
- package/dist/commands/legacy-commands.js +44 -0
- package/dist/commands/legacy-commands.js.map +1 -0
- package/dist/commands/model-command-handlers.d.ts +13 -0
- package/dist/commands/model-command-handlers.d.ts.map +1 -0
- package/dist/commands/model-command-handlers.js +314 -0
- package/dist/commands/model-command-handlers.js.map +1 -0
- package/dist/commands/model-commands.d.ts +4 -0
- package/dist/commands/model-commands.d.ts.map +1 -0
- package/dist/commands/model-commands.js +52 -0
- package/dist/commands/model-commands.js.map +1 -0
- package/dist/commands/session-command-handlers.d.ts +9 -0
- package/dist/commands/session-command-handlers.d.ts.map +1 -0
- package/dist/commands/session-command-handlers.js +566 -0
- package/dist/commands/session-command-handlers.js.map +1 -0
- package/dist/commands/session-commands.d.ts +4 -0
- package/dist/commands/session-commands.d.ts.map +1 -0
- package/dist/commands/session-commands.js +78 -0
- package/dist/commands/session-commands.js.map +1 -0
- package/dist/commands/system-commands.d.ts +4 -0
- package/dist/commands/system-commands.d.ts.map +1 -0
- package/dist/commands/system-commands.js +92 -0
- package/dist/commands/system-commands.js.map +1 -0
- package/dist/commands/target-command.d.ts.map +1 -1
- package/dist/commands/target-command.js +29 -2
- package/dist/commands/target-command.js.map +1 -1
- package/dist/commands/tool-commands.d.ts +4 -0
- package/dist/commands/tool-commands.d.ts.map +1 -0
- package/dist/commands/tool-commands.js +49 -0
- package/dist/commands/tool-commands.js.map +1 -0
- package/dist/commands/types.d.ts +7 -5
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/workflow-command-handlers.d.ts +7 -0
- package/dist/commands/workflow-command-handlers.d.ts.map +1 -0
- package/dist/commands/workflow-command-handlers.js +35 -0
- package/dist/commands/workflow-command-handlers.js.map +1 -0
- package/dist/commands/workflow-commands.d.ts +4 -0
- package/dist/commands/workflow-commands.d.ts.map +1 -0
- package/dist/commands/workflow-commands.js +92 -0
- package/dist/commands/workflow-commands.js.map +1 -0
- package/dist/core/checkpoint.d.ts +12 -4
- package/dist/core/checkpoint.d.ts.map +1 -1
- package/dist/core/checkpoint.js +114 -28
- package/dist/core/checkpoint.js.map +1 -1
- package/dist/core/cost-tracker.d.ts +5 -1
- package/dist/core/cost-tracker.d.ts.map +1 -1
- package/dist/core/cost-tracker.js +12 -2
- package/dist/core/cost-tracker.js.map +1 -1
- package/dist/core/warn-dedup.d.ts +3 -0
- package/dist/core/warn-dedup.d.ts.map +1 -1
- package/dist/core/warn-dedup.js +6 -6
- package/dist/core/warn-dedup.js.map +1 -1
- package/dist/framework/index.d.ts +1 -1
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/prompt.d.ts +2 -2
- package/dist/framework/query.d.ts +5 -2
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +58 -10
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/store.d.ts +4 -4
- package/dist/framework/tool-scheduler.d.ts +67 -4
- package/dist/framework/tool-scheduler.d.ts.map +1 -1
- package/dist/framework/tool-scheduler.js +271 -50
- package/dist/framework/tool-scheduler.js.map +1 -1
- package/dist/framework/tool.d.ts +36 -2
- package/dist/framework/tool.d.ts.map +1 -1
- package/dist/framework/tool.js +29 -1
- package/dist/framework/tool.js.map +1 -1
- package/dist/harness/assembler.d.ts.map +1 -1
- package/dist/harness/assembler.js +4 -2
- package/dist/harness/assembler.js.map +1 -1
- package/dist/harness/evidence.d.ts.map +1 -1
- package/dist/harness/evidence.js +3 -2
- package/dist/harness/evidence.js.map +1 -1
- package/dist/harness/safety.d.ts +11 -1
- package/dist/harness/safety.d.ts.map +1 -1
- package/dist/harness/safety.js +112 -16
- package/dist/harness/safety.js.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +4 -8
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +4 -4
- package/dist/init.js.map +1 -1
- package/dist/ink-ui/App.d.ts +2 -2
- package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
- package/dist/ink-ui/components/Markdown.js.map +1 -1
- package/dist/ink-ui/components/PixelHorseBanner.d.ts +2 -2
- package/dist/ink-ui/components/StatusLine.d.ts +2 -2
- package/dist/ink-ui/launch.d.ts +2 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts +3 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +65 -0
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/memory/embeddings.d.ts.map +1 -1
- package/dist/memory/embeddings.js +3 -2
- package/dist/memory/embeddings.js.map +1 -1
- package/dist/memory/relevant-finder.d.ts +2 -1
- package/dist/memory/relevant-finder.d.ts.map +1 -1
- package/dist/memory/relevant-finder.js +17 -8
- package/dist/memory/relevant-finder.js.map +1 -1
- package/dist/memory/semantic-config.d.ts +9 -0
- package/dist/memory/semantic-config.d.ts.map +1 -0
- package/dist/memory/semantic-config.js +16 -0
- package/dist/memory/semantic-config.js.map +1 -0
- package/dist/memory/semantic-search.d.ts +1 -6
- package/dist/memory/semantic-search.d.ts.map +1 -1
- package/dist/memory/semantic-search.js +5 -16
- package/dist/memory/semantic-search.js.map +1 -1
- package/dist/memory/storage.d.ts +23 -0
- package/dist/memory/storage.d.ts.map +1 -1
- package/dist/memory/storage.js +109 -8
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/vector-store.d.ts +12 -0
- package/dist/memory/vector-store.d.ts.map +1 -1
- package/dist/memory/vector-store.js +139 -18
- package/dist/memory/vector-store.js.map +1 -1
- package/dist/migration/command.d.ts.map +1 -1
- package/dist/migration/command.js +0 -1
- package/dist/migration/command.js.map +1 -1
- package/dist/migration/migrate.d.ts.map +1 -1
- package/dist/migration/migrate.js +43 -109
- package/dist/migration/migrate.js.map +1 -1
- package/dist/migration/types.d.ts +0 -1
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/print-ui/launch.d.ts +11 -3
- package/dist/print-ui/launch.d.ts.map +1 -1
- package/dist/print-ui/launch.js +25 -0
- package/dist/print-ui/launch.js.map +1 -1
- package/dist/product/environment.d.ts +3 -5
- package/dist/product/environment.d.ts.map +1 -1
- package/dist/product/environment.js +4 -32
- package/dist/product/environment.js.map +1 -1
- package/dist/product/index.d.ts +1 -1
- package/dist/product/index.d.ts.map +1 -1
- package/dist/product/index.js +1 -3
- package/dist/product/index.js.map +1 -1
- package/dist/product/paths.d.ts.map +1 -1
- package/dist/product/paths.js +12 -0
- package/dist/product/paths.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +3 -2
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +24 -3
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +16 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +12 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/chat-checkpoint.d.ts +17 -0
- package/dist/runtime/chat-checkpoint.d.ts.map +1 -0
- package/dist/runtime/chat-checkpoint.js +108 -0
- package/dist/runtime/chat-checkpoint.js.map +1 -0
- package/dist/runtime/chat-controller.d.ts +16 -46
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +212 -1051
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/chat-presentation.d.ts +60 -0
- package/dist/runtime/chat-presentation.d.ts.map +1 -0
- package/dist/runtime/chat-presentation.js +537 -0
- package/dist/runtime/chat-presentation.js.map +1 -0
- package/dist/runtime/chat-trace.d.ts +52 -0
- package/dist/runtime/chat-trace.d.ts.map +1 -0
- package/dist/runtime/chat-trace.js +234 -0
- package/dist/runtime/chat-trace.js.map +1 -0
- package/dist/runtime/chat-workspace.d.ts +22 -0
- package/dist/runtime/chat-workspace.d.ts.map +1 -0
- package/dist/runtime/chat-workspace.js +154 -0
- package/dist/runtime/chat-workspace.js.map +1 -0
- package/dist/runtime/goals/accounting.js +1 -1
- package/dist/runtime/goals/accounting.js.map +1 -1
- package/dist/runtime/goals/completion-audit.d.ts.map +1 -1
- package/dist/runtime/goals/completion-audit.js +5 -4
- package/dist/runtime/goals/completion-audit.js.map +1 -1
- package/dist/runtime/goals/coordinator.d.ts +3 -0
- package/dist/runtime/goals/coordinator.d.ts.map +1 -1
- package/dist/runtime/goals/coordinator.js +30 -2
- package/dist/runtime/goals/coordinator.js.map +1 -1
- package/dist/runtime/goals/prompt.d.ts +1 -1
- package/dist/runtime/goals/prompt.d.ts.map +1 -1
- package/dist/runtime/goals/prompt.js +3 -2
- package/dist/runtime/goals/prompt.js.map +1 -1
- package/dist/runtime/goals/tools.d.ts +21 -8
- package/dist/runtime/goals/tools.d.ts.map +1 -1
- package/dist/runtime/goals/tools.js +152 -21
- package/dist/runtime/goals/tools.js.map +1 -1
- package/dist/runtime/goals/types.d.ts +6 -0
- package/dist/runtime/goals/types.d.ts.map +1 -1
- package/dist/runtime/goals/types.js.map +1 -1
- package/dist/runtime/loop-budget.d.ts +2 -2
- package/dist/runtime/model-coordinator.d.ts.map +1 -1
- package/dist/runtime/model-coordinator.js.map +1 -1
- package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -1
- package/dist/runtime/subagents/child-executor-guard.js +4 -0
- package/dist/runtime/subagents/child-executor-guard.js.map +1 -1
- package/dist/runtime/subagents/index.d.ts +10 -3
- package/dist/runtime/subagents/index.d.ts.map +1 -1
- package/dist/runtime/subagents/index.js +25 -1
- package/dist/runtime/subagents/index.js.map +1 -1
- package/dist/runtime/subagents/policy.d.ts +1 -1
- package/dist/runtime/subagents/policy.d.ts.map +1 -1
- package/dist/runtime/subagents/policy.js.map +1 -1
- package/dist/runtime/subagents/presets.d.ts +2 -2
- package/dist/runtime/subagents/provider-gate.d.ts.map +1 -1
- package/dist/runtime/subagents/provider-gate.js +0 -1
- package/dist/runtime/subagents/provider-gate.js.map +1 -1
- package/dist/runtime/subagents/research-artifact.d.ts +101 -0
- package/dist/runtime/subagents/research-artifact.d.ts.map +1 -0
- package/dist/runtime/subagents/research-artifact.js +210 -0
- package/dist/runtime/subagents/research-artifact.js.map +1 -0
- package/dist/runtime/subagents/research-citation.d.ts +66 -0
- package/dist/runtime/subagents/research-citation.d.ts.map +1 -0
- package/dist/runtime/subagents/research-citation.js +185 -0
- package/dist/runtime/subagents/research-citation.js.map +1 -0
- package/dist/runtime/subagents/research-contract.d.ts +83 -0
- package/dist/runtime/subagents/research-contract.d.ts.map +1 -0
- package/dist/runtime/subagents/research-contract.js +337 -0
- package/dist/runtime/subagents/research-contract.js.map +1 -0
- package/dist/runtime/subagents/research-quality.d.ts +47 -0
- package/dist/runtime/subagents/research-quality.d.ts.map +1 -0
- package/dist/runtime/subagents/research-quality.js +125 -0
- package/dist/runtime/subagents/research-quality.js.map +1 -0
- package/dist/runtime/subagents/research-renderer.d.ts +95 -0
- package/dist/runtime/subagents/research-renderer.d.ts.map +1 -0
- package/dist/runtime/subagents/research-renderer.js +186 -0
- package/dist/runtime/subagents/research-renderer.js.map +1 -0
- package/dist/runtime/subagents/research-types.d.ts +105 -0
- package/dist/runtime/subagents/research-types.d.ts.map +1 -0
- package/dist/runtime/subagents/research-types.js +16 -0
- package/dist/runtime/subagents/research-types.js.map +1 -0
- package/dist/runtime/subagents/result-parser.d.ts +1 -5
- package/dist/runtime/subagents/result-parser.d.ts.map +1 -1
- package/dist/runtime/subagents/result-parser.js +5 -72
- package/dist/runtime/subagents/result-parser.js.map +1 -1
- package/dist/runtime/subagents/runtime-integration.d.ts +13 -7
- package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
- package/dist/runtime/subagents/runtime-integration.js +112 -2
- package/dist/runtime/subagents/runtime-integration.js.map +1 -1
- package/dist/runtime/subagents/supervisor.d.ts +15 -1
- package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
- package/dist/runtime/subagents/supervisor.js +58 -3
- package/dist/runtime/subagents/supervisor.js.map +1 -1
- package/dist/runtime/subagents/tool.d.ts +2 -2
- package/dist/runtime/subagents/tool.d.ts.map +1 -1
- package/dist/runtime/subagents/tool.js +129 -9
- package/dist/runtime/subagents/tool.js.map +1 -1
- package/dist/runtime/subagents/types.d.ts +20 -0
- package/dist/runtime/subagents/types.d.ts.map +1 -1
- package/dist/runtime/subagents/types.js.map +1 -1
- package/dist/runtime/subagents/web-research-adapter.d.ts +85 -0
- package/dist/runtime/subagents/web-research-adapter.d.ts.map +1 -0
- package/dist/runtime/subagents/web-research-adapter.js +328 -0
- package/dist/runtime/subagents/web-research-adapter.js.map +1 -0
- package/dist/runtime/turn-controller.d.ts.map +1 -1
- package/dist/runtime/turn-controller.js +3 -1
- package/dist/runtime/turn-controller.js.map +1 -1
- package/dist/runtime/ui-events.d.ts +25 -8
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/runtime/ui-view-model.d.ts +40 -0
- package/dist/runtime/ui-view-model.d.ts.map +1 -1
- package/dist/runtime/ui-view-model.js +126 -0
- package/dist/runtime/ui-view-model.js.map +1 -1
- package/dist/services/agent-runner.d.ts +5 -2
- package/dist/services/agent-runner.d.ts.map +1 -1
- package/dist/services/agent-runner.js +18 -18
- package/dist/services/agent-runner.js.map +1 -1
- package/dist/services/atomic-write.d.ts +9 -1
- package/dist/services/atomic-write.d.ts.map +1 -1
- package/dist/services/atomic-write.js +55 -2
- package/dist/services/atomic-write.js.map +1 -1
- package/dist/services/auth/auth.d.ts +11 -7
- package/dist/services/auth/auth.d.ts.map +1 -1
- package/dist/services/auth/auth.js +133 -34
- package/dist/services/auth/auth.js.map +1 -1
- package/dist/services/auth/aws.d.ts +2 -0
- package/dist/services/auth/aws.d.ts.map +1 -1
- package/dist/services/auth/aws.js +126 -12
- package/dist/services/auth/aws.js.map +1 -1
- package/dist/services/auth/index.d.ts +1 -1
- package/dist/services/auth/index.d.ts.map +1 -1
- package/dist/services/auth/index.js +2 -1
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/auto-fix/autoFixConfig.d.ts +0 -3
- package/dist/services/auto-fix/autoFixConfig.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixConfig.js +25 -8
- package/dist/services/auto-fix/autoFixConfig.js.map +1 -1
- package/dist/services/auto-fix/autoFixHook.d.ts +7 -0
- package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixHook.js +10 -1
- package/dist/services/auto-fix/autoFixHook.js.map +1 -1
- package/dist/services/compact/auto-compact.d.ts +2 -0
- package/dist/services/compact/auto-compact.d.ts.map +1 -1
- package/dist/services/compact/auto-compact.js +15 -1
- package/dist/services/compact/auto-compact.js.map +1 -1
- package/dist/services/compact/compact.d.ts.map +1 -1
- package/dist/services/compact/compact.js +9 -11
- package/dist/services/compact/compact.js.map +1 -1
- package/dist/services/compact/summary-generator.d.ts.map +1 -1
- package/dist/services/compact/summary-generator.js +28 -4
- package/dist/services/compact/summary-generator.js.map +1 -1
- package/dist/services/compact/tool-call-groups.d.ts +19 -0
- package/dist/services/compact/tool-call-groups.d.ts.map +1 -0
- package/dist/services/compact/tool-call-groups.js +105 -0
- package/dist/services/compact/tool-call-groups.js.map +1 -0
- package/dist/services/concurrent-sessions.d.ts +4 -0
- package/dist/services/concurrent-sessions.d.ts.map +1 -1
- package/dist/services/concurrent-sessions.js +76 -21
- package/dist/services/concurrent-sessions.js.map +1 -1
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +19 -5
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/config.d.ts +6 -4
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +16 -72
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts +2 -2
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/file-glob.d.ts.map +1 -1
- package/dist/services/file-glob.js +22 -2
- package/dist/services/file-glob.js.map +1 -1
- package/dist/services/file-lock.d.ts +7 -0
- package/dist/services/file-lock.d.ts.map +1 -0
- package/dist/services/file-lock.js +139 -0
- package/dist/services/file-lock.js.map +1 -0
- package/dist/services/global-config.d.ts +33 -0
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +67 -4
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/goal-storage.d.ts.map +1 -1
- package/dist/services/goal-storage.js +52 -19
- package/dist/services/goal-storage.js.map +1 -1
- package/dist/services/llm.d.ts +12 -0
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +166 -69
- package/dist/services/llm.js.map +1 -1
- package/dist/services/mcp/transports.d.ts +0 -1
- package/dist/services/mcp/transports.d.ts.map +1 -1
- package/dist/services/mcp/transports.js +12 -13
- package/dist/services/mcp/transports.js.map +1 -1
- package/dist/services/model-catalog.d.ts +2 -0
- package/dist/services/model-catalog.d.ts.map +1 -1
- package/dist/services/model-catalog.js +25 -15
- package/dist/services/model-catalog.js.map +1 -1
- package/dist/services/model-context.d.ts +8 -0
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +147 -7
- package/dist/services/model-context.js.map +1 -1
- package/dist/services/model-registry.d.ts.map +1 -1
- package/dist/services/model-registry.js +32 -0
- package/dist/services/model-registry.js.map +1 -1
- package/dist/services/provider-resilience/coordinator.d.ts +9 -4
- package/dist/services/provider-resilience/coordinator.d.ts.map +1 -1
- package/dist/services/provider-resilience/coordinator.js +88 -21
- package/dist/services/provider-resilience/coordinator.js.map +1 -1
- package/dist/services/provider-resilience/error-classifier.d.ts +1 -0
- package/dist/services/provider-resilience/error-classifier.d.ts.map +1 -1
- package/dist/services/provider-resilience/error-classifier.js +50 -29
- package/dist/services/provider-resilience/error-classifier.js.map +1 -1
- package/dist/services/provider-resilience/index.d.ts +3 -3
- package/dist/services/provider-resilience/index.d.ts.map +1 -1
- package/dist/services/provider-resilience/index.js +3 -1
- package/dist/services/provider-resilience/index.js.map +1 -1
- package/dist/services/provider-resilience/request-gate.d.ts +6 -0
- package/dist/services/provider-resilience/request-gate.d.ts.map +1 -1
- package/dist/services/provider-resilience/request-gate.js +24 -9
- package/dist/services/provider-resilience/request-gate.js.map +1 -1
- package/dist/services/provider-resilience/stream-recovery.d.ts +1 -1
- package/dist/services/provider-resilience/stream-recovery.d.ts.map +1 -1
- package/dist/services/provider-resilience/stream-recovery.js +1 -1
- package/dist/services/provider-resilience/stream-recovery.js.map +1 -1
- package/dist/services/provider-resilience/types.d.ts +9 -0
- package/dist/services/provider-resilience/types.d.ts.map +1 -1
- package/dist/services/provider-resilience/types.js.map +1 -1
- package/dist/services/redaction.d.ts.map +1 -1
- package/dist/services/redaction.js +29 -1
- package/dist/services/redaction.js.map +1 -1
- package/dist/services/session-index.d.ts.map +1 -1
- package/dist/services/session-index.js +75 -44
- package/dist/services/session-index.js.map +1 -1
- package/dist/services/session-memory/sessionMemory.d.ts.map +1 -1
- package/dist/services/session-memory/sessionMemory.js +6 -3
- package/dist/services/session-memory/sessionMemory.js.map +1 -1
- package/dist/services/session-storage.d.ts +8 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +105 -27
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/storage-maintenance.d.ts.map +1 -1
- package/dist/services/storage-maintenance.js +62 -9
- package/dist/services/storage-maintenance.js.map +1 -1
- package/dist/services/task-manager.d.ts +9 -4
- package/dist/services/task-manager.d.ts.map +1 -1
- package/dist/services/task-manager.js +18 -4
- package/dist/services/task-manager.js.map +1 -1
- package/dist/services/tool-allowlist.d.ts +100 -0
- package/dist/services/tool-allowlist.d.ts.map +1 -0
- package/dist/services/tool-allowlist.js +250 -0
- package/dist/services/tool-allowlist.js.map +1 -0
- package/dist/services/usage-state.d.ts +1 -0
- package/dist/services/usage-state.d.ts.map +1 -1
- package/dist/services/usage-state.js +81 -45
- package/dist/services/usage-state.js.map +1 -1
- package/dist/services/verification-profile.d.ts.map +1 -1
- package/dist/services/verification-profile.js +23 -3
- package/dist/services/verification-profile.js.map +1 -1
- package/dist/services/web-search-adapters.d.ts.map +1 -1
- package/dist/services/web-search-adapters.js +48 -18
- package/dist/services/web-search-adapters.js.map +1 -1
- package/dist/services/web-search-mcp.d.ts.map +1 -1
- package/dist/services/web-search-mcp.js +27 -11
- package/dist/services/web-search-mcp.js.map +1 -1
- package/dist/services/workspace-diff.d.ts +14 -0
- package/dist/services/workspace-diff.d.ts.map +1 -1
- package/dist/services/workspace-diff.js +60 -11
- package/dist/services/workspace-diff.js.map +1 -1
- package/dist/services/yaml-config.d.ts.map +1 -1
- package/dist/services/yaml-config.js +2 -1
- package/dist/services/yaml-config.js.map +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +26 -11
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/runtime.d.ts +3 -3
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +37 -4
- package/dist/skills/runtime.js.map +1 -1
- package/dist/skills/types.d.ts +1 -1
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/terminal-ui/launch.d.ts +36 -8
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +171 -1
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/terminal-ui/raw-editor.js.map +1 -1
- package/dist/tools/bash_security.d.ts +58 -18
- package/dist/tools/bash_security.d.ts.map +1 -1
- package/dist/tools/bash_security.js +587 -80
- package/dist/tools/bash_security.js.map +1 -1
- package/dist/tools/git.d.ts +8 -4
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +518 -18
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/index.d.ts +14 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +292 -49
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.d.ts +74 -6
- package/dist/tools/lsp.d.ts.map +1 -1
- package/dist/tools/lsp.js +24 -5
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/mcp.d.ts +19 -6
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/mcp.js +143 -26
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/plan.d.ts +4 -4
- package/dist/tools/sandbox.d.ts +141 -0
- package/dist/tools/sandbox.d.ts.map +1 -0
- package/dist/tools/sandbox.js +500 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/todo.d.ts +3 -3
- package/dist/tools/web.d.ts +15 -4
- package/dist/tools/web.d.ts.map +1 -1
- package/dist/tools/web.js +346 -61
- package/dist/tools/web.js.map +1 -1
- package/dist/tui-core/frame.js.map +1 -1
- package/dist/tui-ui/launch.d.ts +3 -3
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +46 -8
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +64 -0
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/runner.d.ts +6 -0
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +82 -1
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +28 -2
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +48 -7
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/tui-ui/terminal-image.d.ts +3 -13
- package/dist/tui-ui/terminal-image.d.ts.map +1 -1
- package/dist/tui-ui/terminal-image.js +5 -160
- package/dist/tui-ui/terminal-image.js.map +1 -1
- package/dist/ui/markdown.js.map +1 -1
- package/dist/utils/debug-log.d.ts +52 -0
- package/dist/utils/debug-log.d.ts.map +1 -0
- package/dist/utils/debug-log.js +94 -0
- package/dist/utils/debug-log.js.map +1 -0
- package/dist/utils/errors.d.ts +25 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +47 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/json.d.ts +6 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +66 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mask.d.ts +35 -0
- package/dist/utils/mask.d.ts.map +1 -0
- package/dist/utils/mask.js +52 -0
- package/dist/utils/mask.js.map +1 -0
- package/dist/utils/observability.d.ts +22 -0
- package/dist/utils/observability.d.ts.map +1 -0
- package/dist/utils/observability.js +80 -0
- package/dist/utils/observability.js.map +1 -0
- package/dist/utils/token-estimate.d.ts +8 -0
- package/dist/utils/token-estimate.d.ts.map +1 -1
- package/dist/utils/token-estimate.js +30 -17
- package/dist/utils/token-estimate.js.map +1 -1
- package/package.json +9 -7
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
* 高级语义搜索接口,整合向量存储和记忆系统
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.SemanticSearchService = void 0;
|
|
9
|
-
exports.isSemanticEnabled = isSemanticEnabled;
|
|
8
|
+
exports.SemanticSearchService = exports.isSemanticEnabled = void 0;
|
|
10
9
|
exports.getSemanticSearchService = getSemanticSearchService;
|
|
11
10
|
exports.resetSemanticSearchService = resetSemanticSearchService;
|
|
12
11
|
exports.semanticSearch = semanticSearch;
|
|
13
12
|
const vector_store_1 = require("./vector-store");
|
|
14
13
|
const storage_1 = require("./storage");
|
|
15
|
-
const
|
|
14
|
+
const errors_1 = require("../utils/errors");
|
|
15
|
+
var semantic_config_1 = require("./semantic-config");
|
|
16
|
+
Object.defineProperty(exports, "isSemanticEnabled", { enumerable: true, get: function () { return semantic_config_1.isSemanticEnabled; } });
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Semantic Search Service
|
|
18
19
|
// ============================================================================
|
|
@@ -50,7 +51,7 @@ class SemanticSearchService {
|
|
|
50
51
|
indexed++;
|
|
51
52
|
}
|
|
52
53
|
catch (err) {
|
|
53
|
-
console.warn(`[SemanticSearch] Failed to index ${memory.name}: ${err
|
|
54
|
+
console.warn(`[SemanticSearch] Failed to index ${memory.name}: ${(0, errors_1.errorMessage)(err)}`);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
return indexed;
|
|
@@ -77,18 +78,6 @@ class SemanticSearchService {
|
|
|
77
78
|
}
|
|
78
79
|
exports.SemanticSearchService = SemanticSearchService;
|
|
79
80
|
// ============================================================================
|
|
80
|
-
// Feature Detection
|
|
81
|
-
// ============================================================================
|
|
82
|
-
/**
|
|
83
|
-
* Whether semantic search is explicitly enabled via ORION_CODE_EMBEDDING_PROVIDER.
|
|
84
|
-
* We require an explicit opt-in so the vector store + sqlite-vec are only
|
|
85
|
-
* initialised when the user wants embeddings.
|
|
86
|
-
*/
|
|
87
|
-
function isSemanticEnabled() {
|
|
88
|
-
const provider = process.env[environment_1.ENV.EMBEDDING_PROVIDER];
|
|
89
|
-
return provider === 'ollama' || provider === 'openai';
|
|
90
|
-
}
|
|
91
|
-
// ============================================================================
|
|
92
81
|
// Factory
|
|
93
82
|
// ============================================================================
|
|
94
83
|
let defaultService = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-search.js","sourceRoot":"","sources":["../../src/memory/semantic-search.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"semantic-search.js","sourceRoot":"","sources":["../../src/memory/semantic-search.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/storage.d.ts
CHANGED
|
@@ -30,6 +30,29 @@ export declare function getProjectHash(projectPath: string): string;
|
|
|
30
30
|
* lands (tracked in v0.1.4-plus roadmap Part 10).
|
|
31
31
|
*/
|
|
32
32
|
export declare function getMemoryDir(projectPath?: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Raised when a memory entry name cannot be turned into a safe file path.
|
|
35
|
+
*/
|
|
36
|
+
export declare class InvalidMemoryNameError extends Error {
|
|
37
|
+
constructor(name: string, reason: string);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve `<dir>/<name>.md` while guaranteeing the result stays inside `dir`.
|
|
41
|
+
*
|
|
42
|
+
* `memory_save` / `memory_forget` are model-invoked and the entry name is
|
|
43
|
+
* model-controlled, so an unvalidated `join()` gave prompt injection an
|
|
44
|
+
* arbitrary file write **and** delete primitive (e.g. `../../../orion.json`,
|
|
45
|
+
* `../../.git/hooks/pre-commit`).
|
|
46
|
+
*
|
|
47
|
+
* Two independent layers:
|
|
48
|
+
* 1. `sanitizePathKey` rejects traversal / absolute / null-byte / control-char
|
|
49
|
+
* names outright. We only use its *verdict* — never its rewritten key — so
|
|
50
|
+
* legitimate non-ASCII names keep their original on-disk filename instead of
|
|
51
|
+
* silently collapsing into underscores.
|
|
52
|
+
* 2. A `resolve` + `relative` containment assert as defence in depth, covering
|
|
53
|
+
* anything the character checks miss (symlinked dirs, platform quirks).
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveMemoryEntryPath(dir: string, name: string): string;
|
|
33
56
|
/** Legacy hash-based memory directory kept as a read fallback. */
|
|
34
57
|
export declare function getLegacyMemoryDir(projectPath: string): string;
|
|
35
58
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/memory/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAUvD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMvD,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,aAAa,WAAW,CAAC;AACtC,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAM1C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5D;AAMD,yCAAyC;AACzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA4B1E;AAED,2CAA2C;AAC3C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAQpE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAiCnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/memory/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAUvD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMvD,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,aAAa,WAAW,CAAC;AACtC,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAM1C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAQzD;AAMD;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAyBxE;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5D;AAMD,yCAAyC;AACzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA4B1E;AAED,2CAA2C;AAC3C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAQpE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAiCnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA6BjF;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBzE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAoBrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAoC5D;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAYjF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAGvF;AAGD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAwBxB"}
|
package/dist/memory/storage.js
CHANGED
|
@@ -8,10 +8,44 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Memory is project-scoped: each project has its own memory directory.
|
|
10
10
|
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
11
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.MAX_ENTRYPOINT_BYTES = exports.MAX_ENTRYPOINT_LINES = exports.ENTRYPOINT_NAME = exports.MEMORY_SUBDIR = exports.PROJECTS_SUBDIR = void 0;
|
|
45
|
+
exports.InvalidMemoryNameError = exports.MAX_ENTRYPOINT_BYTES = exports.MAX_ENTRYPOINT_LINES = exports.ENTRYPOINT_NAME = exports.MEMORY_SUBDIR = exports.PROJECTS_SUBDIR = void 0;
|
|
13
46
|
exports.getProjectHash = getProjectHash;
|
|
14
47
|
exports.getMemoryDir = getMemoryDir;
|
|
48
|
+
exports.resolveMemoryEntryPath = resolveMemoryEntryPath;
|
|
15
49
|
exports.getLegacyMemoryDir = getLegacyMemoryDir;
|
|
16
50
|
exports.getEntrypointPath = getEntrypointPath;
|
|
17
51
|
exports.ensureMemoryDir = ensureMemoryDir;
|
|
@@ -29,9 +63,9 @@ exports.searchMemoriesAsync = searchMemoriesAsync;
|
|
|
29
63
|
const fs_1 = require("fs");
|
|
30
64
|
const path_1 = require("path");
|
|
31
65
|
const crypto_1 = require("crypto");
|
|
66
|
+
const team_paths_1 = require("./team-paths");
|
|
32
67
|
const config_dir_1 = require("../services/config-dir");
|
|
33
68
|
const atomic_write_1 = require("../services/atomic-write");
|
|
34
|
-
const vector_store_1 = require("./vector-store"); // Issue #32 #3.8
|
|
35
69
|
// ============================================================================
|
|
36
70
|
// Constants
|
|
37
71
|
// ============================================================================
|
|
@@ -70,6 +104,57 @@ function getMemoryDir(projectPath) {
|
|
|
70
104
|
}
|
|
71
105
|
return (0, path_1.join)(configHome, exports.MEMORY_SUBDIR);
|
|
72
106
|
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Entry Name Safety
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Raised when a memory entry name cannot be turned into a safe file path.
|
|
112
|
+
*/
|
|
113
|
+
class InvalidMemoryNameError extends Error {
|
|
114
|
+
constructor(name, reason) {
|
|
115
|
+
super(`Invalid memory name ${JSON.stringify(name)}: ${reason}`);
|
|
116
|
+
this.name = 'InvalidMemoryNameError';
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.InvalidMemoryNameError = InvalidMemoryNameError;
|
|
120
|
+
/**
|
|
121
|
+
* Resolve `<dir>/<name>.md` while guaranteeing the result stays inside `dir`.
|
|
122
|
+
*
|
|
123
|
+
* `memory_save` / `memory_forget` are model-invoked and the entry name is
|
|
124
|
+
* model-controlled, so an unvalidated `join()` gave prompt injection an
|
|
125
|
+
* arbitrary file write **and** delete primitive (e.g. `../../../orion.json`,
|
|
126
|
+
* `../../.git/hooks/pre-commit`).
|
|
127
|
+
*
|
|
128
|
+
* Two independent layers:
|
|
129
|
+
* 1. `sanitizePathKey` rejects traversal / absolute / null-byte / control-char
|
|
130
|
+
* names outright. We only use its *verdict* — never its rewritten key — so
|
|
131
|
+
* legitimate non-ASCII names keep their original on-disk filename instead of
|
|
132
|
+
* silently collapsing into underscores.
|
|
133
|
+
* 2. A `resolve` + `relative` containment assert as defence in depth, covering
|
|
134
|
+
* anything the character checks miss (symlinked dirs, platform quirks).
|
|
135
|
+
*/
|
|
136
|
+
function resolveMemoryEntryPath(dir, name) {
|
|
137
|
+
if (typeof name !== 'string' || name.trim().length === 0) {
|
|
138
|
+
throw new InvalidMemoryNameError(String(name), 'name must be a non-empty string');
|
|
139
|
+
}
|
|
140
|
+
const check = (0, team_paths_1.sanitizePathKey)(name);
|
|
141
|
+
if (!check.safe) {
|
|
142
|
+
throw new InvalidMemoryNameError(name, check.violations.join('; '));
|
|
143
|
+
}
|
|
144
|
+
// A single separator passes sanitizePathKey (it would be rewritten, not
|
|
145
|
+
// flagged). Reject rather than rewrite: such entries are never listed by
|
|
146
|
+
// listMemories anyway, and a clear error is more useful to the model.
|
|
147
|
+
if (/[\\/]/.test(name)) {
|
|
148
|
+
throw new InvalidMemoryNameError(name, 'path separators are not allowed');
|
|
149
|
+
}
|
|
150
|
+
const baseDir = (0, path_1.resolve)(dir);
|
|
151
|
+
const filePath = (0, path_1.resolve)(baseDir, `${name}.md`);
|
|
152
|
+
const rel = (0, path_1.relative)(baseDir, filePath);
|
|
153
|
+
if (!rel || rel.startsWith('..') || (0, path_1.isAbsolute)(rel)) {
|
|
154
|
+
throw new InvalidMemoryNameError(name, 'resolves outside the memory directory');
|
|
155
|
+
}
|
|
156
|
+
return filePath;
|
|
157
|
+
}
|
|
73
158
|
/** Legacy hash-based memory directory kept as a read fallback. */
|
|
74
159
|
function getLegacyMemoryDir(projectPath) {
|
|
75
160
|
return (0, config_dir_1.getLegacyProjectMemoryDir)(projectPath);
|
|
@@ -194,7 +279,15 @@ function loadMemory(name, projectPath) {
|
|
|
194
279
|
? [getMemoryDir(projectPath), getLegacyMemoryDir(projectPath)]
|
|
195
280
|
: [getMemoryDir(projectPath)];
|
|
196
281
|
for (const dir of dirs) {
|
|
197
|
-
|
|
282
|
+
let filePath;
|
|
283
|
+
try {
|
|
284
|
+
filePath = resolveMemoryEntryPath(dir, name);
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Unsafe name: nothing legitimate can live under it. Reads stay
|
|
288
|
+
// non-throwing so callers that probe by name keep working.
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
198
291
|
if (!(0, fs_1.existsSync)(filePath))
|
|
199
292
|
continue;
|
|
200
293
|
try {
|
|
@@ -218,9 +311,11 @@ function loadMemory(name, projectPath) {
|
|
|
218
311
|
* Save memory entry to a project's memory directory.
|
|
219
312
|
*/
|
|
220
313
|
function saveMemory(entry, projectPath) {
|
|
221
|
-
ensureMemoryDir(projectPath);
|
|
222
314
|
const dir = getMemoryDir(projectPath);
|
|
223
|
-
|
|
315
|
+
// Validate before creating the directory so a hostile name never has a
|
|
316
|
+
// side effect.
|
|
317
|
+
const filePath = resolveMemoryEntryPath(dir, entry.name);
|
|
318
|
+
ensureMemoryDir(projectPath);
|
|
224
319
|
const now = Date.now();
|
|
225
320
|
entry.createdAt = entry.createdAt || now;
|
|
226
321
|
entry.updatedAt = now;
|
|
@@ -237,8 +332,10 @@ function deleteMemory(name, projectPath) {
|
|
|
237
332
|
const dirs = projectPath
|
|
238
333
|
? [getMemoryDir(projectPath), getLegacyMemoryDir(projectPath)]
|
|
239
334
|
: [getMemoryDir(projectPath)];
|
|
240
|
-
|
|
241
|
-
|
|
335
|
+
// Throws on traversal: `memory_forget` is model-invoked, so an unvalidated
|
|
336
|
+
// name here is an arbitrary-delete primitive.
|
|
337
|
+
const canonicalPath = resolveMemoryEntryPath(dirs[0], name);
|
|
338
|
+
const legacyPath = dirs[1] ? resolveMemoryEntryPath(dirs[1], name) : undefined;
|
|
242
339
|
const deletePath = (0, fs_1.existsSync)(canonicalPath) ? canonicalPath : legacyPath;
|
|
243
340
|
if (deletePath && (0, fs_1.existsSync)(deletePath)) {
|
|
244
341
|
try {
|
|
@@ -317,7 +414,11 @@ function getMemoriesByType(type, projectPath) {
|
|
|
317
414
|
*/
|
|
318
415
|
async function searchMemoriesAsync(query, projectPath, limit = 50) {
|
|
319
416
|
try {
|
|
320
|
-
|
|
417
|
+
// Vector storage is optional and native. Load it only when this async
|
|
418
|
+
// semantic path is invoked so text-only memory remains available when a
|
|
419
|
+
// native binding is missing or was built for another Node ABI.
|
|
420
|
+
const { getVectorStore } = await Promise.resolve().then(() => __importStar(require('./vector-store')));
|
|
421
|
+
const store = getVectorStore();
|
|
321
422
|
if (store.isVectorSearchAvailable()) {
|
|
322
423
|
const results = await store.search(query, limit, projectPath);
|
|
323
424
|
// Convert SearchResult to MemoryEntry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/memory/storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/memory/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 基于 sqlite-vec 的向量存储层
|
|
5
5
|
*/
|
|
6
|
+
declare module 'better-sqlite3' {
|
|
7
|
+
interface Options {
|
|
8
|
+
allowExtension?: boolean;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
6
11
|
import { type EmbeddingConfig } from './embeddings';
|
|
7
12
|
import type { MemoryEntry, MemoryType } from './types';
|
|
8
13
|
export interface SearchResult {
|
|
@@ -28,6 +33,7 @@ export interface VectorCleanupResult {
|
|
|
28
33
|
}
|
|
29
34
|
export declare class VectorStore {
|
|
30
35
|
private db;
|
|
36
|
+
private readonly dbPath;
|
|
31
37
|
private embeddingService;
|
|
32
38
|
private initialized;
|
|
33
39
|
constructor(config?: VectorStoreConfig);
|
|
@@ -35,6 +41,10 @@ export declare class VectorStore {
|
|
|
35
41
|
private initialize;
|
|
36
42
|
/** Check if vector search is available */
|
|
37
43
|
isVectorSearchAvailable(): boolean;
|
|
44
|
+
/** Return a transactionally consistent project snapshot on the live connection. */
|
|
45
|
+
snapshotProjectRows(project: string): Array<Record<string, unknown>> | undefined;
|
|
46
|
+
/** Whether this live store owns the requested database file. */
|
|
47
|
+
ownsDatabase(dbPath: string): boolean;
|
|
38
48
|
/** Insert or update memory with embedding - Issue #32 #3.3: 使用事务 */
|
|
39
49
|
upsert(entry: MemoryEntry, projectPath?: string): Promise<void>;
|
|
40
50
|
/** Delete memory */
|
|
@@ -65,5 +75,7 @@ export declare class VectorStore {
|
|
|
65
75
|
close(): void;
|
|
66
76
|
}
|
|
67
77
|
export declare function getVectorStore(config?: VectorStoreConfig): VectorStore;
|
|
78
|
+
/** Return the live singleton only when it owns this exact database. */
|
|
79
|
+
export declare function peekVectorStore(dbPath: string): VectorStore | undefined;
|
|
68
80
|
export declare function resetVectorStore(): void;
|
|
69
81
|
//# sourceMappingURL=vector-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../src/memory/vector-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../../src/memory/vector-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,QAAQ,gBAAgB,CAAC;IAC9B,UAAU,OAAO;QACf,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;CACF;AAED,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAOvD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAyCD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAyC;IACjE,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,CAAC,EAAE,iBAAiB;IAuBtC,iCAAiC;IACjC,OAAO,CAAC,UAAU;IAuDlB,0CAA0C;IAC1C,uBAAuB,IAAI,OAAO;IAIlC,mFAAmF;IACnF,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS;IAUhF,gEAAgE;IAChE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIrC,oEAAoE;IAC9D,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoHrE,oBAAoB;IACpB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAmBhD,2BAA2B;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY9F,oCAAoC;YACtB,cAAc;IAiD5B,2BAA2B;IAC3B,OAAO,CAAC,UAAU;IAmClB,qCAAqC;IACrC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAuB5C,qEAAqE;IACrE,eAAe,IAAI,kBAAkB,EAAE;IAWvC,qEAAqE;IACrE,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,mBAAmB;IActE,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,yBAAyB;IAQjC,qDAAqD;IACrD,OAAO,CAAC,UAAU;IAIlB,mEAAmE;IACnE,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAKhB,qBAAqB;IACrB,KAAK,IAAI,IAAI;CAGd;AAQD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAKtE;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEvE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}
|
|
@@ -4,19 +4,76 @@
|
|
|
4
4
|
*
|
|
5
5
|
* 基于 sqlite-vec 的向量存储层
|
|
6
6
|
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
7
40
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
41
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
42
|
};
|
|
10
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
44
|
exports.VectorStore = void 0;
|
|
12
45
|
exports.getVectorStore = getVectorStore;
|
|
46
|
+
exports.peekVectorStore = peekVectorStore;
|
|
13
47
|
exports.resetVectorStore = resetVectorStore;
|
|
14
48
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
49
|
+
const sqliteVec = __importStar(require("sqlite-vec"));
|
|
15
50
|
const path_1 = require("path");
|
|
16
51
|
const fs_1 = require("fs");
|
|
17
52
|
const crypto_1 = require("crypto"); // Issue #32 #3.4: 用于 hashProject
|
|
18
53
|
const embeddings_1 = require("./embeddings");
|
|
19
54
|
const config_dir_1 = require("../services/config-dir");
|
|
55
|
+
/** Extract a human-readable message from an unknown thrown value. */
|
|
56
|
+
function errorMessage(err) {
|
|
57
|
+
return err instanceof Error ? err.message : String(err);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A usable embedding must have the expected dimension, be all-finite, and
|
|
61
|
+
* actually carry signal (not all zeros). Failed/empty embeddings from the
|
|
62
|
+
* provider come back as zero vectors; storing them makes them rank #1 at
|
|
63
|
+
* score 1.0 in semantic search and silently poisons results (#47 item 2).
|
|
64
|
+
*/
|
|
65
|
+
function isValidEmbedding(vector, dimension) {
|
|
66
|
+
if (!Array.isArray(vector) || vector.length !== dimension)
|
|
67
|
+
return false;
|
|
68
|
+
let hasSignal = false;
|
|
69
|
+
for (const v of vector) {
|
|
70
|
+
if (typeof v !== 'number' || !Number.isFinite(v))
|
|
71
|
+
return false;
|
|
72
|
+
if (v !== 0)
|
|
73
|
+
hasSignal = true;
|
|
74
|
+
}
|
|
75
|
+
return hasSignal;
|
|
76
|
+
}
|
|
20
77
|
// ============================================================================
|
|
21
78
|
// Vector Store
|
|
22
79
|
// ============================================================================
|
|
@@ -24,14 +81,17 @@ class VectorStore {
|
|
|
24
81
|
constructor(config) {
|
|
25
82
|
this.initialized = false;
|
|
26
83
|
// Determine database path
|
|
27
|
-
const dbPath = config?.dbPath || (0, path_1.join)((0, config_dir_1.getConfigHome)(), 'vector.db');
|
|
84
|
+
const dbPath = (0, path_1.resolve)(config?.dbPath || (0, path_1.join)((0, config_dir_1.getConfigHome)(), 'vector.db'));
|
|
85
|
+
this.dbPath = dbPath;
|
|
28
86
|
// Ensure directory exists
|
|
29
87
|
const dbDir = (0, path_1.join)(dbPath, '..');
|
|
30
88
|
if (!(0, fs_1.existsSync)(dbDir)) {
|
|
31
89
|
(0, fs_1.mkdirSync)(dbDir, { recursive: true });
|
|
32
90
|
}
|
|
33
|
-
// Initialize database
|
|
34
|
-
|
|
91
|
+
// Initialize database. allowExtension is required so sqlite-vec (a
|
|
92
|
+
// loadable dylib) can be registered below — without it, db.loadExtension
|
|
93
|
+
// is a no-op and the vec0 virtual table can never be created (#47).
|
|
94
|
+
this.db = new better_sqlite3_1.default(dbPath, { allowExtension: true });
|
|
35
95
|
// Get embedding service
|
|
36
96
|
this.embeddingService = (0, embeddings_1.getEmbeddingService)(config?.embeddingConfig);
|
|
37
97
|
// Initialize tables
|
|
@@ -61,6 +121,11 @@ class VectorStore {
|
|
|
61
121
|
`);
|
|
62
122
|
// Try to create vector column using sqlite-vec
|
|
63
123
|
try {
|
|
124
|
+
// The vec0 module ships as a loadable extension that nobody loaded
|
|
125
|
+
// before (#47): `CREATE VIRTUAL TABLE ... USING vec0` always threw
|
|
126
|
+
// "no such module: vec0", so vector search silently fell back to LIKE.
|
|
127
|
+
// Load it explicitly (allowExtension was enabled in the constructor).
|
|
128
|
+
sqliteVec.load(this.db);
|
|
64
129
|
const dimension = this.embeddingService.getDimension();
|
|
65
130
|
this.db.exec(`
|
|
66
131
|
CREATE VIRTUAL TABLE IF NOT EXISTS vec_memories USING vec0(
|
|
@@ -79,7 +144,7 @@ class VectorStore {
|
|
|
79
144
|
}
|
|
80
145
|
catch (err) {
|
|
81
146
|
// sqlite-vec may not be available - fall back to text search only
|
|
82
|
-
console.warn(`[VectorStore] sqlite-vec not available: ${err
|
|
147
|
+
console.warn(`[VectorStore] sqlite-vec not available: ${errorMessage(err)}`);
|
|
83
148
|
this.initialized = false;
|
|
84
149
|
}
|
|
85
150
|
}
|
|
@@ -87,6 +152,21 @@ class VectorStore {
|
|
|
87
152
|
isVectorSearchAvailable() {
|
|
88
153
|
return this.initialized;
|
|
89
154
|
}
|
|
155
|
+
/** Return a transactionally consistent project snapshot on the live connection. */
|
|
156
|
+
snapshotProjectRows(project) {
|
|
157
|
+
const readSnapshot = this.db.transaction(() => {
|
|
158
|
+
if (!this.hasTable('memories'))
|
|
159
|
+
return undefined;
|
|
160
|
+
return this.db
|
|
161
|
+
.prepare('SELECT * FROM memories WHERE project = ? ORDER BY id')
|
|
162
|
+
.all(project);
|
|
163
|
+
});
|
|
164
|
+
return readSnapshot.deferred();
|
|
165
|
+
}
|
|
166
|
+
/** Whether this live store owns the requested database file. */
|
|
167
|
+
ownsDatabase(dbPath) {
|
|
168
|
+
return this.dbPath === (0, path_1.resolve)(dbPath);
|
|
169
|
+
}
|
|
90
170
|
/** Insert or update memory with embedding - Issue #32 #3.3: 使用事务 */
|
|
91
171
|
async upsert(entry, projectPath) {
|
|
92
172
|
const projectKey = projectPath ? this.projectKey(projectPath) : 'global';
|
|
@@ -102,9 +182,14 @@ class VectorStore {
|
|
|
102
182
|
});
|
|
103
183
|
// Generate embedding first (before transaction)
|
|
104
184
|
if (this.initialized) {
|
|
185
|
+
let vector;
|
|
105
186
|
try {
|
|
106
|
-
|
|
107
|
-
|
|
187
|
+
vector = await this.embeddingService.embed(entry.content);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
// An embedding failure must not lose the memory entirely. Degrade to
|
|
191
|
+
// a text-only memory (search falls back to substring matching).
|
|
192
|
+
console.warn(`[VectorStore] Embedding failed; storing text-only: ${errorMessage(err)}`);
|
|
108
193
|
upsertTransaction({
|
|
109
194
|
id: memoryId,
|
|
110
195
|
name: entry.name,
|
|
@@ -115,19 +200,51 @@ class VectorStore {
|
|
|
115
200
|
createdAt: entry.createdAt,
|
|
116
201
|
updatedAt: entry.updatedAt,
|
|
117
202
|
});
|
|
118
|
-
|
|
119
|
-
this.deleteVectorsForMemoryIds([memoryId]);
|
|
120
|
-
// Insert new vector
|
|
121
|
-
const vectorStmt = this.db.prepare(`INSERT INTO vec_memories (embedding) VALUES (?)`);
|
|
122
|
-
const result = vectorStmt.run(JSON.stringify(vector));
|
|
123
|
-
// Link vector to memory
|
|
124
|
-
this.db.prepare('INSERT INTO memory_vectors (memory_id, vector_rowid) VALUES (?, ?)').run(memoryId, result.lastInsertRowid);
|
|
203
|
+
return;
|
|
125
204
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
205
|
+
// Reject degenerate embeddings (all-zero / NaN / wrong dimension).
|
|
206
|
+
// Storing them would make failed embeddings rank #1 at score 1.0 in
|
|
207
|
+
// semantic search and silently poison results (#47 item 2). Degrade
|
|
208
|
+
// to a text-only memory instead of writing a bogus vector.
|
|
209
|
+
if (!isValidEmbedding(vector, this.embeddingService.getDimension())) {
|
|
210
|
+
console.warn(`[VectorStore] Skipping degenerate embedding for ${memoryId}; storing text-only`);
|
|
211
|
+
upsertTransaction({
|
|
212
|
+
id: memoryId,
|
|
213
|
+
name: entry.name,
|
|
214
|
+
type: entry.type,
|
|
215
|
+
content: entry.content,
|
|
216
|
+
description: entry.description || entry.content.slice(0, 100),
|
|
217
|
+
projectKey,
|
|
218
|
+
createdAt: entry.createdAt,
|
|
219
|
+
updatedAt: entry.updatedAt,
|
|
220
|
+
});
|
|
221
|
+
return;
|
|
130
222
|
}
|
|
223
|
+
// Single transaction for the whole write so a vector-insert failure
|
|
224
|
+
// rolls back the memory row too — previously the memory row committed
|
|
225
|
+
// first and a later vec insert failure left an orphan with no vector,
|
|
226
|
+
// or a vector pointing at a rolled-back memory (#81).
|
|
227
|
+
const data = {
|
|
228
|
+
id: memoryId,
|
|
229
|
+
name: entry.name,
|
|
230
|
+
type: entry.type,
|
|
231
|
+
content: entry.content,
|
|
232
|
+
description: entry.description || entry.content.slice(0, 100),
|
|
233
|
+
projectKey,
|
|
234
|
+
createdAt: entry.createdAt,
|
|
235
|
+
updatedAt: entry.updatedAt,
|
|
236
|
+
};
|
|
237
|
+
const writeMemoryAndVector = this.db.transaction((d, vec) => {
|
|
238
|
+
upsertTransaction(d);
|
|
239
|
+
this.deleteVectorsForMemoryIds([d.id]);
|
|
240
|
+
const result = this.db
|
|
241
|
+
.prepare(`INSERT INTO vec_memories (embedding) VALUES (?)`)
|
|
242
|
+
.run(JSON.stringify(vec));
|
|
243
|
+
this.db
|
|
244
|
+
.prepare('INSERT INTO memory_vectors (memory_id, vector_rowid) VALUES (?, ?)')
|
|
245
|
+
.run(d.id, result.lastInsertRowid);
|
|
246
|
+
});
|
|
247
|
+
writeMemoryAndVector(data, vector);
|
|
131
248
|
}
|
|
132
249
|
else {
|
|
133
250
|
// No vector search - just write memory
|
|
@@ -212,7 +329,7 @@ class VectorStore {
|
|
|
212
329
|
}));
|
|
213
330
|
}
|
|
214
331
|
catch (err) {
|
|
215
|
-
console.warn(`[VectorStore] Semantic search failed: ${err
|
|
332
|
+
console.warn(`[VectorStore] Semantic search failed: ${errorMessage(err)}`);
|
|
216
333
|
return this.textSearch(query, limit, projectKeys);
|
|
217
334
|
}
|
|
218
335
|
}
|
|
@@ -347,6 +464,10 @@ function getVectorStore(config) {
|
|
|
347
464
|
}
|
|
348
465
|
return defaultStore;
|
|
349
466
|
}
|
|
467
|
+
/** Return the live singleton only when it owns this exact database. */
|
|
468
|
+
function peekVectorStore(dbPath) {
|
|
469
|
+
return defaultStore?.ownsDatabase(dbPath) ? defaultStore : undefined;
|
|
470
|
+
}
|
|
350
471
|
function resetVectorStore() {
|
|
351
472
|
if (defaultStore) {
|
|
352
473
|
defaultStore.close();
|