magicpath-ai 1.4.1 → 1.5.0-beta.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 (88) hide show
  1. package/dist/cli.js +137 -52
  2. package/package.json +6 -7
  3. package/dist/cli.d.ts +0 -2
  4. package/dist/cli.js.map +0 -1
  5. package/dist/commands/add.d.ts +0 -48
  6. package/dist/commands/add.js +0 -451
  7. package/dist/commands/add.js.map +0 -1
  8. package/dist/commands/auth.d.ts +0 -7
  9. package/dist/commands/auth.js +0 -189
  10. package/dist/commands/auth.js.map +0 -1
  11. package/dist/commands/clone.d.ts +0 -2
  12. package/dist/commands/clone.js +0 -241
  13. package/dist/commands/clone.js.map +0 -1
  14. package/dist/commands/get-theme.d.ts +0 -2
  15. package/dist/commands/get-theme.js +0 -132
  16. package/dist/commands/get-theme.js.map +0 -1
  17. package/dist/commands/info.d.ts +0 -2
  18. package/dist/commands/info.js +0 -134
  19. package/dist/commands/info.js.map +0 -1
  20. package/dist/commands/inspect.d.ts +0 -53
  21. package/dist/commands/inspect.js +0 -122
  22. package/dist/commands/inspect.js.map +0 -1
  23. package/dist/commands/list-installed.d.ts +0 -2
  24. package/dist/commands/list-installed.js +0 -112
  25. package/dist/commands/list-installed.js.map +0 -1
  26. package/dist/commands/list-themes.d.ts +0 -2
  27. package/dist/commands/list-themes.js +0 -94
  28. package/dist/commands/list-themes.js.map +0 -1
  29. package/dist/commands/list.d.ts +0 -2
  30. package/dist/commands/list.js +0 -216
  31. package/dist/commands/list.js.map +0 -1
  32. package/dist/commands/schema.d.ts +0 -2
  33. package/dist/commands/schema.js +0 -292
  34. package/dist/commands/schema.js.map +0 -1
  35. package/dist/commands/search.d.ts +0 -2
  36. package/dist/commands/search.js +0 -124
  37. package/dist/commands/search.js.map +0 -1
  38. package/dist/commands/selection.d.ts +0 -2
  39. package/dist/commands/selection.js +0 -157
  40. package/dist/commands/selection.js.map +0 -1
  41. package/dist/commands/setup-skills.d.ts +0 -2
  42. package/dist/commands/setup-skills.js +0 -13
  43. package/dist/commands/setup-skills.js.map +0 -1
  44. package/dist/commands/view.d.ts +0 -2
  45. package/dist/commands/view.js +0 -27
  46. package/dist/commands/view.js.map +0 -1
  47. package/dist/commands/whoami.d.ts +0 -2
  48. package/dist/commands/whoami.js +0 -66
  49. package/dist/commands/whoami.js.map +0 -1
  50. package/dist/util/api.d.ts +0 -17
  51. package/dist/util/api.js +0 -49
  52. package/dist/util/api.js.map +0 -1
  53. package/dist/util/auth.d.ts +0 -26
  54. package/dist/util/auth.js +0 -113
  55. package/dist/util/auth.js.map +0 -1
  56. package/dist/util/authError.d.ts +0 -4
  57. package/dist/util/authError.js +0 -7
  58. package/dist/util/authError.js.map +0 -1
  59. package/dist/util/banner.d.ts +0 -1
  60. package/dist/util/banner.js +0 -79
  61. package/dist/util/banner.js.map +0 -1
  62. package/dist/util/component.d.ts +0 -186
  63. package/dist/util/component.js +0 -349
  64. package/dist/util/component.js.map +0 -1
  65. package/dist/util/dependencies.d.ts +0 -12
  66. package/dist/util/dependencies.js +0 -93
  67. package/dist/util/dependencies.js.map +0 -1
  68. package/dist/util/error.d.ts +0 -9
  69. package/dist/util/error.js +0 -10
  70. package/dist/util/error.js.map +0 -1
  71. package/dist/util/ide.d.ts +0 -3
  72. package/dist/util/ide.js +0 -145
  73. package/dist/util/ide.js.map +0 -1
  74. package/dist/util/liveblocks.d.ts +0 -24
  75. package/dist/util/liveblocks.js +0 -112
  76. package/dist/util/liveblocks.js.map +0 -1
  77. package/dist/util/logger.d.ts +0 -7
  78. package/dist/util/logger.js +0 -21
  79. package/dist/util/logger.js.map +0 -1
  80. package/dist/util/output.d.ts +0 -15
  81. package/dist/util/output.js +0 -36
  82. package/dist/util/output.js.map +0 -1
  83. package/dist/util/project.d.ts +0 -3
  84. package/dist/util/project.js +0 -64
  85. package/dist/util/project.js.map +0 -1
  86. package/dist/util/ui.d.ts +0 -11
  87. package/dist/util/ui.js +0 -30
  88. package/dist/util/ui.js.map +0 -1
