universal-agent-protocol 0.5.0
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/LICENSE +21 -0
- package/README.md +462 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +656 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +506 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/tool-calls.d.ts +3 -0
- package/dist/bin/tool-calls.d.ts.map +1 -0
- package/dist/bin/tool-calls.js +4 -0
- package/dist/bin/tool-calls.js.map +1 -0
- package/dist/cli/agent.d.ts +20 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +434 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/analyze.d.ts +7 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +103 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/coord.d.ts +7 -0
- package/dist/cli/coord.d.ts.map +1 -0
- package/dist/cli/coord.js +138 -0
- package/dist/cli/coord.js.map +1 -0
- package/dist/cli/dashboard.d.ts +8 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +704 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/deploy.d.ts +19 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +267 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/droids.d.ts +9 -0
- package/dist/cli/droids.d.ts.map +1 -0
- package/dist/cli/droids.js +227 -0
- package/dist/cli/droids.js.map +1 -0
- package/dist/cli/generate.d.ts +17 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +432 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/hooks.d.ts +9 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +374 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +11 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +316 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-router.d.ts +16 -0
- package/dist/cli/mcp-router.d.ts.map +1 -0
- package/dist/cli/mcp-router.js +143 -0
- package/dist/cli/mcp-router.js.map +1 -0
- package/dist/cli/memory.d.ts +24 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +877 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/model.d.ts +15 -0
- package/dist/cli/model.d.ts.map +1 -0
- package/dist/cli/model.js +270 -0
- package/dist/cli/model.js.map +1 -0
- package/dist/cli/patterns.d.ts +26 -0
- package/dist/cli/patterns.d.ts.map +1 -0
- package/dist/cli/patterns.js +587 -0
- package/dist/cli/patterns.js.map +1 -0
- package/dist/cli/setup-mcp-router.d.ts +8 -0
- package/dist/cli/setup-mcp-router.d.ts.map +1 -0
- package/dist/cli/setup-mcp-router.js +163 -0
- package/dist/cli/setup-mcp-router.js.map +1 -0
- package/dist/cli/setup.d.ts +13 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +146 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/sync.d.ts +7 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +26 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/task.d.ts +33 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +616 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/tool-calls.d.ts +8 -0
- package/dist/cli/tool-calls.d.ts.map +1 -0
- package/dist/cli/tool-calls.js +239 -0
- package/dist/cli/tool-calls.js.map +1 -0
- package/dist/cli/update.d.ts +10 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +300 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/visualize.d.ts +77 -0
- package/dist/cli/visualize.d.ts.map +1 -0
- package/dist/cli/visualize.js +287 -0
- package/dist/cli/visualize.js.map +1 -0
- package/dist/cli/worktree.d.ts +9 -0
- package/dist/cli/worktree.d.ts.map +1 -0
- package/dist/cli/worktree.js +175 -0
- package/dist/cli/worktree.js.map +1 -0
- package/dist/coordination/capability-router.d.ts +79 -0
- package/dist/coordination/capability-router.d.ts.map +1 -0
- package/dist/coordination/capability-router.js +324 -0
- package/dist/coordination/capability-router.js.map +1 -0
- package/dist/coordination/database.d.ts +13 -0
- package/dist/coordination/database.d.ts.map +1 -0
- package/dist/coordination/database.js +131 -0
- package/dist/coordination/database.js.map +1 -0
- package/dist/coordination/deploy-batcher.d.ts +101 -0
- package/dist/coordination/deploy-batcher.d.ts.map +1 -0
- package/dist/coordination/deploy-batcher.js +565 -0
- package/dist/coordination/deploy-batcher.js.map +1 -0
- package/dist/coordination/index.d.ts +5 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +5 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/service.d.ts +81 -0
- package/dist/coordination/service.d.ts.map +1 -0
- package/dist/coordination/service.js +603 -0
- package/dist/coordination/service.js.map +1 -0
- package/dist/generators/claude-md.d.ts +3 -0
- package/dist/generators/claude-md.d.ts.map +1 -0
- package/dist/generators/claude-md.js +977 -0
- package/dist/generators/claude-md.js.map +1 -0
- package/dist/generators/template-loader.d.ts +105 -0
- package/dist/generators/template-loader.d.ts.map +1 -0
- package/dist/generators/template-loader.js +291 -0
- package/dist/generators/template-loader.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-router/config/parser.d.ts +9 -0
- package/dist/mcp-router/config/parser.d.ts.map +1 -0
- package/dist/mcp-router/config/parser.js +174 -0
- package/dist/mcp-router/config/parser.js.map +1 -0
- package/dist/mcp-router/executor/client.d.ts +31 -0
- package/dist/mcp-router/executor/client.d.ts.map +1 -0
- package/dist/mcp-router/executor/client.js +187 -0
- package/dist/mcp-router/executor/client.js.map +1 -0
- package/dist/mcp-router/index.d.ts +22 -0
- package/dist/mcp-router/index.d.ts.map +1 -0
- package/dist/mcp-router/index.js +18 -0
- package/dist/mcp-router/index.js.map +1 -0
- package/dist/mcp-router/output-compressor.d.ts +26 -0
- package/dist/mcp-router/output-compressor.d.ts.map +1 -0
- package/dist/mcp-router/output-compressor.js +236 -0
- package/dist/mcp-router/output-compressor.js.map +1 -0
- package/dist/mcp-router/search/fuzzy.d.ts +26 -0
- package/dist/mcp-router/search/fuzzy.d.ts.map +1 -0
- package/dist/mcp-router/search/fuzzy.js +94 -0
- package/dist/mcp-router/search/fuzzy.js.map +1 -0
- package/dist/mcp-router/server.d.ts +50 -0
- package/dist/mcp-router/server.d.ts.map +1 -0
- package/dist/mcp-router/server.js +229 -0
- package/dist/mcp-router/server.js.map +1 -0
- package/dist/mcp-router/session-stats.d.ts +37 -0
- package/dist/mcp-router/session-stats.d.ts.map +1 -0
- package/dist/mcp-router/session-stats.js +56 -0
- package/dist/mcp-router/session-stats.js.map +1 -0
- package/dist/mcp-router/tools/discover.d.ts +37 -0
- package/dist/mcp-router/tools/discover.d.ts.map +1 -0
- package/dist/mcp-router/tools/discover.js +65 -0
- package/dist/mcp-router/tools/discover.js.map +1 -0
- package/dist/mcp-router/tools/execute.d.ts +43 -0
- package/dist/mcp-router/tools/execute.d.ts.map +1 -0
- package/dist/mcp-router/tools/execute.js +103 -0
- package/dist/mcp-router/tools/execute.js.map +1 -0
- package/dist/mcp-router/types.d.ts +62 -0
- package/dist/mcp-router/types.d.ts.map +1 -0
- package/dist/mcp-router/types.js +6 -0
- package/dist/mcp-router/types.js.map +1 -0
- package/dist/memory/adaptive-context.d.ts +146 -0
- package/dist/memory/adaptive-context.d.ts.map +1 -0
- package/dist/memory/adaptive-context.js +1022 -0
- package/dist/memory/adaptive-context.js.map +1 -0
- package/dist/memory/agent-scoped-memory.d.ts +67 -0
- package/dist/memory/agent-scoped-memory.d.ts.map +1 -0
- package/dist/memory/agent-scoped-memory.js +126 -0
- package/dist/memory/agent-scoped-memory.js.map +1 -0
- package/dist/memory/backends/base.d.ts +18 -0
- package/dist/memory/backends/base.d.ts.map +1 -0
- package/dist/memory/backends/base.js +2 -0
- package/dist/memory/backends/base.js.map +1 -0
- package/dist/memory/backends/factory.d.ts +4 -0
- package/dist/memory/backends/factory.d.ts.map +1 -0
- package/dist/memory/backends/factory.js +53 -0
- package/dist/memory/backends/factory.js.map +1 -0
- package/dist/memory/backends/github.d.ts +22 -0
- package/dist/memory/backends/github.d.ts.map +1 -0
- package/dist/memory/backends/github.js +118 -0
- package/dist/memory/backends/github.js.map +1 -0
- package/dist/memory/backends/qdrant-cloud.d.ts +32 -0
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
- package/dist/memory/backends/qdrant-cloud.js +168 -0
- package/dist/memory/backends/qdrant-cloud.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +74 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +289 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/correction-propagator.d.ts +44 -0
- package/dist/memory/correction-propagator.d.ts.map +1 -0
- package/dist/memory/correction-propagator.js +156 -0
- package/dist/memory/correction-propagator.js.map +1 -0
- package/dist/memory/daily-log.d.ts +67 -0
- package/dist/memory/daily-log.d.ts.map +1 -0
- package/dist/memory/daily-log.js +143 -0
- package/dist/memory/daily-log.js.map +1 -0
- package/dist/memory/dynamic-retrieval.d.ts +110 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
- package/dist/memory/dynamic-retrieval.js +688 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -0
- package/dist/memory/embeddings.d.ts +116 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +461 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/hierarchical-memory.d.ts +141 -0
- package/dist/memory/hierarchical-memory.d.ts.map +1 -0
- package/dist/memory/hierarchical-memory.js +477 -0
- package/dist/memory/hierarchical-memory.js.map +1 -0
- package/dist/memory/memory-consolidator.d.ts +124 -0
- package/dist/memory/memory-consolidator.d.ts.map +1 -0
- package/dist/memory/memory-consolidator.js +514 -0
- package/dist/memory/memory-consolidator.js.map +1 -0
- package/dist/memory/memory-maintenance.d.ts +39 -0
- package/dist/memory/memory-maintenance.d.ts.map +1 -0
- package/dist/memory/memory-maintenance.js +305 -0
- package/dist/memory/memory-maintenance.js.map +1 -0
- package/dist/memory/model-router.d.ts +102 -0
- package/dist/memory/model-router.d.ts.map +1 -0
- package/dist/memory/model-router.js +448 -0
- package/dist/memory/model-router.js.map +1 -0
- package/dist/memory/multi-view-memory.d.ts +134 -0
- package/dist/memory/multi-view-memory.d.ts.map +1 -0
- package/dist/memory/multi-view-memory.js +420 -0
- package/dist/memory/multi-view-memory.js.map +1 -0
- package/dist/memory/prepopulate.d.ts +76 -0
- package/dist/memory/prepopulate.d.ts.map +1 -0
- package/dist/memory/prepopulate.js +815 -0
- package/dist/memory/prepopulate.js.map +1 -0
- package/dist/memory/semantic-compression.d.ts +77 -0
- package/dist/memory/semantic-compression.d.ts.map +1 -0
- package/dist/memory/semantic-compression.js +348 -0
- package/dist/memory/semantic-compression.js.map +1 -0
- package/dist/memory/serverless-qdrant.d.ts +102 -0
- package/dist/memory/serverless-qdrant.d.ts.map +1 -0
- package/dist/memory/serverless-qdrant.js +369 -0
- package/dist/memory/serverless-qdrant.js.map +1 -0
- package/dist/memory/short-term/factory.d.ts +26 -0
- package/dist/memory/short-term/factory.d.ts.map +1 -0
- package/dist/memory/short-term/factory.js +28 -0
- package/dist/memory/short-term/factory.js.map +1 -0
- package/dist/memory/short-term/indexeddb.d.ts +25 -0
- package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
- package/dist/memory/short-term/indexeddb.js +64 -0
- package/dist/memory/short-term/indexeddb.js.map +1 -0
- package/dist/memory/short-term/schema.d.ts +6 -0
- package/dist/memory/short-term/schema.d.ts.map +1 -0
- package/dist/memory/short-term/schema.js +119 -0
- package/dist/memory/short-term/schema.js.map +1 -0
- package/dist/memory/short-term/sqlite.d.ts +50 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -0
- package/dist/memory/short-term/sqlite.js +221 -0
- package/dist/memory/short-term/sqlite.js.map +1 -0
- package/dist/memory/speculative-cache.d.ts +111 -0
- package/dist/memory/speculative-cache.d.ts.map +1 -0
- package/dist/memory/speculative-cache.js +409 -0
- package/dist/memory/speculative-cache.js.map +1 -0
- package/dist/memory/task-classifier.d.ts +34 -0
- package/dist/memory/task-classifier.d.ts.map +1 -0
- package/dist/memory/task-classifier.js +300 -0
- package/dist/memory/task-classifier.js.map +1 -0
- package/dist/memory/terminal-bench-knowledge.d.ts +48 -0
- package/dist/memory/terminal-bench-knowledge.d.ts.map +1 -0
- package/dist/memory/terminal-bench-knowledge.js +399 -0
- package/dist/memory/terminal-bench-knowledge.js.map +1 -0
- package/dist/memory/write-gate.d.ts +39 -0
- package/dist/memory/write-gate.d.ts.map +1 -0
- package/dist/memory/write-gate.js +190 -0
- package/dist/memory/write-gate.js.map +1 -0
- package/dist/models/executor.d.ts +130 -0
- package/dist/models/executor.d.ts.map +1 -0
- package/dist/models/executor.js +383 -0
- package/dist/models/executor.js.map +1 -0
- package/dist/models/index.d.ts +15 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +17 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/planner.d.ts +71 -0
- package/dist/models/planner.d.ts.map +1 -0
- package/dist/models/planner.js +344 -0
- package/dist/models/planner.js.map +1 -0
- package/dist/models/router.d.ts +75 -0
- package/dist/models/router.d.ts.map +1 -0
- package/dist/models/router.js +344 -0
- package/dist/models/router.js.map +1 -0
- package/dist/models/types.d.ts +370 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +181 -0
- package/dist/models/types.js.map +1 -0
- package/dist/tasks/coordination.d.ts +74 -0
- package/dist/tasks/coordination.d.ts.map +1 -0
- package/dist/tasks/coordination.js +237 -0
- package/dist/tasks/coordination.js.map +1 -0
- package/dist/tasks/database.d.ts +14 -0
- package/dist/tasks/database.d.ts.map +1 -0
- package/dist/tasks/database.js +128 -0
- package/dist/tasks/database.js.map +1 -0
- package/dist/tasks/index.d.ts +5 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +5 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/service.d.ts +39 -0
- package/dist/tasks/service.d.ts.map +1 -0
- package/dist/tasks/service.js +582 -0
- package/dist/tasks/service.js.map +1 -0
- package/dist/tasks/types.d.ts +224 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +64 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/types/analysis.d.ts +82 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +3023 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +292 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/coordination.d.ts +240 -0
- package/dist/types/coordination.d.ts.map +1 -0
- package/dist/types/coordination.js +43 -0
- package/dist/types/coordination.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/calculate-average.d.ts +15 -0
- package/dist/utils/calculate-average.d.ts.map +1 -0
- package/dist/utils/calculate-average.js +21 -0
- package/dist/utils/calculate-average.js.map +1 -0
- package/dist/utils/config-manager.d.ts +30 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +41 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/dijkstra.d.ts +17 -0
- package/dist/utils/dijkstra.d.ts.map +1 -0
- package/dist/utils/dijkstra.js +91 -0
- package/dist/utils/dijkstra.js.map +1 -0
- package/dist/utils/fetch-with-retry.d.ts +5 -0
- package/dist/utils/fetch-with-retry.d.ts.map +1 -0
- package/dist/utils/fetch-with-retry.js +61 -0
- package/dist/utils/fetch-with-retry.js.map +1 -0
- package/dist/utils/merge-claude-md.d.ts +28 -0
- package/dist/utils/merge-claude-md.d.ts.map +1 -0
- package/dist/utils/merge-claude-md.js +342 -0
- package/dist/utils/merge-claude-md.js.map +1 -0
- package/dist/utils/order-processor-refactored.d.ts +126 -0
- package/dist/utils/order-processor-refactored.d.ts.map +1 -0
- package/dist/utils/order-processor-refactored.js +165 -0
- package/dist/utils/order-processor-refactored.js.map +1 -0
- package/dist/utils/order-processor-strategy.d.ts +72 -0
- package/dist/utils/order-processor-strategy.d.ts.map +1 -0
- package/dist/utils/order-processor-strategy.js +158 -0
- package/dist/utils/order-processor-strategy.js.map +1 -0
- package/dist/utils/order-processor.d.ts +242 -0
- package/dist/utils/order-processor.d.ts.map +1 -0
- package/dist/utils/order-processor.js +370 -0
- package/dist/utils/order-processor.js.map +1 -0
- package/dist/utils/rate-limiter-simple.d.ts +58 -0
- package/dist/utils/rate-limiter-simple.d.ts.map +1 -0
- package/dist/utils/rate-limiter-simple.js +100 -0
- package/dist/utils/rate-limiter-simple.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +62 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +150 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/string-similarity.d.ts +37 -0
- package/dist/utils/string-similarity.d.ts.map +1 -0
- package/dist/utils/string-similarity.js +114 -0
- package/dist/utils/string-similarity.js.map +1 -0
- package/dist/utils/validate-json.d.ts +51 -0
- package/dist/utils/validate-json.d.ts.map +1 -0
- package/dist/utils/validate-json.js +99 -0
- package/dist/utils/validate-json.js.map +1 -0
- package/package.json +96 -0
- package/templates/CLAUDE.template.md +11 -0
- package/templates/CLAUDE_ARCHITECTURE.template.md +103 -0
- package/templates/CLAUDE_CODING.template.md +125 -0
- package/templates/CLAUDE_DROIDS.template.md +109 -0
- package/templates/CLAUDE_MEMORY.template.md +130 -0
- package/templates/CLAUDE_WORKFLOWS.template.md +136 -0
- package/templates/PROJECT.template.md +209 -0
- package/templates/SCHEMA.md +57 -0
- package/templates/archive/CLAUDE.template.root-v6.md +762 -0
- package/templates/archive/CLAUDE.template.v6.md +762 -0
- package/templates/hooks/pre-compact.sh +68 -0
- package/templates/hooks/session-start.sh +106 -0
- package/tools/agents/README.md +224 -0
- package/tools/agents/UAP/README.md +351 -0
- package/tools/agents/UAP/__init__.py +9 -0
- package/tools/agents/UAP/cli.py +675 -0
- package/tools/agents/UAP/version.py +2 -0
- package/tools/agents/benchmarks/benchmark_memory_systems.py +637 -0
- package/tools/agents/benchmarks/results/benchmark_20260106_064817.json +170 -0
- package/tools/agents/benchmarks/results/benchmark_20260106_064817.md +51 -0
- package/tools/agents/config/chat_template.jinja +172 -0
- package/tools/agents/docker-compose.qdrant.yml +24 -0
- package/tools/agents/migrations/apply.py +256 -0
- package/tools/agents/scripts/fix_qwen_chat_template.py +314 -0
- package/tools/agents/scripts/init_qdrant.py +151 -0
- package/tools/agents/scripts/memory_migration.py +518 -0
- package/tools/agents/scripts/migrate_memory_to_qdrant.py +113 -0
- package/tools/agents/scripts/query_memory.py +189 -0
- package/tools/agents/scripts/qwen_tool_call_test.py +419 -0
- package/tools/agents/scripts/qwen_tool_call_wrapper.py +517 -0
- package/tools/agents/scripts/start-services.sh +96 -0
- package/tools/agents/tests/test_uap_compliance.py +257 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
3
|
+
import { dirname } from 'path';
|
|
4
|
+
export function ensureShortTermSchema(db) {
|
|
5
|
+
db.exec(`
|
|
6
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
7
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
8
|
+
timestamp TEXT NOT NULL,
|
|
9
|
+
type TEXT NOT NULL CHECK(type IN ('action', 'observation', 'thought', 'goal')),
|
|
10
|
+
content TEXT NOT NULL,
|
|
11
|
+
project_id TEXT NOT NULL DEFAULT 'default',
|
|
12
|
+
importance INTEGER NOT NULL DEFAULT 5
|
|
13
|
+
);
|
|
14
|
+
CREATE INDEX IF NOT EXISTS idx_memories_project_id ON memories(project_id);
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_memories_timestamp ON memories(timestamp);
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_memories_project_type ON memories(project_id, type);
|
|
18
|
+
`);
|
|
19
|
+
// Migration: add importance column if missing (for existing databases created before importance was added)
|
|
20
|
+
try {
|
|
21
|
+
const cols = db.prepare("PRAGMA table_info(memories)").all();
|
|
22
|
+
if (!cols.some(c => c.name === 'importance')) {
|
|
23
|
+
db.exec(`ALTER TABLE memories ADD COLUMN importance INTEGER NOT NULL DEFAULT 5`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Ignore migration errors - column may already exist
|
|
28
|
+
}
|
|
29
|
+
// Create importance index after migration ensures column exists
|
|
30
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_importance ON memories(importance DESC)`);
|
|
31
|
+
// Enable WAL mode for concurrent reads and better write performance
|
|
32
|
+
db.pragma('journal_mode = WAL');
|
|
33
|
+
db.pragma('synchronous = NORMAL');
|
|
34
|
+
db.pragma('mmap_size = 268435456');
|
|
35
|
+
db.pragma('cache_size = -64000');
|
|
36
|
+
// Create FTS5 virtual table for full-text search
|
|
37
|
+
db.exec(`
|
|
38
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
39
|
+
content,
|
|
40
|
+
type,
|
|
41
|
+
content_rowid=id,
|
|
42
|
+
tokenize='porter unicode61'
|
|
43
|
+
);
|
|
44
|
+
`);
|
|
45
|
+
// Populate FTS if empty but memories exist
|
|
46
|
+
const ftsCount = db.prepare('SELECT COUNT(*) as c FROM memories_fts').get().c;
|
|
47
|
+
const memCount = db.prepare('SELECT COUNT(*) as c FROM memories').get().c;
|
|
48
|
+
if (ftsCount === 0 && memCount > 0) {
|
|
49
|
+
db.exec(`
|
|
50
|
+
INSERT INTO memories_fts(rowid, content, type)
|
|
51
|
+
SELECT id, content, type FROM memories;
|
|
52
|
+
`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function ensureSessionSchema(db) {
|
|
56
|
+
db.exec(`
|
|
57
|
+
CREATE TABLE IF NOT EXISTS session_memories (
|
|
58
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
59
|
+
session_id TEXT NOT NULL,
|
|
60
|
+
timestamp TEXT NOT NULL,
|
|
61
|
+
type TEXT NOT NULL,
|
|
62
|
+
content TEXT NOT NULL,
|
|
63
|
+
importance INTEGER DEFAULT 5
|
|
64
|
+
);
|
|
65
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_session_unique ON session_memories(session_id, content);
|
|
66
|
+
CREATE INDEX IF NOT EXISTS idx_session_id ON session_memories(session_id);
|
|
67
|
+
CREATE INDEX IF NOT EXISTS idx_session_timestamp ON session_memories(timestamp);
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_session_importance ON session_memories(importance DESC);
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_session_id_importance ON session_memories(session_id, importance DESC);
|
|
70
|
+
`);
|
|
71
|
+
// Create FTS5 for session memories
|
|
72
|
+
db.exec(`
|
|
73
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS session_memories_fts USING fts5(
|
|
74
|
+
content,
|
|
75
|
+
type,
|
|
76
|
+
content_rowid=id,
|
|
77
|
+
tokenize='porter unicode61'
|
|
78
|
+
);
|
|
79
|
+
`);
|
|
80
|
+
}
|
|
81
|
+
export function ensureKnowledgeSchema(db) {
|
|
82
|
+
db.exec(`
|
|
83
|
+
CREATE TABLE IF NOT EXISTS entities (
|
|
84
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
85
|
+
type TEXT NOT NULL,
|
|
86
|
+
name TEXT NOT NULL,
|
|
87
|
+
first_seen TEXT NOT NULL,
|
|
88
|
+
last_seen TEXT NOT NULL,
|
|
89
|
+
mention_count INTEGER NOT NULL DEFAULT 1,
|
|
90
|
+
UNIQUE(type, name)
|
|
91
|
+
);
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(type);
|
|
93
|
+
|
|
94
|
+
CREATE TABLE IF NOT EXISTS relationships (
|
|
95
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
96
|
+
source_id INTEGER NOT NULL,
|
|
97
|
+
target_id INTEGER NOT NULL,
|
|
98
|
+
relation TEXT NOT NULL,
|
|
99
|
+
timestamp TEXT NOT NULL,
|
|
100
|
+
UNIQUE(source_id, target_id, relation),
|
|
101
|
+
FOREIGN KEY (source_id) REFERENCES entities(id),
|
|
102
|
+
FOREIGN KEY (target_id) REFERENCES entities(id)
|
|
103
|
+
);
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_source ON relationships(source_id);
|
|
105
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_target ON relationships(target_id);
|
|
106
|
+
`);
|
|
107
|
+
}
|
|
108
|
+
export function initializeMemoryDatabase(dbPath) {
|
|
109
|
+
const dir = dirname(dbPath);
|
|
110
|
+
if (!existsSync(dir)) {
|
|
111
|
+
mkdirSync(dir, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
const db = new Database(dbPath);
|
|
114
|
+
ensureShortTermSchema(db);
|
|
115
|
+
ensureSessionSchema(db);
|
|
116
|
+
ensureKnowledgeSchema(db);
|
|
117
|
+
db.close();
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;GAaP,CAAC,CAAC;IAEH,2GAA2G;IAC3G,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAC;QACxF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YAC7C,EAAE,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IAED,gEAAgE;IAChE,EAAE,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IAE3F,oEAAoE;IACpE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,iDAAiD;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAC7F,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACnC,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAqB;IACvD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAcP,CAAC,CAAC;IAEH,mCAAmC;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;GAwBP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ShortTermMemoryBackend } from './factory.js';
|
|
2
|
+
interface ShortTermMemory {
|
|
3
|
+
id?: number;
|
|
4
|
+
timestamp: string;
|
|
5
|
+
type: 'action' | 'observation' | 'thought' | 'goal';
|
|
6
|
+
content: string;
|
|
7
|
+
projectId?: string;
|
|
8
|
+
importance?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class SQLiteShortTermMemory implements ShortTermMemoryBackend {
|
|
11
|
+
private db;
|
|
12
|
+
private projectId;
|
|
13
|
+
private maxEntries;
|
|
14
|
+
private cache;
|
|
15
|
+
constructor(config: {
|
|
16
|
+
dbPath: string;
|
|
17
|
+
projectId?: string;
|
|
18
|
+
maxEntries?: number;
|
|
19
|
+
});
|
|
20
|
+
private initSchema;
|
|
21
|
+
store(type: ShortTermMemory['type'], content: string, importance?: number): Promise<void>;
|
|
22
|
+
storeBatch(entries: Array<{
|
|
23
|
+
type: ShortTermMemory['type'];
|
|
24
|
+
content: string;
|
|
25
|
+
timestamp?: string;
|
|
26
|
+
importance?: number;
|
|
27
|
+
}>): Promise<void>;
|
|
28
|
+
getRecent(limit?: number): Promise<ShortTermMemory[]>;
|
|
29
|
+
query(searchTerm: string, limit?: number): Promise<ShortTermMemory[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Sanitize search term for FTS5 query syntax
|
|
32
|
+
* Wraps each word in double quotes to prevent FTS5 syntax errors from
|
|
33
|
+
* special characters like AND, OR, NOT, *, -, parentheses, etc.
|
|
34
|
+
*/
|
|
35
|
+
private sanitizeFTS5Query;
|
|
36
|
+
private queryWithoutCache;
|
|
37
|
+
getByType(type: ShortTermMemory['type'], limit?: number): Promise<ShortTermMemory[]>;
|
|
38
|
+
count(): Promise<number>;
|
|
39
|
+
private prune;
|
|
40
|
+
clear(): Promise<void>;
|
|
41
|
+
close(): Promise<void>;
|
|
42
|
+
exportAll(): Promise<ShortTermMemory[]>;
|
|
43
|
+
importAll(memories: Array<{
|
|
44
|
+
type: ShortTermMemory['type'];
|
|
45
|
+
content: string;
|
|
46
|
+
timestamp?: string;
|
|
47
|
+
}>): Promise<number>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/memory/short-term/sqlite.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAgF;gBAEjF,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAe/E,OAAO,CAAC,UAAU;IAIZ,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5F,UAAU,CACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC1G,OAAO,CAAC,IAAI,CAAC;IAuBV,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWjD,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAwDvE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;YAOX,iBAAiB;IA2BzB,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWhF,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAUhB,KAAK;IAmBb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvC,SAAS,CACb,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACtF,OAAO,CAAC,MAAM,CAAC;CAInB"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
3
|
+
import { dirname } from 'path';
|
|
4
|
+
import { ensureShortTermSchema } from './schema.js';
|
|
5
|
+
import { getSpeculativeCache } from '../speculative-cache.js';
|
|
6
|
+
export class SQLiteShortTermMemory {
|
|
7
|
+
db;
|
|
8
|
+
projectId;
|
|
9
|
+
maxEntries;
|
|
10
|
+
cache = getSpeculativeCache({ maxEntries: 50, ttlMs: 120000, preWarmEnabled: true });
|
|
11
|
+
constructor(config) {
|
|
12
|
+
// Ensure directory exists
|
|
13
|
+
const dir = dirname(config.dbPath);
|
|
14
|
+
if (!existsSync(dir)) {
|
|
15
|
+
mkdirSync(dir, { recursive: true });
|
|
16
|
+
}
|
|
17
|
+
this.db = new Database(config.dbPath);
|
|
18
|
+
this.projectId = config.projectId || 'default';
|
|
19
|
+
this.maxEntries = config.maxEntries || 50;
|
|
20
|
+
// Initialize schema
|
|
21
|
+
this.initSchema();
|
|
22
|
+
}
|
|
23
|
+
initSchema() {
|
|
24
|
+
ensureShortTermSchema(this.db);
|
|
25
|
+
}
|
|
26
|
+
async store(type, content, importance = 5) {
|
|
27
|
+
const timestamp = new Date().toISOString();
|
|
28
|
+
const stmt = this.db.prepare(`
|
|
29
|
+
INSERT INTO memories (timestamp, type, content, project_id, importance)
|
|
30
|
+
VALUES (?, ?, ?, ?, ?)
|
|
31
|
+
`);
|
|
32
|
+
const result = stmt.run(timestamp, type, content, this.projectId, importance);
|
|
33
|
+
// Update FTS5 index
|
|
34
|
+
try {
|
|
35
|
+
const ftsStmt = this.db.prepare(`
|
|
36
|
+
INSERT INTO memories_fts(rowid, content, type)
|
|
37
|
+
VALUES (?, ?, ?)
|
|
38
|
+
`);
|
|
39
|
+
ftsStmt.run(result.lastInsertRowid, content, type);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// FTS5 not available, ignore
|
|
43
|
+
}
|
|
44
|
+
// Auto-prune if exceeds maxEntries
|
|
45
|
+
await this.prune();
|
|
46
|
+
}
|
|
47
|
+
async storeBatch(entries) {
|
|
48
|
+
const stmt = this.db.prepare(`
|
|
49
|
+
INSERT INTO memories (timestamp, type, content, project_id, importance)
|
|
50
|
+
VALUES (?, ?, ?, ?, ?)
|
|
51
|
+
`);
|
|
52
|
+
const insertMany = this.db.transaction((items) => {
|
|
53
|
+
for (const entry of items) {
|
|
54
|
+
stmt.run(entry.timestamp || new Date().toISOString(), entry.type, entry.content, this.projectId, entry.importance ?? 5);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
insertMany(entries);
|
|
58
|
+
await this.prune();
|
|
59
|
+
}
|
|
60
|
+
async getRecent(limit = 50) {
|
|
61
|
+
const stmt = this.db.prepare(`
|
|
62
|
+
SELECT id, timestamp, type, content, project_id as projectId, importance
|
|
63
|
+
FROM memories
|
|
64
|
+
WHERE project_id = ?
|
|
65
|
+
ORDER BY id DESC
|
|
66
|
+
LIMIT ?
|
|
67
|
+
`);
|
|
68
|
+
return stmt.all(this.projectId, limit);
|
|
69
|
+
}
|
|
70
|
+
async query(searchTerm, limit = 10) {
|
|
71
|
+
// Check speculative cache first
|
|
72
|
+
const cacheKey = `${this.projectId}:${searchTerm}:${limit}`;
|
|
73
|
+
const cached = this.cache.get(cacheKey);
|
|
74
|
+
if (cached) {
|
|
75
|
+
return cached.result;
|
|
76
|
+
}
|
|
77
|
+
let results = [];
|
|
78
|
+
// Sanitize search term for FTS5 - escape special characters and wrap in quotes
|
|
79
|
+
// FTS5 special chars: AND OR NOT * " - ( ) NEAR
|
|
80
|
+
const sanitizedTerm = this.sanitizeFTS5Query(searchTerm);
|
|
81
|
+
// Try FTS5 first for faster full-text search
|
|
82
|
+
try {
|
|
83
|
+
const ftsStmt = this.db.prepare(`
|
|
84
|
+
SELECT m.id, m.timestamp, m.type, m.content, m.project_id as projectId, m.importance
|
|
85
|
+
FROM memories_fts fts
|
|
86
|
+
JOIN memories m ON fts.rowid = m.id
|
|
87
|
+
WHERE memories_fts MATCH ? AND m.project_id = ?
|
|
88
|
+
ORDER BY rank
|
|
89
|
+
LIMIT ?
|
|
90
|
+
`);
|
|
91
|
+
results = ftsStmt.all(sanitizedTerm, this.projectId, limit);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// FTS5 not available or query syntax error, fall through to LIKE
|
|
95
|
+
}
|
|
96
|
+
// Fallback to LIKE search if FTS5 returned nothing
|
|
97
|
+
if (results.length === 0) {
|
|
98
|
+
const stmt = this.db.prepare(`
|
|
99
|
+
SELECT id, timestamp, type, content, project_id as projectId, importance
|
|
100
|
+
FROM memories
|
|
101
|
+
WHERE project_id = ? AND content LIKE ?
|
|
102
|
+
ORDER BY id DESC
|
|
103
|
+
LIMIT ?
|
|
104
|
+
`);
|
|
105
|
+
results = stmt.all(this.projectId, `%${searchTerm}%`, limit);
|
|
106
|
+
}
|
|
107
|
+
// Store in cache
|
|
108
|
+
this.cache.set(cacheKey, results);
|
|
109
|
+
// Pre-warm cache for predicted next queries
|
|
110
|
+
this.cache.preWarm(searchTerm, async (q) => {
|
|
111
|
+
const predictedKey = `${this.projectId}:${q}:${limit}`;
|
|
112
|
+
if (!this.cache.get(predictedKey)) {
|
|
113
|
+
return this.queryWithoutCache(q, limit);
|
|
114
|
+
}
|
|
115
|
+
return [];
|
|
116
|
+
}).catch(() => { });
|
|
117
|
+
return results;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Sanitize search term for FTS5 query syntax
|
|
121
|
+
* Wraps each word in double quotes to prevent FTS5 syntax errors from
|
|
122
|
+
* special characters like AND, OR, NOT, *, -, parentheses, etc.
|
|
123
|
+
*/
|
|
124
|
+
sanitizeFTS5Query(searchTerm) {
|
|
125
|
+
const words = searchTerm.trim().split(/\s+/).filter(w => w.length > 0);
|
|
126
|
+
if (words.length === 0)
|
|
127
|
+
return '""';
|
|
128
|
+
// Quote each word individually and join with spaces (implicit AND)
|
|
129
|
+
return words.map(w => `"${w.replace(/"/g, '""')}"`).join(' ');
|
|
130
|
+
}
|
|
131
|
+
async queryWithoutCache(searchTerm, limit) {
|
|
132
|
+
const sanitizedTerm = this.sanitizeFTS5Query(searchTerm);
|
|
133
|
+
try {
|
|
134
|
+
const ftsStmt = this.db.prepare(`
|
|
135
|
+
SELECT m.id, m.timestamp, m.type, m.content, m.project_id as projectId, m.importance
|
|
136
|
+
FROM memories_fts fts
|
|
137
|
+
JOIN memories m ON fts.rowid = m.id
|
|
138
|
+
WHERE memories_fts MATCH ? AND m.project_id = ?
|
|
139
|
+
ORDER BY rank
|
|
140
|
+
LIMIT ?
|
|
141
|
+
`);
|
|
142
|
+
const results = ftsStmt.all(sanitizedTerm, this.projectId, limit);
|
|
143
|
+
if (results.length > 0)
|
|
144
|
+
return results;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// FTS5 not available
|
|
148
|
+
}
|
|
149
|
+
const stmt = this.db.prepare(`
|
|
150
|
+
SELECT id, timestamp, type, content, project_id as projectId, importance
|
|
151
|
+
FROM memories
|
|
152
|
+
WHERE project_id = ? AND content LIKE ?
|
|
153
|
+
ORDER BY id DESC
|
|
154
|
+
LIMIT ?
|
|
155
|
+
`);
|
|
156
|
+
return stmt.all(this.projectId, `%${searchTerm}%`, limit);
|
|
157
|
+
}
|
|
158
|
+
async getByType(type, limit = 50) {
|
|
159
|
+
const stmt = this.db.prepare(`
|
|
160
|
+
SELECT id, timestamp, type, content, project_id as projectId, importance
|
|
161
|
+
FROM memories
|
|
162
|
+
WHERE project_id = ? AND type = ?
|
|
163
|
+
ORDER BY id DESC
|
|
164
|
+
LIMIT ?
|
|
165
|
+
`);
|
|
166
|
+
return stmt.all(this.projectId, type, limit);
|
|
167
|
+
}
|
|
168
|
+
async count() {
|
|
169
|
+
const stmt = this.db.prepare(`
|
|
170
|
+
SELECT COUNT(*) as count
|
|
171
|
+
FROM memories
|
|
172
|
+
WHERE project_id = ?
|
|
173
|
+
`);
|
|
174
|
+
const result = stmt.get(this.projectId);
|
|
175
|
+
return result.count;
|
|
176
|
+
}
|
|
177
|
+
async prune() {
|
|
178
|
+
const count = await this.count();
|
|
179
|
+
if (count > this.maxEntries) {
|
|
180
|
+
const toDelete = count - this.maxEntries;
|
|
181
|
+
// Importance-aware pruning: delete lowest importance first, then oldest
|
|
182
|
+
// This retains high-value memories longer regardless of age
|
|
183
|
+
const stmt = this.db.prepare(`
|
|
184
|
+
DELETE FROM memories
|
|
185
|
+
WHERE id IN (
|
|
186
|
+
SELECT id FROM memories
|
|
187
|
+
WHERE project_id = ?
|
|
188
|
+
ORDER BY importance ASC, id ASC
|
|
189
|
+
LIMIT ?
|
|
190
|
+
)
|
|
191
|
+
`);
|
|
192
|
+
stmt.run(this.projectId, toDelete);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async clear() {
|
|
196
|
+
const stmt = this.db.prepare(`
|
|
197
|
+
DELETE FROM memories
|
|
198
|
+
WHERE project_id = ?
|
|
199
|
+
`);
|
|
200
|
+
stmt.run(this.projectId);
|
|
201
|
+
}
|
|
202
|
+
async close() {
|
|
203
|
+
this.db.close();
|
|
204
|
+
}
|
|
205
|
+
// Export all memories as JSON (useful for backup/migration)
|
|
206
|
+
async exportAll() {
|
|
207
|
+
const stmt = this.db.prepare(`
|
|
208
|
+
SELECT id, timestamp, type, content, project_id as projectId, importance
|
|
209
|
+
FROM memories
|
|
210
|
+
WHERE project_id = ?
|
|
211
|
+
ORDER BY id ASC
|
|
212
|
+
`);
|
|
213
|
+
return stmt.all(this.projectId);
|
|
214
|
+
}
|
|
215
|
+
// Import memories from JSON (useful for restore/migration)
|
|
216
|
+
async importAll(memories) {
|
|
217
|
+
await this.storeBatch(memories);
|
|
218
|
+
return memories.length;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/memory/short-term/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Speculative Cache for UAP Memory System
|
|
3
|
+
*
|
|
4
|
+
* Pre-computes likely next queries based on task patterns.
|
|
5
|
+
* Reduces latency by predicting and caching memory retrievals.
|
|
6
|
+
*
|
|
7
|
+
* Enhanced with task classifier integration for smarter prefetching
|
|
8
|
+
*/
|
|
9
|
+
export interface CacheEntry {
|
|
10
|
+
query: string;
|
|
11
|
+
result: unknown[];
|
|
12
|
+
embedding?: number[];
|
|
13
|
+
usageCount: number;
|
|
14
|
+
lastUsed: Date;
|
|
15
|
+
createdAt: Date;
|
|
16
|
+
predictedBy?: string;
|
|
17
|
+
taskCategory?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CacheConfig {
|
|
20
|
+
maxEntries: number;
|
|
21
|
+
ttlMs: number;
|
|
22
|
+
preWarmEnabled: boolean;
|
|
23
|
+
predictionDepth: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Speculative Memory Cache
|
|
27
|
+
*/
|
|
28
|
+
export declare class SpeculativeCache {
|
|
29
|
+
private config;
|
|
30
|
+
private cache;
|
|
31
|
+
private queryHistory;
|
|
32
|
+
private taskPatterns;
|
|
33
|
+
constructor(config?: Partial<CacheConfig>);
|
|
34
|
+
/**
|
|
35
|
+
* Get from cache with automatic staleness check
|
|
36
|
+
*/
|
|
37
|
+
get(query: string): CacheEntry | null;
|
|
38
|
+
/**
|
|
39
|
+
* Set cache entry
|
|
40
|
+
*/
|
|
41
|
+
set(query: string, result: unknown[], predictedBy?: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Record query for pattern analysis
|
|
44
|
+
*/
|
|
45
|
+
private recordQuery;
|
|
46
|
+
/**
|
|
47
|
+
* Detect task category from query
|
|
48
|
+
*/
|
|
49
|
+
private detectCategory;
|
|
50
|
+
/**
|
|
51
|
+
* Get predicted queries based on current context
|
|
52
|
+
* Enhanced with seeded transition chains for faster cache warming
|
|
53
|
+
*/
|
|
54
|
+
getPredictedQueries(currentQuery: string): string[];
|
|
55
|
+
/**
|
|
56
|
+
* Analyze query sequences for patterns
|
|
57
|
+
*/
|
|
58
|
+
private analyzeQuerySequences;
|
|
59
|
+
/**
|
|
60
|
+
* Pre-warm cache with predicted queries
|
|
61
|
+
*/
|
|
62
|
+
preWarm(currentQuery: string, fetcher: (query: string) => Promise<unknown[]>): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Evict least recently used entry
|
|
65
|
+
*/
|
|
66
|
+
private evictLRU;
|
|
67
|
+
/**
|
|
68
|
+
* Normalize query for cache key
|
|
69
|
+
*/
|
|
70
|
+
private normalizeQuery;
|
|
71
|
+
/**
|
|
72
|
+
* Get cache statistics
|
|
73
|
+
*/
|
|
74
|
+
getStats(): {
|
|
75
|
+
size: number;
|
|
76
|
+
hitRate: number;
|
|
77
|
+
avgUsage: number;
|
|
78
|
+
topPatterns: Array<{
|
|
79
|
+
category: string;
|
|
80
|
+
count: number;
|
|
81
|
+
}>;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Clear expired entries
|
|
85
|
+
*/
|
|
86
|
+
cleanup(): number;
|
|
87
|
+
/**
|
|
88
|
+
* Clear all cache
|
|
89
|
+
*/
|
|
90
|
+
clear(): void;
|
|
91
|
+
/**
|
|
92
|
+
* OPTIMIZATION 6: Load historical query patterns from SQLite database
|
|
93
|
+
* Pre-warms queryHistory and taskPatterns from persisted memory data
|
|
94
|
+
*/
|
|
95
|
+
loadFromDb(dbPath: string): Promise<number>;
|
|
96
|
+
}
|
|
97
|
+
export declare function getSpeculativeCache(config?: Partial<CacheConfig>): SpeculativeCache;
|
|
98
|
+
/**
|
|
99
|
+
* OPTIMIZATION 6: Initialize cache with historical data from database
|
|
100
|
+
* Call this at startup to warm the cache from persisted memories
|
|
101
|
+
*/
|
|
102
|
+
export declare function initializeCacheFromDb(dbPath: string, config?: Partial<CacheConfig>): Promise<{
|
|
103
|
+
cache: SpeculativeCache;
|
|
104
|
+
entriesLoaded: number;
|
|
105
|
+
}>;
|
|
106
|
+
/**
|
|
107
|
+
* OPTIMIZATION 10: Auto-warm cache with high-value Terminal-Bench patterns
|
|
108
|
+
* Call this at startup to pre-populate cache with proven knowledge chains
|
|
109
|
+
*/
|
|
110
|
+
export declare function autoWarmCache(cache?: SpeculativeCache): number;
|
|
111
|
+
//# sourceMappingURL=speculative-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speculative-cache.d.ts","sourceRoot":"","sources":["../../src/memory/speculative-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AA0ED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAkC;gBAE1C,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAI7C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAoBrC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAqBjE;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;;OAGG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;IA2BnD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACG,OAAO,CACX,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC;IAoBhB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzD;IAkBD;;OAEG;IACH,OAAO,IAAI,MAAM;IAejB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2DlD;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAKnF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAI7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAkC9D"}
|