@lumenflow/cli 3.1.2 → 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 +238 -42
  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 -232
  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 -1982
  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
package/README.md CHANGED
@@ -152,39 +152,40 @@ This package provides CLI commands for the LumenFlow workflow framework, includi
152
152
 
153
153
  ### System & Setup
154
154
 
155
- | Command | Description |
156
- | -------------------------- | -------------------------------------------------------- |
157
- | `backlog-prune` | Clean stale backlog entries |
158
- | `config-get` | Read and display a value from .lumenflow.config.yaml |
159
- | `config-set` | Safely update .lumenflow.config.yaml via micro-worktree |
160
- | `init-plan` | Link plan to initiative (alias) |
161
- | `lumenflow` | Initialize LumenFlow in a project |
162
- | `lumenflow-commands` | List all available CLI commands |
163
- | `lumenflow-docs-sync` | Sync agent docs (for upgrades) (alias) |
164
- | `lumenflow-doctor` | Diagnose LumenFlow configuration |
165
- | `lumenflow-init` | Initialize LumenFlow in a project (alias) |
166
- | `lumenflow-integrate` | Generate enforcement hooks for client |
167
- | `lumenflow-onboard` | Interactive setup wizard for LumenFlow workspace (alias) |
168
- | `lumenflow-release` | Run release workflow |
169
- | `lumenflow-sync-templates` | Sync templates to project |
170
- | `lumenflow-upgrade` | Upgrade LumenFlow packages |
171
- | `onboard` | Interactive setup wizard for LumenFlow workspace |
172
- | `pack-author` | Author a secure domain pack from templates |
173
- | `pack-hash` | Compute integrity hash for a domain pack |
174
- | `pack-install` | Install a domain pack into workspace |
175
- | `pack-publish` | Publish a domain pack to a registry |
176
- | `pack-scaffold` | Scaffold a new domain pack |
177
- | `pack-search` | Search for domain packs in a registry |
178
- | `pack-validate` | Validate a domain pack for integrity |
179
- | `plan-create` | Create a new plan |
180
- | `plan-edit` | Edit plan content |
181
- | `plan-link` | Link plan to WU or initiative |
182
- | `plan-promote` | Promote plan to WU |
183
- | `state-bootstrap` | Bootstrap state store |
184
- | `state-cleanup` | Clean up stale state data |
185
- | `state-doctor` | Diagnose state store issues |
186
- | `sync-templates` | Sync templates to project (alias) |
187
- | `workspace-init` | Initialize workspace.yaml from interactive prompts |
155
+ | Command | Description |
156
+ | -------------------------- | ------------------------------------------------------------------- |
157
+ | `backlog-prune` | Clean stale backlog entries |
158
+ | `cloud-connect` | Connect workspace.yaml to cloud control plane |
159
+ | `config-get` | Read and display a value from workspace.yaml software_delivery |
160
+ | `config-set` | Safely update workspace.yaml software_delivery via micro-worktree |
161
+ | `init-plan` | Link plan to initiative (alias) |
162
+ | `lumenflow` | Initialize LumenFlow in a project |
163
+ | `lumenflow-commands` | List all available CLI commands |
164
+ | `lumenflow-docs-sync` | Sync agent docs (for upgrades) (alias) |
165
+ | `lumenflow-doctor` | Diagnose LumenFlow configuration |
166
+ | `lumenflow-init` | Initialize LumenFlow in a project (alias) |
167
+ | `lumenflow-integrate` | Generate enforcement hooks for client |
168
+ | `lumenflow-onboard` | Legacy entrypoint; use "npx lumenflow" for bootstrap-all onboarding |
169
+ | `lumenflow-release` | Run release workflow |
170
+ | `lumenflow-sync-templates` | Sync templates to project |
171
+ | `lumenflow-upgrade` | Upgrade LumenFlow packages |
172
+ | `onboard` | Legacy entrypoint; use "npx lumenflow" for bootstrap-all onboarding |
173
+ | `pack-author` | Author a secure domain pack from templates |
174
+ | `pack-hash` | Compute integrity hash for a domain pack |
175
+ | `pack-install` | Install a domain pack into workspace |
176
+ | `pack-publish` | Publish a domain pack to a registry |
177
+ | `pack-scaffold` | Scaffold a new domain pack |
178
+ | `pack-search` | Search for domain packs in a registry |
179
+ | `pack-validate` | Validate a domain pack for integrity |
180
+ | `plan-create` | Create a new plan |
181
+ | `plan-edit` | Edit plan content |
182
+ | `plan-link` | Link plan to WU or initiative |
183
+ | `plan-promote` | Promote plan to WU |
184
+ | `state-bootstrap` | Bootstrap state store |
185
+ | `state-cleanup` | Clean up stale state data |
186
+ | `state-doctor` | Diagnose state store issues |
187
+ | `sync-templates` | Sync templates to project (alias) |
188
+ | `workspace-init` | Legacy entrypoint; use "npx lumenflow" for bootstrap-all onboarding |
188
189
 
