@howlil/ez-agents 3.4.2 → 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 (365) hide show
  1. package/README.md +735 -462
  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 -0
  18. package/agents/ez-requirements-agent.md +377 -0
  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/install.js +3221 -3272
  30. package/bin/lib/analytics/analytics-collector.cjs +86 -0
  31. package/bin/lib/analytics/analytics-reporter.cjs +130 -0
  32. package/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  33. package/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  34. package/bin/lib/analytics/nps-tracker.cjs +147 -0
  35. package/bin/lib/archetype-detector.cjs +289 -0
  36. package/bin/lib/assistant-adapter.cjs +361 -0
  37. package/bin/lib/audit-exec.cjs +175 -0
  38. package/bin/lib/auth.cjs +176 -0
  39. package/bin/lib/backup-service.cjs +422 -0
  40. package/bin/lib/bdd-validator.cjs +622 -0
  41. package/bin/lib/business-flow-mapper.cjs +429 -0
  42. package/bin/lib/circuit-breaker.cjs +276 -0
  43. package/bin/lib/code-complexity-analyzer.cjs +360 -0
  44. package/bin/lib/codebase-analyzer.cjs +241 -0
  45. package/bin/lib/commands.cjs +691 -0
  46. package/bin/lib/config.cjs +236 -0
  47. package/bin/lib/constraint-extractor.cjs +526 -0
  48. package/bin/lib/content-scanner.cjs +238 -0
  49. package/bin/lib/context-cache.cjs +154 -0
  50. package/bin/lib/context-compressor.cjs +102 -0
  51. package/bin/lib/context-deduplicator.cjs +105 -0
  52. package/bin/lib/context-errors.cjs +78 -0
  53. package/bin/lib/context-manager.cjs +338 -0
  54. package/bin/lib/context-metadata-tracker.cjs +140 -0
  55. package/bin/lib/context-relevance-scorer.cjs +99 -0
  56. package/bin/lib/core.cjs +507 -0
  57. package/bin/lib/cost-alerts.cjs +174 -0
  58. package/bin/lib/cost-tracker.cjs +275 -0
  59. package/bin/lib/crash-recovery.cjs +220 -0
  60. package/bin/lib/dependency-graph.cjs +319 -0
  61. package/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  62. package/bin/lib/deploy/deploy-detector.cjs +69 -0
  63. package/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  64. package/bin/lib/deploy/deploy-health-check.cjs +88 -0
  65. package/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  66. package/bin/lib/deploy/deploy-rollback.cjs +72 -0
  67. package/bin/lib/deploy/deploy-runner.cjs +97 -0
  68. package/bin/lib/deploy/deploy-status.cjs +74 -0
  69. package/bin/lib/discussion-synthesizer.cjs +439 -0
  70. package/bin/lib/error-cache.cjs +114 -0
  71. package/bin/lib/error-registry.cjs +177 -0
  72. package/bin/lib/file-access.cjs +207 -0
  73. package/bin/lib/file-lock.cjs +236 -0
  74. package/bin/lib/finops/budget-enforcer.cjs +126 -0
  75. package/bin/lib/finops/cost-reporter.cjs +132 -0
  76. package/bin/lib/finops/finops-analyzer.cjs +112 -0
  77. package/bin/lib/finops/spot-manager.cjs +118 -0
  78. package/bin/lib/framework-detector.cjs +396 -0
  79. package/bin/lib/frontmatter.cjs +313 -0
  80. package/bin/lib/fs-utils.cjs +153 -0
  81. package/bin/lib/gate-executor.cjs +272 -0
  82. package/bin/lib/gates/README.md +374 -0
  83. package/bin/lib/gates/gate-01-requirement.cjs +303 -0
  84. package/bin/lib/gates/gate-02-architecture.cjs +555 -0
  85. package/bin/lib/gates/gate-03-code.cjs +635 -0
  86. package/bin/lib/gates/gate-04-security.cjs +829 -0
  87. package/bin/lib/git-errors.cjs +83 -0
  88. package/bin/lib/git-utils.cjs +321 -0
  89. package/bin/lib/git-workflow-engine.cjs +1157 -0
  90. package/bin/lib/health-check.cjs +227 -0
  91. package/bin/lib/index.cjs +279 -0
  92. package/bin/lib/init.cjs +725 -0
  93. package/bin/lib/lock-logger.cjs +194 -0
  94. package/bin/lib/lock-state.cjs +263 -0
  95. package/bin/lib/lockfile-validator.cjs +227 -0
  96. package/bin/lib/log-rotation.cjs +71 -0
  97. package/bin/lib/logger.cjs +125 -0
  98. package/bin/lib/memory-compression.cjs +256 -0
  99. package/bin/lib/milestone.cjs +247 -0
  100. package/bin/lib/model-provider.cjs +241 -0
  101. package/bin/lib/package-manager-detector.cjs +203 -0
  102. package/bin/lib/package-manager-executor.cjs +385 -0
  103. package/bin/lib/package-manager-service.cjs +216 -0
  104. package/bin/lib/perf/api-monitor.cjs +88 -0
  105. package/bin/lib/perf/db-optimizer.cjs +78 -0
  106. package/bin/lib/perf/frontend-performance.cjs +56 -0
  107. package/bin/lib/perf/perf-analyzer.cjs +77 -0
  108. package/bin/lib/perf/perf-baseline.cjs +102 -0
  109. package/bin/lib/perf/perf-reporter.cjs +117 -0
  110. package/bin/lib/perf/regression-detector.cjs +92 -0
  111. package/bin/lib/phase.cjs +963 -0
  112. package/bin/lib/planning-write.cjs +123 -0
  113. package/bin/lib/project-reporter.cjs +565 -0
  114. package/bin/lib/quality-gate.cjs +332 -0
  115. package/bin/lib/quality-metrics.cjs +324 -0
  116. package/bin/lib/recovery-manager.cjs +98 -0
  117. package/bin/lib/release-validator.cjs +617 -0
  118. package/bin/lib/retry.cjs +119 -0
  119. package/bin/lib/roadmap.cjs +309 -0
  120. package/bin/lib/safe-exec.cjs +173 -0
  121. package/bin/lib/safe-path.cjs +130 -0
  122. package/bin/lib/security-errors.cjs +62 -0
  123. package/bin/lib/session-chain.cjs +304 -0
  124. package/bin/lib/session-errors.cjs +81 -0
  125. package/bin/lib/session-export.cjs +251 -0
  126. package/bin/lib/session-import.cjs +262 -0
  127. package/bin/lib/session-manager.cjs +280 -0
  128. package/bin/lib/skill-context.cjs +148 -0
  129. package/bin/lib/skill-matcher.cjs +236 -0
  130. package/bin/lib/skill-registry.cjs +360 -0
  131. package/bin/lib/skill-resolver.cjs +449 -0
  132. package/bin/lib/skill-triggers.cjs +90 -0
  133. package/bin/lib/skill-validator.cjs +270 -0
  134. package/bin/lib/skill-versioning.cjs +355 -0
  135. package/bin/lib/stack-detector.cjs +399 -0
  136. package/bin/lib/state.cjs +736 -0
  137. package/bin/lib/tech-debt-analyzer.cjs +309 -0
  138. package/bin/lib/temp-file.cjs +239 -0
  139. package/bin/lib/template.cjs +223 -0
  140. package/bin/lib/test-file-lock.cjs +112 -0
  141. package/bin/lib/test-graceful.cjs +93 -0
  142. package/bin/lib/test-logger.cjs +60 -0
  143. package/bin/lib/test-safe-exec.cjs +38 -0
  144. package/bin/lib/test-safe-path.cjs +33 -0
  145. package/bin/lib/test-temp-file.cjs +125 -0
  146. package/bin/lib/tier-manager.cjs +428 -0
  147. package/bin/lib/timeout-exec.cjs +63 -0
  148. package/bin/lib/tradeoff-analyzer.cjs +284 -0
  149. package/bin/lib/url-fetch.cjs +170 -0
  150. package/bin/lib/verify.cjs +863 -0
  151. package/bin/update.js +217 -214
  152. package/commands/deploy.cjs +53 -0
  153. package/commands/ez/add-tests.md +41 -41
  154. package/commands/ez/audit-milestone.md +36 -36
  155. package/commands/ez/complete-milestone.md +136 -136
  156. package/commands/ez/discuss-phase.md +90 -90
  157. package/commands/ez/execute-phase.md +52 -41
  158. package/commands/ez/help.md +22 -22
  159. package/commands/ez/map-codebase.md +71 -71
  160. package/commands/ez/new-milestone.md +44 -44
  161. package/commands/ez/new-project.md +51 -42
  162. package/commands/ez/plan-phase.md +53 -45
  163. package/commands/ez/progress.md +36 -24
  164. package/commands/ez/quick.md +45 -45
  165. package/commands/ez/resume-work.md +40 -40
  166. package/commands/ez/run-phase.md +580 -0
  167. package/commands/ez/settings.md +36 -36
  168. package/commands/ez/update.md +37 -37
  169. package/commands/ez/verify-work.md +402 -38
  170. package/commands/health-check.cjs +44 -0
  171. package/commands/rollback.cjs +47 -0
  172. package/ez-agents/bin/ez-tools.cjs +1692 -716
  173. package/ez-agents/bin/guards/autonomy-guard.cjs +346 -0
  174. package/ez-agents/bin/guards/context-budget-guard.cjs +247 -0
  175. package/ez-agents/bin/guards/hallucination-guard.cjs +271 -0
  176. package/ez-agents/bin/guards/hidden-state-guard.cjs +182 -0
  177. package/ez-agents/bin/guards/team-overhead-guard.cjs +266 -0
  178. package/ez-agents/bin/guards/tool-sprawl-guard.cjs +271 -0
  179. package/ez-agents/bin/lib/analytics/analytics-collector.cjs +86 -0
  180. package/ez-agents/bin/lib/analytics/analytics-reporter.cjs +130 -0
  181. package/ez-agents/bin/lib/analytics/cohort-analyzer.cjs +138 -0
  182. package/ez-agents/bin/lib/analytics/funnel-analyzer.cjs +147 -0
  183. package/ez-agents/bin/lib/analytics/nps-tracker.cjs +147 -0
  184. package/ez-agents/bin/lib/archetype-detector.cjs +289 -0
  185. package/ez-agents/bin/lib/audit-exec.cjs +166 -167
  186. package/ez-agents/bin/lib/auth.cjs +176 -176
  187. package/ez-agents/bin/lib/backup-service.cjs +422 -0
  188. package/ez-agents/bin/lib/bdd-validator.cjs +622 -0
  189. package/ez-agents/bin/lib/business-flow-mapper.cjs +429 -0
  190. package/ez-agents/bin/lib/code-complexity-analyzer.cjs +360 -0
  191. package/ez-agents/bin/lib/codebase-analyzer.cjs +241 -0
  192. package/ez-agents/bin/lib/commands.cjs +685 -685
  193. package/ez-agents/bin/lib/config.cjs +41 -1
  194. package/ez-agents/bin/lib/constraint-extractor.cjs +526 -0
  195. package/ez-agents/bin/lib/content-scanner.cjs +238 -0
  196. package/ez-agents/bin/lib/context-cache.cjs +154 -0
  197. package/ez-agents/bin/lib/context-errors.cjs +71 -0
  198. package/ez-agents/bin/lib/context-manager.cjs +220 -0
  199. package/ez-agents/bin/lib/core.cjs +507 -512
  200. package/ez-agents/bin/lib/cost-tracker.cjs +243 -0
  201. package/ez-agents/bin/lib/crash-recovery.cjs +172 -0
  202. package/ez-agents/bin/lib/dependency-graph.cjs +319 -0
  203. package/ez-agents/bin/lib/deploy/deploy-audit-log.cjs +76 -0
  204. package/ez-agents/bin/lib/deploy/deploy-detector.cjs +69 -0
  205. package/ez-agents/bin/lib/deploy/deploy-env-manager.cjs +109 -0
  206. package/ez-agents/bin/lib/deploy/deploy-health-check.cjs +88 -0
  207. package/ez-agents/bin/lib/deploy/deploy-pre-flight.cjs +57 -0
  208. package/ez-agents/bin/lib/deploy/deploy-rollback.cjs +72 -0
  209. package/ez-agents/bin/lib/deploy/deploy-runner.cjs +97 -0
  210. package/ez-agents/bin/lib/deploy/deploy-status.cjs +74 -0
  211. package/ez-agents/bin/lib/discussion-synthesizer.cjs +458 -0
  212. package/ez-agents/bin/lib/file-access.cjs +207 -0
  213. package/ez-agents/bin/lib/finops/budget-enforcer.cjs +126 -0
  214. package/ez-agents/bin/lib/finops/cost-reporter.cjs +132 -0
  215. package/ez-agents/bin/lib/finops/finops-analyzer.cjs +112 -0
  216. package/ez-agents/bin/lib/finops/spot-manager.cjs +118 -0
  217. package/ez-agents/bin/lib/framework-detector.cjs +396 -0
  218. package/ez-agents/bin/lib/frontmatter.cjs +3 -1
  219. package/ez-agents/bin/lib/gates/README.md +374 -0
  220. package/ez-agents/bin/lib/gates/gate-01-requirement.cjs +303 -0
  221. package/ez-agents/bin/lib/gates/gate-02-architecture.cjs +555 -0
  222. package/ez-agents/bin/lib/gates/gate-03-code.cjs +635 -0
  223. package/ez-agents/bin/lib/gates/gate-04-security.cjs +829 -0
  224. package/ez-agents/bin/lib/git-errors.cjs +83 -0
  225. package/ez-agents/bin/lib/git-utils.cjs +118 -0
  226. package/ez-agents/bin/lib/git-workflow-engine.cjs +1157 -0
  227. package/ez-agents/bin/lib/health-check.cjs +162 -162
  228. package/ez-agents/bin/lib/index.cjs +40 -2
  229. package/ez-agents/bin/lib/init.cjs +0 -2
  230. package/ez-agents/bin/lib/lockfile-validator.cjs +227 -0
  231. package/ez-agents/bin/lib/log-rotation.cjs +71 -0
  232. package/ez-agents/bin/lib/logger.cjs +99 -154
  233. package/ez-agents/bin/lib/memory-compression.cjs +256 -0
  234. package/ez-agents/bin/lib/package-manager-detector.cjs +203 -0
  235. package/ez-agents/bin/lib/package-manager-executor.cjs +385 -0
  236. package/ez-agents/bin/lib/package-manager-service.cjs +216 -0
  237. package/ez-agents/bin/lib/perf/api-monitor.cjs +88 -0
  238. package/ez-agents/bin/lib/perf/db-optimizer.cjs +78 -0
  239. package/ez-agents/bin/lib/perf/frontend-performance.cjs +56 -0
  240. package/ez-agents/bin/lib/perf/perf-analyzer.cjs +77 -0
  241. package/ez-agents/bin/lib/perf/perf-baseline.cjs +102 -0
  242. package/ez-agents/bin/lib/perf/perf-reporter.cjs +117 -0
  243. package/ez-agents/bin/lib/perf/regression-detector.cjs +92 -0
  244. package/ez-agents/bin/lib/project-reporter.cjs +502 -0
  245. package/ez-agents/bin/lib/quality-gate.cjs +332 -0
  246. package/ez-agents/bin/lib/recovery-manager.cjs +98 -0
  247. package/ez-agents/bin/lib/release-validator.cjs +617 -0
  248. package/ez-agents/bin/lib/safe-exec.cjs +128 -214
  249. package/ez-agents/bin/lib/security-errors.cjs +62 -0
  250. package/ez-agents/bin/lib/session-chain.cjs +304 -0
  251. package/ez-agents/bin/lib/session-errors.cjs +81 -0
  252. package/ez-agents/bin/lib/session-export.cjs +251 -0
  253. package/ez-agents/bin/lib/session-import.cjs +262 -0
  254. package/ez-agents/bin/lib/session-manager.cjs +280 -0
  255. package/ez-agents/bin/lib/skill-context.cjs +148 -0
  256. package/ez-agents/bin/lib/skill-matcher.cjs +236 -0
  257. package/ez-agents/bin/lib/skill-registry.cjs +341 -0
  258. package/ez-agents/bin/lib/skill-resolver.cjs +449 -0
  259. package/ez-agents/bin/lib/skill-triggers.cjs +90 -0
  260. package/ez-agents/bin/lib/skill-validator.cjs +270 -0
  261. package/ez-agents/bin/lib/skill-versioning.cjs +355 -0
  262. package/ez-agents/bin/lib/stack-detector.cjs +399 -0
  263. package/ez-agents/bin/lib/tech-debt-analyzer.cjs +309 -0
  264. package/ez-agents/bin/lib/tier-manager.cjs +428 -0
  265. package/ez-agents/bin/lib/tradeoff-analyzer.cjs +284 -0
  266. package/ez-agents/bin/lib/url-fetch.cjs +170 -0
  267. package/ez-agents/bin/lib/verify.cjs +863 -863
  268. package/ez-agents/references/decimal-phase-calculation.md +65 -65
  269. package/ez-agents/references/git-integration.md +248 -248
  270. package/ez-agents/references/git-planning-commit.md +38 -38
  271. package/ez-agents/references/metrics-schema.md +118 -0
  272. package/ez-agents/references/model-profile-resolution.md +34 -34
  273. package/ez-agents/references/model-profiles.md +93 -93
  274. package/ez-agents/references/phase-argument-parsing.md +61 -61
  275. package/ez-agents/references/planning-config.md +340 -200
  276. package/ez-agents/references/tier-strategy.md +103 -0
  277. package/ez-agents/references/ui-brand.md +160 -160
  278. package/ez-agents/references/verification-patterns.md +612 -612
  279. package/ez-agents/templates/DEBUG.md +164 -164
  280. package/ez-agents/templates/UAT.md +247 -247
  281. package/ez-agents/templates/agent-output-format.md +404 -0
  282. package/ez-agents/templates/bdd-feature.md +173 -0
  283. package/ez-agents/templates/codebase/architecture.md +255 -255
  284. package/ez-agents/templates/codebase/structure.md +285 -285
  285. package/ez-agents/templates/copilot-instructions.md +7 -7
  286. package/ez-agents/templates/debug-subagent-prompt.md +91 -91
  287. package/ez-agents/templates/discovery.md +146 -146
  288. package/ez-agents/templates/discussion.md +68 -0
  289. package/ez-agents/templates/handoff-protocol.md +294 -0
  290. package/ez-agents/templates/incident-runbook.md +205 -0
  291. package/ez-agents/templates/mode-workflow-templates.md +301 -0
  292. package/ez-agents/templates/phase-prompt.md +610 -610
  293. package/ez-agents/templates/planner-subagent-prompt.md +117 -117
  294. package/ez-agents/templates/project.md +184 -184
  295. package/ez-agents/templates/release-checklist.md +136 -0
  296. package/ez-agents/templates/research.md +552 -552
  297. package/ez-agents/templates/rollback-plan.md +201 -0
  298. package/ez-agents/templates/security-user-setup.md +244 -0
  299. package/ez-agents/templates/skill-validation-rules.md +476 -0
  300. package/ez-agents/templates/state.md +180 -176
  301. package/ez-agents/templates/summary-complex.md +59 -59
  302. package/ez-agents/tests/gates/gate-01-02.test.cjs +812 -0
  303. package/ez-agents/tests/gates/gate-03-04.test.cjs +762 -0
  304. package/ez-agents/tests/gates/gate-05-validator.test.cjs +145 -0
  305. package/ez-agents/tests/gates/gate-06-docs-validator.test.cjs +244 -0
  306. package/ez-agents/tests/gates/gate-07-release-validator.test.cjs +219 -0
  307. package/ez-agents/tests/guards/context-budget-guard.test.cjs +145 -0
  308. package/ez-agents/tests/guards/edge-case-guards.test.cjs +238 -0
  309. package/ez-agents/tests/guards/hallucination-guard.test.cjs +124 -0
  310. package/ez-agents/workflows/audit-milestone.md +1 -1
  311. package/ez-agents/workflows/autonomous.md +131 -30
  312. package/ez-agents/workflows/complete-milestone.md +1 -1
  313. package/ez-agents/workflows/discuss-phase.md +1 -1
  314. package/ez-agents/workflows/execute-phase.md +169 -3
  315. package/ez-agents/workflows/help.md +86 -133
  316. package/ez-agents/workflows/hotfix.md +291 -0
  317. package/ez-agents/workflows/new-milestone.md +340 -11
  318. package/ez-agents/workflows/new-project.md +294 -318
  319. package/ez-agents/workflows/plan-phase.md +22 -40
  320. package/ez-agents/workflows/progress.md +15 -25
  321. package/ez-agents/workflows/release.md +253 -0
  322. package/ez-agents/workflows/resume-session.md +215 -0
  323. package/ez-agents/workflows/run-phase.md +531 -0
  324. package/ez-agents/workflows/settings.md +2 -35
  325. package/hooks/dist/ez-check-update.js +81 -81
  326. package/hooks/dist/ez-context-monitor.js +148 -141
  327. package/hooks/dist/ez-statusline.js +115 -115
  328. package/package.json +78 -64
  329. package/scripts/fix-qwen-installation.js +144 -144
  330. package/agents/ez-integration-checker.md +0 -443
  331. package/agents/ez-nyquist-auditor.md +0 -176
  332. package/agents/ez-plan-checker.md +0 -706
  333. package/agents/ez-research-synthesizer.md +0 -247
  334. package/agents/ez-ui-auditor.md +0 -439
  335. package/agents/ez-ui-checker.md +0 -300
  336. package/agents/ez-ui-researcher.md +0 -353
  337. package/commands/ez/add-phase.md +0 -43
  338. package/commands/ez/add-todo.md +0 -47
  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/health.md +0 -22
  345. package/commands/ez/insert-phase.md +0 -32
  346. package/commands/ez/join-discord.md +0 -18
  347. package/commands/ez/list-phase-assumptions.md +0 -46
  348. package/commands/ez/pause-work.md +0 -38
  349. package/commands/ez/plan-milestone-gaps.md +0 -34
  350. package/commands/ez/reapply-patches.md +0 -124
  351. package/commands/ez/remove-phase.md +0 -31
  352. package/commands/ez/research-phase.md +0 -190
  353. package/commands/ez/set-profile.md +0 -34
  354. package/commands/ez/stats.md +0 -18
  355. package/commands/ez/ui-phase.md +0 -34
  356. package/commands/ez/ui-review.md +0 -32
  357. package/commands/ez/validate-phase.md +0 -35
  358. package/ez-agents/templates/UI-SPEC.md +0 -100
  359. package/ez-agents/templates/VALIDATION.md +0 -76
  360. package/ez-agents/templates/context.md +0 -352
  361. package/ez-agents/templates/verification-report.md +0 -322
  362. package/ez-agents/workflows/research-phase.md +0 -74
  363. package/ez-agents/workflows/ui-phase.md +0 -290
  364. package/ez-agents/workflows/ui-review.md +0 -157
  365. package/ez-agents/workflows/validate-phase.md +0 -167
