@miller-tech/uap 1.0.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 +888 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +684 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/benchmarks/agents/naive-agent.d.ts +60 -0
- package/dist/benchmarks/agents/naive-agent.d.ts.map +1 -0
- package/dist/benchmarks/agents/naive-agent.js +144 -0
- package/dist/benchmarks/agents/naive-agent.js.map +1 -0
- package/dist/benchmarks/agents/uap-agent.d.ts +167 -0
- package/dist/benchmarks/agents/uap-agent.d.ts.map +1 -0
- package/dist/benchmarks/agents/uap-agent.js +437 -0
- package/dist/benchmarks/agents/uap-agent.js.map +1 -0
- package/dist/benchmarks/benchmark.d.ts +328 -0
- package/dist/benchmarks/benchmark.d.ts.map +1 -0
- package/dist/benchmarks/benchmark.js +112 -0
- package/dist/benchmarks/benchmark.js.map +1 -0
- package/dist/benchmarks/execution-verifier.d.ts +41 -0
- package/dist/benchmarks/execution-verifier.d.ts.map +1 -0
- package/dist/benchmarks/execution-verifier.js +340 -0
- package/dist/benchmarks/execution-verifier.js.map +1 -0
- package/dist/benchmarks/hierarchical-prompting.d.ts +37 -0
- package/dist/benchmarks/hierarchical-prompting.d.ts.map +1 -0
- package/dist/benchmarks/hierarchical-prompting.js +246 -0
- package/dist/benchmarks/hierarchical-prompting.js.map +1 -0
- package/dist/benchmarks/improved-benchmark.d.ts +89 -0
- package/dist/benchmarks/improved-benchmark.d.ts.map +1 -0
- package/dist/benchmarks/improved-benchmark.js +585 -0
- package/dist/benchmarks/improved-benchmark.js.map +1 -0
- package/dist/benchmarks/index.d.ts +11 -0
- package/dist/benchmarks/index.d.ts.map +1 -0
- package/dist/benchmarks/index.js +11 -0
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/benchmarks/model-integration.d.ts +111 -0
- package/dist/benchmarks/model-integration.d.ts.map +1 -0
- package/dist/benchmarks/model-integration.js +904 -0
- package/dist/benchmarks/model-integration.js.map +1 -0
- package/dist/benchmarks/multi-turn-agent.d.ts +44 -0
- package/dist/benchmarks/multi-turn-agent.d.ts.map +1 -0
- package/dist/benchmarks/multi-turn-agent.js +254 -0
- package/dist/benchmarks/multi-turn-agent.js.map +1 -0
- package/dist/benchmarks/multi-turn-loop.d.ts +57 -0
- package/dist/benchmarks/multi-turn-loop.d.ts.map +1 -0
- package/dist/benchmarks/multi-turn-loop.js +167 -0
- package/dist/benchmarks/multi-turn-loop.js.map +1 -0
- package/dist/benchmarks/tasks.d.ts +19 -0
- package/dist/benchmarks/tasks.d.ts.map +1 -0
- package/dist/benchmarks/tasks.js +435 -0
- package/dist/benchmarks/tasks.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 +546 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/llama-server-optimize.d.ts +18 -0
- package/dist/bin/llama-server-optimize.d.ts.map +1 -0
- package/dist/bin/llama-server-optimize.js +708 -0
- package/dist/bin/llama-server-optimize.js.map +1 -0
- package/dist/bin/policy.d.ts +3 -0
- package/dist/bin/policy.d.ts.map +1 -0
- package/dist/bin/policy.js +143 -0
- package/dist/bin/policy.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/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/web-browser.d.ts +30 -0
- package/dist/browser/web-browser.d.ts.map +1 -0
- package/dist/browser/web-browser.js +93 -0
- package/dist/browser/web-browser.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 +474 -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/completion-gates.d.ts +51 -0
- package/dist/cli/completion-gates.d.ts.map +1 -0
- package/dist/cli/completion-gates.js +201 -0
- package/dist/cli/completion-gates.js.map +1 -0
- package/dist/cli/compliance.d.ts +8 -0
- package/dist/cli/compliance.d.ts.map +1 -0
- package/dist/cli/compliance.js +509 -0
- package/dist/cli/compliance.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 +21 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +1508 -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 +387 -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 +464 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +12 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +364 -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 +885 -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 +290 -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 +862 -0
- package/dist/cli/patterns.js.map +1 -0
- package/dist/cli/rtk-validation.d.ts +9 -0
- package/dist/cli/rtk-validation.d.ts.map +1 -0
- package/dist/cli/rtk-validation.js +9 -0
- package/dist/cli/rtk-validation.js.map +1 -0
- package/dist/cli/rtk.d.ts +34 -0
- package/dist/cli/rtk.d.ts.map +1 -0
- package/dist/cli/rtk.js +401 -0
- package/dist/cli/rtk.js.map +1 -0
- package/dist/cli/schema-diff.d.ts +7 -0
- package/dist/cli/schema-diff.d.ts.map +1 -0
- package/dist/cli/schema-diff.js +11 -0
- package/dist/cli/schema-diff.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-wizard.d.ts +2 -0
- package/dist/cli/setup-wizard.d.ts.map +1 -0
- package/dist/cli/setup-wizard.js +806 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/setup.d.ts +15 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/sync.d.ts +8 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +395 -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 +672 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/tool-calls.d.ts +20 -0
- package/dist/cli/tool-calls.d.ts.map +1 -0
- package/dist/cli/tool-calls.js +605 -0
- package/dist/cli/tool-calls.js.map +1 -0
- package/dist/cli/uap.d.ts +10 -0
- package/dist/cli/uap.d.ts.map +1 -0
- package/dist/cli/uap.js +398 -0
- package/dist/cli/uap.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 +213 -0
- package/dist/cli/worktree.js.map +1 -0
- package/dist/coordination/adaptive-patterns.d.ts +65 -0
- package/dist/coordination/adaptive-patterns.d.ts.map +1 -0
- package/dist/coordination/adaptive-patterns.js +108 -0
- package/dist/coordination/adaptive-patterns.js.map +1 -0
- package/dist/coordination/auto-agent.d.ts +82 -0
- package/dist/coordination/auto-agent.d.ts.map +1 -0
- package/dist/coordination/auto-agent.js +145 -0
- package/dist/coordination/auto-agent.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 +334 -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 +136 -0
- package/dist/coordination/database.js.map +1 -0
- package/dist/coordination/deploy-batcher.d.ts +122 -0
- package/dist/coordination/deploy-batcher.d.ts.map +1 -0
- package/dist/coordination/deploy-batcher.js +718 -0
- package/dist/coordination/deploy-batcher.js.map +1 -0
- package/dist/coordination/droid-validator.d.ts +59 -0
- package/dist/coordination/droid-validator.d.ts.map +1 -0
- package/dist/coordination/droid-validator.js +142 -0
- package/dist/coordination/droid-validator.js.map +1 -0
- package/dist/coordination/index.d.ts +10 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +10 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/pattern-router.d.ts +50 -0
- package/dist/coordination/pattern-router.d.ts.map +1 -0
- package/dist/coordination/pattern-router.js +118 -0
- package/dist/coordination/pattern-router.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 +619 -0
- package/dist/coordination/service.js.map +1 -0
- package/dist/coordination/worktree-enforcer.d.ts +22 -0
- package/dist/coordination/worktree-enforcer.d.ts.map +1 -0
- package/dist/coordination/worktree-enforcer.js +71 -0
- package/dist/coordination/worktree-enforcer.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 +1020 -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 +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -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 +189 -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 +144 -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 +149 -0
- package/dist/memory/adaptive-context.d.ts.map +1 -0
- package/dist/memory/adaptive-context.js +1095 -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/ambiguity-detector.d.ts +54 -0
- package/dist/memory/ambiguity-detector.d.ts.map +1 -0
- package/dist/memory/ambiguity-detector.js +401 -0
- package/dist/memory/ambiguity-detector.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 +27 -0
- package/dist/memory/backends/github.d.ts.map +1 -0
- package/dist/memory/backends/github.js +134 -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 +167 -0
- package/dist/memory/backends/qdrant-cloud.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +116 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +430 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/context-pruner.d.ts +55 -0
- package/dist/memory/context-pruner.d.ts.map +1 -0
- package/dist/memory/context-pruner.js +85 -0
- package/dist/memory/context-pruner.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 +112 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
- package/dist/memory/dynamic-retrieval.js +908 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -0
- package/dist/memory/embeddings.d.ts +172 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +780 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/generic-uap-patterns.d.ts +7 -0
- package/dist/memory/generic-uap-patterns.d.ts.map +1 -0
- package/dist/memory/generic-uap-patterns.js +43 -0
- package/dist/memory/generic-uap-patterns.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 +485 -0
- package/dist/memory/hierarchical-memory.js.map +1 -0
- package/dist/memory/knowledge-graph.d.ts +98 -0
- package/dist/memory/knowledge-graph.d.ts.map +1 -0
- package/dist/memory/knowledge-graph.js +275 -0
- package/dist/memory/knowledge-graph.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 +336 -0
- package/dist/memory/memory-maintenance.js.map +1 -0
- package/dist/memory/model-router.d.ts +105 -0
- package/dist/memory/model-router.d.ts.map +1 -0
- package/dist/memory/model-router.js +474 -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 +430 -0
- package/dist/memory/multi-view-memory.js.map +1 -0
- package/dist/memory/predictive-memory.d.ts +79 -0
- package/dist/memory/predictive-memory.d.ts.map +1 -0
- package/dist/memory/predictive-memory.js +294 -0
- package/dist/memory/predictive-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 +832 -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 +359 -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 +141 -0
- package/dist/memory/short-term/schema.js.map +1 -0
- package/dist/memory/short-term/sqlite.d.ts +64 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -0
- package/dist/memory/short-term/sqlite.js +274 -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 +457 -0
- package/dist/memory/speculative-cache.js.map +1 -0
- package/dist/memory/task-classifier.d.ts +40 -0
- package/dist/memory/task-classifier.d.ts.map +1 -0
- package/dist/memory/task-classifier.js +342 -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 +622 -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/api-client.d.ts +46 -0
- package/dist/models/api-client.d.ts.map +1 -0
- package/dist/models/api-client.js +182 -0
- package/dist/models/api-client.js.map +1 -0
- package/dist/models/execution-profiles.d.ts +64 -0
- package/dist/models/execution-profiles.d.ts.map +1 -0
- package/dist/models/execution-profiles.js +403 -0
- package/dist/models/execution-profiles.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 +382 -0
- package/dist/models/executor.js.map +1 -0
- package/dist/models/index.d.ts +19 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +23 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/plan-validator.d.ts +37 -0
- package/dist/models/plan-validator.d.ts.map +1 -0
- package/dist/models/plan-validator.js +179 -0
- package/dist/models/plan-validator.js.map +1 -0
- package/dist/models/planner.d.ts +73 -0
- package/dist/models/planner.d.ts.map +1 -0
- package/dist/models/planner.js +375 -0
- package/dist/models/planner.js.map +1 -0
- package/dist/models/router.d.ts +96 -0
- package/dist/models/router.d.ts.map +1 -0
- package/dist/models/router.js +523 -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 +232 -0
- package/dist/models/types.js.map +1 -0
- package/dist/models/unified-router.d.ts +152 -0
- package/dist/models/unified-router.d.ts.map +1 -0
- package/dist/models/unified-router.js +313 -0
- package/dist/models/unified-router.js.map +1 -0
- package/dist/policies/convert-policy-to-claude.d.ts +3 -0
- package/dist/policies/convert-policy-to-claude.d.ts.map +1 -0
- package/dist/policies/convert-policy-to-claude.js +87 -0
- package/dist/policies/convert-policy-to-claude.js.map +1 -0
- package/dist/policies/database-manager.d.ts +27 -0
- package/dist/policies/database-manager.d.ts.map +1 -0
- package/dist/policies/database-manager.js +198 -0
- package/dist/policies/database-manager.js.map +1 -0
- package/dist/policies/enforced-tool-router.d.ts +53 -0
- package/dist/policies/enforced-tool-router.d.ts.map +1 -0
- package/dist/policies/enforced-tool-router.js +80 -0
- package/dist/policies/enforced-tool-router.js.map +1 -0
- package/dist/policies/index.d.ts +10 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +8 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/policies/policy-gate.d.ts +59 -0
- package/dist/policies/policy-gate.d.ts.map +1 -0
- package/dist/policies/policy-gate.js +171 -0
- package/dist/policies/policy-gate.js.map +1 -0
- package/dist/policies/policy-memory.d.ts +18 -0
- package/dist/policies/policy-memory.d.ts.map +1 -0
- package/dist/policies/policy-memory.js +126 -0
- package/dist/policies/policy-memory.js.map +1 -0
- package/dist/policies/policy-tools.d.ts +11 -0
- package/dist/policies/policy-tools.d.ts.map +1 -0
- package/dist/policies/policy-tools.js +66 -0
- package/dist/policies/policy-tools.js.map +1 -0
- package/dist/policies/schemas/policy.d.ts +69 -0
- package/dist/policies/schemas/policy.d.ts.map +1 -0
- package/dist/policies/schemas/policy.js +31 -0
- package/dist/policies/schemas/policy.js.map +1 -0
- package/dist/tasks/coordination.d.ts +83 -0
- package/dist/tasks/coordination.d.ts.map +1 -0
- package/dist/tasks/coordination.js +291 -0
- package/dist/tasks/coordination.js.map +1 -0
- package/dist/tasks/database.d.ts +19 -0
- package/dist/tasks/database.d.ts.map +1 -0
- package/dist/tasks/database.js +149 -0
- package/dist/tasks/database.js.map +1 -0
- package/dist/tasks/decoder-gate.d.ts +64 -0
- package/dist/tasks/decoder-gate.d.ts.map +1 -0
- package/dist/tasks/decoder-gate.js +268 -0
- package/dist/tasks/decoder-gate.js.map +1 -0
- package/dist/tasks/index.d.ts +6 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +6 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/service.d.ts +40 -0
- package/dist/tasks/service.d.ts.map +1 -0
- package/dist/tasks/service.js +671 -0
- package/dist/tasks/service.js.map +1 -0
- package/dist/tasks/types.d.ts +238 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +74 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +2 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/session-telemetry.d.ts +56 -0
- package/dist/telemetry/session-telemetry.d.ts.map +1 -0
- package/dist/telemetry/session-telemetry.js +807 -0
- package/dist/telemetry/session-telemetry.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 +3324 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +418 -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/uap-droids-strict.d.ts +59 -0
- package/dist/uap-droids-strict.d.ts.map +1 -0
- package/dist/uap-droids-strict.js +200 -0
- package/dist/uap-droids-strict.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/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/rate-limiter.d.ts +58 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +100 -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 +94 -0
- package/dist/utils/validate-json.js.map +1 -0
- package/docs/INDEX.md +66 -0
- package/docs/architecture/MULTI_MODEL.md +224 -0
- package/docs/architecture/SYSTEM_ANALYSIS.md +1117 -0
- package/docs/architecture/UAP_COMPLIANCE.md +217 -0
- package/docs/architecture/UAP_PROTOCOL.md +339 -0
- package/docs/architecture/UAP_STRICT_DROIDS.md +172 -0
- package/docs/archive/BALLS_MODE_SELF_ANALYSIS.md +260 -0
- package/docs/archive/FAILING_TASKS_SOLUTION_PLAN.md +668 -0
- package/docs/archive/JINJA2-SYSTEM-MESSAGE-FIX.md +209 -0
- package/docs/archive/NPM-PUBLISH-V0.9.1.md +240 -0
- package/docs/archive/OPTIMIZATION_OPTIONS.md +334 -0
- package/docs/archive/SETUP_IMPROVEMENTS.md +213 -0
- package/docs/archive/UAP_GENERIC_OPTIMIZATION_PLAN.md +270 -0
- package/docs/archive/UAP_V103_PATTERN_DESIGN.md +315 -0
- package/docs/archive/UAP_V104_COMPLIANCE_DESIGN.md +223 -0
- package/docs/archive/changelog/2026-03-10_uap-100-compliance.md +77 -0
- package/docs/archive/changelog/2026-03-10_uap-full-system-verification.md +109 -0
- package/docs/benchmarks/ACCURACY_ANALYSIS.md +471 -0
- package/docs/benchmarks/TOKEN_OPTIMIZATION.md +572 -0
- package/docs/benchmarks/VALIDATION_PLAN.md +568 -0
- package/docs/benchmarks/VALIDATION_RESULTS.md +161 -0
- package/docs/deployment/DEPLOYMENT.md +895 -0
- package/docs/deployment/DEPLOYMENT_STRATEGIES.md +518 -0
- package/docs/deployment/DEPLOY_BATCHER_ANALYSIS.md +856 -0
- package/docs/deployment/DEPLOY_BATCHING.md +273 -0
- package/docs/deployment/DEPLOY_BUCKETING_ANALYSIS.md +420 -0
- package/docs/deployment/QWEN35_LLAMA_CPP.md +265 -0
- package/docs/getting-started/INTEGRATION.md +449 -0
- package/docs/getting-started/OVERVIEW.md +344 -0
- package/docs/getting-started/SETUP.md +203 -0
- package/docs/integrations/MCP_ROUTER_SETUP.md +445 -0
- package/docs/integrations/RTK_INTEGRATION.md +468 -0
- package/docs/operations/TROUBLESHOOTING.md +660 -0
- package/docs/reference/API_REFERENCE.md +903 -0
- package/docs/reference/FEATURES.md +472 -0
- package/docs/reference/HARNESS-MATRIX.md +318 -0
- package/docs/reference/UAP_CLI_REFERENCE.md +600 -0
- package/docs/research/BEHAVIORAL_PATTERNS.md +228 -0
- package/docs/research/DOMAIN_STRATEGIES.md +316 -0
- package/docs/research/MEMORY_SYSTEMS_COMPARISON.md +812 -0
- package/docs/research/PATTERN_ANALYSIS_2026-01-18.md +436 -0
- package/docs/research/PERFORMANCE_ANALYSIS_2026-01-18.md +209 -0
- package/docs/research/PERFORMANCE_TEST_PLAN.md +383 -0
- package/docs/research/TERMINAL_BENCH_LEARNINGS.md +217 -0
- package/package.json +113 -0
- package/scripts/README.md +161 -0
- package/templates/CLAUDE.template.md +10 -0
- package/templates/CLAUDE_ARCHITECTURE.template.md +103 -0
- package/templates/CLAUDE_CODING.template.md +127 -0
- package/templates/CLAUDE_DROIDS.template.md +109 -0
- package/templates/CLAUDE_MEMORY.template.md +131 -0
- package/templates/CLAUDE_WORKFLOWS.template.md +139 -0
- package/templates/PROJECT.template.md +209 -0
- package/templates/SCHEMA.md +57 -0
- package/templates/archive/CLAUDE.template.root-v6.md +534 -0
- package/templates/archive/CLAUDE.template.v6.md +534 -0
- package/templates/hooks/forgecode/pre-compact.sh +68 -0
- package/templates/hooks/forgecode/session-start.sh +169 -0
- package/templates/hooks/forgecode.plugin.sh +128 -0
- package/templates/hooks/pre-compact.sh +74 -0
- package/templates/hooks/session-start.sh +366 -0
- package/tools/agents/README.md +224 -0
- package/tools/agents/UAP/README.md +386 -0
- package/tools/agents/UAP/__init__.py +9 -0
- package/tools/agents/UAP/cli.py +901 -0
- package/tools/agents/UAP/compliance_verify.sh +108 -0
- package/tools/agents/UAP/full_verification.sh +126 -0
- package/tools/agents/UAP/version.py +32 -0
- package/tools/agents/benchmarks/benchmark_memory_systems.py +730 -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 +77 -0
- package/tools/agents/config/tool-call-schema.json +19 -0
- package/tools/agents/config/tool-call.gbnf +58 -0
- package/tools/agents/docker/Dockerfile.python +52 -0
- package/tools/agents/docker/Dockerfile.ubuntu +55 -0
- package/tools/agents/docker-compose.qdrant.yml +24 -0
- package/tools/agents/install-opencode-local.sh.j2 +135 -0
- package/tools/agents/migrations/apply.py +256 -0
- package/tools/agents/opencode_uap_agent.py +1505 -0
- package/tools/agents/plugin/README.md +91 -0
- package/tools/agents/plugin/index.ts +46 -0
- package/tools/agents/plugin/pre-compact.sh +68 -0
- package/tools/agents/plugin/session-start.sh +175 -0
- package/tools/agents/plugin/uap-commands.ts +45 -0
- package/tools/agents/plugin/uap-droids.ts +54 -0
- package/tools/agents/plugin/uap-patterns.ts +54 -0
- package/tools/agents/plugin/uap-skills.ts +52 -0
- package/tools/agents/plugins/uap-enforce.ts +314 -0
- package/tools/agents/scripts/__pycache__/tool_call_wrapper.cpython-313.pyc +0 -0
- package/tools/agents/scripts/chat_template_verifier.py +343 -0
- package/tools/agents/scripts/fix-qwen-template.js +38 -0
- package/tools/agents/scripts/fix_qwen_chat_template.py +316 -0
- package/tools/agents/scripts/generate_lora_training_data.py +412 -0
- package/tools/agents/scripts/init_qdrant.py +151 -0
- package/tools/agents/scripts/memory_migration.py +560 -0
- package/tools/agents/scripts/migrate_memory_to_qdrant.py +110 -0
- package/tools/agents/scripts/prepare_lora.sh +512 -0
- package/tools/agents/scripts/query_memory.py +200 -0
- package/tools/agents/scripts/qwen-tool-call-test.js +38 -0
- package/tools/agents/scripts/qwen-tool-call-wrapper.js +38 -0
- package/tools/agents/scripts/qwen_tool_call_test.py +464 -0
- package/tools/agents/scripts/qwen_tool_call_wrapper.py +686 -0
- package/tools/agents/scripts/start-services.sh +96 -0
- package/tools/agents/scripts/tool-choice-proxy.cjs +296 -0
- package/tools/agents/scripts/tool_call_test.py +656 -0
- package/tools/agents/scripts/tool_call_wrapper.py +799 -0
- package/tools/agents/tests/test_uap_compliance.py +257 -0
- package/tools/agents/uap_agent.py +122 -0
- package/tools/agents/uap_agent_install.sh +12 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Routing Service
|
|
3
|
+
*
|
|
4
|
+
* Bridges the two independent routing systems:
|
|
5
|
+
* 1. Rule-based ModelRouter (src/models/router.ts) - uses task complexity/type keywords, routing rules, role assignments
|
|
6
|
+
* 2. Benchmark-data ModelRouter (src/memory/model-router.ts) - uses MODEL_FINGERPRINTS with per-category success rates, SQLite persistence
|
|
7
|
+
*
|
|
8
|
+
* Combines both signals to produce a single routing decision with higher accuracy
|
|
9
|
+
* than either system alone. The benchmark-data router is weighted higher when it
|
|
10
|
+
* has sufficient data points (>=5) for the relevant category.
|
|
11
|
+
*/
|
|
12
|
+
import { ModelRouter as RuleBasedRouter } from './router.js';
|
|
13
|
+
import { type ModelId, type RoutingDecision, type RoutingConfig } from '../memory/model-router.js';
|
|
14
|
+
import type { MultiModelConfig, TaskClassificationResult, TaskComplexity } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Result from the unified routing system.
|
|
17
|
+
*/
|
|
18
|
+
export interface UnifiedRoutingResult {
|
|
19
|
+
/** The selected model ID (using rule-based router's naming convention) */
|
|
20
|
+
selectedModel: string;
|
|
21
|
+
/** Fallback model ID if the primary fails */
|
|
22
|
+
fallbackModel: string;
|
|
23
|
+
/** Which system's recommendation was used: 'rule-based', 'benchmark-data', or 'consensus' */
|
|
24
|
+
source: 'rule-based' | 'benchmark-data' | 'consensus';
|
|
25
|
+
/** Confidence score 0-1 reflecting how confident the unified system is */
|
|
26
|
+
confidence: number;
|
|
27
|
+
/** Human-readable reasoning explaining the decision */
|
|
28
|
+
reasoning: string;
|
|
29
|
+
/** The rule-based router's classification */
|
|
30
|
+
ruleBasedClassification: TaskClassificationResult;
|
|
31
|
+
/** The benchmark-data router's decision */
|
|
32
|
+
benchmarkDecision: RoutingDecision;
|
|
33
|
+
/** Whether the two systems agreed on the model */
|
|
34
|
+
systemsAgreed: boolean;
|
|
35
|
+
/** Number of benchmark data points for the relevant category */
|
|
36
|
+
benchmarkDataPoints: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Options for recording outcomes back to the benchmark-data router.
|
|
40
|
+
*/
|
|
41
|
+
export interface OutcomeRecord {
|
|
42
|
+
/** The model that was actually used (rule-based router naming) */
|
|
43
|
+
modelUsed: string;
|
|
44
|
+
/** Whether the task succeeded */
|
|
45
|
+
success: boolean;
|
|
46
|
+
/** Latency in milliseconds */
|
|
47
|
+
latencyMs: number;
|
|
48
|
+
/** Optional task category for category-specific tracking */
|
|
49
|
+
taskCategory?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Side-by-side analysis of both routing systems.
|
|
53
|
+
*/
|
|
54
|
+
export interface RoutingAnalysis {
|
|
55
|
+
taskDescription: string;
|
|
56
|
+
ruleBasedResult: {
|
|
57
|
+
suggestedModel: string;
|
|
58
|
+
complexity: TaskComplexity;
|
|
59
|
+
taskType: string;
|
|
60
|
+
reasoning: string;
|
|
61
|
+
};
|
|
62
|
+
benchmarkResult: {
|
|
63
|
+
primaryModel: ModelId;
|
|
64
|
+
score: string;
|
|
65
|
+
estimatedSuccessRate: number;
|
|
66
|
+
estimatedLatencyMs: number;
|
|
67
|
+
estimatedCost: number;
|
|
68
|
+
reasoning: string;
|
|
69
|
+
};
|
|
70
|
+
unifiedResult: UnifiedRoutingResult;
|
|
71
|
+
modelComparison: Array<{
|
|
72
|
+
modelId: string;
|
|
73
|
+
benchmarkModelId: ModelId | null;
|
|
74
|
+
ruleBasedRole: string | null;
|
|
75
|
+
benchmarkSuccessRate: number | null;
|
|
76
|
+
benchmarkCategoryDataPoints: number | null;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Unified Routing Service that combines rule-based and benchmark-data routing.
|
|
81
|
+
*/
|
|
82
|
+
export declare class UnifiedRoutingService {
|
|
83
|
+
private ruleRouter;
|
|
84
|
+
private benchmarkConfig;
|
|
85
|
+
/**
|
|
86
|
+
* @param config - MultiModelConfig for the rule-based router
|
|
87
|
+
* @param benchmarkConfig - Optional overrides for the benchmark-data router's RoutingConfig
|
|
88
|
+
*/
|
|
89
|
+
constructor(config: MultiModelConfig, benchmarkConfig?: Partial<RoutingConfig>);
|
|
90
|
+
/**
|
|
91
|
+
* Route a task using both systems and combine their signals.
|
|
92
|
+
*
|
|
93
|
+
* Decision logic:
|
|
94
|
+
* - If both systems agree on the model → use that model (source: 'consensus')
|
|
95
|
+
* - If they disagree and benchmark has >=5 data points for the category → use benchmark (source: 'benchmark-data')
|
|
96
|
+
* - If they disagree and benchmark has <5 data points → use rule-based (source: 'rule-based')
|
|
97
|
+
*/
|
|
98
|
+
route(taskDescription: string): UnifiedRoutingResult;
|
|
99
|
+
/**
|
|
100
|
+
* Record a task outcome, feeding back to the benchmark-data router for learning.
|
|
101
|
+
*/
|
|
102
|
+
recordOutcome(outcome: OutcomeRecord): void;
|
|
103
|
+
/**
|
|
104
|
+
* Show both systems' recommendations side by side for analysis/debugging.
|
|
105
|
+
*/
|
|
106
|
+
analyzeRouting(taskDescription: string): RoutingAnalysis;
|
|
107
|
+
/**
|
|
108
|
+
* Get the underlying rule-based router for advanced usage.
|
|
109
|
+
*/
|
|
110
|
+
getRuleRouter(): RuleBasedRouter;
|
|
111
|
+
/**
|
|
112
|
+
* Get the number of benchmark data points for the most relevant category
|
|
113
|
+
* for a given task description, using the benchmark model's fingerprint.
|
|
114
|
+
*/
|
|
115
|
+
private getCategoryDataPoints;
|
|
116
|
+
/**
|
|
117
|
+
* Same as getCategoryDataPoints but takes a fingerprint directly (no model lookup).
|
|
118
|
+
*/
|
|
119
|
+
private getCategoryDataPointsFromFingerprint;
|
|
120
|
+
/**
|
|
121
|
+
* Get the maximum number of attempts across all categories for a fingerprint.
|
|
122
|
+
* This represents the most-exercised category and serves as a proxy for
|
|
123
|
+
* how much data we have for this model.
|
|
124
|
+
*/
|
|
125
|
+
private getMaxCategoryAttempts;
|
|
126
|
+
/**
|
|
127
|
+
* Compute confidence when both systems agree.
|
|
128
|
+
* Higher confidence because consensus is a strong signal.
|
|
129
|
+
*/
|
|
130
|
+
private computeConsensusConfidence;
|
|
131
|
+
/**
|
|
132
|
+
* Compute confidence when using the benchmark-data router (disagreement case).
|
|
133
|
+
*/
|
|
134
|
+
private computeBenchmarkConfidence;
|
|
135
|
+
/**
|
|
136
|
+
* Compute confidence when using the rule-based router (disagreement, low benchmark data).
|
|
137
|
+
*/
|
|
138
|
+
private computeRuleBasedConfidence;
|
|
139
|
+
/**
|
|
140
|
+
* Select the best fallback model from the two systems' recommendations.
|
|
141
|
+
*/
|
|
142
|
+
private selectFallback;
|
|
143
|
+
/**
|
|
144
|
+
* Get the role assigned to a model in the rule-based router.
|
|
145
|
+
*/
|
|
146
|
+
private getRoleForModel;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Create a UnifiedRoutingService with the given configuration.
|
|
150
|
+
*/
|
|
151
|
+
export declare function createUnifiedRouter(config: MultiModelConfig, benchmarkConfig?: Partial<RoutingConfig>): UnifiedRoutingService;
|
|
152
|
+
//# sourceMappingURL=unified-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-router.d.ts","sourceRoot":"","sources":["../../src/models/unified-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Routing Service
|
|
3
|
+
*
|
|
4
|
+
* Bridges the two independent routing systems:
|
|
5
|
+
* 1. Rule-based ModelRouter (src/models/router.ts) - uses task complexity/type keywords, routing rules, role assignments
|
|
6
|
+
* 2. Benchmark-data ModelRouter (src/memory/model-router.ts) - uses MODEL_FINGERPRINTS with per-category success rates, SQLite persistence
|
|
7
|
+
*
|
|
8
|
+
* Combines both signals to produce a single routing decision with higher accuracy
|
|
9
|
+
* than either system alone. The benchmark-data router is weighted higher when it
|
|
10
|
+
* has sufficient data points (>=5) for the relevant category.
|
|
11
|
+
*/
|
|
12
|
+
import { ModelRouter as RuleBasedRouter } from './router.js';
|
|
13
|
+
import { routeTask as benchmarkRouteTask, recordTaskOutcome, getModelFingerprint, getAllModelFingerprints, } from '../memory/model-router.js';
|
|
14
|
+
/**
|
|
15
|
+
* Mapping from benchmark-data ModelId values to rule-based router model IDs.
|
|
16
|
+
* The benchmark router uses 'claude-opus-4.5' while the rule-based router uses 'opus-4.5'.
|
|
17
|
+
*/
|
|
18
|
+
const BENCHMARK_TO_RULE_MODEL_MAP = {
|
|
19
|
+
'claude-opus-4.5': 'opus-4.5',
|
|
20
|
+
'gpt-5.2': 'gpt-5.2',
|
|
21
|
+
'glm-4.7': 'glm-4.7',
|
|
22
|
+
'gpt-5.2-codex': 'gpt-5.2',
|
|
23
|
+
};
|
|
24
|
+
const RULE_TO_BENCHMARK_MODEL_MAP = {
|
|
25
|
+
'opus-4.5': 'claude-opus-4.5',
|
|
26
|
+
'gpt-5.2': 'gpt-5.2',
|
|
27
|
+
'glm-4.7': 'glm-4.7',
|
|
28
|
+
'deepseek-v3.2': 'gpt-5.2', // No benchmark equivalent; map to closest general-purpose model
|
|
29
|
+
'deepseek-v3.2-exp': 'gpt-5.2',
|
|
30
|
+
'qwen35-a3b': 'glm-4.7',
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Map rule-based TaskComplexity to benchmark difficulty levels.
|
|
34
|
+
*/
|
|
35
|
+
function complexityToDifficulty(complexity) {
|
|
36
|
+
switch (complexity) {
|
|
37
|
+
case 'low':
|
|
38
|
+
return 'easy';
|
|
39
|
+
case 'medium':
|
|
40
|
+
return 'medium';
|
|
41
|
+
case 'high':
|
|
42
|
+
case 'critical':
|
|
43
|
+
return 'hard';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Unified Routing Service that combines rule-based and benchmark-data routing.
|
|
48
|
+
*/
|
|
49
|
+
export class UnifiedRoutingService {
|
|
50
|
+
ruleRouter;
|
|
51
|
+
benchmarkConfig;
|
|
52
|
+
/**
|
|
53
|
+
* @param config - MultiModelConfig for the rule-based router
|
|
54
|
+
* @param benchmarkConfig - Optional overrides for the benchmark-data router's RoutingConfig
|
|
55
|
+
*/
|
|
56
|
+
constructor(config, benchmarkConfig = {}) {
|
|
57
|
+
this.ruleRouter = new RuleBasedRouter(config);
|
|
58
|
+
this.benchmarkConfig = benchmarkConfig;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Route a task using both systems and combine their signals.
|
|
62
|
+
*
|
|
63
|
+
* Decision logic:
|
|
64
|
+
* - If both systems agree on the model → use that model (source: 'consensus')
|
|
65
|
+
* - If they disagree and benchmark has >=5 data points for the category → use benchmark (source: 'benchmark-data')
|
|
66
|
+
* - If they disagree and benchmark has <5 data points → use rule-based (source: 'rule-based')
|
|
67
|
+
*/
|
|
68
|
+
route(taskDescription) {
|
|
69
|
+
// Step A: Classify via rule-based router
|
|
70
|
+
const ruleClassification = this.ruleRouter.classifyTask(taskDescription);
|
|
71
|
+
// Step B: Get benchmark-data recommendation
|
|
72
|
+
const difficulty = complexityToDifficulty(ruleClassification.complexity);
|
|
73
|
+
const benchmarkDecision = benchmarkRouteTask(taskDescription, difficulty, this.benchmarkConfig);
|
|
74
|
+
// Normalize model IDs so we can compare
|
|
75
|
+
const ruleModelId = ruleClassification.suggestedModel;
|
|
76
|
+
const benchmarkModelId = benchmarkDecision.primary;
|
|
77
|
+
const benchmarkAsRuleId = BENCHMARK_TO_RULE_MODEL_MAP[benchmarkModelId] ?? benchmarkModelId;
|
|
78
|
+
// Check benchmark data points for the relevant category
|
|
79
|
+
const benchmarkFingerprint = getModelFingerprint(benchmarkModelId);
|
|
80
|
+
const benchmarkDataPoints = this.getCategoryDataPoints(benchmarkFingerprint, taskDescription);
|
|
81
|
+
// Determine if the two systems agree
|
|
82
|
+
const systemsAgreed = ruleModelId === benchmarkAsRuleId;
|
|
83
|
+
let selectedModel;
|
|
84
|
+
let source;
|
|
85
|
+
let confidence;
|
|
86
|
+
let reasoning;
|
|
87
|
+
if (systemsAgreed) {
|
|
88
|
+
// Consensus: both systems agree
|
|
89
|
+
selectedModel = ruleModelId;
|
|
90
|
+
source = 'consensus';
|
|
91
|
+
confidence = this.computeConsensusConfidence(ruleClassification, benchmarkDecision, benchmarkDataPoints);
|
|
92
|
+
reasoning =
|
|
93
|
+
`Both routing systems agree on ${selectedModel}. ` +
|
|
94
|
+
`Rule-based: ${ruleClassification.reasoning}. ` +
|
|
95
|
+
`Benchmark: ${benchmarkDecision.reason}.`;
|
|
96
|
+
}
|
|
97
|
+
else if (benchmarkDataPoints >= 5) {
|
|
98
|
+
// Benchmark has enough data — trust it
|
|
99
|
+
selectedModel = benchmarkAsRuleId;
|
|
100
|
+
source = 'benchmark-data';
|
|
101
|
+
confidence = this.computeBenchmarkConfidence(benchmarkDecision, benchmarkDataPoints);
|
|
102
|
+
reasoning =
|
|
103
|
+
`Systems disagree (rule-based: ${ruleModelId}, benchmark: ${benchmarkAsRuleId}). ` +
|
|
104
|
+
`Benchmark router preferred with ${benchmarkDataPoints} data points for this category. ` +
|
|
105
|
+
`Benchmark: ${benchmarkDecision.reason}. ` +
|
|
106
|
+
`Rule-based: ${ruleClassification.reasoning}.`;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Not enough benchmark data — trust rule-based
|
|
110
|
+
selectedModel = ruleModelId;
|
|
111
|
+
source = 'rule-based';
|
|
112
|
+
confidence = this.computeRuleBasedConfidence(ruleClassification, benchmarkDataPoints);
|
|
113
|
+
reasoning =
|
|
114
|
+
`Systems disagree (rule-based: ${ruleModelId}, benchmark: ${benchmarkAsRuleId}). ` +
|
|
115
|
+
`Rule-based router preferred — benchmark has only ${benchmarkDataPoints} data points (< 5 threshold). ` +
|
|
116
|
+
`Rule-based: ${ruleClassification.reasoning}. ` +
|
|
117
|
+
`Benchmark: ${benchmarkDecision.reason}.`;
|
|
118
|
+
}
|
|
119
|
+
// Determine fallback
|
|
120
|
+
const fallbackModel = this.selectFallback(selectedModel, ruleClassification, benchmarkDecision);
|
|
121
|
+
return {
|
|
122
|
+
selectedModel,
|
|
123
|
+
fallbackModel,
|
|
124
|
+
source,
|
|
125
|
+
confidence,
|
|
126
|
+
reasoning,
|
|
127
|
+
ruleBasedClassification: ruleClassification,
|
|
128
|
+
benchmarkDecision,
|
|
129
|
+
systemsAgreed,
|
|
130
|
+
benchmarkDataPoints,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Record a task outcome, feeding back to the benchmark-data router for learning.
|
|
135
|
+
*/
|
|
136
|
+
recordOutcome(outcome) {
|
|
137
|
+
const benchmarkModelId = RULE_TO_BENCHMARK_MODEL_MAP[outcome.modelUsed] ?? outcome.modelUsed;
|
|
138
|
+
// Only record if it's a valid benchmark model ID
|
|
139
|
+
if (getModelFingerprint(benchmarkModelId)) {
|
|
140
|
+
recordTaskOutcome(benchmarkModelId, outcome.success, outcome.latencyMs, outcome.taskCategory);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Show both systems' recommendations side by side for analysis/debugging.
|
|
145
|
+
*/
|
|
146
|
+
analyzeRouting(taskDescription) {
|
|
147
|
+
const ruleClassification = this.ruleRouter.classifyTask(taskDescription);
|
|
148
|
+
const difficulty = complexityToDifficulty(ruleClassification.complexity);
|
|
149
|
+
const benchmarkDecision = benchmarkRouteTask(taskDescription, difficulty, this.benchmarkConfig);
|
|
150
|
+
const unifiedResult = this.route(taskDescription);
|
|
151
|
+
// Build model comparison across all known models
|
|
152
|
+
const allRuleModels = this.ruleRouter.getAllModels();
|
|
153
|
+
const allBenchmarkFingerprints = getAllModelFingerprints();
|
|
154
|
+
const modelComparison = allRuleModels.map((model) => {
|
|
155
|
+
const benchmarkId = RULE_TO_BENCHMARK_MODEL_MAP[model.id] ?? null;
|
|
156
|
+
const fp = benchmarkId ? (allBenchmarkFingerprints[benchmarkId] ?? null) : null;
|
|
157
|
+
// Find the category data points from the benchmark fingerprint
|
|
158
|
+
const categoryDataPoints = fp
|
|
159
|
+
? this.getCategoryDataPointsFromFingerprint(fp, taskDescription)
|
|
160
|
+
: null;
|
|
161
|
+
return {
|
|
162
|
+
modelId: model.id,
|
|
163
|
+
benchmarkModelId: benchmarkId,
|
|
164
|
+
ruleBasedRole: this.getRoleForModel(model.id),
|
|
165
|
+
benchmarkSuccessRate: fp ? fp.successRate : null,
|
|
166
|
+
benchmarkCategoryDataPoints: categoryDataPoints,
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
return {
|
|
170
|
+
taskDescription,
|
|
171
|
+
ruleBasedResult: {
|
|
172
|
+
suggestedModel: ruleClassification.suggestedModel,
|
|
173
|
+
complexity: ruleClassification.complexity,
|
|
174
|
+
taskType: ruleClassification.taskType,
|
|
175
|
+
reasoning: ruleClassification.reasoning,
|
|
176
|
+
},
|
|
177
|
+
benchmarkResult: {
|
|
178
|
+
primaryModel: benchmarkDecision.primary,
|
|
179
|
+
score: `${benchmarkDecision.estimatedSuccessRate * 100}%`,
|
|
180
|
+
estimatedSuccessRate: benchmarkDecision.estimatedSuccessRate,
|
|
181
|
+
estimatedLatencyMs: benchmarkDecision.estimatedLatencyMs,
|
|
182
|
+
estimatedCost: benchmarkDecision.estimatedCost,
|
|
183
|
+
reasoning: benchmarkDecision.reason,
|
|
184
|
+
},
|
|
185
|
+
unifiedResult,
|
|
186
|
+
modelComparison,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get the underlying rule-based router for advanced usage.
|
|
191
|
+
*/
|
|
192
|
+
getRuleRouter() {
|
|
193
|
+
return this.ruleRouter;
|
|
194
|
+
}
|
|
195
|
+
// --- Private helpers ---
|
|
196
|
+
/**
|
|
197
|
+
* Get the number of benchmark data points for the most relevant category
|
|
198
|
+
* for a given task description, using the benchmark model's fingerprint.
|
|
199
|
+
*/
|
|
200
|
+
getCategoryDataPoints(fingerprint, _taskDescription) {
|
|
201
|
+
if (!fingerprint?.categoryStats)
|
|
202
|
+
return 0;
|
|
203
|
+
return this.getMaxCategoryAttempts(fingerprint);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Same as getCategoryDataPoints but takes a fingerprint directly (no model lookup).
|
|
207
|
+
*/
|
|
208
|
+
getCategoryDataPointsFromFingerprint(fingerprint, _taskDescription) {
|
|
209
|
+
if (!fingerprint.categoryStats)
|
|
210
|
+
return 0;
|
|
211
|
+
return this.getMaxCategoryAttempts(fingerprint);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get the maximum number of attempts across all categories for a fingerprint.
|
|
215
|
+
* This represents the most-exercised category and serves as a proxy for
|
|
216
|
+
* how much data we have for this model.
|
|
217
|
+
*/
|
|
218
|
+
getMaxCategoryAttempts(fingerprint) {
|
|
219
|
+
if (!fingerprint.categoryStats)
|
|
220
|
+
return 0;
|
|
221
|
+
let max = 0;
|
|
222
|
+
for (const stats of Object.values(fingerprint.categoryStats)) {
|
|
223
|
+
if (stats.attempts > max) {
|
|
224
|
+
max = stats.attempts;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return max;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Compute confidence when both systems agree.
|
|
231
|
+
* Higher confidence because consensus is a strong signal.
|
|
232
|
+
*/
|
|
233
|
+
computeConsensusConfidence(ruleClassification, benchmarkDecision, dataPoints) {
|
|
234
|
+
// Base: 0.7 for consensus agreement
|
|
235
|
+
let confidence = 0.7;
|
|
236
|
+
// Boost from benchmark success rate
|
|
237
|
+
confidence += benchmarkDecision.estimatedSuccessRate * 0.15;
|
|
238
|
+
// Boost from data richness (max +0.1 at 10+ data points)
|
|
239
|
+
confidence += Math.min(dataPoints / 10, 1) * 0.1;
|
|
240
|
+
// Small boost if rule-based had high keyword match count
|
|
241
|
+
if (ruleClassification.keywords.length >= 3) {
|
|
242
|
+
confidence += 0.05;
|
|
243
|
+
}
|
|
244
|
+
return Math.min(confidence, 1.0);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Compute confidence when using the benchmark-data router (disagreement case).
|
|
248
|
+
*/
|
|
249
|
+
computeBenchmarkConfidence(benchmarkDecision, dataPoints) {
|
|
250
|
+
// Base: 0.5 (disagreement lowers base)
|
|
251
|
+
let confidence = 0.5;
|
|
252
|
+
// Strong boost from benchmark success rate
|
|
253
|
+
confidence += benchmarkDecision.estimatedSuccessRate * 0.2;
|
|
254
|
+
// Data richness boost (max +0.15 at 15+ data points)
|
|
255
|
+
confidence += Math.min(dataPoints / 15, 1) * 0.15;
|
|
256
|
+
return Math.min(confidence, 1.0);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Compute confidence when using the rule-based router (disagreement, low benchmark data).
|
|
260
|
+
*/
|
|
261
|
+
computeRuleBasedConfidence(ruleClassification, dataPoints) {
|
|
262
|
+
// Base: 0.5 (disagreement lowers base)
|
|
263
|
+
let confidence = 0.5;
|
|
264
|
+
// Boost from rule keyword matches
|
|
265
|
+
confidence += Math.min(ruleClassification.keywords.length / 5, 1) * 0.15;
|
|
266
|
+
// Planning requirement is a strong signal for using higher-capability model
|
|
267
|
+
if (ruleClassification.requiresPlanning) {
|
|
268
|
+
confidence += 0.1;
|
|
269
|
+
}
|
|
270
|
+
// Slight penalty if benchmark had some data (even if below threshold)
|
|
271
|
+
if (dataPoints > 0) {
|
|
272
|
+
confidence -= 0.05;
|
|
273
|
+
}
|
|
274
|
+
return Math.min(Math.max(confidence, 0.1), 1.0);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Select the best fallback model from the two systems' recommendations.
|
|
278
|
+
*/
|
|
279
|
+
selectFallback(selectedModel, ruleClassification, benchmarkDecision) {
|
|
280
|
+
// Try rule-based fallback first
|
|
281
|
+
if (ruleClassification.fallbackModel && ruleClassification.fallbackModel !== selectedModel) {
|
|
282
|
+
return ruleClassification.fallbackModel;
|
|
283
|
+
}
|
|
284
|
+
// Try benchmark fallbacks
|
|
285
|
+
for (const fallbackId of benchmarkDecision.fallback) {
|
|
286
|
+
const asRuleId = BENCHMARK_TO_RULE_MODEL_MAP[fallbackId] ?? fallbackId;
|
|
287
|
+
if (asRuleId !== selectedModel) {
|
|
288
|
+
return asRuleId;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Last resort: return rule-based fallback even if same (caller can handle)
|
|
292
|
+
return ruleClassification.fallbackModel;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get the role assigned to a model in the rule-based router.
|
|
296
|
+
*/
|
|
297
|
+
getRoleForModel(modelId) {
|
|
298
|
+
for (const role of ['planner', 'executor', 'reviewer', 'fallback']) {
|
|
299
|
+
const model = this.ruleRouter.getModelForRole(role);
|
|
300
|
+
if (model && model.id === modelId) {
|
|
301
|
+
return role;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return null;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Create a UnifiedRoutingService with the given configuration.
|
|
309
|
+
*/
|
|
310
|
+
export function createUnifiedRouter(config, benchmarkConfig) {
|
|
311
|
+
return new UnifiedRoutingService(config, benchmarkConfig);
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=unified-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unified-router.js","sourceRoot":"","sources":["../../src/models/unified-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-policy-to-claude.d.ts","sourceRoot":"","sources":["../../src/policies/convert-policy-to-claude.ts"],"names":[],"mappings":";AAIA,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+EjE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
export function convertPolicyToClaude(rawMarkdown) {
|
|
5
|
+
const nameMatch = rawMarkdown.match(/^#\s+(.+)/m);
|
|
6
|
+
const name = nameMatch ? nameMatch[1].trim() : 'Untitled Policy';
|
|
7
|
+
const descMatch = rawMarkdown.match(/^#\s*.*\n\n(.*?)(?=\n-{3,}|##|$)/s);
|
|
8
|
+
const description = descMatch ? descMatch[1].trim() : '';
|
|
9
|
+
const rulesSection = rawMarkdown.match(/## Rules\n\n([\s\S]*?)(?=\n┌|## Enforcement|$)/);
|
|
10
|
+
const rules = [];
|
|
11
|
+
if (rulesSection) {
|
|
12
|
+
const ruleLines = rulesSection[1].split('\n');
|
|
13
|
+
let currentRule = null;
|
|
14
|
+
for (const line of ruleLines) {
|
|
15
|
+
const ruleMatch = line.match(/^(\d+)\.\s+\*\*(.+?)\*\*/);
|
|
16
|
+
if (ruleMatch) {
|
|
17
|
+
if (currentRule)
|
|
18
|
+
rules.push(currentRule);
|
|
19
|
+
currentRule = { title: ruleMatch[2], details: [] };
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (line.trim().startsWith('- ')) {
|
|
23
|
+
currentRule?.details.push(line.trim().substring(2));
|
|
24
|
+
}
|
|
25
|
+
else if (line.trim() && !line.startsWith('#')) {
|
|
26
|
+
currentRule?.details.push(line.trim());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (currentRule)
|
|
30
|
+
rules.push(currentRule);
|
|
31
|
+
}
|
|
32
|
+
const tableMatch = rawMarkdown.match(/\| Rule[^|]+\| Prevents \|[\s\S]*?\n└────────.*\n/);
|
|
33
|
+
const preventionTable = [];
|
|
34
|
+
if (tableMatch) {
|
|
35
|
+
const rows = tableMatch[0].split('\n').filter((_, i) => i > 1 && !_.includes('---'));
|
|
36
|
+
for (const row of rows) {
|
|
37
|
+
const cells = row
|
|
38
|
+
.split('|')
|
|
39
|
+
.map((c) => c.trim())
|
|
40
|
+
.filter(Boolean);
|
|
41
|
+
if (cells.length >= 2) {
|
|
42
|
+
preventionTable.push({ rule: cells[0], prevents: cells[1] });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const levelMatch = rawMarkdown.match(/## Enforcement Level\s*\n\[(.+?)\]/);
|
|
47
|
+
const level = (levelMatch?.[1]?.toUpperCase() || 'RECOMMENDED');
|
|
48
|
+
const emoji = level === 'REQUIRED' ? '🚨' : level === 'RECOMMENDED' ? '⚠️' : 'ℹ️';
|
|
49
|
+
return `─────────────────────────────────────────────────────────────────────────────────────────────────
|
|
50
|
+
${emoji} ${level} POLICY
|
|
51
|
+
# ${name}
|
|
52
|
+
|
|
53
|
+
${description}
|
|
54
|
+
|
|
55
|
+
─────────────────────────────────────────────────────────────────────────────────────────────────
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
${rules
|
|
60
|
+
.map((rule, i) => `### ${i + 1}. ${rule.title}
|
|
61
|
+
|
|
62
|
+
${rule.details.join('\n')}
|
|
63
|
+
`)
|
|
64
|
+
.join('')}
|
|
65
|
+
|
|
66
|
+
## Prevention Matrix
|
|
67
|
+
|
|
68
|
+
| Rule | Prevents |
|
|
69
|
+
|------|----------|
|
|
70
|
+
${preventionTable.map((t) => `| ${t.rule} | ${t.prevents} |`).join('\n')}
|
|
71
|
+
|
|
72
|
+
─────────────────────────────────────────────────────────────────────────────────────────────────
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
76
|
+
const inputFile = process.argv[2];
|
|
77
|
+
const outputFile = process.argv[3] || 'converted-policy.md';
|
|
78
|
+
if (!inputFile) {
|
|
79
|
+
console.error('Usage: tsx convert-policy-to-claude.ts <input.md> [output.md]');
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
const rawPolicy = readFileSync(inputFile, 'utf-8');
|
|
83
|
+
const converted = convertPolicyToClaude(rawPolicy);
|
|
84
|
+
writeFileSync(outputFile, converted);
|
|
85
|
+
console.log(`✅ Converted ${join(process.cwd(), inputFile)} → ${outputFile}`);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=convert-policy-to-claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-policy-to-claude.js","sourceRoot":"","sources":["../../src/policies/convert-policy-to-claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare class DatabaseManager {
|
|
2
|
+
private db;
|
|
3
|
+
constructor(dbPath?: string);
|
|
4
|
+
private initialize;
|
|
5
|
+
private serialize;
|
|
6
|
+
private deserializeRow;
|
|
7
|
+
upsertPolicy(data: Record<string, unknown>): void;
|
|
8
|
+
findPolicies(where: Record<string, unknown>): Record<string, unknown>[];
|
|
9
|
+
findOnePolicy(where: Record<string, unknown>): Record<string, unknown> | null;
|
|
10
|
+
updatePolicy(where: Record<string, unknown>, updates: Record<string, unknown>): void;
|
|
11
|
+
getAllActivePolicies(): Record<string, unknown>[];
|
|
12
|
+
upsertExecutableTool(data: Record<string, unknown>): void;
|
|
13
|
+
findExecutableTools(policyId: string): Record<string, unknown>[];
|
|
14
|
+
findExecutableTool(policyId: string, toolName: string): Record<string, unknown> | null;
|
|
15
|
+
logExecution(data: {
|
|
16
|
+
policyId: string;
|
|
17
|
+
toolName: string;
|
|
18
|
+
operation: string;
|
|
19
|
+
args: Record<string, unknown>;
|
|
20
|
+
result: unknown;
|
|
21
|
+
allowed: boolean;
|
|
22
|
+
reason: string;
|
|
23
|
+
}): void;
|
|
24
|
+
getExecutionLog(policyId?: string, limit?: number): Record<string, unknown>[];
|
|
25
|
+
close(): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=database-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-manager.d.ts","sourceRoot":"","sources":["../../src/policies/database-manager.ts"],"names":[],"mappings":"AAIA,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAgC;gBAE9B,MAAM,CAAC,EAAE,MAAM;IAW3B,OAAO,CAAC,UAAU;IAoDlB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,cAAc;IAmCtB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYjD,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IASvE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK7E,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAsBpF,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IASjD,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOzD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAMhE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAStF,YAAY,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAgBR,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAajF,KAAK,IAAI,IAAI;CAGd"}
|