@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
@@ -1,262 +1,262 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Session Import — Import session data from exported files
5
- *
6
- * Validates session structure and chain integrity
7
- * Supports model-specific adapters
8
- */
9
-
10
- const fs = require('fs');
11
- const { SessionImportError, SessionNotFoundError } = require('./session-errors.cjs');
12
- const { defaultLogger: logger } = require('./logger.cjs');
13
-
14
- class SessionImport {
15
- /**
16
- * Create a SessionImport instance
17
- * @param {Object} sessionManager - SessionManager instance
18
- */
19
- constructor(sessionManager) {
20
- this.sessionManager = sessionManager;
21
- }
22
-
23
- /**
24
- * Import a session from file
25
- * @param {string} sessionFile - Path to session file
26
- * @param {Object} options - Import options
27
- * @param {string} [options.sourceModel] - Source model for adapter
28
- * @returns {Object} Import result with sessionId and warnings
29
- */
30
- import(sessionFile, options = {}) {
31
- const { sourceModel } = options;
32
- const warnings = [];
33
-
34
- // Read and parse file
35
- let importedData;
36
- try {
37
- const content = fs.readFileSync(sessionFile, 'utf-8');
38
- importedData = JSON.parse(content);
39
- } catch (err) {
40
- throw new SessionImportError(`Failed to parse JSON: ${err.message}`, [err.message]);
41
- }
42
-
43
- // Handle model-specific format conversion
44
- if (sourceModel) {
45
- importedData = this.importFromModelSpecificFormat(importedData, sourceModel);
46
- }
47
-
48
- // Validate structure
49
- const structureValidation = this.validateStructure(importedData);
50
- if (!structureValidation.valid) {
51
- throw new SessionImportError('Invalid session structure', structureValidation.errors);
52
- }
53
-
54
- // Validate session chain
55
- const chainValidation = this.validateSessionChain(importedData);
56
- if (!chainValidation.valid) {
57
- throw new SessionImportError('Invalid session chain', chainValidation.errors);
58
- }
59
-
60
- // Validate chain links exist
61
- const linksValidation = this.validateChainLinksExist(importedData);
62
- if (linksValidation.warnings && linksValidation.warnings.length > 0) {
63
- warnings.push(...linksValidation.warnings);
64
- }
65
-
66
- // Create new session
67
- const newSessionId = this.sessionManager.createSession({
68
- model: importedData.metadata?.model,
69
- phase: importedData.metadata?.phase,
70
- plan: importedData.metadata?.plan
71
- });
72
-
73
- // Merge imported context and state
74
- const updates = {
75
- context: importedData.context || {},
76
- state: importedData.state || {}
77
- };
78
-
79
- // Add previous session to chain
80
- const previousSessionId = importedData.metadata?.session_id;
81
- if (previousSessionId) {
82
- updates.metadata = {
83
- session_chain: [previousSessionId]
84
- };
85
- }
86
-
87
- this.sessionManager.updateSession(newSessionId, updates);
88
-
89
- logger.info('Session imported', { sessionId: newSessionId, sourceFile: sessionFile });
90
-
91
- return {
92
- success: true,
93
- sessionId: newSessionId,
94
- warnings
95
- };
96
- }
97
-
98
- /**
99
- * Validate session structure
100
- * @param {Object} session - Session object
101
- * @returns {Object} Validation result
102
- */
103
- validateStructure(session) {
104
- const errors = [];
105
-
106
- // Check for export wrapper or direct session
107
- const sessionData = session.session || session;
108
-
109
- if (!sessionData.metadata) {
110
- errors.push('Missing metadata section');
111
- } else {
112
- if (!sessionData.metadata.session_id) {
113
- errors.push('Missing metadata.session_id');
114
- }
115
- if (!sessionData.metadata.started_at) {
116
- errors.push('Missing metadata.started_at');
117
- }
118
- if (!sessionData.metadata.session_version) {
119
- errors.push('Missing metadata.session_version');
120
- }
121
- }
122
-
123
- if (!sessionData.context) {
124
- errors.push('Missing context section');
125
- } else {
126
- if (!Array.isArray(sessionData.context.tasks)) {
127
- errors.push('context.tasks must be an array');
128
- }
129
- if (!Array.isArray(sessionData.context.decisions)) {
130
- errors.push('context.decisions must be an array');
131
- }
132
- }
133
-
134
- return {
135
- valid: errors.length === 0,
136
- errors
137
- };
138
- }
139
-
140
- /**
141
- * Validate session chain integrity
142
- * @param {Object} session - Session object
143
- * @returns {Object} Validation result
144
- */
145
- validateSessionChain(session) {
146
- const errors = [];
147
- const sessionData = session.session || session;
148
-
149
- if (sessionData.metadata?.session_chain) {
150
- const chain = sessionData.metadata.session_chain;
151
- const sessionId = sessionData.metadata.session_id;
152
-
153
- if (!Array.isArray(chain)) {
154
- errors.push('session_chain must be an array');
155
- } else if (chain.includes(sessionId)) {
156
- errors.push('Circular reference detected: session_chain includes current session_id');
157
- }
158
- }
159
-
160
- return {
161
- valid: errors.length === 0,
162
- errors
163
- };
164
- }
165
-
166
- /**
167
- * Validate chain links exist in session manager
168
- * @param {Object} session - Session object
169
- * @returns {Object} Validation result with warnings
170
- */
171
- validateChainLinksExist(session) {
172
- const warnings = [];
173
- const sessionData = session.session || session;
174
-
175
- if (sessionData.metadata?.session_chain) {
176
- const chain = sessionData.metadata.session_chain;
177
- const missingLinks = [];
178
-
179
- for (const id of chain) {
180
- const linkedSession = this.sessionManager.loadSession(id);
181
- if (!linkedSession) {
182
- missingLinks.push(id);
183
- }
184
- }
185
-
186
- if (missingLinks.length > 0) {
187
- warnings.push(`Missing chain links: ${missingLinks.join(', ')}`);
188
- }
189
- }
190
-
191
- return {
192
- valid: true,
193
- warnings
194
- };
195
- }
196
-
197
- /**
198
- * Import from model-specific format
199
- * @param {Object} data - Data to convert
200
- * @param {string} sourceModel - Source model name
201
- * @returns {Object} Converted session object
202
- */
203
- importFromModelSpecificFormat(data, sourceModel) {
204
- // If data has session wrapper, use it
205
- if (data.session) {
206
- return data.session;
207
- }
208
-
209
- // Model-specific adapters (can be extended)
210
- switch (sourceModel.toLowerCase()) {
211
- case 'claude':
212
- return this._adaptClaudeFormat(data);
213
- case 'qwen':
214
- return this._adaptQwenFormat(data);
215
- case 'openai':
216
- return this._adaptOpenAIFormat(data);
217
- case 'kimi':
218
- return this._adaptKimiFormat(data);
219
- default:
220
- // Assume standard format
221
- return data;
222
- }
223
- }
224
-
225
- /**
226
- * Adapt Claude-specific format
227
- * @private
228
- */
229
- _adaptClaudeFormat(data) {
230
- // Claude format adapter (placeholder)
231
- return data;
232
- }
233
-
234
- /**
235
- * Adapt Qwen-specific format
236
- * @private
237
- */
238
- _adaptQwenFormat(data) {
239
- // Qwen format adapter (placeholder)
240
- return data;
241
- }
242
-
243
- /**
244
- * Adapt OpenAI-specific format
245
- * @private
246
- */
247
- _adaptOpenAIFormat(data) {
248
- // OpenAI format adapter (placeholder)
249
- return data;
250
- }
251
-
252
- /**
253
- * Adapt Kimi-specific format
254
- * @private
255
- */
256
- _adaptKimiFormat(data) {
257
- // Kimi format adapter (placeholder)
258
- return data;
259
- }
260
- }
261
-
262
- module.exports = SessionImport;
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Session Import — Import session data from exported files
5
+ *
6
+ * Validates session structure and chain integrity
7
+ * Supports model-specific adapters
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const { SessionImportError, SessionNotFoundError } = require('./session-errors.cjs');
12
+ const { defaultLogger: logger } = require('./logger.cjs');
13
+
14
+ class SessionImport {
15
+ /**
16
+ * Create a SessionImport instance
17
+ * @param {Object} sessionManager - SessionManager instance
18
+ */
19
+ constructor(sessionManager) {
20
+ this.sessionManager = sessionManager;
21
+ }
22
+
23
+ /**
24
+ * Import a session from file
25
+ * @param {string} sessionFile - Path to session file
26
+ * @param {Object} options - Import options
27
+ * @param {string} [options.sourceModel] - Source model for adapter
28
+ * @returns {Object} Import result with sessionId and warnings
29
+ */
30
+ import(sessionFile, options = {}) {
31
+ const { sourceModel } = options;
32
+ const warnings = [];
33
+
34
+ // Read and parse file
35
+ let importedData;
36
+ try {
37
+ const content = fs.readFileSync(sessionFile, 'utf-8');
38
+ importedData = JSON.parse(content);
39
+ } catch (err) {
40
+ throw new SessionImportError(`Failed to parse JSON: ${err.message}`, [err.message]);
41
+ }
42
+
43
+ // Handle model-specific format conversion
44
+ if (sourceModel) {
45
+ importedData = this.importFromModelSpecificFormat(importedData, sourceModel);
46
+ }
47
+
48
+ // Validate structure
49
+ const structureValidation = this.validateStructure(importedData);
50
+ if (!structureValidation.valid) {
51
+ throw new SessionImportError('Invalid session structure', structureValidation.errors);
52
+ }
53
+
54
+ // Validate session chain
55
+ const chainValidation = this.validateSessionChain(importedData);
56
+ if (!chainValidation.valid) {
57
+ throw new SessionImportError('Invalid session chain', chainValidation.errors);
58
+ }
59
+
60
+ // Validate chain links exist
61
+ const linksValidation = this.validateChainLinksExist(importedData);
62
+ if (linksValidation.warnings && linksValidation.warnings.length > 0) {
63
+ warnings.push(...linksValidation.warnings);
64
+ }
65
+
66
+ // Create new session
67
+ const newSessionId = this.sessionManager.createSession({
68
+ model: importedData.metadata?.model,
69
+ phase: importedData.metadata?.phase,
70
+ plan: importedData.metadata?.plan
71
+ });
72
+
73
+ // Merge imported context and state
74
+ const updates = {
75
+ context: importedData.context || {},
76
+ state: importedData.state || {}
77
+ };
78
+
79
+ // Add previous session to chain
80
+ const previousSessionId = importedData.metadata?.session_id;
81
+ if (previousSessionId) {
82
+ updates.metadata = {
83
+ session_chain: [previousSessionId]
84
+ };
85
+ }
86
+
87
+ this.sessionManager.updateSession(newSessionId, updates);
88
+
89
+ logger.info('Session imported', { sessionId: newSessionId, sourceFile: sessionFile });
90
+
91
+ return {
92
+ success: true,
93
+ sessionId: newSessionId,
94
+ warnings
95
+ };
96
+ }
97
+
98
+ /**
99
+ * Validate session structure
100
+ * @param {Object} session - Session object
101
+ * @returns {Object} Validation result
102
+ */
103
+ validateStructure(session) {
104
+ const errors = [];
105
+
106
+ // Check for export wrapper or direct session
107
+ const sessionData = session.session || session;
108
+
109
+ if (!sessionData.metadata) {
110
+ errors.push('Missing metadata section');
111
+ } else {
112
+ if (!sessionData.metadata.session_id) {
113
+ errors.push('Missing metadata.session_id');
114
+ }
115
+ if (!sessionData.metadata.started_at) {
116
+ errors.push('Missing metadata.started_at');
117
+ }
118
+ if (!sessionData.metadata.session_version) {
119
+ errors.push('Missing metadata.session_version');
120
+ }
121
+ }
122
+
123
+ if (!sessionData.context) {
124
+ errors.push('Missing context section');
125
+ } else {
126
+ if (!Array.isArray(sessionData.context.tasks)) {
127
+ errors.push('context.tasks must be an array');
128
+ }
129
+ if (!Array.isArray(sessionData.context.decisions)) {
130
+ errors.push('context.decisions must be an array');
131
+ }
132
+ }
133
+
134
+ return {
135
+ valid: errors.length === 0,
136
+ errors
137
+ };
138
+ }
139
+
140
+ /**
141
+ * Validate session chain integrity
142
+ * @param {Object} session - Session object
143
+ * @returns {Object} Validation result
144
+ */
145
+ validateSessionChain(session) {
146
+ const errors = [];
147
+ const sessionData = session.session || session;
148
+
149
+ if (sessionData.metadata?.session_chain) {
150
+ const chain = sessionData.metadata.session_chain;
151
+ const sessionId = sessionData.metadata.session_id;
152
+
153
+ if (!Array.isArray(chain)) {
154
+ errors.push('session_chain must be an array');
155
+ } else if (chain.includes(sessionId)) {
156
+ errors.push('Circular reference detected: session_chain includes current session_id');
157
+ }
158
+ }
159
+
160
+ return {
161
+ valid: errors.length === 0,
162
+ errors
163
+ };
164
+ }
165
+
166
+ /**
167
+ * Validate chain links exist in session manager
168
+ * @param {Object} session - Session object
169
+ * @returns {Object} Validation result with warnings
170
+ */
171
+ validateChainLinksExist(session) {
172
+ const warnings = [];
173
+ const sessionData = session.session || session;
174
+
175
+ if (sessionData.metadata?.session_chain) {
176
+ const chain = sessionData.metadata.session_chain;
177
+ const missingLinks = [];
178
+
179
+ for (const id of chain) {
180
+ const linkedSession = this.sessionManager.loadSession(id);
181
+ if (!linkedSession) {
182
+ missingLinks.push(id);
183
+ }
184
+ }
185
+
186
+ if (missingLinks.length > 0) {
187
+ warnings.push(`Missing chain links: ${missingLinks.join(', ')}`);
188
+ }
189
+ }
190
+
191
+ return {
192
+ valid: true,
193
+ warnings
194
+ };
195
+ }
196
+
197
+ /**
198
+ * Import from model-specific format
199
+ * @param {Object} data - Data to convert
200
+ * @param {string} sourceModel - Source model name
201
+ * @returns {Object} Converted session object
202
+ */
203
+ importFromModelSpecificFormat(data, sourceModel) {
204
+ // If data has session wrapper, use it
205
+ if (data.session) {
206
+ return data.session;
207
+ }
208
+
209
+ // Model-specific adapters (can be extended)
210
+ switch (sourceModel.toLowerCase()) {
211
+ case 'claude':
212
+ return this._adaptClaudeFormat(data);
213
+ case 'qwen':
214
+ return this._adaptQwenFormat(data);
215
+ case 'openai':
216
+ return this._adaptOpenAIFormat(data);
217
+ case 'kimi':
218
+ return this._adaptKimiFormat(data);
219
+ default:
220
+ // Assume standard format
221
+ return data;
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Adapt Claude-specific format
227
+ * @private
228
+ */
229
+ _adaptClaudeFormat(data) {
230
+ // Claude format adapter (placeholder)
231
+ return data;
232
+ }
233
+
234
+ /**
235
+ * Adapt Qwen-specific format
236
+ * @private
237
+ */
238
+ _adaptQwenFormat(data) {
239
+ // Qwen format adapter (placeholder)
240
+ return data;
241
+ }
242
+
243
+ /**
244
+ * Adapt OpenAI-specific format
245
+ * @private
246
+ */
247
+ _adaptOpenAIFormat(data) {
248
+ // OpenAI format adapter (placeholder)
249
+ return data;
250
+ }
251
+
252
+ /**
253
+ * Adapt Kimi-specific format
254
+ * @private
255
+ */
256
+ _adaptKimiFormat(data) {
257
+ // Kimi format adapter (placeholder)
258
+ return data;
259
+ }
260
+ }
261
+
262
+ module.exports = SessionImport;