claude-flow-novice 2.15.2 → 2.15.4
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/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/.claude/commands/cfn-loop-cli.md +16 -2
- package/.claude/commands/switch-api.md +31 -10
- package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
- package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
- package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
- package/.claude/hooks/cfn-post-edit.config.json +44 -44
- package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
- package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
- package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
- package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
- package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/README.md +116 -475
- package/claude-assets/agents/cfn-dev-team/README.md +103 -0
- package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
- package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
- package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
- package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
- package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
- package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
- package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/claude-assets/commands/cfn-loop-cli.md +16 -2
- package/claude-assets/commands/switch-api.md +31 -10
- package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
- package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
- package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
- package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
- package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
- package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
- package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
- package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
- package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +543 -572
- package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
- package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
- package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
- package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
- package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
- package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
- package/claude-assets/skills/bootstrap/database-connection.md +464 -0
- package/claude-assets/skills/bootstrap/error-handling.md +580 -0
- package/claude-assets/skills/bootstrap/file-operations.md +699 -0
- package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
- package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
- package/claude-assets/skills/cfn-automatic-memory-persistence/persist-agent-output.sh +48 -48
- package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
- package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
- package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
- package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
- package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
- package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
- package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
- package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
- package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
- package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
- package/claude-assets/skills/cfn-expert-update/update-expert.sh +345 -345
- package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
- package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
- package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
- package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
- package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
- package/claude-assets/skills/cfn-hybrid-routing/check-dependencies.sh +51 -51
- package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
- package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
- package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
- package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
- package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
- package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
- package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
- package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
- package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
- package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
- package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
- package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
- package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
- package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
- package/claude-assets/skills/cfn-playbook-auto-update/auto-update-playbook.sh +85 -85
- package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
- package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
- package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +74 -74
- package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
- package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
- package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
- package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
- package/claude-assets/skills/cfn-specialist-injection/recommend-specialist.sh +56 -56
- package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
- package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
- package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
- package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
- package/claude-assets/skills/cfn-task-config-init/initialize-config.sh +264 -264
- package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
- package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
- package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
- package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
- package/claude-assets/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
- package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
- package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
- package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
- package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
- package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
- package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
- package/claude-assets/skills/cfn-utilities/test.sh +317 -0
- package/claude-assets/skills/docker-build/SKILL.md +96 -203
- package/claude-assets/skills/docker-build/build.sh +73 -73
- package/claude-assets/skills/integration/agent-handoff.sh +492 -0
- package/claude-assets/skills/integration/file-operations.sh +414 -0
- package/claude-assets/skills/json-validation/SKILL.md +431 -0
- package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
- package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
- package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
- package/claude-assets/skills/workflow-codification/APPROVAL_WORKFLOW.md +806 -0
- package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
- package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
- package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
- package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
- package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
- package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
- package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
- package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -0
- package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
- package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
- package/claude-assets/skills/workflow-codification/generate-skill-update.sh +525 -0
- package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
- package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
- package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
- package/claude-assets/skills/workflow-codification/review-skill.sh +643 -0
- package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
- package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
- package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
- package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
- package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
- package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
- package/dist/ace/ace-curator.js +10 -2
- package/dist/ace/ace-curator.js.map +1 -1
- package/dist/ace/ace-generator.js +4 -0
- package/dist/ace/ace-generator.js.map +1 -1
- package/dist/ace/ace-reflector.js +1 -1
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/ace/context-injection.js +24 -2
- package/dist/ace/context-injection.js.map +1 -1
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/agents/task-agent-integration.js +1 -1
- package/dist/agents/task-agent-integration.js.map +1 -1
- package/dist/api/health-endpoints.js +390 -0
- package/dist/api/health-endpoints.js.map +1 -0
- package/dist/cli/agent-executor.js +4 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +89 -1
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +130 -37
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/config-manager.js +91 -109
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/skill-cache-validator.js +412 -0
- package/dist/cli/skill-cache-validator.js.map +1 -0
- package/dist/cli/skill-cli.js +991 -0
- package/dist/cli/skill-cli.js.map +1 -0
- package/dist/cli/skill-execution-logger.js +284 -0
- package/dist/cli/skill-execution-logger.js.map +1 -0
- package/dist/cli/skill-loader.js +457 -0
- package/dist/cli/skill-loader.js.map +1 -0
- package/dist/coordination/event-bus.js +2 -2
- package/dist/coordination/event-bus.js.map +1 -1
- package/dist/coordination/fleet-manager.js +1 -1
- package/dist/coordination/fleet-manager.js.map +1 -1
- package/dist/coordination/index.js +23 -9
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/types/fleet-manager.types.js.map +1 -1
- package/dist/db/migration-manager.js +483 -0
- package/dist/db/migration-manager.js.map +1 -0
- package/dist/db/skills-query.js +535 -0
- package/dist/db/skills-query.js.map +1 -0
- package/dist/integration/DatabaseHandoff.js +507 -0
- package/dist/integration/DatabaseHandoff.js.map +1 -0
- package/dist/integration/StandardAdapter.js +291 -0
- package/dist/integration/StandardAdapter.js.map +1 -0
- package/dist/jobs/edge-case-analyzer.js +367 -0
- package/dist/jobs/edge-case-analyzer.js.map +1 -0
- package/dist/jobs/promotion-sla-enforcer.js +288 -0
- package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
- package/dist/lib/agent-output-parser.js +518 -0
- package/dist/lib/agent-output-parser.js.map +1 -0
- package/dist/lib/agent-output-validator.js +950 -0
- package/dist/lib/agent-output-validator.js.map +1 -0
- package/dist/lib/agent-workspace.js +281 -0
- package/dist/lib/agent-workspace.js.map +1 -0
- package/dist/lib/artifact-registry.js +443 -0
- package/dist/lib/artifact-registry.js.map +1 -0
- package/dist/lib/atomic-file-writer.js +377 -0
- package/dist/lib/atomic-file-writer.js.map +1 -0
- package/dist/lib/backup-manager.js +779 -0
- package/dist/lib/backup-manager.js.map +1 -0
- package/dist/lib/checkpoint-manager.js +837 -0
- package/dist/lib/checkpoint-manager.js.map +1 -0
- package/dist/lib/circuit-breaker.js +340 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/completion-signal-handler.js +243 -0
- package/dist/lib/completion-signal-handler.js.map +1 -0
- package/dist/lib/config-manager.js +312 -0
- package/dist/lib/config-manager.js.map +1 -0
- package/dist/lib/config-migrator.js +386 -0
- package/dist/lib/config-migrator.js.map +1 -0
- package/dist/lib/config-validator.js +687 -0
- package/dist/lib/config-validator.js.map +1 -0
- package/dist/lib/correlation-cache.js +311 -0
- package/dist/lib/correlation-cache.js.map +1 -0
- package/dist/lib/correlation.js +263 -0
- package/dist/lib/correlation.js.map +1 -0
- package/dist/lib/database-service/connection-pool-manager.js +520 -0
- package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
- package/dist/lib/database-service/correlation.js +329 -0
- package/dist/lib/database-service/correlation.js.map +1 -0
- package/dist/lib/database-service/errors.js +120 -0
- package/dist/lib/database-service/errors.js.map +1 -0
- package/dist/lib/database-service/index.js +168 -0
- package/dist/lib/database-service/index.js.map +1 -0
- package/dist/lib/database-service/postgres-adapter.js +526 -0
- package/dist/lib/database-service/postgres-adapter.js.map +1 -0
- package/dist/lib/database-service/redis-adapter.js +360 -0
- package/dist/lib/database-service/redis-adapter.js.map +1 -0
- package/dist/lib/database-service/sqlite-adapter.js +544 -0
- package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
- package/dist/lib/database-service/transaction-manager.js +773 -0
- package/dist/lib/database-service/transaction-manager.js.map +1 -0
- package/dist/lib/database-service/types.js +23 -0
- package/dist/lib/database-service/types.js.map +1 -0
- package/dist/lib/deadlock-resolver.js +292 -0
- package/dist/lib/deadlock-resolver.js.map +1 -0
- package/dist/lib/distributed-lock.js +451 -0
- package/dist/lib/distributed-lock.js.map +1 -0
- package/dist/lib/edge-case-deduplicator.js +227 -0
- package/dist/lib/edge-case-deduplicator.js.map +1 -0
- package/dist/lib/encryption-manager.js +322 -0
- package/dist/lib/encryption-manager.js.map +1 -0
- package/dist/lib/error-aggregator.js +234 -0
- package/dist/lib/error-aggregator.js.map +1 -0
- package/dist/lib/errors.js +287 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/file-lock-manager.js +578 -0
- package/dist/lib/file-lock-manager.js.map +1 -0
- package/dist/lib/file-operations.js +367 -0
- package/dist/lib/file-operations.js.map +1 -0
- package/dist/lib/idempotent-write.js +237 -0
- package/dist/lib/idempotent-write.js.map +1 -0
- package/dist/lib/integration-schema-validator.js +522 -0
- package/dist/lib/integration-schema-validator.js.map +1 -0
- package/dist/lib/lock-health-monitor.js +298 -0
- package/dist/lib/lock-health-monitor.js.map +1 -0
- package/dist/lib/log-shipper.js +422 -0
- package/dist/lib/log-shipper.js.map +1 -0
- package/dist/lib/logging.js +146 -0
- package/dist/lib/logging.js.map +1 -0
- package/dist/lib/message-deduplicator.js +439 -0
- package/dist/lib/message-deduplicator.js.map +1 -0
- package/dist/lib/multi-system-query.js +604 -0
- package/dist/lib/multi-system-query.js.map +1 -0
- package/dist/lib/orphan-detector.js +332 -0
- package/dist/lib/orphan-detector.js.map +1 -0
- package/dist/lib/password-generator.js +166 -0
- package/dist/lib/password-generator.js.map +1 -0
- package/dist/lib/path-validator.js +429 -0
- package/dist/lib/path-validator.js.map +1 -0
- package/dist/lib/query-translator.js +905 -0
- package/dist/lib/query-translator.js.map +1 -0
- package/dist/lib/queue-recovery.js +469 -0
- package/dist/lib/queue-recovery.js.map +1 -0
- package/dist/lib/redis-queue-manager.js +512 -0
- package/dist/lib/redis-queue-manager.js.map +1 -0
- package/dist/lib/reflection-archiver.js +272 -0
- package/dist/lib/reflection-archiver.js.map +1 -0
- package/dist/lib/retry-manager.js +453 -0
- package/dist/lib/retry-manager.js.map +1 -0
- package/dist/lib/retry.js +262 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/schema-transform.js +695 -0
- package/dist/lib/schema-transform.js.map +1 -0
- package/dist/lib/schema-validator.js +491 -0
- package/dist/lib/schema-validator.js.map +1 -0
- package/dist/lib/skill-cache.js +297 -0
- package/dist/lib/skill-cache.js.map +1 -0
- package/dist/lib/skill-content-manager.js +337 -0
- package/dist/lib/skill-content-manager.js.map +1 -0
- package/dist/lib/skill-frontmatter-parser.js +237 -0
- package/dist/lib/skill-frontmatter-parser.js.map +1 -0
- package/dist/lib/skill-git-integration.js +275 -0
- package/dist/lib/skill-git-integration.js.map +1 -0
- package/dist/lib/skill-markdown-validator.js +396 -0
- package/dist/lib/skill-markdown-validator.js.map +1 -0
- package/dist/lib/skill-output-parser.js +312 -0
- package/dist/lib/skill-output-parser.js.map +1 -0
- package/dist/lib/unified-query-api.js +467 -0
- package/dist/lib/unified-query-api.js.map +1 -0
- package/dist/middleware/auth-middleware.js +350 -0
- package/dist/middleware/auth-middleware.js.map +1 -0
- package/dist/middleware/schema-validation.js +347 -0
- package/dist/middleware/schema-validation.js.map +1 -0
- package/dist/providers/anthropic-provider.js +1 -1
- package/dist/providers/anthropic-provider.js.map +1 -1
- package/dist/providers/provider-factory.js +2 -2
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/services/edge-case-analyzer.js +321 -0
- package/dist/services/edge-case-analyzer.js.map +1 -0
- package/dist/services/edge-case-deduplicator.js +266 -0
- package/dist/services/edge-case-deduplicator.js.map +1 -0
- package/dist/services/edge-case-detector.js +337 -0
- package/dist/services/edge-case-detector.js.map +1 -0
- package/dist/services/edge-case-tracker.js +547 -0
- package/dist/services/edge-case-tracker.js.map +1 -0
- package/dist/services/health-check-system.js +586 -0
- package/dist/services/health-check-system.js.map +1 -0
- package/dist/services/metrics-logger.js +412 -0
- package/dist/services/metrics-logger.js.map +1 -0
- package/dist/services/patch-generator.js +378 -0
- package/dist/services/patch-generator.js.map +1 -0
- package/dist/services/patch-validator.js +337 -0
- package/dist/services/patch-validator.js.map +1 -0
- package/dist/services/performance-monitor.js +811 -0
- package/dist/services/performance-monitor.js.map +1 -0
- package/dist/services/promotion-pipeline.js +918 -0
- package/dist/services/promotion-pipeline.js.map +1 -0
- package/dist/services/promotion-validator.js +394 -0
- package/dist/services/promotion-validator.js.map +1 -0
- package/dist/services/reflection-logger.js +388 -0
- package/dist/services/reflection-logger.js.map +1 -0
- package/dist/services/skill-deployment.js +472 -0
- package/dist/services/skill-deployment.js.map +1 -0
- package/dist/services/skill-loader.js +427 -0
- package/dist/services/skill-loader.js.map +1 -0
- package/dist/services/skill-promotion.js +372 -0
- package/dist/services/skill-promotion.js.map +1 -0
- package/dist/services/skill-validator.js +454 -0
- package/dist/services/skill-validator.js.map +1 -0
- package/dist/services/skill-versioning.js +244 -0
- package/dist/services/skill-versioning.js.map +1 -0
- package/dist/services/workspace-supervisor.js +597 -0
- package/dist/services/workspace-supervisor.js.map +1 -0
- package/dist/types/agent-output.js +44 -0
- package/dist/types/agent-output.js.map +1 -0
- package/dist/types/config.js +28 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/edge-case.js +45 -0
- package/dist/types/edge-case.js.map +1 -0
- package/package.json +201 -176
- package/readme/README.md +19 -4
- package/scripts/artifact-cleanup.sh +392 -0
- package/scripts/backup-cleanup.sh +627 -0
- package/scripts/cleanup-workspaces.sh +412 -0
- package/scripts/cleanup-yaml-configs.sh +141 -0
- package/scripts/deploy-approved-skills.sh +263 -0
- package/scripts/deploy-production.sh +355 -355
- package/scripts/docker-playwright-fix.sh +311 -311
- package/scripts/docker-rebuild-all-agents.sh +127 -127
- package/scripts/health-check.sh +447 -0
- package/scripts/log-aggregator.sh +554 -0
- package/scripts/log-monitor.sh +629 -0
- package/scripts/manage-agent-workspaces.sh +434 -0
- package/scripts/memory-leak-prevention.sh +305 -305
- package/scripts/migrate-artifacts.sh +563 -0
- package/scripts/migrate-schema.sh +533 -0
- package/scripts/migrate-yaml-to-json.sh +465 -0
- package/scripts/promote-staged-skills.sh +423 -0
- package/scripts/run-marketing-tests.sh +42 -42
- package/scripts/update_paths.sh +46 -46
- package/scripts/verify-no-secrets.sh +88 -35
- package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
- package/README.md.backup_before_replace +0 -781
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# Centralized Redis Wrapper - Graceful Fallback for Task Mode
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0
|
|
4
|
+
**Date:** 2025-11-16
|
|
5
|
+
**Status:** Production Ready
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
This document describes the centralized Redis wrapper implementation that provides graceful fallback for Task mode execution, solving the ANTI-023 memory leak issue without requiring mode detection.
|
|
12
|
+
|
|
13
|
+
## Problem Statement
|
|
14
|
+
|
|
15
|
+
**Original Issue:**
|
|
16
|
+
- CLI mode agents (spawned via `npx claude-flow-novice`) need Redis for coordination
|
|
17
|
+
- Task mode agents (spawned via `Task()` tool) should NOT use Redis (causes memory leaks)
|
|
18
|
+
- Mode detection was unreliable (both modes could have TASK_ID/AGENT_ID)
|
|
19
|
+
|
|
20
|
+
**Solution:**
|
|
21
|
+
Instead of trying to detect mode, **make Redis commands fail gracefully** when Redis is unavailable.
|
|
22
|
+
|
|
23
|
+
## Architecture
|
|
24
|
+
|
|
25
|
+
### Components
|
|
26
|
+
|
|
27
|
+
**1. redis-cli-wrapper.sh** (Centralized wrapper)
|
|
28
|
+
- Checks if Redis is available (1 second timeout)
|
|
29
|
+
- If available → execute command normally (CLI/Docker mode)
|
|
30
|
+
- If unavailable → soft fail with informative message (Task mode)
|
|
31
|
+
|
|
32
|
+
**2. redis-functions.sh** (Function override)
|
|
33
|
+
- Sources the wrapper
|
|
34
|
+
- Exports `redis-cli()` function that overrides the system command
|
|
35
|
+
- All scripts using redis-cli automatically get graceful fallback
|
|
36
|
+
|
|
37
|
+
**3. Coordination scripts** (Updated to source redis-functions.sh)
|
|
38
|
+
- `report-completion.sh` - Main agent completion protocol
|
|
39
|
+
- Other scripts can be updated as needed
|
|
40
|
+
|
|
41
|
+
### How It Works
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Script sources redis-functions.sh
|
|
45
|
+
source ./.claude/skills/cfn-redis-coordination/redis-functions.sh
|
|
46
|
+
|
|
47
|
+
# All redis-cli calls now use the wrapper
|
|
48
|
+
redis-cli LPUSH "key" "value" # Fails gracefully if Redis unavailable
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Execution Flow:**
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
1. Script calls redis-cli LPUSH "key" "value"
|
|
55
|
+
2. redis-functions.sh overrides redis-cli → calls wrapper
|
|
56
|
+
3. Wrapper checks: timeout 1 redis-cli ping
|
|
57
|
+
├─ Success? → Execute command (CLI/Docker mode)
|
|
58
|
+
└─ Timeout? → Print warning, exit 0 (Task mode)
|
|
59
|
+
4. Script continues (no fatal error)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Benefits
|
|
63
|
+
|
|
64
|
+
✅ **No mode detection needed** - Just check if Redis responds
|
|
65
|
+
✅ **Simpler** - One code path, graceful degradation
|
|
66
|
+
✅ **Self-healing** - Works in both Task mode (no Redis) AND CLI mode (has Redis)
|
|
67
|
+
✅ **No memory leak** - If Redis isn't available, commands fail fast (exit 0)
|
|
68
|
+
✅ **Clear feedback** - Informative messages explain what's happening
|
|
69
|
+
✅ **Centralized** - One place to change behavior (redis-cli-wrapper.sh)
|
|
70
|
+
✅ **Backward compatible** - Scripts without redis-functions.sh still work (use system redis-cli)
|
|
71
|
+
|
|
72
|
+
## Usage
|
|
73
|
+
|
|
74
|
+
### For New Scripts
|
|
75
|
+
|
|
76
|
+
Add this at the top of any script that uses Redis:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
#!/bin/bash
|
|
80
|
+
set -euo pipefail
|
|
81
|
+
|
|
82
|
+
# Source centralized Redis functions (provides graceful fallback for Task mode)
|
|
83
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
84
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
85
|
+
|
|
86
|
+
# Now use redis-cli normally
|
|
87
|
+
redis-cli LPUSH "swarm:task-123:done" "complete"
|
|
88
|
+
redis-cli SET "key" "value" EX 3600
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### For Existing Scripts
|
|
92
|
+
|
|
93
|
+
1. Add the source block after `set -euo pipefail`
|
|
94
|
+
2. Remove manual ANTI-023 checks (wrapper handles it)
|
|
95
|
+
3. Simplify redis-cli calls (no need for `-h` / `-p` flags)
|
|
96
|
+
|
|
97
|
+
**Before:**
|
|
98
|
+
```bash
|
|
99
|
+
if [[ -z "${TASK_ID:-}" || -z "${AGENT_ID:-}" ]]; then
|
|
100
|
+
echo "❌ TASK MODE DETECTED - Redis coordination forbidden" >&2
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
redis-cli -h "${REDIS_HOST:-localhost}" -p "${REDIS_PORT:-6379}" LPUSH "key" "value"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**After:**
|
|
108
|
+
```bash
|
|
109
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
110
|
+
|
|
111
|
+
redis-cli LPUSH "key" "value"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Testing Graceful Fallback
|
|
115
|
+
|
|
116
|
+
Test that your script handles Redis unavailability:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# Simulate Task mode (Redis unavailable)
|
|
120
|
+
REDIS_HOST="nonexistent" bash your-script.sh --args
|
|
121
|
+
|
|
122
|
+
# Expected output:
|
|
123
|
+
⚠️ Redis unavailable - command skipped (soft fail)
|
|
124
|
+
💡 This is expected in Task mode (Main Chat coordination)
|
|
125
|
+
🔧 Agents should output JSON directly instead of Redis coordination
|
|
126
|
+
✅ Script completed successfully
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Implementation Details
|
|
130
|
+
|
|
131
|
+
### redis-cli-wrapper.sh
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
#!/bin/bash
|
|
135
|
+
set -euo pipefail
|
|
136
|
+
|
|
137
|
+
REDIS_HOST="${REDIS_HOST:-localhost}"
|
|
138
|
+
REDIS_PORT="${REDIS_PORT:-6379}"
|
|
139
|
+
|
|
140
|
+
# Graceful Redis availability check (1 second timeout)
|
|
141
|
+
if ! timeout 1 redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ping &>/dev/null; then
|
|
142
|
+
# Redis unavailable - likely Task mode
|
|
143
|
+
echo "⚠️ Redis unavailable - command skipped (soft fail)" >&2
|
|
144
|
+
echo "💡 This is expected in Task mode (Main Chat coordination)" >&2
|
|
145
|
+
echo "🔧 Agents should output JSON directly instead of Redis coordination" >&2
|
|
146
|
+
exit 0 # Soft fail - don't break agent execution
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
# Redis available - execute command normally (CLI/Docker mode)
|
|
150
|
+
exec redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" "$@"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Key Features:**
|
|
154
|
+
- 1 second timeout (prevents hanging)
|
|
155
|
+
- Informative error messages
|
|
156
|
+
- Exit 0 (soft fail, agent continues)
|
|
157
|
+
- Respects REDIS_HOST/REDIS_PORT environment variables
|
|
158
|
+
|
|
159
|
+
### redis-functions.sh
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
#!/bin/bash
|
|
163
|
+
|
|
164
|
+
# Get the directory where this script is located
|
|
165
|
+
REDIS_FUNCTIONS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
166
|
+
|
|
167
|
+
# Override redis-cli to always use the wrapper
|
|
168
|
+
redis-cli() {
|
|
169
|
+
"${REDIS_FUNCTIONS_DIR}/redis-cli-wrapper.sh" "$@"
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
# Export the function so it's available in subshells
|
|
173
|
+
export -f redis-cli
|
|
174
|
+
|
|
175
|
+
# Helper: Check if Redis is available (useful for conditional logic)
|
|
176
|
+
is_redis_available() {
|
|
177
|
+
timeout 1 "${REDIS_FUNCTIONS_DIR}/redis-cli-wrapper.sh" ping &>/dev/null
|
|
178
|
+
return $?
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export -f is_redis_available
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Key Features:**
|
|
185
|
+
- Function override (all redis-cli calls use wrapper)
|
|
186
|
+
- Exported for subshells
|
|
187
|
+
- Helper function `is_redis_available()` for conditional logic
|
|
188
|
+
|
|
189
|
+
## Migration Guide
|
|
190
|
+
|
|
191
|
+
### Step 1: Update Core Scripts
|
|
192
|
+
|
|
193
|
+
Update the most critical coordination scripts first:
|
|
194
|
+
|
|
195
|
+
1. `report-completion.sh` ✅ (Already updated)
|
|
196
|
+
2. `collect-confidence-scores.sh`
|
|
197
|
+
3. `invoke-waiting-mode.sh`
|
|
198
|
+
4. `store-context.sh`
|
|
199
|
+
5. `get-context.sh`
|
|
200
|
+
|
|
201
|
+
### Step 2: Test Each Script
|
|
202
|
+
|
|
203
|
+
For each updated script:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Test with Redis available (CLI mode simulation)
|
|
207
|
+
bash script.sh --args
|
|
208
|
+
|
|
209
|
+
# Test with Redis unavailable (Task mode simulation)
|
|
210
|
+
REDIS_HOST="nonexistent" bash script.sh --args
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Step 3: Update Agent Profiles (Optional)
|
|
214
|
+
|
|
215
|
+
Agent profiles can now simplify their Redis usage examples:
|
|
216
|
+
|
|
217
|
+
**Before:**
|
|
218
|
+
```markdown
|
|
219
|
+
redis-cli -h "${REDIS_HOST:-localhost}" -p "${REDIS_PORT:-6379}" LPUSH "key" "value"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**After:**
|
|
223
|
+
```markdown
|
|
224
|
+
# Redis coordination (automatically fails gracefully in Task mode)
|
|
225
|
+
redis-cli LPUSH "key" "value"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Troubleshooting
|
|
229
|
+
|
|
230
|
+
### Issue: "Permission denied" when running wrapper
|
|
231
|
+
|
|
232
|
+
**Solution:**
|
|
233
|
+
```bash
|
|
234
|
+
chmod +x .claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh
|
|
235
|
+
chmod +x .claude/skills/cfn-redis-coordination/redis-functions.sh
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Issue: "$'\r': command not found" (CRLF line endings)
|
|
239
|
+
|
|
240
|
+
**Solution:**
|
|
241
|
+
```bash
|
|
242
|
+
sed -i 's/\r$//' .claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh
|
|
243
|
+
sed -i 's/\r$//' .claude/skills/cfn-redis-coordination/redis-functions.sh
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Issue: Redis commands still hanging
|
|
247
|
+
|
|
248
|
+
**Cause:** Script not sourcing redis-functions.sh
|
|
249
|
+
|
|
250
|
+
**Solution:** Add source line at top of script:
|
|
251
|
+
```bash
|
|
252
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
253
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Performance Impact
|
|
257
|
+
|
|
258
|
+
**Redis Available (CLI/Docker mode):**
|
|
259
|
+
- Ping check: ~1-5ms overhead per script execution
|
|
260
|
+
- Command execution: No overhead (exec replaces process)
|
|
261
|
+
|
|
262
|
+
**Redis Unavailable (Task mode):**
|
|
263
|
+
- Ping timeout: 1 second (one-time per script, not per command)
|
|
264
|
+
- Total overhead: ~1 second per script execution
|
|
265
|
+
- Acceptable for Task mode (not performance-critical)
|
|
266
|
+
|
|
267
|
+
## Security Considerations
|
|
268
|
+
|
|
269
|
+
**Timeout Protection:**
|
|
270
|
+
- 1 second timeout prevents indefinite hanging
|
|
271
|
+
- Protects against network issues
|
|
272
|
+
|
|
273
|
+
**Environment Variables:**
|
|
274
|
+
- Respects REDIS_HOST/REDIS_PORT for configuration
|
|
275
|
+
- No hardcoded credentials
|
|
276
|
+
|
|
277
|
+
**Soft Failure:**
|
|
278
|
+
- Exit 0 prevents cascade failures
|
|
279
|
+
- Agent can continue execution
|
|
280
|
+
|
|
281
|
+
## Success Metrics
|
|
282
|
+
|
|
283
|
+
**Test Results:**
|
|
284
|
+
- ✅ report-completion.sh tested with nonexistent Redis host
|
|
285
|
+
- ✅ All 6 redis-cli calls failed gracefully (exit 0)
|
|
286
|
+
- ✅ Script completed successfully with informative warnings
|
|
287
|
+
- ✅ No memory leaks (commands timeout after 1 second)
|
|
288
|
+
|
|
289
|
+
**Expected Behavior:**
|
|
290
|
+
- CLI mode: Redis available → normal execution
|
|
291
|
+
- Docker mode: Redis available → normal execution
|
|
292
|
+
- Task mode: Redis unavailable → graceful fallback, agent continues
|
|
293
|
+
|
|
294
|
+
## Conclusion
|
|
295
|
+
|
|
296
|
+
The centralized Redis wrapper provides a robust, simple solution to the ANTI-023 memory leak issue. By focusing on **graceful failure** instead of **mode detection**, we achieve:
|
|
297
|
+
|
|
298
|
+
1. **Reliability** - Works regardless of mode detection accuracy
|
|
299
|
+
2. **Simplicity** - One code path, clear behavior
|
|
300
|
+
3. **Maintainability** - Centralized in one wrapper file
|
|
301
|
+
4. **Safety** - No memory leaks, no hanging processes
|
|
302
|
+
|
|
303
|
+
This approach is **production-ready** and can be rolled out incrementally (script by script) without disrupting existing workflows.
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
**See Also:**
|
|
308
|
+
- `docs/architecture/task-mode-redis-safety-patterns.md` - Original ANTI-023 analysis
|
|
309
|
+
- `CLAUDE.md` - CFN Loop execution modes
|
|
310
|
+
- `.claude/skills/cfn-redis-coordination/SKILL.md` - Coordination protocols
|
|
311
|
+
|
|
312
|
+
**Next Steps:**
|
|
313
|
+
1. Update remaining coordination scripts
|
|
314
|
+
2. Test in production CFN Loop execution
|
|
315
|
+
3. Document in agent profiles
|
|
316
|
+
4. Monitor for any edge cases
|
|
317
|
+
|
|
318
|
+
**Version History:**
|
|
319
|
+
- v1.0 (2025-11-16): Initial implementation with graceful fallback
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
set -euo pipefail
|
|
14
14
|
|
|
15
|
+
# Source centralized Redis functions (provides graceful fallback for Task mode)
|
|
16
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
+
source "${SCRIPT_DIR}/redis-functions.sh"
|
|
18
|
+
|
|
15
19
|
# Color codes for terminal output
|
|
16
20
|
COLOR_RESET="\033[0m"
|
|
17
21
|
COLOR_DEBUG="\033[0;36m" # Cyan
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Agent Logging Utility - Dual output (terminal + Redis)
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# source agent-log.sh
|
|
7
|
+
# agent_log "info" "Message here"
|
|
8
|
+
# agent_log "error" "Error occurred"
|
|
9
|
+
#
|
|
10
|
+
# Or as standalone:
|
|
11
|
+
# ./agent-log.sh "info" "Agent started" --agent-id "researcher-1" --task-id "task-123"
|
|
12
|
+
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
# Color codes for terminal output
|
|
16
|
+
COLOR_RESET="\033[0m"
|
|
17
|
+
COLOR_DEBUG="\033[0;36m" # Cyan
|
|
18
|
+
COLOR_INFO="\033[0;32m" # Green
|
|
19
|
+
COLOR_WARN="\033[0;33m" # Yellow
|
|
20
|
+
COLOR_ERROR="\033[0;31m" # Red
|
|
21
|
+
COLOR_AGENT="\033[0;35m" # Magenta
|
|
22
|
+
|
|
23
|
+
# Get color for log level
|
|
24
|
+
get_log_color() {
|
|
25
|
+
local level="$1"
|
|
26
|
+
case "$level" in
|
|
27
|
+
debug) echo "$COLOR_DEBUG" ;;
|
|
28
|
+
info) echo "$COLOR_INFO" ;;
|
|
29
|
+
warn) echo "$COLOR_WARN" ;;
|
|
30
|
+
error) echo "$COLOR_ERROR" ;;
|
|
31
|
+
*) echo "$COLOR_RESET" ;;
|
|
32
|
+
esac
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
# Main logging function
|
|
36
|
+
# Usage: agent_log <level> <message> [--agent-id <id>] [--task-id <id>] [--no-terminal] [--no-redis]
|
|
37
|
+
agent_log() {
|
|
38
|
+
local LEVEL="${1:-info}"
|
|
39
|
+
local MESSAGE="${2:-}"
|
|
40
|
+
local AGENT_ID="${AGENT_ID:-unknown}"
|
|
41
|
+
local TASK_ID="${TASK_ID:-unknown}"
|
|
42
|
+
local REPOSITORY=$(basename "$(pwd)")
|
|
43
|
+
local NO_TERMINAL=false
|
|
44
|
+
local NO_REDIS=false
|
|
45
|
+
|
|
46
|
+
# Parse optional arguments
|
|
47
|
+
shift 2 || true
|
|
48
|
+
while [[ $# -gt 0 ]]; do
|
|
49
|
+
case "$1" in
|
|
50
|
+
--agent-id)
|
|
51
|
+
AGENT_ID="$2"
|
|
52
|
+
shift 2
|
|
53
|
+
;;
|
|
54
|
+
--task-id)
|
|
55
|
+
TASK_ID="$2"
|
|
56
|
+
shift 2
|
|
57
|
+
;;
|
|
58
|
+
--no-terminal)
|
|
59
|
+
NO_TERMINAL=true
|
|
60
|
+
shift
|
|
61
|
+
;;
|
|
62
|
+
--no-redis)
|
|
63
|
+
NO_REDIS=true
|
|
64
|
+
shift
|
|
65
|
+
;;
|
|
66
|
+
*)
|
|
67
|
+
shift
|
|
68
|
+
;;
|
|
69
|
+
esac
|
|
70
|
+
done
|
|
71
|
+
|
|
72
|
+
local TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
73
|
+
local COLOR=$(get_log_color "$LEVEL")
|
|
74
|
+
|
|
75
|
+
# 1. Terminal output (with colors)
|
|
76
|
+
if [ "$NO_TERMINAL" = false ]; then
|
|
77
|
+
echo -e "${COLOR}[${LEVEL^^}]${COLOR_RESET} ${COLOR_AGENT}[${AGENT_ID}]${COLOR_RESET} ${MESSAGE}"
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# 2. File output (no colors, in /tmp)
|
|
81
|
+
local LOG_FILE="/tmp/agent-${AGENT_ID}.log"
|
|
82
|
+
echo "[${TIMESTAMP}] [${LEVEL^^}] [${AGENT_ID}] ${MESSAGE}" >> "$LOG_FILE"
|
|
83
|
+
|
|
84
|
+
# 3. Redis pub/sub (for portal)
|
|
85
|
+
if [ "$NO_REDIS" = false ]; then
|
|
86
|
+
local LOG_PAYLOAD=$(cat <<EOF
|
|
87
|
+
{
|
|
88
|
+
"level": "${LEVEL}",
|
|
89
|
+
"message": "${MESSAGE}",
|
|
90
|
+
"agentId": "${AGENT_ID}",
|
|
91
|
+
"taskId": "${TASK_ID}",
|
|
92
|
+
"repository": "${REPOSITORY}",
|
|
93
|
+
"timestamp": "${TIMESTAMP}"
|
|
94
|
+
}
|
|
95
|
+
EOF
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# Publish to Redis channel: swarm:<task-id>:logs
|
|
99
|
+
redis-cli publish "swarm:${TASK_ID}:logs" "$LOG_PAYLOAD" > /dev/null 2>&1 || true
|
|
100
|
+
|
|
101
|
+
# Also add to sorted set for persistence (with timestamp as score)
|
|
102
|
+
local SCORE=$(date +%s)
|
|
103
|
+
redis-cli zadd "swarm:${TASK_ID}:logs:history" "$SCORE" "$LOG_PAYLOAD" > /dev/null 2>&1 || true
|
|
104
|
+
|
|
105
|
+
# Set TTL on history (7 days)
|
|
106
|
+
redis-cli expire "swarm:${TASK_ID}:logs:history" 604800 > /dev/null 2>&1 || true
|
|
107
|
+
fi
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# If script is executed directly (not sourced)
|
|
111
|
+
if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
|
|
112
|
+
if [ $# -lt 2 ]; then
|
|
113
|
+
echo "Usage: $0 <level> <message> [--agent-id <id>] [--task-id <id>]"
|
|
114
|
+
echo ""
|
|
115
|
+
echo "Levels: debug, info, warn, error"
|
|
116
|
+
echo ""
|
|
117
|
+
echo "Examples:"
|
|
118
|
+
echo " $0 info \"Agent started\" --agent-id researcher-1 --task-id task-123"
|
|
119
|
+
echo " $0 error \"Connection failed\" --agent-id reviewer-2 --task-id task-456"
|
|
120
|
+
exit 1
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
agent_log "$@"
|
|
124
|
+
fi
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Redis Coordination Skill - Agent Emergency Recovery
|
|
3
|
-
# Version: 1.0.0
|
|
4
|
-
# Last Updated: 2025-10-19
|
|
5
|
-
|
|
6
|
-
# Strict error handling
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
# Default values
|
|
10
|
-
TASK_ID=""
|
|
11
|
-
AGENT_ID=""
|
|
12
|
-
RECOVERY_MODE="soft" # Options: soft, hard
|
|
13
|
-
|
|
14
|
-
# Parse command-line arguments
|
|
15
|
-
while [[ $# -gt 0 ]]; do
|
|
16
|
-
case "$1" in
|
|
17
|
-
--task-id)
|
|
18
|
-
TASK_ID="$2"
|
|
19
|
-
shift 2
|
|
20
|
-
;;
|
|
21
|
-
--agent-id)
|
|
22
|
-
AGENT_ID="$2"
|
|
23
|
-
shift 2
|
|
24
|
-
;;
|
|
25
|
-
--mode)
|
|
26
|
-
RECOVERY_MODE="$2"
|
|
27
|
-
shift 2
|
|
28
|
-
;;
|
|
29
|
-
*)
|
|
30
|
-
echo "Unknown parameter: $1"
|
|
31
|
-
exit 1
|
|
32
|
-
;;
|
|
33
|
-
esac
|
|
34
|
-
done
|
|
35
|
-
|
|
36
|
-
# Validate required parameters
|
|
37
|
-
if [[ -z "$TASK_ID" || -z "$AGENT_ID" ]]; then
|
|
38
|
-
echo "Error: task-id and agent-id are required"
|
|
39
|
-
exit 1
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
# Log recovery attempt
|
|
43
|
-
echo "[$(date -u)] Attempting ${RECOVERY_MODE} recovery for agent: ${AGENT_ID}" >> /var/log/claude-flow/agent-recovery.log
|
|
44
|
-
|
|
45
|
-
# Retrieve agent context before recovery
|
|
46
|
-
AGENT_CONTEXT=$(redis-cli get "swarm:${TASK_ID}:${AGENT_ID}:context")
|
|
47
|
-
|
|
48
|
-
# Recovery actions based on mode
|
|
49
|
-
case "$RECOVERY_MODE" in
|
|
50
|
-
"soft")
|
|
51
|
-
# Soft recovery: Spawn new agent with previous context
|
|
52
|
-
|
|
53
|
-
--task-id "$TASK_ID" \
|
|
54
|
-
--recovery-context "$AGENT_CONTEXT"
|
|
55
|
-
;;
|
|
56
|
-
"hard")
|
|
57
|
-
# Hard recovery: Full agent replacement
|
|
58
|
-
|
|
59
|
-
--task-id "$TASK_ID" \
|
|
60
|
-
--mode replace \
|
|
61
|
-
--recovery-context "$AGENT_CONTEXT"
|
|
62
|
-
;;
|
|
63
|
-
*)
|
|
64
|
-
echo "Invalid recovery mode: ${RECOVERY_MODE}"
|
|
65
|
-
exit 1
|
|
66
|
-
;;
|
|
67
|
-
esac
|
|
68
|
-
|
|
69
|
-
# Update active agents set
|
|
70
|
-
redis-cli sadd "swarm:${TASK_ID}:active-agents" "$AGENT_ID"
|
|
71
|
-
|
|
72
|
-
# Log recovery completion
|
|
73
|
-
echo "[$(date -u)] Recovery completed for agent: ${AGENT_ID}" >> /var/log/claude-flow/agent-recovery.log
|
|
74
|
-
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Redis Coordination Skill - Agent Emergency Recovery
|
|
3
|
+
# Version: 1.0.0
|
|
4
|
+
# Last Updated: 2025-10-19
|
|
5
|
+
|
|
6
|
+
# Strict error handling
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Default values
|
|
10
|
+
TASK_ID=""
|
|
11
|
+
AGENT_ID=""
|
|
12
|
+
RECOVERY_MODE="soft" # Options: soft, hard
|
|
13
|
+
|
|
14
|
+
# Parse command-line arguments
|
|
15
|
+
while [[ $# -gt 0 ]]; do
|
|
16
|
+
case "$1" in
|
|
17
|
+
--task-id)
|
|
18
|
+
TASK_ID="$2"
|
|
19
|
+
shift 2
|
|
20
|
+
;;
|
|
21
|
+
--agent-id)
|
|
22
|
+
AGENT_ID="$2"
|
|
23
|
+
shift 2
|
|
24
|
+
;;
|
|
25
|
+
--mode)
|
|
26
|
+
RECOVERY_MODE="$2"
|
|
27
|
+
shift 2
|
|
28
|
+
;;
|
|
29
|
+
*)
|
|
30
|
+
echo "Unknown parameter: $1"
|
|
31
|
+
exit 1
|
|
32
|
+
;;
|
|
33
|
+
esac
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
# Validate required parameters
|
|
37
|
+
if [[ -z "$TASK_ID" || -z "$AGENT_ID" ]]; then
|
|
38
|
+
echo "Error: task-id and agent-id are required"
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Log recovery attempt
|
|
43
|
+
echo "[$(date -u)] Attempting ${RECOVERY_MODE} recovery for agent: ${AGENT_ID}" >> /var/log/claude-flow/agent-recovery.log
|
|
44
|
+
|
|
45
|
+
# Retrieve agent context before recovery
|
|
46
|
+
AGENT_CONTEXT=$(redis-cli get "swarm:${TASK_ID}:${AGENT_ID}:context")
|
|
47
|
+
|
|
48
|
+
# Recovery actions based on mode
|
|
49
|
+
case "$RECOVERY_MODE" in
|
|
50
|
+
"soft")
|
|
51
|
+
# Soft recovery: Spawn new agent with previous context
|
|
52
|
+
cfn-spawn agent "$AGENT_ID" \
|
|
53
|
+
--task-id "$TASK_ID" \
|
|
54
|
+
--recovery-context "$AGENT_CONTEXT"
|
|
55
|
+
;;
|
|
56
|
+
"hard")
|
|
57
|
+
# Hard recovery: Full agent replacement
|
|
58
|
+
cfn-spawn agent "$AGENT_ID" \
|
|
59
|
+
--task-id "$TASK_ID" \
|
|
60
|
+
--mode replace \
|
|
61
|
+
--recovery-context "$AGENT_CONTEXT"
|
|
62
|
+
;;
|
|
63
|
+
*)
|
|
64
|
+
echo "Invalid recovery mode: ${RECOVERY_MODE}"
|
|
65
|
+
exit 1
|
|
66
|
+
;;
|
|
67
|
+
esac
|
|
68
|
+
|
|
69
|
+
# Update active agents set
|
|
70
|
+
redis-cli sadd "swarm:${TASK_ID}:active-agents" "$AGENT_ID"
|
|
71
|
+
|
|
72
|
+
# Log recovery completion
|
|
73
|
+
echo "[$(date -u)] Recovery completed for agent: ${AGENT_ID}" >> /var/log/claude-flow/agent-recovery.log
|
|
74
|
+
|
|
75
75
|
exit 0
|
|
@@ -18,6 +18,36 @@
|
|
|
18
18
|
|
|
19
19
|
set -euo pipefail
|
|
20
20
|
|
|
21
|
+
# Validate required tools are available
|
|
22
|
+
MISSING_TOOLS=()
|
|
23
|
+
for TOOL in redis-cli jq bc; do
|
|
24
|
+
if ! command -v "$TOOL" >/dev/null 2>&1; then
|
|
25
|
+
MISSING_TOOLS+=("$TOOL")
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
if [ ${#MISSING_TOOLS[@]} -gt 0 ]; then
|
|
30
|
+
echo "❌ ERROR: Required tools not found: ${MISSING_TOOLS[*]}" >&2
|
|
31
|
+
echo " Install missing tools and retry" >&2
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Source centralized Redis functions (provides graceful fallback for Task mode)
|
|
36
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
37
|
+
|
|
38
|
+
# Verify redis-functions.sh exists and is readable before sourcing
|
|
39
|
+
REDIS_FUNCTIONS="${SCRIPT_DIR}/redis-functions.sh"
|
|
40
|
+
if [ ! -r "$REDIS_FUNCTIONS" ]; then
|
|
41
|
+
echo "❌ ERROR: Cannot read redis-functions.sh at: $REDIS_FUNCTIONS" >&2
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Source with explicit error handling
|
|
46
|
+
if ! source "$REDIS_FUNCTIONS"; then
|
|
47
|
+
echo "❌ ERROR: Failed to source redis-functions.sh" >&2
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
21
51
|
# Debug mode (set DEBUG=true for verbose output)
|
|
22
52
|
DEBUG="${DEBUG:-false}"
|
|
23
53
|
|