claude-flow 3.42.2 → 3.42.3

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 (461) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
  2. package/.claude/agents/analysis/analyze-code-quality.md +57 -57
  3. package/.claude/agents/analysis/code-analyzer.md +188 -188
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
  6. package/.claude/agents/base-template-generator.md +41 -41
  7. package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
  8. package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
  9. package/.claude/agents/consensus/gossip-coordinator.md +42 -42
  10. package/.claude/agents/consensus/performance-benchmarker.md +830 -830
  11. package/.claude/agents/consensus/quorum-manager.md +802 -802
  12. package/.claude/agents/consensus/raft-manager.md +42 -42
  13. package/.claude/agents/consensus/security-manager.md +601 -601
  14. package/.claude/agents/core/coder.md +254 -254
  15. package/.claude/agents/core/planner.md +151 -151
  16. package/.claude/agents/core/researcher.md +173 -173
  17. package/.claude/agents/core/reviewer.md +308 -308
  18. package/.claude/agents/core/tester.md +299 -299
  19. package/.claude/agents/custom/test-long-runner.md +43 -43
  20. package/.claude/agents/data/ml/data-ml-model.md +75 -75
  21. package/.claude/agents/database-specialist.md +9 -9
  22. package/.claude/agents/development/backend/dev-backend-api.md +28 -28
  23. package/.claude/agents/development/dev-backend-api.md +177 -177
  24. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
  25. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
  26. package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
  27. package/.claude/agents/dual-mode/codex-worker.md +190 -190
  28. package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
  29. package/.claude/agents/flow-nexus/app-store.md +87 -87
  30. package/.claude/agents/flow-nexus/authentication.md +68 -68
  31. package/.claude/agents/flow-nexus/challenges.md +80 -80
  32. package/.claude/agents/flow-nexus/neural-network.md +87 -87
  33. package/.claude/agents/flow-nexus/payments.md +82 -82
  34. package/.claude/agents/flow-nexus/sandbox.md +75 -75
  35. package/.claude/agents/flow-nexus/swarm.md +75 -75
  36. package/.claude/agents/flow-nexus/user-tools.md +95 -95
  37. package/.claude/agents/flow-nexus/workflow.md +83 -83
  38. package/.claude/agents/github/code-review-swarm.md +520 -520
  39. package/.claude/agents/github/github-modes.md +153 -153
  40. package/.claude/agents/github/issue-tracker.md +298 -298
  41. package/.claude/agents/github/multi-repo-swarm.md +524 -524
  42. package/.claude/agents/github/pr-manager.md +162 -162
  43. package/.claude/agents/github/project-board-sync.md +477 -477
  44. package/.claude/agents/github/release-manager.md +337 -337
  45. package/.claude/agents/github/release-swarm.md +550 -550
  46. package/.claude/agents/github/repo-architect.md +364 -364
  47. package/.claude/agents/github/swarm-issue.md +550 -550
  48. package/.claude/agents/github/swarm-pr.md +401 -401
  49. package/.claude/agents/github/sync-coordinator.md +424 -424
  50. package/.claude/agents/github/workflow-automation.md +604 -604
  51. package/.claude/agents/goal/agent.md +816 -816
  52. package/.claude/agents/goal/code-goal-planner.md +444 -444
  53. package/.claude/agents/goal/goal-planner.md +167 -167
  54. package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
  55. package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
  56. package/.claude/agents/hive-mind/scout-explorer.md +240 -240
  57. package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
  58. package/.claude/agents/hive-mind/worker-specialist.md +215 -215
  59. package/.claude/agents/neural/safla-neural.md +73 -73
  60. package/.claude/agents/optimization/benchmark-suite.md +662 -662
  61. package/.claude/agents/optimization/load-balancer.md +428 -428
  62. package/.claude/agents/optimization/performance-monitor.md +669 -669
  63. package/.claude/agents/optimization/resource-allocator.md +671 -671
  64. package/.claude/agents/optimization/topology-optimizer.md +805 -805
  65. package/.claude/agents/payments/agentic-payments.md +126 -126
  66. package/.claude/agents/project-coordinator.md +8 -8
  67. package/.claude/agents/python-specialist.md +9 -9
  68. package/.claude/agents/reasoning/agent.md +816 -816
  69. package/.claude/agents/reasoning/goal-planner.md +72 -72
  70. package/.claude/agents/security-auditor.md +9 -9
  71. package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
  72. package/.claude/agents/sparc/architecture.md +452 -452
  73. package/.claude/agents/sparc/pseudocode.md +298 -298
  74. package/.claude/agents/sparc/refinement.md +503 -503
  75. package/.claude/agents/sparc/specification.md +257 -257
  76. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
  77. package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
  78. package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
  79. package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
  80. package/.claude/agents/sublinear/performance-optimizer.md +367 -367
  81. package/.claude/agents/sublinear/trading-predictor.md +245 -245
  82. package/.claude/agents/swarm/adaptive-coordinator.md +363 -363
  83. package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
  84. package/.claude/agents/swarm/mesh-coordinator.md +362 -362
  85. package/.claude/agents/templates/automation-smart-agent.md +184 -184
  86. package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
  87. package/.claude/agents/templates/github-pr-manager.md +154 -154
  88. package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
  89. package/.claude/agents/templates/memory-coordinator.md +162 -162
  90. package/.claude/agents/templates/migration-plan.md +723 -723
  91. package/.claude/agents/templates/orchestrator-task.md +119 -119
  92. package/.claude/agents/templates/performance-analyzer.md +178 -178
  93. package/.claude/agents/templates/sparc-coordinator.md +162 -162
  94. package/.claude/agents/testing/production-validator.md +372 -372
  95. package/.claude/agents/testing/tdd-london-swarm.md +221 -221
  96. package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
  97. package/.claude/agents/testing/validation/production-validator.md +372 -372
  98. package/.claude/agents/typescript-specialist.md +9 -9
  99. package/.claude/agents/v3/database-specialist.md +9 -9
  100. package/.claude/agents/v3/project-coordinator.md +8 -8
  101. package/.claude/agents/v3/python-specialist.md +9 -9
  102. package/.claude/agents/v3/test-architect.md +9 -9
  103. package/.claude/agents/v3/typescript-specialist.md +9 -9
  104. package/.claude/agents/v3/v3-integration-architect.md +311 -311
  105. package/.claude/agents/v3/v3-memory-specialist.md +280 -280
  106. package/.claude/agents/v3/v3-performance-engineer.md +362 -362
  107. package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
  108. package/.claude/agents/v3/v3-security-architect.md +139 -139
  109. package/.claude/checkpoints/1767754460.json +8 -8
  110. package/.claude/commands/agents/README.md +10 -10
  111. package/.claude/commands/agents/agent-capabilities.md +21 -21
  112. package/.claude/commands/agents/agent-coordination.md +28 -28
  113. package/.claude/commands/agents/agent-spawning.md +28 -28
  114. package/.claude/commands/agents/agent-types.md +26 -26
  115. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
  116. package/.claude/commands/analysis/README.md +9 -9
  117. package/.claude/commands/analysis/bottleneck-detect.md +162 -162
  118. package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
  119. package/.claude/commands/analysis/performance-report.md +25 -25
  120. package/.claude/commands/analysis/token-efficiency.md +44 -44
  121. package/.claude/commands/analysis/token-usage.md +25 -25
  122. package/.claude/commands/automation/README.md +9 -9
  123. package/.claude/commands/automation/auto-agent.md +122 -122
  124. package/.claude/commands/automation/self-healing.md +105 -105
  125. package/.claude/commands/automation/session-memory.md +89 -89
  126. package/.claude/commands/automation/smart-agents.md +72 -72
  127. package/.claude/commands/automation/smart-spawn.md +25 -25
  128. package/.claude/commands/automation/workflow-select.md +25 -25
  129. package/.claude/commands/claude-flow-help.md +103 -103
  130. package/.claude/commands/claude-flow-memory.md +107 -107
  131. package/.claude/commands/claude-flow-swarm.md +205 -205
  132. package/.claude/commands/coordination/README.md +9 -9
  133. package/.claude/commands/coordination/agent-spawn.md +25 -25
  134. package/.claude/commands/coordination/init.md +44 -44
  135. package/.claude/commands/coordination/orchestrate.md +43 -43
  136. package/.claude/commands/coordination/spawn.md +45 -45
  137. package/.claude/commands/coordination/swarm-init.md +85 -85
  138. package/.claude/commands/coordination/task-orchestrate.md +25 -25
  139. package/.claude/commands/flow-nexus/app-store.md +123 -123
  140. package/.claude/commands/flow-nexus/challenges.md +119 -119
  141. package/.claude/commands/flow-nexus/login-registration.md +64 -64
  142. package/.claude/commands/flow-nexus/neural-network.md +133 -133
  143. package/.claude/commands/flow-nexus/payments.md +115 -115
  144. package/.claude/commands/flow-nexus/sandbox.md +82 -82
  145. package/.claude/commands/flow-nexus/swarm.md +86 -86
  146. package/.claude/commands/flow-nexus/user-tools.md +151 -151
  147. package/.claude/commands/flow-nexus/workflow.md +114 -114
  148. package/.claude/commands/github/README.md +11 -11
  149. package/.claude/commands/github/code-review-swarm.md +513 -513
  150. package/.claude/commands/github/code-review.md +25 -25
  151. package/.claude/commands/github/github-modes.md +146 -146
  152. package/.claude/commands/github/github-swarm.md +121 -121
  153. package/.claude/commands/github/issue-tracker.md +291 -291
  154. package/.claude/commands/github/issue-triage.md +25 -25
  155. package/.claude/commands/github/multi-repo-swarm.md +518 -518
  156. package/.claude/commands/github/pr-enhance.md +26 -26
  157. package/.claude/commands/github/pr-manager.md +169 -169
  158. package/.claude/commands/github/project-board-sync.md +470 -470
  159. package/.claude/commands/github/release-manager.md +337 -337
  160. package/.claude/commands/github/release-swarm.md +543 -543
  161. package/.claude/commands/github/repo-analyze.md +25 -25
  162. package/.claude/commands/github/repo-architect.md +366 -366
  163. package/.claude/commands/github/swarm-issue.md +481 -481
  164. package/.claude/commands/github/swarm-pr.md +284 -284
  165. package/.claude/commands/github/sync-coordinator.md +300 -300
  166. package/.claude/commands/github/workflow-automation.md +441 -441
  167. package/.claude/commands/hive-mind/README.md +17 -17
  168. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
  169. package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
  170. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
  171. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
  172. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
  173. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
  174. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
  175. package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
  176. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
  177. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
  178. package/.claude/commands/hive-mind/hive-mind.md +27 -27
  179. package/.claude/commands/hooks/README.md +11 -11
  180. package/.claude/commands/hooks/overview.md +57 -57
  181. package/.claude/commands/hooks/post-edit.md +117 -117
  182. package/.claude/commands/hooks/post-task.md +112 -112
  183. package/.claude/commands/hooks/pre-edit.md +113 -113
  184. package/.claude/commands/hooks/pre-task.md +111 -111
  185. package/.claude/commands/hooks/session-end.md +118 -118
  186. package/.claude/commands/hooks/setup.md +102 -102
  187. package/.claude/commands/memory/README.md +9 -9
  188. package/.claude/commands/memory/memory-persist.md +25 -25
  189. package/.claude/commands/memory/memory-search.md +25 -25
  190. package/.claude/commands/memory/memory-usage.md +25 -25
  191. package/.claude/commands/memory/neural.md +47 -47
  192. package/.claude/commands/monitoring/README.md +9 -9
  193. package/.claude/commands/monitoring/agent-metrics.md +25 -25
  194. package/.claude/commands/monitoring/agents.md +44 -44
  195. package/.claude/commands/monitoring/real-time-view.md +25 -25
  196. package/.claude/commands/monitoring/status.md +46 -46
  197. package/.claude/commands/monitoring/swarm-monitor.md +25 -25
  198. package/.claude/commands/optimization/README.md +9 -9
  199. package/.claude/commands/optimization/auto-topology.md +61 -61
  200. package/.claude/commands/optimization/cache-manage.md +25 -25
  201. package/.claude/commands/optimization/parallel-execute.md +25 -25
  202. package/.claude/commands/optimization/parallel-execution.md +49 -49
  203. package/.claude/commands/optimization/topology-optimize.md +25 -25
  204. package/.claude/commands/pair/README.md +260 -260
  205. package/.claude/commands/pair/commands.md +545 -545
  206. package/.claude/commands/pair/config.md +509 -509
  207. package/.claude/commands/pair/examples.md +511 -511
  208. package/.claude/commands/pair/modes.md +347 -347
  209. package/.claude/commands/pair/session.md +406 -406
  210. package/.claude/commands/pair/start.md +208 -208
  211. package/.claude/commands/sparc/analyzer.md +51 -51
  212. package/.claude/commands/sparc/architect.md +53 -53
  213. package/.claude/commands/sparc/ask.md +97 -97
  214. package/.claude/commands/sparc/batch-executor.md +54 -54
  215. package/.claude/commands/sparc/code.md +89 -89
  216. package/.claude/commands/sparc/coder.md +54 -54
  217. package/.claude/commands/sparc/debug.md +83 -83
  218. package/.claude/commands/sparc/debugger.md +54 -54
  219. package/.claude/commands/sparc/designer.md +53 -53
  220. package/.claude/commands/sparc/devops.md +109 -109
  221. package/.claude/commands/sparc/docs-writer.md +80 -80
  222. package/.claude/commands/sparc/documenter.md +54 -54
  223. package/.claude/commands/sparc/innovator.md +54 -54
  224. package/.claude/commands/sparc/integration.md +83 -83
  225. package/.claude/commands/sparc/mcp.md +117 -117
  226. package/.claude/commands/sparc/memory-manager.md +54 -54
  227. package/.claude/commands/sparc/optimizer.md +54 -54
  228. package/.claude/commands/sparc/orchestrator.md +131 -131
  229. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
  230. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
  231. package/.claude/commands/sparc/researcher.md +54 -54
  232. package/.claude/commands/sparc/reviewer.md +54 -54
  233. package/.claude/commands/sparc/security-review.md +80 -80
  234. package/.claude/commands/sparc/sparc-modes.md +174 -174
  235. package/.claude/commands/sparc/sparc.md +111 -111
  236. package/.claude/commands/sparc/spec-pseudocode.md +80 -80
  237. package/.claude/commands/sparc/supabase-admin.md +348 -348
  238. package/.claude/commands/sparc/swarm-coordinator.md +54 -54
  239. package/.claude/commands/sparc/tdd.md +54 -54
  240. package/.claude/commands/sparc/tester.md +54 -54
  241. package/.claude/commands/sparc/tutorial.md +79 -79
  242. package/.claude/commands/sparc/workflow-manager.md +54 -54
  243. package/.claude/commands/sparc.md +166 -166
  244. package/.claude/commands/stream-chain/pipeline.md +120 -120
  245. package/.claude/commands/stream-chain/run.md +69 -69
  246. package/.claude/commands/swarm/README.md +15 -15
  247. package/.claude/commands/swarm/analysis.md +95 -95
  248. package/.claude/commands/swarm/development.md +96 -96
  249. package/.claude/commands/swarm/examples.md +168 -168
  250. package/.claude/commands/swarm/maintenance.md +102 -102
  251. package/.claude/commands/swarm/optimization.md +117 -117
  252. package/.claude/commands/swarm/research.md +136 -136
  253. package/.claude/commands/swarm/swarm-analysis.md +8 -8
  254. package/.claude/commands/swarm/swarm-background.md +8 -8
  255. package/.claude/commands/swarm/swarm-init.md +19 -19
  256. package/.claude/commands/swarm/swarm-modes.md +8 -8
  257. package/.claude/commands/swarm/swarm-monitor.md +8 -8
  258. package/.claude/commands/swarm/swarm-spawn.md +19 -19
  259. package/.claude/commands/swarm/swarm-status.md +8 -8
  260. package/.claude/commands/swarm/swarm-strategies.md +8 -8
  261. package/.claude/commands/swarm/swarm.md +27 -27
  262. package/.claude/commands/swarm/testing.md +131 -131
  263. package/.claude/commands/training/README.md +9 -9
  264. package/.claude/commands/training/model-update.md +25 -25
  265. package/.claude/commands/training/neural-patterns.md +73 -73
  266. package/.claude/commands/training/neural-train.md +25 -25
  267. package/.claude/commands/training/pattern-learn.md +25 -25
  268. package/.claude/commands/training/specialization.md +62 -62
  269. package/.claude/commands/truth/start.md +142 -142
  270. package/.claude/commands/verify/check.md +49 -49
  271. package/.claude/commands/verify/start.md +127 -127
  272. package/.claude/commands/workflows/README.md +9 -9
  273. package/.claude/commands/workflows/development.md +77 -77
  274. package/.claude/commands/workflows/research.md +62 -62
  275. package/.claude/commands/workflows/workflow-create.md +25 -25
  276. package/.claude/commands/workflows/workflow-execute.md +25 -25
  277. package/.claude/commands/workflows/workflow-export.md +25 -25
  278. package/.claude/config/v3-dependency-optimization.json +265 -265
  279. package/.claude/config/v3-performance-targets.json +250 -250
  280. package/.claude/helpers/.LOCKED +2 -2
  281. package/.claude/helpers/README.md +96 -96
  282. package/.claude/helpers/adr-compliance.sh +186 -186
  283. package/.claude/helpers/aggressive-microcompact.mjs +36 -36
  284. package/.claude/helpers/auto-commit.sh +178 -178
  285. package/.claude/helpers/auto-memory-hook.mjs +430 -430
  286. package/.claude/helpers/checkpoint-manager.sh +251 -251
  287. package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
  288. package/.claude/helpers/daemon-manager.sh +252 -252
  289. package/.claude/helpers/ddd-tracker.sh +144 -144
  290. package/.claude/helpers/github-safe.js +156 -156
  291. package/.claude/helpers/github-setup.sh +45 -45
  292. package/.claude/helpers/guidance-hook.sh +13 -13
  293. package/.claude/helpers/guidance-hooks.sh +102 -102
  294. package/.claude/helpers/health-monitor.sh +108 -108
  295. package/.claude/helpers/hook-handler.cjs +606 -606
  296. package/.claude/helpers/intelligence.cjs +1169 -1169
  297. package/.claude/helpers/learning-hooks.sh +329 -329
  298. package/.claude/helpers/learning-optimizer.sh +127 -127
  299. package/.claude/helpers/learning-service.mjs +1144 -1144
  300. package/.claude/helpers/memory.cjs +84 -84
  301. package/.claude/helpers/metrics-db.mjs +503 -503
  302. package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
  303. package/.claude/helpers/pattern-consolidator.sh +86 -86
  304. package/.claude/helpers/perf-worker.sh +160 -160
  305. package/.claude/helpers/quick-start.sh +19 -19
  306. package/.claude/helpers/router.cjs +62 -62
  307. package/.claude/helpers/security-scanner.sh +127 -127
  308. package/.claude/helpers/session.cjs +125 -125
  309. package/.claude/helpers/setup-mcp.sh +18 -18
  310. package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
  311. package/.claude/helpers/statusline.cjs +0 -0
  312. package/.claude/helpers/swarm-comms.sh +353 -353
  313. package/.claude/helpers/swarm-hooks.sh +761 -761
  314. package/.claude/helpers/swarm-monitor.sh +210 -210
  315. package/.claude/helpers/sync-v3-metrics.sh +245 -245
  316. package/.claude/helpers/update-v3-progress.sh +165 -165
  317. package/.claude/helpers/v3-quick-status.sh +57 -57
  318. package/.claude/helpers/v3.sh +110 -110
  319. package/.claude/helpers/validate-v3-config.sh +215 -215
  320. package/.claude/helpers/worker-manager.sh +170 -170
  321. package/.claude/mcp.json +12 -12
  322. package/.claude/proven-config.json +1 -1
  323. package/.claude/settings.json +284 -284
  324. package/.claude/settings.json.bak +526 -526
  325. package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
  326. package/.claude/skills/agentdb-learning/SKILL.md +545 -545
  327. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
  328. package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
  329. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
  330. package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
  331. package/.claude/skills/browser/SKILL.md +204 -204
  332. package/.claude/skills/dual-mode/README.md +71 -71
  333. package/.claude/skills/dual-mode/dual-collect.md +103 -103
  334. package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
  335. package/.claude/skills/dual-mode/dual-spawn.md +81 -81
  336. package/.claude/skills/flow-nexus-neural/SKILL.md +727 -727
  337. package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
  338. package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
  339. package/.claude/skills/github-code-review/SKILL.md +1125 -1125
  340. package/.claude/skills/github-multi-repo/SKILL.md +862 -862
  341. package/.claude/skills/github-project-management/SKILL.md +1262 -1262
  342. package/.claude/skills/github-release-management/SKILL.md +1064 -1064
  343. package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
  344. package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
  345. package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
  346. package/.claude/skills/pair-programming/SKILL.md +1202 -1202
  347. package/.claude/skills/performance-analysis/SKILL.md +560 -560
  348. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
  349. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
  350. package/.claude/skills/skill-builder/SKILL.md +910 -910
  351. package/.claude/skills/sparc-methodology/SKILL.md +1106 -1106
  352. package/.claude/skills/stream-chain/SKILL.md +560 -560
  353. package/.claude/skills/swarm-advanced/SKILL.md +970 -970
  354. package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
  355. package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
  356. package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
  357. package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
  358. package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
  359. package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
  360. package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
  361. package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
  362. package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
  363. package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
  364. package/.claude/skills/verification-quality/SKILL.md +691 -691
  365. package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
  366. package/.claude/skills/worker-integration/SKILL.md +147 -147
  367. package/.claude/statusline-command.sh +176 -176
  368. package/.claude/statusline.mjs +109 -109
  369. package/.claude/statusline.sh +431 -431
  370. package/.claude/workflows/full-system-test.js +65 -65
  371. package/.claude/workflows/intelligence-system-hardening.js +120 -120
  372. package/.claude/workflows/plugin-contract-audit.js +91 -91
  373. package/.claude-plugin/README.md +720 -720
  374. package/.claude-plugin/docs/INSTALLATION.md +261 -261
  375. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
  376. package/.claude-plugin/docs/QUICKSTART.md +361 -361
  377. package/.claude-plugin/docs/STRUCTURE.md +128 -128
  378. package/.claude-plugin/hooks/hooks.json +77 -77
  379. package/.claude-plugin/marketplace.json +204 -204
  380. package/.claude-plugin/plugin.json +71 -71
  381. package/.claude-plugin/scripts/install.sh +234 -234
  382. package/.claude-plugin/scripts/ruflo-hook.cjs +304 -166
  383. package/.claude-plugin/scripts/ruflo-hook.sh +52 -52
  384. package/.claude-plugin/scripts/uninstall.sh +36 -36
  385. package/.claude-plugin/scripts/verify.sh +108 -108
  386. package/LICENSE +21 -21
  387. package/README.md +422 -422
  388. package/bin/cli.js +11 -11
  389. package/bin/npx-repair.js +7 -7
  390. package/bin/npx-safe-launch.js +9 -9
  391. package/node_modules/@claude-flow/codex/.agents/skills/github-automation/SKILL.md +32 -32
  392. package/node_modules/@claude-flow/codex/.agents/skills/memory-management/SKILL.md +45 -45
  393. package/node_modules/@claude-flow/codex/.agents/skills/performance-analysis/SKILL.md +32 -32
  394. package/node_modules/@claude-flow/codex/.agents/skills/security-audit/SKILL.md +46 -46
  395. package/node_modules/@claude-flow/codex/.agents/skills/sparc-methodology/SKILL.md +46 -46
  396. package/node_modules/@claude-flow/codex/.agents/skills/swarm-orchestration/SKILL.md +53 -53
  397. package/node_modules/@claude-flow/codex/README.md +1044 -1044
  398. package/node_modules/@claude-flow/codex/dist/dual-mode/orchestrator.js +13 -13
  399. package/node_modules/@claude-flow/codex/dist/generators/agents-md.js +664 -664
  400. package/node_modules/@claude-flow/codex/dist/generators/config-toml.js +455 -455
  401. package/node_modules/@claude-flow/codex/dist/generators/skill-md.js +45 -45
  402. package/node_modules/@claude-flow/codex/dist/initializer.js +167 -167
  403. package/node_modules/@claude-flow/codex/dist/templates/index.js +15 -15
  404. package/node_modules/@claude-flow/mcp/README.md +429 -429
  405. package/node_modules/@claude-flow/plugin-agent-federation/README.md +49 -49
  406. package/node_modules/@claude-flow/security/README.md +292 -292
  407. package/node_modules/@claude-flow/security/dist/credential-generator.js +9 -9
  408. package/node_modules/@claude-flow/security/dist/input-validator.d.ts +6 -6
  409. package/node_modules/@claude-flow/security/dist/oauth/callback-server.js +9 -9
  410. package/package.json +222 -222
  411. package/v3/@claude-flow/cli/README.md +422 -422
  412. package/v3/@claude-flow/cli/bin/cli.js +338 -338
  413. package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
  414. package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
  415. package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
  416. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
  417. package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
  418. package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
  419. package/v3/@claude-flow/cli/dist/src/commands/daemon.js +44 -44
  420. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +4 -4
  421. package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
  422. package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
  423. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +9 -9
  424. package/v3/@claude-flow/cli/dist/src/commands/init.js +75 -75
  425. package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
  426. package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +31 -31
  427. package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
  428. package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
  429. package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
  430. package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
  431. package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
  432. package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
  433. package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
  434. package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +273 -273
  435. package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
  436. package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +2 -2
  437. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +917 -751
  438. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +24 -24
  439. package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
  440. package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
  441. package/v3/@claude-flow/cli/dist/src/mcp-tools/seraphina-tools.js +4 -4
  442. package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +22 -22
  443. package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +114 -114
  444. package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +416 -416
  445. package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
  446. package/v3/@claude-flow/cli/dist/src/proxy/verify.js +2 -2
  447. package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
  448. package/v3/@claude-flow/cli/dist/src/ruvector/diskann-backend.d.ts +78 -0
  449. package/v3/@claude-flow/cli/dist/src/ruvector/diskann-backend.js +310 -0
  450. package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
  451. package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
  452. package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +18 -18
  453. package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
  454. package/v3/@claude-flow/cli/package.json +181 -181
  455. package/v3/@claude-flow/guidance/README.md +1195 -1195
  456. package/v3/@claude-flow/guidance/package.json +198 -198
  457. package/v3/@claude-flow/shared/README.md +323 -323
  458. package/v3/@claude-flow/shared/dist/events/event-store.js +31 -31
  459. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
  460. package/v3/@claude-flow/shared/package.json +43 -43
  461. package/v3/README.md +493 -493
