claude-flow-novice 2.5.2 → 2.8.1
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/adaptive-context/cfn-v3-reflection.json +21 -0
- package/.claude/agents/AGENT_LIFECYCLE.md +495 -0
- package/.claude/agents/CLAUDE.md +1002 -1233
- package/.claude/agents/accessibility-advocate.md +457 -0
- package/.claude/agents/agent-principles/README.md +226 -226
- package/.claude/agents/agent-principles/agent-type-guidelines.md +10 -0
- package/.claude/agents/agent-principles/format-selection.md +10 -0
- package/.claude/agents/agent-principles/phase4-template-optimization.md +502 -494
- package/.claude/agents/agent-principles/prompt-engineering.md +8 -0
- package/.claude/agents/agent-principles/quality-metrics.md +8 -0
- package/.claude/agents/analysis/code-analyzer.md +7 -17
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +2 -104
- package/.claude/agents/analysis/perf-analyzer.md +2 -196
- package/.claude/agents/context/context-curator.md +78 -84
- package/.claude/agents/context/context-reflector.md +27 -81
- package/.claude/agents/coordinators/README.md +42 -0
- package/.claude/agents/coordinators/cfn-v3-coordinator.md +440 -0
- package/.claude/agents/{product-owner-team → coordinators}/cto-agent.md +154 -187
- package/.claude/agents/coordinators/multi-sprint-coordinator.md +50 -0
- package/.claude/agents/{product-owner-team → coordinators}/product-owner-agent.md +6 -39
- package/.claude/agents/{cfn-loop → coordinators}/product-owner.md +72 -17
- package/.claude/agents/core-agents/reviewer.md +114 -135
- package/.claude/agents/custom/agent-builder.md +637 -0
- package/.claude/agents/developers/README.md +69 -0
- package/.claude/agents/developers/backend-dev.md +77 -0
- package/.claude/agents/{core-agents → developers}/coder.md +131 -26
- package/.claude/agents/developers/react-frontend-engineer.md +121 -0
- package/.claude/agents/{frontend → developers}/state-architect.md +1 -0
- package/.claude/agents/{frontend → developers}/ui-designer.md +1 -0
- package/.claude/agents/development/backend/dev-backend-api.md +0 -29
- package/.claude/agents/development/npm-package-specialist.md +355 -347
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +8 -0
- package/.claude/agents/documentation/api-docs.md +8 -0
- package/.claude/agents/github/github-commit-agent.md +125 -117
- package/.claude/agents/goal/goal-planner.md +8 -0
- package/.claude/agents/infrastructure/README.md +100 -0
- package/.claude/agents/{specialized → infrastructure}/devops-engineer.md +131 -150
- package/.claude/agents/planners/README.md +94 -0
- package/.claude/agents/{core-agents → planners}/analyst.md +1 -22
- package/.claude/agents/{planning-team → planners}/api-designer-persona.md +8 -0
- package/.claude/agents/{core-agents → planners}/architect.md +7 -20
- package/.claude/agents/{core-agents → planners}/planner.md +0 -21
- package/.claude/agents/{planning-team → planners}/security-architect-persona.md +8 -28
- package/.claude/agents/{planning-team → planners}/system-architect-persona.md +6 -38
- package/.claude/agents/{architecture → planners}/system-architect.md +12 -17
- package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +132 -161
- package/.claude/agents/product-owner-team/power-user-persona.md +149 -182
- package/.claude/agents/retrospective-analyst.md +84 -0
- package/.claude/agents/reviewers/README.md +58 -0
- package/.claude/agents/{analysis → reviewers}/code-quality-validator.md +8 -17
- package/.claude/agents/reviewers/reviewer.md +181 -0
- package/.claude/agents/sparc/architecture.md +6 -25
- package/.claude/agents/sparc/pseudocode.md +6 -0
- package/.claude/agents/sparc/refinement.md +6 -0
- package/.claude/agents/sparc/specification.md +1 -0
- package/.claude/agents/specialists/README.md +60 -0
- package/.claude/agents/{core-agents → specialists}/base-template-generator.md +8 -21
- package/.claude/agents/{specialized → specialists}/cli-agent-optimizer.md +1 -1
- package/.claude/agents/{specialized → specialists}/code-booster.md +1 -0
- package/.claude/agents/{consensus → specialists}/consensus-builder.md +1 -17
- package/.claude/agents/{specialized/mobile → specialists}/mobile-dev.md +0 -20
- package/.claude/agents/{core-agents → specialists}/performance-benchmarker.md +134 -148
- package/.claude/agents/{specialized → specialists}/rust-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-enterprise-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-mvp-developer.md +1 -20
- package/.claude/agents/{core-agents → specialists}/security-manager.md +68 -88
- package/.claude/agents/{security → specialists}/security-specialist-existing.md +6 -57
- package/.claude/agents/{security → specialists}/security-specialist.md +6 -30
- package/.claude/agents/{specialized/mobile → specialists}/spec-mobile-react-native.md +2 -21
- package/.claude/agents/testers/README.md +94 -0
- package/.claude/agents/{testing → testers}/e2e/playwright-agent.md +1 -20
- package/.claude/agents/{testing → testers}/interaction-tester.md +1 -20
- package/.claude/agents/{testing → testers}/playwright-tester.md +1 -1
- package/.claude/agents/testers/tester.md +139 -0
- package/.claude/agents/testers/unit/tdd-london-swarm.md +49 -0
- package/.claude/agents/testers/validation/production-validator.md +33 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md +157 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +156 -0
- package/.claude/agents-ignore/coordinator.md.backup +182 -0
- package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +760 -0
- package/.claude/agents-ignore/cost-savings-coordinator.md +173 -0
- package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +39 -0
- package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +47 -0
- package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +61 -0
- package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
- package/.claude/commands/cfn-loop-epic.md +43 -19
- package/.claude/commands/cfn-loop-single.md +3 -3
- package/.claude/commands/cfn-loop-sprints.md +1 -1
- package/.claude/commands/cfn-loop.md +45 -32
- package/.claude/commands/cfn-mode.md +20 -0
- package/.claude/commands/custom-routing-activate.md +37 -123
- package/.claude/commands/custom-routing-deactivate.md +27 -124
- package/.claude/commands/switch-api.md +41 -16
- package/.claude/commands/write-plan.md +104 -0
- package/.claude/data/cfn-loop.db +0 -0
- package/.claude/data/cfn_loop_logs.db +0 -0
- package/.claude/hooks/BACKUP_USAGE.md +243 -0
- package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
- package/.claude/hooks/post-edit.sh +21 -0
- package/.claude/hooks/pre-edit-backup.sh +71 -0
- package/.claude/hooks/restore-from-backup.sh +37 -0
- package/.claude/prompts/cfn-loop-context.md +115 -0
- package/.claude/prompts/loop-specific/loop2.md +50 -0
- package/.claude/prompts/loop-specific/loop3.md +43 -0
- package/.claude/prompts/loop-specific/loop4.md +54 -0
- package/.claude/root-claude-distribute/CLAUDE.md +76 -2
- package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/ace-system/store-reflection.sh +33 -136
- package/.claude/skills/agent-discovery/SKILL.md +40 -0
- package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/agent-discovery/discover-agents.py +175 -0
- package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/agent-discovery/temp_script.py +0 -0
- package/.claude/skills/agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/agent-selector/SKILL.md +90 -0
- package/.claude/skills/agent-selector/select-agents.sh +96 -0
- package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
- package/.claude/skills/agent-swap/SKILL.md +36 -0
- package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
- package/.claude/skills/api-validation/test-endpoints.sh +54 -0
- package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
- package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
- package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
- package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
- package/.claude/skills/cfn-loop-orchestration/README.md +41 -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/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/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 +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 +307 -217
- package/.claude/skills/complexity-estimator/SKILL.md +96 -0
- package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
- package/.claude/skills/context-pruner/SKILL.md +75 -0
- package/.claude/skills/context-pruner/prune-context.sh +73 -0
- package/.claude/skills/defense-in-depth/SKILL.md +133 -0
- package/.claude/skills/dependency-extractor/SKILL.md +35 -0
- package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
- package/.claude/skills/epic-decomposer/SKILL.md +44 -0
- package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
- package/.claude/skills/improvement-recommender/SKILL.md +33 -0
- package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
- package/.claude/skills/intervention-detector/SKILL.md +39 -0
- package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
- package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
- package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
- package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
- package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
- package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
- package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
- package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
- package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
- package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
- package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
- package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
- package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
- package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
- package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
- package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
- package/.claude/skills/pattern-extraction/SKILL.md +30 -0
- package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
- package/.claude/skills/playbook/SKILL.md +113 -0
- package/.claude/skills/playbook/init-playbook.sh +54 -0
- package/.claude/skills/playbook/playbook.db +0 -0
- package/.claude/skills/playbook/query-playbook.sh +79 -0
- package/.claude/skills/playbook/update-playbook.sh +69 -0
- package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
- package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
- package/.claude/skills/product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/redis-coordination/README.md +30 -29
- package/.claude/skills/redis-coordination/SKILL.md +685 -83
- package/.claude/skills/redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
- package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
- package/.claude/skills/redis-coordination/init-swarm.sh +6 -1
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +106 -183
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/redis-coordination/log-event.sh +109 -0
- package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -933
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
- package/.claude/skills/redis-coordination/signal.sh +38 -0
- package/.claude/skills/redis-coordination/store-context.sh +86 -0
- package/.claude/skills/redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
- package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
- package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
- package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
- package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
- package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
- package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/retrospective-report/SKILL.md +31 -0
- package/.claude/skills/retrospective-report/generate-report.sh +101 -0
- package/.claude/skills/run-all-skill-tests.sh +124 -0
- package/.claude/skills/scope-simplifier/SKILL.md +37 -0
- package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
- package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
- package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
- package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/specialist-injection/SKILL.md +41 -0
- package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
- package/.claude/skills/sprint-execution/SKILL.md +27 -0
- package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
- package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
- package/.claude/skills/sprint-planner/SKILL.md +37 -0
- package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
- package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
- package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
- package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
- package/.claude/skills/task-classifier/SKILL.md +94 -0
- package/.claude/skills/task-classifier/classify-task.sh +115 -0
- package/.claude/skills/validation-templates/SKILL.md +47 -0
- package/.claude/skills/validation-templates/content.json +38 -0
- package/.claude/skills/validation-templates/data.json +38 -0
- package/.claude/skills/validation-templates/design.json +38 -0
- package/.claude/skills/validation-templates/infrastructure.json +38 -0
- package/.claude/skills/validation-templates/research.json +38 -0
- package/.claude/skills/validation-templates/software.json +38 -0
- package/.claude/skills/webapp-testing/README.md +142 -0
- package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/webapp-testing/SKILL.md +877 -0
- package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
- package/.claude/spawn-pattern-examples.md +3 -3
- package/CLAUDE.md +364 -16
- package/README.md +598 -251
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-command.js +153 -0
- package/dist/cli/agent-command.js.map +1 -0
- package/dist/cli/agent-definition-parser.js +183 -0
- package/dist/cli/agent-definition-parser.js.map +1 -0
- package/dist/cli/agent-executor.js +310 -0
- package/dist/cli/agent-executor.js.map +1 -0
- package/dist/cli/agent-prompt-builder.js +268 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -0
- package/dist/cli/agent-spawn.js +56 -2
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/anthropic-client.js +421 -0
- package/dist/cli/anthropic-client.js.map +1 -0
- package/dist/cli/cfn-context.js +150 -0
- package/dist/cli/cfn-context.js.map +1 -1
- package/dist/cli/cfn-fork.js +159 -0
- package/dist/cli/cfn-fork.js.map +1 -0
- package/dist/cli/cli-agent-context.js +358 -0
- package/dist/cli/cli-agent-context.js.map +1 -0
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/conversation-fork.js +201 -0
- package/dist/cli/conversation-fork.js.map +1 -0
- package/dist/cli/index.js +119 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/iteration-history.js +188 -0
- package/dist/cli/iteration-history.js.map +1 -0
- package/dist/cli/tool-definitions.js +263 -0
- package/dist/cli/tool-definitions.js.map +1 -0
- package/dist/cli/tool-executor.js +247 -0
- package/dist/cli/tool-executor.js.map +1 -0
- package/dist/hello.js +8 -0
- package/dist/hello.js.map +1 -0
- package/package.json +16 -6
- package/scripts/README.md +68 -0
- package/scripts/cfn-intervention-example.sh +21 -0
- package/scripts/migrate-test-infrastructure.sh +40 -0
- package/scripts/switch-api.sh +233 -0
- package/scripts/validate-test-migration.sh +49 -0
- package/scripts/verify-no-secrets.sh +55 -0
- package/.claude/agents/architecture/system-architect.md.backup +0 -603
- package/.claude/agents/code-booster.md +0 -131
- package/.claude/agents/consensus/performance-benchmarker.md +0 -101
- package/.claude/agents/consensus/security-manager.md +0 -107
- package/.claude/agents/context-curator.md +0 -167
- package/.claude/agents/context-reflector.md +0 -65
- package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
- package/.claude/agents/core-agents/code-quality-validator.md +0 -149
- package/.claude/agents/core-agents/context-curator.md +0 -452
- package/.claude/agents/core-agents/context-reflector.md +0 -273
- package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -190
- package/.claude/agents/core-agents/tester.md +0 -170
- package/.claude/agents/development/backend-dev.md +0 -165
- package/.claude/agents/devops/devops-engineer.md +0 -148
- package/.claude/agents/frontend/interaction-tester.md +0 -139
- package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
- package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
- package/.claude/agents/testing/production-validator.md +0 -179
- package/.claude/agents/testing/tdd-london-swarm.md +0 -209
- package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
- package/.claude/agents/testing/validation/production-validator.md +0 -43
- package/dist/coordination/fleet-manager.test.js +0 -141
- package/dist/coordination/fleet-manager.test.js.map +0 -1
- package/dist/middleware/transparency-middleware.test.js +0 -184
- package/dist/middleware/transparency-middleware.test.js.map +0 -1
- /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
- /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
- /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
- /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
- /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
- /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
- /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
- /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +0 -0
|
@@ -3,37 +3,21 @@
|
|
|
3
3
|
# Redis Waiting Mode CLI Wrapper for Agents
|
|
4
4
|
#
|
|
5
5
|
# Usage:
|
|
6
|
-
# ./invoke-waiting-mode.sh enter --task-id <task> --agent-id <agent> --context <context>
|
|
7
|
-
# ./invoke-waiting-mode.sh wake --task-id <task> --agent-id <agent> --reason <reason> [--iteration <n>] [--priority <0-100>]
|
|
8
6
|
# ./invoke-waiting-mode.sh report --task-id <task> --agent-id <agent> --confidence <score> [--iteration <n>]
|
|
9
7
|
# ./invoke-waiting-mode.sh collect --task-id <task> --agent-ids <id1,id2,id3>
|
|
10
8
|
# ./invoke-waiting-mode.sh shutdown --task-id <task> [--reason <reason>]
|
|
11
9
|
#
|
|
10
|
+
# DEPRECATION NOTICE:
|
|
11
|
+
# - 'enter' and 'wake' subcommands are DEPRECATED
|
|
12
|
+
# - This script now only supports 'report', 'collect', and 'shutdown' subcommands
|
|
13
|
+
# - Agents are expected to exit cleanly without waiting mode
|
|
14
|
+
#
|
|
12
15
|
# Priority Levels (0-100, higher = more urgent, default = 50):
|
|
13
16
|
# 90-100: Critical (security patches, system failures)
|
|
14
17
|
# 70-89: High (urgent features, blocking bugs)
|
|
15
18
|
# 40-60: Medium (normal tasks, default)
|
|
16
19
|
# 20-39: Low (optimizations, refactoring)
|
|
17
20
|
# 0-19: Minimal (documentation, cleanup)
|
|
18
|
-
#
|
|
19
|
-
# Examples:
|
|
20
|
-
# # Agent enters waiting mode
|
|
21
|
-
# ./invoke-waiting-mode.sh enter --task-id auth-system --agent-id coder-1 --context "iteration-1"
|
|
22
|
-
#
|
|
23
|
-
# # Coordinator wakes agent with default priority
|
|
24
|
-
# ./invoke-waiting-mode.sh wake --task-id auth-system --agent-id coder-1 --reason cfn_loop_iteration --iteration 2
|
|
25
|
-
#
|
|
26
|
-
# # Coordinator wakes agent with high priority
|
|
27
|
-
# ./invoke-waiting-mode.sh wake --task-id auth-system --agent-id coder-1 --reason security_patch --priority 95
|
|
28
|
-
#
|
|
29
|
-
# # Agent reports result
|
|
30
|
-
# ./invoke-waiting-mode.sh report --task-id auth-system --agent-id coder-1 --confidence 0.85 --iteration 1
|
|
31
|
-
#
|
|
32
|
-
# # Coordinator collects results
|
|
33
|
-
# ./invoke-waiting-mode.sh collect --task-id auth-system --agent-ids coder-1,reviewer-1,tester-1
|
|
34
|
-
#
|
|
35
|
-
# # Coordinator broadcasts shutdown signal
|
|
36
|
-
# ./invoke-waiting-mode.sh shutdown --task-id auth-system --reason task_complete
|
|
37
21
|
|
|
38
22
|
set -euo pipefail
|
|
39
23
|
|
|
@@ -48,13 +32,12 @@ shift || true
|
|
|
48
32
|
TASK_ID=""
|
|
49
33
|
AGENT_ID=""
|
|
50
34
|
AGENT_IDS=""
|
|
51
|
-
CONTEXT=""
|
|
52
35
|
REASON=""
|
|
53
36
|
ITERATION=""
|
|
54
37
|
CONFIDENCE=""
|
|
55
38
|
FEEDBACK=""
|
|
56
|
-
TASK_DESC=""
|
|
57
39
|
PRIORITY=50 # Default medium priority (0-100, higher = more urgent)
|
|
40
|
+
MIN_QUORUM="" # Minimum quorum for consensus validation
|
|
58
41
|
|
|
59
42
|
while [[ $# -gt 0 ]]; do
|
|
60
43
|
case $1 in
|
|
@@ -70,10 +53,6 @@ while [[ $# -gt 0 ]]; do
|
|
|
70
53
|
AGENT_IDS="$2"
|
|
71
54
|
shift 2
|
|
72
55
|
;;
|
|
73
|
-
--context)
|
|
74
|
-
CONTEXT="$2"
|
|
75
|
-
shift 2
|
|
76
|
-
;;
|
|
77
56
|
--reason)
|
|
78
57
|
REASON="$2"
|
|
79
58
|
shift 2
|
|
@@ -90,14 +69,14 @@ while [[ $# -gt 0 ]]; do
|
|
|
90
69
|
FEEDBACK="$2"
|
|
91
70
|
shift 2
|
|
92
71
|
;;
|
|
93
|
-
--task)
|
|
94
|
-
TASK_DESC="$2"
|
|
95
|
-
shift 2
|
|
96
|
-
;;
|
|
97
72
|
--priority)
|
|
98
73
|
PRIORITY="$2"
|
|
99
74
|
shift 2
|
|
100
75
|
;;
|
|
76
|
+
--min-quorum)
|
|
77
|
+
MIN_QUORUM="$2"
|
|
78
|
+
shift 2
|
|
79
|
+
;;
|
|
101
80
|
*)
|
|
102
81
|
echo "Unknown argument: $1"
|
|
103
82
|
exit 1
|
|
@@ -105,122 +84,17 @@ while [[ $# -gt 0 ]]; do
|
|
|
105
84
|
esac
|
|
106
85
|
done
|
|
107
86
|
|
|
108
|
-
# Validate required arguments
|
|
109
87
|
case "$COMMAND" in
|
|
110
88
|
enter)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
fi
|
|
115
|
-
|
|
116
|
-
# Enter waiting mode
|
|
117
|
-
READY_KEY="swarm:${TASK_ID}:${AGENT_ID}:ready"
|
|
118
|
-
WAKE_QUEUE="swarm:${TASK_ID}:${AGENT_ID}:wake-queue"
|
|
119
|
-
SHUTDOWN_KEY="swarm:${TASK_ID}:shutdown"
|
|
120
|
-
|
|
121
|
-
# Publish ready status
|
|
122
|
-
READY_MSG=$(jq -n \
|
|
123
|
-
--arg status "waiting" \
|
|
124
|
-
--arg context "$CONTEXT" \
|
|
125
|
-
--arg ts "$(date +%s)" \
|
|
126
|
-
'{status: $status, context: $context, timestamp: ($ts | tonumber)}')
|
|
127
|
-
|
|
128
|
-
echo "$READY_MSG" | redis-cli -x LPUSH "$READY_KEY" >/dev/null
|
|
129
|
-
|
|
130
|
-
echo "[$AGENT_ID] Entered waiting mode (context: $CONTEXT)"
|
|
131
|
-
echo "[$AGENT_ID] Blocking on priority queue $WAKE_QUEUE and $SHUTDOWN_KEY (infinite timeout)..."
|
|
132
|
-
echo "[$AGENT_ID] Zero token cost while waiting"
|
|
133
|
-
|
|
134
|
-
# Poll loop: check shutdown first, then block on wake queue with timeout
|
|
135
|
-
# This allows us to support both priority queues and shutdown signals
|
|
136
|
-
while true; do
|
|
137
|
-
# Check for shutdown signal first (highest priority)
|
|
138
|
-
SHUTDOWN_CHECK=$(redis-cli LPOP "$SHUTDOWN_KEY")
|
|
139
|
-
|
|
140
|
-
if [ -n "$SHUTDOWN_CHECK" ] && [ "$SHUTDOWN_CHECK" != "(nil)" ]; then
|
|
141
|
-
# Shutdown signal received
|
|
142
|
-
SHUTDOWN_REASON=$(echo "$SHUTDOWN_CHECK" | jq -r '.reason // "unknown"')
|
|
143
|
-
echo "[$AGENT_ID] 🛑 Shutdown signal received"
|
|
144
|
-
echo "[$AGENT_ID] Reason: $SHUTDOWN_REASON"
|
|
145
|
-
echo "$SHUTDOWN_CHECK" | jq '.'
|
|
146
|
-
|
|
147
|
-
# Exit with SIGINT code to indicate graceful shutdown
|
|
148
|
-
exit 130
|
|
149
|
-
fi
|
|
150
|
-
|
|
151
|
-
# Block on wake queue with 1-second timeout (allows periodic shutdown checks)
|
|
152
|
-
# BZPOPMIN returns: key, member, score (3 lines)
|
|
153
|
-
WAKE_RESULT=$(redis-cli BZPOPMIN "$WAKE_QUEUE" 1 2>/dev/null)
|
|
154
|
-
|
|
155
|
-
if [ -n "$WAKE_RESULT" ] && [ "$WAKE_RESULT" != "(nil)" ]; then
|
|
156
|
-
# Parse result (BZPOPMIN returns 3 lines: key, member, score)
|
|
157
|
-
WAKE_MSG=$(echo "$WAKE_RESULT" | sed -n '2p')
|
|
158
|
-
|
|
159
|
-
# Validate JSON before processing
|
|
160
|
-
if echo "$WAKE_MSG" | jq empty 2>/dev/null; then
|
|
161
|
-
echo "[$AGENT_ID] ✅ Woken up!"
|
|
162
|
-
echo "$WAKE_MSG" | jq '.'
|
|
163
|
-
|
|
164
|
-
# Return wake message to caller
|
|
165
|
-
echo "$WAKE_MSG"
|
|
166
|
-
break
|
|
167
|
-
else
|
|
168
|
-
echo "[$AGENT_ID] ⚠️ Invalid JSON in wake message, ignoring"
|
|
169
|
-
continue
|
|
170
|
-
fi
|
|
171
|
-
fi
|
|
172
|
-
|
|
173
|
-
# If no wake signal received, loop back to check shutdown again
|
|
174
|
-
done
|
|
89
|
+
echo "[DEPRECATED] 'enter' subcommand is no longer supported."
|
|
90
|
+
echo "Agents should no longer use waiting mode. Exit cleanly."
|
|
91
|
+
exit 1
|
|
175
92
|
;;
|
|
176
93
|
|
|
177
94
|
wake)
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
fi
|
|
182
|
-
|
|
183
|
-
WAKE_QUEUE="swarm:${TASK_ID}:${AGENT_ID}:wake-queue"
|
|
184
|
-
|
|
185
|
-
# Build wake message (compact JSON for Redis storage)
|
|
186
|
-
WAKE_MSG=$(jq -nc \
|
|
187
|
-
--arg reason "$REASON" \
|
|
188
|
-
--arg iteration "${ITERATION:-0}" \
|
|
189
|
-
--arg task "${TASK_DESC:-}" \
|
|
190
|
-
--arg feedback "${FEEDBACK:-}" \
|
|
191
|
-
--arg priority "$PRIORITY" \
|
|
192
|
-
--arg ts "$(date +%s)" \
|
|
193
|
-
'{
|
|
194
|
-
reason: $reason,
|
|
195
|
-
iteration: ($iteration | tonumber),
|
|
196
|
-
task: $task,
|
|
197
|
-
feedback: ($feedback | split(",") | map(select(length > 0))),
|
|
198
|
-
priority: ($priority | tonumber),
|
|
199
|
-
timestamp: ($ts | tonumber)
|
|
200
|
-
}')
|
|
201
|
-
|
|
202
|
-
# Calculate priority score (lower score = higher priority, popped first)
|
|
203
|
-
# Score = (100 - priority) * 1000000 + timestamp
|
|
204
|
-
# This ensures higher priority messages are processed first, with FIFO for same priority
|
|
205
|
-
TIMESTAMP=$(date +%s)
|
|
206
|
-
PRIORITY_SCORE=$(echo "(100 - $PRIORITY) * 1000000 + $TIMESTAMP" | bc)
|
|
207
|
-
|
|
208
|
-
# Debug output
|
|
209
|
-
if [ "$DEBUG" = "true" ]; then
|
|
210
|
-
echo "[DEBUG] WAKE_QUEUE: $WAKE_QUEUE"
|
|
211
|
-
echo "[DEBUG] PRIORITY: $PRIORITY"
|
|
212
|
-
echo "[DEBUG] Priority score: $PRIORITY_SCORE"
|
|
213
|
-
echo "[DEBUG] Message: $WAKE_MSG"
|
|
214
|
-
fi
|
|
215
|
-
|
|
216
|
-
# Add to sorted set (ZADD with calculated score)
|
|
217
|
-
# Use redis-cli with ZADD and pass JSON as the member directly
|
|
218
|
-
redis-cli ZADD "$WAKE_QUEUE" "$PRIORITY_SCORE" "$WAKE_MSG" >/dev/null
|
|
219
|
-
|
|
220
|
-
echo "[Coordinator] ✅ Wake signal sent to $AGENT_ID"
|
|
221
|
-
echo " Reason: $REASON"
|
|
222
|
-
echo " Priority: $PRIORITY (score: $PRIORITY_SCORE)"
|
|
223
|
-
[ -n "$ITERATION" ] && echo " Iteration: $ITERATION"
|
|
95
|
+
echo "[DEPRECATED] 'wake' subcommand is no longer supported."
|
|
96
|
+
echo "Coordinator should spawn agents directly without waiting mode."
|
|
97
|
+
exit 1
|
|
224
98
|
;;
|
|
225
99
|
|
|
226
100
|
report)
|
|
@@ -231,14 +105,16 @@ case "$COMMAND" in
|
|
|
231
105
|
|
|
232
106
|
RESULT_KEY="swarm:${TASK_ID}:${AGENT_ID}:result"
|
|
233
107
|
|
|
234
|
-
# Build result message
|
|
108
|
+
# Build result message with optional feedback
|
|
235
109
|
RESULT_MSG=$(jq -n \
|
|
236
110
|
--arg confidence "$CONFIDENCE" \
|
|
237
111
|
--arg iteration "${ITERATION:-0}" \
|
|
112
|
+
--arg feedback "${FEEDBACK:-}" \
|
|
238
113
|
--arg ts "$(date +%s)" \
|
|
239
114
|
'{
|
|
240
115
|
confidence: ($confidence | tonumber),
|
|
241
116
|
iteration: ($iteration | tonumber),
|
|
117
|
+
feedback: ($feedback | split(",") | map(select(length > 0))),
|
|
242
118
|
timestamp: ($ts | tonumber)
|
|
243
119
|
}')
|
|
244
120
|
|
|
@@ -247,41 +123,95 @@ case "$COMMAND" in
|
|
|
247
123
|
echo "[$AGENT_ID] ✅ Result reported"
|
|
248
124
|
echo " Confidence: $CONFIDENCE"
|
|
249
125
|
[ -n "$ITERATION" ] && echo " Iteration: $ITERATION"
|
|
126
|
+
if [ -n "$FEEDBACK" ]; then
|
|
127
|
+
echo " Feedback items: $(echo "$FEEDBACK" | tr ',' '\n' | wc -l)"
|
|
128
|
+
fi
|
|
250
129
|
;;
|
|
251
130
|
|
|
252
131
|
collect)
|
|
253
132
|
if [ -z "$TASK_ID" ] || [ -z "$AGENT_IDS" ]; then
|
|
254
|
-
echo "Error: collect requires --task-id and --agent-ids"
|
|
133
|
+
echo "Error: collect requires --task-id and --agent-ids" >&2
|
|
255
134
|
exit 1
|
|
256
135
|
fi
|
|
257
136
|
|
|
258
|
-
|
|
259
|
-
echo ""
|
|
137
|
+
# Output verbose messages to stderr
|
|
138
|
+
echo "[Coordinator] Collecting results from agents..." >&2
|
|
139
|
+
echo "" >&2
|
|
260
140
|
|
|
261
141
|
# Split agent IDs
|
|
262
142
|
IFS=',' read -ra AGENTS <<< "$AGENT_IDS"
|
|
263
143
|
|
|
264
144
|
RESULTS=()
|
|
265
145
|
CONFIDENCES=()
|
|
146
|
+
ALL_FEEDBACK=()
|
|
266
147
|
|
|
267
148
|
for AGENT in "${AGENTS[@]}"; do
|
|
268
149
|
RESULT_KEY="swarm:${TASK_ID}:${AGENT}:result"
|
|
269
150
|
|
|
270
|
-
# Get latest result (non-blocking)
|
|
271
|
-
|
|
151
|
+
# Get latest result (non-blocking, non-destructive)
|
|
152
|
+
# Use LINDEX instead of LPOP to preserve results for multiple reads
|
|
153
|
+
RESULT=$(redis-cli LINDEX "$RESULT_KEY" 0)
|
|
272
154
|
|
|
273
155
|
if [ -n "$RESULT" ] && [ "$RESULT" != "(nil)" ]; then
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
156
|
+
# Handle both simple numeric format and JSON format
|
|
157
|
+
# Try to parse as JSON first, fall back to simple number
|
|
158
|
+
if CONF=$(echo "$RESULT" | jq -r '.confidence' 2>/dev/null) && [ "$CONF" != "null" ]; then
|
|
159
|
+
# JSON format: {"confidence":0.85,"iteration":1,...}
|
|
160
|
+
echo " [$AGENT] Confidence: $CONF" >&2
|
|
161
|
+
RESULTS+=("$RESULT")
|
|
162
|
+
CONFIDENCES+=("$CONF")
|
|
163
|
+
|
|
164
|
+
# Check if result includes feedback array
|
|
165
|
+
FEEDBACK=$(echo "$RESULT" | jq -r '.feedback // empty | .[]?' 2>/dev/null)
|
|
166
|
+
if [ -n "$FEEDBACK" ]; then
|
|
167
|
+
echo " [$AGENT] Feedback provided:" >&2
|
|
168
|
+
echo "$RESULT" | jq -r '.feedback[]' | sed 's/^/ - /' >&2
|
|
169
|
+
|
|
170
|
+
# Collect all feedback items
|
|
171
|
+
while IFS= read -r ITEM; do
|
|
172
|
+
ALL_FEEDBACK+=("$ITEM")
|
|
173
|
+
done < <(echo "$RESULT" | jq -r '.feedback[]')
|
|
174
|
+
fi
|
|
175
|
+
elif [[ "$RESULT" =~ ^[0-9]+\.?[0-9]*$ ]]; then
|
|
176
|
+
# Simple numeric format: "0.85"
|
|
177
|
+
CONF="$RESULT"
|
|
178
|
+
echo " [$AGENT] Confidence: $CONF" >&2
|
|
179
|
+
CONFIDENCES+=("$CONF")
|
|
180
|
+
else
|
|
181
|
+
echo " [$AGENT] ⚠️ Invalid result format: $RESULT" >&2
|
|
182
|
+
fi
|
|
280
183
|
else
|
|
281
|
-
echo " [$AGENT] ⚠️ No result found"
|
|
184
|
+
echo " [$AGENT] ⚠️ No result found" >&2
|
|
282
185
|
fi
|
|
283
186
|
done
|
|
284
187
|
|
|
188
|
+
# Validate quorum if specified
|
|
189
|
+
TOTAL_AGENTS=${#AGENTS[@]}
|
|
190
|
+
RESPONDING_AGENTS=${#CONFIDENCES[@]}
|
|
191
|
+
|
|
192
|
+
if [ -n "$MIN_QUORUM" ]; then
|
|
193
|
+
# Parse min-quorum (supports: absolute number, percentage, or decimal)
|
|
194
|
+
if [[ "$MIN_QUORUM" =~ ^[0-9]+%$ ]]; then
|
|
195
|
+
# Percentage format: "66%"
|
|
196
|
+
PCT=${MIN_QUORUM%\%}
|
|
197
|
+
REQUIRED=$(echo "scale=0; ($TOTAL_AGENTS * $PCT) / 100" | bc)
|
|
198
|
+
elif [[ "$MIN_QUORUM" =~ ^0\.[0-9]+$ ]]; then
|
|
199
|
+
# Decimal format: "0.66"
|
|
200
|
+
REQUIRED=$(echo "scale=0; ($TOTAL_AGENTS * $MIN_QUORUM) / 1" | bc)
|
|
201
|
+
else
|
|
202
|
+
# Absolute number format: "2"
|
|
203
|
+
REQUIRED=$MIN_QUORUM
|
|
204
|
+
fi
|
|
205
|
+
|
|
206
|
+
if [ "$RESPONDING_AGENTS" -lt "$REQUIRED" ]; then
|
|
207
|
+
echo "" >&2
|
|
208
|
+
echo "[Coordinator] ❌ Quorum not met" >&2
|
|
209
|
+
echo " Required: $REQUIRED agents" >&2
|
|
210
|
+
echo " Responding: $RESPONDING_AGENTS agents" >&2
|
|
211
|
+
exit 1
|
|
212
|
+
fi
|
|
213
|
+
fi
|
|
214
|
+
|
|
285
215
|
# Calculate consensus
|
|
286
216
|
if [ ${#CONFIDENCES[@]} -gt 0 ]; then
|
|
287
217
|
SUM=0
|
|
@@ -291,12 +221,25 @@ case "$COMMAND" in
|
|
|
291
221
|
COUNT=${#CONFIDENCES[@]}
|
|
292
222
|
CONSENSUS=$(echo "scale=2; $SUM / $COUNT" | bc)
|
|
293
223
|
|
|
294
|
-
|
|
295
|
-
|
|
224
|
+
# Ensure leading zero for bc output (handles .87 -> 0.87)
|
|
225
|
+
if [[ "$CONSENSUS" =~ ^\. ]]; then
|
|
226
|
+
CONSENSUS="0$CONSENSUS"
|
|
227
|
+
fi
|
|
228
|
+
|
|
229
|
+
echo "" >&2
|
|
230
|
+
echo "[Coordinator] Consensus: $CONSENSUS" >&2
|
|
231
|
+
|
|
232
|
+
# Print aggregated feedback if available
|
|
233
|
+
if [ ${#ALL_FEEDBACK[@]} -gt 0 ]; then
|
|
234
|
+
echo "[Coordinator] Aggregated Feedback (${#ALL_FEEDBACK[@]} items):" >&2
|
|
235
|
+
printf '%s\n' "${ALL_FEEDBACK[@]}" | sort -u | sed 's/^/ - /' >&2
|
|
236
|
+
fi
|
|
237
|
+
|
|
238
|
+
# Output only consensus value to stdout for callers
|
|
296
239
|
echo "$CONSENSUS"
|
|
297
240
|
else
|
|
298
|
-
echo ""
|
|
299
|
-
echo "[Coordinator] No results to calculate consensus"
|
|
241
|
+
echo "" >&2
|
|
242
|
+
echo "[Coordinator] No results to calculate consensus" >&2
|
|
300
243
|
echo "0.0"
|
|
301
244
|
fi
|
|
302
245
|
;;
|
|
@@ -318,43 +261,23 @@ case "$COMMAND" in
|
|
|
318
261
|
timestamp: ($ts | tonumber)
|
|
319
262
|
}')
|
|
320
263
|
|
|
321
|
-
# Broadcast shutdown signal
|
|
322
|
-
# All waiting agents will check this key and exit gracefully
|
|
264
|
+
# Broadcast shutdown signal
|
|
323
265
|
echo "$SHUTDOWN_MSG" | redis-cli -x LPUSH "$SHUTDOWN_KEY" >/dev/null
|
|
324
266
|
|
|
325
267
|
echo "[Coordinator] 🛑 Shutdown signal broadcasted"
|
|
326
268
|
echo " Task ID: $TASK_ID"
|
|
327
269
|
echo " Reason: ${REASON:-task_complete}"
|
|
328
|
-
echo ""
|
|
329
|
-
echo "Note: Signal added to $SHUTDOWN_KEY"
|
|
330
|
-
echo "All waiting agents will receive shutdown on next poll cycle (max 1 second)"
|
|
331
270
|
;;
|
|
332
271
|
|
|
333
272
|
*)
|
|
334
|
-
|
|
335
273
|
echo "Usage: $0 <command> [options]"
|
|
336
274
|
echo ""
|
|
337
275
|
echo "Commands:"
|
|
338
|
-
echo " enter - Agent enters waiting mode"
|
|
339
|
-
echo " wake - Coordinator wakes an agent (supports --priority 0-100)"
|
|
340
276
|
echo " report - Agent reports result"
|
|
341
277
|
echo " collect - Coordinator collects results"
|
|
342
|
-
echo " shutdown - Coordinator broadcasts shutdown signal
|
|
343
|
-
echo ""
|
|
344
|
-
echo "Priority Levels (0-100, higher = more urgent, default = 50):"
|
|
345
|
-
echo " 90-100: Critical (security patches, system failures)"
|
|
346
|
-
echo " 70-89: High (urgent features, blocking bugs)"
|
|
347
|
-
echo " 40-60: Medium (normal tasks, default)"
|
|
348
|
-
echo " 20-39: Low (optimizations, refactoring)"
|
|
349
|
-
echo " 0-19: Minimal (documentation, cleanup)"
|
|
278
|
+
echo " shutdown - Coordinator broadcasts shutdown signal"
|
|
350
279
|
echo ""
|
|
351
|
-
echo "
|
|
352
|
-
echo " $0 enter --task-id auth --agent-id coder-1 --context iteration-1"
|
|
353
|
-
echo " $0 wake --task-id auth --agent-id coder-1 --reason cfn_loop_iteration --iteration 2"
|
|
354
|
-
echo " $0 wake --task-id auth --agent-id coder-1 --reason security_patch --priority 95"
|
|
355
|
-
echo " $0 report --task-id auth --agent-id coder-1 --confidence 0.85 --iteration 1"
|
|
356
|
-
echo " $0 collect --task-id auth --agent-ids coder-1,reviewer-1,tester-1"
|
|
357
|
-
echo " $0 shutdown --task-id auth --reason task_complete"
|
|
280
|
+
echo "Note: 'enter' and 'wake' subcommands are DEPRECATED"
|
|
358
281
|
exit 1
|
|
359
282
|
;;
|
|
360
|
-
esac
|
|
283
|
+
esac
|