@@ -40,6 +40,28 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
40
40
 
41
41
  **Existing artifacts from init:** `has_research`, `has_plans`, `plan_count`.
42
42
 
43
+ <auto_invoke>
44
+ Check for --no-auto in ARGUMENTS. If not present:
45
+
46
+ ```bash
47
+ SMART_ORCH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get smart_orchestration.enabled 2>/dev/null || echo "true")
48
+ ```
49
+ If `SMART_ORCH` is `"false"` or `--no-auto` is in ARGUMENTS: skip, proceed to step 3.
50
+
51
+ **Conditional discuss-phase for sensitive areas:**
52
+ Read phase name and objective from the phase arguments and roadmap. Check if they contain any of these sensitive keywords (case-insensitive):
53
+ `auth`, `login`, `jwt`, `oauth`, `database`, `migration`, `schema`, `payment`, `billing`, `security`
54
+
55
+ If YES and no CONTEXT.md exists in the phase directory and `--skip-discussion` is NOT in ARGUMENTS:
56
+ → Display: `[auto] Sensitive area detected — running pre-flight discussion...`
57
+ → Invoke: Skill(ez:discuss-phase, args: phase_number + " --auto")
58
+ → Continue to step 3.
59
+
60
+ If NO match OR CONTEXT.md already exists OR `--skip-discussion` present: skip silently, proceed to step 3.
61
+
62
+ **Detection rule:** Only trigger if phase name or goal in ROADMAP.md contains one of the explicit keywords above. False-negative is safer than false-positive — when uncertain, skip.
63
+ </auto_invoke>
64
+
43
65
  ## 3. Validate Phase
