specweave 0.8.3 → 0.8.5

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 (70) hide show
  1. package/.claude-plugin/marketplace.json +11 -0
  2. package/dist/adapters/adapter-loader.d.ts +4 -4
  3. package/dist/adapters/adapter-loader.d.ts.map +1 -1
  4. package/dist/adapters/adapter-loader.js +8 -7
  5. package/dist/adapters/adapter-loader.js.map +1 -1
  6. package/dist/cli/commands/init.d.ts.map +1 -1
  7. package/dist/cli/commands/init.js +12 -1
  8. package/dist/cli/commands/init.js.map +1 -1
  9. package/dist/utils/docs-preview/config-generator.d.ts +46 -0
  10. package/dist/utils/docs-preview/config-generator.d.ts.map +1 -0
  11. package/dist/utils/docs-preview/config-generator.js +377 -0
  12. package/dist/utils/docs-preview/config-generator.js.map +1 -0
  13. package/dist/utils/docs-preview/docusaurus-setup.d.ts +38 -0
  14. package/dist/utils/docs-preview/docusaurus-setup.d.ts.map +1 -0
  15. package/dist/utils/docs-preview/docusaurus-setup.js +177 -0
  16. package/dist/utils/docs-preview/docusaurus-setup.js.map +1 -0
  17. package/dist/utils/docs-preview/index.d.ts +11 -0
  18. package/dist/utils/docs-preview/index.d.ts.map +1 -0
  19. package/dist/utils/docs-preview/index.js +17 -0
  20. package/dist/utils/docs-preview/index.js.map +1 -0
  21. package/dist/utils/docs-preview/package-installer.d.ts +42 -0
  22. package/dist/utils/docs-preview/package-installer.d.ts.map +1 -0
  23. package/dist/utils/docs-preview/package-installer.js +182 -0
  24. package/dist/utils/docs-preview/package-installer.js.map +1 -0
  25. package/dist/utils/docs-preview/server-manager.d.ts +30 -0
  26. package/dist/utils/docs-preview/server-manager.d.ts.map +1 -0
  27. package/dist/utils/docs-preview/server-manager.js +207 -0
  28. package/dist/utils/docs-preview/server-manager.js.map +1 -0
  29. package/dist/utils/docs-preview/sidebar-builder.d.ts +31 -0
  30. package/dist/utils/docs-preview/sidebar-builder.d.ts.map +1 -0
  31. package/dist/utils/docs-preview/sidebar-builder.js +202 -0
  32. package/dist/utils/docs-preview/sidebar-builder.js.map +1 -0
  33. package/dist/utils/docs-preview/types.d.ts +60 -0
  34. package/dist/utils/docs-preview/types.d.ts.map +1 -0
  35. package/dist/utils/docs-preview/types.js +5 -0
  36. package/dist/utils/docs-preview/types.js.map +1 -0
  37. package/dist/utils/docs-preview.bak/config-generator.d.ts +46 -0
  38. package/dist/utils/docs-preview.bak/config-generator.d.ts.map +1 -0
  39. package/dist/utils/docs-preview.bak/config-generator.js +377 -0
  40. package/dist/utils/docs-preview.bak/config-generator.js.map +1 -0
  41. package/dist/utils/docs-preview.bak/package-installer.d.ts +42 -0
  42. package/dist/utils/docs-preview.bak/package-installer.d.ts.map +1 -0
  43. package/dist/utils/docs-preview.bak/package-installer.js +182 -0
  44. package/dist/utils/docs-preview.bak/package-installer.js.map +1 -0
  45. package/dist/utils/docs-preview.bak/server-manager.d.ts +30 -0
  46. package/dist/utils/docs-preview.bak/server-manager.d.ts.map +1 -0
  47. package/dist/utils/docs-preview.bak/server-manager.js +207 -0
  48. package/dist/utils/docs-preview.bak/server-manager.js.map +1 -0
  49. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts +31 -0
  50. package/dist/utils/docs-preview.bak/sidebar-builder.d.ts.map +1 -0
  51. package/dist/utils/docs-preview.bak/sidebar-builder.js +202 -0
  52. package/dist/utils/docs-preview.bak/sidebar-builder.js.map +1 -0
  53. package/dist/utils/docs-preview.bak/types.d.ts +60 -0
  54. package/dist/utils/docs-preview.bak/types.d.ts.map +1 -0
  55. package/dist/utils/docs-preview.bak/types.js +5 -0
  56. package/dist/utils/docs-preview.bak/types.js.map +1 -0
  57. package/package.json +1 -1
  58. package/src/templates/.gitattributes.template +35 -0
  59. package/dist/cli/commands/plugin.js +0 -322
  60. package/dist/cli/commands/plugin.js.map +0 -1
  61. package/dist/core/plugin-detector.d.ts +0 -97
  62. package/dist/core/plugin-detector.d.ts.map +0 -1
  63. package/dist/core/plugin-detector.js +0 -374
  64. package/dist/core/plugin-detector.js.map +0 -1
  65. package/dist/core/plugin-manager.d.ts +0 -144
  66. package/dist/core/plugin-manager.d.ts.map +0 -1
  67. package/dist/core/plugin-manager.js +0 -393
  68. package/dist/core/plugin-manager.js.map +0 -1
  69. package/dist/utils/plugin-detection.js +0 -229
  70. package/dist/utils/plugin-detection.js.map +0 -1
