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.
- package/dist/cli.js +137 -52
- package/package.json +6 -7
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js.map +0 -1
- package/dist/commands/add.d.ts +0 -48
- package/dist/commands/add.js +0 -451
- package/dist/commands/add.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -7
- package/dist/commands/auth.js +0 -189
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/clone.d.ts +0 -2
- package/dist/commands/clone.js +0 -241
- package/dist/commands/clone.js.map +0 -1
- package/dist/commands/get-theme.d.ts +0 -2
- package/dist/commands/get-theme.js +0 -132
- package/dist/commands/get-theme.js.map +0 -1
- package/dist/commands/info.d.ts +0 -2
- package/dist/commands/info.js +0 -134
- package/dist/commands/info.js.map +0 -1
- package/dist/commands/inspect.d.ts +0 -53
- package/dist/commands/inspect.js +0 -122
- package/dist/commands/inspect.js.map +0 -1
- package/dist/commands/list-installed.d.ts +0 -2
- package/dist/commands/list-installed.js +0 -112
- package/dist/commands/list-installed.js.map +0 -1
- package/dist/commands/list-themes.d.ts +0 -2
- package/dist/commands/list-themes.js +0 -94
- package/dist/commands/list-themes.js.map +0 -1
- package/dist/commands/list.d.ts +0 -2
- package/dist/commands/list.js +0 -216
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/schema.d.ts +0 -2
- package/dist/commands/schema.js +0 -292
- package/dist/commands/schema.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.js +0 -124
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/selection.d.ts +0 -2
- package/dist/commands/selection.js +0 -157
- package/dist/commands/selection.js.map +0 -1
- package/dist/commands/setup-skills.d.ts +0 -2
- package/dist/commands/setup-skills.js +0 -13
- package/dist/commands/setup-skills.js.map +0 -1
- package/dist/commands/view.d.ts +0 -2
- package/dist/commands/view.js +0 -27
- package/dist/commands/view.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.js +0 -66
- package/dist/commands/whoami.js.map +0 -1
- package/dist/util/api.d.ts +0 -17
- package/dist/util/api.js +0 -49
- package/dist/util/api.js.map +0 -1
- package/dist/util/auth.d.ts +0 -26
- package/dist/util/auth.js +0 -113
- package/dist/util/auth.js.map +0 -1
- package/dist/util/authError.d.ts +0 -4
- package/dist/util/authError.js +0 -7
- package/dist/util/authError.js.map +0 -1
- package/dist/util/banner.d.ts +0 -1
- package/dist/util/banner.js +0 -79
- package/dist/util/banner.js.map +0 -1
- package/dist/util/component.d.ts +0 -186
- package/dist/util/component.js +0 -349
- package/dist/util/component.js.map +0 -1
- package/dist/util/dependencies.d.ts +0 -12
- package/dist/util/dependencies.js +0 -93
- package/dist/util/dependencies.js.map +0 -1
- package/dist/util/error.d.ts +0 -9
- package/dist/util/error.js +0 -10
- package/dist/util/error.js.map +0 -1
- package/dist/util/ide.d.ts +0 -3
- package/dist/util/ide.js +0 -145
- package/dist/util/ide.js.map +0 -1
- package/dist/util/liveblocks.d.ts +0 -24
- package/dist/util/liveblocks.js +0 -112
- package/dist/util/liveblocks.js.map +0 -1
- package/dist/util/logger.d.ts +0 -7
- package/dist/util/logger.js +0 -21
- package/dist/util/logger.js.map +0 -1
- package/dist/util/output.d.ts +0 -15
- package/dist/util/output.js +0 -36
- package/dist/util/output.js.map +0 -1
- package/dist/util/project.d.ts +0 -3
- package/dist/util/project.js +0 -64
- package/dist/util/project.js.map +0 -1
- package/dist/util/ui.d.ts +0 -11
- package/dist/util/ui.js +0 -30
- package/dist/util/ui.js.map +0 -1
package/dist/commands/info.js
DELETED
|
@@ -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;
|
package/dist/commands/inspect.js
DELETED
|
@@ -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":"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"}
|
|
@@ -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":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAW9B;;;GAGG;AACH,SAAS,uBAAuB,CAC9B,cAAsB,EACtB,GAAW;IAEX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAyB,EAAE,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,EAAE;aACb,WAAW,CAAC,YAAY,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAEzE,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC,KAAK,UAAU;YAChB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACxB,CAAC;QAEF,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,eAAe,GAAkB,IAAI,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EACjC,MAAM,CACP,CAAC;gBACF,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBACpD,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;oBAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACjD,MAAM,UAAU,GAAG,0BAA0B,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;oBACtE,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;wBACzB,eAAe,GAAG,UAAU,UAAU,CAAC,IAAI,UAAU,UAAU,IAAI,CAAC;oBACtE,CAAC;yBAAM,CAAC;wBACN,eAAe,GAAG,YAAY,UAAU,CAAC,IAAI,YAAY,UAAU,IAAI,CAAC;oBAC1E,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QAED,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,UAAU,IAAI,KAAK,CAAC,IAAI;YAC9B,MAAM,EAAE,KAAK,CAAC,IAAI;YAClB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;YACtC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC;YAC5C,UAAU;YACV,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CACL,mBAAmB,EACnB,oCAAoC,uBAAuB,GAAG,CAC/D;SACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAEhE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,IAAI,IAAI,EAAE,CAAC;oBACT,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,CAAC,GAAG,CACT,wCAAwC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,cAAc,EAAE,CAC/F,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAEhE,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC;oBACT,UAAU;oBACV,KAAK,EAAE,UAAU,CAAC,MAAM;oBACxB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;iBACnD,CAAC,CAAC;YACL,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,eAAe;YACf,OAAO,CAAC,GAAG,CACT,OAAO,UAAU,CAAC,MAAM,8BAA8B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAC9F,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,CAAC,EACD,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAC1C,CAAC;YACF,MAAM,UAAU,GAAG,CAAC,CAAC;YAErB,OAAO,CAAC,GAAG,CACT,KAAK,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CACrG,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CACpF,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAC/G,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,IAAI;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACzB,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,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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"}
|
package/dist/commands/list.d.ts
DELETED