@zigrivers/scaffold 3.29.0 → 3.31.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 (86) hide show
  1. package/content/guides/AUTHORING.md +146 -0
  2. package/content/guides/cli/index.html +1855 -0
  3. package/content/guides/cli/index.md +206 -0
  4. package/content/guides/concepts/index.html +1970 -0
  5. package/content/guides/concepts/index.md +347 -0
  6. package/content/guides/dashboard/index.html +1913 -0
  7. package/content/guides/dashboard/index.md +264 -0
  8. package/content/guides/index.html +368 -15
  9. package/content/guides/install/.diagrams/diagram-0.svg +1 -0
  10. package/content/guides/install/.diagrams/manifest.json +3 -0
  11. package/content/guides/install/index.html +1653 -0
  12. package/content/guides/install/index.md +186 -0
  13. package/content/guides/knowledge/.diagrams/diagram-0.svg +1 -0
  14. package/content/guides/knowledge/.diagrams/manifest.json +3 -0
  15. package/content/guides/knowledge/index.html +1765 -0
  16. package/content/guides/knowledge/index.md +209 -0
  17. package/content/guides/knowledge-freshness/.diagrams/diagram-0.svg +1 -0
  18. package/content/guides/knowledge-freshness/.diagrams/manifest.json +3 -0
  19. package/content/guides/knowledge-freshness/index.html +2795 -0
  20. package/content/guides/knowledge-freshness/index.md +893 -0
  21. package/content/guides/mmr/index.html +407 -36
  22. package/content/guides/mmr/index.md +39 -16
  23. package/content/guides/multi-agent/.diagrams/diagram-0.svg +1 -0
  24. package/content/guides/multi-agent/.diagrams/manifest.json +3 -0
  25. package/content/guides/multi-agent/index.html +1715 -0
  26. package/content/guides/multi-agent/index.md +243 -0
  27. package/content/guides/observability/.diagrams/diagram-0.svg +1 -0
  28. package/content/guides/observability/.diagrams/diagram-1.svg +1 -0
  29. package/content/guides/observability/.diagrams/diagram-2.svg +1 -0
  30. package/content/guides/observability/.diagrams/diagram-3.svg +1 -0
  31. package/content/guides/observability/.diagrams/manifest.json +6 -0
  32. package/content/guides/observability/index.html +3257 -0
  33. package/content/guides/observability/index.md +1097 -0
  34. package/content/guides/pipeline/.diagrams/diagram-0.svg +1 -0
  35. package/content/guides/pipeline/.diagrams/diagram-1.svg +1 -0
  36. package/content/guides/pipeline/.diagrams/manifest.json +4 -0
  37. package/content/guides/pipeline/index.html +1973 -0
  38. package/content/guides/pipeline/index.md +387 -0
  39. package/content/guides/review-workflow/.diagrams/diagram-0.svg +1 -0
  40. package/content/guides/review-workflow/.diagrams/diagram-1.svg +1 -0
  41. package/content/guides/review-workflow/.diagrams/manifest.json +4 -0
  42. package/content/guides/review-workflow/index.html +1790 -0
  43. package/content/guides/review-workflow/index.md +248 -0
  44. package/dist/guides/build.d.ts +1 -1
  45. package/dist/guides/build.d.ts.map +1 -1
  46. package/dist/guides/build.js +21 -9
  47. package/dist/guides/build.js.map +1 -1
  48. package/dist/guides/build.test.js +47 -0
  49. package/dist/guides/build.test.js.map +1 -1
  50. package/dist/guides/chrome.d.ts.map +1 -1
  51. package/dist/guides/chrome.js +83 -12
  52. package/dist/guides/chrome.js.map +1 -1
  53. package/dist/guides/dashboard-theme.css +8 -0
  54. package/dist/guides/directives-cite.test.d.ts +2 -0
  55. package/dist/guides/directives-cite.test.d.ts.map +1 -0
  56. package/dist/guides/directives-cite.test.js +26 -0
  57. package/dist/guides/directives-cite.test.js.map +1 -0
  58. package/dist/guides/directives-tabs.test.js +47 -0
  59. package/dist/guides/directives-tabs.test.js.map +1 -1
  60. package/dist/guides/directives.d.ts +1 -0
  61. package/dist/guides/directives.d.ts.map +1 -1
  62. package/dist/guides/directives.js +38 -0
  63. package/dist/guides/directives.js.map +1 -1
  64. package/dist/guides/guides.css +268 -0
  65. package/dist/guides/index-page.d.ts.map +1 -1
  66. package/dist/guides/index-page.js +41 -8
  67. package/dist/guides/index-page.js.map +1 -1
  68. package/dist/guides/links.d.ts +14 -0
  69. package/dist/guides/links.d.ts.map +1 -0
  70. package/dist/guides/links.js +56 -0
  71. package/dist/guides/links.js.map +1 -0
  72. package/dist/guides/links.test.d.ts +2 -0
  73. package/dist/guides/links.test.d.ts.map +1 -0
  74. package/dist/guides/links.test.js +72 -0
  75. package/dist/guides/links.test.js.map +1 -0
  76. package/dist/guides/render.d.ts +1 -0
  77. package/dist/guides/render.d.ts.map +1 -1
  78. package/dist/guides/render.js +1 -1
  79. package/dist/guides/render.js.map +1 -1
  80. package/dist/guides/sanitize.d.ts.map +1 -1
  81. package/dist/guides/sanitize.js +5 -0
  82. package/dist/guides/sanitize.js.map +1 -1
  83. package/dist/guides/template.d.ts.map +1 -1
  84. package/dist/guides/template.js +7 -2
  85. package/dist/guides/template.js.map +1 -1
  86. package/package.json +2 -2
