@howlil/ez-agents 3.5.0 → 4.0.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 (382) hide show
  1. package/README.md +735 -537
  2. package/agents/ez-architect-agent.md +267 -0
  3. package/agents/ez-backend-agent.md +303 -0
  4. package/agents/ez-chief-strategist.md +271 -0
  5. package/agents/ez-codebase-mapper.md +770 -770
  6. package/agents/ez-context-manager.md +319 -0
  7. package/agents/ez-debugger.md +1255 -1255
  8. package/agents/ez-design-expert.md +347 -0
  9. package/agents/ez-devops-agent.md +331 -0
  10. package/agents/ez-executor.md +487 -487
  11. package/agents/ez-frontend-agent.md +322 -0
  12. package/agents/ez-phase-researcher.md +553 -553
  13. package/agents/ez-planner.md +1307 -1307
  14. package/agents/ez-product-engineer.md +435 -0
  15. package/agents/ez-project-researcher.md +629 -629
  16. package/agents/ez-qa-agent.md +320 -0
  17. package/agents/ez-release-agent.md +333 -333
  18. package/agents/ez-requirements-agent.md +377 -377
  19. package/agents/ez-roadmapper.md +650 -650
  20. package/agents/ez-technical-writer.md +551 -0
  21. package/agents/ez-ux-expert.md +393 -0
  22. package/agents/ez-verifier.md +579 -579
  23. package/bin/guards/autonomy-guard.cjs +346 -0
  24. package/bin/guards/context-budget-guard.cjs +278 -0
  25. package/bin/guards/hallucination-guard.cjs +380 -0
  26. package/bin/guards/hidden-state-guard.cjs +182 -0
  27. package/bin/guards/team-overhead-guard.cjs +266 -0
  28. package/bin/guards/tool-sprawl-guard.cjs +271 -0
  29. package/bin/lib/analytics/analytics-collector.cjs +86 -0
  30. package/bin/lib/analytics/analytics-reporter.cjs +130 -0
  31. package/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  32. package/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  33. package/bin/lib/analytics/nps-tracker.cjs +147 -0
  34. package/bin/lib/archetype-detector.cjs +289 -0
  35. package/bin/lib/assistant-adapter.cjs +361 -0
  36. package/bin/lib/audit-exec.cjs +175 -0
  37. package/bin/lib/auth.cjs +176 -0
  38. package/bin/lib/backup-service.cjs +422 -0
  39. package/bin/lib/bdd-validator.cjs +622 -0
  40. package/bin/lib/business-flow-mapper.cjs +429 -0
  41. package/bin/lib/circuit-breaker.cjs +276 -0
  42. package/bin/lib/code-complexity-analyzer.cjs +360 -0
  43. package/bin/lib/codebase-analyzer.cjs +241 -0
  44. package/bin/lib/commands.cjs +691 -0
  45. package/bin/lib/config.cjs +236 -0
  46. package/bin/lib/constraint-extractor.cjs +526 -0
  47. package/bin/lib/content-scanner.cjs +238 -0
  48. package/bin/lib/context-cache.cjs +154 -0
  49. package/bin/lib/context-compressor.cjs +102 -0
  50. package/bin/lib/context-deduplicator.cjs +105 -0
  51. package/bin/lib/context-errors.cjs +78 -0
  52. package/bin/lib/context-manager.cjs +338 -0
  53. package/bin/lib/context-metadata-tracker.cjs +140 -0
  54. package/bin/lib/context-relevance-scorer.cjs +99 -0
  55. package/bin/lib/core.cjs +507 -0
  56. package/bin/lib/cost-alerts.cjs +174 -0
  57. package/bin/lib/cost-tracker.cjs +275 -0
  58. package/bin/lib/crash-recovery.cjs +220 -0
  59. package/bin/lib/dependency-graph.cjs +319 -0
  60. package/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  61. package/bin/lib/deploy/deploy-detector.cjs +69 -0
  62. package/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  63. package/bin/lib/deploy/deploy-health-check.cjs +88 -0
  64. package/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  65. package/bin/lib/deploy/deploy-rollback.cjs +72 -0
  66. package/bin/lib/deploy/deploy-runner.cjs +97 -0
  67. package/bin/lib/deploy/deploy-status.cjs +74 -0
  68. package/bin/lib/discussion-synthesizer.cjs +439 -0
  69. package/bin/lib/error-cache.cjs +114 -0
  70. package/bin/lib/error-registry.cjs +177 -0
  71. package/bin/lib/file-access.cjs +207 -0
  72. package/bin/lib/file-lock.cjs +236 -0
  73. package/bin/lib/finops/budget-enforcer.cjs +126 -0
  74. package/bin/lib/finops/cost-reporter.cjs +132 -0
  75. package/bin/lib/finops/finops-analyzer.cjs +112 -0
  76. package/bin/lib/finops/spot-manager.cjs +118 -0
  77. package/bin/lib/framework-detector.cjs +396 -0
  78. package/bin/lib/frontmatter.cjs +313 -0
  79. package/bin/lib/fs-utils.cjs +153 -0
  80. package/bin/lib/gate-executor.cjs +272 -0
  81. package/bin/lib/gates/README.md +374 -0
  82. package/bin/lib/gates/gate-01-requirement.cjs +303 -0
  83. package/bin/lib/gates/gate-02-architecture.cjs +555 -0
  84. package/bin/lib/gates/gate-03-code.cjs +635 -0
  85. package/bin/lib/gates/gate-04-security.cjs +829 -0
  86. package/bin/lib/git-errors.cjs +83 -0
  87. package/bin/lib/git-utils.cjs +321 -0
  88. package/bin/lib/git-workflow-engine.cjs +1157 -0
  89. package/bin/lib/health-check.cjs +227 -0
  90. package/bin/lib/index.cjs +279 -0
  91. package/bin/lib/init.cjs +725 -0
  92. package/bin/lib/lock-logger.cjs +194 -0
  93. package/bin/lib/lock-state.cjs +263 -0
  94. package/bin/lib/lockfile-validator.cjs +227 -0
  95. package/bin/lib/log-rotation.cjs +71 -0
  96. package/bin/lib/logger.cjs +125 -0
  97. package/bin/lib/memory-compression.cjs +256 -0
  98. package/bin/lib/milestone.cjs +247 -0
  99. package/bin/lib/model-provider.cjs +241 -0
  100. package/bin/lib/package-manager-detector.cjs +203 -0
  101. package/bin/lib/package-manager-executor.cjs +385 -0
  102. package/bin/lib/package-manager-service.cjs +216 -0
  103. package/bin/lib/perf/api-monitor.cjs +88 -0
  104. package/bin/lib/perf/db-optimizer.cjs +78 -0
  105. package/bin/lib/perf/frontend-performance.cjs +56 -0
  106. package/bin/lib/perf/perf-analyzer.cjs +77 -0
  107. package/bin/lib/perf/perf-baseline.cjs +102 -0
  108. package/bin/lib/perf/perf-reporter.cjs +117 -0
  109. package/bin/lib/perf/regression-detector.cjs +92 -0
  110. package/bin/lib/phase.cjs +963 -0
  111. package/bin/lib/planning-write.cjs +123 -0
  112. package/bin/lib/project-reporter.cjs +565 -0
  113. package/bin/lib/quality-gate.cjs +332 -0
  114. package/bin/lib/quality-metrics.cjs +324 -0
  115. package/bin/lib/recovery-manager.cjs +98 -0
  116. package/bin/lib/release-validator.cjs +617 -0
  117. package/bin/lib/retry.cjs +119 -0
  118. package/bin/lib/roadmap.cjs +309 -0
  119. package/bin/lib/safe-exec.cjs +173 -0
  120. package/bin/lib/safe-path.cjs +130 -0
  121. package/bin/lib/security-errors.cjs +62 -0
  122. package/bin/lib/session-chain.cjs +304 -0
  123. package/bin/lib/session-errors.cjs +81 -0
  124. package/bin/lib/session-export.cjs +251 -0
  125. package/bin/lib/session-import.cjs +262 -0
  126. package/bin/lib/session-manager.cjs +280 -0
  127. package/bin/lib/skill-context.cjs +148 -0
  128. package/bin/lib/skill-matcher.cjs +236 -0
  129. package/bin/lib/skill-registry.cjs +360 -0
  130. package/bin/lib/skill-resolver.cjs +449 -0
  131. package/bin/lib/skill-triggers.cjs +90 -0
  132. package/bin/lib/skill-validator.cjs +270 -0
  133. package/bin/lib/skill-versioning.cjs +355 -0
  134. package/bin/lib/stack-detector.cjs +399 -0
  135. package/bin/lib/state.cjs +736 -0
  136. package/bin/lib/tech-debt-analyzer.cjs +309 -0
  137. package/bin/lib/temp-file.cjs +239 -0
  138. package/bin/lib/template.cjs +223 -0
  139. package/bin/lib/test-file-lock.cjs +112 -0
  140. package/bin/lib/test-graceful.cjs +93 -0
  141. package/bin/lib/test-logger.cjs +60 -0
  142. package/bin/lib/test-safe-exec.cjs +38 -0
  143. package/bin/lib/test-safe-path.cjs +33 -0
  144. package/bin/lib/test-temp-file.cjs +125 -0
  145. package/bin/lib/tier-manager.cjs +428 -0
  146. package/bin/lib/timeout-exec.cjs +63 -0
  147. package/bin/lib/tradeoff-analyzer.cjs +284 -0
  148. package/bin/lib/url-fetch.cjs +170 -0
  149. package/bin/lib/verify.cjs +863 -0
  150. package/bin/update.js +217 -214
  151. package/commands/deploy.cjs +53 -0
  152. package/commands/ez/add-tests.md +41 -41
  153. package/commands/ez/audit-milestone.md +36 -36
  154. package/commands/ez/complete-milestone.md +136 -136
  155. package/commands/ez/discuss-phase.md +90 -90
  156. package/commands/ez/execute-phase.md +52 -52
  157. package/commands/ez/help.md +22 -22
  158. package/commands/ez/map-codebase.md +71 -71
  159. package/commands/ez/new-milestone.md +44 -44
  160. package/commands/ez/new-project.md +51 -42
  161. package/commands/ez/plan-phase.md +53 -53
  162. package/commands/ez/progress.md +36 -36
  163. package/commands/ez/quick.md +45 -45
  164. package/commands/ez/resume-work.md +40 -40
  165. package/commands/ez/run-phase.md +580 -0
  166. package/commands/ez/settings.md +36 -36
  167. package/commands/ez/update.md +37 -37
  168. package/commands/ez/verify-work.md +402 -38
  169. package/commands/health-check.cjs +44 -0
  170. package/commands/rollback.cjs +47 -0
  171. package/ez-agents/bin/ez-tools.cjs +599 -2
  172. package/ez-agents/bin/guards/autonomy-guard.cjs +346 -0
  173. package/ez-agents/bin/guards/context-budget-guard.cjs +247 -0
  174. package/ez-agents/bin/guards/hallucination-guard.cjs +271 -0
  175. package/ez-agents/bin/guards/hidden-state-guard.cjs +182 -0
  176. package/ez-agents/bin/guards/team-overhead-guard.cjs +266 -0
  177. package/ez-agents/bin/guards/tool-sprawl-guard.cjs +271 -0
  178. package/ez-agents/bin/lib/analytics/analytics-collector.cjs +86 -0
  179. package/ez-agents/bin/lib/analytics/analytics-reporter.cjs +130 -0
  180. package/ez-agents/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  181. package/ez-agents/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  182. package/ez-agents/bin/lib/analytics/nps-tracker.cjs +147 -0
  183. package/ez-agents/bin/lib/archetype-detector.cjs +289 -0
  184. package/ez-agents/bin/lib/audit-exec.cjs +166 -167
  185. package/ez-agents/bin/lib/auth.cjs +176 -176
  186. package/ez-agents/bin/lib/backup-service.cjs +422 -0
  187. package/ez-agents/bin/lib/bdd-validator.cjs +622 -622
  188. package/ez-agents/bin/lib/business-flow-mapper.cjs +429 -0
  189. package/ez-agents/bin/lib/code-complexity-analyzer.cjs +360 -0
  190. package/ez-agents/bin/lib/codebase-analyzer.cjs +241 -0
  191. package/ez-agents/bin/lib/commands.cjs +685 -685
  192. package/ez-agents/bin/lib/config.cjs +41 -1
  193. package/ez-agents/bin/lib/constraint-extractor.cjs +526 -0
  194. package/ez-agents/bin/lib/content-scanner.cjs +238 -238
  195. package/ez-agents/bin/lib/context-cache.cjs +154 -154
  196. package/ez-agents/bin/lib/context-errors.cjs +71 -71
  197. package/ez-agents/bin/lib/context-manager.cjs +220 -220
  198. package/ez-agents/bin/lib/core.cjs +507 -512
  199. package/ez-agents/bin/lib/cost-tracker.cjs +243 -0
  200. package/ez-agents/bin/lib/crash-recovery.cjs +172 -0
  201. package/ez-agents/bin/lib/dependency-graph.cjs +319 -0
  202. package/ez-agents/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  203. package/ez-agents/bin/lib/deploy/deploy-detector.cjs +69 -0
  204. package/ez-agents/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  205. package/ez-agents/bin/lib/deploy/deploy-health-check.cjs +88 -0
  206. package/ez-agents/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  207. package/ez-agents/bin/lib/deploy/deploy-rollback.cjs +72 -0
  208. package/ez-agents/bin/lib/deploy/deploy-runner.cjs +97 -0
  209. package/ez-agents/bin/lib/deploy/deploy-status.cjs +74 -0
  210. package/ez-agents/bin/lib/file-access.cjs +207 -207
  211. package/ez-agents/bin/lib/finops/budget-enforcer.cjs +126 -0
  212. package/ez-agents/bin/lib/finops/cost-reporter.cjs +132 -0
  213. package/ez-agents/bin/lib/finops/finops-analyzer.cjs +112 -0
  214. package/ez-agents/bin/lib/finops/spot-manager.cjs +118 -0
  215. package/ez-agents/bin/lib/framework-detector.cjs +396 -0
  216. package/ez-agents/bin/lib/frontmatter.cjs +3 -1
  217. package/ez-agents/bin/lib/gates/README.md +374 -0
  218. package/ez-agents/bin/lib/gates/gate-01-requirement.cjs +303 -0
  219. package/ez-agents/bin/lib/gates/gate-02-architecture.cjs +555 -0
  220. package/ez-agents/bin/lib/gates/gate-03-code.cjs +635 -0
  221. package/ez-agents/bin/lib/gates/gate-04-security.cjs +829 -0
  222. package/ez-agents/bin/lib/git-errors.cjs +83 -83
  223. package/ez-agents/bin/lib/git-utils.cjs +321 -321
  224. package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -1157
  225. package/ez-agents/bin/lib/health-check.cjs +162 -162
  226. package/ez-agents/bin/lib/index.cjs +2 -8
  227. package/ez-agents/bin/lib/init.cjs +0 -2
  228. package/ez-agents/bin/lib/lockfile-validator.cjs +227 -227
  229. package/ez-agents/bin/lib/log-rotation.cjs +71 -0
  230. package/ez-agents/bin/lib/logger.cjs +22 -47
  231. package/ez-agents/bin/lib/memory-compression.cjs +256 -256
  232. package/ez-agents/bin/lib/package-manager-detector.cjs +203 -203
  233. package/ez-agents/bin/lib/package-manager-executor.cjs +385 -385
  234. package/ez-agents/bin/lib/package-manager-service.cjs +216 -216
  235. package/ez-agents/bin/lib/perf/api-monitor.cjs +88 -0
  236. package/ez-agents/bin/lib/perf/db-optimizer.cjs +78 -0
  237. package/ez-agents/bin/lib/perf/frontend-performance.cjs +56 -0
  238. package/ez-agents/bin/lib/perf/perf-analyzer.cjs +77 -0
  239. package/ez-agents/bin/lib/perf/perf-baseline.cjs +102 -0
  240. package/ez-agents/bin/lib/perf/perf-reporter.cjs +117 -0
  241. package/ez-agents/bin/lib/perf/regression-detector.cjs +92 -0
  242. package/ez-agents/bin/lib/project-reporter.cjs +502 -0
  243. package/ez-agents/bin/lib/quality-gate.cjs +332 -0
  244. package/ez-agents/bin/lib/recovery-manager.cjs +98 -0
  245. package/ez-agents/bin/lib/release-validator.cjs +617 -614
  246. package/ez-agents/bin/lib/security-errors.cjs +62 -0
  247. package/ez-agents/bin/lib/session-chain.cjs +304 -304
  248. package/ez-agents/bin/lib/session-errors.cjs +81 -81
  249. package/ez-agents/bin/lib/session-export.cjs +251 -251
  250. package/ez-agents/bin/lib/session-import.cjs +262 -262
  251. package/ez-agents/bin/lib/session-manager.cjs +280 -280
  252. package/ez-agents/bin/lib/skill-context.cjs +148 -0
  253. package/ez-agents/bin/lib/skill-matcher.cjs +236 -0
  254. package/ez-agents/bin/lib/skill-registry.cjs +341 -0
  255. package/ez-agents/bin/lib/skill-resolver.cjs +449 -0
  256. package/ez-agents/bin/lib/skill-triggers.cjs +90 -0
  257. package/ez-agents/bin/lib/skill-validator.cjs +270 -0
  258. package/ez-agents/bin/lib/skill-versioning.cjs +355 -0
  259. package/ez-agents/bin/lib/stack-detector.cjs +399 -0
  260. package/ez-agents/bin/lib/tech-debt-analyzer.cjs +309 -0
  261. package/ez-agents/bin/lib/tier-manager.cjs +428 -428
  262. package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
  263. package/ez-agents/bin/lib/url-fetch.cjs +170 -170
  264. package/ez-agents/bin/lib/verify.cjs +863 -863
  265. package/ez-agents/references/decimal-phase-calculation.md +65 -65
  266. package/ez-agents/references/git-integration.md +248 -248
  267. package/ez-agents/references/git-planning-commit.md +38 -38
  268. package/ez-agents/references/metrics-schema.md +118 -118
  269. package/ez-agents/references/model-profile-resolution.md +34 -34
  270. package/ez-agents/references/model-profiles.md +93 -93
  271. package/ez-agents/references/phase-argument-parsing.md +61 -61
  272. package/ez-agents/references/planning-config.md +340 -340
  273. package/ez-agents/references/tier-strategy.md +103 -103
  274. package/ez-agents/references/ui-brand.md +160 -160
  275. package/ez-agents/references/verification-patterns.md +612 -612
  276. package/ez-agents/templates/DEBUG.md +164 -164
  277. package/ez-agents/templates/UAT.md +247 -247
  278. package/ez-agents/templates/agent-output-format.md +404 -0
  279. package/ez-agents/templates/bdd-feature.md +173 -173
  280. package/ez-agents/templates/codebase/architecture.md +255 -255
  281. package/ez-agents/templates/codebase/structure.md +285 -285
  282. package/ez-agents/templates/copilot-instructions.md +7 -7
  283. package/ez-agents/templates/debug-subagent-prompt.md +91 -91
  284. package/ez-agents/templates/discovery.md +146 -146
  285. package/ez-agents/templates/discussion.md +68 -68
  286. package/ez-agents/templates/handoff-protocol.md +294 -0
  287. package/ez-agents/templates/incident-runbook.md +205 -205
  288. package/ez-agents/templates/mode-workflow-templates.md +301 -0
  289. package/ez-agents/templates/phase-prompt.md +610 -610
  290. package/ez-agents/templates/planner-subagent-prompt.md +117 -117
  291. package/ez-agents/templates/project.md +184 -184
  292. package/ez-agents/templates/release-checklist.md +136 -133
  293. package/ez-agents/templates/research.md +552 -552
  294. package/ez-agents/templates/rollback-plan.md +201 -201
  295. package/ez-agents/templates/security-user-setup.md +244 -0
  296. package/ez-agents/templates/skill-validation-rules.md +476 -0
  297. package/ez-agents/templates/state.md +180 -176
  298. package/ez-agents/templates/summary-complex.md +59 -59
  299. package/ez-agents/tests/gates/gate-01-02.test.cjs +812 -0
  300. package/ez-agents/tests/gates/gate-03-04.test.cjs +762 -0
  301. package/ez-agents/tests/gates/gate-05-validator.test.cjs +145 -0
  302. package/ez-agents/tests/gates/gate-06-docs-validator.test.cjs +244 -0
  303. package/ez-agents/tests/gates/gate-07-release-validator.test.cjs +219 -0
  304. package/ez-agents/tests/guards/context-budget-guard.test.cjs +145 -0
  305. package/ez-agents/tests/guards/edge-case-guards.test.cjs +238 -0
  306. package/ez-agents/tests/guards/hallucination-guard.test.cjs +124 -0
  307. package/ez-agents/workflows/audit-milestone.md +1 -1
  308. package/ez-agents/workflows/autonomous.md +844 -844
  309. package/ez-agents/workflows/complete-milestone.md +1 -1
  310. package/ez-agents/workflows/discuss-phase.md +1 -1
  311. package/ez-agents/workflows/execute-phase.md +124 -3
  312. package/ez-agents/workflows/help.md +42 -181
  313. package/ez-agents/workflows/hotfix.md +291 -291
  314. package/ez-agents/workflows/new-milestone.md +713 -713
  315. package/ez-agents/workflows/new-project.md +1089 -1107
  316. package/ez-agents/workflows/plan-phase.md +0 -40
  317. package/ez-agents/workflows/release.md +253 -253
  318. package/ez-agents/workflows/resume-session.md +215 -215
  319. package/ez-agents/workflows/run-phase.md +531 -0
  320. package/ez-agents/workflows/settings.md +2 -35
  321. package/hooks/dist/ez-check-update.js +81 -81
  322. package/hooks/dist/ez-context-monitor.js +148 -141
  323. package/hooks/dist/ez-statusline.js +115 -115
  324. package/package.json +78 -71
  325. package/scripts/fix-qwen-installation.js +144 -144
  326. package/agents/ez-integration-checker.md +0 -443
  327. package/agents/ez-nyquist-auditor.md +0 -176
  328. package/agents/ez-observer-agent.md +0 -260
  329. package/agents/ez-plan-checker.md +0 -706
  330. package/agents/ez-research-synthesizer.md +0 -247
  331. package/agents/ez-scrum-master-agent.md +0 -242
  332. package/agents/ez-tech-lead-agent.md +0 -267
  333. package/agents/ez-ui-auditor.md +0 -439
  334. package/agents/ez-ui-checker.md +0 -300
  335. package/agents/ez-ui-researcher.md +0 -353
  336. package/commands/ez/add-phase.md +0 -43
  337. package/commands/ez/add-todo.md +0 -47
  338. package/commands/ez/arch-review.md +0 -102
  339. package/commands/ez/auth.md +0 -87
  340. package/commands/ez/autonomous.md +0 -41
  341. package/commands/ez/check-todos.md +0 -45
  342. package/commands/ez/cleanup.md +0 -18
  343. package/commands/ez/debug.md +0 -168
  344. package/commands/ez/export-session.md +0 -79
  345. package/commands/ez/gather-requirements.md +0 -117
  346. package/commands/ez/git-workflow.md +0 -72
  347. package/commands/ez/health.md +0 -22
  348. package/commands/ez/hotfix.md +0 -120
  349. package/commands/ez/import-session.md +0 -82
  350. package/commands/ez/insert-phase.md +0 -32
  351. package/commands/ez/join-discord.md +0 -18
  352. package/commands/ez/list-phase-assumptions.md +0 -46
  353. package/commands/ez/list-sessions.md +0 -96
  354. package/commands/ez/package-manager.md +0 -316
  355. package/commands/ez/pause-work.md +0 -38
  356. package/commands/ez/plan-milestone-gaps.md +0 -34
  357. package/commands/ez/preflight.md +0 -79
  358. package/commands/ez/reapply-patches.md +0 -124
  359. package/commands/ez/release.md +0 -153
  360. package/commands/ez/remove-phase.md +0 -31
  361. package/commands/ez/research-phase.md +0 -190
  362. package/commands/ez/resume.md +0 -107
  363. package/commands/ez/set-profile.md +0 -34
  364. package/commands/ez/standup.md +0 -85
  365. package/commands/ez/stats.md +0 -18
  366. package/commands/ez/ui-phase.md +0 -34
  367. package/commands/ez/ui-review.md +0 -32
  368. package/commands/ez/validate-phase.md +0 -35
  369. package/ez-agents/bin/lib/metrics-tracker.cjs +0 -406
  370. package/ez-agents/templates/UI-SPEC.md +0 -100
  371. package/ez-agents/templates/VALIDATION.md +0 -76
  372. package/ez-agents/templates/context.md +0 -352
  373. package/ez-agents/templates/verification-report.md +0 -322
  374. package/ez-agents/workflows/arch-review.md +0 -54
  375. package/ez-agents/workflows/export-session.md +0 -255
  376. package/ez-agents/workflows/gather-requirements.md +0 -206
  377. package/ez-agents/workflows/import-session.md +0 -303
  378. package/ez-agents/workflows/research-phase.md +0 -74
  379. package/ez-agents/workflows/standup.md +0 -64
  380. package/ez-agents/workflows/ui-phase.md +0 -290
  381. package/ez-agents/workflows/ui-review.md +0 -157
  382. package/ez-agents/workflows/validate-phase.md +0 -167
