@lumenflow/cli 3.4.0 → 3.5.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/backlog-prune.js.map +1 -1
- package/dist/commands/integrate.js +154 -16
- package/dist/commands/integrate.js.map +1 -1
- package/dist/config-set.js +8 -4
- package/dist/config-set.js.map +1 -1
- package/dist/docs-sync.js +3 -3
- package/dist/docs-sync.js.map +1 -1
- package/dist/file-delete.js +4 -3
- package/dist/file-delete.js.map +1 -1
- package/dist/file-edit.js +5 -4
- package/dist/file-edit.js.map +1 -1
- package/dist/file-read.js +3 -2
- package/dist/file-read.js.map +1 -1
- package/dist/file-write.js +3 -2
- package/dist/file-write.js.map +1 -1
- package/dist/gate-registry.js +13 -1
- package/dist/gate-registry.js.map +1 -1
- package/dist/gates.js +33 -1
- package/dist/gates.js.map +1 -1
- package/dist/guard-locked.js +4 -3
- package/dist/guard-locked.js.map +1 -1
- package/dist/hooks/config-resolver.js +43 -0
- package/dist/hooks/config-resolver.js.map +1 -0
- package/dist/hooks/dirty-guard.js +57 -0
- package/dist/hooks/dirty-guard.js.map +1 -0
- package/dist/hooks/enforcement-checks.js +17 -181
- package/dist/hooks/enforcement-checks.js.map +1 -1
- package/dist/hooks/git-status-parser.js +68 -0
- package/dist/hooks/git-status-parser.js.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/path-utils.js +55 -0
- package/dist/hooks/path-utils.js.map +1 -0
- package/dist/init-scaffolding.js +3 -2
- package/dist/init-scaffolding.js.map +1 -1
- package/dist/init-templates.js +12 -0
- package/dist/init-templates.js.map +1 -1
- package/dist/init.js +8 -8
- package/dist/init.js.map +1 -1
- package/dist/initiative-add-wu.js +3 -2
- package/dist/initiative-add-wu.js.map +1 -1
- package/dist/initiative-create.js +5 -5
- package/dist/initiative-create.js.map +1 -1
- package/dist/initiative-edit.js +5 -5
- package/dist/initiative-edit.js.map +1 -1
- package/dist/lane-edit.js +4 -3
- package/dist/lane-edit.js.map +1 -1
- package/dist/mem-checkpoint.js +9 -1
- package/dist/mem-checkpoint.js.map +1 -1
- package/dist/mem-cleanup.js +8 -4
- package/dist/mem-cleanup.js.map +1 -1
- package/dist/mem-context.js +17 -19
- package/dist/mem-context.js.map +1 -1
- package/dist/mem-inbox.js +11 -8
- package/dist/mem-inbox.js.map +1 -1
- package/dist/mem-init.js.map +1 -1
- package/dist/mem-ready.js +6 -4
- package/dist/mem-ready.js.map +1 -1
- package/dist/mem-recover.js +5 -2
- package/dist/mem-recover.js.map +1 -1
- package/dist/mem-start.js.map +1 -1
- package/dist/mem-summarize.js +5 -1
- package/dist/mem-summarize.js.map +1 -1
- package/dist/mem-triage.js.map +1 -1
- package/dist/onboard.js +10 -10
- package/dist/onboard.js.map +1 -1
- package/dist/orchestrate-init-status.js +8 -1
- package/dist/orchestrate-init-status.js.map +1 -1
- package/dist/orchestrate-monitor.js +2 -2
- package/dist/orchestrate-monitor.js.map +1 -1
- package/dist/pack-author.js +11 -11
- package/dist/pack-author.js.map +1 -1
- package/dist/pack-install.js +3 -3
- package/dist/pack-install.js.map +1 -1
- package/dist/pack-publish.js +2 -2
- package/dist/pack-publish.js.map +1 -1
- package/dist/pack-scaffold.js +4 -4
- package/dist/pack-scaffold.js.map +1 -1
- package/dist/public-manifest.js +16 -0
- package/dist/public-manifest.js.map +1 -1
- package/dist/release.js +48 -7
- package/dist/release.js.map +1 -1
- package/dist/state-bootstrap.js +2 -2
- package/dist/state-bootstrap.js.map +1 -1
- package/dist/state-doctor.js +2 -1
- package/dist/state-doctor.js.map +1 -1
- package/dist/sync-templates.js +5 -4
- package/dist/sync-templates.js.map +1 -1
- package/dist/validate-agent-sync.js +4 -4
- package/dist/validate-agent-sync.js.map +1 -1
- package/dist/validator-registry.js +2 -1
- package/dist/validator-registry.js.map +1 -1
- package/dist/wu-block.js +9 -5
- package/dist/wu-block.js.map +1 -1
- package/dist/wu-brief-sizing.js +56 -0
- package/dist/wu-brief-sizing.js.map +1 -0
- package/dist/wu-brief.js +2 -1
- package/dist/wu-brief.js.map +1 -1
- package/dist/wu-claim-branch.js.map +1 -1
- package/dist/wu-claim-output.js +2 -2
- package/dist/wu-claim-output.js.map +1 -1
- package/dist/wu-claim-resume-handler.js +7 -5
- package/dist/wu-claim-resume-handler.js.map +1 -1
- package/dist/wu-claim-validation.js +3 -3
- package/dist/wu-claim-validation.js.map +1 -1
- package/dist/wu-claim-worktree.js +2 -2
- package/dist/wu-claim-worktree.js.map +1 -1
- package/dist/wu-claim.js +3 -2
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-cleanup.js.map +1 -1
- package/dist/wu-create-content.js +3 -1
- package/dist/wu-create-content.js.map +1 -1
- package/dist/wu-create-sizing-advisory.js +32 -0
- package/dist/wu-create-sizing-advisory.js.map +1 -0
- package/dist/wu-create-validation.js.map +1 -1
- package/dist/wu-create.js +119 -6
- package/dist/wu-create.js.map +1 -1
- package/dist/wu-delete.js +9 -9
- package/dist/wu-delete.js.map +1 -1
- package/dist/wu-done.js +85 -18
- package/dist/wu-done.js.map +1 -1
- package/dist/wu-edit-operations.js +28 -16
- package/dist/wu-edit-operations.js.map +1 -1
- package/dist/wu-edit.js +9 -6
- package/dist/wu-edit.js.map +1 -1
- package/dist/wu-prep.js +123 -2
- package/dist/wu-prep.js.map +1 -1
- package/dist/wu-proto.js +5 -5
- package/dist/wu-proto.js.map +1 -1
- package/dist/wu-recover.js.map +1 -1
- package/dist/wu-release.js.map +1 -1
- package/dist/wu-repair.js +24 -6
- package/dist/wu-repair.js.map +1 -1
- package/dist/wu-sizing-validation.js +117 -0
- package/dist/wu-sizing-validation.js.map +1 -0
- package/dist/wu-spawn-prompt-builders.js.map +1 -1
- package/dist/wu-spawn-strategy-resolver.js +68 -0
- package/dist/wu-spawn-strategy-resolver.js.map +1 -1
- package/dist/wu-spawn.js +1 -1
- package/dist/wu-spawn.js.map +1 -1
- package/dist/wu-unblock.js +8 -5
- package/dist/wu-unblock.js.map +1 -1
- package/package.json +8 -7
package/dist/file-read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-read.js","sourceRoot":"","sources":["../src/file-read.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AACzC;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"file-read.js","sourceRoot":"","sources":["../src/file-read.ts"],"names":[],"mappings":"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"}
|
package/dist/file-write.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { writeFile, mkdir, stat } from 'node:fs/promises';
|
|
18
18
|
import { resolve, dirname } from 'node:path';
|
|
19
|
+
import { createError, ErrorCodes } from '@lumenflow/core';
|
|
19
20
|
/**
|
|
20
21
|
* Default configuration for file write operations
|
|
21
22
|
*/
|
|
@@ -90,7 +91,7 @@ export async function writeFileWithAudit(args) {
|
|
|
90
91
|
try {
|
|
91
92
|
// Validate path
|
|
92
93
|
if (!filePath) {
|
|
93
|
-
throw
|
|
94
|
+
throw createError(ErrorCodes.INVALID_ARGUMENT, 'Path is required');
|
|
94
95
|
}
|
|
95
96
|
const parentDir = dirname(filePath);
|
|
96
97
|
let directoriesCreated = false;
|
|
@@ -102,7 +103,7 @@ export async function writeFileWithAudit(args) {
|
|
|
102
103
|
directoriesCreated = true;
|
|
103
104
|
}
|
|
104
105
|
else {
|
|
105
|
-
throw
|
|
106
|
+
throw createError(ErrorCodes.PARENT_DIR_NOT_FOUND, `ENOENT: parent directory does not exist: ${parentDir}`);
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
// Write file
|
package/dist/file-write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-write.js","sourceRoot":"","sources":["../src/file-write.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AACzC;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"file-write.js","sourceRoot":"","sources":["../src/file-write.ts"],"names":[],"mappings":"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"}
|
package/dist/gate-registry.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
// Copyright (c) 2026 Hellmai Ltd
|
|
2
2
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Gate Registry
|
|
5
|
+
*
|
|
6
|
+
* WU-1550: Declarative gate registration pattern.
|
|
7
|
+
*
|
|
8
|
+
* Instead of hardcoding gate arrays inside executeGates(), gates are registered
|
|
9
|
+
* via GateRegistry. New gates can be added by calling registry.register()
|
|
10
|
+
* without modifying the core execution code.
|
|
11
|
+
*
|
|
12
|
+
* @module gate-registry
|
|
13
|
+
*/
|
|
14
|
+
import { createError, ErrorCodes } from '@lumenflow/core';
|
|
3
15
|
/**
|
|
4
16
|
* Registry for quality gates.
|
|
5
17
|
*
|
|
@@ -18,7 +30,7 @@ export class GateRegistry {
|
|
|
18
30
|
*/
|
|
19
31
|
register(gate) {
|
|
20
32
|
if (this.nameIndex.has(gate.name)) {
|
|
21
|
-
throw
|
|
33
|
+
throw createError(ErrorCodes.TOOL_ALREADY_REGISTERED, `Gate "${gate.name}" is already registered`);
|
|
22
34
|
}
|
|
23
35
|
this.nameIndex.set(gate.name, this.gates.length);
|
|
24
36
|
this.gates.push(gate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-registry.js","sourceRoot":"","sources":["../src/gate-registry.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;
|
|
1
|
+
{"version":3,"file":"gate-registry.js","sourceRoot":"","sources":["../src/gate-registry.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA+B1D;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACN,KAAK,GAAqB,EAAE,CAAC;IAC7B,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvD;;;;;OAKG;IACH,QAAQ,CAAC,IAAoB;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,WAAW,CACf,UAAU,CAAC,uBAAuB,EAClC,SAAS,IAAI,CAAC,IAAI,yBAAyB,CAC5C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,KAAuB;QACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
|
package/dist/gates.js
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* node tools/gates.ts --coverage-mode=block # Coverage gate in block mode
|
|
48
48
|
*/
|
|
49
49
|
import { writeSync } from 'node:fs';
|
|
50
|
-
import { emitGateEvent, getCurrentWU, getCurrentLane } from '@lumenflow/core/telemetry';
|
|
50
|
+
import { emitGateEvent, getCurrentWU, getCurrentLane, syncNdjsonTelemetryToCloud, } from '@lumenflow/core/telemetry';
|
|
51
51
|
import { die } from '@lumenflow/core/error-handler';
|
|
52
52
|
import { shouldUseGatesAgentMode, updateGatesLatestSymlink, } from '@lumenflow/core/gates-agent-mode';
|
|
53
53
|
// WU-2252: Import invariants runner for first-check validation
|
|
@@ -177,6 +177,15 @@ export async function runGates(options = {}) {
|
|
|
177
177
|
return false;
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
+
export async function syncGatesTelemetryToCloud(input = {}) {
|
|
181
|
+
return syncNdjsonTelemetryToCloud({
|
|
182
|
+
workspaceRoot: input.cwd ?? process.cwd(),
|
|
183
|
+
fetchFn: input.fetchFn,
|
|
184
|
+
logger: input.logger,
|
|
185
|
+
now: input.now,
|
|
186
|
+
environment: input.environment,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
180
189
|
// ── Main orchestrator ──────────────────────────────────────────────────
|
|
181
190
|
// eslint-disable-next-line sonarjs/cognitive-complexity -- Pre-existing: main() orchestrates multi-step gate workflow
|
|
182
191
|
async function executeGates(opts) {
|
|
@@ -215,6 +224,27 @@ async function executeGates(opts) {
|
|
|
215
224
|
const packageJsonScripts = loadPackageJsonScripts(cwd);
|
|
216
225
|
// WU-1520: Track gate results for summary
|
|
217
226
|
const gateResults = [];
|
|
227
|
+
const telemetrySyncLogger = {
|
|
228
|
+
warn: (message) => {
|
|
229
|
+
if (useAgentMode) {
|
|
230
|
+
writeSync(agentLog.logFd, `${message}\n`);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
console.warn(message);
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
async function flushTelemetryToCloud() {
|
|
237
|
+
try {
|
|
238
|
+
await syncGatesTelemetryToCloud({
|
|
239
|
+
cwd,
|
|
240
|
+
logger: telemetrySyncLogger,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
245
|
+
telemetrySyncLogger.warn(`[gates] cloud telemetry sync failed unexpectedly: ${message}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
218
248
|
if (useAgentMode) {
|
|
219
249
|
console.log(`\uD83E\uDDFE gates (agent mode): output -> ${agentLog.logPath} (use --verbose for streaming)\n`);
|
|
220
250
|
}
|
|
@@ -473,6 +503,7 @@ async function executeGates(opts) {
|
|
|
473
503
|
console.error(`Last log lines:\n${tail}\n`);
|
|
474
504
|
}
|
|
475
505
|
}
|
|
506
|
+
await flushTelemetryToCloud();
|
|
476
507
|
die(`${gate.name} failed`);
|
|
477
508
|
}
|
|
478
509
|
// WU-1520: Track passed gate
|
|
@@ -496,6 +527,7 @@ async function executeGates(opts) {
|
|
|
496
527
|
else {
|
|
497
528
|
console.log(`${chalk.green('\u2705 All gates passed')} (agent mode). Log: ${agentLog.logPath}\n`);
|
|
498
529
|
}
|
|
530
|
+
await flushTelemetryToCloud();
|
|
499
531
|
return true;
|
|
500
532
|
}
|
|
501
533
|
// WU-1537: Wrap executeGates in a standard main() for runCLI consistency
|
package/dist/gates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"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"}
|
package/dist/guard-locked.js
CHANGED
|
@@ -21,6 +21,7 @@ import path from 'node:path';
|
|
|
21
21
|
import { parseYAML } from '@lumenflow/core/wu-yaml';
|
|
22
22
|
import { WU_PATHS, createWuPaths } from '@lumenflow/core/wu-paths';
|
|
23
23
|
import { PATTERNS, FILE_SYSTEM } from '@lumenflow/core/wu-constants';
|
|
24
|
+
import { createError, ErrorCodes } from '@lumenflow/core/error-handler';
|
|
24
25
|
import { runCLI } from './cli-entry-point.js';
|
|
25
26
|
const LOG_PREFIX = '[guard-locked]';
|
|
26
27
|
function resolveCompleteGuidePathHint() {
|
|
@@ -45,7 +46,7 @@ function resolveCompleteGuidePathHint() {
|
|
|
45
46
|
*/
|
|
46
47
|
export function isWULocked(wuPath) {
|
|
47
48
|
if (!existsSync(wuPath)) {
|
|
48
|
-
throw
|
|
49
|
+
throw createError(ErrorCodes.FILE_NOT_FOUND, `WU file not found: ${wuPath}`);
|
|
49
50
|
}
|
|
50
51
|
const content = readFileSync(wuPath, { encoding: FILE_SYSTEM.UTF8 });
|
|
51
52
|
const doc = parseYAML(content);
|
|
@@ -68,14 +69,14 @@ export function isWULocked(wuPath) {
|
|
|
68
69
|
*/
|
|
69
70
|
export function assertWUNotLocked(wuPath) {
|
|
70
71
|
if (!existsSync(wuPath)) {
|
|
71
|
-
throw
|
|
72
|
+
throw createError(ErrorCodes.FILE_NOT_FOUND, `WU file not found: ${wuPath}`);
|
|
72
73
|
}
|
|
73
74
|
const content = readFileSync(wuPath, { encoding: FILE_SYSTEM.UTF8 });
|
|
74
75
|
const doc = parseYAML(content);
|
|
75
76
|
if (doc.locked === true) {
|
|
76
77
|
const wuId = doc.id || path.basename(wuPath, '.yaml');
|
|
77
78
|
const completeGuidePath = resolveCompleteGuidePathHint();
|
|
78
|
-
throw
|
|
79
|
+
throw createError(ErrorCodes.VALIDATION_ERROR, `${LOG_PREFIX} WU ${wuId} is locked.
|
|
79
80
|
|
|
80
81
|
Locked WUs cannot be modified. This prevents accidental changes to completed work.
|
|
81
82
|
|
package/dist/guard-locked.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-locked.js","sourceRoot":"","sources":["../src/guard-locked.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,yCAAyC;AACzC;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,SAAS,4BAA4B;IACnC,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"guard-locked.js","sourceRoot":"","sources":["../src/guard-locked.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* @file config-resolver.ts
|
|
5
|
+
* Configuration-driven path resolution for enforcement hooks.
|
|
6
|
+
*
|
|
7
|
+
* Single responsibility: resolve worktree directories and allowlist prefixes
|
|
8
|
+
* from LumenFlow configuration.
|
|
9
|
+
* Split from enforcement-checks.ts (WU-2127).
|
|
10
|
+
*/
|
|
11
|
+
import { createWuPaths } from '@lumenflow/core/wu-paths';
|
|
12
|
+
import { DIRECTORIES } from '@lumenflow/core/wu-constants';
|
|
13
|
+
import { normalizeDirectorySegment, ensureRepoRelativePrefix } from './path-utils.js';
|
|
14
|
+
/**
|
|
15
|
+
* Paths that are always safe to write on main checkout.
|
|
16
|
+
* These are scaffold/state paths that are written by lifecycle commands
|
|
17
|
+
* and must not require a worktree.
|
|
18
|
+
*/
|
|
19
|
+
const MAIN_WRITE_STATIC_ALLOWLIST_PREFIXES = ['.lumenflow/', '.claude/', 'plan/'];
|
|
20
|
+
const DEFAULT_WORKTREES_DIR_SEGMENT = DIRECTORIES.WORKTREES.replace(/\/+$/g, '');
|
|
21
|
+
const DEFAULT_WU_ALLOWLIST_PREFIX = `${DIRECTORIES.WU_DIR.replace(/\/+$/g, '')}/`;
|
|
22
|
+
export function resolveWorktreesDirSegment(mainRepoPath) {
|
|
23
|
+
try {
|
|
24
|
+
const configuredPath = createWuPaths({ projectRoot: mainRepoPath }).WORKTREES_DIR();
|
|
25
|
+
return normalizeDirectorySegment(configuredPath, DEFAULT_WORKTREES_DIR_SEGMENT);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return DEFAULT_WORKTREES_DIR_SEGMENT;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function resolveWuAllowlistPrefix(mainRepoPath) {
|
|
32
|
+
try {
|
|
33
|
+
const configuredPath = createWuPaths({ projectRoot: mainRepoPath }).WU_DIR();
|
|
34
|
+
return ensureRepoRelativePrefix(configuredPath);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return DEFAULT_WU_ALLOWLIST_PREFIX;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function resolveMainWriteAllowlistPrefixes(mainRepoPath) {
|
|
41
|
+
return [resolveWuAllowlistPrefix(mainRepoPath), ...MAIN_WRITE_STATIC_ALLOWLIST_PREFIXES];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=config-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-resolver.js","sourceRoot":"","sources":["../../src/hooks/config-resolver.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEtF;;;;GAIG;AACH,MAAM,oCAAoC,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAE3F,MAAM,6BAA6B,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACjF,MAAM,2BAA2B,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;AAElF,MAAM,UAAU,0BAA0B,CAAC,YAAoB;IAC7D,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,aAAa,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QACpF,OAAO,yBAAyB,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,6BAA6B,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,YAAoB;IAC3D,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,aAAa,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7E,OAAO,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,YAAoB;IACpE,OAAO,CAAC,wBAAwB,CAAC,YAAY,CAAC,EAAE,GAAG,oCAAoC,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* @file dirty-guard.ts
|
|
5
|
+
* Dirty-main mutation guard for wu:prep and wu:done.
|
|
6
|
+
*
|
|
7
|
+
* Single responsibility: evaluate whether a command should be blocked because
|
|
8
|
+
* the main checkout has non-allowlisted dirty files while a worktree WU
|
|
9
|
+
* is active.
|
|
10
|
+
* Split from enforcement-checks.ts (WU-2127).
|
|
11
|
+
*/
|
|
12
|
+
import { resolveMainWriteAllowlistPrefixes } from './config-resolver.js';
|
|
13
|
+
import { getNonAllowlistedDirtyPaths, formatMainDirtyMutationGuardMessage, } from './git-status-parser.js';
|
|
14
|
+
const DIRTY_MAIN_GUARD_REASONS = {
|
|
15
|
+
BRANCH_PR_MODE: 'branch-pr-mode',
|
|
16
|
+
NO_WORKTREE_CONTEXT: 'no-worktree-context',
|
|
17
|
+
CLEAN_OR_ALLOWLISTED: 'clean-or-allowlisted',
|
|
18
|
+
BLOCKED_NON_ALLOWLISTED_DIRTY_MAIN: 'blocked-non-allowlisted-dirty-main',
|
|
19
|
+
};
|
|
20
|
+
export function evaluateMainDirtyMutationGuard(options) {
|
|
21
|
+
const { commandName, mainCheckout, mainStatus, hasActiveWorktreeContext, isBranchPrMode } = options;
|
|
22
|
+
const allowlistPrefixes = resolveMainWriteAllowlistPrefixes(mainCheckout);
|
|
23
|
+
if (isBranchPrMode) {
|
|
24
|
+
return {
|
|
25
|
+
blocked: false,
|
|
26
|
+
blockedPaths: [],
|
|
27
|
+
reason: DIRTY_MAIN_GUARD_REASONS.BRANCH_PR_MODE,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (!hasActiveWorktreeContext) {
|
|
31
|
+
return {
|
|
32
|
+
blocked: false,
|
|
33
|
+
blockedPaths: [],
|
|
34
|
+
reason: DIRTY_MAIN_GUARD_REASONS.NO_WORKTREE_CONTEXT,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const blockedPaths = getNonAllowlistedDirtyPaths(mainStatus, allowlistPrefixes);
|
|
38
|
+
if (blockedPaths.length === 0) {
|
|
39
|
+
return {
|
|
40
|
+
blocked: false,
|
|
41
|
+
blockedPaths: [],
|
|
42
|
+
reason: DIRTY_MAIN_GUARD_REASONS.CLEAN_OR_ALLOWLISTED,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
blocked: true,
|
|
47
|
+
blockedPaths,
|
|
48
|
+
reason: DIRTY_MAIN_GUARD_REASONS.BLOCKED_NON_ALLOWLISTED_DIRTY_MAIN,
|
|
49
|
+
message: formatMainDirtyMutationGuardMessage({
|
|
50
|
+
commandName,
|
|
51
|
+
mainCheckout,
|
|
52
|
+
blockedPaths,
|
|
53
|
+
allowlistPrefixes,
|
|
54
|
+
}),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=dirty-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirty-guard.js","sourceRoot":"","sources":["../../src/hooks/dirty-guard.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC;AAEzC;;;;;;;;GAQG;AAEH,OAAO,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EACL,2BAA2B,EAC3B,mCAAmC,GACpC,MAAM,wBAAwB,CAAC;AAEhC,MAAM,wBAAwB,GAAG;IAC/B,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,kCAAkC,EAAE,oCAAoC;CAChE,CAAC;AAiBX,MAAM,UAAU,8BAA8B,CAC5C,OAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,wBAAwB,EAAE,cAAc,EAAE,GACvF,OAAO,CAAC;IACV,MAAM,iBAAiB,GAAG,iCAAiC,CAAC,YAAY,CAAC,CAAC;IAE1E,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,wBAAwB,CAAC,cAAc;SAChD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,wBAAwB,CAAC,mBAAmB;SACrD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,2BAA2B,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAChF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,wBAAwB,CAAC,oBAAoB;SACtD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,YAAY;QACZ,MAAM,EAAE,wBAAwB,CAAC,kCAAkC;QACnE,OAAO,EAAE,mCAAmC,CAAC;YAC3C,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,iBAAiB;SAClB,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -4,190 +4,25 @@
|
|
|
4
4
|
* @file enforcement-checks.ts
|
|
5
5
|
* Runtime enforcement checks for LumenFlow workflow compliance (WU-1367)
|
|
6
6
|
* WU-1501: Fail-closed default on main - block writes when no active claim context
|
|
7
|
+
* WU-2127: Split into focused sub-modules. This file re-exports the public API
|
|
8
|
+
* and contains the top-level worktree/WU enforcement checks that compose the
|
|
9
|
+
* sub-modules.
|
|
7
10
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
11
|
+
* Sub-modules:
|
|
12
|
+
* - path-utils.ts: Path normalization and allowlist utilities
|
|
13
|
+
* - config-resolver.ts: Configuration-driven path resolution
|
|
14
|
+
* - git-status-parser.ts: Parse and filter dirty paths from git status output
|
|
15
|
+
* - dirty-guard.ts: Dirty-main mutation guard for wu:prep/wu:done
|
|
12
16
|
*/
|
|
13
|
-
// Note: fs operations use runtime-provided paths from LumenFlow configuration
|
|
14
17
|
import * as fs from 'node:fs';
|
|
15
18
|
import * as path from 'node:path';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const MAIN_WRITE_STATIC_ALLOWLIST_PREFIXES = ['.lumenflow/', '.claude/', 'plan/'];
|
|
24
|
-
const DEFAULT_WORKTREES_DIR_SEGMENT = DIRECTORIES.WORKTREES.replace(/\/+$/g, '');
|
|
25
|
-
const DEFAULT_WU_ALLOWLIST_PREFIX = `${DIRECTORIES.WU_DIR.replace(/\/+$/g, '')}/`;
|
|
26
|
-
const GIT_STATUS_PREFIX_LENGTH = 3;
|
|
27
|
-
const GIT_STATUS_RENAME_SEPARATOR = ' -> ';
|
|
28
|
-
const GIT_STATUS_QUOTE = '"';
|
|
29
|
-
const PATH_PREFIX_CURRENT_DIR = './';
|
|
30
|
-
const PATH_SEPARATOR_WINDOWS = '\\';
|
|
31
|
-
const PATH_SEPARATOR_POSIX = '/';
|
|
32
|
-
const MAX_BLOCKED_PATHS_IN_MESSAGE = 10;
|
|
33
|
-
function normalizeDirectorySegment(value, fallback) {
|
|
34
|
-
const normalized = value.replace(/\\/g, '/').replace(/^\/+|\/+$/g, '');
|
|
35
|
-
return normalized.length > 0 ? normalized : fallback;
|
|
36
|
-
}
|
|
37
|
-
function ensureRepoRelativePrefix(value) {
|
|
38
|
-
const normalized = value.replace(/\\/g, '/').replace(/^\/+|\/+$/g, '');
|
|
39
|
-
return normalized.length > 0 ? `${normalized}/` : '';
|
|
40
|
-
}
|
|
41
|
-
function resolveWorktreesDirSegment(mainRepoPath) {
|
|
42
|
-
try {
|
|
43
|
-
const configuredPath = createWuPaths({ projectRoot: mainRepoPath }).WORKTREES_DIR();
|
|
44
|
-
return normalizeDirectorySegment(configuredPath, DEFAULT_WORKTREES_DIR_SEGMENT);
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return DEFAULT_WORKTREES_DIR_SEGMENT;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function resolveWuAllowlistPrefix(mainRepoPath) {
|
|
51
|
-
try {
|
|
52
|
-
const configuredPath = createWuPaths({ projectRoot: mainRepoPath }).WU_DIR();
|
|
53
|
-
return ensureRepoRelativePrefix(configuredPath);
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return DEFAULT_WU_ALLOWLIST_PREFIX;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function resolveMainWriteAllowlistPrefixes(mainRepoPath) {
|
|
60
|
-
return [resolveWuAllowlistPrefix(mainRepoPath), ...MAIN_WRITE_STATIC_ALLOWLIST_PREFIXES];
|
|
61
|
-
}
|
|
62
|
-
const DIRTY_MAIN_GUARD_REASONS = {
|
|
63
|
-
BRANCH_PR_MODE: 'branch-pr-mode',
|
|
64
|
-
NO_WORKTREE_CONTEXT: 'no-worktree-context',
|
|
65
|
-
CLEAN_OR_ALLOWLISTED: 'clean-or-allowlisted',
|
|
66
|
-
BLOCKED_NON_ALLOWLISTED_DIRTY_MAIN: 'blocked-non-allowlisted-dirty-main',
|
|
67
|
-
};
|
|
68
|
-
function stripWrappingQuotes(value) {
|
|
69
|
-
if (value.startsWith(GIT_STATUS_QUOTE) && value.endsWith(GIT_STATUS_QUOTE) && value.length >= 2) {
|
|
70
|
-
return value.slice(1, -1);
|
|
71
|
-
}
|
|
72
|
-
return value;
|
|
73
|
-
}
|
|
74
|
-
function normalizeRepoRelativePath(value) {
|
|
75
|
-
const withoutQuotes = stripWrappingQuotes(value.trim());
|
|
76
|
-
const normalizedSeparators = withoutQuotes
|
|
77
|
-
.split(PATH_SEPARATOR_WINDOWS)
|
|
78
|
-
.join(PATH_SEPARATOR_POSIX);
|
|
79
|
-
if (normalizedSeparators.startsWith(PATH_PREFIX_CURRENT_DIR)) {
|
|
80
|
-
return normalizedSeparators.slice(PATH_PREFIX_CURRENT_DIR.length);
|
|
81
|
-
}
|
|
82
|
-
return normalizedSeparators;
|
|
83
|
-
}
|
|
84
|
-
function parsePathFromStatusLine(line) {
|
|
85
|
-
if (line.length < GIT_STATUS_PREFIX_LENGTH) {
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
const pathField = line.slice(GIT_STATUS_PREFIX_LENGTH).trim();
|
|
89
|
-
if (pathField.length === 0) {
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
// For renames, git status emits "old -> new". We care about the destination path.
|
|
93
|
-
const renameSegments = pathField.split(GIT_STATUS_RENAME_SEPARATOR);
|
|
94
|
-
const destinationPath = renameSegments[renameSegments.length - 1];
|
|
95
|
-
const normalizedPath = normalizeRepoRelativePath(destinationPath);
|
|
96
|
-
return normalizedPath.length > 0 ? normalizedPath : null;
|
|
97
|
-
}
|
|
98
|
-
export function parseDirtyPathsFromStatus(mainStatus) {
|
|
99
|
-
const uniquePaths = new Set();
|
|
100
|
-
for (const line of mainStatus.split('\n')) {
|
|
101
|
-
const trimmed = line.trimEnd();
|
|
102
|
-
if (trimmed.length === 0) {
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
const parsed = parsePathFromStatusLine(trimmed);
|
|
106
|
-
if (parsed) {
|
|
107
|
-
uniquePaths.add(parsed);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return Array.from(uniquePaths);
|
|
111
|
-
}
|
|
112
|
-
export function getNonAllowlistedDirtyPaths(mainStatus, allowlistPrefixes) {
|
|
113
|
-
return parseDirtyPathsFromStatus(mainStatus).filter((relativePath) => !allowlistPrefixes.some((prefix) => relativePath.startsWith(prefix)));
|
|
114
|
-
}
|
|
115
|
-
function formatBlockedPaths(paths) {
|
|
116
|
-
const displayed = paths.slice(0, MAX_BLOCKED_PATHS_IN_MESSAGE);
|
|
117
|
-
const lines = displayed.map((dirtyPath) => ` - ${dirtyPath}`);
|
|
118
|
-
const remainder = paths.length - displayed.length;
|
|
119
|
-
if (remainder > 0) {
|
|
120
|
-
lines.push(` - ... and ${remainder} more`);
|
|
121
|
-
}
|
|
122
|
-
return lines.join('\n');
|
|
123
|
-
}
|
|
124
|
-
export function formatMainDirtyMutationGuardMessage(options) {
|
|
125
|
-
const { commandName, mainCheckout, blockedPaths, allowlistPrefixes } = options;
|
|
126
|
-
const allowlistLines = allowlistPrefixes.map((prefix) => ` - ${prefix}`).join('\n');
|
|
127
|
-
return (`${commandName} blocked: main checkout has non-allowlisted dirty files while a worktree WU is active.\n\n` +
|
|
128
|
-
`Dirty paths:\n${formatBlockedPaths(blockedPaths)}\n\n` +
|
|
129
|
-
`Allowed dirty prefixes on main:\n${allowlistLines}\n\n` +
|
|
130
|
-
`How to resolve:\n` +
|
|
131
|
-
` 1. Move edits into the active worktree (recommended)\n` +
|
|
132
|
-
` 2. Revert or commit unintended main edits\n` +
|
|
133
|
-
` 3. If writes came from MCP/tools, rerun them in the worktree path\n` +
|
|
134
|
-
` 4. Retry ${commandName}\n\n` +
|
|
135
|
-
`Main checkout: ${mainCheckout}`);
|
|
136
|
-
}
|
|
137
|
-
export function evaluateMainDirtyMutationGuard(options) {
|
|
138
|
-
const { commandName, mainCheckout, mainStatus, hasActiveWorktreeContext, isBranchPrMode } = options;
|
|
139
|
-
const allowlistPrefixes = resolveMainWriteAllowlistPrefixes(mainCheckout);
|
|
140
|
-
if (isBranchPrMode) {
|
|
141
|
-
return {
|
|
142
|
-
blocked: false,
|
|
143
|
-
blockedPaths: [],
|
|
144
|
-
reason: DIRTY_MAIN_GUARD_REASONS.BRANCH_PR_MODE,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
if (!hasActiveWorktreeContext) {
|
|
148
|
-
return {
|
|
149
|
-
blocked: false,
|
|
150
|
-
blockedPaths: [],
|
|
151
|
-
reason: DIRTY_MAIN_GUARD_REASONS.NO_WORKTREE_CONTEXT,
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
const blockedPaths = getNonAllowlistedDirtyPaths(mainStatus, allowlistPrefixes);
|
|
155
|
-
if (blockedPaths.length === 0) {
|
|
156
|
-
return {
|
|
157
|
-
blocked: false,
|
|
158
|
-
blockedPaths: [],
|
|
159
|
-
reason: DIRTY_MAIN_GUARD_REASONS.CLEAN_OR_ALLOWLISTED,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
return {
|
|
163
|
-
blocked: true,
|
|
164
|
-
blockedPaths,
|
|
165
|
-
reason: DIRTY_MAIN_GUARD_REASONS.BLOCKED_NON_ALLOWLISTED_DIRTY_MAIN,
|
|
166
|
-
message: formatMainDirtyMutationGuardMessage({
|
|
167
|
-
commandName,
|
|
168
|
-
mainCheckout,
|
|
169
|
-
blockedPaths,
|
|
170
|
-
allowlistPrefixes,
|
|
171
|
-
}),
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* WU-1501: Check if a resolved path matches the main-write allowlist.
|
|
176
|
-
*
|
|
177
|
-
* @param resolvedPath - Absolute resolved path to check
|
|
178
|
-
* @param mainRepoPath - Absolute path to the main repo root
|
|
179
|
-
* @returns True if the path is in the allowlist
|
|
180
|
-
*/
|
|
181
|
-
function isAllowlistedPath(resolvedPath, mainRepoPath) {
|
|
182
|
-
// Get the path relative to the repo root
|
|
183
|
-
const repoPrefix = mainRepoPath + path.sep;
|
|
184
|
-
if (!resolvedPath.startsWith(repoPrefix)) {
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
const relativePath = resolvedPath.slice(repoPrefix.length);
|
|
188
|
-
const allowlistPrefixes = resolveMainWriteAllowlistPrefixes(mainRepoPath);
|
|
189
|
-
return allowlistPrefixes.some((prefix) => relativePath.startsWith(prefix));
|
|
190
|
-
}
|
|
19
|
+
import { resolveWorktreesDirSegment, resolveMainWriteAllowlistPrefixes, } from './config-resolver.js';
|
|
20
|
+
import { isAllowlistedPath } from './path-utils.js';
|
|
21
|
+
// Re-export sub-module public APIs for backward compatibility
|
|
22
|
+
export { normalizeDirectorySegment, ensureRepoRelativePrefix, isAllowlistedPath, } from './path-utils.js';
|
|
23
|
+
export { resolveWorktreesDirSegment, resolveWuAllowlistPrefix, resolveMainWriteAllowlistPrefixes, } from './config-resolver.js';
|
|
24
|
+
export { parseDirtyPathsFromStatus, getNonAllowlistedDirtyPaths, formatBlockedPaths, formatMainDirtyMutationGuardMessage, } from './git-status-parser.js';
|
|
25
|
+
export { evaluateMainDirtyMutationGuard } from './dirty-guard.js';
|
|
191
26
|
/**
|
|
192
27
|
* WU-1501: Check if there is an active branch-pr claimed WU in the state file.
|
|
193
28
|
*
|
|
@@ -299,7 +134,8 @@ export async function checkWorktreeEnforcement(input, projectDir) {
|
|
|
299
134
|
}
|
|
300
135
|
// WU-1501: No active worktrees - fail-closed on main
|
|
301
136
|
// Check allowlist first (always permitted regardless of claim state)
|
|
302
|
-
|
|
137
|
+
const allowlistPrefixes = resolveMainWriteAllowlistPrefixes(mainRepoPath);
|
|
138
|
+
if (isAllowlistedPath(resolvedPath, mainRepoPath, allowlistPrefixes)) {
|
|
303
139
|
return {
|
|
304
140
|
allowed: true,
|
|
305
141
|
reason: 'allowlist: path is in safe scaffold/state area',
|