@lumenflow/cli 2.18.3 → 2.19.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 (104) hide show
  1. package/README.md +42 -41
  2. package/dist/delegation-list.js +140 -0
  3. package/dist/delegation-list.js.map +1 -0
  4. package/dist/doctor.js +35 -99
  5. package/dist/doctor.js.map +1 -1
  6. package/dist/gates-plan-resolvers.js +150 -0
  7. package/dist/gates-plan-resolvers.js.map +1 -0
  8. package/dist/gates-runners.js +533 -0
  9. package/dist/gates-runners.js.map +1 -0
  10. package/dist/gates-types.js +3 -0
  11. package/dist/gates-types.js.map +1 -1
  12. package/dist/gates-utils.js +316 -0
  13. package/dist/gates-utils.js.map +1 -0
  14. package/dist/gates.js +44 -1016
  15. package/dist/gates.js.map +1 -1
  16. package/dist/hooks/enforcement-generator.js +16 -880
  17. package/dist/hooks/enforcement-generator.js.map +1 -1
  18. package/dist/hooks/enforcement-sync.js +1 -4
  19. package/dist/hooks/enforcement-sync.js.map +1 -1
  20. package/dist/hooks/generators/auto-checkpoint.js +123 -0
  21. package/dist/hooks/generators/auto-checkpoint.js.map +1 -0
  22. package/dist/hooks/generators/enforce-worktree.js +188 -0
  23. package/dist/hooks/generators/enforce-worktree.js.map +1 -0
  24. package/dist/hooks/generators/index.js +16 -0
  25. package/dist/hooks/generators/index.js.map +1 -0
  26. package/dist/hooks/generators/pre-compact-checkpoint.js +134 -0
  27. package/dist/hooks/generators/pre-compact-checkpoint.js.map +1 -0
  28. package/dist/hooks/generators/require-wu.js +115 -0
  29. package/dist/hooks/generators/require-wu.js.map +1 -0
  30. package/dist/hooks/generators/session-start-recovery.js +101 -0
  31. package/dist/hooks/generators/session-start-recovery.js.map +1 -0
  32. package/dist/hooks/generators/signal-utils.js +52 -0
  33. package/dist/hooks/generators/signal-utils.js.map +1 -0
  34. package/dist/hooks/generators/warn-incomplete.js +65 -0
  35. package/dist/hooks/generators/warn-incomplete.js.map +1 -0
  36. package/dist/init-detection.js +228 -0
  37. package/dist/init-detection.js.map +1 -0
  38. package/dist/init-scaffolding.js +146 -0
  39. package/dist/init-scaffolding.js.map +1 -0
  40. package/dist/init-templates.js +1928 -0
  41. package/dist/init-templates.js.map +1 -0
  42. package/dist/init.js +136 -2425
  43. package/dist/init.js.map +1 -1
  44. package/dist/initiative-edit.js +42 -11
  45. package/dist/initiative-edit.js.map +1 -1
  46. package/dist/initiative-remove-wu.js +0 -0
  47. package/dist/initiative-status.js +29 -2
  48. package/dist/initiative-status.js.map +1 -1
  49. package/dist/mem-context.js +22 -9
  50. package/dist/mem-context.js.map +1 -1
  51. package/dist/orchestrate-init-status.js +32 -1
  52. package/dist/orchestrate-init-status.js.map +1 -1
  53. package/dist/orchestrate-monitor.js +38 -38
  54. package/dist/orchestrate-monitor.js.map +1 -1
  55. package/dist/public-manifest.js +12 -5
  56. package/dist/public-manifest.js.map +1 -1
  57. package/dist/shared-validators.js +1 -0
  58. package/dist/shared-validators.js.map +1 -1
  59. package/dist/spawn-list.js +0 -0
  60. package/dist/wu-claim-branch.js +121 -0
  61. package/dist/wu-claim-branch.js.map +1 -0
  62. package/dist/wu-claim-output.js +83 -0
  63. package/dist/wu-claim-output.js.map +1 -0
  64. package/dist/wu-claim-resume-handler.js +85 -0
  65. package/dist/wu-claim-resume-handler.js.map +1 -0
  66. package/dist/wu-claim-state.js +572 -0
  67. package/dist/wu-claim-state.js.map +1 -0
  68. package/dist/wu-claim-validation.js +439 -0
  69. package/dist/wu-claim-validation.js.map +1 -0
  70. package/dist/wu-claim-worktree.js +221 -0
  71. package/dist/wu-claim-worktree.js.map +1 -0
  72. package/dist/wu-claim.js +54 -1402
  73. package/dist/wu-claim.js.map +1 -1
  74. package/dist/wu-create-content.js +254 -0
  75. package/dist/wu-create-content.js.map +1 -0
  76. package/dist/wu-create-readiness.js +57 -0
  77. package/dist/wu-create-readiness.js.map +1 -0
  78. package/dist/wu-create-validation.js +149 -0
  79. package/dist/wu-create-validation.js.map +1 -0
  80. package/dist/wu-create.js +39 -441
  81. package/dist/wu-create.js.map +1 -1
  82. package/dist/wu-done.js +144 -249
  83. package/dist/wu-done.js.map +1 -1
  84. package/dist/wu-edit-operations.js +432 -0
  85. package/dist/wu-edit-operations.js.map +1 -0
  86. package/dist/wu-edit-validators.js +280 -0
  87. package/dist/wu-edit-validators.js.map +1 -0
  88. package/dist/wu-edit.js +27 -713
  89. package/dist/wu-edit.js.map +1 -1
  90. package/dist/wu-prep.js +32 -2
  91. package/dist/wu-prep.js.map +1 -1
  92. package/dist/wu-repair.js +1 -1
  93. package/dist/wu-repair.js.map +1 -1
  94. package/dist/wu-spawn-prompt-builders.js +1123 -0
  95. package/dist/wu-spawn-prompt-builders.js.map +1 -0
  96. package/dist/wu-spawn-strategy-resolver.js +314 -0
  97. package/dist/wu-spawn-strategy-resolver.js.map +1 -0
  98. package/dist/wu-spawn.js +9 -1398
  99. package/dist/wu-spawn.js.map +1 -1
  100. package/package.json +10 -7
  101. package/templates/core/LUMENFLOW.md.template +29 -99
  102. package/templates/core/ai/onboarding/agent-invocation-guide.md.template +1 -1
  103. package/templates/core/ai/onboarding/quick-ref-commands.md.template +29 -4
  104. package/templates/vendors/claude/.claude/skills/orchestration/SKILL.md.template +8 -8
