@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,502 @@
1
+ /**
2
+ * Project Reporter — Aggregates codebase mapping, stack detection, and tech debt analysis
3
+ *
4
+ * Provides:
5
+ * - generate(structure, stack, techDebt): Aggregates all analysis into unified report
6
+ * - buildArchitectureOverview(structure, stack): Creates architecture summary section
7
+ * - buildPainPoints(techDebt): Creates prioritized issues section
8
+ * - buildRecommendations(techDebt, stack): Creates actionable recommendations section
9
+ */
10
+
11
+ const path = require('path');
12
+
13
+ class ProjectReporter {
14
+ constructor(rootPath) {
15
+ this.rootPath = rootPath;
16
+ }
17
+
18
+ /**
19
+ * Generate comprehensive project report
20
+ * @param {object} structure - Structure from CodebaseAnalyzer
21
+ * @param {object} stack - Stack from StackDetector
22
+ * @param {object} techDebt - Tech debt from TechDebtAnalyzer
23
+ * @returns {string} Markdown report
24
+ */
25
+ generate(structure, stack, techDebt) {
26
+ const sections = [
27
+ this.buildHeader(),
28
+ this.buildFileStructureSummary(structure),
29
+ this.buildTechStackSummary(stack),
30
+ this.buildArchitectureOverview(structure, stack),
31
+ this.buildPainPoints(techDebt),
32
+ this.buildRecommendations(techDebt, stack)
33
+ ];
34
+
35
+ return sections.filter(s => s).join('\n\n');
36
+ }
37
+
38
+ /**
39
+ * Build report header
40
+ * @private
41
+ */
42
+ buildHeader() {
43
+ const date = new Date().toISOString().split('T')[0];
44
+ return `# Project Analysis Report
45
+
46
+ **Generated:** ${date}
47
+ **Analysis Depth:** Standard
48
+
49
+ ---
50
+
51
+ ## Executive Summary
52
+
53
+ This report provides a comprehensive analysis of the codebase including file structure, technology stack, architecture patterns, pain points, and actionable recommendations.
54
+ `;
55
+ }
56
+
57
+ /**
58
+ * Build architecture overview section
59
+ * @param {object} structure - Structure from CodebaseAnalyzer
60
+ * @param {object} stack - Stack from StackDetector
61
+ * @returns {string} Markdown section
62
+ */
63
+ buildArchitectureOverview(structure, stack) {
64
+ const pattern = this._detectPattern(structure, stack);
65
+ const layers = this._describeLayers(structure);
66
+ const dataFlow = this._describeDataFlow(structure);
67
+ const entryPoints = structure.entryPoints || [];
68
+ const errorHandling = this._detectErrorHandling(structure);
69
+
70
+ return `## Architecture Overview
71
+
72
+ ### Pattern
73
+
74
+ **Detected Pattern:** ${pattern}
75
+
76
+ ### Layers
77
+
78
+ ${layers}
79
+
80
+ ### Data Flow
81
+
82
+ ${dataFlow}
83
+
84
+ ### Entry Points
85
+
86
+ ${entryPoints.length > 0 ? entryPoints.map(ep => `- \`${ep}\``).join('\n') : '- No explicit entry points detected'}
87
+
88
+ ### Error Handling
89
+
90
+ ${errorHandling}
91
+ `;
92
+ }
93
+
94
+ /**
95
+ * Build pain points section
96
+ * @param {object} techDebt - Tech debt analysis
97
+ * @returns {string} Markdown section
98
+ */
99
+ buildPainPoints(techDebt) {
100
+ const findings = techDebt.findings || [];
101
+
102
+ // Group by severity
103
+ const bySeverity = {
104
+ Critical: [],
105
+ High: [],
106
+ Medium: [],
107
+ Low: []
108
+ };
109
+
110
+ for (const finding of findings) {
111
+ const severity = finding.severity || 'Medium';
112
+ if (bySeverity[severity]) {
113
+ bySeverity[severity].push(finding);
114
+ }
115
+ }
116
+
117
+ let section = `## Pain Points
118
+
119
+ **Total Issues:** ${findings.length}
120
+
121
+ `;
122
+
123
+ // Critical Issues
124
+ if (bySeverity.Critical.length > 0) {
125
+ section += `### **Critical** Issues (${bySeverity.Critical.length})\n\n`;
126
+ for (const issue of bySeverity.Critical.slice(0, 5)) {
127
+ section += `- **${issue.file || 'Unknown'}** (line ${issue.line || '?'})\n`;
128
+ section += ` - ${issue.description || issue.content || issue.message}\n`;
129
+ section += ` - **Impact:** Requires immediate attention\n\n`;
130
+ }
131
+ }
132
+
133
+ // High Priority
134
+ if (bySeverity.High.length > 0) {
135
+ section += `### **High** Priority (${bySeverity.High.length})\n\n`;
136
+ for (const issue of bySeverity.High.slice(0, 5)) {
137
+ section += `- **${issue.file || 'Unknown'}**\n`;
138
+ section += ` - ${issue.description || issue.content || issue.message}\n\n`;
139
+ }
140
+ }
141
+
142
+ // Medium Priority
143
+ if (bySeverity.Medium.length > 0) {
144
+ section += `### **Medium** Priority (${bySeverity.Medium.length})\n\n`;
145
+ section += `- ${bySeverity.Medium.length} medium priority issues identified\n`;
146
+ section += `- Review and address in upcoming sprints\n\n`;
147
+ }
148
+
149
+ // Low Priority
150
+ if (bySeverity.Low.length > 0) {
151
+ section += `### **Low** Priority (${bySeverity.Low.length})\n\n`;
152
+ section += `- ${bySeverity.Low.length} low priority issues identified\n`;
153
+ section += `- Address as time permits\n\n`;
154
+ }
155
+
156
+ if (findings.length === 0) {
157
+ section += '*No significant pain points identified.*\n\n';
158
+ }
159
+
160
+ return section;
161
+ }
162
+
163
+ /**
164
+ * Build recommendations section
165
+ * @param {object} techDebt - Tech debt analysis
166
+ * @param {object} stack - Stack from StackDetector
167
+ * @returns {string} Markdown section
168
+ */
169
+ buildRecommendations(techDebt, stack) {
170
+ const recommendations = [];
171
+ const findings = techDebt.findings || [];
172
+
173
+ // Generate recommendations based on findings
174
+ const criticalFindings = findings.filter(f => f.severity === 'Critical');
175
+ const highFindings = findings.filter(f => f.severity === 'High');
176
+ const largeFiles = findings.filter(f => f.type === 'large_file');
177
+ const complexityIssues = findings.filter(f => f.type === 'complexity');
178
+
179
+ // Critical issues → Immediate action
180
+ if (criticalFindings.length > 0) {
181
+ recommendations.push({
182
+ title: 'Address Critical Issues Immediately',
183
+ issue: `${criticalFindings.length} critical issues require immediate attention`,
184
+ files: [...new Set(criticalFindings.map(f => f.file).filter(Boolean))],
185
+ approach: 'Review and fix critical issues including deprecated code, security vulnerabilities, and breaking bugs',
186
+ effort: 'High'
187
+ });
188
+ }
189
+
190
+ // Large files → Refactoring
191
+ if (largeFiles.length > 0) {
192
+ recommendations.push({
193
+ title: 'Refactor Large Files',
194
+ issue: `${largeFiles.length} files exceed recommended size thresholds`,
195
+ files: largeFiles.slice(0, 5).map(f => f.file),
196
+ approach: 'Split large files into smaller, focused modules. Target files with >500 lines.',
197
+ effort: 'Medium'
198
+ });
199
+ }
200
+
201
+ // Complexity issues → Simplification
202
+ if (complexityIssues.length > 0) {
203
+ recommendations.push({
204
+ title: 'Reduce Code Complexity',
205
+ issue: `${complexityIssues.length} functions/files have high complexity`,
206
+ files: [...new Set(complexityIssues.map(f => f.file).filter(Boolean))],
207
+ approach: 'Extract helper functions, reduce nesting, and simplify conditional logic',
208
+ effort: 'Medium'
209
+ });
210
+ }
211
+
212
+ // High priority findings
213
+ if (highFindings.length > 5) {
214
+ recommendations.push({
215
+ title: 'Address High Priority Tech Debt',
216
+ issue: `${highFindings.length} high priority issues identified`,
217
+ files: [...new Set(highFindings.map(f => f.file).filter(Boolean))],
218
+ approach: 'Create tickets for high priority issues and address in next sprint',
219
+ effort: 'Medium'
220
+ });
221
+ }
222
+
223
+ // Stack-specific recommendations
224
+ if (stack.frameworks?.includes('Next.js')) {
225
+ recommendations.push({
226
+ title: 'Optimize Next.js Configuration',
227
+ issue: 'Ensure optimal Next.js setup for production',
228
+ files: ['next.config.js', 'package.json'],
229
+ approach: 'Review Next.js configuration for performance optimizations, image optimization, and caching',
230
+ effort: 'Low'
231
+ });
232
+ }
233
+
234
+ let section = `## Recommendations
235
+
236
+ `;
237
+
238
+ if (recommendations.length === 0) {
239
+ section += '*No specific recommendations at this time. Continue following best practices.*\n\n';
240
+ } else {
241
+ for (const rec of recommendations) {
242
+ section += `### ${rec.title}\n\n`;
243
+ section += `- **Issue:** ${rec.issue}\n`;
244
+ section += `- **Files:** ${rec.files.length > 0 ? rec.files.map(f => `\`${f}\``).join(', ') : 'N/A'}\n`;
245
+ section += `- **Fix approach:** ${rec.approach}\n`;
246
+ section += `- **Effort:** ${rec.effort}\n\n`;
247
+ }
248
+ }
249
+
250
+ return section;
251
+ }
252
+
253
+ /**
254
+ * Build file structure summary section
255
+ * @param {object} structure - Structure from CodebaseAnalyzer
256
+ * @returns {string} Markdown section
257
+ */
258
+ buildFileStructureSummary(structure) {
259
+ const directories = structure.directories || [];
260
+ const entryPoints = structure.entryPoints || [];
261
+ const configFiles = structure.configFiles || [];
262
+ const modules = structure.modules || [];
263
+
264
+ let section = `## File Structure
265
+
266
+ ### Directory Layout
267
+
268
+ \`\`\`
269
+ ${this._buildDirectoryTree(structure)}
270
+ \`\`\`
271
+
272
+ ### Directory Purposes
273
+
274
+ `;
275
+
276
+ // Group directories by depth
277
+ const topDirs = directories.filter(d => d.depth === 1).slice(0, 10);
278
+ for (const dir of topDirs) {
279
+ const name = path.basename(dir.path);
280
+ const purpose = this._describeDirectoryPurpose(name);
281
+ section += `- **${name}** — ${purpose}\n`;
282
+ }
283
+
284
+ section += `\n### Key Files\n\n`;
285
+
286
+ if (entryPoints.length > 0) {
287
+ section += '**Entry Points:**\n\n';
288
+ for (const ep of entryPoints.slice(0, 5)) {
289
+ section += `- \`${ep}\`\n`;
290
+ }
291
+ section += '\n';
292
+ }
293
+
294
+ if (configFiles.length > 0) {
295
+ section += '**Configuration Files:**\n\n';
296
+ for (const cf of configFiles.slice(0, 10)) {
297
+ const name = path.basename(cf);
298
+ section += `- \`${name}\`\n`;
299
+ }
300
+ section += '\n';
301
+ }
302
+
303
+ if (modules.length > 0) {
304
+ section += '**Module Boundaries:**\n\n';
305
+ for (const mod of modules.slice(0, 10)) {
306
+ section += `- **${mod.name}** (${mod.fileCount} files) — \`${mod.path}\`\n`;
307
+ }
308
+ }
309
+
310
+ return section;
311
+ }
312
+
313
+ /**
314
+ * Build technology stack summary section
315
+ * @param {object} stack - Stack from StackDetector
316
+ * @returns {string} Markdown section
317
+ */
318
+ buildTechStackSummary(stack) {
319
+ const language = stack.language || 'Unknown';
320
+ const runtime = stack.runtime || 'Unknown';
321
+ const packageManager = stack.packageManager || 'Unknown';
322
+ const frameworks = stack.frameworks || [];
323
+ const databases = stack.databases || [];
324
+ const infrastructure = stack.infrastructure || [];
325
+
326
+ return `## Technology Stack
327
+
328
+ ### Languages
329
+
330
+ - **Primary:** ${language}
331
+ - **Runtime:** ${runtime}
332
+
333
+ ### Package Manager
334
+
335
+ - **Manager:** ${packageManager}
336
+
337
+ ### Frameworks
338
+
339
+ ${frameworks.length > 0 ? frameworks.map(f => `- ${f}`).join('\n') : '- No major frameworks detected'}
340
+
341
+ ### Databases
342
+
343
+ ${databases.length > 0 ? databases.map(d => `- ${d}`).join('\n') : '- No databases detected'}
344
+
345
+ ### Infrastructure
346
+
347
+ ${infrastructure.length > 0 ? infrastructure.map(i => `- ${i}`).join('\n') : '- No infrastructure tools detected'}
348
+ `;
349
+ }
350
+
351
+ /**
352
+ * Detect architectural pattern from structure
353
+ * @private
354
+ */
355
+ _detectPattern(structure, stack) {
356
+ const directories = structure.directories || [];
357
+ const dirNames = directories.map(d => path.basename(d.path).toLowerCase());
358
+
359
+ if (dirNames.includes('components') && dirNames.includes('pages')) {
360
+ return stack.frameworks?.includes('Next.js') ? 'Next.js Pages/App Router' : 'React Component-based';
361
+ }
362
+ if (dirNames.includes('controllers') && dirNames.includes('models') && dirNames.includes('routes')) {
363
+ return 'MVC (Model-View-Controller)';
364
+ }
365
+ if (dirNames.includes('services') && dirNames.includes('handlers')) {
366
+ return 'Service-Oriented';
367
+ }
368
+ if (dirNames.includes('features') || dirNames.includes('modules')) {
369
+ return 'Feature-based / Domain-driven';
370
+ }
371
+ return 'Standard Layered Architecture';
372
+ }
373
+
374
+ /**
375
+ * Describe layers in the architecture
376
+ * @private
377
+ */
378
+ _describeLayers(structure) {
379
+ const directories = structure.directories || [];
380
+ const layers = [];
381
+
382
+ const layerPatterns = {
383
+ 'Presentation': ['components', 'pages', 'views', 'ui'],
384
+ 'Business Logic': ['services', 'domain', 'usecases'],
385
+ 'Data Access': ['models', 'repositories', 'dal'],
386
+ 'Routing': ['routes', 'controllers', 'handlers'],
387
+ 'Utilities': ['utils', 'helpers', 'lib']
388
+ };
389
+
390
+ for (const [layer, patterns] of Object.entries(layerPatterns)) {
391
+ const matching = directories.filter(d =>
392
+ patterns.some(p => path.basename(d.path).toLowerCase().includes(p))
393
+ );
394
+ if (matching.length > 0) {
395
+ layers.push(`- **${layer}:** ${matching.map(m => path.basename(m.path)).join(', ')}`);
396
+ }
397
+ }
398
+
399
+ return layers.length > 0 ? layers.join('\n') : '- Standard layer structure detected';
400
+ }
401
+
402
+ /**
403
+ * Describe data flow
404
+ * @private
405
+ */
406
+ _describeDataFlow(structure) {
407
+ const modules = structure.modules || [];
408
+
409
+ if (modules.length > 0) {
410
+ const hasServices = modules.some(m => m.name === 'services');
411
+ const hasModels = modules.some(m => m.name === 'models');
412
+ const hasControllers = modules.some(m => m.name === 'controllers');
413
+
414
+ if (hasControllers && hasServices && hasModels) {
415
+ return 'Controllers → Services → Models → Database';
416
+ }
417
+ if (hasServices && hasModels) {
418
+ return 'Components → Services → Models';
419
+ }
420
+ }
421
+
422
+ return 'Standard request-response flow';
423
+ }
424
+
425
+ /**
426
+ * Detect error handling patterns
427
+ * @private
428
+ */
429
+ _detectErrorHandling(structure) {
430
+ const files = structure.files || [];
431
+ const errorFiles = files.filter(f =>
432
+ f.toLowerCase().includes('error') ||
433
+ f.toLowerCase().includes('exception')
434
+ );
435
+
436
+ if (errorFiles.length > 0) {
437
+ return `Dedicated error handling modules found (${errorFiles.length} files)`;
438
+ }
439
+
440
+ return 'Standard try-catch error handling expected';
441
+ }
442
+
443
+ /**
444
+ * Build ASCII directory tree
445
+ * @private
446
+ */
447
+ _buildDirectoryTree(structure) {
448
+ const directories = structure.directories || [];
449
+ const lines = [];
450
+
451
+ const rootName = path.basename(structure.root) || 'project';
452
+ lines.push(rootName + '/');
453
+
454
+ const topDirs = directories.filter(d => d.depth === 1).slice(0, 15);
455
+ for (let i = 0; i < topDirs.length; i++) {
456
+ const dir = topDirs[i];
457
+ const isLast = i === topDirs.length - 1;
458
+ const prefix = isLast ? '└── ' : '├── ';
459
+ const name = path.basename(dir.path);
460
+ lines.push(prefix + name + '/');
461
+ }
462
+
463
+ if (directories.filter(d => d.depth === 1).length > 15) {
464
+ lines.push('└── ...');
465
+ }
466
+
467
+ return lines.join('\n');
468
+ }
469
+
470
+ /**
471
+ * Describe directory purpose
472
+ * @private
473
+ */
474
+ _describeDirectoryPurpose(name) {
475
+ const purposes = {
476
+ src: 'Main source code directory',
477
+ components: 'Reusable UI components',
478
+ pages: 'Page components and routes',
479
+ services: 'Business logic and external API calls',
480
+ models: 'Data models and database schemas',
481
+ controllers: 'Request handlers and route logic',
482
+ routes: 'Route definitions',
483
+ utils: 'Utility functions and helpers',
484
+ helpers: 'Helper functions',
485
+ lib: 'Library code and shared utilities',
486
+ hooks: 'Custom React hooks',
487
+ stores: 'State management stores',
488
+ api: 'API client and endpoints',
489
+ types: 'TypeScript type definitions',
490
+ styles: 'CSS and styling files',
491
+ assets: 'Static assets (images, fonts)',
492
+ tests: 'Test files',
493
+ __tests__: 'Test files',
494
+ config: 'Configuration files',
495
+ docs: 'Documentation'
496
+ };
497
+
498
+ return purposes[name.toLowerCase()] || 'Application code';
499
+ }
500
+ }
501
+
502
+ module.exports = { ProjectReporter };