@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,271 @@
1
+ /**
2
+ * EDGE-01: Hallucination Guard
3
+ *
4
+ * Detects AI hallucinations by requiring citations and flagging uncertainty.
5
+ * Verifies library claims against package.json or Context7.
6
+ */
7
+
8
+ const { execSync } = require('child_process');
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+
12
+ /**
13
+ * Search codebase for claim evidence
14
+ * @param {string} claim - The claim to verify
15
+ * @param {string} searchDir - Directory to search in
16
+ * @returns {object} { cited: boolean, citations: array, uncertainty: boolean }
17
+ */
18
+ function checkCitation(claim, searchDir = process.cwd()) {
19
+ const citations = [];
20
+
21
+ try {
22
+ // Search in codebase using grep
23
+ const grepCmd = process.platform === 'win32'
24
+ ? `findstr /s /i /c:"${claim}" * 2>nul`
25
+ : `grep -ri "${claim}" . 2>/dev/null | head -20`;
26
+
27
+ const result = execSync(grepCmd, {
28
+ cwd: searchDir,
29
+ encoding: 'utf8',
30
+ stdio: ['pipe', 'pipe', 'ignore']
31
+ });
32
+
33
+ if (result.trim()) {
34
+ const lines = result.trim().split('\n').slice(0, 5);
35
+ lines.forEach(line => {
36
+ citations.push({
37
+ source: 'codebase',
38
+ evidence: line.trim()
39
+ });
40
+ });
41
+ }
42
+ } catch (e) {
43
+ // No matches found - not an error, just no citation
44
+ }
45
+
46
+ return {
47
+ cited: citations.length > 0,
48
+ citations,
49
+ uncertainty: citations.length === 0
50
+ };
51
+ }
52
+
53
+ /**
54
+ * Verify a library/dependency claim
55
+ * @param {string} claim - Library name or claim
56
+ * @param {string} projectDir - Project directory
57
+ * @returns {object} { verified: boolean, source: string, details: object }
58
+ */
59
+ function verifyClaim(claim, projectDir = process.cwd()) {
60
+ // Extract library name from claim
61
+ const libMatch = claim.match(/(?:library|package|module|dependency)[:\s]+(['"]?)([^'"\s]+)\1/i);
62
+ const libName = libMatch ? libMatch[2] : claim.split(/\s+/).pop();
63
+
64
+ // Check package.json
65
+ const packageJsonPath = path.join(projectDir, 'package.json');
66
+ if (fs.existsSync(packageJsonPath)) {
67
+ try {
68
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
69
+ const allDeps = {
70
+ ...pkg.dependencies,
71
+ ...pkg.devDependencies,
72
+ ...pkg.peerDependencies
73
+ };
74
+
75
+ // Check if library is in dependencies
76
+ for (const [name, version] of Object.entries(allDeps)) {
77
+ if (name.toLowerCase().includes(libName.toLowerCase()) ||
78
+ libName.toLowerCase().includes(name.toLowerCase())) {
79
+ return {
80
+ verified: true,
81
+ source: 'package.json',
82
+ details: { name, version }
83
+ };
84
+ }
85
+ }
86
+ } catch (e) {
87
+ // Invalid package.json
88
+ }
89
+ }
90
+
91
+ // Check if it's a known library (would verify with Context7 in real implementation)
92
+ const knownLibraries = [
93
+ 'vitest', 'jest', 'playwright', 'cypress', 'react', 'vue', 'angular',
94
+ 'express', 'fastify', 'nest', 'next', 'nuxt', 'sveltekit',
95
+ 'prisma', 'mongoose', 'sequelize', 'typeorm',
96
+ 'typescript', 'eslint', 'prettier'
97
+ ];
98
+
99
+ if (knownLibraries.some(lib => libName.toLowerCase().includes(lib))) {
100
+ return {
101
+ verified: true,
102
+ source: 'known-library',
103
+ details: { name: libName, note: 'Would verify with Context7' }
104
+ };
105
+ }
106
+
107
+ return {
108
+ verified: false,
109
+ source: 'none',
110
+ details: { name: libName, note: 'Library not found in dependencies or known libraries' }
111
+ };
112
+ }
113
+
114
+ /**
115
+ * Flag uncertainty in AI output
116
+ * @param {string} output - AI generated text
117
+ * @returns {object} { flagged: boolean, uncertainPhrases: array, confidence: string }
118
+ */
119
+ function flagUncertainty(output) {
120
+ const uncertaintyMarkers = [
121
+ 'might', 'may', 'could', 'possibly', 'perhaps',
122
+ 'i think', 'i believe', 'probably', 'likely',
123
+ 'not sure', 'uncertain', 'approximate',
124
+ 'should work', 'might work', 'could work',
125
+ 'as far as i know', 'to the best of my knowledge',
126
+ 'it seems', 'appears to'
127
+ ];
128
+
129
+ const lowerOutput = output.toLowerCase();
130
+ const foundMarkers = [];
131
+
132
+ for (const marker of uncertaintyMarkers) {
133
+ if (lowerOutput.includes(marker)) {
134
+ foundMarkers.push(marker);
135
+ }
136
+ }
137
+
138
+ // Check for citation needed patterns
139
+ const citationPatterns = [
140
+ /according to.*documentation/i,
141
+ /the documentation says/i,
142
+ /as documented in/i,
143
+ /the official.*states/i
144
+ ];
145
+
146
+ for (const pattern of citationPatterns) {
147
+ if (pattern.test(output)) {
148
+ foundMarkers.push(`citation claim: ${pattern.source}`);
149
+ }
150
+ }
151
+
152
+ return {
153
+ flagged: foundMarkers.length > 0,
154
+ uncertainPhrases: foundMarkers,
155
+ confidence: foundMarkers.length === 0 ? 'high' :
156
+ foundMarkers.length <= 2 ? 'medium' : 'low'
157
+ };
158
+ }
159
+
160
+ /**
161
+ * Full hallucination check
162
+ * @param {string} output - AI generated text
163
+ * @param {string} projectDir - Project directory
164
+ * @returns {object} Comprehensive hallucination check result
165
+ */
166
+ function checkHallucination(output, projectDir = process.cwd()) {
167
+ const uncertaintyResult = flagUncertainty(output);
168
+
169
+ // Extract claims that need verification
170
+ const claimsToVerify = [];
171
+ const claimPatterns = [
172
+ /(?:library|package|module|dependency)[:\s]+['"]?([^'"\s,]+)['"]?/gi,
173
+ /(?:uses?|requires?|needs?|installs?)\s+(?:the\s+)?(['"]?)([^'"\s,]+)\1(?:\s+library)?/gi
174
+ ];
175
+
176
+ for (const pattern of claimPatterns) {
177
+ let match;
178
+ while ((match = pattern.exec(output)) !== null) {
179
+ claimsToVerify.push(match[0]);
180
+ }
181
+ }
182
+
183
+ // Verify each claim
184
+ const verifiedClaims = [];
185
+ const unverifiedClaims = [];
186
+
187
+ for (const claim of claimsToVerify) {
188
+ const verification = verifyClaim(claim, projectDir);
189
+ if (verification.verified) {
190
+ verifiedClaims.push({ claim, verification });
191
+ } else {
192
+ unverifiedClaims.push({ claim, verification });
193
+ }
194
+ }
195
+
196
+ return {
197
+ hallucinationRisk: unverifiedClaims.length > 0 || uncertaintyResult.flagged,
198
+ confidence: uncertaintyResult.confidence,
199
+ uncertainty: uncertaintyResult,
200
+ verifiedClaims,
201
+ unverifiedClaims,
202
+ recommendations: unverifiedClaims.length > 0
203
+ ? ['Verify unverified claims against official documentation', 'Add citations for external references']
204
+ : uncertaintyResult.flagged
205
+ ? ['Reduce uncertainty language', 'Add specific citations']
206
+ : []
207
+ };
208
+ }
209
+
210
+ /**
211
+ * CLI entry point
212
+ */
213
+ if (require.main === module) {
214
+ const args = process.argv.slice(2);
215
+ const command = args[0];
216
+
217
+ if (command === 'check' && args[1]) {
218
+ const claim = args.slice(1).join(' ');
219
+ console.log(`Checking claim: "${claim}"`);
220
+ const result = checkCitation(claim);
221
+
222
+ if (result.cited) {
223
+ console.log('✅ Claim has citations');
224
+ result.citations.forEach(c => console.log(` Source: ${c.source}`));
225
+ console.log(` Evidence: ${c.citations[0]?.evidence?.substring(0, 100)}...`);
226
+ } else {
227
+ console.log('⚠️ Claim has no citations - potential hallucination');
228
+ }
229
+ process.exit(result.cited ? 0 : 1);
230
+ } else if (command === 'verify' && args[1]) {
231
+ const claim = args.slice(1).join(' ');
232
+ console.log(`Verifying: "${claim}"`);
233
+ const result = verifyClaim(claim);
234
+
235
+ if (result.verified) {
236
+ console.log(`✅ Verified via ${result.source}`);
237
+ console.log(` Details: ${JSON.stringify(result.details)}`);
238
+ } else {
239
+ console.log('❌ Could not verify claim');
240
+ console.log(` Details: ${result.details.note}`);
241
+ }
242
+ process.exit(result.verified ? 0 : 1);
243
+ } else if (command === 'uncertainty' && args[1]) {
244
+ const text = args.slice(1).join(' ');
245
+ console.log('Checking for uncertainty markers...');
246
+ const result = flagUncertainty(text);
247
+
248
+ if (result.flagged) {
249
+ console.log(`⚠️ Found ${result.uncertainPhrases.length} uncertainty markers:`);
250
+ result.uncertainPhrases.forEach(p => console.log(` - "${p}"`));
251
+ console.log(`Confidence: ${result.confidence}`);
252
+ } else {
253
+ console.log('✅ No uncertainty markers found');
254
+ }
255
+ process.exit(0);
256
+ } else {
257
+ console.log('Usage: node hallucination-guard.cjs <command> [text]');
258
+ console.log('Commands:');
259
+ console.log(' check <claim> - Check if claim has citations');
260
+ console.log(' verify <claim> - Verify library/dependency claim');
261
+ console.log(' uncertainty <text> - Check for uncertainty markers');
262
+ process.exit(1);
263
+ }
264
+ }
265
+
266
+ module.exports = {
267
+ checkCitation,
268
+ verifyClaim,
269
+ flagUncertainty,
270
+ checkHallucination
271
+ };
@@ -0,0 +1,182 @@
1
+ /**
2
+ * EDGE-03: Hidden State Guard
3
+ *
4
+ * Detects state not persisted to .planning/ files.
5
+ * Ensures all state is explicitly persisted for auditability.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ /**
12
+ * List all state files in .planning/ directory
13
+ * @param {string} phaseDir - Phase directory
14
+ * @returns {string[]} Array of state file paths
15
+ */
16
+ function listStateFiles(phaseDir) {
17
+ const stateFiles = [];
18
+ const planningDir = path.join(phaseDir, '.planning');
19
+
20
+ if (!fs.existsSync(planningDir)) {
21
+ return stateFiles;
22
+ }
23
+
24
+ // Recursively find all .md files in .planning/
25
+ function scanDir(dir) {
26
+ try {
27
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
28
+ for (const entry of entries) {
29
+ const fullPath = path.join(dir, entry.name);
30
+ if (entry.isDirectory() && !entry.name.startsWith('.')) {
31
+ scanDir(fullPath);
32
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
33
+ stateFiles.push(fullPath);
34
+ }
35
+ }
36
+ } catch (e) {
37
+ // Ignore permission errors
38
+ }
39
+ }
40
+
41
+ scanDir(planningDir);
42
+ return stateFiles;
43
+ }
44
+
45
+ /**
46
+ * Extract state references from text
47
+ * @param {string} text - Text to analyze
48
+ * @returns {string[]} Array of state references
49
+ */
50
+ function extractStateReferences(text) {
51
+ const statePatterns = [
52
+ /(?:state|status|progress|phase|step|current)[\s:]+([A-Z_]+\d*(?:\.\d+)?)/gi,
53
+ /(?:task|plan|gate|edge)[\s:]+(\d+(?:-\d+)?)/gi,
54
+ /(?:completed|finished|done|pending|blocked)[\s:]+([A-Z_]+)/gi
55
+ ];
56
+
57
+ const references = new Set();
58
+
59
+ for (const pattern of statePatterns) {
60
+ let match;
61
+ while ((match = pattern.exec(text)) !== null) {
62
+ references.add(match[0].toLowerCase());
63
+ }
64
+ }
65
+
66
+ return Array.from(references);
67
+ }
68
+
69
+ /**
70
+ * Check for hidden state (state not persisted to files)
71
+ * @param {string} output - AI generated output
72
+ * @param {string} phaseDir - Phase directory
73
+ * @returns {object} { hasHiddenState: boolean, stateFiles: array, missing: array }
74
+ */
75
+ function checkHiddenState(output, phaseDir) {
76
+ const stateFiles = listStateFiles(phaseDir);
77
+ const stateReferences = extractStateReferences(output);
78
+
79
+ // Read all state file contents
80
+ const stateContents = stateFiles.map(file => {
81
+ try {
82
+ return fs.readFileSync(file, 'utf8').toLowerCase();
83
+ } catch (e) {
84
+ return '';
85
+ }
86
+ }).join(' ');
87
+
88
+ // Check which state references are not in persisted files
89
+ const missing = stateReferences.filter(ref => {
90
+ // Skip common false positives
91
+ if (['state', 'status', 'phase', 'plan'].includes(ref)) return false;
92
+ return !stateContents.includes(ref);
93
+ });
94
+
95
+ return {
96
+ hasHiddenState: missing.length > 0,
97
+ stateFiles,
98
+ stateReferences,
99
+ missing,
100
+ recommendation: missing.length > 0
101
+ ? `Persist the following state to .planning/ files: ${missing.join(', ')}`
102
+ : 'All state appears to be persisted'
103
+ };
104
+ }
105
+
106
+ /**
107
+ * Validate that all state is persisted
108
+ * @param {string} output - AI generated output
109
+ * @param {string} phaseDir - Phase directory
110
+ * @returns {object} Validation result
111
+ */
112
+ function validatePersistence(output, phaseDir) {
113
+ const result = checkHiddenState(output, phaseDir);
114
+
115
+ return {
116
+ valid: !result.hasHiddenState,
117
+ ...result
118
+ };
119
+ }
120
+
121
+ /**
122
+ * CLI entry point
123
+ */
124
+ if (require.main === module) {
125
+ const args = process.argv.slice(2);
126
+ const command = args[0];
127
+
128
+ if (command === 'check' && args[1]) {
129
+ const phaseDir = args[1];
130
+ console.log(`Checking for hidden state in ${phaseDir}`);
131
+
132
+ const stateFiles = listStateFiles(phaseDir);
133
+ console.log(`Found ${stateFiles.length} state files in .planning/`);
134
+
135
+ if (stateFiles.length > 0) {
136
+ console.log('State files:');
137
+ stateFiles.slice(0, 10).forEach(f => console.log(` - ${path.relative(phaseDir, f)}`));
138
+ if (stateFiles.length > 10) {
139
+ console.log(` ... and ${stateFiles.length - 10} more`);
140
+ }
141
+ }
142
+
143
+ process.exit(0);
144
+
145
+ } else if (command === 'validate' && args[1]) {
146
+ const phaseDir = args[1];
147
+ const outputFile = args[2];
148
+
149
+ if (!outputFile || !fs.existsSync(outputFile)) {
150
+ console.error('Usage: node hidden-state-guard.cjs validate <phaseDir> <outputFile>');
151
+ process.exit(1);
152
+ }
153
+
154
+ const output = fs.readFileSync(outputFile, 'utf8');
155
+ const result = validatePersistence(output, phaseDir);
156
+
157
+ if (result.valid) {
158
+ console.log('✅ All state is persisted');
159
+ console.log(` State files: ${result.stateFiles.length}`);
160
+ process.exit(0);
161
+ } else {
162
+ console.log('⚠️ Hidden state detected');
163
+ console.log(` Missing: ${result.missing.join(', ')}`);
164
+ console.log(` ${result.recommendation}`);
165
+ process.exit(1);
166
+ }
167
+
168
+ } else {
169
+ console.log('Usage: node hidden-state-guard.cjs <command> [args]');
170
+ console.log('Commands:');
171
+ console.log(' check <phaseDir> - List state files');
172
+ console.log(' validate <phaseDir> <file> - Validate output persistence');
173
+ process.exit(1);
174
+ }
175
+ }
176
+
177
+ module.exports = {
178
+ listStateFiles,
179
+ extractStateReferences,
180
+ checkHiddenState,
181
+ validatePersistence
182
+ };