44
66
 
45
67
  ```bash
@@ -259,46 +281,6 @@ test -f "${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md" && echo "VALIDATION_CREATED
259
281
 
260
282
  **If not found:** Warn and continue — plans may fail Dimension 8.
261
283
 
262
- ## 5.6. UI Design Contract Gate
263
-
264
- > Skip if `workflow.ui_phase` is explicitly `false` AND `workflow.ui_safety_gate` is explicitly `false` in `.planning/config.json`. If keys are absent, treat as enabled.
265
-
266
- ```bash
267
- UI_PHASE_CFG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get workflow.ui_phase 2>/dev/null || echo "true")
268
- UI_GATE_CFG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get workflow.ui_safety_gate 2>/dev/null || echo "true")
269
- ```
270
-
271
- **If both are `false`:** Skip to step 6.
272
-
273
- Check if phase has frontend indicators:
274
-
275
- ```bash
276
- PHASE_SECTION=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" roadmap get-phase "${PHASE}" 2>/dev/null)
277
- echo "$PHASE_SECTION" | grep -iE "UI|interface|frontend|component|layout|page|screen|view|form|dashboard|widget" > /dev/null 2>&1
278
- HAS_UI=$?
279
- ```
280
-
281
- **If `HAS_UI` is 0 (frontend indicators found):**
282
-
283
- Check for existing UI-SPEC:
284
- ```bash
285
- UI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-UI-SPEC.md 2>/dev/null | head -1)
286
- ```
287
-
288
- **If UI-SPEC.md found:** Set `UI_SPEC_PATH=$UI_SPEC_FILE`. Display: `Using UI design contract: ${UI_SPEC_PATH}`
289
-
290
- **If UI-SPEC.md missing AND `UI_GATE_CFG` is `true`:**
291
-
292
- Use AskUserQuestion:
293
- - header: "UI Design Contract"
294
- - question: "Phase {N} has frontend indicators but no UI-SPEC.md. Generate a design contract before planning?"
295
- - options:
296
- - "Generate UI-SPEC first" → Display: "Run `/ez:ui-phase {N}` then re-run `/ez:plan-phase {N}`". Exit workflow.
297
- - "Continue without UI-SPEC" → Continue to step 6.
298
- - "Not a frontend phase" → Continue to step 6.
299
-
300
- **If `HAS_UI` is 1 (no frontend indicators):** Skip silently to step 6.
301
-
302
284
  ## 6. Check Existing Plans
303
285
 
304
286
  ```bash