@@ -0,0 +1,72 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { findBrokenRelativeLinks } from './links.js';
6
+ function tmpdir() {
7
+ return fs.mkdtempSync(path.join(os.tmpdir(), 'glinks-'));
8
+ }
9
+ describe('findBrokenRelativeLinks (R2-9: inter-guide links must resolve)', () => {
10
+ it('reports a relative link whose target is missing', () => {
11
+ const dir = tmpdir();
12
+ expect(findBrokenRelativeLinks('See [concepts](../concepts/index.md).', dir)).toEqual([
13
+ '../concepts/index.md',
14
+ ]);
15
+ });
16
+ it('passes when the relative target exists', () => {
17
+ const root = tmpdir();
18
+ const dir = path.join(root, 'pipeline');
19
+ fs.mkdirSync(dir);
20
+ fs.mkdirSync(path.join(root, 'concepts'));
21
+ fs.writeFileSync(path.join(root, 'concepts', 'index.md'), '# c');
22
+ expect(findBrokenRelativeLinks('See [concepts](../concepts/index.md).', dir)).toEqual([]);
23
+ });
24
+ it('accepts an index.html link when the index.md source exists (not yet built)', () => {
25
+ const root = tmpdir();
26
+ const dir = path.join(root, 'pipeline');
27
+ fs.mkdirSync(dir);
28
+ fs.mkdirSync(path.join(root, 'concepts'));
29
+ fs.writeFileSync(path.join(root, 'concepts', 'index.md'), '# c');
30
+ expect(findBrokenRelativeLinks('[c](../concepts/index.html)', dir)).toEqual([]);
31
+ });
32
+ it('ignores external URLs, mailto, and pure anchors', () => {
33
+ const dir = tmpdir();
34
+ expect(findBrokenRelativeLinks('[e](https://x.com) [a](#sec) [m](mailto:x@y.com)', dir)).toEqual([]);
35
+ });
36
+ it('strips a trailing anchor before resolving', () => {
37
+ const root = tmpdir();
38
+ const dir = path.join(root, 'pipeline');
39
+ fs.mkdirSync(dir);
40
+ fs.mkdirSync(path.join(root, 'concepts'));
41
+ fs.writeFileSync(path.join(root, 'concepts', 'index.md'), '# c');
42
+ expect(findBrokenRelativeLinks('[c](../concepts/index.md#worktree)', dir)).toEqual([]);
43
+ });
44
+ it('catches broken reference-style links (definitions)', () => {
45
+ const dir = tmpdir();
46
+ const md = 'See [concepts][c].\n\n[c]: ../concepts/index.md\n';
47
+ expect(findBrokenRelativeLinks(md, dir)).toEqual(['../concepts/index.md']);
48
+ });
49
+ it('ignores links inside fenced code blocks', () => {
50
+ const dir = tmpdir();
51
+ const md = 'Example:\n\n```\n[x](../nope/index.md)\n```\n';
52
+ expect(findBrokenRelativeLinks(md, dir)).toEqual([]);
53
+ });
54
+ it('ignores link-like text inside frontmatter', () => {
55
+ const dir = tmpdir();
56
+ const md = '---\ntitle: T\ndescription: see [x](../nope/index.md)\n---\n\n# Body\n';
57
+ expect(findBrokenRelativeLinks(md, dir)).toEqual([]);
58
+ });
59
+ it('handles parentheses in the link target', () => {
60
+ const root = tmpdir();
61
+ const dir = path.join(root, 'g');
62
+ fs.mkdirSync(dir, { recursive: true });
63
+ fs.writeFileSync(path.join(dir, 'file(1).md'), 'x');
64
+ expect(findBrokenRelativeLinks('[x](<file(1).md>)', dir)).toEqual([]);
65
+ });
66
+ it('decodes percent-encoded targets before resolving', () => {
67
+ const dir = tmpdir();
68
+ fs.writeFileSync(path.join(dir, 'with space.md'), 'x');
69
+ expect(findBrokenRelativeLinks('[x](with%20space.md)', dir)).toEqual([]);
70
+ });
71
+ });
72
+ //# sourceMappingURL=links.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.test.js","sourceRoot":"","sources":["../../src/guides/links.test.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface RenderOptions {
5
5
  /** remark-phase plugins only; injected after remark-directive and before remark-rehype */
