@zigrivers/scaffold 3.5.1 → 3.5.3
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/cli/commands/complete.d.ts.map +1 -1
- package/dist/cli/commands/complete.js +5 -2
- package/dist/cli/commands/complete.js.map +1 -1
- package/dist/cli/commands/next.d.ts.map +1 -1
- package/dist/cli/commands/next.js +11 -43
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/reset.d.ts.map +1 -1
- package/dist/cli/commands/reset.js +5 -2
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/rework.d.ts.map +1 -1
- package/dist/cli/commands/rework.js +11 -44
- package/dist/cli/commands/rework.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +26 -60
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/run.test.js +57 -62
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/skip.d.ts.map +1 -1
- package/dist/cli/commands/skip.js +5 -2
- package/dist/cli/commands/skip.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +13 -44
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/core/dependency/graph.d.ts +1 -1
- package/dist/core/dependency/graph.d.ts.map +1 -1
- package/dist/core/dependency/graph.js +7 -6
- package/dist/core/dependency/graph.js.map +1 -1
- package/dist/core/dependency/graph.test.js +86 -0
- package/dist/core/dependency/graph.test.js.map +1 -1
- package/dist/core/pipeline/context.d.ts +5 -0
- package/dist/core/pipeline/context.d.ts.map +1 -0
- package/dist/core/pipeline/context.js +28 -0
- package/dist/core/pipeline/context.js.map +1 -0
- package/dist/core/pipeline/context.test.d.ts +2 -0
- package/dist/core/pipeline/context.test.d.ts.map +1 -0
- package/dist/core/pipeline/context.test.js +33 -0
- package/dist/core/pipeline/context.test.js.map +1 -0
- package/dist/core/pipeline/resolver.d.ts +6 -0
- package/dist/core/pipeline/resolver.d.ts.map +1 -0
- package/dist/core/pipeline/resolver.js +56 -0
- package/dist/core/pipeline/resolver.js.map +1 -0
- package/dist/core/pipeline/resolver.test.d.ts +2 -0
- package/dist/core/pipeline/resolver.test.d.ts.map +1 -0
- package/dist/core/pipeline/resolver.test.js +101 -0
- package/dist/core/pipeline/resolver.test.js.map +1 -0
- package/dist/core/pipeline/types.d.ts +24 -0
- package/dist/core/pipeline/types.d.ts.map +1 -0
- package/dist/core/pipeline/types.js +2 -0
- package/dist/core/pipeline/types.js.map +1 -0
- package/package.json +1 -1
- package/dist/core/assembly/methodology-resolver.d.ts +0 -11
- package/dist/core/assembly/methodology-resolver.d.ts.map +0 -1
- package/dist/core/assembly/methodology-resolver.js +0 -19
- package/dist/core/assembly/methodology-resolver.js.map +0 -1
- package/dist/core/assembly/methodology-resolver.test.d.ts +0 -2
- package/dist/core/assembly/methodology-resolver.test.d.ts.map +0 -1
- package/dist/core/assembly/methodology-resolver.test.js +0 -87
- package/dist/core/assembly/methodology-resolver.test.js.map +0 -1
- package/dist/utils/eligible.d.ts +0 -9
- package/dist/utils/eligible.d.ts.map +0 -1
- package/dist/utils/eligible.js +0 -50
- package/dist/utils/eligible.js.map +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { resolvePipeline } from './resolver.js';
|
|
3
|
+
import { loadPipelineContext } from './context.js';
|
|
4
|
+
describe('resolvePipeline', () => {
|
|
5
|
+
it('returns a DependencyGraph with nodes', () => {
|
|
6
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
7
|
+
const pipeline = resolvePipeline(ctx);
|
|
8
|
+
expect(pipeline.graph.nodes.size).toBeGreaterThan(50);
|
|
9
|
+
});
|
|
10
|
+
it('returns a preset matching the config methodology', () => {
|
|
11
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
12
|
+
const pipeline = resolvePipeline(ctx);
|
|
13
|
+
expect(pipeline.preset).not.toBeNull();
|
|
14
|
+
expect(pipeline.preset.name).toBeDefined();
|
|
15
|
+
});
|
|
16
|
+
it('returns overlay with steps record', () => {
|
|
17
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
18
|
+
const pipeline = resolvePipeline(ctx);
|
|
19
|
+
expect(typeof pipeline.overlay.steps).toBe('object');
|
|
20
|
+
expect(Object.keys(pipeline.overlay.steps).length).toBeGreaterThan(50);
|
|
21
|
+
});
|
|
22
|
+
it('returns stepMeta map keyed by step name', () => {
|
|
23
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
24
|
+
const pipeline = resolvePipeline(ctx);
|
|
25
|
+
expect(pipeline.stepMeta.has('create-prd')).toBe(true);
|
|
26
|
+
expect(pipeline.stepMeta.get('create-prd')?.phase).toBe('pre');
|
|
27
|
+
});
|
|
28
|
+
it('returns computeEligible that accepts steps and returns string[]', () => {
|
|
29
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
30
|
+
const pipeline = resolvePipeline(ctx);
|
|
31
|
+
const eligible = pipeline.computeEligible({});
|
|
32
|
+
expect(Array.isArray(eligible)).toBe(true);
|
|
33
|
+
expect(eligible.length).toBeGreaterThan(0);
|
|
34
|
+
});
|
|
35
|
+
it('applies custom enablement overrides when config has custom steps', () => {
|
|
36
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
37
|
+
if (ctx.config) {
|
|
38
|
+
ctx.config.custom = {
|
|
39
|
+
steps: { 'create-prd': { enabled: false } },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const pipeline = resolvePipeline(ctx);
|
|
43
|
+
const prdNode = pipeline.graph.nodes.get('create-prd');
|
|
44
|
+
expect(prdNode?.enabled).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
it('custom-enables a step absent from preset (e.g., mvp + custom enable review-prd)', () => {
|
|
47
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
48
|
+
if (ctx.config) {
|
|
49
|
+
ctx.config.methodology = 'mvp';
|
|
50
|
+
ctx.config.custom = {
|
|
51
|
+
steps: { 'review-prd': { enabled: true } },
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const pipeline = resolvePipeline(ctx);
|
|
55
|
+
const node = pipeline.graph.nodes.get('review-prd');
|
|
56
|
+
expect(node?.enabled).toBe(true);
|
|
57
|
+
});
|
|
58
|
+
it('graph nodes have overlay-appended deps (user-stories depends on review-gdd for game)', () => {
|
|
59
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
60
|
+
if (ctx.config) {
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Zod defaults fill fields at runtime
|
|
62
|
+
ctx.config.project = { projectType: 'game', gameConfig: { engine: 'custom' } };
|
|
63
|
+
}
|
|
64
|
+
const pipeline = resolvePipeline(ctx);
|
|
65
|
+
const node = pipeline.graph.nodes.get('user-stories');
|
|
66
|
+
expect(node?.dependencies).toContain('review-gdd');
|
|
67
|
+
});
|
|
68
|
+
it('graph nodes have overlay-replaced deps (platform-parity-review uses review-game-ui for game)', () => {
|
|
69
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
70
|
+
if (ctx.config) {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Zod defaults fill fields at runtime
|
|
72
|
+
ctx.config.project = { projectType: 'game', gameConfig: { engine: 'custom' } };
|
|
73
|
+
}
|
|
74
|
+
const pipeline = resolvePipeline(ctx);
|
|
75
|
+
const node = pipeline.graph.nodes.get('platform-parity-review');
|
|
76
|
+
expect(node?.dependencies).toContain('review-game-ui');
|
|
77
|
+
expect(node?.dependencies).not.toContain('review-ux');
|
|
78
|
+
});
|
|
79
|
+
it('computeEligible blocks user-stories when review-gdd is not completed (game project)', () => {
|
|
80
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
81
|
+
if (ctx.config) {
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Zod defaults fill fields at runtime
|
|
83
|
+
ctx.config.project = { projectType: 'game', gameConfig: { engine: 'custom' } };
|
|
84
|
+
}
|
|
85
|
+
const pipeline = resolvePipeline(ctx);
|
|
86
|
+
const state = {
|
|
87
|
+
'review-prd': { status: 'completed', source: 'pipeline' },
|
|
88
|
+
};
|
|
89
|
+
const eligible = pipeline.computeEligible(state);
|
|
90
|
+
expect(eligible).not.toContain('user-stories');
|
|
91
|
+
});
|
|
92
|
+
it('handles null config gracefully (fallback to deep, frontmatter maps preserved)', () => {
|
|
93
|
+
const ctx = loadPipelineContext(process.cwd());
|
|
94
|
+
ctx.config = null;
|
|
95
|
+
const pipeline = resolvePipeline(ctx);
|
|
96
|
+
expect(pipeline.preset).not.toBeNull();
|
|
97
|
+
expect(pipeline.graph.nodes.size).toBeGreaterThan(50);
|
|
98
|
+
expect(Object.keys(pipeline.overlay.knowledge).length).toBeGreaterThan(0);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=resolver.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.test.js","sourceRoot":"","sources":["../../../src/core/pipeline/resolver.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { MetaPromptFile, MetaPromptFrontmatter } from '../../types/frontmatter.js';
|
|
2
|
+
import type { ScaffoldConfig, MethodologyPreset, DependencyGraph, ScaffoldError, ScaffoldWarning, StepStateEntry } from '../../types/index.js';
|
|
3
|
+
import type { OverlayState } from '../assembly/overlay-state-resolver.js';
|
|
4
|
+
export interface PipelineContext {
|
|
5
|
+
projectRoot: string;
|
|
6
|
+
metaPrompts: Map<string, MetaPromptFile>;
|
|
7
|
+
config: ScaffoldConfig | null;
|
|
8
|
+
configErrors: ScaffoldError[];
|
|
9
|
+
configWarnings: ScaffoldWarning[];
|
|
10
|
+
presets: {
|
|
11
|
+
mvp: MethodologyPreset | null;
|
|
12
|
+
deep: MethodologyPreset | null;
|
|
13
|
+
custom: MethodologyPreset | null;
|
|
14
|
+
};
|
|
15
|
+
methodologyDir: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ResolvedPipeline {
|
|
18
|
+
graph: DependencyGraph;
|
|
19
|
+
preset: MethodologyPreset;
|
|
20
|
+
overlay: OverlayState;
|
|
21
|
+
stepMeta: Map<string, MetaPromptFrontmatter>;
|
|
22
|
+
computeEligible: (steps: Record<string, StepStateEntry>) => string[];
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/pipeline/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvF,OAAO,KAAK,EACV,cAAc,EAAE,iBAAiB,EACjC,eAAe,EAAE,aAAa,EAAE,eAAe,EAC/C,cAAc,EACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAA;AAEzE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACxC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,aAAa,EAAE,CAAA;IAC7B,cAAc,EAAE,eAAe,EAAE,CAAA;IACjC,OAAO,EAAE;QACP,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAAA;QAC7B,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAA;QAC9B,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;KACjC,CAAA;IACD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,iBAAiB,CAAA;IACzB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,MAAM,EAAE,CAAA;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/pipeline/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ScaffoldConfig, MethodologyPreset } from '../../types/index.js';
|
|
2
|
-
export type EnablementProvenance = 'custom-override' | 'conditional-detection' | 'preset-default';
|
|
3
|
-
/**
|
|
4
|
-
* Resolve whether a step is enabled using precedence:
|
|
5
|
-
* custom-override > preset-default
|
|
6
|
-
*/
|
|
7
|
-
export declare function resolveEnablement(step: string, config: ScaffoldConfig, preset: MethodologyPreset): {
|
|
8
|
-
enabled: boolean;
|
|
9
|
-
provenance: EnablementProvenance;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=methodology-resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/assembly/methodology-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7E,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,gBAAgB,CAAA;AAEjG;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,iBAAiB,GACxB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,CAexD"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolve whether a step is enabled using precedence:
|
|
3
|
-
* custom-override > preset-default
|
|
4
|
-
*/
|
|
5
|
-
export function resolveEnablement(step, config, preset) {
|
|
6
|
-
// 1. Custom override in config
|
|
7
|
-
const customStep = config.custom?.steps?.[step];
|
|
8
|
-
if (customStep?.enabled !== undefined) {
|
|
9
|
-
return { enabled: customStep.enabled, provenance: 'custom-override' };
|
|
10
|
-
}
|
|
11
|
-
// 2. Preset default
|
|
12
|
-
const presetStep = preset.steps[step];
|
|
13
|
-
if (presetStep !== undefined) {
|
|
14
|
-
return { enabled: presetStep.enabled, provenance: 'preset-default' };
|
|
15
|
-
}
|
|
16
|
-
// 3. Not in preset — assume disabled
|
|
17
|
-
return { enabled: false, provenance: 'preset-default' };
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=methodology-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology-resolver.js","sourceRoot":"","sources":["../../../src/core/assembly/methodology-resolver.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,MAAsB,EACtB,MAAyB;IAEzB,+BAA+B;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,UAAU,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAA;IACvE,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA;IACtE,CAAC;IAED,qCAAqC;IACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA;AACzD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology-resolver.test.d.ts","sourceRoot":"","sources":["../../../src/core/assembly/methodology-resolver.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { resolveEnablement } from './methodology-resolver.js';
|
|
5
|
-
import { loadPreset } from './preset-loader.js';
|
|
6
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
-
const fixtureDir = path.resolve(__dirname, '../../../tests/fixtures/methodology');
|
|
8
|
-
function makeConfig(overrides = {}) {
|
|
9
|
-
return {
|
|
10
|
-
version: 2,
|
|
11
|
-
methodology: 'deep',
|
|
12
|
-
platforms: ['claude-code'],
|
|
13
|
-
...overrides,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function loadFixturePreset(name) {
|
|
17
|
-
const { preset } = loadPreset(path.join(fixtureDir, `${name}.yml`), []);
|
|
18
|
-
if (!preset)
|
|
19
|
-
throw new Error(`Failed to load preset: ${name}`);
|
|
20
|
-
return preset;
|
|
21
|
-
}
|
|
22
|
-
describe('resolveEnablement', () => {
|
|
23
|
-
it('preset-default returns enabled from preset', () => {
|
|
24
|
-
const preset = loadFixturePreset('deep');
|
|
25
|
-
const config = makeConfig();
|
|
26
|
-
const result = resolveEnablement('create-prd', config, preset);
|
|
27
|
-
expect(result.enabled).toBe(true);
|
|
28
|
-
expect(result.provenance).toBe('preset-default');
|
|
29
|
-
});
|
|
30
|
-
it('custom-override takes precedence over preset', () => {
|
|
31
|
-
const preset = loadFixturePreset('deep');
|
|
32
|
-
const config = makeConfig({
|
|
33
|
-
custom: {
|
|
34
|
-
steps: { 'create-prd': { enabled: false } },
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
const result = resolveEnablement('create-prd', config, preset);
|
|
38
|
-
expect(result.enabled).toBe(false);
|
|
39
|
-
expect(result.provenance).toBe('custom-override');
|
|
40
|
-
});
|
|
41
|
-
it('custom-override can enable a step', () => {
|
|
42
|
-
// Use a step that doesn't exist in mvp preset, then enable via custom
|
|
43
|
-
const preset = loadFixturePreset('mvp');
|
|
44
|
-
const config = makeConfig({
|
|
45
|
-
methodology: 'mvp',
|
|
46
|
-
custom: {
|
|
47
|
-
steps: { 'review-prd': { enabled: true } },
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
const result = resolveEnablement('review-prd', config, preset);
|
|
51
|
-
expect(result.enabled).toBe(true);
|
|
52
|
-
expect(result.provenance).toBe('custom-override');
|
|
53
|
-
});
|
|
54
|
-
it('step not in preset returns enabled=false', () => {
|
|
55
|
-
const preset = loadFixturePreset('mvp');
|
|
56
|
-
const config = makeConfig({ methodology: 'mvp' });
|
|
57
|
-
// 'domain-modeling' not in mvp.yml fixture
|
|
58
|
-
const result = resolveEnablement('domain-modeling', config, preset);
|
|
59
|
-
expect(result.enabled).toBe(false);
|
|
60
|
-
expect(result.provenance).toBe('preset-default');
|
|
61
|
-
});
|
|
62
|
-
it('MVP preset: create-prd enabled, domain-modeling disabled', () => {
|
|
63
|
-
const preset = loadFixturePreset('mvp');
|
|
64
|
-
const config = makeConfig({ methodology: 'mvp' });
|
|
65
|
-
const createPrdResult = resolveEnablement('create-prd', config, preset);
|
|
66
|
-
expect(createPrdResult.enabled).toBe(true);
|
|
67
|
-
expect(createPrdResult.provenance).toBe('preset-default');
|
|
68
|
-
const domainModelingResult = resolveEnablement('domain-modeling', config, preset);
|
|
69
|
-
expect(domainModelingResult.enabled).toBe(false);
|
|
70
|
-
expect(domainModelingResult.provenance).toBe('preset-default');
|
|
71
|
-
});
|
|
72
|
-
it('review-prd is enabled in deep preset', () => {
|
|
73
|
-
const preset = loadFixturePreset('deep');
|
|
74
|
-
const config = makeConfig();
|
|
75
|
-
const result = resolveEnablement('review-prd', config, preset);
|
|
76
|
-
expect(result.enabled).toBe(true);
|
|
77
|
-
expect(result.provenance).toBe('preset-default');
|
|
78
|
-
});
|
|
79
|
-
it('step not in any preset returns enabled=false with preset-default provenance', () => {
|
|
80
|
-
const preset = loadFixturePreset('deep');
|
|
81
|
-
const config = makeConfig();
|
|
82
|
-
const result = resolveEnablement('nonexistent-step', config, preset);
|
|
83
|
-
expect(result.enabled).toBe(false);
|
|
84
|
-
expect(result.provenance).toBe('preset-default');
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
//# sourceMappingURL=methodology-resolver.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methodology-resolver.test.js","sourceRoot":"","sources":["../../../src/core/assembly/methodology-resolver.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/eligible.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { StepStateEntry } from '../types/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Build a computeEligibleFn for the given project root.
|
|
4
|
-
* Discovers meta-prompts, loads the methodology preset, applies project-type
|
|
5
|
-
* overlay, and returns a function that computes next-eligible steps from
|
|
6
|
-
* current state.steps.
|
|
7
|
-
*/
|
|
8
|
-
export declare function buildComputeEligibleFn(projectRoot: string): (steps: Record<string, StepStateEntry>) => string[];
|
|
9
|
-
//# sourceMappingURL=eligible.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eligible.d.ts","sourceRoot":"","sources":["../../src/utils/eligible.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAClB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,MAAM,EAAE,CAmCrD"}
|
package/dist/utils/eligible.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// src/utils/eligible.ts
|
|
2
|
-
// Shared helper: build a computeEligibleFn from a project root.
|
|
3
|
-
// Used by commands that mutate state (complete, skip, reset) to keep
|
|
4
|
-
// next_eligible accurate after each mutation.
|
|
5
|
-
import { discoverMetaPrompts } from '../core/assembly/meta-prompt-loader.js';
|
|
6
|
-
import { loadAllPresets } from '../core/assembly/preset-loader.js';
|
|
7
|
-
import { resolveOverlayState } from '../core/assembly/overlay-state-resolver.js';
|
|
8
|
-
import { buildGraph } from '../core/dependency/graph.js';
|
|
9
|
-
import { computeEligible } from '../core/dependency/eligibility.js';
|
|
10
|
-
import { loadConfig } from '../config/loader.js';
|
|
11
|
-
import { createOutputContext } from '../cli/output/context.js';
|
|
12
|
-
import { getPackagePipelineDir, getPackageMethodologyDir } from './fs.js';
|
|
13
|
-
/**
|
|
14
|
-
* Build a computeEligibleFn for the given project root.
|
|
15
|
-
* Discovers meta-prompts, loads the methodology preset, applies project-type
|
|
16
|
-
* overlay, and returns a function that computes next-eligible steps from
|
|
17
|
-
* current state.steps.
|
|
18
|
-
*/
|
|
19
|
-
export function buildComputeEligibleFn(projectRoot) {
|
|
20
|
-
const pipelineDir = getPackagePipelineDir(projectRoot);
|
|
21
|
-
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
22
|
-
const knownSteps = [...metaPrompts.keys()];
|
|
23
|
-
const { config } = loadConfig(projectRoot, knownSteps);
|
|
24
|
-
const methodology = config?.methodology ?? 'deep';
|
|
25
|
-
const methodologyDir = getPackageMethodologyDir(projectRoot);
|
|
26
|
-
const presets = loadAllPresets(methodologyDir, knownSteps);
|
|
27
|
-
const preset = methodology === 'mvp'
|
|
28
|
-
? presets.mvp
|
|
29
|
-
: methodology === 'custom'
|
|
30
|
-
? presets.custom ?? presets.deep
|
|
31
|
-
: presets.deep;
|
|
32
|
-
// Apply project-type overlay if configured
|
|
33
|
-
const output = createOutputContext('auto');
|
|
34
|
-
const overlayState = config
|
|
35
|
-
? resolveOverlayState({
|
|
36
|
-
config,
|
|
37
|
-
methodologyDir,
|
|
38
|
-
metaPrompts,
|
|
39
|
-
presetSteps: preset?.steps ?? {},
|
|
40
|
-
output,
|
|
41
|
-
})
|
|
42
|
-
: { steps: preset?.steps ?? {} };
|
|
43
|
-
const overlayStepsMap = new Map(Object.entries(overlayState.steps));
|
|
44
|
-
const metaPromptList = [...metaPrompts.values()].map(m => m.frontmatter);
|
|
45
|
-
return (steps) => {
|
|
46
|
-
const graph = buildGraph(metaPromptList, overlayStepsMap);
|
|
47
|
-
return computeEligible(graph, steps);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=eligible.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eligible.js","sourceRoot":"","sources":["../../src/utils/eligible.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,gEAAgE;AAChE,qEAAqE;AACrE,8CAA8C;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAGzE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB;IAEnB,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;IACtD,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IAE1C,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IACtD,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,MAAM,CAAA;IAEjD,MAAM,cAAc,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAA;IAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,WAAW,KAAK,KAAK;QAClC,CAAC,CAAC,OAAO,CAAC,GAAG;QACb,CAAC,CAAC,WAAW,KAAK,QAAQ;YACxB,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;YAChC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;IAElB,2CAA2C;IAC3C,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,MAAM;QACzB,CAAC,CAAC,mBAAmB,CAAC;YACpB,MAAM;YACN,cAAc;YACd,WAAW;YACX,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM;SACP,CAAC;QACF,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,CAAA;IAElC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACnE,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAExE,OAAO,CAAC,KAAqC,EAAE,EAAE;QAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;QACzD,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC,CAAA;AACH,CAAC"}
|