@zigrivers/scaffold 3.31.0 → 3.32.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 +1 -1
- package/content/pipeline/build/multi-agent-resume.md +8 -2
- package/content/pipeline/build/multi-agent-start.md +8 -2
- package/content/tools/knowledge-audit-entry.md +1 -0
- package/content/tools/post-implementation-review.md +1 -1
- package/content/tools/review-code.md +1 -1
- package/content/tools/review-pr.md +9 -1
- package/dist/cli/commands/info.test.js +3 -0
- package/dist/cli/commands/info.test.js.map +1 -1
- package/dist/cli/commands/list.test.js +6 -0
- package/dist/cli/commands/list.test.js.map +1 -1
- package/dist/cli/commands/run.d.ts +1 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +40 -4
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/run.test.js +135 -0
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +38 -4
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/status.test.js +66 -2
- package/dist/cli/commands/status.test.js.map +1 -1
- package/dist/core/assembly/engine.d.ts.map +1 -1
- package/dist/core/assembly/engine.js +3 -3
- package/dist/core/assembly/engine.js.map +1 -1
- package/dist/core/assembly/engine.test.js +28 -0
- package/dist/core/assembly/engine.test.js.map +1 -1
- package/dist/e2e/commands.test.js +3 -0
- package/dist/e2e/commands.test.js.map +1 -1
- package/dist/e2e/knowledge.test.js +5 -0
- package/dist/e2e/knowledge.test.js.map +1 -1
- package/dist/guides/cli-guides.test.js +3 -0
- package/dist/guides/cli-guides.test.js.map +1 -1
- package/dist/knowledge-freshness/audit-runner.d.ts +14 -0
- package/dist/knowledge-freshness/audit-runner.d.ts.map +1 -1
- package/dist/knowledge-freshness/audit-runner.js +31 -1
- package/dist/knowledge-freshness/audit-runner.js.map +1 -1
- package/dist/knowledge-freshness/audit-runner.test.js +78 -1
- package/dist/knowledge-freshness/audit-runner.test.js.map +1 -1
- package/dist/state/ensure-v3-migration.d.ts.map +1 -1
- package/dist/state/ensure-v3-migration.js +4 -2
- package/dist/state/ensure-v3-migration.js.map +1 -1
- package/dist/utils/fs.d.ts +6 -30
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +66 -58
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/fs.test.js +53 -6
- package/dist/utils/fs.test.js.map +1 -1
- package/dist/validation/index.test.js +3 -0
- package/dist/validation/index.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-runner.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAS/D,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBjB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAExD,MAAM,WAAW,oBAAoB;IACnC,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,sGAAsG;IACtG,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAuFvB"}
|
|
1
|
+
{"version":3,"file":"audit-runner.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAS/D,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBjB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAExD,MAAM,WAAW,oBAAoB;IACnC,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,sGAAsG;IACtG,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAuFvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAoBpE"}
|
|
@@ -105,7 +105,37 @@ export async function runEntryAudit(entryPath, dispatch, opts = {}) {
|
|
|
105
105
|
throw new Error('audit output contained no JSON object matching the verdict schema. ' +
|
|
106
106
|
'Check that the dispatcher returned the meta-prompt\'s expected shape.');
|
|
107
107
|
}
|
|
108
|
-
return verdict;
|
|
108
|
+
return normalizeVerdict(verdict);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Make a verdict self-consistent with the spec contract (enforced in
|
|
112
|
+
* audit-apply.ts; spec §A.4): `current` and `minor-drift` carry findings only,
|
|
113
|
+
* never edits. A non-conforming
|
|
114
|
+
* model — observed with DeepSeek, which follows the constraint less strictly
|
|
115
|
+
* than Claude — can return `proposed_changes` alongside one of those verdicts.
|
|
116
|
+
* Hard-failing there leaves the entry perpetually "due" and starves the
|
|
117
|
+
* 10-entry daily audit budget. Instead, demote the changes to advisory
|
|
118
|
+
* `preserve_warnings` so the verdict applies cleanly and the entry gets
|
|
119
|
+
* reviewed-stamped. Demoting (not upgrading to major-drift) is deliberate:
|
|
120
|
+
* upgrading would push unexpected rewrites of stable entries through, bypassing
|
|
121
|
+
* the MMR-corroboration and anti-over-rewrite gates that major-drift requires.
|
|
122
|
+
*/
|
|
123
|
+
export function normalizeVerdict(verdict) {
|
|
124
|
+
// Defensive: although runEntryAudit's Zod parse guarantees these arrays,
|
|
125
|
+
// this function is exported as the sanitizer for non-conforming output, so
|
|
126
|
+
// it must tolerate a hand-built verdict that omits them rather than throw.
|
|
127
|
+
const proposed = verdict.proposed_changes ?? [];
|
|
128
|
+
const carriesNoEdits = verdict.verdict === 'current' || verdict.verdict === 'minor-drift';
|
|
129
|
+
if (!carriesNoEdits || proposed.length === 0)
|
|
130
|
+
return verdict;
|
|
131
|
+
const demoted = proposed.map((c) => `[demoted from proposed_changes — ${verdict.verdict} carries no edits] ${c.location}: ${c.rationale}`);
|
|
132
|
+
process.stderr.write(`[audit-runner] verdict "${verdict.verdict}" returned ${proposed.length} ` +
|
|
133
|
+
'proposed_changes; demoting to preserve_warnings (advisory) per spec contract.\n');
|
|
134
|
+
return {
|
|
135
|
+
...verdict,
|
|
136
|
+
proposed_changes: [],
|
|
137
|
+
preserve_warnings: [...(verdict.preserve_warnings ?? []), ...demoted],
|
|
138
|
+
};
|
|
109
139
|
}
|
|
110
140
|
function findFirstMatchingJson(s, schema) {
|
|
111
141
|
const tryCandidate = (candidate) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-runner.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"audit-runner.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { runEntryAudit } from './audit-runner.js';
|
|
5
|
+
import { runEntryAudit, normalizeVerdict } from './audit-runner.js';
|
|
6
6
|
// Use temp fixtures rather than the real on-disk entry + meta-prompt so the
|
|
7
7
|
// runner tests don't break when those files are edited. We inject the meta-
|
|
8
8
|
// prompt path via opts.promptPath so the test never depends on cwd or on
|
|
@@ -126,5 +126,82 @@ describe('runEntryAudit', () => {
|
|
|
126
126
|
fs.rmSync(tmp, { recursive: true, force: true });
|
|
127
127
|
}
|
|
128
128
|
});
|
|
129
|
+
it('demotes proposed_changes on a minor-drift verdict to advisory preserve_warnings', async () => {
|
|
130
|
+
// A non-conforming model (observed with DeepSeek) classifies an entry as
|
|
131
|
+
// minor-drift yet still returns proposed_changes. The spec contract
|
|
132
|
+
// (audit-apply.ts) forbids that combination; rather than hard-failing the
|
|
133
|
+
// daily budget, the runner normalizes the verdict to be self-consistent:
|
|
134
|
+
// drop the changes and keep their rationales as advisory notes.
|
|
135
|
+
const dispatcher = vi.fn().mockResolvedValue(JSON.stringify({
|
|
136
|
+
entry_name: 'stub', audit_date: '2026-05-24', model: 'deepseek-v4-flash',
|
|
137
|
+
verdict: 'minor-drift', sources_checked: [], findings: [],
|
|
138
|
+
proposed_changes: [
|
|
139
|
+
{
|
|
140
|
+
location: '## Deep Guidance', kind: 'replace',
|
|
141
|
+
rationale: 'tighten outdated wording', new_text: '## Deep Guidance\nx',
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
preserve_warnings: ['pre-existing warning'],
|
|
145
|
+
}));
|
|
146
|
+
const out = await run(dispatcher);
|
|
147
|
+
expect(out.verdict).toBe('minor-drift');
|
|
148
|
+
expect(out.proposed_changes).toEqual([]);
|
|
149
|
+
// The original warning survives and the dropped change's rationale is kept.
|
|
150
|
+
expect(out.preserve_warnings).toContain('pre-existing warning');
|
|
151
|
+
expect(out.preserve_warnings.some((w) => w.includes('tighten outdated wording'))).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
it('demotes proposed_changes on a current verdict to advisory preserve_warnings', async () => {
|
|
154
|
+
const dispatcher = vi.fn().mockResolvedValue(JSON.stringify({
|
|
155
|
+
entry_name: 'stub', audit_date: '2026-05-24', model: 'deepseek-v4-flash',
|
|
156
|
+
verdict: 'current', sources_checked: [], findings: [],
|
|
157
|
+
proposed_changes: [
|
|
158
|
+
{ location: '## Summary', kind: 'insert', rationale: 'add a missing note', new_text: 'note' },
|
|
159
|
+
],
|
|
160
|
+
preserve_warnings: [],
|
|
161
|
+
}));
|
|
162
|
+
const out = await run(dispatcher);
|
|
163
|
+
expect(out.verdict).toBe('current');
|
|
164
|
+
expect(out.proposed_changes).toEqual([]);
|
|
165
|
+
expect(out.preserve_warnings.some((w) => w.includes('add a missing note'))).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
it('leaves proposed_changes untouched on a major-drift verdict', async () => {
|
|
168
|
+
const change = {
|
|
169
|
+
location: '## Deep Guidance', kind: 'replace',
|
|
170
|
+
rationale: 'claim is now wrong', new_text: '## Deep Guidance\nfixed',
|
|
171
|
+
};
|
|
172
|
+
const dispatcher = vi.fn().mockResolvedValue(JSON.stringify({
|
|
173
|
+
entry_name: 'stub', audit_date: '2026-05-24', model: 'deepseek-v4-flash',
|
|
174
|
+
verdict: 'major-drift', sources_checked: [], findings: [],
|
|
175
|
+
proposed_changes: [change], preserve_warnings: [],
|
|
176
|
+
}));
|
|
177
|
+
const out = await run(dispatcher);
|
|
178
|
+
expect(out.verdict).toBe('major-drift');
|
|
179
|
+
expect(out.proposed_changes).toEqual([change]);
|
|
180
|
+
expect(out.preserve_warnings).toEqual([]);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
describe('normalizeVerdict', () => {
|
|
184
|
+
// normalizeVerdict is exported as the sanitizer for non-conforming model
|
|
185
|
+
// output. Although runEntryAudit's Zod parse guarantees these arrays are
|
|
186
|
+
// present before it ever reaches here, the function must not throw on a
|
|
187
|
+
// hand-built verdict missing them — that is exactly the malformed shape it
|
|
188
|
+
// exists to absorb.
|
|
189
|
+
const base = {
|
|
190
|
+
entry_name: 'x', audit_date: '2026-05-24', model: 'm',
|
|
191
|
+
verdict: 'minor-drift', sources_checked: [], findings: [],
|
|
192
|
+
};
|
|
193
|
+
it('demotes without throwing when preserve_warnings is missing', () => {
|
|
194
|
+
const v = {
|
|
195
|
+
...base,
|
|
196
|
+
proposed_changes: [{ location: '## X', kind: 'replace', rationale: 'r' }],
|
|
197
|
+
};
|
|
198
|
+
const out = normalizeVerdict(v);
|
|
199
|
+
expect(out.proposed_changes).toEqual([]);
|
|
200
|
+
expect(out.preserve_warnings.some((w) => w.includes('r'))).toBe(true);
|
|
201
|
+
});
|
|
202
|
+
it('does not throw when proposed_changes is missing', () => {
|
|
203
|
+
const v = { ...base };
|
|
204
|
+
expect(() => normalizeVerdict(v)).not.toThrow();
|
|
205
|
+
});
|
|
129
206
|
});
|
|
130
207
|
//# sourceMappingURL=audit-runner.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-runner.test.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtE,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"audit-runner.test.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-v3-migration.d.ts","sourceRoot":"","sources":["../../src/state/ensure-v3-migration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,IAAI,
|
|
1
|
+
{"version":3,"file":"ensure-v3-migration.d.ts","sourceRoot":"","sources":["../../src/state/ensure-v3-migration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,IAAI,CAuBN"}
|
|
@@ -24,8 +24,10 @@ export function ensureV3Migration(projectRoot, config, globalSteps) {
|
|
|
24
24
|
}
|
|
25
25
|
if (raw['schema-version'] !== 2)
|
|
26
26
|
return;
|
|
27
|
-
// Compute globalSteps if not provided (for commands that skip resolvePipeline)
|
|
28
|
-
|
|
27
|
+
// Compute globalSteps if not provided (for commands that skip resolvePipeline).
|
|
28
|
+
// Pass projectRoot so the methodology dir resolves consistently with the rest
|
|
29
|
+
// of the pipeline (uses the local content tree when running scaffold itself).
|
|
30
|
+
const effectiveGlobalSteps = globalSteps ?? loadGlobalStepSlugs(getPackageMethodologyDir(projectRoot));
|
|
29
31
|
migrateV2ToV3({
|
|
30
32
|
projectRoot,
|
|
31
33
|
globalSteps: effectiveGlobalSteps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-v3-migration.js","sourceRoot":"","sources":["../../src/state/ensure-v3-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAmB,EACnB,MAA6B,EAC7B,WAAyB;IAEzB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;QAAE,OAAM;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAM;IAErC,IAAI,GAA4B,CAAA;IAChC,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC;QAAC,OAAM;IAAC,CAAC;IAElB,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAM;IAEvC
|
|
1
|
+
{"version":3,"file":"ensure-v3-migration.js","sourceRoot":"","sources":["../../src/state/ensure-v3-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAmB,EACnB,MAA6B,EAC7B,WAAyB;IAEzB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;QAAE,OAAM;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAM;IAErC,IAAI,GAA4B,CAAA;IAChC,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC;QAAC,OAAM;IAAC,CAAC;IAElB,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAM;IAEvC,gFAAgF;IAChF,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,oBAAoB,GAAG,WAAW,IAAI,mBAAmB,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAA;IAEtG,aAAa,CAAC;QACZ,WAAW;QACX,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAmC;KAC7D,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/utils/fs.d.ts
CHANGED
|
@@ -13,40 +13,16 @@ export declare function ensureDir(dirPath: string): void;
|
|
|
13
13
|
* Works whether scaffold is run from the repo or installed globally via npm/brew.
|
|
14
14
|
*/
|
|
15
15
|
export declare function getPackageRoot(): string;
|
|
16
|
-
/**
|
|
17
|
-
* Resolve the pipeline directory.
|
|
18
|
-
* If projectRoot is provided and contains pipeline/, use that (dev/test mode).
|
|
19
|
-
* Otherwise use the package's bundled pipeline/.
|
|
20
|
-
*/
|
|
16
|
+
/** Resolve the pipeline directory (bundled, unless running against scaffold itself). */
|
|
21
17
|
export declare function getPackagePipelineDir(projectRoot?: string): string;
|
|
22
|
-
/**
|
|
23
|
-
* Resolve the knowledge directory.
|
|
24
|
-
* If projectRoot is provided and contains knowledge/, use that (dev/test mode).
|
|
25
|
-
* Otherwise use the package's bundled knowledge/.
|
|
26
|
-
*/
|
|
18
|
+
/** Resolve the knowledge directory (bundled, unless running against scaffold itself). */
|
|
27
19
|
export declare function getPackageKnowledgeDir(projectRoot?: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Resolve the tools directory.
|
|
30
|
-
* If projectRoot is provided and contains tools/, use that (dev/test mode).
|
|
31
|
-
* Otherwise use the package's bundled tools/.
|
|
32
|
-
*/
|
|
20
|
+
/** Resolve the tools directory (bundled, unless running against scaffold itself). */
|
|
33
21
|
export declare function getPackageToolsDir(projectRoot?: string): string;
|
|
34
|
-
/**
|
|
35
|
-
* Resolve the skills template directory.
|
|
36
|
-
* If projectRoot is provided and contains content/skills/, use that (dev/test mode).
|
|
37
|
-
* Otherwise use the package's bundled content/skills/.
|
|
38
|
-
*/
|
|
22
|
+
/** Resolve the skills template directory (bundled, unless running against scaffold itself). */
|
|
39
23
|
export declare function getPackageSkillsDir(projectRoot?: string): string;
|
|
40
|
-
/**
|
|
41
|
-
* Resolve the methodology directory.
|
|
42
|
-
* If projectRoot is provided and contains methodology/, use that (dev/test mode).
|
|
43
|
-
* Otherwise use the package's bundled methodology/.
|
|
44
|
-
*/
|
|
24
|
+
/** Resolve the methodology directory (bundled, unless running against scaffold itself). */
|
|
45
25
|
export declare function getPackageMethodologyDir(projectRoot?: string): string;
|
|
46
|
-
/**
|
|
47
|
-
* Resolve the guides directory.
|
|
48
|
-
* If projectRoot is provided and contains content/guides/, use that (dev/test mode).
|
|
49
|
-
* Otherwise use the package's bundled content/guides/.
|
|
50
|
-
*/
|
|
26
|
+
/** Resolve the guides directory (bundled, unless running against scaffold itself). */
|
|
51
27
|
export declare function getPackageGuidesDir(projectRoot?: string): string;
|
|
52
28
|
//# sourceMappingURL=fs.d.ts.map
|
package/dist/utils/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAKvC;
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAkED,wFAAwF;AACxF,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
package/dist/utils/fs.js
CHANGED
|
@@ -29,82 +29,90 @@ export function getPackageRoot() {
|
|
|
29
29
|
// package root is two levels up from utils/
|
|
30
30
|
return path.resolve(path.dirname(thisFile), '..', '..');
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (fs.existsSync(local))
|
|
41
|
-
return local;
|
|
32
|
+
/** Read the `name` field from `<dir>/package.json`, or null if absent/unreadable. */
|
|
33
|
+
function readPackageName(dir) {
|
|
34
|
+
try {
|
|
35
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'));
|
|
36
|
+
return typeof pkg?.name === 'string' ? pkg.name : null;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
42
40
|
}
|
|
43
|
-
return path.join(getPackageRoot(), 'content', 'pipeline');
|
|
44
41
|
}
|
|
45
42
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
43
|
+
* The npm package name of the *running* scaffold, read once from its own
|
|
44
|
+
* package.json (with a literal fallback). Deriving it — rather than hardcoding
|
|
45
|
+
* — means the gate below reads "is projectRoot the same package as the scaffold
|
|
46
|
+
* that's running", which also stays correct for forks/renames.
|
|
49
47
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return local;
|
|
48
|
+
let cachedOwnPackageName;
|
|
49
|
+
function ownPackageName() {
|
|
50
|
+
if (cachedOwnPackageName === undefined) {
|
|
51
|
+
cachedOwnPackageName = readPackageName(getPackageRoot()) ?? '@zigrivers/scaffold';
|
|
55
52
|
}
|
|
56
|
-
return
|
|
53
|
+
return cachedOwnPackageName;
|
|
57
54
|
}
|
|
58
55
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
56
|
+
* True only when `dir` is scaffold's own source/install tree, detected by its
|
|
57
|
+
* package.json name matching the running scaffold's. This gates the dev-mode
|
|
58
|
+
* content override so that a downstream project which merely happens to have a
|
|
59
|
+
* `content/` directory (e.g. a scaffold-like CLI tool, whose project-structure
|
|
60
|
+
* step generates `content/pipeline/` + `content/methodology/`) does NOT shadow
|
|
61
|
+
* scaffold's bundled content. Without this gate the resolved pipeline silently
|
|
62
|
+
* collapses. Result is memoized per directory — this runs for every
|
|
63
|
+
* getPackage*Dir call (6+ per command) and scaffold is a short-lived process.
|
|
64
|
+
*
|
|
65
|
+
* Note: only the exact `dir` passed is checked (no upward walk). Callers pass
|
|
66
|
+
* the project root that holds `.scaffold/` and, for scaffold itself, its
|
|
67
|
+
* package.json + content/ sit at that same root.
|
|
62
68
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
const scaffoldRootCache = new Map();
|
|
70
|
+
function isScaffoldPackageRoot(dir) {
|
|
71
|
+
let cached = scaffoldRootCache.get(dir);
|
|
72
|
+
if (cached === undefined) {
|
|
73
|
+
cached = readPackageName(dir) === ownPackageName();
|
|
74
|
+
scaffoldRootCache.set(dir, cached);
|
|
68
75
|
}
|
|
69
|
-
return
|
|
76
|
+
return cached;
|
|
70
77
|
}
|
|
71
78
|
/**
|
|
72
|
-
* Resolve
|
|
73
|
-
*
|
|
74
|
-
*
|
|
79
|
+
* Resolve a `content/<subdir>` directory.
|
|
80
|
+
*
|
|
81
|
+
* The project-local override (`<projectRoot>/content/<subdir>`) is used ONLY
|
|
82
|
+
* when running scaffold against scaffold's own source tree — i.e. developing
|
|
83
|
+
* scaffold itself with a globally-installed binary. For every other project,
|
|
84
|
+
* and when installed, the package's bundled `content/<subdir>` is used.
|
|
75
85
|
*/
|
|
76
|
-
|
|
77
|
-
if (projectRoot) {
|
|
78
|
-
const local = path.join(projectRoot, 'content',
|
|
86
|
+
function resolveContentDir(subdir, projectRoot) {
|
|
87
|
+
if (projectRoot && isScaffoldPackageRoot(projectRoot)) {
|
|
88
|
+
const local = path.join(projectRoot, 'content', subdir);
|
|
79
89
|
if (fs.existsSync(local))
|
|
80
90
|
return local;
|
|
81
91
|
}
|
|
82
|
-
return path.join(getPackageRoot(), 'content',
|
|
92
|
+
return path.join(getPackageRoot(), 'content', subdir);
|
|
83
93
|
}
|
|
84
|
-
/**
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
*/
|
|
94
|
+
/** Resolve the pipeline directory (bundled, unless running against scaffold itself). */
|
|
95
|
+
export function getPackagePipelineDir(projectRoot) {
|
|
96
|
+
return resolveContentDir('pipeline', projectRoot);
|
|
97
|
+
}
|
|
98
|
+
/** Resolve the knowledge directory (bundled, unless running against scaffold itself). */
|
|
99
|
+
export function getPackageKnowledgeDir(projectRoot) {
|
|
100
|
+
return resolveContentDir('knowledge', projectRoot);
|
|
101
|
+
}
|
|
102
|
+
/** Resolve the tools directory (bundled, unless running against scaffold itself). */
|
|
103
|
+
export function getPackageToolsDir(projectRoot) {
|
|
104
|
+
return resolveContentDir('tools', projectRoot);
|
|
105
|
+
}
|
|
106
|
+
/** Resolve the skills template directory (bundled, unless running against scaffold itself). */
|
|
107
|
+
export function getPackageSkillsDir(projectRoot) {
|
|
108
|
+
return resolveContentDir('skills', projectRoot);
|
|
109
|
+
}
|
|
110
|
+
/** Resolve the methodology directory (bundled, unless running against scaffold itself). */
|
|
89
111
|
export function getPackageMethodologyDir(projectRoot) {
|
|
90
|
-
|
|
91
|
-
const local = path.join(projectRoot, 'content', 'methodology');
|
|
92
|
-
if (fs.existsSync(local))
|
|
93
|
-
return local;
|
|
94
|
-
}
|
|
95
|
-
return path.join(getPackageRoot(), 'content', 'methodology');
|
|
112
|
+
return resolveContentDir('methodology', projectRoot);
|
|
96
113
|
}
|
|
97
|
-
/**
|
|
98
|
-
* Resolve the guides directory.
|
|
99
|
-
* If projectRoot is provided and contains content/guides/, use that (dev/test mode).
|
|
100
|
-
* Otherwise use the package's bundled content/guides/.
|
|
101
|
-
*/
|
|
114
|
+
/** Resolve the guides directory (bundled, unless running against scaffold itself). */
|
|
102
115
|
export function getPackageGuidesDir(projectRoot) {
|
|
103
|
-
|
|
104
|
-
const local = path.join(projectRoot, 'content', 'guides');
|
|
105
|
-
if (fs.existsSync(local))
|
|
106
|
-
return local;
|
|
107
|
-
}
|
|
108
|
-
return path.join(getPackageRoot(), 'content', 'guides');
|
|
116
|
+
return resolveContentDir('guides', projectRoot);
|
|
109
117
|
}
|
|
110
118
|
//# sourceMappingURL=fs.js.map
|
package/dist/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAe;IAC/D,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IACjC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1C,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC/C,2DAA2D;IAC3D,4CAA4C;IAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACzD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fs.test.js
CHANGED
|
@@ -3,7 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import crypto from 'node:crypto';
|
|
5
5
|
import { describe, it, expect, afterEach } from 'vitest';
|
|
6
|
-
import { atomicWriteFile, fileExists, ensureDir, getPackageSkillsDir } from './fs.js';
|
|
6
|
+
import { atomicWriteFile, fileExists, ensureDir, getPackageSkillsDir, getPackageMethodologyDir, getPackagePipelineDir, } from './fs.js';
|
|
7
7
|
const tmpFiles = [];
|
|
8
8
|
const tmpDirs = [];
|
|
9
9
|
function tmpPath(ext = '') {
|
|
@@ -90,12 +90,29 @@ describe('ensureDir', () => {
|
|
|
90
90
|
expect(fs.statSync(nested).isDirectory()).toBe(true);
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
|
+
/** Create a tmp project root containing content/<sub>, optionally marking it as
|
|
94
|
+
* the scaffold package itself via a package.json with the scaffold name. */
|
|
95
|
+
function makeProjectWithContent(sub, opts) {
|
|
96
|
+
const root = tmpDir();
|
|
97
|
+
const local = path.join(root, 'content', sub);
|
|
98
|
+
fs.mkdirSync(local, { recursive: true });
|
|
99
|
+
if (opts.asScaffold) {
|
|
100
|
+
fs.writeFileSync(path.join(root, 'package.json'), JSON.stringify({ name: '@zigrivers/scaffold' }), 'utf8');
|
|
101
|
+
}
|
|
102
|
+
return { root, local };
|
|
103
|
+
}
|
|
93
104
|
describe('getPackageSkillsDir', () => {
|
|
94
|
-
it('
|
|
95
|
-
const root =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
it('uses a project-local content/skills directory only when the project IS scaffold itself', () => {
|
|
106
|
+
const { root, local } = makeProjectWithContent('skills', { asScaffold: true });
|
|
107
|
+
expect(getPackageSkillsDir(root)).toBe(local);
|
|
108
|
+
});
|
|
109
|
+
it('ignores a project-local content/skills directory for a downstream project (not scaffold)', () => {
|
|
110
|
+
// A downstream project (e.g. a scaffold-like CLI tool) that merely has a
|
|
111
|
+
// content/skills directory must NOT shadow scaffold's bundled content.
|
|
112
|
+
const { root, local } = makeProjectWithContent('skills', { asScaffold: false });
|
|
113
|
+
const resolved = getPackageSkillsDir(root);
|
|
114
|
+
expect(resolved).not.toBe(local);
|
|
115
|
+
expect(resolved).toBe(getPackageSkillsDir()); // bundled fallback
|
|
99
116
|
});
|
|
100
117
|
it('falls back to the bundled content/skills directory when no local override exists', () => {
|
|
101
118
|
const bundledDir = getPackageSkillsDir();
|
|
@@ -104,4 +121,34 @@ describe('getPackageSkillsDir', () => {
|
|
|
104
121
|
expect(fs.existsSync(path.join(bundledDir, 'scaffold-runner', 'SKILL.md'))).toBe(true);
|
|
105
122
|
});
|
|
106
123
|
});
|
|
124
|
+
describe('getPackageMethodologyDir', () => {
|
|
125
|
+
it('ignores a project-local content/methodology directory for a downstream project (not scaffold)', () => {
|
|
126
|
+
// This is the surface regression: a project whose own content/methodology
|
|
127
|
+
// exists must not shadow the bundled methodology presets (which would
|
|
128
|
+
// collapse the resolved pipeline graph).
|
|
129
|
+
const { root, local } = makeProjectWithContent('methodology', { asScaffold: false });
|
|
130
|
+
const resolved = getPackageMethodologyDir(root);
|
|
131
|
+
expect(resolved).not.toBe(local);
|
|
132
|
+
expect(resolved).toBe(getPackageMethodologyDir()); // bundled fallback
|
|
133
|
+
});
|
|
134
|
+
it('uses a project-local content/methodology directory when the project IS scaffold itself', () => {
|
|
135
|
+
const { root, local } = makeProjectWithContent('methodology', { asScaffold: true });
|
|
136
|
+
expect(getPackageMethodologyDir(root)).toBe(local);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('getPackagePipelineDir', () => {
|
|
140
|
+
// Guards the shared resolveContentDir contract for a third subdir, so a
|
|
141
|
+
// future refactor that splits the implementation can't silently lose the
|
|
142
|
+
// gate for the pipeline resolver (the one whose collapse caused the bug).
|
|
143
|
+
it('ignores a project-local content/pipeline directory for a downstream project (not scaffold)', () => {
|
|
144
|
+
const { root, local } = makeProjectWithContent('pipeline', { asScaffold: false });
|
|
145
|
+
const resolved = getPackagePipelineDir(root);
|
|
146
|
+
expect(resolved).not.toBe(local);
|
|
147
|
+
expect(resolved).toBe(getPackagePipelineDir()); // bundled fallback
|
|
148
|
+
});
|
|
149
|
+
it('uses a project-local content/pipeline directory when the project IS scaffold itself', () => {
|
|
150
|
+
const { root, local } = makeProjectWithContent('pipeline', { asScaffold: true });
|
|
151
|
+
expect(getPackagePipelineDir(root)).toBe(local);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
107
154
|
//# sourceMappingURL=fs.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.test.js","sourceRoot":"","sources":["../../src/utils/fs.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"fs.test.js","sourceRoot":"","sources":["../../src/utils/fs.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,9 @@ function makeTmpDir() {
|
|
|
16
16
|
function makeProjectRoot(opts = {}) {
|
|
17
17
|
const root = makeTmpDir();
|
|
18
18
|
fs.mkdirSync(path.join(root, '.scaffold'), { recursive: true });
|
|
19
|
+
// Declare this fixture as a scaffold content tree so getPackage*Dir uses its
|
|
20
|
+
// local content/ override (gated on package.json name; see utils/fs.ts).
|
|
21
|
+
fs.writeFileSync(path.join(root, 'package.json'), '{"name":"@zigrivers/scaffold"}', 'utf8');
|
|
19
22
|
if (opts.configContent !== undefined && opts.configContent !== null) {
|
|
20
23
|
fs.writeFileSync(path.join(root, '.scaffold', 'config.yml'), opts.configContent, 'utf8');
|
|
21
24
|
}
|