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
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# SQLite Parameterized Query Helper Library
|
|
3
|
+
# Provides secure parameter binding for SQLite queries to prevent SQL injection
|
|
4
|
+
#
|
|
5
|
+
# SECURITY: This library replaces manual SQL escaping (${var//\'/\'\'}) with
|
|
6
|
+
# proper parameterized queries using SQLite's .parameter command.
|
|
7
|
+
#
|
|
8
|
+
# SQLite Version Requirement: 3.32.0+ (for .parameter support)
|
|
9
|
+
# Check with: sqlite3 --version
|
|
10
|
+
#
|
|
11
|
+
# Usage:
|
|
12
|
+
# source ".claude/skills/bootstrap/sqlite-params.sh"
|
|
13
|
+
# sqlite_select "$DB_PATH" "SELECT * FROM table WHERE id = ?1" "$user_input"
|
|
14
|
+
# sqlite_insert "$DB_PATH" "INSERT INTO table (col1, col2) VALUES (?1, ?2)" "$val1" "$val2"
|
|
15
|
+
#
|
|
16
|
+
# Parameter Syntax:
|
|
17
|
+
# Positional: ?1, ?2, ?3, ... (recommended for positional args)
|
|
18
|
+
# Named: :name, @name, $name (use with associative arrays)
|
|
19
|
+
#
|
|
20
|
+
# Implementation Notes:
|
|
21
|
+
# - Uses .parameter init to create TEMP binding table
|
|
22
|
+
# - Uses .parameter set to bind values safely
|
|
23
|
+
# - All user input is treated as data, not SQL code
|
|
24
|
+
# - Prevents SQL injection attacks
|
|
25
|
+
|
|
26
|
+
set -euo pipefail
|
|
27
|
+
|
|
28
|
+
# Execute SELECT query with parameter binding
|
|
29
|
+
# Usage: sqlite_select <db_path> <query> [param1] [param2] ...
|
|
30
|
+
# Returns: Query result (stdout)
|
|
31
|
+
# Example: sqlite_select "$DB" "SELECT * FROM users WHERE id = ?1" "123"
|
|
32
|
+
sqlite_select() {
|
|
33
|
+
local db_path="$1"
|
|
34
|
+
local query="$2"
|
|
35
|
+
shift 2
|
|
36
|
+
|
|
37
|
+
if [[ ! -f "$db_path" ]]; then
|
|
38
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
39
|
+
return 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Build parameter binding commands
|
|
43
|
+
# Use .parameter init to create binding table
|
|
44
|
+
# Use .parameter set for each positional parameter (?1, ?2, ?3, ...)
|
|
45
|
+
local param_count=1
|
|
46
|
+
local param_commands=".parameter init"$'\n'
|
|
47
|
+
|
|
48
|
+
for param in "$@"; do
|
|
49
|
+
# Escape double quotes in parameter value for heredoc safety
|
|
50
|
+
local escaped_param="${param//\"/\\\"}"
|
|
51
|
+
param_commands+=".parameter set ?${param_count} \"${escaped_param}\""$'\n'
|
|
52
|
+
((param_count++))
|
|
53
|
+
done
|
|
54
|
+
|
|
55
|
+
# Execute query with parameter binding
|
|
56
|
+
sqlite3 "$db_path" <<EOF
|
|
57
|
+
${param_commands}${query}
|
|
58
|
+
EOF
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Execute INSERT query with parameter binding
|
|
62
|
+
# Usage: sqlite_insert <db_path> <query> [param1] [param2] ...
|
|
63
|
+
# Returns: 0 on success, 1 on failure
|
|
64
|
+
# Example: sqlite_insert "$DB" "INSERT INTO users (name, email) VALUES (?1, ?2)" "Alice" "alice@example.com"
|
|
65
|
+
sqlite_insert() {
|
|
66
|
+
local db_path="$1"
|
|
67
|
+
local query="$2"
|
|
68
|
+
shift 2
|
|
69
|
+
|
|
70
|
+
if [[ ! -f "$db_path" ]]; then
|
|
71
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
72
|
+
return 1
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# Build parameter binding commands
|
|
76
|
+
local param_count=1
|
|
77
|
+
local param_commands=".parameter init"$'\n'
|
|
78
|
+
|
|
79
|
+
for param in "$@"; do
|
|
80
|
+
local escaped_param="${param//\"/\\\"}"
|
|
81
|
+
param_commands+=".parameter set ?${param_count} \"${escaped_param}\""$'\n'
|
|
82
|
+
((param_count++))
|
|
83
|
+
done
|
|
84
|
+
|
|
85
|
+
sqlite3 "$db_path" <<EOF
|
|
86
|
+
${param_commands}${query}
|
|
87
|
+
EOF
|
|
88
|
+
|
|
89
|
+
return $?
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# Execute UPDATE query with parameter binding
|
|
93
|
+
# Usage: sqlite_update <db_path> <query> [param1] [param2] ...
|
|
94
|
+
# Returns: 0 on success, 1 on failure
|
|
95
|
+
# Example: sqlite_update "$DB" "UPDATE users SET email = ?1 WHERE id = ?2" "new@example.com" "123"
|
|
96
|
+
sqlite_update() {
|
|
97
|
+
local db_path="$1"
|
|
98
|
+
local query="$2"
|
|
99
|
+
shift 2
|
|
100
|
+
|
|
101
|
+
if [[ ! -f "$db_path" ]]; then
|
|
102
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
103
|
+
return 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Build parameter binding commands
|
|
107
|
+
local param_count=1
|
|
108
|
+
local param_commands=".parameter init"$'\n'
|
|
109
|
+
|
|
110
|
+
for param in "$@"; do
|
|
111
|
+
local escaped_param="${param//\"/\\\"}"
|
|
112
|
+
param_commands+=".parameter set ?${param_count} \"${escaped_param}\""$'\n'
|
|
113
|
+
((param_count++))
|
|
114
|
+
done
|
|
115
|
+
|
|
116
|
+
sqlite3 "$db_path" <<EOF
|
|
117
|
+
${param_commands}${query}
|
|
118
|
+
EOF
|
|
119
|
+
|
|
120
|
+
return $?
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
# Execute DELETE query with parameter binding
|
|
124
|
+
# Usage: sqlite_delete <db_path> <query> [param1] [param2] ...
|
|
125
|
+
# Returns: 0 on success, 1 on failure
|
|
126
|
+
# Example: sqlite_delete "$DB" "DELETE FROM users WHERE id = ?1" "123"
|
|
127
|
+
sqlite_delete() {
|
|
128
|
+
local db_path="$1"
|
|
129
|
+
local query="$2"
|
|
130
|
+
shift 2
|
|
131
|
+
|
|
132
|
+
if [[ ! -f "$db_path" ]]; then
|
|
133
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
134
|
+
return 1
|
|
135
|
+
fi
|
|
136
|
+
|
|
137
|
+
# Build parameter binding commands
|
|
138
|
+
local param_count=1
|
|
139
|
+
local param_commands=".parameter init"$'\n'
|
|
140
|
+
|
|
141
|
+
for param in "$@"; do
|
|
142
|
+
local escaped_param="${param//\"/\\\"}"
|
|
143
|
+
param_commands+=".parameter set ?${param_count} \"${escaped_param}\""$'\n'
|
|
144
|
+
((param_count++))
|
|
145
|
+
done
|
|
146
|
+
|
|
147
|
+
sqlite3 "$db_path" <<EOF
|
|
148
|
+
${param_commands}${query}
|
|
149
|
+
EOF
|
|
150
|
+
|
|
151
|
+
return $?
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
# Execute generic query with parameter binding
|
|
155
|
+
# Usage: sqlite_exec <db_path> <query> [param1] [param2] ...
|
|
156
|
+
# Returns: Query result (stdout) or 0 on success
|
|
157
|
+
# Example: sqlite_exec "$DB" "CREATE INDEX IF NOT EXISTS idx_users_email ON users(email)"
|
|
158
|
+
sqlite_exec() {
|
|
159
|
+
local db_path="$1"
|
|
160
|
+
local query="$2"
|
|
161
|
+
shift 2
|
|
162
|
+
|
|
163
|
+
if [[ ! -f "$db_path" ]]; then
|
|
164
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
165
|
+
return 1
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
# Build parameter binding commands (if parameters provided)
|
|
169
|
+
local param_commands=""
|
|
170
|
+
if [[ $# -gt 0 ]]; then
|
|
171
|
+
param_commands=".parameter init"$'\n'
|
|
172
|
+
local param_count=1
|
|
173
|
+
for param in "$@"; do
|
|
174
|
+
local escaped_param="${param//\"/\\\"}"
|
|
175
|
+
param_commands+=".parameter set ?${param_count} \"${escaped_param}\""$'\n'
|
|
176
|
+
((param_count++))
|
|
177
|
+
done
|
|
178
|
+
fi
|
|
179
|
+
|
|
180
|
+
sqlite3 "$db_path" <<EOF
|
|
181
|
+
${param_commands}${query}
|
|
182
|
+
EOF
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
# Execute INSERT OR REPLACE with parameter binding
|
|
186
|
+
# Usage: sqlite_upsert <db_path> <query> [param1] [param2] ...
|
|
187
|
+
# Returns: 0 on success, 1 on failure
|
|
188
|
+
# Example: sqlite_upsert "$DB" "INSERT OR REPLACE INTO users (id, name) VALUES (?1, ?2)" "1" "Alice"
|
|
189
|
+
sqlite_upsert() {
|
|
190
|
+
local db_path="$1"
|
|
191
|
+
local query="$2"
|
|
192
|
+
shift 2
|
|
193
|
+
|
|
194
|
+
# Validate query contains INSERT OR REPLACE
|
|
195
|
+
if [[ ! "$query" =~ INSERT[[:space:]]+OR[[:space:]]+REPLACE ]]; then
|
|
196
|
+
echo "ERROR: Query must be INSERT OR REPLACE" >&2
|
|
197
|
+
return 1
|
|
198
|
+
fi
|
|
199
|
+
|
|
200
|
+
sqlite_insert "$db_path" "$query" "$@"
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
# Helper: Test parameter binding with injection attempts
|
|
204
|
+
# Usage: test_param_binding
|
|
205
|
+
# Returns: 0 if all tests pass
|
|
206
|
+
test_param_binding() {
|
|
207
|
+
local test_db="/tmp/test-sqlite-params-$$.db"
|
|
208
|
+
|
|
209
|
+
# Create test database
|
|
210
|
+
sqlite3 "$test_db" "CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT, value TEXT);"
|
|
211
|
+
|
|
212
|
+
echo "Testing SQLite parameter binding security..."
|
|
213
|
+
|
|
214
|
+
# Test 1: Basic parameter binding
|
|
215
|
+
echo "Test 1: Basic INSERT with parameters"
|
|
216
|
+
sqlite_insert "$test_db" "INSERT INTO test (name, value) VALUES (?1, ?2)" "user1" "value1"
|
|
217
|
+
local count
|
|
218
|
+
count=$(sqlite_select "$test_db" "SELECT COUNT(*) FROM test WHERE name = ?1" "user1")
|
|
219
|
+
if [[ "$count" != "1" ]]; then
|
|
220
|
+
echo "FAIL: Expected 1 row, got $count" >&2
|
|
221
|
+
rm "$test_db"
|
|
222
|
+
return 1
|
|
223
|
+
fi
|
|
224
|
+
echo "PASS"
|
|
225
|
+
|
|
226
|
+
# Test 2: SQL injection attempt - DROP TABLE
|
|
227
|
+
echo "Test 2: SQL injection attempt - DROP TABLE"
|
|
228
|
+
local malicious_input="'; DROP TABLE test; --"
|
|
229
|
+
sqlite_insert "$test_db" "INSERT INTO test (name, value) VALUES (?1, ?2)" "$malicious_input" "value2"
|
|
230
|
+
count=$(sqlite_select "$test_db" "SELECT COUNT(*) FROM test")
|
|
231
|
+
if [[ "$count" != "2" ]]; then
|
|
232
|
+
echo "FAIL: Table was altered by injection! Count: $count" >&2
|
|
233
|
+
rm "$test_db"
|
|
234
|
+
return 1
|
|
235
|
+
fi
|
|
236
|
+
# Verify the malicious string was stored as literal data
|
|
237
|
+
local stored_value
|
|
238
|
+
stored_value=$(sqlite_select "$test_db" "SELECT name FROM test WHERE value = ?1" "value2")
|
|
239
|
+
if [[ "$stored_value" != "$malicious_input" ]]; then
|
|
240
|
+
echo "FAIL: Malicious input was not stored correctly" >&2
|
|
241
|
+
rm "$test_db"
|
|
242
|
+
return 1
|
|
243
|
+
fi
|
|
244
|
+
echo "PASS: Injection attempt was neutralized"
|
|
245
|
+
|
|
246
|
+
# Test 3: SQL injection attempt - OR 1=1
|
|
247
|
+
echo "Test 3: SQL injection attempt - OR 1=1"
|
|
248
|
+
malicious_input="' OR '1'='1"
|
|
249
|
+
count=$(sqlite_select "$test_db" "SELECT COUNT(*) FROM test WHERE name = ?1" "$malicious_input")
|
|
250
|
+
if [[ "$count" != "0" ]]; then
|
|
251
|
+
echo "FAIL: OR injection succeeded! Count: $count" >&2
|
|
252
|
+
rm "$test_db"
|
|
253
|
+
return 1
|
|
254
|
+
fi
|
|
255
|
+
echo "PASS: OR injection was neutralized"
|
|
256
|
+
|
|
257
|
+
# Test 4: UPDATE with parameters
|
|
258
|
+
echo "Test 4: UPDATE with parameters"
|
|
259
|
+
sqlite_update "$test_db" "UPDATE test SET value = ?1 WHERE name = ?2" "updated_value" "user1"
|
|
260
|
+
local updated_value
|
|
261
|
+
updated_value=$(sqlite_select "$test_db" "SELECT value FROM test WHERE name = ?1" "user1")
|
|
262
|
+
if [[ "$updated_value" != "updated_value" ]]; then
|
|
263
|
+
echo "FAIL: UPDATE failed" >&2
|
|
264
|
+
rm "$test_db"
|
|
265
|
+
return 1
|
|
266
|
+
fi
|
|
267
|
+
echo "PASS"
|
|
268
|
+
|
|
269
|
+
# Test 5: DELETE with parameters
|
|
270
|
+
echo "Test 5: DELETE with parameters"
|
|
271
|
+
sqlite_delete "$test_db" "DELETE FROM test WHERE name = ?1" "user1"
|
|
272
|
+
count=$(sqlite_select "$test_db" "SELECT COUNT(*) FROM test WHERE name = ?1" "user1")
|
|
273
|
+
if [[ "$count" != "0" ]]; then
|
|
274
|
+
echo "FAIL: DELETE failed" >&2
|
|
275
|
+
rm "$test_db"
|
|
276
|
+
return 1
|
|
277
|
+
fi
|
|
278
|
+
echo "PASS"
|
|
279
|
+
|
|
280
|
+
# Cleanup
|
|
281
|
+
rm "$test_db"
|
|
282
|
+
echo "All parameter binding tests passed!"
|
|
283
|
+
return 0
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
# Export functions for use in other scripts
|
|
287
|
+
export -f sqlite_select sqlite_insert sqlite_update sqlite_delete sqlite_exec sqlite_upsert
|
|
@@ -6,24 +6,26 @@
|
|
|
6
6
|
set -euo pipefail
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
# ⚠️ ANTI-023 MEMORY LEAK PROTECTION: Environment Sanitization
|
|
10
|
-
# Load and apply environment sanitization to prevent memory leaks
|
|
11
|
-
# shellcheck source=../cfn-environment-sanitization/sanitize-environment.sh
|
|
12
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
13
|
-
if [[ -f "$SCRIPT_DIR/../cfn-environment-sanitization/sanitize-environment.sh" ]]; then
|
|
14
|
-
source "$SCRIPT_DIR/../cfn-environment-sanitization/sanitize-environment.sh" --strict
|
|
15
|
-
echo "✅ Agent spawning environment sanitized" >&2
|
|
16
|
-
else
|
|
17
|
-
echo "⚠️ Environment sanitization not available - proceeding without protection" >&2
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
9
|
# ⚠️ ANTI-023 MEMORY LEAK PROTECTION: Block Task Mode agents
|
|
21
10
|
# Task Mode agents spawn via Task() tool and should NOT use agent spawning CLI
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
# CLI mode requires TASK_ID environment variable (validates existence, not pattern)
|
|
12
|
+
if [[ -z "${TASK_ID:-}" ]]; then
|
|
13
|
+
echo "❌ ERROR: TASK_ID environment variable required for CLI mode" >&2
|
|
24
14
|
echo "🚨 ANTI-023: This script is for CLI-spawned coordinators only" >&2
|
|
25
|
-
echo "💡 Task Mode
|
|
26
|
-
|
|
15
|
+
echo "💡 Task Mode agents should use Task() tool, not CLI spawning" >&2
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Sanitize TASK_ID to prevent command injection
|
|
20
|
+
if [[ "${TASK_ID}" =~ [^a-zA-Z0-9._-] ]]; then
|
|
21
|
+
echo "❌ ERROR: TASK_ID contains invalid characters: ${TASK_ID}" >&2
|
|
22
|
+
echo "Allowed: alphanumeric, dot, underscore, hyphen" >&2
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Validate required parameters for CLI mode
|
|
27
|
+
if [[ -z "${1:-}" ]]; then
|
|
28
|
+
echo "❌ ERROR: Agent type required" >&2
|
|
27
29
|
exit 1
|
|
28
30
|
fi
|
|
29
31
|
|
|
@@ -121,18 +123,14 @@ spawn_agents() {
|
|
|
121
123
|
log_info "Spawning agents: $agents"
|
|
122
124
|
log_info "Task: $task"
|
|
123
125
|
|
|
124
|
-
#
|
|
125
|
-
local
|
|
126
|
-
|
|
127
|
-
# Add optional Redis channel
|
|
126
|
+
# Execute spawn command directly with proper quoting (no eval - prevents command injection)
|
|
127
|
+
local exit_code=0
|
|
128
128
|
if [[ -n "$redis_channel" ]]; then
|
|
129
|
-
|
|
129
|
+
npx claude-flow-spawn "$task" --agents="$agents" --provider="$provider" --redis-channel="$redis_channel" || exit_code=$?
|
|
130
|
+
else
|
|
131
|
+
npx claude-flow-spawn "$task" --agents="$agents" --provider="$provider" || exit_code=$?
|
|
130
132
|
fi
|
|
131
133
|
|
|
132
|
-
# Execute spawn
|
|
133
|
-
eval "$spawn_cmd"
|
|
134
|
-
local exit_code=$?
|
|
135
|
-
|
|
136
134
|
if [[ $exit_code -eq 0 ]]; then
|
|
137
135
|
log_info "Agents spawned successfully"
|
|
138
136
|
else
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
set -e
|
|
5
5
|
|
|
6
|
+
# Source parameterized query library for SQL injection prevention
|
|
7
|
+
PROJECT_ROOT="/mnt/c/Users/masha/Documents/claude-flow-novice"
|
|
8
|
+
source "$PROJECT_ROOT/.claude/skills/bootstrap/sqlite-params.sh"
|
|
9
|
+
|
|
6
10
|
# Temporary test database
|
|
7
11
|
TEST_DB="/tmp/test_memory_persistence_$(date +%s).sqlite"
|
|
8
12
|
|
|
@@ -22,7 +26,7 @@ CREATE INDEX idx_agent_task ON agent_outputs(agent_id, task_id);
|
|
|
22
26
|
EOF
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
# Mock persist-agent-output.sh for testing
|
|
29
|
+
# Mock persist-agent-output.sh for testing - using parameterized query
|
|
26
30
|
mock_persist_agent_output() {
|
|
27
31
|
local task_id="$1"
|
|
28
32
|
local agent_id="$2"
|
|
@@ -30,24 +34,19 @@ mock_persist_agent_output() {
|
|
|
30
34
|
local confidence="$4"
|
|
31
35
|
local iteration="$5"
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
INSERT OR REPLACE INTO agent_outputs
|
|
35
|
-
|
|
36
|
-
VALUES
|
|
37
|
-
('$task_id', '$agent_id', '$output', $confidence, $iteration);
|
|
38
|
-
EOF
|
|
37
|
+
sqlite_upsert "$TEST_DB" \
|
|
38
|
+
"INSERT OR REPLACE INTO agent_outputs (task_id, agent_id, output, confidence, iteration) VALUES (?1, ?2, ?3, ?4, ?5);" \
|
|
39
|
+
"$task_id" "$agent_id" "$output" "$confidence" "$iteration"
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
# Mock query-agent-history.sh for testing
|
|
42
|
+
# Mock query-agent-history.sh for testing - using parameterized query
|
|
42
43
|
mock_query_agent_history() {
|
|
43
44
|
local agent_id="$1"
|
|
44
45
|
local task_id="$2"
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
SELECT task_id, agent_id, output, confidence, iteration
|
|
48
|
-
|
|
49
|
-
WHERE agent_id = '$agent_id' AND task_id = '$task_id';
|
|
50
|
-
EOF
|
|
47
|
+
sqlite_select "$TEST_DB" \
|
|
48
|
+
"SELECT task_id, agent_id, output, confidence, iteration FROM agent_outputs WHERE agent_id = ?1 AND task_id = ?2;" \
|
|
49
|
+
"$agent_id" "$task_id"
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
# Test 1: Successful output persistence with complete fields
|
|
@@ -148,9 +147,11 @@ test_iteration_confidence_tracking() {
|
|
|
148
147
|
mock_persist_agent_output "$task_id" "$agent_id" "${outputs[i]}" "${confidences[i]}" "${iterations[i]}"
|
|
149
148
|
done
|
|
150
149
|
|
|
151
|
-
# Verify iterations are tracked
|
|
150
|
+
# Verify iterations are tracked - using parameterized query
|
|
152
151
|
local iteration_count
|
|
153
|
-
iteration_count=$(
|
|
152
|
+
iteration_count=$(sqlite_select "$TEST_DB" \
|
|
153
|
+
"SELECT COUNT(DISTINCT iteration) FROM agent_outputs WHERE task_id = ?1 AND agent_id = ?2;" \
|
|
154
|
+
"$task_id" "$agent_id")
|
|
154
155
|
|
|
155
156
|
if [ "$iteration_count" -ne 3 ]; then
|
|
156
157
|
echo "Test 4 failed: Incorrect iteration tracking"
|
|
@@ -232,4 +233,4 @@ main() {
|
|
|
232
233
|
}
|
|
233
234
|
|
|
234
235
|
# Execute main test runner
|
|
235
|
-
main
|
|
236
|
+
main
|