@@ -8,6 +8,19 @@ Read all files referenced by the invoking prompt's execution_context before star
8
8
 
9
9
  <process>
10
10
 
11
+ <auto_invoke>
12
+ Check for --no-auto in ARGUMENTS. If not present, also check:
13
+ ```bash
14
+ SMART_ORCH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get smart_orchestration.enabled 2>/dev/null || echo "true")
15
+ ```
16
+ If `SMART_ORCH` is not `"false"` and `--no-auto` is not in ARGUMENTS:
17
+ ```bash
18
+ HEALTH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" health --json 2>/dev/null)
19
+ ```
20
+ - If FAIL: display a warning in the output report but do NOT stop (progress continues)
21
+ - If PASS: silent (do not show to user)
22
+ </auto_invoke>
23
+
11
24
  <step name="init_context">
12
25
  **Load progress context (paths only):**
13
26
 
@@ -219,16 +232,10 @@ Check if `{phase_num}-CONTEXT.md` exists in phase directory.
219
232
 
220
233
  **Phase {N}: {Name}** — {Goal from ROADMAP.md}
221
234
 
222
- `/ez:discuss-phase {phase}` — gather context and clarify approach
235
+ `/ez:discuss-phase {phase}`
223
236
 
224
237
  <sub>`/clear` first → fresh context window</sub>
