claude-flow-novice 2.15.3 → 2.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/.claude/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  2. package/.claude/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  3. package/.claude/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  4. package/.claude/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  5. package/.claude/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  6. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  7. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  8. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  9. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  10. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  11. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  12. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  13. package/.claude/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  14. package/.claude/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  15. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  16. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  17. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  18. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  19. package/.claude/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  20. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  21. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  22. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  23. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  24. package/.claude/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  25. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  26. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  27. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  28. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  29. package/.claude/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  30. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  31. package/.claude/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  32. package/.claude/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  33. package/.claude/commands/cfn-loop-cli.md +29 -6
  34. package/.claude/commands/switch-api.md +31 -10
  35. package/.claude/hooks/cfn-lint-sql-injection.sh +61 -0
  36. package/.claude/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  37. package/.claude/hooks/cfn-pre-edit-security-warning.sh +40 -0
  38. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  39. package/.claude/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  40. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  41. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  42. package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  43. package/.claude/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  44. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +238 -29
  45. package/.claude/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  46. package/.claude/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  47. package/.claude/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  48. package/.claude/skills/cfn-redis-coordination/agent-log.sh +4 -0
  49. package/.claude/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  50. package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  51. package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  52. package/.claude/skills/cfn-redis-coordination/get-context.sh +33 -0
  53. package/.claude/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  54. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +6 -2
  55. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  56. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +34 -0
  57. package/.claude/skills/cfn-redis-coordination/report-completion.sh +24 -31
  58. package/.claude/skills/cfn-redis-coordination/store-context.sh +4 -0
  59. package/.claude/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  60. package/.claude/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  61. package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  62. package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  63. package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  64. package/README.md +116 -475
  65. package/claude-assets/agents/cfn-dev-team/README.md +103 -0
  66. package/claude-assets/agents/cfn-dev-team/architecture/goal-planner.md +1 -1
  67. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +77 -15
  68. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +355 -6
  69. package/claude-assets/agents/cfn-dev-team/coordinators/consensus-builder.md +82 -1
  70. package/claude-assets/agents/cfn-dev-team/coordinators/handoff-coordinator.md +82 -1
  71. package/claude-assets/agents/cfn-dev-team/coordinators/multi-sprint-coordinator.md +77 -15
  72. package/claude-assets/agents/cfn-dev-team/dev-ops/docker-specialist.md +99 -12
  73. package/claude-assets/agents/cfn-dev-team/dev-ops/github-commit-agent.md +1 -1
  74. package/claude-assets/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +97 -0
  75. package/claude-assets/agents/cfn-dev-team/dev-ops/monitoring-specialist.md +20 -1
  76. package/claude-assets/agents/cfn-dev-team/developers/api-gateway-specialist.md +97 -0
  77. package/claude-assets/agents/cfn-dev-team/developers/backend-developer.md +110 -13
  78. package/claude-assets/agents/cfn-dev-team/developers/data/data-engineer.md +106 -15
  79. package/claude-assets/agents/cfn-dev-team/developers/database/database-architect.md +115 -11
  80. package/claude-assets/agents/cfn-dev-team/developers/frontend/mobile-dev.md +94 -7
  81. package/claude-assets/agents/cfn-dev-team/developers/frontend/react-frontend-engineer.md +87 -9
  82. package/claude-assets/agents/cfn-dev-team/developers/frontend/typescript-specialist.md +85 -7
  83. package/claude-assets/agents/cfn-dev-team/developers/frontend/ui-designer.md +160 -28
  84. package/claude-assets/agents/cfn-dev-team/developers/graphql-specialist.md +101 -19
  85. package/claude-assets/agents/cfn-dev-team/developers/rust-developer.md +108 -14
  86. package/claude-assets/agents/cfn-dev-team/reviewers/{reviewer.md → code-reviewer.md} +95 -8
  87. package/claude-assets/agents/cfn-dev-team/reviewers/quality/code-quality-validator.md +107 -7
  88. package/claude-assets/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +98 -7
  89. package/claude-assets/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +95 -7
  90. package/claude-assets/agents/cfn-dev-team/reviewers/quality/security-specialist.md +136 -9
  91. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +108 -1
  92. package/claude-assets/agents/cfn-dev-team/testers/chaos-engineering-specialist.md +107 -13
  93. package/claude-assets/agents/cfn-dev-team/testers/contract-tester.md +737 -0
  94. package/claude-assets/agents/cfn-dev-team/testers/e2e/playwright-tester.md +1 -1
  95. package/claude-assets/agents/cfn-dev-team/testers/integration-tester.md +828 -0
  96. package/claude-assets/agents/cfn-dev-team/testers/interaction-tester.md +106 -7
  97. package/claude-assets/agents/cfn-dev-team/testers/load-testing-specialist.md +77 -0
  98. package/claude-assets/agents/cfn-dev-team/testers/mutation-testing-specialist.md +684 -0
  99. package/claude-assets/agents/cfn-dev-team/testers/playwright-tester.md +110 -1
  100. package/claude-assets/agents/cfn-dev-team/testers/tester.md +94 -7
  101. package/claude-assets/agents/cfn-dev-team/utility/code-booster.md +1 -3
  102. package/claude-assets/agents/cfn-dev-team/utility/epic-creator.md +87 -13
  103. package/claude-assets/agents/cfn-dev-team/utility/memory-leak-specialist.md +103 -7
  104. package/claude-assets/agents/cfn-dev-team/utility/researcher.md +1 -3
  105. package/claude-assets/agents/cfn-dev-team/utility/z-ai-specialist.md +94 -7
  106. package/claude-assets/agents/docker-coordinators/cfn-docker-v3-coordinator.md +46 -0
  107. package/claude-assets/agents/project-only-agents/npm-package-specialist.md +1 -1
  108. package/claude-assets/cfn-extras/skills/advanced-features/cfn-agent-swap/recommend-swap.sh +59 -59
  109. package/claude-assets/cfn-extras/skills/analytics/cfn-improvement-recommender/recommend-improvements.sh +91 -91
  110. package/claude-assets/cfn-extras/skills/analytics/cfn-pattern-extraction/extract-patterns.sh +79 -79
  111. package/claude-assets/cfn-extras/skills/analytics/cfn-retrospective-report/generate-report.sh +100 -100
  112. package/claude-assets/cfn-extras/skills/analytics/cfn-telemetry/start-telemetry.sh +110 -110
  113. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/add-bullet.sh +145 -145
  114. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/log-merge.sh +67 -67
  115. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/monitor-injection-performance.sh +137 -137
  116. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/optimize-injection-pipeline.sh +168 -168
  117. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/query-reflections.sh +35 -35
  118. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/store-reflection.sh +45 -45
  119. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/track-ab-test.sh +41 -41
  120. package/claude-assets/cfn-extras/skills/deprecated/cfn-ace-system/update-reflection.sh +41 -41
  121. package/claude-assets/cfn-extras/skills/deprecated/cfn-cli-setup/validate-cli-environment.sh +191 -191
  122. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/create-campaign.sh +231 -231
  123. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/get-campaign-performance.sh +190 -190
  124. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/pause-campaign.sh +142 -142
  125. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/set-budget.sh +181 -181
  126. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-ad-campaigns/operations/update-bid-strategy.sh +133 -133
  127. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/get-conversation-history.sh +121 -121
  128. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/qualify-lead.sh +156 -156
  129. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/schedule-demo.sh +181 -181
  130. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/send-message.sh +137 -137
  131. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-chatbot-conversations/operations/transfer-to-human.sh +179 -179
  132. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/create-campaign.sh +183 -183
  133. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/get-delivery-status.sh +139 -139
  134. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/opt-out.sh +150 -150
  135. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/schedule-campaign.sh +187 -187
  136. package/claude-assets/cfn-extras/skills/marketing/cfn-marketing-sms-campaigns/operations/send-sms.sh +181 -181
  137. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/test-web-portal-skill.sh +50 -50
  138. package/claude-assets/cfn-extras/skills/ui-portal/cfn-web-portal/validate-deployment.sh +84 -84
  139. package/claude-assets/cfn-extras/skills/utility/cfn-environment-sanitization/sanitize-environment.sh +243 -243
  140. package/claude-assets/commands/cfn-loop-cli.md +29 -6
  141. package/claude-assets/commands/switch-api.md +31 -10
  142. package/claude-assets/hooks/cfn-lint-sql-injection.sh +61 -0
  143. package/claude-assets/hooks/cfn-post-edit-cfn-retrospective.sh +33 -2
  144. package/claude-assets/hooks/cfn-pre-edit-security-warning.sh +40 -0
  145. package/claude-assets/hooks/detect-hardcoded-credentials.sh +212 -0
  146. package/claude-assets/skills/SKILL_TEMPLATE.md +774 -0
  147. package/claude-assets/skills/agent-lifecycle/execute-lifecycle-hook.sh +84 -113
  148. package/claude-assets/skills/agent-lifecycle/simple-audit.sh +33 -6
  149. package/claude-assets/skills/agent-template-generator/SKILL.md +440 -0
  150. package/claude-assets/skills/agent-template-generator/generate-agent.sh +405 -0
  151. package/claude-assets/skills/agent-validation-linter/SKILL.md +589 -0
  152. package/claude-assets/skills/agent-validation-linter/lint-agents.sh +271 -0
  153. package/claude-assets/skills/bootstrap/bash-fundamentals.md +786 -0
  154. package/claude-assets/skills/bootstrap/database-connection.md +464 -0
  155. package/claude-assets/skills/bootstrap/error-handling.md +580 -0
  156. package/claude-assets/skills/bootstrap/file-operations.md +699 -0
  157. package/claude-assets/skills/bootstrap/skill-loader.md +616 -0
  158. package/claude-assets/skills/bootstrap/sqlite-params.sh +287 -0
  159. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh +22 -24
  160. package/claude-assets/skills/cfn-automatic-memory-persistence/test-memory-persistence.sh +17 -16
  161. package/claude-assets/skills/cfn-deployment/SKILL.md +293 -0
  162. package/claude-assets/skills/cfn-deployment/execute.sh +21 -0
  163. package/claude-assets/skills/cfn-docker-agent-spawning/SKILL.md +28 -4
  164. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +3 -1
  165. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +224 -20
  166. package/claude-assets/skills/cfn-environment-sanitization/sanitize-environment.sh +38 -0
  167. package/claude-assets/skills/cfn-error-batching-strategy/lib/core-functions.sh +47 -47
  168. package/claude-assets/skills/cfn-file-operations/SKILL.md +290 -0
  169. package/claude-assets/skills/cfn-file-operations/execute.sh +129 -0
  170. package/claude-assets/skills/cfn-file-operations/lib/atomic-write.sh +294 -0
  171. package/claude-assets/skills/cfn-file-operations/lib/lock.sh +361 -0
  172. package/claude-assets/skills/cfn-file-operations/test.sh +369 -0
  173. package/claude-assets/skills/cfn-log-operations/SKILL.md +308 -0
  174. package/claude-assets/skills/cfn-log-operations/execute.sh +420 -0
  175. package/claude-assets/skills/cfn-log-operations/lib/rotate.sh +406 -0
  176. package/claude-assets/skills/cfn-log-operations/lib/search.sh +448 -0
  177. package/claude-assets/skills/cfn-log-operations/test.sh +394 -0
  178. package/claude-assets/skills/cfn-loop-orchestration/helpers/gate-check.sh +550 -46
  179. package/claude-assets/skills/cfn-loop-orchestration/helpers/parse-test-results.sh +277 -0
  180. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +238 -29
  181. package/claude-assets/skills/cfn-loop-orchestration/security_utils.sh +24 -0
  182. package/claude-assets/skills/cfn-loop-orchestration/test-iteration-context-injection.sh +366 -0
  183. package/claude-assets/skills/cfn-parameterized-queries/SKILL.md +339 -0
  184. package/claude-assets/skills/cfn-playbook/query-playbook.sh +19 -15
  185. package/claude-assets/skills/cfn-playbook/update-playbook.sh +25 -14
  186. package/claude-assets/skills/cfn-process-instrumentation/instrument-process.sh +44 -0
  187. package/claude-assets/skills/cfn-promotion/SKILL.md +305 -0
  188. package/claude-assets/skills/cfn-redis-coordination/CENTRALIZED_REDIS_WRAPPER.md +319 -0
  189. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh +4 -0
  190. package/claude-assets/skills/cfn-redis-coordination/agent-log.sh.bak +124 -0
  191. package/claude-assets/skills/cfn-redis-coordination/agent-recovery.sh +2 -2
  192. package/claude-assets/skills/cfn-redis-coordination/collect-confidence-scores.sh +30 -0
  193. package/claude-assets/skills/cfn-redis-coordination/get-context.sh +33 -0
  194. package/claude-assets/skills/cfn-redis-coordination/get-success-criteria.sh +54 -0
  195. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +6 -2
  196. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +24 -3
  197. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +34 -0
  198. package/claude-assets/skills/cfn-redis-coordination/report-completion.sh +24 -31
  199. package/claude-assets/skills/cfn-redis-coordination/store-context.sh +4 -0
  200. package/claude-assets/skills/cfn-redis-coordination/store-success-criteria.sh +85 -0
  201. package/claude-assets/skills/cfn-redis-coordination/update-all-scripts.sh +67 -0
  202. package/claude-assets/skills/cfn-skill-loader/SKILL.md +466 -0
  203. package/claude-assets/skills/cfn-skill-loader/execute.sh +344 -0
  204. package/claude-assets/skills/cfn-sqlite-memory/ttl-cleanup.sh +17 -25
  205. package/claude-assets/skills/cfn-task-audit/get-audit-data.sh +42 -21
  206. package/claude-assets/skills/cfn-task-audit/store-task-audit.sh +17 -10
  207. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh +17 -14
  208. package/claude-assets/skills/cfn-test-runner/detect-regressions.sh.backup-1763392821 +55 -0
  209. package/claude-assets/skills/cfn-test-runner/store-benchmarks.sh +17 -19
  210. package/claude-assets/skills/cfn-transparency-middleware/test-e2e.sh +15 -0
  211. package/claude-assets/skills/cfn-transparency-middleware/tests/input-validation.sh +15 -0
  212. package/claude-assets/skills/cfn-utilities/SKILL.md +237 -0
  213. package/claude-assets/skills/cfn-utilities/execute.sh +32 -0
  214. package/claude-assets/skills/cfn-utilities/lib/errors.sh +56 -0
  215. package/claude-assets/skills/cfn-utilities/lib/file-ops.sh +164 -0
  216. package/claude-assets/skills/cfn-utilities/lib/logging.sh +77 -0
  217. package/claude-assets/skills/cfn-utilities/lib/retry.sh +127 -0
  218. package/claude-assets/skills/cfn-utilities/test.sh +317 -0
  219. package/claude-assets/skills/integration/agent-handoff.sh +62 -64
  220. package/claude-assets/skills/json-validation/SKILL.md +431 -0
  221. package/claude-assets/skills/json-validation/test-validate-success-criteria.sh +421 -0
  222. package/claude-assets/skills/json-validation/validate-success-criteria.sh +197 -0
  223. package/claude-assets/skills/redis-coordination/validate-parameters.sh +34 -0
  224. package/claude-assets/skills/workflow-codification/DEPLOY_QUICK_REFERENCE.md +106 -0
  225. package/claude-assets/skills/workflow-codification/PROPAGATE_UPDATE_QUICK_REFERENCE.md +366 -0
  226. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh +481 -0
  227. package/claude-assets/skills/workflow-codification/deploy-approved-skill.sh.backup-1763392820 +512 -0
  228. package/claude-assets/skills/workflow-codification/lib/security-utils.sh +204 -0
  229. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh +648 -0
  230. package/claude-assets/skills/workflow-codification/propagate-skill-update.sh.backup-1763392820 +664 -0
  231. package/claude-assets/skills/workflow-codification/test-integration.sh +15 -0
  232. package/claude-assets/skills/workflow-codification/test-metadata-update.sh +350 -0
  233. package/claude-assets/skills/workflow-codification/track-cost-savings.sh +55 -14
  234. package/claude-assets/skills/workflow-codification/track-cost-savings.sh.backup-1763392821 +445 -0
  235. package/claude-assets/skills/workflow-codification/track-edge-case.sh +27 -60
  236. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  237. package/dist/ace/ace-curator.js +10 -2
  238. package/dist/ace/ace-curator.js.map +1 -1
  239. package/dist/ace/ace-generator.js +4 -0
  240. package/dist/ace/ace-generator.js.map +1 -1
  241. package/dist/ace/ace-reflector.js +1 -1
  242. package/dist/ace/ace-reflector.js.map +1 -1
  243. package/dist/ace/context-injection.js +24 -2
  244. package/dist/ace/context-injection.js.map +1 -1
  245. package/dist/agents/task-agent-integration.js +1 -1
  246. package/dist/agents/task-agent-integration.js.map +1 -1
  247. package/dist/api/health-endpoints.js +390 -0
  248. package/dist/api/health-endpoints.js.map +1 -0
  249. package/dist/cli/agent-executor.js +4 -1
  250. package/dist/cli/agent-executor.js.map +1 -1
  251. package/dist/cli/agent-prompt-builder.js +89 -1
  252. package/dist/cli/agent-prompt-builder.js.map +1 -1
  253. package/dist/cli/agent-spawn.js +130 -37
  254. package/dist/cli/agent-spawn.js.map +1 -1
  255. package/dist/cli/config-manager.js +109 -91
  256. package/dist/cli/config-manager.js.map +1 -1
  257. package/dist/cli/conversation-fork-cleanup.js +201 -0
  258. package/dist/cli/conversation-fork-cleanup.js.map +1 -0
  259. package/dist/cli/conversation-fork.js +16 -3
  260. package/dist/cli/conversation-fork.js.map +1 -1
  261. package/dist/cli/skill-cache-validator.js +412 -0
  262. package/dist/cli/skill-cache-validator.js.map +1 -0
  263. package/dist/cli/skill-cli.js +991 -0
  264. package/dist/cli/skill-cli.js.map +1 -0
  265. package/dist/cli/skill-execution-logger.js +284 -0
  266. package/dist/cli/skill-execution-logger.js.map +1 -0
  267. package/dist/cli/skill-loader.js +457 -0
  268. package/dist/cli/skill-loader.js.map +1 -0
  269. package/dist/coordination/event-bus.js +2 -2
  270. package/dist/coordination/event-bus.js.map +1 -1
  271. package/dist/coordination/fleet-manager.js +1 -1
  272. package/dist/coordination/fleet-manager.js.map +1 -1
  273. package/dist/coordination/index.js +23 -9
  274. package/dist/coordination/index.js.map +1 -1
  275. package/dist/coordination/types/fleet-manager.types.js.map +1 -1
  276. package/dist/db/migration-manager.js +483 -0
  277. package/dist/db/migration-manager.js.map +1 -0
  278. package/dist/db/skills-query.js +535 -0
  279. package/dist/db/skills-query.js.map +1 -0
  280. package/dist/integration/DatabaseHandoff.js +1 -1
  281. package/dist/integration/DatabaseHandoff.js.map +1 -1
  282. package/dist/jobs/edge-case-analyzer.js +367 -0
  283. package/dist/jobs/edge-case-analyzer.js.map +1 -0
  284. package/dist/jobs/promotion-sla-enforcer.js +288 -0
  285. package/dist/jobs/promotion-sla-enforcer.js.map +1 -0
  286. package/dist/lib/agent-output-parser.js.map +1 -1
  287. package/dist/lib/agent-output-validator.js.map +1 -1
  288. package/dist/lib/agent-workspace.js +281 -0
  289. package/dist/lib/agent-workspace.js.map +1 -0
  290. package/dist/lib/atomic-file-writer.js +377 -0
  291. package/dist/lib/atomic-file-writer.js.map +1 -0
  292. package/dist/lib/backup-manager.js +779 -0
  293. package/dist/lib/backup-manager.js.map +1 -0
  294. package/dist/lib/checkpoint-manager.js +837 -0
  295. package/dist/lib/checkpoint-manager.js.map +1 -0
  296. package/dist/lib/circuit-breaker.js +340 -0
  297. package/dist/lib/circuit-breaker.js.map +1 -0
  298. package/dist/lib/completion-signal-handler.js +243 -0
  299. package/dist/lib/completion-signal-handler.js.map +1 -0
  300. package/dist/lib/config-manager.js +312 -0
  301. package/dist/lib/config-manager.js.map +1 -0
  302. package/dist/lib/config-migrator.js +386 -0
  303. package/dist/lib/config-migrator.js.map +1 -0
  304. package/dist/lib/config-validator.js.map +1 -1
  305. package/dist/lib/correlation-cache.js +311 -0
  306. package/dist/lib/correlation-cache.js.map +1 -0
  307. package/dist/lib/correlation.js +263 -0
  308. package/dist/lib/correlation.js.map +1 -0
  309. package/dist/lib/database-service/connection-pool-manager.js +520 -0
  310. package/dist/lib/database-service/connection-pool-manager.js.map +1 -0
  311. package/dist/lib/database-service/correlation.js +329 -0
  312. package/dist/lib/database-service/correlation.js.map +1 -0
  313. package/dist/lib/database-service/errors.js +120 -0
  314. package/dist/lib/database-service/errors.js.map +1 -0
  315. package/dist/lib/database-service/index.js +168 -0
  316. package/dist/lib/database-service/index.js.map +1 -0
  317. package/dist/lib/database-service/postgres-adapter.js +526 -0
  318. package/dist/lib/database-service/postgres-adapter.js.map +1 -0
  319. package/dist/lib/database-service/redis-adapter.js +360 -0
  320. package/dist/lib/database-service/redis-adapter.js.map +1 -0
  321. package/dist/lib/database-service/sqlite-adapter.js +544 -0
  322. package/dist/lib/database-service/sqlite-adapter.js.map +1 -0
  323. package/dist/lib/database-service/transaction-manager.js +773 -0
  324. package/dist/lib/database-service/transaction-manager.js.map +1 -0
  325. package/dist/lib/database-service/types.js +23 -0
  326. package/dist/lib/database-service/types.js.map +1 -0
  327. package/dist/lib/deadlock-resolver.js +292 -0
  328. package/dist/lib/deadlock-resolver.js.map +1 -0
  329. package/dist/lib/distributed-lock.js +451 -0
  330. package/dist/lib/distributed-lock.js.map +1 -0
  331. package/dist/lib/edge-case-deduplicator.js +227 -0
  332. package/dist/lib/edge-case-deduplicator.js.map +1 -0
  333. package/dist/lib/encryption-manager.js +322 -0
  334. package/dist/lib/encryption-manager.js.map +1 -0
  335. package/dist/lib/error-aggregator.js +234 -0
  336. package/dist/lib/error-aggregator.js.map +1 -0
  337. package/dist/lib/errors.js +287 -0
  338. package/dist/lib/errors.js.map +1 -0
  339. package/dist/lib/file-lock-manager.js +578 -0
  340. package/dist/lib/file-lock-manager.js.map +1 -0
  341. package/dist/lib/file-operations.js +367 -0
  342. package/dist/lib/file-operations.js.map +1 -0
  343. package/dist/lib/idempotent-write.js +237 -0
  344. package/dist/lib/idempotent-write.js.map +1 -0
  345. package/dist/lib/integration-schema-validator.js +522 -0
  346. package/dist/lib/integration-schema-validator.js.map +1 -0
  347. package/dist/lib/lock-health-monitor.js +298 -0
  348. package/dist/lib/lock-health-monitor.js.map +1 -0
  349. package/dist/lib/log-shipper.js +422 -0
  350. package/dist/lib/log-shipper.js.map +1 -0
  351. package/dist/lib/logging.js +146 -0
  352. package/dist/lib/logging.js.map +1 -0
  353. package/dist/lib/message-deduplicator.js +439 -0
  354. package/dist/lib/message-deduplicator.js.map +1 -0
  355. package/dist/lib/multi-system-query.js +604 -0
  356. package/dist/lib/multi-system-query.js.map +1 -0
  357. package/dist/lib/orphan-detector.js +332 -0
  358. package/dist/lib/orphan-detector.js.map +1 -0
  359. package/dist/lib/password-generator.js +166 -0
  360. package/dist/lib/password-generator.js.map +1 -0
  361. package/dist/lib/path-validator.js +429 -0
  362. package/dist/lib/path-validator.js.map +1 -0
  363. package/dist/lib/query-translator.js +905 -0
  364. package/dist/lib/query-translator.js.map +1 -0
  365. package/dist/lib/queue-recovery.js +469 -0
  366. package/dist/lib/queue-recovery.js.map +1 -0
  367. package/dist/lib/redis-queue-manager.js +512 -0
  368. package/dist/lib/redis-queue-manager.js.map +1 -0
  369. package/dist/lib/reflection-archiver.js +272 -0
  370. package/dist/lib/reflection-archiver.js.map +1 -0
  371. package/dist/lib/retry-manager.js +453 -0
  372. package/dist/lib/retry-manager.js.map +1 -0
  373. package/dist/lib/retry.js +262 -0
  374. package/dist/lib/retry.js.map +1 -0
  375. package/dist/lib/schema-transform.js +695 -0
  376. package/dist/lib/schema-transform.js.map +1 -0
  377. package/dist/lib/schema-validator.js +491 -0
  378. package/dist/lib/schema-validator.js.map +1 -0
  379. package/dist/lib/skill-cache.js +297 -0
  380. package/dist/lib/skill-cache.js.map +1 -0
  381. package/dist/lib/skill-content-manager.js +337 -0
  382. package/dist/lib/skill-content-manager.js.map +1 -0
  383. package/dist/lib/skill-frontmatter-parser.js +237 -0
  384. package/dist/lib/skill-frontmatter-parser.js.map +1 -0
  385. package/dist/lib/skill-git-integration.js +275 -0
  386. package/dist/lib/skill-git-integration.js.map +1 -0
  387. package/dist/lib/skill-markdown-validator.js +396 -0
  388. package/dist/lib/skill-markdown-validator.js.map +1 -0
  389. package/dist/lib/skill-output-parser.js +312 -0
  390. package/dist/lib/skill-output-parser.js.map +1 -0
  391. package/dist/lib/unified-query-api.js +467 -0
  392. package/dist/lib/unified-query-api.js.map +1 -0
  393. package/dist/middleware/auth-middleware.js +350 -0
  394. package/dist/middleware/auth-middleware.js.map +1 -0
  395. package/dist/middleware/schema-validation.js +347 -0
  396. package/dist/middleware/schema-validation.js.map +1 -0
  397. package/dist/providers/anthropic-provider.js +1 -1
  398. package/dist/providers/anthropic-provider.js.map +1 -1
  399. package/dist/providers/provider-factory.js +2 -2
  400. package/dist/providers/provider-factory.js.map +1 -1
  401. package/dist/services/edge-case-analyzer.js +321 -0
  402. package/dist/services/edge-case-analyzer.js.map +1 -0
  403. package/dist/services/edge-case-deduplicator.js +266 -0
  404. package/dist/services/edge-case-deduplicator.js.map +1 -0
  405. package/dist/services/edge-case-detector.js +337 -0
  406. package/dist/services/edge-case-detector.js.map +1 -0
  407. package/dist/services/edge-case-tracker.js +547 -0
  408. package/dist/services/edge-case-tracker.js.map +1 -0
  409. package/dist/services/health-check-system.js +586 -0
  410. package/dist/services/health-check-system.js.map +1 -0
  411. package/dist/services/metrics-logger.js +412 -0
  412. package/dist/services/metrics-logger.js.map +1 -0
  413. package/dist/services/patch-generator.js +378 -0
  414. package/dist/services/patch-generator.js.map +1 -0
  415. package/dist/services/patch-validator.js +337 -0
  416. package/dist/services/patch-validator.js.map +1 -0
  417. package/dist/services/performance-monitor.js +811 -0
  418. package/dist/services/performance-monitor.js.map +1 -0
  419. package/dist/services/promotion-pipeline.js +918 -0
  420. package/dist/services/promotion-pipeline.js.map +1 -0
  421. package/dist/services/promotion-validator.js +394 -0
  422. package/dist/services/promotion-validator.js.map +1 -0
  423. package/dist/services/reflection-logger.js +388 -0
  424. package/dist/services/reflection-logger.js.map +1 -0
  425. package/dist/services/skill-deployment.js +472 -0
  426. package/dist/services/skill-deployment.js.map +1 -0
  427. package/dist/services/skill-loader.js +427 -0
  428. package/dist/services/skill-loader.js.map +1 -0
  429. package/dist/services/skill-promotion.js +372 -0
  430. package/dist/services/skill-promotion.js.map +1 -0
  431. package/dist/services/skill-validator.js +454 -0
  432. package/dist/services/skill-validator.js.map +1 -0
  433. package/dist/services/skill-versioning.js +244 -0
  434. package/dist/services/skill-versioning.js.map +1 -0
  435. package/dist/services/workspace-supervisor.js +597 -0
  436. package/dist/services/workspace-supervisor.js.map +1 -0
  437. package/dist/types/edge-case.js +45 -0
  438. package/dist/types/edge-case.js.map +1 -0
  439. package/docs/BUG_19_MEMORY_LEAK_TASK_MODE.md +405 -0
  440. package/docs/MEMORY_CLEANUP_GUIDE.md +358 -0
  441. package/docs/MEMORY_LEAK_FIX_SUMMARY.md +322 -0
  442. package/docs/REDIS_CLEANUP_EXECUTIVE_SUMMARY.md +319 -0
  443. package/docs/REDIS_CLEANUP_VERIFICATION_REPORT.md +574 -0
  444. package/package.json +35 -4
  445. package/readme/README.md +53 -5
  446. package/scripts/backup-cleanup.sh +627 -0
  447. package/scripts/cleanup-workspaces.sh +412 -0
  448. package/scripts/cleanup-yaml-configs.sh +141 -0
  449. package/scripts/deploy-approved-skills.sh +263 -0
  450. package/scripts/health-check.sh +447 -0
  451. package/scripts/log-aggregator.sh +554 -0
  452. package/scripts/log-monitor.sh +629 -0
  453. package/scripts/manage-agent-workspaces.sh +434 -0
  454. package/scripts/migrate-schema.sh +533 -0
  455. package/scripts/promote-staged-skills.sh +423 -0
  456. package/scripts/verify-no-secrets.sh +88 -35
  457. package/scripts/verify-redis-cleanup.sh +173 -0
  458. package/tests/README.md +84 -0
  459. package/tests/test-memory-leak-task-mode.sh +435 -0
  460. package/.claude/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  461. package/.claude/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  462. package/.claude/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  463. package/.claude/skills/agent-lifecycle/SKILL.md +0 -60
  464. package/.claude/skills/agent-lifecycle/execute-lifecycle-hook.sh +0 -573
  465. package/.claude/skills/agent-lifecycle/simple-audit.sh +0 -31
  466. package/.claude/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  467. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
  468. package/README.md.backup_before_replace +0 -781
  469. package/claude-assets/cfn-extras/agents/deprecated-coordinators/adaptive-coordinator.md.backup +0 -161
  470. package/claude-assets/cfn-extras/agents/deprecated-coordinators/blocking-coordinator-example.md.backup +0 -728
  471. package/claude-assets/cfn-extras/agents/deprecated-coordinators/mesh-coordinator.md.backup +0 -131
  472. package/claude-assets/skills/cfn-agent-spawning/spawn-agent.sh.backup +0 -273
  473. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh.backup +0 -949
