claude-flow-novice 2.15.5 → 2.15.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) 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 +36 -15
  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 +91 -8
  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/jest.config.js +23 -0
  138. package/.claude/skills/cfn-redis-coordination/package-lock.json +5272 -0
  139. package/.claude/skills/cfn-redis-coordination/package.json +45 -0
  140. package/.claude/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
  141. package/.claude/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
  142. package/.claude/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
  143. package/.claude/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
  144. package/.claude/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
  145. package/.claude/skills/cfn-redis-coordination/src/index.ts +82 -0
  146. package/.claude/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
  147. package/.claude/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
  148. package/.claude/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
  149. package/.claude/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
  150. package/.claude/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
  151. package/.claude/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
  152. package/.claude/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
  153. package/.claude/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
  154. package/.claude/skills/cfn-redis-coordination/src/types.ts +235 -0
  155. package/.claude/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
  156. package/.claude/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
  157. package/.claude/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
  158. package/.claude/skills/cfn-redis-coordination/test-redis-check.js +84 -0
  159. package/.claude/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
  160. package/.claude/skills/cfn-redis-coordination/tests/coordination.test.ts +779 -0
  161. package/.claude/skills/cfn-redis-coordination/tsconfig.json +31 -0
  162. package/claude-assets/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +172 -2
  163. package/claude-assets/agents/cfn-dev-team/testers/api-testing-specialist.md +1 -1
  164. package/claude-assets/agents/custom/cfn-redis-operations.md +530 -0
  165. package/claude-assets/agents/custom/cfn-system-expert.md +77 -0
  166. package/claude-assets/cfn-extras/.gs-api-quota.json +16 -0
  167. package/claude-assets/cfn-extras/.gs-progress-state.json +22 -0
  168. package/claude-assets/cfn-extras/GOOGLE_SHEETS_IMPLEMENTATION_SUMMARY.md +414 -0
  169. package/claude-assets/cfn-extras/agents/google-sheets/README.md +114 -0
  170. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-advanced-analytics-specialist.md +288 -0
  171. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-api-integrator.md +127 -0
  172. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-automation-scripting-specialist.md +195 -0
  173. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-business-validator.md +179 -0
  174. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-collaboration-security-specialist.md +240 -0
  175. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-coordinator.md +214 -0
  176. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-transformer.md +127 -0
  177. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validation-quality-specialist.md +177 -0
  178. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-validator.md +119 -0
  179. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-data-visualization-specialist.md +135 -0
  180. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-design-layout-specialist.md +109 -0
  181. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineer.md +127 -0
  182. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-engineering-specialist.md +138 -0
  183. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-formula-validator.md +128 -0
  184. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-generalist.md +645 -0
  185. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-integration-api-specialist.md +258 -0
  186. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-analyst.md +125 -0
  187. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-performance-optimization-specialist.md +211 -0
  188. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-schema-designer.md +130 -0
  189. package/claude-assets/cfn-extras/agents/google-sheets/google-sheets-template-architecture-specialist.md +259 -0
  190. package/claude-assets/cfn-extras/docs/GOOGLE_SHEETS_CFN_LOOP.md +617 -0
  191. package/claude-assets/cfn-extras/skills/GOOGLE_SHEETS_SKILLS_README.md +453 -0
  192. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/SKILL.md +272 -0
  193. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/api-call.sh +254 -0
  194. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/test.sh +174 -0
  195. package/claude-assets/cfn-extras/skills/google-sheets-api-coordinator/validate.sh +98 -0
  196. package/claude-assets/cfn-extras/skills/google-sheets-decomposition/SKILL.md +269 -0
  197. package/claude-assets/cfn-extras/skills/google-sheets-decomposition/decompose.sh +313 -0
  198. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/SKILL.md +237 -0
  199. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/build-formula.sh +220 -0
  200. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/test.sh +172 -0
  201. package/claude-assets/cfn-extras/skills/google-sheets-formula-builder/validate.sh +98 -0
  202. package/claude-assets/cfn-extras/skills/google-sheets-progress/SKILL.md +287 -0
  203. package/claude-assets/cfn-extras/skills/google-sheets-progress/test.sh +385 -0
  204. package/claude-assets/cfn-extras/skills/google-sheets-progress/track-progress.sh +516 -0
  205. package/claude-assets/cfn-extras/skills/google-sheets-progress/validate.sh +119 -0
  206. package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/SKILL.md +277 -0
  207. package/claude-assets/cfn-extras/skills/google-sheets-sprint-order/order-sprints.sh +233 -0
  208. package/claude-assets/cfn-extras/skills/google-sheets-validation/SKILL.md +352 -0
  209. package/claude-assets/cfn-extras/skills/google-sheets-validation/test.sh +355 -0
  210. package/claude-assets/cfn-extras/skills/google-sheets-validation/validate-state.sh +374 -0
  211. package/claude-assets/cfn-extras/skills/google-sheets-validation/validate.sh +128 -0
  212. package/claude-assets/commands/cfn-context.md +10 -0
  213. package/claude-assets/commands/cfn-loop-cli.md +36 -15
  214. package/claude-assets/commands/google-sheets/google-sheets-loop.md +289 -0
  215. package/claude-assets/hooks/cfn-pre-execution/SESSION_START_README.md +87 -0
  216. package/claude-assets/hooks/cfn-pre-execution/TEST_SESSION_START.md +128 -0
  217. package/claude-assets/hooks/cfn-pre-execution/session-start-context.sh +111 -0
  218. package/claude-assets/skills/cfn-agent-selection-with-fallback/INTEGRATION_EXAMPLE.md +209 -0
  219. package/claude-assets/skills/cfn-agent-selection-with-fallback/README.md +130 -0
  220. package/claude-assets/skills/cfn-agent-selection-with-fallback/SKILL.md +243 -0
  221. package/claude-assets/skills/cfn-agent-selection-with-fallback/agent-mappings.json +142 -0
  222. package/claude-assets/skills/cfn-agent-selection-with-fallback/select-agents.sh +173 -0
  223. package/claude-assets/skills/cfn-agent-selection-with-fallback/task-classifier.sh +71 -0
  224. package/claude-assets/skills/cfn-agent-selection-with-fallback/test-agent-selection.sh +282 -0
  225. package/claude-assets/skills/cfn-agent-selector/SKILL.md +143 -0
  226. package/claude-assets/skills/cfn-agent-selector/select-agents.sh +94 -0
  227. package/claude-assets/skills/cfn-agent-spawning/get-agent-provider-env.sh +22 -2
  228. package/claude-assets/skills/cfn-docker-agent-spawning/spawn-agent.sh +21 -2
  229. package/claude-assets/skills/cfn-docker-coordination/.eslintrc.json +33 -0
  230. package/claude-assets/skills/cfn-docker-coordination/README.md +349 -0
  231. package/claude-assets/skills/cfn-docker-coordination/docker-helpers.sh +433 -0
  232. package/claude-assets/skills/cfn-docker-coordination/jest.config.js +25 -0
  233. package/claude-assets/skills/cfn-docker-coordination/package-lock.json +6827 -0
  234. package/claude-assets/skills/cfn-docker-coordination/package.json +38 -0
  235. package/claude-assets/skills/cfn-docker-coordination/src/agent-container.ts +471 -0
  236. package/claude-assets/skills/cfn-docker-coordination/src/docker-client.ts +483 -0
  237. package/claude-assets/skills/cfn-docker-coordination/src/health-checker.ts +418 -0
  238. package/claude-assets/skills/cfn-docker-coordination/src/index.ts +45 -0
  239. package/claude-assets/skills/cfn-docker-coordination/src/network-manager.ts +377 -0
  240. package/claude-assets/skills/cfn-docker-coordination/src/types.ts +412 -0
  241. package/claude-assets/skills/cfn-docker-coordination/src/volume-manager.ts +389 -0
  242. package/claude-assets/skills/cfn-docker-coordination/tests/agent-container.test.ts +379 -0
  243. package/claude-assets/skills/cfn-docker-coordination/tests/docker-client.test.ts +345 -0
  244. package/claude-assets/skills/cfn-docker-coordination/tests/health-checker.test.ts +535 -0
  245. package/claude-assets/skills/cfn-docker-coordination/tests/integration.test.ts +193 -0
  246. package/claude-assets/skills/cfn-docker-coordination/tests/network-manager.test.ts +352 -0
  247. package/claude-assets/skills/cfn-docker-coordination/tests/setup.ts +36 -0
  248. package/claude-assets/skills/cfn-docker-coordination/tsconfig.json +29 -0
  249. package/claude-assets/skills/cfn-docker-logging/INTEGRATION.md +268 -0
  250. package/claude-assets/skills/cfn-docker-logging/SAMPLE_OUTPUTS.md +237 -0
  251. package/claude-assets/skills/cfn-docker-logging/SKILL.md +442 -0
  252. package/claude-assets/skills/cfn-docker-logging/capture-container-logs.sh +120 -0
  253. package/claude-assets/skills/cfn-docker-logging/enable-logging.sh +430 -0
  254. package/claude-assets/skills/cfn-docker-logging/init-hybrid-logging.sh +210 -0
  255. package/claude-assets/skills/cfn-docker-logging/queries/analytics-summary.sh +87 -0
  256. package/claude-assets/skills/cfn-docker-logging/queries/query-agent-timeline.sh +51 -0
  257. package/claude-assets/skills/cfn-docker-logging/queries/query-consensus-history.sh +56 -0
  258. package/claude-assets/skills/cfn-docker-logging/queries/query-coordination-timeline.sh +39 -0
  259. package/claude-assets/skills/cfn-docker-logging/queries/query-failed-containers.sh +40 -0
  260. package/claude-assets/skills/cfn-docker-logging/queries/query-gate-checks.sh +39 -0
  261. package/claude-assets/skills/cfn-docker-logging/schema.sql +111 -0
  262. package/claude-assets/skills/cfn-docker-logging/sqlite-helpers.sh +240 -0
  263. package/claude-assets/skills/cfn-docker-logging/test-hybrid-logging.sh +331 -0
  264. package/claude-assets/skills/cfn-docker-loop-orchestration/orchestrate.sh +11 -5
  265. package/claude-assets/skills/cfn-docker-redis-coordination/MIGRATION_SUMMARY.md +348 -0
  266. package/claude-assets/skills/cfn-docker-redis-coordination/README.md +294 -0
  267. package/claude-assets/skills/cfn-docker-redis-coordination/jest.config.js +37 -0
  268. package/claude-assets/skills/cfn-docker-redis-coordination/package-lock.json +5259 -0
  269. package/claude-assets/skills/cfn-docker-redis-coordination/package.json +40 -0
  270. package/claude-assets/skills/cfn-docker-redis-coordination/src/coordinator.ts +801 -0
  271. package/claude-assets/skills/cfn-docker-redis-coordination/src/index.ts +42 -0
  272. package/claude-assets/skills/cfn-docker-redis-coordination/src/types.ts +351 -0
  273. package/claude-assets/skills/cfn-docker-redis-coordination/tests/coordinator.test.ts +1464 -0
  274. package/claude-assets/skills/cfn-docker-redis-coordination/tsconfig.json +30 -0
  275. package/claude-assets/skills/cfn-error-logging/.eslintrc.json +57 -0
  276. package/claude-assets/skills/cfn-error-logging/.prettierrc.json +10 -0
  277. package/claude-assets/skills/cfn-error-logging/MIGRATION_SUMMARY.md +485 -0
  278. package/claude-assets/skills/cfn-error-logging/package.json +47 -0
  279. package/claude-assets/skills/cfn-error-logging/src/error-logger.ts +1042 -0
  280. package/claude-assets/skills/cfn-error-logging/src/index.ts +12 -0
  281. package/claude-assets/skills/cfn-error-logging/src/types.ts +456 -0
  282. package/claude-assets/skills/cfn-error-logging/tests/error-logger.test.ts +1302 -0
  283. package/claude-assets/skills/cfn-error-logging/tsconfig.json +38 -0
  284. package/claude-assets/skills/cfn-loop-orchestration/.eslintrc.js +56 -0
  285. package/claude-assets/skills/cfn-loop-orchestration/.prettierrc.json +18 -0
  286. package/claude-assets/skills/cfn-loop-orchestration/README.md +149 -41
  287. package/claude-assets/skills/cfn-loop-orchestration/jest.config.js +67 -0
  288. package/claude-assets/skills/cfn-loop-orchestration/orchestrate-wrapper.sh +268 -0
  289. package/claude-assets/skills/cfn-loop-orchestration/orchestrate.sh +91 -8
  290. package/claude-assets/skills/cfn-loop-orchestration/package-lock.json +5470 -0
  291. package/claude-assets/skills/cfn-loop-orchestration/package.json +49 -0
  292. package/claude-assets/skills/cfn-loop-orchestration/src/agent-spawner/agent-spawner.ts +34 -0
  293. package/claude-assets/skills/cfn-loop-orchestration/src/gate-checker/gate-checker.ts +36 -0
  294. package/claude-assets/skills/cfn-loop-orchestration/src/index.ts +14 -0
  295. package/claude-assets/skills/cfn-loop-orchestration/src/orchestrator/orchestrator.ts +31 -0
  296. package/claude-assets/skills/cfn-loop-orchestration/src/redis/redis-coordinator.ts +72 -0
  297. package/claude-assets/skills/cfn-loop-orchestration/src/types.ts +188 -0
  298. package/claude-assets/skills/cfn-loop-orchestration/src/utils/logger.ts +32 -0
  299. package/claude-assets/skills/cfn-loop-orchestration/tests/setup.ts +22 -0
  300. package/claude-assets/skills/cfn-loop-orchestration/tests/types.test.ts +132 -0
  301. package/claude-assets/skills/cfn-loop-orchestration/tsconfig.json +54 -0
  302. package/claude-assets/skills/cfn-redis-coordination/bash-wrappers/store-context.sh +23 -0
  303. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts +92 -0
  304. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.d.ts.map +1 -0
  305. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js +329 -0
  306. package/claude-assets/skills/cfn-redis-coordination/dist/agent-logger.js.map +1 -0
  307. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts +75 -0
  308. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.d.ts.map +1 -0
  309. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js +302 -0
  310. package/claude-assets/skills/cfn-redis-coordination/dist/agent-recovery.js.map +1 -0
  311. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts +58 -0
  312. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.d.ts.map +1 -0
  313. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js +237 -0
  314. package/claude-assets/skills/cfn-redis-coordination/dist/completion-reporter.js.map +1 -0
  315. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts +63 -0
  316. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.d.ts.map +1 -0
  317. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js +230 -0
  318. package/claude-assets/skills/cfn-redis-coordination/dist/context-manager.js.map +1 -0
  319. package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts +45 -0
  320. package/claude-assets/skills/cfn-redis-coordination/dist/index.d.ts.map +1 -0
  321. package/claude-assets/skills/cfn-redis-coordination/dist/index.js +114 -0
  322. package/claude-assets/skills/cfn-redis-coordination/dist/index.js.map +1 -0
  323. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts +31 -0
  324. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.d.ts.map +1 -0
  325. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js +185 -0
  326. package/claude-assets/skills/cfn-redis-coordination/dist/mode-detector.js.map +1 -0
  327. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts +191 -0
  328. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.d.ts.map +1 -0
  329. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js +509 -0
  330. package/claude-assets/skills/cfn-redis-coordination/dist/redis-client.js.map +1 -0
  331. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts +75 -0
  332. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.d.ts.map +1 -0
  333. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js +281 -0
  334. package/claude-assets/skills/cfn-redis-coordination/dist/result-collector.js.map +1 -0
  335. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts +75 -0
  336. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.d.ts.map +1 -0
  337. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js +354 -0
  338. package/claude-assets/skills/cfn-redis-coordination/dist/swarm-manager.js.map +1 -0
  339. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts +62 -0
  340. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.d.ts.map +1 -0
  341. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js +305 -0
  342. package/claude-assets/skills/cfn-redis-coordination/dist/task-analyzer.js.map +1 -0
  343. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts +97 -0
  344. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.d.ts.map +1 -0
  345. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js +283 -0
  346. package/claude-assets/skills/cfn-redis-coordination/dist/task-executor.js.map +1 -0
  347. package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts +176 -0
  348. package/claude-assets/skills/cfn-redis-coordination/dist/types.d.ts.map +1 -0
  349. package/claude-assets/skills/cfn-redis-coordination/dist/types.js +81 -0
  350. package/claude-assets/skills/cfn-redis-coordination/dist/types.js.map +1 -0
  351. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts +86 -0
  352. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.d.ts.map +1 -0
  353. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js +419 -0
  354. package/claude-assets/skills/cfn-redis-coordination/dist/waiting-coordinator.js.map +1 -0
  355. package/claude-assets/skills/cfn-redis-coordination/docs/migration/PHASE_3_REDIS_COORDINATION_COMPLETION_REPORT.md +553 -0
  356. package/claude-assets/skills/cfn-redis-coordination/jest.config.js +23 -0
  357. package/claude-assets/skills/cfn-redis-coordination/package-lock.json +5272 -0
  358. package/claude-assets/skills/cfn-redis-coordination/package.json +45 -0
  359. package/claude-assets/skills/cfn-redis-coordination/redis-cli-wrapper.sh +21 -8
  360. package/claude-assets/skills/cfn-redis-coordination/src/agent-logger.ts +446 -0
  361. package/claude-assets/skills/cfn-redis-coordination/src/agent-recovery.ts +454 -0
  362. package/claude-assets/skills/cfn-redis-coordination/src/completion-reporter.ts +396 -0
  363. package/claude-assets/skills/cfn-redis-coordination/src/context-manager.ts +327 -0
  364. package/claude-assets/skills/cfn-redis-coordination/src/index.ts +82 -0
  365. package/claude-assets/skills/cfn-redis-coordination/src/mode-detector.ts +155 -0
  366. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-client.ts +305 -0
  367. package/claude-assets/skills/cfn-redis-coordination/src/redis/redis-functions.ts +283 -0
  368. package/claude-assets/skills/cfn-redis-coordination/src/redis-client.ts +654 -0
  369. package/claude-assets/skills/cfn-redis-coordination/src/result-collector.ts +437 -0
  370. package/claude-assets/skills/cfn-redis-coordination/src/swarm-manager.ts +494 -0
  371. package/claude-assets/skills/cfn-redis-coordination/src/task-analyzer.ts +404 -0
  372. package/claude-assets/skills/cfn-redis-coordination/src/task-executor.ts +423 -0
  373. package/claude-assets/skills/cfn-redis-coordination/src/types.ts +235 -0
  374. package/claude-assets/skills/cfn-redis-coordination/src/waiting-coordinator.ts +587 -0
  375. package/claude-assets/skills/cfn-redis-coordination/test-connection-attempts.js +70 -0
  376. package/claude-assets/skills/cfn-redis-coordination/test-mode-simple.js +121 -0
  377. package/claude-assets/skills/cfn-redis-coordination/test-redis-check.js +84 -0
  378. package/claude-assets/skills/cfn-redis-coordination/test-task-mode-redis.cjs +391 -0
  379. package/claude-assets/skills/cfn-redis-coordination/tests/coordination.test.ts +779 -0
  380. package/claude-assets/skills/cfn-redis-coordination/tsconfig.json +31 -0
  381. package/claude-assets/skills/cfn-skill-propagation/README.md +233 -0
  382. package/claude-assets/skills/cfn-skill-propagation/package-lock.json +5174 -0
  383. package/claude-assets/skills/cfn-skill-propagation/package.json +52 -0
  384. package/claude-assets/skills/cfn-skill-propagation/propagate-skill-update.sh +32 -0
  385. package/claude-assets/skills/cfn-skill-propagation/src/cli.ts +75 -0
  386. package/claude-assets/skills/cfn-skill-propagation/src/database-adapter.ts +239 -0
  387. package/claude-assets/skills/cfn-skill-propagation/src/file-system-adapter.ts +113 -0
  388. package/claude-assets/skills/cfn-skill-propagation/src/index.ts +72 -0
  389. package/claude-assets/skills/cfn-skill-propagation/src/logger.ts +43 -0
  390. package/claude-assets/skills/cfn-skill-propagation/src/metadata-parser.ts +154 -0
  391. package/claude-assets/skills/cfn-skill-propagation/src/skill-propagator.ts +274 -0
  392. package/claude-assets/skills/cfn-skill-propagation/src/skill-validator.ts +179 -0
  393. package/claude-assets/skills/cfn-skill-propagation/src/types.ts +143 -0
  394. package/claude-assets/skills/cfn-skill-propagation/src/version-manager.ts +118 -0
  395. package/claude-assets/skills/cfn-skill-propagation/tests/file-system-adapter.test.ts +91 -0
  396. package/claude-assets/skills/cfn-skill-propagation/tests/metadata-parser.test.ts +176 -0
  397. package/claude-assets/skills/cfn-skill-propagation/tests/skill-propagator.test.ts +209 -0
  398. package/claude-assets/skills/cfn-skill-propagation/tests/skill-validator.test.ts +203 -0
  399. package/claude-assets/skills/cfn-skill-propagation/tests/version-manager.test.ts +115 -0
  400. package/claude-assets/skills/cfn-skill-propagation/tsconfig.json +34 -0
  401. package/claude-assets/skills/task-classifier/SKILL.md +81 -0
  402. package/claude-assets/skills/task-classifier/classify-task.sh +62 -0
  403. package/claude-assets/skills/workflow-codification/package-lock.json +5170 -0
  404. package/claude-assets/skills/workflow-codification/package.json +30 -0
  405. package/claude-assets/skills/workflow-codification/src/index.ts +24 -0
  406. package/claude-assets/skills/workflow-codification/src/pattern-analyzer.ts +537 -0
  407. package/claude-assets/skills/workflow-codification/src/types.ts +180 -0
  408. package/claude-assets/skills/workflow-codification/tests/pattern-analyzer.test.ts +960 -0
  409. package/claude-assets/skills/workflow-codification/tsconfig.json +34 -0
  410. package/claude-assets/skills/workflow-codification/workflow-codification.db +0 -0
  411. package/dist/agent-spawner/agent-spawner.js +448 -0
  412. package/dist/agent-spawner/agent-spawner.js.map +1 -0
  413. package/dist/agent-spawner/index.js +10 -0
  414. package/dist/agent-spawner/index.js.map +1 -0
  415. package/dist/agent-spawner/types.js +14 -0
  416. package/dist/agent-spawner/types.js.map +1 -0
  417. package/dist/agents/agent-loader.js +146 -165
  418. package/dist/agents/agent-loader.js.map +1 -1
  419. package/dist/cli/agent-executor.js +47 -1
  420. package/dist/cli/agent-executor.js.map +1 -1
  421. package/dist/cli/agent-spawn.js +4 -1
  422. package/dist/cli/agent-spawn.js.map +1 -1
  423. package/dist/cli/tool-executor.js +3 -1
  424. package/dist/cli/tool-executor.js.map +1 -1
  425. package/dist/gate-checker/gate-checker.js +292 -0
  426. package/dist/gate-checker/gate-checker.js.map +1 -0
  427. package/dist/gate-checker/types.js +94 -0
  428. package/dist/gate-checker/types.js.map +1 -0
  429. package/dist/lib/database-service/connection-pool-manager.js +2 -1
  430. package/dist/lib/database-service/connection-pool-manager.js.map +1 -1
  431. package/dist/orchestrator/index.js +10 -0
  432. package/dist/orchestrator/index.js.map +1 -0
  433. package/dist/orchestrator/orchestrate.js +496 -0
  434. package/dist/orchestrator/orchestrate.js.map +1 -0
  435. package/dist/orchestrator/types.js +58 -0
  436. package/dist/orchestrator/types.js.map +1 -0
  437. package/package.json +1 -1
  438. package/scripts/switch-api.sh +142 -4
  439. package/scripts/verify-no-secrets.sh +6 -13
  440. package/tests/README.md +175 -58
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@cfn/workflow-codification",
3
+ "version": "1.0.0",
4
+ "description": "TypeScript implementation of pattern analyzer for workflow codification system",
5
+ "main": "dist/pattern-analyzer.js",
6
+ "types": "dist/pattern-analyzer.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "tsc --project tsconfig.json",
10
+ "test": "jest",
11
+ "test:watch": "jest --watch",
12
+ "test:coverage": "jest --coverage",
13
+ "lint": "eslint src tests --ext .ts",
14
+ "clean": "rm -rf dist/*.js dist/*.d.ts dist/types.js dist/types.d.ts"
15
+ },
16
+ "dependencies": {},
17
+ "devDependencies": {
18
+ "@types/jest": "^29.5.0",
19
+ "@types/node": "^20.0.0",
20
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
21
+ "@typescript-eslint/parser": "^6.0.0",
22
+ "eslint": "^8.50.0",
23
+ "jest": "^29.7.0",
24
+ "ts-jest": "^29.1.1",
25
+ "typescript": "^5.3.2"
26
+ },
27
+ "engines": {
28
+ "node": ">=18.0.0"
29
+ }
30
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Pattern Analyzer - Public API
3
+ */
4
+
5
+ export { PatternAnalyzer } from './pattern-analyzer';
6
+ export type {
7
+ PatternAnalyzerConfig,
8
+ WorkflowPattern,
9
+ WorkflowReflection,
10
+ PatternAnalysisReport,
11
+ AnalysisMetadata,
12
+ WorkflowStep,
13
+ WorkflowGroup,
14
+ SecurityConstraints,
15
+ ILogger,
16
+ Priority,
17
+ OutputFormat,
18
+ } from './types';
19
+ export {
20
+ isWorkflowReflection,
21
+ isValidPatternAnalyzerConfig,
22
+ isValidPriority,
23
+ isValidOutputFormat,
24
+ } from './types';
@@ -0,0 +1,537 @@
1
+ /**
2
+ * Pattern Analyzer for Workflow Codification System
3
+ *
4
+ * Analyzes workflow reflections to detect repeated patterns suitable for codification.
5
+ * Implements similarity detection, metrics calculation, and pattern prioritization.
6
+ *
7
+ * @module pattern-analyzer
8
+ */
9
+
10
+ import {
11
+ PatternAnalyzerConfig,
12
+ WorkflowReflection,
13
+ WorkflowPattern,
14
+ PatternAnalysisReport,
15
+ AnalysisMetadata,
16
+ WorkflowGroup,
17
+ SecurityConstraints,
18
+ ILogger,
19
+ isValidPatternAnalyzerConfig,
20
+ isWorkflowReflection,
21
+ Priority,
22
+ } from './types';
23
+
24
+ /**
25
+ * Pattern Analyzer class for detecting workflow patterns from reflections
26
+ */
27
+ export class PatternAnalyzer {
28
+ private config: PatternAnalyzerConfig;
29
+ private logger: ILogger;
30
+ private securityConstraints: SecurityConstraints;
31
+
32
+ constructor(config: PatternAnalyzerConfig, logger: ILogger) {
33
+ if (!isValidPatternAnalyzerConfig(config)) {
34
+ throw new Error('Invalid pattern analyzer configuration');
35
+ }
36
+
37
+ this.config = config;
38
+ this.logger = logger;
39
+
40
+ // Security constraints (CWE-22 path traversal prevention)
41
+ this.securityConstraints = {
42
+ maxPathLength: 4096,
43
+ maxFieldLength: 256,
44
+ maxArraySize: 10000,
45
+ maxFileSize: 100 * 1024 * 1024, // 100MB
46
+ maxDbQueryLength: 10000,
47
+ };
48
+ }
49
+
50
+
51
+ /**
52
+ * Generate normalized workflow signature from steps
53
+ * Extracts and normalizes command sequences
54
+ */
55
+ generateWorkflowSignature(steps: unknown[]): string {
56
+ if (!Array.isArray(steps) || steps.length === 0) {
57
+ return 'unknown';
58
+ }
59
+
60
+ try {
61
+ const normalized = steps
62
+ .map((step) => {
63
+ if (typeof step === 'object' && step !== null) {
64
+ const stepObj = step as Record<string, unknown>;
65
+ const keys = Object.keys(stepObj).slice(0, 3);
66
+ return keys.join(' ').replace(/\s+/g, ' ');
67
+ }
68
+ return String(step).replace(/\s+/g, ' ');
69
+ })
70
+ .filter((s) => s.length > 0);
71
+
72
+ return normalized.length > 0 ? normalized.join(' → ') : 'unknown';
73
+ } catch {
74
+ this.logger.warning('Failed to generate workflow signature');
75
+ return 'unknown';
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Calculate Jaccard similarity between two sets
81
+ * Intersection / Union
82
+ */
83
+ calculateJaccardSimilarity(stepsA: unknown[], stepsB: unknown[]): number {
84
+ if (!Array.isArray(stepsA) || !Array.isArray(stepsB)) {
85
+ return 0;
86
+ }
87
+
88
+ // Convert steps to comparable strings
89
+ const setA = new Set(stepsA.map((s) => JSON.stringify(s)));
90
+ const setB = new Set(stepsB.map((s) => JSON.stringify(s)));
91
+
92
+ // Calculate intersection
93
+ let intersection = 0;
94
+ setA.forEach((item) => {
95
+ if (setB.has(item)) {
96
+ intersection++;
97
+ }
98
+ });
99
+
100
+ // Calculate union
101
+ const union = new Set([...setA, ...setB]).size;
102
+
103
+ if (union === 0) {
104
+ return 0;
105
+ }
106
+
107
+ return Number((intersection / union).toFixed(3));
108
+ }
109
+
110
+ /**
111
+ * Calculate average pairwise similarity across reflection group
112
+ */
113
+ calculateSimilarityScore(reflections: WorkflowReflection[]): number {
114
+ if (reflections.length < 2) {
115
+ return 1.0;
116
+ }
117
+
118
+ let totalSimilarity = 0;
119
+ let comparisons = 0;
120
+
121
+ // Calculate pairwise similarities
122
+ for (let i = 0; i < reflections.length - 1; i++) {
123
+ for (let j = i + 1; j < reflections.length; j++) {
124
+ const refI = reflections[i];
125
+ const refJ = reflections[j];
126
+ if (!refI || !refJ) continue;
127
+
128
+ const stepsA = refI.workflow_steps;
129
+ const stepsB = refJ.workflow_steps;
130
+
131
+ const similarity = this.calculateJaccardSimilarity(stepsA, stepsB);
132
+ totalSimilarity += similarity;
133
+ comparisons++;
134
+ }
135
+ }
136
+
137
+ if (comparisons === 0) {
138
+ return 0;
139
+ }
140
+
141
+ return Number((totalSimilarity / comparisons).toFixed(3));
142
+ }
143
+
144
+ /**
145
+ * Check if workflow is deterministic using heuristics
146
+ * Detects non-deterministic patterns like randomness, timestamps, etc.
147
+ */
148
+ checkDeterministic(reflections: WorkflowReflection[]): boolean {
149
+ const nondeterministicPatterns = [
150
+ /random|timestamp|date|uuid|Math\.random|rand\(/gi,
151
+ /api\..*\.com|http:\/\/|https:\/\//gi,
152
+ /curl |wget |fetch\(/gi,
153
+ ];
154
+
155
+ // Check for non-deterministic patterns in workflow steps
156
+ for (const reflection of reflections) {
157
+ const stepsString = JSON.stringify(reflection.workflow_steps);
158
+ for (const pattern of nondeterministicPatterns) {
159
+ if (pattern.test(stepsString)) {
160
+ return false;
161
+ }
162
+ }
163
+ }
164
+
165
+ // Check output variance
166
+ const uniqueOutputs = new Set(reflections.map((r) => r.output));
167
+ const uniqueCount = uniqueOutputs.size;
168
+ const totalCount = reflections.length;
169
+
170
+ // If more than 50% of outputs are unique, likely not deterministic
171
+ // This allows small variations but detects high variance
172
+ return uniqueCount <= Math.ceil(totalCount * 0.5);
173
+ }
174
+
175
+ /**
176
+ * Estimate monthly cost savings from codifying workflow
177
+ * Uses token costs and execution frequency
178
+ */
179
+ estimateCostSavings(occurrenceCount: number, daysInWindow: number = 90): number {
180
+ // Constants (using Z.ai pricing model)
181
+ const aiInputTokens = 5000;
182
+ const aiOutputTokens = 2000;
183
+ const tokenCostPerMillion = 0.5; // $0.50 per 1M tokens
184
+ const scriptCost = 0.0001; // Negligible
185
+
186
+ // Calculate per-execution savings
187
+ const totalTokens = aiInputTokens + aiOutputTokens;
188
+ const aiCost = (totalTokens / 1000000) * tokenCostPerMillion;
189
+ const savingsPerExecution = aiCost - scriptCost;
190
+
191
+ // Estimate monthly executions
192
+ const dailyRate = occurrenceCount / daysInWindow;
193
+ const monthlyExecutions = Math.round(dailyRate * 30);
194
+
195
+ // Calculate monthly savings
196
+ const monthlySavings = monthlyExecutions * savingsPerExecution;
197
+
198
+ return Number(monthlySavings.toFixed(2));
199
+ }
200
+
201
+ /**
202
+ * Calculate priority score based on multiple factors
203
+ * Factors: occurrence count (40%), savings (30%), teams affected (20%), confidence (10%)
204
+ */
205
+ calculatePriority(
206
+ occurrenceCount: number,
207
+ estimatedSavings: number,
208
+ teamsCount: number,
209
+ confidenceScore: number
210
+ ): Priority {
211
+ let score = 0;
212
+
213
+ // Factor 1: Occurrence count (weight: 40%)
214
+ if (occurrenceCount >= 20) {
215
+ score += 40;
216
+ } else if (occurrenceCount >= 10) {
217
+ score += 25;
218
+ } else {
219
+ score += 10;
220
+ }
221
+
222
+ // Factor 2: Cost savings (weight: 30%)
223
+ if (estimatedSavings >= 50) {
224
+ score += 30;
225
+ } else if (estimatedSavings >= 20) {
226
+ score += 20;
227
+ } else {
228
+ score += 10;
229
+ }
230
+
231
+ // Factor 3: Teams affected (weight: 20%)
232
+ if (teamsCount >= 3) {
233
+ score += 20;
234
+ } else if (teamsCount >= 2) {
235
+ score += 12;
236
+ } else {
237
+ score += 5;
238
+ }
239
+
240
+ // Factor 4: Confidence score (weight: 10%)
241
+ if (confidenceScore >= 0.9) {
242
+ score += 10;
243
+ } else if (confidenceScore >= 0.8) {
244
+ score += 6;
245
+ } else {
246
+ score += 3;
247
+ }
248
+
249
+ // Determine priority
250
+ if (score >= 75) {
251
+ return 'high';
252
+ } else if (score >= 50) {
253
+ return 'medium';
254
+ } else {
255
+ return 'low';
256
+ }
257
+ }
258
+
259
+ /**
260
+ * Group reflections by workflow signature
261
+ */
262
+ private groupReflectionsBySignature(
263
+ reflections: WorkflowReflection[]
264
+ ): Map<string, WorkflowGroup> {
265
+ const groups = new Map<string, WorkflowGroup>();
266
+
267
+ for (const reflection of reflections) {
268
+ const signature = this.generateWorkflowSignature(reflection.workflow_steps);
269
+
270
+ if (!groups.has(signature)) {
271
+ groups.set(signature, {
272
+ reflections: [],
273
+ signature,
274
+ });
275
+ }
276
+
277
+ const group = groups.get(signature) as WorkflowGroup;
278
+ group.reflections.push(reflection);
279
+ }
280
+
281
+ return groups;
282
+ }
283
+
284
+ /**
285
+ * Filter groups by minimum occurrence threshold
286
+ */
287
+ private filterByOccurrence(
288
+ groups: Map<string, WorkflowGroup>,
289
+ minOccurrences: number
290
+ ): Map<string, WorkflowGroup> {
291
+ const filtered = new Map<string, WorkflowGroup>();
292
+
293
+ groups.forEach((group, signature) => {
294
+ if (group.reflections.length >= minOccurrences) {
295
+ filtered.set(signature, group);
296
+ }
297
+ });
298
+
299
+ return filtered;
300
+ }
301
+
302
+ /**
303
+ * Analyze candidate patterns and apply quality filters
304
+ */
305
+ private analyzeCandidatePatterns(
306
+ groups: Map<string, WorkflowGroup>
307
+ ): WorkflowPattern[] {
308
+ const patterns: WorkflowPattern[] = [];
309
+
310
+ groups.forEach((group) => {
311
+ const reflections = group.reflections;
312
+ const occurrenceCount = reflections.length;
313
+
314
+ // Calculate similarity score
315
+ const similarityScore = this.calculateSimilarityScore(reflections);
316
+
317
+ // Calculate average confidence
318
+ const avgConfidence = reflections.reduce((sum, r) => sum + r.confidence, 0) / reflections.length;
319
+
320
+ // Check if deterministic
321
+ const isDeterministic = this.checkDeterministic(reflections);
322
+
323
+ // Apply filters
324
+ if (
325
+ similarityScore >= this.config.minSimilarity &&
326
+ avgConfidence >= this.config.minConfidence &&
327
+ isDeterministic
328
+ ) {
329
+ // Extract common workflow steps
330
+ const firstReflection = reflections[0];
331
+ if (!firstReflection) return;
332
+
333
+ const commonSteps = firstReflection.workflow_steps;
334
+
335
+ // Extract unique teams
336
+ const teamsSet = new Set(reflections.map((r) => r.team_id));
337
+ const teamsAffected = Array.from(teamsSet);
338
+ const teamsCount = teamsAffected.length;
339
+
340
+ // Estimate cost savings
341
+ const estimatedSavings = this.estimateCostSavings(
342
+ occurrenceCount,
343
+ this.config.timeWindow
344
+ );
345
+
346
+ // Calculate priority
347
+ const priority = this.calculatePriority(
348
+ occurrenceCount,
349
+ estimatedSavings,
350
+ teamsCount,
351
+ avgConfidence
352
+ );
353
+
354
+ // Create pattern object
355
+ const pattern: WorkflowPattern = {
356
+ pattern_name: group.signature,
357
+ workflow_steps: commonSteps,
358
+ occurrence_count: occurrenceCount,
359
+ teams_affected: teamsAffected,
360
+ similarity_score: similarityScore,
361
+ confidence_score: Number(avgConfidence.toFixed(3)),
362
+ deterministic: isDeterministic,
363
+ estimated_savings_usd: estimatedSavings,
364
+ priority,
365
+ status: 'detected',
366
+ };
367
+
368
+ patterns.push(pattern);
369
+
370
+ this.logger.success(
371
+ `Pattern detected: ${group.signature} (priority: ${priority}, savings: $${estimatedSavings}/month)`
372
+ );
373
+ }
374
+ });
375
+
376
+ return patterns;
377
+ }
378
+
379
+ /**
380
+ * Sort patterns by priority and savings
381
+ */
382
+ private sortPatterns(patterns: WorkflowPattern[]): WorkflowPattern[] {
383
+ const priorityOrder: Record<Priority, number> = {
384
+ high: 0,
385
+ medium: 1,
386
+ low: 2,
387
+ };
388
+
389
+ return patterns.sort((a, b) => {
390
+ const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
391
+ if (priorityDiff !== 0) {
392
+ return priorityDiff;
393
+ }
394
+ return b.estimated_savings_usd - a.estimated_savings_usd;
395
+ });
396
+ }
397
+
398
+ /**
399
+ * Generate metadata for the report
400
+ */
401
+ private generateMetadata(
402
+ totalReflections: number,
403
+ patternsFound: number
404
+ ): AnalysisMetadata {
405
+ return {
406
+ analysis_timestamp: new Date().toISOString(),
407
+ time_window_days: this.config.timeWindow,
408
+ total_reflections_analyzed: totalReflections,
409
+ patterns_found: patternsFound,
410
+ filters: {
411
+ min_occurrences: this.config.minOccurrences,
412
+ min_similarity: this.config.minSimilarity,
413
+ min_confidence: this.config.minConfidence,
414
+ },
415
+ };
416
+ }
417
+
418
+ /**
419
+ * Main analysis function
420
+ * Orchestrates the complete pattern analysis workflow
421
+ */
422
+ async analyzePatterns(reflections: WorkflowReflection[]): Promise<PatternAnalysisReport> {
423
+ this.logger.log('Starting workflow pattern analysis');
424
+ this.logger.log(
425
+ `Parameters: time_window=${this.config.timeWindow}d, ` +
426
+ `min_occurrences=${this.config.minOccurrences}, ` +
427
+ `min_similarity=${this.config.minSimilarity}, ` +
428
+ `min_confidence=${this.config.minConfidence}`
429
+ );
430
+
431
+ // Validate input
432
+ if (!Array.isArray(reflections)) {
433
+ throw new Error('Reflections must be an array');
434
+ }
435
+
436
+ if (reflections.length > this.securityConstraints.maxArraySize) {
437
+ throw new Error(
438
+ `Reflections exceed maximum size: ${reflections.length} > ${this.securityConstraints.maxArraySize}`
439
+ );
440
+ }
441
+
442
+ // Validate all reflections
443
+ const validReflections = reflections.filter((r) => {
444
+ if (!isWorkflowReflection(r)) {
445
+ this.logger.warning(`Invalid reflection structure: ${r}`);
446
+ return false;
447
+ }
448
+ return true;
449
+ });
450
+
451
+ this.logger.log(`Retrieved ${validReflections.length} valid reflections`);
452
+
453
+ if (validReflections.length === 0) {
454
+ this.logger.warning('No valid reflections found');
455
+ return {
456
+ metadata: this.generateMetadata(0, 0),
457
+ patterns: [],
458
+ };
459
+ }
460
+
461
+ // Group reflections by workflow signature
462
+ this.logger.log('Grouping reflections by workflow similarity');
463
+ const allGroups = this.groupReflectionsBySignature(validReflections);
464
+ this.logger.log(`Found ${allGroups.size} unique workflow signatures`);
465
+
466
+ // Filter groups with minimum occurrences
467
+ this.logger.log(`Filtering patterns with >= ${this.config.minOccurrences} occurrences`);
468
+ const filteredGroups = this.filterByOccurrence(allGroups, this.config.minOccurrences);
469
+ this.logger.log(`Found ${filteredGroups.size} groups after occurrence filter`);
470
+
471
+ // Analyze and filter candidate patterns
472
+ const candidatePatterns = this.analyzeCandidatePatterns(filteredGroups);
473
+ this.logger.log(`Found ${candidatePatterns.length} candidate patterns after filtering`);
474
+
475
+ // Sort patterns by priority
476
+ const sortedPatterns = this.sortPatterns(candidatePatterns);
477
+
478
+ // Generate report
479
+ const report: PatternAnalysisReport = {
480
+ metadata: this.generateMetadata(validReflections.length, sortedPatterns.length),
481
+ patterns: sortedPatterns,
482
+ };
483
+
484
+ return report;
485
+ }
486
+
487
+ /**
488
+ * Format report as JSON
489
+ */
490
+ formatAsJson(report: PatternAnalysisReport): string {
491
+ return JSON.stringify(report, null, 2);
492
+ }
493
+
494
+ /**
495
+ * Format report as summary
496
+ */
497
+ formatAsSummary(report: PatternAnalysisReport): string {
498
+ const { metadata, patterns } = report;
499
+ const highPriority = patterns.filter((p) => p.priority === 'high').length;
500
+ const mediumPriority = patterns.filter((p) => p.priority === 'medium').length;
501
+ const lowPriority = patterns.filter((p) => p.priority === 'low').length;
502
+
503
+ const topPatterns = patterns.slice(0, 5);
504
+ const topPatternsStr = topPatterns
505
+ .map(
506
+ (p, i) =>
507
+ ` ${i + 1}. ${p.pattern_name} (priority: ${p.priority}, ` +
508
+ `savings: $${p.estimated_savings_usd}/month)`
509
+ )
510
+ .join('\n');
511
+
512
+ return (
513
+ 'Pattern Analysis Summary\n' +
514
+ '========================\n' +
515
+ '\n' +
516
+ `Analysis Timestamp: ${metadata.analysis_timestamp}\n` +
517
+ `Time Window: ${metadata.time_window_days} days\n` +
518
+ `Total Reflections Analyzed: ${metadata.total_reflections_analyzed}\n` +
519
+ `Patterns Found: ${metadata.patterns_found}\n` +
520
+ '\n' +
521
+ 'Filters:\n' +
522
+ ` Min Occurrences: ${metadata.filters.min_occurrences}\n` +
523
+ ` Min Similarity: ${metadata.filters.min_similarity}\n` +
524
+ ` Min Confidence: ${metadata.filters.min_confidence}\n` +
525
+ '\n' +
526
+ 'Patterns by Priority:\n' +
527
+ ` High: ${highPriority}\n` +
528
+ ` Medium: ${mediumPriority}\n` +
529
+ ` Low: ${lowPriority}\n` +
530
+ '\n' +
531
+ 'Top 5 Patterns:\n' +
532
+ topPatternsStr
533
+ );
534
+ }
535
+ }
536
+
537
+ export { PatternAnalysisReport, WorkflowPattern, WorkflowReflection, PatternAnalyzerConfig };