189
190
  ### File & Git Operations
190
191
 
@@ -295,9 +296,9 @@ pnpm update @lumenflow/cli @lumenflow/core @lumenflow/memory @lumenflow/agent @l
295
296
  pnpm exec lumenflow docs:sync
296
297
  ```
297
298
 
298
- **Important**: Always run `docs:sync` after upgrading to update agent onboarding documentation, workflow rules, and vendor-specific configurations.
299
+ **Important**: Always run `docs:sync` after package changes to update agent onboarding documentation, workflow rules, and vendor-specific configurations.
299
300
 
300
- For detailed upgrade instructions, migration guides, and troubleshooting, see [UPGRADING.md](https://lumenflow.dev/upgrading).
301
+ For current setup guidance and troubleshooting, see [LUMENFLOW.md](https://lumenflow.dev).
301
302
 
302
303
  ## License
303
304
 
@@ -23,6 +23,7 @@ import chalk from 'chalk';
23
23
  import { die } from '@lumenflow/core/error-handler';
24
24
  import { LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
25
25
  import { runCLI } from './cli-entry-point.js';
26
+ import { TOP_ISSUES_DISPLAY_LIMIT, RECENT_ISSUES_DISPLAY_LIMIT, ISSUE_TITLE_TRUNCATION_LENGTH, ISSUE_TITLE_TRUNCATED_TEXT_LENGTH, SEVERITY_PADDING_WIDTH, CATEGORY_PADDING_WIDTH, } from './constants.js';
26
27
  /** Log prefix for console output */
27
28
  const LOG_PREFIX = '[agent:issues-query]';
28
29
  /** Default days to query */
@@ -175,7 +176,7 @@ function displaySummary(issues, sinceDays) {
175
176
  const count = bySeverity.get(severity)?.length ?? 0;
176
177
  if (count > 0) {
177
178
  const color = getSeverityColor(severity);
178
- console.log(` ${color(severity.toUpperCase().padEnd(10))} ${count}`);
179
+ console.log(` ${color(severity.toUpperCase().padEnd(SEVERITY_PADDING_WIDTH))} ${count}`);
179
180
  }
180
181
  }
181
182
  console.log('');
@@ -189,7 +190,7 @@ function displaySummary(issues, sinceDays) {
189
190
  })
190
191
  .filter(Boolean)
191
192
  .join(' ');
192
- console.log(` ${String(category).padEnd(20)} ${categoryIssues.length} issues (${severityCounts})`);
193
+ console.log(` ${String(category).padEnd(CATEGORY_PADDING_WIDTH)} ${categoryIssues.length} issues (${severityCounts})`);
193
194
  }
194
195
  console.log('');
195
196
  // Top 5 most common issues
@@ -200,12 +201,14 @@ function displaySummary(issues, sinceDays) {
200
201
  }
201
202
  const topIssues = Array.from(issueCount.entries())
202
203
  .sort((a, b) => b[1] - a[1])
203
- .slice(0, 5);
204
+ .slice(0, TOP_ISSUES_DISPLAY_LIMIT);
204
205
  if (topIssues.length > 0) {
205
- console.log(' Top 5 Most Common:');
206
+ console.log(` Top ${TOP_ISSUES_DISPLAY_LIMIT} Most Common:`);
206
207
  for (const [key, count] of topIssues) {
207
208
  const [category, title] = key.split(':');
208
- const truncatedTitle = title.length > 40 ? title.slice(0, 37) + '...' : title;
209
+ const truncatedTitle = title.length > ISSUE_TITLE_TRUNCATION_LENGTH
210
+ ? title.slice(0, ISSUE_TITLE_TRUNCATED_TEXT_LENGTH) + '...'
211
+ : title;
209
212
  console.log(` ${count}x [${category}] ${truncatedTitle}`);
210
213
  }
211
214
  console.log('');
@@ -213,13 +216,15 @@ function displaySummary(issues, sinceDays) {
213
216
  // Recent issues (last 5)
214
217
  const recentIssues = [...issues]
215
218
  .sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
216
- .slice(0, 5);
219
+ .slice(0, RECENT_ISSUES_DISPLAY_LIMIT);
217
220
  console.log(' Recent Issues:');
218
221
  for (const issue of recentIssues) {
219
222
  const date = new Date(issue.timestamp).toISOString().split('T')[0];
220
223
  const badge = formatSeverityBadge(issue.severity);
221
224
  const wuInfo = issue.wuId ? ` (${issue.wuId})` : '';
222
- const truncatedTitle = issue.title.length > 40 ? issue.title.slice(0, 37) + '...' : issue.title;
225
+ const truncatedTitle = issue.title.length > ISSUE_TITLE_TRUNCATION_LENGTH
226
+ ? issue.title.slice(0, ISSUE_TITLE_TRUNCATED_TEXT_LENGTH) + '...'
227
+ : issue.title;
223
228
  console.log(` ${date} ${badge} ${truncatedTitle}${wuInfo}`);
224
229
  }
225
230
  console.log('');
@@ -227,7 +232,7 @@ function displaySummary(issues, sinceDays) {
227
232
  /**
228
233
  * Main function
229
234
  */
230
- async function main() {
235
+ export async function main() {
231
236
  const opts = parseArgs();
232
237
  const baseDir = process.cwd();
233
238
  const sinceDate = new Date();
@@ -17,7 +17,9 @@
17
17
  import { Command } from 'commander';
18
18
  import { logIncident, getCurrentSession } from '@lumenflow/agent';
19
19
  import { EXIT_CODES, INCIDENT_SEVERITY, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
20
+ import { ProcessExitError } from '@lumenflow/core/error-handler';
20
21
  import chalk from 'chalk';
22
+ import { runCLI } from './cli-entry-point.js';
21
23
  /**
22
24
  * WU-1182: Collector function for Commander.js repeatable options.
23
25
  * Accumulates multiple flag values into an array.
@@ -49,9 +51,10 @@ const program = new Command()
49
51
  try {
50
52
  const session = await getCurrentSession();
51
53
  if (!session) {
52
- console.error(chalk.red('Error: No active session'));
54
+ const message = 'Error: No active session';
55
+ console.error(chalk.red(message));
53
56
  console.error('Run: pnpm agent:session --wu WU-XXX --tier N');
54
- process.exit(EXIT_CODES.ERROR);
57
+ throw new ProcessExitError(message, EXIT_CODES.ERROR);
55
58
  }
56
59
  const incident = {
57
60
  category: opts.category,
@@ -77,6 +80,9 @@ const program = new Command()
77
80
  }
78
81
  }
79
82
  catch (err) {
83
+ if (err instanceof ProcessExitError) {
84
+ throw err;
85
+ }
80
86
  const error = err;
81
87
  console.error(chalk.red(`Error: ${error.message ?? 'Unknown error'}`));
82
88
  if (error.issues) {
@@ -85,8 +91,13 @@ const program = new Command()
85
91
  console.error(chalk.red(` - ${issue.path.join('.')}: ${issue.message}`));
86
92
  });
87
93
  }
88
- process.exit(EXIT_CODES.ERROR);
94
+ throw new ProcessExitError(error.message ?? 'Unknown error', EXIT_CODES.ERROR);
89
95
  }
90
96
  });
91
- program.parse();
97
+ export async function main() {
98
+ await program.parseAsync(process.argv);
99
+ }
100
+ if (import.meta.main) {
101
+ void runCLI(main);
102
+ }
92
103
  //# sourceMappingURL=agent-log-issue.js.map
@@ -12,7 +12,9 @@
12
12
  import { Command } from 'commander';
13
13
  import { endSession, getCurrentSession } from '@lumenflow/agent';
14
14
  import { EXIT_CODES } from '@lumenflow/core/wu-constants';
15
+ import { ProcessExitError } from '@lumenflow/core/error-handler';
15
16
  import chalk from 'chalk';
17
+ import { runCLI } from './cli-entry-point.js';
16
18
  const program = new Command()
17
19
  .name('agent:session:end')
18
20
  .description('End the current agent session')
@@ -20,8 +22,9 @@ const program = new Command()
20
22
  try {
21
23
  const session = await getCurrentSession();
22
24
  if (!session) {
23
- console.error(chalk.yellow('No active session to end.'));
24
- process.exit(EXIT_CODES.SUCCESS);
25
+ const message = 'No active session to end.';
26
+ console.error(chalk.yellow(message));
27
+ throw new ProcessExitError(message, EXIT_CODES.SUCCESS);
25
28
  }
26
29
  const summary = await endSession();
27
30
  console.log(chalk.green(`✓ Session ended`));
@@ -31,10 +34,18 @@ const program = new Command()
31
34
  console.log(` Incidents: ${summary.incidents_logged} (${summary.incidents_major} major)`);
32
35
  }
33
36
  catch (err) {
37
+ if (err instanceof ProcessExitError) {
38
+ throw err;
39
+ }
34
40
  const message = err instanceof Error ? err.message : String(err);
35
41
  console.error(chalk.red(`Error: ${message}`));
36
- process.exit(EXIT_CODES.ERROR);
42
+ throw new ProcessExitError(message, EXIT_CODES.ERROR);
37
43
  }
38
44
  });
39
- program.parse();
45
+ export async function main() {
46
+ await program.parseAsync(process.argv);
47
+ }
48
+ if (import.meta.main) {
49
+ void runCLI(main);
50
+ }
40
51
  //# sourceMappingURL=agent-session-end.js.map
@@ -12,7 +12,9 @@
12
12
  import { Command } from 'commander';
13
13
  import { startSession, getCurrentSession } from '@lumenflow/agent';
14
14
  import { EXIT_CODES } from '@lumenflow/core/wu-constants';
15
+ import { ProcessExitError } from '@lumenflow/core/error-handler';
15
16
  import chalk from 'chalk';
17
+ import { runCLI } from './cli-entry-point.js';
16
18
  const program = new Command()
17
19
  .name('agent:session')
18
20
  .description('Start an agent session')
@@ -24,14 +26,16 @@ const program = new Command()
24
26
  // Check for existing session
25
27
  const existing = await getCurrentSession();
26
28
  if (existing) {
27
- console.error(chalk.red(`Session already active for ${existing.wu_id}`));
29
+ const message = `Session already active for ${existing.wu_id}`;
30
+ console.error(chalk.red(message));
28
31
  console.error(`Run: pnpm agent:session:end to close it first.`);
29
- process.exit(EXIT_CODES.ERROR);
32
+ throw new ProcessExitError(message, EXIT_CODES.ERROR);
30
33
  }
31
34
  const tier = parseInt(opts.tier, 10);
32
35
  if (![1, 2, 3].includes(tier)) {
33
- console.error(chalk.red('Invalid tier. Must be 1, 2, or 3.'));
34
- process.exit(EXIT_CODES.ERROR);
36
+ const message = 'Invalid tier. Must be 1, 2, or 3.';
37
+ console.error(chalk.red(message));
38
+ throw new ProcessExitError(message, EXIT_CODES.ERROR);
35
39
  }
36
40
  const sessionId = await startSession(opts.wu, tier, opts.agentType);
37
41
  console.log(chalk.green(`✓ Session started`));
@@ -41,10 +45,18 @@ const program = new Command()
41
45
  console.log(` Agent: ${chalk.cyan(opts.agentType)}`);
42
46
  }
43
47
  catch (err) {
48
+ if (err instanceof ProcessExitError) {
49
+ throw err;
50
+ }
44
51
  const message = err instanceof Error ? err.message : String(err);
45
52
  console.error(chalk.red(`Error: ${message}`));
46
- process.exit(EXIT_CODES.ERROR);
53
+ throw new ProcessExitError(message, EXIT_CODES.ERROR);
47
54
  }
48
55
  });
49
- program.parse();
56
+ export async function main() {
57
+ await program.parseAsync(process.argv);
58
+ }
59
+ if (import.meta.main) {
60
+ void runCLI(main);
61
+ }
50
62
  //# sourceMappingURL=agent-session.js.map
@@ -233,7 +233,7 @@ This tool:
233
233
  /**
234
234
  * Main function
235
235
  */
236
- async function main() {
236
+ export async function main() {
237
237
  const args = parseBacklogPruneArgs(process.argv);
238
238
  if (args.help) {
239
239
  printHelp();
@@ -6,7 +6,7 @@
6
6
  * Integrate LumenFlow with Claude Code (WU-1367)
7
7
  *
8
8
  * This command generates enforcement hooks and updates Claude Code
9
- * configuration based on .lumenflow.config.yaml settings.
9
+ * configuration based on workspace.yaml software_delivery settings.
10
10
  *
11
11
  * Usage:
12
12
  * pnpm lumenflow:integrate --client claude-code
@@ -17,7 +17,7 @@
17
17
  import * as fs from 'node:fs';
18
18
  import * as path from 'node:path';
19
19
  import * as yaml from 'yaml';
20
- import { createWUParser, WU_OPTIONS, CLAUDE_HOOKS, DIRECTORIES, LUMENFLOW_CLIENT_IDS, } from '@lumenflow/core';
20
+ import { createWUParser, WU_OPTIONS, CLAUDE_HOOKS, DIRECTORIES, LUMENFLOW_CLIENT_IDS, WORKSPACE_CONFIG_FILE_NAME, WORKSPACE_V2_KEYS, } from '@lumenflow/core';
21
21
  import { generateEnforcementHooks, generateEnforceWorktreeScript, generateRequireWuScript, generateWarnIncompleteScript, } from '../hooks/enforcement-generator.js';
22
22
  import { runCLI } from '../cli-entry-point.js';
23
23
  /**
@@ -181,22 +181,34 @@ export async function integrateClaudeCode(projectDir, config) {
181
181
  return created;
182
182
  }
183
183
  /**
184
- * Read enforcement config from .lumenflow.config.yaml
184
+ * Read software_delivery config from workspace.yaml.
185
185
  */
186
- function readEnforcementConfig(projectDir) {
187
- const configPath = path.join(projectDir, '.lumenflow.config.yaml');
186
+ function readWorkspaceSoftwareDeliveryConfig(projectDir) {
187
+ const configPath = path.join(projectDir, WORKSPACE_CONFIG_FILE_NAME);
188
188
  if (!fs.existsSync(configPath)) {
189
189
  return null;
190
190
  }
191
191
  try {
192
192
  const content = fs.readFileSync(configPath, 'utf-8');
193
- const config = yaml.parse(content);
194
- return config?.agents?.clients?.[LUMENFLOW_CLIENT_IDS.CLAUDE_CODE]?.enforcement ?? null;
193
+ const workspaceDoc = yaml.parse(content);
194
+ if (!workspaceDoc || typeof workspaceDoc !== 'object') {
195
+ return null;
196
+ }
197
+ const workspace = workspaceDoc;
198
+ const softwareDelivery = workspace[WORKSPACE_V2_KEYS.SOFTWARE_DELIVERY];
199
+ if (!softwareDelivery || typeof softwareDelivery !== 'object') {
200
+ return null;
201
+ }
202
+ return softwareDelivery;
195
203
  }
196
204
  catch {
197
205
  return null;
198
206
  }
199
207
  }
208
+ function readEnforcementConfig(projectDir) {
209
+ const softwareDelivery = readWorkspaceSoftwareDeliveryConfig(projectDir);
210
+ return softwareDelivery?.agents?.clients?.[LUMENFLOW_CLIENT_IDS.CLAUDE_CODE]?.enforcement ?? null;
211
+ }
200
212
  /**
201
213
  * Main entry point for integrate command
202
214
  */
@@ -208,20 +220,22 @@ export async function main() {
208
220
  process.exit(1);
209
221
  }
210
222
  const projectDir = process.cwd();
211
- // Read enforcement config from .lumenflow.config.yaml
223
+ // Read enforcement config from workspace.yaml software_delivery
212
224
  const enforcement = readEnforcementConfig(projectDir);
213
225
  if (!enforcement) {
214
- console.log('[integrate] No enforcement config found in .lumenflow.config.yaml');
215
- console.log('[integrate] Add this to your config to enable enforcement hooks:');
226
+ console.log(`[integrate] No enforcement config found in ${WORKSPACE_CONFIG_FILE_NAME} ` +
227
+ `${WORKSPACE_V2_KEYS.SOFTWARE_DELIVERY}.agents.clients.${LUMENFLOW_CLIENT_IDS.CLAUDE_CODE}`);
228
+ console.log('[integrate] Add this to your workspace config to enable enforcement hooks:');
216
229
  console.log(`