225
238
 
226
- ---
227
-
228
- **Also available:**
229
- - `/ez:plan-phase {phase}` — skip discussion, plan directly
230
- - `/ez:list-phase-assumptions {phase}` — see Claude's assumptions
231
-
232
239
  ---
233
240
  ```
234
241
 
@@ -249,12 +256,6 @@ UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
249
256
 
250
257
  <sub>`/clear` first → fresh context window</sub>
251
258
 
252
- ---
253
-
254
- **Also available:**
255
- - `/ez:execute-phase {phase}` — execute phase plans
256
- - `/ez:verify-work {phase}` — run more UAT testing
257
-
258
259
  ---
259
260
  ```
260
261
 
@@ -292,16 +293,10 @@ Read ROADMAP.md to get the next phase's name and goal.
292
293
 
293
294
  **Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
294
295
 
295
- `/ez:discuss-phase {Z+1}` — gather context and clarify approach
296
+ `/ez:discuss-phase {Z+1}`
296
297
 
297
298
  <sub>`/clear` first → fresh context window</sub>
298
299
 
299
- ---
300
-
301
- **Also available:**
302
- - `/ez:plan-phase {Z+1}` — skip discussion, plan directly
303
- - `/ez:verify-work {Z}` — user acceptance test before continuing
304
-
305
300
  ---
