universal-agent-protocol 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +462 -0
- package/dist/analyzers/index.d.ts +3 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +656 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +506 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/tool-calls.d.ts +3 -0
- package/dist/bin/tool-calls.d.ts.map +1 -0
- package/dist/bin/tool-calls.js +4 -0
- package/dist/bin/tool-calls.js.map +1 -0
- package/dist/cli/agent.d.ts +20 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +434 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/analyze.d.ts +7 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +103 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/coord.d.ts +7 -0
- package/dist/cli/coord.d.ts.map +1 -0
- package/dist/cli/coord.js +138 -0
- package/dist/cli/coord.js.map +1 -0
- package/dist/cli/dashboard.d.ts +8 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +704 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/deploy.d.ts +19 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +267 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/droids.d.ts +9 -0
- package/dist/cli/droids.d.ts.map +1 -0
- package/dist/cli/droids.js +227 -0
- package/dist/cli/droids.js.map +1 -0
- package/dist/cli/generate.d.ts +17 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +432 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/hooks.d.ts +9 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +374 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +11 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +316 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-router.d.ts +16 -0
- package/dist/cli/mcp-router.d.ts.map +1 -0
- package/dist/cli/mcp-router.js +143 -0
- package/dist/cli/mcp-router.js.map +1 -0
- package/dist/cli/memory.d.ts +24 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +877 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/model.d.ts +15 -0
- package/dist/cli/model.d.ts.map +1 -0
- package/dist/cli/model.js +270 -0
- package/dist/cli/model.js.map +1 -0
- package/dist/cli/patterns.d.ts +26 -0
- package/dist/cli/patterns.d.ts.map +1 -0
- package/dist/cli/patterns.js +587 -0
- package/dist/cli/patterns.js.map +1 -0
- package/dist/cli/setup-mcp-router.d.ts +8 -0
- package/dist/cli/setup-mcp-router.d.ts.map +1 -0
- package/dist/cli/setup-mcp-router.js +163 -0
- package/dist/cli/setup-mcp-router.js.map +1 -0
- package/dist/cli/setup.d.ts +13 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +146 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/sync.d.ts +7 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +26 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/task.d.ts +33 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +616 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/tool-calls.d.ts +8 -0
- package/dist/cli/tool-calls.d.ts.map +1 -0
- package/dist/cli/tool-calls.js +239 -0
- package/dist/cli/tool-calls.js.map +1 -0
- package/dist/cli/update.d.ts +10 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +300 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/visualize.d.ts +77 -0
- package/dist/cli/visualize.d.ts.map +1 -0
- package/dist/cli/visualize.js +287 -0
- package/dist/cli/visualize.js.map +1 -0
- package/dist/cli/worktree.d.ts +9 -0
- package/dist/cli/worktree.d.ts.map +1 -0
- package/dist/cli/worktree.js +175 -0
- package/dist/cli/worktree.js.map +1 -0
- package/dist/coordination/capability-router.d.ts +79 -0
- package/dist/coordination/capability-router.d.ts.map +1 -0
- package/dist/coordination/capability-router.js +324 -0
- package/dist/coordination/capability-router.js.map +1 -0
- package/dist/coordination/database.d.ts +13 -0
- package/dist/coordination/database.d.ts.map +1 -0
- package/dist/coordination/database.js +131 -0
- package/dist/coordination/database.js.map +1 -0
- package/dist/coordination/deploy-batcher.d.ts +101 -0
- package/dist/coordination/deploy-batcher.d.ts.map +1 -0
- package/dist/coordination/deploy-batcher.js +565 -0
- package/dist/coordination/deploy-batcher.js.map +1 -0
- package/dist/coordination/index.d.ts +5 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +5 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/service.d.ts +81 -0
- package/dist/coordination/service.d.ts.map +1 -0
- package/dist/coordination/service.js +603 -0
- package/dist/coordination/service.js.map +1 -0
- package/dist/generators/claude-md.d.ts +3 -0
- package/dist/generators/claude-md.d.ts.map +1 -0
- package/dist/generators/claude-md.js +977 -0
- package/dist/generators/claude-md.js.map +1 -0
- package/dist/generators/template-loader.d.ts +105 -0
- package/dist/generators/template-loader.d.ts.map +1 -0
- package/dist/generators/template-loader.js +291 -0
- package/dist/generators/template-loader.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-router/config/parser.d.ts +9 -0
- package/dist/mcp-router/config/parser.d.ts.map +1 -0
- package/dist/mcp-router/config/parser.js +174 -0
- package/dist/mcp-router/config/parser.js.map +1 -0
- package/dist/mcp-router/executor/client.d.ts +31 -0
- package/dist/mcp-router/executor/client.d.ts.map +1 -0
- package/dist/mcp-router/executor/client.js +187 -0
- package/dist/mcp-router/executor/client.js.map +1 -0
- package/dist/mcp-router/index.d.ts +22 -0
- package/dist/mcp-router/index.d.ts.map +1 -0
- package/dist/mcp-router/index.js +18 -0
- package/dist/mcp-router/index.js.map +1 -0
- package/dist/mcp-router/output-compressor.d.ts +26 -0
- package/dist/mcp-router/output-compressor.d.ts.map +1 -0
- package/dist/mcp-router/output-compressor.js +236 -0
- package/dist/mcp-router/output-compressor.js.map +1 -0
- package/dist/mcp-router/search/fuzzy.d.ts +26 -0
- package/dist/mcp-router/search/fuzzy.d.ts.map +1 -0
- package/dist/mcp-router/search/fuzzy.js +94 -0
- package/dist/mcp-router/search/fuzzy.js.map +1 -0
- package/dist/mcp-router/server.d.ts +50 -0
- package/dist/mcp-router/server.d.ts.map +1 -0
- package/dist/mcp-router/server.js +229 -0
- package/dist/mcp-router/server.js.map +1 -0
- package/dist/mcp-router/session-stats.d.ts +37 -0
- package/dist/mcp-router/session-stats.d.ts.map +1 -0
- package/dist/mcp-router/session-stats.js +56 -0
- package/dist/mcp-router/session-stats.js.map +1 -0
- package/dist/mcp-router/tools/discover.d.ts +37 -0
- package/dist/mcp-router/tools/discover.d.ts.map +1 -0
- package/dist/mcp-router/tools/discover.js +65 -0
- package/dist/mcp-router/tools/discover.js.map +1 -0
- package/dist/mcp-router/tools/execute.d.ts +43 -0
- package/dist/mcp-router/tools/execute.d.ts.map +1 -0
- package/dist/mcp-router/tools/execute.js +103 -0
- package/dist/mcp-router/tools/execute.js.map +1 -0
- package/dist/mcp-router/types.d.ts +62 -0
- package/dist/mcp-router/types.d.ts.map +1 -0
- package/dist/mcp-router/types.js +6 -0
- package/dist/mcp-router/types.js.map +1 -0
- package/dist/memory/adaptive-context.d.ts +146 -0
- package/dist/memory/adaptive-context.d.ts.map +1 -0
- package/dist/memory/adaptive-context.js +1022 -0
- package/dist/memory/adaptive-context.js.map +1 -0
- package/dist/memory/agent-scoped-memory.d.ts +67 -0
- package/dist/memory/agent-scoped-memory.d.ts.map +1 -0
- package/dist/memory/agent-scoped-memory.js +126 -0
- package/dist/memory/agent-scoped-memory.js.map +1 -0
- package/dist/memory/backends/base.d.ts +18 -0
- package/dist/memory/backends/base.d.ts.map +1 -0
- package/dist/memory/backends/base.js +2 -0
- package/dist/memory/backends/base.js.map +1 -0
- package/dist/memory/backends/factory.d.ts +4 -0
- package/dist/memory/backends/factory.d.ts.map +1 -0
- package/dist/memory/backends/factory.js +53 -0
- package/dist/memory/backends/factory.js.map +1 -0
- package/dist/memory/backends/github.d.ts +22 -0
- package/dist/memory/backends/github.d.ts.map +1 -0
- package/dist/memory/backends/github.js +118 -0
- package/dist/memory/backends/github.js.map +1 -0
- package/dist/memory/backends/qdrant-cloud.d.ts +32 -0
- package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
- package/dist/memory/backends/qdrant-cloud.js +168 -0
- package/dist/memory/backends/qdrant-cloud.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +74 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +289 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/correction-propagator.d.ts +44 -0
- package/dist/memory/correction-propagator.d.ts.map +1 -0
- package/dist/memory/correction-propagator.js +156 -0
- package/dist/memory/correction-propagator.js.map +1 -0
- package/dist/memory/daily-log.d.ts +67 -0
- package/dist/memory/daily-log.d.ts.map +1 -0
- package/dist/memory/daily-log.js +143 -0
- package/dist/memory/daily-log.js.map +1 -0
- package/dist/memory/dynamic-retrieval.d.ts +110 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
- package/dist/memory/dynamic-retrieval.js +688 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -0
- package/dist/memory/embeddings.d.ts +116 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +461 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/hierarchical-memory.d.ts +141 -0
- package/dist/memory/hierarchical-memory.d.ts.map +1 -0
- package/dist/memory/hierarchical-memory.js +477 -0
- package/dist/memory/hierarchical-memory.js.map +1 -0
- package/dist/memory/memory-consolidator.d.ts +124 -0
- package/dist/memory/memory-consolidator.d.ts.map +1 -0
- package/dist/memory/memory-consolidator.js +514 -0
- package/dist/memory/memory-consolidator.js.map +1 -0
- package/dist/memory/memory-maintenance.d.ts +39 -0
- package/dist/memory/memory-maintenance.d.ts.map +1 -0
- package/dist/memory/memory-maintenance.js +305 -0
- package/dist/memory/memory-maintenance.js.map +1 -0
- package/dist/memory/model-router.d.ts +102 -0
- package/dist/memory/model-router.d.ts.map +1 -0
- package/dist/memory/model-router.js +448 -0
- package/dist/memory/model-router.js.map +1 -0
- package/dist/memory/multi-view-memory.d.ts +134 -0
- package/dist/memory/multi-view-memory.d.ts.map +1 -0
- package/dist/memory/multi-view-memory.js +420 -0
- package/dist/memory/multi-view-memory.js.map +1 -0
- package/dist/memory/prepopulate.d.ts +76 -0
- package/dist/memory/prepopulate.d.ts.map +1 -0
- package/dist/memory/prepopulate.js +815 -0
- package/dist/memory/prepopulate.js.map +1 -0
- package/dist/memory/semantic-compression.d.ts +77 -0
- package/dist/memory/semantic-compression.d.ts.map +1 -0
- package/dist/memory/semantic-compression.js +348 -0
- package/dist/memory/semantic-compression.js.map +1 -0
- package/dist/memory/serverless-qdrant.d.ts +102 -0
- package/dist/memory/serverless-qdrant.d.ts.map +1 -0
- package/dist/memory/serverless-qdrant.js +369 -0
- package/dist/memory/serverless-qdrant.js.map +1 -0
- package/dist/memory/short-term/factory.d.ts +26 -0
- package/dist/memory/short-term/factory.d.ts.map +1 -0
- package/dist/memory/short-term/factory.js +28 -0
- package/dist/memory/short-term/factory.js.map +1 -0
- package/dist/memory/short-term/indexeddb.d.ts +25 -0
- package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
- package/dist/memory/short-term/indexeddb.js +64 -0
- package/dist/memory/short-term/indexeddb.js.map +1 -0
- package/dist/memory/short-term/schema.d.ts +6 -0
- package/dist/memory/short-term/schema.d.ts.map +1 -0
- package/dist/memory/short-term/schema.js +119 -0
- package/dist/memory/short-term/schema.js.map +1 -0
- package/dist/memory/short-term/sqlite.d.ts +50 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -0
- package/dist/memory/short-term/sqlite.js +221 -0
- package/dist/memory/short-term/sqlite.js.map +1 -0
- package/dist/memory/speculative-cache.d.ts +111 -0
- package/dist/memory/speculative-cache.d.ts.map +1 -0
- package/dist/memory/speculative-cache.js +409 -0
- package/dist/memory/speculative-cache.js.map +1 -0
- package/dist/memory/task-classifier.d.ts +34 -0
- package/dist/memory/task-classifier.d.ts.map +1 -0
- package/dist/memory/task-classifier.js +300 -0
- package/dist/memory/task-classifier.js.map +1 -0
- package/dist/memory/terminal-bench-knowledge.d.ts +48 -0
- package/dist/memory/terminal-bench-knowledge.d.ts.map +1 -0
- package/dist/memory/terminal-bench-knowledge.js +399 -0
- package/dist/memory/terminal-bench-knowledge.js.map +1 -0
- package/dist/memory/write-gate.d.ts +39 -0
- package/dist/memory/write-gate.d.ts.map +1 -0
- package/dist/memory/write-gate.js +190 -0
- package/dist/memory/write-gate.js.map +1 -0
- package/dist/models/executor.d.ts +130 -0
- package/dist/models/executor.d.ts.map +1 -0
- package/dist/models/executor.js +383 -0
- package/dist/models/executor.js.map +1 -0
- package/dist/models/index.d.ts +15 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +17 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/planner.d.ts +71 -0
- package/dist/models/planner.d.ts.map +1 -0
- package/dist/models/planner.js +344 -0
- package/dist/models/planner.js.map +1 -0
- package/dist/models/router.d.ts +75 -0
- package/dist/models/router.d.ts.map +1 -0
- package/dist/models/router.js +344 -0
- package/dist/models/router.js.map +1 -0
- package/dist/models/types.d.ts +370 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +181 -0
- package/dist/models/types.js.map +1 -0
- package/dist/tasks/coordination.d.ts +74 -0
- package/dist/tasks/coordination.d.ts.map +1 -0
- package/dist/tasks/coordination.js +237 -0
- package/dist/tasks/coordination.js.map +1 -0
- package/dist/tasks/database.d.ts +14 -0
- package/dist/tasks/database.d.ts.map +1 -0
- package/dist/tasks/database.js +128 -0
- package/dist/tasks/database.js.map +1 -0
- package/dist/tasks/index.d.ts +5 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +5 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/service.d.ts +39 -0
- package/dist/tasks/service.d.ts.map +1 -0
- package/dist/tasks/service.js +582 -0
- package/dist/tasks/service.js.map +1 -0
- package/dist/tasks/types.d.ts +224 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +64 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/types/analysis.d.ts +82 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +3023 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +292 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/coordination.d.ts +240 -0
- package/dist/types/coordination.d.ts.map +1 -0
- package/dist/types/coordination.js +43 -0
- package/dist/types/coordination.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/calculate-average.d.ts +15 -0
- package/dist/utils/calculate-average.d.ts.map +1 -0
- package/dist/utils/calculate-average.js +21 -0
- package/dist/utils/calculate-average.js.map +1 -0
- package/dist/utils/config-manager.d.ts +30 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +41 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/dijkstra.d.ts +17 -0
- package/dist/utils/dijkstra.d.ts.map +1 -0
- package/dist/utils/dijkstra.js +91 -0
- package/dist/utils/dijkstra.js.map +1 -0
- package/dist/utils/fetch-with-retry.d.ts +5 -0
- package/dist/utils/fetch-with-retry.d.ts.map +1 -0
- package/dist/utils/fetch-with-retry.js +61 -0
- package/dist/utils/fetch-with-retry.js.map +1 -0
- package/dist/utils/merge-claude-md.d.ts +28 -0
- package/dist/utils/merge-claude-md.d.ts.map +1 -0
- package/dist/utils/merge-claude-md.js +342 -0
- package/dist/utils/merge-claude-md.js.map +1 -0
- package/dist/utils/order-processor-refactored.d.ts +126 -0
- package/dist/utils/order-processor-refactored.d.ts.map +1 -0
- package/dist/utils/order-processor-refactored.js +165 -0
- package/dist/utils/order-processor-refactored.js.map +1 -0
- package/dist/utils/order-processor-strategy.d.ts +72 -0
- package/dist/utils/order-processor-strategy.d.ts.map +1 -0
- package/dist/utils/order-processor-strategy.js +158 -0
- package/dist/utils/order-processor-strategy.js.map +1 -0
- package/dist/utils/order-processor.d.ts +242 -0
- package/dist/utils/order-processor.d.ts.map +1 -0
- package/dist/utils/order-processor.js +370 -0
- package/dist/utils/order-processor.js.map +1 -0
- package/dist/utils/rate-limiter-simple.d.ts +58 -0
- package/dist/utils/rate-limiter-simple.d.ts.map +1 -0
- package/dist/utils/rate-limiter-simple.js +100 -0
- package/dist/utils/rate-limiter-simple.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +62 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +150 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/string-similarity.d.ts +37 -0
- package/dist/utils/string-similarity.d.ts.map +1 -0
- package/dist/utils/string-similarity.js +114 -0
- package/dist/utils/string-similarity.js.map +1 -0
- package/dist/utils/validate-json.d.ts +51 -0
- package/dist/utils/validate-json.d.ts.map +1 -0
- package/dist/utils/validate-json.js +99 -0
- package/dist/utils/validate-json.js.map +1 -0
- package/package.json +96 -0
- package/templates/CLAUDE.template.md +11 -0
- package/templates/CLAUDE_ARCHITECTURE.template.md +103 -0
- package/templates/CLAUDE_CODING.template.md +125 -0
- package/templates/CLAUDE_DROIDS.template.md +109 -0
- package/templates/CLAUDE_MEMORY.template.md +130 -0
- package/templates/CLAUDE_WORKFLOWS.template.md +136 -0
- package/templates/PROJECT.template.md +209 -0
- package/templates/SCHEMA.md +57 -0
- package/templates/archive/CLAUDE.template.root-v6.md +762 -0
- package/templates/archive/CLAUDE.template.v6.md +762 -0
- package/templates/hooks/pre-compact.sh +68 -0
- package/templates/hooks/session-start.sh +106 -0
- package/tools/agents/README.md +224 -0
- package/tools/agents/UAP/README.md +351 -0
- package/tools/agents/UAP/__init__.py +9 -0
- package/tools/agents/UAP/cli.py +675 -0
- package/tools/agents/UAP/version.py +2 -0
- package/tools/agents/benchmarks/benchmark_memory_systems.py +637 -0
- package/tools/agents/benchmarks/results/benchmark_20260106_064817.json +170 -0
- package/tools/agents/benchmarks/results/benchmark_20260106_064817.md +51 -0
- package/tools/agents/config/chat_template.jinja +172 -0
- package/tools/agents/docker-compose.qdrant.yml +24 -0
- package/tools/agents/migrations/apply.py +256 -0
- package/tools/agents/scripts/fix_qwen_chat_template.py +314 -0
- package/tools/agents/scripts/init_qdrant.py +151 -0
- package/tools/agents/scripts/memory_migration.py +518 -0
- package/tools/agents/scripts/migrate_memory_to_qdrant.py +113 -0
- package/tools/agents/scripts/query_memory.py +189 -0
- package/tools/agents/scripts/qwen_tool_call_test.py +419 -0
- package/tools/agents/scripts/qwen_tool_call_wrapper.py +517 -0
- package/tools/agents/scripts/start-services.sh +96 -0
- package/tools/agents/tests/test_uap_compliance.py +257 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Architecture Guide Template
|
|
2
|
+
|
|
3
|
+
**Version**: {{VERSION}}
|
|
4
|
+
**Branch**: {{DEFAULT_BRANCH}}
|
|
5
|
+
**Last Updated**: {{STRUCTURE_DATE}}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Cluster Topology
|
|
10
|
+
|
|
11
|
+
{{#if HAS_MULTI_CLUSTER}}
|
|
12
|
+
This project operates multiple dedicated clusters - **one concern per cluster**.
|
|
13
|
+
|
|
14
|
+
| Cluster | Context | Purpose | Services |
|
|
15
|
+
|---------|---------|---------|----------|
|
|
16
|
+
{{#each CLUSTERS}}
|
|
17
|
+
| **{{name}}** | `{{context}}` | {{purpose}} | {{services}} |
|
|
18
|
+
{{/each}}
|
|
19
|
+
{{else}}
|
|
20
|
+
Single cluster deployment.
|
|
21
|
+
|
|
22
|
+
### Cluster Commands
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
kubectl config use-context {{MAIN_CLUSTER_CONTEXT}}
|
|
26
|
+
```
|
|
27
|
+
{{/if}}
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Cross-Cluster Communication Rules
|
|
32
|
+
|
|
33
|
+
{{#if HAS_MULTI_CLUSTER}}
|
|
34
|
+
**CRITICAL**: Always use public HTTPS URLs for cross-cluster communication.
|
|
35
|
+
|
|
36
|
+
### Do's and Don'ts
|
|
37
|
+
|
|
38
|
+
| ✅ DO | ❌ DON'T |
|
|
39
|
+
|-------|----------|
|
|
40
|
+
| Use public HTTPS URLs | Use cluster-internal DNS across clusters |
|
|
41
|
+
| Use service accounts for auth | Use internal IPs for cross-cluster |
|
|
42
|
+
|
|
43
|
+
### Whitelisted URLs
|
|
44
|
+
{{#each WHITELISTED_URLS}}
|
|
45
|
+
- `{{this}}`
|
|
46
|
+
{{/each}}
|
|
47
|
+
{{/if}}
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Technology Stack
|
|
52
|
+
|
|
53
|
+
| Layer | Technology | Version |
|
|
54
|
+
|-------|------------|---------|
|
|
55
|
+
{{#each TECH_STACK}}
|
|
56
|
+
| **{{layer}}** | {{technology}} | {{version}} |
|
|
57
|
+
{{/each}}
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## High Availability
|
|
62
|
+
|
|
63
|
+
| Component | Configuration |
|
|
64
|
+
|-----------|---------------|
|
|
65
|
+
{{#each HA_CONFIG}}
|
|
66
|
+
| **{{component}}** | {{configuration}} |
|
|
67
|
+
{{/each}}
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Infrastructure as Code Policy
|
|
72
|
+
|
|
73
|
+
### Two-Phase Infrastructure Workflow
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
PHASE 1: LOCAL PROOF (ALLOWED - NO SECRETS)
|
|
77
|
+
- Read-only operations
|
|
78
|
+
- terraform plan (via pipeline for secrets)
|
|
79
|
+
|
|
80
|
+
PHASE 2: IaC PARITY (MANDATORY - VIA PIPELINE)
|
|
81
|
+
- Translate manual changes to Terraform/K8s YAML
|
|
82
|
+
- Deploy via pipeline
|
|
83
|
+
- Delete manual/ephemeral resources
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Secrets
|
|
87
|
+
|
|
88
|
+
**ALL secrets are stored in GitHub Actions secrets.** Operations requiring secrets MUST use pipelines.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Service URLs
|
|
93
|
+
|
|
94
|
+
{{#each SERVICE_URLS}}
|
|
95
|
+
| {{name}} | {{url}} |
|
|
96
|
+
{{/each}}
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## See Also
|
|
101
|
+
|
|
102
|
+
- `docs/ARCHITECTURE-OVERVIEW.md` - Detailed architecture
|
|
103
|
+
- `.factory/compliance_rules.yaml` - Architecture constraints (if applicable)
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Coding Standards Template
|
|
2
|
+
|
|
3
|
+
**Version**: 1.0
|
|
4
|
+
**Last Updated**: {{STRUCTURE_DATE}}
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Core Principles
|
|
9
|
+
|
|
10
|
+
1. **State assumptions** before writing code
|
|
11
|
+
2. **Verify correctness** -- do not claim it
|
|
12
|
+
3. **Handle error paths**, not just the happy path
|
|
13
|
+
4. **Do not import complexity** you do not need
|
|
14
|
+
5. **Produce code you would want to debug at 3am**
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Pre-Commit Checklist
|
|
19
|
+
|
|
20
|
+
- [ ] Functions <= 30 lines
|
|
21
|
+
- [ ] Self-documenting names
|
|
22
|
+
- [ ] Error paths handled explicitly
|
|
23
|
+
- [ ] No debug prints or commented-out code
|
|
24
|
+
- [ ] Consistent with surrounding code style
|
|
25
|
+
- [ ] No hardcoded values that should be constants
|
|
26
|
+
- [ ] Imports are minimal
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
{{#if HAS_MULTI_TENANCY}}
|
|
31
|
+
## Multi-Tenancy
|
|
32
|
+
|
|
33
|
+
All database queries must include organization scope.
|
|
34
|
+
|
|
35
|
+
### Correct Patterns
|
|
36
|
+
|
|
37
|
+
```sql
|
|
38
|
+
-- ✅ Organization-scoped query
|
|
39
|
+
SELECT * FROM products WHERE owner_id = $1;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Incorrect Patterns
|
|
43
|
+
|
|
44
|
+
```sql
|
|
45
|
+
-- ❌ Cross-tenant access
|
|
46
|
+
SELECT * FROM products;
|
|
47
|
+
```
|
|
48
|
+
{{/if}}
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Security
|
|
53
|
+
|
|
54
|
+
### Secrets
|
|
55
|
+
|
|
56
|
+
Never hardcode secrets. Use environment variables.
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// ✅ Correct
|
|
60
|
+
const dbPassword = process.env.DB_PASSWORD;
|
|
61
|
+
|
|
62
|
+
// ❌ Wrong
|
|
63
|
+
const dbPassword = "hardcoded_password";
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Input Validation
|
|
67
|
+
|
|
68
|
+
Always validate and sanitize inputs.
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// ✅ Parameterized queries
|
|
72
|
+
db.query('SELECT * FROM users WHERE id = $1', [userId]);
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Error Handling
|
|
78
|
+
|
|
79
|
+
Log with context for debugging.
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// ✅ Correct
|
|
83
|
+
logger.error('Failed to fetch', {
|
|
84
|
+
error: error.message,
|
|
85
|
+
correlationId: req.id
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Testing
|
|
92
|
+
|
|
93
|
+
### Running Tests
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
{{TEST_COMMAND}}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Code Quality Tools
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
{{LINT_COMMAND}}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Naming Conventions
|
|
110
|
+
|
|
111
|
+
| Type | Convention | Example |
|
|
112
|
+
|------|------------|---------|
|
|
113
|
+
| Variables | camelCase | `userName` |
|
|
114
|
+
| Constants | SCREAMING_SNAKE_CASE | `MAX_RETRY_COUNT` |
|
|
115
|
+
| Functions | camelCase | `getUserById` |
|
|
116
|
+
| Classes | PascalCase | `UserService` |
|
|
117
|
+
| Files | kebab-case | `user-service.ts` |
|
|
118
|
+
| Database | snake_case | `user_accounts` |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## See Also
|
|
123
|
+
|
|
124
|
+
- `CLAUDE_WORKFLOWS.md` - Task workflows and testing
|
|
125
|
+
- `.factory/skills/code-reviewer/` - Code review checklists (if applicable)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Droids and Skills Guide Template
|
|
2
|
+
|
|
3
|
+
**Version**: 1.0
|
|
4
|
+
**Last Updated**: {{STRUCTURE_DATE}}
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Available Droids
|
|
9
|
+
|
|
10
|
+
Droids are specialized AI agents for specific tasks.
|
|
11
|
+
|
|
12
|
+
### Language Specialists
|
|
13
|
+
|
|
14
|
+
| Droid | Purpose |
|
|
15
|
+
|-------|---------|
|
|
16
|
+
| `cpp-pro` | C++ development, RAII, STL, templates |
|
|
17
|
+
| `python-pro` | Python, async/await, decorators |
|
|
18
|
+
| `javascript-pro` | JavaScript/TypeScript, ES6+, async |
|
|
19
|
+
|
|
20
|
+
### Review Droids
|
|
21
|
+
|
|
22
|
+
| Droid | Purpose | Blocks PR |
|
|
23
|
+
|-------|---------|-----------|
|
|
24
|
+
| `security-code-reviewer` | OWASP, secrets, injection | CRITICAL/HIGH |
|
|
25
|
+
| `code-quality-reviewer` | Naming, complexity, style | CRITICAL only |
|
|
26
|
+
| `performance-reviewer` | Algorithms, N+1, caching | Advisory |
|
|
27
|
+
| `test-coverage-reviewer` | Test gaps, brittle tests | Advisory |
|
|
28
|
+
|
|
29
|
+
### Utility Droids
|
|
30
|
+
|
|
31
|
+
| Droid | Purpose |
|
|
32
|
+
|-------|---------|
|
|
33
|
+
| `worktree-manager` | Git worktree lifecycle, PR creation |
|
|
34
|
+
| `git-summarizer` | Repository context for reviewers |
|
|
35
|
+
| `release-notes-writer` | Generate release notes from commits |
|
|
36
|
+
| `project-analyzer` | Extract project metadata |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Available Skills
|
|
41
|
+
|
|
42
|
+
Skills provide domain-specific guidance.
|
|
43
|
+
|
|
44
|
+
{{#each SKILLS}}
|
|
45
|
+
| `{{name}}` | {{purpose}} |
|
|
46
|
+
{{/each}}
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Agent Routing
|
|
51
|
+
|
|
52
|
+
| Task Type | Route To |
|
|
53
|
+
|-----------|----------|
|
|
54
|
+
| Security review | `security-code-reviewer` |
|
|
55
|
+
| Performance analysis | `performance-reviewer` |
|
|
56
|
+
| Code quality | `code-quality-reviewer` |
|
|
57
|
+
| C++ code | `cpp-pro` |
|
|
58
|
+
| Python code | `python-pro` |
|
|
59
|
+
| JavaScript/TypeScript | `javascript-pro` |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Parallel Execution
|
|
64
|
+
|
|
65
|
+
When safe, run independent droids in parallel:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Before PR - run all reviewers
|
|
69
|
+
Task(subagent_type: "security-code-reviewer", prompt: "Audit: <files>")
|
|
70
|
+
Task(subagent_type: "code-quality-reviewer", prompt: "Review: <files>")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Multi-Agent Coordination
|
|
76
|
+
|
|
77
|
+
**Skip for single-agent sessions.** Only activate when multiple agents work concurrently.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Check for overlaps
|
|
81
|
+
uap agent overlaps --resource "<files-or-directories>"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
| Risk Level | Action |
|
|
85
|
+
|------------|--------|
|
|
86
|
+
| `none` | Proceed immediately |
|
|
87
|
+
| `low` | Proceed, note merge order |
|
|
88
|
+
| `medium` | Announce, coordinate sections |
|
|
89
|
+
| `high`/`critical` | Wait or split work |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Invoking Droids
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Via Task tool
|
|
97
|
+
Task(subagent_type: "python-pro", prompt: "Refactor this code: <code>")
|
|
98
|
+
|
|
99
|
+
# Via Skill tool
|
|
100
|
+
Skill(skill: "openobserve-expert")
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## See Also
|
|
106
|
+
|
|
107
|
+
- `.factory/droids/` - Droid definitions
|
|
108
|
+
- `.factory/skills/` - Skill definitions
|
|
109
|
+
- `CLAUDE_WORKFLOWS.md` - Review protocols
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Memory System Guide Template
|
|
2
|
+
|
|
3
|
+
**Version**: 1.0
|
|
4
|
+
**Last Updated**: {{STRUCTURE_DATE}}
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Memory Layers
|
|
9
|
+
|
|
10
|
+
| Layer | Storage | Capacity | Latency |
|
|
11
|
+
|-------|---------|----------|---------|
|
|
12
|
+
| L1 Working | SQLite `memories` | {{SHORT_TERM_LIMIT}} max | <1ms |
|
|
13
|
+
| L2 Session | SQLite `session_memories` | Current session | <5ms |
|
|
14
|
+
| L3 Semantic | {{LONG_TERM_BACKEND}} | Unlimited | ~50ms |
|
|
15
|
+
| L4 Knowledge | SQLite `entities/rels` | Graph | <20ms |
|
|
16
|
+
|
|
17
|
+
**Database**: `./{{MEMORY_DB_PATH}}`
|
|
18
|
+
**Vector DB**: {{LONG_TERM_BACKEND}} at `{{LONG_TERM_ENDPOINT}}`
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Working Memory (L1)
|
|
23
|
+
|
|
24
|
+
Quick actions stored directly in SQLite.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Store action
|
|
28
|
+
sqlite3 ./{{MEMORY_DB_PATH}} "INSERT INTO memories (timestamp,type,content) VALUES (datetime('now'),'action','...');"
|
|
29
|
+
|
|
30
|
+
# Query recent
|
|
31
|
+
sqlite3 ./{{MEMORY_DB_PATH}} "SELECT * FROM memories ORDER BY id DESC LIMIT 10;"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Session Memory (L2)
|
|
37
|
+
|
|
38
|
+
Session-specific context for current task.
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Store decision
|
|
42
|
+
sqlite3 ./{{MEMORY_DB_PATH}} "INSERT INTO session_memories (session_id,timestamp,type,content,importance) VALUES ('current',datetime('now'),'decision','...',7);"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Semantic Memory (L3)
|
|
48
|
+
|
|
49
|
+
Long-term lessons stored in Qdrant vector database.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Store lesson
|
|
53
|
+
{{MEMORY_STORE_CMD}} lesson "..." --tags t1,t2 --importance 8
|
|
54
|
+
|
|
55
|
+
# Query relevant lessons
|
|
56
|
+
{{MEMORY_QUERY_CMD}} "security best practices"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Pattern RAG
|
|
62
|
+
|
|
63
|
+
Patterns are retrieved dynamically from the `{{PATTERN_RAG_COLLECTION}}` collection.
|
|
64
|
+
|
|
65
|
+
Top-2 relevant patterns are injected per task (score >= {{PATTERN_RAG_THRESHOLD}}).
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Query patterns
|
|
69
|
+
{{PATTERN_RAG_QUERY_CMD}} "task description"
|
|
70
|
+
|
|
71
|
+
# Re-index patterns
|
|
72
|
+
{{PATTERN_RAG_INDEX_CMD}}
|
|
73
|
+
|
|
74
|
+
# Check status
|
|
75
|
+
uap patterns status
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Pattern Files
|
|
81
|
+
|
|
82
|
+
Patterns are defined in `.factory/patterns/`:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
.factory/patterns/
|
|
86
|
+
├── P12_output_existence.md
|
|
87
|
+
├── P13_iterative_refinement.md
|
|
88
|
+
├── ...
|
|
89
|
+
├── IaC-Parity.md
|
|
90
|
+
└── index.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
To add a new pattern:
|
|
94
|
+
1. Create `P37_new_pattern.md` in `.factory/patterns/`
|
|
95
|
+
2. Add entry to `index.json`
|
|
96
|
+
3. Run `python agents/scripts/index_patterns.py`
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Reinforcement Learning
|
|
101
|
+
|
|
102
|
+
Pattern effectiveness is tracked for self-improvement.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# View pattern effectiveness
|
|
106
|
+
sqlite3 ./agents/data/memory/reinforcement.db "SELECT * FROM v_pattern_effectiveness;"
|
|
107
|
+
|
|
108
|
+
# View recent outcomes
|
|
109
|
+
sqlite3 ./agents/data/memory/reinforcement.db "SELECT * FROM v_recent_outcomes;"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Qdrant Setup
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Start Qdrant
|
|
118
|
+
docker run -p 6333:6333 qdrant/qdrant
|
|
119
|
+
|
|
120
|
+
# Or with persistence
|
|
121
|
+
docker run -p 6333:6333 -v $(pwd)/qdrant_data:/qdrant/storage qdrant/qdrant
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## See Also
|
|
127
|
+
|
|
128
|
+
- `.factory/patterns/` - Pattern definitions
|
|
129
|
+
- `agents/scripts/index_patterns.py` - Pattern indexing
|
|
130
|
+
- `agents/scripts/query_patterns.py` - Pattern query
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Workflows Guide Template
|
|
2
|
+
|
|
3
|
+
**Version**: 1.0
|
|
4
|
+
**Last Updated**: {{STRUCTURE_DATE}}
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Session Start
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
uap task ready
|
|
12
|
+
sqlite3 ./{{MEMORY_DB_PATH}} "SELECT * FROM memories ORDER BY id DESC LIMIT 10;"
|
|
13
|
+
uap agent status
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Decision Loop
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
1. CLASSIFY -> complexity? backup? tools?
|
|
22
|
+
2. PROTECT -> cp file file.bak (configs, DBs)
|
|
23
|
+
3. MEMORY -> query context + past failures
|
|
24
|
+
4. WORK -> implement (ALWAYS use worktree)
|
|
25
|
+
5. REVIEW -> self-review diff
|
|
26
|
+
6. TEST -> completion gates pass
|
|
27
|
+
7. LEARN -> store outcome
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Worktree Workflow (MANDATORY)
|
|
33
|
+
|
|
34
|
+
**ALL file changes MUST use a worktree.** No exceptions.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
{{WORKTREE_CREATE_CMD}} <slug>
|
|
38
|
+
cd {{WORKTREE_DIR}}/NNN-<slug>/
|
|
39
|
+
git add -A && git commit -m "type: description"
|
|
40
|
+
{{WORKTREE_PR_CMD}} <id>
|
|
41
|
+
# After merge:
|
|
42
|
+
{{WORKTREE_CLEANUP_CMD}} <id> # MANDATORY
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Testing Requirements
|
|
48
|
+
|
|
49
|
+
1. Create worktree
|
|
50
|
+
2. Update/create tests
|
|
51
|
+
3. Run `{{TEST_COMMAND}}`
|
|
52
|
+
4. Run linting: `{{LINT_COMMAND}}`
|
|
53
|
+
5. Create PR
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Completion Gates
|
|
58
|
+
|
|
59
|
+
**CANNOT say "done" until ALL gates pass.**
|
|
60
|
+
|
|
61
|
+
### GATE 1: Output Existence
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
for f in $EXPECTED_OUTPUTS; do
|
|
65
|
+
[ -f "$f" ] && echo "ok $f" || echo "MISSING: $f"
|
|
66
|
+
done
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### GATE 2: Constraint Compliance
|
|
70
|
+
|
|
71
|
+
Extract ALL constraints from task:
|
|
72
|
+
- "exactly", "only", "must be", "no more than"
|
|
73
|
+
- Verify EACH constraint
|
|
74
|
+
|
|
75
|
+
### GATE 3: Tests Pass
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
{{TEST_COMMAND}}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
If < 100%: iterate (fix specific failure, re-run).
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Completion Checklist
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
☐ Tests pass
|
|
89
|
+
☐ Lint pass
|
|
90
|
+
☐ Worktree used (MANDATORY)
|
|
91
|
+
☐ Worktree cleaned up after PR merge (MANDATORY)
|
|
92
|
+
☐ Self-review completed
|
|
93
|
+
☐ Memory updated
|
|
94
|
+
☐ PR created
|
|
95
|
+
☐ Reviews passed
|
|
96
|
+
☐ No secrets in code
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Parallel Review Protocol
|
|
102
|
+
|
|
103
|
+
**Before ANY commit/PR, invoke quality droids in PARALLEL:**
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
Task(subagent_type: "code-quality-reviewer", prompt: "Review: <files>")
|
|
107
|
+
Task(subagent_type: "security-code-reviewer", prompt: "Audit: <files>")
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Automatic Triggers
|
|
113
|
+
|
|
114
|
+
| Pattern | Action |
|
|
115
|
+
|---------|--------|
|
|
116
|
+
| work request | `uap task create --type task` |
|
|
117
|
+
| bug report | `uap task create --type bug` |
|
|
118
|
+
| feature request | `uap task create --type feature` |
|
|
119
|
+
| ANY file change | **create worktree (MANDATORY)** |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Completion Protocol
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
MERGE -> CLEANUP WORKTREE -> DEPLOY -> MONITOR -> FIX (iterate until 100%)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Never "done" until:** PR merged + worktree cleaned up + deployed + verified working
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## See Also
|
|
134
|
+
|
|
135
|
+
- `CLAUDE_CODING.md` - Coding standards
|
|
136
|
+
- `.factory/droids/worktree-manager.md` - Worktree automation (if applicable)
|