claude-flow-novice 1.3.6 → 1.5.1

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 (347) hide show
  1. package/.claude/agents/analysis/code-analyzer.md +3 -20
  2. package/.claude/agents/analysis/code-review/analyze-code-quality.md +1 -1
  3. package/.claude/agents/analyst.md +208 -550
  4. package/.claude/agents/architect.md +136 -469
  5. package/.claude/agents/architecture/system-architect.md +20 -1
  6. package/.claude/agents/architecture/system-design/arch-system-design.md +1 -1
  7. package/.claude/agents/base-template-generator.md +24 -1
  8. package/.claude/agents/coder.md +87 -303
  9. package/.claude/agents/consensus/byzantine-coordinator.md +4 -21
  10. package/.claude/agents/consensus/consensus-builder.md +3 -20
  11. package/.claude/agents/consensus/crdt-synchronizer.md +4 -21
  12. package/.claude/agents/consensus/gossip-coordinator.md +4 -21
  13. package/.claude/agents/consensus/performance-benchmarker.md +4 -21
  14. package/.claude/agents/consensus/quorum-manager.md +4 -21
  15. package/.claude/agents/consensus/raft-manager.md +4 -21
  16. package/.claude/agents/consensus/security-manager.md +4 -21
  17. package/.claude/agents/coordinator.md +22 -11
  18. package/.claude/agents/data/ml/data-ml-model.md +2 -2
  19. package/.claude/agents/development/backend/dev-backend-api.md +2 -2
  20. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +2 -2
  21. package/.claude/agents/devops/devops-engineer.md +134 -402
  22. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +2 -2
  23. package/.claude/agents/github/code-review-swarm.md +1 -1
  24. package/.claude/agents/github/github-specialist.md +856 -0
  25. package/.claude/agents/github/pr-manager.md +1 -1
  26. package/.claude/agents/github/release-manager.md +1 -1
  27. package/.claude/agents/neural/neural-pattern-agent.md +762 -0
  28. package/.claude/agents/optimization/benchmark-suite.md +1 -1
  29. package/.claude/agents/optimization/perf-analyzer.md +1 -1
  30. package/.claude/agents/optimization/performance-monitor.md +1 -1
  31. package/.claude/agents/planner.md +135 -0
  32. package/.claude/agents/researcher.md +22 -9
  33. package/.claude/agents/reviewer.md +291 -0
  34. package/.claude/agents/security/security-specialist.md +1 -1
  35. package/.claude/agents/sparc/architecture.md +1 -1
  36. package/.claude/agents/sparc/pseudocode.md +1 -1
  37. package/.claude/agents/sparc/refinement.md +1 -1
  38. package/.claude/agents/sparc/specification.md +1 -1
  39. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +2 -2
  40. package/.claude/agents/tester.md +21 -11
  41. package/.claude/agents/testing/unit/tdd-london-swarm.md +1 -1
  42. package/.claude/agents/testing/validation/production-validator.md +1 -1
  43. package/.claude/commands/claude-soul.js +1 -1
  44. package/.claude/commands/fullstack.md +134 -0
  45. package/.claude/commands/index.js +4 -0
  46. package/.claude/hooks.json +12 -15
  47. package/{.claude → .claude-flow-novice/.claude}/agents/MIGRATION_SUMMARY.md +1 -1
  48. package/.claude-flow-novice/.claude/agents/analysis/code-analyzer.md +192 -0
  49. package/.claude-flow-novice/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
  50. package/.claude-flow-novice/.claude/agents/analyst.md +300 -0
  51. package/.claude-flow-novice/.claude/agents/architect.md +557 -0
  52. package/.claude-flow-novice/.claude/agents/architecture/system-architect.md +630 -0
  53. package/.claude-flow-novice/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
  54. package/.claude-flow-novice/.claude/agents/base-template-generator.md +65 -0
  55. package/.claude-flow-novice/.claude/agents/coder.md +180 -0
  56. package/.claude-flow-novice/.claude/agents/consensus/byzantine-coordinator.md +46 -0
  57. package/.claude-flow-novice/.claude/agents/consensus/consensus-builder.md +225 -0
  58. package/.claude-flow-novice/.claude/agents/consensus/crdt-synchronizer.md +980 -0
  59. package/.claude-flow-novice/.claude/agents/consensus/gossip-coordinator.md +46 -0
  60. package/.claude-flow-novice/.claude/agents/consensus/performance-benchmarker.md +834 -0
  61. package/.claude-flow-novice/.claude/agents/consensus/quorum-manager.md +806 -0
  62. package/.claude-flow-novice/.claude/agents/consensus/raft-manager.md +46 -0
  63. package/.claude-flow-novice/.claude/agents/consensus/security-manager.md +605 -0
  64. package/.claude-flow-novice/.claude/agents/coordinator.md +842 -0
  65. package/.claude-flow-novice/.claude/agents/data/ml/data-ml-model.md +193 -0
  66. package/.claude-flow-novice/.claude/agents/development/backend/dev-backend-api.md +142 -0
  67. package/.claude-flow-novice/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
  68. package/.claude-flow-novice/.claude/agents/devops/devops-engineer.md +638 -0
  69. package/.claude-flow-novice/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
  70. package/.claude-flow-novice/.claude/agents/github/code-review-swarm.md +538 -0
  71. package/.claude-flow-novice/.claude/agents/github/github-modes.md +173 -0
  72. package/.claude-flow-novice/.claude/agents/github/github-specialist.md +856 -0
  73. package/.claude-flow-novice/.claude/agents/github/issue-tracker.md +319 -0
  74. package/.claude-flow-novice/.claude/agents/github/multi-repo-swarm.md +553 -0
  75. package/.claude-flow-novice/.claude/agents/github/pr-manager.md +191 -0
  76. package/.claude-flow-novice/.claude/agents/github/project-board-sync.md +509 -0
  77. package/.claude-flow-novice/.claude/agents/github/release-manager.md +367 -0
  78. package/.claude-flow-novice/.claude/agents/github/release-swarm.md +583 -0
  79. package/.claude-flow-novice/.claude/agents/github/repo-architect.md +398 -0
  80. package/.claude-flow-novice/.claude/agents/github/swarm-issue.md +573 -0
  81. package/.claude-flow-novice/.claude/agents/github/swarm-pr.md +428 -0
  82. package/.claude-flow-novice/.claude/agents/github/sync-coordinator.md +452 -0
  83. package/.claude-flow-novice/.claude/agents/github/workflow-automation.md +635 -0
  84. package/.claude-flow-novice/.claude/agents/goal/goal-planner.md +73 -0
  85. package/.claude-flow-novice/.claude/agents/neural/neural-pattern-agent.md +762 -0
  86. package/.claude-flow-novice/.claude/agents/neural/safla-neural.md +74 -0
  87. package/.claude-flow-novice/.claude/agents/optimization/benchmark-suite.md +665 -0
  88. package/.claude-flow-novice/.claude/agents/optimization/load-balancer.md +431 -0
  89. package/.claude-flow-novice/.claude/agents/optimization/perf-analyzer.md +725 -0
  90. package/.claude-flow-novice/.claude/agents/optimization/performance-monitor.md +672 -0
  91. package/.claude-flow-novice/.claude/agents/optimization/resource-allocator.md +674 -0
  92. package/.claude-flow-novice/.claude/agents/optimization/topology-optimizer.md +808 -0
  93. package/.claude-flow-novice/.claude/agents/planner.md +135 -0
  94. package/.claude-flow-novice/.claude/agents/researcher.md +185 -0
  95. package/.claude-flow-novice/.claude/agents/reviewer.md +291 -0
  96. package/.claude-flow-novice/.claude/agents/security/security-specialist.md +978 -0
  97. package/.claude-flow-novice/.claude/agents/sparc/architecture.md +472 -0
  98. package/.claude-flow-novice/.claude/agents/sparc/pseudocode.md +318 -0
  99. package/.claude-flow-novice/.claude/agents/sparc/refinement.md +525 -0
  100. package/.claude-flow-novice/.claude/agents/sparc/specification.md +276 -0
  101. package/.claude-flow-novice/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
  102. package/.claude-flow-novice/.claude/agents/sublinear/consciousness-evolution-agent.md +499 -0
  103. package/.claude-flow-novice/.claude/agents/sublinear/matrix-solver-agent.md +113 -0
  104. package/.claude-flow-novice/.claude/agents/sublinear/nanosecond-scheduler-agent.md +644 -0
  105. package/.claude-flow-novice/.claude/agents/sublinear/pagerank-agent.md +699 -0
  106. package/.claude-flow-novice/.claude/agents/sublinear/phi-calculator-agent.md +749 -0
  107. package/.claude-flow-novice/.claude/agents/sublinear/psycho-symbolic-agent.md +543 -0
  108. package/.claude-flow-novice/.claude/agents/sublinear/sublinear.md +816 -0
  109. package/.claude-flow-novice/.claude/agents/sublinear/temporal-advantage-agent.md +360 -0
  110. package/.claude-flow-novice/.claude/agents/swarm/adaptive-coordinator-enhanced.md +746 -0
  111. package/.claude-flow-novice/.claude/agents/swarm/adaptive-coordinator.md +396 -0
  112. package/.claude-flow-novice/.claude/agents/swarm/hierarchical-coordinator.md +300 -0
  113. package/.claude-flow-novice/.claude/agents/swarm/mesh-coordinator.md +435 -0
  114. package/.claude-flow-novice/.claude/agents/templates/automation-smart-agent.md +205 -0
  115. package/.claude-flow-novice/.claude/agents/templates/coordinator-swarm-init.md +90 -0
  116. package/.claude-flow-novice/.claude/agents/templates/github-pr-manager.md +177 -0
  117. package/.claude-flow-novice/.claude/agents/templates/implementer-sparc-coder.md +259 -0
  118. package/.claude-flow-novice/.claude/agents/templates/memory-coordinator.md +187 -0
  119. package/.claude-flow-novice/.claude/agents/templates/migration-plan.md +746 -0
  120. package/.claude-flow-novice/.claude/agents/templates/orchestrator-task.md +139 -0
  121. package/.claude-flow-novice/.claude/agents/templates/performance-analyzer.md +199 -0
  122. package/.claude-flow-novice/.claude/agents/templates/sparc-coordinator.md +183 -0
  123. package/.claude-flow-novice/.claude/agents/tester.md +663 -0
  124. package/.claude-flow-novice/.claude/agents/testing/e2e/playwright-agent.md +249 -0
  125. package/.claude-flow-novice/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
  126. package/.claude-flow-novice/.claude/agents/testing/validation/production-validator.md +395 -0
  127. package/.claude-flow-novice/dist/index.js +12 -24
  128. package/.claude-flow-novice/dist/index.js.map +1 -0
  129. package/.claude-flow-novice/dist/src/agents/agent-manager.js +123 -69
  130. package/.claude-flow-novice/dist/src/agents/agent-manager.js.map +1 -1
  131. package/.claude-flow-novice/dist/src/agents/github/utils/hook-integration.js +7 -7
  132. package/.claude-flow-novice/dist/src/agents/github/utils/hook-integration.js.map +1 -1
  133. package/.claude-flow-novice/dist/src/agents/stage3-integration-validator.js +485 -0
  134. package/.claude-flow-novice/dist/src/agents/stage3-integration-validator.js.map +1 -0
  135. package/.claude-flow-novice/dist/src/agents/unified-ultra-fast-agent-manager.js +630 -0
  136. package/.claude-flow-novice/dist/src/agents/unified-ultra-fast-agent-manager.js.map +1 -0
  137. package/.claude-flow-novice/dist/src/cli/commands/agent.js +1 -1
  138. package/.claude-flow-novice/dist/src/cli/commands/agent.js.map +1 -1
  139. package/.claude-flow-novice/dist/src/cli/commands/config-integration.js +6 -6
  140. package/.claude-flow-novice/dist/src/cli/commands/enterprise.js +18 -18
  141. package/.claude-flow-novice/dist/src/cli/commands/enterprise.js.map +1 -1
  142. package/.claude-flow-novice/dist/src/cli/commands/goal-init.js +4 -4
  143. package/.claude-flow-novice/dist/src/cli/commands/help-new.js +23 -23
  144. package/.claude-flow-novice/dist/src/cli/commands/help-new.js.map +1 -1
  145. package/.claude-flow-novice/dist/src/cli/commands/help.js +74 -74
  146. package/.claude-flow-novice/dist/src/cli/commands/help.js.map +1 -1
  147. package/.claude-flow-novice/dist/src/cli/commands/hive-mind/pause.js +2 -2
  148. package/.claude-flow-novice/dist/src/cli/commands/hive-mind/pause.js.map +1 -1
  149. package/.claude-flow-novice/dist/src/cli/commands/hive.js +4 -4
  150. package/.claude-flow-novice/dist/src/cli/commands/index.js +103 -132
  151. package/.claude-flow-novice/dist/src/cli/commands/index.js.map +1 -1
  152. package/.claude-flow-novice/dist/src/cli/commands/mcp.js +1 -1
  153. package/.claude-flow-novice/dist/src/cli/commands/migrate.js +4 -4
  154. package/.claude-flow-novice/dist/src/cli/commands/migrate.js.map +1 -1
  155. package/.claude-flow-novice/dist/src/cli/commands/monitor.js +1 -1
  156. package/.claude-flow-novice/dist/src/cli/commands/neural-init.js +4 -4
  157. package/.claude-flow-novice/dist/src/cli/commands/ruv-swarm.js +8 -8
  158. package/.claude-flow-novice/dist/src/cli/commands/sparc.js +12 -12
  159. package/.claude-flow-novice/dist/src/cli/commands/sparc.js.map +1 -1
  160. package/.claude-flow-novice/dist/src/cli/commands/start/start-command.js +3 -3
  161. package/.claude-flow-novice/dist/src/cli/commands/status.js +1 -1
  162. package/.claude-flow-novice/dist/src/cli/commands/swarm.js +7 -7
  163. package/.claude-flow-novice/dist/src/cli/commands/swarm.js.map +1 -1
  164. package/.claude-flow-novice/dist/src/cli/commands/verification.js +18 -18
  165. package/.claude-flow-novice/dist/src/cli/completion.js +54 -54
  166. package/.claude-flow-novice/dist/src/cli/completion.js.map +1 -1
  167. package/.claude-flow-novice/dist/src/cli/consolidated/ConsolidatedCLI.js +11 -11
  168. package/.claude-flow-novice/dist/src/cli/consolidated/ConsolidatedCLI.js.map +1 -1
  169. package/.claude-flow-novice/dist/src/cli/consolidated/core/CommandHandlers.js +31 -31
  170. package/.claude-flow-novice/dist/src/cli/consolidated/core/TierManager.js +39 -39
  171. package/.claude-flow-novice/dist/src/cli/consolidated/core/TierManager.js.map +1 -1
  172. package/.claude-flow-novice/dist/src/cli/consolidated/help/InteractiveHelp.js +25 -25
  173. package/.claude-flow-novice/dist/src/cli/consolidated/help/InteractiveHelp.js.map +1 -1
  174. package/.claude-flow-novice/dist/src/cli/consolidated/routing/CommandRouter.js +8 -8
  175. package/.claude-flow-novice/dist/src/cli/consolidated/routing/CommandRouter.js.map +1 -1
  176. package/.claude-flow-novice/dist/src/cli/consolidated/utils/IntelligentDefaults.js +6 -6
  177. package/.claude-flow-novice/dist/src/cli/consolidated/utils/IntelligentDefaults.js.map +1 -1
  178. package/.claude-flow-novice/dist/src/cli/consolidated/utils/PerformanceOptimizer.js +7 -7
  179. package/.claude-flow-novice/dist/src/cli/consolidated/utils/PerformanceOptimizer.js.map +1 -1
  180. package/.claude-flow-novice/dist/src/cli/index-remote.js +10 -10
  181. package/.claude-flow-novice/dist/src/cli/index.js +1 -1
  182. package/.claude-flow-novice/dist/src/cli/init/directory-structure.js +8 -8
  183. package/.claude-flow-novice/dist/src/cli/init/index.js +3 -3
  184. package/.claude-flow-novice/dist/src/cli/init/sparc-environment.js +67 -67
  185. package/.claude-flow-novice/dist/src/cli/init/swarm-commands.js +18 -18
  186. package/.claude-flow-novice/dist/src/cli/node-repl.js +2 -2
  187. package/.claude-flow-novice/dist/src/cli/repl.js +1 -1
  188. package/.claude-flow-novice/dist/src/cli/simple-cli.js +68 -68
  189. package/.claude-flow-novice/dist/src/cli/simple-cli.js.map +1 -1
  190. package/.claude-flow-novice/dist/src/cli/simple-commands/session-start-soul.js +271 -0
  191. package/.claude-flow-novice/dist/src/cli/simple-orchestrator.js +7 -7
  192. package/.claude-flow-novice/dist/src/cli/simple-orchestrator.js.map +1 -1
  193. package/.claude-flow-novice/dist/src/cli/ui/fallback-handler.js +7 -7
  194. package/.claude-flow-novice/dist/src/communication/enhanced-event-bus.js +816 -0
  195. package/.claude-flow-novice/dist/src/communication/enhanced-event-bus.js.map +1 -0
  196. package/.claude-flow-novice/dist/src/communication/failure-recovery-system.js +812 -0
  197. package/.claude-flow-novice/dist/src/communication/failure-recovery-system.js.map +1 -0
  198. package/.claude-flow-novice/dist/src/communication/optimized-serialization.js +369 -0
  199. package/.claude-flow-novice/dist/src/communication/optimized-serialization.js.map +1 -0
  200. package/.claude-flow-novice/dist/src/communication/performance-optimizations.js +526 -0
  201. package/.claude-flow-novice/dist/src/communication/performance-optimizations.js.map +1 -0
  202. package/.claude-flow-novice/dist/src/communication/performance-validator.js +532 -0
  203. package/.claude-flow-novice/dist/src/communication/performance-validator.js.map +1 -0
  204. package/.claude-flow-novice/dist/src/communication/priority-message-queue.js +525 -0
  205. package/.claude-flow-novice/dist/src/communication/priority-message-queue.js.map +1 -0
  206. package/.claude-flow-novice/dist/src/communication/shared-buffer-bus.js +218 -0
  207. package/.claude-flow-novice/dist/src/communication/shared-buffer-bus.js.map +1 -0
  208. package/.claude-flow-novice/dist/src/communication/ultra-fast-communication-bus.js +521 -0
  209. package/.claude-flow-novice/dist/src/communication/ultra-fast-communication-bus.js.map +1 -0
  210. package/.claude-flow-novice/dist/src/communication/ultra-fast-serialization.js +563 -0
  211. package/.claude-flow-novice/dist/src/communication/ultra-fast-serialization.js.map +1 -0
  212. package/.claude-flow-novice/dist/src/communication/websocket-cluster.js +344 -0
  213. package/.claude-flow-novice/dist/src/communication/websocket-cluster.js.map +1 -0
  214. package/.claude-flow-novice/dist/src/communication/zero-copy-structures.js +369 -0
  215. package/.claude-flow-novice/dist/src/communication/zero-copy-structures.js.map +1 -0
  216. package/.claude-flow-novice/dist/src/config/config-manager.js +1 -1
  217. package/.claude-flow-novice/dist/src/config/config-manager.js.map +1 -1
  218. package/.claude-flow-novice/dist/src/config/core/intelligent-configuration-manager.js +1 -1
  219. package/.claude-flow-novice/dist/src/config/integration/hooks-integration.js +6 -6
  220. package/.claude-flow-novice/dist/src/config/integration/hooks-integration.js.map +1 -1
  221. package/.claude-flow-novice/dist/src/config/migration/config-migration.js +1 -1
  222. package/.claude-flow-novice/dist/src/config/ruv-swarm-integration.js +1 -1
  223. package/.claude-flow-novice/dist/src/config/utils/zero-config-setup.js +1 -1
  224. package/.claude-flow-novice/dist/src/config/utils/zero-config-setup.js.map +1 -1
  225. package/.claude-flow-novice/dist/src/config/web-portal-config.js +0 -9
  226. package/.claude-flow-novice/dist/src/config/web-portal-config.js.map +1 -1
  227. package/.claude-flow-novice/dist/src/config/zero-config-setup.js +18 -18
  228. package/.claude-flow-novice/dist/src/config/zero-config-setup.js.map +1 -1
  229. package/.claude-flow-novice/dist/src/core/logger.js +33 -10
  230. package/.claude-flow-novice/dist/src/core/logger.js.map +1 -1
  231. package/.claude-flow-novice/dist/src/migration/index.js +1 -1
  232. package/.claude-flow-novice/dist/src/migration/index.js.map +1 -1
  233. package/.claude-flow-novice/dist/src/migration/migration-runner.js +4 -4
  234. package/.claude-flow-novice/dist/src/migration/migration-runner.js.map +1 -1
  235. package/.claude-flow-novice/dist/src/monitoring/agent-health-monitor.js +430 -0
  236. package/.claude-flow-novice/dist/src/monitoring/agent-health-monitor.js.map +1 -0
  237. package/.claude-flow-novice/dist/src/slash-commands/claude-soul.js +248 -365
  238. package/.claude-flow-novice/dist/src/slash-commands/register-all-commands.js +1 -1
  239. package/.claude-flow-novice/dist/src/swarm/claude-code-interface.js +1 -1
  240. package/.claude-flow-novice/dist/src/swarm/claude-flow-executor.js +1 -1
  241. package/.claude-flow-novice/dist/src/swarm/consensus-coordinator.js +471 -0
  242. package/.claude-flow-novice/dist/src/swarm/consensus-coordinator.js.map +1 -0
  243. package/.claude-flow-novice/dist/src/swarm/hive-mind-integration.js +1 -1
  244. package/.claude-flow-novice/dist/src/swarm/large-scale-coordinator.js +543 -0
  245. package/.claude-flow-novice/dist/src/swarm/large-scale-coordinator.js.map +1 -0
  246. package/.claude-flow-novice/dist/src/swarm/optimizations/connection-pool.js +1 -1
  247. package/.claude-flow-novice/dist/src/swarm/optimizations/optimized-executor.js +1 -1
  248. package/.claude-flow-novice/dist/src/swarm/types.js.map +1 -1
  249. package/.claude-flow-novice/dist/src/swarm-fullstack/integrations/communication-bridge.js +709 -0
  250. package/.claude-flow-novice/dist/src/swarm-fullstack/integrations/communication-bridge.js.map +1 -0
  251. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/api-contract-validator.js +612 -0
  252. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/api-contract-validator.js.map +1 -0
  253. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/backend-test-orchestrator.js +679 -0
  254. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/backend-test-orchestrator.js.map +1 -0
  255. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/frontend-test-orchestrator.js +654 -0
  256. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/frontend-test-orchestrator.js.map +1 -0
  257. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/visual-regression.js +402 -0
  258. package/.claude-flow-novice/dist/src/swarm-fullstack/testing/visual-regression.js.map +1 -0
  259. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/convergence-detector.js +459 -0
  260. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/convergence-detector.js.map +1 -0
  261. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/fix-coordinator.js +513 -0
  262. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/fix-coordinator.js.map +1 -0
  263. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/index.js +19 -0
  264. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/index.js.map +1 -0
  265. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/iterative-build-test.js +568 -0
  266. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/iterative-build-test.js.map +1 -0
  267. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/regression-test-manager.js +418 -0
  268. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/regression-test-manager.js.map +1 -0
  269. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/test-result-analyzer.js +530 -0
  270. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/test-result-analyzer.js.map +1 -0
  271. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/workflow-metrics.js +250 -0
  272. package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/workflow-metrics.js.map +1 -0
  273. package/.claude-flow-novice/dist/src/task/index.js +7 -7
  274. package/.claude-flow-novice/dist/src/validation/fullstack-integration-validator.js +420 -0
  275. package/.claude-flow-novice/dist/src/validation/fullstack-integration-validator.js.map +1 -0
  276. package/.claude-flow-novice/dist/src/validation/production-validator.js +1435 -0
  277. package/.claude-flow-novice/dist/src/validation/production-validator.js.map +1 -0
  278. package/.claude-flow-novice/dist/src/verification/cli-integration.js +3 -3
  279. package/.claude-flow-novice/dist/src/verification/hooks.js +1 -1
  280. package/CHANGELOG.md +26 -0
  281. package/CLAUDE.md +1967 -68
  282. package/README.md +0 -1
  283. package/config/build/babel.config.cjs +19 -11
  284. package/config/typescript/tsconfig.json +1 -1
  285. package/examples/claude-api-error-handling.ts +2 -2
  286. package/examples/frontend-testing-demo.ts +470 -0
  287. package/examples/litellm/config/config.yaml +1 -1
  288. package/package.json +13 -7
  289. package/scripts/build/unified-builder.sh +6 -6
  290. package/scripts/build/validate-agents.js +238 -0
  291. package/scripts/run-production-validation.ts +590 -0
  292. package/scripts/test/test-coordination-features.ts +2 -2
  293. package/scripts/validate-stage3-performance.ts +377 -0
  294. package/src/cli/simple-commands/hooks.js +1 -0
  295. package/src/cli/simple-commands/init/agent-copier.js +0 -2
  296. package/src/cli/simple-commands/init/index.js +5 -97
  297. package/src/cli/simple-commands/init/templates/CLAUDE.md +163 -1158
  298. package/src/cli/simple-commands/init/templates/claude-md.js +38 -157
  299. package/src/swarm-fullstack/integrations/communication-bridge.ts +931 -0
  300. package/src/swarm-fullstack/testing/api-contract-validator.ts +909 -0
  301. package/src/swarm-fullstack/testing/backend-test-orchestrator.ts +791 -0
  302. package/src/swarm-fullstack/testing/frontend-test-orchestrator.ts +853 -0
  303. package/src/swarm-fullstack/testing/visual-regression.ts +507 -0
  304. package/src/swarm-fullstack/workflows/convergence-detector.ts +736 -0
  305. package/src/swarm-fullstack/workflows/fix-coordinator.ts +677 -0
  306. package/src/swarm-fullstack/workflows/index.ts +75 -0
  307. package/src/swarm-fullstack/workflows/iterative-build-test.ts +829 -0
  308. package/src/swarm-fullstack/workflows/regression-test-manager.ts +590 -0
  309. package/src/swarm-fullstack/workflows/test-result-analyzer.ts +739 -0
  310. package/src/swarm-fullstack/workflows/workflow-metrics.ts +399 -0
  311. package/wiki/command-reference/README.md +1 -2
  312. package/wiki/command-reference/mcp-tools/README.md +1 -1
  313. package/wiki/getting-started/claude-code-mcp/README.md +1 -2
  314. package/wiki/getting-started/installation/README.md +2 -10
  315. package/.claude/commands/flow-nexus/app-store.md +0 -124
  316. package/.claude/commands/flow-nexus/challenges.md +0 -120
  317. package/.claude/commands/flow-nexus/login-registration.md +0 -65
  318. package/.claude/commands/flow-nexus/neural-network.md +0 -134
  319. package/.claude/commands/flow-nexus/payments.md +0 -116
  320. package/.claude/commands/flow-nexus/sandbox.md +0 -83
  321. package/.claude/commands/flow-nexus/swarm.md +0 -87
  322. package/.claude/commands/flow-nexus/user-tools.md +0 -152
  323. package/.claude/commands/flow-nexus/workflow.md +0 -115
  324. package/.claude-flow-novice/dist/cli/index.js +0 -45
  325. package/.claude-flow-novice/dist/core/index.js +0 -22
  326. package/.claude-flow-novice/dist/mcp/mcp-server-novice.js +0 -595
  327. package/.claude-flow-novice/dist/mcp/mcp-server-sdk.js +0 -649
  328. package/.claude-flow-novice/dist/mcp/mcp-server-with-slash-commands.js +0 -776
  329. package/.claude-flow-novice/dist/src/cli/simple-commands/init/templates/claude-md.js +0 -1101
  330. package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +0 -265
  331. /package/{.claude → .claude-flow-novice/.claude}/agents/README.md +0 -0
  332. /package/{.claude → .claude-flow-novice/.claude}/agents/backend-dev.json +0 -0
  333. /package/{.claude → .claude-flow-novice/.claude}/agents/code-analyzer.json +0 -0
  334. /package/{.claude → .claude-flow-novice/.claude}/agents/coder.json +0 -0
  335. /package/{.claude → .claude-flow-novice/.claude}/agents/consensus/README.md +0 -0
  336. /package/{.claude → .claude-flow-novice/.claude}/agents/core/coder.md +0 -0
  337. /package/{.claude → .claude-flow-novice/.claude}/agents/core/planner.md +0 -0
  338. /package/{.claude → .claude-flow-novice/.claude}/agents/core/researcher.md +0 -0
  339. /package/{.claude → .claude-flow-novice/.claude}/agents/core/reviewer.md +0 -0
  340. /package/{.claude → .claude-flow-novice/.claude}/agents/core/tester.md +0 -0
  341. /package/{.claude → .claude-flow-novice/.claude}/agents/optimization/README.md +0 -0
  342. /package/{.claude → .claude-flow-novice/.claude}/agents/planner.json +0 -0
  343. /package/{.claude → .claude-flow-novice/.claude}/agents/researcher.json +0 -0
  344. /package/{.claude → .claude-flow-novice/.claude}/agents/reviewer.json +0 -0
  345. /package/{.claude → .claude-flow-novice/.claude}/agents/swarm/README.md +0 -0
  346. /package/{.claude → .claude-flow-novice/.claude}/agents/system-architect.json +0 -0
  347. /package/{.claude → .claude-flow-novice/.claude}/agents/tester.json +0 -0
