@lumenflow/cli 2.10.0 → 2.12.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 (255) hide show
  1. package/README.md +28 -18
  2. package/dist/__tests__/commands.test.js +198 -2
  3. package/dist/__tests__/gates-integration-tests.test.js +112 -0
  4. package/dist/__tests__/init-docs-structure.test.js +33 -0
  5. package/dist/__tests__/init.test.js +225 -0
  6. package/dist/__tests__/initiative-add-wu.test.js +71 -1
  7. package/dist/__tests__/no-beacon-references-docs.test.js +30 -0
  8. package/dist/__tests__/no-beacon-references.test.js +39 -0
  9. package/dist/__tests__/safe-git.test.js +4 -4
  10. package/dist/__tests__/wu-create-required-fields.test.js +22 -0
  11. package/dist/__tests__/wu-create.test.js +121 -0
  12. package/dist/__tests__/wu-done-docs-only-policy.test.js +20 -0
  13. package/dist/__tests__/wu-prep-default-exec.test.js +35 -0
  14. package/dist/__tests__/wu-prep.test.js +32 -0
  15. package/dist/__tests__/wu-validate.test.js +36 -0
  16. package/dist/agent-issues-query.js +1 -0
  17. package/dist/agent-issues-query.js.map +1 -0
  18. package/dist/agent-log-issue.js +1 -0
  19. package/dist/agent-log-issue.js.map +1 -0
  20. package/dist/agent-session-end.js +1 -0
  21. package/dist/agent-session-end.js.map +1 -0
  22. package/dist/agent-session.js +1 -0
  23. package/dist/agent-session.js.map +1 -0
  24. package/dist/backlog-prune.js +2 -0
  25. package/dist/backlog-prune.js.map +1 -0
  26. package/dist/cli-entry-point.js +1 -0
  27. package/dist/cli-entry-point.js.map +1 -0
  28. package/dist/commands/integrate.js +1 -0
  29. package/dist/commands/integrate.js.map +1 -0
  30. package/dist/commands.js +56 -77
  31. package/dist/commands.js.map +1 -0
  32. package/dist/deps-add.js +1 -0
  33. package/dist/deps-add.js.map +1 -0
  34. package/dist/deps-remove.js +1 -0
  35. package/dist/deps-remove.js.map +1 -0
  36. package/dist/docs-sync.js +1 -0
  37. package/dist/docs-sync.js.map +1 -0
  38. package/dist/doctor.js +1 -0
  39. package/dist/doctor.js.map +1 -0
  40. package/dist/file-delete.js +1 -0
  41. package/dist/file-delete.js.map +1 -0
  42. package/dist/file-edit.js +1 -0
  43. package/dist/file-edit.js.map +1 -0
  44. package/dist/file-read.js +1 -0
  45. package/dist/file-read.js.map +1 -0
  46. package/dist/file-write.js +1 -0
  47. package/dist/file-write.js.map +1 -0
  48. package/dist/flow-bottlenecks.js +1 -0
  49. package/dist/flow-bottlenecks.js.map +1 -0
  50. package/dist/flow-report.js +1 -0
  51. package/dist/flow-report.js.map +1 -0
  52. package/dist/gates.js +32 -20
  53. package/dist/gates.js.map +1 -0
  54. package/dist/git-branch.js +1 -0
  55. package/dist/git-branch.js.map +1 -0
  56. package/dist/git-diff.js +1 -0
  57. package/dist/git-diff.js.map +1 -0
  58. package/dist/git-log.js +1 -0
  59. package/dist/git-log.js.map +1 -0
  60. package/dist/git-status.js +1 -0
  61. package/dist/git-status.js.map +1 -0
  62. package/dist/guard-locked.js +1 -0
  63. package/dist/guard-locked.js.map +1 -0
  64. package/dist/guard-main-branch.js +1 -0
  65. package/dist/guard-main-branch.js.map +1 -0
  66. package/dist/guard-worktree-commit.js +1 -0
  67. package/dist/guard-worktree-commit.js.map +1 -0
  68. package/dist/hooks/auto-checkpoint-utils.js +52 -0
  69. package/dist/hooks/auto-checkpoint-utils.js.map +1 -0
  70. package/dist/hooks/enforcement-checks.js +1 -0
  71. package/dist/hooks/enforcement-checks.js.map +1 -0
  72. package/dist/hooks/enforcement-generator.js +185 -1
  73. package/dist/hooks/enforcement-generator.js.map +1 -0
  74. package/dist/hooks/enforcement-sync.js +91 -1
  75. package/dist/hooks/enforcement-sync.js.map +1 -0
  76. package/dist/hooks/index.js +1 -0
  77. package/dist/hooks/index.js.map +1 -0
  78. package/dist/index.js +1 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/init.js +176 -36
  81. package/dist/init.js.map +1 -0
  82. package/dist/initiative-add-wu.js +180 -59
  83. package/dist/initiative-add-wu.js.map +1 -0
  84. package/dist/initiative-bulk-assign-wus.js +3 -1
  85. package/dist/initiative-bulk-assign-wus.js.map +1 -0
  86. package/dist/initiative-create.js +1 -0
  87. package/dist/initiative-create.js.map +1 -0
  88. package/dist/initiative-edit.js +67 -32
  89. package/dist/initiative-edit.js.map +1 -0
  90. package/dist/initiative-list.js +1 -0
  91. package/dist/initiative-list.js.map +1 -0
  92. package/dist/initiative-plan.js +1 -0
  93. package/dist/initiative-plan.js.map +1 -0
  94. package/dist/initiative-remove-wu.js +1 -0
  95. package/dist/initiative-remove-wu.js.map +1 -0
  96. package/dist/initiative-status.js +1 -0
  97. package/dist/initiative-status.js.map +1 -0
  98. package/dist/lane-health.js +1 -0
  99. package/dist/lane-health.js.map +1 -0
  100. package/dist/lane-suggest.js +1 -0
  101. package/dist/lane-suggest.js.map +1 -0
  102. package/dist/lumenflow-upgrade.js +1 -0
  103. package/dist/lumenflow-upgrade.js.map +1 -0
  104. package/dist/mem-checkpoint.js +1 -0
  105. package/dist/mem-checkpoint.js.map +1 -0
  106. package/dist/mem-cleanup.js +114 -1
  107. package/dist/mem-cleanup.js.map +1 -0
  108. package/dist/mem-context.js +1 -0
  109. package/dist/mem-context.js.map +1 -0
  110. package/dist/mem-create.js +1 -0
  111. package/dist/mem-create.js.map +1 -0
  112. package/dist/mem-delete.js +1 -0
  113. package/dist/mem-delete.js.map +1 -0
  114. package/dist/mem-export.js +1 -0
  115. package/dist/mem-export.js.map +1 -0
  116. package/dist/mem-inbox.js +1 -0
  117. package/dist/mem-inbox.js.map +1 -0
  118. package/dist/mem-index.js +1 -0
  119. package/dist/mem-index.js.map +1 -0
  120. package/dist/mem-init.js +1 -0
  121. package/dist/mem-init.js.map +1 -0
  122. package/dist/mem-profile.js +1 -0
  123. package/dist/mem-profile.js.map +1 -0
  124. package/dist/mem-promote.js +1 -0
  125. package/dist/mem-promote.js.map +1 -0
  126. package/dist/mem-ready.js +1 -0
  127. package/dist/mem-ready.js.map +1 -0
  128. package/dist/mem-recover.js +1 -0
  129. package/dist/mem-recover.js.map +1 -0
  130. package/dist/mem-signal.js +12 -1
  131. package/dist/mem-signal.js.map +1 -0
  132. package/dist/mem-start.js +1 -0
  133. package/dist/mem-start.js.map +1 -0
  134. package/dist/mem-summarize.js +1 -0
  135. package/dist/mem-summarize.js.map +1 -0
  136. package/dist/mem-triage.js +2 -1
  137. package/dist/mem-triage.js.map +1 -0
  138. package/dist/merge-block.js +1 -0
  139. package/dist/merge-block.js.map +1 -0
  140. package/dist/metrics-cli.js +1 -0
  141. package/dist/metrics-cli.js.map +1 -0
  142. package/dist/metrics-snapshot.js +1 -0
  143. package/dist/metrics-snapshot.js.map +1 -0
  144. package/dist/onboarding-smoke-test.js +1 -0
  145. package/dist/onboarding-smoke-test.js.map +1 -0
  146. package/dist/orchestrate-init-status.js +1 -0
  147. package/dist/orchestrate-init-status.js.map +1 -0
  148. package/dist/orchestrate-initiative.js +20 -1
  149. package/dist/orchestrate-initiative.js.map +1 -0
  150. package/dist/orchestrate-monitor.js +1 -0
  151. package/dist/orchestrate-monitor.js.map +1 -0
  152. package/dist/plan-create.js +1 -0
  153. package/dist/plan-create.js.map +1 -0
  154. package/dist/plan-edit.js +1 -0
  155. package/dist/plan-edit.js.map +1 -0
  156. package/dist/plan-link.js +1 -0
  157. package/dist/plan-link.js.map +1 -0
  158. package/dist/plan-promote.js +1 -0
  159. package/dist/plan-promote.js.map +1 -0
  160. package/dist/public-manifest.js +773 -0
  161. package/dist/public-manifest.js.map +1 -0
  162. package/dist/release.js +3 -2
  163. package/dist/release.js.map +1 -0
  164. package/dist/rotate-progress.js +2 -1
  165. package/dist/rotate-progress.js.map +1 -0
  166. package/dist/session-coordinator.js +1 -0
  167. package/dist/session-coordinator.js.map +1 -0
  168. package/dist/shared-validators.js +78 -0
  169. package/dist/shared-validators.js.map +1 -0
  170. package/dist/signal-cleanup.js +1 -0
  171. package/dist/signal-cleanup.js.map +1 -0
  172. package/dist/spawn-list.js +1 -0
  173. package/dist/spawn-list.js.map +1 -0
  174. package/dist/state-bootstrap.js +1 -0
  175. package/dist/state-bootstrap.js.map +1 -0
  176. package/dist/state-cleanup.js +1 -0
  177. package/dist/state-cleanup.js.map +1 -0
  178. package/dist/state-doctor-fix.js +37 -1
  179. package/dist/state-doctor-fix.js.map +1 -0
  180. package/dist/state-doctor.js +11 -6
  181. package/dist/state-doctor.js.map +1 -0
  182. package/dist/sync-templates.js +1 -0
  183. package/dist/sync-templates.js.map +1 -0
  184. package/dist/trace-gen.js +1 -0
  185. package/dist/trace-gen.js.map +1 -0
  186. package/dist/validate-agent-skills.js +1 -0
  187. package/dist/validate-agent-skills.js.map +1 -0
  188. package/dist/validate-agent-sync.js +1 -0
  189. package/dist/validate-agent-sync.js.map +1 -0
  190. package/dist/validate-backlog-sync.js +1 -0
  191. package/dist/validate-backlog-sync.js.map +1 -0
  192. package/dist/validate-skills-spec.js +1 -0
  193. package/dist/validate-skills-spec.js.map +1 -0
  194. package/dist/validate.js +1 -0
  195. package/dist/validate.js.map +1 -0
  196. package/dist/wu-block.js +1 -0
  197. package/dist/wu-block.js.map +1 -0
  198. package/dist/wu-claim-repair-guidance.js +10 -0
  199. package/dist/wu-claim-repair-guidance.js.map +1 -0
  200. package/dist/wu-claim.js +40 -0
  201. package/dist/wu-claim.js.map +1 -0
  202. package/dist/wu-cleanup.js +2 -1
  203. package/dist/wu-cleanup.js.map +1 -0
  204. package/dist/wu-create.js +91 -25
  205. package/dist/wu-create.js.map +1 -0
  206. package/dist/wu-delete.js +3 -2
  207. package/dist/wu-delete.js.map +1 -0
  208. package/dist/wu-deps.js +2 -1
  209. package/dist/wu-deps.js.map +1 -0
  210. package/dist/wu-done-auto-cleanup.js +1 -0
  211. package/dist/wu-done-auto-cleanup.js.map +1 -0
  212. package/dist/wu-done-check.js +1 -0
  213. package/dist/wu-done-check.js.map +1 -0
  214. package/dist/wu-done-decay.js +88 -0
  215. package/dist/wu-done-decay.js.map +1 -0
  216. package/dist/wu-done.js +75 -18
  217. package/dist/wu-done.js.map +1 -0
  218. package/dist/wu-edit.js +2 -1
  219. package/dist/wu-edit.js.map +1 -0
  220. package/dist/wu-infer-lane.js +1 -0
  221. package/dist/wu-infer-lane.js.map +1 -0
  222. package/dist/wu-preflight.js +1 -0
  223. package/dist/wu-preflight.js.map +1 -0
  224. package/dist/wu-prep.js +105 -9
  225. package/dist/wu-prep.js.map +1 -0
  226. package/dist/wu-proto.js +12 -9
  227. package/dist/wu-proto.js.map +1 -0
  228. package/dist/wu-prune.js +1 -0
  229. package/dist/wu-prune.js.map +1 -0
  230. package/dist/wu-recover.js +54 -2
  231. package/dist/wu-recover.js.map +1 -0
  232. package/dist/wu-release.js +2 -1
  233. package/dist/wu-release.js.map +1 -0
  234. package/dist/wu-repair.js +1 -0
  235. package/dist/wu-repair.js.map +1 -0
  236. package/dist/wu-spawn-completion.js +1 -0
  237. package/dist/wu-spawn-completion.js.map +1 -0
  238. package/dist/wu-spawn.js +3 -2
  239. package/dist/wu-spawn.js.map +1 -0
  240. package/dist/wu-status.js +1 -0
  241. package/dist/wu-status.js.map +1 -0
  242. package/dist/wu-unblock.js +1 -0
  243. package/dist/wu-unblock.js.map +1 -0
  244. package/dist/wu-unlock-lane.js +1 -0
  245. package/dist/wu-unlock-lane.js.map +1 -0
  246. package/dist/wu-validate.js +58 -9
  247. package/dist/wu-validate.js.map +1 -0
  248. package/package.json +11 -21
  249. package/templates/core/.husky/pre-commit.template +5 -5
  250. package/templates/core/.mcp.json.template +8 -0
  251. package/templates/core/LUMENFLOW.md.template +2 -2
  252. package/templates/core/ai/onboarding/agent-safety-card.md.template +6 -6
  253. package/templates/core/ai/onboarding/lumenflow-force-usage.md.template +4 -4
  254. package/templates/core/ai/onboarding/vendor-support.md.template +73 -0
  255. package/templates/core/scripts/safe-git.template +29 -0
