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,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Routing Intelligence for UAP
|
|
3
|
+
*
|
|
4
|
+
* Routes tasks to the optimal model based on:
|
|
5
|
+
* - Task classification and difficulty
|
|
6
|
+
* - Model capability fingerprints (benchmarked data)
|
|
7
|
+
* - Latency/accuracy/cost tradeoffs
|
|
8
|
+
* - Fallback chains for resilience
|
|
9
|
+
* - OPT 8: Persistent fingerprint data from SQLite
|
|
10
|
+
*
|
|
11
|
+
* Based on BENCHMARK_ANALYSIS.md and MODEL_BENCHMARK_RESULTS.md data.
|
|
12
|
+
*/
|
|
13
|
+
import Database from 'better-sqlite3';
|
|
14
|
+
import { existsSync, mkdirSync } from 'fs';
|
|
15
|
+
import { dirname, join } from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import { classifyTask } from './task-classifier.js';
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = dirname(__filename);
|
|
20
|
+
const DEFAULT_CONFIG = {
|
|
21
|
+
preferLatency: false,
|
|
22
|
+
preferAccuracy: true,
|
|
23
|
+
maxCostPerTask: 0.05,
|
|
24
|
+
maxLatencyMs: 120000,
|
|
25
|
+
availableModels: ['glm-4.7', 'gpt-5.2', 'claude-opus-4.5', 'gpt-5.2-codex'],
|
|
26
|
+
};
|
|
27
|
+
// OPTIMIZATION 5: Pre-seeded with benchmark data for per-category routing
|
|
28
|
+
const MODEL_FINGERPRINTS = {
|
|
29
|
+
'glm-4.7': {
|
|
30
|
+
id: 'glm-4.7',
|
|
31
|
+
strengths: ['speed', 'simple-code', 'patterns', 'typescript', 'bug-detection'],
|
|
32
|
+
weaknesses: ['complex-algorithms', 'long-context', 'multi-step-code', 'context-awareness'],
|
|
33
|
+
avgLatencyMs: 11373,
|
|
34
|
+
successRate: 0.625,
|
|
35
|
+
costPerTask: 0.001,
|
|
36
|
+
maxComplexity: 'medium',
|
|
37
|
+
bestCategories: ['coding', 'testing', 'debugging'],
|
|
38
|
+
categoryStats: {
|
|
39
|
+
coding: { attempts: 8, successes: 5 },
|
|
40
|
+
testing: { attempts: 5, successes: 4 },
|
|
41
|
+
debugging: { attempts: 4, successes: 3 },
|
|
42
|
+
security: { attempts: 4, successes: 2 },
|
|
43
|
+
'file-ops': { attempts: 3, successes: 1 },
|
|
44
|
+
sysadmin: { attempts: 3, successes: 1 },
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
'gpt-5.2': {
|
|
48
|
+
id: 'gpt-5.2',
|
|
49
|
+
strengths: ['balance', 'consistency', 'general-purpose', 'algorithm', 'multi-step'],
|
|
50
|
+
weaknesses: ['refactoring', 'latency-sensitive'],
|
|
51
|
+
avgLatencyMs: 21286,
|
|
52
|
+
successRate: 0.875,
|
|
53
|
+
costPerTask: 0.005,
|
|
54
|
+
maxComplexity: 'hard',
|
|
55
|
+
bestCategories: ['coding', 'security', 'file-ops', 'debugging'],
|
|
56
|
+
categoryStats: {
|
|
57
|
+
coding: { attempts: 8, successes: 7 },
|
|
58
|
+
security: { attempts: 6, successes: 5 },
|
|
59
|
+
'file-ops': { attempts: 5, successes: 4 },
|
|
60
|
+
debugging: { attempts: 5, successes: 5 },
|
|
61
|
+
sysadmin: { attempts: 4, successes: 3 },
|
|
62
|
+
'ml-training': { attempts: 3, successes: 2 },
|
|
63
|
+
'constraint-satisfaction': { attempts: 3, successes: 3 },
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
'claude-opus-4.5': {
|
|
67
|
+
id: 'claude-opus-4.5',
|
|
68
|
+
strengths: ['accuracy', 'complex-reasoning', 'edge-cases', 'error-handling', 'refactoring'],
|
|
69
|
+
weaknesses: ['latency', 'cost'],
|
|
70
|
+
avgLatencyMs: 26359,
|
|
71
|
+
successRate: 0.875,
|
|
72
|
+
costPerTask: 0.02,
|
|
73
|
+
maxComplexity: 'hard',
|
|
74
|
+
bestCategories: ['security', 'coding', 'sysadmin', 'debugging'],
|
|
75
|
+
categoryStats: {
|
|
76
|
+
security: { attempts: 8, successes: 7 },
|
|
77
|
+
coding: { attempts: 8, successes: 7 },
|
|
78
|
+
sysadmin: { attempts: 5, successes: 5 },
|
|
79
|
+
debugging: { attempts: 5, successes: 4 },
|
|
80
|
+
'file-ops': { attempts: 5, successes: 4 },
|
|
81
|
+
'ml-training': { attempts: 3, successes: 2 },
|
|
82
|
+
'constraint-satisfaction': { attempts: 3, successes: 2 },
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
'gpt-5.2-codex': {
|
|
86
|
+
id: 'gpt-5.2-codex',
|
|
87
|
+
strengths: ['code-specific', 'syntax-accuracy', 'context-awareness', 'all-difficulties'],
|
|
88
|
+
weaknesses: ['latency', 'cost', 'non-code-tasks'],
|
|
89
|
+
avgLatencyMs: 102399,
|
|
90
|
+
successRate: 1.0,
|
|
91
|
+
costPerTask: 0.01,
|
|
92
|
+
maxComplexity: 'hard',
|
|
93
|
+
bestCategories: ['coding', 'testing'],
|
|
94
|
+
categoryStats: {
|
|
95
|
+
coding: { attempts: 8, successes: 8 },
|
|
96
|
+
testing: { attempts: 5, successes: 5 },
|
|
97
|
+
security: { attempts: 3, successes: 3 },
|
|
98
|
+
'file-ops': { attempts: 3, successes: 2 },
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
const COMPLEXITY_RANK = { easy: 1, medium: 2, hard: 3 };
|
|
103
|
+
// OPT 8: SQLite-backed fingerprint persistence
|
|
104
|
+
let fingerprintDb = null;
|
|
105
|
+
function getFingerprintDb() {
|
|
106
|
+
if (fingerprintDb)
|
|
107
|
+
return fingerprintDb;
|
|
108
|
+
const dbDir = join(__dirname, '../../agents/data/memory');
|
|
109
|
+
if (!existsSync(dbDir)) {
|
|
110
|
+
mkdirSync(dbDir, { recursive: true });
|
|
111
|
+
}
|
|
112
|
+
const dbPath = join(dbDir, 'model_fingerprints.db');
|
|
113
|
+
fingerprintDb = new Database(dbPath);
|
|
114
|
+
fingerprintDb.pragma('journal_mode = WAL');
|
|
115
|
+
// Create schema
|
|
116
|
+
fingerprintDb.exec(`
|
|
117
|
+
CREATE TABLE IF NOT EXISTS fingerprint_updates (
|
|
118
|
+
model_id TEXT NOT NULL,
|
|
119
|
+
avg_latency_ms REAL,
|
|
120
|
+
success_rate REAL,
|
|
121
|
+
updated_at INTEGER,
|
|
122
|
+
PRIMARY KEY (model_id)
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
CREATE TABLE IF NOT EXISTS category_stats (
|
|
126
|
+
model_id TEXT NOT NULL,
|
|
127
|
+
category TEXT NOT NULL,
|
|
128
|
+
attempts INTEGER DEFAULT 0,
|
|
129
|
+
successes INTEGER DEFAULT 0,
|
|
130
|
+
updated_at INTEGER,
|
|
131
|
+
PRIMARY KEY (model_id, category)
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_category_stats_model ON category_stats(model_id);
|
|
135
|
+
`);
|
|
136
|
+
return fingerprintDb;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* OPT 8: Load persisted fingerprint data on module init
|
|
140
|
+
*/
|
|
141
|
+
function loadPersistedFingerprints() {
|
|
142
|
+
try {
|
|
143
|
+
const db = getFingerprintDb();
|
|
144
|
+
// Load global updates
|
|
145
|
+
const updates = db.prepare('SELECT * FROM fingerprint_updates').all();
|
|
146
|
+
for (const update of updates) {
|
|
147
|
+
const fp = MODEL_FINGERPRINTS[update.model_id];
|
|
148
|
+
if (fp) {
|
|
149
|
+
// Blend persisted data with defaults (70% persisted, 30% default)
|
|
150
|
+
fp.avgLatencyMs = fp.avgLatencyMs * 0.3 + update.avg_latency_ms * 0.7;
|
|
151
|
+
fp.successRate = fp.successRate * 0.3 + update.success_rate * 0.7;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Load category stats
|
|
155
|
+
const categoryData = db.prepare('SELECT * FROM category_stats').all();
|
|
156
|
+
for (const cat of categoryData) {
|
|
157
|
+
const fp = MODEL_FINGERPRINTS[cat.model_id];
|
|
158
|
+
if (fp) {
|
|
159
|
+
if (!fp.categoryStats)
|
|
160
|
+
fp.categoryStats = {};
|
|
161
|
+
// Merge with existing stats
|
|
162
|
+
const existing = fp.categoryStats[cat.category] || { attempts: 0, successes: 0 };
|
|
163
|
+
fp.categoryStats[cat.category] = {
|
|
164
|
+
attempts: existing.attempts + cat.attempts,
|
|
165
|
+
successes: existing.successes + cat.successes,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
// Silently fail - fingerprints will use defaults
|
|
172
|
+
console.warn('Failed to load persisted fingerprints:', err);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* OPT 8: Persist fingerprint updates to SQLite
|
|
177
|
+
*/
|
|
178
|
+
function persistFingerprintUpdate(modelId) {
|
|
179
|
+
try {
|
|
180
|
+
const db = getFingerprintDb();
|
|
181
|
+
const fp = MODEL_FINGERPRINTS[modelId];
|
|
182
|
+
if (!fp)
|
|
183
|
+
return;
|
|
184
|
+
db.prepare(`
|
|
185
|
+
INSERT OR REPLACE INTO fingerprint_updates (model_id, avg_latency_ms, success_rate, updated_at)
|
|
186
|
+
VALUES (?, ?, ?, ?)
|
|
187
|
+
`).run(modelId, fp.avgLatencyMs, fp.successRate, Date.now());
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
console.warn('Failed to persist fingerprint update:', err);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* OPT 8: Persist category stats to SQLite
|
|
195
|
+
*/
|
|
196
|
+
function persistCategoryStats(modelId, category) {
|
|
197
|
+
try {
|
|
198
|
+
const db = getFingerprintDb();
|
|
199
|
+
const fp = MODEL_FINGERPRINTS[modelId];
|
|
200
|
+
const stats = fp?.categoryStats?.[category];
|
|
201
|
+
if (!stats)
|
|
202
|
+
return;
|
|
203
|
+
db.prepare(`
|
|
204
|
+
INSERT OR REPLACE INTO category_stats (model_id, category, attempts, successes, updated_at)
|
|
205
|
+
VALUES (?, ?, ?, ?, ?)
|
|
206
|
+
`).run(modelId, category, stats.attempts, stats.successes, Date.now());
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
console.warn('Failed to persist category stats:', err);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Initialize on module load
|
|
213
|
+
loadPersistedFingerprints();
|
|
214
|
+
/**
|
|
215
|
+
* Failure handlers for model-specific known issues
|
|
216
|
+
*/
|
|
217
|
+
const FAILURE_HANDLERS = {
|
|
218
|
+
'gpt-5.2-codex:permission_denied': {
|
|
219
|
+
action: 'add_context',
|
|
220
|
+
context: 'Do not attempt file operations. Return code only.',
|
|
221
|
+
fallbackModel: 'gpt-5.2',
|
|
222
|
+
},
|
|
223
|
+
'glm-4.7:timeout': {
|
|
224
|
+
action: 'reduce_context',
|
|
225
|
+
fallbackModel: 'gpt-5.2',
|
|
226
|
+
},
|
|
227
|
+
'glm-4.7:context_overflow': {
|
|
228
|
+
action: 'reduce_context',
|
|
229
|
+
fallbackModel: 'gpt-5.2',
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* OPTIMIZATION 5: Enhanced per-category scoring with confidence weighting
|
|
234
|
+
* Score a model for a given task using category-specific success rates
|
|
235
|
+
*/
|
|
236
|
+
function scoreModel(model, classification, difficulty, config) {
|
|
237
|
+
let score = 0;
|
|
238
|
+
// Category match bonus - INCREASED weight for proven categories
|
|
239
|
+
if (model.bestCategories.includes(classification.category)) {
|
|
240
|
+
score += 40; // Increased from 30
|
|
241
|
+
}
|
|
242
|
+
// Complexity match
|
|
243
|
+
if (COMPLEXITY_RANK[model.maxComplexity] >= COMPLEXITY_RANK[difficulty]) {
|
|
244
|
+
score += 20;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
score -= 50; // Penalty for difficulty exceeding capability
|
|
248
|
+
}
|
|
249
|
+
// OPTIMIZATION 5: Use per-category success rate with confidence weighting
|
|
250
|
+
// If we have enough data (>=3 attempts), weight category rate 2x higher than global
|
|
251
|
+
const categoryRate = getCategorySuccessRate(model, classification.category);
|
|
252
|
+
const categoryAttempts = model.categoryStats?.[classification.category]?.attempts || 0;
|
|
253
|
+
let effectiveSuccessRate;
|
|
254
|
+
if (categoryRate !== null && categoryAttempts >= 3) {
|
|
255
|
+
// Blend category and global rates, weighted by sample size confidence
|
|
256
|
+
const confidence = Math.min(categoryAttempts / 10, 1); // Max confidence at 10 samples
|
|
257
|
+
effectiveSuccessRate = categoryRate * confidence + model.successRate * (1 - confidence);
|
|
258
|
+
// Bonus for having category-specific data
|
|
259
|
+
score += 10;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
effectiveSuccessRate = model.successRate;
|
|
263
|
+
}
|
|
264
|
+
// Success rate (0-30 points) - INCREASED from 25
|
|
265
|
+
score += effectiveSuccessRate * 30;
|
|
266
|
+
// Latency preference (0-15 points)
|
|
267
|
+
if (config.preferLatency) {
|
|
268
|
+
const latencyScore = Math.max(0, 1 - (model.avgLatencyMs / 120000));
|
|
269
|
+
score += latencyScore * 15;
|
|
270
|
+
}
|
|
271
|
+
// Accuracy preference bonus
|
|
272
|
+
if (config.preferAccuracy) {
|
|
273
|
+
score += effectiveSuccessRate * 10;
|
|
274
|
+
}
|
|
275
|
+
// Cost constraint
|
|
276
|
+
if (model.costPerTask > config.maxCostPerTask) {
|
|
277
|
+
score -= 20;
|
|
278
|
+
}
|
|
279
|
+
// Latency constraint
|
|
280
|
+
if (model.avgLatencyMs > config.maxLatencyMs) {
|
|
281
|
+
score -= 30;
|
|
282
|
+
}
|
|
283
|
+
// Keyword match with model strengths - INCREASED weight
|
|
284
|
+
const taskKeywords = classification.keywords.map(k => k.toLowerCase());
|
|
285
|
+
for (const strength of model.strengths) {
|
|
286
|
+
if (taskKeywords.some(kw => strength.includes(kw) || kw.includes(strength))) {
|
|
287
|
+
score += 8; // Increased from 5
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return score;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get per-category success rate if enough data exists (>=3 attempts)
|
|
294
|
+
* Returns null if not enough data, allowing fallback to global rate
|
|
295
|
+
*/
|
|
296
|
+
function getCategorySuccessRate(model, category) {
|
|
297
|
+
const stats = model.categoryStats?.[category];
|
|
298
|
+
if (!stats || stats.attempts < 3)
|
|
299
|
+
return null;
|
|
300
|
+
return stats.successes / stats.attempts;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Route a task to the best model
|
|
304
|
+
*/
|
|
305
|
+
export function routeTask(instruction, difficulty = 'medium', config = {}) {
|
|
306
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
307
|
+
const classification = classifyTask(instruction);
|
|
308
|
+
// Score all available models
|
|
309
|
+
const scored = cfg.availableModels
|
|
310
|
+
.filter(id => MODEL_FINGERPRINTS[id])
|
|
311
|
+
.map(id => ({
|
|
312
|
+
id,
|
|
313
|
+
fingerprint: MODEL_FINGERPRINTS[id],
|
|
314
|
+
score: scoreModel(MODEL_FINGERPRINTS[id], classification, difficulty, cfg),
|
|
315
|
+
}))
|
|
316
|
+
.sort((a, b) => b.score - a.score);
|
|
317
|
+
if (scored.length === 0) {
|
|
318
|
+
return {
|
|
319
|
+
primary: 'gpt-5.2',
|
|
320
|
+
fallback: ['claude-opus-4.5'],
|
|
321
|
+
reason: 'No available models matched, defaulting to GPT 5.2',
|
|
322
|
+
estimatedLatencyMs: 21286,
|
|
323
|
+
estimatedSuccessRate: 0.875,
|
|
324
|
+
estimatedCost: 0.005,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
const primary = scored[0];
|
|
328
|
+
const fallbacks = scored.slice(1).map(s => s.id);
|
|
329
|
+
return {
|
|
330
|
+
primary: primary.id,
|
|
331
|
+
fallback: fallbacks,
|
|
332
|
+
reason: `${primary.id} selected for ${classification.category}/${difficulty} task (score: ${primary.score.toFixed(0)})`,
|
|
333
|
+
estimatedLatencyMs: primary.fingerprint.avgLatencyMs,
|
|
334
|
+
estimatedSuccessRate: primary.fingerprint.successRate,
|
|
335
|
+
estimatedCost: primary.fingerprint.costPerTask,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Get failure handler for a model-specific error
|
|
340
|
+
*/
|
|
341
|
+
export function getFailureHandler(modelId, errorType) {
|
|
342
|
+
return FAILURE_HANDLERS[`${modelId}:${errorType}`] || null;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Get model fingerprint
|
|
346
|
+
*/
|
|
347
|
+
export function getModelFingerprint(modelId) {
|
|
348
|
+
return MODEL_FINGERPRINTS[modelId] || null;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Get all model fingerprints
|
|
352
|
+
*/
|
|
353
|
+
export function getAllModelFingerprints() {
|
|
354
|
+
return { ...MODEL_FINGERPRINTS };
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Update model fingerprint with new benchmark data
|
|
358
|
+
*/
|
|
359
|
+
export function updateModelFingerprint(modelId, updates) {
|
|
360
|
+
const fp = MODEL_FINGERPRINTS[modelId];
|
|
361
|
+
if (!fp)
|
|
362
|
+
return;
|
|
363
|
+
if (updates.avgLatencyMs !== undefined) {
|
|
364
|
+
// Exponential moving average
|
|
365
|
+
fp.avgLatencyMs = fp.avgLatencyMs * 0.7 + updates.avgLatencyMs * 0.3;
|
|
366
|
+
}
|
|
367
|
+
if (updates.successRate !== undefined) {
|
|
368
|
+
fp.successRate = fp.successRate * 0.7 + updates.successRate * 0.3;
|
|
369
|
+
}
|
|
370
|
+
if (updates.costPerTask !== undefined) {
|
|
371
|
+
fp.costPerTask = updates.costPerTask;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Record task outcome to update model fingerprints (feedback loop)
|
|
376
|
+
* Call this after each task completes to improve future routing decisions
|
|
377
|
+
* OPT 8: Now persists to SQLite for cross-session learning
|
|
378
|
+
*/
|
|
379
|
+
export function recordTaskOutcome(modelId, success, latencyMs, taskCategory) {
|
|
380
|
+
const fp = MODEL_FINGERPRINTS[modelId];
|
|
381
|
+
if (!fp)
|
|
382
|
+
return;
|
|
383
|
+
// Update global success rate using exponential moving average
|
|
384
|
+
const newSuccessRate = success ? 1.0 : 0.0;
|
|
385
|
+
fp.successRate = fp.successRate * 0.9 + newSuccessRate * 0.1;
|
|
386
|
+
// Update latency using exponential moving average
|
|
387
|
+
fp.avgLatencyMs = fp.avgLatencyMs * 0.8 + latencyMs * 0.2;
|
|
388
|
+
// OPT 8: Persist global fingerprint update
|
|
389
|
+
persistFingerprintUpdate(modelId);
|
|
390
|
+
// Update per-category stats if category provided
|
|
391
|
+
if (taskCategory) {
|
|
392
|
+
if (!fp.categoryStats)
|
|
393
|
+
fp.categoryStats = {};
|
|
394
|
+
if (!fp.categoryStats[taskCategory]) {
|
|
395
|
+
fp.categoryStats[taskCategory] = { attempts: 0, successes: 0 };
|
|
396
|
+
}
|
|
397
|
+
fp.categoryStats[taskCategory].attempts++;
|
|
398
|
+
if (success) {
|
|
399
|
+
fp.categoryStats[taskCategory].successes++;
|
|
400
|
+
}
|
|
401
|
+
// OPT 8: Persist category stats
|
|
402
|
+
persistCategoryStats(modelId, taskCategory);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Get routing recommendation with explanation
|
|
407
|
+
*/
|
|
408
|
+
export function explainRouting(instruction, difficulty = 'medium') {
|
|
409
|
+
const decision = routeTask(instruction, difficulty);
|
|
410
|
+
const fingerprint = MODEL_FINGERPRINTS[decision.primary];
|
|
411
|
+
const lines = [
|
|
412
|
+
`Primary Model: ${decision.primary}`,
|
|
413
|
+
`Reason: ${decision.reason}`,
|
|
414
|
+
`Expected Latency: ${(decision.estimatedLatencyMs / 1000).toFixed(1)}s`,
|
|
415
|
+
`Expected Success: ${(decision.estimatedSuccessRate * 100).toFixed(0)}%`,
|
|
416
|
+
`Strengths: ${fingerprint?.strengths.slice(0, 3).join(', ') || 'N/A'}`,
|
|
417
|
+
`Fallbacks: ${decision.fallback.join(' -> ') || 'None'}`,
|
|
418
|
+
];
|
|
419
|
+
return lines.join('\n');
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* OPT 8: Close fingerprint database connection
|
|
423
|
+
*/
|
|
424
|
+
export function closeFingerprintDb() {
|
|
425
|
+
if (fingerprintDb) {
|
|
426
|
+
fingerprintDb.close();
|
|
427
|
+
fingerprintDb = null;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* OPT 8: Force reload fingerprints from database
|
|
432
|
+
*/
|
|
433
|
+
export function reloadFingerprints() {
|
|
434
|
+
loadPersistedFingerprints();
|
|
435
|
+
}
|
|
436
|
+
export const ModelRouter = {
|
|
437
|
+
routeTask,
|
|
438
|
+
getFailureHandler,
|
|
439
|
+
getModelFingerprint,
|
|
440
|
+
getAllModelFingerprints,
|
|
441
|
+
updateModelFingerprint,
|
|
442
|
+
recordTaskOutcome,
|
|
443
|
+
explainRouting,
|
|
444
|
+
closeFingerprintDb,
|
|
445
|
+
reloadFingerprints,
|
|
446
|
+
};
|
|
447
|
+
export default ModelRouter;
|
|
448
|
+
//# sourceMappingURL=model-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.js","sourceRoot":"","sources":["../../src/memory/model-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-View Memory System for UAP
|
|
3
|
+
*
|
|
4
|
+
* Implements:
|
|
5
|
+
* 1. Multi-view indexing (entity, temporal, semantic type views)
|
|
6
|
+
* 2. ENGRAM-style memory typing (episodic, semantic, procedural)
|
|
7
|
+
* 3. Async embedding generation
|
|
8
|
+
* 4. Speculative cache integration with task classifier
|
|
9
|
+
*
|
|
10
|
+
* Based on SimpleMem (2026) and ENGRAM (2025) research
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* ENGRAM-style memory types
|
|
14
|
+
*/
|
|
15
|
+
export type ENGRAMMemoryType = 'episodic' | 'semantic' | 'procedural';
|
|
16
|
+
/**
|
|
17
|
+
* Multi-view indexed memory entry
|
|
18
|
+
*/
|
|
19
|
+
export interface MultiViewMemory {
|
|
20
|
+
id: string;
|
|
21
|
+
content: string;
|
|
22
|
+
memoryType: ENGRAMMemoryType;
|
|
23
|
+
entities: string[];
|
|
24
|
+
temporalBucket: string;
|
|
25
|
+
semanticType: string;
|
|
26
|
+
embedding?: number[];
|
|
27
|
+
embeddingPending?: boolean;
|
|
28
|
+
importance: number;
|
|
29
|
+
accessCount: number;
|
|
30
|
+
lastAccessed: Date;
|
|
31
|
+
qualityScore: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Multi-view index structure
|
|
35
|
+
*/
|
|
36
|
+
export interface MultiViewIndex {
|
|
37
|
+
byEntity: Map<string, Set<string>>;
|
|
38
|
+
byTemporal: Map<string, Set<string>>;
|
|
39
|
+
bySemanticType: Map<string, Set<string>>;
|
|
40
|
+
byENGRAMType: Map<ENGRAMMemoryType, Set<string>>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Classify memory into ENGRAM type
|
|
44
|
+
*/
|
|
45
|
+
export declare function classifyENGRAMType(content: string, context?: {
|
|
46
|
+
type?: string;
|
|
47
|
+
}): ENGRAMMemoryType;
|
|
48
|
+
/**
|
|
49
|
+
* Extract temporal bucket from content/timestamp
|
|
50
|
+
*/
|
|
51
|
+
export declare function extractTemporalBucket(content: string, timestamp?: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Multi-View Memory Manager
|
|
54
|
+
*/
|
|
55
|
+
export declare class MultiViewMemoryManager {
|
|
56
|
+
private memories;
|
|
57
|
+
private index;
|
|
58
|
+
private embeddingQueue;
|
|
59
|
+
private isProcessingEmbeddings;
|
|
60
|
+
/**
|
|
61
|
+
* Add memory with multi-view indexing
|
|
62
|
+
*/
|
|
63
|
+
add(content: string, options?: {
|
|
64
|
+
id?: string;
|
|
65
|
+
semanticType?: string;
|
|
66
|
+
entities?: string[];
|
|
67
|
+
timestamp?: string;
|
|
68
|
+
importance?: number;
|
|
69
|
+
generateEmbedding?: boolean;
|
|
70
|
+
}): Promise<MultiViewMemory>;
|
|
71
|
+
/**
|
|
72
|
+
* Index memory in all views
|
|
73
|
+
*/
|
|
74
|
+
private indexMemory;
|
|
75
|
+
/**
|
|
76
|
+
* Query by entity
|
|
77
|
+
*/
|
|
78
|
+
queryByEntity(entity: string): MultiViewMemory[];
|
|
79
|
+
/**
|
|
80
|
+
* Query by ENGRAM type
|
|
81
|
+
*/
|
|
82
|
+
queryByENGRAMType(type: ENGRAMMemoryType): MultiViewMemory[];
|
|
83
|
+
/**
|
|
84
|
+
* Query by temporal bucket
|
|
85
|
+
*/
|
|
86
|
+
queryByTemporal(bucket: string): MultiViewMemory[];
|
|
87
|
+
/**
|
|
88
|
+
* Smart query using task classification to select best view
|
|
89
|
+
*/
|
|
90
|
+
smartQuery(query: string, limit?: number): Promise<MultiViewMemory[]>;
|
|
91
|
+
/**
|
|
92
|
+
* Get retrieval strategy based on task classification
|
|
93
|
+
*/
|
|
94
|
+
private getRetrievalStrategy;
|
|
95
|
+
/**
|
|
96
|
+
* Execute a single strategy step
|
|
97
|
+
*/
|
|
98
|
+
private executeStrategyStep;
|
|
99
|
+
/**
|
|
100
|
+
* Semantic search using embeddings
|
|
101
|
+
*/
|
|
102
|
+
semanticSearch(query: string, limit?: number): Promise<MultiViewMemory[]>;
|
|
103
|
+
/**
|
|
104
|
+
* Process embedding queue asynchronously
|
|
105
|
+
*/
|
|
106
|
+
private processEmbeddingQueue;
|
|
107
|
+
/**
|
|
108
|
+
* Extract entities from content
|
|
109
|
+
*/
|
|
110
|
+
private extractEntities;
|
|
111
|
+
/**
|
|
112
|
+
* Record memory access
|
|
113
|
+
*/
|
|
114
|
+
recordAccess(memoryId: string): void;
|
|
115
|
+
/**
|
|
116
|
+
* Get statistics
|
|
117
|
+
*/
|
|
118
|
+
getStats(): {
|
|
119
|
+
totalMemories: number;
|
|
120
|
+
byENGRAMType: Record<ENGRAMMemoryType, number>;
|
|
121
|
+
pendingEmbeddings: number;
|
|
122
|
+
entitiesIndexed: number;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Export all memories
|
|
126
|
+
*/
|
|
127
|
+
export(): MultiViewMemory[];
|
|
128
|
+
/**
|
|
129
|
+
* Import memories
|
|
130
|
+
*/
|
|
131
|
+
import(memories: MultiViewMemory[]): Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
export declare function getMultiViewMemoryManager(): MultiViewMemoryManager;
|
|
134
|
+
//# sourceMappingURL=multi-view-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-view-memory.d.ts","sourceRoot":"","sources":["../../src/memory/multi-view-memory.ts"],"names":[],"mappings":"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"}
|