@@ -0,0 +1,377 @@
1
+ /**
2
+ * Docusaurus configuration generator
3
+ * Generates docusaurus.config.js with sensible defaults
4
+ */
5
+ import * as path from 'path';
6
+ import * as fs from 'fs-extra';
7
+ /**
8
+ * Generate docusaurus.config.js content
9
+ */
10
+ export function generateDocusaurusConfig(config) {
11
+ const { title, tagline, url, baseUrl, docsPath, theme = 'default' } = config;
12
+ return `// @ts-check
13
+ // This is a Docusaurus site configuration object.
14
+ // Auto-generated by SpecWeave docs-preview plugin
15
+ // Generated: ${new Date().toISOString()}
16
+
17
+ import {themes as prismThemes} from 'prism-react-renderer';
18
+
19
+ /** @type {import('@docusaurus/types').Config} */
20
+ const config = {
21
+ title: '${title}',
22
+ tagline: '${tagline}',
23
+ favicon: 'img/favicon.ico',
24
+
25
+ // Production URL
26
+ url: '${url}',
27
+ baseUrl: '${baseUrl}',
28
+
29
+ // GitHub Pages deployment config
30
+ organizationName: 'your-org',
31
+ projectName: 'your-repo',
32
+
33
+ onBrokenLinks: 'warn',
34
+ onBrokenMarkdownLinks: 'warn',
35
+
36
+ // Internationalization
37
+ i18n: {
38
+ defaultLocale: 'en',
39
+ locales: ['en'],
40
+ },
41
+
42
+ presets: [
43
+ [
44
+ 'classic',
45
+ /** @type {import('@docusaurus/preset-classic').Options} */
46
+ ({
47
+ docs: {
48
+ routeBasePath: '/',
49
+ path: '${docsPath}',
50
+ sidebarPath: './sidebars.js',
51
+ editUrl: undefined, // Disable "Edit this page" for internal docs
52
+ },
53
+ blog: false, // Disable blog
54
+ theme: {
55
+ customCss: './src/css/custom.css',
56
+ },
57
+ }),
58
+ ],
59
+ ],
60
+
61
+ themeConfig:
62
+ /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
63
+ ({
64
+ // Social card image (optional)
65
+ image: 'img/docusaurus-social-card.jpg',
66
+
67
+ navbar: {
68
+ title: '${title}',
69
+ logo: {
70
+ alt: '${title} Logo',
71
+ src: 'img/logo.svg',
72
+ },
73
+ items: [
74
+ {
75
+ type: 'docSidebar',
76
+ sidebarId: 'docs',
77
+ position: 'left',
78
+ label: 'Documentation',
79
+ },
80
+ ],
81
+ },
82
+
83
+ footer: {
84
+ style: 'dark',
85
+ links: [
86
+ {
87
+ title: 'Documentation',
88
+ items: [
89
+ {
90
+ label: 'Strategy',
91
+ to: '/strategy',
92
+ },
93
+ {
94
+ label: 'Architecture',
95
+ to: '/architecture',
96
+ },
97
+ ],
98
+ },
99
+ ],
100
+ copyright: \`Copyright Ā© \${new Date().getFullYear()} SpecWeave. Built with Docusaurus.\`,
101
+ },
102
+
103
+ prism: {
104
+ theme: prismThemes.github,
105
+ darkTheme: prismThemes.dracula,
106
+ additionalLanguages: ['bash', 'typescript', 'javascript', 'json', 'yaml'],
107
+ },
108
+ }),
109
+
110
+ // Mermaid diagrams support
111
+ markdown: {
112
+ mermaid: true,
113
+ },
114
+ themes: ['@docusaurus/theme-mermaid'],
115
+ };
116
+
117
+ export default config;
118
+ `;
119
+ }
120
+ /**
121
+ * Write docusaurus.config.js to file
122
+ */
123
+ export async function writeDocusaurusConfig(targetDir, config) {
124
+ const configPath = path.join(targetDir, 'docusaurus.config.js');
125
+ const content = generateDocusaurusConfig(config);
126
+ await fs.ensureDir(targetDir);
127
+ await fs.writeFile(configPath, content, 'utf-8');
128
+ }
129
+ /**
130
+ * Generate package.json for Docusaurus site
131
+ */
132
+ export function generatePackageJSON(title) {
133
+ return JSON.stringify({
134
+ name: 'specweave-docs',
135
+ version: '1.0.0',
136
+ description: `${title} - Documentation Site`,
137
+ private: true,
138
+ scripts: {
139
+ docusaurus: 'docusaurus',
140
+ start: 'docusaurus start',
141
+ build: 'docusaurus build',
142
+ swizzle: 'docusaurus swizzle',
143
+ deploy: 'docusaurus deploy',
144
+ clear: 'docusaurus clear',
145
+ serve: 'docusaurus serve',
146
+ 'write-translations': 'docusaurus write-translations',
147
+ 'write-heading-ids': 'docusaurus write-heading-ids'
148
+ },
149
+ dependencies: {
150
+ '@docusaurus/core': '^3.0.0',
151
+ '@docusaurus/preset-classic': '^3.0.0',
152
+ '@docusaurus/theme-mermaid': '^3.0.0',
153
+ '@mdx-js/react': '^3.0.0',
154
+ 'clsx': '^2.0.0',
155
+ 'prism-react-renderer': '^2.1.0',
156
+ 'react': '^18.0.0',
157
+ 'react-dom': '^18.0.0'
158
+ },
159
+ devDependencies: {
160
+ '@docusaurus/module-type-aliases': '^3.0.0',
161
+ '@docusaurus/types': '^3.0.0'
162
+ },
163
+ engines: {
164
+ node: '>=18.0'
165
+ }
166
+ }, null, 2);
167
+ }
168
+ /**
169
+ * Write package.json to file
170
+ */
171
+ export async function writePackageJSON(targetDir, title) {
172
+ const packagePath = path.join(targetDir, 'package.json');
173
+ const content = generatePackageJSON(title);
174
+ await fs.ensureDir(targetDir);
175
+ await fs.writeFile(packagePath, content, 'utf-8');
176
+ }
177
+ /**
178
+ * Generate custom CSS for theme customization
179
+ */
180
+ export function generateCustomCSS(theme) {
181
+ const themes = {
182
+ default: `
183
+ :root {
184
+ --ifm-color-primary: #2e8555;
185
+ --ifm-color-primary-dark: #29784c;
186
+ --ifm-color-primary-darker: #277148;
187
+ --ifm-color-primary-darkest: #205d3b;
188
+ --ifm-color-primary-light: #33925d;
189
+ --ifm-color-primary-lighter: #359962;
190
+ --ifm-color-primary-lightest: #3cad6e;
191
+ --ifm-code-font-size: 95%;
192
+ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
193
+ }
194
+
195
+ [data-theme='dark'] {
196
+ --ifm-color-primary: #25c2a0;
197
+ --ifm-color-primary-dark: #21af90;
198
+ --ifm-color-primary-darker: #1fa588;
199
+ --ifm-color-primary-darkest: #1a8870;
200
+ --ifm-color-primary-light: #29d5b0;
201
+ --ifm-color-primary-lighter: #32d8b4;
202
+ --ifm-color-primary-lightest: #4fddbf;
203
+ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
204
+ }
205
+ `,
206
+ classic: `
207
+ :root {
208
+ --ifm-color-primary: #0066cc;
209
+ --ifm-color-primary-dark: #005cb8;
210
+ --ifm-color-primary-darker: #0056ad;
211
+ --ifm-color-primary-darkest: #00478f;
212
+ --ifm-color-primary-light: #0070e0;
213
+ --ifm-color-primary-lighter: #0076eb;
214
+ --ifm-color-primary-lightest: #1a85ff;
215
+ --ifm-code-font-size: 95%;
216
+ }
217
+ `,
218
+ dark: `
219
+ :root {
220
+ --ifm-color-primary: #1e1e1e;
221
+ --ifm-background-color: #0d1117;
222
+ --ifm-code-font-size: 95%;
223
+ }
224
+
225
+ [data-theme='dark'] {
226
+ --ifm-color-primary: #58a6ff;
227
+ --ifm-background-color: #0d1117;
228
+ }
229
+ `
230
+ };
231
+ return `/**
232
+ * Custom CSS for SpecWeave documentation
233
+ * Theme: ${theme}
234
+ * Auto-generated by SpecWeave docs-preview plugin
235
+ */
236
+
237
+ ${themes[theme]}
238
+
239
+ /* Custom styles */
240
+ .markdown {
241
+ --ifm-h1-font-size: 2rem;
242
+ --ifm-h2-font-size: 1.5rem;
243
+ --ifm-h3-font-size: 1.25rem;
244
+ }
245
+
246
+ /* Code blocks */
247
+ .prism-code {
248
+ font-size: 0.9rem;
249
+ }
250
+
251
+ /* Mermaid diagrams */
252
+ .docusaurus-mermaid-container {
253
+ text-align: center;
254
+ margin: 2rem 0;
255
+ }
256
+ `;
257
+ }
258
+ /**
259
+ * Write custom CSS to file
260
+ */
261
+ export async function writeCustomCSS(targetDir, theme) {
262
+ const cssPath = path.join(targetDir, 'src', 'css', 'custom.css');
263
+ const content = generateCustomCSS(theme);
264
+ await fs.ensureDir(path.dirname(cssPath));
265
+ await fs.writeFile(cssPath, content, 'utf-8');
266
+ }
267
+ /**
268
+ * Generate index page (landing page)
269
+ */
270
+ export function generateIndexPage(title, tagline) {
271
+ return `import React from 'react';
272
+ import clsx from 'clsx';
273
+ import Link from '@docusaurus/Link';
274
+ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
275
+ import Layout from '@theme/Layout';
276
+ import styles from './index.module.css';
277
+
278
+ function HomepageHeader() {
279
+ const {siteConfig} = useDocusaurusContext();
280
+ return (
281
+ <header className={clsx('hero hero--primary', styles.heroBanner)}>
282
+ <div className="container">
283
+ <h1 className="hero__title">{siteConfig.title}</h1>
284
+ <p className="hero__subtitle">{siteConfig.tagline}</p>
285
+ <div className={styles.buttons}>
286
+ <Link
287
+ className="button button--secondary button--lg"
288
+ to="/strategy">
289
+ View Documentation
290
+ </Link>
291
+ </div>
292
+ </div>
293
+ </header>
294
+ );
295
+ }
296
+
297
+ export default function Home() {
298
+ const {siteConfig} = useDocusaurusContext();
299
+ return (
300
+ <Layout
301
+ title={\`\${siteConfig.title}\`}
302
+ description="${tagline}">
303
+ <HomepageHeader />
304
+ <main>
305
+ <div className="container" style={{marginTop: '2rem', marginBottom: '2rem'}}>
306
+ <div className="row">
307
+ <div className="col col--12">
308
+ <h2>Welcome to ${title}</h2>
309
+ <p>
310
+ This is your SpecWeave documentation site, automatically generated from your
311
+ <code>.specweave/docs/</code> folder.
312
+ </p>
313
+ <p>
314
+ Use the sidebar to navigate through your documentation:
315
+ </p>
316
+ <ul>
317
+ <li><strong>Strategy</strong>: Business rationale, PRDs, OKRs</li>
318
+ <li><strong>Specs</strong>: Feature specifications and user stories</li>
319
+ <li><strong>Architecture</strong>: Technical design, ADRs, diagrams</li>
320
+ <li><strong>Delivery</strong>: Build & release processes</li>
321
+ <li><strong>Operations</strong>: Runbooks, SLOs, incidents</li>
322
+ <li><strong>Governance</strong>: Policies, security, compliance</li>
323
+ </ul>
324
+ </div>
325
+ </div>
326
+ </div>
327
+ </main>
328
+ </Layout>
329
+ );
330
+ }
331
+ `;
332
+ }
333
+ /**
334
+ * Write index page to file
335
+ */
336
+ export async function writeIndexPage(targetDir, title, tagline) {
337
+ const indexPath = path.join(targetDir, 'src', 'pages', 'index.js');
338
+ const content = generateIndexPage(title, tagline);
339
+ await fs.ensureDir(path.dirname(indexPath));
340
+ await fs.writeFile(indexPath, content, 'utf-8');
341
+ }
342
+ /**
343
+ * Generate index.module.css for landing page styles
344
+ */
345
+ export function generateIndexModuleCSS() {
346
+ return `.heroBanner {
347
+ padding: 4rem 0;
348
+ text-align: center;
349
+ position: relative;
350
+ overflow: hidden;
351
+ }
352
+
353
+ @media screen and (max-width: 996px) {
354
+ .heroBanner {
355
+ padding: 2rem;
356
+ }
357
+ }
358
+
359
+ .buttons {
360
+ display: flex;
361
+ align-items: center;
362
+ justify-content: center;
363
+ gap: 1rem;
364
+ margin-top: 2rem;
365
+ }
366
+ `;
367
+ }
368
+ /**
369
+ * Write index.module.css to file
370
+ */
371
+ export async function writeIndexModuleCSS(targetDir) {
372
+ const cssPath = path.join(targetDir, 'src', 'pages', 'index.module.css');
373
+ const content = generateIndexModuleCSS();
374
+ await fs.ensureDir(path.dirname(cssPath));
375
+ await fs.writeFile(cssPath, content, 'utf-8');
376
+ }
377
+ //# sourceMappingURL=config-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/config-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Main orchestrator for Docusaurus setup
3
+ * Coordinates all setup steps: install, config, sidebar, server launch
4
+ */
5
+ import { SetupOptions, ServerProcess } from './types.js';
6
+ /**
7
+ * Full Docusaurus setup workflow
8
+ */
9
+ export declare function setupDocusaurus(options: SetupOptions): Promise<void>;
10
+ /**
11
+ * Quick setup with defaults
12
+ */
13
+ export declare function quickSetup(projectRoot: string): Promise<void>;
14
+ /**
15
+ * Launch preview (setup if needed, then start server)
16
+ */
17
+ export declare function launchPreview(projectRoot: string, options?: {
18
+ port?: number;
19
+ openBrowser?: boolean;
20
+ force?: boolean;
21
+ }): Promise<ServerProcess>;
22
+ /**
23
+ * Build static site
24
+ */
25
+ export declare function buildStaticSite(projectRoot: string): Promise<void>;
26
+ /**
27
+ * Check if setup is needed
28
+ */
29
+ export declare function isSetupNeeded(projectRoot: string): Promise<boolean>;
30
+ /**
31
+ * Get docs site path
32
+ */
33
+ export declare function getDocsSitePath(projectRoot: string): string;
34
+ /**
35
+ * Get docs path
36
+ */
37
+ export declare function getDocsPath(projectRoot: string): string;
38
+ //# sourceMappingURL=docusaurus-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docusaurus-setup.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview/docusaurus-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAoB,aAAa,EAAE,MAAM,YAAY,CAAC;AAY3E;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BnE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACtE,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Main orchestrator for Docusaurus setup
3
+ * Coordinates all setup steps: install, config, sidebar, server launch
4
+ */
5
+ import * as path from 'path';
6
+ import * as fs from 'fs-extra';
7
+ import { checkNodeVersion, installDocusaurus, isDocusaurusInstalled } from './package-installer.js';
8
+ import { buildSidebar, writeSidebar, countDocuments, countCategories } from './sidebar-builder.js';
9
+ import { writeDocusaurusConfig, writePackageJSON, writeCustomCSS, writeIndexPage, writeIndexModuleCSS } from './config-generator.js';
10
+ import { startDevServer, findAvailablePort } from './server-manager.js';
11
+ /**
12
+ * Full Docusaurus setup workflow
13
+ */
14
+ export async function setupDocusaurus(options) {
15
+ const { projectRoot, targetDir, docsPath, config, force = false } = options;
16
+ console.log('šŸ“¦ Setting up Docusaurus documentation preview...\n');
17
+ // Step 1: Check Node.js version
18
+ console.log('1. Checking Node.js version...');
19
+ const nodeVersion = await checkNodeVersion();
20
+ if (!nodeVersion.compatible) {
21
+ throw new Error(`Node.js 18+ required (found: ${nodeVersion.version})\n` +
22
+ 'Install Node.js from: https://nodejs.org/');
23
+ }
24
+ console.log(` āœ… Node.js ${nodeVersion.version}\n`);
25
+ // Step 2: Check if already installed
26
+ if (!force && await isDocusaurusInstalled(targetDir)) {
27
+ console.log('āœ… Docusaurus already installed (use --force to reinstall)\n');
28
+ return;
29
+ }
30
+ // Step 3: Create target directory
31
+ console.log('2. Creating docs-site directory...');
32
+ await fs.ensureDir(targetDir);
33
+ console.log(' āœ… Directory created\n');
34
+ // Step 4: Generate package.json
35
+ console.log('3. Generating package.json...');
36
+ await writePackageJSON(targetDir, config.title);
37
+ console.log(' āœ… package.json created\n');
38
+ // Step 5: Install Docusaurus packages
39
+ console.log('4. Installing packages (this may take 30-60 seconds)...');
40
+ await installDocusaurus(targetDir);
41
+ console.log(' āœ… Installation complete\n');
42
+ // Step 6: Generate docusaurus.config.js
43
+ console.log('5. Generating docusaurus.config.js...');
44
+ await writeDocusaurusConfig(targetDir, config);
45
+ console.log(' āœ… Configuration generated\n');
46
+ // Step 7: Scan docs and generate sidebar
47
+ console.log('6. Scanning documentation folders...');
48
+ const sidebar = await buildSidebar({
49
+ docsPath,
50
+ excludeFolders: config.excludeFolders || ['legacy', 'node_modules'],
51
+ maxDepth: 5
52
+ });
53
+ const docCount = countDocuments(sidebar);
54
+ const catCount = countCategories(sidebar);
55
+ console.log(` āœ… Found ${docCount} documents in ${catCount} categories\n`);
56
+ // Step 8: Write sidebar
57
+ console.log('7. Generating sidebars.js...');
58
+ const sidebarPath = path.join(targetDir, 'sidebars.js');
59
+ await writeSidebar(sidebarPath, sidebar);
60
+ console.log(' āœ… Sidebar generated\n');
61
+ // Step 9: Create landing page
62
+ console.log('8. Creating landing page...');
63
+ await writeIndexPage(targetDir, config.title, config.tagline);
64
+ await writeIndexModuleCSS(targetDir);
65
+ console.log(' āœ… Landing page created\n');
66
+ // Step 10: Create custom CSS
67
+ console.log('9. Creating custom theme...');
68
+ await writeCustomCSS(targetDir, config.theme || 'default');
69
+ console.log(' āœ… Theme configured\n');
70
+ console.log('āœ… Setup complete!\n');
71
+ }
72
+ /**
73
+ * Quick setup with defaults
74
+ */
75
+ export async function quickSetup(projectRoot) {
76
+ const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
77
+ const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
78
+ // Check if docs exist
79
+ if (!await fs.pathExists(docsPath)) {
80
+ throw new Error('No documentation found.\n' +
81
+ 'Create documentation by completing your first increment:\n' +
82
+ ' /specweave:increment "your feature"');
83
+ }
84
+ const config = {
85
+ title: 'SpecWeave Documentation',
86
+ tagline: 'Spec-Driven Development Framework',
87
+ url: 'http://localhost',
88
+ baseUrl: '/',
89
+ docsPath: '../docs/internal',
90
+ port: 3000,
91
+ theme: 'default',
92
+ excludeFolders: ['legacy', 'node_modules']
93
+ };
94
+ await setupDocusaurus({
95
+ projectRoot,
96
+ targetDir,
97
+ docsPath,
98
+ config
99
+ });
100
+ }
101
+ /**
102
+ * Launch preview (setup if needed, then start server)
103
+ */
104
+ export async function launchPreview(projectRoot, options = {}) {
105
+ const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
106
+ const docsPath = path.join(projectRoot, '.specweave', 'docs', 'internal');
107
+ // Setup if not installed or force flag
108
+ if (options.force || !await isDocusaurusInstalled(targetDir)) {
109
+ await quickSetup(projectRoot);
110
+ }
111
+ // Find available port
112
+ const port = options.port || await findAvailablePort(3000, 3010);
113
+ console.log(`Starting server on port ${port}...`);
114
+ // Start dev server
115
+ const server = await startDevServer(targetDir, {
116
+ port,
117
+ openBrowser: options.openBrowser !== false
118
+ });
119
+ console.log(`\n🌐 Documentation available at: ${server.url}`);
120
+ console.log('šŸ”„ Hot reload enabled - edit docs and see changes instantly');
121
+ console.log('šŸ’” Press Ctrl+C to stop the server\n');
122
+ return server;
123
+ }
124
+ /**
125
+ * Build static site
126
+ */
127
+ export async function buildStaticSite(projectRoot) {
128
+ const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
129
+ // Check if installed
130
+ if (!await isDocusaurusInstalled(targetDir)) {
131
+ throw new Error('Docusaurus not installed.\n' +
132
+ 'Run: /specweave:docs preview (this will install it)');
133
+ }
134
+ console.log('šŸ“¦ Building static documentation site...\n');
135
+ const { spawn } = await import('child_process');
136
+ return new Promise((resolve, reject) => {
137
+ const buildProcess = spawn('npm', ['run', 'build'], {
138
+ cwd: targetDir,
139
+ stdio: 'inherit',
140
+ shell: true
141
+ });
142
+ buildProcess.on('close', (code) => {
143
+ if (code === 0) {
144
+ const buildPath = path.join(targetDir, 'build');
145
+ console.log('\nāœ… Build complete!');
146
+ console.log(`šŸ“ Output: ${buildPath}\n`);
147
+ resolve();
148
+ }
149
+ else {
150
+ reject(new Error(`Build failed with code ${code}`));
151
+ }
152
+ });
153
+ buildProcess.on('error', (error) => {
154
+ reject(new Error(`Failed to start build: ${error.message}`));
155
+ });
156
+ });
157
+ }
158
+ /**
159
+ * Check if setup is needed
160
+ */
161
+ export async function isSetupNeeded(projectRoot) {
162
+ const targetDir = path.join(projectRoot, '.specweave', 'docs-site');
163
+ return !(await isDocusaurusInstalled(targetDir));
164
+ }
165
+ /**
166
+ * Get docs site path
167
+ */
168
+ export function getDocsSitePath(projectRoot) {
169
+ return path.join(projectRoot, '.specweave', 'docs-site');
170
+ }
171
+ /**
172
+ * Get docs path
173
+ */
174
+ export function getDocsPath(projectRoot) {
175
+ return path.join(projectRoot, '.specweave', 'docs', 'internal');
176
+ }
177
+ //# sourceMappingURL=docusaurus-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docusaurus-setup.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/docusaurus-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Documentation preview utilities
3
+ * Main exports for Docusaurus setup and management
4
+ */
5
+ export { setupDocusaurus, quickSetup, launchPreview, buildStaticSite, isSetupNeeded, getDocsSitePath, getDocsPath } from './docusaurus-setup.js';
6
+ export { buildSidebar, writeSidebar, generateSidebarsJS, countDocuments, countCategories } from './sidebar-builder.js';
7
+ export { generateDocusaurusConfig, writeDocusaurusConfig, generatePackageJSON, writePackageJSON, generateCustomCSS, writeCustomCSS, generateIndexPage, writeIndexPage, generateIndexModuleCSS, writeIndexModuleCSS } from './config-generator.js';
8
+ export { checkNodeVersion, checkNpmInstalled, installPackages, installDocusaurus, isDocusaurusInstalled, cleanNpmCache, getPackageVersion, estimateInstallSize, estimateInstallTime } from './package-installer.js';
9
+ export { findAvailablePort, startDevServer, openBrowserUrl, killAllDocusaurusProcesses, isDocusaurusRunning, getServerUrl } from './server-manager.js';
10
+ export * from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/docs-preview/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAG7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Documentation preview utilities
3
+ * Main exports for Docusaurus setup and management
4
+ */
5
+ // Main orchestrator
6
+ export { setupDocusaurus, quickSetup, launchPreview, buildStaticSite, isSetupNeeded, getDocsSitePath, getDocsPath } from './docusaurus-setup.js';
7
+ // Sidebar builder
8
+ export { buildSidebar, writeSidebar, generateSidebarsJS, countDocuments, countCategories } from './sidebar-builder.js';
9
+ // Config generator
10
+ export { generateDocusaurusConfig, writeDocusaurusConfig, generatePackageJSON, writePackageJSON, generateCustomCSS, writeCustomCSS, generateIndexPage, writeIndexPage, generateIndexModuleCSS, writeIndexModuleCSS } from './config-generator.js';
11
+ // Package installer
12
+ export { checkNodeVersion, checkNpmInstalled, installPackages, installDocusaurus, isDocusaurusInstalled, cleanNpmCache, getPackageVersion, estimateInstallSize, estimateInstallTime } from './package-installer.js';
13
+ // Server manager
14
+ export { findAvailablePort, startDevServer, openBrowserUrl, killAllDocusaurusProcesses, isDocusaurusRunning, getServerUrl } from './server-manager.js';
15
+ // Types
16
+ export * from './types.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/docs-preview/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAE/B,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,iBAAiB;AACjB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,QAAQ;AACR,cAAc,YAAY,CAAC"}