claude-flow-novice 2.9.1 → 2.10.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/.claude/agents/cfn-dev-team/CLAUDE.md +1086 -0
- package/.claude/agents/cfn-dev-team/README.md +116 -0
- package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
- package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
- package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
- package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
- package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
- package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
- package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
- package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
- package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
- package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
- package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
- package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
- package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
- package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
- package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
- package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
- package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
- package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
- package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
- package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
- package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
- package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
- package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
- package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
- package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
- package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
- package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
- package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
- package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
- package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
- package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
- package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
- package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
- package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
- package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
- package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
- package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
- package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
- package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
- package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
- package/.claude/commands/cfn/cfn-loop.md +168 -7
- package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
- package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
- package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
- package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
- package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
- package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
- package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
- package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
- package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
- package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
- package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
- package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
- package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
- package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
- package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
- package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
- package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
- package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
- package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
- package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
- package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
- package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
- package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
- package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
- package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
- package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
- package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
- package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
- package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
- package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
- package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
- package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
- package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
- package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
- package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
- package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
- package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
- package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
- package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
- package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
- package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
- package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
- package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
- package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
- package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
- package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
- package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
- package/.claude/skills/cfn-config-management/SKILL.md +34 -0
- package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
- package/.claude/skills/cfn-config-management/config.json +32 -0
- package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
- package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
- package/.claude/skills/cfn-event-bus/config.json +111 -0
- package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
- package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
- package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
- package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
- package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
- package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
- package/.claude/skills/cfn-fleet-manager/config.json +60 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
- package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
- package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
- package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
- package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
- package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
- package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
- package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
- package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
- package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
- package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
- package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
- package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +142 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +271 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
- package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
- package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +884 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +840 -0
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
- package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
- package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +353 -0
- package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
- package/.claude/skills/cfn-loop-validation/config.json +161 -0
- package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
- package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
- package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
- package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
- package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
- package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
- package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
- package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
- package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
- package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/config.json +61 -0
- package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
- package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
- package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
- package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
- package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
- package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
- package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
- package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
- package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
- package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
- package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
- package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
- package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
- package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
- package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
- package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
- package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
- package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
- package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
- package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
- package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
- package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
- package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
- package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
- package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
- package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
- package/README.md +51 -2
- package/dist/ace/ace-reflector.js +109 -10
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/cli/agent-executor.js +1 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/package.json +43 -7
- package/readme/README.md +15 -4
- package/scripts/init-project.js +39 -2
- package/scripts/run-marketing-tests.sh +43 -0
- package/scripts/update_paths.sh +47 -0
- package/tools/install-lizard.sh +37 -0
- package/tools/simple-complexity.sh +44 -0
- package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
- package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
- package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
- /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
- /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# CFN Loop Orchestration Skill
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- **Skill ID:** cfn-loop-orchestration
|
|
5
|
+
- **Version:** 1.0.0
|
|
6
|
+
- **Category:** Workflow Orchestration
|
|
7
|
+
- **Dependencies:** redis-coordination, product-owner-decision, agent-output-processing
|
|
8
|
+
- **Maturity:** Production
|
|
9
|
+
- **Last Updated:** 2025-10-23
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
Orchestrates the Complete Fail Never (CFN) Loop workflow, managing the three-loop structure:
|
|
13
|
+
- Loop 3 (Primary Swarm - Implementation)
|
|
14
|
+
- Loop 2 (Consensus Validators - Review)
|
|
15
|
+
- Product Owner Decision (Strategic Approval)
|
|
16
|
+
|
|
17
|
+
## Responsibilities
|
|
18
|
+
1. Coordinate multi-agent CFN Loop execution
|
|
19
|
+
2. Manage gate checks and consensus validation
|
|
20
|
+
3. Handle iteration cycles with feedback injection
|
|
21
|
+
4. Interface with Redis Coordination for agent synchronization
|
|
22
|
+
5. Execute Product Owner decision flow
|
|
23
|
+
6. Enforce dependency ordering (Loop 3 → Loop 2 → PO)
|
|
24
|
+
|
|
25
|
+
## Interface
|
|
26
|
+
|
|
27
|
+
### Main Entry Point
|
|
28
|
+
```bash
|
|
29
|
+
./.claude/skills/cfn-loop-orchestration/orchestrate.sh \
|
|
30
|
+
--task-id <unique-id> \
|
|
31
|
+
--mode <mvp|standard|enterprise> \
|
|
32
|
+
--loop3-agents <agent1,agent2,...> \
|
|
33
|
+
--loop2-agents <agent1,agent2,...> \
|
|
34
|
+
--product-owner <agent-id> \
|
|
35
|
+
[--max-iterations <n>] \
|
|
36
|
+
[--min-quorum-loop3 <n|n%|0.n>] \
|
|
37
|
+
[--min-quorum-loop2 <n|n%|0.n>] \
|
|
38
|
+
[--epic-context <json>] \
|
|
39
|
+
[--phase-context <json>] \
|
|
40
|
+
[--success-criteria <json>] \
|
|
41
|
+
[--expected-files <file1,file2,...>] \
|
|
42
|
+
[--phase-id <phase-identifier>]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Parameters
|
|
46
|
+
- `task-id`: Unique identifier for this CFN Loop execution
|
|
47
|
+
- `mode`: Workflow mode (mvp, standard, enterprise) - determines thresholds
|
|
48
|
+
- `loop3-agents`: Comma-separated list of implementer agent IDs
|
|
49
|
+
- `loop2-agents`: Comma-separated list of validator agent IDs
|
|
50
|
+
- `product-owner`: Agent ID for strategic decision-making
|
|
51
|
+
- `max-iterations`: Maximum iteration cycles (default: 10)
|
|
52
|
+
- `min-quorum-loop3`: Minimum Loop 3 agents required (default: 0.66)
|
|
53
|
+
- `min-quorum-loop2`: Minimum Loop 2 agents required (default: 0.66)
|
|
54
|
+
- `epic-context`: JSON string with epic-level context
|
|
55
|
+
- `phase-context`: JSON string with phase-level context
|
|
56
|
+
- `success-criteria`: JSON string with acceptance criteria
|
|
57
|
+
- `expected-files`: Comma-separated list of expected deliverable files
|
|
58
|
+
- `phase-id`: Phase identifier for timeout configuration
|
|
59
|
+
|
|
60
|
+
### Return Values
|
|
61
|
+
- Exit Code 0: CFN Loop completed successfully (PROCEED decision)
|
|
62
|
+
- Exit Code 1: CFN Loop failed (ABORT decision or max iterations)
|
|
63
|
+
- Exit Code 130: User interrupt (graceful shutdown)
|
|
64
|
+
|
|
65
|
+
### Output Format (JSON)
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"status": "success|failed|aborted",
|
|
69
|
+
"iterations_completed": 2,
|
|
70
|
+
"final_decision": "PROCEED|ITERATE|ABORT",
|
|
71
|
+
"loop3_confidence": 0.92,
|
|
72
|
+
"loop2_consensus": 0.94,
|
|
73
|
+
"deliverables_verified": true,
|
|
74
|
+
"execution_time_seconds": 1847
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Helper Scripts
|
|
79
|
+
|
|
80
|
+
### 1. gate-check.sh
|
|
81
|
+
Validates Loop 3 self-assessment against gate threshold.
|
|
82
|
+
|
|
83
|
+
**Usage:**
|
|
84
|
+
```bash
|
|
85
|
+
./.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh \
|
|
86
|
+
--task-id <id> \
|
|
87
|
+
--agents <agent1,agent2,...> \
|
|
88
|
+
--threshold <0.0-1.0> \
|
|
89
|
+
--min-quorum <n|n%|0.n>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Returns:**
|
|
93
|
+
- Exit 0: Gate passed (broadcast signal to Loop 2)
|
|
94
|
+
- Exit 1: Gate failed (prepare Loop 3 iteration)
|
|
95
|
+
|
|
96
|
+
### 2. consensus.sh
|
|
97
|
+
Collects and validates Loop 2 consensus scores.
|
|
98
|
+
|
|
99
|
+
**Usage:**
|
|
100
|
+
```bash
|
|
101
|
+
./.claude/skills/cfn-loop-orchestration/helpers/consensus.sh \
|
|
102
|
+
--task-id <id> \
|
|
103
|
+
--agents <agent1,agent2,...> \
|
|
104
|
+
--threshold <0.0-1.0> \
|
|
105
|
+
--min-quorum <n|n%|0.n>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Returns:**
|
|
109
|
+
- Exit 0: Consensus reached
|
|
110
|
+
- Exit 1: Consensus failed
|
|
111
|
+
|
|
112
|
+
### 3. iteration-manager.sh
|
|
113
|
+
Manages iteration cycles and feedback injection.
|
|
114
|
+
|
|
115
|
+
**Usage:**
|
|
116
|
+
```bash
|
|
117
|
+
./.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh \
|
|
118
|
+
--task-id <id> \
|
|
119
|
+
--iteration <n> \
|
|
120
|
+
--agents <agent1,agent2,...> \
|
|
121
|
+
--feedback-source <redis-key>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Returns:**
|
|
125
|
+
- Exit 0: Agents awakened for next iteration
|
|
126
|
+
- Exit 1: Iteration limit exceeded
|
|
127
|
+
|
|
128
|
+
### 4. deliverable-verifier.sh
|
|
129
|
+
Verifies expected deliverables were created.
|
|
130
|
+
|
|
131
|
+
**Usage:**
|
|
132
|
+
```bash
|
|
133
|
+
./.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh \
|
|
134
|
+
--expected-files <file1,file2,...> \
|
|
135
|
+
--task-type <keyword-detection>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Returns:**
|
|
139
|
+
- Exit 0: Deliverables verified
|
|
140
|
+
- Exit 1: Missing deliverables (forced iteration)
|
|
141
|
+
|
|
142
|
+
### 5. timeout-calculator.sh
|
|
143
|
+
Calculates phase-specific timeouts.
|
|
144
|
+
|
|
145
|
+
**Usage:**
|
|
146
|
+
```bash
|
|
147
|
+
./.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh \
|
|
148
|
+
--phase-id <phase-identifier>
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Returns:**
|
|
152
|
+
- Timeout value in seconds (stdout)
|
|
153
|
+
|
|
154
|
+
## CFN Loop Flow
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
1. Initialize Swarm Context (Redis)
|
|
158
|
+
↓
|
|
159
|
+
2. Spawn Loop 3 Agents (CLI)
|
|
160
|
+
↓
|
|
161
|
+
3. Collect Loop 3 Confidence Scores
|
|
162
|
+
↓
|
|
163
|
+
4. Gate Check (helpers/gate-check.sh)
|
|
164
|
+
├─ PASS → Signal Loop 2 to start
|
|
165
|
+
└─ FAIL → Wake Loop 3 for iteration N+1 (goto step 2)
|
|
166
|
+
↓
|
|
167
|
+
5. Loop 2 Validates Loop 3 Work
|
|
168
|
+
↓
|
|
169
|
+
6. Collect Loop 2 Consensus Scores
|
|
170
|
+
↓
|
|
171
|
+
7. Verify Deliverables (helpers/deliverable-verifier.sh)
|
|
172
|
+
↓
|
|
173
|
+
8. Spawn Product Owner for Decision
|
|
174
|
+
↓
|
|
175
|
+
9. Parse Product Owner Decision
|
|
176
|
+
├─ PROCEED → Exit success
|
|
177
|
+
├─ ITERATE → Wake all agents (goto step 2)
|
|
178
|
+
└─ ABORT → Exit failure
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Redis Coordination Interface
|
|
182
|
+
|
|
183
|
+
This skill consumes the following Redis Coordination primitives:
|
|
184
|
+
|
|
185
|
+
### Context Storage
|
|
186
|
+
```bash
|
|
187
|
+
./.claude/skills/redis-coordination/invoke-waiting-mode.sh report \
|
|
188
|
+
--task-id "$TASK_ID" \
|
|
189
|
+
--agent-id "$AGENT_ID" \
|
|
190
|
+
--confidence <0.0-1.0> \
|
|
191
|
+
--iteration <n>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Signal Broadcasting
|
|
195
|
+
```bash
|
|
196
|
+
redis-cli lpush "swarm:${TASK_ID}:gate-passed" "1"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Agent Waiting/Waking
|
|
200
|
+
```bash
|
|
201
|
+
./.claude/skills/redis-coordination/invoke-waiting-mode.sh wake \
|
|
202
|
+
--task-id "$TASK_ID" \
|
|
203
|
+
--agent-id "$AGENT_ID" \
|
|
204
|
+
--reason <reason> \
|
|
205
|
+
--iteration <n> \
|
|
206
|
+
--feedback <feedback-string>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Result Collection
|
|
210
|
+
```bash
|
|
211
|
+
./.claude/skills/redis-coordination/invoke-waiting-mode.sh collect \
|
|
212
|
+
--task-id "$TASK_ID" \
|
|
213
|
+
--agent-ids <comma-separated>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Mode-Specific Thresholds
|
|
217
|
+
|
|
218
|
+
| Mode | Gate Threshold | Consensus Threshold | Max Iterations | Validators |
|
|
219
|
+
|------|----------------|---------------------|----------------|------------|
|
|
220
|
+
| MVP | 0.70 | 0.80 | 5 | 2 |
|
|
221
|
+
| Standard | 0.75 | 0.90 | 10 | 3-4 |
|
|
222
|
+
| Enterprise | 0.75 | 0.95 | 15 | 5 |
|
|
223
|
+
|
|
224
|
+
## Error Handling
|
|
225
|
+
|
|
226
|
+
### Critical Failures
|
|
227
|
+
- Redis unavailable: Exit immediately with error
|
|
228
|
+
- Agent spawn failure: Retry with exponential backoff
|
|
229
|
+
- Timeout exceeded: Log state, attempt graceful shutdown
|
|
230
|
+
|
|
231
|
+
### Recoverable Failures
|
|
232
|
+
- Gate check failure: Iterate Loop 3
|
|
233
|
+
- Consensus failure: Iterate all agents
|
|
234
|
+
- Missing deliverables: Force iteration with explicit feedback
|
|
235
|
+
|
|
236
|
+
## Configuration
|
|
237
|
+
|
|
238
|
+
### Environment Variables
|
|
239
|
+
- `REDIS_HOST`: Redis server host (default: localhost)
|
|
240
|
+
- `REDIS_PORT`: Redis server port (default: 6379)
|
|
241
|
+
- `CFN_DEBUG`: Enable debug logging (default: 0)
|
|
242
|
+
|
|
243
|
+
### Redis Keys Used
|
|
244
|
+
- `swarm:{task-id}:epic-context`: Epic-level context
|
|
245
|
+
- `swarm:{task-id}:phase-context`: Phase-level context
|
|
246
|
+
- `swarm:{task-id}:success-criteria`: Acceptance criteria
|
|
247
|
+
- `swarm:{task-id}:agent:{agent-id}:confidence`: Agent confidence score
|
|
248
|
+
- `swarm:{task-id}:agent:{agent-id}:feedback`: Agent-specific feedback
|
|
249
|
+
- `swarm:{task-id}:gate-passed`: Gate pass signal for Loop 2
|
|
250
|
+
- `swarm:{task-id}:{agent-id}:done`: Agent completion signal
|
|
251
|
+
|
|
252
|
+
## Testing
|
|
253
|
+
|
|
254
|
+
Run comprehensive test suite:
|
|
255
|
+
```bash
|
|
256
|
+
./.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Test scenarios:
|
|
260
|
+
1. Gate pass → Consensus pass → PROCEED
|
|
261
|
+
2. Gate fail → Loop 3 iteration
|
|
262
|
+
3. Consensus fail → Full iteration
|
|
263
|
+
4. Missing deliverables → Forced iteration
|
|
264
|
+
5. Max iterations → ABORT
|
|
265
|
+
6. User interrupt → Graceful shutdown
|
|
266
|
+
|
|
267
|
+
## Migration Notes
|
|
268
|
+
|
|
269
|
+
This skill replaces the monolithic `.claude/skills/redis-coordination/orchestrate-cfn-loop.sh` by:
|
|
270
|
+
1. Extracting CFN-specific workflow logic
|
|
271
|
+
2. Delegating Redis operations to redis-coordination skill
|
|
272
|
+
3. Modularizing helper functions into standalone scripts
|
|
273
|
+
4. Simplifying testing and maintenance
|
|
274
|
+
|
|
275
|
+
**Backward Compatibility:**
|
|
276
|
+
Existing slash commands will be updated to call this skill instead of the monolithic orchestrator.
|
|
277
|
+
|
|
278
|
+
## Performance Characteristics
|
|
279
|
+
|
|
280
|
+
- Average execution time: 15-45 minutes (phase-dependent)
|
|
281
|
+
- Zero-token waiting between iterations (Redis BLPOP)
|
|
282
|
+
- Agent spawn time: 5-15 seconds per agent
|
|
283
|
+
- Context storage/retrieval: <100ms per operation
|
|
284
|
+
|
|
285
|
+
## Success Criteria
|
|
286
|
+
|
|
287
|
+
This skill is considered successful when:
|
|
288
|
+
1. All existing CFN Loop slash commands work without modification
|
|
289
|
+
2. Test suite achieves 100% pass rate
|
|
290
|
+
3. No regression in iteration management or consensus collection
|
|
291
|
+
4. Clear separation from Redis Coordination primitives
|
|
292
|
+
5. Helper scripts are reusable across different workflow types
|
|
293
|
+
|
|
294
|
+
## Confidence Score: 0.92
|
|
295
|
+
|
|
296
|
+
- Architecture: 0.95 (clear separation, modular design)
|
|
297
|
+
- Implementation Risk: 0.88 (complex logic extraction)
|
|
298
|
+
- Testing Coverage: 0.93 (comprehensive test scenarios)
|
|
299
|
+
- Backward Compatibility: 0.92 (existing workflows preserved)
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Auto-Tune Timeouts Helper
|
|
4
|
+
#
|
|
5
|
+
# Dynamically calculates optimal timeouts for CFN Loop agents based on:
|
|
6
|
+
# - Historical performance data
|
|
7
|
+
# - Agent type (implementer vs validator)
|
|
8
|
+
# - Task complexity
|
|
9
|
+
# - Current system load
|
|
10
|
+
#
|
|
11
|
+
# Usage:
|
|
12
|
+
# auto-tune-timeouts.sh --agent-type <type> --task-complexity <low|medium|high> [--history-file <file>]
|
|
13
|
+
#
|
|
14
|
+
# Returns: Recommended timeout in seconds
|
|
15
|
+
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
19
|
+
|
|
20
|
+
# Default configuration
|
|
21
|
+
DEFAULT_TIMEOUT=300
|
|
22
|
+
MIN_TIMEOUT=60
|
|
23
|
+
MAX_TIMEOUT=1800
|
|
24
|
+
HISTORY_FILE="/tmp/cfn-agent-performance-history.json"
|
|
25
|
+
|
|
26
|
+
# Baseline timeouts by agent type (seconds)
|
|
27
|
+
declare -A BASELINE_TIMEOUTS=(
|
|
28
|
+
["implementer"]=300
|
|
29
|
+
["validator"]=180
|
|
30
|
+
["coordinator"]=600
|
|
31
|
+
["product-owner"]=120
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Complexity multipliers
|
|
35
|
+
declare -A COMPLEXITY_MULTIPLIERS=(
|
|
36
|
+
["low"]=0.7
|
|
37
|
+
["medium"]=1.0
|
|
38
|
+
["high"]=1.5
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# Parse arguments
|
|
42
|
+
AGENT_TYPE=""
|
|
43
|
+
TASK_COMPLEXITY="medium"
|
|
44
|
+
CUSTOM_HISTORY_FILE=""
|
|
45
|
+
|
|
46
|
+
while [[ $# -gt 0 ]]; do
|
|
47
|
+
case $1 in
|
|
48
|
+
--agent-type)
|
|
49
|
+
AGENT_TYPE="$2"
|
|
50
|
+
shift 2
|
|
51
|
+
;;
|
|
52
|
+
--task-complexity)
|
|
53
|
+
TASK_COMPLEXITY="$2"
|
|
54
|
+
shift 2
|
|
55
|
+
;;
|
|
56
|
+
--history-file)
|
|
57
|
+
CUSTOM_HISTORY_FILE="$2"
|
|
58
|
+
shift 2
|
|
59
|
+
;;
|
|
60
|
+
--help)
|
|
61
|
+
echo "Usage: auto-tune-timeouts.sh --agent-type <type> --task-complexity <low|medium|high> [--history-file <file>]"
|
|
62
|
+
echo ""
|
|
63
|
+
echo "Agent Types: implementer, validator, coordinator, product-owner"
|
|
64
|
+
echo "Task Complexity: low, medium, high"
|
|
65
|
+
echo ""
|
|
66
|
+
echo "Returns: Recommended timeout in seconds"
|
|
67
|
+
exit 0
|
|
68
|
+
;;
|
|
69
|
+
*)
|
|
70
|
+
echo "Unknown argument: $1"
|
|
71
|
+
exit 1
|
|
72
|
+
;;
|
|
73
|
+
esac
|
|
74
|
+
done
|
|
75
|
+
|
|
76
|
+
# Validation
|
|
77
|
+
if [ -z "$AGENT_TYPE" ]; then
|
|
78
|
+
echo "Error: --agent-type is required"
|
|
79
|
+
exit 1
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
if [[ ! "${BASELINE_TIMEOUTS[$AGENT_TYPE]+isset}" ]]; then
|
|
83
|
+
echo "Error: Unknown agent type '$AGENT_TYPE'"
|
|
84
|
+
echo "Valid types: ${!BASELINE_TIMEOUTS[@]}"
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
if [[ ! "${COMPLEXITY_MULTIPLIERS[$TASK_COMPLEXITY]+isset}" ]]; then
|
|
89
|
+
echo "Error: Unknown task complexity '$TASK_COMPLEXITY'"
|
|
90
|
+
echo "Valid complexities: ${!COMPLEXITY_MULTIPLIERS[@]}"
|
|
91
|
+
exit 1
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# Use custom history file if provided
|
|
95
|
+
if [ -n "$CUSTOM_HISTORY_FILE" ]; then
|
|
96
|
+
HISTORY_FILE="$CUSTOM_HISTORY_FILE"
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# Function to get historical average execution time
|
|
100
|
+
get_historical_avg() {
|
|
101
|
+
local agent_type=$1
|
|
102
|
+
|
|
103
|
+
if [ ! -f "$HISTORY_FILE" ]; then
|
|
104
|
+
echo "$DEFAULT_TIMEOUT"
|
|
105
|
+
return
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
# Extract average execution time for this agent type
|
|
109
|
+
local avg_time=$(jq -r --arg type "$agent_type" \
|
|
110
|
+
'.history[]
|
|
111
|
+
| select(.agentType == $type)
|
|
112
|
+
| .executionTime
|
|
113
|
+
| select(. != null)' "$HISTORY_FILE" 2>/dev/null | \
|
|
114
|
+
awk '{ sum += $1; count++ } END { if (count > 0) print sum/count; else print 0 }')
|
|
115
|
+
|
|
116
|
+
if [ -z "$avg_time" ] || [ "$avg_time" = "0" ]; then
|
|
117
|
+
echo "$DEFAULT_TIMEOUT"
|
|
118
|
+
else
|
|
119
|
+
echo "$avg_time"
|
|
120
|
+
fi
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
# Function to get system load factor
|
|
124
|
+
get_load_factor() {
|
|
125
|
+
# Check if on Linux
|
|
126
|
+
if [ -f /proc/loadavg ]; then
|
|
127
|
+
local load_1min=$(cat /proc/loadavg | awk '{print $1}')
|
|
128
|
+
local cpu_count=$(nproc 2>/dev/null || echo 1)
|
|
129
|
+
|
|
130
|
+
# Calculate load factor (load per CPU)
|
|
131
|
+
local load_factor=$(echo "scale=2; $load_1min / $cpu_count" | bc)
|
|
132
|
+
|
|
133
|
+
# Return multiplier (1.0 baseline, increase if high load)
|
|
134
|
+
if (( $(echo "$load_factor > 2.0" | bc -l) )); then
|
|
135
|
+
echo "1.5" # High load, increase timeout by 50%
|
|
136
|
+
elif (( $(echo "$load_factor > 1.0" | bc -l) )); then
|
|
137
|
+
echo "1.2" # Moderate load, increase timeout by 20%
|
|
138
|
+
else
|
|
139
|
+
echo "1.0" # Normal load
|
|
140
|
+
fi
|
|
141
|
+
else
|
|
142
|
+
# Non-Linux or can't determine load
|
|
143
|
+
echo "1.0"
|
|
144
|
+
fi
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
# Function to get Redis latency factor
|
|
148
|
+
get_redis_latency_factor() {
|
|
149
|
+
# Measure Redis ping latency
|
|
150
|
+
local start_ns=$(date +%s%N)
|
|
151
|
+
redis-cli PING >/dev/null 2>&1 || return
|
|
152
|
+
local end_ns=$(date +%s%N)
|
|
153
|
+
|
|
154
|
+
local latency_ns=$((end_ns - start_ns))
|
|
155
|
+
local latency_ms=$(echo "scale=2; $latency_ns / 1000000" | bc)
|
|
156
|
+
|
|
157
|
+
# If Redis is slow, increase timeout
|
|
158
|
+
if (( $(echo "$latency_ms > 100" | bc -l) )); then
|
|
159
|
+
echo "1.3" # Very slow Redis, increase timeout by 30%
|
|
160
|
+
elif (( $(echo "$latency_ms > 50" | bc -l) )); then
|
|
161
|
+
echo "1.1" # Slow Redis, increase timeout by 10%
|
|
162
|
+
else
|
|
163
|
+
echo "1.0" # Normal Redis performance
|
|
164
|
+
fi
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
# Calculate base timeout
|
|
168
|
+
baseline_timeout=${BASELINE_TIMEOUTS[$AGENT_TYPE]}
|
|
169
|
+
|
|
170
|
+
# Get historical average
|
|
171
|
+
historical_avg=$(get_historical_avg "$AGENT_TYPE")
|
|
172
|
+
|
|
173
|
+
# If we have historical data, use weighted average
|
|
174
|
+
if [ "$historical_avg" != "$DEFAULT_TIMEOUT" ]; then
|
|
175
|
+
# 70% historical, 30% baseline
|
|
176
|
+
base_timeout=$(echo "scale=0; ($historical_avg * 0.7) + ($baseline_timeout * 0.3)" | bc)
|
|
177
|
+
else
|
|
178
|
+
base_timeout=$baseline_timeout
|
|
179
|
+
fi
|
|
180
|
+
|
|
181
|
+
# Apply complexity multiplier
|
|
182
|
+
complexity_multiplier=${COMPLEXITY_MULTIPLIERS[$TASK_COMPLEXITY]}
|
|
183
|
+
timeout_after_complexity=$(echo "scale=0; $base_timeout * $complexity_multiplier" | bc)
|
|
184
|
+
|
|
185
|
+
# Apply system load factor
|
|
186
|
+
load_factor=$(get_load_factor)
|
|
187
|
+
timeout_after_load=$(echo "scale=0; $timeout_after_complexity * $load_factor" | bc)
|
|
188
|
+
|
|
189
|
+
# Apply Redis latency factor
|
|
190
|
+
redis_factor=$(get_redis_latency_factor)
|
|
191
|
+
final_timeout=$(echo "scale=0; $timeout_after_load * $redis_factor" | bc)
|
|
192
|
+
|
|
193
|
+
# Ensure timeout is within bounds
|
|
194
|
+
if (( $(echo "$final_timeout < $MIN_TIMEOUT" | bc -l) )); then
|
|
195
|
+
final_timeout=$MIN_TIMEOUT
|
|
196
|
+
fi
|
|
197
|
+
|
|
198
|
+
if (( $(echo "$final_timeout > $MAX_TIMEOUT" | bc -l) )); then
|
|
199
|
+
final_timeout=$MAX_TIMEOUT
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
# Round to integer
|
|
203
|
+
final_timeout=$(printf "%.0f" "$final_timeout")
|
|
204
|
+
|
|
205
|
+
# Output result (JSON format for easy parsing)
|
|
206
|
+
cat <<EOF
|
|
207
|
+
{
|
|
208
|
+
"agentType": "$AGENT_TYPE",
|
|
209
|
+
"taskComplexity": "$TASK_COMPLEXITY",
|
|
210
|
+
"recommendedTimeout": $final_timeout,
|
|
211
|
+
"calculation": {
|
|
212
|
+
"baselineTimeout": $baseline_timeout,
|
|
213
|
+
"historicalAverage": $historical_avg,
|
|
214
|
+
"complexityMultiplier": $complexity_multiplier,
|
|
215
|
+
"loadFactor": $load_factor,
|
|
216
|
+
"redisLatencyFactor": $redis_factor
|
|
217
|
+
},
|
|
218
|
+
"bounds": {
|
|
219
|
+
"min": $MIN_TIMEOUT,
|
|
220
|
+
"max": $MAX_TIMEOUT
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
EOF
|
|
224
|
+
|
|
225
|
+
# Also output just the timeout value to stderr for easy shell capture
|
|
226
|
+
echo "$final_timeout" >&2
|
|
227
|
+
|
|
228
|
+
exit 0
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
##############################################################################
|
|
4
|
+
# Consensus Checker
|
|
5
|
+
# Collects and validates Loop 2 consensus scores
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# consensus.sh --task-id <id> \
|
|
9
|
+
# --agents <agent1,agent2,...> \
|
|
10
|
+
# --threshold <0.0-1.0> \
|
|
11
|
+
# --min-quorum <n|n%|0.n>
|
|
12
|
+
#
|
|
13
|
+
# Returns:
|
|
14
|
+
# Exit 0: Consensus reached
|
|
15
|
+
# Exit 1: Consensus failed
|
|
16
|
+
##############################################################################
|
|
17
|
+
|
|
18
|
+
set -euo pipefail
|
|
19
|
+
|
|
20
|
+
# Parameters
|
|
21
|
+
TASK_ID=""
|
|
22
|
+
AGENTS=""
|
|
23
|
+
THRESHOLD=""
|
|
24
|
+
MIN_QUORUM=""
|
|
25
|
+
|
|
26
|
+
# Parse arguments
|
|
27
|
+
while [[ $# -gt 0 ]]; do
|
|
28
|
+
case $1 in
|
|
29
|
+
--task-id) TASK_ID="$2"; shift 2 ;;
|
|
30
|
+
--agents) AGENTS="$2"; shift 2 ;;
|
|
31
|
+
--threshold) THRESHOLD="$2"; shift 2 ;;
|
|
32
|
+
--min-quorum) MIN_QUORUM="$2"; shift 2 ;;
|
|
33
|
+
*) echo "Unknown option: $1"; exit 1 ;;
|
|
34
|
+
esac
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
# Validation
|
|
38
|
+
if [ -z "$TASK_ID" ] || [ -z "$AGENTS" ] || [ -z "$THRESHOLD" ] || [ -z "$MIN_QUORUM" ]; then
|
|
39
|
+
echo "Error: Missing required parameters"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
# Use Redis Coordination skill to collect consensus scores
|
|
44
|
+
SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.claude/skills/cfn-cfn-.." && pwd)"
|
|
45
|
+
REDIS_COORD_SKILL="$SKILL_DIR/redis-coordination"
|
|
46
|
+
|
|
47
|
+
echo "Consensus Check Configuration:"
|
|
48
|
+
echo " Task ID: $TASK_ID"
|
|
49
|
+
echo " Agent IDs: $AGENTS"
|
|
50
|
+
echo " Min Quorum: $MIN_QUORUM"
|
|
51
|
+
echo ""
|
|
52
|
+
|
|
53
|
+
# Collect Loop 2 consensus scores
|
|
54
|
+
CONSENSUS=$("$REDIS_COORD_SKILL/invoke-waiting-mode.sh" collect \
|
|
55
|
+
--task-id "$TASK_ID" \
|
|
56
|
+
--agent-ids "$AGENTS" \
|
|
57
|
+
--min-quorum "$MIN_QUORUM" 2>&1) || {
|
|
58
|
+
echo "❌ Error: Failed to collect Loop 2 consensus scores"
|
|
59
|
+
echo " Agent IDs: $AGENTS"
|
|
60
|
+
echo " Output: $CONSENSUS"
|
|
61
|
+
exit 1
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Validate consensus is a valid number
|
|
65
|
+
if ! [[ "$CONSENSUS" =~ ^[0-9]+\.?[0-9]*$ ]]; then
|
|
66
|
+
echo "⚠️ WARNING: Invalid consensus value: $CONSENSUS (expected numeric)"
|
|
67
|
+
echo " Defaulting to 0.0"
|
|
68
|
+
CONSENSUS="0.0"
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
echo "Loop 2 Consensus Check:"
|
|
72
|
+
echo " Consensus: $CONSENSUS"
|
|
73
|
+
echo " Threshold: $THRESHOLD"
|
|
74
|
+
echo " Required: >= $THRESHOLD"
|
|
75
|
+
|
|
76
|
+
# Compare consensus to threshold
|
|
77
|
+
if (( $(echo "$CONSENSUS >= $THRESHOLD" | bc -l) )); then
|
|
78
|
+
echo "✅ Consensus REACHED - Loop 2 validation successful"
|
|
79
|
+
exit 0
|
|
80
|
+
else
|
|
81
|
+
echo "❌ Consensus FAILED - Iteration required"
|
|
82
|
+
echo " Gap: $(echo "$THRESHOLD - $CONSENSUS" | bc -l)"
|
|
83
|
+
exit 1
|
|
84
|
+
fi
|