agnosticui-cli 2.0.0-alpha.2 → 2.0.0-alpha.21

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 (52) hide show
  1. package/README.md +124 -1170
  2. package/dist/cli.js +70 -28
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +25 -34
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/context.d.ts +3 -0
  8. package/dist/commands/context.d.ts.map +1 -0
  9. package/dist/commands/context.js +243 -0
  10. package/dist/commands/context.js.map +1 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +145 -110
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/list.js +4 -4
  15. package/dist/commands/list.js.map +1 -1
  16. package/dist/commands/playbook.d.ts +3 -0
  17. package/dist/commands/playbook.d.ts.map +1 -0
  18. package/dist/commands/playbook.js +189 -0
  19. package/dist/commands/playbook.js.map +1 -0
  20. package/dist/commands/remove.js +2 -2
  21. package/dist/commands/remove.js.map +1 -1
  22. package/dist/commands/storybook.d.ts +3 -0
  23. package/dist/commands/storybook.d.ts.map +1 -0
  24. package/dist/commands/storybook.js +144 -0
  25. package/dist/commands/storybook.js.map +1 -0
  26. package/dist/commands/sync.d.ts +1 -4
  27. package/dist/commands/sync.d.ts.map +1 -1
  28. package/dist/commands/sync.js +41 -33
  29. package/dist/commands/sync.js.map +1 -1
  30. package/dist/commands/view.d.ts +3 -0
  31. package/dist/commands/view.d.ts.map +1 -0
  32. package/dist/commands/view.js +109 -0
  33. package/dist/commands/view.js.map +1 -0
  34. package/dist/types/index.d.ts +24 -2
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/utils/logger.d.ts +1 -0
  37. package/dist/utils/logger.d.ts.map +1 -1
  38. package/dist/utils/logger.js +3 -0
  39. package/dist/utils/logger.js.map +1 -1
  40. package/dist/utils/npm.d.ts +13 -0
  41. package/dist/utils/npm.d.ts.map +1 -0
  42. package/dist/utils/npm.js +62 -0
  43. package/dist/utils/npm.js.map +1 -0
  44. package/dist/utils/stories.d.ts +11 -0
  45. package/dist/utils/stories.d.ts.map +1 -0
  46. package/dist/utils/stories.js +661 -0
  47. package/dist/utils/stories.js.map +1 -0
  48. package/dist/utils/viewer.d.ts +4 -0
  49. package/dist/utils/viewer.d.ts.map +1 -0
  50. package/dist/utils/viewer.js +1067 -0
  51. package/dist/utils/viewer.js.map +1 -0
  52. package/package.json +7 -5
