claude-flow-novice 2.15.5 → 2.15.6
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/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/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/setup.ts +22 -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/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 +779 -0
- package/.claude/skills/cfn-redis-coordination/tsconfig.json +31 -0
- package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +172 -2
- package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +1 -1
- 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/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/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/setup.ts +22 -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/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 +779 -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/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- 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/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/switch-api.sh +142 -4
- package/scripts/verify-no-secrets.sh +6 -13
- package/tests/README.md +175 -58
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cfn-agent-selector
|
|
3
|
+
description: Selects appropriate Loop 3 and Loop 2 agents based on task classification
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags: [agent-selection, cfn-loop, coordination]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# CFN Agent Selector Skill
|
|
9
|
+
|
|
10
|
+
Selects appropriate agents for CFN Loop execution based on task classification and mode.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
./.claude/skills/cfn-agent-selector/select-agents.sh \
|
|
16
|
+
--classification <type> \
|
|
17
|
+
[--mode <mode>] \
|
|
18
|
+
[--loop <3|2>]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Arguments
|
|
22
|
+
|
|
23
|
+
- `--classification <type>` - Task classification (comma-separated): frontend, backend, devops, testing, security, data, performance, general
|
|
24
|
+
- `--mode <mode>` - Execution mode: mvp, standard, enterprise (default: standard)
|
|
25
|
+
- `--loop <3|2>` - Output specific loop agents (3 for implementers, 2 for validators)
|
|
26
|
+
|
|
27
|
+
## Agent Mapping
|
|
28
|
+
|
|
29
|
+
### Loop 3 Agents (Implementation)
|
|
30
|
+
|
|
31
|
+
| Classification | Agent Type |
|
|
32
|
+
|----------------|------------|
|
|
33
|
+
| frontend | react-frontend-engineer |
|
|
34
|
+
| backend | backend-developer |
|
|
35
|
+
| devops | devops-engineer |
|
|
36
|
+
| testing | tester |
|
|
37
|
+
| security | security-specialist |
|
|
38
|
+
| data | database-architect |
|
|
39
|
+
| performance | performance-optimizer |
|
|
40
|
+
| general | backend-developer |
|
|
41
|
+
|
|
42
|
+
### Loop 2 Agents (Validation)
|
|
43
|
+
|
|
44
|
+
| Classification | Agent Types |
|
|
45
|
+
|----------------|-------------|
|
|
46
|
+
| frontend | code-reviewer, ui-designer |
|
|
47
|
+
| backend | code-reviewer, security-specialist |
|
|
48
|
+
| devops | code-reviewer, security-specialist |
|
|
49
|
+
| testing | code-reviewer, qa-specialist |
|
|
50
|
+
| security | code-reviewer, security-specialist |
|
|
51
|
+
| data | code-reviewer, database-architect |
|
|
52
|
+
| performance | code-reviewer, performance-benchmarker |
|
|
53
|
+
| general | code-reviewer, tester |
|
|
54
|
+
|
|
55
|
+
## Output Formats
|
|
56
|
+
|
|
57
|
+
### JSON (Default)
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
$ select-agents.sh --classification "frontend,backend" --mode standard
|
|
61
|
+
{
|
|
62
|
+
"loop3": "backend-developer,react-frontend-engineer",
|
|
63
|
+
"loop2": "code-reviewer,security-specialist,ui-designer",
|
|
64
|
+
"mode": "standard",
|
|
65
|
+
"classifications": "frontend,backend"
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Loop 3 Only
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
$ select-agents.sh --classification "frontend" --loop 3
|
|
73
|
+
react-frontend-engineer
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Loop 2 Only
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
$ select-agents.sh --classification "backend" --loop 2
|
|
80
|
+
code-reviewer,security-specialist
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Examples
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Full-stack task
|
|
87
|
+
$ select-agents.sh --classification "frontend,backend"
|
|
88
|
+
{
|
|
89
|
+
"loop3": "backend-developer,react-frontend-engineer",
|
|
90
|
+
"loop2": "code-reviewer,security-specialist,ui-designer",
|
|
91
|
+
...
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
# DevOps task - only Loop 3 agents
|
|
95
|
+
$ select-agents.sh --classification "devops" --loop 3
|
|
96
|
+
devops-engineer
|
|
97
|
+
|
|
98
|
+
# Security audit - only Loop 2 agents
|
|
99
|
+
$ select-agents.sh --classification "security" --loop 2
|
|
100
|
+
code-reviewer,security-specialist
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Integration with CFN Loop
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# 1. Classify task
|
|
107
|
+
CLASSIFICATION=$(classify-task.sh "$TASK_DESCRIPTION")
|
|
108
|
+
|
|
109
|
+
# 2. Select agents
|
|
110
|
+
AGENTS_JSON=$(select-agents.sh --classification "$CLASSIFICATION" --mode standard)
|
|
111
|
+
|
|
112
|
+
# 3. Extract agent lists
|
|
113
|
+
LOOP3_AGENTS=$(echo "$AGENTS_JSON" | jq -r '.loop3')
|
|
114
|
+
LOOP2_AGENTS=$(echo "$AGENTS_JSON" | jq -r '.loop2')
|
|
115
|
+
|
|
116
|
+
# 4. Spawn CFN Loop with selected agents
|
|
117
|
+
./orchestrate.sh \
|
|
118
|
+
--task-id "$TASK_ID" \
|
|
119
|
+
--loop3-agents "$LOOP3_AGENTS" \
|
|
120
|
+
--loop2-agents "$LOOP2_AGENTS" \
|
|
121
|
+
--mode standard
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Features
|
|
125
|
+
|
|
126
|
+
- **Deduplication:** Removes duplicate agents from multi-classification tasks
|
|
127
|
+
- **Automatic Mapping:** Uses predefined agent mapping for consistency
|
|
128
|
+
- **Mode-Aware:** Future enhancement for mode-specific agent selection
|
|
129
|
+
- **Extensible:** Easy to add new classifications and agent types
|
|
130
|
+
|
|
131
|
+
## Implementation Details
|
|
132
|
+
|
|
133
|
+
- Uses associative arrays for agent mapping
|
|
134
|
+
- Sorts and deduplicates agent lists
|
|
135
|
+
- Outputs comma-separated agent names (no spaces)
|
|
136
|
+
- Exit code 0 on success, 1 on error
|
|
137
|
+
- Stateless execution (no persistent configuration)
|
|
138
|
+
|
|
139
|
+
## Used By
|
|
140
|
+
|
|
141
|
+
- `cfn-v3-coordinator` - For automatic agent selection based on task
|
|
142
|
+
- CFN Loop CLI commands - For agent list generation
|
|
143
|
+
- Manual orchestration - For expert-driven agent selection
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Agent Selection Skill
|
|
3
|
+
# Selects appropriate agents based on task classification and mode
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Parse arguments
|
|
8
|
+
TASK_CLASSIFICATION=""
|
|
9
|
+
MODE="standard"
|
|
10
|
+
LOOP_TYPE=""
|
|
11
|
+
|
|
12
|
+
while [[ $# -gt 0 ]]; do
|
|
13
|
+
case $1 in
|
|
14
|
+
--classification)
|
|
15
|
+
TASK_CLASSIFICATION="$2"
|
|
16
|
+
shift 2
|
|
17
|
+
;;
|
|
18
|
+
--mode)
|
|
19
|
+
MODE="$2"
|
|
20
|
+
shift 2
|
|
21
|
+
;;
|
|
22
|
+
--loop)
|
|
23
|
+
LOOP_TYPE="$2"
|
|
24
|
+
shift 2
|
|
25
|
+
;;
|
|
26
|
+
*)
|
|
27
|
+
echo "Unknown argument: $1" >&2
|
|
28
|
+
exit 1
|
|
29
|
+
;;
|
|
30
|
+
esac
|
|
31
|
+
done
|
|
32
|
+
|
|
33
|
+
if [[ -z "$TASK_CLASSIFICATION" ]]; then
|
|
34
|
+
echo "Usage: $0 --classification <type> [--mode <mode>] [--loop <3|2>]" >&2
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Agent mapping based on classification
|
|
39
|
+
declare -A LOOP3_AGENTS
|
|
40
|
+
LOOP3_AGENTS[frontend]="react-frontend-engineer"
|
|
41
|
+
LOOP3_AGENTS[backend]="backend-developer"
|
|
42
|
+
LOOP3_AGENTS[devops]="devops-engineer"
|
|
43
|
+
LOOP3_AGENTS[testing]="tester"
|
|
44
|
+
LOOP3_AGENTS[security]="security-specialist"
|
|
45
|
+
LOOP3_AGENTS[data]="database-architect"
|
|
46
|
+
LOOP3_AGENTS[performance]="performance-optimizer"
|
|
47
|
+
LOOP3_AGENTS[general]="backend-developer"
|
|
48
|
+
|
|
49
|
+
declare -A LOOP2_AGENTS
|
|
50
|
+
LOOP2_AGENTS[frontend]="code-reviewer,ui-designer"
|
|
51
|
+
LOOP2_AGENTS[backend]="code-reviewer,security-specialist"
|
|
52
|
+
LOOP2_AGENTS[devops]="code-reviewer,security-specialist"
|
|
53
|
+
LOOP2_AGENTS[testing]="code-reviewer,qa-specialist"
|
|
54
|
+
LOOP2_AGENTS[security]="code-reviewer,security-specialist"
|
|
55
|
+
LOOP2_AGENTS[data]="code-reviewer,database-architect"
|
|
56
|
+
LOOP2_AGENTS[performance]="code-reviewer,performance-benchmarker"
|
|
57
|
+
LOOP2_AGENTS[general]="code-reviewer,tester"
|
|
58
|
+
|
|
59
|
+
# Select agents based on classification
|
|
60
|
+
SELECTED_LOOP3=()
|
|
61
|
+
SELECTED_LOOP2=()
|
|
62
|
+
|
|
63
|
+
IFS=',' read -ra CLASSIFICATIONS <<< "$TASK_CLASSIFICATION"
|
|
64
|
+
for classification in "${CLASSIFICATIONS[@]}"; do
|
|
65
|
+
if [[ -n "${LOOP3_AGENTS[$classification]:-}" ]]; then
|
|
66
|
+
SELECTED_LOOP3+=("${LOOP3_AGENTS[$classification]}")
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
if [[ -n "${LOOP2_AGENTS[$classification]:-}" ]]; then
|
|
70
|
+
IFS=',' read -ra VALIDATORS <<< "${LOOP2_AGENTS[$classification]}"
|
|
71
|
+
SELECTED_LOOP2+=("${VALIDATORS[@]}")
|
|
72
|
+
fi
|
|
73
|
+
done
|
|
74
|
+
|
|
75
|
+
# Remove duplicates and join
|
|
76
|
+
LOOP3_UNIQUE=$(printf '%s\n' "${SELECTED_LOOP3[@]}" | sort -u | tr '\n' ',' | sed 's/,$//')
|
|
77
|
+
LOOP2_UNIQUE=$(printf '%s\n' "${SELECTED_LOOP2[@]}" | sort -u | tr '\n' ',' | sed 's/,$//')
|
|
78
|
+
|
|
79
|
+
# Output based on loop type
|
|
80
|
+
if [[ "$LOOP_TYPE" == "3" ]]; then
|
|
81
|
+
echo "$LOOP3_UNIQUE"
|
|
82
|
+
elif [[ "$LOOP_TYPE" == "2" ]]; then
|
|
83
|
+
echo "$LOOP2_UNIQUE"
|
|
84
|
+
else
|
|
85
|
+
# Output both as JSON
|
|
86
|
+
cat <<EOF
|
|
87
|
+
{
|
|
88
|
+
"loop3": "$LOOP3_UNIQUE",
|
|
89
|
+
"loop2": "$LOOP2_UNIQUE",
|
|
90
|
+
"mode": "$MODE",
|
|
91
|
+
"classifications": "$TASK_CLASSIFICATION"
|
|
92
|
+
}
|
|
93
|
+
EOF
|
|
94
|
+
fi
|
|
@@ -24,7 +24,7 @@ if [[ -z "$AGENT_TYPE" ]]; then
|
|
|
24
24
|
return 1 2>/dev/null || exit 1
|
|
25
25
|
fi
|
|
26
26
|
|
|
27
|
-
# Function to get provider config (zai, kimi, openrouter, anthropic)
|
|
27
|
+
# Function to get provider config (zai, kimi, openrouter, gemini, xai, anthropic)
|
|
28
28
|
get_provider_config() {
|
|
29
29
|
local provider="$1"
|
|
30
30
|
local model="${2:-}"
|
|
@@ -48,6 +48,18 @@ get_provider_config() {
|
|
|
48
48
|
export ANTHROPIC_MODEL="${model:-anthropic/claude-sonnet-4.5}"
|
|
49
49
|
export ANTHROPIC_SMALL_FAST_MODEL="${model:-anthropic/claude-sonnet-4.5}"
|
|
50
50
|
;;
|
|
51
|
+
gemini)
|
|
52
|
+
export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"
|
|
53
|
+
export ANTHROPIC_AUTH_TOKEN="${OPENROUTER_API_KEY:-}"
|
|
54
|
+
export ANTHROPIC_MODEL="${model:-google/gemini-2.0-flash-001}"
|
|
55
|
+
export ANTHROPIC_SMALL_FAST_MODEL="${model:-google/gemini-2.0-flash-001}"
|
|
56
|
+
;;
|
|
57
|
+
xai)
|
|
58
|
+
export ANTHROPIC_BASE_URL="https://api.x.ai/v1"
|
|
59
|
+
export ANTHROPIC_AUTH_TOKEN="${XAI_API_KEY:-}"
|
|
60
|
+
export ANTHROPIC_MODEL="${model:-grok-beta}"
|
|
61
|
+
export ANTHROPIC_SMALL_FAST_MODEL="${model:-grok-beta}"
|
|
62
|
+
;;
|
|
51
63
|
anthropic|*)
|
|
52
64
|
# Use default Anthropic settings (remove custom env vars)
|
|
53
65
|
unset ANTHROPIC_BASE_URL
|
|
@@ -61,13 +73,21 @@ get_provider_config() {
|
|
|
61
73
|
# Function to detect provider from base URL
|
|
62
74
|
detect_provider_from_url() {
|
|
63
75
|
local base_url="$1"
|
|
76
|
+
local model="${2:-}"
|
|
64
77
|
|
|
65
78
|
if [[ "$base_url" == *"z.ai"* ]]; then
|
|
66
79
|
echo "zai"
|
|
67
80
|
elif [[ "$base_url" == *"moonshot.ai"* ]]; then
|
|
68
81
|
echo "kimi"
|
|
82
|
+
elif [[ "$base_url" == *"x.ai"* ]]; then
|
|
83
|
+
echo "xai"
|
|
69
84
|
elif [[ "$base_url" == *"openrouter.ai"* ]]; then
|
|
70
|
-
|
|
85
|
+
# Check if model is Gemini
|
|
86
|
+
if [[ "$model" == google/gemini* ]]; then
|
|
87
|
+
echo "gemini"
|
|
88
|
+
else
|
|
89
|
+
echo "openrouter"
|
|
90
|
+
fi
|
|
71
91
|
else
|
|
72
92
|
echo "anthropic"
|
|
73
93
|
fi
|
|
@@ -406,8 +406,8 @@ if [[ "${TASK_ID}" =~ concurrent-.* || "${TASK_ID}" =~ test-.* || "${TASK_ID}" =
|
|
|
406
406
|
# Test mode command (context not used)
|
|
407
407
|
DOCKER_CMD="$DOCKER_CMD -c 'cd /app/workspace && echo \"Task: ${TASK_ID}\" > task-info.txt && echo \"Agent: ${AGENT_TYPE}\" >> task-info.txt && echo \"Starting task execution...\" >> task-info.txt && sleep 3 && echo \"${AGENT_TYPE} task completed\" > ${AGENT_TYPE}-task-result.txt && echo \"Workspace verified\" > ${AGENT_TYPE}-workspace-check.txt && echo \"Task completed\" > ${AGENT_TYPE}-completion-log.txt && echo \"All files created successfully\" && ls -la && sleep 2'"
|
|
408
408
|
else
|
|
409
|
-
# Full CFN mode command with optional context (
|
|
410
|
-
DOCKER_CMD="$DOCKER_CMD -c 'cd /app &&
|
|
409
|
+
# Full CFN mode command with optional context (use npx claude-flow-novice)
|
|
410
|
+
DOCKER_CMD="$DOCKER_CMD -c 'cd /app && npx claude-flow-novice agent ${AGENT_TYPE} --task-id ${TASK_ID} --agent-id ${AGENT_ID} ${CONTEXT_ARG}'"
|
|
411
411
|
fi
|
|
412
412
|
|
|
413
413
|
# Remove container on exit for interactive mode (not needed for test mode with --rm)
|
|
@@ -449,6 +449,25 @@ fi
|
|
|
449
449
|
|
|
450
450
|
log_success "Container created successfully: $CONTAINER_ID"
|
|
451
451
|
|
|
452
|
+
# Initialize hybrid logging for this task
|
|
453
|
+
LOG_DIR="logs/docker-mode/${TASK_ID}"
|
|
454
|
+
DB_PATH="$LOG_DIR/logs.db"
|
|
455
|
+
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
|
456
|
+
|
|
457
|
+
if [[ ! -f "$DB_PATH" ]]; then
|
|
458
|
+
log "Initializing hybrid logging for task: $TASK_ID"
|
|
459
|
+
"$PROJECT_ROOT/.claude/skills/cfn-docker-logging/init-hybrid-logging.sh" "$TASK_ID" >/dev/null 2>&1 || true
|
|
460
|
+
fi
|
|
461
|
+
|
|
462
|
+
# Start background log capture (text files + SQLite)
|
|
463
|
+
if [[ -f "$PROJECT_ROOT/.claude/skills/cfn-docker-logging/capture-container-logs.sh" ]]; then
|
|
464
|
+
log "Starting hybrid log capture (text + SQLite)"
|
|
465
|
+
"$PROJECT_ROOT/.claude/skills/cfn-docker-logging/capture-container-logs.sh" \
|
|
466
|
+
"$CONTAINER_ID" "$AGENT_ID" "$LOG_DIR" "$DB_PATH" "$TASK_ID" &
|
|
467
|
+
CAPTURE_PID=$!
|
|
468
|
+
log "Log capture started (PID: $CAPTURE_PID)"
|
|
469
|
+
fi
|
|
470
|
+
|
|
452
471
|
# Wait for container to start (if detached)
|
|
453
472
|
if [[ "$DETACH" == true ]]; then
|
|
454
473
|
log "Waiting for container to start..."
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"parser": "@typescript-eslint/parser",
|
|
4
|
+
"parserOptions": {
|
|
5
|
+
"ecmaVersion": 2020,
|
|
6
|
+
"sourceType": "module",
|
|
7
|
+
"project": "./tsconfig.json"
|
|
8
|
+
},
|
|
9
|
+
"plugins": ["@typescript-eslint"],
|
|
10
|
+
"extends": [
|
|
11
|
+
"eslint:recommended",
|
|
12
|
+
"plugin:@typescript-eslint/recommended",
|
|
13
|
+
"plugin:@typescript-eslint/recommended-requiring-type-checking"
|
|
14
|
+
],
|
|
15
|
+
"rules": {
|
|
16
|
+
"@typescript-eslint/explicit-function-return-types": "error",
|
|
17
|
+
"@typescript-eslint/no-explicit-any": "error",
|
|
18
|
+
"@typescript-eslint/no-unused-vars": "error",
|
|
19
|
+
"@typescript-eslint/strict-boolean-expressions": "warn",
|
|
20
|
+
"@typescript-eslint/explicit-member-accessibility": "error",
|
|
21
|
+
"no-console": "warn",
|
|
22
|
+
"prefer-const": "error",
|
|
23
|
+
"no-var": "error"
|
|
24
|
+
},
|
|
25
|
+
"overrides": [
|
|
26
|
+
{
|
|
27
|
+
"files": ["tests/**/*.ts"],
|
|
28
|
+
"rules": {
|
|
29
|
+
"@typescript-eslint/no-explicit-any": "off"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# CFN Docker Coordination
|
|
2
|
+
|
|
3
|
+
Type-safe Docker orchestration utilities for CFN Loop agent container management.
|
|
4
|
+
|
|
5
|
+
**Status**: Production Ready
|
|
6
|
+
**Coverage**: 91.8%
|
|
7
|
+
**Tests**: 176 passing
|
|
8
|
+
**TypeScript**: Strict mode enabled
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @cfn/docker-coordination
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { createDockerManager } from '@cfn/docker-coordination';
|
|
20
|
+
|
|
21
|
+
// Create manager with all components
|
|
22
|
+
const manager = createDockerManager();
|
|
23
|
+
|
|
24
|
+
// Verify Docker is accessible
|
|
25
|
+
const accessible = await manager.docker.isAccessible();
|
|
26
|
+
|
|
27
|
+
// Create and manage agent containers
|
|
28
|
+
const { container, manifest } = await manager.agents.spawnAgent(
|
|
29
|
+
'backend-dev',
|
|
30
|
+
'task-123',
|
|
31
|
+
'agent-456',
|
|
32
|
+
{ memoryLimit: 1024 }
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
// Monitor container health
|
|
36
|
+
const ready = await manager.health.waitForReady(container, 30000);
|
|
37
|
+
|
|
38
|
+
// Get container state
|
|
39
|
+
const state = await manager.agents.getAgentStatus(container);
|
|
40
|
+
console.log(`Container status: ${state.status}`);
|
|
41
|
+
|
|
42
|
+
// Stop and cleanup
|
|
43
|
+
await manager.agents.stopAgent(container);
|
|
44
|
+
await manager.agents.removeAgent(container);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Core Components
|
|
48
|
+
|
|
49
|
+
### DockerClient
|
|
50
|
+
Low-level Docker SDK wrapper with proper error handling.
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
const client = new DockerClient();
|
|
54
|
+
const accessible = await client.isAccessible();
|
|
55
|
+
const container = await client.getContainer('container-id');
|
|
56
|
+
const state = await client.getContainerState(container);
|
|
57
|
+
const logs = await client.getContainerLogs(container);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### AgentContainerManager
|
|
61
|
+
CFN agent-specific container operations.
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
const manager = new AgentContainerManager(dockerClient);
|
|
65
|
+
const { container, manifest } = await manager.spawnAgent(
|
|
66
|
+
'backend-dev',
|
|
67
|
+
'task-id',
|
|
68
|
+
'agent-id',
|
|
69
|
+
{ memoryLimit: 2048, cpuLimit: 1.0 }
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const exitCode = await manager.waitForAgentCompletion(container);
|
|
73
|
+
const logs = await manager.getAgentLogs(container);
|
|
74
|
+
await manager.cleanupStoppedAgents('cfn-wave');
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### NetworkManager
|
|
78
|
+
Docker network creation and container connection.
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
const netManager = new NetworkManager();
|
|
82
|
+
const network = await netManager.createNetworkIfMissing('cfn-network');
|
|
83
|
+
await netManager.connectToNetwork(network, container);
|
|
84
|
+
const info = await netManager.getNetworkInfo(network);
|
|
85
|
+
await netManager.disconnectFromNetwork(network, container);
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### VolumeManager
|
|
89
|
+
Docker volume management for persistent storage.
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const volManager = new VolumeManager();
|
|
93
|
+
const volume = await volManager.createAgentVolume('agent-id', 'backend');
|
|
94
|
+
const volumes = await volManager.listCfnVolumes();
|
|
95
|
+
await volManager.removeAgentVolume('agent-id');
|
|
96
|
+
const removed = await volManager.removeDanglingVolumes();
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### HealthChecker
|
|
100
|
+
Container health monitoring and diagnostics.
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
const checker = new HealthChecker(dockerClient);
|
|
104
|
+
const healthy = await checker.waitForHealthy(container, 30000);
|
|
105
|
+
const summary = await checker.getHealthSummary(container);
|
|
106
|
+
const state = await checker.monitorUntilCompletion(container, 300000);
|
|
107
|
+
const report = await checker.performDiagnostic(container);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Type System
|
|
111
|
+
|
|
112
|
+
Comprehensive TypeScript types for all operations:
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// Container options with full type safety
|
|
116
|
+
const options: ContainerOptions = {
|
|
117
|
+
agentType: 'backend-dev',
|
|
118
|
+
taskId: 'task-123',
|
|
119
|
+
agentId: 'agent-456',
|
|
120
|
+
memoryLimit: 1024,
|
|
121
|
+
cpuLimit: 0.5,
|
|
122
|
+
env: {
|
|
123
|
+
'LOG_LEVEL': 'debug',
|
|
124
|
+
'REDIS_HOST': 'redis'
|
|
125
|
+
},
|
|
126
|
+
volumes: {
|
|
127
|
+
'/host/data': '/container/data'
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// Container state with discriminated unions
|
|
132
|
+
const state: ContainerState = {
|
|
133
|
+
id: 'abc123',
|
|
134
|
+
name: 'cfn-agent-456',
|
|
135
|
+
status: ContainerStatus.RUNNING,
|
|
136
|
+
isRunning: true,
|
|
137
|
+
healthStatus: ContainerHealthStatus.HEALTHY
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// Execute summary with metrics
|
|
141
|
+
const summary: ExecutionSummary = {
|
|
142
|
+
wave_number: 1,
|
|
143
|
+
summary_time: '2025-11-19T10:30:00Z',
|
|
144
|
+
metrics: {
|
|
145
|
+
total: 10,
|
|
146
|
+
success: 9,
|
|
147
|
+
failed: 1,
|
|
148
|
+
timeout: 0
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Error Handling
|
|
154
|
+
|
|
155
|
+
Type-safe error classes with context:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import {
|
|
159
|
+
DockerError,
|
|
160
|
+
ContainerTimeoutError,
|
|
161
|
+
ContainerHealthCheckError,
|
|
162
|
+
NetworkError
|
|
163
|
+
} from '@cfn/docker-coordination';
|
|
164
|
+
|
|
165
|
+
try {
|
|
166
|
+
await manager.health.waitForHealthy(container, 5000);
|
|
167
|
+
} catch (error) {
|
|
168
|
+
if (error instanceof ContainerTimeoutError) {
|
|
169
|
+
console.error('Container took too long to start');
|
|
170
|
+
} else if (error instanceof ContainerHealthCheckError) {
|
|
171
|
+
console.error('Container failed health check');
|
|
172
|
+
} else if (error instanceof DockerError) {
|
|
173
|
+
console.error(`Docker error: ${error.code} - ${error.message}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Configuration
|
|
179
|
+
|
|
180
|
+
### Memory Tiers
|
|
181
|
+
|
|
182
|
+
Standard memory configurations:
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
MemoryTier.SMALL = 512; // 512 MB
|
|
186
|
+
MemoryTier.MEDIUM = 1024; // 1 GB
|
|
187
|
+
MemoryTier.LARGE = 2048; // 2 GB
|
|
188
|
+
MemoryTier.XLARGE = 4096; // 4 GB
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Container Creation Options
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
interface ContainerOptions {
|
|
195
|
+
agentType: string; // Agent type identifier
|
|
196
|
+
taskId: string; // Task ID for coordination
|
|
197
|
+
agentId: string; // Unique agent ID
|
|
198
|
+
memoryLimit: number; // Memory in MB
|
|
199
|
+
cpuLimit?: number; // CPU limit (cores)
|
|
200
|
+
env?: Record<string, string>; // Environment variables
|
|
201
|
+
volumes?: Record<string, string>; // Volume mounts
|
|
202
|
+
network?: string; // Network name
|
|
203
|
+
name?: string; // Container name override
|
|
204
|
+
workdir?: string; // Working directory
|
|
205
|
+
restartPolicy?: RestartPolicy; // Restart policy
|
|
206
|
+
healthCheck?: HealthCheckConfig; // Health check
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Health Check Configuration
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
interface HealthCheckConfig {
|
|
214
|
+
Test: string[]; // Health check command
|
|
215
|
+
Interval: number; // Interval in seconds
|
|
216
|
+
Timeout: number; // Timeout in seconds
|
|
217
|
+
Retries: number; // Consecutive failures
|
|
218
|
+
StartPeriod?: number; // Startup grace period
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Testing
|
|
223
|
+
|
|
224
|
+
### Run All Tests
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npm test
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Run Tests in Watch Mode
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
npm run test:watch
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Run Integration Tests Only
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
npm run test:integration
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Check Coverage
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
npm test -- --coverage
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Current coverage:
|
|
249
|
+
- Statements: 91.8%
|
|
250
|
+
- Branches: 89.3%
|
|
251
|
+
- Functions: 94.2%
|
|
252
|
+
- Lines: 92.1%
|
|
253
|
+
|
|
254
|
+
## Building
|
|
255
|
+
|
|
256
|
+
### Compile TypeScript
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
npm run build
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Type Check Without Emitting
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
npm run type-check
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Lint Code
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
npm run lint
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Backward Compatibility
|
|
275
|
+
|
|
276
|
+
For existing bash code, a compatibility wrapper is available:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
source ./docker-helpers.sh
|
|
280
|
+
|
|
281
|
+
validate_docker_access
|
|
282
|
+
get_container_status "$CONTAINER_ID"
|
|
283
|
+
wait_for_container "$CONTAINER_ID" 300
|
|
284
|
+
get_container_logs "$CONTAINER_ID"
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
All original bash functions are preserved with identical signatures.
|
|
288
|
+
|
|
289
|
+
## Security
|
|
290
|
+
|
|
291
|
+
### Environment Variable Validation
|
|
292
|
+
|
|
293
|
+
- Blocks dangerous variables: `LD_PRELOAD`, `DOCKER_HOST`, `DOCKER_TLS_VERIFY`
|
|
294
|
+
- Validates variable name format
|
|
295
|
+
- Prevents special character injection
|
|
296
|
+
- Sanitizes values before Docker API calls
|
|
297
|
+
|
|
298
|
+
### Container Name Sanitization
|
|
299
|
+
|
|
300
|
+
- Removes invalid characters automatically
|
|
301
|
+
- Enforces Docker naming constraints
|
|
302
|
+
- Maximum length: 63 characters
|
|
303
|
+
- Prepends `cfn-` prefix for identification
|
|
304
|
+
|
|
305
|
+
### Volume and Network Isolation
|
|
306
|
+
|
|
307
|
+
- All CFN resources labeled with `cfn-managed=true`
|
|
308
|
+
- Isolated subnets per network: `172.20.0.0/16` default
|
|
309
|
+
- Permission-restricted log files: `0600`
|
|
310
|
+
- Dangling volume cleanup on demand
|
|
311
|
+
|
|
312
|
+
## Performance
|
|
313
|
+
|
|
314
|
+
Typical operation latencies:
|
|
315
|
+
- Container creation: ~520ms
|
|
316
|
+
- Container inspection: ~145ms
|
|
317
|
+
- Network creation: ~210ms
|
|
318
|
+
- Volume listing: ~95ms
|
|
319
|
+
- Health check cycle: ~280ms
|
|
320
|
+
|
|
321
|
+
Performance is within 12-21% of bash implementation due to Node.js overhead.
|
|
322
|
+
|
|
323
|
+
## Docker Socket Configuration
|
|
324
|
+
|
|
325
|
+
Default socket path: `/var/run/docker.sock`
|
|
326
|
+
|
|
327
|
+
### Custom Socket
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
const manager = createDockerManager('/custom/docker.sock');
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### TCP Connection
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
const client = new DockerClient(undefined, 'localhost', 2375);
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## License
|
|
340
|
+
|
|
341
|
+
MIT
|
|
342
|
+
|
|
343
|
+
## Contributing
|
|
344
|
+
|
|
345
|
+
This module is part of the CFN Loop system. For changes, please follow TypeScript strict mode and maintain 80%+ test coverage.
|
|
346
|
+
|
|
347
|
+
## Support
|
|
348
|
+
|
|
349
|
+
For issues or questions, refer to the main CFN documentation.
|