@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.
Files changed (39) hide show
  1. package/dist/arg-parser.d.ts +5 -0
  2. package/dist/arg-parser.d.ts.map +1 -1
  3. package/dist/arg-parser.js +23 -0
  4. package/dist/arg-parser.js.map +1 -1
  5. package/dist/context/wu-state-reader.d.ts.map +1 -1
  6. package/dist/context/wu-state-reader.js +49 -6
  7. package/dist/context/wu-state-reader.js.map +1 -1
  8. package/dist/lumenflow-config-schema.d.ts +47 -0
  9. package/dist/lumenflow-config-schema.d.ts.map +1 -1
  10. package/dist/lumenflow-config-schema.js +15 -2
  11. package/dist/lumenflow-config-schema.js.map +1 -1
  12. package/dist/lumenflow-config.d.ts.map +1 -1
  13. package/dist/lumenflow-config.js +3 -1
  14. package/dist/lumenflow-config.js.map +1 -1
  15. package/dist/micro-worktree.d.ts +1 -1
  16. package/dist/micro-worktree.d.ts.map +1 -1
  17. package/dist/micro-worktree.js +11 -5
  18. package/dist/micro-worktree.js.map +1 -1
  19. package/dist/normalize-config-keys.d.ts +25 -0
  20. package/dist/normalize-config-keys.d.ts.map +1 -0
  21. package/dist/normalize-config-keys.js +68 -0
  22. package/dist/normalize-config-keys.js.map +1 -0
  23. package/dist/recovery/recovery-analyzer.d.ts +1 -0
  24. package/dist/recovery/recovery-analyzer.d.ts.map +1 -1
  25. package/dist/recovery/recovery-analyzer.js +17 -0
  26. package/dist/recovery/recovery-analyzer.js.map +1 -1
  27. package/dist/schemas/initiative-arg-validators.d.ts +1 -1
  28. package/dist/schemas/initiative-schemas.d.ts +3 -3
  29. package/dist/validation/types.d.ts +2 -0
  30. package/dist/validation/types.d.ts.map +1 -1
  31. package/dist/wu-context-constants.d.ts +4 -0
  32. package/dist/wu-context-constants.d.ts.map +1 -1
  33. package/dist/wu-context-constants.js +4 -0
  34. package/dist/wu-context-constants.js.map +1 -1
  35. package/dist/wu-done-merged-worktree.d.ts +89 -0
  36. package/dist/wu-done-merged-worktree.d.ts.map +1 -0
  37. package/dist/wu-done-merged-worktree.js +195 -0
  38. package/dist/wu-done-merged-worktree.js.map +1 -0
  39. 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.20.1",
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.2",
163
+ "commander": "^14.0.3",
163
164
  "date-fns": "^4.1.0",
164
165
  "fast-glob": "^3.3.3",
165
- "glob": "^11.0.0",
166
+ "glob": "^13.0.3",
166
167
  "gray-matter": "^4.0.3",
167
168
  "micromatch": "^4.0.8",
168
- "minimatch": "^10.1.2",
169
+ "minimatch": "^10.2.0",
169
170
  "ms": "^2.1.3",
170
- "p-retry": "^6.2.1",
171
+ "p-retry": "^7.1.1",
171
172
  "picocolors": "^1.1.1",
172
173
  "pretty-ms": "^9.2.0",
173
- "ps-list": "^8.1.1",
174
- "simple-git": "^3.30.0",
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.5"
179
+ "zod": "^4.3.6"
179
180
  },
180
181
  "devDependencies": {
181
- "@vitest/coverage-v8": "^4.0.17",
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.17"
186
+ "vitest": "^4.0.18"
186
187
  },
187
188
  "peerDependencies": {
188
- "@lumenflow/memory": "2.20.1"
189
+ "@lumenflow/memory": "2.21.1"
189
190
  },
190
191
  "peerDependenciesMeta": {
191
192
  "@lumenflow/memory": {