claude-flow-novice 2.15.4 → 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.
Files changed (456) hide show
  1. package/.claude/cfn-extras/.gs-api-quota.json +16 -0
  2. package/.claude/cfn-extras/.gs-progress-state.json +22 -0
  3. package/.claude/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
  4. package/.claude/cfn-extras/agents/google-sheets/README.md +114 -0
  5. package/.claude/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
  6. package/.claude/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
  7. package/.claude/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
  8. package/.claude/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
  9. package/.claude/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
  10. package/.claude/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
  11. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
  12. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
  13. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
  14. package/.claude/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
  15. package/.claude/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
  16. package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
  17. package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
  18. package/.claude/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
  19. package/.claude/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
  20. package/.claude/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
  21. package/.claude/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
  22. package/.claude/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
  23. package/.claude/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
  24. package/.claude/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
  25. package/.claude/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
  26. package/.claude/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
  27. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
  28. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
  29. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
  30. package/.claude/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
  31. package/.claude/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
  32. package/.claude/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
  33. package/.claude/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
  34. package/.claude/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
  35. package/.claude/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
  36. package/.claude/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
  37. package/.claude/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
  38. package/.claude/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
  39. package/.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
  40. package/.claude/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
  41. package/.claude/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
  42. package/.claude/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
  43. package/.claude/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
  44. package/.claude/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
  45. package/.claude/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
  46. package/.claude/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
  47. package/.claude/commands/cfn-context.md +10 -0
  48. package/.claude/commands/cfn-loop-cli.md +44 -14
  49. package/.claude/commands/google-sheets/google-sheets-loop.md +289 -0
  50. package/.claude/skills/cfn-agent-selector/SKILL.md +143 -0
  51. package/.claude/skills/cfn-agent-selector/select-agents.sh +94 -0
  52. package/.claude/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
  53. package/.claude/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
  54. package/.claude/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
  55. package/.claude/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
  56. package/.claude/skills/cfn-docker-redis-coordination/README.md +294 -0
  57. package/.claude/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
  58. package/.claude/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
  59. package/.claude/skills/cfn-docker-redis-coordination/package.json +40 -0
  60. package/.claude/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
  61. package/.claude/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
  62. package/.claude/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
  63. package/.claude/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
  64. package/.claude/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
  65. package/.claude/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
  66. package/.claude/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
  67. package/.claude/skills/cfn-loop-orchestration/README.md +149 -41
  68. package/.claude/skills/cfn-loop-orchestration/jest.config.js +67 -0
  69. package/.claude/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
  70. package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +147 -16
  71. package/.claude/skills/cfn-loop-orchestration/package-lock.json +5470 -0
  72. package/.claude/skills/cfn-loop-orchestration/package.json +49 -0
  73. package/.claude/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
  74. package/.claude/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
  75. package/.claude/skills/cfn-loop-orchestration/src/index.ts +14 -0
  76. package/.claude/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
  77. package/.claude/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
  78. package/.claude/skills/cfn-loop-orchestration/src/types.ts +188 -0
  79. package/.claude/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
  80. package/.claude/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
  81. package/.claude/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
  82. package/.claude/skills/cfn-loop-orchestration/tsconfig.json +54 -0
  83. package/.claude/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
  84. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
  85. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
  86. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
  87. package/.claude/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
  88. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
  89. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
  90. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
  91. package/.claude/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
  92. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
  93. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
  94. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
  95. package/.claude/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
  96. package/.claude/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
  97. package/.claude/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
  98. package/.claude/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
  99. package/.claude/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
  100. package/.claude/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
  101. package/.claude/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
  102. package/.claude/skills/cfn-redis-coordination/dist/index.js +114 -0
  103. package/.claude/skills/cfn-redis-coordination/dist/index.js.map +1 -0
  104. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
  105. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
  106. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
  107. package/.claude/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
  108. package/.claude/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
  109. package/.claude/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
  110. package/.claude/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
  111. package/.claude/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
  112. package/.claude/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
  113. package/.claude/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
  114. package/.claude/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
  115. package/.claude/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
  116. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
  117. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
  118. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
  119. package/.claude/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
  120. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
  121. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
  122. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
  123. package/.claude/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
  124. package/.claude/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
  125. package/.claude/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
  126. package/.claude/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
  127. package/.claude/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
  128. package/.claude/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
  129. package/.claude/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
  130. package/.claude/skills/cfn-redis-coordination/dist/types.js +81 -0
  131. package/.claude/skills/cfn-redis-coordination/dist/types.js.map +1 -0
  132. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
  133. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
  134. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
  135. package/.claude/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
  136. package/.claude/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
  137. package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -2
  138. package/.claude/skills/cfn-redis-coordination/jest.config.js +23 -0
  139. package/.claude/skills/cfn-redis-coordination/package-lock.json +5272 -0
  140. package/.claude/skills/cfn-redis-coordination/package.json +45 -0
  141. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
  142. package/.claude/skills/cfn-redis-coordination/redis-functions.sh +3 -2
  143. package/.claude/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
  144. package/.claude/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
  145. package/.claude/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
  146. package/.claude/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
  147. package/.claude/skills/cfn-redis-coordination/src/index.ts +82 -0
  148. package/.claude/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
  149. package/.claude/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
  150. package/.claude/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
  151. package/.claude/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
  152. package/.claude/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
  153. package/.claude/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
  154. package/.claude/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
  155. package/.claude/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
  156. package/.claude/skills/cfn-redis-coordination/src/types.ts +235 -0
  157. package/.claude/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
  158. package/.claude/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
  159. package/.claude/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
  160. package/.claude/skills/cfn-redis-coordination/test-redis-check.js +84 -0
  161. package/.claude/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
  162. package/.claude/skills/cfn-redis-coordination/tests/coordination.test.ts +779 -0
  163. package/.claude/skills/cfn-redis-coordination/tsconfig.json +31 -0
  164. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +172 -2
  165. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +1 -1
  166. package/claude-assets/agents/custom/cfn-redis-operations.md +530 -0
  167. package/claude-assets/agents/custom/cfn-system-expert.md +77 -0
  168. package/claude-assets/cfn-extras/.gs-api-quota.json +16 -0
  169. package/claude-assets/cfn-extras/.gs-progress-state.json +22 -0
  170. package/claude-assets/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
  171. package/claude-assets/cfn-extras/agents/google-sheets/README.md +114 -0
  172. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
  173. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
  174. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
  175. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
  176. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
  177. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
  178. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
  179. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
  180. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
  181. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
  182. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
  183. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
  184. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
  185. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
  186. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
  187. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
  188. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
  189. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
  190. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
  191. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
  192. package/claude-assets/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
  193. package/claude-assets/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
  194. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
  195. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
  196. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
  197. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
  198. package/claude-assets/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
  199. package/claude-assets/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
  200. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
  201. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
  202. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
  203. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
  204. package/claude-assets/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
  205. package/claude-assets/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
  206. package/claude-assets/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
  207. package/claude-assets/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
  208. package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
  209. package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
  210. package/claude-assets/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
  211. package/claude-assets/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
  212. package/claude-assets/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
  213. package/claude-assets/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
  214. package/claude-assets/commands/cfn-context.md +10 -0
  215. package/claude-assets/commands/cfn-loop-cli.md +44 -14
  216. package/claude-assets/commands/google-sheets/google-sheets-loop.md +289 -0
  217. package/claude-assets/hooks/cfn-pre-execution/SESSION_START_README.md +87 -0
  218. package/claude-assets/hooks/cfn-pre-execution/TEST_SESSION_START.md +128 -0
  219. package/claude-assets/hooks/cfn-pre-execution/session-start-context.sh +111 -0
  220. package/claude-assets/skills/cfn-agent-selection-with-fallback/INTEGRATION_EXAMPLE.md +209 -0
  221. package/claude-assets/skills/cfn-agent-selection-with-fallback/README.md +130 -0
  222. package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md +243 -0
  223. package/claude-assets/skills/cfn-agent-selection-with-fallback/agent-mappings.json +142 -0
  224. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh +173 -0
  225. package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh +71 -0
  226. package/claude-assets/skills/cfn-agent-selection-with-fallback/test-agent-selection.sh +282 -0
  227. package/claude-assets/skills/cfn-agent-selector/SKILL.md +143 -0
  228. package/claude-assets/skills/cfn-agent-selector/select-agents.sh +94 -0
  229. package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
  230. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
  231. package/claude-assets/skills/cfn-docker-coordination/.eslintrc.json +33 -0
  232. package/claude-assets/skills/cfn-docker-coordination/README.md +349 -0
  233. package/claude-assets/skills/cfn-docker-coordination/docker-helpers.sh +433 -0
  234. package/claude-assets/skills/cfn-docker-coordination/jest.config.js +25 -0
  235. package/claude-assets/skills/cfn-docker-coordination/package-lock.json +6827 -0
  236. package/claude-assets/skills/cfn-docker-coordination/package.json +38 -0
  237. package/claude-assets/skills/cfn-docker-coordination/src/agent-container.ts +471 -0
  238. package/claude-assets/skills/cfn-docker-coordination/src/docker-client.ts +483 -0
  239. package/claude-assets/skills/cfn-docker-coordination/src/health-checker.ts +418 -0
  240. package/claude-assets/skills/cfn-docker-coordination/src/index.ts +45 -0
  241. package/claude-assets/skills/cfn-docker-coordination/src/network-manager.ts +377 -0
  242. package/claude-assets/skills/cfn-docker-coordination/src/types.ts +412 -0
  243. package/claude-assets/skills/cfn-docker-coordination/src/volume-manager.ts +389 -0
  244. package/claude-assets/skills/cfn-docker-coordination/tests/agent-container.test.ts +379 -0
  245. package/claude-assets/skills/cfn-docker-coordination/tests/docker-client.test.ts +345 -0
  246. package/claude-assets/skills/cfn-docker-coordination/tests/health-checker.test.ts +535 -0
  247. package/claude-assets/skills/cfn-docker-coordination/tests/integration.test.ts +193 -0
  248. package/claude-assets/skills/cfn-docker-coordination/tests/network-manager.test.ts +352 -0
  249. package/claude-assets/skills/cfn-docker-coordination/tests/setup.ts +36 -0
  250. package/claude-assets/skills/cfn-docker-coordination/tsconfig.json +29 -0
  251. package/claude-assets/skills/cfn-docker-logging/INTEGRATION.md +268 -0
  252. package/claude-assets/skills/cfn-docker-logging/SAMPLE_OUTPUTS.md +237 -0
  253. package/claude-assets/skills/cfn-docker-logging/SKILL.md +442 -0
  254. package/claude-assets/skills/cfn-docker-logging/capture-container-logs.sh +120 -0
  255. package/claude-assets/skills/cfn-docker-logging/enable-logging.sh +430 -0
  256. package/claude-assets/skills/cfn-docker-logging/init-hybrid-logging.sh +210 -0
  257. package/claude-assets/skills/cfn-docker-logging/queries/analytics-summary.sh +87 -0
  258. package/claude-assets/skills/cfn-docker-logging/queries/query-agent-timeline.sh +51 -0
  259. package/claude-assets/skills/cfn-docker-logging/queries/query-consensus-history.sh +56 -0
  260. package/claude-assets/skills/cfn-docker-logging/queries/query-coordination-timeline.sh +39 -0
  261. package/claude-assets/skills/cfn-docker-logging/queries/query-failed-containers.sh +40 -0
  262. package/claude-assets/skills/cfn-docker-logging/queries/query-gate-checks.sh +39 -0
  263. package/claude-assets/skills/cfn-docker-logging/schema.sql +111 -0
  264. package/claude-assets/skills/cfn-docker-logging/sqlite-helpers.sh +240 -0
  265. package/claude-assets/skills/cfn-docker-logging/test-hybrid-logging.sh +331 -0
  266. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
  267. package/claude-assets/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
  268. package/claude-assets/skills/cfn-docker-redis-coordination/README.md +294 -0
  269. package/claude-assets/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
  270. package/claude-assets/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
  271. package/claude-assets/skills/cfn-docker-redis-coordination/package.json +40 -0
  272. package/claude-assets/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
  273. package/claude-assets/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
  274. package/claude-assets/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
  275. package/claude-assets/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
  276. package/claude-assets/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
  277. package/claude-assets/skills/cfn-error-logging/.eslintrc.json +57 -0
  278. package/claude-assets/skills/cfn-error-logging/.prettierrc.json +10 -0
  279. package/claude-assets/skills/cfn-error-logging/MIGRATION_SUMMARY.md +485 -0
  280. package/claude-assets/skills/cfn-error-logging/package.json +47 -0
  281. package/claude-assets/skills/cfn-error-logging/src/error-logger.ts +1042 -0
  282. package/claude-assets/skills/cfn-error-logging/src/index.ts +12 -0
  283. package/claude-assets/skills/cfn-error-logging/src/types.ts +456 -0
  284. package/claude-assets/skills/cfn-error-logging/tests/error-logger.test.ts +1302 -0
  285. package/claude-assets/skills/cfn-error-logging/tsconfig.json +38 -0
  286. package/claude-assets/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
  287. package/claude-assets/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
  288. package/claude-assets/skills/cfn-loop-orchestration/README.md +149 -41
  289. package/claude-assets/skills/cfn-loop-orchestration/jest.config.js +67 -0
  290. package/claude-assets/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
  291. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +147 -16
  292. package/claude-assets/skills/cfn-loop-orchestration/package-lock.json +5470 -0
  293. package/claude-assets/skills/cfn-loop-orchestration/package.json +49 -0
  294. package/claude-assets/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
  295. package/claude-assets/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
  296. package/claude-assets/skills/cfn-loop-orchestration/src/index.ts +14 -0
  297. package/claude-assets/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
  298. package/claude-assets/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
  299. package/claude-assets/skills/cfn-loop-orchestration/src/types.ts +188 -0
  300. package/claude-assets/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
  301. package/claude-assets/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
  302. package/claude-assets/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
  303. package/claude-assets/skills/cfn-loop-orchestration/tsconfig.json +54 -0
  304. package/claude-assets/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
  305. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
  306. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
  307. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
  308. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
  309. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
  310. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
  311. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
  312. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
  313. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
  314. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
  315. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
  316. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
  317. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
  318. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
  319. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
  320. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
  321. package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
  322. package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
  323. package/claude-assets/skills/cfn-redis-coordination/dist/index.js +114 -0
  324. package/claude-assets/skills/cfn-redis-coordination/dist/index.js.map +1 -0
  325. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
  326. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
  327. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
  328. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
  329. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
  330. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
  331. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
  332. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
  333. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
  334. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
  335. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
  336. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
  337. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
  338. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
  339. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
  340. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
  341. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
  342. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
  343. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
  344. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
  345. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
  346. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
  347. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
  348. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
  349. package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
  350. package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
  351. package/claude-assets/skills/cfn-redis-coordination/dist/types.js +81 -0
  352. package/claude-assets/skills/cfn-redis-coordination/dist/types.js.map +1 -0
  353. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
  354. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
  355. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
  356. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
  357. package/claude-assets/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
  358. package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +3 -2
  359. package/claude-assets/skills/cfn-redis-coordination/jest.config.js +23 -0
  360. package/claude-assets/skills/cfn-redis-coordination/package-lock.json +5272 -0
  361. package/claude-assets/skills/cfn-redis-coordination/package.json +45 -0
  362. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
  363. package/claude-assets/skills/cfn-redis-coordination/redis-functions.sh +3 -2
  364. package/claude-assets/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
  365. package/claude-assets/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
  366. package/claude-assets/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
  367. package/claude-assets/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
  368. package/claude-assets/skills/cfn-redis-coordination/src/index.ts +82 -0
  369. package/claude-assets/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
  370. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
  371. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
  372. package/claude-assets/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
  373. package/claude-assets/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
  374. package/claude-assets/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
  375. package/claude-assets/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
  376. package/claude-assets/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
  377. package/claude-assets/skills/cfn-redis-coordination/src/types.ts +235 -0
  378. package/claude-assets/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
  379. package/claude-assets/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
  380. package/claude-assets/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
  381. package/claude-assets/skills/cfn-redis-coordination/test-redis-check.js +84 -0
  382. package/claude-assets/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
  383. package/claude-assets/skills/cfn-redis-coordination/tests/coordination.test.ts +779 -0
  384. package/claude-assets/skills/cfn-redis-coordination/tsconfig.json +31 -0
  385. package/claude-assets/skills/cfn-skill-propagation/README.md +233 -0
  386. package/claude-assets/skills/cfn-skill-propagation/package-lock.json +5174 -0
  387. package/claude-assets/skills/cfn-skill-propagation/package.json +52 -0
  388. package/claude-assets/skills/cfn-skill-propagation/propagate-skill-update.sh +32 -0
  389. package/claude-assets/skills/cfn-skill-propagation/src/cli.ts +75 -0
  390. package/claude-assets/skills/cfn-skill-propagation/src/database-adapter.ts +239 -0
  391. package/claude-assets/skills/cfn-skill-propagation/src/file-system-adapter.ts +113 -0
  392. package/claude-assets/skills/cfn-skill-propagation/src/index.ts +72 -0
  393. package/claude-assets/skills/cfn-skill-propagation/src/logger.ts +43 -0
  394. package/claude-assets/skills/cfn-skill-propagation/src/metadata-parser.ts +154 -0
  395. package/claude-assets/skills/cfn-skill-propagation/src/skill-propagator.ts +274 -0
  396. package/claude-assets/skills/cfn-skill-propagation/src/skill-validator.ts +179 -0
  397. package/claude-assets/skills/cfn-skill-propagation/src/types.ts +143 -0
  398. package/claude-assets/skills/cfn-skill-propagation/src/version-manager.ts +118 -0
  399. package/claude-assets/skills/cfn-skill-propagation/tests/file-system-adapter.test.ts +91 -0
  400. package/claude-assets/skills/cfn-skill-propagation/tests/metadata-parser.test.ts +176 -0
  401. package/claude-assets/skills/cfn-skill-propagation/tests/skill-propagator.test.ts +209 -0
  402. package/claude-assets/skills/cfn-skill-propagation/tests/skill-validator.test.ts +203 -0
  403. package/claude-assets/skills/cfn-skill-propagation/tests/version-manager.test.ts +115 -0
  404. package/claude-assets/skills/cfn-skill-propagation/tsconfig.json +34 -0
  405. package/claude-assets/skills/task-classifier/SKILL.md +81 -0
  406. package/claude-assets/skills/task-classifier/classify-task.sh +62 -0
  407. package/claude-assets/skills/workflow-codification/package-lock.json +5170 -0
  408. package/claude-assets/skills/workflow-codification/package.json +30 -0
  409. package/claude-assets/skills/workflow-codification/src/index.ts +24 -0
  410. package/claude-assets/skills/workflow-codification/src/pattern-analyzer.ts +537 -0
  411. package/claude-assets/skills/workflow-codification/src/types.ts +180 -0
  412. package/claude-assets/skills/workflow-codification/tests/pattern-analyzer.test.ts +960 -0
  413. package/claude-assets/skills/workflow-codification/tsconfig.json +34 -0
  414. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  415. package/dist/agent-spawner/agent-spawner.js +448 -0
  416. package/dist/agent-spawner/agent-spawner.js.map +1 -0
  417. package/dist/agent-spawner/index.js +10 -0
  418. package/dist/agent-spawner/index.js.map +1 -0
  419. package/dist/agent-spawner/types.js +14 -0
  420. package/dist/agent-spawner/types.js.map +1 -0
  421. package/dist/cli/agent-executor.js +47 -1
  422. package/dist/cli/agent-executor.js.map +1 -1
  423. package/dist/cli/agent-spawn.js +4 -1
  424. package/dist/cli/agent-spawn.js.map +1 -1
  425. package/dist/cli/config-manager.js +109 -91
  426. package/dist/cli/config-manager.js.map +1 -1
  427. package/dist/cli/conversation-fork-cleanup.js +201 -0
  428. package/dist/cli/conversation-fork-cleanup.js.map +1 -0
  429. package/dist/cli/conversation-fork.js +16 -3
  430. package/dist/cli/conversation-fork.js.map +1 -1
  431. package/dist/cli/tool-executor.js +3 -1
  432. package/dist/cli/tool-executor.js.map +1 -1
  433. package/dist/gate-checker/gate-checker.js +292 -0
  434. package/dist/gate-checker/gate-checker.js.map +1 -0
  435. package/dist/gate-checker/types.js +94 -0
  436. package/dist/gate-checker/types.js.map +1 -0
  437. package/dist/lib/database-service/connection-pool-manager.js +2 -1
  438. package/dist/lib/database-service/connection-pool-manager.js.map +1 -1
  439. package/dist/orchestrator/index.js +10 -0
  440. package/dist/orchestrator/index.js.map +1 -0
  441. package/dist/orchestrator/orchestrate.js +496 -0
  442. package/dist/orchestrator/orchestrate.js.map +1 -0
  443. package/dist/orchestrator/types.js +58 -0
  444. package/dist/orchestrator/types.js.map +1 -0
  445. package/docs/BUG_19_MEMORY_LEAK_TASK_MODE.md +405 -0
  446. package/docs/MEMORY_CLEANUP_GUIDE.md +358 -0
  447. package/docs/MEMORY_LEAK_FIX_SUMMARY.md +322 -0
  448. package/docs/REDIS_CLEANUP_EXECUTIVE_SUMMARY.md +319 -0
  449. package/docs/REDIS_CLEANUP_VERIFICATION_REPORT.md +574 -0
  450. package/package.json +208 -201
  451. package/readme/README.md +34 -1
  452. package/scripts/switch-api.sh +142 -4
  453. package/scripts/verify-no-secrets.sh +6 -13
  454. package/scripts/verify-redis-cleanup.sh +173 -0
  455. package/tests/README.md +201 -0
  456. package/tests/test-memory-leak-task-mode.sh +435 -0
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Simple test to check Task Mode Redis behavior
5
+ */
6
+
7
+ const { detectMode } = require('./dist/mode-detector.js');
8
+ const { RedisCoordinator } = require('./dist/redis-client.js');
9
+
10
+ async function testTaskMode() {
11
+ console.log('šŸ” Testing Task Mode Redis Behavior');
12
+ console.log('='.repeat(50));
13
+
14
+ // Set up Task Mode environment
15
+ process.env.CFN_MODE = 'task';
16
+ // Deliberately NOT setting TASK_ID or AGENT_ID
17
+
18
+ console.log('\nšŸ“ 1. Mode Detection:');
19
+ const detection = await detectMode();
20
+ console.log('Mode:', detection.mode);
21
+ console.log('Can use Redis:', detection.canUseRedis);
22
+ console.log('Redis available:', detection.redisAvailable);
23
+ console.log('Reason:', detection.reason);
24
+
25
+ console.log('\nšŸ“ 2. Redis Coordinator Initialization:');
26
+ const coordinator = new RedisCoordinator();
27
+ await coordinator.initialize();
28
+
29
+ console.log('Can use Redis:', coordinator.canUseRedis);
30
+ console.log('Mode:', coordinator.mode);
31
+ console.log('Has client:', !!coordinator.client);
32
+
33
+ console.log('\nšŸ“ 3. Testing Redis Operations:');
34
+
35
+ const operations = [
36
+ 'ping', 'set', 'get', 'lpush', 'rpush', 'blpop',
37
+ 'hset', 'hget', 'hgetall', 'del', 'expire', 'exists',
38
+ 'zadd', 'zrevrange', 'zrange', 'zrem', 'sadd', 'smembers', 'publish'
39
+ ];
40
+
41
+ for (const op of operations) {
42
+ try {
43
+ let result;
44
+ switch(op) {
45
+ case 'ping':
46
+ result = await coordinator.ping();
47
+ break;
48
+ case 'set':
49
+ result = await coordinator.set('test-key', 'test-value');
50
+ break;
51
+ case 'get':
52
+ result = await coordinator.get('test-key');
53
+ break;
54
+ case 'lpush':
55
+ result = await coordinator.lpush('test-list', 'value');
56
+ break;
57
+ case 'rpush':
58
+ result = await coordinator.rpush('test-list', 'value');
59
+ break;
60
+ case 'blpop':
61
+ result = await coordinator.blpop('test-list', 1);
62
+ break;
63
+ case 'hset':
64
+ result = await coordinator.hset('test-hash', 'field', 'value');
65
+ break;
66
+ case 'hget':
67
+ result = await coordinator.hget('test-hash', 'field');
68
+ break;
69
+ case 'hgetall':
70
+ result = await coordinator.hgetall('test-hash');
71
+ break;
72
+ case 'del':
73
+ result = await coordinator.del('test-key');
74
+ break;
75
+ case 'expire':
76
+ result = await coordinator.expire('test-key', 60);
77
+ break;
78
+ case 'exists':
79
+ result = await coordinator.exists('test-key');
80
+ break;
81
+ case 'zadd':
82
+ result = await coordinator.zadd('test-zset', '1', 'member');
83
+ break;
84
+ case 'zrevrange':
85
+ result = await coordinator.zrevrange('test-zset', 0, -1);
86
+ break;
87
+ case 'zrange':
88
+ result = await coordinator.zrange('test-zset', 0, -1);
89
+ break;
90
+ case 'zrem':
91
+ result = await coordinator.zrem('test-zset', 'member');
92
+ break;
93
+ case 'sadd':
94
+ result = await coordinator.sadd('test-set', 'member');
95
+ break;
96
+ case 'smembers':
97
+ result = await coordinator.smembers('test-set');
98
+ break;
99
+ case 'publish':
100
+ result = await coordinator.publish('test-channel', 'message');
101
+ break;
102
+ }
103
+ console.log(`${op}: ${JSON.stringify(result)}`);
104
+ } catch (error) {
105
+ console.log(`${op}: ERROR - ${error.message}`);
106
+ }
107
+ }
108
+
109
+ console.log('\nšŸ“ 4. Memory Usage:');
110
+ const memUsage = process.memoryUsage();
111
+ console.log('RSS:', Math.round(memUsage.rss / 1024 / 1024), 'MB');
112
+ console.log('Heap Used:', Math.round(memUsage.heapUsed / 1024 / 1024), 'MB');
113
+
114
+ console.log('\nšŸ“ 5. Cleanup:');
115
+ await coordinator.disconnect();
116
+ console.log('Disconnected successfully');
117
+
118
+ console.log('\nāœ… Test completed');
119
+ }
120
+
121
+ testTaskMode().catch(console.error);
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Test the Redis availability check specifically
5
+ */
6
+
7
+ async function testRedisCheck() {
8
+ console.log('šŸ” Testing Redis Availability Check');
9
+ console.log('='.repeat(50));
10
+
11
+ // Monitor Redis module imports
12
+ let importCount = 0;
13
+ const Module = require('module');
14
+ const originalRequire = Module.prototype.require;
15
+
16
+ Module.prototype.require = function(id) {
17
+ if (id === 'ioredis') {
18
+ importCount++;
19
+ console.log(`šŸ“¦ Redis module import #${importCount}`);
20
+ }
21
+ return originalRequire.apply(this, arguments);
22
+ };
23
+
24
+ // Test the checkRedisAvailability function directly
25
+ console.log('\nšŸ“ Testing checkRedisAvailability function:');
26
+
27
+ // First, let's see what the mode detector does
28
+ process.env.CFN_MODE = 'task';
29
+
30
+ const { detectMode } = require('./dist/mode-detector.js');
31
+
32
+ console.log('Calling detectMode (which calls checkRedisAvailability)...');
33
+ const detection = await detectMode();
34
+
35
+ console.log('\nšŸ“Š Results:');
36
+ console.log('Redis module imports:', importCount);
37
+ console.log('Redis available in detection:', detection.redisAvailable);
38
+ console.log('Can use Redis:', detection.canUseRedis);
39
+ console.log('Mode:', detection.mode);
40
+
41
+ // Now let's test the CFNRedisClient connection behavior
42
+ console.log('\nšŸ“ Testing CFNRedisClient with gracefulFallback:');
43
+
44
+ const { CFNRedisClient } = require('./dist/redis/redis-client.js');
45
+
46
+ const client = new CFNRedisClient({
47
+ host: 'localhost',
48
+ port: 6379,
49
+ gracefulFallback: true,
50
+ connectTimeout: 1000
51
+ });
52
+
53
+ console.log('Client created, attempting connect...');
54
+ const preConnectImports = importCount;
55
+
56
+ try {
57
+ await client.connect();
58
+ console.log('āœ… Connect completed successfully');
59
+ } catch (error) {
60
+ console.log('āŒ Connect failed:', error.message);
61
+ console.log('Error type:', error.constructor.name);
62
+ }
63
+
64
+ console.log('Redis module imports during connect:', importCount - preConnectImports);
65
+ console.log('Client available after connect:', client.isAvailable());
66
+
67
+ // Test operations
68
+ console.log('\nšŸ“ Testing operations on graceful fallback client:');
69
+ const preOpImports = importCount;
70
+
71
+ try {
72
+ const pingResult = await client.ping();
73
+ console.log('PING result:', pingResult);
74
+ } catch (error) {
75
+ console.log('PING failed:', error.message);
76
+ }
77
+
78
+ console.log('Redis module imports during operations:', importCount - preOpImports);
79
+ console.log('Final stats:', client.getStats());
80
+
81
+ await client.disconnect();
82
+ }
83
+
84
+ testRedisCheck().catch(console.error);
@@ -0,0 +1,391 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Test script to investigate actual Task Mode Redis behavior
5
+ *
6
+ * This script simulates Task Mode environment and tests ALL Redis operations
7
+ * to see what actually happens - connection attempts, memory usage, etc.
8
+ */
9
+
10
+ const path = require('path');
11
+ const { spawn } = require('child_process');
12
+
13
+ // Set up Task Mode environment (NO TASK_ID or AGENT_ID)
14
+ const taskModeEnv = {
15
+ ...process.env,
16
+ CFN_MODE: 'task', // Explicit Task Mode
17
+ NODE_ENV: 'test',
18
+ DEBUG: 'true'
19
+ // Deliberately NOT setting TASK_ID or AGENT_ID
20
+ };
21
+
22
+ // Set up CLI Mode environment for comparison
23
+ const cliModeEnv = {
24
+ ...process.env,
25
+ CFN_MODE: 'cli',
26
+ TASK_ID: 'test-task-123',
27
+ AGENT_ID: 'test-agent-456',
28
+ NODE_ENV: 'test',
29
+ DEBUG: 'true'
30
+ };
31
+
32
+ console.log('šŸ” Investigating Task Mode Redis Behavior\n');
33
+
34
+ console.log('='.repeat(60));
35
+ console.log('šŸ“‹ TEST 1: Mode Detection in Task Mode');
36
+ console.log('='.repeat(60));
37
+
38
+ testModeDetection('Task Mode', taskModeEnv);
39
+
40
+ console.log('\n' + '='.repeat(60));
41
+ console.log('šŸ“‹ TEST 2: Mode Detection in CLI Mode (for comparison)');
42
+ console.log('='.repeat(60));
43
+
44
+ testModeDetection('CLI Mode', cliModeEnv);
45
+
46
+ console.log('\n' + '='.repeat(60));
47
+ console.log('šŸ“‹ TEST 3: All Redis Operations in Task Mode');
48
+ console.log('='.repeat(60));
49
+
50
+ testRedisOperations('Task Mode', taskModeEnv);
51
+
52
+ console.log('\n' + '='.repeat(60));
53
+ console.log('šŸ“‹ TEST 4: Memory Usage Analysis');
54
+ console.log('='.repeat(60));
55
+
56
+ testMemoryUsage('Task Mode', taskModeEnv);
57
+
58
+ console.log('\n' + '='.repeat(60));
59
+ console.log('šŸ“‹ TEST 5: Connection Attempt Detection');
60
+ console.log('='.repeat(60));
61
+
62
+ testConnectionAttempts('Task Mode', taskModeEnv);
63
+
64
+ console.log('\n' + '='.repeat(60));
65
+ console.log('šŸ“‹ TEST 6: Redis Client Initialization Behavior');
66
+ console.log('='.repeat(60));
67
+
68
+ testRedisClientInit('Task Mode', taskModeEnv);
69
+
70
+ function testModeDetection(testName, env) {
71
+ console.log(`\nšŸ”§ Testing mode detection: ${testName}`);
72
+ console.log(`Environment: CFN_MODE=${env.CFN_MODE}, TASK_ID=${env.TASK_ID}, AGENT_ID=${env.AGENT_ID}`);
73
+
74
+ const testScript = `
75
+ const { detectMode } = require('./src/mode-detector.js');
76
+
77
+ detectMode().then(result => {
78
+ console.log('āœ… Mode detection result:');
79
+ console.log(' Mode:', result.mode);
80
+ console.log(' Can use Redis:', result.canUseRedis);
81
+ console.log(' Redis available:', result.redisAvailable);
82
+ console.log(' Reason:', result.reason);
83
+ console.log(' Task ID present:', !!process.env.TASK_ID);
84
+ console.log(' Agent ID present:', !!process.env.AGENT_ID);
85
+ }).catch(error => {
86
+ console.error('āŒ Mode detection failed:', error.message);
87
+ });
88
+ `;
89
+
90
+ runNodeScript(testScript, env);
91
+ }
92
+
93
+ function testRedisOperations(testName, env) {
94
+ console.log(`\nšŸ”§ Testing ALL Redis operations: ${testName}`);
95
+
96
+ const testScript = `
97
+ const { RedisCoordinator } = require('./dist/redis-client.js');
98
+
99
+ async function testAllOperations() {
100
+ console.log('šŸ“ Initializing Redis coordinator...');
101
+ const coordinator = new RedisCoordinator();
102
+
103
+ try {
104
+ await coordinator.initialize();
105
+ console.log('āœ… Initialization completed');
106
+ console.log('Can use Redis:', coordinator.canUseRedis);
107
+ console.log('Mode:', coordinator.mode);
108
+
109
+ const modeDetection = coordinator.getModeDetection();
110
+ console.log('Detection reason:', modeDetection?.reason);
111
+
112
+ // Test ALL Redis operations
113
+ console.log('\\n🧪 Testing all Redis operations:');
114
+
115
+ const operations = [
116
+ { name: 'lpush', fn: () => coordinator.lpush('test-list', 'value1') },
117
+ { name: 'rpush', fn: () => coordinator.rpush('test-list', 'value2') },
118
+ { name: 'blpop', fn: () => coordinator.blpop('test-list', 1) },
119
+ { name: 'hset', fn: () => coordinator.hset('test-hash', 'field1', 'value1') },
120
+ { name: 'hget', fn: () => coordinator.hget('test-hash', 'field1') },
121
+ { name: 'hgetall', fn: () => coordinator.hgetall('test-hash') },
122
+ { name: 'set', fn: () => coordinator.set('test-key', 'test-value') },
123
+ { name: 'get', fn: () => coordinator.get('test-key') },
124
+ { name: 'del', fn: () => coordinator.del('test-key') },
125
+ { name: 'expire', fn: () => coordinator.expire('test-key', 60) },
126
+ { name: 'ping', fn: () => coordinator.ping() },
127
+ { name: 'exists', fn: () => coordinator.exists('test-key') },
128
+ { name: 'zadd', fn: () => coordinator.zadd('test-zset', '1', 'member1') },
129
+ { name: 'zrevrange', fn: () => coordinator.zrevrange('test-zset', 0, -1) },
130
+ { name: 'zrange', fn: () => coordinator.zrange('test-zset', 0, -1) },
131
+ { name: 'zrem', fn: () => coordinator.zrem('test-zset', 'member1') },
132
+ { name: 'sadd', fn: () => coordinator.sadd('test-set', 'member1') },
133
+ { name: 'smembers', fn: () => coordinator.smembers('test-set') },
134
+ { name: 'publish', fn: () => coordinator.publish('test-channel', 'test-message') }
135
+ ];
136
+
137
+ for (const operation of operations) {
138
+ try {
139
+ const result = await operation.fn();
140
+ console.log(\` \${operation.name}: \${JSON.stringify(result)}\`);
141
+ } catch (error) {
142
+ console.log(\` \${operation.name}: ERROR - \${error.message}\`);
143
+ }
144
+ }
145
+
146
+ console.log('\\nšŸ” Checking client state:');
147
+ console.log('Client exists:', !!coordinator.client);
148
+
149
+ } catch (error) {
150
+ console.error('āŒ Coordinator failed:', error.message);
151
+ console.error('Stack:', error.stack);
152
+ }
153
+ }
154
+
155
+ testAllOperations().catch(console.error);
156
+ `;
157
+
158
+ runNodeScript(testScript, env);
159
+ }
160
+
161
+ function testMemoryUsage(testName, env) {
162
+ console.log(`\nšŸ”§ Testing memory usage: ${testName}`);
163
+
164
+ const testScript = `
165
+ const { RedisCoordinator } = require('./dist/redis-client.js');
166
+
167
+ async function testMemory() {
168
+ console.log('šŸ“Š Initial memory usage:');
169
+ console.log(' RSS:', Math.round(process.memoryUsage().rss / 1024 / 1024), 'MB');
170
+ console.log(' Heap Used:', Math.round(process.memoryUsage().heapUsed / 1024 / 1024), 'MB');
171
+
172
+ console.log('\\nšŸ“ Creating multiple Redis coordinators...');
173
+ const coordinators = [];
174
+
175
+ for (let i = 0; i < 10; i++) {
176
+ const coordinator = new RedisCoordinator();
177
+ await coordinator.initialize();
178
+ coordinators.push(coordinator);
179
+
180
+ // Test some operations
181
+ await coordinator.ping();
182
+ await coordinator.set('test-key-' + i, 'value-' + i);
183
+ await coordinator.get('test-key-' + i);
184
+ }
185
+
186
+ console.log('\\nšŸ“Š Memory usage after 10 coordinators:');
187
+ console.log(' RSS:', Math.round(process.memoryUsage().rss / 1024 / 1024), 'MB');
188
+ console.log(' Heap Used:', Math.round(process.memoryUsage().heapUsed / 1024 / 1024), 'MB');
189
+
190
+ console.log('\\n🧹 Cleaning up coordinators...');
191
+ for (const coordinator of coordinators) {
192
+ await coordinator.disconnect();
193
+ }
194
+
195
+ // Force garbage collection if available
196
+ if (global.gc) {
197
+ global.gc();
198
+ console.log('\\nšŸ“Š Memory usage after GC:');
199
+ console.log(' RSS:', Math.round(process.memoryUsage().rss / 1024 / 1024), 'MB');
200
+ console.log(' Heap Used:', Math.round(process.memoryUsage().heapUsed / 1024 / 1024), 'MB');
201
+ }
202
+ }
203
+
204
+ testMemory().catch(console.error);
205
+ `;
206
+
207
+ runNodeScript(testScript, env);
208
+ }
209
+
210
+ function testConnectionAttempts(testName, env) {
211
+ console.log(`\nšŸ”§ Testing connection attempts: ${testName}`);
212
+
213
+ const testScript = `
214
+ const { detectMode } = require('./dist/mode-detector.js');
215
+
216
+ // Monitor network connections by intercepting Redis module import
217
+ const originalRequire = require;
218
+ let redisImportAttempts = 0;
219
+ let connectionAttempts = 0;
220
+
221
+ require = function(id) {
222
+ if (id === 'ioredis') {
223
+ redisImportAttempts++;
224
+ console.log('šŸ” Redis module import attempt #' + redisImportAttempts);
225
+
226
+ const Redis = originalRequire(id);
227
+
228
+ // Wrap Redis constructor to track connection attempts
229
+ const OriginalRedis = Redis;
230
+ const WrappedRedis = function(options) {
231
+ connectionAttempts++;
232
+ console.log('šŸ”Œ Redis connection attempt #' + connectionAttempts, options ? JSON.stringify({
233
+ host: options.host,
234
+ port: options.port,
235
+ connectTimeout: options.connectTimeout
236
+ }) : 'no options');
237
+
238
+ // Intercept event handlers
239
+ const instance = new OriginalRedis(options);
240
+
241
+ const originalOn = instance.on;
242
+ instance.on = function(event, handler) {
243
+ if (event === 'connect' || event === 'ready' || event === 'error') {
244
+ console.log('šŸ“” Redis event listener attached:', event);
245
+ }
246
+ return originalOn.call(this, event, handler);
247
+ };
248
+
249
+ return instance;
250
+ };
251
+
252
+ // Copy static properties
253
+ Object.setPrototypeOf(WrappedRedis, OriginalRedis);
254
+ WrappedRedis.prototype = OriginalRedis.prototype;
255
+ Object.getOwnPropertyNames(OriginalRedis).forEach(name => {
256
+ if (name !== 'prototype' && name !== 'length' && name !== 'name') {
257
+ WrappedRedis[name] = OriginalRedis[name];
258
+ }
259
+ });
260
+
261
+ return WrappedRedis;
262
+ }
263
+ return originalRequire.apply(this, arguments);
264
+ };
265
+
266
+ async function testConnections() {
267
+ console.log('šŸ“ Testing mode detection (may trigger Redis check)...');
268
+ const detection = await detectMode();
269
+ console.log('Detection result:', detection);
270
+
271
+ console.log('\\nšŸ“Š Connection statistics:');
272
+ console.log('Redis module imports:', redisImportAttempts);
273
+ console.log('Redis connection attempts:', connectionAttempts);
274
+
275
+ console.log('\\nšŸ“ Testing Redis coordinator initialization...');
276
+ const { RedisCoordinator } = originalRequire('./dist/redis-client.js');
277
+ const coordinator = new RedisCoordinator();
278
+ await coordinator.initialize();
279
+
280
+ console.log('\\nšŸ“Š Final statistics:');
281
+ console.log('Redis module imports:', redisImportAttempts);
282
+ console.log('Redis connection attempts:', connectionAttempts);
283
+ console.log('Coordinator has client:', !!coordinator.client);
284
+ console.log('Can use Redis:', coordinator.canUseRedis);
285
+ }
286
+
287
+ testConnections().catch(console.error);
288
+ `;
289
+
290
+ runNodeScript(testScript, env);
291
+ }
292
+
293
+ function testRedisClientInit(testName, env) {
294
+ console.log(`\nšŸ”§ Testing Redis client initialization details: ${testName}`);
295
+
296
+ const testScript = `
297
+ const { CFNRedisClient } = require('./dist/redis/redis-client.js');
298
+
299
+ async function testClientInit() {
300
+ console.log('šŸ“ Creating CFNRedisClient with gracefulFallback...');
301
+ const client = new CFNRedisClient({
302
+ host: 'localhost',
303
+ port: 6379,
304
+ gracefulFallback: true,
305
+ connectTimeout: 1000,
306
+ commandTimeout: 1000
307
+ });
308
+
309
+ console.log('Client created');
310
+ console.log('Is available:', client.isAvailable());
311
+
312
+ console.log('\\nšŸ“ Attempting to connect...');
313
+ try {
314
+ await client.connect();
315
+ console.log('āœ… Connect completed without error');
316
+ console.log('Is available after connect:', client.isAvailable());
317
+ } catch (error) {
318
+ console.log('āŒ Connect failed:', error.message);
319
+ console.log('Error type:', error.constructor.name);
320
+ }
321
+
322
+ console.log('\\nšŸ“ Testing operations...');
323
+ const operations = ['ping', 'get', 'set', 'lpush', 'hset'];
324
+
325
+ for (const op of operations) {
326
+ try {
327
+ console.log(\`Testing \${op}...\`);
328
+ let result;
329
+ if (op === 'ping') {
330
+ result = await client.ping();
331
+ } else if (op === 'get') {
332
+ result = await client.execute(c => c.get('test'), 'get');
333
+ } else if (op === 'set') {
334
+ result = await client.execute(c => c.set('test', 'value'), 'set');
335
+ } else if (op === 'lpush') {
336
+ result = await client.execute(c => c.lpush('list', 'value'), 'lpush');
337
+ } else if (op === 'hset') {
338
+ result = await client.execute(c => c.hset('hash', 'field', 'value'), 'hset');
339
+ }
340
+ console.log(\` \${op}: \${JSON.stringify(result)}\`);
341
+ } catch (error) {
342
+ console.log(\` \${op}: ERROR - \${error.message}\`);
343
+ }
344
+ }
345
+
346
+ console.log('\\nšŸ“Š Client stats:', client.getStats());
347
+
348
+ console.log('\\nšŸ“ Disconnecting...');
349
+ await client.disconnect();
350
+ console.log('āœ… Disconnect completed');
351
+ }
352
+
353
+ testClientInit().catch(console.error);
354
+ `;
355
+
356
+ runNodeScript(testScript, env);
357
+ }
358
+
359
+ function runNodeScript(script, env) {
360
+ const child = spawn('node', ['-e', script], {
361
+ cwd: '/mnt/c/Users/masha/Documents/claude-flow-novice/.claude/skills/cfn-redis-coordination',
362
+ env: env,
363
+ stdio: 'pipe',
364
+ shell: true
365
+ });
366
+
367
+ let stdout = '';
368
+ let stderr = '';
369
+
370
+ child.stdout.on('data', (data) => {
371
+ const output = data.toString();
372
+ stdout += output;
373
+ process.stdout.write(output);
374
+ });
375
+
376
+ child.stderr.on('data', (data) => {
377
+ const output = data.toString();
378
+ stderr += output;
379
+ process.stderr.write(output);
380
+ });
381
+
382
+ child.on('close', (code) => {
383
+ if (code !== 0) {
384
+ console.log(`\nāš ļø Script exited with code ${code}`);
385
+ }
386
+ });
387
+
388
+ return new Promise((resolve) => {
389
+ child.on('close', resolve);
390
+ });
391
+ }