claude-flow-novice 2.15.3 → 2.15.5
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 +29 -6
- 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 +238 -29
- 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 +6 -2
- package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/.claude/skills/cfn-redis-coordination/redis-functions.sh +34 -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 +29 -6
- 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 +238 -29
- 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 +6 -2
- package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +34 -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/task-agent-integration.js +1 -1
- package/dist/agents/task-agent-integration.js.map +1 -1
- package/dist/api/health-endpoints.js +390 -0
- package/dist/api/health-endpoints.js.map +1 -0
- package/dist/cli/agent-executor.js +4 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +89 -1
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +130 -37
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/conversation-fork-cleanup.js +201 -0
- package/dist/cli/conversation-fork-cleanup.js.map +1 -0
- package/dist/cli/conversation-fork.js +16 -3
- package/dist/cli/conversation-fork.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/docs/BUG_19_MEMORY_LEAK_TASK_MODE.md +405 -0
- package/docs/MEMORY_CLEANUP_GUIDE.md +358 -0
- package/docs/MEMORY_LEAK_FIX_SUMMARY.md +322 -0
- package/docs/REDIS_CLEANUP_EXECUTIVE_SUMMARY.md +319 -0
- package/docs/REDIS_CLEANUP_VERIFICATION_REPORT.md +574 -0
- package/package.json +35 -4
- package/readme/README.md +53 -5
- 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/scripts/verify-redis-cleanup.sh +173 -0
- package/tests/README.md +84 -0
- package/tests/test-memory-leak-task-mode.sh +435 -0
- 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
package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh
CHANGED
|
@@ -1,244 +1,244 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
##############################################################################
|
|
4
|
-
# CFN Environment Sanitization
|
|
5
|
-
# Part of ANTI-023 Memory Leak Protection System
|
|
6
|
-
#
|
|
7
|
-
# Automatically sanitizes environment variables and prevents memory leaks
|
|
8
|
-
# in CFN Loop orchestration workflows.
|
|
9
|
-
#
|
|
10
|
-
# Usage:
|
|
11
|
-
# source ./sanitize-environment.sh [--strict]
|
|
12
|
-
# ./sanitize-environment.sh --check
|
|
13
|
-
##############################################################################
|
|
14
|
-
|
|
15
|
-
set -euo pipefail
|
|
16
|
-
|
|
17
|
-
# Configuration
|
|
18
|
-
STRICT_MODE=${1:-"false"}
|
|
19
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
-
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
21
|
-
|
|
22
|
-
# Environment sanitization rules
|
|
23
|
-
declare -A SANITIZATION_RULES=(
|
|
24
|
-
# Clear potentially problematic variables
|
|
25
|
-
["NODE_OPTIONS"]="sanitize"
|
|
26
|
-
["UV_THREADPOOL_SIZE"]="sanitize"
|
|
27
|
-
["REDIS_URL"]="sanitize_if_sensitive"
|
|
28
|
-
|
|
29
|
-
# Preserve critical CFN variables
|
|
30
|
-
["CFN_MODE"]="preserve"
|
|
31
|
-
["TASK_ID"]="preserve"
|
|
32
|
-
["AGENT_ID"]="preserve"
|
|
33
|
-
["LOOP3_AGENTS"]="preserve"
|
|
34
|
-
["LOOP2_AGENTS"]="preserve"
|
|
35
|
-
["PRODUCT_OWNER"]="preserve"
|
|
36
|
-
|
|
37
|
-
# Memory and process limits
|
|
38
|
-
["NODE_HEAP_LIMIT"]="enforce_2gb"
|
|
39
|
-
["MAX_AGENTS"]="enforce_10"
|
|
40
|
-
["CFN_TIMEOUT"]="enforce_600"
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
# Sensitive patterns to redact
|
|
44
|
-
SENSITIVE_PATTERNS=(
|
|
45
|
-
"password="
|
|
46
|
-
"secret="
|
|
47
|
-
"token="
|
|
48
|
-
"key="
|
|
49
|
-
"auth="
|
|
50
|
-
"credential="
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
# Color coding for output
|
|
54
|
-
readonly RED='\033[0;31m'
|
|
55
|
-
readonly GREEN='\033[0;32m'
|
|
56
|
-
readonly YELLOW='\033[1;33m'
|
|
57
|
-
readonly BLUE='\033[0;34m'
|
|
58
|
-
readonly NC='\033[0m' # No Color
|
|
59
|
-
|
|
60
|
-
# Logging functions
|
|
61
|
-
log_info() {
|
|
62
|
-
echo -e "${BLUE}[SANITIZE]${NC} $1" >&2
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
log_success() {
|
|
66
|
-
echo -e "${GREEN}[SANITIZE]${NC} $1" >&2
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
log_warning() {
|
|
70
|
-
echo -e "${YELLOW}[SANITIZE]${NC} $1" >&2
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
log_error() {
|
|
74
|
-
echo -e "${RED}[SANITIZE]${NC} $1" >&2
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
# Check if value contains sensitive information
|
|
78
|
-
is_sensitive() {
|
|
79
|
-
local value="$1"
|
|
80
|
-
for pattern in "${SENSITIVE_PATTERNS[@]}"; do
|
|
81
|
-
if [[ "$value" =~ $pattern ]]; then
|
|
82
|
-
return 0
|
|
83
|
-
fi
|
|
84
|
-
done
|
|
85
|
-
return 1
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
# Sanitize environment variable
|
|
89
|
-
sanitize_var() {
|
|
90
|
-
local var_name="$1"
|
|
91
|
-
local var_value="${!var_name:-}"
|
|
92
|
-
local rule="${SANITIZATION_RULES[$var_name]:-"preserve"}"
|
|
93
|
-
|
|
94
|
-
case "$rule" in
|
|
95
|
-
"sanitize")
|
|
96
|
-
if [[ -n "$var_value" ]]; then
|
|
97
|
-
log_info "Sanitizing $var_name"
|
|
98
|
-
unset "$var_name"
|
|
99
|
-
fi
|
|
100
|
-
;;
|
|
101
|
-
"sanitize_if_sensitive")
|
|
102
|
-
if is_sensitive "$var_value"; then
|
|
103
|
-
log_warning "Redacting sensitive $var_name"
|
|
104
|
-
unset "$var_name"
|
|
105
|
-
fi
|
|
106
|
-
;;
|
|
107
|
-
"preserve")
|
|
108
|
-
# Keep the variable as-is
|
|
109
|
-
;;
|
|
110
|
-
"enforce_2gb")
|
|
111
|
-
export "$var_name"="${var_value:-2048}"
|
|
112
|
-
log_info "Enforcing 2GB heap limit: $var_name=${!var_name}"
|
|
113
|
-
;;
|
|
114
|
-
"enforce_10")
|
|
115
|
-
export "$var_name"="${var_value:-10}"
|
|
116
|
-
log_info "Enforcing max 10 agents: $var_name=${!var_value}"
|
|
117
|
-
;;
|
|
118
|
-
"enforce_600")
|
|
119
|
-
export "$var_name"="${var_value:-600}"
|
|
120
|
-
log_info "Enforcing 600s timeout: $var_name=${!var_value}"
|
|
121
|
-
;;
|
|
122
|
-
esac
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
# Apply environment sanitization
|
|
126
|
-
sanitize_environment() {
|
|
127
|
-
log_info "Starting environment sanitization..."
|
|
128
|
-
|
|
129
|
-
# Count changes for reporting
|
|
130
|
-
local changes=0
|
|
131
|
-
|
|
132
|
-
for var_name in "${!SANITIZATION_RULES[@]}"; do
|
|
133
|
-
local old_value="${!var_name:-}"
|
|
134
|
-
sanitize_var "$var_name"
|
|
135
|
-
local new_value="${!var_name:-}"
|
|
136
|
-
|
|
137
|
-
if [[ "$old_value" != "$new_value" ]]; then
|
|
138
|
-
((changes++))
|
|
139
|
-
fi
|
|
140
|
-
done
|
|
141
|
-
|
|
142
|
-
# Enforce memory limits for Node.js processes
|
|
143
|
-
export NODE_OPTIONS="--max-old-space-size=2048 --max-new-space-size=512 ${NODE_OPTIONS:-}"
|
|
144
|
-
|
|
145
|
-
# Set CFN-specific limits
|
|
146
|
-
export CFN_MAX_AGENTS="${CFN_MAX_AGENTS:-10}"
|
|
147
|
-
export CFN_TIMEOUT="${CFN_TIMEOUT:-600}"
|
|
148
|
-
export CFN_MEMORY_LIMIT="${CFN_MEMORY_LIMIT:-2GB}"
|
|
149
|
-
|
|
150
|
-
log_success "Environment sanitization complete ($changes changes applied)"
|
|
151
|
-
|
|
152
|
-
if [[ "$STRICT_MODE" == "true" ]]; then
|
|
153
|
-
log_info "Strict mode enabled - additional validations applied"
|
|
154
|
-
|
|
155
|
-
# Validate critical variables are set in CLI mode
|
|
156
|
-
if [[ -n "${TASK_ID:-}" ]]; then
|
|
157
|
-
for required_var in AGENT_ID LOOP3_AGENTS; do
|
|
158
|
-
if [[ -z "${!required_var:-}" ]]; then
|
|
159
|
-
log_error "Required variable $required_var not set in CLI mode"
|
|
160
|
-
return 1
|
|
161
|
-
fi
|
|
162
|
-
done
|
|
163
|
-
fi
|
|
164
|
-
fi
|
|
165
|
-
|
|
166
|
-
return 0
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
# Check current environment state
|
|
170
|
-
check_environment() {
|
|
171
|
-
log_info "Checking environment state..."
|
|
172
|
-
|
|
173
|
-
local issues=0
|
|
174
|
-
|
|
175
|
-
# Check for sensitive data exposure
|
|
176
|
-
for var_name in $(env | grep -E "(password|secret|token|key|auth|credential)" | cut -d= -f1); do
|
|
177
|
-
log_warning "Potential sensitive data in $var_name"
|
|
178
|
-
((issues++))
|
|
179
|
-
done
|
|
180
|
-
|
|
181
|
-
# Check Node.js memory settings
|
|
182
|
-
if [[ -n "${NODE_OPTIONS:-}" && ! "$NODE_OPTIONS" =~ "max-old-space-size" ]]; then
|
|
183
|
-
log_warning "NODE_OPTIONS missing heap limit"
|
|
184
|
-
((issues++))
|
|
185
|
-
fi
|
|
186
|
-
|
|
187
|
-
# Check CFN configuration
|
|
188
|
-
if [[ -z "${CFN_MAX_AGENTS:-}" ]]; then
|
|
189
|
-
log_warning "CFN_MAX_AGENTS not set"
|
|
190
|
-
((issues++))
|
|
191
|
-
fi
|
|
192
|
-
|
|
193
|
-
if [[ $issues -eq 0 ]]; then
|
|
194
|
-
log_success "Environment check passed"
|
|
195
|
-
return 0
|
|
196
|
-
else
|
|
197
|
-
log_error "Environment check failed ($issues issues found)"
|
|
198
|
-
return 1
|
|
199
|
-
fi
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
# Main execution
|
|
203
|
-
main() {
|
|
204
|
-
local action="${1:-"sanitize"}"
|
|
205
|
-
|
|
206
|
-
case "$action" in
|
|
207
|
-
"sanitize")
|
|
208
|
-
sanitize_environment
|
|
209
|
-
;;
|
|
210
|
-
"check")
|
|
211
|
-
check_environment
|
|
212
|
-
;;
|
|
213
|
-
"--strict")
|
|
214
|
-
STRICT_MODE="true"
|
|
215
|
-
sanitize_environment
|
|
216
|
-
;;
|
|
217
|
-
"--help"|"-h")
|
|
218
|
-
cat << EOF
|
|
219
|
-
CFN Environment Sanitization Script
|
|
220
|
-
|
|
221
|
-
Usage:
|
|
222
|
-
$0 # Apply standard sanitization
|
|
223
|
-
$0 --strict # Apply strict sanitization
|
|
224
|
-
$0 check # Check environment state
|
|
225
|
-
$0 --help # Show this help
|
|
226
|
-
|
|
227
|
-
This script sanitizes the environment to prevent memory leaks and
|
|
228
|
-
ensure secure CFN Loop execution.
|
|
229
|
-
EOF
|
|
230
|
-
;;
|
|
231
|
-
*)
|
|
232
|
-
log_error "Unknown action: $action"
|
|
233
|
-
return 1
|
|
234
|
-
;;
|
|
235
|
-
esac
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
# Execute main function if run directly
|
|
239
|
-
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
240
|
-
main "$@"
|
|
241
|
-
else
|
|
242
|
-
# When sourced, automatically apply sanitization
|
|
243
|
-
sanitize_environment
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
##############################################################################
|
|
4
|
+
# CFN Environment Sanitization
|
|
5
|
+
# Part of ANTI-023 Memory Leak Protection System
|
|
6
|
+
#
|
|
7
|
+
# Automatically sanitizes environment variables and prevents memory leaks
|
|
8
|
+
# in CFN Loop orchestration workflows.
|
|
9
|
+
#
|
|
10
|
+
# Usage:
|
|
11
|
+
# source ./sanitize-environment.sh [--strict]
|
|
12
|
+
# ./sanitize-environment.sh --check
|
|
13
|
+
##############################################################################
|
|
14
|
+
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
|
|
17
|
+
# Configuration
|
|
18
|
+
STRICT_MODE=${1:-"false"}
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
21
|
+
|
|
22
|
+
# Environment sanitization rules
|
|
23
|
+
declare -A SANITIZATION_RULES=(
|
|
24
|
+
# Clear potentially problematic variables
|
|
25
|
+
["NODE_OPTIONS"]="sanitize"
|
|
26
|
+
["UV_THREADPOOL_SIZE"]="sanitize"
|
|
27
|
+
["REDIS_URL"]="sanitize_if_sensitive"
|
|
28
|
+
|
|
29
|
+
# Preserve critical CFN variables
|
|
30
|
+
["CFN_MODE"]="preserve"
|
|
31
|
+
["TASK_ID"]="preserve"
|
|
32
|
+
["AGENT_ID"]="preserve"
|
|
33
|
+
["LOOP3_AGENTS"]="preserve"
|
|
34
|
+
["LOOP2_AGENTS"]="preserve"
|
|
35
|
+
["PRODUCT_OWNER"]="preserve"
|
|
36
|
+
|
|
37
|
+
# Memory and process limits
|
|
38
|
+
["NODE_HEAP_LIMIT"]="enforce_2gb"
|
|
39
|
+
["MAX_AGENTS"]="enforce_10"
|
|
40
|
+
["CFN_TIMEOUT"]="enforce_600"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Sensitive patterns to redact
|
|
44
|
+
SENSITIVE_PATTERNS=(
|
|
45
|
+
"password="
|
|
46
|
+
"secret="
|
|
47
|
+
"token="
|
|
48
|
+
"key="
|
|
49
|
+
"auth="
|
|
50
|
+
"credential="
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Color coding for output
|
|
54
|
+
readonly RED='\033[0;31m'
|
|
55
|
+
readonly GREEN='\033[0;32m'
|
|
56
|
+
readonly YELLOW='\033[1;33m'
|
|
57
|
+
readonly BLUE='\033[0;34m'
|
|
58
|
+
readonly NC='\033[0m' # No Color
|
|
59
|
+
|
|
60
|
+
# Logging functions
|
|
61
|
+
log_info() {
|
|
62
|
+
echo -e "${BLUE}[SANITIZE]${NC} $1" >&2
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
log_success() {
|
|
66
|
+
echo -e "${GREEN}[SANITIZE]${NC} $1" >&2
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
log_warning() {
|
|
70
|
+
echo -e "${YELLOW}[SANITIZE]${NC} $1" >&2
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
log_error() {
|
|
74
|
+
echo -e "${RED}[SANITIZE]${NC} $1" >&2
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
# Check if value contains sensitive information
|
|
78
|
+
is_sensitive() {
|
|
79
|
+
local value="$1"
|
|
80
|
+
for pattern in "${SENSITIVE_PATTERNS[@]}"; do
|
|
81
|
+
if [[ "$value" =~ $pattern ]]; then
|
|
82
|
+
return 0
|
|
83
|
+
fi
|
|
84
|
+
done
|
|
85
|
+
return 1
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# Sanitize environment variable
|
|
89
|
+
sanitize_var() {
|
|
90
|
+
local var_name="$1"
|
|
91
|
+
local var_value="${!var_name:-}"
|
|
92
|
+
local rule="${SANITIZATION_RULES[$var_name]:-"preserve"}"
|
|
93
|
+
|
|
94
|
+
case "$rule" in
|
|
95
|
+
"sanitize")
|
|
96
|
+
if [[ -n "$var_value" ]]; then
|
|
97
|
+
log_info "Sanitizing $var_name"
|
|
98
|
+
unset "$var_name"
|
|
99
|
+
fi
|
|
100
|
+
;;
|
|
101
|
+
"sanitize_if_sensitive")
|
|
102
|
+
if is_sensitive "$var_value"; then
|
|
103
|
+
log_warning "Redacting sensitive $var_name"
|
|
104
|
+
unset "$var_name"
|
|
105
|
+
fi
|
|
106
|
+
;;
|
|
107
|
+
"preserve")
|
|
108
|
+
# Keep the variable as-is
|
|
109
|
+
;;
|
|
110
|
+
"enforce_2gb")
|
|
111
|
+
export "$var_name"="${var_value:-2048}"
|
|
112
|
+
log_info "Enforcing 2GB heap limit: $var_name=${!var_name}"
|
|
113
|
+
;;
|
|
114
|
+
"enforce_10")
|
|
115
|
+
export "$var_name"="${var_value:-10}"
|
|
116
|
+
log_info "Enforcing max 10 agents: $var_name=${!var_value}"
|
|
117
|
+
;;
|
|
118
|
+
"enforce_600")
|
|
119
|
+
export "$var_name"="${var_value:-600}"
|
|
120
|
+
log_info "Enforcing 600s timeout: $var_name=${!var_value}"
|
|
121
|
+
;;
|
|
122
|
+
esac
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
# Apply environment sanitization
|
|
126
|
+
sanitize_environment() {
|
|
127
|
+
log_info "Starting environment sanitization..."
|
|
128
|
+
|
|
129
|
+
# Count changes for reporting
|
|
130
|
+
local changes=0
|
|
131
|
+
|
|
132
|
+
for var_name in "${!SANITIZATION_RULES[@]}"; do
|
|
133
|
+
local old_value="${!var_name:-}"
|
|
134
|
+
sanitize_var "$var_name"
|
|
135
|
+
local new_value="${!var_name:-}"
|
|
136
|
+
|
|
137
|
+
if [[ "$old_value" != "$new_value" ]]; then
|
|
138
|
+
((changes++))
|
|
139
|
+
fi
|
|
140
|
+
done
|
|
141
|
+
|
|
142
|
+
# Enforce memory limits for Node.js processes
|
|
143
|
+
export NODE_OPTIONS="--max-old-space-size=2048 --max-new-space-size=512 ${NODE_OPTIONS:-}"
|
|
144
|
+
|
|
145
|
+
# Set CFN-specific limits
|
|
146
|
+
export CFN_MAX_AGENTS="${CFN_MAX_AGENTS:-10}"
|
|
147
|
+
export CFN_TIMEOUT="${CFN_TIMEOUT:-600}"
|
|
148
|
+
export CFN_MEMORY_LIMIT="${CFN_MEMORY_LIMIT:-2GB}"
|
|
149
|
+
|
|
150
|
+
log_success "Environment sanitization complete ($changes changes applied)"
|
|
151
|
+
|
|
152
|
+
if [[ "$STRICT_MODE" == "true" ]]; then
|
|
153
|
+
log_info "Strict mode enabled - additional validations applied"
|
|
154
|
+
|
|
155
|
+
# Validate critical variables are set in CLI mode
|
|
156
|
+
if [[ -n "${TASK_ID:-}" ]]; then
|
|
157
|
+
for required_var in AGENT_ID LOOP3_AGENTS; do
|
|
158
|
+
if [[ -z "${!required_var:-}" ]]; then
|
|
159
|
+
log_error "Required variable $required_var not set in CLI mode"
|
|
160
|
+
return 1
|
|
161
|
+
fi
|
|
162
|
+
done
|
|
163
|
+
fi
|
|
164
|
+
fi
|
|
165
|
+
|
|
166
|
+
return 0
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
# Check current environment state
|
|
170
|
+
check_environment() {
|
|
171
|
+
log_info "Checking environment state..."
|
|
172
|
+
|
|
173
|
+
local issues=0
|
|
174
|
+
|
|
175
|
+
# Check for sensitive data exposure
|
|
176
|
+
for var_name in $(env | grep -E "(password|secret|token|key|auth|credential)" | cut -d= -f1); do
|
|
177
|
+
log_warning "Potential sensitive data in $var_name"
|
|
178
|
+
((issues++))
|
|
179
|
+
done
|
|
180
|
+
|
|
181
|
+
# Check Node.js memory settings
|
|
182
|
+
if [[ -n "${NODE_OPTIONS:-}" && ! "$NODE_OPTIONS" =~ "max-old-space-size" ]]; then
|
|
183
|
+
log_warning "NODE_OPTIONS missing heap limit"
|
|
184
|
+
((issues++))
|
|
185
|
+
fi
|
|
186
|
+
|
|
187
|
+
# Check CFN configuration
|
|
188
|
+
if [[ -z "${CFN_MAX_AGENTS:-}" ]]; then
|
|
189
|
+
log_warning "CFN_MAX_AGENTS not set"
|
|
190
|
+
((issues++))
|
|
191
|
+
fi
|
|
192
|
+
|
|
193
|
+
if [[ $issues -eq 0 ]]; then
|
|
194
|
+
log_success "Environment check passed"
|
|
195
|
+
return 0
|
|
196
|
+
else
|
|
197
|
+
log_error "Environment check failed ($issues issues found)"
|
|
198
|
+
return 1
|
|
199
|
+
fi
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
# Main execution
|
|
203
|
+
main() {
|
|
204
|
+
local action="${1:-"sanitize"}"
|
|
205
|
+
|
|
206
|
+
case "$action" in
|
|
207
|
+
"sanitize")
|
|
208
|
+
sanitize_environment
|
|
209
|
+
;;
|
|
210
|
+
"check")
|
|
211
|
+
check_environment
|
|
212
|
+
;;
|
|
213
|
+
"--strict")
|
|
214
|
+
STRICT_MODE="true"
|
|
215
|
+
sanitize_environment
|
|
216
|
+
;;
|
|
217
|
+
"--help"|"-h")
|
|
218
|
+
cat << EOF
|
|
219
|
+
CFN Environment Sanitization Script
|
|
220
|
+
|
|
221
|
+
Usage:
|
|
222
|
+
$0 # Apply standard sanitization
|
|
223
|
+
$0 --strict # Apply strict sanitization
|
|
224
|
+
$0 check # Check environment state
|
|
225
|
+
$0 --help # Show this help
|
|
226
|
+
|
|
227
|
+
This script sanitizes the environment to prevent memory leaks and
|
|
228
|
+
ensure secure CFN Loop execution.
|
|
229
|
+
EOF
|
|
230
|
+
;;
|
|
231
|
+
*)
|
|
232
|
+
log_error "Unknown action: $action"
|
|
233
|
+
return 1
|
|
234
|
+
;;
|
|
235
|
+
esac
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
# Execute main function if run directly
|
|
239
|
+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
240
|
+
main "$@"
|
|
241
|
+
else
|
|
242
|
+
# When sourced, automatically apply sanitization
|
|
243
|
+
sanitize_environment
|
|
244
244
|
fi
|
|
@@ -21,12 +21,35 @@ MODE: Parse from --mode flag or default to "standard"
|
|
|
21
21
|
MAX_ITERATIONS: Parse from --max-iterations flag or default to 10
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
**Step 2:
|
|
24
|
+
**Step 2: Set Redis Environment Variables (REQUIRED for non-Docker environments)**
|
|
25
|
+
```bash
|
|
26
|
+
# Set Redis connection parameters for CLI mode
|
|
27
|
+
export CFN_REDIS_HOST=localhost
|
|
28
|
+
export CFN_REDIS_PORT=6379
|
|
29
|
+
|
|
30
|
+
echo "✅ Redis environment: $CFN_REDIS_HOST:$CFN_REDIS_PORT"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Step 3: Generate Task ID**
|
|
25
34
|
```bash
|
|
26
35
|
TASK_ID="cfn-cli-$(date +%s%N | tail -c 7)-${RANDOM}"
|
|
27
36
|
```
|
|
28
37
|
|
|
29
|
-
**Step
|
|
38
|
+
**Step 4: Verify Redis Availability (REQUIRED for CLI mode coordination)**
|
|
39
|
+
```bash
|
|
40
|
+
# Verify Redis availability (REQUIRED for CLI mode coordination)
|
|
41
|
+
if ! redis-cli -h "$CFN_REDIS_HOST" -p "$CFN_REDIS_PORT" PING >/dev/null 2>&1; then
|
|
42
|
+
echo "❌ ERROR: Redis not available at $CFN_REDIS_HOST:$CFN_REDIS_PORT"
|
|
43
|
+
echo " CLI mode requires Redis for coordination"
|
|
44
|
+
echo " Start Redis: redis-server"
|
|
45
|
+
echo " Or use Task mode: /cfn-loop-task"
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
echo "✅ Redis available at $CFN_REDIS_HOST:$CFN_REDIS_PORT"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Step 5: Spawn Coordinator (REQUIRED - Execute this command now via Bash tool)**
|
|
30
53
|
```bash
|
|
31
54
|
npx claude-flow-novice agent cfn-v3-coordinator \
|
|
32
55
|
--task-id "$TASK_ID" \
|
|
@@ -35,10 +58,10 @@ npx claude-flow-novice agent cfn-v3-coordinator \
|
|
|
35
58
|
--background=true
|
|
36
59
|
```
|
|
37
60
|
|
|
38
|
-
**Step
|
|
61
|
+
**Step 6: Inform User**
|
|
39
62
|
After spawning coordinator, tell user:
|
|
40
63
|
- ✅ CFN Loop coordinator spawned with task ID: $TASK_ID
|
|
41
|
-
- 📊 Monitor progress: `redis-cli HGETALL "cfn_loop:task:$TASK_ID:context"`
|
|
64
|
+
- 📊 Monitor progress: `redis-cli -h $CFN_REDIS_HOST -p $CFN_REDIS_PORT HGETALL "cfn_loop:task:$TASK_ID:context"`
|
|
42
65
|
- 🌐 Web dashboard: http://localhost:3000
|
|
43
66
|
|
|
44
67
|
---
|
|
@@ -94,8 +117,8 @@ After spawning coordinator, tell user:
|
|
|
94
117
|
| Mode | Gate | Consensus | Iterations | Validators | Use Case |
|
|
95
118
|
|------|------|-----------|------------|------------|----------|
|
|
96
119
|
| MVP | ≥0.70 | ≥0.80 | 5 | 2 | Prototypes, proof-of-concept |
|
|
97
|
-
| Standard | ≥0.
|
|
98
|
-
| Enterprise | ≥0.
|
|
120
|
+
| Standard | ≥0.95 | ≥0.90 | 10 | 3-4 | Production features |
|
|
121
|
+
| Enterprise | ≥0.98 | ≥0.95 | 15 | 5 | Security, compliance, critical systems |
|
|
99
122
|
|
|
100
123
|
## How CLI Mode Works
|
|
101
124
|
|
|
@@ -61,19 +61,40 @@ CLI spawn → Workers (custom routing when enabled, see agent profiles)
|
|
|
61
61
|
|
|
62
62
|
**Execute:**
|
|
63
63
|
```bash
|
|
64
|
-
# Find project root
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if [
|
|
64
|
+
# Find script in project root or node_modules
|
|
65
|
+
SCRIPT_PATH=""
|
|
66
|
+
if [ -f "$PWD/scripts/switch-api.sh" ]; then
|
|
67
|
+
SCRIPT_PATH="$PWD/scripts/switch-api.sh"
|
|
68
|
+
else
|
|
69
|
+
# Check parent directories (for nested project structures)
|
|
70
|
+
SEARCH_DIR="$PWD"
|
|
71
|
+
while [ "$SEARCH_DIR" != "/" ]; do
|
|
72
|
+
if [ -f "$SEARCH_DIR/scripts/switch-api.sh" ]; then
|
|
73
|
+
SCRIPT_PATH="$SEARCH_DIR/scripts/switch-api.sh"
|
|
74
|
+
break
|
|
75
|
+
fi
|
|
76
|
+
SEARCH_DIR="$(dirname "$SEARCH_DIR")"
|
|
77
|
+
done
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Fallback to node_modules (for npm-installed package)
|
|
81
|
+
if [ -z "$SCRIPT_PATH" ]; then
|
|
82
|
+
SEARCH_DIR="$PWD"
|
|
83
|
+
while [ "$SEARCH_DIR" != "/" ]; do
|
|
84
|
+
if [ -f "$SEARCH_DIR/node_modules/claude-flow-novice/scripts/switch-api.sh" ]; then
|
|
85
|
+
SCRIPT_PATH="$SEARCH_DIR/node_modules/claude-flow-novice/scripts/switch-api.sh"
|
|
86
|
+
break
|
|
87
|
+
fi
|
|
88
|
+
SEARCH_DIR="$(dirname "$SEARCH_DIR")"
|
|
89
|
+
done
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
if [ -z "$SCRIPT_PATH" ]; then
|
|
73
93
|
echo "Error: switch-api.sh not found. Please ensure you're in a project with CFN installed."
|
|
74
94
|
exit 1
|
|
75
95
|
fi
|
|
76
|
-
|
|
96
|
+
|
|
97
|
+
bash "$SCRIPT_PATH" {{args}}
|
|
77
98
|
```
|
|
78
99
|
|
|
79
100
|
**Note:** Script automatically detects and uses `.claude/settings.local.json` if it exists, otherwise uses `.claude/settings.json`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# SQL Injection Linting Script
|
|
3
|
+
# Detects vulnerable SQL query patterns in shell scripts
|
|
4
|
+
# Part of SEC-003 SQL injection prevention
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
# Check if file provided
|
|
9
|
+
if [[ $# -eq 0 ]]; then
|
|
10
|
+
echo "Usage: $0 <file_path>" >&2
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
FILE_PATH="$1"
|
|
15
|
+
|
|
16
|
+
if [[ ! -f "$FILE_PATH" ]]; then
|
|
17
|
+
echo "ERROR: File not found: $FILE_PATH" >&2
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# Skip non-shell scripts
|
|
22
|
+
if [[ ! "$FILE_PATH" =~ \.sh$ ]]; then
|
|
23
|
+
exit 0
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Detect vulnerable patterns
|
|
27
|
+
VULNERABLE_PATTERNS=(
|
|
28
|
+
'sqlite3.*["\047].*\$[A-Za-z_]' # Direct variable interpolation in SQL strings
|
|
29
|
+
'sqlite3.*".*WHERE.*=.*\$' # WHERE clauses with direct variables
|
|
30
|
+
'sqlite3.*".*VALUES.*\$' # INSERT VALUES with direct variables
|
|
31
|
+
'sqlite3.*".*SET.*\$' # UPDATE SET with direct variables
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
FOUND_ISSUES=0
|
|
35
|
+
|
|
36
|
+
for pattern in "${VULNERABLE_PATTERNS[@]}"; do
|
|
37
|
+
# Exclude safe patterns:
|
|
38
|
+
# - sqlite-params.sh library itself
|
|
39
|
+
# - Comments (lines starting with #)
|
|
40
|
+
# - Heredocs (<<)
|
|
41
|
+
# - Already using sqlite_select/sqlite_insert/sqlite_exec
|
|
42
|
+
matches=$(grep -n -E "$pattern" "$FILE_PATH" | \
|
|
43
|
+
grep -v "sqlite_select\|sqlite_insert\|sqlite_exec" | \
|
|
44
|
+
grep -v "^[[:space:]]*#" | \
|
|
45
|
+
grep -v "<<" || true)
|
|
46
|
+
|
|
47
|
+
if [[ -n "$matches" ]]; then
|
|
48
|
+
echo "VULNERABILITY DETECTED in $FILE_PATH:" >&2
|
|
49
|
+
echo "$matches" >&2
|
|
50
|
+
FOUND_ISSUES=1
|
|
51
|
+
fi
|
|
52
|
+
done
|
|
53
|
+
|
|
54
|
+
if [[ $FOUND_ISSUES -eq 1 ]]; then
|
|
55
|
+
echo "" >&2
|
|
56
|
+
echo "RECOMMENDATION: Use parameterized queries from .claude/skills/bootstrap/sqlite-params.sh" >&2
|
|
57
|
+
echo "Example: sqlite_select \"\$DB\" \"SELECT * FROM table WHERE id = ?1\" \"\$user_input\"" >&2
|
|
58
|
+
exit 1
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
exit 0
|