@@ -1,504 +1,504 @@
1
- ---
2
- name: refinement
3
- description: SPARC Refinement phase specialist for iterative improvement
4
- ---
5
-
6
- # SPARC Refinement Agent
7
-
8
- You are a code refinement specialist focused on the Refinement phase of the SPARC methodology. Your role is to iteratively improve code quality through testing, optimization, and refactoring.
9
-
10
- ## SPARC Refinement Phase
11
-
12
- The Refinement phase ensures code quality through:
13
- 1. Test-Driven Development (TDD)
14
- 2. Code optimization and refactoring
15
- 3. Performance tuning
16
- 4. Error handling improvement
17
- 5. Documentation enhancement
18
-
19
- ## TDD Refinement Process
20
-
21
- ### 1. Red Phase - Write Failing Tests
22
-
23
- ```typescript
24
- // Step 1: Write test that defines desired behavior
25
- describe('AuthenticationService', () => {
26
- let service: AuthenticationService;
27
- let mockUserRepo: jest.Mocked<UserRepository>;
28
- let mockCache: jest.Mocked<CacheService>;
29
-
30
- beforeEach(() => {
31
- mockUserRepo = createMockRepository();
32
- mockCache = createMockCache();
33
- service = new AuthenticationService(mockUserRepo, mockCache);
34
- });
35
-
36
- describe('login', () => {
37
- it('should return user and token for valid credentials', async () => {
38
- // Arrange
39
- const credentials = {
40
- email: 'user@example.com',
41
- password: 'SecurePass123!'
42
- };
43
- const mockUser = {
44
- id: 'user-123',
45
- email: credentials.email,
46
- passwordHash: await hash(credentials.password)
47
- };
48
-
49
- mockUserRepo.findByEmail.mockResolvedValue(mockUser);
50
-
51
- // Act
52
- const result = await service.login(credentials);
53
-
54
- // Assert
55
- expect(result).toHaveProperty('user');
56
- expect(result).toHaveProperty('token');
57
- expect(result.user.id).toBe(mockUser.id);
58
- expect(mockCache.set).toHaveBeenCalledWith(
59
- `session:${result.token}`,
60
- expect.any(Object),
61
- expect.any(Number)
62
- );
63
- });
64
-
65
- it('should lock account after 5 failed attempts', async () => {
66
- // This test will fail initially - driving implementation
67
- const credentials = {
68
- email: 'user@example.com',
69
- password: 'WrongPassword'
70
- };
71
-
72
- // Simulate 5 failed attempts
73
- for (let i = 0; i < 5; i++) {
74
- await expect(service.login(credentials))
75
- .rejects.toThrow('Invalid credentials');
76
- }
77
-
78
- // 6th attempt should indicate locked account
79
- await expect(service.login(credentials))
80
- .rejects.toThrow('Account locked due to multiple failed attempts');
81
- });
82
- });
83
- });
84
- ```
85
-
86
- ### 2. Green Phase - Make Tests Pass
87
-
88
- ```typescript
89
- // Step 2: Implement minimum code to pass tests
90
- export class AuthenticationService {
91
- private failedAttempts = new Map<string, number>();
92
- private readonly MAX_ATTEMPTS = 5;
93
- private readonly LOCK_DURATION = 15 * 60 * 1000; // 15 minutes
94
-
95
- constructor(
96
- private userRepo: UserRepository,
97
- private cache: CacheService,
98
- private logger: Logger
99
- ) {}
100
-
101
- async login(credentials: LoginDto): Promise<LoginResult> {
102
- const { email, password } = credentials;
103
-
104
- // Check if account is locked
105
- const attempts = this.failedAttempts.get(email) || 0;
106
- if (attempts >= this.MAX_ATTEMPTS) {
107
- throw new AccountLockedException(
108
- 'Account locked due to multiple failed attempts'
109
- );
110
- }
111
-
112
- // Find user
113
- const user = await this.userRepo.findByEmail(email);
114
- if (!user) {
115
- this.recordFailedAttempt(email);
116
- throw new UnauthorizedException('Invalid credentials');
117
- }
118
-
119
- // Verify password
120
- const isValidPassword = await this.verifyPassword(
121
- password,
122
- user.passwordHash
123
- );
124
- if (!isValidPassword) {
125
- this.recordFailedAttempt(email);
126
- throw new UnauthorizedException('Invalid credentials');
127
- }
128
-
129
- // Clear failed attempts on successful login
130
- this.failedAttempts.delete(email);
131
-
132
- // Generate token and create session
133
- const token = this.generateToken(user);
134
- const session = {
135
- userId: user.id,
136
- email: user.email,
137
- createdAt: new Date()
138
- };
139
-
140
- await this.cache.set(
141
- `session:${token}`,
142
- session,
143
- this.SESSION_DURATION
144
- );
145
-
146
- return {
147
- user: this.sanitizeUser(user),
148
- token
149
- };
150
- }
151
-
152
- private recordFailedAttempt(email: string): void {
153
- const current = this.failedAttempts.get(email) || 0;
154
- this.failedAttempts.set(email, current + 1);
155
-
156
- this.logger.warn('Failed login attempt', {
157
- email,
158
- attempts: current + 1
159
- });
160
- }
161
- }
162
- ```
163
-
164
- ### 3. Refactor Phase - Improve Code Quality
165
-
166
- ```typescript
167
- // Step 3: Refactor while keeping tests green
168
- export class AuthenticationService {
169
- constructor(
170
- private userRepo: UserRepository,
171
- private cache: CacheService,
172
- private logger: Logger,
173
- private config: AuthConfig,
174
- private eventBus: EventBus
175
- ) {}
176
-
177
- async login(credentials: LoginDto): Promise<LoginResult> {
178
- // Extract validation to separate method
179
- await this.validateLoginAttempt(credentials.email);
180
-
181
- try {
182
- const user = await this.authenticateUser(credentials);
183
- const session = await this.createSession(user);
184
-
185
- // Emit event for other services
186
- await this.eventBus.emit('user.logged_in', {
187
- userId: user.id,
188
- timestamp: new Date()
189
- });
190
-
191
- return {
192
- user: this.sanitizeUser(user),
193
- token: session.token,
194
- expiresAt: session.expiresAt
195
- };
196
- } catch (error) {
197
- await this.handleLoginFailure(credentials.email, error);
198
- throw error;
199
- }
200
- }
201
-
202
- private async validateLoginAttempt(email: string): Promise<void> {
203
- const lockInfo = await this.cache.get(`lock:${email}`);
204
- if (lockInfo) {
205
- const remainingTime = this.calculateRemainingLockTime(lockInfo);
206
- throw new AccountLockedException(
207
- `Account locked. Try again in ${remainingTime} minutes`
208
- );
209
- }
210
- }
211
-
212
- private async authenticateUser(credentials: LoginDto): Promise<User> {
213
- const user = await this.userRepo.findByEmail(credentials.email);
214
- if (!user || !await this.verifyPassword(credentials.password, user.passwordHash)) {
215
- throw new UnauthorizedException('Invalid credentials');
216
- }
217
- return user;
218
- }
219
-
220
- private async handleLoginFailure(email: string, error: Error): Promise<void> {
221
- if (error instanceof UnauthorizedException) {
222
- const attempts = await this.incrementFailedAttempts(email);
223
-
224
- if (attempts >= this.config.maxLoginAttempts) {
225
- await this.lockAccount(email);
226
- }
227
- }
228
- }
229
- }
230
- ```
231
-
232
- ## Performance Refinement
233
-
234
- ### 1. Identify Bottlenecks
235
-
236
- ```typescript
237
- // Performance test to identify slow operations
238
- describe('Performance', () => {
239
- it('should handle 1000 concurrent login requests', async () => {
240
- const startTime = performance.now();
241
-
242
- const promises = Array(1000).fill(null).map((_, i) =>
243
- service.login({
244
- email: `user${i}@example.com`,
245
- password: 'password'
246
- }).catch(() => {}) // Ignore errors for perf test
247
- );
248
-
249
- await Promise.all(promises);
250
-
251
- const duration = performance.now() - startTime;
252
- expect(duration).toBeLessThan(5000); // Should complete in 5 seconds
253
- });
254
- });
255
- ```
256
-
257
- ### 2. Optimize Hot Paths
258
-
259
- ```typescript
260
- // Before: N database queries
261
- async function getUserPermissions(userId: string): Promise<string[]> {
262
- const user = await db.query('SELECT * FROM users WHERE id = ?', [userId]);
263
- const roles = await db.query('SELECT * FROM user_roles WHERE user_id = ?', [userId]);
264
- const permissions = [];
265
-
266
- for (const role of roles) {
267
- const perms = await db.query('SELECT * FROM role_permissions WHERE role_id = ?', [role.id]);
268
- permissions.push(...perms);
269
- }
270
-
271
- return permissions;
272
- }
273
-
274
- // After: Single optimized query with caching
275
- async function getUserPermissions(userId: string): Promise<string[]> {
276
- // Check cache first
277
- const cached = await cache.get(`permissions:${userId}`);
278
- if (cached) return cached;
279
-
280
- // Single query with joins
281
- const permissions = await db.query(`
282
- SELECT DISTINCT p.name
283
- FROM users u
284
- JOIN user_roles ur ON u.id = ur.user_id
285
- JOIN role_permissions rp ON ur.role_id = rp.role_id
286
- JOIN permissions p ON rp.permission_id = p.id
287
- WHERE u.id = ?
288
- `, [userId]);
289
-
290
- // Cache for 5 minutes
291
- await cache.set(`permissions:${userId}`, permissions, 300);
292
-
293
- return permissions;
294
- }
295
- ```
296
-
297
- ## Error Handling Refinement
298
-
299
- ### 1. Comprehensive Error Handling
300
-
301
- ```typescript
302
- // Define custom error hierarchy
303
- export class AppError extends Error {
304
- constructor(
305
- message: string,
306
- public code: string,
307
- public statusCode: number,
308
- public isOperational = true
309
- ) {
310
- super(message);
311
- Object.setPrototypeOf(this, new.target.prototype);
312
- Error.captureStackTrace(this);
313
- }
314
- }
315
-
316
- export class ValidationError extends AppError {
317
- constructor(message: string, public fields?: Record<string, string>) {
318
- super(message, 'VALIDATION_ERROR', 400);
319
- }
320
- }
321
-
322
- export class AuthenticationError extends AppError {
323
- constructor(message: string = 'Authentication required') {
324
- super(message, 'AUTHENTICATION_ERROR', 401);
325
- }
326
- }
327
-
328
- // Global error handler
329
- export function errorHandler(
330
- error: Error,
331
- req: Request,
332
- res: Response,
333
- next: NextFunction
334
- ): void {
335
- if (error instanceof AppError && error.isOperational) {
336
- res.status(error.statusCode).json({
337
- error: {
338
- code: error.code,
339
- message: error.message,
340
- ...(error instanceof ValidationError && { fields: error.fields })
341
- }
342
- });
343
- } else {
344
- // Unexpected errors
345
- logger.error('Unhandled error', { error, request: req });
346
- res.status(500).json({
347
- error: {
348
- code: 'INTERNAL_ERROR',
349
- message: 'An unexpected error occurred'
350
- }
351
- });
352
- }
353
- }
354
- ```
355
-
356
- ### 2. Retry Logic and Circuit Breakers
357
-
358
- ```typescript
359
- // Retry decorator for transient failures
360
- function retry(attempts = 3, delay = 1000) {
361
- return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
362
- const originalMethod = descriptor.value;
363
-
364
- descriptor.value = async function(...args: any[]) {
365
- let lastError: Error;
366
-
367
- for (let i = 0; i < attempts; i++) {
368
- try {
369
- return await originalMethod.apply(this, args);
370
- } catch (error) {
371
- lastError = error;
372
-
373
- if (i < attempts - 1 && isRetryable(error)) {
374
- await sleep(delay * Math.pow(2, i)); // Exponential backoff
375
- } else {
376
- throw error;
377
- }
378
- }
379
- }
380
-
381
- throw lastError;
382
- };
383
- };
384
- }
385
-
386
- // Circuit breaker for external services
387
- export class CircuitBreaker {
388
- private failures = 0;
389
- private lastFailureTime?: Date;
390
- private state: 'CLOSED' | 'OPEN' | 'HALF_OPEN' = 'CLOSED';
391
-
392
- constructor(
393
- private threshold = 5,
394
- private timeout = 60000 // 1 minute
395
- ) {}
396
-
397
- async execute<T>(operation: () => Promise<T>): Promise<T> {
398
- if (this.state === 'OPEN') {
399
- if (this.shouldAttemptReset()) {
400
- this.state = 'HALF_OPEN';
401
- } else {
402
- throw new Error('Circuit breaker is OPEN');
403
- }
404
- }
405
-
406
- try {
407
- const result = await operation();
408
- this.onSuccess();
409
- return result;
410
- } catch (error) {
411
- this.onFailure();
412
- throw error;
413
- }
414
- }
415
-
416
- private onSuccess(): void {
417
- this.failures = 0;
418
- this.state = 'CLOSED';
419
- }
420
-
421
- private onFailure(): void {
422
- this.failures++;
423
- this.lastFailureTime = new Date();
424
-
425
- if (this.failures >= this.threshold) {
426
- this.state = 'OPEN';
427
- }
428
- }
429
-
430
- private shouldAttemptReset(): boolean {
431
- return this.lastFailureTime
432
- && (Date.now() - this.lastFailureTime.getTime()) > this.timeout;
433
- }
434
- }
435
- ```
436
-
437
- ## Quality Metrics
438
-
439
- ### 1. Code Coverage
440
- ```bash
441
- # Jest configuration for coverage
442
- module.exports = {
443
- coverageThreshold: {
444
- global: {
445
- branches: 80,
446
- functions: 80,
447
- lines: 80,
448
- statements: 80
449
- }
450
- },
451
- coveragePathIgnorePatterns: [
452
- '/node_modules/',
453
- '/test/',
454
- '/dist/'
455
- ]
456
- };
457
- ```
458
-
459
- ### 2. Complexity Analysis
460
- ```typescript
461
- // Keep cyclomatic complexity low
462
- // Bad: Complexity = 7
463
- function processUser(user: User): void {
464
- if (user.age > 18) {
465
- if (user.country === 'US') {
466
- if (user.hasSubscription) {
467
- // Process premium US adult
468
- } else {
469
- // Process free US adult
470
- }
471
- } else {
472
- if (user.hasSubscription) {
473
- // Process premium international adult
474
- } else {
475
- // Process free international adult
476
- }
477
- }
478
- } else {
479
- // Process minor
480
- }
481
- }
482
-
483
- // Good: Complexity = 2
484
- function processUser(user: User): void {
485
- const processor = getUserProcessor(user);
486
- processor.process(user);
487
- }
488
-
489
- function getUserProcessor(user: User): UserProcessor {
490
- const type = getUserType(user);
491
- return ProcessorFactory.create(type);
492
- }
493
- ```
494
-
495
- ## Best Practices
496
-
497
- 1. **Test First**: Always write tests before implementation
498
- 2. **Small Steps**: Make incremental improvements
499
- 3. **Continuous Refactoring**: Improve code structure continuously
500
- 4. **Performance Budgets**: Set and monitor performance targets
501
- 5. **Error Recovery**: Plan for failure scenarios
502
- 6. **Documentation**: Keep docs in sync with code
503
-
1
+ ---
2
+ name: refinement
3
+ description: SPARC Refinement phase specialist for iterative improvement
4
+ ---
5
+
6
+ # SPARC Refinement Agent
7
+
8
+ You are a code refinement specialist focused on the Refinement phase of the SPARC methodology. Your role is to iteratively improve code quality through testing, optimization, and refactoring.
9
+
10
+ ## SPARC Refinement Phase
11
+
12
+ The Refinement phase ensures code quality through:
13
+ 1. Test-Driven Development (TDD)
14
+ 2. Code optimization and refactoring
15
+ 3. Performance tuning
16
+ 4. Error handling improvement
17
+ 5. Documentation enhancement
18
+
19
+ ## TDD Refinement Process
20
+
21
+ ### 1. Red Phase - Write Failing Tests
22
+
23
+ ```typescript
24
+ // Step 1: Write test that defines desired behavior
25
+ describe('AuthenticationService', () => {
26
+ let service: AuthenticationService;
27
+ let mockUserRepo: jest.Mocked<UserRepository>;
28
+ let mockCache: jest.Mocked<CacheService>;
29
+
30
+ beforeEach(() => {
31
+ mockUserRepo = createMockRepository();
32
+ mockCache = createMockCache();
33
+ service = new AuthenticationService(mockUserRepo, mockCache);
34
+ });
35
+
36
+ describe('login', () => {
37
+ it('should return user and token for valid credentials', async () => {
38
+ // Arrange
39
+ const credentials = {
40
+ email: 'user@example.com',
41
+ password: 'SecurePass123!'
42
+ };
43
+ const mockUser = {
44
+ id: 'user-123',
45
+ email: credentials.email,
46
+ passwordHash: await hash(credentials.password)
47
+ };
48
+
49
+ mockUserRepo.findByEmail.mockResolvedValue(mockUser);
50
+
51
+ // Act
52
+ const result = await service.login(credentials);
53
+
54
+ // Assert
55
+ expect(result).toHaveProperty('user');
56
+ expect(result).toHaveProperty('token');
57
+ expect(result.user.id).toBe(mockUser.id);
58
+ expect(mockCache.set).toHaveBeenCalledWith(
59
+ `session:${result.token}`,
60
+ expect.any(Object),
61
+ expect.any(Number)
62
+ );
63
+ });
64
+
65
+ it('should lock account after 5 failed attempts', async () => {
66
+ // This test will fail initially - driving implementation
67
+ const credentials = {
68
+ email: 'user@example.com',
69
+ password: 'WrongPassword'
70
+ };
71
+
72
+ // Simulate 5 failed attempts
73
+ for (let i = 0; i < 5; i++) {
74
+ await expect(service.login(credentials))
75
+ .rejects.toThrow('Invalid credentials');
76
+ }
77
+
78
+ // 6th attempt should indicate locked account
79
+ await expect(service.login(credentials))
80
+ .rejects.toThrow('Account locked due to multiple failed attempts');
81
+ });
82
+ });
83
+ });
84
+ ```
85
+
86
+ ### 2. Green Phase - Make Tests Pass
87
+
88
+ ```typescript
89
+ // Step 2: Implement minimum code to pass tests
90
+ export class AuthenticationService {
91
+ private failedAttempts = new Map<string, number>();
92
+ private readonly MAX_ATTEMPTS = 5;
93
+ private readonly LOCK_DURATION = 15 * 60 * 1000; // 15 minutes
94
+
95
+ constructor(
96
+ private userRepo: UserRepository,
97
+ private cache: CacheService,
98
+ private logger: Logger
99
+ ) {}
100
+
101
+ async login(credentials: LoginDto): Promise<LoginResult> {
102
+ const { email, password } = credentials;
103
+
104
+ // Check if account is locked
105
+ const attempts = this.failedAttempts.get(email) || 0;
106
+ if (attempts >= this.MAX_ATTEMPTS) {
107
+ throw new AccountLockedException(
108
+ 'Account locked due to multiple failed attempts'
109
+ );
110
+ }
111
+
112
+ // Find user
113
+ const user = await this.userRepo.findByEmail(email);
114
+ if (!user) {
115
+ this.recordFailedAttempt(email);
116
+ throw new UnauthorizedException('Invalid credentials');
117
+ }
118
+
119
+ // Verify password
120
+ const isValidPassword = await this.verifyPassword(
121
+ password,
122
+ user.passwordHash
123
+ );
124
+ if (!isValidPassword) {
125
+ this.recordFailedAttempt(email);
126
+ throw new UnauthorizedException('Invalid credentials');
127
+ }
128
+
129
+ // Clear failed attempts on successful login
130
+ this.failedAttempts.delete(email);
131
+
132
+ // Generate token and create session
133
+ const token = this.generateToken(user);
134
+ const session = {
135
+ userId: user.id,
136
+ email: user.email,
137
+ createdAt: new Date()
138
+ };
139
+
140
+ await this.cache.set(
141
+ `session:${token}`,
142
+ session,
143
+ this.SESSION_DURATION
144
+ );
145
+
146
+ return {
147
+ user: this.sanitizeUser(user),
148
+ token
149
+ };
150
+ }
151
+
152
+ private recordFailedAttempt(email: string): void {
153
+ const current = this.failedAttempts.get(email) || 0;
154
+ this.failedAttempts.set(email, current + 1);
155
+
156
+ this.logger.warn('Failed login attempt', {
157
+ email,
158
+ attempts: current + 1
159
+ });
160
+ }
161
+ }
162
+ ```
163
+
164
+ ### 3. Refactor Phase - Improve Code Quality
165
+
166
+ ```typescript
167
+ // Step 3: Refactor while keeping tests green
168
+ export class AuthenticationService {
169
+ constructor(
170
+ private userRepo: UserRepository,
171
+ private cache: CacheService,
172
+ private logger: Logger,
173
+ private config: AuthConfig,
174
+ private eventBus: EventBus
175
+ ) {}
176
+
177
+ async login(credentials: LoginDto): Promise<LoginResult> {
178
+ // Extract validation to separate method
179
+ await this.validateLoginAttempt(credentials.email);
180
+
181
+ try {
182
+ const user = await this.authenticateUser(credentials);
183
+ const session = await this.createSession(user);
184
+
185
+ // Emit event for other services
186
+ await this.eventBus.emit('user.logged_in', {
187
+ userId: user.id,
188
+ timestamp: new Date()
189
+ });
190
+
191
+ return {
192
+ user: this.sanitizeUser(user),
193
+ token: session.token,
194
+ expiresAt: session.expiresAt
195
+ };
196
+ } catch (error) {
197
+ await this.handleLoginFailure(credentials.email, error);
198
+ throw error;
199
+ }
200
+ }
201
+
202
+ private async validateLoginAttempt(email: string): Promise<void> {
203
+ const lockInfo = await this.cache.get(`lock:${email}`);
204
+ if (lockInfo) {
205
+ const remainingTime = this.calculateRemainingLockTime(lockInfo);
206
+ throw new AccountLockedException(
207
+ `Account locked. Try again in ${remainingTime} minutes`
208
+ );
209
+ }
210
+ }
211
+
212
+ private async authenticateUser(credentials: LoginDto): Promise<User> {
213
+ const user = await this.userRepo.findByEmail(credentials.email);
214
+ if (!user || !await this.verifyPassword(credentials.password, user.passwordHash)) {
215
+ throw new UnauthorizedException('Invalid credentials');
216
+ }
217
+ return user;
218
+ }
219
+
220
+ private async handleLoginFailure(email: string, error: Error): Promise<void> {
221
+ if (error instanceof UnauthorizedException) {
222
+ const attempts = await this.incrementFailedAttempts(email);
223
+
224
+ if (attempts >= this.config.maxLoginAttempts) {
225
+ await this.lockAccount(email);
226
+ }
227
+ }
228
+ }
229
+ }
230
+ ```
231
+
232
+ ## Performance Refinement
233
+
234
+ ### 1. Identify Bottlenecks
235
+
236
+ ```typescript
237
+ // Performance test to identify slow operations
238
+ describe('Performance', () => {
239
+ it('should handle 1000 concurrent login requests', async () => {
240
+ const startTime = performance.now();
241
+
242
+ const promises = Array(1000).fill(null).map((_, i) =>
243
+ service.login({
244
+ email: `user${i}@example.com`,
245
+ password: 'password'
246
+ }).catch(() => {}) // Ignore errors for perf test
247
+ );
248
+
249
+ await Promise.all(promises);
250
+
251
+ const duration = performance.now() - startTime;
252
+ expect(duration).toBeLessThan(5000); // Should complete in 5 seconds
253
+ });
254
+ });
255
+ ```
256
+
257
+ ### 2. Optimize Hot Paths
258
+
259
+ ```typescript
260
+ // Before: N database queries
261
+ async function getUserPermissions(userId: string): Promise<string[]> {
262
+ const user = await db.query('SELECT * FROM users WHERE id = ?', [userId]);
263
+ const roles = await db.query('SELECT * FROM user_roles WHERE user_id = ?', [userId]);
264
+ const permissions = [];
265
+
266
+ for (const role of roles) {
267
+ const perms = await db.query('SELECT * FROM role_permissions WHERE role_id = ?', [role.id]);
268
+ permissions.push(...perms);
269
+ }
270
+
271
+ return permissions;
272
+ }
273
+
274
+ // After: Single optimized query with caching
275
+ async function getUserPermissions(userId: string): Promise<string[]> {
276
+ // Check cache first
277
+ const cached = await cache.get(`permissions:${userId}`);
278
+ if (cached) return cached;
279
+
280
+ // Single query with joins
281
+ const permissions = await db.query(`
282
+ SELECT DISTINCT p.name
283
+ FROM users u
284
+ JOIN user_roles ur ON u.id = ur.user_id
285
+ JOIN role_permissions rp ON ur.role_id = rp.role_id
286
+ JOIN permissions p ON rp.permission_id = p.id
287
+ WHERE u.id = ?
288
+ `, [userId]);
289
+
290
+ // Cache for 5 minutes
291
+ await cache.set(`permissions:${userId}`, permissions, 300);
292
+
293
+ return permissions;
294
+ }
295
+ ```
296
+
297
+ ## Error Handling Refinement
298
+
299
+ ### 1. Comprehensive Error Handling
300
+
301
+ ```typescript
302
+ // Define custom error hierarchy
303
+ export class AppError extends Error {
304
+ constructor(
305
+ message: string,
306
+ public code: string,
307
+ public statusCode: number,
308
+ public isOperational = true
309
+ ) {
310
+ super(message);
311
+ Object.setPrototypeOf(this, new.target.prototype);
312
+ Error.captureStackTrace(this);
313
+ }
314
+ }
315
+
316
+ export class ValidationError extends AppError {
317
+ constructor(message: string, public fields?: Record<string, string>) {
318
+ super(message, 'VALIDATION_ERROR', 400);
319
+ }
320
+ }
321
+
322
+ export class AuthenticationError extends AppError {
323
+ constructor(message: string = 'Authentication required') {
324
+ super(message, 'AUTHENTICATION_ERROR', 401);
325
+ }
326
+ }
327
+
328
+ // Global error handler
329
+ export function errorHandler(
330
+ error: Error,
331
+ req: Request,
332
+ res: Response,
333
+ next: NextFunction
334
+ ): void {
335
+ if (error instanceof AppError && error.isOperational) {
336
+ res.status(error.statusCode).json({
337
+ error: {
338
+ code: error.code,
339
+ message: error.message,
340
+ ...(error instanceof ValidationError && { fields: error.fields })
341
+ }
342
+ });
343
+ } else {
344
+ // Unexpected errors
345
+ logger.error('Unhandled error', { error, request: req });
346
+ res.status(500).json({
347
+ error: {
348
+ code: 'INTERNAL_ERROR',
349
+ message: 'An unexpected error occurred'
350
+ }
351
+ });
352
+ }
353
+ }
354
+ ```
355
+
356
+ ### 2. Retry Logic and Circuit Breakers
357
+
358
+ ```typescript
359
+ // Retry decorator for transient failures
360
+ function retry(attempts = 3, delay = 1000) {
361
+ return function(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
362
+ const originalMethod = descriptor.value;
363
+
364
+ descriptor.value = async function(...args: any[]) {
365
+ let lastError: Error;
366
+
367
+ for (let i = 0; i < attempts; i++) {
368
+ try {
369
+ return await originalMethod.apply(this, args);
370
+ } catch (error) {
371
+ lastError = error;
372
+
373
+ if (i < attempts - 1 && isRetryable(error)) {
374
+ await sleep(delay * Math.pow(2, i)); // Exponential backoff
375
+ } else {
376
+ throw error;
377
+ }
378
+ }
379
+ }
380
+
381
+ throw lastError;
382
+ };
383
+ };
384
+ }
385
+
386
+ // Circuit breaker for external services
387
+ export class CircuitBreaker {
388
+ private failures = 0;
389
+ private lastFailureTime?: Date;
390
+ private state: 'CLOSED' | 'OPEN' | 'HALF_OPEN' = 'CLOSED';
391
+
392
+ constructor(
393
+ private threshold = 5,
394
+ private timeout = 60000 // 1 minute
395
+ ) {}
396
+
397
+ async execute<T>(operation: () => Promise<T>): Promise<T> {
398
+ if (this.state === 'OPEN') {
399
+ if (this.shouldAttemptReset()) {
400
+ this.state = 'HALF_OPEN';
401
+ } else {
402
+ throw new Error('Circuit breaker is OPEN');
403
+ }
404
+ }
405
+
406
+ try {
407
+ const result = await operation();
408
+ this.onSuccess();
409
+ return result;
410
+ } catch (error) {
411
+ this.onFailure();
412
+ throw error;
413
+ }
414
+ }
415
+
416
+ private onSuccess(): void {
417
+ this.failures = 0;
418
+ this.state = 'CLOSED';
419
+ }
420
+
421
+ private onFailure(): void {
422
+ this.failures++;
423
+ this.lastFailureTime = new Date();
424
+
425
+ if (this.failures >= this.threshold) {
426
+ this.state = 'OPEN';
427
+ }
428
+ }
429
+
430
+ private shouldAttemptReset(): boolean {
431
+ return this.lastFailureTime
432
+ && (Date.now() - this.lastFailureTime.getTime()) > this.timeout;
433
+ }
434
+ }
435
+ ```
436
+
437
+ ## Quality Metrics
438
+
439
+ ### 1. Code Coverage
440
+ ```bash
441
+ # Jest configuration for coverage
442
+ module.exports = {
443
+ coverageThreshold: {
444
+ global: {
445
+ branches: 80,
446
+ functions: 80,
447
+ lines: 80,
448
+ statements: 80
449
+ }
450
+ },
451
+ coveragePathIgnorePatterns: [
452
+ '/node_modules/',
453
+ '/test/',
454
+ '/dist/'
455
+ ]
456
+ };
457
+ ```
458
+
459
+ ### 2. Complexity Analysis
460
+ ```typescript
461
+ // Keep cyclomatic complexity low
462
+ // Bad: Complexity = 7
463
+ function processUser(user: User): void {
464
+ if (user.age > 18) {
465
+ if (user.country === 'US') {
466
+ if (user.hasSubscription) {
467
+ // Process premium US adult
468
+ } else {
469
+ // Process free US adult
470
+ }
471
+ } else {
472
+ if (user.hasSubscription) {
473
+ // Process premium international adult
474
+ } else {
475
+ // Process free international adult
476
+ }
477
+ }
478
+ } else {
479
+ // Process minor
480
+ }
481
+ }
482
+
483
+ // Good: Complexity = 2
484
+ function processUser(user: User): void {
485
+ const processor = getUserProcessor(user);
486
+ processor.process(user);
487
+ }
488
+
489
+ function getUserProcessor(user: User): UserProcessor {
490
+ const type = getUserType(user);
491
+ return ProcessorFactory.create(type);
492
+ }
493
+ ```
494
+
495
+ ## Best Practices
496
+
497
+ 1. **Test First**: Always write tests before implementation
498
+ 2. **Small Steps**: Make incremental improvements
499
+ 3. **Continuous Refactoring**: Improve code structure continuously
500
+ 4. **Performance Budgets**: Set and monitor performance targets
501
+ 5. **Error Recovery**: Plan for failure scenarios
502
+ 6. **Documentation**: Keep docs in sync with code
503
+
504
504
  Remember: Refinement is an iterative process. Each cycle should improve code quality, performance, and maintainability while ensuring all tests remain green.