@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,399 @@
1
+ /**
2
+ * Stack Detector — Automated technology stack detection from package manifests and config files
3
+ *
4
+ * Provides:
5
+ * - detect(rootPath): Returns languages, runtime, packageManager, frameworks, databases, infrastructure
6
+ * - detectPackageManifests(rootPath): Finds and parses manifest files
7
+ * - detectPackageManager(rootPath): Delegates to PackageManagerDetector
8
+ * - detectFrameworks(dependencies): Maps package names to framework names
9
+ * - detectDatabases(dependencies): Maps ORM/db packages to database names
10
+ * - detectInfrastructure(dependencies): Maps cloud/monitoring/testing packages
11
+ */
12
+
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+ const PackageManagerDetector = require('./package-manager-detector.cjs');
16
+
17
+ class StackDetector {
18
+ constructor(rootPath) {
19
+ this.rootPath = rootPath;
20
+ this.pmDetector = new PackageManagerDetector(rootPath);
21
+ }
22
+
23
+ /**
24
+ * Detect technology stack from root path
25
+ * @param {string} rootPath - Root directory to analyze
26
+ * @returns {object} Stack object with language, runtime, packageManager, frameworks, databases, infrastructure
27
+ */
28
+ detect(rootPath = this.rootPath) {
29
+ const manifests = this.detectPackageManifests(rootPath);
30
+ const packageManager = this.detectPackageManager(rootPath);
31
+
32
+ let result = {
33
+ language: 'unknown',
34
+ runtime: 'unknown',
35
+ packageManager,
36
+ frameworks: [],
37
+ databases: [],
38
+ infrastructure: [],
39
+ manifests
40
+ };
41
+
42
+ // Parse package.json if exists
43
+ if (manifests.node) {
44
+ const pkgPath = path.join(rootPath, manifests.node);
45
+ try {
46
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
47
+ const dependencies = {
48
+ ...pkg.dependencies,
49
+ ...pkg.devDependencies,
50
+ ...pkg.peerDependencies
51
+ };
52
+
53
+ result.language = 'javascript';
54
+ result.runtime = 'node';
55
+ result.runtimeVersion = pkg.engines?.node || '>=16.0.0';
56
+ result.frameworks = this.detectFrameworks(dependencies);
57
+ result.databases = this.detectDatabases(dependencies);
58
+ result.infrastructure = this.detectInfrastructure(dependencies);
59
+ } catch (err) {
60
+ // Ignore parse errors
61
+ }
62
+ }
63
+
64
+ // Check for other languages
65
+ if (manifests.python) {
66
+ result.language = 'python';
67
+ result.runtime = 'python';
68
+ }
69
+ if (manifests.ruby) {
70
+ result.language = 'ruby';
71
+ result.runtime = 'ruby';
72
+ }
73
+ if (manifests.php) {
74
+ result.language = 'php';
75
+ result.runtime = 'php';
76
+ }
77
+ if (manifests.java) {
78
+ result.language = 'java';
79
+ result.runtime = 'jvm';
80
+ }
81
+ if (manifests.go) {
82
+ result.language = 'go';
83
+ result.runtime = 'go';
84
+ }
85
+ if (manifests.rust) {
86
+ result.language = 'rust';
87
+ result.runtime = 'rust';
88
+ }
89
+
90
+ return result;
91
+ }
92
+
93
+ /**
94
+ * Detect package manifests in root path
95
+ * @param {string} rootPath - Root directory to analyze
96
+ * @returns {object} Object with found manifest files
97
+ */
98
+ detectPackageManifests(rootPath = this.rootPath) {
99
+ const manifests = {};
100
+
101
+ const manifestMap = {
102
+ node: ['package.json'],
103
+ python: ['requirements.txt', 'pyproject.toml', 'setup.py', 'Pipfile'],
104
+ ruby: ['Gemfile'],
105
+ php: ['composer.json'],
106
+ java: ['pom.xml', 'build.gradle', 'build.gradle.kts'],
107
+ go: ['go.mod'],
108
+ rust: ['Cargo.toml']
109
+ };
110
+
111
+ for (const [lang, files] of Object.entries(manifestMap)) {
112
+ for (const file of files) {
113
+ const fullPath = path.join(rootPath, file);
114
+ if (fs.existsSync(fullPath)) {
115
+ manifests[lang] = file;
116
+ break;
117
+ }
118
+ }
119
+ }
120
+
121
+ return manifests;
122
+ }
123
+
124
+ /**
125
+ * Detect package manager
126
+ * @param {string} rootPath - Root directory to analyze
127
+ * @returns {string} Package manager name (npm, yarn, pnpm)
128
+ */
129
+ detectPackageManager(rootPath = this.rootPath) {
130
+ const result = this.pmDetector.detect();
131
+ if (result && typeof result === 'object' && result.manager) {
132
+ return result.manager;
133
+ }
134
+ return result || 'npm';
135
+ }
136
+
137
+ /**
138
+ * Detect frameworks from dependencies
139
+ * @param {object} dependencies - Dependencies object from package.json
140
+ * @returns {Array} Array of framework names
141
+ */
142
+ detectFrameworks(dependencies = {}) {
143
+ const frameworkMap = {
144
+ // Frontend
145
+ 'react': 'React',
146
+ 'next': 'Next.js',
147
+ 'vue': 'Vue.js',
148
+ 'nuxt': 'Nuxt.js',
149
+ '@angular/core': 'Angular',
150
+ 'svelte': 'Svelte',
151
+ 'solid-js': 'SolidJS',
152
+ // Backend
153
+ 'express': 'Express',
154
+ 'fastify': 'Fastify',
155
+ '@nestjs/core': 'NestJS',
156
+ 'nest': 'NestJS',
157
+ 'koa': 'Koa',
158
+ 'hapi': 'Hapi',
159
+ '@hapi/hapi': 'Hapi',
160
+ // Full-stack
161
+ 'remix': 'Remix',
162
+ // Mobile
163
+ 'react-native': 'React Native',
164
+ // Python
165
+ 'django': 'Django',
166
+ 'flask': 'Flask',
167
+ 'fastapi': 'FastAPI',
168
+ // Ruby
169
+ 'rails': 'Ruby on Rails',
170
+ 'sinatra': 'Sinatra',
171
+ // PHP
172
+ 'laravel/framework': 'Laravel',
173
+ 'symfony': 'Symfony',
174
+ // Java
175
+ 'spring-boot': 'Spring Boot',
176
+ 'quarkus': 'Quarkus',
177
+ // Build/Dev
178
+ 'vite': 'Vite',
179
+ 'webpack': 'Webpack',
180
+ 'rollup': 'Rollup',
181
+ 'parcel': 'Parcel',
182
+ // CSS
183
+ 'tailwindcss': 'Tailwind CSS',
184
+ 'bootstrap': 'Bootstrap',
185
+ '@mui/material': 'Material-UI',
186
+ '@chakra-ui/react': 'Chakra UI',
187
+ 'antd': 'Ant Design'
188
+ };
189
+
190
+ const detected = [];
191
+ for (const [pkg, name] of Object.entries(frameworkMap)) {
192
+ if (dependencies[pkg]) {
193
+ detected.push(name);
194
+ }
195
+ }
196
+
197
+ return detected;
198
+ }
199
+
200
+ /**
201
+ * Detect databases from dependencies
202
+ * @param {object} dependencies - Dependencies object from package.json
203
+ * @returns {Array} Array of database names
204
+ */
205
+ detectDatabases(dependencies = {}) {
206
+ const dbMap = {
207
+ 'pg': 'PostgreSQL',
208
+ 'postgres': 'PostgreSQL',
209
+ 'mysql2': 'MySQL',
210
+ 'mysql': 'MySQL',
211
+ 'sqlite3': 'SQLite',
212
+ 'better-sqlite3': 'SQLite',
213
+ 'mssql': 'SQL Server',
214
+ 'tedious': 'SQL Server',
215
+ 'oracledb': 'Oracle',
216
+ 'mongoose': 'MongoDB',
217
+ 'mongodb': 'MongoDB',
218
+ 'redis': 'Redis',
219
+ 'ioredis': 'Redis',
220
+ 'prisma': 'Prisma (ORM)',
221
+ '@prisma/client': 'Prisma',
222
+ 'typeorm': 'TypeORM',
223
+ 'sequelize': 'Sequelize',
224
+ 'knex': 'Knex.js',
225
+ 'drizzle-orm': 'Drizzle ORM',
226
+ 'objection': 'Objection.js',
227
+ 'bookshelf': 'Bookshelf',
228
+ 'waterline': 'Waterline',
229
+ 'rethinkdb': 'RethinkDB',
230
+ 'cassandra-driver': 'Cassandra',
231
+ 'neo4j-driver': 'Neo4j'
232
+ };
233
+
234
+ const detected = [];
235
+ for (const [pkg, name] of Object.entries(dbMap)) {
236
+ if (dependencies[pkg]) {
237
+ detected.push(name);
238
+ }
239
+ }
240
+
241
+ return detected;
242
+ }
243
+
244
+ /**
245
+ * Detect infrastructure from dependencies
246
+ * @param {object} dependencies - Dependencies object from package.json
247
+ * @returns {Array} Array of infrastructure names
248
+ */
249
+ detectInfrastructure(dependencies = {}) {
250
+ const infraMap = {
251
+ // Cloud
252
+ '@aws-sdk/*': 'AWS SDK',
253
+ '@aws-sdk': 'AWS SDK',
254
+ 'aws-sdk': 'AWS SDK v2',
255
+ '@azure/*': 'Azure SDK',
256
+ '@azure': 'Azure SDK',
257
+ '@google-cloud/*': 'Google Cloud SDK',
258
+ // Serverless
259
+ 'serverless': 'Serverless Framework',
260
+ // Containers
261
+ 'dockerode': 'Docker',
262
+ '@docker/cli': 'Docker',
263
+ // Monitoring/Logging
264
+ 'winston': 'Winston (logging)',
265
+ 'pino': 'Pino (logging)',
266
+ 'bunyan': 'Bunyan (logging)',
267
+ '@sentry/node': 'Sentry',
268
+ '@sentry/*': 'Sentry',
269
+ 'datadog-metrics': 'Datadog',
270
+ 'newrelic': 'New Relic',
271
+ // Testing
272
+ 'jest': 'Jest',
273
+ 'vitest': 'Vitest',
274
+ 'mocha': 'Mocha',
275
+ 'chai': 'Chai',
276
+ 'cypress': 'Cypress',
277
+ 'playwright': 'Playwright',
278
+ '@testing-library/*': 'Testing Library',
279
+ '@testing-library': 'Testing Library',
280
+ 'puppeteer': 'Puppeteer',
281
+ // CI/CD
282
+ 'semantic-release': 'Semantic Release',
283
+ // Auth
284
+ 'next-auth': 'NextAuth.js',
285
+ '@auth/core': 'Auth.js',
286
+ 'passport': 'Passport',
287
+ 'jsonwebtoken': 'JWT',
288
+ 'bcrypt': 'bcrypt',
289
+ 'argon2': 'Argon2'
290
+ };
291
+
292
+ const detected = [];
293
+ for (const [pkg, name] of Object.entries(infraMap)) {
294
+ const pattern = pkg.replace('*', '.*');
295
+ const regex = new RegExp(`^${pattern}$`);
296
+ if (Object.keys(dependencies).some(k => regex.test(k) || k.startsWith(pkg.replace('/*', '')))) {
297
+ if (!detected.includes(name)) {
298
+ detected.push(name);
299
+ }
300
+ }
301
+ }
302
+
303
+ return detected;
304
+ }
305
+
306
+ /**
307
+ * Detect languages from file structure
308
+ * @param {object} structure - Structure object from CodebaseAnalyzer
309
+ * @returns {object} Object with language counts
310
+ */
311
+ detectLanguages(structure) {
312
+ const languageDetectors = {
313
+ '.ts': 'typescript',
314
+ '.tsx': 'typescript',
315
+ '.js': 'javascript',
316
+ '.jsx': 'javascript',
317
+ '.py': 'python',
318
+ '.rb': 'ruby',
319
+ '.go': 'go',
320
+ '.java': 'java',
321
+ '.php': 'php',
322
+ '.rs': 'rust',
323
+ '.cs': 'csharp',
324
+ '.swift': 'swift',
325
+ '.kt': 'kotlin',
326
+ '.scala': 'scala',
327
+ '.clj': 'clojure',
328
+ '.ex': 'elixir',
329
+ '.exs': 'elixir',
330
+ '.erl': 'erlang',
331
+ '.hs': 'haskell',
332
+ '.ml': 'ocaml',
333
+ '.r': 'r',
334
+ '.R': 'r',
335
+ '.sql': 'sql',
336
+ '.sh': 'shell',
337
+ '.bash': 'shell'
338
+ };
339
+
340
+ const languages = {};
341
+ const files = structure?.files || [];
342
+
343
+ for (const file of files) {
344
+ const ext = path.extname(file);
345
+ const lang = languageDetectors[ext] || 'unknown';
346
+ languages[lang] = (languages[lang] || 0) + 1;
347
+ }
348
+
349
+ return languages;
350
+ }
351
+
352
+ /**
353
+ * Detect config files in root path
354
+ * @param {string} rootPath - Root directory to analyze
355
+ * @returns {object} Object with found config files
356
+ */
357
+ detectConfigFiles(rootPath = this.rootPath) {
358
+ const configPatterns = {
359
+ typescript: 'tsconfig.json',
360
+ jsconfig: 'jsconfig.json',
361
+ vite: 'vite.config.js',
362
+ webpack: 'webpack.config.js',
363
+ rollup: 'rollup.config.js',
364
+ eslint: '.eslintrc.js',
365
+ prettier: '.prettierrc',
366
+ next: 'next.config.js',
367
+ nuxt: 'nuxt.config.js',
368
+ remix: 'remix.config.js',
369
+ prisma: 'prisma/schema.prisma',
370
+ jest: 'jest.config.js',
371
+ vitest: 'vitest.config.js',
372
+ cypress: 'cypress.config.js',
373
+ docker: 'Dockerfile',
374
+ dockerCompose: 'docker-compose.yml',
375
+ serverless: 'serverless.yml',
376
+ vercel: 'vercel.json',
377
+ netlify: 'netlify.toml',
378
+ heroku: 'Procfile',
379
+ github: '.github/workflows',
380
+ gitlab: '.gitlab-ci.yml',
381
+ circle: '.circleci/config.yml'
382
+ };
383
+
384
+ const configs = {};
385
+ for (const [key, pattern] of Object.entries(configPatterns)) {
386
+ const fullPath = path.join(rootPath, pattern);
387
+ if (fs.existsSync(fullPath)) {
388
+ configs[key] = {
389
+ path: fullPath,
390
+ exists: true
391
+ };
392
+ }
393
+ }
394
+
395
+ return configs;
396
+ }
397
+ }
398
+
399
+ module.exports = { StackDetector };