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,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automated Memory Maintenance
|
|
3
|
+
*
|
|
4
|
+
* Periodic maintenance tasks: verify stale claims, prune decayed entries,
|
|
5
|
+
* consolidate daily logs, and surface maintenance recommendations.
|
|
6
|
+
*
|
|
7
|
+
* Inspired by Total Recall's maintenance cadences and Clawe's heartbeat system.
|
|
8
|
+
*/
|
|
9
|
+
export interface MaintenanceResult {
|
|
10
|
+
staleEntriesPruned: number;
|
|
11
|
+
decayedEntriesUpdated: number;
|
|
12
|
+
dailyLogsArchived: number;
|
|
13
|
+
duplicatesRemoved: number;
|
|
14
|
+
staleWorktrees: string[];
|
|
15
|
+
recommendations: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface MaintenanceConfig {
|
|
18
|
+
staleDaysThreshold: number;
|
|
19
|
+
decayRate: number;
|
|
20
|
+
minImportanceAfterDecay: number;
|
|
21
|
+
archiveDaysOld: number;
|
|
22
|
+
duplicateSimilarityThreshold: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Run full maintenance cycle on the memory database.
|
|
26
|
+
*/
|
|
27
|
+
export declare function runMaintenance(dbPath: string, config?: Partial<MaintenanceConfig>): MaintenanceResult;
|
|
28
|
+
/**
|
|
29
|
+
* Get a quick health summary without running full maintenance.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getHealthSummary(dbPath: string): {
|
|
32
|
+
memoriesCount: number;
|
|
33
|
+
sessionCount: number;
|
|
34
|
+
dailyLogCount: number;
|
|
35
|
+
staleCount: number;
|
|
36
|
+
unpromotedCount: number;
|
|
37
|
+
healthy: boolean;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=memory-maintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-maintenance.d.ts","sourceRoot":"","sources":["../../src/memory/memory-maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B,EAAE,MAAM,CAAC;CACtC;AAUD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM,GACtC,iBAAiB,CA0CnB;AAoOD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB,CAyCA"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automated Memory Maintenance
|
|
3
|
+
*
|
|
4
|
+
* Periodic maintenance tasks: verify stale claims, prune decayed entries,
|
|
5
|
+
* consolidate daily logs, and surface maintenance recommendations.
|
|
6
|
+
*
|
|
7
|
+
* Inspired by Total Recall's maintenance cadences and Clawe's heartbeat system.
|
|
8
|
+
*/
|
|
9
|
+
import Database from 'better-sqlite3';
|
|
10
|
+
import { existsSync, readdirSync, statSync } from 'fs';
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
import { ensureDailyLogSchema } from './daily-log.js';
|
|
13
|
+
const DEFAULT_CONFIG = {
|
|
14
|
+
staleDaysThreshold: 14,
|
|
15
|
+
decayRate: 0.95,
|
|
16
|
+
minImportanceAfterDecay: 1,
|
|
17
|
+
archiveDaysOld: 30,
|
|
18
|
+
duplicateSimilarityThreshold: 0.92,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Run full maintenance cycle on the memory database.
|
|
22
|
+
*/
|
|
23
|
+
export function runMaintenance(dbPath, config = {}) {
|
|
24
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
25
|
+
const result = {
|
|
26
|
+
staleEntriesPruned: 0,
|
|
27
|
+
decayedEntriesUpdated: 0,
|
|
28
|
+
dailyLogsArchived: 0,
|
|
29
|
+
duplicatesRemoved: 0,
|
|
30
|
+
staleWorktrees: [],
|
|
31
|
+
recommendations: [],
|
|
32
|
+
};
|
|
33
|
+
if (!existsSync(dbPath)) {
|
|
34
|
+
result.recommendations.push('Database not found. Run `uap init` first.');
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
const db = new Database(dbPath);
|
|
38
|
+
try {
|
|
39
|
+
// 1. Apply importance decay to old memories
|
|
40
|
+
result.decayedEntriesUpdated = applyDecay(db, cfg);
|
|
41
|
+
// 2. Prune entries that decayed below minimum importance
|
|
42
|
+
result.staleEntriesPruned = pruneStale(db, cfg);
|
|
43
|
+
// 3. Archive old daily log entries
|
|
44
|
+
result.dailyLogsArchived = archiveDailyLogs(db, cfg);
|
|
45
|
+
// 4. Remove duplicates
|
|
46
|
+
result.duplicatesRemoved = removeDuplicates(db);
|
|
47
|
+
// 5. Detect stale worktrees
|
|
48
|
+
result.staleWorktrees = detectStaleWorktrees(dbPath, cfg);
|
|
49
|
+
// 6. Generate recommendations
|
|
50
|
+
result.recommendations = generateRecommendations(db, cfg, result.staleWorktrees);
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
db.close();
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
function applyDecay(db, cfg) {
|
|
58
|
+
const now = Date.now();
|
|
59
|
+
let updated = 0;
|
|
60
|
+
try {
|
|
61
|
+
const rows = db.prepare(`
|
|
62
|
+
SELECT id, importance, timestamp
|
|
63
|
+
FROM memories
|
|
64
|
+
WHERE importance > ?
|
|
65
|
+
`).all(cfg.minImportanceAfterDecay);
|
|
66
|
+
const updateStmt = db.prepare('UPDATE memories SET importance = ? WHERE id = ?');
|
|
67
|
+
for (const row of rows) {
|
|
68
|
+
const daysSince = (now - new Date(row.timestamp).getTime()) / (1000 * 60 * 60 * 24);
|
|
69
|
+
if (daysSince < 1)
|
|
70
|
+
continue; // Skip recent entries
|
|
71
|
+
const decayed = Math.round(row.importance * Math.pow(cfg.decayRate, daysSince));
|
|
72
|
+
if (decayed !== row.importance && decayed >= cfg.minImportanceAfterDecay) {
|
|
73
|
+
updateStmt.run(decayed, row.id);
|
|
74
|
+
updated++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Table might not exist
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const rows = db.prepare(`
|
|
83
|
+
SELECT id, importance, timestamp
|
|
84
|
+
FROM session_memories
|
|
85
|
+
WHERE importance > ?
|
|
86
|
+
`).all(cfg.minImportanceAfterDecay);
|
|
87
|
+
const updateStmt = db.prepare('UPDATE session_memories SET importance = ? WHERE id = ?');
|
|
88
|
+
for (const row of rows) {
|
|
89
|
+
const daysSince = (now - new Date(row.timestamp).getTime()) / (1000 * 60 * 60 * 24);
|
|
90
|
+
if (daysSince < 1)
|
|
91
|
+
continue;
|
|
92
|
+
const decayed = Math.round(row.importance * Math.pow(cfg.decayRate, daysSince));
|
|
93
|
+
if (decayed !== row.importance && decayed >= cfg.minImportanceAfterDecay) {
|
|
94
|
+
updateStmt.run(decayed, row.id);
|
|
95
|
+
updated++;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Table might not exist
|
|
101
|
+
}
|
|
102
|
+
return updated;
|
|
103
|
+
}
|
|
104
|
+
function pruneStale(db, cfg) {
|
|
105
|
+
let pruned = 0;
|
|
106
|
+
const cutoffDate = new Date();
|
|
107
|
+
cutoffDate.setDate(cutoffDate.getDate() - cfg.staleDaysThreshold);
|
|
108
|
+
const cutoff = cutoffDate.toISOString();
|
|
109
|
+
try {
|
|
110
|
+
const result = db.prepare(`
|
|
111
|
+
DELETE FROM memories
|
|
112
|
+
WHERE importance <= ? AND timestamp < ?
|
|
113
|
+
`).run(cfg.minImportanceAfterDecay, cutoff);
|
|
114
|
+
pruned += result.changes;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
// Table might not exist
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const result = db.prepare(`
|
|
121
|
+
DELETE FROM session_memories
|
|
122
|
+
WHERE importance <= ? AND timestamp < ?
|
|
123
|
+
`).run(cfg.minImportanceAfterDecay, cutoff);
|
|
124
|
+
pruned += result.changes;
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Table might not exist
|
|
128
|
+
}
|
|
129
|
+
return pruned;
|
|
130
|
+
}
|
|
131
|
+
function archiveDailyLogs(db, cfg) {
|
|
132
|
+
try {
|
|
133
|
+
ensureDailyLogSchema(db);
|
|
134
|
+
const cutoff = new Date();
|
|
135
|
+
cutoff.setDate(cutoff.getDate() - cfg.archiveDaysOld);
|
|
136
|
+
const cutoffDate = cutoff.toISOString().split('T')[0];
|
|
137
|
+
// Delete promoted entries older than threshold
|
|
138
|
+
const result = db.prepare(`
|
|
139
|
+
DELETE FROM daily_log WHERE date < ? AND promoted = 1
|
|
140
|
+
`).run(cutoffDate);
|
|
141
|
+
return result.changes;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function removeDuplicates(db) {
|
|
148
|
+
let removed = 0;
|
|
149
|
+
try {
|
|
150
|
+
// Remove exact duplicates in memories (keep lowest id)
|
|
151
|
+
const result = db.prepare(`
|
|
152
|
+
DELETE FROM memories
|
|
153
|
+
WHERE id NOT IN (
|
|
154
|
+
SELECT MIN(id) FROM memories GROUP BY content, project_id
|
|
155
|
+
)
|
|
156
|
+
`).run();
|
|
157
|
+
removed += result.changes;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Table might not exist
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
// Remove exact duplicates in session_memories
|
|
164
|
+
const result = db.prepare(`
|
|
165
|
+
DELETE FROM session_memories
|
|
166
|
+
WHERE id NOT IN (
|
|
167
|
+
SELECT MIN(id) FROM session_memories GROUP BY content, session_id
|
|
168
|
+
)
|
|
169
|
+
`).run();
|
|
170
|
+
removed += result.changes;
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Table might not exist
|
|
174
|
+
}
|
|
175
|
+
return removed;
|
|
176
|
+
}
|
|
177
|
+
function detectStaleWorktrees(dbPath, cfg) {
|
|
178
|
+
// Look for .worktrees directory relative to the DB path
|
|
179
|
+
// DB is typically at agents/data/memory/short_term.db, project root is 3 levels up
|
|
180
|
+
const projectRoot = join(dbPath, '..', '..', '..', '..');
|
|
181
|
+
const worktreesDir = join(projectRoot, '.worktrees');
|
|
182
|
+
if (!existsSync(worktreesDir))
|
|
183
|
+
return [];
|
|
184
|
+
const stale = [];
|
|
185
|
+
const staleDays = cfg.archiveDaysOld; // reuse same threshold
|
|
186
|
+
const cutoff = Date.now() - staleDays * 24 * 60 * 60 * 1000;
|
|
187
|
+
try {
|
|
188
|
+
const entries = readdirSync(worktreesDir);
|
|
189
|
+
for (const entry of entries) {
|
|
190
|
+
const entryPath = join(worktreesDir, entry);
|
|
191
|
+
try {
|
|
192
|
+
const stats = statSync(entryPath);
|
|
193
|
+
if (stats.isDirectory() && stats.mtimeMs < cutoff) {
|
|
194
|
+
stale.push(entry);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// Skip entries we can't stat
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Can't read directory
|
|
204
|
+
}
|
|
205
|
+
return stale;
|
|
206
|
+
}
|
|
207
|
+
function generateRecommendations(db, cfg, staleWorktrees = []) {
|
|
208
|
+
const recs = [];
|
|
209
|
+
try {
|
|
210
|
+
// Check total memory count
|
|
211
|
+
const memCount = db.prepare('SELECT COUNT(*) as c FROM memories').get().c;
|
|
212
|
+
if (memCount > 45) {
|
|
213
|
+
recs.push(`Working memory near capacity (${memCount}/50). Consider promoting important entries and pruning old ones.`);
|
|
214
|
+
}
|
|
215
|
+
// Check for stale entries
|
|
216
|
+
const staleDate = new Date();
|
|
217
|
+
staleDate.setDate(staleDate.getDate() - cfg.staleDaysThreshold);
|
|
218
|
+
const staleCount = db.prepare(`
|
|
219
|
+
SELECT COUNT(*) as c FROM memories WHERE timestamp < ? AND importance <= 3
|
|
220
|
+
`).get(staleDate.toISOString()).c;
|
|
221
|
+
if (staleCount > 0) {
|
|
222
|
+
recs.push(`${staleCount} stale entries with low importance found. Run maintenance again or review manually.`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
// Table might not exist
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
// Check unpromoted daily log entries
|
|
230
|
+
ensureDailyLogSchema(db);
|
|
231
|
+
const unpromoted = db.prepare(`
|
|
232
|
+
SELECT COUNT(*) as c FROM daily_log WHERE promoted = 0
|
|
233
|
+
`).get().c;
|
|
234
|
+
if (unpromoted > 10) {
|
|
235
|
+
recs.push(`${unpromoted} unpromoted daily log entries. Run \`uap memory promote\` to review.`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Table might not exist
|
|
240
|
+
}
|
|
241
|
+
try {
|
|
242
|
+
// Check for entries with very low importance
|
|
243
|
+
const lowImp = db.prepare(`
|
|
244
|
+
SELECT COUNT(*) as c FROM session_memories WHERE importance <= 2
|
|
245
|
+
`).get().c;
|
|
246
|
+
if (lowImp > 20) {
|
|
247
|
+
recs.push(`${lowImp} session memories with very low importance. These may be pruned on next maintenance.`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Table might not exist
|
|
252
|
+
}
|
|
253
|
+
if (staleWorktrees.length > 0) {
|
|
254
|
+
recs.push(`${staleWorktrees.length} stale worktrees found (>${cfg.archiveDaysOld} days old): ${staleWorktrees.slice(0, 5).join(', ')}${staleWorktrees.length > 5 ? '...' : ''}. Run \`uap worktree cleanup <id>\` to remove.`);
|
|
255
|
+
}
|
|
256
|
+
if (recs.length === 0) {
|
|
257
|
+
recs.push('Memory system is healthy. No action needed.');
|
|
258
|
+
}
|
|
259
|
+
return recs;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get a quick health summary without running full maintenance.
|
|
263
|
+
*/
|
|
264
|
+
export function getHealthSummary(dbPath) {
|
|
265
|
+
const summary = {
|
|
266
|
+
memoriesCount: 0,
|
|
267
|
+
sessionCount: 0,
|
|
268
|
+
dailyLogCount: 0,
|
|
269
|
+
staleCount: 0,
|
|
270
|
+
unpromotedCount: 0,
|
|
271
|
+
healthy: true,
|
|
272
|
+
};
|
|
273
|
+
if (!existsSync(dbPath))
|
|
274
|
+
return summary;
|
|
275
|
+
const db = new Database(dbPath, { readonly: true });
|
|
276
|
+
try {
|
|
277
|
+
try {
|
|
278
|
+
summary.memoriesCount = db.prepare('SELECT COUNT(*) as c FROM memories').get().c;
|
|
279
|
+
}
|
|
280
|
+
catch { /* table doesn't exist */ }
|
|
281
|
+
try {
|
|
282
|
+
summary.sessionCount = db.prepare('SELECT COUNT(*) as c FROM session_memories').get().c;
|
|
283
|
+
}
|
|
284
|
+
catch { /* table doesn't exist */ }
|
|
285
|
+
try {
|
|
286
|
+
summary.dailyLogCount = db.prepare('SELECT COUNT(*) as c FROM daily_log').get().c;
|
|
287
|
+
summary.unpromotedCount = db.prepare('SELECT COUNT(*) as c FROM daily_log WHERE promoted = 0').get().c;
|
|
288
|
+
}
|
|
289
|
+
catch { /* table doesn't exist */ }
|
|
290
|
+
const staleDate = new Date();
|
|
291
|
+
staleDate.setDate(staleDate.getDate() - 14);
|
|
292
|
+
try {
|
|
293
|
+
summary.staleCount = db.prepare(`
|
|
294
|
+
SELECT COUNT(*) as c FROM memories WHERE timestamp < ? AND importance <= 3
|
|
295
|
+
`).get(staleDate.toISOString()).c;
|
|
296
|
+
}
|
|
297
|
+
catch { /* table doesn't exist */ }
|
|
298
|
+
summary.healthy = summary.memoriesCount <= 45 && summary.staleCount < 10 && summary.unpromotedCount < 20;
|
|
299
|
+
}
|
|
300
|
+
finally {
|
|
301
|
+
db.close();
|
|
302
|
+
}
|
|
303
|
+
return summary;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=memory-maintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-maintenance.js","sourceRoot":"","sources":["../../src/memory/memory-maintenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
export type ModelId = 'glm-4.7' | 'gpt-5.2' | 'claude-opus-4.5' | 'gpt-5.2-codex';
|
|
14
|
+
export interface CategoryStats {
|
|
15
|
+
attempts: number;
|
|
16
|
+
successes: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ModelFingerprint {
|
|
19
|
+
id: ModelId;
|
|
20
|
+
strengths: string[];
|
|
21
|
+
weaknesses: string[];
|
|
22
|
+
avgLatencyMs: number;
|
|
23
|
+
successRate: number;
|
|
24
|
+
costPerTask: number;
|
|
25
|
+
maxComplexity: 'easy' | 'medium' | 'hard';
|
|
26
|
+
bestCategories: string[];
|
|
27
|
+
categoryStats?: Record<string, CategoryStats>;
|
|
28
|
+
}
|
|
29
|
+
export interface RoutingDecision {
|
|
30
|
+
primary: ModelId;
|
|
31
|
+
fallback: ModelId[];
|
|
32
|
+
reason: string;
|
|
33
|
+
estimatedLatencyMs: number;
|
|
34
|
+
estimatedSuccessRate: number;
|
|
35
|
+
estimatedCost: number;
|
|
36
|
+
}
|
|
37
|
+
export interface RoutingConfig {
|
|
38
|
+
preferLatency: boolean;
|
|
39
|
+
preferAccuracy: boolean;
|
|
40
|
+
maxCostPerTask: number;
|
|
41
|
+
maxLatencyMs: number;
|
|
42
|
+
availableModels: ModelId[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Failure handlers for model-specific known issues
|
|
46
|
+
*/
|
|
47
|
+
declare const FAILURE_HANDLERS: Record<string, {
|
|
48
|
+
action: 'add_context' | 'reduce_context' | 'switch_model';
|
|
49
|
+
context?: string;
|
|
50
|
+
fallbackModel?: ModelId;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Route a task to the best model
|
|
54
|
+
*/
|
|
55
|
+
export declare function routeTask(instruction: string, difficulty?: 'easy' | 'medium' | 'hard', config?: Partial<RoutingConfig>): RoutingDecision;
|
|
56
|
+
/**
|
|
57
|
+
* Get failure handler for a model-specific error
|
|
58
|
+
*/
|
|
59
|
+
export declare function getFailureHandler(modelId: ModelId, errorType: string): typeof FAILURE_HANDLERS[string] | null;
|
|
60
|
+
/**
|
|
61
|
+
* Get model fingerprint
|
|
62
|
+
*/
|
|
63
|
+
export declare function getModelFingerprint(modelId: ModelId): ModelFingerprint | null;
|
|
64
|
+
/**
|
|
65
|
+
* Get all model fingerprints
|
|
66
|
+
*/
|
|
67
|
+
export declare function getAllModelFingerprints(): Record<ModelId, ModelFingerprint>;
|
|
68
|
+
/**
|
|
69
|
+
* Update model fingerprint with new benchmark data
|
|
70
|
+
*/
|
|
71
|
+
export declare function updateModelFingerprint(modelId: ModelId, updates: Partial<Pick<ModelFingerprint, 'avgLatencyMs' | 'successRate' | 'costPerTask'>>): void;
|
|
72
|
+
/**
|
|
73
|
+
* Record task outcome to update model fingerprints (feedback loop)
|
|
74
|
+
* Call this after each task completes to improve future routing decisions
|
|
75
|
+
* OPT 8: Now persists to SQLite for cross-session learning
|
|
76
|
+
*/
|
|
77
|
+
export declare function recordTaskOutcome(modelId: ModelId, success: boolean, latencyMs: number, taskCategory?: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get routing recommendation with explanation
|
|
80
|
+
*/
|
|
81
|
+
export declare function explainRouting(instruction: string, difficulty?: 'easy' | 'medium' | 'hard'): string;
|
|
82
|
+
/**
|
|
83
|
+
* OPT 8: Close fingerprint database connection
|
|
84
|
+
*/
|
|
85
|
+
export declare function closeFingerprintDb(): void;
|
|
86
|
+
/**
|
|
87
|
+
* OPT 8: Force reload fingerprints from database
|
|
88
|
+
*/
|
|
89
|
+
export declare function reloadFingerprints(): void;
|
|
90
|
+
export declare const ModelRouter: {
|
|
91
|
+
routeTask: typeof routeTask;
|
|
92
|
+
getFailureHandler: typeof getFailureHandler;
|
|
93
|
+
getModelFingerprint: typeof getModelFingerprint;
|
|
94
|
+
getAllModelFingerprints: typeof getAllModelFingerprints;
|
|
95
|
+
updateModelFingerprint: typeof updateModelFingerprint;
|
|
96
|
+
recordTaskOutcome: typeof recordTaskOutcome;
|
|
97
|
+
explainRouting: typeof explainRouting;
|
|
98
|
+
closeFingerprintDb: typeof closeFingerprintDb;
|
|
99
|
+
reloadFingerprints: typeof reloadFingerprints;
|
|
100
|
+
};
|
|
101
|
+
export default ModelRouter;
|
|
102
|
+
//# sourceMappingURL=model-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.d.ts","sourceRoot":"","sources":["../../src/memory/model-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,EAAE,CAAC;CAC5B;AAyND;;GAEG;AACH,QAAA,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;IACrC,MAAM,EAAE,aAAa,GAAG,gBAAgB,GAAG,cAAc,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAcA,CAAC;AAuFF;;GAEG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,MAAM,GAAG,QAAQ,GAAG,MAAiB,EACjD,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM,GAClC,eAAe,CAoCjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI,CAE7G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAE7E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC,GACvF,IAAI,CAcN;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,GAAG,QAAQ,GAAG,MAAiB,GAAG,MAAM,CAc7G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,eAAO,MAAM,WAAW;;;;;;;;;;CAUvB,CAAC;AAEF,eAAe,WAAW,CAAC"}
|