agentic-qe 1.1.0 → 1.3.0

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 (567) hide show
  1. package/.claude/agents/qe-coverage-analyzer.md +8 -0
  2. package/.claude/agents/qe-flaky-test-hunter.md +9 -1
  3. package/.claude/agents/qe-test-generator.md +7 -0
  4. package/.claude/agents/reasoning/agent.md +816 -0
  5. package/.claude/agents/reasoning/goal-planner.md +73 -0
  6. package/.claude/settings.json +64 -25
  7. package/.claude/skills/README.md +124 -0
  8. package/.claude/skills/accessibility-testing/SKILL.md +777 -0
  9. package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
  10. package/.claude/skills/agentdb-learning/SKILL.md +545 -0
  11. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
  12. package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
  13. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
  14. package/.claude/skills/agentic-quality-engineering/SKILL.md +604 -0
  15. package/.claude/skills/api-testing-patterns/SKILL.md +686 -0
  16. package/.claude/skills/bug-reporting-excellence/SKILL.md +632 -0
  17. package/.claude/skills/chaos-engineering-resilience/SKILL.md +109 -0
  18. package/.claude/skills/code-review-quality/SKILL.md +683 -0
  19. package/.claude/skills/compatibility-testing/SKILL.md +101 -0
  20. package/.claude/skills/compliance-testing/SKILL.md +162 -0
  21. package/.claude/skills/consultancy-practices/SKILL.md +540 -0
  22. package/.claude/skills/context-driven-testing/SKILL.md +466 -0
  23. package/.claude/skills/contract-testing/SKILL.md +193 -0
  24. package/.claude/skills/database-testing/SKILL.md +243 -0
  25. package/.claude/skills/exploratory-testing-advanced/SKILL.md +676 -0
  26. package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
  27. package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
  28. package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
  29. package/.claude/skills/github-code-review/SKILL.md +1140 -0
  30. package/.claude/skills/github-multi-repo/SKILL.md +874 -0
  31. package/.claude/skills/github-project-management/SKILL.md +1277 -0
  32. package/.claude/skills/github-release-management/SKILL.md +1081 -0
  33. package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
  34. package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
  35. package/.claude/skills/holistic-testing-pact/SKILL.md +225 -0
  36. package/.claude/skills/hooks-automation/SKILL.md +1201 -0
  37. package/.claude/skills/localization-testing/SKILL.md +115 -0
  38. package/.claude/skills/mobile-testing/SKILL.md +548 -0
  39. package/.claude/skills/mutation-testing/SKILL.md +129 -0
  40. package/.claude/skills/pair-programming/SKILL.md +1202 -0
  41. package/.claude/skills/performance-analysis/SKILL.md +563 -0
  42. package/.claude/skills/performance-testing/SKILL.md +662 -0
  43. package/.claude/skills/quality-metrics/SKILL.md +592 -0
  44. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
  45. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
  46. package/.claude/skills/refactoring-patterns/SKILL.md +778 -0
  47. package/.claude/skills/regression-testing/SKILL.md +1045 -0
  48. package/.claude/skills/risk-based-testing/SKILL.md +721 -0
  49. package/.claude/skills/security-testing/SKILL.md +651 -0
  50. package/.claude/skills/shift-left-testing/SKILL.md +535 -0
  51. package/.claude/skills/shift-right-testing/SKILL.md +591 -0
  52. package/.claude/skills/skill-builder/SKILL.md +910 -0
  53. package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
  54. package/.claude/skills/stream-chain/SKILL.md +563 -0
  55. package/.claude/skills/swarm-advanced/SKILL.md +973 -0
  56. package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
  57. package/.claude/skills/tdd-london-chicago/SKILL.md +567 -0
  58. package/.claude/skills/technical-writing/SKILL.md +235 -0
  59. package/.claude/skills/test-automation-strategy/SKILL.md +842 -0
  60. package/.claude/skills/test-data-management/SKILL.md +1067 -0
  61. package/.claude/skills/test-design-techniques/SKILL.md +160 -0
  62. package/.claude/skills/test-environment-management/SKILL.md +204 -0
  63. package/.claude/skills/test-reporting-analytics/SKILL.md +143 -0
  64. package/.claude/skills/verification-quality/SKILL.md +649 -0
  65. package/.claude/skills/visual-testing-advanced/SKILL.md +148 -0
  66. package/.claude/skills/xp-practices/SKILL.md +671 -0
  67. package/.claude/statusline-command.sh +176 -0
  68. package/CHANGELOG.md +623 -6
  69. package/README.md +101 -5
  70. package/config/improvement-loop.config.ts +323 -0
  71. package/config/neural-agent.config.ts +197 -0
  72. package/dist/adapters/MemoryStoreAdapter.d.ts +16 -16
  73. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  74. package/dist/adapters/MemoryStoreAdapter.js +16 -16
  75. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  76. package/dist/agents/BaseAgent.d.ts +69 -0
  77. package/dist/agents/BaseAgent.d.ts.map +1 -1
  78. package/dist/agents/BaseAgent.js +387 -5
  79. package/dist/agents/BaseAgent.js.map +1 -1
  80. package/dist/agents/CoverageAnalyzerAgent.d.ts +13 -2
  81. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  82. package/dist/agents/CoverageAnalyzerAgent.js +112 -12
  83. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  84. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  85. package/dist/agents/DeploymentReadinessAgent.js +13 -13
  86. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  87. package/dist/agents/FlakyTestHunterAgent.d.ts +28 -0
  88. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  89. package/dist/agents/FlakyTestHunterAgent.js +160 -4
  90. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  91. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  92. package/dist/agents/FleetCommanderAgent.js +4 -3
  93. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  94. package/dist/agents/LearningAgent.d.ts +14 -5
  95. package/dist/agents/LearningAgent.d.ts.map +1 -1
  96. package/dist/agents/LearningAgent.js +36 -16
  97. package/dist/agents/LearningAgent.js.map +1 -1
  98. package/dist/agents/NeuralAgentExtension.d.ts +117 -0
  99. package/dist/agents/NeuralAgentExtension.d.ts.map +1 -0
  100. package/dist/agents/NeuralAgentExtension.js +288 -0
  101. package/dist/agents/NeuralAgentExtension.js.map +1 -0
  102. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  103. package/dist/agents/PerformanceTesterAgent.js +11 -9
  104. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  105. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  106. package/dist/agents/ProductionIntelligenceAgent.js +14 -13
  107. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  108. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  109. package/dist/agents/QualityAnalyzerAgent.js +39 -38
  110. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  111. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  112. package/dist/agents/QualityGateAgent.js +7 -6
  113. package/dist/agents/QualityGateAgent.js.map +1 -1
  114. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  115. package/dist/agents/RegressionRiskAnalyzerAgent.js +22 -21
  116. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  117. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  118. package/dist/agents/RequirementsValidatorAgent.js +1 -1
  119. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  120. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  121. package/dist/agents/SecurityScannerAgent.js +8 -7
  122. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  123. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  124. package/dist/agents/TestDataArchitectAgent.js +12 -11
  125. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  126. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  127. package/dist/agents/TestExecutorAgent.js +18 -19
  128. package/dist/agents/TestExecutorAgent.js.map +1 -1
  129. package/dist/agents/TestGeneratorAgent.d.ts +15 -4
  130. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  131. package/dist/agents/TestGeneratorAgent.js +172 -49
  132. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  133. package/dist/agents/index.d.ts.map +1 -1
  134. package/dist/agents/index.js +2 -1
  135. package/dist/agents/index.js.map +1 -1
  136. package/dist/agents/mixins/NeuralCapableMixin.d.ts +130 -0
  137. package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +1 -0
  138. package/dist/agents/mixins/NeuralCapableMixin.js +358 -0
  139. package/dist/agents/mixins/NeuralCapableMixin.js.map +1 -0
  140. package/dist/agents/mixins/QUICCapableMixin.d.ts +34 -0
  141. package/dist/agents/mixins/QUICCapableMixin.d.ts.map +1 -0
  142. package/dist/agents/mixins/QUICCapableMixin.js +346 -0
  143. package/dist/agents/mixins/QUICCapableMixin.js.map +1 -0
  144. package/dist/cli/commands/agent/benchmark.d.ts.map +1 -1
  145. package/dist/cli/commands/agent/benchmark.js +2 -1
  146. package/dist/cli/commands/agent/benchmark.js.map +1 -1
  147. package/dist/cli/commands/agent/index.d.ts +5 -0
  148. package/dist/cli/commands/agent/index.d.ts.map +1 -1
  149. package/dist/cli/commands/agent/index.js +11 -6
  150. package/dist/cli/commands/agent/index.js.map +1 -1
  151. package/dist/cli/commands/agent/kill.d.ts +13 -0
  152. package/dist/cli/commands/agent/kill.d.ts.map +1 -0
  153. package/dist/cli/commands/agent/kill.js +65 -0
  154. package/dist/cli/commands/agent/kill.js.map +1 -0
  155. package/dist/cli/commands/agent/list.d.ts +19 -0
  156. package/dist/cli/commands/agent/list.d.ts.map +1 -0
  157. package/dist/cli/commands/agent/list.js +92 -0
  158. package/dist/cli/commands/agent/list.js.map +1 -0
  159. package/dist/cli/commands/agent/logs.d.ts +14 -0
  160. package/dist/cli/commands/agent/logs.d.ts.map +1 -0
  161. package/dist/cli/commands/agent/logs.js +77 -0
  162. package/dist/cli/commands/agent/logs.js.map +1 -0
  163. package/dist/cli/commands/agent/metrics.d.ts +21 -0
  164. package/dist/cli/commands/agent/metrics.d.ts.map +1 -0
  165. package/dist/cli/commands/agent/metrics.js +87 -0
  166. package/dist/cli/commands/agent/metrics.js.map +1 -0
  167. package/dist/cli/commands/agent/spawn.d.ts +28 -0
  168. package/dist/cli/commands/agent/spawn.d.ts.map +1 -0
  169. package/dist/cli/commands/agent/spawn.js +84 -0
  170. package/dist/cli/commands/agent/spawn.js.map +1 -0
  171. package/dist/cli/commands/analyze.d.ts.map +1 -1
  172. package/dist/cli/commands/analyze.js +2 -1
  173. package/dist/cli/commands/analyze.js.map +1 -1
  174. package/dist/cli/commands/config/list.d.ts.map +1 -1
  175. package/dist/cli/commands/config/list.js +2 -1
  176. package/dist/cli/commands/config/list.js.map +1 -1
  177. package/dist/cli/commands/config/set.d.ts +7 -0
  178. package/dist/cli/commands/config/set.d.ts.map +1 -1
  179. package/dist/cli/commands/config/set.js +35 -4
  180. package/dist/cli/commands/config/set.js.map +1 -1
  181. package/dist/cli/commands/fleet/logs.d.ts.map +1 -1
  182. package/dist/cli/commands/fleet/logs.js +2 -1
  183. package/dist/cli/commands/fleet/logs.js.map +1 -1
  184. package/dist/cli/commands/fleet/metrics.d.ts.map +1 -1
  185. package/dist/cli/commands/fleet/metrics.js +2 -1
  186. package/dist/cli/commands/fleet/metrics.js.map +1 -1
  187. package/dist/cli/commands/fleet/monitor.d.ts.map +1 -1
  188. package/dist/cli/commands/fleet/monitor.js +7 -5
  189. package/dist/cli/commands/fleet/monitor.js.map +1 -1
  190. package/dist/cli/commands/fleet.d.ts.map +1 -1
  191. package/dist/cli/commands/fleet.js +2 -1
  192. package/dist/cli/commands/fleet.js.map +1 -1
  193. package/dist/cli/commands/generate.d.ts.map +1 -1
  194. package/dist/cli/commands/generate.js +2 -1
  195. package/dist/cli/commands/generate.js.map +1 -1
  196. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  197. package/dist/cli/commands/improve/index.js +12 -11
  198. package/dist/cli/commands/improve/index.js.map +1 -1
  199. package/dist/cli/commands/init.d.ts +24 -0
  200. package/dist/cli/commands/init.d.ts.map +1 -1
  201. package/dist/cli/commands/init.js +503 -11
  202. package/dist/cli/commands/init.js.map +1 -1
  203. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  204. package/dist/cli/commands/learn/index.js +13 -12
  205. package/dist/cli/commands/learn/index.js.map +1 -1
  206. package/dist/cli/commands/monitor/alerts.d.ts.map +1 -1
  207. package/dist/cli/commands/monitor/alerts.js +2 -1
  208. package/dist/cli/commands/monitor/alerts.js.map +1 -1
  209. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  210. package/dist/cli/commands/patterns/index.js +20 -19
  211. package/dist/cli/commands/patterns/index.js.map +1 -1
  212. package/dist/cli/commands/quality/decision.d.ts.map +1 -1
  213. package/dist/cli/commands/quality/decision.js +9 -7
  214. package/dist/cli/commands/quality/decision.js.map +1 -1
  215. package/dist/cli/commands/quality/gate.d.ts.map +1 -1
  216. package/dist/cli/commands/quality/gate.js +10 -8
  217. package/dist/cli/commands/quality/gate.js.map +1 -1
  218. package/dist/cli/commands/quality/policy.d.ts.map +1 -1
  219. package/dist/cli/commands/quality/policy.js +10 -8
  220. package/dist/cli/commands/quality/policy.js.map +1 -1
  221. package/dist/cli/commands/quality/risk.d.ts.map +1 -1
  222. package/dist/cli/commands/quality/risk.js +5 -3
  223. package/dist/cli/commands/quality/risk.js.map +1 -1
  224. package/dist/cli/commands/quality/validate.d.ts.map +1 -1
  225. package/dist/cli/commands/quality/validate.js +10 -8
  226. package/dist/cli/commands/quality/validate.js.map +1 -1
  227. package/dist/cli/commands/quantization.d.ts +6 -0
  228. package/dist/cli/commands/quantization.d.ts.map +1 -0
  229. package/dist/cli/commands/quantization.js +188 -0
  230. package/dist/cli/commands/quantization.js.map +1 -0
  231. package/dist/cli/commands/routing/index.d.ts +0 -6
  232. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  233. package/dist/cli/commands/routing/index.js +17 -16
  234. package/dist/cli/commands/routing/index.js.map +1 -1
  235. package/dist/cli/commands/run.d.ts.map +1 -1
  236. package/dist/cli/commands/run.js +2 -1
  237. package/dist/cli/commands/run.js.map +1 -1
  238. package/dist/cli/commands/skills/index.d.ts +51 -0
  239. package/dist/cli/commands/skills/index.d.ts.map +1 -0
  240. package/dist/cli/commands/skills/index.js +365 -0
  241. package/dist/cli/commands/skills/index.js.map +1 -0
  242. package/dist/cli/commands/test/debug.d.ts.map +1 -1
  243. package/dist/cli/commands/test/debug.js +2 -1
  244. package/dist/cli/commands/test/debug.js.map +1 -1
  245. package/dist/cli/commands/test/mutate.d.ts.map +1 -1
  246. package/dist/cli/commands/test/mutate.js +2 -1
  247. package/dist/cli/commands/test/mutate.js.map +1 -1
  248. package/dist/cli/commands/test/parallel.d.ts.map +1 -1
  249. package/dist/cli/commands/test/parallel.js +6 -4
  250. package/dist/cli/commands/test/parallel.js.map +1 -1
  251. package/dist/cli/commands/test/profile.d.ts.map +1 -1
  252. package/dist/cli/commands/test/profile.js +3 -2
  253. package/dist/cli/commands/test/profile.js.map +1 -1
  254. package/dist/cli/commands/test/queue.d.ts.map +1 -1
  255. package/dist/cli/commands/test/queue.js +2 -1
  256. package/dist/cli/commands/test/queue.js.map +1 -1
  257. package/dist/cli/commands/test/retry.d.ts.map +1 -1
  258. package/dist/cli/commands/test/retry.js +6 -4
  259. package/dist/cli/commands/test/retry.js.map +1 -1
  260. package/dist/cli/commands/test/trace.d.ts.map +1 -1
  261. package/dist/cli/commands/test/trace.js +2 -1
  262. package/dist/cli/commands/test/trace.js.map +1 -1
  263. package/dist/cli/commands/test/watch.d.ts.map +1 -1
  264. package/dist/cli/commands/test/watch.js +3 -2
  265. package/dist/cli/commands/test/watch.js.map +1 -1
  266. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  267. package/dist/cli/commands/workflow/cancel.js +2 -1
  268. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  269. package/dist/cli/index-working.js +9 -8
  270. package/dist/cli/index-working.js.map +1 -1
  271. package/dist/cli/index.js +97 -1
  272. package/dist/cli/index.js.map +1 -1
  273. package/dist/core/EventBus.d.ts +38 -0
  274. package/dist/core/EventBus.d.ts.map +1 -1
  275. package/dist/core/EventBus.js +176 -31
  276. package/dist/core/EventBus.js.map +1 -1
  277. package/dist/core/FleetManager.d.ts +35 -1
  278. package/dist/core/FleetManager.d.ts.map +1 -1
  279. package/dist/core/FleetManager.js +121 -45
  280. package/dist/core/FleetManager.js.map +1 -1
  281. package/dist/core/MemoryManager.d.ts +19 -1
  282. package/dist/core/MemoryManager.d.ts.map +1 -1
  283. package/dist/core/MemoryManager.js +25 -1
  284. package/dist/core/MemoryManager.js.map +1 -1
  285. package/dist/core/coordination/OODACoordination.d.ts.map +1 -1
  286. package/dist/core/coordination/OODACoordination.js +2 -1
  287. package/dist/core/coordination/OODACoordination.js.map +1 -1
  288. package/dist/core/embeddings/EmbeddingCache.d.ts +134 -0
  289. package/dist/core/embeddings/EmbeddingCache.d.ts.map +1 -0
  290. package/dist/core/embeddings/EmbeddingCache.js +239 -0
  291. package/dist/core/embeddings/EmbeddingCache.js.map +1 -0
  292. package/dist/core/embeddings/EmbeddingGenerator.d.ts +224 -0
  293. package/dist/core/embeddings/EmbeddingGenerator.d.ts.map +1 -0
  294. package/dist/core/embeddings/EmbeddingGenerator.js +459 -0
  295. package/dist/core/embeddings/EmbeddingGenerator.js.map +1 -0
  296. package/dist/core/embeddings/index.d.ts +15 -0
  297. package/dist/core/embeddings/index.d.ts.map +1 -0
  298. package/dist/core/embeddings/index.js +22 -0
  299. package/dist/core/embeddings/index.js.map +1 -0
  300. package/dist/core/memory/AgentDBIntegration.d.ts +35 -0
  301. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -0
  302. package/dist/core/memory/AgentDBIntegration.js +75 -0
  303. package/dist/core/memory/AgentDBIntegration.js.map +1 -0
  304. package/dist/core/memory/AgentDBManager.d.ts +200 -0
  305. package/dist/core/memory/AgentDBManager.d.ts.map +1 -0
  306. package/dist/core/memory/AgentDBManager.js +246 -0
  307. package/dist/core/memory/AgentDBManager.js.map +1 -0
  308. package/dist/core/memory/AgentDBService.d.ts +160 -0
  309. package/dist/core/memory/AgentDBService.d.ts.map +1 -0
  310. package/dist/core/memory/AgentDBService.js +450 -0
  311. package/dist/core/memory/AgentDBService.js.map +1 -0
  312. package/dist/core/memory/RealAgentDBAdapter.d.ts +51 -0
  313. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -0
  314. package/dist/core/memory/RealAgentDBAdapter.js +231 -0
  315. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -0
  316. package/dist/core/memory/ReasoningBankAdapter.d.ts +58 -0
  317. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -0
  318. package/dist/core/memory/ReasoningBankAdapter.js +77 -0
  319. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -0
  320. package/dist/core/memory/SwarmMemoryManager.d.ts +75 -3
  321. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  322. package/dist/core/memory/SwarmMemoryManager.js +240 -55
  323. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  324. package/dist/core/memory/index.d.ts +4 -0
  325. package/dist/core/memory/index.d.ts.map +1 -1
  326. package/dist/core/memory/index.js +9 -1
  327. package/dist/core/memory/index.js.map +1 -1
  328. package/dist/core/neural/NeuralTrainer.d.ts +137 -0
  329. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -0
  330. package/dist/core/neural/NeuralTrainer.js +544 -0
  331. package/dist/core/neural/NeuralTrainer.js.map +1 -0
  332. package/dist/core/neural/index.d.ts +8 -0
  333. package/dist/core/neural/index.d.ts.map +1 -0
  334. package/dist/core/neural/index.js +24 -0
  335. package/dist/core/neural/index.js.map +1 -0
  336. package/dist/core/neural/types.d.ts +216 -0
  337. package/dist/core/neural/types.d.ts.map +1 -0
  338. package/dist/core/neural/types.js +8 -0
  339. package/dist/core/neural/types.js.map +1 -0
  340. package/dist/core/quantization/QuantizationManager.d.ts +83 -0
  341. package/dist/core/quantization/QuantizationManager.d.ts.map +1 -0
  342. package/dist/core/quantization/QuantizationManager.js +264 -0
  343. package/dist/core/quantization/QuantizationManager.js.map +1 -0
  344. package/dist/core/quantization/index.d.ts +5 -0
  345. package/dist/core/quantization/index.d.ts.map +1 -0
  346. package/dist/core/quantization/index.js +9 -0
  347. package/dist/core/quantization/index.js.map +1 -0
  348. package/dist/core/security/CertificateValidator.d.ts +130 -0
  349. package/dist/core/security/CertificateValidator.d.ts.map +1 -0
  350. package/dist/core/security/CertificateValidator.js +376 -0
  351. package/dist/core/security/CertificateValidator.js.map +1 -0
  352. package/dist/core/transport/QUICTransport.d.ts +62 -0
  353. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  354. package/dist/core/transport/QUICTransport.js +381 -0
  355. package/dist/core/transport/QUICTransport.js.map +1 -0
  356. package/dist/core/transport/SecureQUICTransport.d.ts +71 -0
  357. package/dist/core/transport/SecureQUICTransport.d.ts.map +1 -0
  358. package/dist/core/transport/SecureQUICTransport.js +253 -0
  359. package/dist/core/transport/SecureQUICTransport.js.map +1 -0
  360. package/dist/learning/AdvancedFeatureExtractor.d.ts +123 -0
  361. package/dist/learning/AdvancedFeatureExtractor.d.ts.map +1 -0
  362. package/dist/learning/AdvancedFeatureExtractor.js +423 -0
  363. package/dist/learning/AdvancedFeatureExtractor.js.map +1 -0
  364. package/dist/learning/FlakyPredictionModel.d.ts +11 -1
  365. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -1
  366. package/dist/learning/FlakyPredictionModel.js +82 -35
  367. package/dist/learning/FlakyPredictionModel.js.map +1 -1
  368. package/dist/learning/FlakyTestDetector.d.ts +9 -0
  369. package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
  370. package/dist/learning/FlakyTestDetector.js +28 -6
  371. package/dist/learning/FlakyTestDetector.js.map +1 -1
  372. package/dist/learning/ImprovementLoop.d.ts +16 -2
  373. package/dist/learning/ImprovementLoop.d.ts.map +1 -1
  374. package/dist/learning/ImprovementLoop.js +67 -8
  375. package/dist/learning/ImprovementLoop.js.map +1 -1
  376. package/dist/learning/ImprovementWorker.d.ts +83 -0
  377. package/dist/learning/ImprovementWorker.d.ts.map +1 -0
  378. package/dist/learning/ImprovementWorker.js +164 -0
  379. package/dist/learning/ImprovementWorker.js.map +1 -0
  380. package/dist/learning/NeuralPatternMatcher.d.ts +184 -0
  381. package/dist/learning/NeuralPatternMatcher.d.ts.map +1 -0
  382. package/dist/learning/NeuralPatternMatcher.js +702 -0
  383. package/dist/learning/NeuralPatternMatcher.js.map +1 -0
  384. package/dist/learning/NeuralTrainer.d.ts +209 -0
  385. package/dist/learning/NeuralTrainer.d.ts.map +1 -0
  386. package/dist/learning/NeuralTrainer.js +478 -0
  387. package/dist/learning/NeuralTrainer.js.map +1 -0
  388. package/dist/learning/index.d.ts +13 -7
  389. package/dist/learning/index.d.ts.map +1 -1
  390. package/dist/learning/index.js +27 -11
  391. package/dist/learning/index.js.map +1 -1
  392. package/dist/learning/types.d.ts +1 -0
  393. package/dist/learning/types.d.ts.map +1 -1
  394. package/dist/learning/types.js +16 -0
  395. package/dist/learning/types.js.map +1 -1
  396. package/dist/mcp/MCPToolRegistry.d.ts +34 -0
  397. package/dist/mcp/MCPToolRegistry.d.ts.map +1 -0
  398. package/dist/mcp/MCPToolRegistry.js +48 -0
  399. package/dist/mcp/MCPToolRegistry.js.map +1 -0
  400. package/dist/mcp/handlers/advanced/mutation-test-execute.d.ts +3 -3
  401. package/dist/mcp/handlers/advanced/mutation-test-execute.d.ts.map +1 -1
  402. package/dist/mcp/handlers/advanced/mutation-test-execute.js +5 -4
  403. package/dist/mcp/handlers/advanced/mutation-test-execute.js.map +1 -1
  404. package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -1
  405. package/dist/mcp/handlers/agent-spawn.js +2 -1
  406. package/dist/mcp/handlers/agent-spawn.js.map +1 -1
  407. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
  408. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +9 -8
  409. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
  410. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
  411. package/dist/mcp/handlers/analysis/coverageGapsDetect.js +6 -5
  412. package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
  413. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.d.ts.map +1 -1
  414. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.js +5 -4
  415. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.js.map +1 -1
  416. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +1 -1
  417. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +8 -7
  418. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +1 -1
  419. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
  420. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +7 -6
  421. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
  422. package/dist/mcp/handlers/analysis/securityScanComprehensive.d.ts.map +1 -1
  423. package/dist/mcp/handlers/analysis/securityScanComprehensive.js +18 -21
  424. package/dist/mcp/handlers/analysis/securityScanComprehensive.js.map +1 -1
  425. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  426. package/dist/mcp/handlers/base-handler.js +2 -9
  427. package/dist/mcp/handlers/base-handler.js.map +1 -1
  428. package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
  429. package/dist/mcp/handlers/chaos/chaos-inject-failure.js +4 -3
  430. package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
  431. package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
  432. package/dist/mcp/handlers/chaos/chaos-inject-latency.js +6 -5
  433. package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
  434. package/dist/mcp/handlers/coordination/event-emit.d.ts.map +1 -1
  435. package/dist/mcp/handlers/coordination/event-emit.js +2 -1
  436. package/dist/mcp/handlers/coordination/event-emit.js.map +1 -1
  437. package/dist/mcp/handlers/coordination/event-subscribe.d.ts.map +1 -1
  438. package/dist/mcp/handlers/coordination/event-subscribe.js +2 -1
  439. package/dist/mcp/handlers/coordination/event-subscribe.js.map +1 -1
  440. package/dist/mcp/handlers/coordination/workflow-checkpoint.d.ts.map +1 -1
  441. package/dist/mcp/handlers/coordination/workflow-checkpoint.js +2 -1
  442. package/dist/mcp/handlers/coordination/workflow-checkpoint.js.map +1 -1
  443. package/dist/mcp/handlers/coordination/workflow-create.d.ts.map +1 -1
  444. package/dist/mcp/handlers/coordination/workflow-create.js +2 -1
  445. package/dist/mcp/handlers/coordination/workflow-create.js.map +1 -1
  446. package/dist/mcp/handlers/coordination/workflow-execute.d.ts.map +1 -1
  447. package/dist/mcp/handlers/coordination/workflow-execute.js +2 -1
  448. package/dist/mcp/handlers/coordination/workflow-execute.js.map +1 -1
  449. package/dist/mcp/handlers/coordination/workflow-resume.d.ts.map +1 -1
  450. package/dist/mcp/handlers/coordination/workflow-resume.js +2 -1
  451. package/dist/mcp/handlers/coordination/workflow-resume.js.map +1 -1
  452. package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
  453. package/dist/mcp/handlers/fleet-init.js +2 -1
  454. package/dist/mcp/handlers/fleet-init.js.map +1 -1
  455. package/dist/mcp/handlers/fleet-status.d.ts.map +1 -1
  456. package/dist/mcp/handlers/fleet-status.js +31 -30
  457. package/dist/mcp/handlers/fleet-status.js.map +1 -1
  458. package/dist/mcp/handlers/integration/dependency-check.d.ts.map +1 -1
  459. package/dist/mcp/handlers/integration/dependency-check.js +3 -2
  460. package/dist/mcp/handlers/integration/dependency-check.js.map +1 -1
  461. package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
  462. package/dist/mcp/handlers/integration/integration-test-orchestrate.js +2 -1
  463. package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
  464. package/dist/mcp/handlers/optimize-tests.d.ts.map +1 -1
  465. package/dist/mcp/handlers/optimize-tests.js +33 -32
  466. package/dist/mcp/handlers/optimize-tests.js.map +1 -1
  467. package/dist/mcp/handlers/predict-defects.d.ts.map +1 -1
  468. package/dist/mcp/handlers/predict-defects.js +46 -45
  469. package/dist/mcp/handlers/predict-defects.js.map +1 -1
  470. package/dist/mcp/handlers/prediction/deployment-readiness-check.d.ts.map +1 -1
  471. package/dist/mcp/handlers/prediction/deployment-readiness-check.js +24 -23
  472. package/dist/mcp/handlers/prediction/deployment-readiness-check.js.map +1 -1
  473. package/dist/mcp/handlers/prediction/predict-defects-ai.d.ts.map +1 -1
  474. package/dist/mcp/handlers/prediction/predict-defects-ai.js +10 -9
  475. package/dist/mcp/handlers/prediction/predict-defects-ai.js.map +1 -1
  476. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
  477. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +10 -9
  478. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
  479. package/dist/mcp/handlers/prediction/visual-test-regression.d.ts.map +1 -1
  480. package/dist/mcp/handlers/prediction/visual-test-regression.js +7 -6
  481. package/dist/mcp/handlers/prediction/visual-test-regression.js.map +1 -1
  482. package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
  483. package/dist/mcp/handlers/quality-analyze.js +53 -52
  484. package/dist/mcp/handlers/quality-analyze.js.map +1 -1
  485. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  486. package/dist/mcp/handlers/task-orchestrate.js +19 -18
  487. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  488. package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
  489. package/dist/mcp/handlers/test/test-execute-parallel.js +7 -6
  490. package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
  491. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  492. package/dist/mcp/handlers/test/test-generate-enhanced.js +2 -1
  493. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  494. package/dist/mcp/handlers/test/test-optimize-sublinear.d.ts.map +1 -1
  495. package/dist/mcp/handlers/test/test-optimize-sublinear.js +3 -2
  496. package/dist/mcp/handlers/test/test-optimize-sublinear.js.map +1 -1
  497. package/dist/mcp/handlers/test-execute.d.ts.map +1 -1
  498. package/dist/mcp/handlers/test-execute.js +11 -10
  499. package/dist/mcp/handlers/test-execute.js.map +1 -1
  500. package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
  501. package/dist/mcp/handlers/test-generate.js +4 -3
  502. package/dist/mcp/handlers/test-generate.js.map +1 -1
  503. package/dist/mcp/server.d.ts +4 -4
  504. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  505. package/dist/mcp/services/AgentRegistry.js +9 -2
  506. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  507. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
  508. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +10 -9
  509. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
  510. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -1
  511. package/dist/mcp/streaming/StreamingMCPTool.js +2 -1
  512. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -1
  513. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
  514. package/dist/mcp/streaming/TestExecuteStreamHandler.js +6 -5
  515. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
  516. package/dist/reasoning/TestTemplateCreator.d.ts +10 -2
  517. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -1
  518. package/dist/reasoning/TestTemplateCreator.js +81 -21
  519. package/dist/reasoning/TestTemplateCreator.js.map +1 -1
  520. package/dist/transport/QUICTransport.d.ts +340 -0
  521. package/dist/transport/QUICTransport.d.ts.map +1 -0
  522. package/dist/transport/QUICTransport.js +814 -0
  523. package/dist/transport/QUICTransport.js.map +1 -0
  524. package/dist/transport/UDPTransport.d.ts +348 -0
  525. package/dist/transport/UDPTransport.d.ts.map +1 -0
  526. package/dist/transport/UDPTransport.js +820 -0
  527. package/dist/transport/UDPTransport.js.map +1 -0
  528. package/dist/types/errors.d.ts +1 -1
  529. package/dist/types/index.d.ts +37 -0
  530. package/dist/types/index.d.ts.map +1 -1
  531. package/dist/types/index.js +2 -0
  532. package/dist/types/index.js.map +1 -1
  533. package/dist/types/pattern.types.d.ts +39 -3
  534. package/dist/types/pattern.types.d.ts.map +1 -1
  535. package/dist/types/quic.d.ts +339 -0
  536. package/dist/types/quic.d.ts.map +1 -0
  537. package/dist/types/quic.js +48 -0
  538. package/dist/types/quic.js.map +1 -0
  539. package/dist/utils/Config.js +3 -3
  540. package/dist/utils/Config.js.map +1 -1
  541. package/dist/utils/Database.d.ts +14 -0
  542. package/dist/utils/Database.d.ts.map +1 -1
  543. package/dist/utils/Database.js +51 -4
  544. package/dist/utils/Database.js.map +1 -1
  545. package/dist/utils/Logger.d.ts.map +1 -1
  546. package/dist/utils/Logger.js +111 -26
  547. package/dist/utils/Logger.js.map +1 -1
  548. package/dist/utils/ProcessExit.d.ts +23 -0
  549. package/dist/utils/ProcessExit.d.ts.map +1 -0
  550. package/dist/utils/ProcessExit.js +40 -0
  551. package/dist/utils/ProcessExit.js.map +1 -0
  552. package/dist/utils/SecureRandom.d.ts +171 -0
  553. package/dist/utils/SecureRandom.d.ts.map +1 -0
  554. package/dist/utils/SecureRandom.js +229 -0
  555. package/dist/utils/SecureRandom.js.map +1 -0
  556. package/dist/utils/SecureUrlValidator.d.ts +167 -0
  557. package/dist/utils/SecureUrlValidator.d.ts.map +1 -0
  558. package/dist/utils/SecureUrlValidator.js +306 -0
  559. package/dist/utils/SecureUrlValidator.js.map +1 -0
  560. package/dist/utils/SecureValidation.d.ts +131 -0
  561. package/dist/utils/SecureValidation.d.ts.map +1 -0
  562. package/dist/utils/SecureValidation.js +265 -0
  563. package/dist/utils/SecureValidation.js.map +1 -0
  564. package/dist/utils/validation.d.ts.map +1 -1
  565. package/dist/utils/validation.js +5 -4
  566. package/dist/utils/validation.js.map +1 -1
  567. package/package.json +31 -8
