claude-flow-novice 2.15.5 → 2.15.7
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/.gs-api-quota.json +16 -0
- package/.claude/cfn-extras/.gs-progress-state.json +22 -0
- package/.claude/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
- package/.claude/cfn-extras/agents/google-sheets/README.md +114 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
- package/.claude/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
- package/.claude/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
- package/.claude/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
- package/.claude/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
- package/.claude/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
- package/.claude/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
- package/.claude/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
- package/.claude/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
- package/.claude/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
- package/.claude/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
- package/.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
- package/.claude/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
- package/.claude/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
- package/.claude/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
- package/.claude/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
- package/.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
- package/.claude/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
- package/.claude/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
- package/.claude/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
- package/.claude/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
- package/.claude/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
- package/.claude/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
- package/.claude/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
- package/.claude/commands/cfn-context.md +10 -0
- package/.claude/commands/cfn-loop-cli.md +36 -15
- package/.claude/commands/google-sheets/google-sheets-loop.md +289 -0
- package/.claude/skills/cfn-agent-selector/SKILL.md +143 -0
- package/.claude/skills/cfn-agent-selector/select-agents.sh +94 -0
- package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
- package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
- package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
- package/.claude/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
- package/.claude/skills/cfn-docker-redis-coordination/README.md +294 -0
- package/.claude/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
- package/.claude/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
- package/.claude/skills/cfn-docker-redis-coordination/package.json +40 -0
- package/.claude/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
- package/.claude/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
- package/.claude/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
- package/.claude/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
- package/.claude/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
- package/.claude/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
- package/.claude/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
- package/.claude/skills/cfn-loop-orchestration/README.md +149 -41
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +39 -577
- package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +49 -270
- package/.claude/skills/cfn-loop-orchestration/jest.config.js +67 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +91 -8
- package/.claude/skills/cfn-loop-orchestration/package-lock.json +5470 -0
- package/.claude/skills/cfn-loop-orchestration/package.json +49 -0
- package/.claude/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
- package/.claude/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/consensus.ts +87 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/gate-check.ts +115 -0
- package/.claude/skills/cfn-loop-orchestration/src/helpers/parse-test-results.ts +372 -0
- package/.claude/skills/cfn-loop-orchestration/src/index.ts +14 -0
- package/.claude/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
- package/.claude/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
- package/.claude/skills/cfn-loop-orchestration/src/types.ts +188 -0
- package/.claude/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
- package/.claude/skills/cfn-loop-orchestration/tests/consensus.test.ts +142 -0
- package/.claude/skills/cfn-loop-orchestration/tests/deliverable-verifier.test.ts +199 -0
- package/.claude/skills/cfn-loop-orchestration/tests/gate-check.test.ts +325 -0
- package/.claude/skills/cfn-loop-orchestration/tests/iteration-manager.test.ts +132 -0
- package/.claude/skills/cfn-loop-orchestration/tests/parse-test-results.test.ts +382 -0
- package/.claude/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
- package/.claude/skills/cfn-loop-orchestration/tests/timeout-calculator.test.ts +118 -0
- package/.claude/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
- package/.claude/skills/cfn-loop-orchestration/tsconfig.json +54 -0
- package/.claude/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
- package/.claude/skills/cfn-redis-coordination/coverage/clover.xml +1447 -0
- package/.claude/skills/cfn-redis-coordination/coverage/coverage-final.json +13 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/agent-logger.ts.html +1423 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/agent-recovery.ts.html +1447 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/base.css +224 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/block-navigation.js +87 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/completion-reporter.ts.html +1273 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/context-manager.ts.html +1066 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/favicon.png +0 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/index.html +281 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/mode-detector.ts.html +550 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/prettify.css +1 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/prettify.js +2 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/redis-client.ts.html +2047 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/result-collector.ts.html +1396 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/sorter.js +210 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/swarm-manager.ts.html +1567 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/task-analyzer.ts.html +1297 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/task-executor.ts.html +1354 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/types.ts.html +790 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov-report/waiting-coordinator.ts.html +1846 -0
- package/.claude/skills/cfn-redis-coordination/coverage/lcov.info +2650 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
- package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
- package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
- package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
- package/.claude/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
- package/.claude/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
- package/.claude/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/index.js +114 -0
- package/.claude/skills/cfn-redis-coordination/dist/index.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
- package/.claude/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
- package/.claude/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
- package/.claude/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
- package/.claude/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
- package/.claude/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
- package/.claude/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
- package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
- package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
- package/.claude/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
- package/.claude/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/types.js +81 -0
- package/.claude/skills/cfn-redis-coordination/dist/types.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
- package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
- package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
- package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
- package/.claude/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
- package/.claude/skills/cfn-redis-coordination/jest.config.js +23 -0
- package/.claude/skills/cfn-redis-coordination/package-lock.json +5272 -0
- package/.claude/skills/cfn-redis-coordination/package.json +45 -0
- package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
- package/.claude/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
- package/.claude/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
- package/.claude/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
- package/.claude/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
- package/.claude/skills/cfn-redis-coordination/src/index.ts +82 -0
- package/.claude/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
- package/.claude/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
- package/.claude/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
- package/.claude/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
- package/.claude/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
- package/.claude/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
- package/.claude/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
- package/.claude/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
- package/.claude/skills/cfn-redis-coordination/src/types.ts +235 -0
- package/.claude/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
- package/.claude/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
- package/.claude/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
- package/.claude/skills/cfn-redis-coordination/test-redis-check.js +84 -0
- package/.claude/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
- package/.claude/skills/cfn-redis-coordination/tests/coordination.test.ts +788 -0
- package/.claude/skills/cfn-redis-coordination/tsconfig.json +31 -0
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +13 -72
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +172 -62
- package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +465 -508
- package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +733 -743
- package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +13 -79
- package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +13 -18
- package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +13 -18
- package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +13 -18
- package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +15 -17
- package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +15 -17
- package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +15 -14
- package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +15 -17
- package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +15 -17
- package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +15 -17
- package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +23 -30
- package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +13 -18
- package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +13 -18
- package/claude-assets/agents/cfn-dev-team/reviewers/code-reviewer.md +312 -317
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +23 -20
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +23 -20
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +23 -20
- package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +23 -20
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +16 -21
- package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +15 -20
- package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +718 -737
- package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +817 -828
- package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +15 -20
- package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +8 -9
- package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +668 -684
- package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +15 -20
- package/claude-assets/agents/cfn-dev-team/testers/tester.md +248 -253
- package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +13 -18
- package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +13 -18
- package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +13 -18
- package/claude-assets/agents/custom/cfn-redis-operations.md +530 -0
- package/claude-assets/agents/custom/cfn-system-expert.md +77 -0
- package/claude-assets/cfn-extras/.gs-api-quota.json +16 -0
- package/claude-assets/cfn-extras/.gs-progress-state.json +22 -0
- package/claude-assets/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
- package/claude-assets/cfn-extras/agents/google-sheets/README.md +114 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
- package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
- package/claude-assets/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
- package/claude-assets/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
- package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
- package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
- package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
- package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
- package/claude-assets/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
- package/claude-assets/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
- package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
- package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
- package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
- package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
- package/claude-assets/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
- package/claude-assets/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
- package/claude-assets/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
- package/claude-assets/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
- package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
- package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
- package/claude-assets/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
- package/claude-assets/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
- package/claude-assets/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
- package/claude-assets/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
- package/claude-assets/commands/cfn-context.md +10 -0
- package/claude-assets/commands/cfn-loop-cli.md +36 -15
- package/claude-assets/commands/google-sheets/google-sheets-loop.md +289 -0
- package/claude-assets/hooks/cfn-pre-execution/SESSION_START_README.md +87 -0
- package/claude-assets/hooks/cfn-pre-execution/TEST_SESSION_START.md +128 -0
- package/claude-assets/hooks/cfn-pre-execution/session-start-context.sh +111 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/INTEGRATION_EXAMPLE.md +209 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/README.md +130 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md +243 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/agent-mappings.json +142 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh +173 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh +71 -0
- package/claude-assets/skills/cfn-agent-selection-with-fallback/test-agent-selection.sh +282 -0
- package/claude-assets/skills/cfn-agent-selector/SKILL.md +143 -0
- package/claude-assets/skills/cfn-agent-selector/select-agents.sh +94 -0
- package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
- package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
- package/claude-assets/skills/cfn-docker-coordination/.eslintrc.json +33 -0
- package/claude-assets/skills/cfn-docker-coordination/README.md +349 -0
- package/claude-assets/skills/cfn-docker-coordination/docker-helpers.sh +433 -0
- package/claude-assets/skills/cfn-docker-coordination/jest.config.js +25 -0
- package/claude-assets/skills/cfn-docker-coordination/package-lock.json +6827 -0
- package/claude-assets/skills/cfn-docker-coordination/package.json +38 -0
- package/claude-assets/skills/cfn-docker-coordination/src/agent-container.ts +471 -0
- package/claude-assets/skills/cfn-docker-coordination/src/docker-client.ts +483 -0
- package/claude-assets/skills/cfn-docker-coordination/src/health-checker.ts +418 -0
- package/claude-assets/skills/cfn-docker-coordination/src/index.ts +45 -0
- package/claude-assets/skills/cfn-docker-coordination/src/network-manager.ts +377 -0
- package/claude-assets/skills/cfn-docker-coordination/src/types.ts +412 -0
- package/claude-assets/skills/cfn-docker-coordination/src/volume-manager.ts +389 -0
- package/claude-assets/skills/cfn-docker-coordination/tests/agent-container.test.ts +379 -0
- package/claude-assets/skills/cfn-docker-coordination/tests/docker-client.test.ts +345 -0
- package/claude-assets/skills/cfn-docker-coordination/tests/health-checker.test.ts +535 -0
- package/claude-assets/skills/cfn-docker-coordination/tests/integration.test.ts +193 -0
- package/claude-assets/skills/cfn-docker-coordination/tests/network-manager.test.ts +352 -0
- package/claude-assets/skills/cfn-docker-coordination/tests/setup.ts +36 -0
- package/claude-assets/skills/cfn-docker-coordination/tsconfig.json +29 -0
- package/claude-assets/skills/cfn-docker-logging/INTEGRATION.md +268 -0
- package/claude-assets/skills/cfn-docker-logging/SAMPLE_OUTPUTS.md +237 -0
- package/claude-assets/skills/cfn-docker-logging/SKILL.md +442 -0
- package/claude-assets/skills/cfn-docker-logging/capture-container-logs.sh +120 -0
- package/claude-assets/skills/cfn-docker-logging/enable-logging.sh +430 -0
- package/claude-assets/skills/cfn-docker-logging/init-hybrid-logging.sh +210 -0
- package/claude-assets/skills/cfn-docker-logging/queries/analytics-summary.sh +87 -0
- package/claude-assets/skills/cfn-docker-logging/queries/query-agent-timeline.sh +51 -0
- package/claude-assets/skills/cfn-docker-logging/queries/query-consensus-history.sh +56 -0
- package/claude-assets/skills/cfn-docker-logging/queries/query-coordination-timeline.sh +39 -0
- package/claude-assets/skills/cfn-docker-logging/queries/query-failed-containers.sh +40 -0
- package/claude-assets/skills/cfn-docker-logging/queries/query-gate-checks.sh +39 -0
- package/claude-assets/skills/cfn-docker-logging/schema.sql +111 -0
- package/claude-assets/skills/cfn-docker-logging/sqlite-helpers.sh +240 -0
- package/claude-assets/skills/cfn-docker-logging/test-hybrid-logging.sh +331 -0
- package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
- package/claude-assets/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/README.md +294 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/package.json +40 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
- package/claude-assets/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
- package/claude-assets/skills/cfn-error-logging/.eslintrc.json +57 -0
- package/claude-assets/skills/cfn-error-logging/.prettierrc.json +10 -0
- package/claude-assets/skills/cfn-error-logging/MIGRATION_SUMMARY.md +485 -0
- package/claude-assets/skills/cfn-error-logging/package.json +47 -0
- package/claude-assets/skills/cfn-error-logging/src/error-logger.ts +1042 -0
- package/claude-assets/skills/cfn-error-logging/src/index.ts +12 -0
- package/claude-assets/skills/cfn-error-logging/src/types.ts +456 -0
- package/claude-assets/skills/cfn-error-logging/tests/error-logger.test.ts +1302 -0
- package/claude-assets/skills/cfn-error-logging/tsconfig.json +38 -0
- package/claude-assets/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
- package/claude-assets/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
- package/claude-assets/skills/cfn-loop-orchestration/README.md +149 -41
- package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +39 -577
- package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +49 -270
- package/claude-assets/skills/cfn-loop-orchestration/jest.config.js +67 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
- package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +91 -8
- package/claude-assets/skills/cfn-loop-orchestration/package-lock.json +5470 -0
- package/claude-assets/skills/cfn-loop-orchestration/package.json +49 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/gate-check.ts +115 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/helpers/parse-test-results.ts +372 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/index.ts +14 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/types.ts +188 -0
- package/claude-assets/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/consensus.test.ts +142 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/deliverable-verifier.test.ts +199 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/gate-check.test.ts +325 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/iteration-manager.test.ts +132 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/parse-test-results.test.ts +382 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/timeout-calculator.test.ts +118 -0
- package/claude-assets/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
- package/claude-assets/skills/cfn-loop-orchestration/tsconfig.json +54 -0
- package/claude-assets/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/clover.xml +1447 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/coverage-final.json +13 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/agent-logger.ts.html +1423 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/agent-recovery.ts.html +1447 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/base.css +224 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/block-navigation.js +87 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/completion-reporter.ts.html +1273 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/context-manager.ts.html +1066 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/favicon.png +0 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/index.html +281 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/mode-detector.ts.html +550 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/prettify.css +1 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/prettify.js +2 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/redis-client.ts.html +2047 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/result-collector.ts.html +1396 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/sorter.js +210 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/swarm-manager.ts.html +1567 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/task-analyzer.ts.html +1297 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/task-executor.ts.html +1354 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/types.ts.html +790 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov-report/waiting-coordinator.ts.html +1846 -0
- package/claude-assets/skills/cfn-redis-coordination/coverage/lcov.info +2650 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/index.js +114 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/index.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/types.js +81 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/types.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
- package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
- package/claude-assets/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
- package/claude-assets/skills/cfn-redis-coordination/jest.config.js +23 -0
- package/claude-assets/skills/cfn-redis-coordination/package-lock.json +5272 -0
- package/claude-assets/skills/cfn-redis-coordination/package.json +45 -0
- package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
- package/claude-assets/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
- package/claude-assets/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
- package/claude-assets/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
- package/claude-assets/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
- package/claude-assets/skills/cfn-redis-coordination/src/index.ts +82 -0
- package/claude-assets/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
- package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
- package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
- package/claude-assets/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
- package/claude-assets/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
- package/claude-assets/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
- package/claude-assets/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
- package/claude-assets/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
- package/claude-assets/skills/cfn-redis-coordination/src/types.ts +235 -0
- package/claude-assets/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
- package/claude-assets/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
- package/claude-assets/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
- package/claude-assets/skills/cfn-redis-coordination/test-redis-check.js +84 -0
- package/claude-assets/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
- package/claude-assets/skills/cfn-redis-coordination/tests/coordination.test.ts +788 -0
- package/claude-assets/skills/cfn-redis-coordination/tsconfig.json +31 -0
- package/claude-assets/skills/cfn-skill-propagation/README.md +233 -0
- package/claude-assets/skills/cfn-skill-propagation/package-lock.json +5174 -0
- package/claude-assets/skills/cfn-skill-propagation/package.json +52 -0
- package/claude-assets/skills/cfn-skill-propagation/propagate-skill-update.sh +32 -0
- package/claude-assets/skills/cfn-skill-propagation/src/cli.ts +75 -0
- package/claude-assets/skills/cfn-skill-propagation/src/database-adapter.ts +239 -0
- package/claude-assets/skills/cfn-skill-propagation/src/file-system-adapter.ts +113 -0
- package/claude-assets/skills/cfn-skill-propagation/src/index.ts +72 -0
- package/claude-assets/skills/cfn-skill-propagation/src/logger.ts +43 -0
- package/claude-assets/skills/cfn-skill-propagation/src/metadata-parser.ts +154 -0
- package/claude-assets/skills/cfn-skill-propagation/src/skill-propagator.ts +274 -0
- package/claude-assets/skills/cfn-skill-propagation/src/skill-validator.ts +179 -0
- package/claude-assets/skills/cfn-skill-propagation/src/types.ts +143 -0
- package/claude-assets/skills/cfn-skill-propagation/src/version-manager.ts +118 -0
- package/claude-assets/skills/cfn-skill-propagation/tests/file-system-adapter.test.ts +91 -0
- package/claude-assets/skills/cfn-skill-propagation/tests/metadata-parser.test.ts +176 -0
- package/claude-assets/skills/cfn-skill-propagation/tests/skill-propagator.test.ts +209 -0
- package/claude-assets/skills/cfn-skill-propagation/tests/skill-validator.test.ts +203 -0
- package/claude-assets/skills/cfn-skill-propagation/tests/version-manager.test.ts +115 -0
- package/claude-assets/skills/cfn-skill-propagation/tsconfig.json +34 -0
- package/claude-assets/skills/task-classifier/SKILL.md +81 -0
- package/claude-assets/skills/task-classifier/classify-task.sh +62 -0
- package/claude-assets/skills/workflow-codification/package-lock.json +5170 -0
- package/claude-assets/skills/workflow-codification/package.json +30 -0
- package/claude-assets/skills/workflow-codification/src/index.ts +24 -0
- package/claude-assets/skills/workflow-codification/src/pattern-analyzer.ts +537 -0
- package/claude-assets/skills/workflow-codification/src/types.ts +180 -0
- package/claude-assets/skills/workflow-codification/tests/pattern-analyzer.test.ts +960 -0
- package/claude-assets/skills/workflow-codification/tsconfig.json +34 -0
- package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
- package/dist/agent-spawner/agent-spawner.js +448 -0
- package/dist/agent-spawner/agent-spawner.js.map +1 -0
- package/dist/agent-spawner/index.js +10 -0
- package/dist/agent-spawner/index.js.map +1 -0
- package/dist/agent-spawner/types.js +14 -0
- package/dist/agent-spawner/types.js.map +1 -0
- package/dist/cli/agent-executor.js +47 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/agent-spawn.js +4 -1
- 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/tool-executor.js +3 -1
- package/dist/cli/tool-executor.js.map +1 -1
- package/dist/gate-checker/gate-checker.js +292 -0
- package/dist/gate-checker/gate-checker.js.map +1 -0
- package/dist/gate-checker/types.js +94 -0
- package/dist/gate-checker/types.js.map +1 -0
- package/dist/lib/database-service/connection-pool-manager.js +2 -1
- package/dist/lib/database-service/connection-pool-manager.js.map +1 -1
- package/dist/orchestrator/index.js +10 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestrate.js +496 -0
- package/dist/orchestrator/orchestrate.js.map +1 -0
- package/dist/orchestrator/types.js +58 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/package.json +1 -1
- package/scripts/clean-agent-profiles.sh +112 -0
- package/scripts/switch-api.sh +142 -4
- package/scripts/verify-no-secrets.sh +6 -13
- package/tests/README.md +175 -58
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query: Generate analytics report for task
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
DB_PATH=${1:-}
|
|
7
|
+
TASK_ID=${2:-}
|
|
8
|
+
|
|
9
|
+
if [[ -z "$DB_PATH" || -z "$TASK_ID" ]]; then
|
|
10
|
+
echo "Usage: $0 <db_path> <task_id>"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "=== Task Execution Summary ==="
|
|
15
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
16
|
+
SELECT
|
|
17
|
+
COUNT(DISTINCT agent_id) as total_agents,
|
|
18
|
+
COUNT(DISTINCT container_id) as total_containers,
|
|
19
|
+
SUM(CASE WHEN event_type = 'exit' AND exit_code = 0 THEN 1 ELSE 0 END) as successful,
|
|
20
|
+
SUM(CASE WHEN event_type = 'exit' AND exit_code != 0 THEN 1 ELSE 0 END) as failed,
|
|
21
|
+
printf('%.2f%%', AVG(CASE WHEN event_type = 'exit' AND exit_code = 0 THEN 100.0 ELSE 0.0 END)) as success_rate,
|
|
22
|
+
SUM(oom_killed) as oom_kills
|
|
23
|
+
FROM container_events
|
|
24
|
+
WHERE task_id = '$TASK_ID';
|
|
25
|
+
SQL
|
|
26
|
+
|
|
27
|
+
echo ""
|
|
28
|
+
echo "=== Execution Duration ==="
|
|
29
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
30
|
+
SELECT
|
|
31
|
+
printf('%.2f', AVG(duration_seconds)) as avg_duration_sec,
|
|
32
|
+
printf('%.2f', MIN(duration_seconds)) as min_duration_sec,
|
|
33
|
+
printf('%.2f', MAX(duration_seconds)) as max_duration_sec,
|
|
34
|
+
printf('%.2f', SUM(duration_seconds)) as total_duration_sec
|
|
35
|
+
FROM container_events
|
|
36
|
+
WHERE task_id = '$TASK_ID' AND event_type = 'exit' AND duration_seconds IS NOT NULL;
|
|
37
|
+
SQL
|
|
38
|
+
|
|
39
|
+
echo ""
|
|
40
|
+
echo "=== Log Volume ==="
|
|
41
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
42
|
+
SELECT
|
|
43
|
+
stream,
|
|
44
|
+
COUNT(*) as total_lines,
|
|
45
|
+
printf('%.2f', AVG(length(log_line))) as avg_line_length,
|
|
46
|
+
SUM(length(log_line)) as total_bytes
|
|
47
|
+
FROM container_logs
|
|
48
|
+
WHERE task_id = '$TASK_ID'
|
|
49
|
+
GROUP BY stream;
|
|
50
|
+
SQL
|
|
51
|
+
|
|
52
|
+
echo ""
|
|
53
|
+
echo "=== Coordination Activity ==="
|
|
54
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
55
|
+
SELECT
|
|
56
|
+
event_type,
|
|
57
|
+
COUNT(*) as event_count
|
|
58
|
+
FROM coordination_events
|
|
59
|
+
WHERE task_id = '$TASK_ID'
|
|
60
|
+
GROUP BY event_type
|
|
61
|
+
ORDER BY event_count DESC;
|
|
62
|
+
SQL
|
|
63
|
+
|
|
64
|
+
echo ""
|
|
65
|
+
echo "=== Performance Metrics ==="
|
|
66
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
67
|
+
SELECT
|
|
68
|
+
metric_name,
|
|
69
|
+
printf('%.2f', metric_value) as value,
|
|
70
|
+
unit,
|
|
71
|
+
timestamp
|
|
72
|
+
FROM performance_metrics
|
|
73
|
+
WHERE task_id = '$TASK_ID'
|
|
74
|
+
ORDER BY timestamp DESC
|
|
75
|
+
LIMIT 10;
|
|
76
|
+
SQL
|
|
77
|
+
|
|
78
|
+
echo ""
|
|
79
|
+
echo "=== Timeline Overview ==="
|
|
80
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
81
|
+
SELECT
|
|
82
|
+
MIN(started_at) as first_spawn,
|
|
83
|
+
MAX(finished_at) as last_exit,
|
|
84
|
+
printf('%.2f', (julianday(MAX(finished_at)) - julianday(MIN(started_at))) * 86400) as total_runtime_sec
|
|
85
|
+
FROM container_events
|
|
86
|
+
WHERE task_id = '$TASK_ID' AND event_type IN ('spawn', 'exit');
|
|
87
|
+
SQL
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query: Show timeline for specific agent
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
DB_PATH=${1:-}
|
|
7
|
+
AGENT_ID=${2:-}
|
|
8
|
+
|
|
9
|
+
if [[ -z "$DB_PATH" || -z "$AGENT_ID" ]]; then
|
|
10
|
+
echo "Usage: $0 <db_path> <agent_id>"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "=== Container Lifecycle Events ==="
|
|
15
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
16
|
+
SELECT
|
|
17
|
+
event_type,
|
|
18
|
+
container_id,
|
|
19
|
+
exit_code,
|
|
20
|
+
started_at,
|
|
21
|
+
finished_at,
|
|
22
|
+
duration_seconds
|
|
23
|
+
FROM container_events
|
|
24
|
+
WHERE agent_id = '$AGENT_ID'
|
|
25
|
+
ORDER BY created_at;
|
|
26
|
+
SQL
|
|
27
|
+
|
|
28
|
+
echo ""
|
|
29
|
+
echo "=== Log Output ==="
|
|
30
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
31
|
+
SELECT
|
|
32
|
+
timestamp,
|
|
33
|
+
stream,
|
|
34
|
+
substr(log_line, 1, 120) || CASE WHEN length(log_line) > 120 THEN '...' ELSE '' END as log_line
|
|
35
|
+
FROM container_logs
|
|
36
|
+
WHERE agent_id = '$AGENT_ID'
|
|
37
|
+
ORDER BY timestamp;
|
|
38
|
+
SQL
|
|
39
|
+
|
|
40
|
+
echo ""
|
|
41
|
+
echo "=== Log Statistics ==="
|
|
42
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
43
|
+
SELECT
|
|
44
|
+
stream,
|
|
45
|
+
COUNT(*) as line_count,
|
|
46
|
+
AVG(length(log_line)) as avg_line_length,
|
|
47
|
+
MAX(length(log_line)) as max_line_length
|
|
48
|
+
FROM container_logs
|
|
49
|
+
WHERE agent_id = '$AGENT_ID'
|
|
50
|
+
GROUP BY stream;
|
|
51
|
+
SQL
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query: Show validator consensus over iterations
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
DB_PATH=${1:-}
|
|
7
|
+
TASK_ID=${2:-}
|
|
8
|
+
|
|
9
|
+
if [[ -z "$DB_PATH" || -z "$TASK_ID" ]]; then
|
|
10
|
+
echo "Usage: $0 <db_path> <task_id>"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "=== Validator Consensus History ==="
|
|
15
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
16
|
+
SELECT
|
|
17
|
+
iteration,
|
|
18
|
+
validator_id,
|
|
19
|
+
printf('%.2f', score) as score,
|
|
20
|
+
substr(feedback, 1, 60) || CASE WHEN length(feedback) > 60 THEN '...' ELSE '' END as feedback,
|
|
21
|
+
timestamp
|
|
22
|
+
FROM validator_consensus
|
|
23
|
+
WHERE task_id = '$TASK_ID'
|
|
24
|
+
ORDER BY iteration, validator_id;
|
|
25
|
+
SQL
|
|
26
|
+
|
|
27
|
+
echo ""
|
|
28
|
+
echo "=== Consensus Trends by Iteration ==="
|
|
29
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
30
|
+
SELECT
|
|
31
|
+
iteration,
|
|
32
|
+
COUNT(*) as validator_count,
|
|
33
|
+
printf('%.2f', AVG(score)) as avg_score,
|
|
34
|
+
printf('%.2f', MIN(score)) as min_score,
|
|
35
|
+
printf('%.2f', MAX(score)) as max_score,
|
|
36
|
+
printf('%.2f', (MAX(score) - MIN(score))) as score_range
|
|
37
|
+
FROM validator_consensus
|
|
38
|
+
WHERE task_id = '$TASK_ID'
|
|
39
|
+
GROUP BY iteration
|
|
40
|
+
ORDER BY iteration;
|
|
41
|
+
SQL
|
|
42
|
+
|
|
43
|
+
echo ""
|
|
44
|
+
echo "=== Validator Performance ==="
|
|
45
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
46
|
+
SELECT
|
|
47
|
+
validator_id,
|
|
48
|
+
COUNT(*) as reviews,
|
|
49
|
+
printf('%.2f', AVG(score)) as avg_score,
|
|
50
|
+
printf('%.2f', MIN(score)) as min_score,
|
|
51
|
+
printf('%.2f', MAX(score)) as max_score
|
|
52
|
+
FROM validator_consensus
|
|
53
|
+
WHERE task_id = '$TASK_ID'
|
|
54
|
+
GROUP BY validator_id
|
|
55
|
+
ORDER BY avg_score DESC;
|
|
56
|
+
SQL
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query: Show coordination event timeline
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
DB_PATH=${1:-}
|
|
7
|
+
TASK_ID=${2:-}
|
|
8
|
+
|
|
9
|
+
if [[ -z "$DB_PATH" || -z "$TASK_ID" ]]; then
|
|
10
|
+
echo "Usage: $0 <db_path> <task_id>"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "=== Coordination Event Timeline ==="
|
|
15
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
16
|
+
SELECT
|
|
17
|
+
timestamp,
|
|
18
|
+
event_type,
|
|
19
|
+
agent_id,
|
|
20
|
+
key,
|
|
21
|
+
substr(value, 1, 40) || CASE WHEN length(value) > 40 THEN '...' ELSE '' END as value
|
|
22
|
+
FROM coordination_events
|
|
23
|
+
WHERE task_id = '$TASK_ID'
|
|
24
|
+
ORDER BY timestamp;
|
|
25
|
+
SQL
|
|
26
|
+
|
|
27
|
+
echo ""
|
|
28
|
+
echo "=== Event Type Distribution ==="
|
|
29
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
30
|
+
SELECT
|
|
31
|
+
event_type,
|
|
32
|
+
COUNT(*) as count,
|
|
33
|
+
MIN(timestamp) as first_occurrence,
|
|
34
|
+
MAX(timestamp) as last_occurrence
|
|
35
|
+
FROM coordination_events
|
|
36
|
+
WHERE task_id = '$TASK_ID'
|
|
37
|
+
GROUP BY event_type
|
|
38
|
+
ORDER BY count DESC;
|
|
39
|
+
SQL
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query: Find all failed containers (exit_code != 0)
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
DB_PATH=${1:-logs/docker-mode/*/logs.db}
|
|
7
|
+
TASK_ID=${2:-}
|
|
8
|
+
|
|
9
|
+
if [[ -z "$TASK_ID" ]]; then
|
|
10
|
+
# Show all failed containers across all tasks
|
|
11
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
12
|
+
SELECT
|
|
13
|
+
task_id,
|
|
14
|
+
agent_id,
|
|
15
|
+
container_id,
|
|
16
|
+
exit_code,
|
|
17
|
+
started_at,
|
|
18
|
+
finished_at,
|
|
19
|
+
duration_seconds,
|
|
20
|
+
CASE WHEN oom_killed = 1 THEN 'YES' ELSE 'NO' END as oom_killed
|
|
21
|
+
FROM container_events
|
|
22
|
+
WHERE event_type = 'exit' AND exit_code != 0
|
|
23
|
+
ORDER BY finished_at DESC;
|
|
24
|
+
SQL
|
|
25
|
+
else
|
|
26
|
+
# Show failed containers for specific task
|
|
27
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
28
|
+
SELECT
|
|
29
|
+
agent_id,
|
|
30
|
+
container_id,
|
|
31
|
+
exit_code,
|
|
32
|
+
started_at,
|
|
33
|
+
finished_at,
|
|
34
|
+
duration_seconds,
|
|
35
|
+
CASE WHEN oom_killed = 1 THEN 'YES' ELSE 'NO' END as oom_killed
|
|
36
|
+
FROM container_events
|
|
37
|
+
WHERE task_id = '$TASK_ID' AND event_type = 'exit' AND exit_code != 0
|
|
38
|
+
ORDER BY finished_at DESC;
|
|
39
|
+
SQL
|
|
40
|
+
fi
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Query: Show all gate check results
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
DB_PATH=${1:-}
|
|
7
|
+
TASK_ID=${2:-}
|
|
8
|
+
|
|
9
|
+
if [[ -z "$DB_PATH" || -z "$TASK_ID" ]]; then
|
|
10
|
+
echo "Usage: $0 <db_path> <task_id>"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
echo "=== Gate Check Results ==="
|
|
15
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
16
|
+
SELECT
|
|
17
|
+
iteration,
|
|
18
|
+
printf('%.2f%%', pass_rate * 100) as pass_rate,
|
|
19
|
+
printf('%.2f%%', threshold * 100) as threshold,
|
|
20
|
+
CASE WHEN passed = 1 THEN 'PASS' ELSE 'FAIL' END as result,
|
|
21
|
+
agent_count as agents,
|
|
22
|
+
timestamp
|
|
23
|
+
FROM gate_checks
|
|
24
|
+
WHERE task_id = '$TASK_ID'
|
|
25
|
+
ORDER BY iteration;
|
|
26
|
+
SQL
|
|
27
|
+
|
|
28
|
+
echo ""
|
|
29
|
+
echo "=== Gate Check Summary ==="
|
|
30
|
+
sqlite3 -header -column "$DB_PATH" <<SQL
|
|
31
|
+
SELECT
|
|
32
|
+
COUNT(*) as total_checks,
|
|
33
|
+
SUM(CASE WHEN passed = 1 THEN 1 ELSE 0 END) as passed_count,
|
|
34
|
+
SUM(CASE WHEN passed = 0 THEN 1 ELSE 0 END) as failed_count,
|
|
35
|
+
printf('%.2f%%', AVG(pass_rate) * 100) as avg_pass_rate,
|
|
36
|
+
printf('%.2f%%', MAX(pass_rate) * 100) as max_pass_rate
|
|
37
|
+
FROM gate_checks
|
|
38
|
+
WHERE task_id = '$TASK_ID';
|
|
39
|
+
SQL
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
-- CFN Docker Logging Database Schema
|
|
2
|
+
-- Hybrid logging: Text files (human readable) + SQLite (powerful queries)
|
|
3
|
+
|
|
4
|
+
-- Container execution logs
|
|
5
|
+
CREATE TABLE IF NOT EXISTS container_logs (
|
|
6
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
7
|
+
task_id TEXT NOT NULL,
|
|
8
|
+
agent_id TEXT NOT NULL,
|
|
9
|
+
container_id TEXT NOT NULL,
|
|
10
|
+
timestamp TEXT NOT NULL,
|
|
11
|
+
log_line TEXT NOT NULL,
|
|
12
|
+
stream TEXT NOT NULL CHECK(stream IN ('stdout', 'stderr')),
|
|
13
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_task_agent ON container_logs(task_id, agent_id);
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_timestamp ON container_logs(timestamp);
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_container ON container_logs(container_id);
|
|
19
|
+
|
|
20
|
+
-- Container lifecycle events
|
|
21
|
+
CREATE TABLE IF NOT EXISTS container_events (
|
|
22
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
23
|
+
task_id TEXT NOT NULL,
|
|
24
|
+
agent_id TEXT NOT NULL,
|
|
25
|
+
container_id TEXT NOT NULL,
|
|
26
|
+
event_type TEXT NOT NULL CHECK(event_type IN ('spawn', 'exit', 'kill', 'error', 'oom')),
|
|
27
|
+
exit_code INTEGER,
|
|
28
|
+
status TEXT,
|
|
29
|
+
started_at TEXT,
|
|
30
|
+
finished_at TEXT,
|
|
31
|
+
duration_seconds REAL,
|
|
32
|
+
oom_killed INTEGER DEFAULT 0,
|
|
33
|
+
metadata TEXT, -- JSON blob for additional data
|
|
34
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
CREATE INDEX IF NOT EXISTS idx_task ON container_events(task_id);
|
|
38
|
+
CREATE INDEX IF NOT EXISTS idx_exit_code ON container_events(exit_code);
|
|
39
|
+
CREATE INDEX IF NOT EXISTS idx_event_type ON container_events(event_type);
|
|
40
|
+
|
|
41
|
+
-- Redis coordination events
|
|
42
|
+
CREATE TABLE IF NOT EXISTS coordination_events (
|
|
43
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
44
|
+
task_id TEXT NOT NULL,
|
|
45
|
+
agent_id TEXT,
|
|
46
|
+
event_type TEXT NOT NULL, -- 'gate-check', 'consensus', 'decision', 'signal', 'wait'
|
|
47
|
+
key TEXT NOT NULL,
|
|
48
|
+
value TEXT,
|
|
49
|
+
timestamp TEXT NOT NULL,
|
|
50
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_coord_task ON coordination_events(task_id);
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_coord_event_type ON coordination_events(event_type);
|
|
55
|
+
CREATE INDEX IF NOT EXISTS idx_coord_key ON coordination_events(key);
|
|
56
|
+
|
|
57
|
+
-- Gate check results
|
|
58
|
+
CREATE TABLE IF NOT EXISTS gate_checks (
|
|
59
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
60
|
+
task_id TEXT NOT NULL,
|
|
61
|
+
iteration INTEGER NOT NULL,
|
|
62
|
+
pass_rate REAL NOT NULL,
|
|
63
|
+
threshold REAL NOT NULL,
|
|
64
|
+
passed INTEGER NOT NULL CHECK(passed IN (0, 1)),
|
|
65
|
+
agent_count INTEGER,
|
|
66
|
+
timestamp TEXT NOT NULL,
|
|
67
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_gate_task_iteration ON gate_checks(task_id, iteration);
|
|
71
|
+
|
|
72
|
+
-- Validator consensus
|
|
73
|
+
CREATE TABLE IF NOT EXISTS validator_consensus (
|
|
74
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
75
|
+
task_id TEXT NOT NULL,
|
|
76
|
+
iteration INTEGER NOT NULL,
|
|
77
|
+
validator_id TEXT NOT NULL,
|
|
78
|
+
score REAL NOT NULL,
|
|
79
|
+
feedback TEXT,
|
|
80
|
+
timestamp TEXT NOT NULL,
|
|
81
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
CREATE INDEX IF NOT EXISTS idx_consensus_task_iteration ON validator_consensus(task_id, iteration);
|
|
85
|
+
|
|
86
|
+
-- Product owner decisions
|
|
87
|
+
CREATE TABLE IF NOT EXISTS product_owner_decisions (
|
|
88
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
89
|
+
task_id TEXT NOT NULL,
|
|
90
|
+
iteration INTEGER NOT NULL,
|
|
91
|
+
decision TEXT NOT NULL CHECK(decision IN ('PROCEED', 'ITERATE', 'ABORT')),
|
|
92
|
+
rationale TEXT,
|
|
93
|
+
deliverables_validated INTEGER,
|
|
94
|
+
timestamp TEXT NOT NULL,
|
|
95
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_decision_task ON product_owner_decisions(task_id);
|
|
99
|
+
|
|
100
|
+
-- Performance metrics
|
|
101
|
+
CREATE TABLE IF NOT EXISTS performance_metrics (
|
|
102
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
103
|
+
task_id TEXT NOT NULL,
|
|
104
|
+
metric_name TEXT NOT NULL,
|
|
105
|
+
metric_value REAL NOT NULL,
|
|
106
|
+
unit TEXT,
|
|
107
|
+
timestamp TEXT NOT NULL,
|
|
108
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_metrics_task ON performance_metrics(task_id);
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# SQLite Helper Functions for CFN Docker Logging
|
|
3
|
+
# Provides reusable functions for database operations
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Get script directory
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
+
|
|
10
|
+
# Initialize database with schema
|
|
11
|
+
init_logging_db() {
|
|
12
|
+
local db_path=$1
|
|
13
|
+
|
|
14
|
+
if [[ ! -f "$db_path" ]]; then
|
|
15
|
+
# Create database directory if needed
|
|
16
|
+
mkdir -p "$(dirname "$db_path")"
|
|
17
|
+
|
|
18
|
+
# Initialize schema
|
|
19
|
+
sqlite3 "$db_path" < "$SCRIPT_DIR/schema.sql"
|
|
20
|
+
echo "Initialized logging database: $db_path"
|
|
21
|
+
fi
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
# Insert log line
|
|
25
|
+
log_to_db() {
|
|
26
|
+
local db_path=$1
|
|
27
|
+
local task_id=$2
|
|
28
|
+
local agent_id=$3
|
|
29
|
+
local container_id=$4
|
|
30
|
+
local timestamp=$5
|
|
31
|
+
local log_line=$6
|
|
32
|
+
local stream=$7
|
|
33
|
+
|
|
34
|
+
# Escape single quotes in log line
|
|
35
|
+
log_line="${log_line//\'/\'\'}"
|
|
36
|
+
|
|
37
|
+
sqlite3 "$db_path" <<SQL
|
|
38
|
+
INSERT INTO container_logs (task_id, agent_id, container_id, timestamp, log_line, stream)
|
|
39
|
+
VALUES ('$task_id', '$agent_id', '$container_id', '$timestamp', '$log_line', '$stream');
|
|
40
|
+
SQL
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
# Log container event
|
|
44
|
+
log_container_event() {
|
|
45
|
+
local db_path=$1
|
|
46
|
+
local task_id=$2
|
|
47
|
+
local agent_id=$3
|
|
48
|
+
local container_id=$4
|
|
49
|
+
local event_type=$5
|
|
50
|
+
local exit_code=${6:-NULL}
|
|
51
|
+
local metadata=${7:-null}
|
|
52
|
+
|
|
53
|
+
# Escape metadata if provided
|
|
54
|
+
if [[ "$metadata" != "null" ]]; then
|
|
55
|
+
metadata="${metadata//\'/\'\'}"
|
|
56
|
+
metadata="'$metadata'"
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
sqlite3 "$db_path" <<SQL
|
|
60
|
+
INSERT INTO container_events (task_id, agent_id, container_id, event_type, exit_code, metadata)
|
|
61
|
+
VALUES ('$task_id', '$agent_id', '$container_id', '$event_type', $exit_code, $metadata);
|
|
62
|
+
SQL
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Log container spawn with timestamp
|
|
66
|
+
log_container_spawn() {
|
|
67
|
+
local db_path=$1
|
|
68
|
+
local task_id=$2
|
|
69
|
+
local agent_id=$3
|
|
70
|
+
local container_id=$4
|
|
71
|
+
local started_at=$5
|
|
72
|
+
local metadata=${6:-null}
|
|
73
|
+
|
|
74
|
+
if [[ "$metadata" != "null" ]]; then
|
|
75
|
+
metadata="${metadata//\'/\'\'}"
|
|
76
|
+
metadata="'$metadata'"
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
sqlite3 "$db_path" <<SQL
|
|
80
|
+
INSERT INTO container_events (task_id, agent_id, container_id, event_type, started_at, metadata)
|
|
81
|
+
VALUES ('$task_id', '$agent_id', '$container_id', 'spawn', '$started_at', $metadata);
|
|
82
|
+
SQL
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
# Log container exit with duration
|
|
86
|
+
log_container_exit() {
|
|
87
|
+
local db_path=$1
|
|
88
|
+
local task_id=$2
|
|
89
|
+
local agent_id=$3
|
|
90
|
+
local container_id=$4
|
|
91
|
+
local exit_code=$5
|
|
92
|
+
local started_at=$6
|
|
93
|
+
local finished_at=$7
|
|
94
|
+
|
|
95
|
+
# Calculate duration in seconds
|
|
96
|
+
local start_ts=$(date -d "$started_at" +%s 2>/dev/null || echo 0)
|
|
97
|
+
local finish_ts=$(date -d "$finished_at" +%s 2>/dev/null || echo 0)
|
|
98
|
+
local duration=$((finish_ts - start_ts))
|
|
99
|
+
|
|
100
|
+
sqlite3 "$db_path" <<SQL
|
|
101
|
+
INSERT INTO container_events (task_id, agent_id, container_id, event_type, exit_code, started_at, finished_at, duration_seconds)
|
|
102
|
+
VALUES ('$task_id', '$agent_id', '$container_id', 'exit', $exit_code, '$started_at', '$finished_at', $duration);
|
|
103
|
+
SQL
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# Log coordination event
|
|
107
|
+
log_coordination_event() {
|
|
108
|
+
local db_path=$1
|
|
109
|
+
local task_id=$2
|
|
110
|
+
local agent_id=$3
|
|
111
|
+
local event_type=$4
|
|
112
|
+
local key=$5
|
|
113
|
+
local value=${6:-}
|
|
114
|
+
local timestamp=$7
|
|
115
|
+
|
|
116
|
+
# Escape values
|
|
117
|
+
value="${value//\'/\'\'}"
|
|
118
|
+
|
|
119
|
+
sqlite3 "$db_path" <<SQL
|
|
120
|
+
INSERT INTO coordination_events (task_id, agent_id, event_type, key, value, timestamp)
|
|
121
|
+
VALUES ('$task_id', '$agent_id', '$event_type', '$key', '$value', '$timestamp');
|
|
122
|
+
SQL
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
# Log gate check result
|
|
126
|
+
log_gate_check() {
|
|
127
|
+
local db_path=$1
|
|
128
|
+
local task_id=$2
|
|
129
|
+
local iteration=$3
|
|
130
|
+
local pass_rate=$4
|
|
131
|
+
local threshold=$5
|
|
132
|
+
local passed=$6
|
|
133
|
+
local agent_count=${7:-0}
|
|
134
|
+
local timestamp=$8
|
|
135
|
+
|
|
136
|
+
sqlite3 "$db_path" <<SQL
|
|
137
|
+
INSERT INTO gate_checks (task_id, iteration, pass_rate, threshold, passed, agent_count, timestamp)
|
|
138
|
+
VALUES ('$task_id', $iteration, $pass_rate, $threshold, $passed, $agent_count, '$timestamp');
|
|
139
|
+
SQL
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# Log validator consensus
|
|
143
|
+
log_validator_consensus() {
|
|
144
|
+
local db_path=$1
|
|
145
|
+
local task_id=$2
|
|
146
|
+
local iteration=$3
|
|
147
|
+
local validator_id=$4
|
|
148
|
+
local score=$5
|
|
149
|
+
local feedback=$6
|
|
150
|
+
local timestamp=$7
|
|
151
|
+
|
|
152
|
+
# Escape feedback
|
|
153
|
+
feedback="${feedback//\'/\'\'}"
|
|
154
|
+
|
|
155
|
+
sqlite3 "$db_path" <<SQL
|
|
156
|
+
INSERT INTO validator_consensus (task_id, iteration, validator_id, score, feedback, timestamp)
|
|
157
|
+
VALUES ('$task_id', $iteration, '$validator_id', $score, '$feedback', '$timestamp');
|
|
158
|
+
SQL
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
# Log product owner decision
|
|
162
|
+
log_product_owner_decision() {
|
|
163
|
+
local db_path=$1
|
|
164
|
+
local task_id=$2
|
|
165
|
+
local iteration=$3
|
|
166
|
+
local decision=$4
|
|
167
|
+
local rationale=$5
|
|
168
|
+
local deliverables_validated=${6:-0}
|
|
169
|
+
local timestamp=$7
|
|
170
|
+
|
|
171
|
+
# Escape rationale
|
|
172
|
+
rationale="${rationale//\'/\'\'}"
|
|
173
|
+
|
|
174
|
+
sqlite3 "$db_path" <<SQL
|
|
175
|
+
INSERT INTO product_owner_decisions (task_id, iteration, decision, rationale, deliverables_validated, timestamp)
|
|
176
|
+
VALUES ('$task_id', $iteration, '$decision', '$rationale', $deliverables_validated, '$timestamp');
|
|
177
|
+
SQL
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
# Log performance metric
|
|
181
|
+
log_performance_metric() {
|
|
182
|
+
local db_path=$1
|
|
183
|
+
local task_id=$2
|
|
184
|
+
local metric_name=$3
|
|
185
|
+
local metric_value=$4
|
|
186
|
+
local unit=${5:-}
|
|
187
|
+
local timestamp=$6
|
|
188
|
+
|
|
189
|
+
sqlite3 "$db_path" <<SQL
|
|
190
|
+
INSERT INTO performance_metrics (task_id, metric_name, metric_value, unit, timestamp)
|
|
191
|
+
VALUES ('$task_id', '$metric_name', $metric_value, '$unit', '$timestamp');
|
|
192
|
+
SQL
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
# Query helper: Get latest event for container
|
|
196
|
+
get_latest_container_event() {
|
|
197
|
+
local db_path=$1
|
|
198
|
+
local container_id=$2
|
|
199
|
+
|
|
200
|
+
sqlite3 -separator '|' "$db_path" <<SQL
|
|
201
|
+
SELECT event_type, exit_code, created_at
|
|
202
|
+
FROM container_events
|
|
203
|
+
WHERE container_id = '$container_id'
|
|
204
|
+
ORDER BY created_at DESC
|
|
205
|
+
LIMIT 1;
|
|
206
|
+
SQL
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# Query helper: Get task summary
|
|
210
|
+
get_task_summary() {
|
|
211
|
+
local db_path=$1
|
|
212
|
+
local task_id=$2
|
|
213
|
+
|
|
214
|
+
sqlite3 -header -column "$db_path" <<SQL
|
|
215
|
+
SELECT
|
|
216
|
+
COUNT(DISTINCT agent_id) as total_agents,
|
|
217
|
+
COUNT(DISTINCT container_id) as total_containers,
|
|
218
|
+
SUM(CASE WHEN event_type = 'exit' AND exit_code = 0 THEN 1 ELSE 0 END) as successful_exits,
|
|
219
|
+
SUM(CASE WHEN event_type = 'exit' AND exit_code != 0 THEN 1 ELSE 0 END) as failed_exits,
|
|
220
|
+
AVG(CASE WHEN duration_seconds IS NOT NULL THEN duration_seconds END) as avg_duration
|
|
221
|
+
FROM container_events
|
|
222
|
+
WHERE task_id = '$task_id';
|
|
223
|
+
SQL
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
# Export functions if sourced
|
|
227
|
+
if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
|
|
228
|
+
export -f init_logging_db
|
|
229
|
+
export -f log_to_db
|
|
230
|
+
export -f log_container_event
|
|
231
|
+
export -f log_container_spawn
|
|
232
|
+
export -f log_container_exit
|
|
233
|
+
export -f log_coordination_event
|
|
234
|
+
export -f log_gate_check
|
|
235
|
+
export -f log_validator_consensus
|
|
236
|
+
export -f log_product_owner_decision
|
|
237
|
+
export -f log_performance_metric
|
|
238
|
+
export -f get_latest_container_event
|
|
239
|
+
export -f get_task_summary
|
|
240
|
+
fi
|