217
- agents:
218
- clients:
219
- ${LUMENFLOW_CLIENT_IDS.CLAUDE_CODE}:
220
- enforcement:
221
- hooks: true
222
- block_outside_worktree: true
223
- require_wu_for_edits: true
224
- warn_on_stop_without_wu_done: true
230
+ ${WORKSPACE_V2_KEYS.SOFTWARE_DELIVERY}:
231
+ agents:
232
+ clients:
233
+ ${LUMENFLOW_CLIENT_IDS.CLAUDE_CODE}:
234
+ enforcement:
235
+ hooks: true
236
+ block_outside_worktree: true
237
+ require_wu_for_edits: true
238
+ warn_on_stop_without_wu_done: true
225
239
  `);
226
240
  return;
227
241
  }
@@ -3,42 +3,54 @@
3
3
  // SPDX-License-Identifier: AGPL-3.0-only
4
4
  /**
5
5
  * @file config-get.ts
6
- * WU-1902: Safe config:get CLI command for reading .lumenflow.config.yaml values
6
+ * WU-1902 / WU-1973: Safe config:get CLI command for reading workspace.yaml values
7
7
  *
8
- * Reads and displays current values from the config using dotpath notation.
9
- * Uses getConfig from @lumenflow/core/config for consistent config loading.
8
+ * Reads and displays current values from workspace.yaml using dotpath notation.
9
+ * Canonical keys use the software_delivery prefix.
10
10
  *
11
11
  * Usage:
12
- * pnpm config:get --key methodology.testing
13
- * pnpm config:get --key gates.minCoverage
12
+ * pnpm config:get --key software_delivery.methodology.testing
13
+ * pnpm config:get --key software_delivery.gates.minCoverage
14
14
  */
15
15
  import path from 'node:path';
16
16
  import { existsSync, readFileSync } from 'node:fs';
17
17
  import YAML from 'yaml';
18
18
  import { findProjectRoot } from '@lumenflow/core/config';
19
19
  import { die } from '@lumenflow/core/error-handler';
20
- import { CONFIG_FILES, FILE_SYSTEM } from '@lumenflow/core/wu-constants';
20
+ import { FILE_SYSTEM } from '@lumenflow/core/wu-constants';
21
21
  import { runCLI } from './cli-entry-point.js';
22
- import { parseConfigGetArgs, getConfigValue } from './config-set.js';
22
+ import { parseConfigGetArgs, getConfigValue, normalizeWorkspaceConfigKey, WORKSPACE_FILE_NAME, WORKSPACE_CONFIG_PREFIX, } from './config-set.js';
23
23
  // ---------------------------------------------------------------------------
24
24
  // Constants
25
25
  // ---------------------------------------------------------------------------
26
26
  const LOG_PREFIX = '[config:get]';
27
+ const WORKSPACE_INIT_COMMAND = 'pnpm workspace-init --yes';
27
28
  // ---------------------------------------------------------------------------
28
29
  // Main: config:get
29
30
  // ---------------------------------------------------------------------------
30
- async function main() {
31
+ export async function main() {
31
32
  const userArgs = process.argv.slice(2);
32
33
  const options = parseConfigGetArgs(userArgs);
33
34
  const projectRoot = findProjectRoot();
34
- const configPath = path.join(projectRoot, CONFIG_FILES.LUMENFLOW_CONFIG);
35
- if (!existsSync(configPath)) {
36
- die(`${LOG_PREFIX} Missing ${CONFIG_FILES.LUMENFLOW_CONFIG}. Run \`pnpm exec lumenflow init\` first.`);
35
+ const workspacePath = path.join(projectRoot, WORKSPACE_FILE_NAME);
36
+ if (!existsSync(workspacePath)) {
37
+ die(`${LOG_PREFIX} Missing ${WORKSPACE_FILE_NAME}. Run \`${WORKSPACE_INIT_COMMAND}\` first.`);
38
+ }
39
+ // Read raw workspace (preserving YAML structure, not Zod-parsed defaults)
40
+ const content = readFileSync(workspacePath, FILE_SYSTEM.UTF8);
41
+ const workspace = YAML.parse(content) ?? {};
42
+ // Canonical read path (full workspace key)
43
+ let value = getConfigValue(workspace, options.key);
44
+ if (value === undefined) {
45
+ // Shorthand compatibility: methodology.testing -> software_delivery.methodology.testing
46
+ const shorthandKey = normalizeWorkspaceConfigKey(options.key);
47
+ if (shorthandKey !== options.key) {
48
+ value = getConfigValue(workspace, `${WORKSPACE_CONFIG_PREFIX}${shorthandKey}`);
49
+ }
50
+ else {
51
+ value = getConfigValue(workspace, `${WORKSPACE_CONFIG_PREFIX}${options.key}`);
52
+ }
37
53
  }
38
- // Read raw config (preserving YAML structure, not Zod-parsed)
39
- const content = readFileSync(configPath, FILE_SYSTEM.UTF8);
40
- const config = YAML.parse(content) ?? {};
41
- const value = getConfigValue(config, options.key);
42
54
  if (value === undefined) {
43
55
  console.log(`${LOG_PREFIX} Key "${options.key}" is not set (undefined)`);
44
56
  process.exitCode = 0;