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/search.js
DELETED
|
@@ -1,124 +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 { getUserProjectsUrl, getProjectComponentsUrl } from '../util/api.js';
|
|
6
|
-
import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
|
|
7
|
-
export function registerSearchCommand(program) {
|
|
8
|
-
program
|
|
9
|
-
.command('search')
|
|
10
|
-
.description('Search component names across all projects')
|
|
11
|
-
.argument('<query>', 'Search query (case-insensitive substring match)')
|
|
12
|
-
.option('--limit <n>', 'Maximum number of results', '20')
|
|
13
|
-
.action(async (query, opts) => {
|
|
14
|
-
const json = isJsonMode();
|
|
15
|
-
const limit = parseInt(opts.limit, 10) || 20;
|
|
16
|
-
try {
|
|
17
|
-
let headers;
|
|
18
|
-
try {
|
|
19
|
-
headers = getAuthHeaders();
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
throw new MagicPathError('Not authenticated. Set MAGICPATH_TOKEN or run `magicpath-ai login`.', {
|
|
23
|
-
code: 'NOT_AUTHENTICATED',
|
|
24
|
-
suggestion: 'Run `magicpath-ai login` or set the MAGICPATH_TOKEN environment variable.',
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
const spinner = json
|
|
28
|
-
? null
|
|
29
|
-
: brandSpinner('Searching components...').start();
|
|
30
|
-
try {
|
|
31
|
-
// Fetch all projects
|
|
32
|
-
const projResponse = await axios.get(getUserProjectsUrl(), {
|
|
33
|
-
headers,
|
|
34
|
-
});
|
|
35
|
-
const projects = projResponse.data.data?.projects ??
|
|
36
|
-
projResponse.data.projects ??
|
|
37
|
-
projResponse.data;
|
|
38
|
-
if (!Array.isArray(projects) || projects.length === 0) {
|
|
39
|
-
spinner?.succeed('No projects found');
|
|
40
|
-
if (json)
|
|
41
|
-
jsonResult([]);
|
|
42
|
-
console.log('\n No projects found.');
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
// Fetch components from all projects in parallel
|
|
46
|
-
const componentResults = await Promise.all(projects.map(async (project) => {
|
|
47
|
-
try {
|
|
48
|
-
const url = `${getProjectComponentsUrl(project.id)}?limit=100&revisionStatus=COMPLETED&slim=true`;
|
|
49
|
-
const response = await axios.get(url, { headers });
|
|
50
|
-
const components = response.data.data?.components ??
|
|
51
|
-
response.data.components ??
|
|
52
|
-
response.data;
|
|
53
|
-
return {
|
|
54
|
-
project,
|
|
55
|
-
components: Array.isArray(components) ? components : [],
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return { project, components: [] };
|
|
60
|
-
}
|
|
61
|
-
}));
|
|
62
|
-
// Filter by query
|
|
63
|
-
const lowerQuery = query.toLowerCase();
|
|
64
|
-
const matches = [];
|
|
65
|
-
for (const { project, components } of componentResults) {
|
|
66
|
-
for (const c of components) {
|
|
67
|
-
if (matches.length >= limit)
|
|
68
|
-
break;
|
|
69
|
-
if ((c.name || '').toLowerCase().includes(lowerQuery)) {
|
|
70
|
-
matches.push({
|
|
71
|
-
name: c.name,
|
|
72
|
-
generatedName: c.generatedName,
|
|
73
|
-
id: c.id,
|
|
74
|
-
projectName: project.name,
|
|
75
|
-
projectId: project.id,
|
|
76
|
-
previewImageUrl: c.previewImageUrl ?? null,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (matches.length >= limit)
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
spinner?.succeed(`Found ${matches.length} match(es) for "${query}"`);
|
|
84
|
-
if (json) {
|
|
85
|
-
jsonResult(matches);
|
|
86
|
-
}
|
|
87
|
-
if (matches.length === 0) {
|
|
88
|
-
console.log(`\n No components matching "${query}".`);
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
// Table output
|
|
92
|
-
console.log('');
|
|
93
|
-
const nameWidth = Math.max(4, ...matches.map((m) => m.name.length));
|
|
94
|
-
const genWidth = Math.max(13, ...matches.map((m) => m.generatedName.length));
|
|
95
|
-
const projWidth = Math.max(7, ...matches.map((m) => m.projectName.length));
|
|
96
|
-
console.log(` ${'Name'.padEnd(nameWidth)} ${'Generated Name'.padEnd(genWidth)} ${'Project'.padEnd(projWidth)}`);
|
|
97
|
-
console.log(` ${'─'.repeat(nameWidth)} ${'─'.repeat(genWidth)} ${'─'.repeat(projWidth)}`);
|
|
98
|
-
for (const m of matches) {
|
|
99
|
-
console.log(` ${m.name.padEnd(nameWidth)} ${m.generatedName.padEnd(genWidth)} ${m.projectName.padEnd(projWidth)}`);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
spinner?.fail('Search failed');
|
|
104
|
-
if (axios.isAxiosError(err)) {
|
|
105
|
-
if (err.response?.status === 401) {
|
|
106
|
-
throw new MagicPathError('Token is invalid or expired. Run `magicpath-ai login`.');
|
|
107
|
-
}
|
|
108
|
-
throw new MagicPathError(`API error: ${err.response?.status}`);
|
|
109
|
-
}
|
|
110
|
-
throw err;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch (err) {
|
|
114
|
-
if (json)
|
|
115
|
-
jsonError(err);
|
|
116
|
-
if (err instanceof MagicPathError) {
|
|
117
|
-
console.error(`\n${err.message}`);
|
|
118
|
-
process.exit(1);
|
|
119
|
-
}
|
|
120
|
-
throw err;
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=search.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,157 +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 { getActiveRoomsUrl, getComponentUrl } from '../util/api.js';
|
|
6
|
-
import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
|
|
7
|
-
import { createLiveblocksClient, enterRoomAndWait, getSelectedShapeIdsFromRoom, resolveShapesToComponents, } from '../util/liveblocks.js';
|
|
8
|
-
export function registerSelectionCommand(program) {
|
|
9
|
-
program
|
|
10
|
-
.command('selection')
|
|
11
|
-
.description('Get the currently selected component(s) from the web app canvas')
|
|
12
|
-
.action(async () => {
|
|
13
|
-
const json = isJsonMode();
|
|
14
|
-
try {
|
|
15
|
-
let headers;
|
|
16
|
-
try {
|
|
17
|
-
headers = getAuthHeaders();
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
throw new MagicPathError('Not authenticated. Set MAGICPATH_TOKEN or run `magicpath-ai login`.', {
|
|
21
|
-
code: 'NOT_AUTHENTICATED',
|
|
22
|
-
suggestion: 'Run `magicpath-ai login` or set the MAGICPATH_TOKEN environment variable.',
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
const spinner = json
|
|
26
|
-
? null
|
|
27
|
-
: brandSpinner('Checking canvas selection...').start();
|
|
28
|
-
try {
|
|
29
|
-
// 1. Get active rooms
|
|
30
|
-
const roomsResponse = await axios.get(getActiveRoomsUrl(), {
|
|
31
|
-
headers,
|
|
32
|
-
});
|
|
33
|
-
const socketRooms = roomsResponse.data.data?.socket_rooms ??
|
|
34
|
-
roomsResponse.data.socket_rooms;
|
|
35
|
-
const projectRooms = socketRooms?.projectRooms ?? [];
|
|
36
|
-
if (projectRooms.length === 0) {
|
|
37
|
-
spinner?.succeed('No active canvas session');
|
|
38
|
-
if (json) {
|
|
39
|
-
jsonResult({ components: [] });
|
|
40
|
-
}
|
|
41
|
-
console.log('\n No active canvas session found.');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
// Map to ActiveRoom format (room field is the Liveblocks room ID)
|
|
45
|
-
const activeRooms = projectRooms.map((pr) => ({
|
|
46
|
-
projectId: pr.id,
|
|
47
|
-
projectName: '',
|
|
48
|
-
roomId: pr.room,
|
|
49
|
-
}));
|
|
50
|
-
// 2. Connect to each active room and read selection
|
|
51
|
-
const client = createLiveblocksClient(headers);
|
|
52
|
-
const allComponents = [];
|
|
53
|
-
for (const activeRoom of activeRooms) {
|
|
54
|
-
let leave = null;
|
|
55
|
-
try {
|
|
56
|
-
const result = await enterRoomAndWait(client, activeRoom.roomId);
|
|
57
|
-
leave = result.leave;
|
|
58
|
-
const room = result.room;
|
|
59
|
-
// 3. Read selected shape IDs from others' presence
|
|
60
|
-
const selectedShapeIds = getSelectedShapeIdsFromRoom(room);
|
|
61
|
-
if (selectedShapeIds.length === 0) {
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
// 4. Resolve shapes to components via storage
|
|
65
|
-
const components = await resolveShapesToComponents(room, selectedShapeIds);
|
|
66
|
-
// 5. Fetch full component details (generatedName) from API
|
|
67
|
-
for (const comp of components) {
|
|
68
|
-
try {
|
|
69
|
-
const compResponse = await axios.get(getComponentUrl(comp.serverId), { headers });
|
|
70
|
-
const fullComponent = compResponse.data.data?.component ??
|
|
71
|
-
compResponse.data.component;
|
|
72
|
-
allComponents.push({
|
|
73
|
-
id: comp.serverId,
|
|
74
|
-
name: fullComponent?.name ?? comp.name,
|
|
75
|
-
generatedName: fullComponent?.generatedName ?? null,
|
|
76
|
-
clientId: comp.clientId,
|
|
77
|
-
projectId: activeRoom.projectId,
|
|
78
|
-
projectName: activeRoom.projectName,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// Component fetch failed, include with available info
|
|
83
|
-
allComponents.push({
|
|
84
|
-
id: comp.serverId,
|
|
85
|
-
name: comp.name,
|
|
86
|
-
generatedName: null,
|
|
87
|
-
clientId: comp.clientId,
|
|
88
|
-
projectId: activeRoom.projectId,
|
|
89
|
-
projectName: activeRoom.projectName,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Room connection failed, skip
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
if (leave)
|
|
99
|
-
leave();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (allComponents.length === 0) {
|
|
103
|
-
spinner?.succeed('No components selected');
|
|
104
|
-
if (json) {
|
|
105
|
-
jsonResult({ components: [] });
|
|
106
|
-
}
|
|
107
|
-
console.log('\n No active selection.');
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
spinner?.succeed(`Found ${allComponents.length} selected component(s)`);
|
|
111
|
-
if (json) {
|
|
112
|
-
jsonResult({ components: allComponents });
|
|
113
|
-
}
|
|
114
|
-
// Human-readable output
|
|
115
|
-
// Group by project
|
|
116
|
-
const byProject = new Map();
|
|
117
|
-
for (const comp of allComponents) {
|
|
118
|
-
const key = comp.projectId;
|
|
119
|
-
if (!byProject.has(key))
|
|
120
|
-
byProject.set(key, []);
|
|
121
|
-
byProject.get(key).push(comp);
|
|
122
|
-
}
|
|
123
|
-
console.log('');
|
|
124
|
-
for (const [, comps] of byProject) {
|
|
125
|
-
console.log(` Selected in "${comps[0].projectName}":`);
|
|
126
|
-
for (const comp of comps) {
|
|
127
|
-
const gen = comp.generatedName ? ` (${comp.generatedName})` : '';
|
|
128
|
-
console.log(` ${comp.name}${gen}`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
spinner?.fail('Failed to check selection');
|
|
134
|
-
if (axios.isAxiosError(err)) {
|
|
135
|
-
if (err.response?.status === 401) {
|
|
136
|
-
throw new MagicPathError('Token is invalid or expired. Run `magicpath-ai login`.', {
|
|
137
|
-
code: 'TOKEN_EXPIRED',
|
|
138
|
-
suggestion: 'Run `magicpath-ai login` to re-authenticate.',
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
throw new MagicPathError(`API error: ${err.response?.status}`);
|
|
142
|
-
}
|
|
143
|
-
throw err;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
if (json)
|
|
148
|
-
jsonError(err);
|
|
149
|
-
if (err instanceof MagicPathError) {
|
|
150
|
-
console.error(`\n${err.message}`);
|
|
151
|
-
process.exit(1);
|
|
152
|
-
}
|
|
153
|
-
throw err;
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=selection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/commands/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { execSync } from 'child_process';
|
|
2
|
-
export function registerSetupSkillsCommand(program) {
|
|
3
|
-
program
|
|
4
|
-
.command('setup-skills')
|
|
5
|
-
.description('Set up MagicPath for AI agents')
|
|
6
|
-
.action(async () => {
|
|
7
|
-
console.log('Installing MagicPath skills...');
|
|
8
|
-
execSync('npx skills add https://github.com/MagicPathAI/agent-skills -y', {
|
|
9
|
-
stdio: 'inherit',
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=setup-skills.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-skills.js","sourceRoot":"","sources":["../../src/commands/setup-skills.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,QAAQ,CACN,+DAA+D,EAC/D;YACE,KAAK,EAAE,SAAS;SACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/view.d.ts
DELETED
package/dist/commands/view.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { exec } from 'child_process';
|
|
2
|
-
import { makeUrl, APIVersion } from '../util/api.js';
|
|
3
|
-
import { isJsonMode, jsonResult } from '../util/output.js';
|
|
4
|
-
function getPreviewUrl(generatedName) {
|
|
5
|
-
return makeUrl(APIVersion.V1, generatedName);
|
|
6
|
-
}
|
|
7
|
-
export function registerViewCommand(program) {
|
|
8
|
-
program
|
|
9
|
-
.command('view')
|
|
10
|
-
.alias('view-component')
|
|
11
|
-
.description('Open a component preview in the browser')
|
|
12
|
-
.argument('<generatedName>', 'The generated name of the component (e.g., wispy-river-5234)')
|
|
13
|
-
.action((generatedName) => {
|
|
14
|
-
const url = getPreviewUrl(generatedName);
|
|
15
|
-
if (isJsonMode()) {
|
|
16
|
-
jsonResult({ url, generatedName });
|
|
17
|
-
}
|
|
18
|
-
const openCmd = process.platform === 'darwin'
|
|
19
|
-
? 'open'
|
|
20
|
-
: process.platform === 'win32'
|
|
21
|
-
? 'start'
|
|
22
|
-
: 'xdg-open';
|
|
23
|
-
exec(`${openCmd} ${url}`);
|
|
24
|
-
console.log(`Opening ${url}`);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=view.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE3D,SAAS,aAAa,CAAC,aAAqB;IAC1C,OAAO,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,gBAAgB,CAAC;SACvB,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CACP,iBAAiB,EACjB,8DAA8D,CAC/D;SACA,MAAM,CAAC,CAAC,aAAqB,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,UAAU,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC3B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAC5B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,UAAU,CAAC;QAEnB,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/whoami.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { brandSpinner } from '../util/ui.js';
|
|
3
|
-
import { MagicPathError } from '../util/error.js';
|
|
4
|
-
import { getAuthHeaders, cacheUserFromResponse } from '../util/auth.js';
|
|
5
|
-
import { getUserUrl } from '../util/api.js';
|
|
6
|
-
import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
|
|
7
|
-
export function registerWhoamiCommand(program) {
|
|
8
|
-
program
|
|
9
|
-
.command('whoami')
|
|
10
|
-
.description('Show the currently authenticated 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 user info...').start();
|
|
27
|
-
try {
|
|
28
|
-
const response = await axios.get(getUserUrl(), { headers });
|
|
29
|
-
const user = response.data.user ?? response.data;
|
|
30
|
-
spinner?.succeed('Authenticated');
|
|
31
|
-
const cached = cacheUserFromResponse(user);
|
|
32
|
-
if (json) {
|
|
33
|
-
jsonResult(user);
|
|
34
|
-
}
|
|
35
|
-
console.log(`\n Name: ${cached.name || 'N/A'}`);
|
|
36
|
-
console.log(` Email: ${cached.email || 'N/A'}`);
|
|
37
|
-
if (user.id)
|
|
38
|
-
console.log(` ID: ${user.id}`);
|
|
39
|
-
console.log(` Plan: ${cached.plan}`);
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
spinner?.fail('Failed to fetch user info');
|
|
43
|
-
if (axios.isAxiosError(err)) {
|
|
44
|
-
if (err.response?.status === 401) {
|
|
45
|
-
throw new MagicPathError('Token is invalid or expired. Run `magicpath-ai login` to re-authenticate.', {
|
|
46
|
-
code: 'TOKEN_EXPIRED',
|
|
47
|
-
suggestion: 'Run `magicpath-ai login` to re-authenticate.',
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
throw new MagicPathError(`API error: ${err.response?.status} ${err.response?.statusText}`);
|
|
51
|
-
}
|
|
52
|
-
throw err;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
if (json)
|
|
57
|
-
jsonError(err);
|
|
58
|
-
if (err instanceof MagicPathError) {
|
|
59
|
-
console.error(`\n${err.message}`);
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
throw err;
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=whoami.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"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"}
|
package/dist/util/api.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare enum APIVersion {
|
|
2
|
-
V1 = "v1"
|
|
3
|
-
}
|
|
4
|
-
export declare function makeUrl(version: APIVersion, endpoint: string): string;
|
|
5
|
-
export declare function makeRegistryUrl(generatedName: string): string;
|
|
6
|
-
export declare function makeWebUrl(path: string): string;
|
|
7
|
-
export declare function makeAuthUrl(endpoint: string): string;
|
|
8
|
-
export declare function makeIntegrateUrl(): string;
|
|
9
|
-
export declare function makeIntegrateJobUrl(jobId: string): string;
|
|
10
|
-
export declare function getUserUrl(): string;
|
|
11
|
-
export declare function getUserProjectsUrl(): string;
|
|
12
|
-
export declare function getProjectComponentsUrl(projectId: string): string;
|
|
13
|
-
export declare function getUserDesignSystemsUrl(): string;
|
|
14
|
-
export declare function getDesignSystemUrl(id: string): string;
|
|
15
|
-
export declare function getActiveRoomsUrl(): string;
|
|
16
|
-
export declare function getLiveblocksAuthUrl(): string;
|
|
17
|
-
export declare function getComponentUrl(id: string): string;
|
package/dist/util/api.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
const MAGICPATH_BASE_URL = process.env.MAGICPATH_API_URL ?? 'https://api.magicpath.ai';
|
|
2
|
-
export var APIVersion;
|
|
3
|
-
(function (APIVersion) {
|
|
4
|
-
APIVersion["V1"] = "v1";
|
|
5
|
-
})(APIVersion || (APIVersion = {}));
|
|
6
|
-
export function makeUrl(version, endpoint) {
|
|
7
|
-
return `${MAGICPATH_BASE_URL}/${version}/${endpoint}`;
|
|
8
|
-
}
|
|
9
|
-
export function makeRegistryUrl(generatedName) {
|
|
10
|
-
return `${MAGICPATH_BASE_URL}/${APIVersion.V1}/registry/${generatedName}`;
|
|
11
|
-
}
|
|
12
|
-
const MAGICPATH_WEB_URL = process.env.MAGICPATH_WEB_URL ?? 'https://magicpath.ai';
|
|
13
|
-
export function makeWebUrl(path) {
|
|
14
|
-
return `${MAGICPATH_WEB_URL}${path}`;
|
|
15
|
-
}
|
|
16
|
-
export function makeAuthUrl(endpoint) {
|
|
17
|
-
return `${MAGICPATH_BASE_URL}/auth/${endpoint}`;
|
|
18
|
-
}
|
|
19
|
-
export function makeIntegrateUrl() {
|
|
20
|
-
return `${MAGICPATH_BASE_URL}/${APIVersion.V1}/integrate`;
|
|
21
|
-
}
|
|
22
|
-
export function makeIntegrateJobUrl(jobId) {
|
|
23
|
-
return `${MAGICPATH_BASE_URL}/${APIVersion.V1}/integrate/jobs/${jobId}`;
|
|
24
|
-
}
|
|
25
|
-
export function getUserUrl() {
|
|
26
|
-
return `${MAGICPATH_BASE_URL}/users/me`;
|
|
27
|
-
}
|
|
28
|
-
export function getUserProjectsUrl() {
|
|
29
|
-
return `${MAGICPATH_BASE_URL}/users/me/projects`;
|
|
30
|
-
}
|
|
31
|
-
export function getProjectComponentsUrl(projectId) {
|
|
32
|
-
return `${MAGICPATH_BASE_URL}/projects/${projectId}/components`;
|
|
33
|
-
}
|
|
34
|
-
export function getUserDesignSystemsUrl() {
|
|
35
|
-
return `${MAGICPATH_BASE_URL}/users/me/design-systems`;
|
|
36
|
-
}
|
|
37
|
-
export function getDesignSystemUrl(id) {
|
|
38
|
-
return `${MAGICPATH_BASE_URL}/design-systems/${id}`;
|
|
39
|
-
}
|
|
40
|
-
export function getActiveRoomsUrl() {
|
|
41
|
-
return `${MAGICPATH_BASE_URL}/users/me/socket-rooms`;
|
|
42
|
-
}
|
|
43
|
-
export function getLiveblocksAuthUrl() {
|
|
44
|
-
return `${MAGICPATH_BASE_URL}/liveblocks/auth`;
|
|
45
|
-
}
|
|
46
|
-
export function getComponentUrl(id) {
|
|
47
|
-
return `${MAGICPATH_BASE_URL}/components/${id}`;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=api.js.map
|
package/dist/util/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/util/api.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,0BAA0B,CAAC;AAE9D,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,uBAAS,CAAA;AACX,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,UAAU,OAAO,CAAC,OAAmB,EAAE,QAAgB;IAC3D,OAAO,GAAG,kBAAkB,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,aAAqB;IACnD,OAAO,GAAG,kBAAkB,IAAI,UAAU,CAAC,EAAE,aAAa,aAAa,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,sBAAsB,CAAC;AAE1D,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,GAAG,iBAAiB,GAAG,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,GAAG,kBAAkB,SAAS,QAAQ,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,kBAAkB,IAAI,UAAU,CAAC,EAAE,YAAY,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,GAAG,kBAAkB,IAAI,UAAU,CAAC,EAAE,mBAAmB,KAAK,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,GAAG,kBAAkB,WAAW,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,kBAAkB,oBAAoB,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,GAAG,kBAAkB,aAAa,SAAS,aAAa,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,GAAG,kBAAkB,0BAA0B,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,GAAG,kBAAkB,mBAAmB,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,GAAG,kBAAkB,wBAAwB,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,GAAG,kBAAkB,kBAAkB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,GAAG,kBAAkB,eAAe,EAAE,EAAE,CAAC;AAClD,CAAC"}
|
package/dist/util/auth.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export interface CachedUserInfo {
|
|
2
|
-
name?: string;
|
|
3
|
-
email?: string;
|
|
4
|
-
plan?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function saveTokens(accessToken: string, refreshToken: string): void;
|
|
7
|
-
export declare function loadTokens(): {
|
|
8
|
-
accessToken: string;
|
|
9
|
-
refreshToken: string;
|
|
10
|
-
} | null;
|
|
11
|
-
export declare function clearSession(): void;
|
|
12
|
-
/** @deprecated Use clearSession() instead. */
|
|
13
|
-
export declare const clearTokens: typeof clearSession;
|
|
14
|
-
/** @deprecated Use clearSession() instead. */
|
|
15
|
-
export declare const clearUserInfo: typeof clearSession;
|
|
16
|
-
export declare function saveUserInfo(info: CachedUserInfo): void;
|
|
17
|
-
export declare function loadUserInfo(): CachedUserInfo | null;
|
|
18
|
-
export declare function getAuthHeaders(): {
|
|
19
|
-
Authorization: string;
|
|
20
|
-
'X-Client-Type': string;
|
|
21
|
-
'X-Client-Version': string;
|
|
22
|
-
};
|
|
23
|
-
/** Extract CachedUserInfo from a raw API user object and save to session. */
|
|
24
|
-
export declare function cacheUserFromResponse(user: any): CachedUserInfo;
|
|
25
|
-
/** Fetch current user from API, cache the result, and return it. */
|
|
26
|
-
export declare function fetchAndCacheUser(): Promise<CachedUserInfo>;
|