claude-flow-novice 2.15.3 → 2.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/.claude/commands/cfn-loop-cli.md +16 -2
- package/.claude/commands/switch-api.md +31 -10
- package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
- package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
- package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
- package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
- package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
- package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/.claude/skills/cfn-redis-coordination/get-context.sh +33 -0
- package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
- package/README.md +116 -475
- package/claude-assets/agents/cfn-dev-team/README.md +103 -0
- package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
- package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
- package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
- package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
- package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
- package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
- package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/claude-assets/commands/cfn-loop-cli.md +16 -2
- package/claude-assets/commands/switch-api.md +31 -10
- package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
- package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
- package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
- package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
- package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +84 -113
- package/claude-assets/skills/agent-lifecycle/simple-audit.sh +33 -6
- package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
- package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
- package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
- package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
- package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
- package/claude-assets/skills/bootstrap/database-connection.md +464 -0
- package/claude-assets/skills/bootstrap/error-handling.md +580 -0
- package/claude-assets/skills/bootstrap/file-operations.md +699 -0
- package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
- package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
- package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
- package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
- package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
- package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
- package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
- package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
- package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
- package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
- package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
- package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
- package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
- package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
- package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
- package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
- package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
- package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
- package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
- package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
- package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
- package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
- package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
- package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
- package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
- package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
- package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
- package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/claude-assets/skills/cfn-redis-coordination/get-context.sh +33 -0
- package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
- package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
- package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
- package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
- package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
- package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
- package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
- package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
- package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
- package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
- package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
- package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
- package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
- package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
- package/claude-assets/skills/cfn-utilities/test.sh +317 -0
- package/claude-assets/skills/integration/agent-handoff.sh +62 -64
- package/claude-assets/skills/json-validation/SKILL.md +431 -0
- package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
- package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
- package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
- package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
- package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
- package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
- package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
- package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
- package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
- package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
- package/claude-assets/skills/workflow-codification/test-integration.sh +15 -0
- package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh +55 -14
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
- package/claude-assets/skills/workflow-codification/track-edge-case.sh +27 -60
- package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
- package/dist/ace/ace-curator.js +10 -2
- package/dist/ace/ace-curator.js.map +1 -1
- package/dist/ace/ace-generator.js +4 -0
- package/dist/ace/ace-generator.js.map +1 -1
- package/dist/ace/ace-reflector.js +1 -1
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/ace/context-injection.js +24 -2
- package/dist/ace/context-injection.js.map +1 -1
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/agents/task-agent-integration.js +1 -1
- package/dist/agents/task-agent-integration.js.map +1 -1
- package/dist/api/health-endpoints.js +390 -0
- package/dist/api/health-endpoints.js.map +1 -0
- package/dist/cli/agent-executor.js +4 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +89 -1
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +130 -37
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/skill-cache-validator.js +412 -0
- package/dist/cli/skill-cache-validator.js.map +1 -0
- package/dist/cli/skill-cli.js +991 -0
- package/dist/cli/skill-cli.js.map +1 -0
- package/dist/cli/skill-execution-logger.js +284 -0
- package/dist/cli/skill-execution-logger.js.map +1 -0
- package/dist/cli/skill-loader.js +457 -0
- package/dist/cli/skill-loader.js.map +1 -0
- package/dist/coordination/event-bus.js +2 -2
- package/dist/coordination/event-bus.js.map +1 -1
- package/dist/coordination/fleet-manager.js +1 -1
- package/dist/coordination/fleet-manager.js.map +1 -1
- package/dist/coordination/index.js +23 -9
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/types/fleet-manager.types.js.map +1 -1
- package/dist/db/migration-manager.js +483 -0
- package/dist/db/migration-manager.js.map +1 -0
- package/dist/db/skills-query.js +535 -0
- package/dist/db/skills-query.js.map +1 -0
- package/dist/integration/DatabaseHandoff.js +1 -1
- package/dist/integration/DatabaseHandoff.js.map +1 -1
- package/dist/jobs/edge-case-analyzer.js +367 -0
- package/dist/jobs/edge-case-analyzer.js.map +1 -0
- package/dist/jobs/promotion-sla-enforcer.js +288 -0
- package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
- package/dist/lib/agent-output-parser.js.map +1 -1
- package/dist/lib/agent-output-validator.js.map +1 -1
- package/dist/lib/agent-workspace.js +281 -0
- package/dist/lib/agent-workspace.js.map +1 -0
- package/dist/lib/atomic-file-writer.js +377 -0
- package/dist/lib/atomic-file-writer.js.map +1 -0
- package/dist/lib/backup-manager.js +779 -0
- package/dist/lib/backup-manager.js.map +1 -0
- package/dist/lib/checkpoint-manager.js +837 -0
- package/dist/lib/checkpoint-manager.js.map +1 -0
- package/dist/lib/circuit-breaker.js +340 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/completion-signal-handler.js +243 -0
- package/dist/lib/completion-signal-handler.js.map +1 -0
- package/dist/lib/config-manager.js +312 -0
- package/dist/lib/config-manager.js.map +1 -0
- package/dist/lib/config-migrator.js +386 -0
- package/dist/lib/config-migrator.js.map +1 -0
- package/dist/lib/config-validator.js.map +1 -1
- package/dist/lib/correlation-cache.js +311 -0
- package/dist/lib/correlation-cache.js.map +1 -0
- package/dist/lib/correlation.js +263 -0
- package/dist/lib/correlation.js.map +1 -0
- package/dist/lib/database-service/connection-pool-manager.js +520 -0
- package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
- package/dist/lib/database-service/correlation.js +329 -0
- package/dist/lib/database-service/correlation.js.map +1 -0
- package/dist/lib/database-service/errors.js +120 -0
- package/dist/lib/database-service/errors.js.map +1 -0
- package/dist/lib/database-service/index.js +168 -0
- package/dist/lib/database-service/index.js.map +1 -0
- package/dist/lib/database-service/postgres-adapter.js +526 -0
- package/dist/lib/database-service/postgres-adapter.js.map +1 -0
- package/dist/lib/database-service/redis-adapter.js +360 -0
- package/dist/lib/database-service/redis-adapter.js.map +1 -0
- package/dist/lib/database-service/sqlite-adapter.js +544 -0
- package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
- package/dist/lib/database-service/transaction-manager.js +773 -0
- package/dist/lib/database-service/transaction-manager.js.map +1 -0
- package/dist/lib/database-service/types.js +23 -0
- package/dist/lib/database-service/types.js.map +1 -0
- package/dist/lib/deadlock-resolver.js +292 -0
- package/dist/lib/deadlock-resolver.js.map +1 -0
- package/dist/lib/distributed-lock.js +451 -0
- package/dist/lib/distributed-lock.js.map +1 -0
- package/dist/lib/edge-case-deduplicator.js +227 -0
- package/dist/lib/edge-case-deduplicator.js.map +1 -0
- package/dist/lib/encryption-manager.js +322 -0
- package/dist/lib/encryption-manager.js.map +1 -0
- package/dist/lib/error-aggregator.js +234 -0
- package/dist/lib/error-aggregator.js.map +1 -0
- package/dist/lib/errors.js +287 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/file-lock-manager.js +578 -0
- package/dist/lib/file-lock-manager.js.map +1 -0
- package/dist/lib/file-operations.js +367 -0
- package/dist/lib/file-operations.js.map +1 -0
- package/dist/lib/idempotent-write.js +237 -0
- package/dist/lib/idempotent-write.js.map +1 -0
- package/dist/lib/integration-schema-validator.js +522 -0
- package/dist/lib/integration-schema-validator.js.map +1 -0
- package/dist/lib/lock-health-monitor.js +298 -0
- package/dist/lib/lock-health-monitor.js.map +1 -0
- package/dist/lib/log-shipper.js +422 -0
- package/dist/lib/log-shipper.js.map +1 -0
- package/dist/lib/logging.js +146 -0
- package/dist/lib/logging.js.map +1 -0
- package/dist/lib/message-deduplicator.js +439 -0
- package/dist/lib/message-deduplicator.js.map +1 -0
- package/dist/lib/multi-system-query.js +604 -0
- package/dist/lib/multi-system-query.js.map +1 -0
- package/dist/lib/orphan-detector.js +332 -0
- package/dist/lib/orphan-detector.js.map +1 -0
- package/dist/lib/password-generator.js +166 -0
- package/dist/lib/password-generator.js.map +1 -0
- package/dist/lib/path-validator.js +429 -0
- package/dist/lib/path-validator.js.map +1 -0
- package/dist/lib/query-translator.js +905 -0
- package/dist/lib/query-translator.js.map +1 -0
- package/dist/lib/queue-recovery.js +469 -0
- package/dist/lib/queue-recovery.js.map +1 -0
- package/dist/lib/redis-queue-manager.js +512 -0
- package/dist/lib/redis-queue-manager.js.map +1 -0
- package/dist/lib/reflection-archiver.js +272 -0
- package/dist/lib/reflection-archiver.js.map +1 -0
- package/dist/lib/retry-manager.js +453 -0
- package/dist/lib/retry-manager.js.map +1 -0
- package/dist/lib/retry.js +262 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/schema-transform.js +695 -0
- package/dist/lib/schema-transform.js.map +1 -0
- package/dist/lib/schema-validator.js +491 -0
- package/dist/lib/schema-validator.js.map +1 -0
- package/dist/lib/skill-cache.js +297 -0
- package/dist/lib/skill-cache.js.map +1 -0
- package/dist/lib/skill-content-manager.js +337 -0
- package/dist/lib/skill-content-manager.js.map +1 -0
- package/dist/lib/skill-frontmatter-parser.js +237 -0
- package/dist/lib/skill-frontmatter-parser.js.map +1 -0
- package/dist/lib/skill-git-integration.js +275 -0
- package/dist/lib/skill-git-integration.js.map +1 -0
- package/dist/lib/skill-markdown-validator.js +396 -0
- package/dist/lib/skill-markdown-validator.js.map +1 -0
- package/dist/lib/skill-output-parser.js +312 -0
- package/dist/lib/skill-output-parser.js.map +1 -0
- package/dist/lib/unified-query-api.js +467 -0
- package/dist/lib/unified-query-api.js.map +1 -0
- package/dist/middleware/auth-middleware.js +350 -0
- package/dist/middleware/auth-middleware.js.map +1 -0
- package/dist/middleware/schema-validation.js +347 -0
- package/dist/middleware/schema-validation.js.map +1 -0
- package/dist/providers/anthropic-provider.js +1 -1
- package/dist/providers/anthropic-provider.js.map +1 -1
- package/dist/providers/provider-factory.js +2 -2
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/services/edge-case-analyzer.js +321 -0
- package/dist/services/edge-case-analyzer.js.map +1 -0
- package/dist/services/edge-case-deduplicator.js +266 -0
- package/dist/services/edge-case-deduplicator.js.map +1 -0
- package/dist/services/edge-case-detector.js +337 -0
- package/dist/services/edge-case-detector.js.map +1 -0
- package/dist/services/edge-case-tracker.js +547 -0
- package/dist/services/edge-case-tracker.js.map +1 -0
- package/dist/services/health-check-system.js +586 -0
- package/dist/services/health-check-system.js.map +1 -0
- package/dist/services/metrics-logger.js +412 -0
- package/dist/services/metrics-logger.js.map +1 -0
- package/dist/services/patch-generator.js +378 -0
- package/dist/services/patch-generator.js.map +1 -0
- package/dist/services/patch-validator.js +337 -0
- package/dist/services/patch-validator.js.map +1 -0
- package/dist/services/performance-monitor.js +811 -0
- package/dist/services/performance-monitor.js.map +1 -0
- package/dist/services/promotion-pipeline.js +918 -0
- package/dist/services/promotion-pipeline.js.map +1 -0
- package/dist/services/promotion-validator.js +394 -0
- package/dist/services/promotion-validator.js.map +1 -0
- package/dist/services/reflection-logger.js +388 -0
- package/dist/services/reflection-logger.js.map +1 -0
- package/dist/services/skill-deployment.js +472 -0
- package/dist/services/skill-deployment.js.map +1 -0
- package/dist/services/skill-loader.js +427 -0
- package/dist/services/skill-loader.js.map +1 -0
- package/dist/services/skill-promotion.js +372 -0
- package/dist/services/skill-promotion.js.map +1 -0
- package/dist/services/skill-validator.js +454 -0
- package/dist/services/skill-validator.js.map +1 -0
- package/dist/services/skill-versioning.js +244 -0
- package/dist/services/skill-versioning.js.map +1 -0
- package/dist/services/workspace-supervisor.js +597 -0
- package/dist/services/workspace-supervisor.js.map +1 -0
- package/dist/types/edge-case.js +45 -0
- package/dist/types/edge-case.js.map +1 -0
- package/package.json +201 -177
- package/readme/README.md +19 -4
- package/scripts/backup-cleanup.sh +627 -0
- package/scripts/cleanup-workspaces.sh +412 -0
- package/scripts/cleanup-yaml-configs.sh +141 -0
- package/scripts/deploy-approved-skills.sh +263 -0
- package/scripts/health-check.sh +447 -0
- package/scripts/log-aggregator.sh +554 -0
- package/scripts/log-monitor.sh +629 -0
- package/scripts/manage-agent-workspaces.sh +434 -0
- package/scripts/migrate-schema.sh +533 -0
- package/scripts/promote-staged-skills.sh +423 -0
- package/scripts/verify-no-secrets.sh +88 -35
- package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
- package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
- package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
- package/README.md.backup_before_replace +0 -781
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
2
3
|
|
|
3
4
|
# CFN Docker Loop Orchestration Implementation
|
|
4
5
|
# Usage: ./orchestrate.sh [OPERATION] [TASK_ID] [OPTIONS]
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
# Determine PROJECT_ROOT
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
|
10
|
+
|
|
11
|
+
# Detect worktree/branch for environment injection
|
|
12
|
+
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
|
|
13
|
+
export WORKTREE_BRANCH="${CURRENT_BRANCH}"
|
|
7
14
|
|
|
8
15
|
# Default configuration
|
|
9
16
|
DEFAULT_MAX_ITERATIONS=10
|
|
@@ -75,6 +82,7 @@ Options:
|
|
|
75
82
|
--gate-threshold NUM Gate threshold (default: 0.75)
|
|
76
83
|
--consensus-threshold NUM Consensus threshold (default: 0.90)
|
|
77
84
|
--context-file PATH Task context file
|
|
85
|
+
--success-criteria JSON Success criteria for test-driven validation
|
|
78
86
|
--timeout SECONDS Operation timeout
|
|
79
87
|
--memory-limit LIMIT Agent memory limit
|
|
80
88
|
--network NAME Docker network
|
|
@@ -98,6 +106,72 @@ Examples:
|
|
|
98
106
|
EOF
|
|
99
107
|
}
|
|
100
108
|
|
|
109
|
+
# JSON validation helper with security bounds checking
|
|
110
|
+
validate_json_context() {
|
|
111
|
+
local json_str="$1"
|
|
112
|
+
|
|
113
|
+
if [ -z "$json_str" ]; then
|
|
114
|
+
return 1
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
# Security: Check size (max 10MB) BEFORE parsing
|
|
118
|
+
local size=$(echo -n "$json_str" | wc -c)
|
|
119
|
+
local MAX_JSON_SIZE=10485760 # 10MB limit
|
|
120
|
+
|
|
121
|
+
if [ "$size" -gt "$MAX_JSON_SIZE" ]; then
|
|
122
|
+
log_error "JSON exceeds maximum size (10MB): ${size} bytes"
|
|
123
|
+
log_error "Security Risk: DoS via excessive memory consumption"
|
|
124
|
+
return 1
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
# Validate JSON structure
|
|
128
|
+
if ! echo "$json_str" | jq empty 2>/dev/null; then
|
|
129
|
+
log_error "Invalid JSON structure"
|
|
130
|
+
return 1
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
# Security: Bounds check - validate array sizes if success criteria
|
|
134
|
+
if echo "$json_str" | jq -e '.test_suites' >/dev/null 2>&1; then
|
|
135
|
+
local TEST_SUITE_COUNT=$(echo "$json_str" | jq '.test_suites | length' 2>/dev/null || echo "0")
|
|
136
|
+
local MAX_TEST_SUITES=50
|
|
137
|
+
|
|
138
|
+
if [ "$TEST_SUITE_COUNT" -gt "$MAX_TEST_SUITES" ]; then
|
|
139
|
+
log_error "Test suites exceed maximum ($MAX_TEST_SUITES): $TEST_SUITE_COUNT"
|
|
140
|
+
log_error "Security Risk: DoS via resource exhaustion"
|
|
141
|
+
return 1
|
|
142
|
+
fi
|
|
143
|
+
fi
|
|
144
|
+
|
|
145
|
+
return 0
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
# Input sanitization helper
|
|
149
|
+
sanitize_input() {
|
|
150
|
+
local input="$1"
|
|
151
|
+
local max_length="${2:-256}"
|
|
152
|
+
|
|
153
|
+
# SECURITY FIX #2: Command injection prevention - strict alphanumeric whitelist
|
|
154
|
+
# Allows ONLY: letters, numbers, dash, underscore, space, comma, period, colon
|
|
155
|
+
local sanitized=$(echo "$input" | tr -cd '[:alnum:] _,.:-')
|
|
156
|
+
|
|
157
|
+
# Length bounds check
|
|
158
|
+
if [ ${#input} -gt "$max_length" ]; then
|
|
159
|
+
log_error "Input exceeds maximum length ($max_length): ${#input}"
|
|
160
|
+
return 1
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# Reject if input contains shell metacharacters: $, `, ;, |, &, >, <, (, ), {, }, [, ], \, ", ', =
|
|
164
|
+
if [[ "$input" =~ (\$|`|;|\||&|>|<|\(|\)|\{|\}|\[|\]|\\|\"|\'|=) ]]; then
|
|
165
|
+
log_error "Input contains dangerous shell metacharacters"
|
|
166
|
+
log_error "Original: $input"
|
|
167
|
+
log_error "Security Risk: Command injection attack prevented"
|
|
168
|
+
return 1
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
echo "$sanitized"
|
|
172
|
+
return 0
|
|
173
|
+
}
|
|
174
|
+
|
|
101
175
|
# Mode configuration
|
|
102
176
|
get_mode_config() {
|
|
103
177
|
local mode="$1"
|
|
@@ -118,10 +192,6 @@ get_mode_config() {
|
|
|
118
192
|
esac
|
|
119
193
|
}
|
|
120
194
|
|
|
121
|
-
# Get script directory
|
|
122
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
123
|
-
PROJECT_ROOT="$(cd "$(dirname "$SCRIPT_DIR")/../.." && pwd)"
|
|
124
|
-
|
|
125
195
|
# Path to skills
|
|
126
196
|
REDIS_COORDINATION_SKILL="$PROJECT_ROOT/.claude/skills/cfn-docker-redis-coordination/coordinate.sh"
|
|
127
197
|
AGENT_SPAWNING_SKILL="$PROJECT_ROOT/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh"
|
|
@@ -144,6 +214,7 @@ GATE_THRESHOLD="$DEFAULT_GATE_THRESHOLD"
|
|
|
144
214
|
CONSENSUS_THRESHOLD="$DEFAULT_CONSENSUS_THRESHOLD"
|
|
145
215
|
CONTEXT_FILE=""
|
|
146
216
|
TIMEOUT=""
|
|
217
|
+
SUCCESS_CRITERIA=""
|
|
147
218
|
MEMORY_LIMIT=""
|
|
148
219
|
NETWORK=""
|
|
149
220
|
ADAPTIVE_SELECTION=false
|
|
@@ -187,6 +258,10 @@ while [[ $# -gt 0 ]]; do
|
|
|
187
258
|
CONTEXT_FILE="$2"
|
|
188
259
|
shift 2
|
|
189
260
|
;;
|
|
261
|
+
--success-criteria)
|
|
262
|
+
SUCCESS_CRITERIA="$2"
|
|
263
|
+
shift 2
|
|
264
|
+
;;
|
|
190
265
|
--timeout)
|
|
191
266
|
TIMEOUT="$2"
|
|
192
267
|
shift 2
|
|
@@ -534,6 +609,23 @@ init() {
|
|
|
534
609
|
}
|
|
535
610
|
EOF
|
|
536
611
|
|
|
612
|
+
# Store success criteria if provided
|
|
613
|
+
if [[ -n "$SUCCESS_CRITERIA" ]]; then
|
|
614
|
+
if validate_json_context "$SUCCESS_CRITERIA"; then
|
|
615
|
+
# Store in Redis using coordination skill
|
|
616
|
+
if command -v redis-cli >/dev/null 2>&1; then
|
|
617
|
+
redis-cli HSET "task:${task_id}:context" "success-criteria" "$SUCCESS_CRITERIA" >/dev/null 2>&1 || {
|
|
618
|
+
log_warning "Failed to store success criteria in Redis, will pass via env vars"
|
|
619
|
+
}
|
|
620
|
+
log "Stored success criteria ($(echo "$SUCCESS_CRITERIA" | jq -r '.test_suites | length' 2>/dev/null || echo '0') test suites)"
|
|
621
|
+
else
|
|
622
|
+
log_warning "Redis not available, success criteria will be passed via environment variables"
|
|
623
|
+
fi
|
|
624
|
+
else
|
|
625
|
+
log_error "Invalid success criteria JSON, skipping storage"
|
|
626
|
+
fi
|
|
627
|
+
fi
|
|
628
|
+
|
|
537
629
|
log_success "Loop orchestration initialized: $task_id"
|
|
538
630
|
}
|
|
539
631
|
|
|
@@ -550,6 +642,36 @@ spawn_loop3() {
|
|
|
550
642
|
log_loop "Spawning Loop 3 implementers (iteration $iteration)"
|
|
551
643
|
log "Agents: $agents"
|
|
552
644
|
|
|
645
|
+
# Load success criteria from Redis (if available)
|
|
646
|
+
local AGENT_SUCCESS_CRITERIA=""
|
|
647
|
+
local AGENT_SUCCESS_CRITERIA_B64=""
|
|
648
|
+
|
|
649
|
+
if command -v redis-cli >/dev/null 2>&1; then
|
|
650
|
+
local LOADED_CRITERIA=$(redis-cli HGET "task:${task_id}:context" "success-criteria" 2>/dev/null || echo "")
|
|
651
|
+
|
|
652
|
+
if [[ -n "$LOADED_CRITERIA" && "$LOADED_CRITERIA" != "null" ]]; then
|
|
653
|
+
# Validate JSON
|
|
654
|
+
if echo "$LOADED_CRITERIA" | jq empty 2>/dev/null; then
|
|
655
|
+
AGENT_SUCCESS_CRITERIA="$LOADED_CRITERIA"
|
|
656
|
+
|
|
657
|
+
# Base64-encode for safe environment variable passing
|
|
658
|
+
AGENT_SUCCESS_CRITERIA_B64=$(echo -n "$AGENT_SUCCESS_CRITERIA" | base64 -w 0 2>/dev/null || echo -n "$AGENT_SUCCESS_CRITERIA" | base64)
|
|
659
|
+
|
|
660
|
+
local TEST_SUITE_COUNT=$(echo "$AGENT_SUCCESS_CRITERIA" | jq -r '.test_suites | length' 2>/dev/null || echo "0")
|
|
661
|
+
log "Success criteria loaded ($TEST_SUITE_COUNT test suites)"
|
|
662
|
+
else
|
|
663
|
+
log_warning "Invalid success criteria JSON in Redis, skipping"
|
|
664
|
+
fi
|
|
665
|
+
fi
|
|
666
|
+
fi
|
|
667
|
+
|
|
668
|
+
# Fallback to global SUCCESS_CRITERIA if not in Redis
|
|
669
|
+
if [[ -z "$AGENT_SUCCESS_CRITERIA" && -n "$SUCCESS_CRITERIA" ]]; then
|
|
670
|
+
AGENT_SUCCESS_CRITERIA="$SUCCESS_CRITERIA"
|
|
671
|
+
AGENT_SUCCESS_CRITERIA_B64=$(echo -n "$AGENT_SUCCESS_CRITERIA" | base64 -w 0 2>/dev/null || echo -n "$AGENT_SUCCESS_CRITERIA" | base64)
|
|
672
|
+
log "Using global success criteria (not in Redis)"
|
|
673
|
+
fi
|
|
674
|
+
|
|
553
675
|
# Check for execution plan
|
|
554
676
|
local plan_file="/tmp/cfn-docker-plan-${task_id}.json"
|
|
555
677
|
local has_plan=false
|
|
@@ -587,7 +709,7 @@ spawn_loop3() {
|
|
|
587
709
|
local context_file="/tmp/task-context-${task_id}-loop3-${iteration}-${agent_type}.json"
|
|
588
710
|
|
|
589
711
|
# Create enhanced context with atomic task assignment
|
|
590
|
-
cat
|
|
712
|
+
local context_json=$(cat << EOF
|
|
591
713
|
{
|
|
592
714
|
"task_id": "$task_id",
|
|
593
715
|
"loop_number": 3,
|
|
@@ -603,6 +725,14 @@ spawn_loop3() {
|
|
|
603
725
|
"created_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
604
726
|
}
|
|
605
727
|
EOF
|
|
728
|
+
)
|
|
729
|
+
|
|
730
|
+
# Add success criteria if available (stored separately due to potential size)
|
|
731
|
+
if [[ -n "$AGENT_SUCCESS_CRITERIA_B64" ]]; then
|
|
732
|
+
context_json=$(echo "$context_json" | jq --arg criteria_b64 "$AGENT_SUCCESS_CRITERIA_B64" '. + {success_criteria_b64: $criteria_b64}')
|
|
733
|
+
fi
|
|
734
|
+
|
|
735
|
+
echo "$context_json" > "$context_file"
|
|
606
736
|
|
|
607
737
|
# Get task context from Redis if available
|
|
608
738
|
if [[ -n "$CONTEXT_FILE" ]]; then
|
|
@@ -612,6 +742,11 @@ EOF
|
|
|
612
742
|
fi
|
|
613
743
|
|
|
614
744
|
if [[ "$DRY_RUN" == false ]]; then
|
|
745
|
+
# Docker container environment: Agent spawning skill will extract
|
|
746
|
+
# success_criteria_b64 from context file and pass to container via:
|
|
747
|
+
# docker run --env AGENT_SUCCESS_CRITERIA_B64=<base64-encoded-json>
|
|
748
|
+
# This enables secure test-driven validation in containerized agents
|
|
749
|
+
|
|
615
750
|
local agent_id
|
|
616
751
|
agent_id=$("$AGENT_SPAWNING_SKILL" \
|
|
617
752
|
"$agent_type" \
|
|
@@ -726,26 +861,95 @@ gate_check() {
|
|
|
726
861
|
|
|
727
862
|
log_loop "Performing gate check for iteration $iteration"
|
|
728
863
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
864
|
+
# First, ensure Loop 3 agents have completed
|
|
865
|
+
if ! monitor_loop3 "$task_id" "$gate_threshold" "$iteration"; then
|
|
866
|
+
log_error "Loop 3 monitoring failed"
|
|
867
|
+
return 1
|
|
868
|
+
fi
|
|
732
869
|
|
|
733
|
-
|
|
734
|
-
|
|
870
|
+
# Get Loop 3 agent IDs for gate check
|
|
871
|
+
local agents_file="/tmp/loop3-agents-${task_id}-${iteration}.txt"
|
|
872
|
+
local loop3_agent_ids=""
|
|
735
873
|
|
|
736
|
-
|
|
874
|
+
if [[ -f "$agents_file" ]]; then
|
|
875
|
+
loop3_agent_ids=$(cat "$agents_file" | tr '\n' ',' | sed 's/,$//')
|
|
737
876
|
else
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
877
|
+
log_error "No Loop 3 agent IDs found for gate check"
|
|
878
|
+
return 1
|
|
879
|
+
fi
|
|
741
880
|
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
881
|
+
# Load success criteria from Redis
|
|
882
|
+
local gate_success_criteria=""
|
|
883
|
+
if command -v redis-cli >/dev/null 2>&1; then
|
|
884
|
+
gate_success_criteria=$(redis-cli HGET "task:${task_id}:context" "success-criteria" 2>/dev/null || echo "")
|
|
885
|
+
fi
|
|
886
|
+
|
|
887
|
+
# Fallback to global SUCCESS_CRITERIA
|
|
888
|
+
if [[ -z "$gate_success_criteria" && -n "$SUCCESS_CRITERIA" ]]; then
|
|
889
|
+
gate_success_criteria="$SUCCESS_CRITERIA"
|
|
890
|
+
fi
|
|
891
|
+
|
|
892
|
+
# Use test-driven gate check helper if available
|
|
893
|
+
local GATE_CHECK_HELPER="$PROJECT_ROOT/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh"
|
|
894
|
+
|
|
895
|
+
if [[ -x "$GATE_CHECK_HELPER" ]]; then
|
|
896
|
+
log "Using test-driven gate check"
|
|
897
|
+
|
|
898
|
+
# Prepare arguments
|
|
899
|
+
local gate_args=(
|
|
900
|
+
--task-id "$task_id"
|
|
901
|
+
--agents "$loop3_agent_ids"
|
|
902
|
+
--threshold "$gate_threshold"
|
|
903
|
+
--min-quorum "0.66"
|
|
904
|
+
--mode "$MODE"
|
|
905
|
+
)
|
|
906
|
+
|
|
907
|
+
# Add success criteria if available
|
|
908
|
+
if [[ -n "$gate_success_criteria" ]]; then
|
|
909
|
+
gate_args+=(--success-criteria "$gate_success_criteria")
|
|
910
|
+
gate_args+=(--strategy "test-driven")
|
|
745
911
|
else
|
|
746
|
-
|
|
747
|
-
|
|
912
|
+
gate_args+=(--strategy "confidence")
|
|
913
|
+
log_warning "No success criteria available, using confidence-based gate check"
|
|
914
|
+
fi
|
|
915
|
+
|
|
916
|
+
if "$GATE_CHECK_HELPER" "${gate_args[@]}"; then
|
|
917
|
+
# Gate passed - proceed to Loop 2
|
|
918
|
+
log_success "Gate PASSED - proceeding to Loop 2 validation"
|
|
919
|
+
|
|
920
|
+
# Signal gate passed for Loop 2 agents
|
|
921
|
+
if command -v redis-cli >/dev/null 2>&1; then
|
|
922
|
+
redis-cli LPUSH "cfn_docker:task:$task_id:gate-passed" "proceed" > /dev/null 2>&1 || true
|
|
923
|
+
fi
|
|
924
|
+
|
|
925
|
+
return 0
|
|
926
|
+
else
|
|
927
|
+
# Gate failed - check if we can iterate
|
|
928
|
+
if [[ $iteration -lt $max_iterations ]]; then
|
|
929
|
+
log_warning "Gate FAILED - iterating Loop 3 ($iteration/$max_iterations)"
|
|
930
|
+
|
|
931
|
+
# Force next iteration
|
|
932
|
+
spawn_loop3 "$task_id" "$AGENTS" $((iteration + 1))
|
|
933
|
+
return 2 # Signal to iterate
|
|
934
|
+
else
|
|
935
|
+
log_error "Gate FAILED - max iterations reached ($max_iterations)"
|
|
936
|
+
return 1
|
|
937
|
+
fi
|
|
748
938
|
fi
|
|
939
|
+
else
|
|
940
|
+
# Fallback to legacy confidence-based gate check
|
|
941
|
+
log_warning "Gate check helper not found, using legacy confidence-based validation"
|
|
942
|
+
|
|
943
|
+
# The monitor_loop3 function already checked confidence
|
|
944
|
+
# If we got here, monitoring succeeded, so gate passes
|
|
945
|
+
log_success "Gate PASSED (legacy mode)"
|
|
946
|
+
|
|
947
|
+
# Signal gate passed
|
|
948
|
+
if command -v redis-cli >/dev/null 2>&1; then
|
|
949
|
+
redis-cli LPUSH "cfn_docker:task:$task_id:gate-passed" "proceed" > /dev/null 2>&1 || true
|
|
950
|
+
fi
|
|
951
|
+
|
|
952
|
+
return 0
|
|
749
953
|
fi
|
|
750
954
|
}
|
|
751
955
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# CFN Environment Sanitization
|
|
3
|
+
# Sanitizes environment variables and ensures secure execution context
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Function to sanitize environment
|
|
8
|
+
sanitize_environment() {
|
|
9
|
+
local agent_id="${1:-unknown}"
|
|
10
|
+
local task_id="${2:-unknown}"
|
|
11
|
+
|
|
12
|
+
# Remove sensitive environment variables
|
|
13
|
+
unset AWS_SECRET_ACCESS_KEY || true
|
|
14
|
+
unset OPENAI_API_KEY || true
|
|
15
|
+
unset ANTHROPIC_API_KEY || true
|
|
16
|
+
unset DATABASE_PASSWORD || true
|
|
17
|
+
|
|
18
|
+
# Set safe defaults
|
|
19
|
+
export NODE_ENV="${NODE_ENV:-production}"
|
|
20
|
+
export CFN_AGENT_ID="$agent_id"
|
|
21
|
+
export CFN_TASK_ID="$task_id"
|
|
22
|
+
|
|
23
|
+
# Validate critical paths
|
|
24
|
+
if [ ! -d "/home/user/claude-flow-novice" ]; then
|
|
25
|
+
echo "ERROR: Project root not found" >&2
|
|
26
|
+
return 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Set secure permissions
|
|
30
|
+
umask 0077
|
|
31
|
+
|
|
32
|
+
return 0
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
# Main execution
|
|
36
|
+
if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
|
|
37
|
+
sanitize_environment "${1:-}" "${2:-}"
|
|
38
|
+
fi
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
# CFN Error Batching Strategy - Core Library Functions
|
|
2
|
-
# Shared utility functions for all modules
|
|
3
|
-
|
|
4
|
-
# Parse memory string to bytes
|
|
5
|
-
parse_memory_bytes() {
|
|
6
|
-
local mem_str="$1"
|
|
7
|
-
local num=$(echo "$mem_str" | sed 's/[^0-9]//g')
|
|
8
|
-
local unit=$(echo "$mem_str" | sed 's/[0-9]//g' | tr '[:upper:]' '[:lower:]')
|
|
9
|
-
|
|
10
|
-
case "$unit" in
|
|
11
|
-
g) echo "$((num * 1024 * 1024 * 1024))" ;;
|
|
12
|
-
m) echo "$((num * 1024 * 1024))" ;;
|
|
13
|
-
k) echo "$((num * 1024))" ;;
|
|
14
|
-
*) echo "$num" ;;
|
|
15
|
-
esac
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
# Format bytes to human-readable
|
|
19
|
-
format_memory() {
|
|
20
|
-
local bytes="$1"
|
|
21
|
-
|
|
22
|
-
if [ "$bytes" -ge $((1024 * 1024 * 1024)) ]; then
|
|
23
|
-
echo "$((bytes / (1024 * 1024 * 1024)))GB"
|
|
24
|
-
elif [ "$bytes" -ge $((1024 * 1024)) ]; then
|
|
25
|
-
echo "$((bytes / (1024 * 1024)))MB"
|
|
26
|
-
else
|
|
27
|
-
echo "$((bytes / 1024))KB"
|
|
28
|
-
fi
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
# Safe JSON encoding
|
|
32
|
-
encode_json_string() {
|
|
33
|
-
local str="$1"
|
|
34
|
-
echo "$str" | jq -Rs .
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
# Extract JSON field safely
|
|
38
|
-
jq_safe() {
|
|
39
|
-
local filter="$1"
|
|
40
|
-
local json="$2"
|
|
41
|
-
echo "$json" | jq -r "$filter" 2>/dev/null || echo ""
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Merge JSON objects
|
|
45
|
-
jq_merge() {
|
|
46
|
-
jq -s 'reduce .[] as $item ({}; . * $item)'
|
|
47
|
-
}
|
|
1
|
+
# CFN Error Batching Strategy - Core Library Functions
|
|
2
|
+
# Shared utility functions for all modules
|
|
3
|
+
|
|
4
|
+
# Parse memory string to bytes
|
|
5
|
+
parse_memory_bytes() {
|
|
6
|
+
local mem_str="$1"
|
|
7
|
+
local num=$(echo "$mem_str" | sed 's/[^0-9]//g')
|
|
8
|
+
local unit=$(echo "$mem_str" | sed 's/[0-9]//g' | tr '[:upper:]' '[:lower:]')
|
|
9
|
+
|
|
10
|
+
case "$unit" in
|
|
11
|
+
g) echo "$((num * 1024 * 1024 * 1024))" ;;
|
|
12
|
+
m) echo "$((num * 1024 * 1024))" ;;
|
|
13
|
+
k) echo "$((num * 1024))" ;;
|
|
14
|
+
*) echo "$num" ;;
|
|
15
|
+
esac
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
# Format bytes to human-readable
|
|
19
|
+
format_memory() {
|
|
20
|
+
local bytes="$1"
|
|
21
|
+
|
|
22
|
+
if [ "$bytes" -ge $((1024 * 1024 * 1024)) ]; then
|
|
23
|
+
echo "$((bytes / (1024 * 1024 * 1024)))GB"
|
|
24
|
+
elif [ "$bytes" -ge $((1024 * 1024)) ]; then
|
|
25
|
+
echo "$((bytes / (1024 * 1024)))MB"
|
|
26
|
+
else
|
|
27
|
+
echo "$((bytes / 1024))KB"
|
|
28
|
+
fi
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# Safe JSON encoding
|
|
32
|
+
encode_json_string() {
|
|
33
|
+
local str="$1"
|
|
34
|
+
echo "$str" | jq -Rs .
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# Extract JSON field safely
|
|
38
|
+
jq_safe() {
|
|
39
|
+
local filter="$1"
|
|
40
|
+
local json="$2"
|
|
41
|
+
echo "$json" | jq -r "$filter" 2>/dev/null || echo ""
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
# Merge JSON objects
|
|
45
|
+
jq_merge() {
|
|
46
|
+
jq -s 'reduce .[] as $item ({}; . * $item)'
|
|
47
|
+
}
|