@@ -10,6 +10,7 @@
10
10
  *
11
11
  * Usage:
12
12
  * pnpm initiative:add-wu --initiative INIT-001 --wu WU-123
13
+ * pnpm initiative:add-wu --initiative INIT-001 --wu WU-123 --wu WU-124
13
14
  *
14
15
  * Features:
15
16
  * - Validates both WU and initiative exist before modifying
@@ -21,7 +22,7 @@
21
22
  */
22
23
  import { getGitForCwd } from '@lumenflow/core/dist/git-adapter.js';
23
24
  import { die } from '@lumenflow/core/dist/error-handler.js';
24
- import { existsSync } from 'node:fs';
25
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
25
26
  import { join } from 'node:path';
26
27
  import { createWUParser, WU_OPTIONS } from '@lumenflow/core/dist/arg-parser.js';
27
28
  import { INIT_PATHS } from '@lumenflow/initiatives/dist/initiative-paths.js';
@@ -30,13 +31,37 @@ import { WU_PATHS } from '@lumenflow/core/dist/wu-paths.js';
30
31
  import { PATTERNS } from '@lumenflow/core/dist/wu-constants.js';
31
32
  import { ensureOnMain } from '@lumenflow/core/dist/wu-helpers.js';
32
33
  import { withMicroWorktree, isRetryExhaustionError as coreIsRetryExhaustionError, formatRetryExhaustionError as coreFormatRetryExhaustionError, } from '@lumenflow/core/dist/micro-worktree.js';