@@ -1,134 +0,0 @@
1
- import axios from 'axios';
2
- import { readFileSync } from 'fs';
3
- import { getAuthHeaders, loadTokens, cacheUserFromResponse, } from '../util/auth.js';
4
- import { getUserUrl, getUserProjectsUrl } from '../util/api.js';
5
- import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
6
- const pkg = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8'));
7
- export function registerInfoCommand(program) {
8
- program
9
- .command('info')
10
- .description('Show project and auth status (useful for agent context injection)')
11
- .action(async () => {
12
- const json = isJsonMode();
13
- try {
14
- // Determine auth method
15
- let authMethod = null;
16
- let authenticated = false;
17
- let headers = null;
18
- if (process.env.MAGICPATH_TOKEN) {
19
- authMethod = 'environment';
20
- authenticated = true;
21
- headers = getAuthHeaders();
22
- }
23
- else if (loadTokens()) {
24
- authMethod = 'stored';
25
- authenticated = true;
26
- headers = getAuthHeaders();
27
- }
28
- // Fetch user info
29
- let user = null;
30
- if (authenticated && headers) {
31
- try {
32
- const response = await axios.get(getUserUrl(), { headers });
33
- const u = response.data.user ?? response.data;
34
- const cached = cacheUserFromResponse(u);
35
- user = {
36
- id: u.id,
37
- name: cached.name ?? 'Unknown',
38
- email: cached.email ?? '',
39
- };
40
- }
41
- catch {
42
- // user fetch failed, leave null
43
- }
44
- }
45
- // Fetch projects
46
- let projects = null;
47
- if (authenticated && headers) {
48
- try {
49
- const response = await axios.get(`${getUserProjectsUrl()}?slim=true`, { headers });
50
- const raw = response.data.data?.projects ??
51
- response.data.projects ??
52
- response.data;
53
- if (Array.isArray(raw)) {
54
- projects = raw.map((p) => ({
55
- id: p.id,
56
- name: p.name,
57
- componentCount: p.componentCount ?? p._count?.components ?? 0,
58
- }));
59
- }
60
- }
61
- catch {
62
- // projects fetch failed, leave null
63
- }
64
- }
65
- const result = {
66
- auth: {
67
- authenticated,
68
- method: authMethod,
69
- user,
70
- },
71
- projects,
72
- cli: {
73
- version: pkg.version,
74
- commands: [
75
- 'add',
76
- 'view',
77
- 'search',
78
- 'inspect',
79
- 'list-projects',
80
- 'list-components',
81
- 'list-themes',
82
- 'get-theme',
83
- 'list-installed',
84
- 'selection',
85
- 'login',
86
- 'logout',
87
- 'whoami',
88
- 'info',
89
- 'clone',
90
- 'setup-skills',
91
- 'schema',
92
- ],
93
- },
94
- };
95
- if (json) {
96
- jsonResult(result);
97
- }
98
- // Human-readable output
99
- console.log('');
100
- console.log(` MagicPath CLI v${pkg.version}`);
101
- console.log('');
102
- if (authenticated && user) {
103
- console.log(` Authenticated: yes (${authMethod})`);
104
- console.log(` User: ${user.name} <${user.email}>`);
105
- }
106
- else if (authenticated) {
107
- console.log(` Authenticated: yes (${authMethod})`);
108
- console.log(' User: (could not fetch)');
109
- }
110
- else {
111
- console.log(' Authenticated: no');
112
- console.log(' Run `magicpath-ai login` to authenticate.');
113
- }
114
- console.log('');
115
- if (projects && projects.length > 0) {
116
- console.log(` Projects: ${projects.length}`);
117
- for (const p of projects) {
118
- console.log(` - ${p.name} (${p.componentCount} components)`);
119
- }
120
- }
121
- else if (authenticated) {
122
- console.log(' Projects: none');
123
- }
124
- console.log('');
125
- }
126
- catch (err) {
127
- if (json)
128
- jsonError(err);
129
- console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
130
- process.exit(1);
131
- }
132
- });
133
- }
134
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import type { Command } from 'commander';
2
- import { z } from 'zod';
3
- export declare const inspectInputSchema: z.ZodObject<{
4
- generatedName: z.ZodString;
5
- }, "strip", z.ZodTypeAny, {
6
- generatedName: string;
7
- }, {
8
- generatedName: string;
9
- }>;
10
- export declare const inspectOutputSchema: z.ZodObject<{
11
- component: z.ZodString;
12
- generatedName: z.ZodString;
13
- files: z.ZodArray<z.ZodObject<{
14
- path: z.ZodString;
15
- name: z.ZodString;
16
- content: z.ZodString;
17
- }, "strip", z.ZodTypeAny, {
18
- name: string;
19
- path: string;
20
- content: string;
21
- }, {
22
- name: string;
23
- path: string;
24
- content: string;
25
- }>, "many">;
26
- dependencies: z.ZodArray<z.ZodString, "many">;
27
- importStatement: z.ZodOptional<z.ZodString>;
28
- usage: z.ZodOptional<z.ZodString>;
29
- }, "strip", z.ZodTypeAny, {
30
- generatedName: string;
31
- files: {
32
- name: string;
33
- path: string;
34
- content: string;
35
- }[];
36
- dependencies: string[];
37
- component: string;
38
- importStatement?: string | undefined;
39
- usage?: string | undefined;
40
- }, {
41
- generatedName: string;
42
- files: {
43
- name: string;
44
- path: string;
45
- content: string;
46
- }[];
47
- dependencies: string[];
48
- component: string;
49
- importStatement?: string | undefined;
50
- usage?: string | undefined;
51
- }>;
52
- export type InspectOutput = z.infer<typeof inspectOutputSchema>;
53
- export declare function registerInspectCommand(program: Command): void;
@@ -1,122 +0,0 @@
1
- import { z } from 'zod';
2
- import { enableDebugLogger, logger } from '../util/logger.js';
3
- import { MagicPathError } from '../util/error.js';
4
- import { AuthRequiredError } from '../util/authError.js';
5
- import { brandSpinner } from '../util/ui.js';
6
- import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
7
- import { fetchComponent, sanitizeComponentFolderName, extractComponentExports, generateImportStatement, generateUsageExample, } from '../util/component.js';
8
- export const inspectInputSchema = z.object({
9
- generatedName: z
10
- .string()
11
- .describe('The generated name of the component (e.g., wispy-river-5234)'),
12
- });
13
- export const inspectOutputSchema = z.object({
14
- component: z.string().describe('Component display name'),
15
- generatedName: z.string().describe('Component generated name'),
16
- files: z
17
- .array(z.object({
18
- path: z.string(),
19
- name: z.string(),
20
- content: z.string(),
21
- }))
22
- .describe('Component source files'),
23
- dependencies: z.array(z.string()).describe('Required packages'),
24
- importStatement: z
25
- .string()
26
- .optional()
27
- .describe('Import statement for the component'),
28
- usage: z.string().optional().describe('JSX usage example'),
29
- });
30
- export function registerInspectCommand(program) {
31
- program
32
- .command('inspect')
33
- .description("Inspect a MagicPath component's source code without installing")
34
- .argument('<generatedName>', 'Generated name of the component (e.g., wispy-river-5234)')
35
- .option('-d, --debug', 'Enable debug logging', false)
36
- .action(async (generatedName, options) => {
37
- try {
38
- if (options.debug)
39
- enableDebugLogger();
40
- const json = isJsonMode();
41
- logger.debug({ generatedName, options });
42
- // Fetch component from registry
43
- const fetchSpinner = json
44
- ? null
45
- : brandSpinner(`Fetching component "${generatedName}"...`).start();
46
- let componentData;
47
- try {
48
- componentData = await fetchComponent(generatedName);
49
- fetchSpinner?.succeed(`Found component: ${componentData.name}`);
50
- }
51
- catch (err) {
52
- fetchSpinner?.fail('Failed to fetch component');
53
- if (err instanceof AuthRequiredError) {
54
- throw new MagicPathError('Not authenticated. Set MAGICPATH_TOKEN or run `magicpath-ai login`.', {
55
- code: 'NOT_AUTHENTICATED',
56
- suggestion: 'Run `magicpath-ai login` or set the MAGICPATH_TOKEN environment variable.',
57
- });
58
- }
59
- if (err instanceof MagicPathError) {
60
- throw err;
61
- }
62
- throw new MagicPathError('Something went wrong!');
63
- }
64
- // Build import/usage info
65
- const componentFolderName = sanitizeComponentFolderName(componentData.name);
66
- const mainFile = componentData.files[0];
67
- let importStatement;
68
- let usageStr;
69
- if (mainFile) {
70
- const fileName = mainFile.name.replace(/\.tsx?$/, '');
71
- const importPath = `@/components/magicpath/${componentFolderName}/${fileName}`;
72
- const exportInfo = extractComponentExports(mainFile.content);
73
- if (exportInfo) {
74
- importStatement = generateImportStatement(exportInfo, importPath);
75
- usageStr = generateUsageExample(exportInfo);
76
- }
77
- else {
78
- importStatement = `import { ${fileName} } from '${importPath}';`;
79
- }
80
- }
81
- const files = componentData.files.map((f) => ({
82
- path: f.path,
83
- name: f.name,
84
- content: f.content,
85
- }));
86
- // JSON output
87
- if (json) {
88
- jsonResult({
89
- component: componentData.name,
90
- generatedName: componentData.generatedName,
91
- files,
92
- dependencies: componentData.dependencies,
93
- importStatement,
94
- usage: usageStr,
95
- });
96
- return;
97
- }
98
- // Human-readable output
99
- console.log(`\n Component: ${componentData.name}`);
100
- console.log(` Files: ${componentData.files.map((f) => f.path).join(', ')}`);
101
- console.log(` Dependencies: ${componentData.dependencies.join(', ') || 'none'}`);
102
- if (importStatement)
103
- console.log(` Import: ${importStatement}`);
104
- for (const f of componentData.files) {
105
- console.log(`\n${'─'.repeat(60)}`);
106
- console.log(` ${f.path}`);
107
- console.log(`${'─'.repeat(60)}`);
108
- console.log(f.content);
109
- }
110
- }
111
- catch (err) {
112
- if (isJsonMode())
113
- jsonError(err);
114
- if (err instanceof MagicPathError) {
115
- console.error(`\n${err.message}`);
116
- process.exit(1);
117
- }
118
- throw err;
119
- }
120
- });
121
- }
122
- //# sourceMappingURL=inspect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,8DAA8D,CAAC;CAC5E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC9D,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH;SACA,QAAQ,CAAC,wBAAwB,CAAC;IACrC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC/D,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CAC3D,CAAC,CAAC;AAIH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,gEAAgE,CACjE;SACA,QAAQ,CACP,iBAAiB,EACjB,0DAA0D,CAC3D;SACA,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,aAAqB,EAAE,OAA4B,EAAE,EAAE;QACpE,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,KAAK;gBAAE,iBAAiB,EAAE,CAAC;YAEvC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;YAE1B,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;YAEzC,gCAAgC;YAChC,MAAM,YAAY,GAAG,IAAI;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY,CAAC,uBAAuB,aAAa,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAErE,IAAI,aAAa,CAAC;YAClB,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;gBACpD,YAAY,EAAE,OAAO,CAAC,oBAAoB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,YAAY,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAChD,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;oBACrC,MAAM,IAAI,cAAc,CACtB,qEAAqE,EACrE;wBACE,IAAI,EAAE,mBAAmB;wBACzB,UAAU,EACR,2EAA2E;qBAC9E,CACF,CAAC;gBACJ,CAAC;gBACD,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;oBAClC,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,MAAM,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAC;YACpD,CAAC;YAED,0BAA0B;YAC1B,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,aAAa,CAAC,IAAI,CACnB,CAAC;YACF,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,eAAmC,CAAC;YACxC,IAAI,QAA4B,CAAC;YAEjC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,0BAA0B,mBAAmB,IAAI,QAAQ,EAAE,CAAC;gBAC/E,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,UAAU,EAAE,CAAC;oBACf,eAAe,GAAG,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBAClE,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,YAAY,QAAQ,YAAY,UAAU,IAAI,CAAC;gBACnE,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;YAEJ,cAAc;YACd,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC;oBACT,SAAS,EAAE,aAAa,CAAC,IAAI;oBAC7B,aAAa,EAAE,aAAa,CAAC,aAAa;oBAC1C,KAAK;oBACL,YAAY,EAAE,aAAa,CAAC,YAAY;oBACxC,eAAe;oBACf,KAAK,EAAE,QAAQ;iBAChB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,wBAAwB;YACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CACT,YAAY,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;YACF,OAAO,CAAC,GAAG,CACT,mBAAmB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CACrE,CAAC;YACF,IAAI,eAAe;gBAAE,OAAO,CAAC,GAAG,CAAC,aAAa,eAAe,EAAE,CAAC,CAAC;YAEjE,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,EAAE;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerListInstalledCommand(program: Command): void;
@@ -1,112 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs-extra';
3
- import { MagicPathError } from '../util/error.js';
4
- import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
5
- import { resolveComponentsPath, extractComponentExports, DEFAULT_COMPONENTS_PATH, } from '../util/component.js';
6
- /**
7
- * Scan the magicpath components directory and return metadata
8
- * about each installed component.
9
- */
10
- function scanInstalledComponents(componentsPath, cwd) {
11
- if (!fs.existsSync(componentsPath)) {
12
- return [];
13
- }
14
- const entries = fs.readdirSync(componentsPath, { withFileTypes: true });
15
- const components = [];
16
- for (const entry of entries) {
17
- if (!entry.isDirectory())
18
- continue;
19
- const componentDir = path.join(componentsPath, entry.name);
20
- const files = fs
21
- .readdirSync(componentDir)
22
- .filter((f) => !fs.statSync(path.join(componentDir, f)).isDirectory());
23
- // Find the main TSX/TS file (first non-usage, non-test file)
24
- const mainFile = files.find((f) => (f.endsWith('.tsx') || f.endsWith('.ts')) &&
25
- f !== 'usage.md' &&
26
- !f.includes('.test.') &&
27
- !f.includes('.spec.'));
28
- let exportName = null;
29
- let importStatement = null;
30
- if (mainFile) {
31
- try {
32
- const content = fs.readFileSync(path.join(componentDir, mainFile), 'utf8');
33
- const exportInfo = extractComponentExports(content);
34
- if (exportInfo) {
35
- exportName = exportInfo.name;
36
- const fileName = mainFile.replace(/\.tsx?$/, '');
37
- const importPath = `@/components/magicpath/${entry.name}/${fileName}`;
38
- if (exportInfo.isDefault) {
39
- importStatement = `import ${exportInfo.name} from '${importPath}';`;
40
- }
41
- else {
42
- importStatement = `import { ${exportInfo.name} } from '${importPath}';`;
43
- }
44
- }
45
- }
46
- catch {
47
- // Ignore read errors
48
- }
49
- }
50
- components.push({
51
- name: exportName || entry.name,
52
- folder: entry.name,
53
- path: path.relative(cwd, componentDir),
54
- files: files.filter((f) => f !== 'usage.md'),
55
- exportName,
56
- importStatement,
57
- });
58
- }
59
- return components;
60
- }
61
- export function registerListInstalledCommand(program) {
62
- program
63
- .command('list-installed')
64
- .description('List MagicPath components installed in the current project')
65
- .option('-p, --path <path>', `Custom components path (default: ${DEFAULT_COMPONENTS_PATH})`)
66
- .action(async (options) => {
67
- const json = isJsonMode();
68
- try {
69
- const cwd = process.cwd();
70
- const componentsPath = resolveComponentsPath(options.path, cwd);
71
- if (!fs.existsSync(componentsPath)) {
72
- if (json) {
73
- jsonResult({ components: [], total: 0 });
74
- }
75
- console.log(`\n No MagicPath components found at ${path.relative(cwd, componentsPath) || componentsPath}`);
76
- return;
77
- }
78
- const components = scanInstalledComponents(componentsPath, cwd);
79
- if (json) {
80
- jsonResult({
81
- components,
82
- total: components.length,
83
- componentsPath: path.relative(cwd, componentsPath),
84
- });
85
- }
86
- if (components.length === 0) {
87
- console.log('\n No MagicPath components installed.');
88
- return;
89
- }
90
- // Table output
91
- console.log(`\n ${components.length} component(s) installed in ${path.relative(cwd, componentsPath)}:\n`);
92
- const nameWidth = Math.max(9, ...components.map((c) => c.name.length));
93
- const folderWidth = Math.max(6, ...components.map((c) => c.folder.length));
94
- const filesWidth = 5;
95
- console.log(` ${'Component'.padEnd(nameWidth)} ${'Folder'.padEnd(folderWidth)} ${'Files'.padEnd(filesWidth)}`);
96
- console.log(` ${'─'.repeat(nameWidth)} ${'─'.repeat(folderWidth)} ${'─'.repeat(filesWidth)}`);
97
- for (const c of components) {
98
- console.log(` ${c.name.padEnd(nameWidth)} ${c.folder.padEnd(folderWidth)} ${String(c.files.length).padEnd(filesWidth)}`);
99
- }
100
- }
101
- catch (err) {
102
- if (json)
103
- jsonError(err);
104
- if (err instanceof MagicPathError) {
105
- console.error(`\n${err.message}`);
106
- process.exit(1);
107
- }
108
- throw err;
109
- }
110
- });
111
- }
112
- //# sourceMappingURL=list-installed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-installed.js","sourceRoot":"","sources":["../../src/commands/list-installed.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerListThemesCommand(program: Command): void;
@@ -1,94 +0,0 @@
1
- import axios from 'axios';
2
- import { brandSpinner } from '../util/ui.js';
3
- import { MagicPathError } from '../util/error.js';
4
- import { getAuthHeaders } from '../util/auth.js';
5
- import { getUserDesignSystemsUrl } from '../util/api.js';
6
- import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
7
- export function registerListThemesCommand(program) {
8
- program
9
- .command('list-themes')
10
- .description('List all themes (design systems) for the current user')
11
- .action(async () => {
12
- const json = isJsonMode();
13
- try {
14
- let headers;
15
- try {
16
- headers = getAuthHeaders();
17
- }
18
- catch {
19
- throw new MagicPathError('Not authenticated. Set MAGICPATH_TOKEN or run `magicpath-ai login`.', {
20
- code: 'NOT_AUTHENTICATED',
21
- suggestion: 'Run `magicpath-ai login` or set the MAGICPATH_TOKEN environment variable.',
22
- });
23
- }
24
- const spinner = json
25
- ? null
26
- : brandSpinner('Fetching themes...').start();
27
- try {
28
- const response = await axios.get(getUserDesignSystemsUrl(), {
29
- headers,
30
- });
31
- const allThemes = response.data.data?.design_systems ??
32
- response.data.design_systems ??
33
- response.data;
34
- const themes = Array.isArray(allThemes) ? allThemes : [];
35
- spinner?.succeed(`Found ${themes.length} theme(s)`);
36
- if (json) {
37
- jsonResult({
38
- themes: themes.map((t) => ({
39
- id: String(t.id),
40
- name: t.name,
41
- isPublic: t.isPublic,
42
- createdAt: t.createdAt,
43
- updatedAt: t.updatedAt,
44
- })),
45
- });
46
- }
47
- if (themes.length === 0) {
48
- console.log('\n No themes found.');
49
- return;
50
- }
51
- // Table output
52
- console.log('');
53
- const nameWidth = Math.max(4, ...themes.map((t) => (t.name || '').length));
54
- const idWidth = Math.max(2, ...themes.map((t) => String(t.id).length));
55
- const publicWidth = 6;
56
- const updatedWidth = 10;
57
- console.log(` ${'Name'.padEnd(nameWidth)} ${'ID'.padEnd(idWidth)} ${'Public'.padEnd(publicWidth)} Updated`);
58
- console.log(` ${'─'.repeat(nameWidth)} ${'─'.repeat(idWidth)} ${'─'.repeat(publicWidth)} ${'─'.repeat(updatedWidth)}`);
59
- for (const t of themes) {
60
- const name = (t.name || '').padEnd(nameWidth);
61
- const id = String(t.id).padEnd(idWidth);
62
- const isPublic = (t.isPublic ? 'yes' : 'no').padEnd(publicWidth);
63
- const updated = t.updatedAt
64
- ? new Date(t.updatedAt).toISOString().slice(0, 10)
65
- : '';
66
- console.log(` ${name} ${id} ${isPublic} ${updated}`);
67
- }
68
- }
69
- catch (err) {
70
- spinner?.fail('Failed to fetch themes');
71
- if (axios.isAxiosError(err)) {
72
- if (err.response?.status === 401) {
73
- throw new MagicPathError('Token is invalid or expired. Run `magicpath-ai login`.', {
74
- code: 'TOKEN_EXPIRED',
75
- suggestion: 'Run `magicpath-ai login` to re-authenticate.',
76
- });
77
- }
78
- throw new MagicPathError(`API error: ${err.response?.status}`);
79
- }
80
- throw err;
81
- }
82
- }
83
- catch (err) {
84
- if (json)
85
- jsonError(err);
86
- if (err instanceof MagicPathError) {
87
- console.error(`\n${err.message}`);
88
- process.exit(1);
89
- }
90
- throw err;
91
- }
92
- });
93
- }
94
- //# sourceMappingURL=list-themes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-themes.js","sourceRoot":"","sources":["../../src/commands/list-themes.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerListCommands(program: Command): void;