@lumenflow/cli 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/README.md +8 -4
- package/dist/hooks/enforcement-checks.js +120 -0
- package/dist/hooks/enforcement-checks.js.map +1 -1
- package/dist/init-lane-validation.js +141 -0
- package/dist/init-lane-validation.js.map +1 -0
- package/dist/init-templates.js +36 -8
- package/dist/init-templates.js.map +1 -1
- package/dist/init.js +27 -58
- package/dist/init.js.map +1 -1
- package/dist/initiative-create.js +35 -4
- package/dist/initiative-create.js.map +1 -1
- package/dist/lane-lifecycle-process.js +364 -0
- package/dist/lane-lifecycle-process.js.map +1 -0
- package/dist/lane-lock.js +41 -0
- package/dist/lane-lock.js.map +1 -0
- package/dist/lane-setup.js +55 -0
- package/dist/lane-setup.js.map +1 -0
- package/dist/lane-status.js +38 -0
- package/dist/lane-status.js.map +1 -0
- package/dist/lane-validate.js +43 -0
- package/dist/lane-validate.js.map +1 -0
- package/dist/onboarding-smoke-test.js +17 -0
- package/dist/onboarding-smoke-test.js.map +1 -1
- package/dist/public-manifest.js +28 -0
- package/dist/public-manifest.js.map +1 -1
- package/dist/wu-claim-cloud.js +16 -0
- package/dist/wu-claim-cloud.js.map +1 -1
- package/dist/wu-claim.js +12 -2
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-create-content.js +8 -2
- package/dist/wu-create-content.js.map +1 -1
- package/dist/wu-create-validation.js +5 -3
- package/dist/wu-create-validation.js.map +1 -1
- package/dist/wu-create.js +21 -1
- package/dist/wu-create.js.map +1 -1
- package/dist/wu-done.js +57 -8
- package/dist/wu-done.js.map +1 -1
- package/dist/wu-prep.js +22 -0
- package/dist/wu-prep.js.map +1 -1
- package/package.json +15 -11
- package/dist/__tests__/agent-log-issue.test.js +0 -56
- package/dist/__tests__/agent-spawn-coordination.test.js +0 -451
- package/dist/__tests__/backlog-prune.test.js +0 -478
- package/dist/__tests__/cli-entry-point.test.js +0 -160
- package/dist/__tests__/cli-subprocess.test.js +0 -89
- package/dist/__tests__/commands/integrate.test.js +0 -165
- package/dist/__tests__/commands.test.js +0 -271
- package/dist/__tests__/deps-operations.test.js +0 -206
- package/dist/__tests__/doctor.test.js +0 -510
- package/dist/__tests__/file-operations.test.js +0 -906
- package/dist/__tests__/flow-report.test.js +0 -24
- package/dist/__tests__/gates-config.test.js +0 -303
- package/dist/__tests__/gates-integration-tests.test.js +0 -112
- package/dist/__tests__/git-operations.test.js +0 -668
- package/dist/__tests__/guard-main-branch.test.js +0 -79
- package/dist/__tests__/guards-validation.test.js +0 -416
- package/dist/__tests__/hooks/enforcement.test.js +0 -279
- package/dist/__tests__/init-config-lanes.test.js +0 -131
- package/dist/__tests__/init-docs-structure.test.js +0 -152
- package/dist/__tests__/init-greenfield.test.js +0 -247
- package/dist/__tests__/init-lane-inference.test.js +0 -125
- package/dist/__tests__/init-onboarding-docs.test.js +0 -132
- package/dist/__tests__/init-quick-ref.test.js +0 -144
- package/dist/__tests__/init-scripts.test.js +0 -207
- package/dist/__tests__/init-template-portability.test.js +0 -96
- package/dist/__tests__/init.test.js +0 -968
- package/dist/__tests__/initiative-add-wu.test.js +0 -490
- package/dist/__tests__/initiative-e2e.test.js +0 -442
- package/dist/__tests__/initiative-plan-replacement.test.js +0 -161
- package/dist/__tests__/initiative-plan.test.js +0 -340
- package/dist/__tests__/initiative-remove-wu.test.js +0 -458
- package/dist/__tests__/lumenflow-upgrade.test.js +0 -260
- package/dist/__tests__/mem-cleanup-execution.test.js +0 -19
- package/dist/__tests__/memory-integration.test.js +0 -333
- package/dist/__tests__/merge-block.test.js +0 -220
- package/dist/__tests__/metrics-cli.test.js +0 -619
- package/dist/__tests__/metrics-snapshot.test.js +0 -24
- package/dist/__tests__/no-beacon-references-docs.test.js +0 -30
- package/dist/__tests__/no-beacon-references.test.js +0 -39
- package/dist/__tests__/onboarding-smoke-test.test.js +0 -211
- package/dist/__tests__/path-centralization-cli.test.js +0 -234
- package/dist/__tests__/plan-create.test.js +0 -126
- package/dist/__tests__/plan-edit.test.js +0 -157
- package/dist/__tests__/plan-link.test.js +0 -239
- package/dist/__tests__/plan-promote.test.js +0 -181
- package/dist/__tests__/release.test.js +0 -372
- package/dist/__tests__/rotate-progress.test.js +0 -127
- package/dist/__tests__/safe-git.test.js +0 -190
- package/dist/__tests__/session-coordinator.test.js +0 -109
- package/dist/__tests__/state-bootstrap.test.js +0 -432
- package/dist/__tests__/state-doctor.test.js +0 -328
- package/dist/__tests__/sync-templates.test.js +0 -255
- package/dist/__tests__/templates-sync.test.js +0 -219
- package/dist/__tests__/trace-gen.test.js +0 -115
- package/dist/__tests__/wu-create-required-fields.test.js +0 -143
- package/dist/__tests__/wu-create-strict.test.js +0 -118
- package/dist/__tests__/wu-create.test.js +0 -121
- package/dist/__tests__/wu-done-auto-cleanup.test.js +0 -135
- package/dist/__tests__/wu-done-docs-only-policy.test.js +0 -20
- package/dist/__tests__/wu-done-staging-whitelist.test.js +0 -35
- package/dist/__tests__/wu-done.test.js +0 -36
- package/dist/__tests__/wu-edit-strict.test.js +0 -109
- package/dist/__tests__/wu-edit.test.js +0 -119
- package/dist/__tests__/wu-lifecycle-integration.test.js +0 -388
- package/dist/__tests__/wu-prep-default-exec.test.js +0 -35
- package/dist/__tests__/wu-prep.test.js +0 -140
- package/dist/__tests__/wu-proto.test.js +0 -97
- package/dist/__tests__/wu-validate-strict.test.js +0 -113
- package/dist/__tests__/wu-validate.test.js +0 -36
- package/dist/spawn-list.js +0 -143
- package/dist/spawn-list.js.map +0 -1
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file wu-validate-strict.test.ts
|
|
3
|
-
* Test suite for wu:validate strict validation behavior (WU-1329)
|
|
4
|
-
*
|
|
5
|
-
* WU-1329: Make wu:validate treat warnings as errors by default
|
|
6
|
-
*
|
|
7
|
-
* Tests:
|
|
8
|
-
* - Default strict mode behavior (warnings treated as errors)
|
|
9
|
-
* - --no-strict flag restores original behavior (warnings advisory)
|
|
10
|
-
* - Help text documents strict default
|
|
11
|
-
*/
|
|
12
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
13
|
-
import { WU_OPTIONS, NEGATED_OPTIONS } from '@lumenflow/core/dist/arg-parser.js';
|
|
14
|
-
describe('wu:validate strict validation (WU-1329)', () => {
|
|
15
|
-
describe('WU_OPTIONS.noStrict configuration', () => {
|
|
16
|
-
// WU-1329: Verify the noStrict option is properly configured
|
|
17
|
-
it('should have noStrict option defined in WU_OPTIONS', () => {
|
|
18
|
-
expect(WU_OPTIONS.noStrict).toBeDefined();
|
|
19
|
-
expect(WU_OPTIONS.noStrict.name).toBe('noStrict');
|
|
20
|
-
expect(WU_OPTIONS.noStrict.flags).toBe('--no-strict');
|
|
21
|
-
expect(WU_OPTIONS.noStrict.isNegated).toBe(true);
|
|
22
|
-
});
|
|
23
|
-
it('should include description about bypassing strict validation', () => {
|
|
24
|
-
expect(WU_OPTIONS.noStrict.description).toContain('Bypass strict validation');
|
|
25
|
-
});
|
|
26
|
-
// WU-1329: Verify 'strict' is in NEGATED_OPTIONS array
|
|
27
|
-
it('should include strict in NEGATED_OPTIONS array', () => {
|
|
28
|
-
expect(NEGATED_OPTIONS).toContain('strict');
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
describe('strict mode logic', () => {
|
|
32
|
-
// WU-1329: Verify the strict mode conversion pattern
|
|
33
|
-
it('should default to strict=true when noStrict is undefined', () => {
|
|
34
|
-
const args = { noStrict: undefined };
|
|
35
|
-
const strict = !args.noStrict;
|
|
36
|
-
expect(strict).toBe(true);
|
|
37
|
-
});
|
|
38
|
-
it('should set strict=false when noStrict is true (--no-strict flag)', () => {
|
|
39
|
-
const args = { noStrict: true };
|
|
40
|
-
const strict = !args.noStrict;
|
|
41
|
-
expect(strict).toBe(false);
|
|
42
|
-
});
|
|
43
|
-
it('should set strict=true when noStrict is false (explicit)', () => {
|
|
44
|
-
const args = { noStrict: false };
|
|
45
|
-
const strict = !args.noStrict;
|
|
46
|
-
expect(strict).toBe(true);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe('--no-strict logging behavior', () => {
|
|
50
|
-
let consoleSpy;
|
|
51
|
-
beforeEach(() => {
|
|
52
|
-
consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
|
|
53
|
-
});
|
|
54
|
-
afterEach(() => {
|
|
55
|
-
consoleSpy.mockRestore();
|
|
56
|
-
});
|
|
57
|
-
// WU-1329: The logging behavior is implemented in main() functions
|
|
58
|
-
// This test documents the expected behavior pattern using the spy
|
|
59
|
-
it('should log when --no-strict bypass is used', () => {
|
|
60
|
-
// Simulate the logging pattern from wu-validate.ts main()
|
|
61
|
-
const noStrict = true;
|
|
62
|
-
const LOG_PREFIX = '[wu:validate]';
|
|
63
|
-
const message = `${LOG_PREFIX} WARNING: strict validation bypassed (--no-strict). Warnings will be advisory only.`;
|
|
64
|
-
if (noStrict) {
|
|
65
|
-
// Use the spy to simulate logging
|
|
66
|
-
consoleSpy(message);
|
|
67
|
-
}
|
|
68
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('strict validation bypassed'));
|
|
69
|
-
});
|
|
70
|
-
it('should not log when strict mode is active', () => {
|
|
71
|
-
// When noStrict is false, no logging should occur
|
|
72
|
-
const noStrict = false;
|
|
73
|
-
if (noStrict) {
|
|
74
|
-
consoleSpy('This should not be called');
|
|
75
|
-
}
|
|
76
|
-
expect(consoleSpy).not.toHaveBeenCalled();
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
describe('validateSingleWU strict mode behavior', () => {
|
|
80
|
-
// WU-1329: These tests document the expected behavior
|
|
81
|
-
// The actual validation is done by calling the CLI command
|
|
82
|
-
it('should treat warnings as errors by default (strict=true)', () => {
|
|
83
|
-
// In strict mode, any warnings from completeness validation
|
|
84
|
-
// should become errors and cause validation to fail
|
|
85
|
-
const strict = true;
|
|
86
|
-
const warnings = ['Missing recommended field: notes'];
|
|
87
|
-
const errors = [];
|
|
88
|
-
if (strict && warnings.length > 0) {
|
|
89
|
-
errors.push(...warnings.map((w) => `[STRICT] ${w}`));
|
|
90
|
-
}
|
|
91
|
-
expect(errors.length).toBeGreaterThan(0);
|
|
92
|
-
expect(errors[0]).toContain('[STRICT]');
|
|
93
|
-
});
|
|
94
|
-
it('should allow warnings when strict=false (--no-strict)', () => {
|
|
95
|
-
// In non-strict mode, warnings should remain warnings
|
|
96
|
-
// and validation should pass
|
|
97
|
-
const strict = false;
|
|
98
|
-
const warnings = ['Missing recommended field: notes'];
|
|
99
|
-
const errors = [];
|
|
100
|
-
if (strict && warnings.length > 0) {
|
|
101
|
-
errors.push(...warnings.map((w) => `[STRICT] ${w}`));
|
|
102
|
-
}
|
|
103
|
-
expect(errors.length).toBe(0);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
describe('help text documentation', () => {
|
|
107
|
-
// WU-1329: Verify help text documents strict default
|
|
108
|
-
it('should document that --no-strict bypasses strict validation', () => {
|
|
109
|
-
const expectedDescription = 'Bypass strict validation';
|
|
110
|
-
expect(WU_OPTIONS.noStrict.description).toContain(expectedDescription);
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
});
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { summarizeValidationResults } from '../wu-validate.js';
|
|
3
|
-
describe('wu:validate JSON summary (WU-1441)', () => {
|
|
4
|
-
it('should summarize invalid WUs with totals', () => {
|
|
5
|
-
const results = [
|
|
6
|
-
{ wuId: 'WU-1', valid: true, warnings: [], errors: [] },
|
|
7
|
-
{ wuId: 'WU-2', valid: false, warnings: [], errors: ['[STRICT] Missing notes'] },
|
|
8
|
-
];
|
|
9
|
-
const summary = summarizeValidationResults(results);
|
|
10
|
-
expect(summary.valid).toBe(false);
|
|
11
|
-
expect(summary.totalValid).toBe(1);
|
|
12
|
-
expect(summary.totalInvalid).toBe(1);
|
|
13
|
-
expect(summary.totalWarnings).toBe(0);
|
|
14
|
-
expect(summary.invalid).toEqual([
|
|
15
|
-
{
|
|
16
|
-
wuId: 'WU-2',
|
|
17
|
-
errors: ['[STRICT] Missing notes'],
|
|
18
|
-
},
|
|
19
|
-
]);
|
|
20
|
-
});
|
|
21
|
-
it('should include warnings per WU', () => {
|
|
22
|
-
const results = [
|
|
23
|
-
{ wuId: 'WU-3', valid: true, warnings: ['Warn'], errors: [] },
|
|
24
|
-
{ wuId: 'WU-4', valid: true, warnings: [], errors: [] },
|
|
25
|
-
];
|
|
26
|
-
const summary = summarizeValidationResults(results);
|
|
27
|
-
expect(summary.valid).toBe(true);
|
|
28
|
-
expect(summary.totalWarnings).toBe(1);
|
|
29
|
-
expect(summary.warnings).toEqual([
|
|
30
|
-
{
|
|
31
|
-
wuId: 'WU-3',
|
|
32
|
-
warnings: ['Warn'],
|
|
33
|
-
},
|
|
34
|
-
]);
|
|
35
|
-
});
|
|
36
|
-
});
|
package/dist/spawn-list.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Spawn List Command (WU-1950)
|
|
4
|
-
*
|
|
5
|
-
* Displays spawn trees for WUs or initiatives.
|
|
6
|
-
* WU-1604: Includes explicit delegation lineage records from wu:delegate.
|
|
7
|
-
* Shows parent-child relationships with status indicators.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* pnpm spawn:list --wu WU-XXX # Spawns for a specific WU
|
|
11
|
-
* pnpm spawn:list --initiative INIT-XXX # All spawns in an initiative
|
|
12
|
-
* pnpm spawn:list --json # JSON output
|
|
13
|
-
*
|
|
14
|
-
* @see {@link packages/@lumenflow/cli/src/lib/spawn-tree.ts} - Tree builder
|
|
15
|
-
* @see {@link packages/@lumenflow/cli/src/__tests__/spawn-list.test.ts} - Tests
|
|
16
|
-
*/
|
|
17
|
-
import { createWUParser, WU_OPTIONS } from '@lumenflow/core/arg-parser';
|
|
18
|
-
import { die } from '@lumenflow/core/error-handler';
|
|
19
|
-
import { PATTERNS, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
|
|
20
|
-
import { WU_PATHS } from '@lumenflow/core/wu-paths';
|
|
21
|
-
/** Local EMOJI constants for spawn-list output */
|
|
22
|
-
const EMOJI = {
|
|
23
|
-
WARNING: '⚠️',
|
|
24
|
-
ERROR: '❌',
|
|
25
|
-
};
|
|
26
|
-
/** Custom options for spawn-list command */
|
|
27
|
-
const SPAWN_LIST_OPTIONS = {
|
|
28
|
-
initiative: {
|
|
29
|
-
name: 'initiative',
|
|
30
|
-
flags: '--initiative <initId>',
|
|
31
|
-
description: 'Initiative ID to show all spawns for (e.g., INIT-001)',
|
|
32
|
-
},
|
|
33
|
-
json: {
|
|
34
|
-
name: 'json',
|
|
35
|
-
flags: '--json',
|
|
36
|
-
description: 'Output as JSON',
|
|
37
|
-
default: false,
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
import { buildSpawnTree, formatSpawnTree, getSpawnsByWU, getSpawnsByInitiative, treeToJSON, STATUS_INDICATORS, } from '@lumenflow/core/spawn-tree';
|
|
41
|
-
import { SpawnStatus } from '@lumenflow/core/spawn-registry-schema';
|
|
42
|
-
import { runCLI } from './cli-entry-point.js';
|
|
43
|
-
const LOG_PREFIX = '[spawn:list]';
|
|
44
|
-
/** Default paths for spawn registry and WU files (WU-1301: uses config-based paths) */
|
|
45
|
-
const DEFAULT_PATHS = Object.freeze({
|
|
46
|
-
REGISTRY_DIR: LUMENFLOW_PATHS.STATE_DIR,
|
|
47
|
-
WU_DIR: WU_PATHS.WU_DIR(),
|
|
48
|
-
});
|
|
49
|
-
/** Initiative ID pattern */
|
|
50
|
-
const INIT_PATTERN = /^INIT-\d+$/;
|
|
51
|
-
/**
|
|
52
|
-
* Prints the legend for status indicators
|
|
53
|
-
*/
|
|
54
|
-
function printLegend() {
|
|
55
|
-
console.log('\nLegend:');
|
|
56
|
-
console.log(` ${STATUS_INDICATORS[SpawnStatus.PENDING]} pending`);
|
|
57
|
-
console.log(` ${STATUS_INDICATORS[SpawnStatus.COMPLETED]} completed`);
|
|
58
|
-
console.log(` ${STATUS_INDICATORS[SpawnStatus.TIMEOUT]} timeout`);
|
|
59
|
-
console.log(` ${STATUS_INDICATORS[SpawnStatus.CRASHED]} crashed`);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Main entry point
|
|
63
|
-
*/
|
|
64
|
-
async function main() {
|
|
65
|
-
const args = createWUParser({
|
|
66
|
-
name: 'spawn-list',
|
|
67
|
-
description: 'Display spawn trees for WUs or initiatives',
|
|
68
|
-
options: [WU_OPTIONS.wu, SPAWN_LIST_OPTIONS.initiative, SPAWN_LIST_OPTIONS.json],
|
|
69
|
-
required: [],
|
|
70
|
-
allowPositionalId: false,
|
|
71
|
-
});
|
|
72
|
-
const { wu, initiative, json } = args;
|
|
73
|
-
// Validate: exactly one of --wu or --initiative required
|
|
74
|
-
if (!wu && !initiative) {
|
|
75
|
-
die('Either --wu or --initiative is required.\n\nUsage:\n pnpm spawn:list --wu WU-XXX\n pnpm spawn:list --initiative INIT-XXX');
|
|
76
|
-
}
|
|
77
|
-
if (wu && initiative) {
|
|
78
|
-
die('Cannot specify both --wu and --initiative. Choose one.');
|
|
79
|
-
}
|
|
80
|
-
// Handle --wu
|
|
81
|
-
if (wu) {
|
|
82
|
-
const wuId = wu.toUpperCase();
|
|
83
|
-
if (!PATTERNS.WU_ID.test(wuId)) {
|
|
84
|
-
die(`Invalid WU ID format: ${wu}. Expected format: WU-XXX`);
|
|
85
|
-
}
|
|
86
|
-
const spawns = await getSpawnsByWU(wuId, DEFAULT_PATHS.REGISTRY_DIR);
|
|
87
|
-
if (json) {
|
|
88
|
-
const tree = buildSpawnTree(spawns, wuId);
|
|
89
|
-
console.log(JSON.stringify(treeToJSON(tree), null, 2));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (spawns.length === 0) {
|
|
93
|
-
console.log(`${LOG_PREFIX} ${EMOJI.WARNING} No spawns found for ${wuId}`);
|
|
94
|
-
console.log(`\n${wuId} (root)`);
|
|
95
|
-
console.log(' (no spawns)');
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
console.log(`${LOG_PREFIX} Spawn tree for ${wuId}:\n`);
|
|
99
|
-
const tree = buildSpawnTree(spawns, wuId);
|
|
100
|
-
console.log(formatSpawnTree(tree));
|
|
101
|
-
printLegend();
|
|
102
|
-
console.log(`\nTotal: ${spawns.length} spawn(s)`);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
// Handle --initiative
|
|
106
|
-
if (initiative) {
|
|
107
|
-
const initId = initiative.toUpperCase();
|
|
108
|
-
if (!INIT_PATTERN.test(initId)) {
|
|
109
|
-
die(`Invalid initiative ID format: ${initiative}. Expected format: INIT-XXX`);
|
|
110
|
-
}
|
|
111
|
-
const spawns = await getSpawnsByInitiative(initId, DEFAULT_PATHS.REGISTRY_DIR, DEFAULT_PATHS.WU_DIR);
|
|
112
|
-
if (json) {
|
|
113
|
-
// For initiative, output flat list since there may be multiple root WUs
|
|
114
|
-
console.log(JSON.stringify(spawns, null, 2));
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
if (spawns.length === 0) {
|
|
118
|
-
console.log(`${LOG_PREFIX} ${EMOJI.WARNING} No spawns found for ${initId}`);
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
// Group spawns by parent WU and display trees
|
|
122
|
-
console.log(`${LOG_PREFIX} Spawns for ${initId}:\n`);
|
|
123
|
-
// Find unique root WUs (parents that are not targets of other spawns)
|
|
124
|
-
const typedSpawns = spawns;
|
|
125
|
-
const targetWuIds = new Set(typedSpawns.map((s) => s.targetWuId));
|
|
126
|
-
const rootWuIds = [...new Set(typedSpawns.map((s) => s.parentWuId))].filter((id) => !targetWuIds.has(id));
|
|
127
|
-
for (const rootWuId of rootWuIds) {
|
|
128
|
-
const tree = buildSpawnTree(spawns, rootWuId);
|
|
129
|
-
console.log(formatSpawnTree(tree));
|
|
130
|
-
console.log('');
|
|
131
|
-
}
|
|
132
|
-
printLegend();
|
|
133
|
-
console.log(`\nTotal: ${spawns.length} spawn(s) across ${rootWuIds.length} root WU(s)`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// WU-1181: Use import.meta.main instead of process.argv[1] comparison
|
|
137
|
-
// The old pattern fails with pnpm symlinks because process.argv[1] is the symlink
|
|
138
|
-
// path but import.meta.url resolves to the real path - they never match
|
|
139
|
-
// WU-1537: Use import.meta.main + runCLI for consistent EPIPE and error handling
|
|
140
|
-
if (import.meta.main) {
|
|
141
|
-
void runCLI(main);
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=spawn-list.js.map
|
package/dist/spawn-list.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-list.js","sourceRoot":"","sources":["../src/spawn-list.ts"],"names":[],"mappings":"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"}
|