magicpath-ai 1.4.1 → 1.5.0-beta.2

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 +139 -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,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":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWtE,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4CAA4C,CAAC;SACzD,QAAQ,CAAC,SAAS,EAAE,iDAAiD,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAuB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAE7C,IAAI,CAAC;YACH,IAAI,OAA+B,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,GAAG,cAAc,EAAE,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,cAAc,CACtB,qEAAqE,EACrE;oBACE,IAAI,EAAE,mBAAmB;oBACzB,UAAU,EACR,2EAA2E;iBAC9E,CACF,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAI;gBAClB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;YAEpD,IAAI,CAAC;gBACH,qBAAqB;gBACrB,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE;oBACzD,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,QAAQ,GACZ,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ;oBAChC,YAAY,CAAC,IAAI,CAAC,QAAQ;oBAC1B,YAAY,CAAC,IAAI,CAAC;gBAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtD,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;oBACtC,IAAI,IAAI;wBAAE,UAAU,CAAC,EAAE,CAAC,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO;gBACT,CAAC;gBAED,iDAAiD;gBACjD,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;oBAClC,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC,+CAA+C,CAAC;wBAClG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;wBACnD,MAAM,UAAU,GACd,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU;4BAC9B,QAAQ,CAAC,IAAI,CAAC,UAAU;4BACxB,QAAQ,CAAC,IAAI,CAAC;wBAChB,OAAO;4BACL,OAAO;4BACP,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;yBACxD,CAAC;oBACJ,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;oBACrC,CAAC;gBACH,CAAC,CAAC,CACH,CAAC;gBAEF,kBAAkB;gBAClB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAkB,EAAE,CAAC;gBAElC,KAAK,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,gBAAgB,EAAE,CAAC;oBACvD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC3B,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;4BAAE,MAAM;wBACnC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;4BACtD,OAAO,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,CAAC,CAAC,IAAI;gCACZ,aAAa,EAAE,CAAC,CAAC,aAAa;gCAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;gCACR,WAAW,EAAE,OAAO,CAAC,IAAI;gCACzB,SAAS,EAAE,OAAO,CAAC,EAAE;gCACrB,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;6BAC3C,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBACD,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;wBAAE,MAAM;gBACrC,CAAC;gBAED,OAAO,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,mBAAmB,KAAK,GAAG,CAAC,CAAC;gBAErE,IAAI,IAAI,EAAE,CAAC;oBACT,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,IAAI,CAAC,CAAC;oBACtD,OAAO;gBACT,CAAC;gBAED,eAAe;gBACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,EAAE,EACF,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAC9C,CAAC;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAC5C,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CACtG,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAChF,CAAC;gBACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CACzG,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC/B,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;wBACjC,MAAM,IAAI,cAAc,CACtB,wDAAwD,CACzD,CAAC;oBACJ,CAAC;oBACD,MAAM,IAAI,cAAc,CAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,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,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerSelectionCommand(program: Command): void;
@@ -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,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerSetupSkillsCommand(program: Command): void;
@@ -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"}
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerViewCommand(program: Command): void;
@@ -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"}
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare function registerWhoamiCommand(program: Command): void;
@@ -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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"}
@@ -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
@@ -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"}
@@ -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>;