6
6
  plugins?: AnyPlugin[];
7
7
  }
8
+ export declare function stripFrontmatter(md: string): string;
8
9
  export declare function renderGuideBody(markdown: string, opts?: RenderOptions): Promise<{
9
10
  body: string;
10
11
  headings: TocHeading[];
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/guides/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAWrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B,0FAA0F;IAC1F,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;CACtB;AA+BD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAgBnD"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/guides/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAWrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B,0FAA0F;IAC1F,OAAO,CAAC,EAAE,SAAS,EAAE,CAAA;CACtB;AAMD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMnD;AAmBD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAgBnD"}
@@ -12,7 +12,7 @@ import { guideSanitizeSchema } from './sanitize.js';
12
12
  function slug(text) {
13
13
  return text.toLowerCase().trim().replace(/[^\w\s-]/g, '').replace(/[_\s]+/g, '-');
14
14
  }
15
- function stripFrontmatter(md) {
15
+ export function stripFrontmatter(md) {
16
16
  const lines = md.split(/\r?\n/);
17
17
  if (lines[0]?.trim() !== '---')
18
18
  return md;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/guides/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/guides/render.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,MAwEjC,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"}
@@ -40,7 +40,12 @@ export const guideSanitizeSchema = {
40
40
  'className',
41
41
  'role',
42
42
  'dataTab',
43
+ 'dataPath',
43
44
  'ariaLabel',
45
+ 'ariaSelected',
46
+ 'ariaControls',
47
+ 'ariaLabelledBy',
48
+ 'tabIndex',
44
49
  'style',
45
50
  // SVG geometry & presentation (safe; no execution risk)
46
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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zigrivers/scaffold",
3
- "version": "3.29.0",
3
+ "version": "3.31.0",
4
4
  "description": "AI-powered software project scaffolding pipeline",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -38,7 +38,7 @@
38
38
  "scaffold": "dist/index.js"
39
39
  },
40
40
  "scripts": {
41
- "build": "tsc && cp src/core/knowledge/knowledge-update-template.md dist/core/knowledge/knowledge-update-template.md && mkdir -p dist/guides && cp lib/dashboard-theme.css dist/guides/dashboard-theme.css",
41
+ "build": "tsc && cp src/core/knowledge/knowledge-update-template.md dist/core/knowledge/knowledge-update-template.md && mkdir -p dist/guides && cp lib/dashboard-theme.css dist/guides/dashboard-theme.css && cp lib/guides.css dist/guides/guides.css",
42
42
  "test": "vitest run",
43
43
  "test:coverage": "vitest run --coverage",
44
44
  "test:e2e": "vitest run --config vitest.e2e.config.ts",