33
- import { readWU, writeWU } from '@lumenflow/core/dist/wu-yaml.js';
34
- import { readInitiative, writeInitiative } from '@lumenflow/initiatives/dist/initiative-yaml.js';
34
+ import { parseYAML, readWU, stringifyYAML, writeWU } from '@lumenflow/core/dist/wu-yaml.js';
35
+ import { readInitiative } from '@lumenflow/initiatives/dist/initiative-yaml.js';
35
36
  import { validateSingleWU } from '@lumenflow/core/dist/validators/wu-tasks.js';
36
37
  /** Log prefix for console output */
37
38
  const LOG_PREFIX = INIT_LOG_PREFIX.ADD_WU;
38
39
  /** Micro-worktree operation name */
39
40
  const OPERATION_NAME = 'initiative-add-wu';
41
+ /**
42
+ * WU-1459: operation-level push retry override for initiative:add-wu.
43
+ *
44
+ * Rationale:
45
+ * - initiative:add-wu often runs in bursts during orchestration.
46
+ * - pushOnly mode can hit short-term contention on origin/main.
47
+ * - A slightly larger retry/backoff window reduces transient failures.
48
+ */
49
+ export const INITIATIVE_ADD_WU_PUSH_RETRY_OVERRIDE = {
50
+ retries: 8,
51
+ min_delay_ms: 300,
52
+ max_delay_ms: 4000,
53
+ };
54
+ /**
55
+ * Command-local repeatable --wu option for batch linking (WU-1460).
56
+ *
57
+ * We intentionally do not mutate global WU_OPTIONS.wu because many commands
58
+ * depend on single-value semantics.
59
+ */
60
+ const REPEATABLE_WU_OPTION = {
61
+ ...WU_OPTIONS.wu,
62
+ description: 'Work Unit ID to link (repeatable, use multiple --wu flags)',
63
+ isRepeatable: true,
64
+ };
40
65
  /**
41
66
  * Validate WU spec for linking to an initiative (WU-1330)
42
67
  *
@@ -96,8 +121,21 @@ export function isRetryExhaustionError(error) {
96
121
  * @returns {string} Formatted error message with next steps
97
122
  */