@@ -0,0 +1,590 @@
1
+ /**
2
+ * Regression Test Manager - Incremental Testing and Regression Detection
3
+ *
4
+ * Manages regression testing by comparing current test results against baselines,
5
+ * detecting regressions, and providing incremental test strategies.
6
+ *
7
+ * Key Features:
8
+ * - Baseline management
9
+ * - Regression detection
10
+ * - Incremental test selection
11
+ * - Impact analysis
12
+ * - Test result comparison
13
+ */
14
+
15
+ import { EventEmitter } from 'events';
16
+ import { ILogger } from '../../core/logger.js';
17
+ import { TestExecutionResult, TestFailure } from './iterative-build-test.js';
18
+
19
+ export interface RegressionTestConfig {
20
+ enableBaselineComparison: boolean;
21
+ enableIncrementalTesting: boolean;
22
+ regressionThreshold: number; // percentage, e.g., 5% means 5% more failures is regression
23
+ requireApprovalForRegression: boolean;
24
+ }
25
+
26
+ export interface RegressionTestRequest {
27
+ featureId: string;
28
+ baseline?: TestExecutionResult;
29
+ current: TestExecutionResult;
30
+ changedFiles?: string[];
31
+ }
32
+
33
+ export interface RegressionTestResult {
34
+ regressionDetected: boolean;
35
+ severity: 'none' | 'minor' | 'moderate' | 'severe' | 'critical';
36
+ summary: RegressionSummary;
37
+ regressions: Regression[];
38
+ improvements: Improvement[];
39
+ recommendations: string[];
40
+ requiresAction: boolean;
41
+ }
42
+
43
+ export interface RegressionSummary {
44
+ baselinePassed: number;
45
+ baselineFailed: number;
46
+ currentPassed: number;
47
+ currentFailed: number;
48
+ newFailures: number;
49
+ fixedFailures: number;
50
+ passRateChange: number; // percentage point change
51
+ }
52
+
53
+ export interface Regression {
54
+ id: string;
55
+ testName: string;
56
+ type: 'new-failure' | 'worse-failure' | 'new-warning';
57
+ previousState: string;
58
+ currentState: string;
59
+ severity: 'low' | 'medium' | 'high' | 'critical';
60
+ impactedComponents: string[];
61
+ suggestedAction: string;
62
+ }
63
+
64
+ export interface Improvement {
65
+ id: string;
66
+ testName: string;
67
+ type: 'fixed-failure' | 'improved-performance' | 'better-coverage';
68
+ previousState: string;
69
+ currentState: string;
70
+ impact: string;
71
+ }
72
+
73
+ export interface IncrementalTestPlan {
74
+ featureId: string;
75
+ totalTests: number;
76
+ selectedTests: string[];
77
+ reason: string;
78
+ estimatedDuration: number;
79
+ coverage: number; // percentage of code coverage
80
+ }
81
+
82
+ export class RegressionTestManager extends EventEmitter {
83
+ private config: RegressionTestConfig;
84
+ private baselines = new Map<string, TestExecutionResult>();
85
+ private regressionHistory = new Map<string, RegressionTestResult[]>();
86
+
87
+ constructor(private logger: ILogger, config?: Partial<RegressionTestConfig>) {
88
+ super();
89
+
90
+ this.config = {
91
+ enableBaselineComparison: true,
92
+ enableIncrementalTesting: true,
93
+ regressionThreshold: 5, // 5% threshold
94
+ requireApprovalForRegression: true,
95
+ ...config,
96
+ };
97
+ }
98
+
99
+ /**
100
+ * Run regression tests and detect regressions
101
+ */
102
+ async runRegressionTests(request: RegressionTestRequest): Promise<RegressionTestResult> {
103
+ this.logger.info('Running regression tests', {
104
+ featureId: request.featureId,
105
+ hasBaseline: !!request.baseline,
106
+ });
107
+
108
+ try {
109
+ // Use provided baseline or stored baseline
110
+ const baseline = request.baseline || this.baselines.get(request.featureId);
111
+
112
+ if (!baseline) {
113
+ this.logger.warn('No baseline found for comparison', { featureId: request.featureId });
114
+ return this.createNoRegressionResult(request.current);
115
+ }
116
+
117
+ // Generate summary
118
+ const summary = this.generateRegressionSummary(baseline, request.current);
119
+
120
+ // Detect regressions
121
+ const regressions = this.detectRegressions(baseline, request.current);
122
+
123
+ // Identify improvements
124
+ const improvements = this.identifyImprovements(baseline, request.current);
125
+
126
+ // Determine severity
127
+ const severity = this.determineSeverity(summary, regressions);
128
+
129
+ // Generate recommendations
130
+ const recommendations = this.generateRecommendations(summary, regressions, improvements);
131
+
132
+ // Determine if action required
133
+ const requiresAction =
134
+ severity === 'severe' ||
135
+ severity === 'critical' ||
136
+ (this.config.requireApprovalForRegression && regressions.length > 0);
137
+
138
+ const result: RegressionTestResult = {
139
+ regressionDetected: regressions.length > 0,
140
+ severity,
141
+ summary,
142
+ regressions,
143
+ improvements,
144
+ recommendations,
145
+ requiresAction,
146
+ };
147
+
148
+ // Store in history
149
+ const history = this.regressionHistory.get(request.featureId) || [];
150
+ history.push(result);
151
+ this.regressionHistory.set(request.featureId, history);
152
+
153
+ // Emit events
154
+ if (result.regressionDetected) {
155
+ this.emit('regression:detected', {
156
+ featureId: request.featureId,
157
+ severity: result.severity,
158
+ regressions: result.regressions.length,
159
+ });
160
+ }
161
+
162
+ if (improvements.length > 0) {
163
+ this.emit('regression:improvements', {
164
+ featureId: request.featureId,
165
+ improvements: improvements.length,
166
+ });
167
+ }
168
+
169
+ return result;
170
+ } catch (error) {
171
+ this.logger.error('Failed to run regression tests', { error, featureId: request.featureId });
172
+ throw error;
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Create incremental test plan based on changed files
178
+ */
179
+ async createIncrementalTestPlan(
180
+ featureId: string,
181
+ changedFiles: string[],
182
+ allTests: string[],
183
+ ): Promise<IncrementalTestPlan> {
184
+ if (!this.config.enableIncrementalTesting) {
185
+ return {
186
+ featureId,
187
+ totalTests: allTests.length,
188
+ selectedTests: allTests,
189
+ reason: 'Incremental testing disabled - running all tests',
190
+ estimatedDuration: allTests.length * 1000, // 1 second per test estimate
191
+ coverage: 100,
192
+ };
193
+ }
194
+
195
+ this.logger.info('Creating incremental test plan', {
196
+ featureId,
197
+ changedFiles: changedFiles.length,
198
+ totalTests: allTests.length,
199
+ });
200
+
201
+ // Select tests affected by changed files
202
+ const selectedTests = this.selectAffectedTests(changedFiles, allTests);
203
+
204
+ // Add critical tests that should always run
205
+ const criticalTests = this.selectCriticalTests(allTests);
206
+ for (const test of criticalTests) {
207
+ if (!selectedTests.includes(test)) {
208
+ selectedTests.push(test);
209
+ }
210
+ }
211
+
212
+ // Estimate coverage
213
+ const coverage = (selectedTests.length / allTests.length) * 100;
214
+
215
+ return {
216
+ featureId,
217
+ totalTests: allTests.length,
218
+ selectedTests,
219
+ reason: `Selected ${selectedTests.length} tests based on ${changedFiles.length} changed file(s)`,
220
+ estimatedDuration: selectedTests.length * 1000,
221
+ coverage,
222
+ };
223
+ }
224
+
225
+ /**
226
+ * Store baseline for future comparisons
227
+ */
228
+ storeBaseline(featureId: string, testResults: TestExecutionResult): void {
229
+ this.baselines.set(featureId, testResults);
230
+ this.logger.info('Stored regression test baseline', {
231
+ featureId,
232
+ tests: testResults.totalTests,
233
+ passed: testResults.passed,
234
+ });
235
+ }
236
+
237
+ /**
238
+ * Get regression history
239
+ */
240
+ getRegressionHistory(featureId: string): RegressionTestResult[] {
241
+ return this.regressionHistory.get(featureId) || [];
242
+ }
243
+
244
+ /**
245
+ * Generate regression summary
246
+ */
247
+ private generateRegressionSummary(
248
+ baseline: TestExecutionResult,
249
+ current: TestExecutionResult,
250
+ ): RegressionSummary {
251
+ const baselinePassRate = baseline.passed / baseline.totalTests;
252
+ const currentPassRate = current.passed / current.totalTests;
253
+ const passRateChange = (currentPassRate - baselinePassRate) * 100;
254
+
255
+ // Identify new and fixed failures
256
+ const baselineFailureNames = new Set(baseline.failures.map((f) => f.testName));
257
+ const currentFailureNames = new Set(current.failures.map((f) => f.testName));
258
+
259
+ const newFailures = Array.from(currentFailureNames).filter(
260
+ (name) => !baselineFailureNames.has(name),
261
+ ).length;
262
+
263
+ const fixedFailures = Array.from(baselineFailureNames).filter(
264
+ (name) => !currentFailureNames.has(name),
265
+ ).length;
266
+
267
+ return {
268
+ baselinePassed: baseline.passed,
269
+ baselineFailed: baseline.failed,
270
+ currentPassed: current.passed,
271
+ currentFailed: current.failed,
272
+ newFailures,
273
+ fixedFailures,
274
+ passRateChange,
275
+ };
276
+ }
277
+
278
+ /**
279
+ * Detect regressions by comparing baseline and current results
280
+ */
281
+ private detectRegressions(
282
+ baseline: TestExecutionResult,
283
+ current: TestExecutionResult,
284
+ ): Regression[] {
285
+ const regressions: Regression[] = [];
286
+
287
+ // Create maps for easier lookup
288
+ const baselineFailuresMap = new Map(baseline.failures.map((f) => [f.testName, f]));
289
+ const currentFailuresMap = new Map(current.failures.map((f) => [f.testName, f]));
290
+
291
+ // Detect new failures (tests that were passing in baseline but failing now)
292
+ for (const [testName, currentFailure] of currentFailuresMap) {
293
+ const baselineFailure = baselineFailuresMap.get(testName);
294
+
295
+ if (!baselineFailure) {
296
+ // New failure - test was passing before
297
+ regressions.push({
298
+ id: `regression_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
299
+ testName,
300
+ type: 'new-failure',
301
+ previousState: 'passing',
302
+ currentState: `failing (${currentFailure.severity})`,
303
+ severity: currentFailure.severity,
304
+ impactedComponents: currentFailure.affectedComponents,
305
+ suggestedAction: `Investigate new failure in ${currentFailure.category} test`,
306
+ });
307
+ } else if (
308
+ this.getSeverityLevel(currentFailure.severity) >
309
+ this.getSeverityLevel(baselineFailure.severity)
310
+ ) {
311
+ // Worse failure - severity increased
312
+ regressions.push({
313
+ id: `regression_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
314
+ testName,
315
+ type: 'worse-failure',
316
+ previousState: `failing (${baselineFailure.severity})`,
317
+ currentState: `failing (${currentFailure.severity})`,
318
+ severity: currentFailure.severity,
319
+ impactedComponents: currentFailure.affectedComponents,
320
+ suggestedAction: 'Investigate severity increase',
321
+ });
322
+ }
323
+ }
324
+
325
+ // Check for new warnings
326
+ const baselineWarningNames = new Set(baseline.warnings.map((w) => w.location));
327
+ const newWarnings = current.warnings.filter(
328
+ (w) => !baselineWarningNames.has(w.location) && w.severity === 'high',
329
+ );
330
+
331
+ for (const warning of newWarnings) {
332
+ regressions.push({
333
+ id: `regression_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
334
+ testName: warning.location,
335
+ type: 'new-warning',
336
+ previousState: 'no warning',
337
+ currentState: `${warning.type} warning`,
338
+ severity: 'medium',
339
+ impactedComponents: [warning.location],
340
+ suggestedAction: `Address new ${warning.type} warning`,
341
+ });
342
+ }
343
+
344
+ return regressions;
345
+ }
346
+
347
+ /**
348
+ * Identify improvements
349
+ */
350
+ private identifyImprovements(
351
+ baseline: TestExecutionResult,
352
+ current: TestExecutionResult,
353
+ ): Improvement[] {
354
+ const improvements: Improvement[] = [];
355
+
356
+ const baselineFailureNames = new Set(baseline.failures.map((f) => f.testName));
357
+ const currentFailureNames = new Set(current.failures.map((f) => f.testName));
358
+
359
+ // Fixed failures (tests that were failing but now passing)
360
+ for (const baselineFailure of baseline.failures) {
361
+ if (!currentFailureNames.has(baselineFailure.testName)) {
362
+ improvements.push({
363
+ id: `improvement_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
364
+ testName: baselineFailure.testName,
365
+ type: 'fixed-failure',
366
+ previousState: `failing (${baselineFailure.severity})`,
367
+ currentState: 'passing',
368
+ impact: `Fixed ${baselineFailure.category} test`,
369
+ });
370
+ }
371
+ }
372
+
373
+ // Coverage improvements
374
+ const baselineCovg = this.averageCoverage(baseline.coverage);
375
+ const currentCovg = this.averageCoverage(current.coverage);
376
+
377
+ if (currentCovg > baselineCovg + 5) {
378
+ // 5% improvement threshold
379
+ improvements.push({
380
+ id: `improvement_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
381
+ testName: 'coverage',
382
+ type: 'better-coverage',
383
+ previousState: `${baselineCovg.toFixed(1)}%`,
384
+ currentState: `${currentCovg.toFixed(1)}%`,
385
+ impact: `Improved code coverage by ${(currentCovg - baselineCovg).toFixed(1)}%`,
386
+ });
387
+ }
388
+
389
+ // Performance improvements
390
+ if (current.duration < baseline.duration * 0.9) {
391
+ // 10% faster
392
+ improvements.push({
393
+ id: `improvement_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
394
+ testName: 'performance',
395
+ type: 'improved-performance',
396
+ previousState: `${baseline.duration}ms`,
397
+ currentState: `${current.duration}ms`,
398
+ impact: `Tests run ${Math.round(((baseline.duration - current.duration) / baseline.duration) * 100)}% faster`,
399
+ });
400
+ }
401
+
402
+ return improvements;
403
+ }
404
+
405
+ /**
406
+ * Determine regression severity
407
+ */
408
+ private determineSeverity(
409
+ summary: RegressionSummary,
410
+ regressions: Regression[],
411
+ ): RegressionTestResult['severity'] {
412
+ // No regressions
413
+ if (regressions.length === 0) {
414
+ return 'none';
415
+ }
416
+
417
+ // Critical if any critical regressions
418
+ if (regressions.some((r) => r.severity === 'critical')) {
419
+ return 'critical';
420
+ }
421
+
422
+ // Severe if pass rate dropped significantly
423
+ if (summary.passRateChange < -this.config.regressionThreshold * 2) {
424
+ return 'severe';
425
+ }
426
+
427
+ // Severe if many high severity regressions
428
+ const highSeverityCount = regressions.filter((r) => r.severity === 'high').length;
429
+ if (highSeverityCount > 3) {
430
+ return 'severe';
431
+ }
432
+
433
+ // Moderate if pass rate dropped moderately
434
+ if (summary.passRateChange < -this.config.regressionThreshold) {
435
+ return 'moderate';
436
+ }
437
+
438
+ // Moderate if multiple medium severity regressions
439
+ if (regressions.filter((r) => r.severity === 'medium').length > 2) {
440
+ return 'moderate';
441
+ }
442
+
443
+ return 'minor';
444
+ }
445
+
446
+ /**
447
+ * Generate recommendations
448
+ */
449
+ private generateRecommendations(
450
+ summary: RegressionSummary,
451
+ regressions: Regression[],
452
+ improvements: Improvement[],
453
+ ): string[] {
454
+ const recommendations: string[] = [];
455
+
456
+ // Regression recommendations
457
+ if (regressions.length > 0) {
458
+ recommendations.push(`Address ${regressions.length} regression(s) before proceeding`);
459
+
460
+ const criticalRegressions = regressions.filter((r) => r.severity === 'critical');
461
+ if (criticalRegressions.length > 0) {
462
+ recommendations.push(
463
+ `CRITICAL: Fix ${criticalRegressions.length} critical regression(s) immediately`,
464
+ );
465
+ }
466
+
467
+ const newFailures = regressions.filter((r) => r.type === 'new-failure');
468
+ if (newFailures.length > 0) {
469
+ recommendations.push(`Investigate ${newFailures.length} new test failure(s)`);
470
+ }
471
+ }
472
+
473
+ // Pass rate recommendations
474
+ if (summary.passRateChange < 0) {
475
+ recommendations.push(
476
+ `Test pass rate decreased by ${Math.abs(summary.passRateChange).toFixed(1)}% - review recent changes`,
477
+ );
478
+ }
479
+
480
+ // Improvement recognition
481
+ if (improvements.length > 0) {
482
+ recommendations.push(`Good progress: ${improvements.length} improvement(s) detected`);
483
+
484
+ if (summary.fixedFailures > 0) {
485
+ recommendations.push(`Successfully fixed ${summary.fixedFailures} test(s)`);
486
+ }
487
+ }
488
+
489
+ // No regressions
490
+ if (regressions.length === 0 && summary.passRateChange >= 0) {
491
+ recommendations.push('No regressions detected - safe to proceed');
492
+ }
493
+
494
+ return recommendations;
495
+ }
496
+
497
+ /**
498
+ * Create result when no baseline exists
499
+ */
500
+ private createNoRegressionResult(current: TestExecutionResult): RegressionTestResult {
501
+ return {
502
+ regressionDetected: false,
503
+ severity: 'none',
504
+ summary: {
505
+ baselinePassed: 0,
506
+ baselineFailed: 0,
507
+ currentPassed: current.passed,
508
+ currentFailed: current.failed,
509
+ newFailures: 0,
510
+ fixedFailures: 0,
511
+ passRateChange: 0,
512
+ },
513
+ regressions: [],
514
+ improvements: [],
515
+ recommendations: ['No baseline available - storing current results as baseline'],
516
+ requiresAction: false,
517
+ };
518
+ }
519
+
520
+ /**
521
+ * Select tests affected by changed files
522
+ */
523
+ private selectAffectedTests(changedFiles: string[], allTests: string[]): string[] {
524
+ // Simplified selection - in production, would use dependency analysis
525
+ const affected: string[] = [];
526
+
527
+ for (const test of allTests) {
528
+ for (const file of changedFiles) {
529
+ // Simple heuristic: if test name contains file name or vice versa
530
+ const testLower = test.toLowerCase();
531
+ const fileLower = file.toLowerCase();
532
+
533
+ if (testLower.includes(fileLower) || fileLower.includes(testLower)) {
534
+ affected.push(test);
535
+ break;
536
+ }
537
+ }
538
+ }
539
+
540
+ return affected;
541
+ }
542
+
543
+ /**
544
+ * Select critical tests that should always run
545
+ */
546
+ private selectCriticalTests(allTests: string[]): string[] {
547
+ // Select tests marked as critical or smoke tests
548
+ return allTests.filter(
549
+ (test) =>
550
+ test.toLowerCase().includes('critical') ||
551
+ test.toLowerCase().includes('smoke') ||
552
+ test.toLowerCase().includes('sanity'),
553
+ );
554
+ }
555
+
556
+ /**
557
+ * Get severity level as number
558
+ */
559
+ private getSeverityLevel(severity: string): number {
560
+ const levels: Record<string, number> = {
561
+ critical: 4,
562
+ high: 3,
563
+ medium: 2,
564
+ low: 1,
565
+ };
566
+ return levels[severity] || 0;
567
+ }
568
+
569
+ /**
570
+ * Calculate average coverage
571
+ */
572
+ private averageCoverage(coverage: TestExecutionResult['coverage']): number {
573
+ return (coverage.lines + coverage.functions + coverage.branches + coverage.statements) / 4;
574
+ }
575
+
576
+ /**
577
+ * Clear baselines and history
578
+ */
579
+ clear(featureId?: string): void {
580
+ if (featureId) {
581
+ this.baselines.delete(featureId);
582
+ this.regressionHistory.delete(featureId);
583
+ this.logger.info('Cleared regression data', { featureId });
584
+ } else {
585
+ this.baselines.clear();
586
+ this.regressionHistory.clear();
587
+ this.logger.info('Cleared all regression data');
588
+ }
589
+ }
590
+ }