@zigrivers/scaffold 3.30.0 → 3.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/content/guides/AUTHORING.md +8 -5
  2. package/content/guides/cli/index.html +367 -14
  3. package/content/guides/concepts/index.html +367 -14
  4. package/content/guides/dashboard/index.html +367 -14
  5. package/content/guides/index.html +368 -15
  6. package/content/guides/install/index.html +373 -20
  7. package/content/guides/install/index.md +6 -6
  8. package/content/guides/knowledge/index.html +367 -14
  9. package/content/guides/knowledge-freshness/index.html +369 -16
  10. package/content/guides/knowledge-freshness/index.md +2 -2
  11. package/content/guides/mmr/index.html +373 -20
  12. package/content/guides/multi-agent/index.html +369 -16
  13. package/content/guides/multi-agent/index.md +2 -2
  14. package/content/guides/observability/index.html +367 -14
  15. package/content/guides/pipeline/index.html +378 -37
  16. package/content/guides/pipeline/index.md +8 -8
  17. package/content/guides/review-workflow/index.html +367 -14
  18. package/dist/cli/commands/info.test.js +3 -0
  19. package/dist/cli/commands/info.test.js.map +1 -1
  20. package/dist/cli/commands/list.test.js +6 -0
  21. package/dist/cli/commands/list.test.js.map +1 -1
  22. package/dist/cli/commands/status.d.ts.map +1 -1
  23. package/dist/cli/commands/status.js +38 -4
  24. package/dist/cli/commands/status.js.map +1 -1
  25. package/dist/cli/commands/status.test.js +66 -2
  26. package/dist/cli/commands/status.test.js.map +1 -1
  27. package/dist/e2e/commands.test.js +3 -0
  28. package/dist/e2e/commands.test.js.map +1 -1
  29. package/dist/e2e/knowledge.test.js +5 -0
  30. package/dist/e2e/knowledge.test.js.map +1 -1
  31. package/dist/guides/build.d.ts +1 -1
  32. package/dist/guides/build.d.ts.map +1 -1
  33. package/dist/guides/build.js +14 -7
  34. package/dist/guides/build.js.map +1 -1
  35. package/dist/guides/build.test.js +39 -0
  36. package/dist/guides/build.test.js.map +1 -1
  37. package/dist/guides/chrome.d.ts.map +1 -1
  38. package/dist/guides/chrome.js +83 -12
  39. package/dist/guides/chrome.js.map +1 -1
  40. package/dist/guides/cli-guides.test.js +3 -0
  41. package/dist/guides/cli-guides.test.js.map +1 -1
  42. package/dist/guides/dashboard-theme.css +8 -0
  43. package/dist/guides/directives-tabs.test.js +47 -0
  44. package/dist/guides/directives-tabs.test.js.map +1 -1
  45. package/dist/guides/directives.d.ts.map +1 -1
  46. package/dist/guides/directives.js +14 -0
  47. package/dist/guides/directives.js.map +1 -1
  48. package/dist/guides/guides.css +268 -0
  49. package/dist/guides/index-page.d.ts.map +1 -1
  50. package/dist/guides/index-page.js +41 -8
  51. package/dist/guides/index-page.js.map +1 -1
  52. package/dist/guides/sanitize.d.ts.map +1 -1
  53. package/dist/guides/sanitize.js +4 -0
  54. package/dist/guides/sanitize.js.map +1 -1
  55. package/dist/guides/template.d.ts.map +1 -1
  56. package/dist/guides/template.js +7 -2
  57. package/dist/guides/template.js.map +1 -1
  58. package/dist/state/ensure-v3-migration.d.ts.map +1 -1
  59. package/dist/state/ensure-v3-migration.js +4 -2
  60. package/dist/state/ensure-v3-migration.js.map +1 -1
  61. package/dist/utils/fs.d.ts +6 -30
  62. package/dist/utils/fs.d.ts.map +1 -1
  63. package/dist/utils/fs.js +66 -58
  64. package/dist/utils/fs.js.map +1 -1
  65. package/dist/utils/fs.test.js +53 -6
  66. package/dist/utils/fs.test.js.map +1 -1
  67. package/dist/validation/index.test.js +3 -0
  68. package/dist/validation/index.test.js.map +1 -1
  69. package/package.json +2 -2
