@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,806 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
// ── Harness ID mapping ────────────────────────────────────────────────
|
|
7
|
+
const HARNESS_TO_HOOK_TARGET = {
|
|
8
|
+
'Claude Code': 'claude',
|
|
9
|
+
'Factory.AI': 'factory',
|
|
10
|
+
OpenCode: 'opencode',
|
|
11
|
+
ForgeCode: 'forgecode',
|
|
12
|
+
Cursor: 'cursor',
|
|
13
|
+
VSCode: 'vscode',
|
|
14
|
+
Cline: 'vscode',
|
|
15
|
+
'Codex CLI': 'claude',
|
|
16
|
+
Aider: 'claude',
|
|
17
|
+
Continue: 'vscode',
|
|
18
|
+
Windsurf: 'cursor',
|
|
19
|
+
'Zed AI': 'claude',
|
|
20
|
+
'GitHub Copilot': 'vscode',
|
|
21
|
+
'JetBrains AI': 'vscode',
|
|
22
|
+
'SWE-agent': 'claude',
|
|
23
|
+
};
|
|
24
|
+
const HARNESS_TO_PLATFORM = {
|
|
25
|
+
'Claude Code': 'claude',
|
|
26
|
+
'Factory.AI': 'factory',
|
|
27
|
+
OpenCode: 'opencode',
|
|
28
|
+
ForgeCode: 'opencode',
|
|
29
|
+
Cursor: 'vscode',
|
|
30
|
+
VSCode: 'vscode',
|
|
31
|
+
Cline: 'vscode',
|
|
32
|
+
'Codex CLI': 'claude',
|
|
33
|
+
Aider: 'claude',
|
|
34
|
+
Continue: 'vscode',
|
|
35
|
+
Windsurf: 'vscode',
|
|
36
|
+
'Zed AI': 'claude',
|
|
37
|
+
'GitHub Copilot': 'vscode',
|
|
38
|
+
'JetBrains AI': 'vscode',
|
|
39
|
+
'SWE-agent': 'claude',
|
|
40
|
+
};
|
|
41
|
+
// ── Banner ─────────────────────────────────────────────────────────────
|
|
42
|
+
function printBanner() {
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(chalk.bold.cyan(' Universal Agent Protocol (UAP) - Interactive Setup Wizard'));
|
|
45
|
+
console.log(chalk.dim(' ─'.repeat(30)));
|
|
46
|
+
console.log('');
|
|
47
|
+
console.log(chalk.white(' UAP gives AI coding agents persistent memory, multi-agent coordination,'));
|
|
48
|
+
console.log(chalk.white(' pattern libraries, and policy enforcement - across every session.'));
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log(chalk.dim(' This wizard will walk you through each feature and configure your project.'));
|
|
51
|
+
console.log(chalk.dim(' Defaults are sensible - press Enter to accept, or customize as needed.'));
|
|
52
|
+
console.log('');
|
|
53
|
+
}
|
|
54
|
+
// ── Section 1: Harness Selection ──────────────────────────────────────
|
|
55
|
+
async function promptHarnesses() {
|
|
56
|
+
console.log(chalk.bold.yellow('\n Section 1: Harness Selection\n'));
|
|
57
|
+
const { harnesses } = await inquirer.prompt([
|
|
58
|
+
{
|
|
59
|
+
type: 'checkbox',
|
|
60
|
+
name: 'harnesses',
|
|
61
|
+
message: 'Which AI coding tools do you use?',
|
|
62
|
+
choices: [
|
|
63
|
+
{ name: 'Claude Code (recommended)', value: 'Claude Code', checked: true },
|
|
64
|
+
{ name: 'Factory.AI', value: 'Factory.AI' },
|
|
65
|
+
{ name: 'OpenCode', value: 'OpenCode' },
|
|
66
|
+
{ name: 'ForgeCode', value: 'ForgeCode' },
|
|
67
|
+
new inquirer.Separator(),
|
|
68
|
+
{ name: 'Cursor', value: 'Cursor' },
|
|
69
|
+
{ name: 'VSCode', value: 'VSCode' },
|
|
70
|
+
{ name: 'Cline', value: 'Cline' },
|
|
71
|
+
new inquirer.Separator(),
|
|
72
|
+
{ name: 'Codex CLI', value: 'Codex CLI' },
|
|
73
|
+
{ name: 'Aider', value: 'Aider' },
|
|
74
|
+
{ name: 'Continue', value: 'Continue' },
|
|
75
|
+
{ name: 'Windsurf', value: 'Windsurf' },
|
|
76
|
+
{ name: 'Zed AI', value: 'Zed AI' },
|
|
77
|
+
new inquirer.Separator(),
|
|
78
|
+
{ name: 'GitHub Copilot', value: 'GitHub Copilot' },
|
|
79
|
+
{ name: 'JetBrains AI', value: 'JetBrains AI' },
|
|
80
|
+
{ name: 'SWE-agent', value: 'SWE-agent' },
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
]);
|
|
84
|
+
if (harnesses.length === 0) {
|
|
85
|
+
console.log(chalk.yellow(' No harnesses selected - defaulting to Claude Code'));
|
|
86
|
+
return { harnesses: ['Claude Code'] };
|
|
87
|
+
}
|
|
88
|
+
return { harnesses };
|
|
89
|
+
}
|
|
90
|
+
// ── Section 2: Memory Features ────────────────────────────────────────
|
|
91
|
+
async function promptMemoryFeatures() {
|
|
92
|
+
console.log(chalk.bold.yellow('\n Section 2: Memory Features\n'));
|
|
93
|
+
const answers = await inquirer.prompt([
|
|
94
|
+
{
|
|
95
|
+
type: 'confirm',
|
|
96
|
+
name: 'shortTermMemory',
|
|
97
|
+
message: 'Short-term memory (SQLite)',
|
|
98
|
+
default: true,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'confirm',
|
|
102
|
+
name: 'longTermMemory',
|
|
103
|
+
message: 'Long-term memory (Qdrant vectors) - requires Docker',
|
|
104
|
+
default: false,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'confirm',
|
|
108
|
+
name: 'knowledgeGraph',
|
|
109
|
+
message: 'Knowledge graph',
|
|
110
|
+
default: false,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'confirm',
|
|
114
|
+
name: 'prepopDocs',
|
|
115
|
+
message: 'Memory prepopulation from docs',
|
|
116
|
+
default: false,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'confirm',
|
|
120
|
+
name: 'prepopGit',
|
|
121
|
+
message: 'Memory prepopulation from git history',
|
|
122
|
+
default: false,
|
|
123
|
+
},
|
|
124
|
+
]);
|
|
125
|
+
return answers;
|
|
126
|
+
}
|
|
127
|
+
// ── Section 3: Multi-Agent Coordination ───────────────────────────────
|
|
128
|
+
async function promptMultiAgent() {
|
|
129
|
+
console.log(chalk.bold.yellow('\n Section 3: Multi-Agent Coordination\n'));
|
|
130
|
+
const answers = await inquirer.prompt([
|
|
131
|
+
{
|
|
132
|
+
type: 'confirm',
|
|
133
|
+
name: 'coordinationDb',
|
|
134
|
+
message: 'Agent coordination database',
|
|
135
|
+
default: true,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'confirm',
|
|
139
|
+
name: 'worktreeIsolation',
|
|
140
|
+
message: 'Worktree isolation',
|
|
141
|
+
default: true,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'confirm',
|
|
145
|
+
name: 'deployBatching',
|
|
146
|
+
message: 'Deploy batching',
|
|
147
|
+
default: false,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'confirm',
|
|
151
|
+
name: 'agentMessaging',
|
|
152
|
+
message: 'Agent messaging',
|
|
153
|
+
default: false,
|
|
154
|
+
},
|
|
155
|
+
]);
|
|
156
|
+
return answers;
|
|
157
|
+
}
|
|
158
|
+
// ── Section 4: Pattern System ─────────────────────────────────────────
|
|
159
|
+
async function promptPatterns(qdrantEnabled) {
|
|
160
|
+
console.log(chalk.bold.yellow('\n Section 4: Pattern System\n'));
|
|
161
|
+
const answers = await inquirer.prompt([
|
|
162
|
+
{
|
|
163
|
+
type: 'confirm',
|
|
164
|
+
name: 'patternLibrary',
|
|
165
|
+
message: 'Pattern library (22 patterns)',
|
|
166
|
+
default: true,
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'confirm',
|
|
170
|
+
name: 'patternRag',
|
|
171
|
+
message: `Pattern RAG${qdrantEnabled ? '' : ' (requires Qdrant - enable long-term memory first)'}`,
|
|
172
|
+
default: qdrantEnabled,
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
type: 'confirm',
|
|
176
|
+
name: 'reinforcementLearning',
|
|
177
|
+
message: 'Reinforcement learning on patterns',
|
|
178
|
+
default: false,
|
|
179
|
+
},
|
|
180
|
+
]);
|
|
181
|
+
return answers;
|
|
182
|
+
}
|
|
183
|
+
// ── Section 5: Policy Enforcement ─────────────────────────────────────
|
|
184
|
+
async function promptPolicy() {
|
|
185
|
+
console.log(chalk.bold.yellow('\n Section 5: Policy Enforcement\n'));
|
|
186
|
+
const answers = await inquirer.prompt([
|
|
187
|
+
{
|
|
188
|
+
type: 'confirm',
|
|
189
|
+
name: 'policyEngine',
|
|
190
|
+
message: 'Policy engine',
|
|
191
|
+
default: true,
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
type: 'confirm',
|
|
195
|
+
name: 'imageAssetVerification',
|
|
196
|
+
message: 'Image & Asset Verification policy',
|
|
197
|
+
default: false,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'confirm',
|
|
201
|
+
name: 'iacStateParity',
|
|
202
|
+
message: 'IaC State Parity policy',
|
|
203
|
+
default: true,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
type: 'confirm',
|
|
207
|
+
name: 'customPoliciesDir',
|
|
208
|
+
message: 'Custom policies directory',
|
|
209
|
+
default: false,
|
|
210
|
+
},
|
|
211
|
+
]);
|
|
212
|
+
return answers;
|
|
213
|
+
}
|
|
214
|
+
// ── Section 6: Model Configuration ────────────────────────────────────
|
|
215
|
+
async function promptModelConfig() {
|
|
216
|
+
console.log(chalk.bold.yellow('\n Section 6: Model Configuration\n'));
|
|
217
|
+
const { provider } = await inquirer.prompt([
|
|
218
|
+
{
|
|
219
|
+
type: 'list',
|
|
220
|
+
name: 'provider',
|
|
221
|
+
message: 'Default model provider',
|
|
222
|
+
choices: [
|
|
223
|
+
{ name: 'Anthropic (Claude)', value: 'anthropic' },
|
|
224
|
+
{ name: 'OpenAI', value: 'openai' },
|
|
225
|
+
{ name: 'Local (llama.cpp, Ollama, etc.)', value: 'local' },
|
|
226
|
+
{ name: 'Custom endpoint', value: 'custom' },
|
|
227
|
+
],
|
|
228
|
+
default: 'anthropic',
|
|
229
|
+
},
|
|
230
|
+
]);
|
|
231
|
+
let qwenOptimizations = false;
|
|
232
|
+
let toolCallProfile = 'generic';
|
|
233
|
+
const profileChoices = [];
|
|
234
|
+
if (provider === 'anthropic') {
|
|
235
|
+
profileChoices.push({
|
|
236
|
+
name: `${chalk.bold('claude-sonnet-4.6')} - Claude Sonnet 4.6 (recommended)\n ${chalk.dim('Best speed/cost/quality balance. 200K ctx, extended thinking, parallel tools. $3/$15 per 1M tokens.')}`,
|
|
237
|
+
value: 'claude-sonnet-4.6',
|
|
238
|
+
short: 'claude-sonnet-4.6',
|
|
239
|
+
}, {
|
|
240
|
+
name: `${chalk.bold('claude-opus-4.6')} - Claude Opus 4.6\n ${chalk.dim('Most capable Claude. Deep reasoning, 200K ctx, extended thinking. Best for complex agentic workflows. $15/$75.')}`,
|
|
241
|
+
value: 'claude-opus-4.6',
|
|
242
|
+
short: 'claude-opus-4.6',
|
|
243
|
+
}, {
|
|
244
|
+
name: `${chalk.bold('claude-haiku-3.5')} - Claude 3.5 Haiku\n ${chalk.dim('Fastest and cheapest Claude. Sub-second latency, 200K ctx. Great for high-throughput tasks. $0.80/$4.')}`,
|
|
245
|
+
value: 'claude-haiku-3.5',
|
|
246
|
+
short: 'claude-haiku-3.5',
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
else if (provider === 'openai') {
|
|
250
|
+
profileChoices.push({
|
|
251
|
+
name: `${chalk.bold('gpt-4.1')} - GPT-4.1 (recommended for coding)\n ${chalk.dim('Purpose-built for coding and agentic use. 1M ctx, structured outputs, parallel function calling. $2/$8.')}`,
|
|
252
|
+
value: 'gpt-4.1',
|
|
253
|
+
short: 'gpt-4.1',
|
|
254
|
+
}, {
|
|
255
|
+
name: `${chalk.bold('gpt-4o')} - GPT-4o\n ${chalk.dim('Multimodal flagship. 128K ctx, JSON mode, parallel function calling. Fast and cost-effective. $2.50/$10.')}`,
|
|
256
|
+
value: 'gpt-4o',
|
|
257
|
+
short: 'gpt-4o',
|
|
258
|
+
}, {
|
|
259
|
+
name: `${chalk.bold('gpt-o3')} - o3 (reasoning)\n ${chalk.dim('Chain-of-thought reasoning model. 200K ctx, configurable reasoning effort. Best for complex analysis. $2/$8.')}`,
|
|
260
|
+
value: 'gpt-o3',
|
|
261
|
+
short: 'gpt-o3',
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
else if (provider === 'local') {
|
|
265
|
+
profileChoices.push({
|
|
266
|
+
name: `${chalk.bold('generic')} - Any OpenAI-compatible model\n ${chalk.dim('Conservative defaults. Works with llama.cpp, vLLM, Ollama, or any /v1/chat/completions server.')}`,
|
|
267
|
+
value: 'generic',
|
|
268
|
+
short: 'generic',
|
|
269
|
+
}, {
|
|
270
|
+
name: `${chalk.bold('qwen35')} - Qwen 3 / Qwen 3.5 (recommended for local)\n ${chalk.dim('Thinking-mode suppression, tool call batching, speculative decoding, 262K context. Tuned for 16-48GB VRAM.')}`,
|
|
271
|
+
value: 'qwen35',
|
|
272
|
+
short: 'qwen35',
|
|
273
|
+
}, {
|
|
274
|
+
name: `${chalk.bold('llama')} - Meta Llama 3.x / Llama 4\n ${chalk.dim('Flash attention, KV cache optimization, 131K context. Works with 8B through 405B at any quantization.')}`,
|
|
275
|
+
value: 'llama',
|
|
276
|
+
short: 'llama',
|
|
277
|
+
}, {
|
|
278
|
+
name: `${chalk.bold('kimi-k2.5')} - Moonshot Kimi K2.5\n ${chalk.dim('Open-weight MoE (1T/32B active). 128K ctx, strong coding. Runs via vLLM or Moonshot API.')}`,
|
|
279
|
+
value: 'kimi-k2.5',
|
|
280
|
+
short: 'kimi-k2.5',
|
|
281
|
+
}, {
|
|
282
|
+
name: `${chalk.bold('glm-5')} - Zhipu GLM-5\n ${chalk.dim('Chinese-English bilingual reasoning model. 128K ctx, deep thinking, tool calling. Via Zhipu API.')}`,
|
|
283
|
+
value: 'glm-5',
|
|
284
|
+
short: 'glm-5',
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
// Custom provider - show all profiles
|
|
289
|
+
profileChoices.push({
|
|
290
|
+
name: `${chalk.bold('generic')} - Generic defaults\n ${chalk.dim('Works with any OpenAI-compatible endpoint.')}`,
|
|
291
|
+
value: 'generic',
|
|
292
|
+
short: 'generic',
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
if (profileChoices.length > 0) {
|
|
296
|
+
const defaultProfile = profileChoices[0].value;
|
|
297
|
+
const profileAnswer = await inquirer.prompt([
|
|
298
|
+
{
|
|
299
|
+
type: 'list',
|
|
300
|
+
name: 'toolCallProfile',
|
|
301
|
+
message: 'Select model profile',
|
|
302
|
+
choices: profileChoices,
|
|
303
|
+
default: defaultProfile,
|
|
304
|
+
pageSize: 15,
|
|
305
|
+
},
|
|
306
|
+
]);
|
|
307
|
+
toolCallProfile = profileAnswer.toolCallProfile;
|
|
308
|
+
qwenOptimizations = toolCallProfile === 'qwen35';
|
|
309
|
+
console.log('');
|
|
310
|
+
console.log(chalk.cyan(` Profile "${toolCallProfile}" will be saved to .uap.json.`));
|
|
311
|
+
if (provider === 'local') {
|
|
312
|
+
console.log(chalk.white(' Run ') +
|
|
313
|
+
chalk.bold('uap-tool-calls setup') +
|
|
314
|
+
chalk.white(' to apply profile-specific fixes after setup.'));
|
|
315
|
+
}
|
|
316
|
+
console.log('');
|
|
317
|
+
}
|
|
318
|
+
const extras = await inquirer.prompt([
|
|
319
|
+
{
|
|
320
|
+
type: 'confirm',
|
|
321
|
+
name: 'costTracking',
|
|
322
|
+
message: 'Cost tracking',
|
|
323
|
+
default: false,
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
type: 'confirm',
|
|
327
|
+
name: 'modelRouting',
|
|
328
|
+
message: 'Model routing (multi-model)',
|
|
329
|
+
default: false,
|
|
330
|
+
},
|
|
331
|
+
]);
|
|
332
|
+
return {
|
|
333
|
+
provider,
|
|
334
|
+
qwenOptimizations,
|
|
335
|
+
toolCallProfile,
|
|
336
|
+
costTracking: extras.costTracking,
|
|
337
|
+
modelRouting: extras.modelRouting,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
// ── Section 7: Hooks & Automation ─────────────────────────────────────
|
|
341
|
+
async function promptHooks() {
|
|
342
|
+
console.log(chalk.bold.yellow('\n Section 7: Hooks & Automation\n'));
|
|
343
|
+
const answers = await inquirer.prompt([
|
|
344
|
+
{
|
|
345
|
+
type: 'confirm',
|
|
346
|
+
name: 'sessionStart',
|
|
347
|
+
message: 'Session start hooks',
|
|
348
|
+
default: true,
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
type: 'confirm',
|
|
352
|
+
name: 'preCompact',
|
|
353
|
+
message: 'Pre-compact hooks',
|
|
354
|
+
default: true,
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
type: 'confirm',
|
|
358
|
+
name: 'taskCompletion',
|
|
359
|
+
message: 'Task completion hooks',
|
|
360
|
+
default: false,
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
type: 'confirm',
|
|
364
|
+
name: 'autoApproveTools',
|
|
365
|
+
message: 'Auto-approve tool calls',
|
|
366
|
+
default: false,
|
|
367
|
+
},
|
|
368
|
+
]);
|
|
369
|
+
return answers;
|
|
370
|
+
}
|
|
371
|
+
// ── Section 8: Browser Automation ─────────────────────────────────────
|
|
372
|
+
async function promptBrowser() {
|
|
373
|
+
console.log(chalk.bold.yellow('\n Section 8: Browser Automation\n'));
|
|
374
|
+
const answers = await inquirer.prompt([
|
|
375
|
+
{
|
|
376
|
+
type: 'confirm',
|
|
377
|
+
name: 'cloakBrowser',
|
|
378
|
+
message: 'CloakBrowser integration',
|
|
379
|
+
default: false,
|
|
380
|
+
},
|
|
381
|
+
]);
|
|
382
|
+
if (answers.cloakBrowser) {
|
|
383
|
+
console.log('');
|
|
384
|
+
console.log(chalk.cyan(' Run ') +
|
|
385
|
+
chalk.bold('npm run install:cloakbrowser') +
|
|
386
|
+
chalk.cyan(' to install after setup.'));
|
|
387
|
+
console.log('');
|
|
388
|
+
}
|
|
389
|
+
return answers;
|
|
390
|
+
}
|
|
391
|
+
// ── Summary ────────────────────────────────────────────────────────────
|
|
392
|
+
function printSummary(selections) {
|
|
393
|
+
console.log('');
|
|
394
|
+
console.log(chalk.bold.cyan(' Configuration Summary'));
|
|
395
|
+
console.log(chalk.dim(' ─'.repeat(30)));
|
|
396
|
+
console.log('');
|
|
397
|
+
// Harnesses
|
|
398
|
+
console.log(chalk.bold(' Harnesses:'));
|
|
399
|
+
for (const h of selections.harnesses) {
|
|
400
|
+
console.log(chalk.green(` + ${h}`));
|
|
401
|
+
}
|
|
402
|
+
// Memory
|
|
403
|
+
console.log('');
|
|
404
|
+
console.log(chalk.bold(' Memory:'));
|
|
405
|
+
printToggle('Short-term (SQLite)', selections.memory.shortTermMemory);
|
|
406
|
+
printToggle('Long-term (Qdrant)', selections.memory.longTermMemory);
|
|
407
|
+
printToggle('Knowledge graph', selections.memory.knowledgeGraph);
|
|
408
|
+
printToggle('Prepopulate from docs', selections.memory.prepopDocs);
|
|
409
|
+
printToggle('Prepopulate from git', selections.memory.prepopGit);
|
|
410
|
+
// Multi-agent
|
|
411
|
+
console.log('');
|
|
412
|
+
console.log(chalk.bold(' Multi-Agent:'));
|
|
413
|
+
printToggle('Coordination DB', selections.multiAgent.coordinationDb);
|
|
414
|
+
printToggle('Worktree isolation', selections.multiAgent.worktreeIsolation);
|
|
415
|
+
printToggle('Deploy batching', selections.multiAgent.deployBatching);
|
|
416
|
+
printToggle('Agent messaging', selections.multiAgent.agentMessaging);
|
|
417
|
+
// Patterns
|
|
418
|
+
console.log('');
|
|
419
|
+
console.log(chalk.bold(' Patterns:'));
|
|
420
|
+
printToggle('Pattern library', selections.patterns.patternLibrary);
|
|
421
|
+
printToggle('Pattern RAG', selections.patterns.patternRag);
|
|
422
|
+
printToggle('Reinforcement learning', selections.patterns.reinforcementLearning);
|
|
423
|
+
// Policy
|
|
424
|
+
console.log('');
|
|
425
|
+
console.log(chalk.bold(' Policy:'));
|
|
426
|
+
printToggle('Policy engine', selections.policy.policyEngine);
|
|
427
|
+
printToggle('Image & Asset Verification', selections.policy.imageAssetVerification);
|
|
428
|
+
printToggle('IaC State Parity', selections.policy.iacStateParity);
|
|
429
|
+
printToggle('Custom policies dir', selections.policy.customPoliciesDir);
|
|
430
|
+
// Model
|
|
431
|
+
console.log('');
|
|
432
|
+
console.log(chalk.bold(' Model:'));
|
|
433
|
+
console.log(` Provider: ${chalk.white(selections.model.provider)}`);
|
|
434
|
+
if (selections.model.toolCallProfile) {
|
|
435
|
+
console.log(` Tool call profile: ${chalk.white(selections.model.toolCallProfile)}`);
|
|
436
|
+
}
|
|
437
|
+
if (selections.model.provider === 'local' && selections.model.qwenOptimizations) {
|
|
438
|
+
printToggle('Qwen3.5 optimizations', selections.model.qwenOptimizations);
|
|
439
|
+
}
|
|
440
|
+
printToggle('Cost tracking', selections.model.costTracking);
|
|
441
|
+
printToggle('Model routing', selections.model.modelRouting);
|
|
442
|
+
// Hooks
|
|
443
|
+
console.log('');
|
|
444
|
+
console.log(chalk.bold(' Hooks:'));
|
|
445
|
+
printToggle('Session start', selections.hooks.sessionStart);
|
|
446
|
+
printToggle('Pre-compact', selections.hooks.preCompact);
|
|
447
|
+
printToggle('Task completion', selections.hooks.taskCompletion);
|
|
448
|
+
printToggle('Auto-approve tools', selections.hooks.autoApproveTools);
|
|
449
|
+
// Browser
|
|
450
|
+
console.log('');
|
|
451
|
+
console.log(chalk.bold(' Browser:'));
|
|
452
|
+
printToggle('CloakBrowser', selections.browser.cloakBrowser);
|
|
453
|
+
console.log('');
|
|
454
|
+
}
|
|
455
|
+
function printToggle(label, enabled) {
|
|
456
|
+
const icon = enabled ? chalk.green('ON ') : chalk.dim('OFF');
|
|
457
|
+
console.log(` [${icon}] ${label}`);
|
|
458
|
+
}
|
|
459
|
+
// ── What will be installed ─────────────────────────────────────────────
|
|
460
|
+
function printInstallPlan(selections) {
|
|
461
|
+
console.log(chalk.bold(' What will be installed/configured:\n'));
|
|
462
|
+
const steps = [];
|
|
463
|
+
steps.push('Create .uap.json configuration');
|
|
464
|
+
steps.push('Create directory structure (agents/data/memory, agents/scripts)');
|
|
465
|
+
const platforms = [
|
|
466
|
+
...new Set(selections.harnesses.map((h) => HARNESS_TO_PLATFORM[h] || 'claude')),
|
|
467
|
+
];
|
|
468
|
+
steps.push(`Initialize platforms: ${platforms.join(', ')}`);
|
|
469
|
+
if (selections.memory.shortTermMemory) {
|
|
470
|
+
steps.push('Initialize SQLite memory database');
|
|
471
|
+
}
|
|
472
|
+
if (selections.memory.longTermMemory) {
|
|
473
|
+
steps.push('Start Qdrant (Docker) and wait for healthcheck');
|
|
474
|
+
}
|
|
475
|
+
if (selections.patterns.patternLibrary) {
|
|
476
|
+
steps.push('Set up Python venv and generate pattern scripts');
|
|
477
|
+
}
|
|
478
|
+
if (selections.patterns.patternRag && selections.memory.longTermMemory) {
|
|
479
|
+
steps.push('Index patterns into Qdrant');
|
|
480
|
+
}
|
|
481
|
+
const hookTargets = [
|
|
482
|
+
...new Set(selections.harnesses.map((h) => HARNESS_TO_HOOK_TARGET[h] || 'claude')),
|
|
483
|
+
];
|
|
484
|
+
if (selections.hooks.sessionStart || selections.hooks.preCompact) {
|
|
485
|
+
steps.push(`Install hooks for: ${hookTargets.join(', ')}`);
|
|
486
|
+
}
|
|
487
|
+
steps.push('Configure MCP Router');
|
|
488
|
+
steps.push('Generate/update CLAUDE.md');
|
|
489
|
+
if (selections.browser.cloakBrowser) {
|
|
490
|
+
steps.push('Flag CloakBrowser for post-install');
|
|
491
|
+
}
|
|
492
|
+
if (selections.model.toolCallProfile && selections.model.toolCallProfile !== 'generic') {
|
|
493
|
+
steps.push(`Apply tool-call profile: ${selections.model.toolCallProfile}`);
|
|
494
|
+
}
|
|
495
|
+
for (let i = 0; i < steps.length; i++) {
|
|
496
|
+
console.log(chalk.white(` ${i + 1}. ${steps[i]}`));
|
|
497
|
+
}
|
|
498
|
+
console.log('');
|
|
499
|
+
}
|
|
500
|
+
// ── Execute setup ──────────────────────────────────────────────────────
|
|
501
|
+
async function executeSetup(selections) {
|
|
502
|
+
const cwd = process.cwd();
|
|
503
|
+
const { execa } = await import('execa');
|
|
504
|
+
// Resolve the `uap` binary path. Prefer the locally-installed bin so that
|
|
505
|
+
// the wizard works both from a global install and from `npx`.
|
|
506
|
+
const localBin = join(cwd, 'node_modules', '.bin', 'uap');
|
|
507
|
+
const uap = existsSync(localBin) ? localBin : 'uap';
|
|
508
|
+
// ── Step 1: Run init ────────────────────────────────────────────────
|
|
509
|
+
const platforms = [
|
|
510
|
+
...new Set(selections.harnesses.map((h) => HARNESS_TO_PLATFORM[h] || 'claude')),
|
|
511
|
+
];
|
|
512
|
+
const platformArg = platforms.length > 0 ? platforms.join(',') : 'all';
|
|
513
|
+
const initSpinner = ora('Running init (config, dirs, CLAUDE.md)...').start();
|
|
514
|
+
try {
|
|
515
|
+
const initArgs = ['init', '-p', platformArg];
|
|
516
|
+
if (!selections.memory.shortTermMemory && !selections.memory.longTermMemory) {
|
|
517
|
+
initArgs.push('--no-memory');
|
|
518
|
+
}
|
|
519
|
+
if (!selections.patterns.patternLibrary && !selections.patterns.patternRag) {
|
|
520
|
+
initArgs.push('--no-patterns');
|
|
521
|
+
}
|
|
522
|
+
if (!selections.multiAgent.worktreeIsolation) {
|
|
523
|
+
initArgs.push('--no-worktrees');
|
|
524
|
+
}
|
|
525
|
+
await execa(uap, initArgs, { cwd, stdio: 'pipe' });
|
|
526
|
+
initSpinner.succeed('Initialized project');
|
|
527
|
+
}
|
|
528
|
+
catch (err) {
|
|
529
|
+
initSpinner.warn(`Init had warnings: ${err instanceof Error ? err.message.slice(0, 80) : String(err).slice(0, 80)}`);
|
|
530
|
+
}
|
|
531
|
+
// ── Step 2: Patch .uap.json with wizard-specific settings ──────────
|
|
532
|
+
const configSpinner = ora('Applying wizard configuration...').start();
|
|
533
|
+
try {
|
|
534
|
+
const configPath = join(cwd, '.uap.json');
|
|
535
|
+
let config = {};
|
|
536
|
+
if (existsSync(configPath)) {
|
|
537
|
+
config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
538
|
+
}
|
|
539
|
+
// Memory settings
|
|
540
|
+
const memory = (config.memory || {});
|
|
541
|
+
if (selections.memory.longTermMemory) {
|
|
542
|
+
memory.longTerm = {
|
|
543
|
+
enabled: true,
|
|
544
|
+
provider: 'qdrant',
|
|
545
|
+
endpoint: 'localhost:6333',
|
|
546
|
+
collection: 'agent_memory',
|
|
547
|
+
embeddingModel: 'all-MiniLM-L6-v2',
|
|
548
|
+
...(memory.longTerm || {}),
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
else {
|
|
552
|
+
const lt = (memory.longTerm || {});
|
|
553
|
+
lt.enabled = false;
|
|
554
|
+
memory.longTerm = lt;
|
|
555
|
+
}
|
|
556
|
+
if (selections.memory.knowledgeGraph) {
|
|
557
|
+
memory.knowledgeGraph = { enabled: true };
|
|
558
|
+
}
|
|
559
|
+
if (selections.memory.prepopDocs) {
|
|
560
|
+
memory.prepopulation = {
|
|
561
|
+
...(memory.prepopulation || {}),
|
|
562
|
+
docs: true,
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
if (selections.memory.prepopGit) {
|
|
566
|
+
memory.prepopulation = {
|
|
567
|
+
...(memory.prepopulation || {}),
|
|
568
|
+
gitHistory: true,
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
config.memory = memory;
|
|
572
|
+
// Multi-agent settings
|
|
573
|
+
config.coordination = {
|
|
574
|
+
database: selections.multiAgent.coordinationDb,
|
|
575
|
+
deployBatching: selections.multiAgent.deployBatching,
|
|
576
|
+
agentMessaging: selections.multiAgent.agentMessaging,
|
|
577
|
+
};
|
|
578
|
+
// Worktree settings
|
|
579
|
+
if (selections.multiAgent.worktreeIsolation) {
|
|
580
|
+
config.worktrees = {
|
|
581
|
+
enabled: true,
|
|
582
|
+
directory: '.worktrees',
|
|
583
|
+
branchPrefix: 'feature/',
|
|
584
|
+
autoCleanup: true,
|
|
585
|
+
...(config.worktrees || {}),
|
|
586
|
+
};
|
|
587
|
+
}
|
|
588
|
+
// Pattern settings
|
|
589
|
+
if (selections.patterns.patternRag) {
|
|
590
|
+
const memObj = config.memory;
|
|
591
|
+
memObj.patternRag = {
|
|
592
|
+
enabled: true,
|
|
593
|
+
collection: 'agent_patterns',
|
|
594
|
+
embeddingModel: 'all-MiniLM-L6-v2',
|
|
595
|
+
vectorSize: 384,
|
|
596
|
+
scoreThreshold: 0.35,
|
|
597
|
+
topK: 2,
|
|
598
|
+
...(memObj.patternRag || {}),
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
if (selections.patterns.reinforcementLearning) {
|
|
602
|
+
config.patternRL = { enabled: true };
|
|
603
|
+
}
|
|
604
|
+
// Policy settings
|
|
605
|
+
config.policy = {
|
|
606
|
+
enabled: selections.policy.policyEngine,
|
|
607
|
+
imageAssetVerification: selections.policy.imageAssetVerification,
|
|
608
|
+
iacStateParity: selections.policy.iacStateParity,
|
|
609
|
+
customDir: selections.policy.customPoliciesDir ? './policies' : undefined,
|
|
610
|
+
};
|
|
611
|
+
// Model settings
|
|
612
|
+
config.model = {
|
|
613
|
+
provider: selections.model.provider,
|
|
614
|
+
costTracking: selections.model.costTracking,
|
|
615
|
+
routing: selections.model.modelRouting,
|
|
616
|
+
...(selections.model.provider === 'local'
|
|
617
|
+
? { qwenOptimizations: selections.model.qwenOptimizations }
|
|
618
|
+
: {}),
|
|
619
|
+
};
|
|
620
|
+
// Tool call profile (persisted for uap-tool-calls to read)
|
|
621
|
+
if (selections.model.toolCallProfile) {
|
|
622
|
+
const toolCalls = config.toolCalls || {};
|
|
623
|
+
toolCalls.modelProfile = selections.model.toolCallProfile;
|
|
624
|
+
config.toolCalls = toolCalls;
|
|
625
|
+
}
|
|
626
|
+
// Hooks settings
|
|
627
|
+
config.hooks = {
|
|
628
|
+
sessionStart: selections.hooks.sessionStart,
|
|
629
|
+
preCompact: selections.hooks.preCompact,
|
|
630
|
+
taskCompletion: selections.hooks.taskCompletion,
|
|
631
|
+
autoApproveTools: selections.hooks.autoApproveTools,
|
|
632
|
+
};
|
|
633
|
+
// Browser settings
|
|
634
|
+
if (selections.browser.cloakBrowser) {
|
|
635
|
+
config.browser = { cloakBrowser: true };
|
|
636
|
+
}
|
|
637
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
638
|
+
configSpinner.succeed('Applied wizard configuration to .uap.json');
|
|
639
|
+
}
|
|
640
|
+
catch (err) {
|
|
641
|
+
configSpinner.fail(`Config patch failed: ${err instanceof Error ? err.message.slice(0, 80) : String(err).slice(0, 80)}`);
|
|
642
|
+
}
|
|
643
|
+
// ── Step 3: Start Qdrant if long-term memory enabled ───────────────
|
|
644
|
+
if (selections.memory.longTermMemory) {
|
|
645
|
+
const qdrantSpinner = ora('Starting Qdrant (Docker)...').start();
|
|
646
|
+
try {
|
|
647
|
+
await execa(uap, ['memory', 'start'], { cwd, stdio: 'pipe' });
|
|
648
|
+
qdrantSpinner.succeed('Qdrant started');
|
|
649
|
+
}
|
|
650
|
+
catch {
|
|
651
|
+
qdrantSpinner.warn('Could not start Qdrant (Docker may not be available)');
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
// ── Step 4: Install hooks for selected harnesses ────────────────────
|
|
655
|
+
if (selections.hooks.sessionStart || selections.hooks.preCompact) {
|
|
656
|
+
const hookTargets = [
|
|
657
|
+
...new Set(selections.harnesses.map((h) => HARNESS_TO_HOOK_TARGET[h] || 'claude')),
|
|
658
|
+
];
|
|
659
|
+
for (const target of hookTargets) {
|
|
660
|
+
const hookSpinner = ora(`Installing hooks for ${target}...`).start();
|
|
661
|
+
try {
|
|
662
|
+
await execa(uap, ['hooks', 'install', '--target', target], {
|
|
663
|
+
cwd,
|
|
664
|
+
stdio: 'pipe',
|
|
665
|
+
});
|
|
666
|
+
hookSpinner.succeed(`Hooks installed for ${target}`);
|
|
667
|
+
}
|
|
668
|
+
catch {
|
|
669
|
+
hookSpinner.warn(`Could not install hooks for ${target}`);
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
// ── Step 5: Index patterns if Qdrant + patterns enabled ─────────────
|
|
674
|
+
if (selections.patterns.patternRag && selections.memory.longTermMemory) {
|
|
675
|
+
const patternSpinner = ora('Indexing patterns into Qdrant...').start();
|
|
676
|
+
try {
|
|
677
|
+
await execa(uap, ['patterns', 'index'], { cwd, stdio: 'pipe' });
|
|
678
|
+
patternSpinner.succeed('Patterns indexed');
|
|
679
|
+
}
|
|
680
|
+
catch {
|
|
681
|
+
patternSpinner.warn('Pattern indexing failed (non-fatal)');
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
// ── Step 6: Setup MCP Router ────────────────────────────────────────
|
|
685
|
+
const mcpSpinner = ora('Configuring MCP Router...').start();
|
|
686
|
+
try {
|
|
687
|
+
await execa(uap, ['setup', '--no-patterns', '--no-memory', '-p', platformArg], {
|
|
688
|
+
cwd,
|
|
689
|
+
stdio: 'pipe',
|
|
690
|
+
});
|
|
691
|
+
mcpSpinner.succeed('MCP Router configured');
|
|
692
|
+
}
|
|
693
|
+
catch {
|
|
694
|
+
mcpSpinner.warn('MCP Router setup skipped');
|
|
695
|
+
}
|
|
696
|
+
// ── Step 7: Auto-setup tool call profile (chat template, scripts) ──
|
|
697
|
+
if (selections.model.toolCallProfile && selections.model.toolCallProfile !== 'generic') {
|
|
698
|
+
const toolCallSpinner = ora(`Applying tool call profile: ${selections.model.toolCallProfile}...`).start();
|
|
699
|
+
try {
|
|
700
|
+
// Run uap-tool-calls setup non-interactively
|
|
701
|
+
await execa('node', [join(cwd, 'dist', 'bin', 'tool-calls.js'), 'setup'], {
|
|
702
|
+
cwd,
|
|
703
|
+
stdio: 'pipe',
|
|
704
|
+
env: { ...process.env, UAP_MODEL_PROFILE: selections.model.toolCallProfile },
|
|
705
|
+
});
|
|
706
|
+
toolCallSpinner.succeed(`Tool call profile "${selections.model.toolCallProfile}" applied (template + scripts)`);
|
|
707
|
+
}
|
|
708
|
+
catch {
|
|
709
|
+
// Fall back to global binary
|
|
710
|
+
try {
|
|
711
|
+
await execa('uap-tool-calls', ['setup'], {
|
|
712
|
+
cwd,
|
|
713
|
+
stdio: 'pipe',
|
|
714
|
+
env: { ...process.env, UAP_MODEL_PROFILE: selections.model.toolCallProfile },
|
|
715
|
+
});
|
|
716
|
+
toolCallSpinner.succeed(`Tool call profile "${selections.model.toolCallProfile}" applied`);
|
|
717
|
+
}
|
|
718
|
+
catch {
|
|
719
|
+
toolCallSpinner.warn(`Tool call setup skipped (run manually: UAP_MODEL_PROFILE=${selections.model.toolCallProfile} uap-tool-calls setup)`);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
// ── Final instructions ─────────────────────────────────────────────────
|
|
725
|
+
function printFinalInstructions(selections) {
|
|
726
|
+
console.log('');
|
|
727
|
+
console.log(chalk.bold.green(' Setup complete!'));
|
|
728
|
+
console.log(chalk.dim(' ─'.repeat(30)));
|
|
729
|
+
console.log('');
|
|
730
|
+
console.log(chalk.bold(' Your AI assistant will now:'));
|
|
731
|
+
console.log(' - Query memory before starting work');
|
|
732
|
+
console.log(' - Store learnings for future sessions');
|
|
733
|
+
if (selections.patterns.patternLibrary) {
|
|
734
|
+
console.log(' - Apply patterns from the 22-pattern library');
|
|
735
|
+
}
|
|
736
|
+
if (selections.patterns.patternRag && selections.memory.longTermMemory) {
|
|
737
|
+
console.log(' - Retrieve relevant patterns via RAG (~12K tokens saved)');
|
|
738
|
+
}
|
|
739
|
+
if (selections.multiAgent.worktreeIsolation) {
|
|
740
|
+
console.log(' - Use worktrees for safe git workflow');
|
|
741
|
+
}
|
|
742
|
+
if (selections.policy.policyEngine) {
|
|
743
|
+
console.log(' - Enforce configured policies');
|
|
744
|
+
}
|
|
745
|
+
// Post-install actions (only items that couldn't be automated)
|
|
746
|
+
const postSteps = [];
|
|
747
|
+
if (selections.browser.cloakBrowser) {
|
|
748
|
+
postSteps.push('Run `npm run install:cloakbrowser` to install CloakBrowser');
|
|
749
|
+
}
|
|
750
|
+
if (selections.memory.longTermMemory && !selections.patterns.patternRag) {
|
|
751
|
+
postSteps.push('Run `uap patterns index` to index patterns into Qdrant later');
|
|
752
|
+
}
|
|
753
|
+
if (postSteps.length > 0) {
|
|
754
|
+
console.log('');
|
|
755
|
+
console.log(chalk.bold(' Post-install steps:'));
|
|
756
|
+
for (const step of postSteps) {
|
|
757
|
+
console.log(chalk.yellow(` - ${step}`));
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
console.log('');
|
|
761
|
+
}
|
|
762
|
+
// ── Main entry point ───────────────────────────────────────────────────
|
|
763
|
+
export async function runSetupWizard() {
|
|
764
|
+
printBanner();
|
|
765
|
+
// Walk through each section
|
|
766
|
+
const harnesseResult = await promptHarnesses();
|
|
767
|
+
const memory = await promptMemoryFeatures();
|
|
768
|
+
const multiAgent = await promptMultiAgent();
|
|
769
|
+
const patterns = await promptPatterns(memory.longTermMemory);
|
|
770
|
+
const policy = await promptPolicy();
|
|
771
|
+
const model = await promptModelConfig();
|
|
772
|
+
const hooks = await promptHooks();
|
|
773
|
+
const browser = await promptBrowser();
|
|
774
|
+
const selections = {
|
|
775
|
+
harnesses: harnesseResult.harnesses,
|
|
776
|
+
memory,
|
|
777
|
+
multiAgent,
|
|
778
|
+
patterns,
|
|
779
|
+
policy,
|
|
780
|
+
model,
|
|
781
|
+
hooks,
|
|
782
|
+
browser,
|
|
783
|
+
};
|
|
784
|
+
// Print summary and install plan
|
|
785
|
+
printSummary(selections);
|
|
786
|
+
printInstallPlan(selections);
|
|
787
|
+
// Confirm
|
|
788
|
+
const { confirmed } = await inquirer.prompt([
|
|
789
|
+
{
|
|
790
|
+
type: 'confirm',
|
|
791
|
+
name: 'confirmed',
|
|
792
|
+
message: 'Proceed with setup?',
|
|
793
|
+
default: true,
|
|
794
|
+
},
|
|
795
|
+
]);
|
|
796
|
+
if (!confirmed) {
|
|
797
|
+
console.log(chalk.yellow('\n Setup cancelled.\n'));
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
console.log('');
|
|
801
|
+
// Execute
|
|
802
|
+
await executeSetup(selections);
|
|
803
|
+
// Final instructions
|
|
804
|
+
printFinalInstructions(selections);
|
|
805
|
+
}
|
|
806
|
+
//# sourceMappingURL=setup-wizard.js.map
|