@zigrivers/scaffold 3.0.2 → 3.4.0
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 +61 -45
- package/content/knowledge/core/test-skeleton-generation.md +313 -0
- package/{knowledge → content/knowledge}/execution/enhancement-workflow.md +1 -1
- package/content/knowledge/product/vision-innovation.md +273 -0
- package/{knowledge → content/knowledge}/tools/post-implementation-review-methodology.md +1 -1
- package/{pipeline → content/pipeline}/consolidation/workflow-audit.md +1 -1
- package/{pipeline → content/pipeline}/decisions/review-adrs.md +1 -1
- package/{pipeline → content/pipeline}/environment/design-system.md +1 -1
- package/{pipeline → content/pipeline}/finalization/implementation-playbook.md +2 -2
- package/{pipeline → content/pipeline}/foundation/tech-stack.md +1 -1
- package/{pipeline → content/pipeline}/modeling/review-domain-modeling.md +1 -1
- package/{pipeline → content/pipeline}/planning/implementation-plan-review.md +2 -1
- package/{pipeline → content/pipeline}/quality/review-testing.md +1 -1
- package/{pipeline → content/pipeline}/quality/story-tests.md +2 -2
- package/{pipeline → content/pipeline}/vision/innovate-vision.md +1 -1
- package/content/skills/mmr/SKILL.md +65 -0
- package/content/skills/multi-model-dispatch/SKILL.md +327 -0
- package/content/skills/scaffold-pipeline/SKILL.md +210 -0
- package/content/skills/scaffold-runner/SKILL.md +666 -0
- package/{tools → content/tools}/post-implementation-review.md +2 -2
- package/{tools → content/tools}/prompt-pipeline.md +7 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +17 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/build.test.js +47 -12
- package/dist/cli/commands/build.test.js.map +1 -1
- package/dist/cli/commands/info.test.js +2 -2
- package/dist/cli/commands/info.test.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +6 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/list.test.js +8 -8
- package/dist/cli/commands/list.test.js.map +1 -1
- package/dist/cli/commands/run.test.js +4 -4
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +51 -57
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/skill.test.js +86 -43
- package/dist/cli/commands/skill.test.js.map +1 -1
- package/dist/cli/middleware/project-root.d.ts.map +1 -1
- package/dist/cli/middleware/project-root.js +16 -0
- package/dist/cli/middleware/project-root.js.map +1 -1
- package/dist/cli/middleware/project-root.test.js +20 -0
- package/dist/cli/middleware/project-root.test.js.map +1 -1
- package/dist/config/migration.js.map +1 -1
- package/dist/config/migration.test.js +4 -0
- package/dist/config/migration.test.js.map +1 -1
- package/dist/config/schema.d.ts +3 -3
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/schema.test.js +8 -0
- package/dist/config/schema.test.js.map +1 -1
- package/dist/core/adapters/adapter.d.ts +1 -1
- package/dist/core/adapters/adapter.d.ts.map +1 -1
- package/dist/core/adapters/adapter.js +4 -1
- package/dist/core/adapters/adapter.js.map +1 -1
- package/dist/core/adapters/adapter.test.js +5 -2
- package/dist/core/adapters/adapter.test.js.map +1 -1
- package/dist/core/adapters/gemini.d.ts +10 -0
- package/dist/core/adapters/gemini.d.ts.map +1 -0
- package/dist/core/adapters/gemini.js +126 -0
- package/dist/core/adapters/gemini.js.map +1 -0
- package/dist/core/adapters/gemini.test.d.ts +2 -0
- package/dist/core/adapters/gemini.test.d.ts.map +1 -0
- package/dist/core/adapters/gemini.test.js +91 -0
- package/dist/core/adapters/gemini.test.js.map +1 -0
- package/dist/core/skills/sync.d.ts +36 -0
- package/dist/core/skills/sync.d.ts.map +1 -0
- package/dist/core/skills/sync.js +119 -0
- package/dist/core/skills/sync.js.map +1 -0
- package/dist/core/skills/sync.test.d.ts +2 -0
- package/dist/core/skills/sync.test.d.ts.map +1 -0
- package/dist/core/skills/sync.test.js +166 -0
- package/dist/core/skills/sync.test.js.map +1 -0
- package/dist/e2e/commands.test.js +10 -10
- package/dist/e2e/commands.test.js.map +1 -1
- package/dist/e2e/init.test.js +78 -0
- package/dist/e2e/init.test.js.map +1 -1
- package/dist/e2e/knowledge.test.js +5 -4
- package/dist/e2e/knowledge.test.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/project/adopt.test.js +8 -8
- package/dist/project/adopt.test.js.map +1 -1
- package/dist/project/gemini-md.d.ts +7 -0
- package/dist/project/gemini-md.d.ts.map +1 -0
- package/dist/project/gemini-md.js +59 -0
- package/dist/project/gemini-md.js.map +1 -0
- package/dist/project/gemini-md.test.d.ts +2 -0
- package/dist/project/gemini-md.test.d.ts.map +1 -0
- package/dist/project/gemini-md.test.js +104 -0
- package/dist/project/gemini-md.test.js.map +1 -0
- package/dist/types/config.d.ts +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/wizard.d.ts +1 -1
- package/dist/types/wizard.d.ts.map +1 -1
- package/dist/utils/fs.d.ts +7 -1
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +22 -9
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/fs.test.js +15 -1
- package/dist/utils/fs.test.js.map +1 -1
- package/dist/validation/index.test.js +2 -2
- package/dist/validation/index.test.js.map +1 -1
- package/dist/wizard/questions.d.ts +1 -1
- package/dist/wizard/questions.d.ts.map +1 -1
- package/dist/wizard/questions.js +3 -0
- package/dist/wizard/questions.js.map +1 -1
- package/dist/wizard/questions.test.d.ts +2 -0
- package/dist/wizard/questions.test.d.ts.map +1 -0
- package/dist/wizard/questions.test.js +36 -0
- package/dist/wizard/questions.test.js.map +1 -0
- package/dist/wizard/wizard.js.map +1 -1
- package/dist/wizard/wizard.test.js +21 -1
- package/dist/wizard/wizard.test.js.map +1 -1
- package/package.json +3 -5
- package/skills/mmr/SKILL.md +65 -0
- package/skills/scaffold-pipeline/SKILL.md +3 -3
- /package/{knowledge → content/knowledge}/core/adr-craft.md +0 -0
- /package/{knowledge → content/knowledge}/core/ai-memory-management.md +0 -0
- /package/{knowledge → content/knowledge}/core/api-design.md +0 -0
- /package/{knowledge → content/knowledge}/core/automated-review-tooling.md +0 -0
- /package/{knowledge → content/knowledge}/core/claude-md-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/coding-conventions.md +0 -0
- /package/{knowledge → content/knowledge}/core/database-design.md +0 -0
- /package/{knowledge → content/knowledge}/core/design-system-tokens.md +0 -0
- /package/{knowledge → content/knowledge}/core/dev-environment.md +0 -0
- /package/{knowledge → content/knowledge}/core/domain-modeling.md +0 -0
- /package/{knowledge → content/knowledge}/core/eval-craft.md +0 -0
- /package/{knowledge → content/knowledge}/core/git-workflow-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/multi-model-review-dispatch.md +0 -0
- /package/{knowledge → content/knowledge}/core/operations-runbook.md +0 -0
- /package/{knowledge → content/knowledge}/core/project-structure-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/review-step-template.md +0 -0
- /package/{knowledge → content/knowledge}/core/security-best-practices.md +0 -0
- /package/{knowledge → content/knowledge}/core/system-architecture.md +0 -0
- /package/{knowledge → content/knowledge}/core/task-decomposition.md +0 -0
- /package/{knowledge → content/knowledge}/core/task-tracking.md +0 -0
- /package/{knowledge → content/knowledge}/core/tech-stack-selection.md +0 -0
- /package/{knowledge → content/knowledge}/core/testing-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/core/user-stories.md +0 -0
- /package/{knowledge → content/knowledge}/core/user-story-innovation.md +0 -0
- /package/{knowledge → content/knowledge}/core/ux-specification.md +0 -0
- /package/{knowledge → content/knowledge}/execution/task-claiming-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/execution/tdd-execution-loop.md +0 -0
- /package/{knowledge → content/knowledge}/execution/worktree-management.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/apply-fixes-and-freeze.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/developer-onboarding.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/implementation-playbook.md +0 -0
- /package/{knowledge → content/knowledge}/product/gap-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/product/prd-craft.md +0 -0
- /package/{knowledge → content/knowledge}/product/prd-innovation.md +0 -0
- /package/{knowledge → content/knowledge}/product/vision-craft.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-adr.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-api-design.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-database-design.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-domain-modeling.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-implementation-tasks.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-methodology.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-operations.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-prd.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-security.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-system-architecture.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-testing-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-user-stories.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-ux-specification.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-vision.md +0 -0
- /package/{knowledge → content/knowledge}/tools/release-management.md +0 -0
- /package/{knowledge → content/knowledge}/tools/session-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/tools/version-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/validation/critical-path-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/validation/cross-phase-consistency.md +0 -0
- /package/{knowledge → content/knowledge}/validation/decision-completeness.md +0 -0
- /package/{knowledge → content/knowledge}/validation/dependency-validation.md +0 -0
- /package/{knowledge → content/knowledge}/validation/implementability-review.md +0 -0
- /package/{knowledge → content/knowledge}/validation/scope-management.md +0 -0
- /package/{knowledge → content/knowledge}/validation/traceability.md +0 -0
- /package/{methodology → content/methodology}/README.md +0 -0
- /package/{methodology → content/methodology}/custom-defaults.yml +0 -0
- /package/{methodology → content/methodology}/deep.yml +0 -0
- /package/{methodology → content/methodology}/mvp.yml +0 -0
- /package/{pipeline → content/pipeline}/architecture/review-architecture.md +0 -0
- /package/{pipeline → content/pipeline}/architecture/system-architecture.md +0 -0
- /package/{pipeline → content/pipeline}/build/multi-agent-resume.md +0 -0
- /package/{pipeline → content/pipeline}/build/multi-agent-start.md +0 -0
- /package/{pipeline → content/pipeline}/build/new-enhancement.md +0 -0
- /package/{pipeline → content/pipeline}/build/quick-task.md +0 -0
- /package/{pipeline → content/pipeline}/build/single-agent-resume.md +0 -0
- /package/{pipeline → content/pipeline}/build/single-agent-start.md +0 -0
- /package/{pipeline → content/pipeline}/consolidation/claude-md-optimization.md +0 -0
- /package/{pipeline → content/pipeline}/decisions/adrs.md +0 -0
- /package/{pipeline → content/pipeline}/environment/ai-memory-setup.md +0 -0
- /package/{pipeline → content/pipeline}/environment/automated-pr-review.md +0 -0
- /package/{pipeline → content/pipeline}/environment/dev-env-setup.md +0 -0
- /package/{pipeline → content/pipeline}/environment/git-workflow.md +0 -0
- /package/{pipeline → content/pipeline}/finalization/apply-fixes-and-freeze.md +0 -0
- /package/{pipeline → content/pipeline}/finalization/developer-onboarding-guide.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/beads.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/coding-standards.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/project-structure.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/tdd.md +0 -0
- /package/{pipeline → content/pipeline}/integration/add-e2e-testing.md +0 -0
- /package/{pipeline → content/pipeline}/modeling/domain-modeling.md +0 -0
- /package/{pipeline → content/pipeline}/parity/platform-parity-review.md +0 -0
- /package/{pipeline → content/pipeline}/planning/implementation-plan.md +0 -0
- /package/{pipeline → content/pipeline}/pre/create-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/innovate-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/innovate-user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/pre/review-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/review-user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/pre/user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/quality/create-evals.md +0 -0
- /package/{pipeline → content/pipeline}/quality/operations.md +0 -0
- /package/{pipeline → content/pipeline}/quality/review-operations.md +0 -0
- /package/{pipeline → content/pipeline}/quality/review-security.md +0 -0
- /package/{pipeline → content/pipeline}/quality/security.md +0 -0
- /package/{pipeline → content/pipeline}/specification/api-contracts.md +0 -0
- /package/{pipeline → content/pipeline}/specification/database-schema.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-api.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-database.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-ux.md +0 -0
- /package/{pipeline → content/pipeline}/specification/ux-spec.md +0 -0
- /package/{pipeline → content/pipeline}/validation/critical-path-walkthrough.md +0 -0
- /package/{pipeline → content/pipeline}/validation/cross-phase-consistency.md +0 -0
- /package/{pipeline → content/pipeline}/validation/decision-completeness.md +0 -0
- /package/{pipeline → content/pipeline}/validation/dependency-graph-validation.md +0 -0
- /package/{pipeline → content/pipeline}/validation/implementability-dry-run.md +0 -0
- /package/{pipeline → content/pipeline}/validation/scope-creep-check.md +0 -0
- /package/{pipeline → content/pipeline}/validation/traceability-matrix.md +0 -0
- /package/{pipeline → content/pipeline}/vision/create-vision.md +0 -0
- /package/{pipeline → content/pipeline}/vision/review-vision.md +0 -0
- /package/{tools → content/tools}/dashboard.md +0 -0
- /package/{tools → content/tools}/release.md +0 -0
- /package/{tools → content/tools}/review-code.md +0 -0
- /package/{tools → content/tools}/review-pr.md +0 -0
- /package/{tools → content/tools}/session-analyzer.md +0 -0
- /package/{tools → content/tools}/update.md +0 -0
- /package/{tools → content/tools}/version-bump.md +0 -0
- /package/{tools → content/tools}/version.md +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { afterEach, describe, it, expect, vi } from 'vitest';
|
|
5
|
+
import { GeminiAdapter } from './gemini.js';
|
|
6
|
+
import * as fsUtils from '../../utils/fs.js';
|
|
7
|
+
const tmpDirs = [];
|
|
8
|
+
const makeContext = (overrides) => ({
|
|
9
|
+
projectRoot: overrides?.projectRoot ?? makeTmpDir(),
|
|
10
|
+
methodology: overrides?.methodology ?? 'standard',
|
|
11
|
+
allSteps: overrides?.allSteps ?? ['create-prd', 'status', 'next'],
|
|
12
|
+
});
|
|
13
|
+
const makeStepInput = (overrides) => ({
|
|
14
|
+
slug: overrides?.slug ?? 'create-prd',
|
|
15
|
+
description: overrides?.description ?? 'Create a PRD',
|
|
16
|
+
phase: overrides?.phase ?? 'planning',
|
|
17
|
+
dependsOn: overrides?.dependsOn ?? [],
|
|
18
|
+
produces: overrides?.produces ?? ['docs/prd.md'],
|
|
19
|
+
pipelineIndex: overrides?.pipelineIndex ?? 0,
|
|
20
|
+
body: overrides?.body ?? '## Purpose\nCreate the PRD.',
|
|
21
|
+
sections: overrides?.sections ?? { Purpose: 'Create the PRD.' },
|
|
22
|
+
knowledgeEntries: overrides?.knowledgeEntries ?? [],
|
|
23
|
+
conditional: overrides?.conditional ?? null,
|
|
24
|
+
longDescription: overrides?.longDescription ?? 'Create the PRD.',
|
|
25
|
+
});
|
|
26
|
+
function makeTmpDir() {
|
|
27
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'scaffold-gemini-adapter-'));
|
|
28
|
+
tmpDirs.push(dir);
|
|
29
|
+
return dir;
|
|
30
|
+
}
|
|
31
|
+
afterEach(() => {
|
|
32
|
+
vi.restoreAllMocks();
|
|
33
|
+
for (const dir of tmpDirs) {
|
|
34
|
+
try {
|
|
35
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
/* ignore */
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
tmpDirs.length = 0;
|
|
42
|
+
});
|
|
43
|
+
describe('GeminiAdapter', () => {
|
|
44
|
+
it('generateStepWrapper creates a .gemini command TOML file for the step slug', () => {
|
|
45
|
+
const adapter = new GeminiAdapter();
|
|
46
|
+
adapter.initialize(makeContext());
|
|
47
|
+
const result = adapter.generateStepWrapper(makeStepInput({
|
|
48
|
+
slug: 'create-prd',
|
|
49
|
+
description: 'Create a PRD',
|
|
50
|
+
longDescription: 'Capture the project requirements in detail.',
|
|
51
|
+
}));
|
|
52
|
+
expect(result.files).toHaveLength(1);
|
|
53
|
+
expect(result.files[0].relativePath).toBe('.gemini/commands/scaffold/create-prd.toml');
|
|
54
|
+
expect(result.files[0].writeMode).toBe('create');
|
|
55
|
+
expect(result.files[0].content).toContain('description = "Run scaffold create-prd through the Scaffold runner workflow."');
|
|
56
|
+
expect(result.files[0].content).toContain('Step description: Create a PRD');
|
|
57
|
+
expect(result.files[0].content).toContain('Purpose: Capture the project requirements in detail.');
|
|
58
|
+
expect(result.files[0].content).toContain('User request: scaffold create-prd');
|
|
59
|
+
});
|
|
60
|
+
it('finalize emits shared skills, GEMINI.md, and status/next commands', () => {
|
|
61
|
+
const adapter = new GeminiAdapter();
|
|
62
|
+
const context = makeContext();
|
|
63
|
+
adapter.initialize(context);
|
|
64
|
+
const step = makeStepInput({ slug: 'create-prd' });
|
|
65
|
+
const stepOutput = adapter.generateStepWrapper(step);
|
|
66
|
+
const finalizeInput = { results: [stepOutput] };
|
|
67
|
+
const result = adapter.finalize(finalizeInput);
|
|
68
|
+
expect(result.files.map((file) => file.relativePath)).toEqual(expect.arrayContaining([
|
|
69
|
+
'.agents/skills/scaffold-runner/SKILL.md',
|
|
70
|
+
'.agents/skills/scaffold-pipeline/SKILL.md',
|
|
71
|
+
'GEMINI.md',
|
|
72
|
+
'.gemini/commands/scaffold/status.toml',
|
|
73
|
+
'.gemini/commands/scaffold/next.toml',
|
|
74
|
+
]));
|
|
75
|
+
expect(result.files.find((file) => file.relativePath === 'GEMINI.md')?.content).toContain('@./.agents/skills/scaffold-runner/SKILL.md');
|
|
76
|
+
expect(result.files.find((file) => file.relativePath === 'GEMINI.md')?.content).toContain('@./.agents/skills/scaffold-pipeline/SKILL.md');
|
|
77
|
+
expect(fs.existsSync(path.join(context.projectRoot, 'GEMINI.md'))).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
it('returns a controlled error when packaged skill files are missing', () => {
|
|
80
|
+
const adapter = new GeminiAdapter();
|
|
81
|
+
const context = makeContext();
|
|
82
|
+
adapter.initialize(context);
|
|
83
|
+
const missingSkillDir = path.join(makeTmpDir(), 'missing-agent-skills');
|
|
84
|
+
vi.spyOn(fsUtils, 'getPackageSkillsDir').mockReturnValue(missingSkillDir);
|
|
85
|
+
const result = adapter.finalize({ results: [] });
|
|
86
|
+
expect(result.files).toEqual([]);
|
|
87
|
+
expect(result.errors).toHaveLength(1);
|
|
88
|
+
expect(result.errors[0].code).toBe('GEMINI_SKILL_FILES_MISSING');
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=gemini.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.test.js","sourceRoot":"","sources":["../../../src/core/adapters/gemini.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface SkillTarget {
|
|
2
|
+
installDir: '.claude/skills' | '.agents/skills';
|
|
3
|
+
label: string;
|
|
4
|
+
templateVars: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export interface SkillDefinition {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
}
|
|
10
|
+
export interface InstallResult {
|
|
11
|
+
installed: number;
|
|
12
|
+
errors: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface InstallOptions {
|
|
15
|
+
force?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const SKILL_TARGETS: SkillTarget[];
|
|
18
|
+
export declare const INSTALLABLE_SKILLS: SkillDefinition[];
|
|
19
|
+
/** Replace `{{KEY}}` template markers with values from `vars`. */
|
|
20
|
+
export declare function resolveSkillTemplate(content: string, vars: Record<string, string>): string;
|
|
21
|
+
/** Read the package version from package.json. */
|
|
22
|
+
export declare function getPackageVersion(): string;
|
|
23
|
+
/** Return the directory containing skill template sources. */
|
|
24
|
+
export declare function getSkillTemplateDir(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Check `.scaffold-skill-version` markers in each target directory.
|
|
27
|
+
* If any marker is missing or stale, reinstall all skills.
|
|
28
|
+
* Skips silently if template source files are missing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function syncSkillsIfNeeded(projectRoot: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Install all skill templates to both target directories, resolving
|
|
33
|
+
* template variables per target. Writes version markers on success.
|
|
34
|
+
*/
|
|
35
|
+
export declare function installAllSkills(projectRoot: string, options?: InstallOptions): InstallResult;
|
|
36
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/core/skills/sync.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,gBAAgB,GAAG,gBAAgB,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,eAAO,MAAM,aAAa,EAAE,WAAW,EAWtC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAS/C,CAAA;AAQD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAE1F;AAED,kDAAkD;AAClD,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,8DAA8D;AAC9D,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAe5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CA8C7F"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { getPackageRoot } from '../../utils/fs.js';
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Constants
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
export const SKILL_TARGETS = [
|
|
9
|
+
{
|
|
10
|
+
installDir: '.claude/skills',
|
|
11
|
+
label: 'Claude Code',
|
|
12
|
+
templateVars: { INSTRUCTIONS_FILE: 'CLAUDE.md' },
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
installDir: '.agents/skills',
|
|
16
|
+
label: 'shared agents',
|
|
17
|
+
templateVars: { INSTRUCTIONS_FILE: 'AGENTS.md' },
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
export const INSTALLABLE_SKILLS = [
|
|
21
|
+
{
|
|
22
|
+
name: 'scaffold-runner',
|
|
23
|
+
description: 'Interactive CLI wrapper that surfaces decision points before execution',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'scaffold-pipeline',
|
|
27
|
+
description: 'Static reference for pipeline ordering, dependencies, and phase structure',
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
const VERSION_MARKER_FILE = '.scaffold-skill-version';
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Helpers
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/** Replace `{{KEY}}` template markers with values from `vars`. */
|
|
35
|
+
export function resolveSkillTemplate(content, vars) {
|
|
36
|
+
return content.replace(/\{\{(\w+)\}\}/g, (match, key) => vars[key] ?? match);
|
|
37
|
+
}
|
|
38
|
+
/** Read the package version from package.json. */
|
|
39
|
+
export function getPackageVersion() {
|
|
40
|
+
// Both src/core/skills/ and dist/core/skills/ are 3 levels deep from the package root
|
|
41
|
+
const thisDir = path.dirname(fileURLToPath(import.meta.url));
|
|
42
|
+
const pkgPath = path.resolve(thisDir, '..', '..', '..', 'package.json');
|
|
43
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
44
|
+
return pkg.version;
|
|
45
|
+
}
|
|
46
|
+
/** Return the directory containing skill template sources. */
|
|
47
|
+
export function getSkillTemplateDir() {
|
|
48
|
+
return path.join(getPackageRoot(), 'content', 'skills');
|
|
49
|
+
}
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
// Core functions
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
/**
|
|
54
|
+
* Check `.scaffold-skill-version` markers in each target directory.
|
|
55
|
+
* If any marker is missing or stale, reinstall all skills.
|
|
56
|
+
* Skips silently if template source files are missing.
|
|
57
|
+
*/
|
|
58
|
+
export function syncSkillsIfNeeded(projectRoot) {
|
|
59
|
+
const currentVersion = getPackageVersion();
|
|
60
|
+
// Fast path: check if all markers match the current version
|
|
61
|
+
const allCurrent = SKILL_TARGETS.every(target => {
|
|
62
|
+
const markerPath = path.join(projectRoot, target.installDir, VERSION_MARKER_FILE);
|
|
63
|
+
if (!fs.existsSync(markerPath))
|
|
64
|
+
return false;
|
|
65
|
+
const markerVersion = fs.readFileSync(markerPath, 'utf8').trim();
|
|
66
|
+
return markerVersion === currentVersion;
|
|
67
|
+
});
|
|
68
|
+
if (allCurrent)
|
|
69
|
+
return;
|
|
70
|
+
// At least one target is stale or missing — reinstall
|
|
71
|
+
installAllSkills(projectRoot);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Install all skill templates to both target directories, resolving
|
|
75
|
+
* template variables per target. Writes version markers on success.
|
|
76
|
+
*/
|
|
77
|
+
export function installAllSkills(projectRoot, options) {
|
|
78
|
+
const force = options?.force ?? false;
|
|
79
|
+
const templateDir = getSkillTemplateDir();
|
|
80
|
+
const currentVersion = getPackageVersion();
|
|
81
|
+
let installed = 0;
|
|
82
|
+
const errors = [];
|
|
83
|
+
for (const target of SKILL_TARGETS) {
|
|
84
|
+
for (const skill of INSTALLABLE_SKILLS) {
|
|
85
|
+
const sourcePath = path.join(templateDir, skill.name, 'SKILL.md');
|
|
86
|
+
if (!fs.existsSync(sourcePath)) {
|
|
87
|
+
// Skip silently — template source not bundled
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const destDir = path.join(projectRoot, target.installDir, skill.name);
|
|
91
|
+
const destPath = path.join(destDir, 'SKILL.md');
|
|
92
|
+
if (fs.existsSync(destPath) && !force) {
|
|
93
|
+
// Already present and not forcing — still count it if it exists
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
98
|
+
const template = fs.readFileSync(sourcePath, 'utf8');
|
|
99
|
+
const resolved = resolveSkillTemplate(template, target.templateVars);
|
|
100
|
+
fs.writeFileSync(destPath, resolved, 'utf8');
|
|
101
|
+
installed++;
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
errors.push(`Failed to install ${skill.name} to ${target.installDir}: ${err}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Write version marker for this target
|
|
108
|
+
const targetDir = path.join(projectRoot, target.installDir);
|
|
109
|
+
try {
|
|
110
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
111
|
+
fs.writeFileSync(path.join(targetDir, VERSION_MARKER_FILE), currentVersion, 'utf8');
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
errors.push(`Failed to write version marker to ${target.installDir}: ${err}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return { installed, errors };
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/core/skills/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../../src/core/skills/sync.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import crypto from 'node:crypto';
|
|
6
|
+
// Mock getPackageRoot so we can control where source skills are found
|
|
7
|
+
vi.mock('../../utils/fs.js', () => ({
|
|
8
|
+
getPackageRoot: vi.fn(() => '/mock-package-root'),
|
|
9
|
+
}));
|
|
10
|
+
import { syncSkillsIfNeeded, installAllSkills, SKILL_TARGETS, INSTALLABLE_SKILLS } from './sync.js';
|
|
11
|
+
import { getPackageRoot } from '../../utils/fs.js';
|
|
12
|
+
function makeTmpDir() {
|
|
13
|
+
const dir = path.join(os.tmpdir(), `scaffold-sync-test-${crypto.randomUUID()}`);
|
|
14
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
15
|
+
return dir;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Seed skill template source files in a fake package root.
|
|
19
|
+
* Uses the template format with {{INSTRUCTIONS_FILE}} markers.
|
|
20
|
+
*/
|
|
21
|
+
function seedSkillTemplates(packageRoot) {
|
|
22
|
+
for (const skill of INSTALLABLE_SKILLS) {
|
|
23
|
+
const skillDir = path.join(packageRoot, 'content', 'skills', skill.name);
|
|
24
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
25
|
+
fs.writeFileSync(path.join(skillDir, 'SKILL.md'), `# ${skill.name}\nInstructions file: {{INSTRUCTIONS_FILE}}\n`, 'utf8');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Write a version marker file in the given target directory.
|
|
30
|
+
*/
|
|
31
|
+
function seedVersionMarker(projectRoot, installDir, version) {
|
|
32
|
+
const dir = path.join(projectRoot, installDir);
|
|
33
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
34
|
+
fs.writeFileSync(path.join(dir, '.scaffold-skill-version'), version, 'utf8');
|
|
35
|
+
}
|
|
36
|
+
describe('syncSkillsIfNeeded', () => {
|
|
37
|
+
let tmpDir;
|
|
38
|
+
let packageRoot;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
tmpDir = makeTmpDir();
|
|
41
|
+
packageRoot = makeTmpDir();
|
|
42
|
+
vi.mocked(getPackageRoot).mockReturnValue(packageRoot);
|
|
43
|
+
});
|
|
44
|
+
afterEach(() => {
|
|
45
|
+
vi.restoreAllMocks();
|
|
46
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
47
|
+
fs.rmSync(packageRoot, { recursive: true, force: true });
|
|
48
|
+
});
|
|
49
|
+
it('installs skills when no version marker exists', () => {
|
|
50
|
+
seedSkillTemplates(packageRoot);
|
|
51
|
+
syncSkillsIfNeeded(tmpDir);
|
|
52
|
+
// Skills should be installed in both targets
|
|
53
|
+
for (const target of SKILL_TARGETS) {
|
|
54
|
+
for (const skill of INSTALLABLE_SKILLS) {
|
|
55
|
+
const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
|
|
56
|
+
expect(fs.existsSync(skillPath)).toBe(true);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
it('resolves {{INSTRUCTIONS_FILE}} to CLAUDE.md for .claude/skills/', () => {
|
|
61
|
+
seedSkillTemplates(packageRoot);
|
|
62
|
+
syncSkillsIfNeeded(tmpDir);
|
|
63
|
+
const content = fs.readFileSync(path.join(tmpDir, '.claude', 'skills', INSTALLABLE_SKILLS[0].name, 'SKILL.md'), 'utf8');
|
|
64
|
+
expect(content).toContain('Instructions file: CLAUDE.md');
|
|
65
|
+
expect(content).not.toContain('{{INSTRUCTIONS_FILE}}');
|
|
66
|
+
});
|
|
67
|
+
it('resolves {{INSTRUCTIONS_FILE}} to AGENTS.md for .agents/skills/', () => {
|
|
68
|
+
seedSkillTemplates(packageRoot);
|
|
69
|
+
syncSkillsIfNeeded(tmpDir);
|
|
70
|
+
const content = fs.readFileSync(path.join(tmpDir, '.agents', 'skills', INSTALLABLE_SKILLS[0].name, 'SKILL.md'), 'utf8');
|
|
71
|
+
expect(content).toContain('Instructions file: AGENTS.md');
|
|
72
|
+
expect(content).not.toContain('{{INSTRUCTIONS_FILE}}');
|
|
73
|
+
});
|
|
74
|
+
it('skips sync when version marker matches package version', () => {
|
|
75
|
+
seedSkillTemplates(packageRoot);
|
|
76
|
+
// First install to create the skills and markers
|
|
77
|
+
installAllSkills(tmpDir);
|
|
78
|
+
// Spy on writeFileSync after initial install
|
|
79
|
+
const writeSpy = vi.spyOn(fs, 'writeFileSync');
|
|
80
|
+
// syncSkillsIfNeeded should detect markers match and skip
|
|
81
|
+
syncSkillsIfNeeded(tmpDir);
|
|
82
|
+
expect(writeSpy).not.toHaveBeenCalled();
|
|
83
|
+
writeSpy.mockRestore();
|
|
84
|
+
});
|
|
85
|
+
it('re-syncs when version marker is stale', () => {
|
|
86
|
+
seedSkillTemplates(packageRoot);
|
|
87
|
+
// Seed stale version markers
|
|
88
|
+
for (const target of SKILL_TARGETS) {
|
|
89
|
+
seedVersionMarker(tmpDir, target.installDir, '0.0.0-old');
|
|
90
|
+
}
|
|
91
|
+
syncSkillsIfNeeded(tmpDir);
|
|
92
|
+
// Skills should have been installed
|
|
93
|
+
for (const target of SKILL_TARGETS) {
|
|
94
|
+
for (const skill of INSTALLABLE_SKILLS) {
|
|
95
|
+
const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
|
|
96
|
+
expect(fs.existsSync(skillPath)).toBe(true);
|
|
97
|
+
}
|
|
98
|
+
// Version marker should be updated
|
|
99
|
+
const marker = fs.readFileSync(path.join(tmpDir, target.installDir, '.scaffold-skill-version'), 'utf8');
|
|
100
|
+
expect(marker).not.toBe('0.0.0-old');
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
it('skips silently when template source is missing', () => {
|
|
104
|
+
// Don't seed any templates — packageRoot has no content/skills/
|
|
105
|
+
// Should not throw
|
|
106
|
+
syncSkillsIfNeeded(tmpDir);
|
|
107
|
+
// No skills should be installed
|
|
108
|
+
for (const target of SKILL_TARGETS) {
|
|
109
|
+
for (const skill of INSTALLABLE_SKILLS) {
|
|
110
|
+
const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
|
|
111
|
+
expect(fs.existsSync(skillPath)).toBe(false);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
describe('installAllSkills', () => {
|
|
117
|
+
let tmpDir;
|
|
118
|
+
let packageRoot;
|
|
119
|
+
beforeEach(() => {
|
|
120
|
+
tmpDir = makeTmpDir();
|
|
121
|
+
packageRoot = makeTmpDir();
|
|
122
|
+
vi.mocked(getPackageRoot).mockReturnValue(packageRoot);
|
|
123
|
+
});
|
|
124
|
+
afterEach(() => {
|
|
125
|
+
vi.restoreAllMocks();
|
|
126
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
127
|
+
fs.rmSync(packageRoot, { recursive: true, force: true });
|
|
128
|
+
});
|
|
129
|
+
it('installs all skills to both target directories', () => {
|
|
130
|
+
seedSkillTemplates(packageRoot);
|
|
131
|
+
const result = installAllSkills(tmpDir);
|
|
132
|
+
expect(result.installed).toBe(INSTALLABLE_SKILLS.length * SKILL_TARGETS.length);
|
|
133
|
+
expect(result.errors).toEqual([]);
|
|
134
|
+
for (const target of SKILL_TARGETS) {
|
|
135
|
+
for (const skill of INSTALLABLE_SKILLS) {
|
|
136
|
+
const skillPath = path.join(tmpDir, target.installDir, skill.name, 'SKILL.md');
|
|
137
|
+
expect(fs.existsSync(skillPath)).toBe(true);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
it('writes version markers', () => {
|
|
142
|
+
seedSkillTemplates(packageRoot);
|
|
143
|
+
installAllSkills(tmpDir);
|
|
144
|
+
for (const target of SKILL_TARGETS) {
|
|
145
|
+
const markerPath = path.join(tmpDir, target.installDir, '.scaffold-skill-version');
|
|
146
|
+
expect(fs.existsSync(markerPath)).toBe(true);
|
|
147
|
+
const version = fs.readFileSync(markerPath, 'utf8');
|
|
148
|
+
expect(version.length).toBeGreaterThan(0);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
it('overwrites existing skills when force is true', () => {
|
|
152
|
+
seedSkillTemplates(packageRoot);
|
|
153
|
+
// First install
|
|
154
|
+
installAllSkills(tmpDir);
|
|
155
|
+
// Write custom content to a skill file
|
|
156
|
+
const skillPath = path.join(tmpDir, '.claude', 'skills', INSTALLABLE_SKILLS[0].name, 'SKILL.md');
|
|
157
|
+
fs.writeFileSync(skillPath, '# custom content that should be overwritten', 'utf8');
|
|
158
|
+
// Reinstall with force
|
|
159
|
+
const result = installAllSkills(tmpDir, { force: true });
|
|
160
|
+
expect(result.installed).toBe(INSTALLABLE_SKILLS.length * SKILL_TARGETS.length);
|
|
161
|
+
const content = fs.readFileSync(skillPath, 'utf8');
|
|
162
|
+
expect(content).toContain('Instructions file: CLAUDE.md');
|
|
163
|
+
expect(content).not.toContain('custom content');
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=sync.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../../src/core/skills/sync.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,8 +36,8 @@ function makeProjectRoot(opts = {}) {
|
|
|
36
36
|
if (opts.pipelineFiles !== undefined && opts.pipelineFiles.length > 0) {
|
|
37
37
|
for (const f of opts.pipelineFiles) {
|
|
38
38
|
const dir = f.subdir
|
|
39
|
-
? path.join(root, 'pipeline', f.subdir)
|
|
40
|
-
: path.join(root, 'pipeline');
|
|
39
|
+
? path.join(root, 'content', 'pipeline', f.subdir)
|
|
40
|
+
: path.join(root, 'content', 'pipeline');
|
|
41
41
|
fs.mkdirSync(dir, { recursive: true });
|
|
42
42
|
fs.writeFileSync(path.join(dir, f.name), f.content, 'utf8');
|
|
43
43
|
}
|
|
@@ -259,7 +259,7 @@ outputs:
|
|
|
259
259
|
},
|
|
260
260
|
],
|
|
261
261
|
});
|
|
262
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
262
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
263
263
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
264
264
|
expect(metaPrompts.size).toBe(2);
|
|
265
265
|
const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
|
|
@@ -290,7 +290,7 @@ outputs:
|
|
|
290
290
|
},
|
|
291
291
|
],
|
|
292
292
|
});
|
|
293
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
293
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
294
294
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
295
295
|
const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
|
|
296
296
|
// With both steps pending, only step-a (no deps) should be eligible
|
|
@@ -323,7 +323,7 @@ outputs:
|
|
|
323
323
|
},
|
|
324
324
|
],
|
|
325
325
|
});
|
|
326
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
326
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
327
327
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
328
328
|
const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
|
|
329
329
|
// After step-a completes, step-b becomes eligible
|
|
@@ -356,7 +356,7 @@ outputs:
|
|
|
356
356
|
},
|
|
357
357
|
],
|
|
358
358
|
});
|
|
359
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
359
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
360
360
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
361
361
|
const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
|
|
362
362
|
const cycles = detectCycles(graph);
|
|
@@ -394,7 +394,7 @@ outputs:
|
|
|
394
394
|
},
|
|
395
395
|
],
|
|
396
396
|
});
|
|
397
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
397
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
398
398
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
399
399
|
const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
|
|
400
400
|
const cycles = detectCycles(graph);
|
|
@@ -430,7 +430,7 @@ outputs:
|
|
|
430
430
|
` },
|
|
431
431
|
],
|
|
432
432
|
});
|
|
433
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
433
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
434
434
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
435
435
|
expect(metaPrompts.size).toBe(2);
|
|
436
436
|
expect(metaPrompts.has('create-prd')).toBe(true);
|
|
@@ -459,7 +459,7 @@ outputs:
|
|
|
459
459
|
},
|
|
460
460
|
],
|
|
461
461
|
});
|
|
462
|
-
const pipelineDir = path.join(root, 'pipeline');
|
|
462
|
+
const pipelineDir = path.join(root, 'content', 'pipeline');
|
|
463
463
|
const metaPrompts = discoverMetaPrompts(pipelineDir);
|
|
464
464
|
const graph = buildGraph([...metaPrompts.values()].map(mp => mp.frontmatter), new Map());
|
|
465
465
|
// With step-a skipped, step-b should be eligible
|
|
@@ -474,7 +474,7 @@ outputs:
|
|
|
474
474
|
it('real scaffold pipeline directory loads without errors', () => {
|
|
475
475
|
const repoRoot = path.resolve(import.meta.url.replace('file://', ''), '../../../..');
|
|
476
476
|
// The real pipeline dir in the repo
|
|
477
|
-
const pipelineDir = path.join(repoRoot, 'pipeline');
|
|
477
|
+
const pipelineDir = path.join(repoRoot, 'content', 'pipeline');
|
|
478
478
|
if (!fs.existsSync(pipelineDir)) {
|
|
479
479
|
// Skip if running outside repo context
|
|
480
480
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/e2e/commands.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/e2e/commands.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAG/D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,GAAa,EAAE,CAAA;AAE5B,SAAS,WAAW;IAClB,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,eAAe,CAAC,OAIrB,EAAE;IACJ,MAAM,IAAI,GAAG,WAAW,EAAE,CAAA;IAC1B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM;gBAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;YAC1C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACtC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,WAAW,GAAG;;;;CAInB,CAAA;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAChC,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,OAAO;IAC3B,gBAAgB,EAAE,KAAK;IACvB,kBAAkB,EAAE,KAAK;IACzB,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,0BAA0B;IACnC,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;CAClB,CAAC,CAAA;AAEF,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAM,GAAG,EAAE;IACjD,OAAO;QACD,IAAI;;;;;;WAMD,IAAI;;IAEX,IAAI;;;EAGN,MAAM;CACP,CAAA;AACD,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,2DAA2D;IAC3D,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE;aAC7D;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,0DAA0D;IAC1D,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,SAAS,GAAG;;;CAGrB,CAAA;QACG,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAA;QAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,kEAAkE;IAClE,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAA;QAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,yDAAyD;IACzD,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,cAAc,GAAG;;;;;;;;;CAS1B,CAAA;QACG,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;SAClE,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,kDAAkD;IAClD,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG;;;;;;;;;;CAUjB,CAAA;QACG,MAAM,KAAK,GAAG;;;;;;;;;;CAUjB,CAAA;QACG,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;gBACrC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;aACtC;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,qDAAqD;IACrD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,UAAU;SACzB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;QAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,+DAA+D;IAC/D,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG;;;;;;;;CAQhB,CAAA;QACG,MAAM,IAAI,GAAG;;;;;;;;CAQhB,CAAA;QACG,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;gBACnC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;aACpC;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,iEAAiE;IACjE,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAA;QAC5D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QAC7B,MAAM,CAAC,MAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvC,MAAM,CAAC,MAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,oDAAoD;IACpD,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAA;QAC1B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,wEAAwE;IACxE,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gBAC1D;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;;CAWrC;iBACQ;aACF;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEhC,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE5C,2BAA2B;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,oEAAoE;IACpE,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gBAC1D;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;;CAWrC;iBACQ;aACF;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,oEAAoE;QACpE,MAAM,KAAK,GAAmC;YAC5C,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjE,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;SAClE,CAAA;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,+EAA+E;IAC/E,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gBAC1D;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;;CAWrC;iBACQ;aACF;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,kDAAkD;QAClD,MAAM,KAAK,GAAmC;YAC5C,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;YACnE,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;SAClE,CAAA;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,4DAA4D;IAC5D,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gBAC1D;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;;CAWrC;iBACQ;aACF;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,mDAAmD;IACnD,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;CAUrC;iBACQ;gBACD;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;CAUrC;iBACQ;aACF;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,6DAA6D;IAC7D,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;;;;;;;;;;CAUxD,EAAE;gBACK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;;;;;;;;;;;CAW3D,EAAE;aACI;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QAEpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,mEAAmE;IACnE,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,aAAa,EAAE;gBACb,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;gBAC1D;oBACE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;;;;;;;;;;;CAWrC;iBACQ;aACF;SACF,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,iDAAiD;QACjD,MAAM,KAAK,GAAmC;YAC5C,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjE,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;SAClE,CAAA;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,iEAAiE;IACjE,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,aAAa,CAAC,CAAA;QACpF,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAE9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,uCAAuC;YACvC,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACpD,qCAAqC;QACrC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAE3C,iCAAiC;QACjC,MAAM,KAAK,GAAG,UAAU,CACtB,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EACnD,IAAI,GAAG,EAAE,CACV,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAE3C,iCAAiC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|