306
301
  ```
307
302
 
@@ -324,11 +319,6 @@ All {N} phases finished!
324
319
 
325
320
  <sub>`/clear` first → fresh context window</sub>
326
321
 
327
- ---
328
-
329
- **Also available:**
330
- - `/ez:verify-work` — user acceptance test before completing milestone
331
-
332
322
  ---
333
323
  ```
334
324
 
@@ -0,0 +1,253 @@
1
+ <purpose>
2
+ Orchestrate tier-aware production releases. Validates state, runs security gates, evaluates tier checklist, creates release branch, generates changelog, bumps version, writes rollback plan, and tags the release.
3
+ </purpose>
4
+
5
+ <process>
6
+
7
+ <auto_invoke>
8
+ Check for --no-auto in ARGUMENTS. If present, skip this section and proceed to step 1.
9
+
10
+ ```bash
11
+ SMART_ORCH=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" config-get smart_orchestration.enabled 2>/dev/null || echo "true")
12
+ ```
13
+ If `SMART_ORCH` is `"false"`: skip, proceed to step 1.
14
+
15
+ **Tier-based pre-flight:**
16
+ Parse the tier argument from ARGUMENTS (mvp / medium / enterprise).
17
+
18
+ - **mvp**: No pre-flight auto-invocations. Proceed directly to step 1.
19
+ - **medium**: Check if a VERIFICATION.md from verify-work already exists for the current phase. If not:
20
+ → Display: `[auto] Running verify-work before medium release...`
21
+ → Invoke: Skill(ez:verify-work)
22
+ → Continue to step 1.
23
+ - **enterprise**: Run in sequence:
24
+ → Display: `[auto] Running verify-work...`
25
+ → Invoke: Skill(ez:verify-work)
26
+ → Display: `[auto] Running audit-milestone...`
27
+ → Invoke: Skill(ez:audit-milestone)
28
+ → Display: `[auto] Running arch-review...`
29
+ → Invoke: Skill(ez:arch-review)
30
+ → Continue to step 1.
31
+
32
+ All auto-invocations are prefixed with `[auto]` in output. Override with `--no-auto` to skip all pre-invocations.
33
+ </auto_invoke>
34
+
35
+ ## 1. Initialize
36
+
37
+ Parse $ARGUMENTS:
38
+ - Command: `release` or `preflight`
39
+ - Tier: `mvp`, `medium`, or `enterprise`
40
+ - Version: semver string (e.g., `1.0.0`)
41
+
42
+ **If missing tier or version (for release command):**
43
+ ```
44
+ Usage: /ez:release <tier> <version>
45
+ /ez:release preflight <tier>
46
+
47
+ Examples:
48
+ /ez:release mvp v1.0.0
49
+ /ez:release medium v1.5.0
50
+ /ez:release enterprise v2.0.0
51
+ /ez:release preflight medium
52
+ ```
53
+ Exit.
54
+
55
+ **Normalize version:** Strip leading `v` if present (e.g., `v1.0.0` → `1.0.0`).
56
+
57
+ **Load tier config:**
58
+ ```bash
59
+ TIER_CONFIG=$(node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" tier-config "${TARGET_TIER}" 2>/dev/null)
60
+ ```
61
+
62
+ Display banner:
63
+ ```
64
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
65
+ EZ ► RELEASE v{version} — {TIER} TIER
66
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
67
+ ```
68
+
69
+ ## 2. Validate Semver
70
+
71
+ ```bash
72
+ echo "${VERSION}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$"
73
+ ```
74
+
75
+ **If invalid:** Error — "Version must be semver (X.Y.Z). Got: {version}"
76
+
77
+ ## 3. Check Current State
78
+
79
+ ```bash
80
+ # Uncommitted changes
81
+ git status --short
82
+
83
+ # Current branch
84
+ git branch --show-current
85
+
86
+ # Current version
87
+ CURRENT=$(node -e "console.log(require('./package.json').version)" 2>/dev/null || echo "0.0.0")
88
+ ```
89
+
90
+ **If uncommitted changes:** Error — "Commit or stash all changes before releasing"
91
+
92
+ ## 4. Run Security Gates
93
+
94
+ ```bash
95
+ echo "Running security gates..."
96
+
97
+ # Gate 1: No secrets in tracked files
98
+ SECRET_HITS=$(git grep -i -E "(api[_-]?key|password|secret)['\"]?\s*[=:]\s*['\"]?[a-zA-Z0-9+/]{20,}" HEAD 2>/dev/null | \
99
+ grep -v "example\|placeholder\|your-key\|process\.env\|env\.\|config\.\|getenv" | wc -l)
100
+
101
+ # Gate 2: npm audit
102
+ npm audit --audit-level=critical 2>/dev/null
103
+ AUDIT_EXIT=$?
104
+
105
+ # Gate 3: Production TODOs
106
+ PROD_TODOS=$(grep -rn "TODO\|FIXME\|HACK" src/ --include="*.ts" --include="*.js" --include="*.py" 2>/dev/null | \
107
+ grep -v "test\|spec\|__test__\|\.test\." | wc -l)
108
+
109
+ # Gate 4: .env in .gitignore
110
+ grep -q "^\.env" .gitignore 2>/dev/null && ENV_SAFE=true || ENV_SAFE=false
111
+ ```
112
+
113
+ Security gate results:
114
+ ```
115
+ Security Gates:
116
+ ✓/✗ No secrets in committed files ({SECRET_HITS} found)
117
+ ✓/✗ npm audit clean (exit {AUDIT_EXIT})
118
+ ✓/✗ No production TODOs ({PROD_TODOS} found)
119
+ ✓/✗ .env in .gitignore
120
+ ```
121
+
122
+ **Hard stop:** If SECRET_HITS > 0 → "BLOCKED: Secrets found in committed files. Remove before releasing."
123
+ **Hard stop:** If AUDIT_EXIT is non-zero → "BLOCKED: Critical vulnerabilities found. Run npm audit fix."
124
+
125
+ ## 5. Run Tier Checklist
126
+
127
+ Load checklist template from `~/.claude/ez-agents/templates/release-checklist.md`.
128
+
129
+ Run automated checks for the target tier:
130
+
131
+ ```bash
132
+ node "$HOME/.claude/ez-agents/bin/ez-tools.cjs" release check-tier "${TARGET_TIER}"
133
+ ```
134
+
135
+ Display checklist results with pass/fail/skip for each item.
136
+
137
+ **If `preflight` command:** Display checklist results and exit here.
138
+
139
+ ## 6. Check Coverage (if test coverage available)
140
+
141
+ ```bash
142
+ # Try to find coverage report
143
+ COVERAGE=$(cat coverage/coverage-summary.json 2>/dev/null | jq '.total.lines.pct // 0')
144
+ ```
145
+
146
+ Coverage thresholds by tier:
147
+ - mvp: 60%
148
+ - medium: 80%
149
+ - enterprise: 95%
150
+
151
+ **If below threshold:** Warning (not hard blocker — tests may not be configured).
152
+
153
+ ## 7. Spawn Release Agent
154
+
155
+ ```
156
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
157
+ ◆ Spawning release agent...
158
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
159
+ ```
160
+
161
+ Release agent prompt:
162
+
163
+ ```markdown
164
+ <objective>
165
+ Create a {TARGET_TIER} tier release v{VERSION}.
166
+ </objective>
167
+
168
+ <release_config>
169
+ Tier: {TARGET_TIER}
170
+ Version: {VERSION}
171
+ Current version: {CURRENT_VERSION}
172
+ </release_config>
173
+
174
+ <files_to_read>
175
+ - package.json (current version and scripts)
176
+ - CHANGELOG.md (if exists — append new entry)
177
+ - .planning/config.json (release tier config)
178
+ - ~/.claude/ez-agents/templates/release-checklist.md (checklist template)
179
+ - ~/.claude/ez-agents/templates/rollback-plan.md (rollback template)
180
+ </files_to_read>
181
+
182
+ <security_gate_results>
183
+ {security gate results from step 4}
184
+ </security_gate_results>
185
+
186
+ <checklist_results>
187
+ {checklist results from step 5}
188
+ </checklist_results>
189
+
190
+ <tasks>
191
+ 1. Create release branch (per tier: trunk | github-flow | gitflow)
192
+ 2. Generate changelog from git log since last tag
193
+ 3. Bump version in package.json to {VERSION}
194
+ 4. Create rollback plan in .planning/releases/v{VERSION}-ROLLBACK-PLAN.md
195
+ 5. Commit release artifacts
196
+ 6. Tag v{VERSION}
197
+ 7. Report production readiness score
198
+ </tasks>
199
+ ```
200
+
201
+ ```
202
+ Task(
203
+ prompt=release_prompt,
204
+ subagent_type="ez-release-agent",
205
+ model="{planner_model from init}"
206
+ )
207
+ ```
208
+
209
+ ## 8. Handle Agent Return
210
+
211
+ **`## RELEASE COMPLETE`:**
212
+
213
+ ```
214
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
215
+ EZ ► RELEASE v{version} READY ✓
216
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
217
+
218
+ {agent summary}
219
+
220
+ ### To Ship
221
+ git push origin {branch} && git push origin v{version}
222
+
223
+ ### Rollback Plan
224
+ .planning/releases/v{version}-ROLLBACK-PLAN.md
225
+ ```
226
+
227
+ **If blocked:**
228
+ ```
229
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
+ EZ ► RELEASE BLOCKED
231
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
232
+
233
+ {blocker details}
234
+
235
+ Fix the above issues then re-run: /ez:release {tier} v{version}
236
+ ```
237
+
238
+ </process>
239
+
240
+ <success_criteria>
241
+ - [ ] Tier and version validated
242
+ - [ ] Uncommitted changes check passed
243
+ - [ ] All security gates run (fail on hard blockers)
244
+ - [ ] Tier checklist evaluated
245
+ - [ ] Coverage checked against tier threshold
246
+ - [ ] ez-release-agent spawned with full context
247
+ - [ ] Release branch created per tier strategy
248
+ - [ ] Changelog updated
249
+ - [ ] Version bumped in package.json
250
+ - [ ] Rollback plan written
251
+ - [ ] Tag created
252
+ - [ ] User sees push instructions and production readiness score
253
+ </success_criteria>
@@ -0,0 +1,215 @@
1
+ # Workflow: resume-session
2
+
3
+ **Purpose:** Resume work from a previous session with full context restoration
4
+
5
+ **Related Commands:** `/ez:resume`
6
+
7
+ ---
8
+
9
+ ## Workflow Steps
10
+
11
+ ### 1. Load and Validate Session
12
+
13
+ ```
14
+ SessionManager mgr = new SessionManager();
15
+ Session session = sessionId ? mgr.loadSession(sessionId) : mgr.getLastSession();
16
+
17
+ if (!session) {
18
+ output("No previous sessions found. Start a new session with your work.");
19
+ exit;
20
+ }
21
+
22
+ logger.info('Resuming session', { sessionId: session.metadata.session_id });
23
+ ```
24
+
25
+ ### 2. Compare with Current State
26
+
27
+ ```
28
+ Load current STATE.md
29
+ Extract current phase, plan, incomplete tasks from STATE.md
30
+
31
+ sessionPhase = session.state.current_phase
32
+ sessionPlan = session.state.current_plan
33
+ statePhase = STATE.md.current_phase
34
+ statePlan = STATE.md.current_plan
35
+
36
+ needsReconciliation = (sessionPhase !== statePhase) || (sessionPlan !== statePlan)
37
+ ```
38
+
39
+ ### 3. If Reconciliation Needed
40
+
41
+ **Display Warning:**
42
+ ```
43
+ ⚠️ Session state differs from current project state
44
+
45
+ Session shows:
46
+ - Phase: {session.state.current_phase}
47
+ - Plan: {session.state.current_plan}
48
+
49
+ Current STATE.md shows:
50
+ - Phase: {state.current_phase}
51
+ - Plan: {state.current_plan}
52
+ ```
53
+
54
+ **Offer Options:**
55
+ ```
56
+ How would you like to reconcile?
57
+
58
+ 1. Use session state (overwrite STATE.md)
59
+ 2. Use current state (ignore session state)
60
+ 3. Manual review (show both, let user decide)
61
+ ```
62
+
63
+ **Handle Choice:**
64
+ - "1": Update STATE.md with session.state values
65
+ - "2": Keep STATE.md unchanged, use session context only
66
+ - "3": Show side-by-side comparison, let user edit
67
+
68
+ ### 4. Load Context
69
+
70
+ ```
71
+ // Load recent transcript for context
72
+ transcript = session.context.transcript
73
+ if (Array.isArray(transcript)) {
74
+ recentMessages = transcript.slice(-20) // Last 20 messages
75
+ }
76
+
77
+ // Load tasks
78
+ completedTasks = session.context.tasks.filter(t => t.status === 'completed')
79
+ incompleteTasks = session.state.incomplete_tasks
80
+
81
+ // Load decisions
82
+ decisions = session.context.decisions
83
+
84
+ // Load file changes
85
+ fileChanges = session.context.file_changes
86
+ ```
87
+
88
+ ### 5. Update STATE.md
89
+
90
+ ```
91
+ ez-tools state record-session \
92
+ --stopped-at "{session.state.last_action}" \
93
+ --resume-file "{session.metadata.session_id}"
94
+
95
+ // Update phase/plan if using session state
96
+ if (useSessionState) {
97
+ ez-tools state update "Current Phase" "{session.metadata.phase}"
98
+ ez-tools state update "Current Plan" "{session.metadata.plan}"
99
+ }
100
+ ```
101
+
102
+ ### 6. Prepare for Continuation
103
+
104
+ ```
105
+ // Identify incomplete work
106
+ incompleteTasks = session.state.incomplete_tasks || []
107
+
108
+ // Identify next action
109
+ nextAction = session.state.next_recommended_action
110
+
111
+ // Load relevant files
112
+ if (session.metadata.phase && session.metadata.plan) {
113
+ planFile = `.planning/phases/${session.metadata.phase}/.../${session.metadata.plan}-PLAN.md`
114
+ summaryFile = `.planning/phases/${session.metadata.phase}/.../${session.metadata.plan}-PLAN-SUMMARY.md`
115
+
116
+ if (fileExists(planFile)) {
117
+ loadFile(planFile)
118
+ }
119
+ }
120
+
121
+ // Load incomplete task files
122
+ for (task of incompleteTasks) {
123
+ if (task.file) {
124
+ loadFile(task.file)
125
+ }
126
+ }
127
+ ```
128
+
129
+ ### 7. Output Resumption Confirmation
130
+
131
+ ```
132
+ ╔══════════════════════════════════════════════════════════════╗
133
+ ║ SESSION RESUMED ║
134
+ ╠══════════════════════════════════════════════════════════════╣
135
+ ║ Session: {session.metadata.session_id} ║
136
+ ║ Phase: {session.metadata.phase} ║
137
+ ║ Plan: {session.metadata.plan} ║
138
+ ║ Next action: {session.state.next_recommended_action} ║
139
+ ╚══════════════════════════════════════════════════════════════╝
140
+
141
+ Context loaded:
142
+ - {incompleteTasks.length} incomplete tasks
143
+ - {decisions.length} decisions recorded
144
+ - {fileChanges.length} file changes
145
+
146
+ Ready to continue. What would you like to do?
147
+
148
+ 1. Continue with recommended action
149
+ 2. Review incomplete tasks
150
+ 3. View session transcript
151
+ 4. Something else
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Error Handling
157
+
158
+ ### Session Not Found
159
+ ```
160
+ if (!session) {
161
+ output(`Session not found: ${sessionId}`);
162
+ output("Use /ez:list-sessions to see available sessions.");
163
+ exit;
164
+ }
165
+ ```
166
+
167
+ ### Corrupted Session File
168
+ ```
169
+ try {
170
+ session = JSON.parse(content);
171
+ } catch (err) {
172
+ logger.error('Corrupted session file', { sessionId, error: err.message });
173
+ output(`Error: Session file is corrupted: ${sessionId}`);
174
+ output("Consider deleting the file or contacting support.");
175
+ exit;
176
+ }
177
+ ```
178
+
179
+ ### Broken Chain Links
180
+ ```
181
+ if (session.metadata.session_chain) {
182
+ for (chainId of session.metadata.session_chain) {
183
+ if (!mgr.loadSession(chainId)) {
184
+ warnings.push(`Missing linked session: ${chainId}`);
185
+ }
186
+ }
187
+
188
+ if (warnings.length > 0) {
189
+ output("⚠️ Session chain has broken links:");
190
+ for (warning of warnings) {
191
+ output(` - ${warning}`);
192
+ }
193
+ }
194
+ }
195
+ ```
196
+
197
+ ---
198
+
199
+ ## State Transitions
200
+
201
+ **Before:** Session ended, STATE.md shows stopped state
202
+
203
+ **After:** Session resumed, STATE.md updated with:
204
+ - `Last session`: Current timestamp
205
+ - `Resume file`: Session ID
206
+ - `Stopped at`: Last action from session
207
+
208
+ ---
209
+
210
+ ## Related Files
211
+
212
+ - `ez-agents/bin/lib/session-manager.cjs` - Session loading
213
+ - `ez-agents/bin/lib/session-chain.cjs` - Chain navigation
214
+ - `ez-agents/bin/lib/state.cjs` - STATE.md updates
215
+ - `.planning/sessions/` - Session storage directory