@lumenflow/cli 2.18.2 → 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.
- package/README.md +42 -41
- package/dist/delegation-list.js +140 -0
- package/dist/delegation-list.js.map +1 -0
- package/dist/doctor.js +35 -99
- package/dist/doctor.js.map +1 -1
- package/dist/gates-plan-resolvers.js +150 -0
- package/dist/gates-plan-resolvers.js.map +1 -0
- package/dist/gates-runners.js +533 -0
- package/dist/gates-runners.js.map +1 -0
- package/dist/gates-types.js +3 -0
- package/dist/gates-types.js.map +1 -1
- package/dist/gates-utils.js +316 -0
- package/dist/gates-utils.js.map +1 -0
- package/dist/gates.js +44 -1016
- package/dist/gates.js.map +1 -1
- package/dist/hooks/enforcement-generator.js +16 -880
- package/dist/hooks/enforcement-generator.js.map +1 -1
- package/dist/hooks/enforcement-sync.js +1 -4
- package/dist/hooks/enforcement-sync.js.map +1 -1
- package/dist/hooks/generators/auto-checkpoint.js +123 -0
- package/dist/hooks/generators/auto-checkpoint.js.map +1 -0
- package/dist/hooks/generators/enforce-worktree.js +188 -0
- package/dist/hooks/generators/enforce-worktree.js.map +1 -0
- package/dist/hooks/generators/index.js +16 -0
- package/dist/hooks/generators/index.js.map +1 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js +134 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js.map +1 -0
- package/dist/hooks/generators/require-wu.js +115 -0
- package/dist/hooks/generators/require-wu.js.map +1 -0
- package/dist/hooks/generators/session-start-recovery.js +101 -0
- package/dist/hooks/generators/session-start-recovery.js.map +1 -0
- package/dist/hooks/generators/signal-utils.js +52 -0
- package/dist/hooks/generators/signal-utils.js.map +1 -0
- package/dist/hooks/generators/warn-incomplete.js +65 -0
- package/dist/hooks/generators/warn-incomplete.js.map +1 -0
- package/dist/init-detection.js +228 -0
- package/dist/init-detection.js.map +1 -0
- package/dist/init-scaffolding.js +146 -0
- package/dist/init-scaffolding.js.map +1 -0
- package/dist/init-templates.js +1928 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.js +136 -2425
- package/dist/init.js.map +1 -1
- package/dist/initiative-edit.js +42 -11
- package/dist/initiative-edit.js.map +1 -1
- package/dist/initiative-remove-wu.js +0 -0
- package/dist/initiative-status.js +29 -2
- package/dist/initiative-status.js.map +1 -1
- package/dist/mem-context.js +22 -9
- package/dist/mem-context.js.map +1 -1
- package/dist/orchestrate-init-status.js +32 -1
- package/dist/orchestrate-init-status.js.map +1 -1
- package/dist/orchestrate-monitor.js +38 -38
- package/dist/orchestrate-monitor.js.map +1 -1
- package/dist/public-manifest.js +12 -5
- package/dist/public-manifest.js.map +1 -1
- package/dist/shared-validators.js +1 -0
- package/dist/shared-validators.js.map +1 -1
- package/dist/spawn-list.js +0 -0
- package/dist/wu-claim-branch.js +121 -0
- package/dist/wu-claim-branch.js.map +1 -0
- package/dist/wu-claim-output.js +83 -0
- package/dist/wu-claim-output.js.map +1 -0
- package/dist/wu-claim-resume-handler.js +85 -0
- package/dist/wu-claim-resume-handler.js.map +1 -0
- package/dist/wu-claim-state.js +572 -0
- package/dist/wu-claim-state.js.map +1 -0
- package/dist/wu-claim-validation.js +439 -0
- package/dist/wu-claim-validation.js.map +1 -0
- package/dist/wu-claim-worktree.js +221 -0
- package/dist/wu-claim-worktree.js.map +1 -0
- package/dist/wu-claim.js +54 -1402
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-create-content.js +254 -0
- package/dist/wu-create-content.js.map +1 -0
- package/dist/wu-create-readiness.js +57 -0
- package/dist/wu-create-readiness.js.map +1 -0
- package/dist/wu-create-validation.js +149 -0
- package/dist/wu-create-validation.js.map +1 -0
- package/dist/wu-create.js +39 -441
- package/dist/wu-create.js.map +1 -1
- package/dist/wu-done.js +144 -249
- package/dist/wu-done.js.map +1 -1
- package/dist/wu-edit-operations.js +432 -0
- package/dist/wu-edit-operations.js.map +1 -0
- package/dist/wu-edit-validators.js +280 -0
- package/dist/wu-edit-validators.js.map +1 -0
- package/dist/wu-edit.js +27 -713
- package/dist/wu-edit.js.map +1 -1
- package/dist/wu-prep.js +32 -2
- package/dist/wu-prep.js.map +1 -1
- package/dist/wu-repair.js +1 -1
- package/dist/wu-repair.js.map +1 -1
- package/dist/wu-spawn-prompt-builders.js +1123 -0
- package/dist/wu-spawn-prompt-builders.js.map +1 -0
- package/dist/wu-spawn-strategy-resolver.js +314 -0
- package/dist/wu-spawn-strategy-resolver.js.map +1 -0
- package/dist/wu-spawn.js +9 -1398
- package/dist/wu-spawn.js.map +1 -1
- package/package.json +10 -7
- package/templates/core/LUMENFLOW.md.template +29 -99
- package/templates/core/ai/onboarding/agent-invocation-guide.md.template +1 -1
- package/templates/core/ai/onboarding/quick-ref-commands.md.template +29 -4
- 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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"}
|