@@ -0,0 +1,268 @@
1
+ /* ============================================================================
2
+ * guides.css — component + layout styles for `scaffold guides` reference pages.
3
+ *
4
+ * Pairs with lib/dashboard-theme.css (the token source) and src/guides/chrome.ts
5
+ * (the behavior). Styles the guide CHROME (.topbar, .layout, .rail, nav.toc,
6
+ * .content) and the markdown DIRECTIVES (callouts, sev chips, filter-tables,
7
+ * charts, tabs, citations) plus base prose typography.
8
+ *
9
+ * DESIGN SYSTEM: all COLORS come from dashboard-theme.css tokens, and spacing
10
+ * uses the --sp-* scale wherever it maps. The few structural layout constants
11
+ * (topbar height, rail/drawer width, chart label column, card min) are declared
12
+ * as local custom properties below; a handful of sub-scale UI values (chip/bar
13
+ * sizing, em-based inline-code padding) and the responsive breakpoint are
14
+ * literal because no token expresses them. Both themes are covered because every
15
+ * color is a token.
16
+ * ==========================================================================*/
17
+
18
+ :root {
19
+ --topbar-h: 52px; /* sticky topbar height; rail sticky offset keys off it */
20
+ --rail-w: 260px; /* desktop TOC sidebar column */
21
+ --drawer-w: 280px; /* mobile off-canvas TOC drawer */
22
+ --card-min: 260px; /* index card min track width */
23
+ --chart-label-w: 90px; /* chart row label column min */
24
+ }
25
+
26
+ /* ── Base / reset on top of the token base in dashboard-theme.css ─────────── */
27
+ .content a { color: var(--accent); text-decoration: none; }
28
+ .content a:hover { text-decoration: underline; }
29
+ .content strong { font-weight: var(--fw-semi); }
30
+ .content hr { border: 0; border-top: 1px solid var(--border-light); margin: var(--sp-6) 0; }
31
+
32
+ /* Consistent keyboard focus for every interactive control (a11y). */
33
+ .topbar button:focus-visible,
34
+ .copy-btn:focus-visible,
35
+ .tab-btn:focus-visible,
36
+ .filter-input:focus-visible,
37
+ nav.toc a:focus-visible,
38
+ .guide-card:focus-visible,
39
+ .content a:focus-visible {
40
+ outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--radius-sm);
41
+ }
42
+
43
+ /* ── Topbar ────────────────────────────────────────────────────────────────*/
44
+ .topbar {
45
+ position: sticky; top: 0; z-index: 60; height: var(--topbar-h);
46
+ display: flex; align-items: center; gap: var(--sp-3);
47
+ padding: 0 var(--page-pad);
48
+ background: var(--bg-card); border-bottom: 1px solid var(--border);
49
+ }
50
+ .topbar h1 {
51
+ flex: 1; min-width: 0; margin: 0;
52
+ font-size: var(--text-lg); font-weight: var(--fw-bold);
53
+ letter-spacing: var(--ls-tight);
54
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
55
+ }
56
+ .topbar button {
57
+ background: var(--bg-card); border: 1px solid var(--border); color: var(--text);
58
+ border-radius: var(--radius-sm); padding: var(--sp-1) var(--sp-3); font-size: var(--text-base);
59
+ line-height: 1; cursor: pointer; font-family: inherit;
60
+ }
61
+ .topbar button:hover { background: var(--bg-hover); border-color: var(--accent); }
62
+ .nav-toggle { display: none; }
63
+
64
+ /* ── Layout: sticky sidebar TOC + reading-width content ──────────────────── */
65
+ .layout {
66
+ max-width: var(--max-w); margin: 0 auto;
67
+ display: grid; grid-template-columns: var(--rail-w) minmax(0, 1fr);
68
+ gap: var(--sp-8); padding: 0 var(--page-pad);
69
+ }
70
+ .rail {
71
+ position: sticky; top: var(--topbar-h); align-self: start;
72
+ height: calc(100vh - var(--topbar-h)); overflow-y: auto;
73
+ padding: var(--sp-5) 0; border-right: 1px solid var(--border-light);
74
+ }
75
+ .content { min-width: 0; padding: var(--sp-6) 0 var(--sp-10); }
76
+
77
+ /* Backdrop behind the mobile drawer (toggled with the rail via chrome.ts). */
78
+ .rail-backdrop { display: none; }
79
+ /* In-drawer close button — hidden on desktop (the rail is a static sidebar). */
80
+ .rail-close { display: none; }
81
+
82
+ /* ── Table of contents (scrollspy marks a.active) ────────────────────────── */
83
+ nav.toc ul { list-style: none; margin: 0; padding: 0; }
84
+ nav.toc li { margin: 0; }
85
+ nav.toc a {
86
+ display: block; padding: var(--sp-1) var(--sp-3); line-height: 1.35;
87
+ color: var(--text-muted); font-size: var(--text-sm);
88
+ text-decoration: none; border-left: 2px solid transparent;
89
+ border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
90
+ }
91
+ nav.toc a:hover { color: var(--text); background: var(--bg-hover); }
92
+ nav.toc a.active {
93
+ color: var(--accent); border-left-color: var(--accent);
94
+ background: var(--accent-glow); font-weight: var(--fw-medium);
95
+ }
96
+ nav.toc li.toc-3 a { padding-left: var(--sp-6); font-size: var(--text-xs); }
97
+
98
+ /* ── Prose typography ──────────────────────────────────────────────────────*/
99
+ .content h2 {
100
+ font-size: var(--text-xl); letter-spacing: var(--ls-tight);
101
+ margin: var(--sp-8) 0 var(--sp-3); padding-bottom: var(--sp-2);
102
+ border-bottom: 1px solid var(--border-light); scroll-margin-top: calc(var(--topbar-h) + var(--sp-3));
103
+ }
104
+ .content h3 {
105
+ font-size: var(--text-lg); margin: var(--sp-5) 0 var(--sp-2);
106
+ scroll-margin-top: calc(var(--topbar-h) + var(--sp-3));
107
+ }
108
+ .content p { margin: var(--sp-3) 0; line-height: var(--lh-relaxed); }
109
+ .content ul, .content ol { margin: var(--sp-3) 0; padding-left: var(--sp-6); }
110
+ .content li { margin: var(--sp-1) 0; line-height: var(--lh-relaxed); }
111
+ .content blockquote {
112
+ margin: var(--sp-3) 0; padding: var(--sp-1) var(--sp-4);
113
+ border-left: 3px solid var(--border); color: var(--text-muted);
114
+ }
115
+
116
+ /* ── Inline code + code blocks (chrome.ts wraps <pre> in .code + .copy-btn) ──*/
117
+ .content code {
118
+ font-family: var(--font-mono); font-size: 0.85em;
119
+ background: var(--bg-inset); padding: 0.12em 0.4em; border-radius: var(--radius-sm);
120
+ }
121
+ .content .code { position: relative; margin: var(--sp-3) 0; }
122
+ .content .code pre {
123
+ margin: 0; padding: var(--sp-3) var(--sp-4); overflow-x: auto;
124
+ background: var(--bg-inset); border: 1px solid var(--border-light);
125
+ border-radius: var(--radius-sm); font-family: var(--font-mono);
126
+ font-size: var(--text-sm); line-height: var(--lh-relaxed);
127
+ }
128
+ .content .code pre code { background: none; padding: 0; font-size: inherit; }
129
+ .copy-btn {
130
+ position: absolute; top: var(--sp-1); right: var(--sp-1);
131
+ background: var(--bg-card); border: 1px solid var(--border); color: var(--text-muted);
132
+ border-radius: var(--radius-sm); font-size: var(--text-xs); padding: var(--sp-1) var(--sp-2);
133
+ cursor: pointer; opacity: 0.85; font-family: inherit;
134
+ }
135
+ .copy-btn:hover { color: var(--accent); border-color: var(--accent); opacity: 1; }
136
+
137
+ /* ── Callouts ─ (border-color BEFORE border-left-color so the accent wins) ── */
138
+ .callout {
139
+ margin: var(--sp-4) 0; padding: var(--sp-3) var(--sp-4);
140
+ border: 1px solid var(--border); border-left-width: 3px;
141
+ border-radius: var(--radius-sm); background: var(--bg-card);
142
+ }
143
+ .callout > :first-child { margin-top: 0; }
144
+ .callout > :last-child { margin-bottom: 0; }
145
+ .callout-note, .callout-info { background: var(--blue-bg); border-color: var(--blue-border); border-left-color: var(--blue); }
146
+ .callout-tip { background: var(--green-bg); border-color: var(--green-border); border-left-color: var(--green); }
147
+ .callout-warning { background: var(--yellow-bg); border-color: var(--yellow-border); border-left-color: var(--yellow); }
148
+ .callout-danger { background: var(--red-bg); border-color: var(--red-border); border-left-color: var(--red); }
149
+
150
+ /* ── Severity chips (:sev) — tight pill, sub-scale vertical padding ───────── */
151
+ .sev {
152
+ display: inline-block; font-size: var(--text-xs); font-weight: var(--fw-semi);
153
+ padding: 1px var(--sp-2); border-radius: 999px; line-height: 1.5;
154
+ border: 1px solid var(--border); background: var(--bg-inset); color: var(--text-muted);
155
+ white-space: nowrap;
156
+ }
157
+ .sev-p0 { color: var(--sev-p0); border-color: var(--sev-p0); }
158
+ .sev-p1 { color: var(--sev-p1); border-color: var(--sev-p1); }
159
+ .sev-p2 { color: var(--sev-p2); border-color: var(--sev-p2); }
160
+ .sev-p3 { color: var(--sev-p3); border-color: var(--sev-p3); }
161
+ .sev-pass { color: var(--sev-pass); border-color: var(--sev-pass); }
162
+
163
+ /* ── Citations (:cite) — inline provenance refs ──────────────────────────── */
164
+ .fp, .cite-advisory {
165
+ font-family: var(--font-mono); font-size: 0.82em;
166
+ padding: 0.05em 0.35em; border-radius: var(--radius-sm);
167
+ background: var(--bg-inset); border: 1px solid var(--border-light);
168
+ }
169
+ .fp { color: var(--accent); }
170
+ .cite-advisory { color: var(--text-faint); border-style: dashed; }
171
+
172
+ /* ── Tables + filter-tables ──────────────────────────────────────────────── */
173
+ .content table { width: 100%; border-collapse: collapse; margin: var(--sp-3) 0; font-size: var(--text-sm); }
174
+ .content th, .content td { text-align: left; padding: var(--sp-2) var(--sp-3); border-bottom: 1px solid var(--border-light); vertical-align: top; }
175
+ .content th {
176
+ color: var(--text-muted); font-weight: var(--fw-semi); font-size: var(--text-xs);
177
+ text-transform: uppercase; letter-spacing: var(--ls-wide); border-bottom-color: var(--border);
178
+ }
179
+ .content tbody tr:hover { background: var(--bg-hover); }
180
+ .content td code { white-space: nowrap; }
181
+ .filter-table { margin: var(--sp-4) 0; }
182
+ .filter-input {
183
+ width: 100%; max-width: 320px; margin-bottom: var(--sp-2);
184
+ padding: var(--sp-2) var(--sp-3); font-family: inherit; font-size: var(--text-sm);
185
+ color: var(--text); background: var(--bg-card);
186
+ border: 1px solid var(--border); border-radius: var(--radius-sm);
187
+ }
188
+ .filter-input:focus { border-color: var(--accent); }
189
+
190
+ /* ── Charts (:::chart) — label + proportional bar (fill carries inline width%) */
191
+ .chart-block { margin: var(--sp-4) 0; }
192
+ .chart-row {
193
+ display: grid; grid-template-columns: minmax(var(--chart-label-w), 24%) 1fr;
194
+ align-items: center; gap: var(--sp-3); margin: var(--sp-1) 0;
195
+ }
196
+ .chart-label {
197
+ font-size: var(--text-sm); color: var(--text-muted); text-align: right;
198
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
199
+ }
200
+ .chart-row .chart-bar {
201
+ height: 0.9em; min-width: 2px; background: var(--accent);
202
+ border-radius: var(--radius-sm);
203
+ }
204
+
205
+ /* ── Tabs (::::tabs / :::tab) ─────────────────────────────────────────────── */
206
+ .tabs { margin: var(--sp-4) 0; }
207
+ .tablist { display: flex; flex-wrap: wrap; gap: var(--sp-1); border-bottom: 1px solid var(--border); margin-bottom: var(--sp-3); }
208
+ .tab-btn {
209
+ background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
210
+ padding: var(--sp-2) var(--sp-3); color: var(--text-muted);
211
+ font-family: inherit; font-size: var(--text-sm); font-weight: var(--fw-medium); cursor: pointer;
212
+ }
213
+ .tab-btn:hover { color: var(--text); }
214
+ .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); }
215
+ .tabpane { display: none; }
216
+ .tabpane.active { display: block; }
217
+
218
+ /* ── Mermaid diagrams ────────────────────────────────────────────────────── */
219
+ .content figure { margin: var(--sp-4) 0; text-align: center; }
220
+ .content figure svg, .content > svg, .content .mermaid svg { max-width: 100%; height: auto; }
221
+
222
+ /* ── Index page: category card grid ──────────────────────────────────────── */
223
+ .content .lead { color: var(--text-muted); font-size: var(--text-base); max-width: 60ch; margin-top: var(--sp-2); }
224
+ .guide-cards {
225
+ display: grid; grid-template-columns: repeat(auto-fill, minmax(min(var(--card-min), 100%), 1fr));
226
+ gap: var(--sp-4); margin: var(--sp-4) 0 var(--sp-6);
227
+ }
228
+ .guide-card {
229
+ display: flex; flex-direction: column; gap: var(--sp-2);
230
+ padding: var(--sp-4); background: var(--bg-card);
231
+ border: 1px solid var(--border); border-radius: var(--radius);
232
+ color: inherit; text-decoration: none;
233
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
234
+ }
235
+ .guide-card:hover { border-color: var(--accent); box-shadow: var(--shadow-md); text-decoration: none; }
236
+ .guide-card-title { font-weight: var(--fw-semi); color: var(--accent); font-size: var(--text-base); }
237
+ .guide-card-desc { color: var(--text-muted); font-size: var(--text-sm); line-height: var(--lh-normal); }
238
+
239
+ /* ── Responsive: TOC becomes an off-canvas drawer (chrome.ts toggles .open) ──*/
240
+ /* 860px is literal — media queries cannot read custom properties. Revisit it if
241
+ --topbar-h / --rail-w / --drawer-w change (the drawer sticky offsets key off them). */
242
+ @media (max-width: 860px) {
243
+ .nav-toggle { display: inline-flex; align-items: center; }
244
+ .layout { grid-template-columns: 1fr; gap: 0; }
245
+ .rail {
246
+ position: fixed; top: var(--topbar-h); left: 0; bottom: 0; width: var(--drawer-w); z-index: 50;
247
+ height: auto; background: var(--bg-card); border-right: 1px solid var(--border);
248
+ padding: var(--sp-4); box-shadow: var(--shadow-lg);
249
+ transform: translateX(-100%); transition: transform 0.2s ease, visibility 0.2s ease;
250
+ /* Closed drawer is off-screen AND removed from tab order / pointer events. */
251
+ visibility: hidden; pointer-events: none;
252
+ }
253
+ .rail.open { transform: translateX(0); visibility: visible; pointer-events: auto; }
254
+ .rail-close {
255
+ display: block; margin-left: auto; margin-bottom: var(--sp-2);
256
+ background: var(--bg-card); border: 1px solid var(--border); color: var(--text);
257
+ border-radius: var(--radius-sm); padding: var(--sp-1) var(--sp-3); font-size: var(--text-base);
258
+ line-height: 1; cursor: pointer; font-family: inherit;
259
+ }
260
+ .rail-close:hover { background: var(--bg-hover); border-color: var(--accent); }
261
+ .rail-close:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
262
+ .rail-backdrop {
263
+ display: block; position: fixed; inset: var(--topbar-h) 0 0 0;
264
+ background: var(--scrim); z-index: 49;
265
+ opacity: 0; pointer-events: none; transition: opacity 0.2s ease;
266
+ }
267
+ .rail.open ~ .rail-backdrop { opacity: 1; pointer-events: auto; }
268
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index-page.d.ts","sourceRoot":"","sources":["../../src/guides/index-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAa1E"}
1
+ {"version":3,"file":"index-page.d.ts","sourceRoot":"","sources":["../../src/guides/index-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAkB5C,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAsC1E"}
@@ -1,14 +1,47 @@
1
1
  import { wrapInChrome, esc } from './template.js';
2
+ const CATEGORY_ORDER = ['concepts', 'reference', 'workflows', 'tools'];
3
+ const CATEGORY_LABEL = {
4
+ concepts: 'Concepts',
5
+ reference: 'Reference',
6
+ workflows: 'Workflows',
7
+ tools: 'Tools',
8
+ };
9
+ function catLabel(c) {
10
+ return CATEGORY_LABEL[c] ?? c.charAt(0).toUpperCase() + c.slice(1);
11
+ }
12
+ function catId(c) {
13
+ return 'cat-' + c.toLowerCase().replace(/[^a-z0-9]+/g, '-');
14
+ }
2
15
  export function renderIndexPage(entries, css) {
3
16
  const sorted = [...entries].sort((a, b) => a.frontmatter.order - b.frontmatter.order);
4
- const items = sorted.map((e) => `<li><a href="${e.topic}/index.html"><strong>${esc(e.frontmatter.title)}</strong></a>` +
5
- `<span class="cat">${esc(e.frontmatter.category)}</span>` +
6
- `<p>${esc(e.frontmatter.description)}</p></li>`).join('');
7
- return wrapInChrome({
8
- title: 'Scaffold Guides',
9
- body: `<h2 id="guides">Guides</h2><ul class="guide-index">${items}</ul>`,
10
- headings: [{ depth: 2, text: 'Guides', id: 'guides' }],
11
- css,
17
+ // Group by category, preserving order within each group.
18
+ const byCat = new Map();
19
+ for (const e of sorted) {
20
+ const c = e.frontmatter.category;
21
+ if (!byCat.has(c))
22
+ byCat.set(c, []);
23
+ byCat.get(c).push(e);
24
+ }
25
+ const cats = [...byCat.keys()].sort((a, b) => {
26
+ const ia = CATEGORY_ORDER.indexOf(a);
27
+ const ib = CATEGORY_ORDER.indexOf(b);
28
+ return (ia < 0 ? 99 : ia) - (ib < 0 ? 99 : ib);
12
29
  });
30
+ const headings = cats.map((c) => ({ depth: 2, text: catLabel(c), id: catId(c) }));
31
+ const sections = cats
32
+ .map((c) => {
33
+ const cards = byCat
34
+ .get(c)
35
+ .map((e) => `<a class="guide-card" href="${e.topic}/index.html">` +
36
+ `<span class="guide-card-title">${esc(e.frontmatter.title)}</span>` +
37
+ `<span class="guide-card-desc">${esc(e.frontmatter.description)}</span></a>`)
38
+ .join('');
39
+ return `<h2 id="${catId(c)}">${esc(catLabel(c))}</h2><div class="guide-cards">${cards}</div>`;
40
+ })
41
+ .join('');
42
+ const intro = '<p class="lead">Reference guides for Scaffold — human- and agent-readable. ' +
43
+ 'Open a guide to read it in your browser; agents read the markdown source with ' +
44
+ '<code>scaffold guides &lt;topic&gt; --markdown</code>.</p>';
45
+ return wrapInChrome({ title: 'Scaffold Guides', body: intro + sections, headings, css });
13
46
  }
14
47
  //# sourceMappingURL=index-page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-page.js","sourceRoot":"","sources":["../../src/guides/index-page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,GAAW;IAChE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACrF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,gBAAgB,CAAC,CAAC,KAAK,wBAAwB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe;QACtF,qBAAqB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS;QACzD,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAChD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACV,OAAO,YAAY,CAAC;QAClB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,sDAAsD,KAAK,OAAO;QACxE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;QACtD,GAAG;KACJ,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"index-page.js","sourceRoot":"","sources":["../../src/guides/index-page.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/guides/sanitize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,eAAO,MAAM,mBAAmB,EAAE,MAyEjC,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/guides/sanitize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,eAAO,MAAM,mBAAmB,EAAE,MA6EjC,CAAA"}
@@ -42,6 +42,10 @@ export const guideSanitizeSchema = {
42
42
  'dataTab',
43
43
  'dataPath',
44
44
  'ariaLabel',
45
+ 'ariaSelected',
46
+ 'ariaControls',
47
+ 'ariaLabelledBy',
48
+ 'tabIndex',
45
49
  'style',
46
50
  // SVG geometry & presentation (safe; no execution risk)
47
51
  'd',
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/guides/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAW;IACzC,GAAG,aAAa;IAChB,gFAAgF;IAChF,gFAAgF;IAChF,8EAA8E;IAC9E,0EAA0E;IAC1E,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE;QACR,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,QAAQ;QACR,OAAO;QACP,6BAA6B;QAC7B,QAAQ;QACR,KAAK;QACL,GAAG;QACH,MAAM;QACN,MAAM;QACN,QAAQ;QACR,SAAS;QACT,MAAM;QACN,SAAS;QACT,UAAU;QACV,MAAM;QACN,OAAO;QACP,QAAQ;QACR,MAAM;QACN,KAAK;KACN;IACD,UAAU,EAAE;QACV,GAAG,aAAa,CAAC,UAAU;QAC3B,iEAAiE;QACjE,2EAA2E;QAC3E,yEAAyE;QACzE,kDAAkD;QAClD,GAAG,EAAE;YACH,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI;YACJ,WAAW;YACX,MAAM;YACN,SAAS;YACT,UAAU;YACV,WAAW;YACX,OAAO;YACP,wDAAwD;YACxD,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,WAAW;YACX,MAAM;YACN,QAAQ;YACR,aAAa;YACb,WAAW;YACX,aAAa;YACb,WAAW;YACX,YAAY;SACb;QACD,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;QACxD,8BAA8B;QAC9B,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,CAAC;QACxF,8BAA8B;QAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC;QAC9G,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC;KACrE;CACF,CAAA"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/guides/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAW;IACzC,GAAG,aAAa;IAChB,gFAAgF;IAChF,gFAAgF;IAChF,8EAA8E;IAC9E,0EAA0E;IAC1E,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE;QACR,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,QAAQ;QACR,OAAO;QACP,6BAA6B;QAC7B,QAAQ;QACR,KAAK;QACL,GAAG;QACH,MAAM;QACN,MAAM;QACN,QAAQ;QACR,SAAS;QACT,MAAM;QACN,SAAS;QACT,UAAU;QACV,MAAM;QACN,OAAO;QACP,QAAQ;QACR,MAAM;QACN,KAAK;KACN;IACD,UAAU,EAAE;QACV,GAAG,aAAa,CAAC,UAAU;QAC3B,iEAAiE;QACjE,2EAA2E;QAC3E,yEAAyE;QACzE,kDAAkD;QAClD,GAAG,EAAE;YACH,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI;YACJ,WAAW;YACX,MAAM;YACN,SAAS;YACT,UAAU;YACV,WAAW;YACX,cAAc;YACd,cAAc;YACd,gBAAgB;YAChB,UAAU;YACV,OAAO;YACP,wDAAwD;YACxD,GAAG;YACH,GAAG;YACH,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,WAAW;YACX,MAAM;YACN,QAAQ;YACR,aAAa;YACb,WAAW;YACX,aAAa;YACb,WAAW;YACX,YAAY;SACb;QACD,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;QACxD,8BAA8B;QAC9B,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,CAAC;QACxF,8BAA8B;QAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC;QAC9G,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC;KACrE;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/guides/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErC;AASD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM,CAyB7E"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/guides/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErC;AASD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM,CA8B7E"}
@@ -22,13 +22,18 @@ export function wrapInChrome({ title, body, headings, css }) {
22
22
  </head>
23
23
  <body>
24
24
  <header class="topbar">
25
- <button data-action="nav" class="nav-toggle" aria-label="Toggle navigation">☰</button>
25
+ <button data-action="nav" class="nav-toggle" aria-label="Toggle navigation"
26
+ aria-expanded="false" aria-controls="guide-toc">☰</button>
26
27
  <h1>${esc(title)}</h1>
27
28
  <button data-action="theme" class="theme-toggle" aria-label="Toggle theme">◐</button>
28
29
  </header>
29
30
  <div class="layout">
30
- <aside class="rail">${toc(headings)}</aside>
31
+ <aside class="rail" id="guide-toc">
32
+ <button class="rail-close" data-action="nav" aria-label="Close navigation">✕</button>
33
+ ${toc(headings)}
34
+ </aside>
31
35
  <main class="content">${body}</main>
36
+ <div class="rail-backdrop" data-action="nav" aria-hidden="true"></div>
32
37
  </div>
33
38
  <script>${CHROME_JS}</script>
34
39
  </body>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/guides/template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAS/B,MAAM,UAAU,GAAG,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACrG,CAAC;AAED,SAAS,GAAG,CAAC,QAAsB;IACjC,MAAM,KAAK,GAAG,QAAQ;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAK,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;SACxF,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,OAAO,uDAAuD,KAAK,aAAa,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAY;IACnE,OAAO;uCAC8B,cAAc;;;;SAI5C,GAAG,CAAC,KAAK,CAAC;wBACK,cAAc;SAC7B,GAAG;UACF,aAAa;;;;;QAKf,GAAG,CAAC,KAAK,CAAC;;;;wBAIM,GAAG,CAAC,QAAQ,CAAC;0BACX,IAAI;;UAEpB,SAAS;;;CAGlB,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/guides/template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAS/B,MAAM,UAAU,GAAG,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACrG,CAAC;AAED,SAAS,GAAG,CAAC,QAAsB;IACjC,MAAM,KAAK,GAAG,QAAQ;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAK,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;SACxF,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,OAAO,uDAAuD,KAAK,aAAa,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAY;IACnE,OAAO;uCAC8B,cAAc;;;;SAI5C,GAAG,CAAC,KAAK,CAAC;wBACK,cAAc;SAC7B,GAAG;UACF,aAAa;;;;;;QAMf,GAAG,CAAC,KAAK,CAAC;;;;;;MAMZ,GAAG,CAAC,QAAQ,CAAC;;0BAEO,IAAI;;;UAGpB,SAAS;;;CAGlB,CAAA;AACD,CAAC"}
@@ -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"}