@@ -96,4 +96,28 @@ function validate_agent_list() {
96
96
  done
97
97
 
98
98
  return 0
99
+ }
100
+
101
+ # SECURITY FIX: Sanitize Docker environment variables to prevent command injection
102
+ # Allowed characters: alphanumeric, dash, colon, slash, dot, underscore
103
+ # This prevents injection attacks via malicious CFN_DOCKER_IMAGE, CFN_DOCKER_NETWORK, etc.
104
+ function sanitize_docker_var() {
105
+ local var="$1"
106
+ local pattern="^[a-zA-Z0-9._:/-]+$"
107
+
108
+ # Check if input is empty
109
+ if [ -z "$var" ]; then
110
+ echo "Error: Docker variable cannot be empty" >&2
111
+ return 1
112
+ fi
113
+
114
+ # Validate against allowed pattern (no semicolons, backticks, pipes, etc.)
115
+ if [[ ! "$var" =~ $pattern ]]; then
116
+ echo "❌ Invalid characters in Docker variable: $var" >&2
117
+ echo " Only alphanumeric, dash, colon, slash, dot, and underscore allowed" >&2
118
+ return 1
119
+ fi
120
+
121
+ # If all checks pass, echo the sanitized input
122
+ echo "$var"
99
123
  }
@@ -0,0 +1,366 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ ##############################################################################
5
+ # Test: Iteration Context Injection
6
+ # Validates that build_agent_context() injects test failure diagnostics
7
+ # from previous iteration into agent context
8
+ #
9
+ # NOTE: Float comparisons in bash require bc or awk:
10
+ # CORRECT: (( $(echo "$value >= 0.95" | bc -l) ))
11
+ # WRONG: [[ "$value" -ge 0.95 ]] # -ge only works with integers
12
+ ##############################################################################
13
+
14
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
16
+
17
+ # Colors for output
18
+ GREEN='\033[0;32m'
19
+ RED='\033[0;31m'
20
+ YELLOW='\033[1;33m'
21
+ NC='\033[0m' # No Color
22
+
23
+ # Test counters
24
+ TESTS_RUN=0
25
+ TESTS_PASSED=0
26
+ TESTS_FAILED=0
27
+
28
+ ##############################################################################
29
+ # Extract and define build_agent_context function
30
+ ##############################################################################
31
+
32
+ # Extract just the build_agent_context function from orchestrate.sh
33
+ # We'll define it inline to avoid sourcing the entire script
34
+ build_agent_context() {
35
+ local task_id="$1"
36
+ local iteration="$2"
37
+ local agent_type="$3"
38
+ local feedback="$4"
39
+ local loop_type="${5:-}"
40
+
41
+ # Initialize context variables
42
+ local context="Task: CFN Loop implementation"
43
+
44
+ # Simplified version for testing - just the core functionality
45
+ context="$context | Iteration: $iteration"
46
+
47
+ # Inject test failure diagnostics from previous iteration
48
+ if [ "$iteration" -gt 1 ]; then
49
+ local iteration_context_file="/tmp/cfn-iteration-context-${task_id}.json"
50
+
51
+ if [ -f "$iteration_context_file" ]; then
52
+ # Extract failed test summary from iteration context
53
+ local failed_summary=$(jq -r '
54
+ if .failed_tests and (.failed_tests | length > 0) then
55
+ "Previous Test Results: Pass Rate " + (.pass_rate * 100 | floor | tostring) + "% | Failed Tests: " +
56
+ ([.failed_tests[].failed_test_names[]? // empty] | join(", "))
57
+ else
58
+ empty
59
+ end
60
+ ' "$iteration_context_file" 2>/dev/null)
61
+
62
+ if [ -n "$failed_summary" ]; then
63
+ context="$context | $failed_summary"
64
+ echo "📊 Injected test diagnostics from previous iteration" >&2
65
+ fi
66
+ fi
67
+ fi
68
+
69
+ if [[ -n "$feedback" ]]; then
70
+ context="$context | Feedback: $feedback"
71
+ fi
72
+
73
+ echo "$context"
74
+ }
75
+
76
+ ##############################################################################
77
+ # Test Helpers
78
+ ##############################################################################
79
+
80
+ print_test_header() {
81
+ echo ""
82
+ echo "=========================================="
83
+ echo "TEST: $1"
84
+ echo "=========================================="
85
+ }
86
+
87
+ assert_contains() {
88
+ local haystack="$1"
89
+ local needle="$2"
90
+ local test_name="$3"
91
+
92
+ TESTS_RUN=$((TESTS_RUN + 1))
93
+
94
+ if echo "$haystack" | grep -q "$needle"; then
95
+ echo -e "${GREEN}✓ PASS${NC}: $test_name"
96
+ TESTS_PASSED=$((TESTS_PASSED + 1))
97
+ return 0
98
+ else
99
+ echo -e "${RED}✗ FAIL${NC}: $test_name"
100
+ echo " Expected to find: '$needle'"
101
+ echo " In output: '$haystack'"
102
+ TESTS_FAILED=$((TESTS_FAILED + 1))
103
+ return 1
104
+ fi
105
+ }
106
+
107
+ assert_not_contains() {
108
+ local haystack="$1"
109
+ local needle="$2"
110
+ local test_name="$3"
111
+
112
+ TESTS_RUN=$((TESTS_RUN + 1))
113
+
114
+ if ! echo "$haystack" | grep -q "$needle"; then
115
+ echo -e "${GREEN}✓ PASS${NC}: $test_name"
116
+ TESTS_PASSED=$((TESTS_PASSED + 1))
117
+ return 0
118
+ else
119
+ echo -e "${RED}✗ FAIL${NC}: $test_name"
120
+ echo " Expected NOT to find: '$needle'"
121
+ echo " In output: '$haystack'"
122
+ TESTS_FAILED=$((TESTS_FAILED + 1))
123
+ return 1
124
+ fi
125
+ }
126
+
127
+ cleanup() {
128
+ rm -f /tmp/cfn-iteration-context-test-task-*.json
129
+ }
130
+
131
+ trap cleanup EXIT
132
+
133
+ ##############################################################################
134
+ # Test 1: Iteration 1 should NOT inject test diagnostics
135
+ ##############################################################################
136
+
137
+ test_iteration_1_no_diagnostics() {
138
+ print_test_header "Iteration 1 - No Test Diagnostics"
139
+
140
+ local task_id="test-task-no-diag"
141
+ local output
142
+
143
+ # Call build_agent_context with iteration=1
144
+ output=$(build_agent_context "$task_id" "1" "backend-developer" "" "loop3" 2>&1)
145
+
146
+ # Should NOT contain "Previous Test Results"
147
+ assert_not_contains "$output" "Previous Test Results" \
148
+ "Iteration 1 should not inject test diagnostics"
149
+
150
+ # Should contain "Iteration: 1"
151
+ assert_contains "$output" "Iteration: 1" \
152
+ "Iteration 1 should show iteration number"
153
+ }
154
+
155
+ ##############################################################################
156
+ # Test 2: Iteration 2 with failed tests should inject diagnostics
157
+ ##############################################################################
158
+
159
+ test_iteration_2_with_failures() {
160
+ print_test_header "Iteration 2 - With Failed Tests"
161
+
162
+ local task_id="test-task-with-failures"
163
+ local context_file="/tmp/cfn-iteration-context-${task_id}.json"
164
+
165
+ # Create mock iteration context with failed tests
166
+ cat > "$context_file" <<'EOF'
167
+ {
168
+ "gate_status": "failed",
169
+ "pass_rate": 0.80,
170
+ "threshold": 0.95,
171
+ "gap": 0.15,
172
+ "failed_tests": [
173
+ {
174
+ "framework": "jest",
175
+ "total_tests": 10,
176
+ "passed_tests": 8,
177
+ "failed_tests": 2,
178
+ "pass_rate": 0.80,
179
+ "failed_test_names": [
180
+ "JWT authentication › should reject expired tokens",
181
+ "JWT authentication › should refresh tokens correctly"
182
+ ]
183
+ }
184
+ ]
185
+ }
186
+ EOF
187
+
188
+ local output
189
+
190
+ # Call build_agent_context with iteration=2
191
+ output=$(build_agent_context "$task_id" "2" "backend-developer" "" "loop3" 2>&1)
192
+
193
+ # Should contain "Previous Test Results"
194
+ assert_contains "$output" "Previous Test Results" \
195
+ "Iteration 2 should inject test diagnostics header"
196
+
197
+ # Should contain "Pass Rate 80%"
198
+ assert_contains "$output" "Pass Rate 80%" \
199
+ "Should show pass rate from previous iteration"
200
+
201
+ # Should contain failed test names
202
+ assert_contains "$output" "JWT authentication › should reject expired tokens" \
203
+ "Should include first failed test name"
204
+
205
+ assert_contains "$output" "JWT authentication › should refresh tokens correctly" \
206
+ "Should include second failed test name"
207
+
208
+ # Should contain "Iteration: 2"
209
+ assert_contains "$output" "Iteration: 2" \
210
+ "Should show iteration number"
211
+
212
+ # Clean up
213
+ rm -f "$context_file"
214
+ }
215
+
216
+ ##############################################################################
217
+ # Test 3: Iteration 2 with no context file should work gracefully
218
+ ##############################################################################
219
+
220
+ test_iteration_2_no_context_file() {
221
+ print_test_header "Iteration 2 - No Context File"
222
+
223
+ local task_id="test-task-no-context"
224
+ local output
225
+
226
+ # Ensure no context file exists
227
+ rm -f "/tmp/cfn-iteration-context-${task_id}.json"
228
+
229
+ # Call build_agent_context with iteration=2
230
+ output=$(build_agent_context "$task_id" "2" "backend-developer" "" "loop3" 2>&1)
231
+
232
+ # Should NOT contain "Previous Test Results" (no file)
233
+ assert_not_contains "$output" "Previous Test Results" \
234
+ "Iteration 2 without context file should not inject diagnostics"
235
+
236
+ # Should still contain "Iteration: 2"
237
+ assert_contains "$output" "Iteration: 2" \
238
+ "Should show iteration number even without diagnostics"
239
+ }
240
+
241
+ ##############################################################################
242
+ # Test 4: Iteration 2 with all tests passing should not inject diagnostics
243
+ ##############################################################################
244
+
245
+ test_iteration_2_all_passed() {
246
+ print_test_header "Iteration 2 - All Tests Passed"
247
+
248
+ local task_id="test-task-all-passed"
249
+ local context_file="/tmp/cfn-iteration-context-${task_id}.json"
250
+
251
+ # Create mock iteration context with all tests passing
252
+ cat > "$context_file" <<'EOF'
253
+ {
254
+ "gate_status": "passed",
255
+ "pass_rate": 1.0,
256
+ "threshold": 0.95,
257
+ "gap": 0.0,
258
+ "failed_tests": []
259
+ }
260
+ EOF
261
+
262
+ local output
263
+
264
+ # Call build_agent_context with iteration=2
265
+ output=$(build_agent_context "$task_id" "2" "backend-developer" "" "loop3" 2>&1)
266
+
267
+ # Should NOT contain "Previous Test Results" (no failures)
268
+ assert_not_contains "$output" "Previous Test Results" \
269
+ "Iteration 2 with all tests passing should not inject diagnostics"
270
+
271
+ # Clean up
272
+ rm -f "$context_file"
273
+ }
274
+
275
+ ##############################################################################
276
+ # Test 5: Multiple failed test suites should combine diagnostics
277
+ ##############################################################################
278
+
279
+ test_multiple_failed_suites() {
280
+ print_test_header "Multiple Failed Test Suites"
281
+
282
+ local task_id="test-task-multi-suites"
283
+ local context_file="/tmp/cfn-iteration-context-${task_id}.json"
284
+
285
+ # Create mock iteration context with multiple failed test suites
286
+ cat > "$context_file" <<'EOF'
287
+ {
288
+ "gate_status": "failed",
289
+ "pass_rate": 0.75,
290
+ "threshold": 0.95,
291
+ "gap": 0.20,
292
+ "failed_tests": [
293
+ {
294
+ "framework": "jest",
295
+ "pass_rate": 0.80,
296
+ "failed_test_names": [
297
+ "Auth › should validate JWT tokens"
298
+ ]
299
+ },
300
+ {
301
+ "framework": "jest",
302
+ "pass_rate": 0.70,
303
+ "failed_test_names": [
304
+ "Database › should handle connection errors",
305
+ "Database › should retry on timeout"
306
+ ]
307
+ }
308
+ ]
309
+ }
310
+ EOF
311
+
312
+ local output
313
+
314
+ # Call build_agent_context with iteration=2
315
+ output=$(build_agent_context "$task_id" "2" "backend-developer" "" "loop3" 2>&1)
316
+
317
+ # Should contain all failed test names
318
+ assert_contains "$output" "Auth › should validate JWT tokens" \
319
+ "Should include failed test from first suite"
320
+
321
+ assert_contains "$output" "Database › should handle connection errors" \
322
+ "Should include first failed test from second suite"
323
+
324
+ assert_contains "$output" "Database › should retry on timeout" \
325
+ "Should include second failed test from second suite"
326
+
327
+ # Clean up
328
+ rm -f "$context_file"
329
+ }
330
+
331
+ ##############################################################################
332
+ # Run All Tests
333
+ ##############################################################################
334
+
335
+ echo ""
336
+ echo "=================================================="
337
+ echo " Iteration Context Injection Test Suite"
338
+ echo "=================================================="
339
+ echo ""
340
+
341
+ test_iteration_1_no_diagnostics
342
+ test_iteration_2_with_failures
343
+ test_iteration_2_no_context_file
344
+ test_iteration_2_all_passed
345
+ test_multiple_failed_suites
346
+
347
+ ##############################################################################
348
+ # Summary
349
+ ##############################################################################
350
+
351
+ echo ""
352
+ echo "=================================================="
353
+ echo " Test Summary"
354
+ echo "=================================================="
355
+ echo "Total Tests: $TESTS_RUN"
356
+ echo -e "Passed: ${GREEN}$TESTS_PASSED${NC}"
357
+ echo -e "Failed: ${RED}$TESTS_FAILED${NC}"
358
+ echo ""
359
+
360
+ if [ $TESTS_FAILED -eq 0 ]; then
361
+ echo -e "${GREEN}✓ All tests passed!${NC}"
362
+ exit 0
363
+ else
364
+ echo -e "${RED}✗ Some tests failed${NC}"
365
+ exit 1
366
+ fi
@@ -0,0 +1,319 @@
1
+ # Centralized Redis Wrapper - Graceful Fallback for Task Mode
2
+
3
+ **Version:** 1.0
4
+ **Date:** 2025-11-16
5
+ **Status:** Production Ready
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ This document describes the centralized Redis wrapper implementation that provides graceful fallback for Task mode execution, solving the ANTI-023 memory leak issue without requiring mode detection.
12
+
13
+ ## Problem Statement
14
+
15
+ **Original Issue:**
16
+ - CLI mode agents (spawned via `npx claude-flow-novice`) need Redis for coordination
17
+ - Task mode agents (spawned via `Task()` tool) should NOT use Redis (causes memory leaks)
18
+ - Mode detection was unreliable (both modes could have TASK_ID/AGENT_ID)
19
+
20
+ **Solution:**
21
+ Instead of trying to detect mode, **make Redis commands fail gracefully** when Redis is unavailable.
22
+
23
+ ## Architecture
24
+
25
+ ### Components
26
+
27
+ **1. redis-cli-wrapper.sh** (Centralized wrapper)
28
+ - Checks if Redis is available (1 second timeout)
29
+ - If available → execute command normally (CLI/Docker mode)
30
+ - If unavailable → soft fail with informative message (Task mode)
31
+
32
+ **2. redis-functions.sh** (Function override)
33
+ - Sources the wrapper
34
+ - Exports `redis-cli()` function that overrides the system command
35
+ - All scripts using redis-cli automatically get graceful fallback
36
+
37
+ **3. Coordination scripts** (Updated to source redis-functions.sh)
38
+ - `report-completion.sh` - Main agent completion protocol
39
+ - Other scripts can be updated as needed
40
+
41
+ ### How It Works
42
+
43
+ ```bash
44
+ # Script sources redis-functions.sh
45
+ source ./.claude/skills/cfn-redis-coordination/redis-functions.sh
46
+
47
+ # All redis-cli calls now use the wrapper
48
+ redis-cli LPUSH "key" "value" # Fails gracefully if Redis unavailable
49
+ ```
50
+
51
+ **Execution Flow:**
52
+
53
+ ```text
54
+ 1. Script calls redis-cli LPUSH "key" "value"
55
+ 2. redis-functions.sh overrides redis-cli → calls wrapper
56
+ 3. Wrapper checks: timeout 1 redis-cli ping
57
+ ├─ Success? → Execute command (CLI/Docker mode)
58
+ └─ Timeout? → Print warning, exit 0 (Task mode)
59
+ 4. Script continues (no fatal error)
60
+ ```
61
+
62
+ ## Benefits
63
+
64
+ ✅ **No mode detection needed** - Just check if Redis responds
65
+ ✅ **Simpler** - One code path, graceful degradation
66
+ ✅ **Self-healing** - Works in both Task mode (no Redis) AND CLI mode (has Redis)
67
+ ✅ **No memory leak** - If Redis isn't available, commands fail fast (exit 0)
68
+ ✅ **Clear feedback** - Informative messages explain what's happening
69
+ ✅ **Centralized** - One place to change behavior (redis-cli-wrapper.sh)
70
+ ✅ **Backward compatible** - Scripts without redis-functions.sh still work (use system redis-cli)
71
+
72
+ ## Usage
73
+
74
+ ### For New Scripts
75
+
76
+ Add this at the top of any script that uses Redis:
77
+
78
+ ```bash
79
+ #!/bin/bash
80
+ set -euo pipefail
81
+
82
+ # Source centralized Redis functions (provides graceful fallback for Task mode)
83
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
84
+ source "${SCRIPT_DIR}/redis-functions.sh"
85
+
86
+ # Now use redis-cli normally
87
+ redis-cli LPUSH "swarm:task-123:done" "complete"
88
+ redis-cli SET "key" "value" EX 3600
89
+ ```
90
+
91
+ ### For Existing Scripts
92
+
93
+ 1. Add the source block after `set -euo pipefail`
94
+ 2. Remove manual ANTI-023 checks (wrapper handles it)
95
+ 3. Simplify redis-cli calls (no need for `-h` / `-p` flags)
96
+
97
+ **Before:**
98
+ ```bash
99
+ if [[ -z "${TASK_ID:-}" || -z "${AGENT_ID:-}" ]]; then
100
+ echo "❌ TASK MODE DETECTED - Redis coordination forbidden" >&2
101
+ exit 1
102
+ fi
103
+
104
+ redis-cli -h "${REDIS_HOST:-localhost}" -p "${REDIS_PORT:-6379}" LPUSH "key" "value"
105
+ ```
106
+
107
+ **After:**
108
+ ```bash
109
+ source "${SCRIPT_DIR}/redis-functions.sh"
110
+
111
+ redis-cli LPUSH "key" "value"
112
+ ```
113
+
114
+ ### Testing Graceful Fallback
115
+
116
+ Test that your script handles Redis unavailability:
117
+
118
+ ```bash
119
+ # Simulate Task mode (Redis unavailable)
120
+ REDIS_HOST="nonexistent" bash your-script.sh --args
121
+
122
+ # Expected output:
123
+ ⚠️ Redis unavailable - command skipped (soft fail)
124
+ 💡 This is expected in Task mode (Main Chat coordination)
125
+ 🔧 Agents should output JSON directly instead of Redis coordination
126
+ ✅ Script completed successfully
127
+ ```
128
+
129
+ ## Implementation Details
130
+
131
+ ### redis-cli-wrapper.sh
132
+
133
+ ```bash
134
+ #!/bin/bash
135
+ set -euo pipefail
136
+
137
+ REDIS_HOST="${REDIS_HOST:-localhost}"
138
+ REDIS_PORT="${REDIS_PORT:-6379}"
139
+
140
+ # Graceful Redis availability check (1 second timeout)
141
+ if ! timeout 1 redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ping &>/dev/null; then
142
+ # Redis unavailable - likely Task mode
143
+ echo "⚠️ Redis unavailable - command skipped (soft fail)" >&2
144
+ echo "💡 This is expected in Task mode (Main Chat coordination)" >&2
145
+ echo "🔧 Agents should output JSON directly instead of Redis coordination" >&2
146
+ exit 0 # Soft fail - don't break agent execution
147
+ fi
148
+
149
+ # Redis available - execute command normally (CLI/Docker mode)
150
+ exec redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" "$@"
151
+ ```
152
+
153
+ **Key Features:**
154
+ - 1 second timeout (prevents hanging)
155
+ - Informative error messages
156
+ - Exit 0 (soft fail, agent continues)
157
+ - Respects REDIS_HOST/REDIS_PORT environment variables
158
+
159
+ ### redis-functions.sh
160
+
161
+ ```bash
162
+ #!/bin/bash
163
+
164
+ # Get the directory where this script is located
165
+ REDIS_FUNCTIONS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
166
+
167
+ # Override redis-cli to always use the wrapper
168
+ redis-cli() {
169
+ "${REDIS_FUNCTIONS_DIR}/redis-cli-wrapper.sh" "$@"
170
+ }
171
+
172
+ # Export the function so it's available in subshells
173
+ export -f redis-cli
174
+
175
+ # Helper: Check if Redis is available (useful for conditional logic)
176
+ is_redis_available() {
177
+ timeout 1 "${REDIS_FUNCTIONS_DIR}/redis-cli-wrapper.sh" ping &>/dev/null
178
+ return $?
179
+ }
180
+
181
+ export -f is_redis_available
182
+ ```
183
+
184
+ **Key Features:**
185
+ - Function override (all redis-cli calls use wrapper)
186
+ - Exported for subshells
187
+ - Helper function `is_redis_available()` for conditional logic
188
+
189
+ ## Migration Guide
190
+
191
+ ### Step 1: Update Core Scripts
192
+
193
+ Update the most critical coordination scripts first:
194
+
195
+ 1. `report-completion.sh` ✅ (Already updated)
196
+ 2. `collect-confidence-scores.sh`
197
+ 3. `invoke-waiting-mode.sh`
198
+ 4. `store-context.sh`
199
+ 5. `get-context.sh`
200
+
201
+ ### Step 2: Test Each Script
202
+
203
+ For each updated script:
204
+
205
+ ```bash
206
+ # Test with Redis available (CLI mode simulation)
207
+ bash script.sh --args
208
+
209
+ # Test with Redis unavailable (Task mode simulation)
210
+ REDIS_HOST="nonexistent" bash script.sh --args
211
+ ```
212
+
213
+ ### Step 3: Update Agent Profiles (Optional)
214
+
215
+ Agent profiles can now simplify their Redis usage examples:
216
+
217
+ **Before:**
218
+ ```markdown
219
+ redis-cli -h "${REDIS_HOST:-localhost}" -p "${REDIS_PORT:-6379}" LPUSH "key" "value"
220
+ ```
221
+
222
+ **After:**
223
+ ```markdown
224
+ # Redis coordination (automatically fails gracefully in Task mode)
225
+ redis-cli LPUSH "key" "value"
226
+ ```
227
+
228
+ ## Troubleshooting
229
+
230
+ ### Issue: "Permission denied" when running wrapper
231
+
232
+ **Solution:**
233
+ ```bash
234
+ chmod +x .claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh
235
+ chmod +x .claude/skills/cfn-redis-coordination/redis-functions.sh
236
+ ```
237
+
238
+ ### Issue: "$'\r': command not found" (CRLF line endings)
239
+
240
+ **Solution:**
241
+ ```bash
242
+ sed -i 's/\r$//' .claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh
243
+ sed -i 's/\r$//' .claude/skills/cfn-redis-coordination/redis-functions.sh
244
+ ```
245
+
246
+ ### Issue: Redis commands still hanging
247
+
248
+ **Cause:** Script not sourcing redis-functions.sh
249
+
250
+ **Solution:** Add source line at top of script:
251
+ ```bash
252
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
253
+ source "${SCRIPT_DIR}/redis-functions.sh"
254
+ ```
255
+
256
+ ## Performance Impact
257
+
258
+ **Redis Available (CLI/Docker mode):**
259
+ - Ping check: ~1-5ms overhead per script execution
260
+ - Command execution: No overhead (exec replaces process)
261
+
262
+ **Redis Unavailable (Task mode):**
263
+ - Ping timeout: 1 second (one-time per script, not per command)
264
+ - Total overhead: ~1 second per script execution
265
+ - Acceptable for Task mode (not performance-critical)
266
+
267
+ ## Security Considerations
268
+
269
+ **Timeout Protection:**
270
+ - 1 second timeout prevents indefinite hanging
271
+ - Protects against network issues
272
+
273
+ **Environment Variables:**
274
+ - Respects REDIS_HOST/REDIS_PORT for configuration
275
+ - No hardcoded credentials
276
+
277
+ **Soft Failure:**
278
+ - Exit 0 prevents cascade failures
279
+ - Agent can continue execution
280
+
281
+ ## Success Metrics
282
+
283
+ **Test Results:**
284
+ - ✅ report-completion.sh tested with nonexistent Redis host
285
+ - ✅ All 6 redis-cli calls failed gracefully (exit 0)
286
+ - ✅ Script completed successfully with informative warnings
287
+ - ✅ No memory leaks (commands timeout after 1 second)
288
+
289
+ **Expected Behavior:**
290
+ - CLI mode: Redis available → normal execution
291
+ - Docker mode: Redis available → normal execution
292
+ - Task mode: Redis unavailable → graceful fallback, agent continues
293
+
294
+ ## Conclusion
295
+
296
+ The centralized Redis wrapper provides a robust, simple solution to the ANTI-023 memory leak issue. By focusing on **graceful failure** instead of **mode detection**, we achieve:
297
+
298
+ 1. **Reliability** - Works regardless of mode detection accuracy
299
+ 2. **Simplicity** - One code path, clear behavior
300
+ 3. **Maintainability** - Centralized in one wrapper file
301
+ 4. **Safety** - No memory leaks, no hanging processes
302
+
303
+ This approach is **production-ready** and can be rolled out incrementally (script by script) without disrupting existing workflows.
304
+
305
+ ---
306
+
307
+ **See Also:**
308
+ - `docs/architecture/task-mode-redis-safety-patterns.md` - Original ANTI-023 analysis
309
+ - `CLAUDE.md` - CFN Loop execution modes
310
+ - `.claude/skills/cfn-redis-coordination/SKILL.md` - Coordination protocols
311
+
312
+ **Next Steps:**
313
+ 1. Update remaining coordination scripts
314
+ 2. Test in production CFN Loop execution
315
+ 3. Document in agent profiles
316
+ 4. Monitor for any edge cases
317
+
318
+ **Version History:**
319
+ - v1.0 (2025-11-16): Initial implementation with graceful fallback