@lumenflow/cli 3.1.3 → 3.2.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/agent-issues-query.js.map +1 -0
- package/dist/agent-log-issue.js.map +1 -0
- package/dist/agent-session-end.js.map +1 -0
- package/dist/agent-session.js.map +1 -0
- package/dist/backlog-prune.js.map +1 -0
- package/dist/cli-entry-point.js +139 -0
- package/dist/cli-entry-point.js.map +1 -0
- package/dist/commands/integrate.js.map +1 -0
- package/dist/commands.js.map +1 -0
- package/dist/config-get.js.map +1 -0
- package/dist/config-set.js.map +1 -0
- package/dist/constants.js +98 -0
- package/dist/constants.js.map +1 -0
- package/dist/delegation-list.js.map +1 -0
- package/dist/deps-add.js +259 -0
- package/dist/deps-add.js.map +1 -0
- package/dist/deps-remove.js +105 -0
- package/dist/deps-remove.js.map +1 -0
- package/dist/docs-sync.js.map +1 -0
- package/dist/doctor.js.map +1 -0
- package/dist/file-delete.js.map +1 -0
- package/dist/file-edit.js.map +1 -0
- package/dist/file-read.js.map +1 -0
- package/dist/file-write.js.map +1 -0
- package/dist/flow-bottlenecks.js.map +1 -0
- package/dist/flow-report.js.map +1 -0
- package/dist/formatters.js +151 -0
- package/dist/formatters.js.map +1 -0
- package/dist/gate-defaults.js +137 -0
- package/dist/gate-defaults.js.map +1 -0
- package/dist/gate-registry.js +73 -0
- package/dist/gate-registry.js.map +1 -0
- package/dist/gates-graceful-degradation.js +153 -0
- package/dist/gates-graceful-degradation.js.map +1 -0
- package/dist/gates-plan-resolvers.js +190 -0
- package/dist/gates-plan-resolvers.js.map +1 -0
- package/dist/gates-runners.js +545 -0
- package/dist/gates-runners.js.map +1 -0
- package/dist/gates-types.js +4 -0
- package/dist/gates-types.js.map +1 -0
- package/dist/gates-utils.js +333 -0
- package/dist/gates-utils.js.map +1 -0
- package/dist/gates.js.map +1 -0
- package/dist/git-branch.js.map +1 -0
- package/dist/git-diff.js.map +1 -0
- package/dist/git-log.js.map +1 -0
- package/dist/git-status.js.map +1 -0
- package/dist/guard-locked.js +172 -0
- package/dist/guard-locked.js.map +1 -0
- package/dist/guard-main-branch.js +217 -0
- package/dist/guard-main-branch.js.map +1 -0
- package/dist/guard-worktree-commit.js +163 -0
- package/dist/guard-worktree-commit.js.map +1 -0
- package/dist/hooks/auto-checkpoint-utils.js +54 -0
- package/dist/hooks/auto-checkpoint-utils.js.map +1 -0
- package/dist/hooks/enforcement-checks.js +399 -0
- package/dist/hooks/enforcement-checks.js.map +1 -0
- package/dist/hooks/enforcement-generator.js +139 -0
- package/dist/hooks/enforcement-generator.js.map +1 -0
- package/dist/hooks/enforcement-sync.js +380 -0
- package/dist/hooks/enforcement-sync.js.map +1 -0
- package/dist/hooks/generators/auto-checkpoint.js +125 -0
- package/dist/hooks/generators/auto-checkpoint.js.map +1 -0
- package/dist/hooks/generators/enforce-worktree.js +190 -0
- package/dist/hooks/generators/enforce-worktree.js.map +1 -0
- package/dist/hooks/generators/index.js +18 -0
- package/dist/hooks/generators/index.js.map +1 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js +136 -0
- package/dist/hooks/generators/pre-compact-checkpoint.js.map +1 -0
- package/dist/hooks/generators/require-wu.js +117 -0
- package/dist/hooks/generators/require-wu.js.map +1 -0
- package/dist/hooks/generators/session-start-recovery.js +103 -0
- package/dist/hooks/generators/session-start-recovery.js.map +1 -0
- package/dist/hooks/generators/signal-utils.js +54 -0
- package/dist/hooks/generators/signal-utils.js.map +1 -0
- package/dist/hooks/generators/warn-incomplete.js +67 -0
- package/dist/hooks/generators/warn-incomplete.js.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/init-detection.js +232 -0
- package/dist/init-detection.js.map +1 -0
- package/dist/init-lane-validation.js +147 -0
- package/dist/init-lane-validation.js.map +1 -0
- package/dist/init-scaffolding.js +158 -0
- package/dist/init-scaffolding.js.map +1 -0
- package/dist/init-templates.js +1983 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.js.map +1 -0
- package/dist/initiative-add-wu.js.map +1 -0
- package/dist/initiative-bulk-assign-wus.js.map +1 -0
- package/dist/initiative-create.js.map +1 -0
- package/dist/initiative-edit.js.map +1 -0
- package/dist/initiative-list.js.map +1 -0
- package/dist/initiative-plan.js.map +1 -0
- package/dist/initiative-remove-wu.js.map +1 -0
- package/dist/initiative-status.js.map +1 -0
- package/dist/lane-edit.js.map +1 -0
- package/dist/lane-health.js.map +1 -0
- package/dist/lane-lifecycle-process.js +381 -0
- package/dist/lane-lifecycle-process.js.map +1 -0
- package/dist/lane-lock.js.map +1 -0
- package/dist/lane-setup.js.map +1 -0
- package/dist/lane-status.js.map +1 -0
- package/dist/lane-suggest.js.map +1 -0
- package/dist/lane-validate.js.map +1 -0
- package/dist/lifecycle-regression-harness.js +181 -0
- package/dist/lifecycle-regression-harness.js.map +1 -0
- package/dist/lumenflow-upgrade.js +18 -10
- package/dist/lumenflow-upgrade.js.map +1 -0
- package/dist/mem-checkpoint.js.map +1 -0
- package/dist/mem-cleanup.js.map +1 -0
- package/dist/mem-context.js.map +1 -0
- package/dist/mem-create.js.map +1 -0
- package/dist/mem-delete.js.map +1 -0
- package/dist/mem-export.js.map +1 -0
- package/dist/mem-inbox.js.map +1 -0
- package/dist/mem-index.js +214 -0
- package/dist/mem-index.js.map +1 -0
- package/dist/mem-init.js.map +1 -0
- package/dist/mem-profile.js +210 -0
- package/dist/mem-profile.js.map +1 -0
- package/dist/mem-promote.js +257 -0
- package/dist/mem-promote.js.map +1 -0
- package/dist/mem-ready.js.map +1 -0
- package/dist/mem-recover.js.map +1 -0
- package/dist/mem-signal.js.map +1 -0
- package/dist/mem-start.js.map +1 -0
- package/dist/mem-summarize.js.map +1 -0
- package/dist/mem-triage.js.map +1 -0
- package/dist/merge-block.js +225 -0
- package/dist/merge-block.js.map +1 -0
- package/dist/metrics-cli.js.map +1 -0
- package/dist/metrics-snapshot.js.map +1 -0
- package/dist/object-guards.js +9 -0
- package/dist/object-guards.js.map +1 -0
- package/dist/onboard.js.map +1 -0
- package/dist/onboarding-smoke-test.js +432 -0
- package/dist/onboarding-smoke-test.js.map +1 -0
- package/dist/orchestrate-init-status.js.map +1 -0
- package/dist/orchestrate-initiative.js.map +1 -0
- package/dist/orchestrate-monitor.js.map +1 -0
- package/dist/pack-author.js.map +1 -0
- package/dist/pack-hash.js.map +1 -0
- package/dist/pack-install.js.map +1 -0
- package/dist/pack-publish.js.map +1 -0
- package/dist/pack-scaffold.js.map +1 -0
- package/dist/pack-search.js.map +1 -0
- package/dist/pack-validate.js.map +1 -0
- package/dist/plan-create.js.map +1 -0
- package/dist/plan-edit.js.map +1 -0
- package/dist/plan-link.js.map +1 -0
- package/dist/plan-promote.js.map +1 -0
- package/dist/public-manifest.js +931 -0
- package/dist/public-manifest.js.map +1 -0
- package/dist/release.js +664 -116
- package/dist/release.js.map +1 -0
- package/dist/rotate-progress.js +253 -0
- package/dist/rotate-progress.js.map +1 -0
- package/dist/session-coordinator.js +303 -0
- package/dist/session-coordinator.js.map +1 -0
- package/dist/shared-validators.js +81 -0
- package/dist/shared-validators.js.map +1 -0
- package/dist/signal-cleanup.js.map +1 -0
- package/dist/state-bootstrap.js.map +1 -0
- package/dist/state-cleanup.js.map +1 -0
- package/dist/state-doctor-fix.js +226 -0
- package/dist/state-doctor-fix.js.map +1 -0
- package/dist/state-doctor-stamps.js +23 -0
- package/dist/state-doctor-stamps.js.map +1 -0
- package/dist/state-doctor.js.map +1 -0
- package/dist/strict-progress.js +255 -0
- package/dist/strict-progress.js.map +1 -0
- package/dist/sync-templates.js.map +1 -0
- package/dist/task-claim.js.map +1 -0
- package/dist/trace-gen.js +401 -0
- package/dist/trace-gen.js.map +1 -0
- package/dist/validate-agent-skills.js +224 -0
- package/dist/validate-agent-skills.js.map +1 -0
- package/dist/validate-agent-sync.js +152 -0
- package/dist/validate-agent-sync.js.map +1 -0
- package/dist/validate-backlog-sync.js +77 -0
- package/dist/validate-backlog-sync.js.map +1 -0
- package/dist/validate-skills-spec.js +211 -0
- package/dist/validate-skills-spec.js.map +1 -0
- package/dist/validate.js.map +1 -0
- package/dist/validator-defaults.js +107 -0
- package/dist/validator-defaults.js.map +1 -0
- package/dist/validator-registry.js +71 -0
- package/dist/validator-registry.js.map +1 -0
- package/dist/workspace-init.js.map +1 -0
- package/dist/wu-block.js.map +1 -0
- package/dist/wu-brief.js.map +1 -0
- package/dist/wu-claim-branch.js +123 -0
- package/dist/wu-claim-branch.js.map +1 -0
- package/dist/wu-claim-cloud.js +79 -0
- package/dist/wu-claim-cloud.js.map +1 -0
- package/dist/wu-claim-mode.js +82 -0
- package/dist/wu-claim-mode.js.map +1 -0
- package/dist/wu-claim-output.js +85 -0
- package/dist/wu-claim-output.js.map +1 -0
- package/dist/wu-claim-repair-guidance.js +12 -0
- package/dist/wu-claim-repair-guidance.js.map +1 -0
- package/dist/wu-claim-resume-handler.js +87 -0
- package/dist/wu-claim-resume-handler.js.map +1 -0
- package/dist/wu-claim-state.js +581 -0
- package/dist/wu-claim-state.js.map +1 -0
- package/dist/wu-claim-validation.js +458 -0
- package/dist/wu-claim-validation.js.map +1 -0
- package/dist/wu-claim-worktree.js +238 -0
- package/dist/wu-claim-worktree.js.map +1 -0
- package/dist/wu-claim.js.map +1 -0
- package/dist/wu-cleanup-cloud.js +78 -0
- package/dist/wu-cleanup-cloud.js.map +1 -0
- package/dist/wu-cleanup.js.map +1 -0
- package/dist/wu-code-path-coverage.js +83 -0
- package/dist/wu-code-path-coverage.js.map +1 -0
- package/dist/wu-create-cloud.js +30 -0
- package/dist/wu-create-cloud.js.map +1 -0
- package/dist/wu-create-content.js +264 -0
- package/dist/wu-create-content.js.map +1 -0
- package/dist/wu-create-readiness.js +59 -0
- package/dist/wu-create-readiness.js.map +1 -0
- package/dist/wu-create-validation.js +128 -0
- package/dist/wu-create-validation.js.map +1 -0
- package/dist/wu-create.js.map +1 -0
- package/dist/wu-delegate.js.map +1 -0
- package/dist/wu-delete.js.map +1 -0
- package/dist/wu-deps.js.map +1 -0
- package/dist/wu-done-auto-cleanup.js +194 -0
- package/dist/wu-done-auto-cleanup.js.map +1 -0
- package/dist/wu-done-check.js +38 -0
- package/dist/wu-done-check.js.map +1 -0
- package/dist/wu-done-cloud.js +48 -0
- package/dist/wu-done-cloud.js.map +1 -0
- package/dist/wu-done-decay.js +83 -0
- package/dist/wu-done-decay.js.map +1 -0
- package/dist/wu-done.js.map +1 -0
- package/dist/wu-edit-operations.js +399 -0
- package/dist/wu-edit-operations.js.map +1 -0
- package/dist/wu-edit-validators.js +282 -0
- package/dist/wu-edit-validators.js.map +1 -0
- package/dist/wu-edit.js.map +1 -0
- package/dist/wu-infer-lane.js.map +1 -0
- package/dist/wu-preflight.js.map +1 -0
- package/dist/wu-prep.js.map +1 -0
- package/dist/wu-proto.js.map +1 -0
- package/dist/wu-prune.js.map +1 -0
- package/dist/wu-recover.js.map +1 -0
- package/dist/wu-release.js.map +1 -0
- package/dist/wu-repair.js.map +1 -0
- package/dist/wu-sandbox.js.map +1 -0
- package/dist/wu-spawn-completion.js +58 -0
- package/dist/wu-spawn-completion.js.map +1 -0
- package/dist/wu-spawn-prompt-builders.js +1190 -0
- package/dist/wu-spawn-prompt-builders.js.map +1 -0
- package/dist/wu-spawn-strategy-resolver.js +322 -0
- package/dist/wu-spawn-strategy-resolver.js.map +1 -0
- package/dist/wu-spawn.js +59 -0
- package/dist/wu-spawn.js.map +1 -0
- package/dist/wu-state-cloud.js +41 -0
- package/dist/wu-state-cloud.js.map +1 -0
- package/dist/wu-status.js.map +1 -0
- package/dist/wu-unblock.js.map +1 -0
- package/dist/wu-unlock-lane.js.map +1 -0
- package/dist/wu-validate.js.map +1 -0
- package/package.json +8 -10
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Gate Runner Functions
|
|
5
|
+
*
|
|
6
|
+
* WU-1647: Extracted gate runner functions that execute individual gates.
|
|
7
|
+
* Each runner takes a GateLogContext and returns a result with ok/duration.
|
|
8
|
+
*
|
|
9
|
+
* @module gates-runners
|
|
10
|
+
*/
|
|
11
|
+
import { spawnSync } from 'node:child_process';
|
|
12
|
+
import { writeSync } from 'node:fs';
|
|
13
|
+
import { access } from 'node:fs/promises';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
import { getChangedLintableFiles } from '@lumenflow/core/incremental-lint';
|
|
16
|
+
import { buildVitestChangedArgs, isCodeFilePath } from '@lumenflow/core/incremental-test';
|
|
17
|
+
import { createGitForPath } from '@lumenflow/core/git-adapter';
|
|
18
|
+
import { resolveGatesCommands, resolveTestRunner } from '@lumenflow/core/gates-config';
|
|
19
|
+
import { validateBacklogSync } from '@lumenflow/core/validators/backlog-sync';
|
|
20
|
+
import { validateClaimValidation } from '@lumenflow/core';
|
|
21
|
+
import { runSupabaseDocsLinter } from '@lumenflow/core/validators/supabase-docs-linter';
|
|
22
|
+
import { BRANCHES, PACKAGES, PKG_MANAGER, ESLINT_FLAGS, ESLINT_COMMANDS, ESLINT_DEFAULTS, SCRIPTS, CACHE_STRATEGIES, DIRECTORIES, EXIT_CODES, FILE_SYSTEM, } from '@lumenflow/core/wu-constants';
|
|
23
|
+
import { runLaneHealthCheck } from './lane-health.js';
|
|
24
|
+
import { pnpmCmd, pnpmRun, run, makeGateLogger, quoteShellArgs, filterExistingFiles, getChangedFilesForIncremental, detectCurrentWUForCwd, buildPrettierCheckCommand, } from './gates-utils.js';
|
|
25
|
+
import { resolveFormatCheckPlan, resolveLintPlan, resolveTestPlan, resolveSpecLinterPlan, isTestConfigFile, } from './gates-plan-resolvers.js';
|
|
26
|
+
// ── Format check gate ──────────────────────────────────────────────────
|
|
27
|
+
export async function runFormatCheckGate({ agentLog, useAgentMode, cwd }) {
|
|
28
|
+
const start = Date.now();
|
|
29
|
+
const effectiveCwd = cwd ?? process.cwd();
|
|
30
|
+
const logLine = makeGateLogger({ agentLog, useAgentMode });
|
|
31
|
+
let git;
|
|
32
|
+
let isMainBranch;
|
|
33
|
+
try {
|
|
34
|
+
git = createGitForPath(effectiveCwd);
|
|
35
|
+
const currentBranch = await git.getCurrentBranch();
|
|
36
|
+
isMainBranch = currentBranch === BRANCHES.MAIN || currentBranch === BRANCHES.MASTER;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
logLine(`\u26A0\uFE0F Failed to determine branch for format check: ${error.message}`);
|
|
40
|
+
const result = run(pnpmCmd(SCRIPTS.FORMAT_CHECK), { agentLog, cwd: effectiveCwd });
|
|
41
|
+
return { ...result, duration: Date.now() - start, fileCount: -1 };
|
|
42
|
+
}
|
|
43
|
+
if (isMainBranch) {
|
|
44
|
+
logLine('\uD83D\uDCCB On main branch - running full format check');
|
|
45
|
+
const result = run(pnpmCmd(SCRIPTS.FORMAT_CHECK), { agentLog, cwd: effectiveCwd });
|
|
46
|
+
return { ...result, duration: Date.now() - start, fileCount: -1 };
|
|
47
|
+
}
|
|
48
|
+
let changedFiles = [];
|
|
49
|
+
let fileListError = false;
|
|
50
|
+
try {
|
|
51
|
+
changedFiles = await getChangedFilesForIncremental({ git });
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
fileListError = true;
|
|
55
|
+
logLine(`\u26A0\uFE0F Failed to determine changed files for format check: ${error.message}`);
|
|
56
|
+
}
|
|
57
|
+
const plan = resolveFormatCheckPlan({ changedFiles, fileListError, cwd: effectiveCwd });
|
|
58
|
+
if (plan.mode === 'skip') {
|
|
59
|
+
logLine('\n> format:check (incremental)\n');
|
|
60
|
+
logLine('\u2705 No files changed - skipping format check');
|
|
61
|
+
return { ok: true, duration: Date.now() - start, fileCount: 0, filesChecked: [] };
|
|
62
|
+
}
|
|
63
|
+
if (plan.mode === 'full') {
|
|
64
|
+
const reason = plan.reason === 'prettier-config'
|
|
65
|
+
? ' (prettier config changed)'
|
|
66
|
+
: plan.reason === 'file-list-error'
|
|
67
|
+
? ' (file list unavailable)'
|
|
68
|
+
: '';
|
|
69
|
+
logLine(`\uD83D\uDCCB Running full format check${reason}`);
|
|
70
|
+
const result = run(pnpmCmd(SCRIPTS.FORMAT_CHECK), { agentLog, cwd: effectiveCwd });
|
|
71
|
+
return { ...result, duration: Date.now() - start, fileCount: -1 };
|
|
72
|
+
}
|
|
73
|
+
const existingFiles = await filterExistingFiles(plan.files, effectiveCwd);
|
|
74
|
+
if (existingFiles.length === 0) {
|
|
75
|
+
logLine('\n> format:check (incremental)\n');
|
|
76
|
+
logLine('\u2705 All changed files were deleted - skipping format check');
|
|
77
|
+
return { ok: true, duration: Date.now() - start, fileCount: 0, filesChecked: [] };
|
|
78
|
+
}
|
|
79
|
+
logLine(`\n> format:check (incremental: ${existingFiles.length} files)\n`);
|
|
80
|
+
const result = run(buildPrettierCheckCommand(existingFiles), { agentLog, cwd: effectiveCwd });
|
|
81
|
+
return {
|
|
82
|
+
...result,
|
|
83
|
+
duration: Date.now() - start,
|
|
84
|
+
fileCount: existingFiles.length,
|
|
85
|
+
filesChecked: existingFiles,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// ── Lint gate ──────────────────────────────────────────────────────────
|
|
89
|
+
/**
|
|
90
|
+
* Run incremental ESLint on changed files only
|
|
91
|
+
* Falls back to full lint if on main branch or if incremental fails
|
|
92
|
+
*/
|
|
93
|
+
export async function runIncrementalLint({ agentLog, cwd, }) {
|
|
94
|
+
const start = Date.now();
|
|
95
|
+
const logLine = (line) => {
|
|
96
|
+
if (!agentLog) {
|
|
97
|
+
console.log(line);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
writeSync(agentLog.logFd, `${line}\n`);
|
|
101
|
+
};
|
|
102
|
+
try {
|
|
103
|
+
// Check if we're on main branch
|
|
104
|
+
const git = createGitForPath(cwd);
|
|
105
|
+
const currentBranch = await git.getCurrentBranch();
|
|
106
|
+
const isMainBranch = currentBranch === BRANCHES.MAIN || currentBranch === BRANCHES.MASTER;
|
|
107
|
+
if (isMainBranch) {
|
|
108
|
+
logLine('\uD83D\uDCCB On main branch - running full lint');
|
|
109
|
+
const result = run(pnpmCmd(SCRIPTS.LINT), { agentLog, cwd });
|
|
110
|
+
return { ...result, fileCount: -1 };
|
|
111
|
+
}
|
|
112
|
+
const changedFiles = await getChangedLintableFiles({ git });
|
|
113
|
+
const plan = resolveLintPlan({ isMainBranch, changedFiles });
|
|
114
|
+
if (plan.mode === 'skip') {
|
|
115
|
+
logLine('\n> ESLint (incremental)\n');
|
|
116
|
+
logLine('\u2705 No lintable files changed - skipping lint');
|
|
117
|
+
return { ok: true, duration: Date.now() - start, fileCount: 0 };
|
|
118
|
+
}
|
|
119
|
+
if (plan.mode === 'full') {
|
|
120
|
+
logLine('\uD83D\uDCCB Running full lint (incremental plan forced full)');
|
|
121
|
+
const result = run(pnpmCmd(SCRIPTS.LINT), { agentLog, cwd });
|
|
122
|
+
return { ...result, fileCount: -1 };
|
|
123
|
+
}
|
|
124
|
+
const existingFiles = await filterExistingFiles(plan.files, cwd);
|
|
125
|
+
if (existingFiles.length === 0) {
|
|
126
|
+
logLine('\n> ESLint (incremental)\n');
|
|
127
|
+
logLine('\u2705 All changed files were deleted - skipping lint');
|
|
128
|
+
return { ok: true, duration: Date.now() - start, fileCount: 0 };
|
|
129
|
+
}
|
|
130
|
+
logLine(`\n> ESLint (incremental: ${existingFiles.length} files)\n`);
|
|
131
|
+
logLine(`Files to lint:\n ${existingFiles.join('\n ')}\n`);
|
|
132
|
+
const result = spawnSync(PKG_MANAGER, [
|
|
133
|
+
ESLINT_COMMANDS.ESLINT,
|
|
134
|
+
ESLINT_FLAGS.MAX_WARNINGS,
|
|
135
|
+
ESLINT_DEFAULTS.MAX_WARNINGS,
|
|
136
|
+
ESLINT_FLAGS.NO_WARN_IGNORED,
|
|
137
|
+
ESLINT_FLAGS.CACHE,
|
|
138
|
+
ESLINT_FLAGS.CACHE_STRATEGY,
|
|
139
|
+
CACHE_STRATEGIES.CONTENT,
|
|
140
|
+
ESLINT_FLAGS.CACHE_LOCATION,
|
|
141
|
+
'.eslintcache',
|
|
142
|
+
ESLINT_FLAGS.PASS_ON_UNPRUNED,
|
|
143
|
+
...existingFiles,
|
|
144
|
+
], agentLog
|
|
145
|
+
? {
|
|
146
|
+
stdio: ['ignore', agentLog.logFd, agentLog.logFd],
|
|
147
|
+
encoding: FILE_SYSTEM.ENCODING,
|
|
148
|
+
cwd,
|
|
149
|
+
}
|
|
150
|
+
: {
|
|
151
|
+
stdio: 'inherit',
|
|
152
|
+
encoding: FILE_SYSTEM.ENCODING,
|
|
153
|
+
cwd,
|
|
154
|
+
});
|
|
155
|
+
const duration = Date.now() - start;
|
|
156
|
+
return {
|
|
157
|
+
ok: result.status === EXIT_CODES.SUCCESS,
|
|
158
|
+
duration,
|
|
159
|
+
fileCount: existingFiles.length,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error('\u26A0\uFE0F Incremental lint failed, falling back to full lint:', error.message);
|
|
164
|
+
const result = run(pnpmCmd(SCRIPTS.LINT), { agentLog, cwd });
|
|
165
|
+
return { ...result, fileCount: -1 };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ── Test gates ─────────────────────────────────────────────────────────
|
|
169
|
+
const DEFAULT_INCREMENTAL_BASE_BRANCH = 'origin/main';
|
|
170
|
+
export function buildStableVitestIncrementalCommand(baseBranch = DEFAULT_INCREMENTAL_BASE_BRANCH) {
|
|
171
|
+
return pnpmCmd('vitest', 'run', ...buildVitestChangedArgs({ baseBranch }));
|
|
172
|
+
}
|
|
173
|
+
export function resolveIncrementalTestCommand({ testRunner, configuredIncrementalCommand, baseBranch = DEFAULT_INCREMENTAL_BASE_BRANCH, }) {
|
|
174
|
+
const normalizedConfiguredCommand = configuredIncrementalCommand?.trim();
|
|
175
|
+
if (testRunner === 'vitest') {
|
|
176
|
+
if (!normalizedConfiguredCommand) {
|
|
177
|
+
return buildStableVitestIncrementalCommand(baseBranch);
|
|
178
|
+
}
|
|
179
|
+
const isVitestChangedCommand = normalizedConfiguredCommand.includes('vitest') &&
|
|
180
|
+
normalizedConfiguredCommand.includes('--changed');
|
|
181
|
+
if (isVitestChangedCommand) {
|
|
182
|
+
return buildStableVitestIncrementalCommand(baseBranch);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return normalizedConfiguredCommand ?? null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Run changed tests using configured test runner's incremental mode.
|
|
189
|
+
* WU-1356: Updated to use configured commands from gates-config.
|
|
190
|
+
*/
|
|
191
|
+
export async function runChangedTests({ agentLog, cwd, scopedTestPaths = [], }) {
|
|
192
|
+
const start = Date.now();
|
|
193
|
+
// eslint-disable-next-line sonarjs/no-identical-functions -- Pre-existing: logLine helper duplicated across gate runners
|
|
194
|
+
const logLine = (line) => {
|
|
195
|
+
if (!agentLog) {
|
|
196
|
+
console.log(line);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
writeSync(agentLog.logFd, `${line}\n`);
|
|
200
|
+
};
|
|
201
|
+
// WU-1356: Get configured commands
|
|
202
|
+
const gatesCommands = resolveGatesCommands(cwd);
|
|
203
|
+
const testRunner = resolveTestRunner(cwd);
|
|
204
|
+
const normalizedScopedTestPaths = scopedTestPaths
|
|
205
|
+
.filter((testPath) => typeof testPath === 'string')
|
|
206
|
+
.map((testPath) => testPath.trim())
|
|
207
|
+
.filter(Boolean);
|
|
208
|
+
try {
|
|
209
|
+
if (normalizedScopedTestPaths.length > 0) {
|
|
210
|
+
const testPathsArg = quoteShellArgs(normalizedScopedTestPaths);
|
|
211
|
+
logLine(`\n> Running scoped tests from WU tests.unit (${normalizedScopedTestPaths.length})\n`);
|
|
212
|
+
const result = run(pnpmCmd('vitest', 'run', testPathsArg, '--passWithNoTests'), {
|
|
213
|
+
agentLog,
|
|
214
|
+
cwd,
|
|
215
|
+
});
|
|
216
|
+
return { ...result, duration: Date.now() - start, isIncremental: true };
|
|
217
|
+
}
|
|
218
|
+
const git = createGitForPath(cwd);
|
|
219
|
+
const currentBranch = await git.getCurrentBranch();
|
|
220
|
+
const isMainBranch = currentBranch === BRANCHES.MAIN || currentBranch === BRANCHES.MASTER;
|
|
221
|
+
if (isMainBranch) {
|
|
222
|
+
logLine('\uD83D\uDCCB On main branch - running full test suite');
|
|
223
|
+
const result = run(gatesCommands.test_full, { agentLog, cwd });
|
|
224
|
+
return { ...result, isIncremental: false };
|
|
225
|
+
}
|
|
226
|
+
let changedFiles = [];
|
|
227
|
+
let fileListError = false;
|
|
228
|
+
try {
|
|
229
|
+
changedFiles = await getChangedFilesForIncremental({ git });
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
fileListError = true;
|
|
233
|
+
logLine(`\u26A0\uFE0F Failed to determine changed files for tests: ${error.message}`);
|
|
234
|
+
}
|
|
235
|
+
const hasConfigChange = !fileListError && changedFiles.some(isTestConfigFile);
|
|
236
|
+
const untrackedOutput = await git.raw(['ls-files', '--others', '--exclude-standard']);
|
|
237
|
+
const untrackedFiles = untrackedOutput
|
|
238
|
+
.split(/\r?\n/)
|
|
239
|
+
.map((f) => f.trim())
|
|
240
|
+
.filter(Boolean);
|
|
241
|
+
const untrackedCodeFiles = untrackedFiles.filter(isCodeFilePath);
|
|
242
|
+
const hasUntrackedCode = untrackedCodeFiles.length > 0;
|
|
243
|
+
const plan = resolveTestPlan({
|
|
244
|
+
isMainBranch,
|
|
245
|
+
hasUntrackedCode,
|
|
246
|
+
hasConfigChange,
|
|
247
|
+
fileListError,
|
|
248
|
+
});
|
|
249
|
+
if (plan.mode === 'full') {
|
|
250
|
+
if (plan.reason === 'untracked-code') {
|
|
251
|
+
const preview = untrackedCodeFiles.slice(0, 5).join(', ');
|
|
252
|
+
logLine(`\u26A0\uFE0F Untracked code files detected (${untrackedCodeFiles.length}): ${preview}${untrackedCodeFiles.length > 5 ? '...' : ''}`);
|
|
253
|
+
}
|
|
254
|
+
else if (plan.reason === 'test-config') {
|
|
255
|
+
logLine('\u26A0\uFE0F Test config changes detected - running full test suite');
|
|
256
|
+
}
|
|
257
|
+
else if (plan.reason === 'file-list-error') {
|
|
258
|
+
logLine('\u26A0\uFE0F Changed file list unavailable - running full test suite');
|
|
259
|
+
}
|
|
260
|
+
logLine('\uD83D\uDCCB Running full test suite to avoid missing coverage');
|
|
261
|
+
const result = run(gatesCommands.test_full, { agentLog, cwd });
|
|
262
|
+
return { ...result, duration: Date.now() - start, isIncremental: false };
|
|
263
|
+
}
|
|
264
|
+
// WU-1356: Use configured incremental test command
|
|
265
|
+
logLine(`\n> Running tests (${testRunner} --changed)\n`);
|
|
266
|
+
const incrementalCommand = resolveIncrementalTestCommand({
|
|
267
|
+
testRunner,
|
|
268
|
+
configuredIncrementalCommand: gatesCommands.test_incremental,
|
|
269
|
+
});
|
|
270
|
+
if (incrementalCommand) {
|
|
271
|
+
if (testRunner === 'vitest' &&
|
|
272
|
+
incrementalCommand !== gatesCommands.test_incremental?.trim()) {
|
|
273
|
+
logLine('ℹ️ Using hardened vitest incremental command for worker stability');
|
|
274
|
+
}
|
|
275
|
+
const result = run(incrementalCommand, { agentLog, cwd });
|
|
276
|
+
return { ...result, duration: Date.now() - start, isIncremental: true };
|
|
277
|
+
}
|
|
278
|
+
// For other runners without configured incremental, fall back to full
|
|
279
|
+
logLine('\u26A0\uFE0F No incremental test command configured, running full suite');
|
|
280
|
+
const result = run(gatesCommands.test_full, { agentLog, cwd });
|
|
281
|
+
return { ...result, duration: Date.now() - start, isIncremental: false };
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
console.error('\u26A0\uFE0F Changed tests failed, falling back to full suite:', error.message);
|
|
285
|
+
const result = run(gatesCommands.test_full, { agentLog, cwd });
|
|
286
|
+
return { ...result, isIncremental: false };
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Safety-critical test file patterns (relative to apps/web).
|
|
291
|
+
*/
|
|
292
|
+
export const SAFETY_CRITICAL_TEST_FILES = [
|
|
293
|
+
// Privacy detection tests
|
|
294
|
+
'src/lib/llm/__tests__/privacyDetector.test.ts',
|
|
295
|
+
// Escalation trigger tests
|
|
296
|
+
'src/lib/llm/__tests__/escalationTrigger.test.ts',
|
|
297
|
+
'src/components/escalation/__tests__/EscalationHistory.test.tsx',
|
|
298
|
+
// Constitutional enforcer tests
|
|
299
|
+
'src/lib/llm/__tests__/constitutionalEnforcer.test.ts',
|
|
300
|
+
// Safe prompt wrapper tests
|
|
301
|
+
'src/lib/llm/__tests__/safePromptWrapper.test.ts',
|
|
302
|
+
// Crisis/emergency handling tests
|
|
303
|
+
'src/lib/prompts/__tests__/golden-crisis.test.ts',
|
|
304
|
+
];
|
|
305
|
+
/**
|
|
306
|
+
* WU-2062: Run safety-critical tests
|
|
307
|
+
* These tests ALWAYS run regardless of which files changed.
|
|
308
|
+
*/
|
|
309
|
+
export async function runSafetyCriticalTests({ agentLog, cwd, }) {
|
|
310
|
+
const start = Date.now();
|
|
311
|
+
// eslint-disable-next-line sonarjs/no-identical-functions -- Pre-existing: logLine helper duplicated across gate runners
|
|
312
|
+
const logLine = (line) => {
|
|
313
|
+
if (!agentLog) {
|
|
314
|
+
console.log(line);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
writeSync(agentLog.logFd, `${line}\n`);
|
|
318
|
+
};
|
|
319
|
+
// WU-1006: Skip safety-critical tests if apps/web doesn't exist (repo-agnostic)
|
|
320
|
+
const webDir = path.join(cwd, DIRECTORIES.APPS_WEB);
|
|
321
|
+
try {
|
|
322
|
+
await access(webDir);
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
logLine('\n> Safety-critical tests skipped (apps/web not present)\n');
|
|
326
|
+
return { ok: true, duration: Date.now() - start, testCount: 0 };
|
|
327
|
+
}
|
|
328
|
+
try {
|
|
329
|
+
logLine('\n> Safety-critical tests (always run)\n');
|
|
330
|
+
logLine(`Test files: ${SAFETY_CRITICAL_TEST_FILES.length} files\n`);
|
|
331
|
+
const result = spawnSync(PKG_MANAGER, [
|
|
332
|
+
'vitest',
|
|
333
|
+
'run',
|
|
334
|
+
'--project',
|
|
335
|
+
PACKAGES.WEB,
|
|
336
|
+
'--reporter=verbose',
|
|
337
|
+
...SAFETY_CRITICAL_TEST_FILES,
|
|
338
|
+
'--passWithNoTests',
|
|
339
|
+
], agentLog
|
|
340
|
+
? {
|
|
341
|
+
stdio: ['ignore', agentLog.logFd, agentLog.logFd],
|
|
342
|
+
encoding: FILE_SYSTEM.ENCODING,
|
|
343
|
+
cwd,
|
|
344
|
+
}
|
|
345
|
+
: {
|
|
346
|
+
stdio: 'inherit',
|
|
347
|
+
encoding: FILE_SYSTEM.ENCODING,
|
|
348
|
+
cwd,
|
|
349
|
+
});
|
|
350
|
+
const duration = Date.now() - start;
|
|
351
|
+
return {
|
|
352
|
+
ok: result.status === EXIT_CODES.SUCCESS,
|
|
353
|
+
duration,
|
|
354
|
+
testCount: SAFETY_CRITICAL_TEST_FILES.length,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
catch (error) {
|
|
358
|
+
console.error('\u26A0\uFE0F Safety-critical tests failed:', error.message);
|
|
359
|
+
return { ok: false, duration: Date.now() - start, testCount: 0 };
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* WU-2062: Run integration tests for high-risk changes
|
|
364
|
+
*/
|
|
365
|
+
export async function runIntegrationTests({ agentLog, cwd, }) {
|
|
366
|
+
const start = Date.now();
|
|
367
|
+
// eslint-disable-next-line sonarjs/no-identical-functions -- Pre-existing: logLine helper duplicated across gate runners
|
|
368
|
+
const logLine = (line) => {
|
|
369
|
+
if (!agentLog) {
|
|
370
|
+
console.log(line);
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
writeSync(agentLog.logFd, `${line}\n`);
|
|
374
|
+
};
|
|
375
|
+
try {
|
|
376
|
+
logLine('\n> Integration tests (high-risk changes detected)\n');
|
|
377
|
+
// WU-1415: vitest doesn't support --include flag
|
|
378
|
+
const result = run(`RUN_INTEGRATION_TESTS=1 ${pnpmCmd('vitest', 'run', "'**/*.integration.*'", "'**/golden-*.test.*'")}`, { agentLog, cwd });
|
|
379
|
+
const duration = Date.now() - start;
|
|
380
|
+
return {
|
|
381
|
+
ok: result.ok,
|
|
382
|
+
duration,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
console.error('\u26A0\uFE0F Integration tests failed:', error.message);
|
|
387
|
+
return { ok: false, duration: Date.now() - start };
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// ── Spec linter gate ───────────────────────────────────────────────────
|
|
391
|
+
export async function runSpecLinterGate({ agentLog, useAgentMode, cwd }) {
|
|
392
|
+
const start = Date.now();
|
|
393
|
+
const wuId = await detectCurrentWUForCwd(cwd);
|
|
394
|
+
const plan = resolveSpecLinterPlan(wuId);
|
|
395
|
+
if (plan.scopedWuId) {
|
|
396
|
+
const scopedCmd = pnpmCmd('wu:validate', '--id', plan.scopedWuId);
|
|
397
|
+
const scopedResult = run(scopedCmd, { agentLog, cwd });
|
|
398
|
+
if (!scopedResult.ok) {
|
|
399
|
+
return { ok: false, duration: Date.now() - start };
|
|
400
|
+
}
|
|
401
|
+
return { ok: true, duration: Date.now() - start };
|
|
402
|
+
}
|
|
403
|
+
if (!useAgentMode) {
|
|
404
|
+
console.log('\u26A0\uFE0F Unable to detect current WU; skipping scoped validation.');
|
|
405
|
+
}
|
|
406
|
+
else if (agentLog) {
|
|
407
|
+
writeSync(agentLog.logFd, '\u26A0\uFE0F Unable to detect current WU; skipping scoped validation.\n');
|
|
408
|
+
}
|
|
409
|
+
if (!plan.runGlobal) {
|
|
410
|
+
return { ok: true, duration: Date.now() - start };
|
|
411
|
+
}
|
|
412
|
+
const fallbackResult = run(pnpmRun(SCRIPTS.SPEC_LINTER), { agentLog, cwd });
|
|
413
|
+
return { ok: fallbackResult.ok, duration: Date.now() - start };
|
|
414
|
+
}
|
|
415
|
+
// ── Claim validation gate ───────────────────────────────────────────────
|
|
416
|
+
export async function runClaimValidationGate({ agentLog, useAgentMode, cwd }) {
|
|
417
|
+
const start = Date.now();
|
|
418
|
+
const effectiveCwd = cwd ?? process.cwd();
|
|
419
|
+
const logLine = makeGateLogger({ agentLog, useAgentMode });
|
|
420
|
+
logLine('\n> Claim validation\n');
|
|
421
|
+
const wuId = await detectCurrentWUForCwd(effectiveCwd);
|
|
422
|
+
if (!wuId) {
|
|
423
|
+
logLine('\u26A0\uFE0F Unable to detect current WU; skipping claim validation.');
|
|
424
|
+
return { ok: true, duration: Date.now() - start };
|
|
425
|
+
}
|
|
426
|
+
const result = await validateClaimValidation({ cwd: effectiveCwd, wuId });
|
|
427
|
+
if (result.warnings.length > 0) {
|
|
428
|
+
for (const warning of result.warnings) {
|
|
429
|
+
logLine(`\u26A0\uFE0F ${warning}`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (result.ok) {
|
|
433
|
+
logLine(`Claim validation passed (${result.checkedClaims} checked claim${result.checkedClaims === 1 ? '' : 's'}).`);
|
|
434
|
+
return { ok: true, duration: Date.now() - start };
|
|
435
|
+
}
|
|
436
|
+
logLine('\u274C Claim validation mismatches detected:');
|
|
437
|
+
for (const mismatch of result.mismatches) {
|
|
438
|
+
const specPath = path
|
|
439
|
+
.relative(effectiveCwd, mismatch.specReference.filePath)
|
|
440
|
+
.replaceAll(path.sep, '/');
|
|
441
|
+
logLine(` - Claim (${mismatch.claimId}): ${mismatch.claimText}`);
|
|
442
|
+
logLine(` Spec: ${specPath}:${mismatch.specReference.line} [${mismatch.specReference.id} ${mismatch.specReference.section}]`);
|
|
443
|
+
for (const evidence of mismatch.evidence) {
|
|
444
|
+
logLine(` Evidence: ${evidence.filePath}:${evidence.line} ${evidence.lineText}`);
|
|
445
|
+
}
|
|
446
|
+
logLine(` Hint: ${mismatch.remediationHint}`);
|
|
447
|
+
}
|
|
448
|
+
return { ok: false, duration: Date.now() - start };
|
|
449
|
+
}
|
|
450
|
+
// ── Backlog sync gate ──────────────────────────────────────────────────
|
|
451
|
+
export async function runBacklogSyncGate({ agentLog, useAgentMode, cwd }) {
|
|
452
|
+
const start = Date.now();
|
|
453
|
+
const logLine = makeGateLogger({ agentLog, useAgentMode });
|
|
454
|
+
logLine('\n> Backlog sync\n');
|
|
455
|
+
const result = await validateBacklogSync({ cwd });
|
|
456
|
+
if (result.errors.length > 0) {
|
|
457
|
+
logLine('\u274C Backlog sync errors:');
|
|
458
|
+
result.errors.forEach((error) => logLine(` - ${error}`));
|
|
459
|
+
}
|
|
460
|
+
if (result.warnings.length > 0) {
|
|
461
|
+
logLine('\u26A0\uFE0F Backlog sync warnings:');
|
|
462
|
+
result.warnings.forEach((warning) => logLine(` - ${warning}`));
|
|
463
|
+
}
|
|
464
|
+
logLine(`Backlog sync summary: WU files=${result.wuCount}, Backlog refs=${result.backlogCount}`);
|
|
465
|
+
return { ok: result.valid, duration: Date.now() - start };
|
|
466
|
+
}
|
|
467
|
+
// ── Supabase docs gate ─────────────────────────────────────────────────
|
|
468
|
+
export async function runSupabaseDocsGate({ agentLog, useAgentMode, cwd }) {
|
|
469
|
+
const start = Date.now();
|
|
470
|
+
const logLine = makeGateLogger({ agentLog, useAgentMode });
|
|
471
|
+
logLine('\n> Supabase docs linter\n');
|
|
472
|
+
const result = await runSupabaseDocsLinter({ cwd, logger: { log: logLine } });
|
|
473
|
+
if (result.skipped) {
|
|
474
|
+
logLine(`\u26A0\uFE0F ${result.message ?? 'Supabase docs linter skipped.'}`);
|
|
475
|
+
}
|
|
476
|
+
else if (!result.ok) {
|
|
477
|
+
logLine('\u274C Supabase docs linter failed.');
|
|
478
|
+
(result.errors ?? []).forEach((error) => logLine(` - ${error}`));
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
logLine(result.message ?? 'Supabase docs linter passed.');
|
|
482
|
+
}
|
|
483
|
+
return { ok: result.ok, duration: Date.now() - start };
|
|
484
|
+
}
|
|
485
|
+
// ── Lane health gate ───────────────────────────────────────────────────
|
|
486
|
+
/**
|
|
487
|
+
* WU-1191: Run lane health check gate
|
|
488
|
+
*/
|
|
489
|
+
export async function runLaneHealthGate({ agentLog, useAgentMode, mode, cwd, }) {
|
|
490
|
+
const start = Date.now();
|
|
491
|
+
const logLine = makeGateLogger({ agentLog, useAgentMode });
|
|
492
|
+
if (mode === 'off') {
|
|
493
|
+
logLine('\n> Lane health check (skipped - mode: off)\n');
|
|
494
|
+
return { ok: true, duration: Date.now() - start };
|
|
495
|
+
}
|
|
496
|
+
logLine(`\n> Lane health check (mode: ${mode})\n`);
|
|
497
|
+
const report = runLaneHealthCheck({ projectRoot: cwd });
|
|
498
|
+
if (!report.healthy) {
|
|
499
|
+
logLine('\u26A0\uFE0F Lane health issues detected:');
|
|
500
|
+
if (report.overlaps.hasOverlaps) {
|
|
501
|
+
logLine(` - ${report.overlaps.overlaps.length} overlapping code_paths`);
|
|
502
|
+
}
|
|
503
|
+
if (report.gaps.hasGaps) {
|
|
504
|
+
logLine(` - ${report.gaps.uncoveredFiles.length} uncovered files`);
|
|
505
|
+
}
|
|
506
|
+
logLine(` Run 'pnpm lane:health' for full report.`);
|
|
507
|
+
if (mode === 'error') {
|
|
508
|
+
return { ok: false, duration: Date.now() - start };
|
|
509
|
+
}
|
|
510
|
+
// mode === 'warn': report but don't fail
|
|
511
|
+
logLine(' (mode: warn - not blocking)');
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
logLine('Lane health check passed.');
|
|
515
|
+
}
|
|
516
|
+
return { ok: true, duration: Date.now() - start };
|
|
517
|
+
}
|
|
518
|
+
// ── Docs-only filtered tests ───────────────────────────────────────────
|
|
519
|
+
/**
|
|
520
|
+
* WU-1299: Run filtered tests for docs-only mode
|
|
521
|
+
* WU-1356: Updated to use configured test command
|
|
522
|
+
*/
|
|
523
|
+
export async function runDocsOnlyFilteredTests({ packages, agentLog, cwd = process.cwd(), }) {
|
|
524
|
+
const start = Date.now();
|
|
525
|
+
const logLine = makeGateLogger({ agentLog, useAgentMode: !!agentLog, cwd });
|
|
526
|
+
if (packages.length === 0) {
|
|
527
|
+
logLine('\uD83D\uDCDD docs-only mode: no packages to test, skipping');
|
|
528
|
+
return { ok: true, duration: Date.now() - start };
|
|
529
|
+
}
|
|
530
|
+
logLine(`\n> Tests (docs-only filtered: ${packages.join(', ')})\n`);
|
|
531
|
+
// WU-1356: Use configured test command with filter
|
|
532
|
+
const gatesCommands = resolveGatesCommands(cwd);
|
|
533
|
+
// If there's a configured test_docs_only command, use it
|
|
534
|
+
if (gatesCommands.test_docs_only) {
|
|
535
|
+
const result = run(gatesCommands.test_docs_only, { agentLog, cwd });
|
|
536
|
+
return { ok: result.ok, duration: Date.now() - start };
|
|
537
|
+
}
|
|
538
|
+
// Otherwise, use the full test command with filter args
|
|
539
|
+
const filterArgs = packages.map((pkg) => `--filter=${pkg}`);
|
|
540
|
+
const baseCmd = gatesCommands.test_full;
|
|
541
|
+
const filteredCmd = `${baseCmd} ${filterArgs.join(' ')}`;
|
|
542
|
+
const result = run(filteredCmd, { agentLog });
|
|
543
|
+
return { ok: result.ok, duration: Date.now() - start };
|
|
544
|
+
}
|
|
545
|
+
//# sourceMappingURL=gates-runners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates-runners.js","sourceRoot":"","sources":["../src/gates-runners.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates-types.js","sourceRoot":"","sources":["../src/gates-types.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,yCAAyC"}
|