98
123
  export function formatRetryExhaustionError(error, wuId, initId) {
124
+ return formatRetryExhaustionErrorForMany(error, [wuId], initId);
125
+ }
126
+ /**
127
+ * Format retry exhaustion error with actionable next steps for one or more WUs.
128
+ *
129
+ * @param {Error} error - The retry exhaustion error
130
+ * @param {string[]|string} wuIds - WU IDs being linked
131
+ * @param {string} initId - Initiative ID being linked to
132
+ * @returns {string} Formatted error message with next steps
133
+ */
134
+ export function formatRetryExhaustionErrorForMany(error, wuIds, initId) {
135
+ const normalizedWuIds = normalizeWuIds(wuIds);
136
+ const wuFlags = normalizedWuIds.map((id) => `--wu ${id}`).join(' ');
99
137
  return coreFormatRetryExhaustionError(error, {
100
- command: `pnpm initiative:add-wu --wu ${wuId} --initiative ${initId}`,
138
+ command: `pnpm initiative:add-wu ${wuFlags} --initiative ${initId}`,
101
139
  });
102
140
  }
103
141
  /**
@@ -185,6 +223,40 @@ function checkConflictingLink(wuDoc, targetInitId) {
185
223
  `Current initiative field: ${currentInit}`);
186
224
  }
187
225
  }
226
+ /**
227
+ * Normalize WU argument(s) into an ordered, de-duplicated list.
228
+ *
229
+ * @param {string|string[]|undefined} wuArg - Parsed --wu argument(s)
230
+ * @returns {string[]} Ordered unique WU IDs
231
+ */
232
+ export function normalizeWuIds(wuArg) {
233
+ if (!wuArg)
234
+ return [];
235
+ const values = Array.isArray(wuArg) ? wuArg : [wuArg];
236
+ const normalized = [];
237
+ const seen = new Set();
238
+ for (const value of values) {
239
+ if (typeof value !== 'string')
240
+ continue;
241
+ const trimmed = value.trim();
242
+ if (trimmed.length === 0 || seen.has(trimmed))
243
+ continue;
244
+ seen.add(trimmed);
245
+ normalized.push(trimmed);
246
+ }
247
+ return normalized;
248
+ }
249
+ /**
250
+ * Validate there are no conflicting initiative links across WUs.
251
+ *
252
+ * @param {Array<object>} wuDocs - WU docs to validate
253
+ * @param {string} targetInitId - Initiative being linked
254
+ */
255
+ export function validateNoConflictingLinks(wuDocs, targetInitId) {
256
+ for (const wuDoc of wuDocs) {
257
+ checkConflictingLink(wuDoc, targetInitId);
258
+ }
259
+ }
188
260
  /**
189
261
  * Check if link already exists (idempotent check)
190
262
  * @param {object} wuDoc - WU document
@@ -226,97 +298,145 @@ function updateWUInWorktree(worktreePath, wuId, initId) {
226
298
  * @param {string} wuId - WU ID to add
227
299
  * @returns {boolean} True if changes were made
228
300
  */
