@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.
Files changed (51) hide show
  1. package/README.md +1 -1
  2. package/content/pipeline/build/multi-agent-resume.md +8 -2
  3. package/content/pipeline/build/multi-agent-start.md +8 -2
  4. package/content/tools/knowledge-audit-entry.md +1 -0
  5. package/content/tools/post-implementation-review.md +1 -1
  6. package/content/tools/review-code.md +1 -1
  7. package/content/tools/review-pr.md +9 -1
  8. package/dist/cli/commands/info.test.js +3 -0
  9. package/dist/cli/commands/info.test.js.map +1 -1
  10. package/dist/cli/commands/list.test.js +6 -0
  11. package/dist/cli/commands/list.test.js.map +1 -1
  12. package/dist/cli/commands/run.d.ts +1 -0
  13. package/dist/cli/commands/run.d.ts.map +1 -1
  14. package/dist/cli/commands/run.js +40 -4
  15. package/dist/cli/commands/run.js.map +1 -1
  16. package/dist/cli/commands/run.test.js +135 -0
  17. package/dist/cli/commands/run.test.js.map +1 -1
  18. package/dist/cli/commands/status.d.ts.map +1 -1
  19. package/dist/cli/commands/status.js +38 -4
  20. package/dist/cli/commands/status.js.map +1 -1
  21. package/dist/cli/commands/status.test.js +66 -2
  22. package/dist/cli/commands/status.test.js.map +1 -1
  23. package/dist/core/assembly/engine.d.ts.map +1 -1
  24. package/dist/core/assembly/engine.js +3 -3
  25. package/dist/core/assembly/engine.js.map +1 -1
  26. package/dist/core/assembly/engine.test.js +28 -0
  27. package/dist/core/assembly/engine.test.js.map +1 -1
  28. package/dist/e2e/commands.test.js +3 -0
  29. package/dist/e2e/commands.test.js.map +1 -1
  30. package/dist/e2e/knowledge.test.js +5 -0
  31. package/dist/e2e/knowledge.test.js.map +1 -1
  32. package/dist/guides/cli-guides.test.js +3 -0
  33. package/dist/guides/cli-guides.test.js.map +1 -1
  34. package/dist/knowledge-freshness/audit-runner.d.ts +14 -0
  35. package/dist/knowledge-freshness/audit-runner.d.ts.map +1 -1
  36. package/dist/knowledge-freshness/audit-runner.js +31 -1
  37. package/dist/knowledge-freshness/audit-runner.js.map +1 -1
  38. package/dist/knowledge-freshness/audit-runner.test.js +78 -1
  39. package/dist/knowledge-freshness/audit-runner.test.js.map +1 -1
  40. package/dist/state/ensure-v3-migration.d.ts.map +1 -1
  41. package/dist/state/ensure-v3-migration.js +4 -2
  42. package/dist/state/ensure-v3-migration.js.map +1 -1
  43. package/dist/utils/fs.d.ts +6 -30
  44. package/dist/utils/fs.d.ts.map +1 -1
  45. package/dist/utils/fs.js +66 -58
  46. package/dist/utils/fs.js.map +1 -1
  47. package/dist/utils/fs.test.js +53 -6
  48. package/dist/utils/fs.test.js.map +1 -1
  49. package/dist/validation/index.test.js +3 -0
  50. package/dist/validation/index.test.js.map +1 -1
  51. 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":"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"}
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,CAqBN"}
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
- const effectiveGlobalSteps = globalSteps ?? loadGlobalStepSlugs(getPackageMethodologyDir());
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,+EAA+E;IAC/E,MAAM,oBAAoB,GAAG,WAAW,IAAI,mBAAmB,CAAC,wBAAwB,EAAE,CAAC,CAAA;IAE3F,aAAa,CAAC;QACZ,WAAW;QACX,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAmC;KAC7D,CAAC,CAAA;AACJ,CAAC"}
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"}
@@ -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
@@ -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;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhE"}
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
- * Resolve the pipeline directory.
34
- * If projectRoot is provided and contains pipeline/, use that (dev/test mode).
35
- * Otherwise use the package's bundled pipeline/.
36
- */
37
- export function getPackagePipelineDir(projectRoot) {
38
- if (projectRoot) {
39
- const local = path.join(projectRoot, 'content', 'pipeline');
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
- * Resolve the knowledge directory.
47
- * If projectRoot is provided and contains knowledge/, use that (dev/test mode).
48
- * Otherwise use the package's bundled knowledge/.
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
- export function getPackageKnowledgeDir(projectRoot) {
51
- if (projectRoot) {
52
- const local = path.join(projectRoot, 'content', 'knowledge');
53
- if (fs.existsSync(local))
54
- return local;
48
+ let cachedOwnPackageName;
49
+ function ownPackageName() {
50
+ if (cachedOwnPackageName === undefined) {
51
+ cachedOwnPackageName = readPackageName(getPackageRoot()) ?? '@zigrivers/scaffold';
55
52
  }
56
- return path.join(getPackageRoot(), 'content', 'knowledge');
53
+ return cachedOwnPackageName;
57
54
  }
58
55
  /**
59
- * Resolve the tools directory.
60
- * If projectRoot is provided and contains tools/, use that (dev/test mode).
61
- * Otherwise use the package's bundled tools/.
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
- export function getPackageToolsDir(projectRoot) {
64
- if (projectRoot) {
65
- const local = path.join(projectRoot, 'content', 'tools');
66
- if (fs.existsSync(local))
67
- return local;
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 path.join(getPackageRoot(), 'content', 'tools');
76
+ return cached;
70
77
  }
71
78
  /**
72
- * Resolve the skills template directory.
73
- * If projectRoot is provided and contains content/skills/, use that (dev/test mode).
74
- * Otherwise use the package's bundled content/skills/.
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
- export function getPackageSkillsDir(projectRoot) {
77
- if (projectRoot) {
78
- const local = path.join(projectRoot, 'content', 'skills');
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', 'skills');
92
+ return path.join(getPackageRoot(), 'content', subdir);
83
93
  }
84
- /**
85
- * Resolve the methodology directory.
86
- * If projectRoot is provided and contains methodology/, use that (dev/test mode).
87
- * Otherwise use the package's bundled methodology/.
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
- if (projectRoot) {
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
- if (projectRoot) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
@@ -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('returns a local content/skills directory when projectRoot provides one', () => {
95
- const root = tmpDir();
96
- const localSkills = path.join(root, 'content', 'skills');
97
- fs.mkdirSync(localSkills, { recursive: true });
98
- expect(getPackageSkillsDir(root)).toBe(localSkills);
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":"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"}
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
  }