@@ -0,0 +1,109 @@
1
+ /**
2
+ * ag view command - Launch a lightweight component viewer for ejected components
3
+ */
4
+ import path from 'node:path';
5
+ import { existsSync } from 'node:fs';
6
+ import { rm } from 'node:fs/promises';
7
+ import { execSync, spawn } from 'node:child_process';
8
+ import * as p from '@clack/prompts';
9
+ import pc from 'picocolors';
10
+ import { loadConfig } from '../utils/config.js';
11
+ import { logger } from '../utils/logger.js';
12
+ import { ensureDir } from '../utils/files.js';
13
+ import { generateViewerApp } from '../utils/viewer.js';
14
+ const VIEWER_DIR = '.agnosticui-viewer';
15
+ const DEFAULT_PORT = 7173;
16
+ export async function view(options = {}) {
17
+ const port = options.port ?? DEFAULT_PORT;
18
+ const clean = options.clean ?? false;
19
+ const autoOpen = options.open ?? true;
20
+ p.intro(pc.bold(pc.cyan('AgnosticUI Component Viewer')));
21
+ // Require initialized project
22
+ const config = await loadConfig();
23
+ if (!config) {
24
+ logger.error('AgnosticUI is not initialized in this project.');
25
+ logger.info('Run ' + pc.cyan('npx agnosticui-cli init') + ' to get started.');
26
+ process.exit(1);
27
+ }
28
+ const installedComponents = Object.keys(config.components);
29
+ if (installedComponents.length === 0) {
30
+ logger.warn('No components installed yet.');
31
+ logger.info('Run ' + pc.cyan('npx agnosticui-cli add button') + ' to add components first.');
32
+ process.exit(0);
33
+ }
34
+ const cwd = process.cwd();
35
+ const viewerPath = path.join(cwd, VIEWER_DIR);
36
+ const nodeModulesPath = path.join(viewerPath, 'node_modules');
37
+ // --clean: nuke viewer directory and start fresh
38
+ if (clean && existsSync(viewerPath)) {
39
+ const spinner = p.spinner();
40
+ spinner.start('Cleaning viewer directory...');
41
+ await rm(viewerPath, { recursive: true, force: true });
42
+ spinner.stop(pc.green('✓') + ' Cleaned viewer directory');
43
+ }
44
+ await ensureDir(viewerPath);
45
+ await ensureDir(path.join(viewerPath, 'src'));
46
+ // Always regenerate app files (cheap — keeps component list current)
47
+ const genSpinner = p.spinner();
48
+ genSpinner.start('Generating viewer app...');
49
+ await generateViewerApp(config, viewerPath, cwd);
50
+ genSpinner.stop(pc.green('✓') + ' Viewer app ready');
51
+ // Install dependencies only when node_modules is absent (fast path on re-runs)
52
+ if (!existsSync(nodeModulesPath)) {
53
+ const installSpinner = p.spinner();
54
+ installSpinner.start('Installing viewer dependencies (first run only — subsequent runs skip this step)...');
55
+ try {
56
+ execSync('npm install', { cwd: viewerPath, stdio: 'pipe' });
57
+ installSpinner.stop(pc.green('✓') + ' Dependencies installed');
58
+ }
59
+ catch (err) {
60
+ installSpinner.stop(pc.red('✖') + ' Failed to install dependencies');
61
+ logger.error(`npm install failed: ${err instanceof Error ? err.message : String(err)}`);
62
+ logger.info('Try running ' + pc.cyan('ag view --clean') + ' to rebuild the viewer from scratch.');
63
+ process.exit(1);
64
+ }
65
+ }
66
+ else {
67
+ logger.info('Using cached dependencies. Run ' +
68
+ pc.cyan('ag view --clean') +
69
+ ' to rebuild from scratch.');
70
+ }
71
+ logger.newline();
72
+ logger.box('Component Viewer', [
73
+ pc.dim(`Framework: ${config.framework}`),
74
+ pc.dim(`Components: ${installedComponents.length}`),
75
+ '',
76
+ pc.green(`→ http://localhost:${port}`),
77
+ '',
78
+ pc.dim('Press Ctrl+C to stop'),
79
+ ]);
80
+ // Spawn Vite dev server inside the viewer directory
81
+ const viteProcess = spawn('npx', ['vite', '--port', String(port)], {
82
+ cwd: viewerPath,
83
+ stdio: 'inherit',
84
+ shell: true,
85
+ });
86
+ // Auto-open browser after a short startup delay
87
+ if (autoOpen) {
88
+ setTimeout(() => {
89
+ const url = `http://localhost:${port}`;
90
+ const openCmd = process.platform === 'darwin'
91
+ ? 'open'
92
+ : process.platform === 'win32'
93
+ ? 'start'
94
+ : 'xdg-open';
95
+ spawn(openCmd, [url], { shell: true, detached: true });
96
+ }, 1500);
97
+ }
98
+ // Clean exit on Ctrl+C / SIGTERM
99
+ const handleExit = () => {
100
+ viteProcess.kill();
101
+ process.exit(0);
102
+ };
103
+ process.on('SIGINT', handleExit);
104
+ process.on('SIGTERM', handleExit);
105
+ viteProcess.on('close', (code) => {
106
+ process.exit(code ?? 0);
107
+ });
108
+ }
109
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AgnosticUI CLI Types
3
3
  */
