@lumenflow/cli 2.21.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +53 -47
  2. package/dist/commands.js +3 -0
  3. package/dist/commands.js.map +1 -1
  4. package/dist/config-get.js +56 -0
  5. package/dist/config-get.js.map +1 -0
  6. package/dist/config-set.js +287 -0
  7. package/dist/config-set.js.map +1 -0
  8. package/dist/gates-runners.js +1 -1
  9. package/dist/gates-runners.js.map +1 -1
  10. package/dist/git-log.js +5 -3
  11. package/dist/git-log.js.map +1 -1
  12. package/dist/guard-worktree-commit.js +1 -1
  13. package/dist/guard-worktree-commit.js.map +1 -1
  14. package/dist/init-templates.js +17 -1
  15. package/dist/init-templates.js.map +1 -1
  16. package/dist/init.js +21 -3
  17. package/dist/init.js.map +1 -1
  18. package/dist/initiative-create.js +19 -4
  19. package/dist/initiative-create.js.map +1 -1
  20. package/dist/lane-edit.js +318 -0
  21. package/dist/lane-edit.js.map +1 -0
  22. package/dist/lane-lifecycle-process.js +92 -2
  23. package/dist/lane-lifecycle-process.js.map +1 -1
  24. package/dist/lane-setup.js +19 -2
  25. package/dist/lane-setup.js.map +1 -1
  26. package/dist/mem-checkpoint.js +70 -3
  27. package/dist/mem-checkpoint.js.map +1 -1
  28. package/dist/orchestrate-initiative.js +15 -1
  29. package/dist/orchestrate-initiative.js.map +1 -1
  30. package/dist/pack-hash.js +101 -0
  31. package/dist/pack-hash.js.map +1 -0
  32. package/dist/pack-install.js +407 -0
  33. package/dist/pack-install.js.map +1 -0
  34. package/dist/pack-publish.js +277 -0
  35. package/dist/pack-publish.js.map +1 -0
  36. package/dist/pack-scaffold.js +269 -0
  37. package/dist/pack-scaffold.js.map +1 -0
  38. package/dist/pack-search.js +142 -0
  39. package/dist/pack-search.js.map +1 -0
  40. package/dist/pack-validate.js +208 -0
  41. package/dist/pack-validate.js.map +1 -0
  42. package/dist/public-manifest.js +46 -0
  43. package/dist/public-manifest.js.map +1 -1
  44. package/dist/release.js +1 -1
  45. package/dist/release.js.map +1 -1
  46. package/dist/task-claim.js +667 -0
  47. package/dist/task-claim.js.map +1 -0
  48. package/dist/workspace-init.js +321 -0
  49. package/dist/workspace-init.js.map +1 -0
  50. package/dist/wu-block.js +1 -1
  51. package/dist/wu-block.js.map +1 -1
  52. package/dist/wu-claim-cloud.js +16 -0
  53. package/dist/wu-claim-cloud.js.map +1 -1
  54. package/dist/wu-claim-state.js +0 -1
  55. package/dist/wu-claim-state.js.map +1 -1
  56. package/dist/wu-claim.js +13 -3
  57. package/dist/wu-claim.js.map +1 -1
  58. package/dist/wu-create-content.js +8 -2
  59. package/dist/wu-create-content.js.map +1 -1
  60. package/dist/wu-create-validation.js +5 -3
  61. package/dist/wu-create-validation.js.map +1 -1
  62. package/dist/wu-create.js +5 -1
  63. package/dist/wu-create.js.map +1 -1
  64. package/dist/wu-done.js +5 -3
  65. package/dist/wu-done.js.map +1 -1
  66. package/dist/wu-spawn-prompt-builders.js +86 -28
  67. package/dist/wu-spawn-prompt-builders.js.map +1 -1
  68. package/package.json +19 -7