@@ -0,0 +1,429 @@
1
+ /**
2
+ * Business Flow Mapper — Analyzes user journeys, data flow, and integration points
3
+ *
4
+ * Provides:
5
+ * - map(rootPath, stack): Identifies user journeys from route/file structure
6
+ * - analyzeDataFlow(rootPath): Traces data flow through imports and function calls
7
+ * - findIntegrationPoints(stack): Identifies external API integrations from dependencies
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+
13
+ class BusinessFlowMapper {
14
+ constructor(rootPath) {
15
+ this.rootPath = rootPath;
16
+ }
17
+
18
+ /**
19
+ * Map business flows from codebase structure
20
+ * @param {string} rootPath - Root directory to analyze
21
+ * @param {object} stack - Stack object from StackDetector
22
+ * @returns {object} Object with journeys and entryPoints
23
+ */
24
+ map(rootPath = this.rootPath, stack = {}) {
25
+ const routes = this._findRoutes(rootPath);
26
+ const journeys = this._extractJourneys(routes, stack);
27
+ const entryPoints = this._findEntryPoints(rootPath);
28
+
29
+ return {
30
+ journeys,
31
+ entryPoints,
32
+ routes
33
+ };
34
+ }
35
+
36
+ /**
37
+ * Analyze data flow through the codebase
38
+ * @param {string} rootPath - Root directory to analyze
39
+ * @returns {object} Object with flows and dataStores
40
+ */
41
+ analyzeDataFlow(rootPath = this.rootPath) {
42
+ const sourceFiles = this._getSourceFiles(rootPath);
43
+ const flows = this._traceDataFlow(sourceFiles, rootPath);
44
+ const dataStores = this._findDataStores(sourceFiles, rootPath);
45
+
46
+ return {
47
+ flows,
48
+ dataStores
49
+ };
50
+ }
51
+
52
+ /**
53
+ * Find integration points from stack dependencies
54
+ * @param {object} stack - Stack object from StackDetector
55
+ * @returns {object} Object with integrations array
56
+ */
57
+ findIntegrationPoints(stack = {}) {
58
+ const integrations = [];
59
+ const frameworks = stack.frameworks || [];
60
+ const infrastructure = stack.infrastructure || [];
61
+ const databases = stack.databases || [];
62
+
63
+ // Payment integrations
64
+ if (frameworks.includes('Stripe') || infrastructure.some(i => i.includes('Stripe'))) {
65
+ integrations.push({
66
+ name: 'Stripe',
67
+ type: 'payment',
68
+ purpose: 'Payment processing and subscriptions'
69
+ });
70
+ }
71
+
72
+ // Cloud integrations
73
+ if (infrastructure.some(i => i.includes('AWS'))) {
74
+ integrations.push({
75
+ name: 'AWS',
76
+ type: 'cloud',
77
+ purpose: 'Cloud infrastructure and services'
78
+ });
79
+ }
80
+ if (infrastructure.some(i => i.includes('Azure'))) {
81
+ integrations.push({
82
+ name: 'Azure',
83
+ type: 'cloud',
84
+ purpose: 'Cloud infrastructure and services'
85
+ });
86
+ }
87
+ if (infrastructure.some(i => i.includes('Google Cloud'))) {
88
+ integrations.push({
89
+ name: 'Google Cloud',
90
+ type: 'cloud',
91
+ purpose: 'Cloud infrastructure and services'
92
+ });
93
+ }
94
+
95
+ // Monitoring integrations
96
+ if (infrastructure.some(i => i.includes('Sentry'))) {
97
+ integrations.push({
98
+ name: 'Sentry',
99
+ type: 'monitoring',
100
+ purpose: 'Error tracking and monitoring'
101
+ });
102
+ }
103
+ if (infrastructure.some(i => i.includes('Datadog'))) {
104
+ integrations.push({
105
+ name: 'Datadog',
106
+ type: 'monitoring',
107
+ purpose: 'Infrastructure and application monitoring'
108
+ });
109
+ }
110
+
111
+ // Email integrations
112
+ if (infrastructure.some(i => i.includes('SendGrid') || i.includes('Mailgun'))) {
113
+ integrations.push({
114
+ name: 'Email Service',
115
+ type: 'communication',
116
+ purpose: 'Transactional email delivery'
117
+ });
118
+ }
119
+
120
+ // Database integrations
121
+ for (const db of databases) {
122
+ integrations.push({
123
+ name: db,
124
+ type: 'database',
125
+ purpose: 'Data persistence'
126
+ });
127
+ }
128
+
129
+ // Auth integrations
130
+ if (frameworks.includes('NextAuth.js') || frameworks.includes('Auth.js')) {
131
+ integrations.push({
132
+ name: 'NextAuth.js',
133
+ type: 'authentication',
134
+ purpose: 'User authentication and authorization'
135
+ });
136
+ }
137
+
138
+ return {
139
+ integrations
140
+ };
141
+ }
142
+
143
+ /**
144
+ * Find route files in the codebase
145
+ * @private
146
+ */
147
+ _findRoutes(rootPath) {
148
+ const routes = [];
149
+ const routePatterns = [
150
+ 'src/pages',
151
+ 'src/app',
152
+ 'src/routes',
153
+ 'pages',
154
+ 'app',
155
+ 'routes',
156
+ 'src/controllers',
157
+ 'controllers'
158
+ ];
159
+
160
+ for (const pattern of routePatterns) {
161
+ const routeDir = path.join(rootPath, pattern);
162
+ if (fs.existsSync(routeDir)) {
163
+ this._collectRoutes(routeDir, routes, pattern);
164
+ }
165
+ }
166
+
167
+ return routes;
168
+ }
169
+
170
+ /**
171
+ * Collect routes from directory
172
+ * @private
173
+ */
174
+ _collectRoutes(dir, routes, basePath, depth = 0) {
175
+ if (depth > 5) return;
176
+
177
+ try {
178
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
179
+ for (const entry of entries) {
180
+ const fullPath = path.join(dir, entry.name);
181
+ if (entry.isDirectory()) {
182
+ this._collectRoutes(fullPath, routes, basePath, depth + 1);
183
+ } else if (entry.isFile() && /\.(ts|tsx|js|jsx)$/.test(entry.name)) {
184
+ const relativePath = path.relative(path.join(this.rootPath, basePath), fullPath);
185
+ const routePath = this._fileToRoute(relativePath);
186
+ routes.push({
187
+ path: routePath,
188
+ file: fullPath,
189
+ name: path.basename(entry.name, path.extname(entry.name))
190
+ });
191
+ }
192
+ }
193
+ } catch (err) {
194
+ // Ignore errors
195
+ }
196
+ }
197
+
198
+ /**
199
+ * Convert file path to route path
200
+ * @private
201
+ */
202
+ _fileToRoute(filePath) {
203
+ let route = filePath
204
+ .replace(/^(page|route|layout)\./, '')
205
+ .replace(/\.tsx?$/, '')
206
+ .replace(/\.jsx?$/, '')
207
+ .replace(/\\/g, '/')
208
+ .replace(/\/index$/, '')
209
+ .replace(/\[(\w+)\]/g, ':$1');
210
+
211
+ return '/' + route;
212
+ }
213
+
214
+ /**
215
+ * Extract user journeys from routes
216
+ * @private
217
+ */
218
+ _extractJourneys(routes, stack) {
219
+ const journeys = [];
220
+
221
+ // Group routes by prefix to identify journeys
222
+ const routeGroups = {};
223
+ for (const route of routes) {
224
+ const parts = route.path.split('/').filter(p => p && !p.startsWith(':'));
225
+ if (parts.length > 0) {
226
+ const prefix = parts[0];
227
+ if (!routeGroups[prefix]) {
228
+ routeGroups[prefix] = [];
229
+ }
230
+ routeGroups[prefix].push(route);
231
+ }
232
+ }
233
+
234
+ // Create journeys from route groups
235
+ for (const [prefix, groupRoutes] of Object.entries(routeGroups)) {
236
+ const journey = {
237
+ name: this._capitalize(prefix),
238
+ path: `/${prefix}`,
239
+ components: groupRoutes.map(r => r.name),
240
+ routes: groupRoutes.map(r => r.path)
241
+ };
242
+
243
+ // Enhance with stack-specific info
244
+ if (stack.frameworks?.includes('Next.js')) {
245
+ journey.framework = 'Next.js Pages/App Router';
246
+ } else if (stack.frameworks?.includes('React')) {
247
+ journey.framework = 'React Router';
248
+ }
249
+
250
+ journeys.push(journey);
251
+ }
252
+
253
+ return journeys;
254
+ }
255
+
256
+ /**
257
+ * Find entry points in the codebase
258
+ * @private
259
+ */
260
+ _findEntryPoints(rootPath) {
261
+ const entryPoints = [];
262
+ const entryPatterns = [
263
+ 'src/index.ts',
264
+ 'src/index.tsx',
265
+ 'src/index.js',
266
+ 'src/main.ts',
267
+ 'src/main.tsx',
268
+ 'src/app.tsx',
269
+ 'src/app.ts',
270
+ 'index.ts',
271
+ 'index.tsx',
272
+ 'index.js',
273
+ 'main.ts',
274
+ 'app.tsx'
275
+ ];
276
+
277
+ for (const pattern of entryPatterns) {
278
+ const entryPath = path.join(rootPath, pattern);
279
+ if (fs.existsSync(entryPath)) {
280
+ entryPoints.push(entryPath);
281
+ }
282
+ }
283
+
284
+ return entryPoints;
285
+ }
286
+
287
+ /**
288
+ * Trace data flow through source files
289
+ * @private
290
+ */
291
+ _traceDataFlow(sourceFiles, rootPath) {
292
+ const flows = [];
293
+
294
+ for (const file of sourceFiles.slice(0, 50)) { // Limit to 50 files
295
+ try {
296
+ const content = fs.readFileSync(file, 'utf8');
297
+
298
+ // Look for data flow patterns
299
+ const importMatches = content.match(/import\s+.*?\s+from\s+['"](.+?)['"]/g) || [];
300
+ const exportMatches = content.match(/export\s+(default\s+)?(function|class|const|let|var)/g) || [];
301
+
302
+ if (importMatches.length > 0 || exportMatches.length > 0) {
303
+ flows.push({
304
+ file,
305
+ imports: importMatches.length,
306
+ exports: exportMatches.length,
307
+ transformations: this._detectTransformations(content)
308
+ });
309
+ }
310
+ } catch (err) {
311
+ // Ignore read errors
312
+ }
313
+ }
314
+
315
+ return flows;
316
+ }
317
+
318
+ /**
319
+ * Detect data transformations in code
320
+ * @private
321
+ */
322
+ _detectTransformations(content) {
323
+ const transformations = [];
324
+
325
+ // Look for common transformation patterns
326
+ const patterns = {
327
+ map: /\.map\(/,
328
+ filter: /\.filter\(/,
329
+ reduce: /\.reduce\(/,
330
+ transform: /\.transform\(/,
331
+ parse: /\.parse\(|JSON\.parse/,
332
+ stringify: /\.stringify\(|JSON\.stringify/
333
+ };
334
+
335
+ for (const [name, regex] of Object.entries(patterns)) {
336
+ if (regex.test(content)) {
337
+ transformations.push(name);
338
+ }
339
+ }
340
+
341
+ return transformations;
342
+ }
343
+
344
+ /**
345
+ * Find data stores in the codebase
346
+ * @private
347
+ */
348
+ _findDataStores(sourceFiles, rootPath) {
349
+ const dataStores = [];
350
+
351
+ // Look for store patterns
352
+ const storePatterns = [
353
+ 'src/stores',
354
+ 'src/store',
355
+ 'stores',
356
+ 'store',
357
+ 'src/models',
358
+ 'models',
359
+ 'src/db',
360
+ 'db',
361
+ 'src/database',
362
+ 'database'
363
+ ];
364
+
365
+ for (const pattern of storePatterns) {
366
+ const storePath = path.join(rootPath, pattern);
367
+ if (fs.existsSync(storePath)) {
368
+ dataStores.push({
369
+ type: 'store',
370
+ path: storePath,
371
+ name: pattern.split('/').pop()
372
+ });
373
+ }
374
+ }
375
+
376
+ return dataStores;
377
+ }
378
+
379
+ /**
380
+ * Get source files from directory
381
+ * @private
382
+ */
383
+ _getSourceFiles(rootPath) {
384
+ const files = [];
385
+ const srcDir = path.join(rootPath, 'src');
386
+
387
+ if (fs.existsSync(srcDir)) {
388
+ this._collectSourceFiles(srcDir, files);
389
+ } else {
390
+ this._collectSourceFiles(rootPath, files);
391
+ }
392
+
393
+ return files;
394
+ }
395
+
396
+ /**
397
+ * Collect source files from directory
398
+ * @private
399
+ */
400
+ _collectSourceFiles(dir, files, depth = 0) {
401
+ if (depth > 5 || dir.includes('node_modules') || dir.includes('dist') || dir.includes('build')) {
402
+ return;
403
+ }
404
+
405
+ try {
406
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
407
+ for (const entry of entries) {
408
+ const fullPath = path.join(dir, entry.name);
409
+ if (entry.isDirectory()) {
410
+ this._collectSourceFiles(fullPath, files, depth + 1);
411
+ } else if (entry.isFile() && /\.(ts|tsx|js|jsx)$/.test(entry.name)) {
412
+ files.push(fullPath);
413
+ }
414
+ }
415
+ } catch (err) {
416
+ // Ignore errors
417
+ }
418
+ }
419
+
420
+ /**
421
+ * Capitalize first letter
422
+ * @private
423
+ */
424
+ _capitalize(str) {
425
+ return str.charAt(0).toUpperCase() + str.slice(1);
426
+ }
427
+ }
428
+
429
+ module.exports = { BusinessFlowMapper };