@lumenflow/cli 3.1.1 → 3.1.3

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 (389) hide show
  1. package/README.md +36 -35
  2. package/dist/agent-issues-query.js +13 -8
  3. package/dist/agent-log-issue.js +15 -4
  4. package/dist/agent-session-end.js +15 -4
  5. package/dist/agent-session.js +18 -6
  6. package/dist/backlog-prune.js +1 -1
  7. package/dist/commands/integrate.js +32 -18
  8. package/dist/config-get.js +27 -15
  9. package/dist/config-set.js +104 -37
  10. package/dist/delegation-list.js +1 -1
  11. package/dist/doctor.js +19 -13
  12. package/dist/file-delete.js +1 -1
  13. package/dist/file-edit.js +1 -1
  14. package/dist/file-read.js +1 -1
  15. package/dist/file-write.js +1 -1
  16. package/dist/flow-bottlenecks.js +1 -1
  17. package/dist/flow-report.js +10 -9
  18. package/dist/gates.js +3 -2
  19. package/dist/git-branch.js +1 -1
  20. package/dist/git-diff.js +1 -1
  21. package/dist/git-log.js +1 -1
  22. package/dist/init.js +244 -61
  23. package/dist/initiative-add-wu.js +1 -1
  24. package/dist/initiative-bulk-assign-wus.js +1 -1
  25. package/dist/initiative-create.js +2 -2
  26. package/dist/initiative-edit.js +1 -1
  27. package/dist/initiative-list.js +1 -1
  28. package/dist/initiative-plan.js +1 -3
  29. package/dist/initiative-status.js +47 -6
  30. package/dist/lane-edit.js +19 -10
  31. package/dist/lane-health.js +13 -24
  32. package/dist/lane-lock.js +4 -5
  33. package/dist/lane-setup.js +5 -5
  34. package/dist/lane-status.js +4 -5
  35. package/dist/lane-suggest.js +9 -7
  36. package/dist/lane-validate.js +4 -5
  37. package/dist/lumenflow-upgrade.js +17 -11
  38. package/dist/mem-checkpoint.js +1 -1
  39. package/dist/mem-cleanup.js +6 -23
  40. package/dist/mem-context.js +1 -1
  41. package/dist/mem-create.js +1 -1
  42. package/dist/mem-delete.js +1 -1
  43. package/dist/mem-export.js +1 -1
  44. package/dist/mem-inbox.js +1 -1
  45. package/dist/mem-init.js +1 -1
  46. package/dist/mem-ready.js +1 -1
  47. package/dist/mem-recover.js +1 -1
  48. package/dist/mem-signal.js +1 -1
  49. package/dist/mem-start.js +1 -1
  50. package/dist/mem-summarize.js +8 -7
  51. package/dist/mem-triage.js +7 -5
  52. package/dist/metrics-cli.js +1 -1
  53. package/dist/metrics-snapshot.js +1 -1
  54. package/dist/onboard.js +295 -120
  55. package/dist/orchestrate-init-status.js +12 -7
  56. package/dist/orchestrate-initiative.js +23 -12
  57. package/dist/orchestrate-monitor.js +20 -8
  58. package/dist/pack-scaffold.js +1 -1
  59. package/dist/plan-create.js +1 -3
  60. package/dist/plan-edit.js +1 -3
  61. package/dist/plan-link.js +1 -3
  62. package/dist/plan-promote.js +1 -3
  63. package/dist/release.js +1 -3
  64. package/dist/signal-cleanup.js +4 -18
  65. package/dist/state-bootstrap.js +11 -8
  66. package/dist/state-cleanup.js +5 -19
  67. package/dist/state-doctor.js +213 -9
  68. package/dist/task-claim.js +1 -1
  69. package/dist/validate.js +1 -1
  70. package/dist/workspace-init.js +61 -61
  71. package/dist/wu-block.js +1 -1
  72. package/dist/wu-brief.js +1 -1
  73. package/dist/wu-claim.js +1 -1
  74. package/dist/wu-cleanup.js +1 -1
  75. package/dist/wu-create.js +3 -3
  76. package/dist/wu-delegate.js +1 -1
  77. package/dist/wu-deps.js +1 -1
  78. package/dist/wu-done.js +66 -34
  79. package/dist/wu-edit.js +1 -1
  80. package/dist/wu-infer-lane.js +1 -1
  81. package/dist/wu-preflight.js +1 -1
  82. package/dist/wu-prep.js +1 -1
  83. package/dist/wu-proto.js +1 -1
  84. package/dist/wu-prune.js +1 -1
  85. package/dist/wu-recover.js +1 -1
  86. package/dist/wu-release.js +1 -1
  87. package/dist/wu-repair.js +1 -1
  88. package/dist/wu-sandbox.js +40 -27
  89. package/dist/wu-status.js +1 -1
  90. package/dist/wu-unblock.js +1 -1
  91. package/dist/wu-unlock-lane.js +1 -1
  92. package/dist/wu-validate.js +1 -1
  93. package/package.json +12 -8
  94. package/packs/software-delivery/constants.ts +10 -0
  95. package/packs/software-delivery/extensions.ts +140 -0
  96. package/packs/software-delivery/gate-policies.ts +134 -0
  97. package/packs/software-delivery/index.ts +8 -0
  98. package/packs/software-delivery/manifest-schema.ts +236 -0
  99. package/packs/software-delivery/manifest.ts +417 -0
  100. package/packs/software-delivery/manifest.yaml +711 -0
  101. package/packs/software-delivery/pack-registration.ts +113 -0
  102. package/packs/software-delivery/tool-impl/agent-tools.ts +263 -0
  103. package/packs/software-delivery/tool-impl/delegation-tools.ts +66 -0
  104. package/packs/software-delivery/tool-impl/flow-metrics-tools.ts +219 -0
  105. package/packs/software-delivery/tool-impl/git-runner.ts +113 -0
  106. package/packs/software-delivery/tool-impl/git-tools.ts +316 -0
  107. package/packs/software-delivery/tool-impl/index.ts +15 -0
  108. package/packs/software-delivery/tool-impl/initiative-orchestration-tools.ts +720 -0
  109. package/packs/software-delivery/tool-impl/lane-lock.ts +246 -0
  110. package/packs/software-delivery/tool-impl/memory-tools.ts +415 -0
  111. package/packs/software-delivery/tool-impl/pending-runtime-tools.ts +21 -0
  112. package/packs/software-delivery/tool-impl/runtime-cli-adapter.ts +328 -0
  113. package/packs/software-delivery/tool-impl/runtime-native-tools.ts +687 -0
  114. package/packs/software-delivery/tool-impl/worker-loader.ts +52 -0
  115. package/packs/software-delivery/tool-impl/worktree-tools.ts +46 -0
  116. package/packs/software-delivery/tool-impl/wu-lifecycle-tools.ts +759 -0
  117. package/packs/software-delivery/tools/delegation-tools.ts +23 -0
  118. package/packs/software-delivery/tools/git-tools.ts +55 -0
  119. package/packs/software-delivery/tools/index.ts +8 -0
  120. package/packs/software-delivery/tools/lane-lock-tool.ts +37 -0
  121. package/packs/software-delivery/tools/types.ts +71 -0
  122. package/packs/software-delivery/tools/worktree-tools.ts +49 -0
  123. package/templates/core/LUMENFLOW.md.template +3 -3
  124. package/templates/core/ai/onboarding/agent-invocation-guide.md.template +1 -1
  125. package/templates/core/ai/onboarding/lumenflow-force-usage.md.template +1 -1
  126. package/templates/core/ai/onboarding/quick-ref-commands.md.template +5 -5
  127. package/templates/core/ai/onboarding/starting-prompt.md.template +3 -3
  128. package/templates/core/ai/onboarding/vendor-support.md.template +1 -1
  129. package/templates/core/ai/onboarding/wu-create-checklist.md.template +1 -1
  130. package/dist/agent-issues-query.js.map +0 -1
  131. package/dist/agent-log-issue.js.map +0 -1
  132. package/dist/agent-session-end.js.map +0 -1
  133. package/dist/agent-session.js.map +0 -1
  134. package/dist/backlog-prune.js.map +0 -1
  135. package/dist/cli-entry-point.js +0 -149
  136. package/dist/cli-entry-point.js.map +0 -1
  137. package/dist/commands/integrate.js.map +0 -1
  138. package/dist/commands.js.map +0 -1
  139. package/dist/config-get.js.map +0 -1
  140. package/dist/config-set.js.map +0 -1
  141. package/dist/delegation-list.js.map +0 -1
  142. package/dist/deps-add.js +0 -259
  143. package/dist/deps-add.js.map +0 -1
  144. package/dist/deps-remove.js +0 -105
  145. package/dist/deps-remove.js.map +0 -1
  146. package/dist/docs-sync.js.map +0 -1
  147. package/dist/doctor.js.map +0 -1
  148. package/dist/file-delete.js.map +0 -1
  149. package/dist/file-edit.js.map +0 -1
  150. package/dist/file-read.js.map +0 -1
  151. package/dist/file-write.js.map +0 -1
  152. package/dist/flow-bottlenecks.js.map +0 -1
  153. package/dist/flow-report.js.map +0 -1
  154. package/dist/formatters.js +0 -151
  155. package/dist/formatters.js.map +0 -1
  156. package/dist/gate-defaults.js +0 -131
  157. package/dist/gate-defaults.js.map +0 -1
  158. package/dist/gate-registry.js +0 -73
  159. package/dist/gate-registry.js.map +0 -1
  160. package/dist/gates-graceful-degradation.js +0 -153
  161. package/dist/gates-graceful-degradation.js.map +0 -1
  162. package/dist/gates-plan-resolvers.js +0 -152
  163. package/dist/gates-plan-resolvers.js.map +0 -1
  164. package/dist/gates-runners.js +0 -509
  165. package/dist/gates-runners.js.map +0 -1
  166. package/dist/gates-types.js +0 -4
  167. package/dist/gates-types.js.map +0 -1
  168. package/dist/gates-utils.js +0 -323
  169. package/dist/gates-utils.js.map +0 -1
  170. package/dist/gates.js.map +0 -1
  171. package/dist/git-branch.js.map +0 -1
  172. package/dist/git-diff.js.map +0 -1
  173. package/dist/git-log.js.map +0 -1
  174. package/dist/git-status.js.map +0 -1
  175. package/dist/guard-locked.js +0 -172
  176. package/dist/guard-locked.js.map +0 -1
  177. package/dist/guard-main-branch.js +0 -217
  178. package/dist/guard-main-branch.js.map +0 -1
  179. package/dist/guard-worktree-commit.js +0 -163
  180. package/dist/guard-worktree-commit.js.map +0 -1
  181. package/dist/hooks/auto-checkpoint-utils.js +0 -54
  182. package/dist/hooks/auto-checkpoint-utils.js.map +0 -1
  183. package/dist/hooks/enforcement-checks.js +0 -399
  184. package/dist/hooks/enforcement-checks.js.map +0 -1
  185. package/dist/hooks/enforcement-generator.js +0 -139
  186. package/dist/hooks/enforcement-generator.js.map +0 -1
  187. package/dist/hooks/enforcement-sync.js +0 -385
  188. package/dist/hooks/enforcement-sync.js.map +0 -1
  189. package/dist/hooks/generators/auto-checkpoint.js +0 -125
  190. package/dist/hooks/generators/auto-checkpoint.js.map +0 -1
  191. package/dist/hooks/generators/enforce-worktree.js +0 -190
  192. package/dist/hooks/generators/enforce-worktree.js.map +0 -1
  193. package/dist/hooks/generators/index.js +0 -18
  194. package/dist/hooks/generators/index.js.map +0 -1
  195. package/dist/hooks/generators/pre-compact-checkpoint.js +0 -136
  196. package/dist/hooks/generators/pre-compact-checkpoint.js.map +0 -1
  197. package/dist/hooks/generators/require-wu.js +0 -117
  198. package/dist/hooks/generators/require-wu.js.map +0 -1
  199. package/dist/hooks/generators/session-start-recovery.js +0 -103
  200. package/dist/hooks/generators/session-start-recovery.js.map +0 -1
  201. package/dist/hooks/generators/signal-utils.js +0 -54
  202. package/dist/hooks/generators/signal-utils.js.map +0 -1
  203. package/dist/hooks/generators/warn-incomplete.js +0 -67
  204. package/dist/hooks/generators/warn-incomplete.js.map +0 -1
  205. package/dist/hooks/index.js +0 -10
  206. package/dist/hooks/index.js.map +0 -1
  207. package/dist/index.js.map +0 -1
  208. package/dist/init-detection.js +0 -230
  209. package/dist/init-detection.js.map +0 -1
  210. package/dist/init-lane-validation.js +0 -143
  211. package/dist/init-lane-validation.js.map +0 -1
  212. package/dist/init-scaffolding.js +0 -158
  213. package/dist/init-scaffolding.js.map +0 -1
  214. package/dist/init-templates.js +0 -1964
  215. package/dist/init-templates.js.map +0 -1
  216. package/dist/init.js.map +0 -1
  217. package/dist/initiative-add-wu.js.map +0 -1
  218. package/dist/initiative-bulk-assign-wus.js.map +0 -1
  219. package/dist/initiative-create.js.map +0 -1
  220. package/dist/initiative-edit.js.map +0 -1
  221. package/dist/initiative-list.js.map +0 -1
  222. package/dist/initiative-plan.js.map +0 -1
  223. package/dist/initiative-remove-wu.js.map +0 -1
  224. package/dist/initiative-status.js.map +0 -1
  225. package/dist/lane-edit.js.map +0 -1
  226. package/dist/lane-health.js.map +0 -1
  227. package/dist/lane-lifecycle-process.js +0 -366
  228. package/dist/lane-lifecycle-process.js.map +0 -1
  229. package/dist/lane-lock.js.map +0 -1
  230. package/dist/lane-setup.js.map +0 -1
  231. package/dist/lane-status.js.map +0 -1
  232. package/dist/lane-suggest.js.map +0 -1
  233. package/dist/lane-validate.js.map +0 -1
  234. package/dist/lifecycle-regression-harness.js +0 -181
  235. package/dist/lifecycle-regression-harness.js.map +0 -1
  236. package/dist/lumenflow-upgrade.js.map +0 -1
  237. package/dist/mem-checkpoint.js.map +0 -1
  238. package/dist/mem-cleanup.js.map +0 -1
  239. package/dist/mem-context.js.map +0 -1
  240. package/dist/mem-create.js.map +0 -1
  241. package/dist/mem-delete.js.map +0 -1
  242. package/dist/mem-export.js.map +0 -1
  243. package/dist/mem-inbox.js.map +0 -1
  244. package/dist/mem-index.js +0 -214
  245. package/dist/mem-index.js.map +0 -1
  246. package/dist/mem-init.js.map +0 -1
  247. package/dist/mem-profile.js +0 -210
  248. package/dist/mem-profile.js.map +0 -1
  249. package/dist/mem-promote.js +0 -257
  250. package/dist/mem-promote.js.map +0 -1
  251. package/dist/mem-ready.js.map +0 -1
  252. package/dist/mem-recover.js.map +0 -1
  253. package/dist/mem-signal.js.map +0 -1
  254. package/dist/mem-start.js.map +0 -1
  255. package/dist/mem-summarize.js.map +0 -1
  256. package/dist/mem-triage.js.map +0 -1
  257. package/dist/merge-block.js +0 -225
  258. package/dist/merge-block.js.map +0 -1
  259. package/dist/metrics-cli.js.map +0 -1
  260. package/dist/metrics-snapshot.js.map +0 -1
  261. package/dist/onboard.js.map +0 -1
  262. package/dist/onboarding-smoke-test.js +0 -418
  263. package/dist/onboarding-smoke-test.js.map +0 -1
  264. package/dist/orchestrate-init-status.js.map +0 -1
  265. package/dist/orchestrate-initiative.js.map +0 -1
  266. package/dist/orchestrate-monitor.js.map +0 -1
  267. package/dist/pack-author.js.map +0 -1
  268. package/dist/pack-hash.js.map +0 -1
  269. package/dist/pack-install.js.map +0 -1
  270. package/dist/pack-publish.js.map +0 -1
  271. package/dist/pack-scaffold.js.map +0 -1
  272. package/dist/pack-search.js.map +0 -1
  273. package/dist/pack-validate.js.map +0 -1
  274. package/dist/plan-create.js.map +0 -1
  275. package/dist/plan-edit.js.map +0 -1
  276. package/dist/plan-link.js.map +0 -1
  277. package/dist/plan-promote.js.map +0 -1
  278. package/dist/public-manifest.js +0 -920
  279. package/dist/public-manifest.js.map +0 -1
  280. package/dist/release.js.map +0 -1
  281. package/dist/rotate-progress.js +0 -253
  282. package/dist/rotate-progress.js.map +0 -1
  283. package/dist/session-coordinator.js +0 -303
  284. package/dist/session-coordinator.js.map +0 -1
  285. package/dist/shared-validators.js +0 -81
  286. package/dist/shared-validators.js.map +0 -1
  287. package/dist/signal-cleanup.js.map +0 -1
  288. package/dist/state-bootstrap.js.map +0 -1
  289. package/dist/state-cleanup.js.map +0 -1
  290. package/dist/state-doctor-fix.js +0 -226
  291. package/dist/state-doctor-fix.js.map +0 -1
  292. package/dist/state-doctor-stamps.js +0 -23
  293. package/dist/state-doctor-stamps.js.map +0 -1
  294. package/dist/state-doctor.js.map +0 -1
  295. package/dist/strict-progress.js +0 -255
  296. package/dist/strict-progress.js.map +0 -1
  297. package/dist/sync-templates.js.map +0 -1
  298. package/dist/task-claim.js.map +0 -1
  299. package/dist/trace-gen.js +0 -401
  300. package/dist/trace-gen.js.map +0 -1
  301. package/dist/validate-agent-skills.js +0 -223
  302. package/dist/validate-agent-skills.js.map +0 -1
  303. package/dist/validate-agent-sync.js +0 -151
  304. package/dist/validate-agent-sync.js.map +0 -1
  305. package/dist/validate-backlog-sync.js +0 -77
  306. package/dist/validate-backlog-sync.js.map +0 -1
  307. package/dist/validate-skills-spec.js +0 -211
  308. package/dist/validate-skills-spec.js.map +0 -1
  309. package/dist/validate.js.map +0 -1
  310. package/dist/validator-defaults.js +0 -107
  311. package/dist/validator-defaults.js.map +0 -1
  312. package/dist/validator-registry.js +0 -71
  313. package/dist/validator-registry.js.map +0 -1
  314. package/dist/workspace-init.js.map +0 -1
  315. package/dist/wu-block.js.map +0 -1
  316. package/dist/wu-brief.js.map +0 -1
  317. package/dist/wu-claim-branch.js +0 -123
  318. package/dist/wu-claim-branch.js.map +0 -1
  319. package/dist/wu-claim-cloud.js +0 -79
  320. package/dist/wu-claim-cloud.js.map +0 -1
  321. package/dist/wu-claim-mode.js +0 -82
  322. package/dist/wu-claim-mode.js.map +0 -1
  323. package/dist/wu-claim-output.js +0 -85
  324. package/dist/wu-claim-output.js.map +0 -1
  325. package/dist/wu-claim-repair-guidance.js +0 -12
  326. package/dist/wu-claim-repair-guidance.js.map +0 -1
  327. package/dist/wu-claim-resume-handler.js +0 -87
  328. package/dist/wu-claim-resume-handler.js.map +0 -1
  329. package/dist/wu-claim-state.js +0 -581
  330. package/dist/wu-claim-state.js.map +0 -1
  331. package/dist/wu-claim-validation.js +0 -457
  332. package/dist/wu-claim-validation.js.map +0 -1
  333. package/dist/wu-claim-worktree.js +0 -223
  334. package/dist/wu-claim-worktree.js.map +0 -1
  335. package/dist/wu-claim.js.map +0 -1
  336. package/dist/wu-cleanup-cloud.js +0 -78
  337. package/dist/wu-cleanup-cloud.js.map +0 -1
  338. package/dist/wu-cleanup.js.map +0 -1
  339. package/dist/wu-code-path-coverage.js +0 -83
  340. package/dist/wu-code-path-coverage.js.map +0 -1
  341. package/dist/wu-create-cloud.js +0 -30
  342. package/dist/wu-create-cloud.js.map +0 -1
  343. package/dist/wu-create-content.js +0 -264
  344. package/dist/wu-create-content.js.map +0 -1
  345. package/dist/wu-create-readiness.js +0 -59
  346. package/dist/wu-create-readiness.js.map +0 -1
  347. package/dist/wu-create-validation.js +0 -128
  348. package/dist/wu-create-validation.js.map +0 -1
  349. package/dist/wu-create.js.map +0 -1
  350. package/dist/wu-delegate.js.map +0 -1
  351. package/dist/wu-delete.js.map +0 -1
  352. package/dist/wu-deps.js.map +0 -1
  353. package/dist/wu-done-auto-cleanup.js +0 -203
  354. package/dist/wu-done-auto-cleanup.js.map +0 -1
  355. package/dist/wu-done-check.js +0 -38
  356. package/dist/wu-done-check.js.map +0 -1
  357. package/dist/wu-done-cloud.js +0 -48
  358. package/dist/wu-done-cloud.js.map +0 -1
  359. package/dist/wu-done-decay.js +0 -86
  360. package/dist/wu-done-decay.js.map +0 -1
  361. package/dist/wu-done.js.map +0 -1
  362. package/dist/wu-edit-operations.js +0 -399
  363. package/dist/wu-edit-operations.js.map +0 -1
  364. package/dist/wu-edit-validators.js +0 -282
  365. package/dist/wu-edit-validators.js.map +0 -1
  366. package/dist/wu-edit.js.map +0 -1
  367. package/dist/wu-infer-lane.js.map +0 -1
  368. package/dist/wu-preflight.js.map +0 -1
  369. package/dist/wu-prep.js.map +0 -1
  370. package/dist/wu-proto.js.map +0 -1
  371. package/dist/wu-prune.js.map +0 -1
  372. package/dist/wu-recover.js.map +0 -1
  373. package/dist/wu-release.js.map +0 -1
  374. package/dist/wu-repair.js.map +0 -1
  375. package/dist/wu-sandbox.js.map +0 -1
  376. package/dist/wu-spawn-completion.js +0 -33
  377. package/dist/wu-spawn-completion.js.map +0 -1
  378. package/dist/wu-spawn-prompt-builders.js +0 -1197
  379. package/dist/wu-spawn-prompt-builders.js.map +0 -1
  380. package/dist/wu-spawn-strategy-resolver.js +0 -322
  381. package/dist/wu-spawn-strategy-resolver.js.map +0 -1
  382. package/dist/wu-spawn.js +0 -59
  383. package/dist/wu-spawn.js.map +0 -1
  384. package/dist/wu-state-cloud.js +0 -41
  385. package/dist/wu-state-cloud.js.map +0 -1
  386. package/dist/wu-status.js.map +0 -1
  387. package/dist/wu-unblock.js.map +0 -1
  388. package/dist/wu-unlock-lane.js.map +0 -1
  389. package/dist/wu-validate.js.map +0 -1