@@ -0,0 +1,318 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @file lane-edit.ts
4
+ * WU-1854: Safe in-place lane definition editing via micro-worktree
5
+ *
6
+ * Enables editing lane definitions in .lumenflow.config.yaml without
7
+ * directly writing to main. Uses the micro-worktree isolation pattern
8
+ * (WU-1262) to commit changes atomically.
9
+ *
10
+ * Supports: --rename, --wip-limit, --add-path, --remove-path, --description
11
+ *
12
+ * Usage:
13
+ * pnpm lane:edit --name 'Framework: CLI' --rename 'Framework: CLI WU Commands'
14
+ * pnpm lane:edit --name 'Feature: API' --wip-limit 3
15
+ * pnpm lane:edit --name 'Core: Domain' --add-path 'packages/events/'
16
+ */
17
+ import path from 'node:path';
18
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
19
+ import YAML from 'yaml';
20
+ import { findProjectRoot } from '@lumenflow/core/config';
21
+ import { die } from '@lumenflow/core/error-handler';
22
+ import { CONFIG_FILES, FILE_SYSTEM } from '@lumenflow/core/wu-constants';
23
+ import { withMicroWorktree } from '@lumenflow/core/micro-worktree';
24
+ import { runCLI } from './cli-entry-point.js';
25
+ import { validateLaneArtifacts, classifyLaneLifecycleForProject, LANE_LIFECYCLE_STATUS, } from './lane-lifecycle-process.js';
26
+ // ---------------------------------------------------------------------------
27
+ // Constants
28
+ // ---------------------------------------------------------------------------
29
+ const LOG_PREFIX = '[lane:edit]';
30
+ const OPERATION_NAME = 'lane-edit';
31
+ const ARG_NAME = '--name';
32
+ const ARG_RENAME = '--rename';
33
+ const ARG_WIP_LIMIT = '--wip-limit';
34
+ const ARG_ADD_PATH = '--add-path';
35
+ const ARG_REMOVE_PATH = '--remove-path';
36
+ const ARG_DESCRIPTION = '--description';
37
+ const ARG_HELP = '--help';
38
+ const COMMIT_PREFIX = 'chore: lane:edit';
39
+ // ---------------------------------------------------------------------------
40
+ // Help
41
+ // ---------------------------------------------------------------------------
42
+ const HELP_TEXT = `Usage: pnpm lane:edit --name <lane> [options]
43
+
44
+ Edit a lane definition in .lumenflow.config.yaml via micro-worktree commit.
45
+
46
+ Required:
47
+ ${ARG_NAME} <name> Target lane name (exact match)
48
+
49
+ Edit flags (at least one required):
50
+ ${ARG_RENAME} <name> Rename the lane
51
+ ${ARG_WIP_LIMIT} <n> Set WIP limit (positive integer)
52
+ ${ARG_ADD_PATH} <path> Add a code path (repeatable)
53
+ ${ARG_REMOVE_PATH} <path> Remove a code path (repeatable)
54
+ ${ARG_DESCRIPTION} <text> Set lane description
55
+
56
+ Examples:
57
+ pnpm lane:edit --name 'Framework: CLI' --rename 'Framework: CLI WU Commands'
58
+ pnpm lane:edit --name 'Feature: API' --wip-limit 3
59
+ pnpm lane:edit --name 'Core: Domain' --add-path 'packages/events/'
60
+ `;
61
+ // ---------------------------------------------------------------------------
62
+ // Argument parsing
63
+ // ---------------------------------------------------------------------------
64
+ export function parseLaneEditArgs(argv) {
65
+ if (argv.includes(ARG_HELP)) {
66
+ console.log(HELP_TEXT);
67
+ process.exit(0);
68
+ }
69
+ let name;
70
+ let rename;
71
+ let wipLimit;
72
+ const addPaths = [];
73
+ const removePaths = [];
74
+ let description;
75
+ for (let i = 0; i < argv.length; i++) {
76
+ const arg = argv[i];
77
+ const next = argv[i + 1];
78
+ switch (arg) {
79
+ case ARG_NAME:
80
+ name = next;
81
+ i++;
82
+ break;
83
+ case ARG_RENAME:
84
+ rename = next;
85
+ i++;
86
+ break;
87
+ case ARG_WIP_LIMIT: {
88
+ const parsed = parseInt(next, 10);
89
+ if (isNaN(parsed) || parsed <= 0) {
90
+ throw new Error(`${ARG_WIP_LIMIT} must be a positive integer, got: ${next}`);
91
+ }
92
+ wipLimit = parsed;
93
+ i++;
94
+ break;
95
+ }
96
+ case ARG_ADD_PATH:
97
+ addPaths.push(next);
98
+ i++;
99
+ break;
100
+ case ARG_REMOVE_PATH:
101
+ removePaths.push(next);
102
+ i++;
103
+ break;
104
+ case ARG_DESCRIPTION:
105
+ description = next;
106
+ i++;
107
+ break;
108
+ default:
109
+ break;
110
+ }
111
+ }
112
+ if (!name) {
113
+ throw new Error(`${ARG_NAME} is required. Run with ${ARG_HELP} for usage.`);
114
+ }
115
+ const hasEdits = rename !== undefined ||
116
+ wipLimit !== undefined ||
117
+ addPaths.length > 0 ||
118
+ removePaths.length > 0 ||
119
+ description !== undefined;
120
+ if (!hasEdits) {
121
+ throw new Error(`At least one edit flag is required (${ARG_RENAME}, ${ARG_WIP_LIMIT}, ${ARG_ADD_PATH}, ${ARG_REMOVE_PATH}, ${ARG_DESCRIPTION}). Run with ${ARG_HELP} for usage.`);
122
+ }
123
+ return {
124
+ name,
125
+ rename,
126
+ wipLimit,
127
+ addPaths: addPaths.length > 0 ? addPaths : undefined,
128
+ removePaths: removePaths.length > 0 ? removePaths : undefined,
129
+ description,
130
+ };
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // Precondition validation
134
+ // ---------------------------------------------------------------------------
135
+ export function validateLaneEditPreconditions(projectRoot) {
136
+ const configPath = path.join(projectRoot, CONFIG_FILES.LUMENFLOW_CONFIG);
137
+ if (!existsSync(configPath)) {
138
+ return {
139
+ ok: false,
140
+ error: `${LOG_PREFIX} Missing ${CONFIG_FILES.LUMENFLOW_CONFIG}. Run \`pnpm exec lumenflow init\` first.`,
141
+ };
142
+ }
143
+ const classification = classifyLaneLifecycleForProject(projectRoot);
144
+ const { status } = classification;
145
+ if (status !== LANE_LIFECYCLE_STATUS.LOCKED && status !== LANE_LIFECYCLE_STATUS.DRAFT) {
146
+ return {
147
+ ok: false,
148
+ error: `${LOG_PREFIX} Lane lifecycle status is "${status}". ` +
149
+ `lane:edit requires lanes to be in locked or draft status. ` +
150
+ `Run: pnpm lane:setup && pnpm lane:lock`,
151
+ };
152
+ }
153
+ return { ok: true };
154
+ }
155
+ // ---------------------------------------------------------------------------
156
+ // Pure lane mutation logic (no side effects, testable)
157
+ // ---------------------------------------------------------------------------
158
+ export function applyLaneEdit(definitions, options) {
159
+ const { name, rename, wipLimit, addPaths, removePaths, description } = options;
160
+ // Find the target lane
161
+ const targetIndex = definitions.findIndex((d) => d.name === name);
162
+ if (targetIndex === -1) {
163
+ return {
164
+ ok: false,
165
+ error: `${LOG_PREFIX} Lane "${name}" not found in definitions.`,
166
+ };
167
+ }
168
+ // Deep clone definitions to avoid mutating the input
169
+ const updated = JSON.parse(JSON.stringify(definitions));
170
+ const target = updated[targetIndex];
171
+ // Apply rename
172
+ if (rename !== undefined) {
173
+ // Check that new name doesn't already exist
174
+ const nameConflict = updated.some((d, i) => i !== targetIndex && d.name === rename);
175
+ if (nameConflict) {
176
+ return {
177
+ ok: false,
178
+ error: `${LOG_PREFIX} Lane "${rename}" already exists. Cannot rename.`,
179
+ };
180
+ }
181
+ target.name = rename;
182
+ }
183
+ // Apply wip_limit
184
+ if (wipLimit !== undefined) {
185
+ target.wip_limit = wipLimit;
186
+ }
187
+ // Apply add-path
188
+ if (addPaths !== undefined) {
189
+ const currentPaths = target.code_paths ?? [];
190
+ for (const addPath of addPaths) {
191
+ if (currentPaths.includes(addPath)) {
192
+ return {
193
+ ok: false,
194
+ error: `${LOG_PREFIX} Path "${addPath}" already exists in code_paths for lane "${target.name}".`,
195
+ };
196
+ }
197
+ currentPaths.push(addPath);
198
+ }
199
+ target.code_paths = currentPaths;
200
+ }
201
+ // Apply remove-path
202
+ if (removePaths !== undefined) {
203
+ const currentPaths = target.code_paths ?? [];
204
+ for (const removePath of removePaths) {
205
+ const pathIndex = currentPaths.indexOf(removePath);
206
+ if (pathIndex === -1) {
207
+ return {
208
+ ok: false,
209
+ error: `${LOG_PREFIX} Path "${removePath}" not found in code_paths for lane "${target.name}".`,
210
+ };
211
+ }
212
+ currentPaths.splice(pathIndex, 1);
213
+ }
214
+ target.code_paths = currentPaths;
215
+ }
216
+ // Apply description
217
+ if (description !== undefined) {
218
+ target.description = description;
219
+ }
220
+ return { ok: true, definitions: updated };
221
+ }
222
+ // ---------------------------------------------------------------------------
223
+ // Config I/O helpers
224
+ // ---------------------------------------------------------------------------
225
+ function readConfigDoc(configPath) {
226
+ const content = readFileSync(configPath, FILE_SYSTEM.UTF8);
227
+ const parsed = YAML.parse(content);
228
+ return parsed && typeof parsed === 'object' ? parsed : {};
229
+ }
230
+ function writeConfigDoc(configPath, config) {
231
+ const nextContent = YAML.stringify(config);
232
+ writeFileSync(configPath, nextContent, FILE_SYSTEM.UTF8);
233
+ }
234
+ // ---------------------------------------------------------------------------
235
+ // Build commit message
236
+ // ---------------------------------------------------------------------------
237
+ function buildCommitMessage(options) {
238
+ const parts = [];
239
+ if (options.rename) {
240
+ parts.push(`rename '${options.name}' to '${options.rename}'`);
241
+ }
242
+ if (options.wipLimit !== undefined) {
243
+ parts.push(`set wip_limit=${options.wipLimit} on '${options.rename ?? options.name}'`);
244
+ }
245
+ if (options.addPaths) {
246
+ parts.push(`add path(s) ${options.addPaths.join(', ')} to '${options.rename ?? options.name}'`);
247
+ }
248
+ if (options.removePaths) {
249
+ parts.push(`remove path(s) ${options.removePaths.join(', ')} from '${options.rename ?? options.name}'`);
250
+ }
251
+ if (options.description !== undefined) {
252
+ parts.push(`set description on '${options.rename ?? options.name}'`);
253
+ }
254
+ return `${COMMIT_PREFIX} ${parts.join(', ')}`;
255
+ }
256
+ // ---------------------------------------------------------------------------
257
+ // Main
258
+ // ---------------------------------------------------------------------------
259
+ async function main() {
260
+ const userArgs = process.argv.slice(2);
261
+ const options = parseLaneEditArgs(userArgs);
262
+ const projectRoot = findProjectRoot();
263
+ // Step 1: Validate preconditions
264
+ const preconditions = validateLaneEditPreconditions(projectRoot);
265
+ if (!preconditions.ok) {
266
+ die(preconditions.error);
267
+ }
268
+ console.log(`${LOG_PREFIX} Editing lane "${options.name}" via micro-worktree isolation (WU-1854)`);
269
+ // Step 2: Use micro-worktree to make atomic changes
270
+ await withMicroWorktree({
271
+ operation: OPERATION_NAME,
272
+ id: `lane-edit-${Date.now()}`,
273
+ logPrefix: LOG_PREFIX,
274
+ pushOnly: true,
275
+ async execute({ worktreePath }) {
276
+ const configRelPath = CONFIG_FILES.LUMENFLOW_CONFIG;
277
+ const configPath = path.join(worktreePath, configRelPath);
278
+ if (!existsSync(configPath)) {
279
+ die(`${LOG_PREFIX} Config file not found in micro-worktree: ${configRelPath}`);
280
+ }
281
+ // Read current config
282
+ const config = readConfigDoc(configPath);
283
+ const definitions = (config.lanes?.definitions ?? []);
284
+ // Apply edits
285
+ const editResult = applyLaneEdit(definitions, options);
286
+ if (!editResult.ok) {
287
+ die(editResult.error);
288
+ }
289
+ // Write updated config
290
+ if (!config.lanes) {
291
+ config.lanes = {};
292
+ }
293
+ config.lanes.definitions = editResult.definitions;
294
+ writeConfigDoc(configPath, config);
295
+ // Run lane:validate on the updated config to surface errors before commit
296
+ const validation = validateLaneArtifacts(worktreePath);
297
+ if (validation.warnings.length > 0 || validation.invalidLanes.length > 0) {
298
+ const issues = [
299
+ ...validation.warnings.map((w) => ` - ${w}`),
300
+ ...validation.invalidLanes.map((l) => ` - Invalid lane: ${l}`),
301
+ ].join('\n');
302
+ die(`${LOG_PREFIX} lane:validate failed after edit. Changes NOT committed.\n${issues}`);
303
+ }
304
+ console.log(`${LOG_PREFIX} lane:validate passed after edit.`);
305
+ return {
306
+ commitMessage: buildCommitMessage(options),
307
+ files: [configRelPath],
308
+ };
309
+ },
310
+ });
311
+ // Step 3: Report success
312
+ const displayName = options.rename ?? options.name;
313
+ console.log(`${LOG_PREFIX} Lane "${displayName}" updated successfully.`);
314
+ }
315
+ if (import.meta.main) {
316
+ void runCLI(main);
317
+ }
318
+ //# sourceMappingURL=lane-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-edit.js","sourceRoot":"","sources":["../src/lane-edit.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * `init` should bootstrap tooling only. Lane artifacts are created/validated/
9
9
  * finalized through dedicated lane lifecycle commands.
10
10
  */
11
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
11
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
12
12
  import path from 'node:path';
13
13
  import YAML from 'yaml';
14
14
  import { CONFIG_FILES, FILE_SYSTEM, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
@@ -215,12 +215,102 @@ export function buildInitLaneLifecycleMessage(status) {
215
215
  `Next step: ${recommendLaneLifecycleNextStep(status)}`,
216
216
  ].join(NEWLINE);
217
217
  }
218
+ /**
219
+ * WU-1755: Detect workspace structure and generate project-specific lane definitions.
220
+ * Scans pnpm-workspace.yaml or package.json workspaces to build lanes from actual project layout.
221
+ * Falls back to DEFAULT_LANE_DEFINITIONS if no workspace config is found.
222
+ */
223
+ function detectWorkspaceLanes(projectRoot) {
224
+ const lanes = [];
225
+ // Try pnpm-workspace.yaml first
226
+ const pnpmWorkspacePath = path.join(projectRoot, 'pnpm-workspace.yaml');
227
+ let workspacePatterns = [];
228
+ if (existsSync(pnpmWorkspacePath)) {
229
+ try {
230
+ const content = readFileSync(pnpmWorkspacePath, FILE_SYSTEM.ENCODING);
231
+ const parsed = YAML.parse(content);
232
+ workspacePatterns = parsed?.packages ?? [];
233
+ }
234
+ catch {
235
+ // Fall through to package.json check
236
+ }
237
+ }
238
+ // Fall back to package.json workspaces
239
+ if (workspacePatterns.length === 0) {
240
+ const pkgJsonPath = path.join(projectRoot, 'package.json');
241
+ if (existsSync(pkgJsonPath)) {
242
+ try {
243
+ const content = readFileSync(pkgJsonPath, FILE_SYSTEM.ENCODING);
244
+ const parsed = JSON.parse(content);
245
+ if (Array.isArray(parsed?.workspaces)) {
246
+ workspacePatterns = parsed.workspaces;
247
+ }
248
+ else if (parsed?.workspaces?.packages) {
249
+ workspacePatterns = parsed.workspaces.packages;
250
+ }
251
+ }
252
+ catch {
253
+ // Fall through to defaults
254
+ }
255
+ }
256
+ }
257
+ if (workspacePatterns.length === 0) {
258
+ return deepCloneDefaultLaneDefinitions();
259
+ }
260
+ // Scan workspace patterns for actual directories
261
+ for (const pattern of workspacePatterns) {
262
+ const baseDir = pattern.replace(/\/?\*$/, '');
263
+ const fullPath = path.join(projectRoot, baseDir);
264
+ if (!existsSync(fullPath))
265
+ continue;
266
+ try {
267
+ const entries = readdirSync(fullPath, { withFileTypes: true });
268
+ for (const entry of entries) {
269
+ if (!entry.isDirectory())
270
+ continue;
271
+ const pkgPath = path.join(fullPath, entry.name, 'package.json');
272
+ if (!existsSync(pkgPath))
273
+ continue;
274
+ // Determine lane category from directory structure
275
+ const isApp = baseDir.includes('app');
276
+ const category = isApp ? 'Experience' : 'Framework';
277
+ const displayName = entry.name.replace(/^@[^/]+\//, '');
278
+ lanes.push({
279
+ name: `${category}: ${displayName.charAt(0).toUpperCase() + displayName.slice(1)}`,
280
+ wip_limit: 1,
281
+ code_paths: [`${baseDir}/${entry.name}/**`],
282
+ });
283
+ }
284
+ }
285
+ catch {
286
+ // Skip unreadable directories
287
+ }
288
+ }
289
+ // Always include Content: Documentation if docs/ exists
290
+ if (existsSync(path.join(projectRoot, 'docs'))) {
291
+ lanes.push({
292
+ name: 'Content: Documentation',
293
+ wip_limit: 1,
294
+ code_paths: ['docs/**', '*.md'],
295
+ });
296
+ }
297
+ // Always include Operations: CI/CD if .github/ exists
298
+ if (existsSync(path.join(projectRoot, '.github'))) {
299
+ lanes.push({
300
+ name: 'Operations: CI/CD',
301
+ wip_limit: 1,
302
+ code_paths: ['.github/workflows/**', '.github/actions/**'],
303
+ });
304
+ }
305
+ return lanes.length > 0 ? lanes : deepCloneDefaultLaneDefinitions();
306
+ }
218
307
  export function ensureDraftLaneArtifacts(projectRoot) {
219
308
  const config = readConfigDoc(projectRoot);
220
309
  const lanes = ensureLanesDoc(config);
221
310
  let createdDefinitions = false;
222
311
  if (!hasLaneDefinitions(config)) {
223
- lanes[LANE_DEFINITIONS_KEY] = deepCloneDefaultLaneDefinitions();
312
+ // WU-1755: Detect workspace structure for project-specific lanes
313
+ lanes[LANE_DEFINITIONS_KEY] = detectWorkspaceLanes(projectRoot);
224
314
  createdDefinitions = true;
225
315
  }
226
316
  const laneInferencePath = getLaneInferencePath(projectRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"lane-lifecycle-process.js","sourceRoot":"","sources":["../src/lane-lifecycle-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lane-lifecycle-process.js","sourceRoot":"","sources":["../src/lane-lifecycle-process.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { existsSync } from 'node:fs';
4
4
  import { findProjectRoot } from '@lumenflow/core/config';
5
5
  import { die } from '@lumenflow/core/error-handler';
6
6
  import { CONFIG_FILES } from '@lumenflow/core/wu-constants';
7
- import { ensureDraftLaneArtifacts, LANE_LIFECYCLE_STATUS, recommendLaneLifecycleNextStep, } from './lane-lifecycle-process.js';
7
+ import { ensureDraftLaneArtifacts, LANE_LIFECYCLE_STATUS, recommendLaneLifecycleNextStep, validateLaneArtifacts, setLaneLifecycleStatus, } from './lane-lifecycle-process.js';
8
8
  import { runCLI } from './cli-entry-point.js';
9
9
  const LOG_PREFIX = '[lane:setup]';
10
10
  const LANE_VALIDATE_COMMAND = 'pnpm lane:validate';
@@ -18,8 +18,9 @@ function ensureLumenflowInit(projectRoot) {
18
18
  async function main() {
19
19
  const projectRoot = findProjectRoot();
20
20
  ensureLumenflowInit(projectRoot);
21
+ // WU-1755: Parse --lock flag from argv
22
+ const lockFlag = process.argv.includes('--lock');
21
23
  const result = ensureDraftLaneArtifacts(projectRoot);
22
- const nextStep = recommendLaneLifecycleNextStep(LANE_LIFECYCLE_STATUS.DRAFT);
23
24
  console.log(`${LOG_PREFIX} Lane lifecycle status: ${result.status}`);
24
25
  if (result.createdDefinitions || result.createdInference) {
25
26
  console.log(`${LOG_PREFIX} Draft artifacts prepared:`);
@@ -29,6 +30,22 @@ async function main() {
29
30
  else {
30
31
  console.log(`${LOG_PREFIX} Existing lane artifacts preserved. You can expand/edit lanes safely.`);
31
32
  }
33
+ // WU-1755: --lock combines setup + validate + lock into a single command
34
+ if (lockFlag) {
35
+ const validation = validateLaneArtifacts(projectRoot);
36
+ if (validation.warnings.length > 0) {
37
+ for (const warning of validation.warnings) {
38
+ console.warn(`${LOG_PREFIX} ⚠️ ${warning}`);
39
+ }
40
+ }
41
+ if (validation.missingDefinitions || validation.missingInference) {
42
+ die(`${LOG_PREFIX} Cannot lock: lane artifacts are incomplete. Fix warnings above.`);
43
+ }
44
+ setLaneLifecycleStatus(projectRoot, LANE_LIFECYCLE_STATUS.LOCKED);
45
+ console.log(`${LOG_PREFIX} ✅ Lane lifecycle locked. Ready for WU creation.`);
46
+ return;
47
+ }
48
+ const nextStep = recommendLaneLifecycleNextStep(LANE_LIFECYCLE_STATUS.DRAFT);
32
49
  console.log(`${LOG_PREFIX} Validate draft: ${LANE_VALIDATE_COMMAND}`);
33
50
  console.log(`${LOG_PREFIX} Lock lifecycle: ${nextStep}`);
34
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lane-setup.js","sourceRoot":"","sources":["../src/lane-setup.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,cAAc,CAAC;AAClC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,GAAG,CACD,GAAG,UAAU,YAAY,YAAY,CAAC,gBAAgB,OAAO;YAC3D,sEAAsE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,2BAA2B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,4BAA4B,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CACT,OAAO,YAAY,CAAC,gBAAgB,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAC7I,CAAC;QACF,OAAO,CAAC,GAAG,CACT,OAAO,YAAY,CAAC,cAAc,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAC5H,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,uEAAuE,CACrF,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,oBAAoB,qBAAqB,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,oBAAoB,QAAQ,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"lane-setup.js","sourceRoot":"","sources":["../src/lane-setup.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,8BAA8B,EAC9B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,cAAc,CAAC;AAClC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,GAAG,CACD,GAAG,UAAU,YAAY,YAAY,CAAC,gBAAgB,OAAO;YAC3D,sEAAsE,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,2BAA2B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,4BAA4B,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CACT,OAAO,YAAY,CAAC,gBAAgB,KAAK,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAC7I,CAAC;QACF,OAAO,CAAC,GAAG,CACT,OAAO,YAAY,CAAC,cAAc,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAC5H,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,uEAAuE,CACrF,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,QAAQ,OAAO,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,kBAAkB,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACjE,GAAG,CAAC,GAAG,UAAU,kEAAkE,CAAC,CAAC;QACvF,CAAC;QACD,sBAAsB,CAAC,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,kDAAkD,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,8BAA8B,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,oBAAoB,qBAAqB,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,oBAAoB,QAAQ,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -1,28 +1,38 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Memory Checkpoint CLI (WU-1467)
3
+ * Memory Checkpoint CLI (WU-1467, WU-1909)
4
4
  *
5
5
  * Create a checkpoint node for context snapshots.
6
6
  * Used before /clear or session handoff to preserve progress state.
7
7
  *
8
+ * WU-1909: State-store propagation (wu-events.jsonl) is now handled here
9
+ * in the CLI wrapper, guarded by resolveLocation() to only write when
10
+ * running from a worktree (prevents dirtying main checkout).
11
+ *
8
12
  * Includes audit logging to .lumenflow/telemetry/tools.ndjson.
9
13
  *
10
14
  * Usage:
11
15
  * pnpm mem:checkpoint 'note' [--session <id>] [--wu <id>] [--progress <text>] [--next-steps <text>] [--trigger <type>] [--quiet]
12
16
  *
13
- * @see {@link packages/@lumenflow/cli/src/lib/mem-checkpoint-core.ts} - Core logic
17
+ * @see {@link packages/@lumenflow/memory/src/mem-checkpoint-core.ts} - Core logic (memory store only)
14
18
  * @see {@link packages/@lumenflow/cli/src/__tests__/mem-checkpoint.test.ts} - Tests
15
19
  */
16
20
  import fs from 'node:fs/promises';
17
21
  import path from 'node:path';
18
22
  import { createCheckpoint } from '@lumenflow/memory/checkpoint';
19
23
  import { createWUParser, WU_OPTIONS } from '@lumenflow/core/arg-parser';
20
- import { EXIT_CODES, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
24
+ import { EXIT_CODES, LUMENFLOW_PATHS, CONTEXT_VALIDATION } from '@lumenflow/core/wu-constants';
25
+ import { resolveLocation } from '@lumenflow/core/context/location-resolver';
26
+ import { WUStateStore } from '@lumenflow/core/wu-state-store';
21
27
  import { runCLI } from './cli-entry-point.js';
22
28
  /**
23
29
  * Log prefix for mem:checkpoint output
24
30
  */
25
31
  const LOG_PREFIX = '[mem:checkpoint]';
32
+ /**
33
+ * State directory path relative to baseDir
34
+ */
35
+ const STATE_DIR = '.lumenflow/state';
26
36
  /**
27
37
  * Tool name for audit logging
28
38
  */
@@ -67,6 +77,55 @@ const CLI_OPTIONS = {
67
77
  description: 'Suppress output except errors',
68
78
  },
69
79
  };
80
+ /**
81
+ * Propagate checkpoint to wu-events.jsonl state store (WU-1909).
82
+ *
83
+ * Only writes when running from a worktree context, preventing dirty
84
+ * state on main checkout. Uses CONTEXT_VALIDATION.LOCATION_TYPES.WORKTREE
85
+ * constant (no magic strings).
86
+ *
87
+ * @param baseDir - Base directory for state store
88
+ * @param options - Propagation options
89
+ * @returns Result indicating whether propagation occurred
90
+ */
91
+ export async function propagateCheckpointToStateStore(baseDir, options) {
92
+ const { wuId, note, sessionId, progress, nextSteps } = options;
93
+ // Guard: no WU ID means nothing to propagate
94
+ if (!wuId) {
95
+ return { propagated: false, reason: 'no_wu_id' };
96
+ }
97
+ // Guard: resolve location to determine if we're in a worktree
98
+ let locationType;
99
+ try {
100
+ const location = await resolveLocation(baseDir);
101
+ locationType = location.type;
102
+ }
103
+ catch (err) {
104
+ const message = err instanceof Error ? err.message : String(err);
105
+ console.warn(`${LOG_PREFIX} Warning: Could not resolve location: ${message}`);
106
+ return { propagated: false, reason: 'location_resolve_failed' };
107
+ }
108
+ // Guard: only write to state store from worktree context
109
+ if (locationType !== CONTEXT_VALIDATION.LOCATION_TYPES.WORKTREE) {
110
+ return { propagated: false, reason: 'not_in_worktree' };
111
+ }
112
+ // Propagate to wu-events.jsonl
113
+ try {
114
+ const stateDir = path.join(baseDir, STATE_DIR);
115
+ const store = new WUStateStore(stateDir);
116
+ await store.checkpoint(wuId, note, {
117
+ sessionId,
118
+ progress,
119
+ nextSteps,
120
+ });
121
+ return { propagated: true };
122
+ }
123
+ catch (err) {
124
+ const message = err instanceof Error ? err.message : String(err);
125
+ console.warn(`${LOG_PREFIX} Warning: State store write failed: ${message}`);
126
+ return { propagated: false, reason: 'write_failed' };
127
+ }
128
+ }
70
129
  /**
71
130
  * Write audit log entry for tool execution
72
131
  *
@@ -187,6 +246,14 @@ async function main() {
187
246
  nextSteps: args.nextSteps,
188
247
  trigger: args.trigger,
189
248
  });
249
+ // WU-1909: Propagate to wu-events.jsonl only from worktree context
250
+ await propagateCheckpointToStateStore(baseDir, {
251
+ wuId: args.wu,
252
+ note,
253
+ sessionId: args.session,
254
+ progress: args.progress,
255
+ nextSteps: args.nextSteps,
256
+ });
190
257
  }
191
258
  catch (err) {
192
259
  error = err instanceof Error ? err.message : String(err);