claude-flow-novice 2.15.11 → 2.16.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/cfn-extras/agents/cfn-v3-coordinator.md +517 -0
- package/.claude/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +1 -1
- package/.claude/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +1 -1
- package/.claude/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +1 -1
- package/.claude/cfn-extras/skills/google-sheets-progress/SKILL.md +1 -1
- package/.claude/commands/CFN_LOOP_FRONTEND.md +1 -1
- package/.claude/commands/cfn-loop-cli.md +214 -442
- package/.claude/commands/cfn-loop-frontend.md +1 -1
- package/.claude/commands/cfn-loop-task.md +2 -2
- package/.claude/commands/cfn-loop-trigger.md +114 -0
- package/.claude/commands/deprecated/cfn-loop.md +2 -2
- package/.claude/hooks/cfn-invoke-post-edit-ts.sh +100 -0
- package/.claude/hooks/cfn-invoke-post-edit-ts.sh.backup +78 -0
- package/.claude/hooks/cfn-invoke-post-edit.sh +53 -5
- package/.claude/hooks/cfn-invoke-post-edit.sh.backup +87 -0
- package/.claude/hooks/cfn-invoke-pre-edit-ts.sh +116 -0
- package/.claude/hooks/cfn-invoke-pre-edit-ts.sh.backup +94 -0
- package/.claude/hooks/cfn-invoke-pre-edit.sh +22 -0
- package/.claude/hooks/cfn-invoke-pre-edit.sh.backup +88 -0
- package/.claude/hooks/cfn-post-edit.config.json +9 -2
- package/.claude/root-claude-distribute/CFN-CLAUDE.md +1 -1
- package/.claude/skills/cfn-agent-spawning/SKILL.md +48 -1
- package/.claude/skills/cfn-agent-spawning/SKILL.md.backup +135 -0
- package/.claude/skills/cfn-agent-spawning/TYPESCRIPT_MIGRATION.md +567 -0
- package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +22 -0
- package/.claude/skills/{cfn-redis-coordination/check-dependencies.sh → cfn-agent-spawning/check-dependencies.sh.backup} +3 -5
- package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -0
- package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh.backup +127 -0
- package/.claude/skills/cfn-agent-spawning/parse-agent-provider.sh +22 -0
- package/.claude/skills/cfn-agent-spawning/parse-agent-provider.sh.backup +59 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent-wrapper.sh +63 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent-wrapper.sh.backup +41 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +26 -1
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +22 -0
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh.backup +613 -0
- package/.claude/skills/cfn-agent-spawning/spawn-worker.sh +22 -0
- package/.claude/skills/cfn-agent-spawning/spawn-worker.sh.backup +176 -0
- package/.claude/skills/cfn-backlog-management/SKILL.md +1 -1
- package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/metadata.json +8 -0
- package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/original +271 -0
- package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/revert.sh +7 -0
- package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/metadata.json +8 -0
- package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/original +325 -0
- package/.claude/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/revert.sh +7 -0
- package/.claude/skills/cfn-loop-orchestration/CLI_IMPLEMENTATION_SUMMARY.md +330 -0
- package/.claude/skills/cfn-loop-orchestration/CONFIGURATION_IMPROVEMENTS.md +318 -0
- package/.claude/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_MIGRATION.md +308 -0
- package/.claude/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_QUICK_START.md +378 -0
- package/.claude/skills/cfn-loop-orchestration/E2E_VALIDATION_REPORT.md +262 -0
- package/.claude/skills/cfn-loop-orchestration/IMPLEMENTATION_SUMMARY.md +319 -519
- package/.claude/skills/cfn-loop-orchestration/NORTH_STAR_E2E_REPORT.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/NORTH_STAR_EXECUTION_SUMMARY.md +403 -0
- package/.claude/skills/cfn-loop-orchestration/NORTH_STAR_INDEX.md +323 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +159 -48
- package/.claude/skills/cfn-loop-orchestration/SPAWN_AGENTS_IMPLEMENTATION.md +188 -0
- package/.claude/skills/cfn-loop-orchestration/TEST_COVERAGE_REPORT.md +335 -0
- package/.claude/skills/cfn-loop-orchestration/TEST_COVERAGE_SUMMARY.md +456 -0
- package/.claude/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_REPORT.md +709 -0
- package/.claude/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_SUMMARY.md +257 -0
- package/.claude/skills/cfn-loop-orchestration/VALIDATION_REPORT.md +572 -0
- package/.claude/skills/cfn-loop-orchestration/VALIDATION_SUMMARY.txt +196 -0
- package/.claude/skills/cfn-loop-orchestration/VALIDATOR_MODULE_GUIDE.md +526 -0
- package/.claude/skills/cfn-loop-orchestration/archive/legacy-bash/README.md +167 -0
- package/.claude/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate-enhanced.sh +548 -0
- package/.claude/skills/cfn-loop-orchestration/{orchestrate-wrapper.sh → archive/legacy-bash/orchestrate-wrapper.sh} +11 -1
- package/.claude/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate.sh +182 -0
- package/.claude/skills/cfn-loop-orchestration/e2e-validation-fixed.js +240 -0
- package/.claude/skills/cfn-loop-orchestration/e2e-validation.js +213 -0
- package/.claude/skills/cfn-loop-orchestration/package-lock.json +3 -0
- package/.claude/skills/cfn-loop-orchestration/package.json +4 -0
- package/.claude/skills/cfn-loop-orchestration/run-north-star-e2e.ts +210 -0
- package/.claude/skills/cfn-loop-orchestration/src/cli/orchestrator-cli.ts +396 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR.md +564 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR_QUICK_REF.md +241 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_IMPLEMENTATION.md +375 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_QUICK_REFERENCE.md +362 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_README.md +307 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_USAGE_GUIDE.md +508 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/confidence-aggregator.ts +473 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/consensus.ts +1 -1
- package/.claude/skills/cfn-loop-orchestration/src/helpers/context-injector.ts +349 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/context-lookup.ts +486 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/deliverable-verifier.ts +6 -2
- package/.claude/skills/cfn-loop-orchestration/src/helpers/gate-check.ts +1 -1
- package/.claude/skills/cfn-loop-orchestration/src/helpers/product-owner-decision.ts +316 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/spawn-agents.ts +357 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/validator.ts +276 -0
- package/.claude/skills/cfn-loop-orchestration/src/index.ts +2 -0
- package/.claude/skills/cfn-loop-orchestration/src/orchestrate.ts +743 -2
- package/.claude/skills/cfn-loop-orchestration/src/types.ts +56 -0
- package/.claude/skills/cfn-loop-orchestration/test-cli.sh +92 -0
- package/.claude/skills/cfn-loop-orchestration/test-typescript-integration.sh +442 -0
- package/.claude/skills/cfn-loop-orchestration/tests/agent-spawner.test.ts +124 -0
- package/.claude/skills/cfn-loop-orchestration/tests/confidence-aggregator.test.ts +604 -0
- package/.claude/skills/cfn-loop-orchestration/tests/context-injector.test.ts +561 -0
- package/.claude/skills/cfn-loop-orchestration/tests/context-lookup.test.ts +661 -0
- package/.claude/skills/cfn-loop-orchestration/tests/deliverable-verifier.test.ts +2 -2
- package/.claude/skills/cfn-loop-orchestration/tests/gate-check-edge-cases.test.ts +422 -0
- package/.claude/skills/cfn-loop-orchestration/tests/gate-checker.test.ts +276 -0
- package/.claude/skills/cfn-loop-orchestration/tests/logger.test.ts +291 -0
- package/.claude/skills/cfn-loop-orchestration/tests/north-star-e2e.test.ts +334 -0
- package/.claude/skills/cfn-loop-orchestration/tests/redis-coordinator.test.ts +321 -0
- package/.claude/skills/cfn-loop-orchestration/tests/spawn-agents.test.ts +284 -0
- package/.claude/skills/cfn-loop-orchestration/tests/validator.test.ts +643 -0
- package/.claude/skills/cfn-loop-validation/IMPLEMENTATION_SUMMARY.md +672 -0
- package/.claude/skills/cfn-loop-validation/INDEX.md +531 -0
- package/.claude/skills/cfn-loop-validation/README_TYPESCRIPT.md +454 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +48 -1
- package/.claude/skills/cfn-loop-validation/SKILL.md.backup +353 -0
- package/.claude/skills/cfn-loop-validation/SKILL_TYPESCRIPT.md +782 -0
- package/.claude/skills/cfn-loop-validation/VAPOR_DETECTION_EXAMPLES.md +598 -0
- package/.claude/skills/cfn-loop-validation/check-dependencies.sh +22 -0
- package/{claude-assets/skills/cfn-redis-coordination/check-dependencies.sh → .claude/skills/cfn-loop-validation/check-dependencies.sh.backup} +4 -5
- package/.claude/skills/cfn-loop-validation/detect-vapor.sh +59 -0
- package/.claude/skills/cfn-loop-validation/detect-vapor.sh.backup +37 -0
- package/.claude/skills/cfn-loop-validation/dist/.tsbuildinfo +1 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts +14 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.js +185 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/detect-vapor.js.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts +14 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.js +176 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-deliverables.js.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts +19 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.js +123 -0
- package/.claude/skills/cfn-loop-validation/dist/cli/validate-gate.js.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/types.d.ts +156 -0
- package/.claude/skills/cfn-loop-validation/dist/types.d.ts.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/types.js +66 -0
- package/.claude/skills/cfn-loop-validation/dist/types.js.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/validator.d.ts +85 -0
- package/.claude/skills/cfn-loop-validation/dist/validator.d.ts.map +1 -0
- package/.claude/skills/cfn-loop-validation/dist/validator.js +411 -0
- package/.claude/skills/cfn-loop-validation/dist/validator.js.map +1 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +22 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh.backup +252 -0
- package/.claude/skills/cfn-loop-validation/package.json +93 -0
- package/.claude/skills/cfn-loop-validation/src/cli/detect-vapor.ts +177 -0
- package/.claude/skills/cfn-loop-validation/src/cli/validate-deliverables.ts +161 -0
- package/.claude/skills/cfn-loop-validation/src/cli/validate-gate.ts +139 -0
- package/.claude/skills/cfn-loop-validation/src/types.ts +215 -0
- package/.claude/skills/cfn-loop-validation/src/validator.ts +503 -0
- package/.claude/skills/cfn-loop-validation/tests/validator.test.ts +537 -0
- package/.claude/skills/{cfn-redis-coordination → cfn-loop-validation}/tsconfig.json +34 -31
- package/.claude/skills/cfn-loop-validation/validate-deliverables.sh +59 -0
- package/.claude/skills/cfn-loop-validation/validate-deliverables.sh.backup +37 -0
- package/.claude/skills/cfn-loop-validation/validate-gate.sh +63 -0
- package/.claude/skills/cfn-loop-validation/validate-gate.sh.backup +41 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh +22 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh.backup +134 -0
- package/.claude/skills/cfn-product-owner-decision/SKILL.md +479 -147
- package/.claude/skills/cfn-product-owner-decision/TYPESCRIPT_IMPLEMENTATION.md +653 -0
- package/.claude/skills/cfn-product-owner-decision/{execute-decision.sh → archive/legacy-bash/execute-decision.sh} +24 -2
- package/.claude/skills/pre-edit-backup/SKILL.md +324 -0
- package/.claude/skills/pre-edit-backup/SKILL.md.backup +277 -0
- package/.claude/skills/pre-edit-backup/backup.sh +22 -0
- package/.claude/skills/pre-edit-backup/backup.sh.backup +107 -0
- package/claude-assets/agents/cfn-dev-team/analysts/root-cause-analyst.md +2 -2
- package/claude-assets/agents/cfn-dev-team/architecture/base-template-generator.md +1 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +3 -2
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +1 -0
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +2 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +1 -0
- package/claude-assets/agents/cfn-dev-team/dev-ops/devops-engineer.md +11 -1
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +58 -35
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +2 -2
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +47 -37
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +18 -18
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +40 -58
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +19 -21
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +20 -29
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +15 -19
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +15 -10
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +16 -11
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +16 -26
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +18 -22
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +17 -21
- package/claude-assets/agents/cfn-dev-team/documentation/pseudocode.md +1 -1
- package/claude-assets/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +1 -1
- package/claude-assets/agents/cfn-dev-team/product-owners/cto-agent.md +1 -1
- package/claude-assets/agents/cfn-dev-team/product-owners/power-user-persona.md +1 -1
- package/claude-assets/agents/cfn-dev-team/product-owners/product-owner.md +1 -5
- package/claude-assets/agents/cfn-dev-team/reviewers/code-reviewer.md +20 -51
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +22 -71
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +21 -64
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +22 -67
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +24 -68
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +8 -36
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +9 -38
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +17 -55
- 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 +18 -56
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +9 -37
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +18 -56
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +18 -49
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +8 -37
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +7 -27
- package/claude-assets/agents/cfn-dev-team/testers/unit/tdd-london-unit-swarm.md +1 -1
- package/claude-assets/agents/cfn-dev-team/utility/agent-builder.md +11 -0
- package/claude-assets/agents/cfn-dev-team/utility/analyst.md +13 -29
- package/claude-assets/agents/cfn-dev-team/utility/claude-code-expert.md +1 -1
- package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +13 -13
- package/claude-assets/agents/cfn-dev-team/utility/context-curator.md +7 -2
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +6 -11
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +121 -715
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +13 -22
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +147 -573
- package/claude-assets/agents/custom/cfn-docker-expert.md +103 -0
- package/claude-assets/agents/custom/cfn-loops-cli-expert.md +438 -0
- package/claude-assets/agents/custom/cfn-redis-operations.md +529 -529
- package/claude-assets/agents/custom/cfn-system-expert.md +1 -1
- package/claude-assets/agents/custom/trigger-dev-expert.md +369 -0
- package/claude-assets/agents/docker-team/micro-sprint-planner.md +747 -747
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
- package/claude-assets/cfn-extras/agents/cfn-v3-coordinator.md +517 -0
- package/claude-assets/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +1 -1
- package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +1 -1
- package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +1 -1
- package/claude-assets/cfn-extras/skills/google-sheets-progress/SKILL.md +1 -1
- package/claude-assets/commands/CFN_LOOP_FRONTEND.md +1 -1
- package/claude-assets/commands/cfn-loop-cli.md +214 -442
- package/claude-assets/commands/cfn-loop-frontend.md +1 -1
- package/claude-assets/commands/cfn-loop-task.md +2 -2
- package/claude-assets/commands/cfn-loop-trigger.md +114 -0
- package/claude-assets/commands/deprecated/cfn-loop.md +2 -2
- package/claude-assets/hooks/GIT-HOOKS-USAGE-EXAMPLES.md +116 -0
- package/claude-assets/hooks/README-GIT-HOOKS.md +443 -0
- package/claude-assets/hooks/SKILL.md +518 -0
- package/claude-assets/hooks/SKILL.md.backup +471 -0
- package/claude-assets/hooks/cfn-invoke-post-edit-ts.sh +100 -0
- package/claude-assets/hooks/cfn-invoke-post-edit-ts.sh.backup +78 -0
- package/claude-assets/hooks/cfn-invoke-post-edit.sh +53 -5
- package/claude-assets/hooks/cfn-invoke-post-edit.sh.backup +87 -0
- package/claude-assets/hooks/cfn-invoke-pre-edit-ts.sh +116 -0
- package/claude-assets/hooks/cfn-invoke-pre-edit-ts.sh.backup +94 -0
- package/claude-assets/hooks/cfn-invoke-pre-edit.sh +22 -0
- package/claude-assets/hooks/cfn-invoke-pre-edit.sh.backup +88 -0
- package/claude-assets/hooks/cfn-post-edit.config.json +9 -2
- package/claude-assets/hooks/install-git-hooks.sh +243 -0
- package/claude-assets/hooks/subagent-start.sh +98 -0
- package/claude-assets/hooks/subagent-stop.sh +93 -0
- package/claude-assets/hooks/validators/credential-scanner.sh +172 -0
- package/claude-assets/root-claude-distribute/CFN-CLAUDE.md +1 -1
- package/claude-assets/skills/cfn-agent-selection-with-fallback/DELIVERABLES.md +409 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/IMPLEMENTATION_SUMMARY.md +396 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/INTEGRATION_GUIDE.md +308 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/QUICK_REFERENCE.md +239 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md +107 -1
- package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md.backup +302 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/TYPESCRIPT_MIGRATION.md +295 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/agent-selector.cjs +297 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/agent-selector.js +297 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/cli.cjs +96 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/dist/cli.js +96 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents-ts.sh +45 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents-ts.sh.backup +23 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh +22 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh.backup +173 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/src/agent-selector.test.ts +357 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/src/agent-selector.ts +350 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/src/cli.ts +74 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh +22 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh.backup +71 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/tsconfig.json +18 -0
- package/claude-assets/skills/cfn-agent-spawning/SKILL.md +48 -1
- package/claude-assets/skills/cfn-agent-spawning/SKILL.md.backup +135 -0
- package/claude-assets/skills/cfn-agent-spawning/TYPESCRIPT_MIGRATION.md +567 -0
- package/claude-assets/skills/cfn-agent-spawning/check-dependencies.sh +22 -0
- package/claude-assets/skills/cfn-agent-spawning/check-dependencies.sh.backup +30 -0
- package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -0
- package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh.backup +127 -0
- package/claude-assets/skills/cfn-agent-spawning/parse-agent-provider.sh +22 -0
- package/claude-assets/skills/cfn-agent-spawning/parse-agent-provider.sh.backup +59 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent-wrapper.sh +63 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent-wrapper.sh.backup +41 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +26 -1
- package/claude-assets/skills/cfn-agent-spawning/spawn-templates.sh +22 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-templates.sh.backup +613 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-worker.sh +22 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-worker.sh.backup +176 -0
- package/claude-assets/skills/cfn-backlog-management/SKILL.md +1 -1
- package/claude-assets/skills/cfn-coordination/agent-completion.sh.backup +36 -0
- package/claude-assets/skills/cfn-coordination/coordination-signal.sh.backup +36 -0
- package/claude-assets/skills/cfn-coordination/coordination-wait.sh.backup +36 -0
- package/claude-assets/skills/cfn-dependency-ingestion/README.md +101 -0
- package/claude-assets/skills/cfn-dependency-ingestion/SKILL.md +397 -0
- package/claude-assets/skills/cfn-dependency-ingestion/build.sh +23 -0
- package/claude-assets/skills/cfn-dependency-ingestion/dist/ingest-dependencies.js +478 -0
- package/claude-assets/skills/cfn-dependency-ingestion/ingest-dependencies.sh +295 -0
- package/claude-assets/skills/cfn-dependency-ingestion/ingest.sh +237 -0
- package/claude-assets/skills/cfn-dependency-ingestion/manifests/cli-mode-dependencies.txt +73 -0
- package/claude-assets/skills/cfn-dependency-ingestion/manifests/shared-dependencies.txt +57 -0
- package/claude-assets/skills/cfn-dependency-ingestion/manifests/trigger-dev-dependencies.txt +82 -0
- package/claude-assets/skills/cfn-dependency-ingestion/manifests/trigger-mode-dependencies.txt +80 -0
- package/claude-assets/skills/cfn-dependency-ingestion/src/ingest-dependencies.ts +563 -0
- package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +14 -4
- package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/metadata.json +8 -0
- package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/original +271 -0
- package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763619700_33aff4a69b99159e4e849107ebc4d09f/revert.sh +7 -0
- package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/metadata.json +8 -0
- package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/original +325 -0
- package/claude-assets/skills/cfn-loop-orchestration/.backups/unknown/1763671642_06496e8c399a79db08167cc00ed4b31e/revert.sh +7 -0
- package/claude-assets/skills/cfn-loop-orchestration/CLI_IMPLEMENTATION_SUMMARY.md +330 -0
- package/claude-assets/skills/cfn-loop-orchestration/CONFIGURATION_IMPROVEMENTS.md +318 -0
- package/claude-assets/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_MIGRATION.md +308 -0
- package/claude-assets/skills/cfn-loop-orchestration/CONTEXT_LOOKUP_QUICK_START.md +378 -0
- package/claude-assets/skills/cfn-loop-orchestration/E2E_VALIDATION_REPORT.md +262 -0
- package/claude-assets/skills/cfn-loop-orchestration/IMPLEMENTATION_SUMMARY.md +319 -519
- package/claude-assets/skills/cfn-loop-orchestration/NORTH_STAR_E2E_REPORT.md +299 -0
- package/claude-assets/skills/cfn-loop-orchestration/NORTH_STAR_EXECUTION_SUMMARY.md +403 -0
- package/claude-assets/skills/cfn-loop-orchestration/NORTH_STAR_INDEX.md +323 -0
- package/claude-assets/skills/cfn-loop-orchestration/SKILL.md +159 -48
- package/claude-assets/skills/cfn-loop-orchestration/SPAWN_AGENTS_IMPLEMENTATION.md +188 -0
- package/claude-assets/skills/cfn-loop-orchestration/TEST_COVERAGE_REPORT.md +335 -0
- package/claude-assets/skills/cfn-loop-orchestration/TEST_COVERAGE_SUMMARY.md +456 -0
- package/claude-assets/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_REPORT.md +709 -0
- package/claude-assets/skills/cfn-loop-orchestration/TYPESCRIPT_INTEGRATION_SUMMARY.md +257 -0
- package/claude-assets/skills/cfn-loop-orchestration/VALIDATION_REPORT.md +572 -0
- package/claude-assets/skills/cfn-loop-orchestration/VALIDATION_SUMMARY.txt +196 -0
- package/claude-assets/skills/cfn-loop-orchestration/VALIDATOR_MODULE_GUIDE.md +526 -0
- package/claude-assets/skills/cfn-loop-orchestration/archive/legacy-bash/README.md +167 -0
- package/claude-assets/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate-enhanced.sh +548 -0
- package/claude-assets/skills/cfn-loop-orchestration/{orchestrate-wrapper.sh → archive/legacy-bash/orchestrate-wrapper.sh} +11 -1
- package/claude-assets/skills/cfn-loop-orchestration/archive/legacy-bash/orchestrate.sh +182 -0
- package/claude-assets/skills/cfn-loop-orchestration/e2e-validation-fixed.js +240 -0
- package/claude-assets/skills/cfn-loop-orchestration/e2e-validation.js +213 -0
- package/claude-assets/skills/cfn-loop-orchestration/package-lock.json +3 -0
- package/claude-assets/skills/cfn-loop-orchestration/package.json +4 -0
- package/claude-assets/skills/cfn-loop-orchestration/run-north-star-e2e.ts +210 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/cli/orchestrator-cli.ts +396 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR.md +564 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONFIDENCE_AGGREGATOR_QUICK_REF.md +241 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_IMPLEMENTATION.md +375 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_QUICK_REFERENCE.md +362 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_README.md +307 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/CONTEXT_INJECTOR_USAGE_GUIDE.md +508 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/confidence-aggregator.ts +473 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/consensus.ts +1 -1
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/context-injector.ts +349 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/context-lookup.ts +486 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/deliverable-verifier.ts +6 -2
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/gate-check.ts +1 -1
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/product-owner-decision.ts +316 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/spawn-agents.ts +357 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/validator.ts +276 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/index.ts +2 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/orchestrate.ts +743 -2
- package/claude-assets/skills/cfn-loop-orchestration/src/types.ts +56 -0
- package/claude-assets/skills/cfn-loop-orchestration/test-cli.sh +92 -0
- package/claude-assets/skills/cfn-loop-orchestration/test-typescript-integration.sh +442 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/agent-spawner.test.ts +124 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/confidence-aggregator.test.ts +604 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/context-injector.test.ts +561 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/context-lookup.test.ts +661 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/deliverable-verifier.test.ts +2 -2
- package/claude-assets/skills/cfn-loop-orchestration/tests/gate-check-edge-cases.test.ts +422 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/gate-checker.test.ts +276 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/logger.test.ts +291 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/north-star-e2e.test.ts +334 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/redis-coordinator.test.ts +321 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/spawn-agents.test.ts +284 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/validator.test.ts +643 -0
- package/claude-assets/skills/cfn-loop-output-processing/.eslintrc.json +33 -0
- package/claude-assets/skills/cfn-loop-output-processing/DELIVERY_SUMMARY.txt +462 -0
- package/claude-assets/skills/cfn-loop-output-processing/DEPRECATION_NOTICE.md +183 -0
- package/claude-assets/skills/cfn-loop-output-processing/EXAMPLES.md +609 -0
- package/claude-assets/skills/cfn-loop-output-processing/IMPLEMENTATION_SUMMARY.md +418 -0
- package/claude-assets/skills/cfn-loop-output-processing/INDEX.md +531 -0
- package/claude-assets/skills/cfn-loop-output-processing/MIGRATION.md +362 -0
- package/claude-assets/skills/cfn-loop-output-processing/README.md +114 -0
- package/claude-assets/skills/cfn-loop-output-processing/SKILL.md +633 -0
- package/{.claude/skills/cfn-docker-redis-coordination → claude-assets/skills/cfn-loop-output-processing}/jest.config.js +7 -15
- package/claude-assets/skills/cfn-loop-output-processing/package.json +50 -0
- package/claude-assets/skills/cfn-loop-output-processing/src/cli/process-loop2.ts +195 -0
- package/claude-assets/skills/cfn-loop-output-processing/src/cli/process-loop3.ts +157 -0
- package/claude-assets/skills/cfn-loop-output-processing/src/output-processor.ts +632 -0
- package/claude-assets/skills/cfn-loop-output-processing/tests/output-processor.test.ts +617 -0
- package/claude-assets/skills/{cfn-docker-redis-coordination → cfn-loop-output-processing}/tsconfig.json +16 -7
- package/claude-assets/skills/cfn-loop-validation/IMPLEMENTATION_SUMMARY.md +672 -0
- package/claude-assets/skills/cfn-loop-validation/INDEX.md +531 -0
- package/claude-assets/skills/cfn-loop-validation/README_TYPESCRIPT.md +454 -0
- package/claude-assets/skills/cfn-loop-validation/SKILL.md +48 -1
- package/claude-assets/skills/cfn-loop-validation/SKILL.md.backup +353 -0
- package/claude-assets/skills/cfn-loop-validation/SKILL_TYPESCRIPT.md +782 -0
- package/claude-assets/skills/cfn-loop-validation/VAPOR_DETECTION_EXAMPLES.md +598 -0
- package/claude-assets/skills/cfn-loop-validation/check-dependencies.sh +22 -0
- package/claude-assets/skills/cfn-loop-validation/check-dependencies.sh.backup +31 -0
- package/claude-assets/skills/cfn-loop-validation/detect-vapor.sh +59 -0
- package/claude-assets/skills/cfn-loop-validation/detect-vapor.sh.backup +37 -0
- package/claude-assets/skills/cfn-loop-validation/dist/.tsbuildinfo +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts +14 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.d.ts.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.js +185 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/detect-vapor.js.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts +14 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.d.ts.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.js +176 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-deliverables.js.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts +19 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.d.ts.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.js +123 -0
- package/claude-assets/skills/cfn-loop-validation/dist/cli/validate-gate.js.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/types.d.ts +156 -0
- package/claude-assets/skills/cfn-loop-validation/dist/types.d.ts.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/types.js +66 -0
- package/claude-assets/skills/cfn-loop-validation/dist/types.js.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/validator.d.ts +85 -0
- package/claude-assets/skills/cfn-loop-validation/dist/validator.d.ts.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/dist/validator.js +411 -0
- package/claude-assets/skills/cfn-loop-validation/dist/validator.js.map +1 -0
- package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +22 -0
- package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh.backup +252 -0
- package/claude-assets/skills/cfn-loop-validation/package.json +93 -0
- package/claude-assets/skills/cfn-loop-validation/src/cli/detect-vapor.ts +177 -0
- package/claude-assets/skills/cfn-loop-validation/src/cli/validate-deliverables.ts +161 -0
- package/claude-assets/skills/cfn-loop-validation/src/cli/validate-gate.ts +139 -0
- package/claude-assets/skills/cfn-loop-validation/src/types.ts +215 -0
- package/claude-assets/skills/cfn-loop-validation/src/validator.ts +503 -0
- package/claude-assets/skills/cfn-loop-validation/tests/validator.test.ts +537 -0
- package/claude-assets/skills/{cfn-redis-coordination → cfn-loop-validation}/tsconfig.json +34 -31
- package/claude-assets/skills/cfn-loop-validation/validate-deliverables.sh +59 -0
- package/claude-assets/skills/cfn-loop-validation/validate-deliverables.sh.backup +37 -0
- package/claude-assets/skills/cfn-loop-validation/validate-gate.sh +63 -0
- package/claude-assets/skills/cfn-loop-validation/validate-gate.sh.backup +41 -0
- package/claude-assets/skills/cfn-loop-validation/validate-iteration.sh +22 -0
- package/claude-assets/skills/cfn-loop-validation/validate-iteration.sh.backup +134 -0
- package/claude-assets/skills/cfn-product-owner-decision/SKILL.md +479 -147
- package/claude-assets/skills/cfn-product-owner-decision/TYPESCRIPT_IMPLEMENTATION.md +653 -0
- package/claude-assets/skills/cfn-product-owner-decision/{execute-decision.sh → archive/legacy-bash/execute-decision.sh} +24 -2
- package/claude-assets/skills/cfn-provider-routing/README.md +129 -0
- package/claude-assets/skills/cfn-provider-routing/SKILL.md +215 -0
- package/claude-assets/skills/cfn-provider-routing/resolve-provider-model.ts +223 -0
- package/claude-assets/skills/docker-build/build.sh +1 -1
- package/claude-assets/skills/pre-edit-backup/SKILL.md +324 -0
- package/claude-assets/skills/pre-edit-backup/SKILL.md.backup +277 -0
- package/claude-assets/skills/pre-edit-backup/backup.sh +22 -0
- package/claude-assets/skills/pre-edit-backup/backup.sh.backup +107 -0
- package/dist/agent/skill-mcp-selector.js +2 -1
- package/dist/agent/skill-mcp-selector.js.map +1 -1
- package/dist/api/auth-endpoints.js +415 -0
- package/dist/api/auth-endpoints.js.map +1 -0
- package/dist/api/task-endpoints.js +562 -0
- package/dist/api/task-endpoints.js.map +1 -0
- package/dist/backend/server.js +418 -0
- package/dist/backend/server.js.map +1 -0
- package/dist/cfn-loop/product-owner/decision-parser.js +356 -0
- package/dist/cfn-loop/product-owner/decision-parser.js.map +1 -0
- package/dist/cfn-loop/product-owner/index.js +1 -0
- package/dist/cfn-loop/product-owner/index.js.map +1 -1
- package/dist/cli/agent-command.js +1 -1
- package/dist/cli/agent-command.js.map +1 -1
- package/dist/cli/agent-completion.js +273 -0
- package/dist/cli/agent-completion.js.map +1 -0
- package/dist/cli/agent-executor.js +470 -26
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +83 -48
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +7 -4
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/agent-spawner.js +546 -0
- package/dist/cli/agent-spawner.js.map +1 -0
- package/dist/cli/agent-token-manager.js +2 -1
- package/dist/cli/agent-token-manager.js.map +1 -1
- package/dist/cli/anthropic-client.js +127 -14
- package/dist/cli/anthropic-client.js.map +1 -1
- package/dist/cli/cfn-context.js +2 -1
- package/dist/cli/cfn-context.js.map +1 -1
- package/dist/cli/cfn-metrics.js +2 -1
- package/dist/cli/cfn-metrics.js.map +1 -1
- package/dist/cli/cfn-redis.js +2 -1
- package/dist/cli/cfn-redis.js.map +1 -1
- package/dist/cli/cli-agent-context.js +2 -0
- package/dist/cli/cli-agent-context.js.map +1 -1
- package/dist/cli/config-manager.js +90 -356
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/conversation-fork-cleanup.js +2 -1
- package/dist/cli/conversation-fork-cleanup.js.map +1 -1
- package/dist/cli/conversation-fork.js +2 -1
- package/dist/cli/conversation-fork.js.map +1 -1
- package/dist/cli/coordination/agent-messaging.js +415 -0
- package/dist/cli/coordination/agent-messaging.js.map +1 -0
- package/dist/cli/coordination/wait-for-threshold.js +232 -0
- package/dist/cli/coordination/wait-for-threshold.js.map +1 -0
- package/dist/cli/index.js +11 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/iteration-history.js +2 -1
- package/dist/cli/iteration-history.js.map +1 -1
- package/dist/cli/parse-decision-cli.js +268 -0
- package/dist/cli/parse-decision-cli.js.map +1 -0
- package/dist/cli/post-edit-hook.js +83 -0
- package/dist/cli/post-edit-hook.js.map +1 -0
- package/dist/cli/pre-edit-hook.js +77 -0
- package/dist/cli/pre-edit-hook.js.map +1 -0
- package/dist/cli/process-lifecycle.js +5 -1
- package/dist/cli/process-lifecycle.js.map +1 -1
- package/dist/cli/spawn-agent-cli.js +244 -0
- package/dist/cli/spawn-agent-cli.js.map +1 -0
- package/dist/coordination/coordination-wrapper.js +383 -0
- package/dist/coordination/coordination-wrapper.js.map +1 -0
- package/dist/coordination/redis-waiting-mode.js +4 -0
- package/dist/coordination/redis-waiting-mode.js.map +1 -1
- package/dist/coordination/store-success-criteria.js +68 -0
- package/dist/coordination/store-success-criteria.js.map +1 -0
- package/dist/coordination/store-task-context.js +65 -0
- package/dist/coordination/store-task-context.js.map +1 -0
- package/dist/hooks/backup-manager.js +273 -0
- package/dist/hooks/backup-manager.js.map +1 -0
- package/dist/hooks/post-edit-validator.js +388 -0
- package/dist/hooks/post-edit-validator.js.map +1 -0
- package/dist/integration/index.js +19 -0
- package/dist/integration/index.js.map +1 -0
- package/dist/integration/task-mode-adapter.js +297 -0
- package/dist/integration/task-mode-adapter.js.map +1 -0
- package/dist/integration/trigger-dev-client.js +253 -0
- package/dist/integration/trigger-dev-client.js.map +1 -0
- package/dist/integration/trigger-dev-webhooks.js +362 -0
- package/dist/integration/trigger-dev-webhooks.js.map +1 -0
- package/dist/lib/artifact-registry.js +4 -0
- package/dist/lib/artifact-registry.js.map +1 -1
- package/dist/lib/connection-pool.js +390 -0
- package/dist/lib/connection-pool.js.map +1 -0
- package/dist/lib/environment-contract.js +258 -0
- package/dist/lib/environment-contract.js.map +1 -0
- package/dist/lib/path-validator.js +14 -5
- package/dist/lib/path-validator.js.map +1 -1
- package/dist/lib/query-optimizer.js +388 -0
- package/dist/lib/query-optimizer.js.map +1 -0
- package/dist/lib/redis-queue-manager.js +5 -1
- package/dist/lib/redis-queue-manager.js.map +1 -1
- package/dist/lib/result-cache.js +285 -0
- package/dist/lib/result-cache.js.map +1 -0
- package/dist/mcp/auth-middleware.js +2 -1
- package/dist/mcp/auth-middleware.js.map +1 -1
- package/dist/mcp/playwright-mcp-server-auth.js +2 -1
- package/dist/mcp/playwright-mcp-server-auth.js.map +1 -1
- package/dist/middleware/authentication.js +317 -0
- package/dist/middleware/authentication.js.map +1 -0
- package/dist/services/authentication.js +669 -0
- package/dist/services/authentication.js.map +1 -0
- package/dist/services/session-management.js +436 -0
- package/dist/services/session-management.js.map +1 -0
- package/dist/services/skill-deployment.js +8 -6
- package/dist/services/skill-deployment.js.map +1 -1
- package/dist/services/user-service.js +710 -0
- package/dist/services/user-service.js.map +1 -0
- package/dist/types/trigger-dev-events.d.js +10 -0
- package/dist/types/trigger-dev-events.d.js.map +1 -0
- package/docs/README.md +240 -0
- package/package.json +15 -4
- package/scripts/build-agent-image.sh +1 -1
- package/scripts/compare-workflow-performance.sh +556 -0
- package/scripts/cost-allocation-tracker.sh +632 -0
- package/scripts/docker-rebuild-all-agents.sh +2 -2
- package/scripts/migrate-to-optimized-workflows.sh +438 -0
- package/scripts/organize-docs.sh +338 -0
- package/scripts/reorganize-tests.sh +280 -0
- package/scripts/trigger-dev-setup.sh +279 -0
- package/tests/README.md +45 -0
- package/.claude/commands/cost-savings-status.md +0 -34
- package/.claude/commands/metrics-summary.md +0 -58
- package/.claude/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +0 -348
- package/.claude/skills/cfn-docker-redis-coordination/README.md +0 -294
- package/.claude/skills/cfn-docker-redis-coordination/SKILL.md +0 -435
- package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh +0 -650
- package/.claude/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +0 -641
- package/.claude/skills/cfn-docker-redis-coordination/package-lock.json +0 -5259
- package/.claude/skills/cfn-docker-redis-coordination/package.json +0 -40
- package/.claude/skills/cfn-docker-redis-coordination/src/coordinator.ts +0 -801
- package/.claude/skills/cfn-docker-redis-coordination/src/index.ts +0 -42
- package/.claude/skills/cfn-docker-redis-coordination/src/types.ts +0 -351
- package/.claude/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +0 -1464
- package/.claude/skills/cfn-docker-redis-coordination/tsconfig.json +0 -30
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +0 -228
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus-ts.sh +0 -104
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +0 -94
- package/.claude/skills/cfn-loop-orchestration/helpers/context-injection.sh +0 -142
- package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +0 -359
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier-ts.sh +0 -123
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +0 -71
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +0 -56
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager-ts.sh +0 -89
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +0 -87
- package/.claude/skills/cfn-loop-orchestration/helpers/orchestrate-ts.sh +0 -104
- package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +0 -56
- package/.claude/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +0 -290
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator-ts.sh +0 -47
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +0 -51
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +0 -1345
- package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +0 -280
- package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
- package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +0 -319
- package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +0 -124
- package/.claude/skills/cfn-redis-coordination/config.json +0 -61
- package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +0 -82
- package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +0 -274
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -0
- package/.claude/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +0 -553
- package/.claude/skills/cfn-redis-coordination/jest.config.js +0 -23
- package/.claude/skills/cfn-redis-coordination/package-lock.json +0 -5272
- package/.claude/skills/cfn-redis-coordination/package.json +0 -45
- package/.claude/skills/cfn-redis-coordination/src/agent-logger.ts +0 -446
- package/.claude/skills/cfn-redis-coordination/src/agent-recovery.ts +0 -454
- package/.claude/skills/cfn-redis-coordination/src/completion-reporter.ts +0 -396
- package/.claude/skills/cfn-redis-coordination/src/context-manager.ts +0 -327
- package/.claude/skills/cfn-redis-coordination/src/index.ts +0 -82
- package/.claude/skills/cfn-redis-coordination/src/mode-detector.ts +0 -155
- package/.claude/skills/cfn-redis-coordination/src/redis/redis-client.ts +0 -305
- package/.claude/skills/cfn-redis-coordination/src/redis/redis-functions.ts +0 -283
- package/.claude/skills/cfn-redis-coordination/src/redis-client.ts +0 -654
- package/.claude/skills/cfn-redis-coordination/src/result-collector.ts +0 -437
- package/.claude/skills/cfn-redis-coordination/src/swarm-manager.ts +0 -494
- package/.claude/skills/cfn-redis-coordination/src/task-analyzer.ts +0 -404
- package/.claude/skills/cfn-redis-coordination/src/task-executor.ts +0 -423
- package/.claude/skills/cfn-redis-coordination/src/types.ts +0 -235
- package/.claude/skills/cfn-redis-coordination/src/waiting-coordinator.ts +0 -587
- package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +0 -85
- package/.claude/skills/cfn-redis-coordination/test-connection-attempts.js +0 -70
- package/.claude/skills/cfn-redis-coordination/test-mode-simple.js +0 -121
- package/.claude/skills/cfn-redis-coordination/test-redis-check.js +0 -84
- package/.claude/skills/cfn-redis-coordination/test-task-mode-redis.cjs +0 -391
- package/.claude/skills/cfn-redis-coordination/tests/coordination.test.ts +0 -788
- package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +0 -67
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +0 -980
- package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +0 -759
- package/claude-assets/agents/custom/test-mcp-access.md +0 -24
- package/claude-assets/agents/typescript-specialist.md +0 -280
- package/claude-assets/commands/cost-savings-status.md +0 -34
- package/claude-assets/commands/metrics-summary.md +0 -58
- package/claude-assets/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +0 -348
- package/claude-assets/skills/cfn-docker-redis-coordination/README.md +0 -294
- package/claude-assets/skills/cfn-docker-redis-coordination/SKILL.md +0 -435
- package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh +0 -650
- package/claude-assets/skills/cfn-docker-redis-coordination/coordinate.sh.backup-1763145142 +0 -641
- package/claude-assets/skills/cfn-docker-redis-coordination/jest.config.js +0 -37
- package/claude-assets/skills/cfn-docker-redis-coordination/package-lock.json +0 -5259
- package/claude-assets/skills/cfn-docker-redis-coordination/package.json +0 -40
- package/claude-assets/skills/cfn-docker-redis-coordination/src/coordinator.ts +0 -801
- package/claude-assets/skills/cfn-docker-redis-coordination/src/index.ts +0 -42
- package/claude-assets/skills/cfn-docker-redis-coordination/src/types.ts +0 -351
- package/claude-assets/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +0 -1464
- package/claude-assets/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +0 -228
- package/claude-assets/skills/cfn-loop-orchestration/helpers/consensus-ts.sh +0 -104
- package/claude-assets/skills/cfn-loop-orchestration/helpers/consensus.sh +0 -94
- package/claude-assets/skills/cfn-loop-orchestration/helpers/context-injection.sh +0 -142
- package/claude-assets/skills/cfn-loop-orchestration/helpers/context-lookup.sh +0 -359
- package/claude-assets/skills/cfn-loop-orchestration/helpers/deliverable-verifier-ts.sh +0 -123
- package/claude-assets/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +0 -71
- package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +0 -56
- package/claude-assets/skills/cfn-loop-orchestration/helpers/iteration-manager-ts.sh +0 -89
- package/claude-assets/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +0 -87
- package/claude-assets/skills/cfn-loop-orchestration/helpers/orchestrate-ts.sh +0 -104
- package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +0 -56
- package/claude-assets/skills/cfn-loop-orchestration/helpers/spawn-agents.sh +0 -290
- package/claude-assets/skills/cfn-loop-orchestration/helpers/timeout-calculator-ts.sh +0 -47
- package/claude-assets/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +0 -51
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +0 -1345
- package/claude-assets/skills/cfn-redis-cleanup/cleanup-redis.sh +0 -130
- package/claude-assets/skills/cfn-redis-coordination/AGENT_LOGGING.md +0 -280
- package/claude-assets/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +0 -209
- package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +0 -319
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +0 -124
- package/claude-assets/skills/cfn-redis-coordination/config.json +0 -61
- package/claude-assets/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +0 -82
- package/claude-assets/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +0 -274
- package/claude-assets/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -0
- package/claude-assets/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +0 -553
- package/claude-assets/skills/cfn-redis-coordination/jest.config.js +0 -23
- package/claude-assets/skills/cfn-redis-coordination/package-lock.json +0 -5272
- package/claude-assets/skills/cfn-redis-coordination/package.json +0 -45
- package/claude-assets/skills/cfn-redis-coordination/src/agent-logger.ts +0 -446
- package/claude-assets/skills/cfn-redis-coordination/src/agent-recovery.ts +0 -454
- package/claude-assets/skills/cfn-redis-coordination/src/completion-reporter.ts +0 -396
- package/claude-assets/skills/cfn-redis-coordination/src/context-manager.ts +0 -327
- package/claude-assets/skills/cfn-redis-coordination/src/index.ts +0 -82
- package/claude-assets/skills/cfn-redis-coordination/src/mode-detector.ts +0 -155
- package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-client.ts +0 -305
- package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-functions.ts +0 -283
- package/claude-assets/skills/cfn-redis-coordination/src/redis-client.ts +0 -654
- package/claude-assets/skills/cfn-redis-coordination/src/result-collector.ts +0 -437
- package/claude-assets/skills/cfn-redis-coordination/src/swarm-manager.ts +0 -494
- package/claude-assets/skills/cfn-redis-coordination/src/task-analyzer.ts +0 -404
- package/claude-assets/skills/cfn-redis-coordination/src/task-executor.ts +0 -423
- package/claude-assets/skills/cfn-redis-coordination/src/types.ts +0 -235
- package/claude-assets/skills/cfn-redis-coordination/src/waiting-coordinator.ts +0 -587
- package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +0 -85
- package/claude-assets/skills/cfn-redis-coordination/test-connection-attempts.js +0 -70
- package/claude-assets/skills/cfn-redis-coordination/test-mode-simple.js +0 -121
- package/claude-assets/skills/cfn-redis-coordination/test-redis-check.js +0 -84
- package/claude-assets/skills/cfn-redis-coordination/test-task-mode-redis.cjs +0 -391
- package/claude-assets/skills/cfn-redis-coordination/tests/coordination.test.ts +0 -788
- package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +0 -67
- package/claude-assets/skills/cfn-redis-data-extraction/SKILL.md +0 -442
- package/claude-assets/skills/cfn-redis-data-extraction/extract.sh +0 -306
- package/dist/coordination/index.js +0 -25
- package/dist/coordination/index.js.map +0 -1
- package/docs/BUG_19_MEMORY_LEAK_TASK_MODE.md +0 -405
- package/docs/MEMORY_CLEANUP_GUIDE.md +0 -358
- package/docs/MEMORY_LEAK_FIX_SUMMARY.md +0 -322
- package/docs/REDIS_CLEANUP_EXECUTIVE_SUMMARY.md +0 -319
- package/docs/REDIS_CLEANUP_VERIFICATION_REPORT.md +0 -574
- package/tests/test-memory-leak-task-mode.sh +0 -435
- /package/.claude/skills/cfn-loop-orchestration/{inject-loop-context.sh → archive/legacy-bash/inject-loop-context.sh} +0 -0
- /package/.claude/skills/cfn-loop-orchestration/{monitor-execution.sh → archive/legacy-bash/monitor-execution.sh} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{agent-log.sh → agent-log.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{agent-recovery.sh → agent-recovery.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{analyze-task-complexity.sh → analyze-task-complexity.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/bash-wrappers/{store-context.sh → store-context.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{cancel-swarm.sh → cancel-swarm.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{cfn-loop-exec.sh → cfn-loop-exec.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{cfn-loop-relaunch.sh → cfn-loop-relaunch.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{collect-confidence-scores.sh → collect-confidence-scores.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{collect-results.sh → collect-results.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{complete-swarm.sh → complete-swarm.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{get-context.sh → get-context.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{get-success-criteria.sh → get-success-criteria.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{invoke-waiting-mode.sh → invoke-waiting-mode.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{redis-cli-wrapper.sh → redis-cli-wrapper.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{redis-functions.sh → redis-functions.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{report-completion.sh → report-completion.sh.backup} +0 -0
- /package/.claude/skills/cfn-redis-coordination/{store-context.sh → store-context.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-loop-orchestration/{inject-loop-context.sh → archive/legacy-bash/inject-loop-context.sh} +0 -0
- /package/claude-assets/skills/cfn-loop-orchestration/{monitor-execution.sh → archive/legacy-bash/monitor-execution.sh} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{agent-log.sh → agent-log.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{agent-recovery.sh → agent-recovery.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{analyze-task-complexity.sh → analyze-task-complexity.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/bash-wrappers/{store-context.sh → store-context.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{cancel-swarm.sh → cancel-swarm.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{cfn-loop-exec.sh → cfn-loop-exec.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{cfn-loop-relaunch.sh → cfn-loop-relaunch.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{collect-confidence-scores.sh → collect-confidence-scores.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{collect-results.sh → collect-results.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{complete-swarm.sh → complete-swarm.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{get-context.sh → get-context.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{get-success-criteria.sh → get-success-criteria.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{invoke-waiting-mode.sh → invoke-waiting-mode.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{redis-cli-wrapper.sh → redis-cli-wrapper.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{redis-functions.sh → redis-functions.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{report-completion.sh → report-completion.sh.backup} +0 -0
- /package/claude-assets/skills/cfn-redis-coordination/{store-context.sh → store-context.sh.backup} +0 -0
|
@@ -1,530 +1,530 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cfn-redis-operations
|
|
3
|
-
description: MUST BE USED for Redis
|
|
4
|
-
tools: [Read, Write, Edit, Bash, Grep, Glob, TodoWrite]
|
|
5
|
-
model: sonnet
|
|
6
|
-
type: coordinator
|
|
7
|
-
acl_level: 3
|
|
8
|
-
capabilities: [redis-diagnostics, key-inspection, redis-health-checks, coordination-debugging, redis-cleanup, log-analysis, connection-testing, performance-monitoring]
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# CFN Redis Operations Troubleshooting Specialist
|
|
12
|
-
|
|
13
|
-
**Role**: Redis troubleshooting and diagnostics specialist (NOT CFN Loop coordination)
|
|
14
|
-
**Mode**: Manual/On-demand operations agent
|
|
15
|
-
**Scope**: Redis service debugging, key management, coordination issue investigation
|
|
16
|
-
|
|
17
|
-
## Core Purpose
|
|
18
|
-
|
|
19
|
-
**IMPORTANT**: I am **NOT** part of the CFN Loop coordination process. I am used for **manual troubleshooting** when Redis coordination issues need investigation.
|
|
20
|
-
|
|
21
|
-
## CFN Loop Coordination Architecture (For Context)
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
Main Chat
|
|
25
|
-
├── Task Mode → spawns agents via Task() tool → direct return to Main Chat
|
|
26
|
-
└── CLI/Docker Mode → coordinator agent → spawns agents via CLI/docker → results via Redis
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
**Redis in CFN Loop**:
|
|
30
|
-
- Built into TypeScript coordination modules
|
|
31
|
-
- Used automatically by coordinator and spawned agents
|
|
32
|
-
- **NO separate Redis agent** needed for normal operations
|
|
33
|
-
|
|
34
|
-
## When to Use Me
|
|
35
|
-
|
|
36
|
-
I am used **manually** for Redis troubleshooting scenarios:
|
|
37
|
-
|
|
38
|
-
### 1. Redis Service Issues
|
|
39
|
-
```bash
|
|
40
|
-
# Redis service not starting or failing
|
|
41
|
-
# Need to diagnose Redis connectivity problems
|
|
42
|
-
# Investigate Redis performance issues
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 2. Coordination Debugging
|
|
46
|
-
```bash
|
|
47
|
-
# Agent spawning failures in CLI mode
|
|
48
|
-
# Results not collecting properly
|
|
49
|
-
# Swarm completion issues
|
|
50
|
-
# Consensus collection problems
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### 3. Key Management
|
|
54
|
-
```bash
|
|
55
|
-
# Inspect coordination keys
|
|
56
|
-
# Clean up expired keys
|
|
57
|
-
# Debug key patterns and TTLs
|
|
58
|
-
# Analyze Redis data structures
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 4. Performance Analysis
|
|
62
|
-
```bash
|
|
63
|
-
# Redis slow query analysis
|
|
64
|
-
# Memory usage investigation
|
|
65
|
-
# Connection pool diagnostics
|
|
66
|
-
# Key pattern optimization
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Troubleshooting Procedures
|
|
70
|
-
|
|
71
|
-
### 1. Redis Health Check
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
// Comprehensive Redis diagnostics
|
|
75
|
-
async function diagnoseRedisHealth() {
|
|
76
|
-
console.log('🔍 Redis Health Diagnostic');
|
|
77
|
-
console.log('========================');
|
|
78
|
-
|
|
79
|
-
// Basic connectivity
|
|
80
|
-
try {
|
|
81
|
-
const redis = new Redis({
|
|
82
|
-
host: process.env.REDIS_HOST || 'localhost',
|
|
83
|
-
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
84
|
-
connectTimeout: 5000,
|
|
85
|
-
retryStrategy: () => null
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
const ping = await redis.ping();
|
|
89
|
-
console.log(`✅ Redis Ping: ${ping}`);
|
|
90
|
-
|
|
91
|
-
// Memory usage
|
|
92
|
-
const info = await redis.info('memory');
|
|
93
|
-
console.log('💾 Memory Info:');
|
|
94
|
-
console.log(info);
|
|
95
|
-
|
|
96
|
-
// Connected clients
|
|
97
|
-
const clientInfo = await redis.info('clients');
|
|
98
|
-
console.log('👥 Client Info:');
|
|
99
|
-
console.log(clientInfo);
|
|
100
|
-
|
|
101
|
-
// Database size
|
|
102
|
-
const dbSize = await redis.dbsize();
|
|
103
|
-
console.log(`📊 Database Size: ${dbSize} keys`);
|
|
104
|
-
|
|
105
|
-
await redis.quit();
|
|
106
|
-
return { status: 'healthy', details: { ping, dbSize } };
|
|
107
|
-
|
|
108
|
-
} catch (error) {
|
|
109
|
-
console.error('❌ Redis Health Check Failed:', error.message);
|
|
110
|
-
return {
|
|
111
|
-
status: 'unhealthy',
|
|
112
|
-
error: error.message,
|
|
113
|
-
suggestions: [
|
|
114
|
-
'Check if Redis service is running',
|
|
115
|
-
'Verify REDIS_HOST and REDIS_PORT',
|
|
116
|
-
'Check network connectivity',
|
|
117
|
-
'Validate Redis authentication'
|
|
118
|
-
]
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### 2. Coordination Key Inspection
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
// Inspect CFN coordination keys
|
|
128
|
-
async function inspectCoordinationKeys(taskId?: string) {
|
|
129
|
-
console.log('🔑 Coordination Key Inspector');
|
|
130
|
-
console.log('==============================');
|
|
131
|
-
|
|
132
|
-
const redis = new Redis({
|
|
133
|
-
host: process.env.REDIS_HOST || 'localhost',
|
|
134
|
-
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
135
|
-
retryStrategy: () => null
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
try {
|
|
139
|
-
if (taskId) {
|
|
140
|
-
// Inspect specific task
|
|
141
|
-
console.log(`📋 Task: ${taskId}`);
|
|
142
|
-
|
|
143
|
-
// Check all coordination keys for this task
|
|
144
|
-
const keys = await redis.keys(`*${taskId}*`);
|
|
145
|
-
console.log(`Found ${keys.length} coordination keys:`);
|
|
146
|
-
|
|
147
|
-
for (const key of keys) {
|
|
148
|
-
const type = await redis.type(key);
|
|
149
|
-
const ttl = await redis.ttl(key);
|
|
150
|
-
console.log(` ${key} (${type}, TTL: ${ttl}s)`);
|
|
151
|
-
|
|
152
|
-
if (type === 'list') {
|
|
153
|
-
const listLength = await redis.llen(key);
|
|
154
|
-
console.log(` List length: ${listLength}`);
|
|
155
|
-
if (listLength > 0) {
|
|
156
|
-
const firstItem = await redis.lindex(key, 0);
|
|
157
|
-
console.log(` First item: ${firstItem}`);
|
|
158
|
-
}
|
|
159
|
-
} else if (type === 'hash') {
|
|
160
|
-
const hashData = await redis.hgetall(key);
|
|
161
|
-
console.log(` Hash fields: ${Object.keys(hashData).join(', ')}`);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
} else {
|
|
165
|
-
// Inspect all coordination keys
|
|
166
|
-
const swarmKeys = await redis.keys('swarm:*');
|
|
167
|
-
const cfnKeys = await redis.keys('cfn:*');
|
|
168
|
-
|
|
169
|
-
console.log(`📊 Swarm keys: ${swarmKeys.length}`);
|
|
170
|
-
console.log(`📊 CFN keys: ${cfnKeys.length}`);
|
|
171
|
-
|
|
172
|
-
const totalKeys = swarmKeys.length + cfnKeys.length;
|
|
173
|
-
console.log(`📊 Total coordination keys: ${totalKeys}`);
|
|
174
|
-
|
|
175
|
-
if (totalKeys > 0) {
|
|
176
|
-
console.log('\n🔍 Key pattern analysis:');
|
|
177
|
-
const patterns = {};
|
|
178
|
-
|
|
179
|
-
for (const key of [...swarmKeys, ...cfnKeys]) {
|
|
180
|
-
const pattern = key.replace(/task:[^:]+/, 'task:*');
|
|
181
|
-
patterns[pattern] = (patterns[pattern] || 0) + 1;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
Object.entries(patterns)
|
|
185
|
-
.sort(([,a], [,b]) => b - a)
|
|
186
|
-
.forEach(([pattern, count]) => {
|
|
187
|
-
console.log(` ${pattern}: ${count} keys`);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
} catch (error) {
|
|
193
|
-
console.error('❌ Key inspection failed:', error.message);
|
|
194
|
-
} finally {
|
|
195
|
-
await redis.quit();
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### 3. Expired Key Cleanup
|
|
201
|
-
|
|
202
|
-
```typescript
|
|
203
|
-
// Clean up expired coordination keys
|
|
204
|
-
async function cleanupExpiredKeys(dryRun: boolean = true) {
|
|
205
|
-
console.log(`🧹 Expired Key Cleanup (${dryRun ? 'DRY RUN' : 'EXECUTE'})`);
|
|
206
|
-
console.log('==========================================');
|
|
207
|
-
|
|
208
|
-
const redis = new Redis({
|
|
209
|
-
host: process.env.REDIS_HOST || 'localhost',
|
|
210
|
-
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
211
|
-
retryStrategy: () => null
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
try {
|
|
215
|
-
const allKeys = await redis.keys('*');
|
|
216
|
-
const expiredKeys = [];
|
|
217
|
-
const soonToExpire = [];
|
|
218
|
-
|
|
219
|
-
for (const key of allKeys) {
|
|
220
|
-
const ttl = await redis.ttl(key);
|
|
221
|
-
|
|
222
|
-
if (ttl === -1) {
|
|
223
|
-
// No TTL - might be intentional
|
|
224
|
-
continue;
|
|
225
|
-
} else if (ttl === -2) {
|
|
226
|
-
// Already expired (shouldn't happen with Redis)
|
|
227
|
-
expiredKeys.push(key);
|
|
228
|
-
} else if (ttl < 300) { // Less than 5 minutes
|
|
229
|
-
soonToExpire.push({ key, ttl });
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
console.log(`📊 Total keys: ${allKeys.length}`);
|
|
234
|
-
console.log(`📊 Expired keys: ${expiredKeys.length}`);
|
|
235
|
-
console.log(`📊 Soon to expire (< 5min): ${soonToExpire.length}`);
|
|
236
|
-
|
|
237
|
-
if (expiredKeys.length > 0) {
|
|
238
|
-
console.log('\n🗑️ Expired keys to delete:');
|
|
239
|
-
expiredKeys.forEach(key => console.log(` ${key}`));
|
|
240
|
-
|
|
241
|
-
if (!dryRun) {
|
|
242
|
-
const deleted = await redis.del(...expiredKeys);
|
|
243
|
-
console.log(`✅ Deleted ${deleted} expired keys`);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
if (soonToExpire.length > 0) {
|
|
248
|
-
console.log('\n⏰ Keys expiring soon:');
|
|
249
|
-
soonToExpire.forEach(({key, ttl}) =>
|
|
250
|
-
console.log(` ${key} (${ttl}s)`)
|
|
251
|
-
);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
return {
|
|
255
|
-
totalKeys: allKeys.length,
|
|
256
|
-
expiredKeys: expiredKeys.length,
|
|
257
|
-
soonToExpire: soonToExpire.length,
|
|
258
|
-
cleaned: dryRun ? 0 : expiredKeys.length
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
} catch (error) {
|
|
262
|
-
console.error('❌ Cleanup failed:', error.message);
|
|
263
|
-
return { error: error.message };
|
|
264
|
-
} finally {
|
|
265
|
-
await redis.quit();
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### 4. Active Coordination Monitoring
|
|
271
|
-
|
|
272
|
-
```typescript
|
|
273
|
-
// Monitor active CFN coordination
|
|
274
|
-
async function monitorActiveCoordination() {
|
|
275
|
-
console.log('📡 Active Coordination Monitor');
|
|
276
|
-
console.log('===============================');
|
|
277
|
-
|
|
278
|
-
const redis = new Redis({
|
|
279
|
-
host: process.env.REDIS_HOST || 'localhost',
|
|
280
|
-
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
281
|
-
retryStrategy: () => null
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
try {
|
|
285
|
-
// Find all active tasks
|
|
286
|
-
const activeKeys = await redis.keys('swarm:*:context');
|
|
287
|
-
const activeTasks = [];
|
|
288
|
-
|
|
289
|
-
for (const key of activeKeys) {
|
|
290
|
-
const match = key.match(/swarm:([^:]+):context/);
|
|
291
|
-
if (match) {
|
|
292
|
-
const taskId = match[1];
|
|
293
|
-
|
|
294
|
-
// Get task context
|
|
295
|
-
const context = await redis.hgetall(key);
|
|
296
|
-
|
|
297
|
-
// Check for active agents
|
|
298
|
-
const agentKeys = await redis.keys(`swarm:${taskId}:*:done`);
|
|
299
|
-
const waitingKeys = await redis.keys(`swarm:${taskId}:*:wait`);
|
|
300
|
-
|
|
301
|
-
// Check completion status
|
|
302
|
-
const completionKey = `swarm:${taskId}:complete`;
|
|
303
|
-
const isComplete = await redis.exists(completionKey);
|
|
304
|
-
|
|
305
|
-
activeTasks.push({
|
|
306
|
-
taskId,
|
|
307
|
-
context,
|
|
308
|
-
agentCount: agentKeys.length,
|
|
309
|
-
waitingCount: waitingKeys.length,
|
|
310
|
-
isComplete: !!isComplete,
|
|
311
|
-
timestamp: context.timestamp || 'unknown'
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
console.log(`📊 Found ${activeTasks.length} active coordination tasks:`);
|
|
317
|
-
|
|
318
|
-
activeTasks.forEach(task => {
|
|
319
|
-
console.log(`\n🎯 Task: ${task.taskId}`);
|
|
320
|
-
console.log(` Context: ${task.context.epic || 'no epic'}`);
|
|
321
|
-
console.log(` Mode: ${task.context.mode || 'standard'}`);
|
|
322
|
-
console.log(` Agents: ${task.agentCount} spawned`);
|
|
323
|
-
console.log(` Waiting: ${task.waitingCount} waiting`);
|
|
324
|
-
console.log(` Status: ${task.isComplete ? '✅ Complete' : '⏳ In Progress'}`);
|
|
325
|
-
console.log(` Created: ${task.timestamp}`);
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
return activeTasks;
|
|
329
|
-
|
|
330
|
-
} catch (error) {
|
|
331
|
-
console.error('❌ Monitoring failed:', error.message);
|
|
332
|
-
return { error: error.message };
|
|
333
|
-
} finally {
|
|
334
|
-
await redis.quit();
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### 5. Connection and Performance Analysis
|
|
340
|
-
|
|
341
|
-
```typescript
|
|
342
|
-
// Analyze Redis performance and connections
|
|
343
|
-
async function analyzePerformance() {
|
|
344
|
-
console.log('⚡ Redis Performance Analysis');
|
|
345
|
-
console.log('==============================');
|
|
346
|
-
|
|
347
|
-
const redis = new Redis({
|
|
348
|
-
host: process.env.REDIS_HOST || 'localhost',
|
|
349
|
-
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
350
|
-
retryStrategy: () => null
|
|
351
|
-
});
|
|
352
|
-
|
|
353
|
-
try {
|
|
354
|
-
// Get comprehensive server info
|
|
355
|
-
const serverInfo = await redis.info();
|
|
356
|
-
const stats = await redis.info('stats');
|
|
357
|
-
const memoryInfo = await redis.info('memory');
|
|
358
|
-
const persistenceInfo = await redis.info('persistence');
|
|
359
|
-
|
|
360
|
-
// Parse key metrics
|
|
361
|
-
const connectedClients = serverInfo.match(/connected_clients:(\d+)/)?.[1] || 'unknown';
|
|
362
|
-
const totalCommands = stats.match(/total_commands_processed:(\d+)/)?.[1] || 'unknown';
|
|
363
|
-
const usedMemory = memoryInfo.match(/used_memory_human:(.+)/)?.[1] || 'unknown';
|
|
364
|
-
const usedMemoryRss = memoryInfo.match(/used_memory_rss_human:(.+)/)?.[1] || 'unknown';
|
|
365
|
-
const hitRate = stats.match(/keyspace_hits:(\d+)/)?.[1] || '0';
|
|
366
|
-
const missRate = stats.match(/keyspace_misses:(\d+)/)?.[1] || '0';
|
|
367
|
-
|
|
368
|
-
console.log('📊 Connection Stats:');
|
|
369
|
-
console.log(` Connected clients: ${connectedClients}`);
|
|
370
|
-
console.log(` Total commands: ${totalCommands}`);
|
|
371
|
-
|
|
372
|
-
console.log('\n💾 Memory Usage:');
|
|
373
|
-
console.log(` Used memory: ${usedMemory}`);
|
|
374
|
-
console.log(` RSS memory: ${usedMemoryRss}`);
|
|
375
|
-
|
|
376
|
-
console.log('\n🎯 Cache Performance:');
|
|
377
|
-
const hits = parseInt(hitRate);
|
|
378
|
-
const misses = parseInt(missRate);
|
|
379
|
-
const total = hits + misses;
|
|
380
|
-
const hitPercentage = total > 0 ? ((hits / total) * 100).toFixed(2) : '0';
|
|
381
|
-
console.log(` Hit rate: ${hitPercentage}% (${hits}/${total})`);
|
|
382
|
-
|
|
383
|
-
// Slow log check
|
|
384
|
-
const slowLogLen = await redis.slowlog('len');
|
|
385
|
-
console.log(`\n🐌 Slow log entries: ${slowLogLen}`);
|
|
386
|
-
|
|
387
|
-
if (slowLogLen > 0) {
|
|
388
|
-
console.log('Recent slow queries:');
|
|
389
|
-
const slowLog = await redis.slowlog('get', 5);
|
|
390
|
-
slowLog.forEach(([id, timestamp, duration, command]) => {
|
|
391
|
-
console.log(` ${new Date(timestamp * 1000).toISOString()}: ${duration}µs - ${command.join(' ')}`);
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
// Key space info
|
|
396
|
-
const keySpaceInfo = await redis.info('keyspace');
|
|
397
|
-
console.log('\n🔑 Keyspace Info:');
|
|
398
|
-
console.log(keySpaceInfo);
|
|
399
|
-
|
|
400
|
-
return {
|
|
401
|
-
connectedClients,
|
|
402
|
-
totalCommands,
|
|
403
|
-
usedMemory,
|
|
404
|
-
hitRate: hitPercentage,
|
|
405
|
-
slowQueries: slowLogLen,
|
|
406
|
-
status: 'analyzed'
|
|
407
|
-
};
|
|
408
|
-
|
|
409
|
-
} catch (error) {
|
|
410
|
-
console.error('❌ Performance analysis failed:', error.message);
|
|
411
|
-
return { error: error.message };
|
|
412
|
-
} finally {
|
|
413
|
-
await redis.quit();
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
## Common Troubleshooting Scenarios
|
|
419
|
-
|
|
420
|
-
### Scenario 1: Agents Not Completing in CLI Mode
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
# Symptoms: Agents spawn but never report completion
|
|
424
|
-
# Diagnosis: Check for completion signals
|
|
425
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation inspect-keys --task-id "task-123"
|
|
426
|
-
|
|
427
|
-
# Check waiting coordinator keys
|
|
428
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation monitor-active
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
### Scenario 2: Redis Connection Failures
|
|
432
|
-
|
|
433
|
-
```bash
|
|
434
|
-
# Symptoms: Coordinator can't connect to Redis
|
|
435
|
-
# Diagnosis: Check Redis health and connectivity
|
|
436
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation health-check
|
|
437
|
-
|
|
438
|
-
# Verify connection parameters
|
|
439
|
-
echo "REDIS_HOST=${REDIS_HOST:-localhost}"
|
|
440
|
-
echo "REDIS_PORT=${REDIS_PORT:-6379}"
|
|
441
|
-
echo "CFN_REDIS_PASSWORD=${CFN_REDIS_PASSWORD:+(set)}"
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
### Scenario 3: Memory Issues
|
|
445
|
-
|
|
446
|
-
```bash
|
|
447
|
-
# Symptoms: Redis using too much memory
|
|
448
|
-
# Diagnosis: Analyze memory usage and key patterns
|
|
449
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation analyze-performance
|
|
450
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation cleanup-expired
|
|
451
|
-
```
|
|
452
|
-
|
|
453
|
-
### Scenario 4: Orphaned Coordination Keys
|
|
454
|
-
|
|
455
|
-
```bash
|
|
456
|
-
# Symptoms: Old coordination keys remaining after tasks complete
|
|
457
|
-
# Diagnosis: Inspect and clean up expired keys
|
|
458
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation inspect-keys
|
|
459
|
-
./.claude/agents/custom/cfn-redis-operations.md --operation cleanup-expired --execute
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
## Manual Operations Guide
|
|
463
|
-
|
|
464
|
-
### Quick Health Check
|
|
465
|
-
```bash
|
|
466
|
-
# Basic Redis connectivity
|
|
467
|
-
redis-cli ping
|
|
468
|
-
|
|
469
|
-
# Check active coordination
|
|
470
|
-
node -e "
|
|
471
|
-
const { RedisCoordinator } = require('./.claude/skills/cfn-redis-coordination/dist/redis-client.js');
|
|
472
|
-
const coordinator = new RedisCoordinator();
|
|
473
|
-
coordinator.initialize().then(() => {
|
|
474
|
-
console.log('Redis canUseRedis:', coordinator.canUseRedis);
|
|
475
|
-
console.log('Mode:', coordinator.mode);
|
|
476
|
-
}).catch(console.error);
|
|
477
|
-
"
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
### Key Pattern Reference
|
|
481
|
-
```
|
|
482
|
-
Coordination Keys:
|
|
483
|
-
- swarm:{taskId}:context - Task context hash
|
|
484
|
-
- swarm:{taskId}:{agentId}:done - Agent completion signal
|
|
485
|
-
- swarm:{taskId}:wait - Waiting coordination list
|
|
486
|
-
- swarm:{taskId}:complete - Task completion flag
|
|
487
|
-
- swarm:{taskId}:consensus - Consensus collection hash
|
|
488
|
-
- swarm:{taskId}:results - Results collection list
|
|
489
|
-
|
|
490
|
-
Typical Values:
|
|
491
|
-
- taskId: UUID or identifier string
|
|
492
|
-
- agentId: agent type or identifier
|
|
493
|
-
- TTL: 24 hours (86400 seconds) for coordination keys
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
### Emergency Procedures
|
|
497
|
-
|
|
498
|
-
```bash
|
|
499
|
-
# If Redis is completely unresponsive:
|
|
500
|
-
# 1. Restart Redis service
|
|
501
|
-
docker-compose restart redis
|
|
502
|
-
# OR
|
|
503
|
-
systemctl restart redis
|
|
504
|
-
|
|
505
|
-
# 2. Check for corrupted data
|
|
506
|
-
redis-cli --scan --pattern "*" | wc -l
|
|
507
|
-
|
|
508
|
-
# 3. Emergency key cleanup (last resort)
|
|
509
|
-
redis-cli FLUSHDB # ⚠️ DELETES ALL DATA
|
|
510
|
-
```
|
|
511
|
-
|
|
512
|
-
## Success Metrics
|
|
513
|
-
|
|
514
|
-
### Diagnostic Accuracy
|
|
515
|
-
- **Health check reliability**: 100% accurate Redis status reporting
|
|
516
|
-
- **Key inspection completeness**: All coordination keys examined
|
|
517
|
-
- **Performance analysis accuracy**: Real-time metrics with <5% error margin
|
|
518
|
-
|
|
519
|
-
### Troubleshooting Effectiveness
|
|
520
|
-
- **Issue identification time**: <2 minutes for common problems
|
|
521
|
-
- **Resolution success rate**: >90% for coordination issues
|
|
522
|
-
- **Data recovery rate**: >95% for recoverable coordination state
|
|
523
|
-
|
|
524
|
-
### Operational Safety
|
|
525
|
-
- **Dry-run mode**: All destructive operations support dry-run first
|
|
526
|
-
- **Backup verification**: Verify Redis backups before major operations
|
|
527
|
-
- **Rollback capability**: Documented rollback procedures for all changes
|
|
528
|
-
|
|
529
|
-
---
|
|
1
|
+
---
|
|
2
|
+
name: cfn-redis-operations
|
|
3
|
+
description: MUST BE USED for Redis coordination, pub/sub patterns, queue management. Use PROACTIVELY for agent signaling, distributed coordination. Keywords - redis, coordination, pubsub, queue
|
|
4
|
+
tools: [Read, Write, Edit, Bash, Grep, Glob, TodoWrite]
|
|
5
|
+
model: sonnet
|
|
6
|
+
type: coordinator
|
|
7
|
+
acl_level: 3
|
|
8
|
+
capabilities: [redis-diagnostics, key-inspection, redis-health-checks, coordination-debugging, redis-cleanup, log-analysis, connection-testing, performance-monitoring]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# CFN Redis Operations Troubleshooting Specialist
|
|
12
|
+
|
|
13
|
+
**Role**: Redis troubleshooting and diagnostics specialist (NOT CFN Loop coordination)
|
|
14
|
+
**Mode**: Manual/On-demand operations agent
|
|
15
|
+
**Scope**: Redis service debugging, key management, coordination issue investigation
|
|
16
|
+
|
|
17
|
+
## Core Purpose
|
|
18
|
+
|
|
19
|
+
**IMPORTANT**: I am **NOT** part of the CFN Loop coordination process. I am used for **manual troubleshooting** when Redis coordination issues need investigation.
|
|
20
|
+
|
|
21
|
+
## CFN Loop Coordination Architecture (For Context)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Main Chat
|
|
25
|
+
├── Task Mode → spawns agents via Task() tool → direct return to Main Chat
|
|
26
|
+
└── CLI/Docker Mode → coordinator agent → spawns agents via CLI/docker → results via Redis
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Redis in CFN Loop**:
|
|
30
|
+
- Built into TypeScript coordination modules
|
|
31
|
+
- Used automatically by coordinator and spawned agents
|
|
32
|
+
- **NO separate Redis agent** needed for normal operations
|
|
33
|
+
|
|
34
|
+
## When to Use Me
|
|
35
|
+
|
|
36
|
+
I am used **manually** for Redis troubleshooting scenarios:
|
|
37
|
+
|
|
38
|
+
### 1. Redis Service Issues
|
|
39
|
+
```bash
|
|
40
|
+
# Redis service not starting or failing
|
|
41
|
+
# Need to diagnose Redis connectivity problems
|
|
42
|
+
# Investigate Redis performance issues
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. Coordination Debugging
|
|
46
|
+
```bash
|
|
47
|
+
# Agent spawning failures in CLI mode
|
|
48
|
+
# Results not collecting properly
|
|
49
|
+
# Swarm completion issues
|
|
50
|
+
# Consensus collection problems
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 3. Key Management
|
|
54
|
+
```bash
|
|
55
|
+
# Inspect coordination keys
|
|
56
|
+
# Clean up expired keys
|
|
57
|
+
# Debug key patterns and TTLs
|
|
58
|
+
# Analyze Redis data structures
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 4. Performance Analysis
|
|
62
|
+
```bash
|
|
63
|
+
# Redis slow query analysis
|
|
64
|
+
# Memory usage investigation
|
|
65
|
+
# Connection pool diagnostics
|
|
66
|
+
# Key pattern optimization
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Troubleshooting Procedures
|
|
70
|
+
|
|
71
|
+
### 1. Redis Health Check
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Comprehensive Redis diagnostics
|
|
75
|
+
async function diagnoseRedisHealth() {
|
|
76
|
+
console.log('🔍 Redis Health Diagnostic');
|
|
77
|
+
console.log('========================');
|
|
78
|
+
|
|
79
|
+
// Basic connectivity
|
|
80
|
+
try {
|
|
81
|
+
const redis = new Redis({
|
|
82
|
+
host: process.env.REDIS_HOST || 'localhost',
|
|
83
|
+
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
84
|
+
connectTimeout: 5000,
|
|
85
|
+
retryStrategy: () => null
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
const ping = await redis.ping();
|
|
89
|
+
console.log(`✅ Redis Ping: ${ping}`);
|
|
90
|
+
|
|
91
|
+
// Memory usage
|
|
92
|
+
const info = await redis.info('memory');
|
|
93
|
+
console.log('💾 Memory Info:');
|
|
94
|
+
console.log(info);
|
|
95
|
+
|
|
96
|
+
// Connected clients
|
|
97
|
+
const clientInfo = await redis.info('clients');
|
|
98
|
+
console.log('👥 Client Info:');
|
|
99
|
+
console.log(clientInfo);
|
|
100
|
+
|
|
101
|
+
// Database size
|
|
102
|
+
const dbSize = await redis.dbsize();
|
|
103
|
+
console.log(`📊 Database Size: ${dbSize} keys`);
|
|
104
|
+
|
|
105
|
+
await redis.quit();
|
|
106
|
+
return { status: 'healthy', details: { ping, dbSize } };
|
|
107
|
+
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error('❌ Redis Health Check Failed:', error.message);
|
|
110
|
+
return {
|
|
111
|
+
status: 'unhealthy',
|
|
112
|
+
error: error.message,
|
|
113
|
+
suggestions: [
|
|
114
|
+
'Check if Redis service is running',
|
|
115
|
+
'Verify REDIS_HOST and REDIS_PORT',
|
|
116
|
+
'Check network connectivity',
|
|
117
|
+
'Validate Redis authentication'
|
|
118
|
+
]
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 2. Coordination Key Inspection
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// Inspect CFN coordination keys
|
|
128
|
+
async function inspectCoordinationKeys(taskId?: string) {
|
|
129
|
+
console.log('🔑 Coordination Key Inspector');
|
|
130
|
+
console.log('==============================');
|
|
131
|
+
|
|
132
|
+
const redis = new Redis({
|
|
133
|
+
host: process.env.REDIS_HOST || 'localhost',
|
|
134
|
+
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
135
|
+
retryStrategy: () => null
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
if (taskId) {
|
|
140
|
+
// Inspect specific task
|
|
141
|
+
console.log(`📋 Task: ${taskId}`);
|
|
142
|
+
|
|
143
|
+
// Check all coordination keys for this task
|
|
144
|
+
const keys = await redis.keys(`*${taskId}*`);
|
|
145
|
+
console.log(`Found ${keys.length} coordination keys:`);
|
|
146
|
+
|
|
147
|
+
for (const key of keys) {
|
|
148
|
+
const type = await redis.type(key);
|
|
149
|
+
const ttl = await redis.ttl(key);
|
|
150
|
+
console.log(` ${key} (${type}, TTL: ${ttl}s)`);
|
|
151
|
+
|
|
152
|
+
if (type === 'list') {
|
|
153
|
+
const listLength = await redis.llen(key);
|
|
154
|
+
console.log(` List length: ${listLength}`);
|
|
155
|
+
if (listLength > 0) {
|
|
156
|
+
const firstItem = await redis.lindex(key, 0);
|
|
157
|
+
console.log(` First item: ${firstItem}`);
|
|
158
|
+
}
|
|
159
|
+
} else if (type === 'hash') {
|
|
160
|
+
const hashData = await redis.hgetall(key);
|
|
161
|
+
console.log(` Hash fields: ${Object.keys(hashData).join(', ')}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
} else {
|
|
165
|
+
// Inspect all coordination keys
|
|
166
|
+
const swarmKeys = await redis.keys('swarm:*');
|
|
167
|
+
const cfnKeys = await redis.keys('cfn:*');
|
|
168
|
+
|
|
169
|
+
console.log(`📊 Swarm keys: ${swarmKeys.length}`);
|
|
170
|
+
console.log(`📊 CFN keys: ${cfnKeys.length}`);
|
|
171
|
+
|
|
172
|
+
const totalKeys = swarmKeys.length + cfnKeys.length;
|
|
173
|
+
console.log(`📊 Total coordination keys: ${totalKeys}`);
|
|
174
|
+
|
|
175
|
+
if (totalKeys > 0) {
|
|
176
|
+
console.log('\n🔍 Key pattern analysis:');
|
|
177
|
+
const patterns = {};
|
|
178
|
+
|
|
179
|
+
for (const key of [...swarmKeys, ...cfnKeys]) {
|
|
180
|
+
const pattern = key.replace(/task:[^:]+/, 'task:*');
|
|
181
|
+
patterns[pattern] = (patterns[pattern] || 0) + 1;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
Object.entries(patterns)
|
|
185
|
+
.sort(([,a], [,b]) => b - a)
|
|
186
|
+
.forEach(([pattern, count]) => {
|
|
187
|
+
console.log(` ${pattern}: ${count} keys`);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
} catch (error) {
|
|
193
|
+
console.error('❌ Key inspection failed:', error.message);
|
|
194
|
+
} finally {
|
|
195
|
+
await redis.quit();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 3. Expired Key Cleanup
|
|
201
|
+
|
|
202
|
+
```typescript
|
|
203
|
+
// Clean up expired coordination keys
|
|
204
|
+
async function cleanupExpiredKeys(dryRun: boolean = true) {
|
|
205
|
+
console.log(`🧹 Expired Key Cleanup (${dryRun ? 'DRY RUN' : 'EXECUTE'})`);
|
|
206
|
+
console.log('==========================================');
|
|
207
|
+
|
|
208
|
+
const redis = new Redis({
|
|
209
|
+
host: process.env.REDIS_HOST || 'localhost',
|
|
210
|
+
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
211
|
+
retryStrategy: () => null
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
const allKeys = await redis.keys('*');
|
|
216
|
+
const expiredKeys = [];
|
|
217
|
+
const soonToExpire = [];
|
|
218
|
+
|
|
219
|
+
for (const key of allKeys) {
|
|
220
|
+
const ttl = await redis.ttl(key);
|
|
221
|
+
|
|
222
|
+
if (ttl === -1) {
|
|
223
|
+
// No TTL - might be intentional
|
|
224
|
+
continue;
|
|
225
|
+
} else if (ttl === -2) {
|
|
226
|
+
// Already expired (shouldn't happen with Redis)
|
|
227
|
+
expiredKeys.push(key);
|
|
228
|
+
} else if (ttl < 300) { // Less than 5 minutes
|
|
229
|
+
soonToExpire.push({ key, ttl });
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
console.log(`📊 Total keys: ${allKeys.length}`);
|
|
234
|
+
console.log(`📊 Expired keys: ${expiredKeys.length}`);
|
|
235
|
+
console.log(`📊 Soon to expire (< 5min): ${soonToExpire.length}`);
|
|
236
|
+
|
|
237
|
+
if (expiredKeys.length > 0) {
|
|
238
|
+
console.log('\n🗑️ Expired keys to delete:');
|
|
239
|
+
expiredKeys.forEach(key => console.log(` ${key}`));
|
|
240
|
+
|
|
241
|
+
if (!dryRun) {
|
|
242
|
+
const deleted = await redis.del(...expiredKeys);
|
|
243
|
+
console.log(`✅ Deleted ${deleted} expired keys`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (soonToExpire.length > 0) {
|
|
248
|
+
console.log('\n⏰ Keys expiring soon:');
|
|
249
|
+
soonToExpire.forEach(({key, ttl}) =>
|
|
250
|
+
console.log(` ${key} (${ttl}s)`)
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return {
|
|
255
|
+
totalKeys: allKeys.length,
|
|
256
|
+
expiredKeys: expiredKeys.length,
|
|
257
|
+
soonToExpire: soonToExpire.length,
|
|
258
|
+
cleaned: dryRun ? 0 : expiredKeys.length
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
} catch (error) {
|
|
262
|
+
console.error('❌ Cleanup failed:', error.message);
|
|
263
|
+
return { error: error.message };
|
|
264
|
+
} finally {
|
|
265
|
+
await redis.quit();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 4. Active Coordination Monitoring
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
// Monitor active CFN coordination
|
|
274
|
+
async function monitorActiveCoordination() {
|
|
275
|
+
console.log('📡 Active Coordination Monitor');
|
|
276
|
+
console.log('===============================');
|
|
277
|
+
|
|
278
|
+
const redis = new Redis({
|
|
279
|
+
host: process.env.REDIS_HOST || 'localhost',
|
|
280
|
+
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
281
|
+
retryStrategy: () => null
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
try {
|
|
285
|
+
// Find all active tasks
|
|
286
|
+
const activeKeys = await redis.keys('swarm:*:context');
|
|
287
|
+
const activeTasks = [];
|
|
288
|
+
|
|
289
|
+
for (const key of activeKeys) {
|
|
290
|
+
const match = key.match(/swarm:([^:]+):context/);
|
|
291
|
+
if (match) {
|
|
292
|
+
const taskId = match[1];
|
|
293
|
+
|
|
294
|
+
// Get task context
|
|
295
|
+
const context = await redis.hgetall(key);
|
|
296
|
+
|
|
297
|
+
// Check for active agents
|
|
298
|
+
const agentKeys = await redis.keys(`swarm:${taskId}:*:done`);
|
|
299
|
+
const waitingKeys = await redis.keys(`swarm:${taskId}:*:wait`);
|
|
300
|
+
|
|
301
|
+
// Check completion status
|
|
302
|
+
const completionKey = `swarm:${taskId}:complete`;
|
|
303
|
+
const isComplete = await redis.exists(completionKey);
|
|
304
|
+
|
|
305
|
+
activeTasks.push({
|
|
306
|
+
taskId,
|
|
307
|
+
context,
|
|
308
|
+
agentCount: agentKeys.length,
|
|
309
|
+
waitingCount: waitingKeys.length,
|
|
310
|
+
isComplete: !!isComplete,
|
|
311
|
+
timestamp: context.timestamp || 'unknown'
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
console.log(`📊 Found ${activeTasks.length} active coordination tasks:`);
|
|
317
|
+
|
|
318
|
+
activeTasks.forEach(task => {
|
|
319
|
+
console.log(`\n🎯 Task: ${task.taskId}`);
|
|
320
|
+
console.log(` Context: ${task.context.epic || 'no epic'}`);
|
|
321
|
+
console.log(` Mode: ${task.context.mode || 'standard'}`);
|
|
322
|
+
console.log(` Agents: ${task.agentCount} spawned`);
|
|
323
|
+
console.log(` Waiting: ${task.waitingCount} waiting`);
|
|
324
|
+
console.log(` Status: ${task.isComplete ? '✅ Complete' : '⏳ In Progress'}`);
|
|
325
|
+
console.log(` Created: ${task.timestamp}`);
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
return activeTasks;
|
|
329
|
+
|
|
330
|
+
} catch (error) {
|
|
331
|
+
console.error('❌ Monitoring failed:', error.message);
|
|
332
|
+
return { error: error.message };
|
|
333
|
+
} finally {
|
|
334
|
+
await redis.quit();
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### 5. Connection and Performance Analysis
|
|
340
|
+
|
|
341
|
+
```typescript
|
|
342
|
+
// Analyze Redis performance and connections
|
|
343
|
+
async function analyzePerformance() {
|
|
344
|
+
console.log('⚡ Redis Performance Analysis');
|
|
345
|
+
console.log('==============================');
|
|
346
|
+
|
|
347
|
+
const redis = new Redis({
|
|
348
|
+
host: process.env.REDIS_HOST || 'localhost',
|
|
349
|
+
port: parseInt(process.env.REDIS_PORT || '6379'),
|
|
350
|
+
retryStrategy: () => null
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
try {
|
|
354
|
+
// Get comprehensive server info
|
|
355
|
+
const serverInfo = await redis.info();
|
|
356
|
+
const stats = await redis.info('stats');
|
|
357
|
+
const memoryInfo = await redis.info('memory');
|
|
358
|
+
const persistenceInfo = await redis.info('persistence');
|
|
359
|
+
|
|
360
|
+
// Parse key metrics
|
|
361
|
+
const connectedClients = serverInfo.match(/connected_clients:(\d+)/)?.[1] || 'unknown';
|
|
362
|
+
const totalCommands = stats.match(/total_commands_processed:(\d+)/)?.[1] || 'unknown';
|
|
363
|
+
const usedMemory = memoryInfo.match(/used_memory_human:(.+)/)?.[1] || 'unknown';
|
|
364
|
+
const usedMemoryRss = memoryInfo.match(/used_memory_rss_human:(.+)/)?.[1] || 'unknown';
|
|
365
|
+
const hitRate = stats.match(/keyspace_hits:(\d+)/)?.[1] || '0';
|
|
366
|
+
const missRate = stats.match(/keyspace_misses:(\d+)/)?.[1] || '0';
|
|
367
|
+
|
|
368
|
+
console.log('📊 Connection Stats:');
|
|
369
|
+
console.log(` Connected clients: ${connectedClients}`);
|
|
370
|
+
console.log(` Total commands: ${totalCommands}`);
|
|
371
|
+
|
|
372
|
+
console.log('\n💾 Memory Usage:');
|
|
373
|
+
console.log(` Used memory: ${usedMemory}`);
|
|
374
|
+
console.log(` RSS memory: ${usedMemoryRss}`);
|
|
375
|
+
|
|
376
|
+
console.log('\n🎯 Cache Performance:');
|
|
377
|
+
const hits = parseInt(hitRate);
|
|
378
|
+
const misses = parseInt(missRate);
|
|
379
|
+
const total = hits + misses;
|
|
380
|
+
const hitPercentage = total > 0 ? ((hits / total) * 100).toFixed(2) : '0';
|
|
381
|
+
console.log(` Hit rate: ${hitPercentage}% (${hits}/${total})`);
|
|
382
|
+
|
|
383
|
+
// Slow log check
|
|
384
|
+
const slowLogLen = await redis.slowlog('len');
|
|
385
|
+
console.log(`\n🐌 Slow log entries: ${slowLogLen}`);
|
|
386
|
+
|
|
387
|
+
if (slowLogLen > 0) {
|
|
388
|
+
console.log('Recent slow queries:');
|
|
389
|
+
const slowLog = await redis.slowlog('get', 5);
|
|
390
|
+
slowLog.forEach(([id, timestamp, duration, command]) => {
|
|
391
|
+
console.log(` ${new Date(timestamp * 1000).toISOString()}: ${duration}µs - ${command.join(' ')}`);
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// Key space info
|
|
396
|
+
const keySpaceInfo = await redis.info('keyspace');
|
|
397
|
+
console.log('\n🔑 Keyspace Info:');
|
|
398
|
+
console.log(keySpaceInfo);
|
|
399
|
+
|
|
400
|
+
return {
|
|
401
|
+
connectedClients,
|
|
402
|
+
totalCommands,
|
|
403
|
+
usedMemory,
|
|
404
|
+
hitRate: hitPercentage,
|
|
405
|
+
slowQueries: slowLogLen,
|
|
406
|
+
status: 'analyzed'
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
} catch (error) {
|
|
410
|
+
console.error('❌ Performance analysis failed:', error.message);
|
|
411
|
+
return { error: error.message };
|
|
412
|
+
} finally {
|
|
413
|
+
await redis.quit();
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
## Common Troubleshooting Scenarios
|
|
419
|
+
|
|
420
|
+
### Scenario 1: Agents Not Completing in CLI Mode
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
# Symptoms: Agents spawn but never report completion
|
|
424
|
+
# Diagnosis: Check for completion signals
|
|
425
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation inspect-keys --task-id "task-123"
|
|
426
|
+
|
|
427
|
+
# Check waiting coordinator keys
|
|
428
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation monitor-active
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Scenario 2: Redis Connection Failures
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
# Symptoms: Coordinator can't connect to Redis
|
|
435
|
+
# Diagnosis: Check Redis health and connectivity
|
|
436
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation health-check
|
|
437
|
+
|
|
438
|
+
# Verify connection parameters
|
|
439
|
+
echo "REDIS_HOST=${REDIS_HOST:-localhost}"
|
|
440
|
+
echo "REDIS_PORT=${REDIS_PORT:-6379}"
|
|
441
|
+
echo "CFN_REDIS_PASSWORD=${CFN_REDIS_PASSWORD:+(set)}"
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Scenario 3: Memory Issues
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# Symptoms: Redis using too much memory
|
|
448
|
+
# Diagnosis: Analyze memory usage and key patterns
|
|
449
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation analyze-performance
|
|
450
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation cleanup-expired
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### Scenario 4: Orphaned Coordination Keys
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
# Symptoms: Old coordination keys remaining after tasks complete
|
|
457
|
+
# Diagnosis: Inspect and clean up expired keys
|
|
458
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation inspect-keys
|
|
459
|
+
./.claude/agents/custom/cfn-redis-operations.md --operation cleanup-expired --execute
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
## Manual Operations Guide
|
|
463
|
+
|
|
464
|
+
### Quick Health Check
|
|
465
|
+
```bash
|
|
466
|
+
# Basic Redis connectivity
|
|
467
|
+
redis-cli ping
|
|
468
|
+
|
|
469
|
+
# Check active coordination
|
|
470
|
+
node -e "
|
|
471
|
+
const { RedisCoordinator } = require('./.claude/skills/cfn-redis-coordination/dist/redis-client.js');
|
|
472
|
+
const coordinator = new RedisCoordinator();
|
|
473
|
+
coordinator.initialize().then(() => {
|
|
474
|
+
console.log('Redis canUseRedis:', coordinator.canUseRedis);
|
|
475
|
+
console.log('Mode:', coordinator.mode);
|
|
476
|
+
}).catch(console.error);
|
|
477
|
+
"
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### Key Pattern Reference
|
|
481
|
+
```
|
|
482
|
+
Coordination Keys:
|
|
483
|
+
- swarm:{taskId}:context - Task context hash
|
|
484
|
+
- swarm:{taskId}:{agentId}:done - Agent completion signal
|
|
485
|
+
- swarm:{taskId}:wait - Waiting coordination list
|
|
486
|
+
- swarm:{taskId}:complete - Task completion flag
|
|
487
|
+
- swarm:{taskId}:consensus - Consensus collection hash
|
|
488
|
+
- swarm:{taskId}:results - Results collection list
|
|
489
|
+
|
|
490
|
+
Typical Values:
|
|
491
|
+
- taskId: UUID or identifier string
|
|
492
|
+
- agentId: agent type or identifier
|
|
493
|
+
- TTL: 24 hours (86400 seconds) for coordination keys
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
### Emergency Procedures
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
# If Redis is completely unresponsive:
|
|
500
|
+
# 1. Restart Redis service
|
|
501
|
+
docker-compose restart redis
|
|
502
|
+
# OR
|
|
503
|
+
systemctl restart redis
|
|
504
|
+
|
|
505
|
+
# 2. Check for corrupted data
|
|
506
|
+
redis-cli --scan --pattern "*" | wc -l
|
|
507
|
+
|
|
508
|
+
# 3. Emergency key cleanup (last resort)
|
|
509
|
+
redis-cli FLUSHDB # ⚠️ DELETES ALL DATA
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
## Success Metrics
|
|
513
|
+
|
|
514
|
+
### Diagnostic Accuracy
|
|
515
|
+
- **Health check reliability**: 100% accurate Redis status reporting
|
|
516
|
+
- **Key inspection completeness**: All coordination keys examined
|
|
517
|
+
- **Performance analysis accuracy**: Real-time metrics with <5% error margin
|
|
518
|
+
|
|
519
|
+
### Troubleshooting Effectiveness
|
|
520
|
+
- **Issue identification time**: <2 minutes for common problems
|
|
521
|
+
- **Resolution success rate**: >90% for coordination issues
|
|
522
|
+
- **Data recovery rate**: >95% for recoverable coordination state
|
|
523
|
+
|
|
524
|
+
### Operational Safety
|
|
525
|
+
- **Dry-run mode**: All destructive operations support dry-run first
|
|
526
|
+
- **Backup verification**: Verify Redis backups before major operations
|
|
527
|
+
- **Rollback capability**: Documented rollback procedures for all changes
|
|
528
|
+
|
|
529
|
+
---
|
|
530
530
|
**IMPORTANT**: I am a troubleshooting specialist, NOT part of normal CFN Loop operations. Use me for Redis diagnostics, key management, and coordination debugging only when issues need investigation.
|