@@ -0,0 +1,221 @@
1
+ /**
2
+ * @file wu-claim-worktree.ts
3
+ * @description Worktree mode claim workflow handler.
4
+ *
5
+ * WU-1649: Extracted from wu-claim.ts to reduce orchestration complexity.
6
+ * All functions are mechanical extractions preserving original behavior.
7
+ */
8
+ import { readFile } from 'node:fs/promises';
9
+ import path from 'node:path';
10
+ import { parseYAML } from '@lumenflow/core/wu-yaml';
11
+ import { createGitForPath } from '@lumenflow/core/git-adapter';
12
+ import { BRANCHES, REMOTES, LOG_PREFIX, COMMIT_FORMATS, EMOJI, FILE_SYSTEM, } from '@lumenflow/core/wu-constants';
13
+ import { getGitForCwd } from '@lumenflow/core/git-adapter';
14
+ import { shouldSkipRemoteOperations } from '@lumenflow/core/micro-worktree';
15
+ import { getStateStoreDirFromBacklog } from '@lumenflow/core/wu-paths';
16
+ import { emitMandatoryAgentAdvisory } from '@lumenflow/core/orchestration-advisory-loader';
17
+ import { getConfig } from '@lumenflow/core/config';
18
+ import { autoFixWUYaml } from '@lumenflow/core/wu-yaml-fixer';
19
+ import { symlinkNodeModules, symlinkNestedNodeModules } from '@lumenflow/core/worktree-symlink';
20
+ import { updateWUYaml, appendClaimEventOnly, maybeProgressInitiativeStatus, getWorktreeCommitFiles, applyStagedChangesToMicroWorktree, } from './wu-claim-state.js';
21
+ import { surfaceUnreadSignalsForDisplay, printProjectDefaults, printLifecycleNudge, } from './wu-claim-output.js';
22
+ const PREFIX = LOG_PREFIX.CLAIM;
23
+ /**
24
+ * WU-1213: Handle local-only claim metadata update (noPush mode).
25
+ * Extracted to reduce cognitive complexity of claimWorktreeMode.
26
+ *
27
+ * @returns {Promise<{finalTitle: string, initPathToCommit: string | null}>}
28
+ */
29
+ async function handleNoPushMetadataUpdate(ctx) {
30
+ const { args, id, worktree, worktreePath, WU_PATH, BACKLOG_PATH, claimedMode, fixableIssues, sessionId, title, updatedTitle, stagedChanges, } = ctx;
31
+ let finalTitle = updatedTitle || title;
32
+ let initPathToCommit = null;
33
+ if (args.noAuto) {
34
+ await applyStagedChangesToMicroWorktree(worktreePath, stagedChanges);
35
+ }
36
+ else {
37
+ const wtWUPath = path.join(worktreePath, WU_PATH);
38
+ const wtBacklogPath = path.join(worktreePath, BACKLOG_PATH);
39
+ if (fixableIssues && fixableIssues.length > 0) {
40
+ console.log(`${PREFIX} Applying ${fixableIssues.length} YAML fix(es)...`);
41
+ autoFixWUYaml(wtWUPath);
42
+ console.log(`${PREFIX} YAML fixes applied successfully`);
43
+ }
44
+ const updateResult = await updateWUYaml(wtWUPath, id, args.lane, claimedMode, worktree, sessionId);
45
+ finalTitle = updateResult.title || finalTitle;
46
+ const wtStateDir = getStateStoreDirFromBacklog(wtBacklogPath);
47
+ await appendClaimEventOnly(wtStateDir, id, finalTitle, args.lane);
48
+ if (updateResult.initiative) {
49
+ const initProgress = await maybeProgressInitiativeStatus(worktreePath, updateResult.initiative, id);
50
+ initPathToCommit = initProgress.initPath;
51
+ }
52
+ }
53
+ return { finalTitle, initPathToCommit };
54
+ }
55
+ /**
56
+ * WU-1213: Setup worktree dependencies (symlink or full install).
57
+ * Extracted to reduce cognitive complexity of claimWorktreeMode.
58
+ */
59
+ async function setupWorktreeDependencies(worktreePath, originalCwd, skipSetup) {
60
+ // eslint-disable-next-line sonarjs/no-selector-parameter -- skipSetup mirrors CLI flag semantics
61
+ if (skipSetup) {
62
+ // WU-1443: Symlink-only mode for fast claims
63
+ const symlinkResult = symlinkNodeModules(worktreePath, console, originalCwd);
64
+ if (symlinkResult.created) {
65
+ console.log(`${PREFIX} ${EMOJI.SUCCESS} node_modules symlinked (--skip-setup mode)`);
66
+ }
67
+ else if (symlinkResult.refused) {
68
+ console.warn(`${PREFIX} Warning: symlink refused: ${symlinkResult.reason}`);
69
+ console.warn(`${PREFIX} Run 'pnpm install' manually in the worktree`);
70
+ }
71
+ // WU-1579: Auto-symlink nested package node_modules for turbo typecheck
72
+ if (!symlinkResult.refused) {
73
+ const nestedResult = symlinkNestedNodeModules(worktreePath, originalCwd);
74
+ if (nestedResult.created > 0) {
75
+ console.log(`${PREFIX} ${EMOJI.SUCCESS} ${nestedResult.created} nested node_modules symlinked for typecheck`);
76
+ }
77
+ }
78
+ }
79
+ else {
80
+ // WU-1023: Full setup mode (default) - run pnpm install with progress indicator
81
+ console.log(`${PREFIX} Installing worktree dependencies (this may take a moment)...`);
82
+ try {
83
+ const { execFileSync } = await import('node:child_process');
84
+ execFileSync('pnpm', ['install', '--frozen-lockfile'], {
85
+ cwd: worktreePath,
86
+ stdio: 'inherit',
87
+ timeout: 300000, // 5 minute timeout
88
+ });
89
+ console.log(`${PREFIX} ${EMOJI.SUCCESS} Worktree dependencies installed`);
90
+ }
91
+ catch (installError) {
92
+ console.warn(`${PREFIX} Warning: pnpm install failed: ${installError.message}`);
93
+ console.warn(`${PREFIX} You may need to run 'pnpm install' manually in the worktree`);
94
+ console.log(`${PREFIX} Falling back to symlink approach...`);
95
+ applyFallbackSymlinks(worktreePath, originalCwd, console);
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * WU-1029: Apply symlink fallback (root + nested node_modules) after install failure.
101
+ *
102
+ * @param {string} worktreePath - Worktree path
103
+ * @param {string} mainRepoPath - Main repo path
104
+ * @param {Console} logger - Logger (console-compatible)
105
+ */
106
+ export function applyFallbackSymlinks(worktreePath, mainRepoPath, logger = console) {
107
+ const symlinkResult = symlinkNodeModules(worktreePath, logger, mainRepoPath);
108
+ if (symlinkResult.created) {
109
+ logger.log(`${PREFIX} ${EMOJI.SUCCESS} node_modules symlinked as fallback`);
110
+ }
111
+ let nestedResult = null;
112
+ if (!symlinkResult.refused) {
113
+ nestedResult = symlinkNestedNodeModules(worktreePath, mainRepoPath);
114
+ if (nestedResult.created > 0) {
115
+ logger.log(`${PREFIX} ${EMOJI.SUCCESS} ${nestedResult.created} nested node_modules symlinked for typecheck`);
116
+ }
117
+ }
118
+ return { symlinkResult, nestedResult };
119
+ }
120
+ /**
121
+ * Execute worktree mode claim workflow
122
+ *
123
+ * WU-1741: Removed micro-worktree pattern that committed to main during claim.
124
+ * Branch existence (e.g. lane/operations/wu-1234) is the coordination lock.
125
+ * Metadata updates happen IN the work worktree, NOT on main.
126
+ *
127
+ * New flow:
128
+ * 1. Create work worktree+branch from main (branch = lock)
129
+ * 2. Update metadata (WU YAML, status.md, backlog.md) IN worktree
130
+ * 3. Commit metadata in worktree
131
+ * 4. Main only changes via wu:done (single merge point)
132
+ *
133
+ * Benefits:
134
+ * - Simpler mental model: main ONLY changes via wu:done
135
+ * - Branch existence is natural coordination (git prevents duplicates)
136
+ * - Less network traffic (no push during claim)
137
+ * - Cleaner rollback: delete worktree+branch = claim undone
138
+ */
139
+ export async function claimWorktreeMode(ctx) {
140
+ const { args, id, laneK, title, branch, worktree, WU_PATH, updatedTitle } = ctx;
141
+ const originalCwd = process.cwd();
142
+ const worktreePath = path.resolve(worktree);
143
+ const skipRemote = shouldSkipRemoteOperations();
144
+ let finalTitle = updatedTitle || title;
145
+ const commitMsg = COMMIT_FORMATS.CLAIM(id.toLowerCase(), laneK);
146
+ // WU-1741: Step 1 - Create work worktree+branch from main
147
+ console.log(`${PREFIX} Creating worktree (branch = coordination lock)...`);
148
+ // WU-1653: Use local main when no remote (requireRemote=false)
149
+ const startPoint = args.noPush || skipRemote ? BRANCHES.MAIN : `${REMOTES.ORIGIN}/${BRANCHES.MAIN}`;
150
+ await getGitForCwd().worktreeAdd(worktree, branch, startPoint);
151
+ console.log(`${PREFIX} ${EMOJI.SUCCESS} Worktree created at ${worktree}`);
152
+ // WU-1653: Skip push when requireRemote=false (no remote exists)
153
+ if (!args.noPush && !skipRemote) {
154
+ const wtGit = createGitForPath(worktreePath);
155
+ await wtGit.push(REMOTES.ORIGIN, branch, { setUpstream: true });
156
+ }
157
+ // Handle local-only claim metadata update (--no-push or requireRemote=false)
158
+ if (args.noPush || skipRemote) {
159
+ const metadataResult = await handleNoPushMetadataUpdate({ ...ctx, worktreePath });
160
+ finalTitle = metadataResult.finalTitle;
161
+ // Commit metadata in worktree
162
+ console.log(`${PREFIX} Committing claim metadata in worktree...`);
163
+ const wtGit = createGitForPath(worktreePath);
164
+ const filesToCommit = getWorktreeCommitFiles(id);
165
+ if (metadataResult.initPathToCommit) {
166
+ filesToCommit.push(metadataResult.initPathToCommit);
167
+ }
168
+ await wtGit.add(filesToCommit);
169
+ await wtGit.commit(commitMsg);
170
+ console.log(`${PREFIX} ${EMOJI.SUCCESS} Claim committed: ${commitMsg}`);
171
+ if (skipRemote && !args.noPush) {
172
+ console.log(`${PREFIX} Local-only mode (git.requireRemote=false): claim metadata committed in worktree.`);
173
+ }
174
+ else {
175
+ console.warn(`${PREFIX} Warning: --no-push enabled. Claim is local-only and NOT visible to other agents.`);
176
+ }
177
+ }
178
+ // WU-1023: Auto-setup worktree dependencies
179
+ await setupWorktreeDependencies(worktreePath, originalCwd, args.skipSetup);
180
+ console.log(`${PREFIX} Claim recorded in worktree`);
181
+ const worktreeWuDisplay = finalTitle ? `- WU: ${id} — ${finalTitle}` : `- WU: ${id}`;
182
+ console.log(worktreeWuDisplay);
183
+ console.log(`- Lane: ${args.lane}`);
184
+ console.log(`- Worktree: ${worktreePath}`);
185
+ console.log(`- Branch: ${branch}`);
186
+ console.log(`- Commit: ${commitMsg}`);
187
+ // Summary
188
+ console.log(`\n${PREFIX} Worktree created and claim committed.`);
189
+ console.log(`Next: cd ${worktree} and begin work.`);
190
+ // WU-1360: Print next-steps checklist to prevent common mistakes
191
+ console.log(`\n${PREFIX} Next steps:`);
192
+ console.log(` 1. cd ${worktree} (IMPORTANT: work here, not main)`);
193
+ console.log(` 2. Implement changes per acceptance criteria`);
194
+ console.log(` 3. Run: pnpm gates`);
195
+ console.log(` 4. cd ${originalCwd} && pnpm wu:done --id ${id}`);
196
+ console.log(`\n${PREFIX} Common mistakes to avoid:`);
197
+ console.log(` - Don't edit files on main branch`);
198
+ console.log(` - Don't manually edit WU YAML status fields`);
199
+ console.log(` - Don't create PRs (trunk-based development)`);
200
+ // WU-1501: Hint for sub-agent execution context
201
+ console.log(`\n${PREFIX} For sub-agent execution:`);
202
+ console.log(` /wu-prompt ${id} (generates full context prompt)`);
203
+ // Emit mandatory agent advisory based on code_paths (WU-1324)
204
+ // Read from worktree since that's where the updated YAML is
205
+ const wtWUPathForAdvisory = path.join(worktreePath, WU_PATH);
206
+ const wuContent = await readFile(wtWUPathForAdvisory, {
207
+ encoding: FILE_SYSTEM.UTF8,
208
+ });
209
+ const wuDoc = parseYAML(wuContent);
210
+ const codePaths = wuDoc.code_paths || [];
211
+ emitMandatoryAgentAdvisory(codePaths, id);
212
+ // WU-1047: Emit agent-only project defaults from config
213
+ const config = getConfig();
214
+ printProjectDefaults(config?.agents?.methodology);
215
+ // WU-1763: Print lifecycle nudge with tips for tool adoption
216
+ printLifecycleNudge(id);
217
+ // WU-1473: Surface unread coordination signals so agents see pending messages
218
+ // Fail-open: surfaceUnreadSignals never throws
219
+ await surfaceUnreadSignalsForDisplay(originalCwd);
220
+ }
221
+ //# sourceMappingURL=wu-claim-worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-claim-worktree.js","sourceRoot":"","sources":["../src/wu-claim-worktree.ts"],"names":[],"mappings":"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"}