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
|
@@ -8,15 +8,31 @@
|
|
|
8
8
|
*/ import { spawn } from 'child_process';
|
|
9
9
|
import { exec } from 'child_process';
|
|
10
10
|
import { promisify } from 'util';
|
|
11
|
+
import { createClient } from 'redis';
|
|
11
12
|
import { getAgentId } from './agent-prompt-builder.js';
|
|
12
13
|
import { buildCLIAgentSystemPrompt, loadContextFromEnv } from './cli-agent-context.js';
|
|
13
14
|
import { loadMessages, storeMessage, getCurrentFork, formatMessagesForAPI } from './conversation-fork.js';
|
|
14
15
|
import { convertToolNames } from './tool-definitions.js';
|
|
16
|
+
import { AgentCommandProcessor } from './coordination/agent-messaging.js';
|
|
15
17
|
import fs from 'fs/promises';
|
|
18
|
+
import fsSync from 'fs';
|
|
16
19
|
import path from 'path';
|
|
17
20
|
import os from 'os';
|
|
18
21
|
import { execSync } from 'child_process';
|
|
19
22
|
const execAsync = promisify(exec);
|
|
23
|
+
// DEBUG: File-based logging for background agents (stdio: 'ignore' masks errors)
|
|
24
|
+
const AGENT_ID = process.env.AGENT_ID || 'unknown';
|
|
25
|
+
const LOG_FILE = `/tmp/cfn-agent-${AGENT_ID}.log`;
|
|
26
|
+
function debugLog(message, data) {
|
|
27
|
+
const timestamp = new Date().toISOString();
|
|
28
|
+
const logEntry = data ? `${timestamp} [${AGENT_ID}] ${message} ${JSON.stringify(data)}\n` : `${timestamp} [${AGENT_ID}] ${message}\n`;
|
|
29
|
+
try {
|
|
30
|
+
fsSync.appendFileSync(LOG_FILE, logEntry);
|
|
31
|
+
} catch (err) {
|
|
32
|
+
// Ignore logging errors
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
debugLog('=== Agent Executor Started ===');
|
|
20
36
|
/**
|
|
21
37
|
* Detect project root dynamically
|
|
22
38
|
* Uses PROJECT_ROOT env var if set, otherwise tries git, falls back to cwd
|
|
@@ -48,9 +64,74 @@ const execAsync = promisify(exec);
|
|
|
48
64
|
const projectRoot = getProjectRoot();
|
|
49
65
|
// Bug #6 Fix: Read Redis connection parameters from process.env
|
|
50
66
|
// ENV-001: Standardized environment variable naming (REDIS_PASSWORD for all deployments)
|
|
51
|
-
|
|
67
|
+
// ROOT CAUSE #2 FIX: Don't fall back to REDIS_PASSWORD from parent env (CLI mode has no password)
|
|
68
|
+
// FIX: Default to 'localhost' for CLI mode (host execution), not 'cfn-redis' (Docker)
|
|
69
|
+
// CLI agents run on the host and connect to Redis at localhost:6379
|
|
70
|
+
// Docker agents should have CFN_REDIS_HOST explicitly set to their container network hostname
|
|
71
|
+
const redisHost = process.env.CFN_REDIS_HOST || 'localhost';
|
|
52
72
|
const redisPort = process.env.CFN_REDIS_PORT || '6379';
|
|
53
|
-
const redisPassword = process.env.CFN_REDIS_PASSWORD ||
|
|
73
|
+
const redisPassword = process.env.CFN_REDIS_PASSWORD || '';
|
|
74
|
+
/**
|
|
75
|
+
* Validate task ID format to prevent command injection
|
|
76
|
+
* Allows: optional namespace prefix (e.g., "cli:", "task:"), alphanumeric, hyphens, underscores, dots
|
|
77
|
+
* Pattern: /^([a-z]+:)?[a-zA-Z0-9_.-]+$/
|
|
78
|
+
* - Optional prefix: lowercase letters followed by colon
|
|
79
|
+
* - Main ID: alphanumeric, hyphens, underscores, dots
|
|
80
|
+
* @param taskId - The task ID to validate
|
|
81
|
+
* @throws Error if taskId is invalid
|
|
82
|
+
*/ function validateTaskId(taskId) {
|
|
83
|
+
if (!taskId || !/^([a-z]+:)?[a-zA-Z0-9_.-]+$/.test(taskId)) {
|
|
84
|
+
throw new Error(`Invalid task ID format: "${taskId}". Must contain optional namespace prefix (e.g., "cli:") and alphanumeric characters, hyphens, underscores, or dots.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Validate agent ID format to prevent command injection
|
|
89
|
+
* Allows: alphanumeric, hyphens, underscores
|
|
90
|
+
* @param agentId - The agent ID to validate
|
|
91
|
+
* @throws Error if agentId is invalid
|
|
92
|
+
*/ function validateAgentId(agentId) {
|
|
93
|
+
if (!agentId || !/^[a-zA-Z0-9_-]+$/.test(agentId)) {
|
|
94
|
+
throw new Error(`Invalid agent ID format: "${agentId}". Must contain only alphanumeric characters, hyphens, and underscores.`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create a Redis client with proper connection handling
|
|
99
|
+
* Uses environment variables for connection configuration
|
|
100
|
+
* @returns Promise<RedisClientType> - Connected Redis client
|
|
101
|
+
*/ async function createRedisClient() {
|
|
102
|
+
debugLog('createRedisClient: Starting Redis connection attempt');
|
|
103
|
+
debugLog('Redis config', {
|
|
104
|
+
host: redisHost,
|
|
105
|
+
port: redisPort,
|
|
106
|
+
hasPassword: !!redisPassword
|
|
107
|
+
});
|
|
108
|
+
console.error('[DEBUG] createRedisClient: Starting Redis connection...');
|
|
109
|
+
console.error(`[DEBUG] Redis config: host=${redisHost}, port=${redisPort}, hasPassword=${!!redisPassword}`);
|
|
110
|
+
const portNum = parseInt(redisPort, 10);
|
|
111
|
+
debugLog(`createRedisClient: Creating client for ${redisHost}:${portNum}`);
|
|
112
|
+
const client = createClient({
|
|
113
|
+
socket: {
|
|
114
|
+
host: redisHost,
|
|
115
|
+
port: portNum,
|
|
116
|
+
reconnectStrategy: (retries)=>Math.min(retries * 50, 500),
|
|
117
|
+
connectTimeout: 5000
|
|
118
|
+
},
|
|
119
|
+
password: redisPassword || undefined
|
|
120
|
+
});
|
|
121
|
+
client.on('error', (err)=>{
|
|
122
|
+
debugLog('Redis Client Error event triggered', {
|
|
123
|
+
error: err.message,
|
|
124
|
+
stack: err.stack
|
|
125
|
+
});
|
|
126
|
+
console.error('[DEBUG] Redis Client Error:', err);
|
|
127
|
+
});
|
|
128
|
+
debugLog('createRedisClient: Client created, calling connect()');
|
|
129
|
+
console.error('[DEBUG] createRedisClient: Client created, attempting connection...');
|
|
130
|
+
await client.connect();
|
|
131
|
+
debugLog('createRedisClient: ✓ Connected successfully');
|
|
132
|
+
console.error('[DEBUG] createRedisClient: ✓ Connected successfully');
|
|
133
|
+
return client;
|
|
134
|
+
}
|
|
54
135
|
/**
|
|
55
136
|
* Parse context string into environment variables
|
|
56
137
|
*
|
|
@@ -113,64 +194,304 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
113
194
|
* Execute CFN Loop protocol after agent completes work
|
|
114
195
|
*
|
|
115
196
|
* Steps:
|
|
116
|
-
* 1. Signal completion to orchestrator
|
|
117
|
-
* 2.
|
|
118
|
-
*
|
|
197
|
+
* 1. Signal completion to orchestrator and Main Chat via Redis (includes confidence)
|
|
198
|
+
* 2. Exit cleanly (orchestrator spawns next agent if needed)
|
|
199
|
+
*
|
|
200
|
+
* Note: Confidence is included in the completion signal JSON payload.
|
|
201
|
+
* The deprecated report-completion.sh script has been removed (Bug #4 fix).
|
|
119
202
|
*/ async function executeCFNProtocol(taskId, agentId, output, iteration, enableIterations = false, maxIterations = 10) {
|
|
203
|
+
console.error('[DEBUG] executeCFNProtocol: ENTRY POINT REACHED');
|
|
120
204
|
console.log(`\n[CFN Protocol] Starting for agent ${agentId}`);
|
|
121
205
|
console.log(`[CFN Protocol] Task ID: ${taskId}, Iteration: ${iteration}`);
|
|
206
|
+
// SECURITY FIX: Validate inputs to prevent command injection
|
|
207
|
+
console.error('[DEBUG] executeCFNProtocol: Validating taskId and agentId...');
|
|
208
|
+
validateTaskId(taskId);
|
|
209
|
+
validateAgentId(agentId);
|
|
210
|
+
console.error('[DEBUG] executeCFNProtocol: Validation passed');
|
|
211
|
+
let redisClient = null;
|
|
122
212
|
try {
|
|
123
|
-
// Step 1: Signal completion
|
|
213
|
+
// Step 1: Signal completion using Redis client (NOT shell commands)
|
|
214
|
+
debugLog('executeCFNProtocol: Starting Step 1 (Redis signaling)', {
|
|
215
|
+
taskId,
|
|
216
|
+
agentId,
|
|
217
|
+
iteration
|
|
218
|
+
});
|
|
219
|
+
console.error('[DEBUG] executeCFNProtocol: Starting Step 1 (Redis signaling)...');
|
|
124
220
|
console.log('[CFN Protocol] Step 1: Signaling completion...');
|
|
125
|
-
|
|
126
|
-
await
|
|
127
|
-
|
|
128
|
-
|
|
221
|
+
debugLog('executeCFNProtocol: Calling createRedisClient()');
|
|
222
|
+
redisClient = await createRedisClient();
|
|
223
|
+
debugLog('executeCFNProtocol: Redis client obtained successfully');
|
|
224
|
+
console.error('[DEBUG] executeCFNProtocol: Redis client obtained');
|
|
225
|
+
// Signal to orchestrator (CFN Loop coordination) - using parameterized Redis call
|
|
226
|
+
const orchestratorKey = `swarm:${taskId}:${agentId}:done`;
|
|
227
|
+
debugLog('executeCFNProtocol: Sending orchestrator signal', {
|
|
228
|
+
key: orchestratorKey
|
|
229
|
+
});
|
|
230
|
+
console.error(`[DEBUG] executeCFNProtocol: Sending orchestrator signal to key: swarm:${taskId}:${agentId}:done`);
|
|
231
|
+
await redisClient.lPush(orchestratorKey, 'complete');
|
|
232
|
+
debugLog('executeCFNProtocol: Orchestrator signal sent successfully');
|
|
233
|
+
console.error('[DEBUG] executeCFNProtocol: Orchestrator signal sent successfully');
|
|
234
|
+
console.log('[CFN Protocol] ✓ Orchestrator signal sent');
|
|
235
|
+
// Signal to Main Chat (CLI mode coordination - correct key format) - using parameterized Redis call
|
|
236
|
+
const mainChatKey = `cfn:cli:${taskId}:completion`;
|
|
237
|
+
debugLog('executeCFNProtocol: Preparing Main Chat signal', {
|
|
238
|
+
key: mainChatKey
|
|
239
|
+
});
|
|
240
|
+
console.error(`[DEBUG] executeCFNProtocol: Preparing Main Chat signal for key: cfn:cli:${taskId}:completion`);
|
|
129
241
|
const confidence = extractConfidence(output);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
242
|
+
const agentMetadata = JSON.stringify({
|
|
243
|
+
agentId,
|
|
244
|
+
taskId,
|
|
245
|
+
status: 'completed',
|
|
246
|
+
iteration,
|
|
247
|
+
confidence
|
|
248
|
+
});
|
|
249
|
+
debugLog('executeCFNProtocol: Agent metadata prepared', {
|
|
250
|
+
metadata: agentMetadata,
|
|
251
|
+
confidence
|
|
252
|
+
});
|
|
253
|
+
await redisClient.lPush(mainChatKey, agentMetadata);
|
|
254
|
+
debugLog('executeCFNProtocol: Main Chat signal sent successfully');
|
|
255
|
+
console.error('[DEBUG] executeCFNProtocol: Main Chat signal sent successfully');
|
|
256
|
+
console.log('[CFN Protocol] ✓ Main Chat signal sent');
|
|
257
|
+
console.log(`[CFN Protocol] ✓ Confidence reported: ${confidence}`);
|
|
258
|
+
// Step 2: Exit cleanly (BUG #18 FIX - removed waiting mode)
|
|
139
259
|
// Orchestrator will spawn appropriate specialist agent for next iteration
|
|
140
260
|
// This enables adaptive agent specialization based on feedback type
|
|
141
|
-
|
|
261
|
+
debugLog('executeCFNProtocol: Step 2 - Exiting cleanly');
|
|
262
|
+
console.error('[DEBUG] executeCFNProtocol: Step 2 - Exiting cleanly...');
|
|
263
|
+
console.log('[CFN Protocol] Step 2: Exiting cleanly (iteration complete)');
|
|
142
264
|
console.log('[CFN Protocol] Protocol complete\n');
|
|
265
|
+
debugLog('executeCFNProtocol: ✓ PROTOCOL COMPLETED SUCCESSFULLY');
|
|
266
|
+
console.error('[DEBUG] executeCFNProtocol: ✓ PROTOCOL COMPLETED SUCCESSFULLY');
|
|
143
267
|
} catch (error) {
|
|
268
|
+
const errorDetails = error instanceof Error ? {
|
|
269
|
+
message: error.message,
|
|
270
|
+
stack: error.stack,
|
|
271
|
+
name: error.name
|
|
272
|
+
} : {
|
|
273
|
+
error: String(error)
|
|
274
|
+
};
|
|
275
|
+
debugLog('executeCFNProtocol: ERROR CAUGHT', errorDetails);
|
|
276
|
+
console.error('[DEBUG] executeCFNProtocol: ERROR CAUGHT:', error);
|
|
144
277
|
console.error('[CFN Protocol] Error:', error);
|
|
145
278
|
throw error;
|
|
279
|
+
} finally{
|
|
280
|
+
// Always close the Redis connection
|
|
281
|
+
debugLog('executeCFNProtocol: FINALLY block - cleaning up Redis client');
|
|
282
|
+
console.error('[DEBUG] executeCFNProtocol: FINALLY block - cleaning up Redis client...');
|
|
283
|
+
if (redisClient) {
|
|
284
|
+
await redisClient.quit();
|
|
285
|
+
debugLog('executeCFNProtocol: Redis client closed successfully');
|
|
286
|
+
console.error('[DEBUG] executeCFNProtocol: Redis client closed');
|
|
287
|
+
} else {
|
|
288
|
+
debugLog('executeCFNProtocol: No Redis client to close');
|
|
289
|
+
}
|
|
290
|
+
debugLog('executeCFNProtocol: FINALLY block complete');
|
|
291
|
+
console.error('[DEBUG] executeCFNProtocol: FINALLY block complete');
|
|
146
292
|
}
|
|
147
293
|
}
|
|
148
294
|
/**
|
|
149
|
-
*
|
|
295
|
+
* Start command processor for bidirectional messaging with Main Chat
|
|
296
|
+
*
|
|
297
|
+
* Enables Main Chat to send commands to running agents:
|
|
298
|
+
* - status: Request agent status update
|
|
299
|
+
* - redirect: Redirect agent to new task context
|
|
300
|
+
* - abort: Request clean agent abort
|
|
301
|
+
* - pause: Pause agent for N seconds
|
|
302
|
+
*/ function startCommandProcessor(taskId, agentId, state) {
|
|
303
|
+
// Only start if Redis is available and we have valid IDs
|
|
304
|
+
if (!taskId || !agentId) {
|
|
305
|
+
debugLog('startCommandProcessor: Skipping - missing taskId or agentId');
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
debugLog('startCommandProcessor: Creating processor', {
|
|
310
|
+
taskId,
|
|
311
|
+
agentId
|
|
312
|
+
});
|
|
313
|
+
const processor = new AgentCommandProcessor({
|
|
314
|
+
taskId,
|
|
315
|
+
agentId,
|
|
316
|
+
redisHost: redisHost,
|
|
317
|
+
redisPort: parseInt(redisPort, 10),
|
|
318
|
+
redisPassword: redisPassword || undefined
|
|
319
|
+
});
|
|
320
|
+
// Register redirect handler - updates agent context
|
|
321
|
+
processor.onCommand('redirect', async (command)=>{
|
|
322
|
+
debugLog('Command received: redirect', command.payload);
|
|
323
|
+
console.log(`[agent-msg] Received redirect command`);
|
|
324
|
+
if (command.payload?.newTask) {
|
|
325
|
+
state.redirectContext = command.payload.newTask;
|
|
326
|
+
state.lastCommandTime = new Date().toISOString();
|
|
327
|
+
console.log(`[agent-msg] New context: ${state.redirectContext}`);
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
agentId,
|
|
331
|
+
taskId,
|
|
332
|
+
status: 'running',
|
|
333
|
+
timestamp: new Date().toISOString(),
|
|
334
|
+
currentStep: 'Acknowledged redirect',
|
|
335
|
+
metadata: {
|
|
336
|
+
redirectedTo: state.redirectContext
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
});
|
|
340
|
+
// Register custom status handler with more detail
|
|
341
|
+
processor.onCommand('status', async (_command)=>{
|
|
342
|
+
debugLog('Command received: status request');
|
|
343
|
+
console.log(`[agent-msg] Received status request`);
|
|
344
|
+
return {
|
|
345
|
+
agentId,
|
|
346
|
+
taskId,
|
|
347
|
+
status: state.paused ? 'paused' : state.abortRequested ? 'aborting' : 'running',
|
|
348
|
+
timestamp: new Date().toISOString(),
|
|
349
|
+
metadata: {
|
|
350
|
+
paused: state.paused,
|
|
351
|
+
abortRequested: state.abortRequested,
|
|
352
|
+
redirectContext: state.redirectContext,
|
|
353
|
+
lastCommandTime: state.lastCommandTime
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
});
|
|
357
|
+
// Register abort handler
|
|
358
|
+
processor.onCommand('abort', async (_command)=>{
|
|
359
|
+
debugLog('Command received: abort request');
|
|
360
|
+
console.log(`[agent-msg] Received abort request - will exit after current task`);
|
|
361
|
+
state.abortRequested = true;
|
|
362
|
+
state.lastCommandTime = new Date().toISOString();
|
|
363
|
+
return {
|
|
364
|
+
agentId,
|
|
365
|
+
taskId,
|
|
366
|
+
status: 'aborting',
|
|
367
|
+
timestamp: new Date().toISOString()
|
|
368
|
+
};
|
|
369
|
+
});
|
|
370
|
+
// Start processor in background (non-blocking)
|
|
371
|
+
processor.start(3).catch((err)=>{
|
|
372
|
+
debugLog('Command processor error', {
|
|
373
|
+
error: err.message
|
|
374
|
+
});
|
|
375
|
+
console.error('[agent-msg] Command processor error:', err);
|
|
376
|
+
});
|
|
377
|
+
debugLog('startCommandProcessor: Started successfully');
|
|
378
|
+
console.log(`[agent-msg] Command processor started for ${agentId}`);
|
|
379
|
+
return processor;
|
|
380
|
+
} catch (err) {
|
|
381
|
+
debugLog('startCommandProcessor: Failed to start', {
|
|
382
|
+
error: err instanceof Error ? err.message : String(err)
|
|
383
|
+
});
|
|
384
|
+
console.error('[agent-msg] Failed to start command processor:', err);
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Check if custom routing (non-Anthropic) is enabled
|
|
390
|
+
*
|
|
391
|
+
* BUG FIX: Now checks both CLAUDE_API_PROVIDER (legacy) and PROVIDER (from --provider flag)
|
|
150
392
|
*/ async function isCustomRoutingEnabled() {
|
|
151
|
-
// Check environment
|
|
152
|
-
|
|
393
|
+
// Check environment variables - support both conventions
|
|
394
|
+
const envProvider = process.env.CLAUDE_API_PROVIDER || process.env.PROVIDER;
|
|
395
|
+
if (envProvider && envProvider !== 'anthropic') {
|
|
396
|
+
debugLog('isCustomRoutingEnabled: Custom provider from env', {
|
|
397
|
+
provider: envProvider
|
|
398
|
+
});
|
|
153
399
|
return true;
|
|
154
400
|
}
|
|
155
401
|
// Check config file (.claude/config/api-provider.json)
|
|
156
402
|
try {
|
|
157
403
|
const configPath = path.join(projectRoot, '.claude', 'config', 'api-provider.json');
|
|
158
404
|
const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
159
|
-
|
|
405
|
+
const isCustom = config.provider && config.provider !== 'anthropic';
|
|
406
|
+
debugLog('isCustomRoutingEnabled: Config file result', {
|
|
407
|
+
provider: config.provider,
|
|
408
|
+
isCustom
|
|
409
|
+
});
|
|
410
|
+
return isCustom;
|
|
160
411
|
} catch {
|
|
161
412
|
return false;
|
|
162
413
|
}
|
|
163
414
|
}
|
|
164
415
|
/**
|
|
165
416
|
* Get API provider configuration
|
|
417
|
+
*
|
|
418
|
+
* Resolution order:
|
|
419
|
+
* 1. CLAUDE_API_PROVIDER env var (legacy)
|
|
420
|
+
* 2. PROVIDER env var (from CLI --provider flag)
|
|
421
|
+
* 3. Config file
|
|
422
|
+
* 4. Default to Z.ai (cost-effective fallback)
|
|
423
|
+
*
|
|
424
|
+
* BUG FIX: Previously only returned 'anthropic' | 'zai', now supports all providers
|
|
425
|
+
* BUG FIX: Previously defaulted to Anthropic, now defaults to Z.ai
|
|
166
426
|
*/ async function getAPIProvider() {
|
|
167
|
-
|
|
168
|
-
|
|
427
|
+
// Check environment variables
|
|
428
|
+
const envProvider = process.env.CLAUDE_API_PROVIDER || process.env.PROVIDER;
|
|
429
|
+
if (envProvider) {
|
|
430
|
+
const normalized = envProvider.toLowerCase();
|
|
431
|
+
if ([
|
|
432
|
+
'anthropic',
|
|
433
|
+
'zai',
|
|
434
|
+
'z.ai',
|
|
435
|
+
'kimi',
|
|
436
|
+
'openrouter'
|
|
437
|
+
].includes(normalized)) {
|
|
438
|
+
const result = normalized === 'z.ai' ? 'zai' : normalized;
|
|
439
|
+
debugLog('getAPIProvider: Resolved from env', {
|
|
440
|
+
envProvider,
|
|
441
|
+
result
|
|
442
|
+
});
|
|
443
|
+
console.error(`[agent-executor] Provider from env: ${result}`);
|
|
444
|
+
return result;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// Check config file
|
|
448
|
+
try {
|
|
449
|
+
const configPath = path.join(projectRoot, '.claude', 'config', 'api-provider.json');
|
|
450
|
+
const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
451
|
+
if (config.provider) {
|
|
452
|
+
const normalized = config.provider.toLowerCase();
|
|
453
|
+
if ([
|
|
454
|
+
'anthropic',
|
|
455
|
+
'zai',
|
|
456
|
+
'z.ai',
|
|
457
|
+
'kimi',
|
|
458
|
+
'openrouter'
|
|
459
|
+
].includes(normalized)) {
|
|
460
|
+
const result = normalized === 'z.ai' ? 'zai' : normalized;
|
|
461
|
+
debugLog('getAPIProvider: Resolved from config', {
|
|
462
|
+
configProvider: config.provider,
|
|
463
|
+
result
|
|
464
|
+
});
|
|
465
|
+
console.error(`[agent-executor] Provider from config: ${result}`);
|
|
466
|
+
return result;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
} catch {
|
|
470
|
+
// Config file doesn't exist, use default
|
|
471
|
+
}
|
|
472
|
+
// Default to Z.ai (cost-effective fallback)
|
|
473
|
+
debugLog('getAPIProvider: Using default', {
|
|
474
|
+
result: 'zai'
|
|
475
|
+
});
|
|
476
|
+
console.error('[agent-executor] Provider defaulting to: zai');
|
|
477
|
+
return 'zai';
|
|
169
478
|
}
|
|
170
479
|
/**
|
|
171
480
|
* Execute agent using direct API calls
|
|
172
481
|
*/ async function executeViaAPI(definition, prompt, context) {
|
|
482
|
+
debugLog('executeViaAPI: FUNCTION ENTRY', {
|
|
483
|
+
agentType: definition.name
|
|
484
|
+
});
|
|
485
|
+
console.error('[DEBUG] executeViaAPI: FUNCTION ENTRY');
|
|
173
486
|
const agentId = getAgentId(definition, context);
|
|
487
|
+
debugLog('executeViaAPI: Agent initialized', {
|
|
488
|
+
agentId,
|
|
489
|
+
taskId: context.taskId,
|
|
490
|
+
iteration: context.iteration,
|
|
491
|
+
hasContext: !!context.context
|
|
492
|
+
});
|
|
493
|
+
console.error(`[DEBUG] executeViaAPI: Generated agentId=${agentId}`);
|
|
494
|
+
console.error(`[DEBUG] executeViaAPI: context.taskId=${context.taskId}, context.iteration=${context.iteration}`);
|
|
174
495
|
console.log(`[agent-executor] Executing agent via API: ${definition.name}`);
|
|
175
496
|
console.log(`[agent-executor] Agent ID: ${agentId}`);
|
|
176
497
|
console.log(`[agent-executor] Model: ${definition.model}`);
|
|
@@ -182,6 +503,16 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
182
503
|
const contextEnv = parseContextToEnv(context.context);
|
|
183
504
|
console.log(`[agent-executor] Injected env vars: ${Object.keys(contextEnv).join(', ')}`);
|
|
184
505
|
}
|
|
506
|
+
// v2.0: Initialize runtime state for bidirectional messaging
|
|
507
|
+
const runtimeState = {
|
|
508
|
+
paused: false,
|
|
509
|
+
abortRequested: false
|
|
510
|
+
};
|
|
511
|
+
// v2.0: Start command processor for Main Chat communication
|
|
512
|
+
let commandProcessor = null;
|
|
513
|
+
if (context.taskId) {
|
|
514
|
+
commandProcessor = startCommandProcessor(context.taskId, agentId, runtimeState);
|
|
515
|
+
}
|
|
185
516
|
try {
|
|
186
517
|
// Check for conversation fork (Sprint 4 enhancement)
|
|
187
518
|
const forkId = process.env.FORK_ID || await getCurrentFork(context.taskId || '', agentId);
|
|
@@ -227,7 +558,19 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
227
558
|
// Dynamic import to avoid bundling issues
|
|
228
559
|
const { executeAgentAPI } = await import('./anthropic-client.js');
|
|
229
560
|
// Convert agent tool names to Anthropic API format
|
|
561
|
+
debugLog('[TOOL DEBUG] definition.tools check', {
|
|
562
|
+
hasTools: !!definition.tools,
|
|
563
|
+
toolsLength: definition.tools?.length || 0,
|
|
564
|
+
toolNames: definition.tools || []
|
|
565
|
+
});
|
|
566
|
+
console.error(`[TOOL DEBUG] definition.tools: ${JSON.stringify(definition.tools)}`);
|
|
230
567
|
const tools = definition.tools && definition.tools.length > 0 ? convertToolNames(definition.tools) : undefined;
|
|
568
|
+
debugLog('[TOOL DEBUG] converted tools', {
|
|
569
|
+
hasConvertedTools: !!tools,
|
|
570
|
+
convertedToolsCount: tools?.length || 0,
|
|
571
|
+
convertedToolNames: tools?.map((t)=>t.name) || []
|
|
572
|
+
});
|
|
573
|
+
console.error(`[TOOL DEBUG] Converted tools: ${tools?.map((t)=>t.name).join(', ') || 'NONE'}`);
|
|
231
574
|
const result = await executeAgentAPI(definition.name, agentId, definition.model, prompt, systemPrompt, messages.length > 1 ? messages : undefined, undefined, tools // Pass converted tools
|
|
232
575
|
);
|
|
233
576
|
// Store messages in conversation history (for future forking)
|
|
@@ -253,15 +596,39 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
253
596
|
console.log(`[agent-executor] Stored messages for iteration ${iteration}`);
|
|
254
597
|
// Execute CFN Loop protocol (signal completion, report confidence, enter waiting mode)
|
|
255
598
|
// Iterations are enabled for CFN Loop tasks (indicated by presence of taskId)
|
|
599
|
+
debugLog('agent-executor: About to execute CFN Protocol', {
|
|
600
|
+
taskId: context.taskId,
|
|
601
|
+
agentId,
|
|
602
|
+
iteration,
|
|
603
|
+
outputLength: result.output.length
|
|
604
|
+
});
|
|
605
|
+
console.error('[DEBUG] agent-executor: About to execute CFN Protocol...');
|
|
606
|
+
console.error(`[DEBUG] agent-executor: taskId=${context.taskId}, agentId=${agentId}, iteration=${iteration}`);
|
|
256
607
|
try {
|
|
257
608
|
const maxIterations = 10; // Default max iterations
|
|
258
609
|
const enableIterations = true; // Enable iterations for all CFN Loop tasks
|
|
610
|
+
debugLog('agent-executor: Calling executeCFNProtocol', {
|
|
611
|
+
maxIterations,
|
|
612
|
+
enableIterations
|
|
613
|
+
});
|
|
614
|
+
console.error('[DEBUG] agent-executor: Calling executeCFNProtocol...');
|
|
259
615
|
await executeCFNProtocol(context.taskId, agentId, result.output, iteration, enableIterations, maxIterations);
|
|
616
|
+
debugLog('agent-executor: ✓ executeCFNProtocol returned successfully');
|
|
617
|
+
console.error('[DEBUG] agent-executor: ✓ executeCFNProtocol returned successfully');
|
|
260
618
|
} catch (error) {
|
|
619
|
+
const errorDetails = error instanceof Error ? {
|
|
620
|
+
message: error.message,
|
|
621
|
+
stack: error.stack
|
|
622
|
+
} : {
|
|
623
|
+
error: String(error)
|
|
624
|
+
};
|
|
625
|
+
debugLog('agent-executor: ✗ executeCFNProtocol threw error', errorDetails);
|
|
626
|
+
console.error('[DEBUG] agent-executor: ✗ executeCFNProtocol threw error:', error);
|
|
261
627
|
console.error('[agent-executor] CFN Protocol execution failed:', error);
|
|
262
628
|
// Don't fail the entire agent execution if CFN protocol fails
|
|
263
629
|
// This allows agents to complete even if Redis coordination has issues
|
|
264
630
|
}
|
|
631
|
+
console.error('[DEBUG] agent-executor: CFN Protocol section complete');
|
|
265
632
|
}
|
|
266
633
|
return {
|
|
267
634
|
success: result.success,
|
|
@@ -278,6 +645,13 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
278
645
|
error: error instanceof Error ? error.message : String(error),
|
|
279
646
|
exitCode: 1
|
|
280
647
|
};
|
|
648
|
+
} finally{
|
|
649
|
+
// v2.0: Clean up command processor
|
|
650
|
+
if (commandProcessor) {
|
|
651
|
+
debugLog('executeViaAPI: Stopping command processor');
|
|
652
|
+
console.log('[agent-msg] Stopping command processor');
|
|
653
|
+
await commandProcessor.stop();
|
|
654
|
+
}
|
|
281
655
|
}
|
|
282
656
|
}
|
|
283
657
|
/**
|
|
@@ -390,22 +764,36 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
390
764
|
* Main agent execution function
|
|
391
765
|
*/ export async function executeAgent(definition, prompt, context, options = {}) {
|
|
392
766
|
const method = options.method || 'auto';
|
|
767
|
+
debugLog('executeAgent: Starting execution', {
|
|
768
|
+
agentType: definition.name,
|
|
769
|
+
method,
|
|
770
|
+
taskId: context.taskId,
|
|
771
|
+
iteration: context.iteration,
|
|
772
|
+
agentId: context.agentId || 'not-set'
|
|
773
|
+
});
|
|
393
774
|
// Auto-select execution method
|
|
394
775
|
if (method === 'auto') {
|
|
395
776
|
// Try API execution first, fallback to script if API key not available
|
|
396
777
|
try {
|
|
778
|
+
debugLog('executeAgent: Attempting API execution');
|
|
397
779
|
return await executeViaAPI(definition, prompt, context);
|
|
398
780
|
} catch (error) {
|
|
399
781
|
if (error instanceof Error && error.message.includes('API key not found')) {
|
|
782
|
+
debugLog('executeAgent: API key not found, falling back to script');
|
|
400
783
|
console.log('[agent-executor] API key not found, using script fallback');
|
|
401
784
|
return executeViaScript(definition, prompt, context);
|
|
402
785
|
}
|
|
786
|
+
debugLog('executeAgent: API execution error', {
|
|
787
|
+
error: error instanceof Error ? error.message : String(error)
|
|
788
|
+
});
|
|
403
789
|
throw error;
|
|
404
790
|
}
|
|
405
791
|
}
|
|
406
792
|
if (method === 'api') {
|
|
793
|
+
debugLog('executeAgent: Using API method');
|
|
407
794
|
return executeViaAPI(definition, prompt, context);
|
|
408
795
|
}
|
|
796
|
+
debugLog('executeAgent: Using script method');
|
|
409
797
|
return executeViaScript(definition, prompt, context);
|
|
410
798
|
}
|
|
411
799
|
/**
|
|
@@ -420,5 +808,61 @@ const redisPassword = process.env.CFN_REDIS_PASSWORD || process.env.REDIS_PASSWO
|
|
|
420
808
|
await fs.writeFile(filepath, output, 'utf-8');
|
|
421
809
|
return filepath;
|
|
422
810
|
}
|
|
811
|
+
/**
|
|
812
|
+
* Main entry point when run as a script via tsx
|
|
813
|
+
*/ async function main() {
|
|
814
|
+
// Parse command line arguments
|
|
815
|
+
const args = process.argv.slice(2);
|
|
816
|
+
let agentType;
|
|
817
|
+
for(let i = 0; i < args.length; i++){
|
|
818
|
+
if (args[i] === '--agent-type' && i + 1 < args.length) {
|
|
819
|
+
agentType = args[i + 1];
|
|
820
|
+
break;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
if (!agentType) {
|
|
824
|
+
console.error('[agent-executor] ERROR: --agent-type is required');
|
|
825
|
+
process.exit(1);
|
|
826
|
+
}
|
|
827
|
+
// Load agent definition
|
|
828
|
+
const { parseAgentDefinition } = await import('./agent-definition-parser.js');
|
|
829
|
+
const definition = await parseAgentDefinition(agentType);
|
|
830
|
+
if (!definition) {
|
|
831
|
+
console.error(`[agent-executor] ERROR: Agent type not found: ${agentType}`);
|
|
832
|
+
process.exit(1);
|
|
833
|
+
}
|
|
834
|
+
// Build task context from environment variables
|
|
835
|
+
const context = {
|
|
836
|
+
taskId: process.env.TASK_ID,
|
|
837
|
+
iteration: process.env.ITERATION ? parseInt(process.env.ITERATION, 10) : 1,
|
|
838
|
+
mode: process.env.MODE || 'cli',
|
|
839
|
+
agentId: process.env.AGENT_ID,
|
|
840
|
+
context: process.env.CONTEXT
|
|
841
|
+
};
|
|
842
|
+
// Get prompt from environment variable or use default
|
|
843
|
+
const prompt = process.env.PROMPT || `Execute your assigned task for ${agentType}.
|
|
844
|
+
|
|
845
|
+
You are part of a CFN Loop workflow. Review any broadcast messages, complete your work, and report your confidence score.`;
|
|
846
|
+
console.log(`[agent-executor] Starting agent: ${agentType}`);
|
|
847
|
+
console.log(`[agent-executor] Task ID: ${context.taskId || 'none'}`);
|
|
848
|
+
console.log(`[agent-executor] Iteration: ${context.iteration}`);
|
|
849
|
+
console.log(`[agent-executor] Prompt source: ${process.env.PROMPT ? 'PROMPT env var' : 'default'}`);
|
|
850
|
+
// Execute agent
|
|
851
|
+
const result = await executeAgent(definition, prompt, context);
|
|
852
|
+
// Exit with appropriate code
|
|
853
|
+
if (!result.success) {
|
|
854
|
+
console.error(`[agent-executor] Agent execution failed: ${result.error || 'unknown error'}`);
|
|
855
|
+
process.exit(result.exitCode || 1);
|
|
856
|
+
}
|
|
857
|
+
console.log('[agent-executor] Agent execution completed successfully');
|
|
858
|
+
process.exit(0);
|
|
859
|
+
}
|
|
860
|
+
// Run main if executed as a script
|
|
861
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
862
|
+
main().catch((error)=>{
|
|
863
|
+
console.error('[agent-executor] Fatal error:', error);
|
|
864
|
+
process.exit(1);
|
|
865
|
+
});
|
|
866
|
+
}
|
|
423
867
|
|
|
424
868
|
//# sourceMappingURL=agent-executor.js.map
|