@lumenflow/core 2.20.1 → 2.21.1
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/dist/arg-parser.d.ts +5 -0
- package/dist/arg-parser.d.ts.map +1 -1
- package/dist/arg-parser.js +23 -0
- package/dist/arg-parser.js.map +1 -1
- package/dist/context/wu-state-reader.d.ts.map +1 -1
- package/dist/context/wu-state-reader.js +49 -6
- package/dist/context/wu-state-reader.js.map +1 -1
- package/dist/lumenflow-config-schema.d.ts +47 -0
- package/dist/lumenflow-config-schema.d.ts.map +1 -1
- package/dist/lumenflow-config-schema.js +15 -2
- package/dist/lumenflow-config-schema.js.map +1 -1
- package/dist/lumenflow-config.d.ts.map +1 -1
- package/dist/lumenflow-config.js +3 -1
- package/dist/lumenflow-config.js.map +1 -1
- package/dist/micro-worktree.d.ts +1 -1
- package/dist/micro-worktree.d.ts.map +1 -1
- package/dist/micro-worktree.js +11 -5
- package/dist/micro-worktree.js.map +1 -1
- package/dist/normalize-config-keys.d.ts +25 -0
- package/dist/normalize-config-keys.d.ts.map +1 -0
- package/dist/normalize-config-keys.js +68 -0
- package/dist/normalize-config-keys.js.map +1 -0
- package/dist/recovery/recovery-analyzer.d.ts +1 -0
- package/dist/recovery/recovery-analyzer.d.ts.map +1 -1
- package/dist/recovery/recovery-analyzer.js +17 -0
- package/dist/recovery/recovery-analyzer.js.map +1 -1
- package/dist/schemas/initiative-arg-validators.d.ts +1 -1
- package/dist/schemas/initiative-schemas.d.ts +3 -3
- package/dist/validation/types.d.ts +2 -0
- package/dist/validation/types.d.ts.map +1 -1
- package/dist/wu-context-constants.d.ts +4 -0
- package/dist/wu-context-constants.d.ts.map +1 -1
- package/dist/wu-context-constants.js +4 -0
- package/dist/wu-context-constants.js.map +1 -1
- package/dist/wu-done-merged-worktree.d.ts +89 -0
- package/dist/wu-done-merged-worktree.d.ts.map +1 -0
- package/dist/wu-done-merged-worktree.js +195 -0
- package/dist/wu-done-merged-worktree.js.map +1 -0
- package/package.json +12 -11
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WU-1746: Already-merged worktree recovery for wu:done
|
|
3
|
+
*
|
|
4
|
+
* When a WU branch has been manually merged to main and the worktree
|
|
5
|
+
* deleted (or nuked by git), wu:done normally cannot complete because
|
|
6
|
+
* it expects a live worktree. This module detects the "branch already
|
|
7
|
+
* merged, worktree gone" scenario and completes stamping and state
|
|
8
|
+
* updates gracefully without a live worktree.
|
|
9
|
+
*
|
|
10
|
+
* Detection logic:
|
|
11
|
+
* 1. If the lane branch still exists: check if branch tip === merge-base
|
|
12
|
+
* (meaning all branch commits are reachable from main HEAD)
|
|
13
|
+
* 2. If the lane branch has been deleted: check if completion commits
|
|
14
|
+
* are reachable from HEAD via git log search
|
|
15
|
+
*
|
|
16
|
+
* Completion logic:
|
|
17
|
+
* - Create stamp file (.lumenflow/stamps/WU-{id}.done)
|
|
18
|
+
* - Update WU YAML status to 'done'
|
|
19
|
+
* - Update backlog.md and status.md
|
|
20
|
+
* - Emit state store 'complete' event (if state store is available)
|
|
21
|
+
*
|
|
22
|
+
* All operations are non-fatal individually; partial completion is
|
|
23
|
+
* reported via the result object.
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync } from 'node:fs';
|
|
26
|
+
import { getGitForCwd } from './git-adapter.js';
|
|
27
|
+
import { createStamp } from './stamp-utils.js';
|
|
28
|
+
import { readWU, writeWU } from './wu-yaml.js';
|
|
29
|
+
import { WU_PATHS } from './wu-paths.js';
|
|
30
|
+
import { moveWUToDoneBacklog } from './wu-backlog-updater.js';
|
|
31
|
+
import { updateStatusRemoveInProgress, addToStatusCompleted } from './wu-status-updater.js';
|
|
32
|
+
import { BRANCHES, LOG_PREFIX, EMOJI, WU_STATUS } from './wu-constants.js';
|
|
33
|
+
import { getErrorMessage } from './error-handler.js';
|
|
34
|
+
// ──────────────────────────────────────────────
|
|
35
|
+
// Detection
|
|
36
|
+
// ──────────────────────────────────────────────
|
|
37
|
+
/**
|
|
38
|
+
* Detect whether a WU's branch commits are already merged to main
|
|
39
|
+
* and the worktree no longer exists on disk.
|
|
40
|
+
*
|
|
41
|
+
* This is the entry point for the "already-merged resilience" path
|
|
42
|
+
* in wu:done. Returns a detection result that the caller can use
|
|
43
|
+
* to decide whether to proceed with stamping/cleanup without a
|
|
44
|
+
* live worktree.
|
|
45
|
+
*
|
|
46
|
+
* @param params - Detection parameters
|
|
47
|
+
* @returns Detection result
|
|
48
|
+
*/
|
|
49
|
+
export async function detectAlreadyMergedNoWorktree(params) {
|
|
50
|
+
const { laneBranch, worktreePath } = params;
|
|
51
|
+
// Check if worktree exists on disk
|
|
52
|
+
const worktreeExists = worktreePath ? existsSync(worktreePath) : false;
|
|
53
|
+
const gitAdapter = getGitForCwd();
|
|
54
|
+
try {
|
|
55
|
+
// Check if branch still exists
|
|
56
|
+
const branchStillExists = await gitAdapter.branchExists(laneBranch);
|
|
57
|
+
if (branchStillExists) {
|
|
58
|
+
// Branch exists: check if tip === merge-base (fully merged)
|
|
59
|
+
const branchTip = (await gitAdapter.getCommitHash(laneBranch)).trim();
|
|
60
|
+
const mergeBase = (await gitAdapter.mergeBase(BRANCHES.MAIN, laneBranch)).trim();
|
|
61
|
+
const isMerged = branchTip === mergeBase;
|
|
62
|
+
return {
|
|
63
|
+
merged: isMerged,
|
|
64
|
+
branchExists: true,
|
|
65
|
+
worktreeExists,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Branch does not exist: check if WU commits are reachable from HEAD
|
|
69
|
+
// Search for completion commits mentioning the WU ID in the main history
|
|
70
|
+
if (!worktreeExists) {
|
|
71
|
+
try {
|
|
72
|
+
const logOutput = await gitAdapter.raw([
|
|
73
|
+
'log',
|
|
74
|
+
'--oneline',
|
|
75
|
+
'--all',
|
|
76
|
+
'--grep',
|
|
77
|
+
params.wuId,
|
|
78
|
+
'-1',
|
|
79
|
+
BRANCHES.MAIN,
|
|
80
|
+
]);
|
|
81
|
+
const commitFound = logOutput.trim().length > 0;
|
|
82
|
+
return {
|
|
83
|
+
merged: commitFound,
|
|
84
|
+
branchExists: false,
|
|
85
|
+
worktreeExists: false,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// If git log fails, fall through to safe default
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
merged: false,
|
|
94
|
+
branchExists: false,
|
|
95
|
+
worktreeExists,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Fail-safe: on any git error, return false to avoid incorrect completion
|
|
100
|
+
return {
|
|
101
|
+
merged: false,
|
|
102
|
+
branchExists: false,
|
|
103
|
+
worktreeExists,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ──────────────────────────────────────────────
|
|
108
|
+
// Completion
|
|
109
|
+
// ──────────────────────────────────────────────
|
|
110
|
+
/**
|
|
111
|
+
* Execute completion operations for a WU whose branch is already
|
|
112
|
+
* merged to main but was never stamped/finalized.
|
|
113
|
+
*
|
|
114
|
+
* This performs all the state cleanup that wu:done normally does
|
|
115
|
+
* during its worktree completion path, but without requiring a
|
|
116
|
+
* live worktree.
|
|
117
|
+
*
|
|
118
|
+
* Operations are individually non-fatal: if stamp creation succeeds
|
|
119
|
+
* but backlog update fails, the result captures both outcomes.
|
|
120
|
+
*
|
|
121
|
+
* @param params - Completion parameters
|
|
122
|
+
* @returns Completion result with per-operation status
|
|
123
|
+
*/
|
|
124
|
+
export async function executeAlreadyMergedCompletion(params) {
|
|
125
|
+
const { id, title, lane: _lane } = params;
|
|
126
|
+
const errors = [];
|
|
127
|
+
let stamped = false;
|
|
128
|
+
let yamlUpdated = false;
|
|
129
|
+
let backlogUpdated = false;
|
|
130
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.INFO} WU-1746: Branch already merged to main, worktree gone.`);
|
|
131
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.INFO} Completing stamping and state cleanup without worktree...`);
|
|
132
|
+
// Step 1: Create stamp file
|
|
133
|
+
try {
|
|
134
|
+
const stampResult = createStamp({ id, title });
|
|
135
|
+
stamped = true;
|
|
136
|
+
if (stampResult.created) {
|
|
137
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Created stamp: ${stampResult.path}`);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.INFO} Stamp already exists: ${stampResult.path}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
errors.push(`Stamp creation failed: ${getErrorMessage(err)}`);
|
|
145
|
+
console.warn(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} Stamp creation failed: ${getErrorMessage(err)}`);
|
|
146
|
+
}
|
|
147
|
+
// Step 2: Update WU YAML status to done
|
|
148
|
+
try {
|
|
149
|
+
const wuPath = WU_PATHS.WU(id);
|
|
150
|
+
const doc = readWU(wuPath, id);
|
|
151
|
+
if (doc && typeof doc === 'object') {
|
|
152
|
+
const updatedDoc = {
|
|
153
|
+
...doc,
|
|
154
|
+
status: WU_STATUS.DONE,
|
|
155
|
+
completed_at: new Date().toISOString().split('T')[0],
|
|
156
|
+
};
|
|
157
|
+
writeWU(wuPath, updatedDoc);
|
|
158
|
+
yamlUpdated = true;
|
|
159
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Updated WU YAML status to done`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
errors.push(`WU YAML update failed: ${getErrorMessage(err)}`);
|
|
164
|
+
console.warn(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} WU YAML update failed: ${getErrorMessage(err)}`);
|
|
165
|
+
}
|
|
166
|
+
// Step 3: Update backlog and status files
|
|
167
|
+
try {
|
|
168
|
+
const backlogPath = WU_PATHS.BACKLOG();
|
|
169
|
+
await moveWUToDoneBacklog(backlogPath, id, title);
|
|
170
|
+
const statusPath = WU_PATHS.STATUS();
|
|
171
|
+
updateStatusRemoveInProgress(statusPath, id);
|
|
172
|
+
addToStatusCompleted(statusPath, id, title);
|
|
173
|
+
backlogUpdated = true;
|
|
174
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} Updated backlog and status files`);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
errors.push(`Backlog/status update failed: ${getErrorMessage(err)}`);
|
|
178
|
+
console.warn(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} Backlog/status update failed: ${getErrorMessage(err)}`);
|
|
179
|
+
}
|
|
180
|
+
const success = errors.length === 0;
|
|
181
|
+
if (success) {
|
|
182
|
+
console.log(`${LOG_PREFIX.DONE} ${EMOJI.SUCCESS} WU-1746: Already-merged completion finished successfully`);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.warn(`${LOG_PREFIX.DONE} ${EMOJI.WARNING} WU-1746: Completed with ${errors.length} error(s)`);
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
success,
|
|
189
|
+
stamped,
|
|
190
|
+
yamlUpdated,
|
|
191
|
+
backlogUpdated,
|
|
192
|
+
errors,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=wu-done-merged-worktree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wu-done-merged-worktree.js","sourceRoot":"","sources":["../src/wu-done-merged-worktree.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lumenflow/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.21.1",
|
|
4
4
|
"description": "Core WU lifecycle tools for LumenFlow workflow framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lumenflow",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"./wu-claim-helpers": "./dist/wu-claim-helpers.js",
|
|
52
52
|
"./wu-done-machine": "./dist/wu-done-machine.js",
|
|
53
53
|
"./wu-done-worktree": "./dist/wu-done-worktree.js",
|
|
54
|
+
"./wu-done-merged-worktree": "./dist/wu-done-merged-worktree.js",
|
|
54
55
|
"./wu-done-validators": "./dist/wu-done-validators.js",
|
|
55
56
|
"./dependency-guard": "./dist/dependency-guard.js",
|
|
56
57
|
"./worktree-scanner": "./dist/worktree-scanner.js",
|
|
@@ -159,33 +160,33 @@
|
|
|
159
160
|
"change-case": "^5.4.4",
|
|
160
161
|
"cli-progress": "^3.12.0",
|
|
161
162
|
"cli-table3": "^0.6.5",
|
|
162
|
-
"commander": "^14.0.
|
|
163
|
+
"commander": "^14.0.3",
|
|
163
164
|
"date-fns": "^4.1.0",
|
|
164
165
|
"fast-glob": "^3.3.3",
|
|
165
|
-
"glob": "^
|
|
166
|
+
"glob": "^13.0.3",
|
|
166
167
|
"gray-matter": "^4.0.3",
|
|
167
168
|
"micromatch": "^4.0.8",
|
|
168
|
-
"minimatch": "^10.
|
|
169
|
+
"minimatch": "^10.2.0",
|
|
169
170
|
"ms": "^2.1.3",
|
|
170
|
-
"p-retry": "^
|
|
171
|
+
"p-retry": "^7.1.1",
|
|
171
172
|
"picocolors": "^1.1.1",
|
|
172
173
|
"pretty-ms": "^9.2.0",
|
|
173
|
-
"ps-list": "^
|
|
174
|
-
"simple-git": "^3.
|
|
174
|
+
"ps-list": "^9.0.0",
|
|
175
|
+
"simple-git": "^3.31.1",
|
|
175
176
|
"tiktoken": "^1.0.21",
|
|
176
177
|
"xstate": "^5.28.0",
|
|
177
178
|
"yaml": "^2.8.2",
|
|
178
|
-
"zod": "^4.3.
|
|
179
|
+
"zod": "^4.3.6"
|
|
179
180
|
},
|
|
180
181
|
"devDependencies": {
|
|
181
|
-
"@vitest/coverage-v8": "^4.0.
|
|
182
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
182
183
|
"memfs": "^4.17.0",
|
|
183
184
|
"tslib": "^2.8.1",
|
|
184
185
|
"typescript": "^5.9.3",
|
|
185
|
-
"vitest": "^4.0.
|
|
186
|
+
"vitest": "^4.0.18"
|
|
186
187
|
},
|
|
187
188
|
"peerDependencies": {
|
|
188
|
-
"@lumenflow/memory": "2.
|
|
189
|
+
"@lumenflow/memory": "2.21.1"
|
|
189
190
|
},
|
|
190
191
|
"peerDependenciesMeta": {
|
|
191
192
|
"@lumenflow/memory": {
|