4
- export type Framework = 'react' | 'vue' | 'lit' | 'svelte';
4
+ export type Framework = 'react' | 'vue' | 'lit' | 'svelte' | 'other';
5
5
  export interface AgnosticUIConfig {
6
6
  $schema?: string;
7
7
  version: string;
@@ -50,7 +50,14 @@ export interface InitOptions {
50
50
  framework?: Framework;
51
51
  componentsPath?: string;
52
52
  tarball?: string;
53
- version?: string;
53
+ tag?: string;
54
+ skipPrompts?: boolean;
55
+ force?: boolean;
56
+ }
57
+ export interface SyncOptions {
58
+ tarball?: string;
59
+ force?: boolean;
60
+ tag?: string;
54
61
  }
55
62
  export interface AddOptions {
56
63
  force?: boolean;
@@ -58,4 +65,19 @@ export interface AddOptions {
58
65
  export interface RemoveOptions {
59
66
  force?: boolean;
60
67
  }
68
+ export interface PlaybookOptions {
69
+ framework?: string;
70
+ path?: string;
71
+ list?: boolean;
72
+ force?: boolean;
73
+ }
74
+ export interface ContextOptions {
75
+ output?: string;
76
+ format?: string;
77
+ }
78
+ export interface StorybookOptions {
79
+ port?: number;
80
+ open?: boolean;
81
+ skipInstall?: boolean;
82
+ }
61
83
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,EAAE,CAAC,EAAE;QACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,EAAE,CAAC,EAAE;QACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -6,6 +6,7 @@ export declare const logger: {
6
6
  step: (message: string) => void;
7
7
  box: (title: string, content: string[]) => void;
8
8
  command: (cmd: string) => string;
9
+ code: (snippet: string) => string;
9
10
  newline: () => void;
10
11
  };
11
12
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;oBACD,MAAM;uBAIH,MAAM;qBAIR,MAAM;oBAIP,MAAM;oBAIN,MAAM;iBAIT,MAAM,WAAW,MAAM,EAAE;mBAOvB,MAAM;;CAOtB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,MAAM;oBACD,MAAM;uBAIH,MAAM;qBAIR,MAAM;oBAIP,MAAM;oBAIN,MAAM;iBAIT,MAAM,WAAW,MAAM,EAAE;mBAOvB,MAAM;oBAIL,MAAM;;CAOvB,CAAC"}
@@ -27,6 +27,9 @@ export const logger = {
27
27
  command: (cmd) => {
28
28
  return pc.dim(' $ ' + cmd);
29
29
  },
30
+ code: (snippet) => {
31
+ return pc.dim(' ' + snippet);
32
+ },
30
33
  newline: () => {
31
34
  console.log('');
32
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,EAAE,CAAC,KAAa,EAAE,OAAiB,EAAE,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;QACvB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,EAAE,CAAC,KAAa,EAAE,OAAiB,EAAE,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;QACvB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QACxB,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Determine the tarball path: local dev tarball first, then NPM download.
3
+ *
4
+ * @param version NPM dist-tag or semver (e.g. 'alpha', 'latest', '2.0.0-alpha.21').
5
+ * Defaults to 'alpha'.
6
+ */
7
+ export declare function determineTarballPath(version?: string): Promise<string | null>;
8
+ /**
9
+ * Remove the temporary download directory created by determineTarballPath().
10
+ * Safe to call even if the directory does not exist.
11
+ */
12
+ export declare function cleanupTempDownload(): Promise<void>;
13
+ //# sourceMappingURL=npm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/utils/npm.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqC5F;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWzD"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * NPM tarball utilities shared by init and sync commands
3
+ */
4
+ import path from 'node:path';
5
+ import { existsSync } from 'node:fs';
6
+ import { ensureDir, pathExists } from './files.js';
7
+ import { logger } from './logger.js';
8
+ const LOCAL_TARBALL_PATH = path.resolve(process.cwd(), '../../dist/agnosticui-local-v2.0.0-alpha.tar.gz');
9
+ /**
10
+ * Determine the tarball path: local dev tarball first, then NPM download.
11
+ *
12
+ * @param version NPM dist-tag or semver (e.g. 'alpha', 'latest', '2.0.0-alpha.21').
13
+ * Defaults to 'alpha'.
14
+ */
15
+ export async function determineTarballPath(version = 'alpha') {
16
+ // Local development: prefer the pre-built tarball in the dist folder
17
+ if (existsSync(LOCAL_TARBALL_PATH)) {
18
+ logger.info('Using local development tarball');
19
+ return LOCAL_TARBALL_PATH;
20
+ }
21
+ // Production: download from NPM registry using npm pack
22
+ try {
23
+ const { execSync } = await import('child_process');
24
+ const { readdir, rm } = await import('node:fs/promises');
25
+ const tmpDir = path.join(process.cwd(), '.tmp-ag-download');
26
+ await ensureDir(tmpDir);
27
+ logger.info(`Downloading agnosticui-core@${version} from NPM...`);
28
+ execSync(`npm pack agnosticui-core@${version}`, {
29
+ cwd: tmpDir,
30
+ stdio: 'pipe',
31
+ });
32
+ const files = await readdir(tmpDir);
33
+ const tarball = files.find(f => f.startsWith('agnosticui-core-') && f.endsWith('.tgz'));
34
+ if (tarball) {
35
+ return path.join(tmpDir, tarball);
36
+ }
37
+ // No tarball found in temp dir — clean up
38
+ await rm(tmpDir, { recursive: true, force: true });
39
+ }
40
+ catch (error) {
41
+ logger.error('Failed to download agnosticui-core from NPM');
42
+ logger.info(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * Remove the temporary download directory created by determineTarballPath().
48
+ * Safe to call even if the directory does not exist.
49
+ */
50
+ export async function cleanupTempDownload() {
51
+ try {
52
+ const { rm } = await import('node:fs/promises');
53
+ const tmpDir = path.join(process.cwd(), '.tmp-ag-download');
54
+ if (pathExists(tmpDir)) {
55
+ await rm(tmpDir, { recursive: true, force: true });
56
+ }
57
+ }
58
+ catch {
59
+ // Cleanup errors are non-critical — ignore
60
+ }
61
+ }
62
+ //# sourceMappingURL=npm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/utils/npm.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iDAAiD,CAAC,CAAC;AAE1G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB,OAAO;IAClE,qEAAqE;IACrE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAE5D,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,+BAA+B,OAAO,cAAc,CAAC,CAAC;QAElE,QAAQ,CAAC,4BAA4B,OAAO,EAAE,EAAE;YAC9C,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAExF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,0CAA0C;QAC1C,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAE5D,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Story file generation utilities for `ag storybook`
3
+ *
4
+ * Generates Storybook config files (.storybook/main.ts, .storybook/preview.ts)
5
+ * and per-component story files (.stories.tsx) for React projects.
6
+ */
7
+ import type { Framework } from '../types/index.js';
8
+ export declare function generateStorybookMain(framework: Framework): string;
9
+ export declare function generateStorybookPreview(framework: Framework, componentsRelPath: string): string;
10
+ export declare function generateReactStory(name: string): string;
11
+ //# sourceMappingURL=stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stories.d.ts","sourceRoot":"","sources":["../../src/utils/stories.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAyBnD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAuClE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAmChG;AA4ZD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwKvD"}