@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,895 @@
|
|
|
1
|
+
# UAP Deployment Guide
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0.0
|
|
4
|
+
**Last Updated:** 2026-03-13
|
|
5
|
+
**Status:** ✅ Production Ready
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
This guide provides comprehensive deployment options for Universal Agent Protocol (UAP), including model providers, Infrastructure as Code (IaC) providers, and CI/CD providers. All options include enforcement workflows for production deployments.
|
|
12
|
+
|
|
13
|
+
### Quick Reference
|
|
14
|
+
|
|
15
|
+
| Category | Default | Alternatives | Recommendation |
|
|
16
|
+
| --------- | --------------------- | -------------------------- | --------------------------------- |
|
|
17
|
+
| **Model** | Local Qwen3.5 35B A3B | Sonnet 4.6 API, OpenRouter | ✅ Local for production |
|
|
18
|
+
| **IaC** | Terraform | Pulumi, Crossplane | ✅ Terraform for most teams |
|
|
19
|
+
| **CI/CD** | GitHub Actions | GitLab CI, CircleCI | ✅ GitHub Actions for integration |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 1. Model Providers
|
|
24
|
+
|
|
25
|
+
### 1.1 Local Qwen3.5 35B A3B (Recommended)
|
|
26
|
+
|
|
27
|
+
**Provider:** `llama.cpp` via `@ai-sdk/openai-compatible`
|
|
28
|
+
|
|
29
|
+
**Configuration:**
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"provider": {
|
|
34
|
+
"llama.cpp": {
|
|
35
|
+
"npm": "@ai-sdk/openai-compatible",
|
|
36
|
+
"name": "Local Qwen3.5 35B A3B",
|
|
37
|
+
"options": {
|
|
38
|
+
"baseURL": "http://localhost:8080/v1",
|
|
39
|
+
"apiKey": "sk-local",
|
|
40
|
+
"maxVRAM": 16384,
|
|
41
|
+
"quantization": "IQ4_XS",
|
|
42
|
+
"contextWindow": 262144,
|
|
43
|
+
"outputTokens": 16384
|
|
44
|
+
},
|
|
45
|
+
"models": {
|
|
46
|
+
"qwen35-a3b-iq4xs": {
|
|
47
|
+
"name": "Qwen3.5 35B A3B (IQ4_XS)",
|
|
48
|
+
"limit": {
|
|
49
|
+
"context": 262144,
|
|
50
|
+
"output": 16384
|
|
51
|
+
},
|
|
52
|
+
"sonnet4-equivalent": {
|
|
53
|
+
"enabled": true,
|
|
54
|
+
"optimizations": [
|
|
55
|
+
"tool_call_optimization",
|
|
56
|
+
"streaming_efficiency",
|
|
57
|
+
"tool_reference_simulation",
|
|
58
|
+
"parallel_tool_calls",
|
|
59
|
+
"structured_output"
|
|
60
|
+
],
|
|
61
|
+
"temperature_settings": {
|
|
62
|
+
"build": 0.1,
|
|
63
|
+
"plan": 0.2,
|
|
64
|
+
"memory": 0.0,
|
|
65
|
+
"review": 0.1
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"model": "llama.cpp/qwen35-a3b-iq4xs"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Hardware Requirements:**
|
|
77
|
+
|
|
78
|
+
| VRAM | Quantization | Max Context | Recommended Use |
|
|
79
|
+
| -------- | ------------ | ----------- | -------------------- |
|
|
80
|
+
| **16GB** | IQ4_XS | 128K | General purpose |
|
|
81
|
+
| **16GB** | q4_k_m | 32K | Balanced performance |
|
|
82
|
+
| **16GB** | q3_k_m | 256K | Maximum context |
|
|
83
|
+
| **24GB** | q5_k_m | 64K | Best accuracy |
|
|
84
|
+
| **24GB** | q4_k_m | 128K | Balanced |
|
|
85
|
+
| **24GB** | q3_k_m | 256K | Maximum context |
|
|
86
|
+
|
|
87
|
+
**Pros:**
|
|
88
|
+
|
|
89
|
+
- ✅ **Free** - No per-token costs
|
|
90
|
+
- ✅ **100% uptime** - Local control
|
|
91
|
+
- ✅ **256K context** - Full context retention
|
|
92
|
+
- ✅ **Privacy** - Data stays local
|
|
93
|
+
- ✅ **Low latency** - ~50ms first token
|
|
94
|
+
|
|
95
|
+
**Cons:**
|
|
96
|
+
|
|
97
|
+
- ❌ Requires 16-24GB VRAM hardware
|
|
98
|
+
- ❌ Initial setup complexity
|
|
99
|
+
- ❌ Hardware investment
|
|
100
|
+
|
|
101
|
+
**Best For:**
|
|
102
|
+
|
|
103
|
+
- Production deployments
|
|
104
|
+
- Privacy-sensitive applications
|
|
105
|
+
- High-volume usage
|
|
106
|
+
- Cost optimization
|
|
107
|
+
|
|
108
|
+
### 1.2 Claude 3.5 Sonnet API
|
|
109
|
+
|
|
110
|
+
**Provider:** `anthropic`
|
|
111
|
+
|
|
112
|
+
**Configuration:**
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"provider": {
|
|
117
|
+
"anthropic": {
|
|
118
|
+
"name": "Claude 3.5 Sonnet",
|
|
119
|
+
"options": {
|
|
120
|
+
"apiKey": "${ANTHROPIC_API_KEY}",
|
|
121
|
+
"maxTokens": 8192
|
|
122
|
+
},
|
|
123
|
+
"models": {
|
|
124
|
+
"claude-3-5-sonnet-20241022": {
|
|
125
|
+
"name": "Claude 3.5 Sonnet",
|
|
126
|
+
"limit": {
|
|
127
|
+
"context": 200000,
|
|
128
|
+
"output": 8192
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"model": "anthropic/claude-3-5-sonnet-20241022"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Hardware Requirements:**
|
|
139
|
+
|
|
140
|
+
- None (cloud-based)
|
|
141
|
+
|
|
142
|
+
**Pros:**
|
|
143
|
+
|
|
144
|
+
- ✅ No hardware required
|
|
145
|
+
- ✅ High quality outputs
|
|
146
|
+
- ✅ Native tool call support
|
|
147
|
+
- ✅ Reliable API
|
|
148
|
+
|
|
149
|
+
**Cons:**
|
|
150
|
+
|
|
151
|
+
- ❌ **$3/1M input tokens** - Significant cost at scale
|
|
152
|
+
- ❌ 200K context limit
|
|
153
|
+
- ❌ ~100ms first token latency
|
|
154
|
+
- ❌ Data leaves local environment
|
|
155
|
+
|
|
156
|
+
**Best For:**
|
|
157
|
+
|
|
158
|
+
- Testing and development
|
|
159
|
+
- Low-volume usage
|
|
160
|
+
- When local hardware unavailable
|
|
161
|
+
- Hybrid deployments
|
|
162
|
+
|
|
163
|
+
### 1.3 OpenRouter Aggregation
|
|
164
|
+
|
|
165
|
+
**Provider:** `openrouter`
|
|
166
|
+
|
|
167
|
+
**Configuration:**
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"provider": {
|
|
172
|
+
"openrouter": {
|
|
173
|
+
"npm": "@openrouter/ai-sdk-provider",
|
|
174
|
+
"name": "OpenRouter",
|
|
175
|
+
"options": {
|
|
176
|
+
"apiKey": "${OPENROUTER_API_KEY}"
|
|
177
|
+
},
|
|
178
|
+
"models": {
|
|
179
|
+
"qwen/qwen-2.5-35b-instruct:free": {
|
|
180
|
+
"name": "Qwen 2.5 35B (Free)",
|
|
181
|
+
"limit": { "context": 32000, "output": 4096 }
|
|
182
|
+
},
|
|
183
|
+
"mistralai/mistral-large": {
|
|
184
|
+
"name": "Mistral Large",
|
|
185
|
+
"limit": { "context": 32000, "output": 32000 }
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Hardware Requirements:**
|
|
194
|
+
|
|
195
|
+
- None (cloud-based)
|
|
196
|
+
|
|
197
|
+
**Pros:**
|
|
198
|
+
|
|
199
|
+
- ✅ Multiple model options
|
|
200
|
+
- ✅ Pay-per-use pricing
|
|
201
|
+
- ✅ Free tier available
|
|
202
|
+
|
|
203
|
+
**Cons:**
|
|
204
|
+
|
|
205
|
+
- ❌ **$0.2-2/1M tokens** - Variable pricing
|
|
206
|
+
- ❌ 32K-128K context limits
|
|
207
|
+
- ❌ ~200ms first token latency
|
|
208
|
+
- ❌ Not recommended for production
|
|
209
|
+
|
|
210
|
+
**Best For:**
|
|
211
|
+
|
|
212
|
+
- Experimentation
|
|
213
|
+
- Low-volume testing
|
|
214
|
+
- Model comparison
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 2. Infrastructure as Code (IaC) Providers
|
|
219
|
+
|
|
220
|
+
### 2.1 Terraform (Default - Recommended)
|
|
221
|
+
|
|
222
|
+
**Provider:** `hashicorp/terraform`
|
|
223
|
+
|
|
224
|
+
**Configuration:**
|
|
225
|
+
|
|
226
|
+
```json
|
|
227
|
+
{
|
|
228
|
+
"iac": {
|
|
229
|
+
"provider": "terraform",
|
|
230
|
+
"version": "1.9.0",
|
|
231
|
+
"backend": {
|
|
232
|
+
"type": "s3",
|
|
233
|
+
"config": {
|
|
234
|
+
"bucket": "${TF_STATE_BUCKET}",
|
|
235
|
+
"key": "infra/terraform.tfstate",
|
|
236
|
+
"region": "us-east-1"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"workspaces": {
|
|
240
|
+
"enabled": true,
|
|
241
|
+
"prefix": "uap-"
|
|
242
|
+
},
|
|
243
|
+
"enforcement": {
|
|
244
|
+
"mode": "strict",
|
|
245
|
+
"allowDirectInfra": false,
|
|
246
|
+
"rapidIterationAllowed": true,
|
|
247
|
+
"rapidIterationWorkflow": {
|
|
248
|
+
"enableDirectChanges": true,
|
|
249
|
+
"directChangeTypes": ["kubectl", "helm", "terraform apply -target"],
|
|
250
|
+
"rapidIterationPath": ".factory/rapid-iteration/",
|
|
251
|
+
"backportWorkflow": {
|
|
252
|
+
"enabled": true,
|
|
253
|
+
"steps": [
|
|
254
|
+
"Detect direct changes via git diff",
|
|
255
|
+
"Generate Terraform configuration from changes",
|
|
256
|
+
"Validate with terraform fmt && terraform validate",
|
|
257
|
+
"Commit to IaC branch",
|
|
258
|
+
"PR for review",
|
|
259
|
+
"Merge to main after CI passes"
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Enforcement Hooks:**
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
#!/bin/bash
|
|
272
|
+
# .factory/hooks/pre-commit-iac.sh
|
|
273
|
+
|
|
274
|
+
set -euo pipefail
|
|
275
|
+
|
|
276
|
+
CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM)
|
|
277
|
+
|
|
278
|
+
# IaC enforcement
|
|
279
|
+
if echo "$CHANGED_FILES" | grep -qE '^(terraform/|\.tf$|pulumi/|crossplane/)'; then
|
|
280
|
+
echo "✅ IaC file detected - validating..."
|
|
281
|
+
|
|
282
|
+
if [ -d "terraform" ]; then
|
|
283
|
+
terraform fmt -check -recursive || {
|
|
284
|
+
echo "❌ Terraform format check failed"
|
|
285
|
+
exit 1
|
|
286
|
+
}
|
|
287
|
+
terraform validate || {
|
|
288
|
+
echo "❌ Terraform validation failed"
|
|
289
|
+
exit 1
|
|
290
|
+
}
|
|
291
|
+
fi
|
|
292
|
+
fi
|
|
293
|
+
|
|
294
|
+
# Block direct infra changes
|
|
295
|
+
if echo "$CHANGED_FILES" | grep -qE '^kubernetes/|^manifests/|^/etc/|^/var/' && \
|
|
296
|
+
! echo "$CHANGED_FILES" | grep -q '.factory/rapid-iteration/'; then
|
|
297
|
+
echo "❌ ERROR: Direct infrastructure changes are blocked"
|
|
298
|
+
echo "✅ Use IaC: terraform apply"
|
|
299
|
+
echo "✅ Or rapid iteration: .factory/rapid-iteration/ (backport required)"
|
|
300
|
+
exit 1
|
|
301
|
+
fi
|
|
302
|
+
|
|
303
|
+
exit 0
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Pros:**
|
|
307
|
+
|
|
308
|
+
- ✅ **Industry standard** - Mature ecosystem
|
|
309
|
+
- ✅ **State management** - S3 backend
|
|
310
|
+
- ✅ **Workspaces** - Environment isolation
|
|
311
|
+
- ✅ **Strict enforcement** - IaC-only mode
|
|
312
|
+
- ✅ **Rapid iteration** - Backport workflow
|
|
313
|
+
|
|
314
|
+
**Cons:**
|
|
315
|
+
|
|
316
|
+
- ❌ Learning curve for HCL
|
|
317
|
+
- ❌ State file management
|
|
318
|
+
- ❌ Initial setup complexity
|
|
319
|
+
|
|
320
|
+
**Best For:**
|
|
321
|
+
|
|
322
|
+
- Most teams (default recommendation)
|
|
323
|
+
- Production environments
|
|
324
|
+
- Multi-environment setups
|
|
325
|
+
|
|
326
|
+
### 2.2 Pulumi
|
|
327
|
+
|
|
328
|
+
**Provider:** `pulumi/pulumi`
|
|
329
|
+
|
|
330
|
+
**Configuration:**
|
|
331
|
+
|
|
332
|
+
```json
|
|
333
|
+
{
|
|
334
|
+
"iac": {
|
|
335
|
+
"provider": "pulumi",
|
|
336
|
+
"version": "3.117.0",
|
|
337
|
+
"language": "typescript",
|
|
338
|
+
"runtime": "node",
|
|
339
|
+
"backend": {
|
|
340
|
+
"url": "pulumi.com/${PULUMI_USER}"
|
|
341
|
+
},
|
|
342
|
+
"enforcement": {
|
|
343
|
+
"mode": "strict",
|
|
344
|
+
"allowDirectInfra": false,
|
|
345
|
+
"rapidIterationAllowed": true
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Pros:**
|
|
352
|
+
|
|
353
|
+
- ✅ **TypeScript/Python** - Full programming language
|
|
354
|
+
- ✅ **Pulumi Hub** - Component library
|
|
355
|
+
- ✅ **State management** - Cloud backend
|
|
356
|
+
|
|
357
|
+
**Cons:**
|
|
358
|
+
|
|
359
|
+
- ❌ Less mature than Terraform
|
|
360
|
+
- ❌ Smaller ecosystem
|
|
361
|
+
- ❌ More complex for simple tasks
|
|
362
|
+
|
|
363
|
+
**Best For:**
|
|
364
|
+
|
|
365
|
+
- TypeScript/Python teams
|
|
366
|
+
- Teams wanting full programming power
|
|
367
|
+
- Complex infrastructure logic
|
|
368
|
+
|
|
369
|
+
### 2.3 Crossplane
|
|
370
|
+
|
|
371
|
+
**Provider:** `crossplane/crossplane`
|
|
372
|
+
|
|
373
|
+
**Configuration:**
|
|
374
|
+
|
|
375
|
+
```json
|
|
376
|
+
{
|
|
377
|
+
"iac": {
|
|
378
|
+
"provider": "crossplane",
|
|
379
|
+
"version": "1.14.0",
|
|
380
|
+
"kubernetes": {
|
|
381
|
+
"context": "${KUBE_CONTEXT}"
|
|
382
|
+
},
|
|
383
|
+
"enforcement": {
|
|
384
|
+
"mode": "strict",
|
|
385
|
+
"allowDirectInfra": false,
|
|
386
|
+
"rapidIterationAllowed": true
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Pros:**
|
|
393
|
+
|
|
394
|
+
- ✅ **Kubernetes-native** - CRD-based
|
|
395
|
+
- ✅ **GitOps-friendly** - Declarative
|
|
396
|
+
- ✅ **Multi-cloud** - Unified API
|
|
397
|
+
|
|
398
|
+
**Cons:**
|
|
399
|
+
|
|
400
|
+
- ❌ **Kubernetes-only** - Limited scope
|
|
401
|
+
- ❌ Steep learning curve
|
|
402
|
+
- ❌ Complex setup
|
|
403
|
+
|
|
404
|
+
**Best For:**
|
|
405
|
+
|
|
406
|
+
- Kubernetes-only environments
|
|
407
|
+
- GitOps workflows
|
|
408
|
+
- Multi-cloud K8s deployments
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## 3. CI/CD Providers
|
|
413
|
+
|
|
414
|
+
### 3.1 GitHub Actions (Default - Recommended)
|
|
415
|
+
|
|
416
|
+
**Provider:** `github/actions`
|
|
417
|
+
|
|
418
|
+
**Configuration:**
|
|
419
|
+
|
|
420
|
+
```json
|
|
421
|
+
{
|
|
422
|
+
"cicd": {
|
|
423
|
+
"provider": "github",
|
|
424
|
+
"repository": "${GITHUB_REPO}",
|
|
425
|
+
"workflows": [
|
|
426
|
+
".github/workflows/terraform-plan.yaml",
|
|
427
|
+
".github/workflows/terraform-apply.yaml",
|
|
428
|
+
".github/workflows/backport-iac.yaml"
|
|
429
|
+
],
|
|
430
|
+
"enforcement": {
|
|
431
|
+
"mode": "strict",
|
|
432
|
+
"requiredChecks": ["terraform-fmt", "terraform-validate", "terraform-plan", "security-scan"],
|
|
433
|
+
"rapidIterationBranch": "rapid-iteration/",
|
|
434
|
+
"backportBranch": "backport-iac/",
|
|
435
|
+
"autoBackport": {
|
|
436
|
+
"enabled": true,
|
|
437
|
+
"triggers": ["rapid-iteration/* -> backport-iac/*", "direct kubectl changes detected"],
|
|
438
|
+
"steps": [
|
|
439
|
+
"Detect changes in .factory/rapid-iteration/",
|
|
440
|
+
"Generate IaC from changes",
|
|
441
|
+
"Create PR to backport",
|
|
442
|
+
"Run CI checks",
|
|
443
|
+
"Merge on approval"
|
|
444
|
+
]
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
**GitHub Actions Workflows:**
|
|
452
|
+
|
|
453
|
+
```yaml
|
|
454
|
+
# .github/workflows/terraform-plan.yaml
|
|
455
|
+
name: Terraform Plan
|
|
456
|
+
on:
|
|
457
|
+
pull_request:
|
|
458
|
+
paths:
|
|
459
|
+
- 'terraform/**'
|
|
460
|
+
- '**.tf'
|
|
461
|
+
|
|
462
|
+
jobs:
|
|
463
|
+
plan:
|
|
464
|
+
runs-on: ubuntu-latest
|
|
465
|
+
steps:
|
|
466
|
+
- uses: actions/checkout@v4
|
|
467
|
+
- uses: hashicorp/setup-terraform@v3
|
|
468
|
+
- run: terraform init
|
|
469
|
+
- run: terraform fmt -check -recursive
|
|
470
|
+
- run: terraform validate
|
|
471
|
+
- run: terraform plan -out=plan.out
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
```yaml
|
|
475
|
+
# .github/workflows/backport-iac.yaml
|
|
476
|
+
name: Backport IaC
|
|
477
|
+
on:
|
|
478
|
+
workflow_dispatch:
|
|
479
|
+
push:
|
|
480
|
+
branches:
|
|
481
|
+
- 'rapid-iteration/*'
|
|
482
|
+
|
|
483
|
+
jobs:
|
|
484
|
+
backport:
|
|
485
|
+
runs-on: ubuntu-latest
|
|
486
|
+
steps:
|
|
487
|
+
- uses: actions/checkout@v4
|
|
488
|
+
with:
|
|
489
|
+
fetch-depth: 0
|
|
490
|
+
- name: Detect Direct Changes
|
|
491
|
+
run: |
|
|
492
|
+
git diff --name-only HEAD~1 HEAD | grep -E 'kubectl|helm'
|
|
493
|
+
- name: Generate IaC
|
|
494
|
+
run: |
|
|
495
|
+
python .factory/scripts/extract-iac-from-changes.py
|
|
496
|
+
- name: Create PR
|
|
497
|
+
run: |
|
|
498
|
+
gh pr create --title "Backport IaC: ${{ github.ref_name }}" \
|
|
499
|
+
--body "Auto-generated IaC from rapid iteration" \
|
|
500
|
+
--head backport-iac:${{ github.ref_name }}
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
**Pros:**
|
|
504
|
+
|
|
505
|
+
- ✅ **Native GitHub integration** - Best integration
|
|
506
|
+
- ✅ **Free tier** - 2,000 minutes/month free
|
|
507
|
+
- ✅ **Actions marketplace** - Vast library
|
|
508
|
+
- ✅ **Auto-backport** - Rapid iteration support
|
|
509
|
+
|
|
510
|
+
**Cons:**
|
|
511
|
+
|
|
512
|
+
- ❌ GitHub-only (no self-hosted alternatives)
|
|
513
|
+
- ❌ Rate limits on free tier
|
|
514
|
+
|
|
515
|
+
**Best For:**
|
|
516
|
+
|
|
517
|
+
- GitHub repositories (default)
|
|
518
|
+
- Most teams
|
|
519
|
+
- Rapid iteration workflows
|
|
520
|
+
|
|
521
|
+
### 3.2 GitLab CI
|
|
522
|
+
|
|
523
|
+
**Provider:** `gitlab/ci`
|
|
524
|
+
|
|
525
|
+
**Configuration:**
|
|
526
|
+
|
|
527
|
+
```json
|
|
528
|
+
{
|
|
529
|
+
"cicd": {
|
|
530
|
+
"provider": "gitlab",
|
|
531
|
+
"repository": "${GITLAB_REPO}",
|
|
532
|
+
"enforcement": {
|
|
533
|
+
"mode": "strict",
|
|
534
|
+
"requiredJobs": ["plan", "validate", "scan"],
|
|
535
|
+
"rapidIterationAllowed": true
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
**Pros:**
|
|
542
|
+
|
|
543
|
+
- ✅ **GitLab integration** - Native for GitLab users
|
|
544
|
+
- ✅ **Built-in CI/CD** - No separate service
|
|
545
|
+
- ✅ **Free tier** - Generous limits
|
|
546
|
+
|
|
547
|
+
**Cons:**
|
|
548
|
+
|
|
549
|
+
- ❌ GitLab ecosystem lock-in
|
|
550
|
+
- ❌ Smaller marketplace than GitHub
|
|
551
|
+
|
|
552
|
+
**Best For:**
|
|
553
|
+
|
|
554
|
+
- GitLab users
|
|
555
|
+
- Teams already using GitLab
|
|
556
|
+
|
|
557
|
+
### 3.3 CircleCI
|
|
558
|
+
|
|
559
|
+
**Provider:** `circleci/circleci`
|
|
560
|
+
|
|
561
|
+
**Configuration:**
|
|
562
|
+
|
|
563
|
+
```json
|
|
564
|
+
{
|
|
565
|
+
"cicd": {
|
|
566
|
+
"provider": "circleci",
|
|
567
|
+
"enforcement": {
|
|
568
|
+
"mode": "strict",
|
|
569
|
+
"rapidIterationAllowed": true
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
**Pros:**
|
|
576
|
+
|
|
577
|
+
- ✅ **Fast execution** - Optimized runners
|
|
578
|
+
- ✅ **Docker-native** - Great for containerized workflows
|
|
579
|
+
|
|
580
|
+
**Cons:**
|
|
581
|
+
|
|
582
|
+
- ❌ More expensive
|
|
583
|
+
- ❌ Complex setup
|
|
584
|
+
- ❌ Not recommended for most users
|
|
585
|
+
|
|
586
|
+
**Best For:**
|
|
587
|
+
|
|
588
|
+
- High-performance needs
|
|
589
|
+
- Docker-heavy workflows
|
|
590
|
+
|
|
591
|
+
---
|
|
592
|
+
|
|
593
|
+
## 4. Enforcement Workflows
|
|
594
|
+
|
|
595
|
+
### 4.1 IaC-Only Mode
|
|
596
|
+
|
|
597
|
+
**Purpose:** Ensure all infrastructure changes go through IaC
|
|
598
|
+
|
|
599
|
+
**Workflow:**
|
|
600
|
+
|
|
601
|
+
```
|
|
602
|
+
1. Developer makes direct change (kubectl/helm)
|
|
603
|
+
2. Hook detects change
|
|
604
|
+
3. If in .factory/rapid-iteration/: Allow + auto-backport
|
|
605
|
+
4. If NOT in rapid-iteration: BLOCK with message
|
|
606
|
+
5. Developer uses rapid iteration path
|
|
607
|
+
6. Auto-backport creates IaC PR
|
|
608
|
+
7. PR reviewed and merged
|
|
609
|
+
8. terraform apply applied via CI/CD
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
**Pre-Commit Hook:**
|
|
613
|
+
|
|
614
|
+
```bash
|
|
615
|
+
#!/bin/bash
|
|
616
|
+
# Block direct infra changes except rapid iteration
|
|
617
|
+
|
|
618
|
+
CHANGED_FILES=$(git diff --cached --name-only)
|
|
619
|
+
|
|
620
|
+
if echo "$CHANGED_FILES" | grep -qE '^kubernetes/|^manifests/|^/etc/|^/var/' && \
|
|
621
|
+
! echo "$CHANGED_FILES" | grep -q '.factory/rapid-iteration/'; then
|
|
622
|
+
echo "❌ Direct infrastructure changes blocked"
|
|
623
|
+
echo "✅ Use IaC: terraform apply"
|
|
624
|
+
echo "✅ Or rapid iteration: .factory/rapid-iteration/"
|
|
625
|
+
exit 1
|
|
626
|
+
fi
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
### 4.2 CICD-Only Mode
|
|
630
|
+
|
|
631
|
+
**Purpose:** Ensure all deployments go through CI/CD pipeline
|
|
632
|
+
|
|
633
|
+
**Workflow:**
|
|
634
|
+
|
|
635
|
+
```
|
|
636
|
+
1. Developer merges PR to main
|
|
637
|
+
2. CI/CD triggers on push
|
|
638
|
+
3. Terraform plan runs
|
|
639
|
+
4. Security scan runs
|
|
640
|
+
5. If all checks pass: terraform apply
|
|
641
|
+
6. Deployment complete
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
**Exceptions:**
|
|
645
|
+
|
|
646
|
+
- `kubectl --dry-run` - Testing only
|
|
647
|
+
- `.factory/rapid-iteration/` - Backport workflow
|
|
648
|
+
|
|
649
|
+
### 4.3 Rapid Iteration Workflow
|
|
650
|
+
|
|
651
|
+
**Purpose:** Enable fast local testing with automatic IaC generation
|
|
652
|
+
|
|
653
|
+
**Workflow:**
|
|
654
|
+
|
|
655
|
+
```
|
|
656
|
+
1. Create branch: rapid-iteration/<feature>
|
|
657
|
+
2. Make direct changes (kubectl/helm)
|
|
658
|
+
3. Test locally
|
|
659
|
+
4. Commit to rapid-iteration branch
|
|
660
|
+
5. Post-commit hook triggers
|
|
661
|
+
6. IaC generated from changes
|
|
662
|
+
7. Backport branch created
|
|
663
|
+
8. PR created for review
|
|
664
|
+
9. CI/CD validates IaC
|
|
665
|
+
10. Merge to main
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
**Post-Commit Hook:**
|
|
669
|
+
|
|
670
|
+
```bash
|
|
671
|
+
#!/bin/bash
|
|
672
|
+
# Auto-backport rapid iteration changes
|
|
673
|
+
|
|
674
|
+
if git diff --cached --name-only | grep -q '.factory/rapid-iteration/'; then
|
|
675
|
+
echo "🔄 Rapid iteration detected - triggering backport..."
|
|
676
|
+
|
|
677
|
+
# Generate IaC
|
|
678
|
+
python .factory/scripts/extract-iac-from-changes.py
|
|
679
|
+
|
|
680
|
+
# Create backport branch
|
|
681
|
+
BACKPORT_BRANCH="backport-iac/$(date +%Y%m%d-%H%M%S)"
|
|
682
|
+
git checkout -b "$BACKPORT_BRANCH"
|
|
683
|
+
|
|
684
|
+
# Commit and PR
|
|
685
|
+
git add terraform/
|
|
686
|
+
git commit -m "Backport IaC: $(git log -1 --format=%s)"
|
|
687
|
+
git push origin "$BACKPORT_BRANCH"
|
|
688
|
+
gh pr create --title "Backport IaC: $(git log -1 --format=%s)" \
|
|
689
|
+
--body "Auto-generated IaC from rapid iteration" \
|
|
690
|
+
--head "$BACKPORT_BRANCH"
|
|
691
|
+
fi
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
---
|
|
695
|
+
|
|
696
|
+
## 5. Deployment Checklist
|
|
697
|
+
|
|
698
|
+
### 5.1 Pre-Deployment
|
|
699
|
+
|
|
700
|
+
- [ ] Select model provider (Local Qwen3.5 recommended)
|
|
701
|
+
- [ ] Configure hardware (16GB/24GB VRAM)
|
|
702
|
+
- [ ] Select IaC provider (Terraform recommended)
|
|
703
|
+
- [ ] Select CI/CD provider (GitHub Actions recommended)
|
|
704
|
+
- [ ] Set up state backend (S3 for Terraform)
|
|
705
|
+
- [ ] Configure GitHub repository
|
|
706
|
+
- [ ] Install Git hooks
|
|
707
|
+
- [ ] Set up Qdrant for semantic memory
|
|
708
|
+
|
|
709
|
+
### 5.2 Post-Deployment
|
|
710
|
+
|
|
711
|
+
- [ ] Run `uap task ready`
|
|
712
|
+
- [ ] Run `python agents/scripts/index_patterns_to_qdrant.py`
|
|
713
|
+
- [ ] Verify SessionStart hook enforcement
|
|
714
|
+
- [ ] Test worktree creation
|
|
715
|
+
- [ ] Test memory storage
|
|
716
|
+
- [ ] Test IaC enforcement (try direct change - should block)
|
|
717
|
+
- [ ] Test rapid iteration (should auto-backport)
|
|
718
|
+
- [ ] Verify CI/CD workflows
|
|
719
|
+
|
|
720
|
+
---
|
|
721
|
+
|
|
722
|
+
## 6. Provider Comparison Matrix
|
|
723
|
+
|
|
724
|
+
### 6.1 Model Providers
|
|
725
|
+
|
|
726
|
+
| Feature | Local Qwen3.5 | Sonnet 4.6 API | OpenRouter |
|
|
727
|
+
| --------------- | ------------- | -------------- | ------------------ |
|
|
728
|
+
| Cost | Free | $3/1M input | $0.2-2/1M |
|
|
729
|
+
| VRAM | 16GB required | N/A | N/A |
|
|
730
|
+
| Context | 256K | 200K | 32K-128K |
|
|
731
|
+
| Tool Calls | Simulated | Native | Simulated |
|
|
732
|
+
| Latency | ~50ms | ~100ms | ~200ms |
|
|
733
|
+
| Reliability | 100% (local) | 99.9% | 99.5% |
|
|
734
|
+
| **Recommended** | ✅ Production | ⚠️ Testing | ❌ Not recommended |
|
|
735
|
+
|
|
736
|
+
### 6.2 IaC Providers
|
|
737
|
+
|
|
738
|
+
| Feature | Terraform | Pulumi | Crossplane |
|
|
739
|
+
| --------------- | ----------- | ----------------- | ----------- |
|
|
740
|
+
| Language | HCL | TypeScript/Python | YAML |
|
|
741
|
+
| State | Remote (S3) | Remote (Pulumi) | CRD-based |
|
|
742
|
+
| Learning Curve | Medium | Low | High |
|
|
743
|
+
| **Recommended** | ✅ Default | ⚠️ TS teams | ❌ K8s-only |
|
|
744
|
+
|
|
745
|
+
### 6.3 CI/CD Providers
|
|
746
|
+
|
|
747
|
+
| Feature | GitHub Actions | GitLab CI | CircleCI |
|
|
748
|
+
| --------------- | -------------- | --------- | ------------------ |
|
|
749
|
+
| Integration | Native | Native | Plugin |
|
|
750
|
+
| Cost | Free (public) | Free | Free tier |
|
|
751
|
+
| Speed | Fast | Fast | Fastest |
|
|
752
|
+
| **Recommended** | ✅ Default | ⚠️ GitLab | ❌ Not recommended |
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
## 7. Quick Start Examples
|
|
757
|
+
|
|
758
|
+
### 7.1 Local Qwen3.5 + Terraform + GitHub Actions
|
|
759
|
+
|
|
760
|
+
```bash
|
|
761
|
+
# 1. Install dependencies
|
|
762
|
+
npm install -g universal-agent-protocol
|
|
763
|
+
|
|
764
|
+
# 2. Initialize UAP
|
|
765
|
+
uap init
|
|
766
|
+
|
|
767
|
+
# 3. Configure for local Qwen3.5
|
|
768
|
+
cat > opencode.json << 'EOF'
|
|
769
|
+
{
|
|
770
|
+
"provider": {
|
|
771
|
+
"llama.cpp": {
|
|
772
|
+
"name": "Local Qwen3.5 35B",
|
|
773
|
+
"options": {
|
|
774
|
+
"baseURL": "http://localhost:8080/v1",
|
|
775
|
+
"apiKey": "sk-local"
|
|
776
|
+
},
|
|
777
|
+
"models": {
|
|
778
|
+
"qwen35-a3b-iq4xs": {
|
|
779
|
+
"name": "Qwen3.5 35B A3B",
|
|
780
|
+
"limit": {
|
|
781
|
+
"context": 262144,
|
|
782
|
+
"output": 16384
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
"model": "llama.cpp/qwen35-a3b-iq4xs"
|
|
789
|
+
}
|
|
790
|
+
EOF
|
|
791
|
+
|
|
792
|
+
# 4. Configure Terraform
|
|
793
|
+
cat > .factory/iac-config.json << 'EOF'
|
|
794
|
+
{
|
|
795
|
+
"iac": {
|
|
796
|
+
"provider": "terraform",
|
|
797
|
+
"enforcement": {
|
|
798
|
+
"mode": "strict",
|
|
799
|
+
"allowDirectInfra": false,
|
|
800
|
+
"rapidIterationAllowed": true
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
EOF
|
|
805
|
+
|
|
806
|
+
# 5. Install hooks
|
|
807
|
+
uap hooks install all
|
|
808
|
+
|
|
809
|
+
# 6. Start Qdrant
|
|
810
|
+
uap memory start
|
|
811
|
+
|
|
812
|
+
# 7. Verify setup
|
|
813
|
+
uap compliance check
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
### 7.2 Sonnet 4.6 + Pulumi + GitLab CI
|
|
817
|
+
|
|
818
|
+
```bash
|
|
819
|
+
# 1. Install dependencies
|
|
820
|
+
npm install -g universal-agent-protocol
|
|
821
|
+
|
|
822
|
+
# 2. Initialize UAP
|
|
823
|
+
uap init
|
|
824
|
+
|
|
825
|
+
# 3. Configure for Sonnet 4.6
|
|
826
|
+
cat > opencode.json << 'EOF'
|
|
827
|
+
{
|
|
828
|
+
"provider": {
|
|
829
|
+
"anthropic": {
|
|
830
|
+
"name": "Claude 3.5 Sonnet",
|
|
831
|
+
"options": {
|
|
832
|
+
"apiKey": "${ANTHROPIC_API_KEY}"
|
|
833
|
+
},
|
|
834
|
+
"models": {
|
|
835
|
+
"claude-3-5-sonnet-20241022": {
|
|
836
|
+
"name": "Claude 3.5 Sonnet",
|
|
837
|
+
"limit": {
|
|
838
|
+
"context": 200000,
|
|
839
|
+
"output": 8192
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
},
|
|
845
|
+
"model": "anthropic/claude-3-5-sonnet-20241022"
|
|
846
|
+
}
|
|
847
|
+
EOF
|
|
848
|
+
|
|
849
|
+
# 4. Configure Pulumi
|
|
850
|
+
cat > .factory/iac-config.json << 'EOF'
|
|
851
|
+
{
|
|
852
|
+
"iac": {
|
|
853
|
+
"provider": "pulumi",
|
|
854
|
+
"language": "typescript",
|
|
855
|
+
"enforcement": {
|
|
856
|
+
"mode": "strict",
|
|
857
|
+
"allowDirectInfra": false
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
EOF
|
|
862
|
+
|
|
863
|
+
# 5. Install hooks
|
|
864
|
+
uap hooks install all
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
## 8. Troubleshooting
|
|
870
|
+
|
|
871
|
+
### 8.1 Common Issues
|
|
872
|
+
|
|
873
|
+
**Issue:** "Database not found"
|
|
874
|
+
**Solution:** Run `uap init` to create memory database
|
|
875
|
+
|
|
876
|
+
**Issue:** "Qdrant connection failed"
|
|
877
|
+
**Solution:** Run `uap memory start` to start Qdrant
|
|
878
|
+
|
|
879
|
+
**Issue:** "Direct infra changes blocked"
|
|
880
|
+
**Solution:** Use `.factory/rapid-iteration/` or `terraform apply`
|
|
881
|
+
|
|
882
|
+
**Issue:** "Worktree creation failed"
|
|
883
|
+
**Solution:** Check Git configuration and permissions
|
|
884
|
+
|
|
885
|
+
### 8.2 Getting Help
|
|
886
|
+
|
|
887
|
+
- Documentation: `docs/` directory
|
|
888
|
+
- Issues: GitHub repository issues
|
|
889
|
+
- Community: Join UAP Discord
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
**Last Updated:** 2026-03-13
|
|
894
|
+
**Version:** 1.0.0
|
|
895
|
+
**Status:** ✅ Production Ready
|