@@ -0,0 +1,778 @@
1
+ ---
2
+ name: refactoring-patterns
3
+ description: Apply safe refactoring patterns to improve code structure without changing behavior. Use when cleaning up code, reducing technical debt, or improving maintainability.
4
+ version: 1.0.0
5
+ category: development
6
+ tags: [refactoring, clean-code, technical-debt, code-quality, patterns, design]
7
+ difficulty: intermediate
8
+ estimated_time: 35-50 minutes
9
+ author: user
10
+ ---
11
+
12
+ # Refactoring Patterns
13
+
14
+ ## Core Philosophy
15
+
16
+ Refactoring is changing code structure without changing behavior. Tests are your safety net - refactor fearlessly when you have good tests.
17
+
18
+ **Key principle:** Small steps, frequent commits, always green tests.
19
+
20
+ ## When to Refactor
21
+
22
+ ### ✅ Refactor When:
23
+ - Adding new feature requires changing messy code
24
+ - Code is hard to test
25
+ - You touch code and don't understand it
26
+ - Duplication becomes obvious (third time)
27
+ - Performance is adequate but code is ugly
28
+
29
+ ### ❌ Don't Refactor When:
30
+ - No tests exist (write tests first)
31
+ - Code works and you won't touch it again
32
+ - Deadline is tomorrow (technical debt note, refactor later)
33
+ - You don't understand what the code does yet
34
+ - "Just because" - refactor needs a reason
35
+
36
+ ## The Refactoring Cycle
37
+
38
+ **Red → Green → Refactor**
39
+
40
+ 1. **Ensure tests pass** (Green)
41
+ 2. **Make small change** (Refactor)
42
+ 3. **Run tests** (Still Green)
43
+ 4. **Commit** (Save progress)
44
+ 5. **Repeat**
45
+
46
+ **Never refactor without tests. Never.**
47
+
48
+ ## Extract Method
49
+
50
+ **Problem:** Long method doing too much
51
+
52
+ **Before:**
53
+ ```javascript
54
+ function processOrder(order) {
55
+ // Validate order
56
+ if (!order.items || order.items.length === 0) {
57
+ throw new Error('Order has no items');
58
+ }
59
+ if (!order.customer || !order.customer.email) {
60
+ throw new Error('Invalid customer');
61
+ }
62
+
63
+ // Calculate total
64
+ let subtotal = 0;
65
+ for (let item of order.items) {
66
+ subtotal += item.price * item.quantity;
67
+ }
68
+ let tax = subtotal * 0.10;
69
+ let total = subtotal + tax;
70
+
71
+ // Save order
72
+ const savedOrder = db.orders.create({
73
+ ...order,
74
+ subtotal,
75
+ tax,
76
+ total,
77
+ status: 'pending'
78
+ });
79
+
80
+ // Send email
81
+ emailService.send({
82
+ to: order.customer.email,
83
+ subject: 'Order Confirmation',
84
+ body: `Your order #${savedOrder.id} has been received.`
85
+ });
86
+
87
+ return savedOrder;
88
+ }
89
+ ```
90
+
91
+ **After:**
92
+ ```javascript
93
+ function processOrder(order) {
94
+ validateOrder(order);
95
+ const pricing = calculatePricing(order);
96
+ const savedOrder = saveOrder(order, pricing);
97
+ sendConfirmationEmail(order.customer.email, savedOrder.id);
98
+ return savedOrder;
99
+ }
100
+
101
+ function validateOrder(order) {
102
+ if (!order.items || order.items.length === 0) {
103
+ throw new Error('Order has no items');
104
+ }
105
+ if (!order.customer || !order.customer.email) {
106
+ throw new Error('Invalid customer');
107
+ }
108
+ }
109
+
110
+ function calculatePricing(order) {
111
+ const subtotal = order.items.reduce((sum, item) =>
112
+ sum + item.price * item.quantity, 0
113
+ );
114
+ const tax = subtotal * 0.10;
115
+ const total = subtotal + tax;
116
+ return { subtotal, tax, total };
117
+ }
118
+
119
+ function saveOrder(order, pricing) {
120
+ return db.orders.create({
121
+ ...order,
122
+ ...pricing,
123
+ status: 'pending'
124
+ });
125
+ }
126
+
127
+ function sendConfirmationEmail(email, orderId) {
128
+ emailService.send({
129
+ to: email,
130
+ subject: 'Order Confirmation',
131
+ body: `Your order #${orderId} has been received.`
132
+ });
133
+ }
134
+ ```
135
+
136
+ **Benefits:**
137
+ - Each function has single responsibility
138
+ - Easy to test each part independently
139
+ - Clear what the code does at a glance
140
+
141
+ ## Extract Class
142
+
143
+ **Problem:** Class doing too much
144
+
145
+ **Before:**
146
+ ```javascript
147
+ class Order {
148
+ constructor(items, customer) {
149
+ this.items = items;
150
+ this.customer = customer;
151
+ }
152
+
153
+ calculateSubtotal() {
154
+ return this.items.reduce((sum, item) =>
155
+ sum + item.price * item.quantity, 0
156
+ );
157
+ }
158
+
159
+ calculateTax() {
160
+ return this.calculateSubtotal() * 0.10;
161
+ }
162
+
163
+ calculateTotal() {
164
+ return this.calculateSubtotal() + this.calculateTax();
165
+ }
166
+
167
+ sendConfirmationEmail() {
168
+ emailService.send({
169
+ to: this.customer.email,
170
+ subject: 'Order Confirmation',
171
+ body: `Your order has been received. Total: $${this.calculateTotal()}`
172
+ });
173
+ }
174
+
175
+ sendShippingNotification() {
176
+ emailService.send({
177
+ to: this.customer.email,
178
+ subject: 'Order Shipped',
179
+ body: `Your order has been shipped.`
180
+ });
181
+ }
182
+ }
183
+ ```
184
+
185
+ **After:**
186
+ ```javascript
187
+ class Order {
188
+ constructor(items, customer) {
189
+ this.items = items;
190
+ this.customer = customer;
191
+ this.pricing = new OrderPricing(items);
192
+ this.notifications = new OrderNotifications(customer.email);
193
+ }
194
+
195
+ getTotal() {
196
+ return this.pricing.calculateTotal();
197
+ }
198
+
199
+ sendConfirmation() {
200
+ this.notifications.sendConfirmation(this.getTotal());
201
+ }
202
+
203
+ sendShippingNotification() {
204
+ this.notifications.sendShipping();
205
+ }
206
+ }
207
+
208
+ class OrderPricing {
209
+ constructor(items) {
210
+ this.items = items;
211
+ }
212
+
213
+ calculateSubtotal() {
214
+ return this.items.reduce((sum, item) =>
215
+ sum + item.price * item.quantity, 0
216
+ );
217
+ }
218
+
219
+ calculateTax() {
220
+ return this.calculateSubtotal() * 0.10;
221
+ }
222
+
223
+ calculateTotal() {
224
+ return this.calculateSubtotal() + this.calculateTax();
225
+ }
226
+ }
227
+
228
+ class OrderNotifications {
229
+ constructor(email) {
230
+ this.email = email;
231
+ }
232
+
233
+ sendConfirmation(total) {
234
+ emailService.send({
235
+ to: this.email,
236
+ subject: 'Order Confirmation',
237
+ body: `Your order has been received. Total: $${total}`
238
+ });
239
+ }
240
+
241
+ sendShipping() {
242
+ emailService.send({
243
+ to: this.email,
244
+ subject: 'Order Shipped',
245
+ body: `Your order has been shipped.`
246
+ });
247
+ }
248
+ }
249
+ ```
250
+
251
+ ## Replace Conditional with Polymorphism
252
+
253
+ **Problem:** Complex conditionals based on type
254
+
255
+ **Before:**
256
+ ```javascript
257
+ class PaymentProcessor {
258
+ processPayment(payment) {
259
+ if (payment.type === 'credit_card') {
260
+ return this.chargeCreditCard(
261
+ payment.cardNumber,
262
+ payment.amount
263
+ );
264
+ } else if (payment.type === 'paypal') {
265
+ return this.chargePayPal(
266
+ payment.paypalAccount,
267
+ payment.amount
268
+ );
269
+ } else if (payment.type === 'crypto') {
270
+ return this.chargeCrypto(
271
+ payment.walletAddress,
272
+ payment.amount
273
+ );
274
+ }
275
+ }
276
+ }
277
+ ```
278
+
279
+ **After:**
280
+ ```javascript
281
+ class PaymentProcessor {
282
+ processPayment(paymentMethod) {
283
+ return paymentMethod.charge();
284
+ }
285
+ }
286
+
287
+ class CreditCardPayment {
288
+ constructor(cardNumber, amount) {
289
+ this.cardNumber = cardNumber;
290
+ this.amount = amount;
291
+ }
292
+
293
+ charge() {
294
+ return gateway.chargeCreditCard(this.cardNumber, this.amount);
295
+ }
296
+ }
297
+
298
+ class PayPalPayment {
299
+ constructor(account, amount) {
300
+ this.account = account;
301
+ this.amount = amount;
302
+ }
303
+
304
+ charge() {
305
+ return gateway.chargePayPal(this.account, this.amount);
306
+ }
307
+ }
308
+
309
+ class CryptoPayment {
310
+ constructor(walletAddress, amount) {
311
+ this.walletAddress = walletAddress;
312
+ this.amount = amount;
313
+ }
314
+
315
+ charge() {
316
+ return gateway.chargeCrypto(this.walletAddress, this.amount);
317
+ }
318
+ }
319
+ ```
320
+
321
+ ## Introduce Parameter Object
322
+
323
+ **Problem:** Functions with many parameters
324
+
325
+ **Before:**
326
+ ```javascript
327
+ function createUser(
328
+ firstName,
329
+ lastName,
330
+ email,
331
+ phoneNumber,
332
+ address,
333
+ city,
334
+ state,
335
+ zipCode,
336
+ country
337
+ ) {
338
+ // ...
339
+ }
340
+
341
+ createUser(
342
+ 'John',
343
+ 'Doe',
344
+ 'john@example.com',
345
+ '555-1234',
346
+ '123 Main St',
347
+ 'Springfield',
348
+ 'IL',
349
+ '62701',
350
+ 'USA'
351
+ );
352
+ ```
353
+
354
+ **After:**
355
+ ```javascript
356
+ class UserProfile {
357
+ constructor(firstName, lastName, contactInfo, address) {
358
+ this.firstName = firstName;
359
+ this.lastName = lastName;
360
+ this.contactInfo = contactInfo;
361
+ this.address = address;
362
+ }
363
+ }
364
+
365
+ class ContactInfo {
366
+ constructor(email, phoneNumber) {
367
+ this.email = email;
368
+ this.phoneNumber = phoneNumber;
369
+ }
370
+ }
371
+
372
+ class Address {
373
+ constructor(street, city, state, zipCode, country) {
374
+ this.street = street;
375
+ this.city = city;
376
+ this.state = state;
377
+ this.zipCode = zipCode;
378
+ this.country = country;
379
+ }
380
+ }
381
+
382
+ function createUser(profile) {
383
+ // ...
384
+ }
385
+
386
+ createUser(new UserProfile(
387
+ 'John',
388
+ 'Doe',
389
+ new ContactInfo('john@example.com', '555-1234'),
390
+ new Address('123 Main St', 'Springfield', 'IL', '62701', 'USA')
391
+ ));
392
+ ```
393
+
394
+ ## Replace Magic Numbers with Named Constants
395
+
396
+ **Before:**
397
+ ```javascript
398
+ function calculateDiscount(price, customerType) {
399
+ if (customerType === 1) {
400
+ return price * 0.10;
401
+ } else if (customerType === 2) {
402
+ return price * 0.20;
403
+ } else if (customerType === 3) {
404
+ return price * 0.30;
405
+ }
406
+ return 0;
407
+ }
408
+ ```
409
+
410
+ **After:**
411
+ ```javascript
412
+ const CustomerType = {
413
+ STANDARD: 1,
414
+ PREMIUM: 2,
415
+ VIP: 3
416
+ };
417
+
418
+ const DiscountRate = {
419
+ [CustomerType.STANDARD]: 0.10,
420
+ [CustomerType.PREMIUM]: 0.20,
421
+ [CustomerType.VIP]: 0.30
422
+ };
423
+
424
+ function calculateDiscount(price, customerType) {
425
+ const rate = DiscountRate[customerType] || 0;
426
+ return price * rate;
427
+ }
428
+ ```
429
+
430
+ ## Decompose Conditional
431
+
432
+ **Problem:** Complex conditional logic
433
+
434
+ **Before:**
435
+ ```javascript
436
+ if (
437
+ order.total > 1000 &&
438
+ order.customer.isPremium &&
439
+ order.shippingMethod === 'express' &&
440
+ order.items.every(item => item.inStock)
441
+ ) {
442
+ return 'ELIGIBLE_FOR_FREE_SHIPPING';
443
+ }
444
+ ```
445
+
446
+ **After:**
447
+ ```javascript
448
+ function isEligibleForFreeShipping(order) {
449
+ return (
450
+ isLargeOrder(order) &&
451
+ isPremiumCustomer(order) &&
452
+ isExpressShipping(order) &&
453
+ allItemsInStock(order)
454
+ );
455
+ }
456
+
457
+ function isLargeOrder(order) {
458
+ return order.total > 1000;
459
+ }
460
+
461
+ function isPremiumCustomer(order) {
462
+ return order.customer.isPremium;
463
+ }
464
+
465
+ function isExpressShipping(order) {
466
+ return order.shippingMethod === 'express';
467
+ }
468
+
469
+ function allItemsInStock(order) {
470
+ return order.items.every(item => item.inStock);
471
+ }
472
+
473
+ if (isEligibleForFreeShipping(order)) {
474
+ return 'ELIGIBLE_FOR_FREE_SHIPPING';
475
+ }
476
+ ```
477
+
478
+ ## Replace Loop with Pipeline
479
+
480
+ **Before:**
481
+ ```javascript
482
+ function getTopExpensiveProducts(products) {
483
+ let inStock = [];
484
+ for (let product of products) {
485
+ if (product.inStock) {
486
+ inStock.push(product);
487
+ }
488
+ }
489
+
490
+ inStock.sort((a, b) => b.price - a.price);
491
+
492
+ let top5 = [];
493
+ for (let i = 0; i < 5 && i < inStock.length; i++) {
494
+ top5.push(inStock[i]);
495
+ }
496
+
497
+ let names = [];
498
+ for (let product of top5) {
499
+ names.push(product.name);
500
+ }
501
+
502
+ return names;
503
+ }
504
+ ```
505
+
506
+ **After:**
507
+ ```javascript
508
+ function getTopExpensiveProducts(products) {
509
+ return products
510
+ .filter(p => p.inStock)
511
+ .sort((a, b) => b.price - a.price)
512
+ .slice(0, 5)
513
+ .map(p => p.name);
514
+ }
515
+ ```
516
+
517
+ ## Remove Duplication
518
+
519
+ **Before:**
520
+ ```javascript
521
+ function processOnlineOrder(order) {
522
+ validateOrder(order);
523
+ const total = calculateTotal(order);
524
+ const savedOrder = saveOrder(order, total);
525
+ sendEmail(order.customer.email, savedOrder.id);
526
+ logActivity('Order processed', savedOrder.id);
527
+ return savedOrder;
528
+ }
529
+
530
+ function processPhoneOrder(order) {
531
+ validateOrder(order);
532
+ const total = calculateTotal(order);
533
+ const savedOrder = saveOrder(order, total);
534
+ sendEmail(order.customer.email, savedOrder.id);
535
+ logActivity('Phone order processed', savedOrder.id);
536
+ return savedOrder;
537
+ }
538
+ ```
539
+
540
+ **After:**
541
+ ```javascript
542
+ function processOrder(order, source) {
543
+ validateOrder(order);
544
+ const total = calculateTotal(order);
545
+ const savedOrder = saveOrder(order, total);
546
+ sendEmail(order.customer.email, savedOrder.id);
547
+ logActivity(`${source} order processed`, savedOrder.id);
548
+ return savedOrder;
549
+ }
550
+
551
+ function processOnlineOrder(order) {
552
+ return processOrder(order, 'Online');
553
+ }
554
+
555
+ function processPhoneOrder(order) {
556
+ return processOrder(order, 'Phone');
557
+ }
558
+ ```
559
+
560
+ ## Refactoring Smells (When to Refactor)
561
+
562
+ ### Long Method
563
+ **Smell:** Method has too many lines (>20-30)
564
+ **Refactor:** Extract Method
565
+
566
+ ### Large Class
567
+ **Smell:** Class has too many responsibilities
568
+ **Refactor:** Extract Class
569
+
570
+ ### Long Parameter List
571
+ **Smell:** Function has >3-4 parameters
572
+ **Refactor:** Introduce Parameter Object
573
+
574
+ ### Duplicated Code
575
+ **Smell:** Same code in multiple places
576
+ **Refactor:** Extract Method/Class
577
+
578
+ ### Dead Code
579
+ **Smell:** Unused code
580
+ **Refactor:** Delete it
581
+
582
+ ### Comments Explaining What Code Does
583
+ **Smell:** Comment saying "This calculates discount"
584
+ **Refactor:** Extract method named `calculateDiscount()`
585
+
586
+ ### Magic Numbers
587
+ **Smell:** Unexplained constants (42, 0.10, 1000)
588
+ **Refactor:** Named Constants
589
+
590
+ ### Nested Conditionals
591
+ **Smell:** If inside if inside if
592
+ **Refactor:** Extract methods, early returns, guard clauses
593
+
594
+ ## Safe Refactoring Workflow
595
+
596
+ ### Step 1: Ensure Tests Pass
597
+ ```bash
598
+ npm test
599
+ # All tests green ✅
600
+ ```
601
+
602
+ ### Step 2: Make Small Change
603
+ ```javascript
604
+ // Extract one small method
605
+ function calculateSubtotal(items) {
606
+ return items.reduce((sum, item) =>
607
+ sum + item.price * item.quantity, 0
608
+ );
609
+ }
610
+ ```
611
+
612
+ ### Step 3: Run Tests Again
613
+ ```bash
614
+ npm test
615
+ # Still green ✅
616
+ ```
617
+
618
+ ### Step 4: Commit
619
+ ```bash
620
+ git add .
621
+ git commit -m "refactor: extract calculateSubtotal method"
622
+ ```
623
+
624
+ ### Step 5: Repeat
625
+ Next small refactoring...
626
+
627
+ ## IDE Refactoring Tools
628
+
629
+ ### Automated Refactorings (Safe)
630
+ - **Rename** - Change variable/function/class name everywhere
631
+ - **Extract Method** - Pull code into new function
632
+ - **Extract Variable** - Give expression a name
633
+ - **Inline** - Remove unnecessary abstraction
634
+ - **Move** - Relocate code to better place
635
+
636
+ ### Use These!
637
+ Modern IDEs (VS Code, IntelliJ, WebStorm) do these safely with guaranteed correctness.
638
+
639
+ ## Refactoring Anti-Patterns
640
+
641
+ ### ❌ Refactoring Without Tests
642
+ **Problem:** No safety net, might break things
643
+ **Solution:** Write tests first, then refactor
644
+
645
+ ### ❌ Big Bang Refactoring
646
+ **Problem:** Rewrite everything at once
647
+ **Solution:** Incremental refactoring, small steps
648
+
649
+ ### ❌ Refactoring for Perfection
650
+ **Problem:** Endless tweaking
651
+ **Solution:** Good enough is good enough. Move on.
652
+
653
+ ### ❌ Premature Abstraction
654
+ **Problem:** Creating abstractions before patterns clear
655
+ **Solution:** Wait for duplication, then extract
656
+
657
+ ### ❌ Refactoring During Feature Work
658
+ **Problem:** Mixing refactoring with new features
659
+ **Solution:** Separate commits: refactor first, then feature
660
+
661
+ ## Boy Scout Rule
662
+
663
+ **"Leave the code better than you found it."**
664
+
665
+ Every time you touch code:
666
+ 1. Make it slightly better
667
+ 2. Don't need to make it perfect
668
+ 3. Small improvements accumulate
669
+
670
+ **Example:**
671
+ ```javascript
672
+ // Found this
673
+ function calc(a,b,c){return a*b+c;}
674
+
675
+ // Left it as this
676
+ function calculateTotal(price, quantity, tax) {
677
+ return price * quantity + tax;
678
+ }
679
+ ```
680
+
681
+ ## Using with QE Agents
682
+
683
+ ### Automated Refactoring Detection
684
+
685
+ **qe-quality-analyzer** identifies refactoring opportunities:
686
+ ```typescript
687
+ // Agent detects code smells
688
+ const codeSmells = await agent.detectCodeSmells({
689
+ scope: 'src/services/',
690
+ patterns: [
691
+ 'long-method',
692
+ 'large-class',
693
+ 'duplicate-code',
694
+ 'feature-envy',
695
+ 'data-clumps'
696
+ ]
697
+ });
698
+
699
+ // Suggests specific refactorings
700
+ const suggestions = await agent.suggestRefactorings({
701
+ codeSmells,
702
+ preserveTests: true,
703
+ riskTolerance: 'low'
704
+ });
705
+ ```
706
+
707
+ ### Safe Refactoring with Test Verification
708
+
709
+ ```typescript
710
+ // Agent validates refactoring didn't break behavior
711
+ const before = await git.getCurrentCommit();
712
+ await human.performRefactoring();
713
+ const after = await git.getCurrentCommit();
714
+
715
+ const validation = await qe-test-executor.verifyRefactoring({
716
+ beforeCommit: before,
717
+ afterCommit: after,
718
+ expectSameBehavior: true,
719
+ runFullSuite: true
720
+ });
721
+
722
+ // Returns: { testsPass: true, behaviorPreserved: true, coverageChange: +2% }
723
+ ```
724
+
725
+ ### Fleet Coordination for Large Refactorings
726
+
727
+ ```typescript
728
+ // Multiple agents coordinate on large refactoring
729
+ const refactoringFleet = await FleetManager.coordinate({
730
+ strategy: 'refactoring',
731
+ agents: [
732
+ 'qe-quality-analyzer', // Identify targets
733
+ 'qe-test-generator', // Add safety tests
734
+ 'qe-test-executor', // Verify behavior
735
+ 'qe-coverage-analyzer' // Check coverage impact
736
+ ],
737
+ topology: 'sequential'
738
+ });
739
+
740
+ await refactoringFleet.execute({
741
+ target: 'src/services/OrderService.ts',
742
+ refactoringType: 'extract-class'
743
+ });
744
+ ```
745
+
746
+ ---
747
+
748
+ ## Related Skills
749
+
750
+ **Core Quality:**
751
+ - [agentic-quality-engineering](../agentic-quality-engineering/) - Agent-driven refactoring workflows
752
+
753
+ **Development:**
754
+ - [tdd-london-chicago](../tdd-london-chicago/) - Test coverage during refactoring
755
+ - [code-review-quality](../code-review-quality/) - Review refactored code
756
+ - [xp-practices](../xp-practices/) - Collective code ownership
757
+
758
+ **Testing:**
759
+ - [test-automation-strategy](../test-automation-strategy/) - Maintain test suite during refactoring
760
+
761
+ ---
762
+
763
+ ## Remember
764
+
765
+ Refactoring is not:
766
+ - Adding features
767
+ - Fixing bugs
768
+ - Optimizing performance
769
+ - Rewriting from scratch
770
+
771
+ Refactoring is:
772
+ - Improving code structure
773
+ - Making code easier to understand
774
+ - Reducing complexity
775
+ - Removing duplication
776
+ - **Without changing behavior**
777
+
778
+ **Always have tests. Always take small steps. Always keep tests green.**