@@ -1,581 +0,0 @@
1
- // Copyright (c) 2026 Hellmai Ltd
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /**
4
- * @file wu-claim-state.ts
5
- * @description State update helpers for wu:claim - WU YAML, backlog, status updates.
6
- *
7
- * WU-1649: Extracted from wu-claim.ts to reduce orchestration complexity.
8
- * All functions are mechanical extractions preserving original behavior.
9
- */
10
- import { rmSync } from 'node:fs';
11
- import { access, readFile, writeFile, mkdir } from 'node:fs/promises';
12
- import path from 'node:path';
13
- import { parseYAML, stringifyYAML } from '@lumenflow/core/wu-yaml';
14
- import { assertTransition } from '@lumenflow/core/state-machine';
15
- import { getGitForCwd, createGitForPath } from '@lumenflow/core/git-adapter';
16
- import { die, getErrorMessage } from '@lumenflow/core/error-handler';
17
- import { BRANCHES, WU_STATUS, CLAIMED_MODES, STATUS_SECTIONS, STRING_LITERALS, LOG_PREFIX, GIT_REFS, MICRO_WORKTREE_OPERATIONS, COMMIT_FORMATS, LUMENFLOW_PATHS, FILE_SYSTEM, } from '@lumenflow/core/wu-constants';
18
- import { WU_PATHS, getStateStoreDirFromBacklog } from '@lumenflow/core/wu-paths';
19
- import { withMicroWorktree, shouldSkipRemoteOperations } from '@lumenflow/core/micro-worktree';
20
- import { generateAutoApproval } from '@lumenflow/core/wu-schema';
21
- import { WUStateStore } from '@lumenflow/core/wu-state-store';
22
- import { DelegationRegistryStore } from '@lumenflow/core/delegation-registry-store';
23
- import { generateBacklog, generateStatus } from '@lumenflow/core/backlog-generator';
24
- import { getConfig } from '@lumenflow/core/config';
25
- import { autoFixWUYaml } from '@lumenflow/core/wu-yaml-fixer';
26
- import { getAssignedEmail } from '@lumenflow/core/wu-claim-helpers';
27
- import { shouldProgressInitiativeStatus, findInitiative, writeInitiative, getInitiativeWUs, } from '@lumenflow/initiatives';
28
- import { resolveClaimStatus } from './wu-claim-validation.js';
29
- const PREFIX = LOG_PREFIX.CLAIM;
30
- /**
31
- * Decide whether wu:claim should update canonical state on origin/main.
32
- *
33
- * Cloud branch-pr claims run on platform-managed branches and should not mutate
34
- * canonical state on main during claim; they commit claim metadata on their own branch.
35
- */
36
- export function shouldApplyCanonicalClaimUpdate(input) {
37
- // WU-1653: Skip canonical update when no remote (requireRemote=false)
38
- if (input.noPush || shouldSkipRemoteOperations()) {
39
- return false;
40
- }
41
- return !(input.isCloud && input.claimedMode === CLAIMED_MODES.BRANCH_PR);
42
- }
43
- /**
44
- * Decide whether wu:claim should write claim metadata directly to the active branch.
45
- */
46
- export function shouldPersistClaimMetadataOnBranch(input) {
47
- return (input.noPush === true ||
48
- input.claimedMode === CLAIMED_MODES.BRANCH_PR ||
49
- input.skipRemote === true);
50
- }
51
- /**
52
- * Resolve which main reference should be used for claim baseline SHA.
53
- *
54
- * In local-only mode (git.requireRemote=false), origin/main may not exist.
55
- */
56
- export function resolveClaimBaselineRef(input = {}) {
57
- return input.skipRemote === true ? BRANCHES.MAIN : GIT_REFS.ORIGIN_MAIN;
58
- }
59
- /**
60
- * WU-1521: Build a rolled-back version of a WU YAML doc by stripping claim metadata.
61
- *
62
- * When wu:claim fails after pushing YAML changes to origin/main but before
63
- * worktree creation succeeds, this function produces a clean doc that can be
64
- * written back to reset the WU to 'ready' state, enabling a clean retry.
65
- *
66
- * Pure function: does not mutate the input doc.
67
- *
68
- * @param doc - The claimed WU YAML document to roll back
69
- * @returns A new document with status=ready and claim metadata removed
70
- */
71
- export function buildRollbackYamlDoc(doc) {
72
- // Shallow-copy to avoid mutating the original
73
- const rolled = { ...doc };
74
- // Reset status back to ready
75
- rolled.status = WU_STATUS.READY;
76
- // Remove claim-specific metadata fields
77
- delete rolled.claimed_mode;
78
- delete rolled.claimed_branch; // WU-1589: Clear claimed_branch on rollback
79
- delete rolled.claimed_at;
80
- delete rolled.worktree_path;
81
- delete rolled.baseline_main_sha;
82
- delete rolled.session_id;
83
- delete rolled.assigned_to;
84
- return rolled;
85
- }
86
- /**
87
- * Returns true when a spawn record includes claim-time pickup evidence.
88
- */
89
- export function hasClaimPickupEvidence(entry) {
90
- const pickedUpAt = typeof entry?.pickedUpAt === 'string' && entry.pickedUpAt.trim().length > 0
91
- ? entry.pickedUpAt
92
- : '';
93
- const pickedUpBy = typeof entry?.pickedUpBy === 'string' && entry.pickedUpBy.trim().length > 0
94
- ? entry.pickedUpBy
95
- : '';
96
- return pickedUpAt.length > 0 && pickedUpBy.length > 0;
97
- }
98
- /**
99
- * WU-1605: Record delegated pickup evidence at wu:claim time when a spawn/delegate
100
- * provenance record already exists for this target WU.
101
- */
102
- export async function recordClaimPickupEvidence(id, options = {}) {
103
- const baseDir = options.baseDir ?? process.cwd();
104
- const claimedBy = typeof options.claimedBy === 'string' && options.claimedBy.trim().length > 0
105
- ? options.claimedBy.trim()
106
- : 'unknown';
107
- const store = new DelegationRegistryStore(path.join(baseDir, '.lumenflow', 'state'));
108
- await store.load();
109
- const spawnEntry = store.getByTarget(id);
110
- if (!spawnEntry) {
111
- return { matchedSpawn: false, recorded: false, alreadyRecorded: false };
112
- }
113
- if (hasClaimPickupEvidence(spawnEntry)) {
114
- return {
115
- matchedSpawn: true,
116
- recorded: false,
117
- alreadyRecorded: true,
118
- spawnId: spawnEntry.id,
119
- };
120
- }
121
- await store.recordPickup(spawnEntry.id, claimedBy);
122
- return {
123
- matchedSpawn: true,
124
- recorded: true,
125
- alreadyRecorded: false,
126
- spawnId: spawnEntry.id,
127
- };
128
- }
129
- export async function updateWUYaml(WU_PATH, id, lane, claimedMode = 'worktree', worktreePath = null, sessionId = null, gitAdapter = null, claimedBranch = null) {
130
- // Check file exists
131
- try {
132
- await access(WU_PATH);
133
- }
134
- catch {
135
- die(`WU file not found: ${WU_PATH}\n\n` +
136
- `Options:\n` +
137
- ` 1. Create the WU first: pnpm wu:create --id ${id} --lane "${lane}" --title "..."\n` +
138
- ` 2. Check if the WU ID is correct`);
139
- }
140
- // Read file
141
- let text;
142
- try {
143
- text = await readFile(WU_PATH, { encoding: FILE_SYSTEM.UTF8 });
144
- }
145
- catch (e) {
146
- die(`Failed to read WU file: ${WU_PATH}\n\n` +
147
- `Error: ${getErrorMessage(e)}\n\n` +
148
- `Options:\n` +
149
- ` 1. Check file permissions: ls -la ${WU_PATH}\n` +
150
- ` 2. Ensure you have read access to the repository`);
151
- }
152
- let doc;
153
- try {
154
- doc = parseYAML(text);
155
- }
156
- catch (e) {
157
- die(`Failed to parse YAML ${WU_PATH}\n\n` +
158
- `Error: ${getErrorMessage(e)}\n\n` +
159
- `Options:\n` +
160
- ` 1. Validate YAML syntax: pnpm wu:validate --id ${id}\n` +
161
- ` 2. Fix YAML errors manually and retry`);
162
- }
163
- if (!doc || doc.id !== id) {
164
- die(`WU YAML id mismatch. Expected ${id}, found ${doc && doc.id}\n\n` +
165
- `Options:\n` +
166
- ` 1. Check the WU file has correct id field\n` +
167
- ` 2. Verify you're claiming the right WU`);
168
- }
169
- // Validate state transition before updating
170
- const currentStatus = resolveClaimStatus(doc.status);
171
- try {
172
- assertTransition(currentStatus, WU_STATUS.IN_PROGRESS, id);
173
- }
174
- catch (error) {
175
- die(`State transition validation failed: ${getErrorMessage(error)}`);
176
- }
177
- // Update status and lane (lane only if provided and different)
178
- doc.status = WU_STATUS.IN_PROGRESS;
179
- if (lane)
180
- doc.lane = lane;
181
- // Record claimed mode (worktree or branch-only)
182
- doc.claimed_mode = claimedMode;
183
- // WU-1590: Persist claimed_branch for branch-pr cloud agents so downstream commands
184
- // (wu:prep, wu:done, wu:cleanup) can resolve the actual branch via defaultBranchFrom()
185
- if (claimedBranch) {
186
- doc.claimed_branch = claimedBranch;
187
- }
188
- // WU-1226: Record worktree path to prevent resolution failures if lane field changes
189
- if (worktreePath) {
190
- doc.worktree_path = worktreePath;
191
- }
192
- const git = gitAdapter || getGitForCwd();
193
- // WU-1423: Record owner using validated email (no silent username fallback)
194
- // Fallback chain: git config user.email > GIT_AUTHOR_EMAIL > error
195
- // WU-1427: getAssignedEmail is now async to properly await gitAdapter.getConfigValue
196
- doc.assigned_to = await getAssignedEmail(git);
197
- // Record claim timestamp for duration tracking (WU-637)
198
- doc.claimed_at = new Date().toISOString();
199
- // WU-1382: Store baseline main SHA for parallel agent detection
200
- // wu:done will compare against this to detect if other WUs were merged during work
201
- const baselineRef = resolveClaimBaselineRef({ skipRemote: shouldSkipRemoteOperations() });
202
- doc.baseline_main_sha = await git.getCommitHash(baselineRef);
203
- // WU-1438: Store agent session ID for tracking
204
- if (sessionId) {
205
- doc.session_id = sessionId;
206
- }
207
- // WU-2080: Agent-first auto-approval
208
- // Agents auto-approve on claim. Human escalation only for detected triggers.
209
- const assignedTo = doc.assigned_to;
210
- if (!assignedTo) {
211
- die('Could not resolve assigned_to for auto-approval metadata');
212
- }
213
- const autoApproval = generateAutoApproval(doc, assignedTo);
214
- doc.approved_by = autoApproval.approved_by;
215
- doc.approved_at = autoApproval.approved_at;
216
- doc.escalation_triggers = autoApproval.escalation_triggers;
217
- doc.requires_human_escalation = autoApproval.requires_human_escalation;
218
- // Log escalation triggers if UnsafeAny detected
219
- if (autoApproval.requires_human_escalation) {
220
- console.log(`[wu-claim] ⚠️ Escalation triggers detected: ${autoApproval.escalation_triggers.join(', ')}`);
221
- console.log(`[wu-claim] ℹ️ Human resolution required before wu:done can complete.`);
222
- }
223
- else {
224
- console.log(`[wu-claim] ✅ Agent auto-approved (no escalation triggers)`);
225
- }
226
- // WU-1352: Use centralized stringify for consistent output
227
- const out = stringifyYAML(doc);
228
- // Write file
229
- await writeFile(WU_PATH, out, { encoding: FILE_SYSTEM.UTF8 });
230
- // WU-1211: Return both title and initiative for status progression check
231
- return { title: doc.title || '', initiative: doc.initiative || null };
232
- }
233
- /**
234
- * WU-1211: Check and progress initiative status from draft/open to in_progress.
235
- *
236
- * Called when a WU with an initiative field is claimed. If this is the first
237
- * WU being claimed for the initiative, progress the initiative status.
238
- *
239
- * @param {string} worktreePath - Path to micro-worktree (or main)
240
- * @param {string} initiativeRef - Initiative ID or slug
241
- * @param {string} wuId - WU ID being claimed
242
- * @returns {Promise<{updated: boolean, initPath: string|null}>} Result
243
- */
244
- export async function maybeProgressInitiativeStatus(worktreePath, initiativeRef, wuId) {
245
- try {
246
- // Find the initiative
247
- const initiative = findInitiative(initiativeRef);
248
- if (!initiative) {
249
- console.log(`${PREFIX} Initiative ${initiativeRef} not found (may be created later)`);
250
- return { updated: false, initPath: null };
251
- }
252
- // Get all WUs for this initiative to check if UnsafeAny are in_progress
253
- const wus = getInitiativeWUs(initiativeRef);
254
- // Include the WU we're currently claiming as in_progress
255
- const wusWithCurrent = wus.map((wu) => wu.id === wuId ? { ...wu, doc: { ...wu.doc, status: 'in_progress' } } : wu);
256
- const wuDocs = wusWithCurrent.map((wu) => wu.doc);
257
- // Check if initiative status should progress
258
- const progressCheck = shouldProgressInitiativeStatus(initiative.doc, wuDocs);
259
- if (!progressCheck.shouldProgress || !progressCheck.newStatus) {
260
- return { updated: false, initPath: null };
261
- }
262
- // Update initiative status in worktree
263
- const initRelativePath = initiative.path.replace(process.cwd() + '/', '');
264
- const initAbsPath = path.join(worktreePath, initRelativePath);
265
- // Read, update, write
266
- const initDoc = { ...initiative.doc, status: progressCheck.newStatus };
267
- writeInitiative(initAbsPath, initDoc);
268
- console.log(`${PREFIX} ✅ Initiative ${initiativeRef} status progressed: ${initiative.doc.status} → ${progressCheck.newStatus}`);
269
- return { updated: true, initPath: initRelativePath };
270
- }
271
- catch (error) {
272
- // Non-fatal: log warning and continue
273
- console.warn(`${PREFIX} ⚠️ Could not check initiative status progression: ${getErrorMessage(error)}`);
274
- return { updated: false, initPath: null };
275
- }
276
- }
277
- export async function addOrReplaceInProgressStatus(statusPath, id, title) {
278
- // Check file exists
279
- try {
280
- await access(statusPath);
281
- }
282
- catch {
283
- die(`Missing ${statusPath}`);
284
- }
285
- const rel = `wu/${id}.yaml`;
286
- const bullet = `- [${id} — ${title}](${rel})`;
287
- // Read file
288
- const content = await readFile(statusPath, { encoding: FILE_SYSTEM.UTF8 });
289
- const lines = content.split(STRING_LITERALS.NEWLINE);
290
- const findHeader = (h) => lines.findIndex((l) => l.trim().toLowerCase() === h.toLowerCase());
291
- const startIdx = findHeader(STATUS_SECTIONS.IN_PROGRESS);
292
- if (startIdx === -1)
293
- die(`Could not find "${STATUS_SECTIONS.IN_PROGRESS}" section in status.md`);
294
- let endIdx = lines.slice(startIdx + 1).findIndex((l) => l.startsWith('## '));
295
- if (endIdx === -1)
296
- endIdx = lines.length - startIdx - 1;
297
- else
298
- endIdx = startIdx + 1 + endIdx;
299
- // Check if already present
300
- const section = lines.slice(startIdx + 1, endIdx).join(STRING_LITERALS.NEWLINE);
301
- if (section.includes(rel) || section.includes(`[${id}`))
302
- return; // already listed
303
- // Remove "No items" marker if present
304
- for (let i = startIdx + 1; i < endIdx; i++) {
305
- if (lines[i] && lines[i].includes('No items currently in progress')) {
306
- lines.splice(i, 1);
307
- break;
308
- }
309
- }
310
- // Insert bullet right after header
311
- lines.splice(startIdx + 1, 0, '', bullet);
312
- // Write file
313
- await writeFile(statusPath, lines.join(STRING_LITERALS.NEWLINE), {
314
- encoding: FILE_SYSTEM.UTF8,
315
- });
316
- }
317
- export async function removeFromReadyAndAddToInProgressBacklog(backlogPath, id, title, lane) {
318
- // WU-1574: Use WUStateStore as single source of truth, generate backlog.md from state
319
- // WU-1593: Use centralized path helper to correctly resolve state dir from backlog path
320
- const stateDir = getStateStoreDirFromBacklog(backlogPath);
321
- // Append claim event to state store
322
- const store = new WUStateStore(stateDir);
323
- await store.load();
324
- await store.claim(id, lane, title);
325
- console.log(`${PREFIX} Claim event appended to state store`);
326
- // Regenerate backlog.md from state store
327
- const backlogContent = await generateBacklog(store);
328
- await writeFile(backlogPath, backlogContent, { encoding: FILE_SYSTEM.UTF8 });
329
- console.log(`${PREFIX} backlog.md regenerated from state store`);
330
- // Regenerate status.md from state store
331
- const statusPath = path.join(path.dirname(backlogPath), 'status.md');
332
- const statusContent = await generateStatus(store);
333
- await writeFile(statusPath, statusContent, { encoding: FILE_SYSTEM.UTF8 });
334
- console.log(`${PREFIX} status.md regenerated from state store`);
335
- }
336
- /**
337
- * WU-1746: Append claim event without regenerating backlog.md/status.md
338
- * For worktree mode, we only need to record the claim event in the state store.
339
- * Generated files (backlog.md, status.md) cause merge conflicts when committed
340
- * to worktrees because they change on main as other WUs complete.
341
- *
342
- * @param {string} stateDir - Path to state store directory
343
- * @param {string} id - WU ID
344
- * @param {string} title - WU title
345
- * @param {string} lane - Lane name
346
- */
347
- export async function appendClaimEventOnly(stateDir, id, title, lane) {
348
- const store = new WUStateStore(stateDir);
349
- await store.load();
350
- await store.claim(id, lane, title);
351
- console.log(`${PREFIX} Claim event appended to state store`);
352
- }
353
- /**
354
- * WU-1746: Get list of files to commit in worktree mode
355
- * Excludes backlog.md and status.md to prevent merge conflicts.
356
- * These generated files should only be updated on main during wu:done.
357
- *
358
- * @param {string} wuId - WU ID (e.g., 'WU-1746')
359
- * @returns {string[]} List of files to commit
360
- */
361
- export function getWorktreeCommitFiles(wuId) {
362
- // WU-1311: Use config-based paths instead of hardcoded docs/04-operations paths
363
- const config = getConfig();
364
- return [
365
- `${config.directories.wuDir}/${wuId}.yaml`,
366
- LUMENFLOW_PATHS.WU_EVENTS, // WU-1740: Event store is source of truth
367
- // WU-1746: Explicitly NOT including backlog.md and status.md
368
- // These generated files cause merge conflicts when main advances
369
- ];
370
- }
371
- export async function readWUTitle(id) {
372
- const p = WU_PATHS.WU(id);
373
- // Check file exists
374
- try {
375
- await access(p);
376
- }
377
- catch {
378
- return null;
379
- }
380
- // Read file
381
- const text = await readFile(p, { encoding: FILE_SYSTEM.UTF8 });
382
- // Match title field - use RegExp.exec for sonarjs/prefer-regexp-exec compliance
383
- // Regex is safe: runs on trusted WU YAML files with bounded input
384
- const titlePattern = /^title:\s*"?([^"\n]+)"?$/m;
385
- const m = titlePattern.exec(text);
386
- return m ? m[1] : null;
387
- }
388
- export function parseStagedChangeLine(line) {
389
- const parts = line.trim().split(/\s+/);
390
- const status = parts[0];
391
- if (!status)
392
- return null;
393
- if (status.startsWith('R') || status.startsWith('C')) {
394
- return { status, from: parts[1], filePath: parts[2] };
395
- }
396
- return { status, filePath: parts.slice(1).join(' ') };
397
- }
398
- export async function getStagedChanges() {
399
- const diff = await getGitForCwd().raw(['diff', '--cached', '--name-status']);
400
- if (!diff.trim())
401
- return [];
402
- return diff
403
- .split(STRING_LITERALS.NEWLINE)
404
- .filter(Boolean)
405
- .map(parseStagedChangeLine)
406
- .filter((change) => Boolean(change));
407
- }
408
- export async function applyStagedChangesToMicroWorktree(worktreePath, stagedChanges) {
409
- for (const change of stagedChanges) {
410
- const filePath = change.filePath;
411
- if (!filePath)
412
- continue;
413
- const targetPath = path.join(worktreePath, filePath);
414
- if (change.status.startsWith('D')) {
415
- rmSync(targetPath, { recursive: true, force: true });
416
- continue;
417
- }
418
- const sourcePath = path.join(process.cwd(), filePath);
419
- const contents = await readFile(sourcePath, { encoding: FILE_SYSTEM.UTF8 });
420
- await mkdir(path.dirname(targetPath), { recursive: true });
421
- await writeFile(targetPath, contents, { encoding: FILE_SYSTEM.UTF8 });
422
- }
423
- }
424
- export async function ensureCleanOrClaimOnlyWhenNoAuto() {
425
- // Require staged claim edits only if running with --no-auto
426
- const status = await getGitForCwd().getStatus();
427
- if (!status)
428
- die('No staged changes detected. Stage backlog/status/WU YAML claim edits first or omit --no-auto.');
429
- const staged = status
430
- .split(STRING_LITERALS.NEWLINE)
431
- .filter(Boolean)
432
- .filter((l) => l.startsWith('A ') || l.startsWith('M ') || l.startsWith('R '));
433
- // WU-1311: Use config-based paths instead of hardcoded docs/04-operations paths
434
- const config = getConfig();
435
- const wuDirPattern = config.directories.wuDir.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
436
- // eslint-disable-next-line security/detect-non-literal-regexp -- config path escaped for regex; not user input
437
- const wuYamlRegex = new RegExp(`${wuDirPattern}/WU-\\d+\\.yaml`);
438
- const hasClaimFiles = staged.some((l) => l.includes(config.directories.statusPath) ||
439
- l.includes(config.directories.backlogPath) ||
440
- wuYamlRegex.test(l));
441
- if (!hasClaimFiles) {
442
- console.error(status);
443
- die('Stage claim-related files (status/backlog/WU YAML) before running with --no-auto.');
444
- }
445
- }
446
- /**
447
- * Update canonical claim state on origin/main using push-only micro-worktree.
448
- * Ensures canonical state stays global while local main remains unchanged.
449
- */
450
- export async function applyCanonicalClaimUpdate(ctx, sessionId) {
451
- const { args, id, laneK, worktree, WU_PATH, STATUS_PATH, BACKLOG_PATH, claimedMode, fixableIssues, stagedChanges, currentBranchForCloud, // WU-1590: For persisting claimed_branch
452
- } = ctx;
453
- const commitMsg = COMMIT_FORMATS.CLAIM(id.toLowerCase(), laneK);
454
- const laneForUpdate = args.lane ?? laneK;
455
- const worktreePathForYaml = claimedMode === CLAIMED_MODES.BRANCH_ONLY ? null : path.resolve(worktree);
456
- let updatedTitle = '';
457
- const filesToCommit = args.noAuto && stagedChanges.length > 0
458
- ? stagedChanges
459
- .map((change) => change.filePath)
460
- .filter((filePath) => Boolean(filePath))
461
- : [WU_PATHS.WU(id), WU_PATHS.STATUS(), WU_PATHS.BACKLOG(), LUMENFLOW_PATHS.WU_EVENTS];
462
- console.log(`${PREFIX} Updating canonical claim state (push-only)...`);
463
- await withMicroWorktree({
464
- operation: MICRO_WORKTREE_OPERATIONS.WU_CLAIM,
465
- id,
466
- logPrefix: PREFIX,
467
- pushOnly: true,
468
- execute: async ({ worktreePath }) => {
469
- const microWUPath = path.join(worktreePath, WU_PATH);
470
- const microStatusPath = path.join(worktreePath, STATUS_PATH);
471
- const microBacklogPath = path.join(worktreePath, BACKLOG_PATH);
472
- if (args.noAuto) {
473
- await applyStagedChangesToMicroWorktree(worktreePath, stagedChanges);
474
- }
475
- else {
476
- if (fixableIssues && fixableIssues.length > 0) {
477
- console.log(`${PREFIX} Applying ${fixableIssues.length} YAML fix(es)...`);
478
- autoFixWUYaml(microWUPath);
479
- console.log(`${PREFIX} YAML fixes applied successfully`);
480
- }
481
- const microGit = createGitForPath(worktreePath);
482
- // WU-1211: updateWUYaml now returns {title, initiative}
483
- const updateResult = await updateWUYaml(microWUPath, id, laneForUpdate, claimedMode, worktreePathForYaml, sessionId, microGit, currentBranchForCloud ?? null);
484
- updatedTitle = updateResult.title || updatedTitle;
485
- await addOrReplaceInProgressStatus(microStatusPath, id, updatedTitle);
486
- await removeFromReadyAndAddToInProgressBacklog(microBacklogPath, id, updatedTitle, laneForUpdate);
487
- // WU-1211: Check and progress initiative status
488
- let initPath = null;
489
- if (updateResult.initiative) {
490
- const initProgress = await maybeProgressInitiativeStatus(worktreePath, updateResult.initiative, id);
491
- initPath = initProgress.initPath;
492
- }
493
- // Include initiative path in files to commit if updated
494
- const allFilesToCommit = initPath ? [...filesToCommit, initPath] : filesToCommit;
495
- return {
496
- commitMessage: commitMsg,
497
- files: allFilesToCommit,
498
- };
499
- }
500
- return {
501
- commitMessage: commitMsg,
502
- files: filesToCommit,
503
- };
504
- },
505
- });
506
- console.log(`${PREFIX} Canonical claim state updated on origin/main`);
507
- return updatedTitle;
508
- }
509
- /**
510
- * WU-1521: Rollback canonical claim state on origin/main after partial failure.
511
- *
512
- * When wu:claim pushes YAML changes to origin/main (via applyCanonicalClaimUpdate)
513
- * but then fails to create the worktree or branch, this function reverses the claim
514
- * by writing the WU YAML back to 'ready' status and emitting a 'release' event
515
- * to the state store. This ensures re-running wu:claim succeeds without wu:repair.
516
- *
517
- * Uses a push-only micro-worktree to atomically update origin/main.
518
- *
519
- * @param id - WU ID (e.g., 'WU-1521')
520
- * @param lane - Lane name for the release event
521
- * @param title - WU title for the release event
522
- */
523
- export async function rollbackCanonicalClaim(id, _lane, _title) {
524
- console.log(`${PREFIX} Rolling back canonical claim for ${id}...`);
525
- try {
526
- await withMicroWorktree({
527
- operation: MICRO_WORKTREE_OPERATIONS.WU_CLAIM,
528
- id,
529
- logPrefix: PREFIX,
530
- pushOnly: true,
531
- execute: async ({ worktreePath }) => {
532
- const microWUPath = path.join(worktreePath, WU_PATHS.WU(id));
533
- // Read the current (claimed) YAML from the micro-worktree
534
- const text = await readFile(microWUPath, {
535
- encoding: FILE_SYSTEM.UTF8,
536
- });
537
- const doc = parseYAML(text);
538
- // Build the rolled-back doc and write it
539
- const rolledBackDoc = buildRollbackYamlDoc(doc);
540
- const out = stringifyYAML(rolledBackDoc);
541
- await writeFile(microWUPath, out, {
542
- encoding: FILE_SYSTEM.UTF8,
543
- });
544
- // Emit a release event to the state store so the claim event is reversed
545
- const microBacklogPath = path.join(worktreePath, WU_PATHS.BACKLOG());
546
- const stateDir = getStateStoreDirFromBacklog(microBacklogPath);
547
- const store = new WUStateStore(stateDir);
548
- await store.load();
549
- await store.release(id, `Rollback: wu:claim failed after canonical update`);
550
- // Regenerate backlog.md and status.md from the corrected state
551
- const backlogContent = await generateBacklog(store);
552
- await writeFile(microBacklogPath, backlogContent, {
553
- encoding: FILE_SYSTEM.UTF8,
554
- });
555
- const microStatusPath = path.join(worktreePath, WU_PATHS.STATUS());
556
- const statusContent = await generateStatus(store);
557
- await writeFile(microStatusPath, statusContent, {
558
- encoding: FILE_SYSTEM.UTF8,
559
- });
560
- return {
561
- commitMessage: `wu(${id.toLowerCase()}): rollback claim after partial failure`,
562
- files: [
563
- WU_PATHS.WU(id),
564
- WU_PATHS.STATUS(),
565
- WU_PATHS.BACKLOG(),
566
- LUMENFLOW_PATHS.WU_EVENTS,
567
- ],
568
- };
569
- },
570
- });
571
- console.log(`${PREFIX} Canonical claim rolled back for ${id}`);
572
- }
573
- catch (rollbackErr) {
574
- // Rollback failure should not mask the original error.
575
- // Log the rollback failure but let the original error propagate.
576
- const rollbackMessage = rollbackErr instanceof Error ? rollbackErr.message : getErrorMessage(rollbackErr);
577
- console.error(`${PREFIX} WARNING: Failed to rollback canonical claim for ${id}: ${rollbackMessage}`);
578
- console.error(`${PREFIX} Manual recovery required: pnpm wu:repair --id ${id} --claim`);
579
- }
580
- }
581
- //# sourceMappingURL=wu-claim-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wu-claim-state.js","sourceRoot":"","sources":["../src/wu-claim-state.ts"],"names":[],"mappings":"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"}