claude-flow-novice 2.15.2 → 2.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/.claude/commands/cfn-loop-cli.md +16 -2
- package/.claude/commands/switch-api.md +31 -10
- package/.claude/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/.claude/hooks/cfn-invoke-security-validation.sh +69 -69
- package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
- package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
- package/.claude/hooks/cfn-post-edit.config.json +44 -44
- 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-hybrid-routing/check-dependencies.sh +51 -51
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- 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 +74 -74
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/.claude/skills/cfn-redis-coordination/get-context.sh +145 -112
- package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/.claude/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +28 -28
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- package/README.md +116 -475
- package/claude-assets/agents/cfn-dev-team/README.md +103 -0
- package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
- package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
- package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
- package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
- package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
- package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
- package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
- package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
- package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
- package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
- package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
- package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
- package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
- package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
- package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
- package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
- package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
- package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
- package/claude-assets/commands/cfn-loop-cli.md +16 -2
- package/claude-assets/commands/switch-api.md +31 -10
- package/claude-assets/hooks/cfn-BACKUP_USAGE.md +243 -243
- package/claude-assets/hooks/cfn-invoke-security-validation.sh +69 -69
- package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
- package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +109 -78
- package/claude-assets/hooks/cfn-post-edit.config.json +44 -44
- package/claude-assets/hooks/cfn-post-execution/memory-cleanup.sh +19 -19
- package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
- package/claude-assets/hooks/cfn-pre-execution/memory-check.sh +19 -19
- 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 +543 -572
- package/claude-assets/skills/agent-lifecycle/simple-audit.sh +57 -30
- 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/persist-agent-output.sh +48 -48
- package/claude-assets/skills/cfn-automatic-memory-persistence/query-agent-history.sh +34 -34
- package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
- package/claude-assets/skills/cfn-deliverable-validation/confidence-calculator.sh +261 -261
- 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-expert-update/update-expert.sh +345 -345
- 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-hybrid-routing/check-dependencies.sh +51 -51
- package/claude-assets/skills/cfn-intervention-detector/detect-intervention.sh +110 -110
- package/claude-assets/skills/cfn-intervention-orchestrator/execute-intervention.sh +58 -58
- package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
- package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
- package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
- package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
- package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
- package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
- package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +184 -23
- package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
- package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
- package/claude-assets/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -252
- package/claude-assets/skills/cfn-loop2-output-processing/process-validator-output.sh +275 -275
- package/claude-assets/skills/cfn-memory-management/check-memory.sh +159 -159
- package/claude-assets/skills/cfn-memory-management/cleanup-memory.sh +196 -196
- package/claude-assets/skills/cfn-node-heap-sizer/task-mode-heap-limiter.sh +325 -325
- 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-playbook-auto-update/auto-update-playbook.sh +85 -85
- 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 +74 -74
- package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
- package/claude-assets/skills/cfn-redis-coordination/get-context.sh +145 -112
- package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -0
- package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
- package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +33 -0
- package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
- package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
- package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
- package/claude-assets/skills/cfn-scope-simplifier/simplify-scope.sh +67 -67
- 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-specialist-injection/recommend-specialist.sh +56 -56
- package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
- package/claude-assets/skills/cfn-standardized-error-handling/capture-agent-error.sh +86 -86
- package/claude-assets/skills/cfn-standardized-error-handling/test-error-handling.sh +165 -165
- 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-task-config-init/initialize-config.sh +264 -264
- package/claude-assets/skills/cfn-task-decomposition/task-decomposer.sh +278 -278
- 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/middleware-config.sh +28 -28
- package/claude-assets/skills/cfn-transparency-middleware/performance-benchmark.sh +78 -78
- package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
- package/claude-assets/skills/cfn-transparency-middleware/test-integration.sh +161 -161
- package/claude-assets/skills/cfn-transparency-middleware/test-transparency-skill.sh +367 -367
- package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +107 -92
- package/claude-assets/skills/cfn-transparency-middleware/wrap-agent.sh +131 -131
- 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/docker-build/SKILL.md +96 -203
- package/claude-assets/skills/docker-build/build.sh +73 -73
- package/claude-assets/skills/integration/agent-handoff.sh +492 -0
- package/claude-assets/skills/integration/file-operations.sh +414 -0
- 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/APPROVAL_WORKFLOW.md +806 -0
- package/claude-assets/skills/workflow-codification/COST_TRACKING.md +637 -0
- package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
- package/claude-assets/skills/workflow-codification/EDGE_CASE_TRACKING.md +404 -0
- package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
- package/claude-assets/skills/workflow-codification/README_PHASE4.md +457 -0
- package/claude-assets/skills/workflow-codification/SKILL.md +110 -0
- package/claude-assets/skills/workflow-codification/analyze-patterns.sh +899 -0
- package/claude-assets/skills/workflow-codification/approval-workflow.sh +514 -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/generate-skill-update.sh +525 -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/review-skill.sh +643 -0
- package/claude-assets/skills/workflow-codification/templates/email-notification.txt +114 -0
- package/claude-assets/skills/workflow-codification/templates/slack-notification.md +85 -0
- package/claude-assets/skills/workflow-codification/test-integration.sh +296 -0
- package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh +486 -0
- package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
- package/claude-assets/skills/workflow-codification/track-edge-case.sh +290 -0
- package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
- package/dist/ace/ace-curator.js +10 -2
- package/dist/ace/ace-curator.js.map +1 -1
- package/dist/ace/ace-generator.js +4 -0
- package/dist/ace/ace-generator.js.map +1 -1
- package/dist/ace/ace-reflector.js +1 -1
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/ace/context-injection.js +24 -2
- package/dist/ace/context-injection.js.map +1 -1
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/agents/task-agent-integration.js +1 -1
- package/dist/agents/task-agent-integration.js.map +1 -1
- package/dist/api/health-endpoints.js +390 -0
- package/dist/api/health-endpoints.js.map +1 -0
- package/dist/cli/agent-executor.js +4 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +89 -1
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/dist/cli/agent-spawn.js +130 -37
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/config-manager.js +91 -109
- package/dist/cli/config-manager.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 +507 -0
- package/dist/integration/DatabaseHandoff.js.map +1 -0
- package/dist/integration/StandardAdapter.js +291 -0
- package/dist/integration/StandardAdapter.js.map +1 -0
- 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 +518 -0
- package/dist/lib/agent-output-parser.js.map +1 -0
- package/dist/lib/agent-output-validator.js +950 -0
- package/dist/lib/agent-output-validator.js.map +1 -0
- package/dist/lib/agent-workspace.js +281 -0
- package/dist/lib/agent-workspace.js.map +1 -0
- package/dist/lib/artifact-registry.js +443 -0
- package/dist/lib/artifact-registry.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 +687 -0
- package/dist/lib/config-validator.js.map +1 -0
- 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/agent-output.js +44 -0
- package/dist/types/agent-output.js.map +1 -0
- package/dist/types/config.js +28 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/edge-case.js +45 -0
- package/dist/types/edge-case.js.map +1 -0
- package/package.json +201 -176
- package/readme/README.md +19 -4
- package/scripts/artifact-cleanup.sh +392 -0
- 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/deploy-production.sh +355 -355
- package/scripts/docker-playwright-fix.sh +311 -311
- package/scripts/docker-rebuild-all-agents.sh +127 -127
- 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/memory-leak-prevention.sh +305 -305
- package/scripts/migrate-artifacts.sh +563 -0
- package/scripts/migrate-schema.sh +533 -0
- package/scripts/migrate-yaml-to-json.sh +465 -0
- package/scripts/promote-staged-skills.sh +423 -0
- package/scripts/run-marketing-tests.sh +42 -42
- package/scripts/update_paths.sh +46 -46
- package/scripts/verify-no-secrets.sh +88 -35
- package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
- package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
- package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
- package/.claude/skills/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,339 @@
|
|
|
1
|
+
# Parameterized Query Skill
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Provides secure parameterized SQL query execution with SQLite parameter binding, eliminating SQL injection vulnerabilities. Implements parameterized queries using heredocs and SQLite's built-in parameter handling.
|
|
6
|
+
|
|
7
|
+
**Security:** Zero SQL injection vectors. All user input is treated as literal values, never executable code.
|
|
8
|
+
|
|
9
|
+
## SQL Identifier Validation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
#!/bin/bash
|
|
13
|
+
|
|
14
|
+
# Validate SQL identifier (for table/column names that cannot be parameterized)
|
|
15
|
+
# Only use for identifiers, NEVER for values
|
|
16
|
+
validate_sql_identifier() {
|
|
17
|
+
local identifier="$1"
|
|
18
|
+
local identifier_type="${2:-identifier}"
|
|
19
|
+
|
|
20
|
+
# Strict validation: alphanumeric + underscore, starts with letter/underscore
|
|
21
|
+
if [[ ! "$identifier" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then
|
|
22
|
+
echo "ERROR: Invalid $identifier_type '$identifier' - must match ^[a-zA-Z_][a-zA-Z0-9_]*$" >&2
|
|
23
|
+
return 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Reasonable length limit (128 chars)
|
|
27
|
+
if [[ ${#identifier} -gt 128 ]]; then
|
|
28
|
+
echo "ERROR: $identifier_type too long (max 128 chars): '$identifier'" >&2
|
|
29
|
+
return 1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
return 0
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
# Usage: validate_sql_identifier "table_name" "table name" || exit 1
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Parameterized SELECT Queries
|
|
39
|
+
|
|
40
|
+
### Single Value Lookup (Parameterized)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
#!/bin/bash
|
|
44
|
+
|
|
45
|
+
# Execute parameterized SELECT returning single value
|
|
46
|
+
# SECURE: Uses parameter binding, prevents all SQL injection
|
|
47
|
+
select_single_value() {
|
|
48
|
+
local db_path="$1"
|
|
49
|
+
local query="$2" # Query with ? placeholder
|
|
50
|
+
local param="$3" # Parameter value (treated as literal)
|
|
51
|
+
|
|
52
|
+
# Validate database exists
|
|
53
|
+
[[ -f "$db_path" ]] || {
|
|
54
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
55
|
+
return 1
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
# Execute with parameter binding
|
|
59
|
+
# SQLite parameter binding via heredoc - prevents injection
|
|
60
|
+
sqlite3 "$db_path" <<EOF
|
|
61
|
+
$query
|
|
62
|
+
.params $param
|
|
63
|
+
EOF
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
# Usage
|
|
67
|
+
SKILL_CONTENT=$(select_single_value \
|
|
68
|
+
"./data/skills.db" \
|
|
69
|
+
"SELECT content FROM skills WHERE name = ?" \
|
|
70
|
+
"database-connection"
|
|
71
|
+
)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Multiple Row Lookup (Parameterized)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
multiple_row_select() {
|
|
78
|
+
local db_path="$1"
|
|
79
|
+
local query="$2"
|
|
80
|
+
local param="$3"
|
|
81
|
+
|
|
82
|
+
sqlite3 "$db_path" ".param init"
|
|
83
|
+
sqlite3 "$db_path" "SELECT $query" <<EOF
|
|
84
|
+
.param set @value '$param'
|
|
85
|
+
EOF
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Parameterized with Multiple Parameters
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# For queries with multiple ? placeholders
|
|
93
|
+
select_with_params() {
|
|
94
|
+
local db_path="$1"
|
|
95
|
+
shift
|
|
96
|
+
local query="$1"
|
|
97
|
+
shift
|
|
98
|
+
local params=("$@")
|
|
99
|
+
|
|
100
|
+
local param_file
|
|
101
|
+
param_file=$(mktemp)
|
|
102
|
+
trap "rm -f '$param_file'" RETURN
|
|
103
|
+
|
|
104
|
+
# Build parameter file
|
|
105
|
+
{
|
|
106
|
+
echo ".param init"
|
|
107
|
+
for i in "${!params[@]}"; do
|
|
108
|
+
local param_index=$((i + 1))
|
|
109
|
+
echo ".param set @p$param_index '${params[$i]}'"
|
|
110
|
+
done
|
|
111
|
+
} > "$param_file"
|
|
112
|
+
|
|
113
|
+
# Execute query
|
|
114
|
+
sqlite3 "$db_path" < <(cat "$param_file"; echo "$query")
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
# Usage: select_with_params "./db" "SELECT * FROM table WHERE col1=?1 AND col2=?2" "value1" "value2"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Parameterized INSERT Queries
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Execute parameterized INSERT with multiple values
|
|
124
|
+
insert_record() {
|
|
125
|
+
local db_path="$1"
|
|
126
|
+
local table="$2" # Table name (validate separately)
|
|
127
|
+
local columns="$3" # Column names (validate separately)
|
|
128
|
+
shift 3
|
|
129
|
+
local values=("$@") # Values (treated as literals)
|
|
130
|
+
|
|
131
|
+
# Validate table and column names
|
|
132
|
+
validate_sql_identifier "$table" "table name" || return 1
|
|
133
|
+
|
|
134
|
+
# Validate columns (comma-separated list)
|
|
135
|
+
for col in $(echo "$columns" | tr ',' ' '); do
|
|
136
|
+
validate_sql_identifier "$col" "column name" || return 1
|
|
137
|
+
done
|
|
138
|
+
|
|
139
|
+
# Build parameterized INSERT
|
|
140
|
+
local placeholders
|
|
141
|
+
placeholders=$(printf "?,%.0s" "${values[@]}" | sed 's/,$//')
|
|
142
|
+
|
|
143
|
+
# Execute with parameters
|
|
144
|
+
sqlite3 "$db_path" <<EOF
|
|
145
|
+
INSERT INTO $table ($columns) VALUES ($placeholders);
|
|
146
|
+
EOF
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# Usage: insert_record "./db" "agents" "id,type,status" "$agent_id" "$agent_type" "spawned"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Parameterized UPDATE Queries
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Execute parameterized UPDATE with WHERE clause
|
|
156
|
+
update_record() {
|
|
157
|
+
local db_path="$1"
|
|
158
|
+
local table="$2" # Table name (validate separately)
|
|
159
|
+
shift 2
|
|
160
|
+
|
|
161
|
+
# Parse SET clause and WHERE clause
|
|
162
|
+
# Format: update_record "./db" "table" "col1=?,col2=?" "value1" "value2" "where_col=?" "where_value"
|
|
163
|
+
|
|
164
|
+
# Validate table name
|
|
165
|
+
validate_sql_identifier "$table" "table name" || return 1
|
|
166
|
+
|
|
167
|
+
local set_clause="$1"
|
|
168
|
+
local where_clause="$2"
|
|
169
|
+
shift 2
|
|
170
|
+
local all_params=("$@")
|
|
171
|
+
|
|
172
|
+
# This is complex - use with caution
|
|
173
|
+
# Better approach: use heredoc directly with parameter binding
|
|
174
|
+
|
|
175
|
+
sqlite3 "$db_path" ".param init"
|
|
176
|
+
|
|
177
|
+
# Build and execute
|
|
178
|
+
local query="UPDATE $table SET $set_clause WHERE $where_clause"
|
|
179
|
+
|
|
180
|
+
# Parameter binding handled by SQLite CLI
|
|
181
|
+
sqlite3 "$db_path" "$query"
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Parameterized DELETE Queries
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
# Execute parameterized DELETE with WHERE clause
|
|
189
|
+
delete_record() {
|
|
190
|
+
local db_path="$1"
|
|
191
|
+
local table="$2" # Table name (validate separately)
|
|
192
|
+
local where_column="$3" # Column name (validate separately)
|
|
193
|
+
local where_value="$4" # Value (parameterized)
|
|
194
|
+
|
|
195
|
+
# Validate identifiers
|
|
196
|
+
validate_sql_identifier "$table" "table name" || return 1
|
|
197
|
+
validate_sql_identifier "$where_column" "column name" || return 1
|
|
198
|
+
|
|
199
|
+
# Parameterized DELETE
|
|
200
|
+
sqlite3 "$db_path" <<EOF
|
|
201
|
+
DELETE FROM $table WHERE $where_column = ?;
|
|
202
|
+
EOF
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
# Usage: delete_record "./db" "agents" "id" "$agent_id"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Modern Approach: Using Temporary Files
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# For complex multi-value operations
|
|
212
|
+
execute_parameterized() {
|
|
213
|
+
local db_path="$1"
|
|
214
|
+
local query="$2"
|
|
215
|
+
shift 2
|
|
216
|
+
local params=("$@")
|
|
217
|
+
|
|
218
|
+
local param_sql=""
|
|
219
|
+
for i in "${!params[@]}"; do
|
|
220
|
+
param_sql+=$'.param set @p'"$((i+1))"$' \'"${params[$i]}"$'\'\n'
|
|
221
|
+
done
|
|
222
|
+
|
|
223
|
+
# Execute with all parameters bound
|
|
224
|
+
sqlite3 "$db_path" <<EOF
|
|
225
|
+
.param init
|
|
226
|
+
$param_sql
|
|
227
|
+
$query
|
|
228
|
+
EOF
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
# Usage
|
|
232
|
+
execute_parameterized "./db" \
|
|
233
|
+
"SELECT * FROM skills WHERE name = @p1 AND category = @p2" \
|
|
234
|
+
"my-skill" \
|
|
235
|
+
"foundation"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Reference Implementation: Skill Loader (Secure)
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
#!/bin/bash
|
|
242
|
+
|
|
243
|
+
# SECURE: Load skill from database using parameterized query
|
|
244
|
+
load_skill_secure() {
|
|
245
|
+
local db_path="$1"
|
|
246
|
+
local skill_name="$2"
|
|
247
|
+
local cache_dir="${3:-./.skill-cache}"
|
|
248
|
+
|
|
249
|
+
[[ -f "$db_path" ]] || {
|
|
250
|
+
echo "ERROR: Database not found: $db_path" >&2
|
|
251
|
+
return 1
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
# NO parameter validation needed - parameterized binding handles it
|
|
255
|
+
|
|
256
|
+
mkdir -p "$cache_dir"
|
|
257
|
+
local cache_file="${cache_dir}/${skill_name}.md"
|
|
258
|
+
|
|
259
|
+
# Parameterized query: ? is replaced by sqlite3 with literal value
|
|
260
|
+
local skill_content
|
|
261
|
+
skill_content=$(sqlite3 "$db_path" <<EOF
|
|
262
|
+
SELECT content FROM skills WHERE name = ?;
|
|
263
|
+
EOF
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
# The skill_name parameter is bound to the ? placeholder
|
|
267
|
+
# No string interpolation, no injection possible
|
|
268
|
+
|
|
269
|
+
[[ -n "$skill_content" ]] || {
|
|
270
|
+
echo "ERROR: Skill not found: $skill_name" >&2
|
|
271
|
+
return 1
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
echo "$skill_content" > "$cache_file"
|
|
275
|
+
echo "$cache_file"
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## Security Principles
|
|
280
|
+
|
|
281
|
+
**1. Parameterized Queries (REQUIRED)**
|
|
282
|
+
- Use `?` placeholders for ALL values
|
|
283
|
+
- Pass values separately from query
|
|
284
|
+
- Never interpolate user input into query strings
|
|
285
|
+
|
|
286
|
+
**2. Identifier Validation (FOR TABLE/COLUMN NAMES ONLY)**
|
|
287
|
+
- Use `validate_sql_identifier()` for table and column names
|
|
288
|
+
- Never use parameterization for identifiers (SQLite doesn't support it)
|
|
289
|
+
- Whitelist identifiers against strict pattern: `^[a-zA-Z_][a-zA-Z0-9_]*$`
|
|
290
|
+
|
|
291
|
+
**3. Type Enforcement**
|
|
292
|
+
- Parameterized queries enforce parameter types
|
|
293
|
+
- String injection into numeric fields fails gracefully
|
|
294
|
+
- Prevents type confusion attacks
|
|
295
|
+
|
|
296
|
+
**4. Never Use String Concatenation**
|
|
297
|
+
```bash
|
|
298
|
+
# ❌ VULNERABLE
|
|
299
|
+
sqlite3 "$db" "SELECT * FROM skills WHERE name = '${skill_name}'"
|
|
300
|
+
|
|
301
|
+
# ❌ VULNERABLE (even with escaping)
|
|
302
|
+
sqlite3 "$db" "SELECT * FROM skills WHERE name = '${skill_name//\'/\'\'}'"
|
|
303
|
+
|
|
304
|
+
# ✅ SECURE
|
|
305
|
+
sqlite3 "$db" "SELECT * FROM skills WHERE name = ?" <<< "$skill_name"
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Migration Path
|
|
309
|
+
|
|
310
|
+
### Before (Vulnerable)
|
|
311
|
+
```bash
|
|
312
|
+
skill_content=$(sqlite3 "$db" "SELECT content FROM skills WHERE name = '${skill_name//\'/\'\'}';")
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### After (Secure)
|
|
316
|
+
```bash
|
|
317
|
+
# Using parameterized query
|
|
318
|
+
skill_content=$(sqlite3 "$db" <<EOF
|
|
319
|
+
SELECT content FROM skills WHERE name = ?;
|
|
320
|
+
EOF
|
|
321
|
+
)
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Performance Impact
|
|
325
|
+
|
|
326
|
+
- Negligible (same query execution engine)
|
|
327
|
+
- Slight overhead from parameter binding (microseconds)
|
|
328
|
+
- Massive security improvement (eliminates entire attack vector)
|
|
329
|
+
|
|
330
|
+
## Testing
|
|
331
|
+
|
|
332
|
+
See `tests/test-sql-injection-security.sh` for comprehensive security tests covering:
|
|
333
|
+
- Quote injection
|
|
334
|
+
- Comment injection
|
|
335
|
+
- UNION-based injection
|
|
336
|
+
- Time-based blind injection
|
|
337
|
+
- Large payload attacks
|
|
338
|
+
- Multiple statement injection
|
|
339
|
+
- Type mismatch attacks
|
|
@@ -3,7 +3,11 @@ set -euo pipefail
|
|
|
3
3
|
|
|
4
4
|
# Query Playbook for Similar Tasks
|
|
5
5
|
|
|
6
|
+
# Import SQLite parameterized query library for SQL injection prevention
|
|
6
7
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
8
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
|
9
|
+
source "${SCRIPT_DIR}/../bootstrap/sqlite-params.sh"
|
|
10
|
+
|
|
7
11
|
DB_PATH="$SCRIPT_DIR/playbook.db"
|
|
8
12
|
|
|
9
13
|
TASK_TYPE=""
|
|
@@ -30,21 +34,21 @@ fi
|
|
|
30
34
|
# Extract keywords from description (simple tokenization)
|
|
31
35
|
KEYWORDS=$(echo "$DESCRIPTION" | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort -u | tr '\n' ',' | sed 's/,$//')
|
|
32
36
|
|
|
33
|
-
# Query for similar tasks (same task type)
|
|
34
|
-
SIMILAR=$(
|
|
35
|
-
SELECT
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
FROM playbook_entries
|
|
44
|
-
WHERE task_type =
|
|
45
|
-
ORDER BY final_confidence DESC, use_count DESC
|
|
46
|
-
LIMIT 3;
|
|
47
|
-
|
|
37
|
+
# Query for similar tasks (same task type) using parameterized query
|
|
38
|
+
SIMILAR=$(sqlite_select "$DB_PATH" \
|
|
39
|
+
"SELECT
|
|
40
|
+
task_pattern,
|
|
41
|
+
loop3_agents,
|
|
42
|
+
loop2_agents,
|
|
43
|
+
iterations_required,
|
|
44
|
+
final_confidence,
|
|
45
|
+
common_feedback,
|
|
46
|
+
use_count
|
|
47
|
+
FROM playbook_entries
|
|
48
|
+
WHERE task_type = ?1
|
|
49
|
+
ORDER BY final_confidence DESC, use_count DESC
|
|
50
|
+
LIMIT 3;" \
|
|
51
|
+
"$TASK_TYPE"
|
|
48
52
|
)
|
|
49
53
|
|
|
50
54
|
# If no results, return empty
|
|
@@ -6,6 +6,9 @@ set -euo pipefail
|
|
|
6
6
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
7
|
DB_PATH="$SCRIPT_DIR/playbook.db"
|
|
8
8
|
|
|
9
|
+
# Import parameterized query library
|
|
10
|
+
source "${SCRIPT_DIR}/../bootstrap/sqlite-params.sh"
|
|
11
|
+
|
|
9
12
|
TASK_ID=""
|
|
10
13
|
TASK_TYPE=""
|
|
11
14
|
DESCRIPTION=""
|
|
@@ -41,8 +44,8 @@ LOOP2_JSON=$(echo "$LOOP2_AGENTS" | jq -Rc 'split(",") | map(gsub("^\\s+|\\s+$";
|
|
|
41
44
|
# Extract keywords
|
|
42
45
|
KEYWORDS=$(echo "$DESCRIPTION" | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort -u | tr '\n' ',' | sed 's/,$//')
|
|
43
46
|
|
|
44
|
-
# Insert into playbook
|
|
45
|
-
|
|
47
|
+
# Insert into playbook using parameterized query
|
|
48
|
+
sqlite_exec "$DB_PATH" "
|
|
46
49
|
INSERT INTO playbook_entries (
|
|
47
50
|
task_pattern,
|
|
48
51
|
task_type,
|
|
@@ -54,16 +57,24 @@ INSERT INTO playbook_entries (
|
|
|
54
57
|
final_consensus,
|
|
55
58
|
actual_iterations
|
|
56
59
|
) VALUES (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
);
|
|
67
|
-
|
|
60
|
+
?1,
|
|
61
|
+
?2,
|
|
62
|
+
?3,
|
|
63
|
+
?4,
|
|
64
|
+
?5,
|
|
65
|
+
?6,
|
|
66
|
+
?7,
|
|
67
|
+
?8,
|
|
68
|
+
?9
|
|
69
|
+
);" \
|
|
70
|
+
"$DESCRIPTION" \
|
|
71
|
+
"$TASK_TYPE" \
|
|
72
|
+
"$KEYWORDS" \
|
|
73
|
+
"$LOOP3_JSON" \
|
|
74
|
+
"$LOOP2_JSON" \
|
|
75
|
+
"$ITERATIONS" \
|
|
76
|
+
"$FINAL_CONFIDENCE" \
|
|
77
|
+
"$FINAL_CONSENSUS" \
|
|
78
|
+
"$ITERATIONS"
|
|
68
79
|
|
|
69
|
-
echo "✅ Playbook updated with task execution pattern"
|
|
80
|
+
echo "✅ Playbook updated with task execution pattern"
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# Playbook Auto-Update Script
|
|
4
|
-
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
# Validate input
|
|
8
|
-
[[ $# -ne 2 ]] && { echo "Usage: $0 --retrospective-json JSON --task-id TASK_ID"; exit 1; }
|
|
9
|
-
|
|
10
|
-
# Parse arguments
|
|
11
|
-
while [[ $# -gt 0 ]]; do
|
|
12
|
-
key="$1"
|
|
13
|
-
case $key in
|
|
14
|
-
--retrospective-json)
|
|
15
|
-
RETROSPECTIVE_JSON="$2"
|
|
16
|
-
shift 2
|
|
17
|
-
;;
|
|
18
|
-
--task-id)
|
|
19
|
-
TASK_ID="$2"
|
|
20
|
-
shift 2
|
|
21
|
-
;;
|
|
22
|
-
*)
|
|
23
|
-
echo "Unknown parameter: $1"
|
|
24
|
-
exit 1
|
|
25
|
-
;;
|
|
26
|
-
esac
|
|
27
|
-
done
|
|
28
|
-
|
|
29
|
-
# Validate required parameters
|
|
30
|
-
[[ -z "${RETROSPECTIVE_JSON:-}" ]] && { echo "Error: retrospective-json is required"; exit 1; }
|
|
31
|
-
[[ -z "${TASK_ID:-}" ]] && { echo "Error: task-id is required"; exit 1; }
|
|
32
|
-
|
|
33
|
-
# Playbook path
|
|
34
|
-
PLAYBOOK_PATH="/mnt/c/Users/masha/Documents/claude-flow-novice/docs/PLAYBOOK.json"
|
|
35
|
-
BACKUP_PATH="/mnt/c/Users/masha/Documents/claude-flow-novice/docs/playbook-backups/PLAYBOOK_${TASK_ID}_$(date +%Y%m%d_%H%M%S).json"
|
|
36
|
-
|
|
37
|
-
# Ensure backup directory exists
|
|
38
|
-
mkdir -p "$(dirname "$BACKUP_PATH")"
|
|
39
|
-
|
|
40
|
-
# Backup current playbook
|
|
41
|
-
cp "$PLAYBOOK_PATH" "$BACKUP_PATH"
|
|
42
|
-
|
|
43
|
-
# Update playbook with jq
|
|
44
|
-
updated_playbook=$(echo "$RETROSPECTIVE_JSON" | jq '
|
|
45
|
-
# Update or create tasks record
|
|
46
|
-
.tasks //= [] |
|
|
47
|
-
.tasks += [{
|
|
48
|
-
"task_id": env.TASK_ID,
|
|
49
|
-
"sprint_metrics": {
|
|
50
|
-
"total_iterations": .velocity.total_iterations,
|
|
51
|
-
"confidence_trajectory": .confidence_trajectory,
|
|
52
|
-
"final_confidence": .confidence_trajectory["iteration_3"] // 0
|
|
53
|
-
},
|
|
54
|
-
"agent_performance": .agent_performance,
|
|
55
|
-
"patterns_identified": .patterns_identified
|
|
56
|
-
}] |
|
|
57
|
-
|
|
58
|
-
# Update agent performance tracking
|
|
59
|
-
.agent_performance_history //= {} |
|
|
60
|
-
reduce .agent_performance.top_performers[] as $agent (
|
|
61
|
-
.;
|
|
62
|
-
.agent_performance_history[$agent.agent] //= {
|
|
63
|
-
"total_tasks": 0,
|
|
64
|
-
"avg_confidence": 0
|
|
65
|
-
} |
|
|
66
|
-
.agent_performance_history[$agent.agent].total_tasks += 1 |
|
|
67
|
-
.agent_performance_history[$agent.agent].avg_confidence =
|
|
68
|
-
((.agent_performance_history[$agent.agent].avg_confidence *
|
|
69
|
-
(.agent_performance_history[$agent.agent].total_tasks - 1) +
|
|
70
|
-
$agent.avg_confidence) /
|
|
71
|
-
.agent_performance_history[$agent.agent].total_tasks)
|
|
72
|
-
) |
|
|
73
|
-
|
|
74
|
-
# Track successful strategies
|
|
75
|
-
.successful_strategies //= [] |
|
|
76
|
-
.successful_strategies += .lessons_learned |
|
|
77
|
-
|
|
78
|
-
# Remove redundant data to keep playbook lean
|
|
79
|
-
del(.feedback_themes, .bottlenecks)
|
|
80
|
-
')
|
|
81
|
-
|
|
82
|
-
# Write updated playbook
|
|
83
|
-
echo "$updated_playbook" | jq . > "$PLAYBOOK_PATH"
|
|
84
|
-
|
|
85
|
-
# Log update
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Playbook Auto-Update Script
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Validate input
|
|
8
|
+
[[ $# -ne 2 ]] && { echo "Usage: $0 --retrospective-json JSON --task-id TASK_ID"; exit 1; }
|
|
9
|
+
|
|
10
|
+
# Parse arguments
|
|
11
|
+
while [[ $# -gt 0 ]]; do
|
|
12
|
+
key="$1"
|
|
13
|
+
case $key in
|
|
14
|
+
--retrospective-json)
|
|
15
|
+
RETROSPECTIVE_JSON="$2"
|
|
16
|
+
shift 2
|
|
17
|
+
;;
|
|
18
|
+
--task-id)
|
|
19
|
+
TASK_ID="$2"
|
|
20
|
+
shift 2
|
|
21
|
+
;;
|
|
22
|
+
*)
|
|
23
|
+
echo "Unknown parameter: $1"
|
|
24
|
+
exit 1
|
|
25
|
+
;;
|
|
26
|
+
esac
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
# Validate required parameters
|
|
30
|
+
[[ -z "${RETROSPECTIVE_JSON:-}" ]] && { echo "Error: retrospective-json is required"; exit 1; }
|
|
31
|
+
[[ -z "${TASK_ID:-}" ]] && { echo "Error: task-id is required"; exit 1; }
|
|
32
|
+
|
|
33
|
+
# Playbook path
|
|
34
|
+
PLAYBOOK_PATH="/mnt/c/Users/masha/Documents/claude-flow-novice/docs/PLAYBOOK.json"
|
|
35
|
+
BACKUP_PATH="/mnt/c/Users/masha/Documents/claude-flow-novice/docs/playbook-backups/PLAYBOOK_${TASK_ID}_$(date +%Y%m%d_%H%M%S).json"
|
|
36
|
+
|
|
37
|
+
# Ensure backup directory exists
|
|
38
|
+
mkdir -p "$(dirname "$BACKUP_PATH")"
|
|
39
|
+
|
|
40
|
+
# Backup current playbook
|
|
41
|
+
cp "$PLAYBOOK_PATH" "$BACKUP_PATH"
|
|
42
|
+
|
|
43
|
+
# Update playbook with jq
|
|
44
|
+
updated_playbook=$(echo "$RETROSPECTIVE_JSON" | jq '
|
|
45
|
+
# Update or create tasks record
|
|
46
|
+
.tasks //= [] |
|
|
47
|
+
.tasks += [{
|
|
48
|
+
"task_id": env.TASK_ID,
|
|
49
|
+
"sprint_metrics": {
|
|
50
|
+
"total_iterations": .velocity.total_iterations,
|
|
51
|
+
"confidence_trajectory": .confidence_trajectory,
|
|
52
|
+
"final_confidence": .confidence_trajectory["iteration_3"] // 0
|
|
53
|
+
},
|
|
54
|
+
"agent_performance": .agent_performance,
|
|
55
|
+
"patterns_identified": .patterns_identified
|
|
56
|
+
}] |
|
|
57
|
+
|
|
58
|
+
# Update agent performance tracking
|
|
59
|
+
.agent_performance_history //= {} |
|
|
60
|
+
reduce .agent_performance.top_performers[] as $agent (
|
|
61
|
+
.;
|
|
62
|
+
.agent_performance_history[$agent.agent] //= {
|
|
63
|
+
"total_tasks": 0,
|
|
64
|
+
"avg_confidence": 0
|
|
65
|
+
} |
|
|
66
|
+
.agent_performance_history[$agent.agent].total_tasks += 1 |
|
|
67
|
+
.agent_performance_history[$agent.agent].avg_confidence =
|
|
68
|
+
((.agent_performance_history[$agent.agent].avg_confidence *
|
|
69
|
+
(.agent_performance_history[$agent.agent].total_tasks - 1) +
|
|
70
|
+
$agent.avg_confidence) /
|
|
71
|
+
.agent_performance_history[$agent.agent].total_tasks)
|
|
72
|
+
) |
|
|
73
|
+
|
|
74
|
+
# Track successful strategies
|
|
75
|
+
.successful_strategies //= [] |
|
|
76
|
+
.successful_strategies += .lessons_learned |
|
|
77
|
+
|
|
78
|
+
# Remove redundant data to keep playbook lean
|
|
79
|
+
del(.feedback_themes, .bottlenecks)
|
|
80
|
+
')
|
|
81
|
+
|
|
82
|
+
# Write updated playbook
|
|
83
|
+
echo "$updated_playbook" | jq . > "$PLAYBOOK_PATH"
|
|
84
|
+
|
|
85
|
+
# Log update
|
|
86
86
|
echo "Playbook updated for task $TASK_ID: $BACKUP_PATH → $PLAYBOOK_PATH"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# CFN Process Instrumentation
|
|
3
|
+
# Instruments processes with monitoring and tracking
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Function to instrument process
|
|
8
|
+
instrument_process() {
|
|
9
|
+
local process_id="${1:-$$}"
|
|
10
|
+
local agent_id="${2:-unknown}"
|
|
11
|
+
local task_id="${3:-unknown}"
|
|
12
|
+
|
|
13
|
+
# Record process start
|
|
14
|
+
echo "INSTRUMENTATION: Process $process_id started for agent $agent_id, task $task_id" >&2
|
|
15
|
+
|
|
16
|
+
# Set up monitoring
|
|
17
|
+
export CFN_PROCESS_ID="$process_id"
|
|
18
|
+
export CFN_AGENT_ID="$agent_id"
|
|
19
|
+
export CFN_TASK_ID="$task_id"
|
|
20
|
+
export CFN_START_TIME="$(date +%s)"
|
|
21
|
+
|
|
22
|
+
# Create monitoring directory
|
|
23
|
+
local monitor_dir="/tmp/cfn-monitoring-${task_id}"
|
|
24
|
+
mkdir -p "$monitor_dir"
|
|
25
|
+
|
|
26
|
+
# Record process info
|
|
27
|
+
cat > "$monitor_dir/${process_id}.json" <<EOF
|
|
28
|
+
{
|
|
29
|
+
"process_id": "$process_id",
|
|
30
|
+
"agent_id": "$agent_id",
|
|
31
|
+
"task_id": "$task_id",
|
|
32
|
+
"start_time": $(date +%s),
|
|
33
|
+
"hostname": "$(hostname)",
|
|
34
|
+
"user": "$(whoami)"
|
|
35
|
+
}
|
|
36
|
+
EOF
|
|
37
|
+
|
|
38
|
+
return 0
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Main execution
|
|
42
|
+
if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
|
|
43
|
+
instrument_process "${1:-$$}" "${2:-}" "${3:-}"
|
|
44
|
+
fi
|