229
- function updateInitiativeInWorktree(worktreePath, initId, wuId) {
301
+ function updateInitiativeInWorktree(worktreePath, initId, wuIds) {
230
302
  const initRelPath = INIT_PATHS.INITIATIVE(initId);
231
303
  const initAbsPath = join(worktreePath, initRelPath);
232
- const doc = readInitiative(initAbsPath, initId);
304
+ // Read raw YAML so we preserve unknown fields like related_plan.
305
+ const rawText = readFileSync(initAbsPath, { encoding: 'utf-8' });
306
+ const doc = parseYAML(rawText);
307
+ if (!doc || typeof doc !== 'object' || doc.id !== initId) {
308
+ die(`Initiative YAML id mismatch. Expected ${initId}, found ${doc?.id}`);
309
+ }
233
310
  // Initialize wus array if not present
234
311
  if (!Array.isArray(doc.wus)) {
235
312
  doc.wus = [];
236
313
  }
237
- // Skip if already in list
238
- if (doc.wus.includes(wuId)) {
239
- return false;
314
+ const addedWuIds = [];
315
+ for (const wuId of wuIds) {
316
+ if (doc.wus.includes(wuId)) {
317
+ continue;
318
+ }
319
+ doc.wus.push(wuId);
320
+ addedWuIds.push(wuId);
240
321
  }
241
- // Add WU to list
242
- doc.wus.push(wuId);
243
- writeInitiative(initAbsPath, doc);
244
- console.log(`${LOG_PREFIX} Added ${wuId} to ${initId} wus list`);
245
- return true;
322
+ if (addedWuIds.length === 0) {
323
+ return [];
324
+ }
325
+ const out = stringifyYAML(doc);
326
+ writeFileSync(initAbsPath, out, { encoding: 'utf-8' });
327
+ console.log(`${LOG_PREFIX} ✅ Added ${addedWuIds.join(', ')} to ${initId} wus list`);
328
+ return addedWuIds;
329
+ }
330
+ /**
331
+ * Build micro-worktree options for initiative:add-wu transaction.
332
+ *
333
+ * Exported for testability (WU-1459).
334
+ *
335
+ * @param {string} wuId - WU ID
336
+ * @param {string} initId - Initiative ID
337
+ * @returns {object} withMicroWorktree options
338
+ */
339
+ export function buildAddWuMicroWorktreeOptions(wuArg, initId) {
340
+ const wuIds = normalizeWuIds(wuArg);
341
+ if (wuIds.length === 0) {
342
+ die(`At least one --wu value is required.\n\nUsage: pnpm initiative:add-wu --initiative ${initId} --wu WU-123`);
343
+ }
344
+ const idPrefix = wuIds.length === 1 ? wuIds[0] : `${wuIds[0]}-${wuIds.length}wus`;
345
+ return {
346
+ operation: OPERATION_NAME,
347
+ id: `${idPrefix}-${initId}`.toLowerCase(),
348
+ logPrefix: LOG_PREFIX,
349
+ pushOnly: true,
350
+ pushRetryOverride: INITIATIVE_ADD_WU_PUSH_RETRY_OVERRIDE,
351
+ execute: async ({ worktreePath }) => {
352
+ const files = [];
353
+ // Update WU YAML
354
+ for (const wuId of wuIds) {
355
+ const wuChanged = updateWUInWorktree(worktreePath, wuId, initId);
356
+ if (wuChanged) {
357
+ files.push(WU_PATHS.WU(wuId));
358
+ }
359
+ }
360
+ // Update Initiative YAML
361
+ const initChangedWuIds = updateInitiativeInWorktree(worktreePath, initId, wuIds);
362
+ if (initChangedWuIds.length > 0) {
363
+ files.push(INIT_PATHS.INITIATIVE(initId));
364
+ }
365
+ // If no changes, this is idempotent (race condition handling)
366
+ if (files.length === 0) {
367
+ console.log(`${LOG_PREFIX} ⚠️ No changes detected (concurrent link operation)`);
368
+ // Still need to return something for the commit
369
+ return {
370
+ commitMessage: wuIds.length === 1
371
+ ? INIT_COMMIT_FORMATS.LINK_WU(wuIds[0], initId)
372
+ : `initiative(${initId}): link ${wuIds.length} WUs`,
373
+ files: [...wuIds.map((id) => WU_PATHS.WU(id)), INIT_PATHS.INITIATIVE(initId)],
374
+ };
375
+ }
376
+ return {
377
+ commitMessage: wuIds.length === 1
378
+ ? INIT_COMMIT_FORMATS.LINK_WU(wuIds[0], initId)
379
+ : `initiative(${initId}): link ${wuIds.length} WUs`,
380
+ files,
381
+ };
382
+ },
383
+ };
246
384
  }
247
385
  async function main() {
248
386
  const args = createWUParser({
249
387
  name: 'initiative-add-wu',
250
- description: 'Link a WU to an initiative bidirectionally',
251
- options: [WU_OPTIONS.initiative, WU_OPTIONS.wu],
252
- required: ['initiative', 'wu'],
388
+ description: 'Link one or more WUs to an initiative bidirectionally',
389
+ options: [WU_OPTIONS.initiative, REPEATABLE_WU_OPTION],
390
+ required: ['initiative'],
253
391
  allowPositionalId: false,
254
392
  });
255
393
  // Normalize args
256
- const wuId = args.wu;
394
+ const wuIds = normalizeWuIds(args.wu);
257
395
  const initId = args.initiative;
258
- console.log(`${LOG_PREFIX} Linking ${wuId} to ${initId}...`);
396
+ if (wuIds.length === 0) {
397
+ die(`Missing required --wu.\n\nUsage: pnpm initiative:add-wu --initiative ${initId} --wu WU-123 [--wu WU-124 ...]`);
398
+ }
399
+ console.log(`${LOG_PREFIX} Linking ${wuIds.join(', ')} to ${initId}...`);
259
400
  // Pre-flight validation: ID formats
260
401
  validateInitIdFormat(initId);
261
- validateWuIdFormat(wuId);
402
+ wuIds.forEach(validateWuIdFormat);
262
403
  // WU-1330: Validate WU spec before linking
263
404
  // This ensures only valid, complete WUs can be linked to initiatives
264
- const wuDoc = checkWUExistsAndValidate(wuId);
405
+ const wuDocs = wuIds.map((wuId) => checkWUExistsAndValidate(wuId));
265
406
  const initDoc = checkInitiativeExists(initId);
266
407
  // Check for conflicting links
267
- checkConflictingLink(wuDoc, initId);
408
+ validateNoConflictingLinks(wuDocs, initId);
268
409
  // Idempotent check
269
- if (isAlreadyLinked(wuDoc, initDoc, wuId, initId)) {
410
+ const alreadyLinkedWuIds = wuDocs
411
+ .filter((wuDoc) => isAlreadyLinked(wuDoc, initDoc, wuDoc.id, initId))
412
+ .map((wuDoc) => wuDoc.id);
413
+ if (alreadyLinkedWuIds.length === wuIds.length) {
270
414
  console.log(`${LOG_PREFIX} ✅ Link already exists (idempotent - no changes needed)`);
271
- console.log(`\n${LOG_PREFIX} ${wuId} is already linked to ${initId}`);
415
+ console.log(`\n${LOG_PREFIX} ${wuIds.join(', ')} already linked to ${initId}`);
272
416
  return;
273
417
  }
274
418
  // Ensure on main branch
275
419
  await ensureOnMain(getGitForCwd());
276
420
  // Transaction: micro-worktree isolation
277
421
  try {
278
- await withMicroWorktree({
279
- operation: OPERATION_NAME,
280
- id: `${wuId}-${initId}`.toLowerCase(),
281
- logPrefix: LOG_PREFIX,
282
- pushOnly: true,
283
- execute: async ({ worktreePath }) => {
284
- const files = [];
285
- // Update WU YAML
286
- const wuChanged = updateWUInWorktree(worktreePath, wuId, initId);
287
- if (wuChanged) {
288
- files.push(WU_PATHS.WU(wuId));
289
- }
290
- // Update Initiative YAML
291
- const initChanged = updateInitiativeInWorktree(worktreePath, initId, wuId);
292
- if (initChanged) {
293
- files.push(INIT_PATHS.INITIATIVE(initId));
294
- }
295
- // If no changes, this is idempotent (race condition handling)
296
- if (files.length === 0) {
297
- console.log(`${LOG_PREFIX} ⚠️ No changes detected (concurrent link operation)`);
298
- // Still need to return something for the commit
299
- return {
300
- commitMessage: INIT_COMMIT_FORMATS.LINK_WU(wuId, initId),
301
- files: [WU_PATHS.WU(wuId), INIT_PATHS.INITIATIVE(initId)],
302
- };
303
- }
304
- return {
305
- commitMessage: INIT_COMMIT_FORMATS.LINK_WU(wuId, initId),
306
- files,
307
- };
308
- },
309
- });
422
+ await withMicroWorktree(buildAddWuMicroWorktreeOptions(wuIds, initId));
310
423
  console.log(`\n${LOG_PREFIX} ✅ Transaction complete!`);
311
424
  console.log(`\nLink Created:`);
312
- console.log(` WU: ${wuId}`);
425
+ console.log(` WUs: ${wuIds.join(', ')}`);
313
426
  console.log(` Initiative: ${initId}`);
427
+ if (alreadyLinkedWuIds.length > 0) {
428
+ console.log(` Skipped: ${alreadyLinkedWuIds.join(', ')} (already linked)`);
429
+ }
314
430
  console.log(`\nNext steps:`);
315
431
  console.log(` - View initiative status: pnpm initiative:status ${initId}`);
316
- console.log(` - View WU: cat ${WU_PATHS.WU(wuId)}`);
432
+ console.log(` - View WUs under: ${WU_PATHS.WU('WU-XXXX').replace('WU-XXXX', '')}`);
317
433
  }
318
434
  catch (error) {
319
- die(`Transaction failed: ${error.message}\n\n` +
435
+ if (error instanceof Error && isRetryExhaustionError(error)) {
436
+ die(formatRetryExhaustionErrorForMany(error, wuIds, initId));
437
+ }
438
+ const message = error instanceof Error ? error.message : String(error);
439
+ die(`Transaction failed: ${message}\n\n` +
320
440
  `Micro-worktree cleanup was attempted automatically.\n` +
321
441
  `If issue persists, check for orphaned branches: git branch | grep tmp/${OPERATION_NAME}`);
322
442
  }
@@ -328,3 +448,4 @@ import { runCLI } from './cli-entry-point.js';
328
448
  if (import.meta.main) {
329
449
  void runCLI(main);
330
450
  }
451
+ //# sourceMappingURL=initiative-add-wu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiative-add-wu.js","sourceRoot":"","sources":["../src/initiative-add-wu.ts"],"names":[],"mappings":"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"}
@@ -17,10 +17,11 @@ import { readFile, writeFile } from 'node:fs/promises';
17
17
  import { existsSync } from 'node:fs';
18
18
  import { join } from 'node:path';
19
19
  import fg from 'fast-glob';
20
- import { parse as parseYaml } from 'yaml';
20
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
21
21
  import { createWUParser, WU_OPTIONS } from '@lumenflow/core/dist/arg-parser.js';
22
22
  import { die } from '@lumenflow/core/dist/error-handler.js';
23
23
  import { withMicroWorktree } from '@lumenflow/core/dist/micro-worktree.js';
24
+ import { getGitForCwd } from '@lumenflow/core/dist/git-adapter.js';
24
25
  import { createWuPaths } from '@lumenflow/core/dist/wu-paths.js';
25
26
  /** Log prefix for console output */
26
27
  const LOG_PREFIX = '[initiative:bulk-assign]';
@@ -316,3 +317,4 @@ if (import.meta.main) {
316
317
  die(`Bulk assign failed: ${err.message}`);
317
318
  });
318
319
  }
320
+ //# sourceMappingURL=initiative-bulk-assign-wus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiative-bulk-assign-wus.js","sourceRoot":"","sources":["../src/initiative-bulk-assign-wus.ts"],"names":[],"mappings":"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"}
@@ -200,3 +200,4 @@ import { runCLI } from './cli-entry-point.js';
200
200
  if (import.meta.main) {
201
201
  void runCLI(main);
202
202
  }
203
+ //# sourceMappingURL=initiative-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiative-create.js","sourceRoot":"","sources":["../src/initiative-create.ts"],"names":[],"mappings":"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"}
@@ -39,9 +39,11 @@ import { parseYAML, stringifyYAML } from '@lumenflow/core/dist/wu-yaml.js';
39
39
  import { createWUParser } from '@lumenflow/core/dist/arg-parser.js';
40
40
  import { INIT_PATHS } from '@lumenflow/initiatives/dist/initiative-paths.js';
41
41
  import { INIT_STATUSES, PHASE_STATUSES, INIT_PATTERNS, INIT_LOG_PREFIX, INIT_COMMIT_FORMATS, } from '@lumenflow/initiatives/dist/initiative-constants.js';
42
- import { EXIT_CODES, FILE_SYSTEM, MICRO_WORKTREE_OPERATIONS, } from '@lumenflow/core/dist/wu-constants.js';
42
+ import { FILE_SYSTEM, MICRO_WORKTREE_OPERATIONS } from '@lumenflow/core/dist/wu-constants.js';
43
43
  import { ensureOnMain, ensureMainUpToDate } from '@lumenflow/core/dist/wu-helpers.js';
44
44
  import { withMicroWorktree } from '@lumenflow/core/dist/micro-worktree.js';
45
+ import { runCLI } from './cli-entry-point.js';
46
+ import { validateInitiativeEditCliArgs } from './shared-validators.js';
45
47
  const PREFIX = INIT_LOG_PREFIX.EDIT;
46
48
  /**
47
49
  * Custom options for initiative-edit
@@ -107,6 +109,12 @@ const EDIT_OPTIONS = {
107
109
  description: 'Append to success_metrics array, avoiding duplicates (repeatable)',
108
110
  isRepeatable: true,
109
111
  },
112
+ removeSuccessMetric: {
113
+ name: 'removeSuccessMetric',
114
+ flags: '--remove-success-metric <text>',
115
+ description: 'Remove exact match from success_metrics array (repeatable)',
116
+ isRepeatable: true,
117
+ },
110
118
  // WU-1836: Phase status update options
111
119
  phaseId: {
112
120
  name: 'phaseId',
@@ -145,6 +153,7 @@ function parseArgs() {
145
153
  EDIT_OPTIONS.description,
146
154
  EDIT_OPTIONS.addPhase,
147
155
  EDIT_OPTIONS.addSuccessMetric,
156
+ EDIT_OPTIONS.removeSuccessMetric,
148
157
  // WU-1836: Phase status update options
149
158
  EDIT_OPTIONS.phaseId,
150
159
  EDIT_OPTIONS.phaseStatus,
@@ -163,6 +172,9 @@ function parseArgs() {
163
172
  }
164
173
  return opts;
165
174
  }
175
+ export function validateEditArgs(opts) {
176
+ return validateInitiativeEditCliArgs(opts);
177
+ }
166
178
  /**
167
179
  * Validate Initiative ID format
168
180
  */
@@ -266,7 +278,7 @@ function applyBlockingEdits(updated, opts) {
266
278
  * Apply lane edits (add and remove)
267
279
  * Adds first, then removes (WU-2276)
268
280
  */
269
- function applyLaneEdits(updated, opts) {
281
+ export function applyLaneEdits(updated, opts) {
270
282
  if (opts.addLane && opts.addLane.length > 0) {
271
283
  updated.lanes = updated.lanes || [];
272
284
  for (const lane of opts.addLane) {
@@ -283,7 +295,7 @@ function applyLaneEdits(updated, opts) {
283
295
  /**
284
296
  * Apply array append edits (notes, success metrics)
285
297
  */
286
- function applyArrayEdits(updated, opts) {
298
+ export function applyArrayEdits(updated, opts) {
287
299
  applyLaneEdits(updated, opts);
288
300
  if (opts.notes) {
289
301
  updated.notes = updated.notes || [];
@@ -297,6 +309,10 @@ function applyArrayEdits(updated, opts) {
297
309
  }
298
310
  }
299
311
  }
312
+ if (opts.removeSuccessMetric && opts.removeSuccessMetric.length > 0) {
313
+ updated.success_metrics = updated.success_metrics || [];
314
+ updated.success_metrics = updated.success_metrics.filter((metric) => !opts.removeSuccessMetric.includes(metric));
315
+ }
300
316
  }
301
317
  /**
302
318
  * Apply phase edits with auto-incremented IDs
@@ -330,7 +346,7 @@ function applyPhaseStatusEdit(updated, phaseId, phaseStatus) {
330
346
  * Apply edits to Initiative YAML
331
347
  * Returns the updated Initiative object
332
348
  */
333
- function applyEdits(initiative, opts) {
349
+ export function applyEdits(initiative, opts) {
334
350
  const updated = { ...initiative };
335
351
  if (opts.status) {
336
352
  validateStatus(opts.status);
@@ -353,6 +369,42 @@ function applyEdits(initiative, opts) {
353
369
  }
354
370
  return updated;
355
371
  }
372
+ /**
373
+ * Check if the command has at least one edit operation
374
+ */
375
+ export function hasAnyEdits(opts) {
376
+ return (opts.status ||
377
+ opts.blockedBy ||
378
+ opts.unblock ||
379
+ (opts.addLane && opts.addLane.length > 0) ||
380
+ (opts.removeLane && opts.removeLane.length > 0) ||
381
+ opts.notes ||
382
+ opts.description ||
383
+ (opts.addPhase && opts.addPhase.length > 0) ||
384
+ (opts.addSuccessMetric && opts.addSuccessMetric.length > 0) ||
385
+ (opts.removeSuccessMetric && opts.removeSuccessMetric.length > 0) ||
386
+ (opts.phaseId && opts.phaseStatus) ||
387
+ opts.created);
388
+ }
389
+ /**
390
+ * Build help message shown when no edits are provided
391
+ */
392
+ export function buildNoEditsMessage() {
393
+ return ('No edits specified.\n\n' +
394
+ 'Provide one of:\n' +
395
+ ' --status <status> Update initiative status\n' +
396
+ ' --blocked-by <INIT-ID> Set blocking initiative (requires --blocked-reason)\n' +
397
+ ' --unblock Remove blocked_by and blocked_reason\n' +
398
+ ' --add-lane <lane> Add lane (repeatable)\n' +
399
+ ' --remove-lane <lane> Remove lane (repeatable)\n' +
400
+ ' --notes <text> Append note\n' +
401
+ ' --description <text> Replace description field\n' +
402
+ ' --add-phase <title> Add phase with auto-incremented id (repeatable)\n' +
403
+ ' --add-success-metric <text> Add success metric (repeatable, deduplicated)\n' +
404
+ ' --remove-success-metric <text> Remove success metric (repeatable, exact match)\n' +
405
+ ' --phase-id <id> --phase-status <status> Update specific phase status\n' +
406
+ ' --created <YYYY-MM-DD> Set created date');
407
+ }
356
408
  /**
357
409
  * Main entry point
358
410
  */
@@ -360,6 +412,10 @@ async function main() {
360
412
  const opts = parseArgs();
361
413
  const { id } = opts;
362
414
  console.log(`${PREFIX} Starting Initiative edit for ${id}`);
415
+ const validation = validateEditArgs(opts);
416
+ if (!validation.valid) {
417
+ die(`Invalid initiative:edit arguments:\n - ${validation.errors.join('\n - ')}`);
418
+ }
363
419
  // Validate inputs
364
420
  validateInitIdFormat(id);
365
421
  const originalInit = loadInitiative(id);
@@ -378,31 +434,9 @@ async function main() {
378
434
  validatePhaseStatus(opts.phaseStatus);
379
435
  }
380
436
  // Check we have something to edit
381
- const hasEdits = opts.status ||
382
- opts.blockedBy ||
383
- opts.unblock ||
384
- (opts.addLane && opts.addLane.length > 0) ||
385
- (opts.removeLane && opts.removeLane.length > 0) ||
386
- opts.notes ||
387
- opts.description ||
388
- (opts.addPhase && opts.addPhase.length > 0) ||
389
- (opts.addSuccessMetric && opts.addSuccessMetric.length > 0) ||
390
- (opts.phaseId && opts.phaseStatus) ||
391
- opts.created;
437
+ const hasEdits = hasAnyEdits(opts);
392
438
  if (!hasEdits) {
393
- die('No edits specified.\n\n' +
394
- 'Provide one of:\n' +
395
- ' --status <status> Update initiative status\n' +
396
- ' --blocked-by <INIT-ID> Set blocking initiative (requires --blocked-reason)\n' +
397
- ' --unblock Remove blocked_by and blocked_reason\n' +
398
- ' --add-lane <lane> Add lane (repeatable)\n' +
399
- ' --remove-lane <lane> Remove lane (repeatable)\n' +
400
- ' --notes <text> Append note\n' +
401
- ' --description <text> Replace description field\n' +
402
- ' --add-phase <title> Add phase with auto-incremented id (repeatable)\n' +
403
- ' --add-success-metric <text> Add success metric (repeatable, deduplicated)\n' +
404
- ' --phase-id <id> --phase-status <status> Update specific phase status\n' +
405
- ' --created <YYYY-MM-DD> Set created date');
439
+ die(buildNoEditsMessage());
406
440
  }
407
441
  // Apply edits to get updated Initiative
408
442
  const updatedInit = applyEdits(originalInit, opts);
@@ -445,7 +479,8 @@ async function main() {
445
479
  }
446
480
  }
447
481
  }
448
- main().catch((err) => {
449
- console.error(`${PREFIX} ${err.message}`);
450
- process.exit(EXIT_CODES.ERROR);
451
- });
482
+ // WU-1476: Use standard CLI entry-point guard to avoid side effects during test imports
483
+ if (import.meta.main) {
484
+ void runCLI(main);
485
+ }
486
+ //# sourceMappingURL=initiative-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiative-edit.js","sourceRoot":"","sources":["../src/initiative-edit.ts"],"names":[],"mappings":"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"}
@@ -101,3 +101,4 @@ import { runCLI } from './cli-entry-point.js';
101
101
  if (import.meta.main) {
102
102
  runCLI(main);
103
103
  }
104
+ //# sourceMappingURL=initiative-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiative-list.js","sourceRoot":"","sources":["../src/initiative-list.ts"],"names":[],"mappings":"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"}
@@ -335,3 +335,4 @@ if (import.meta.main) {
335
335
  }
336
336
  // Export for testing
337
337
  export { main };
338
+ //# sourceMappingURL=initiative-plan.js.map