magicpath-ai 1.4.0 → 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 (82) hide show
  1. package/dist/cli.js +137 -50
  2. package/package.json +9 -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 -134
  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 -128
  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 -282
  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/setup-skills.d.ts +0 -2
  39. package/dist/commands/setup-skills.js +0 -13
  40. package/dist/commands/setup-skills.js.map +0 -1
  41. package/dist/commands/view.d.ts +0 -2
  42. package/dist/commands/view.js +0 -27
  43. package/dist/commands/view.js.map +0 -1
  44. package/dist/commands/whoami.d.ts +0 -2
  45. package/dist/commands/whoami.js +0 -66
  46. package/dist/commands/whoami.js.map +0 -1
  47. package/dist/util/api.d.ts +0 -14
  48. package/dist/util/api.js +0 -40
  49. package/dist/util/api.js.map +0 -1
  50. package/dist/util/auth.d.ts +0 -25
  51. package/dist/util/auth.js +0 -106
  52. package/dist/util/auth.js.map +0 -1
  53. package/dist/util/authError.d.ts +0 -4
  54. package/dist/util/authError.js +0 -7
  55. package/dist/util/authError.js.map +0 -1
  56. package/dist/util/banner.d.ts +0 -1
  57. package/dist/util/banner.js +0 -79
  58. package/dist/util/banner.js.map +0 -1
  59. package/dist/util/component.d.ts +0 -186
  60. package/dist/util/component.js +0 -349
  61. package/dist/util/component.js.map +0 -1
  62. package/dist/util/dependencies.d.ts +0 -12
  63. package/dist/util/dependencies.js +0 -93
  64. package/dist/util/dependencies.js.map +0 -1
  65. package/dist/util/error.d.ts +0 -9
  66. package/dist/util/error.js +0 -10
  67. package/dist/util/error.js.map +0 -1
  68. package/dist/util/ide.d.ts +0 -3
  69. package/dist/util/ide.js +0 -145
  70. package/dist/util/ide.js.map +0 -1
  71. package/dist/util/logger.d.ts +0 -7
  72. package/dist/util/logger.js +0 -21
  73. package/dist/util/logger.js.map +0 -1
  74. package/dist/util/output.d.ts +0 -15
  75. package/dist/util/output.js +0 -36
  76. package/dist/util/output.js.map +0 -1
  77. package/dist/util/project.d.ts +0 -3
  78. package/dist/util/project.js +0 -64
  79. package/dist/util/project.js.map +0 -1
  80. package/dist/util/ui.d.ts +0 -11
  81. package/dist/util/ui.js +0 -30
  82. package/dist/util/ui.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.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,14 +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;
package/dist/util/api.js DELETED
@@ -1,40 +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
- //# 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"}
@@ -1,25 +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
- };
22
- /** Extract CachedUserInfo from a raw API user object and save to session. */
23
- export declare function cacheUserFromResponse(user: any): CachedUserInfo;
24
- /** Fetch current user from API, cache the result, and return it. */
25
- export declare function fetchAndCacheUser(): Promise<CachedUserInfo>;
package/dist/util/auth.js DELETED
@@ -1,106 +0,0 @@
1
- import fs from 'fs-extra';
2
- import path from 'path';
3
- import os from 'os';
4
- import axios from 'axios';
5
- import { getUserUrl } from './api.js';
6
- const CONFIG_DIR = path.join(os.homedir(), '.magicpath');
7
- const SESSION_FILE = path.join(CONFIG_DIR, 'session.json');
8
- // ── Internal helpers ─────────────────────────────────────
9
- function loadSession() {
10
- try {
11
- if (!fs.existsSync(SESSION_FILE))
12
- return null;
13
- const data = fs.readJsonSync(SESSION_FILE);
14
- if (data.accessToken && data.refreshToken)
15
- return data;
16
- return null;
17
- }
18
- catch {
19
- return null;
20
- }
21
- }
22
- function saveSession(session) {
23
- fs.ensureDirSync(CONFIG_DIR);
24
- fs.writeJsonSync(SESSION_FILE, session);
25
- }
26
- // ── Public API ───────────────────────────────────────────
27
- export function saveTokens(accessToken, refreshToken) {
28
- const existing = loadSession();
29
- saveSession({ accessToken, refreshToken, user: existing?.user });
30
- }
31
- export function loadTokens() {
32
- const session = loadSession();
33
- if (!session)
34
- return null;
35
- return {
36
- accessToken: session.accessToken,
37
- refreshToken: session.refreshToken,
38
- };
39
- }
40
- export function clearSession() {
41
- try {
42
- fs.removeSync(SESSION_FILE);
43
- }
44
- catch {
45
- // Ignore if file doesn't exist
46
- }
47
- }
48
- /** @deprecated Use clearSession() instead. */
49
- export const clearTokens = clearSession;
50
- /** @deprecated Use clearSession() instead. */
51
- export const clearUserInfo = clearSession;
52
- export function saveUserInfo(info) {
53
- try {
54
- const session = loadSession();
55
- if (session) {
56
- session.user = info;
57
- saveSession(session);
58
- }
59
- }
60
- catch {
61
- // non-critical, ignore
62
- }
63
- }
64
- export function loadUserInfo() {
65
- const session = loadSession();
66
- return session?.user ?? null;
67
- }
68
- export function getAuthHeaders() {
69
- // Environment variable takes precedence (for CI/CD and AI agents)
70
- const envToken = process.env.MAGICPATH_TOKEN;
71
- if (envToken) {
72
- return { Authorization: `Bearer ${envToken}`, 'X-Client-Type': 'cli' };
73
- }
74
- const tokens = loadTokens();
75
- if (!tokens) {
76
- throw new Error('Not logged in. Run `magicpath-ai login` first.');
77
- }
78
- return {
79
- Authorization: `Bearer ${tokens.accessToken}`,
80
- 'X-Client-Type': 'cli',
81
- };
82
- }
83
- /** Extract CachedUserInfo from a raw API user object and save to session. */
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- export function cacheUserFromResponse(user) {
86
- const plan = user.subscription?.active
87
- ? user.subscription.type?.startsWith('PRO')
88
- ? 'Pro'
89
- : 'Creator'
90
- : 'Free';
91
- const info = {
92
- name: user.name || user.firstName || user.displayName,
93
- email: user.email,
94
- plan,
95
- };
96
- saveUserInfo(info);
97
- return info;
98
- }
99
- /** Fetch current user from API, cache the result, and return it. */
100
- export async function fetchAndCacheUser() {
101
- const headers = getAuthHeaders();
102
- const response = await axios.get(getUserUrl(), { headers });
103
- const user = response.data.user ?? response.data;
104
- return cacheUserFromResponse(user);
105
- }
106
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/util/auth.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { MagicPathError } from './error.js';
2
- export declare class AuthRequiredError extends MagicPathError {
3
- constructor();
4
- }
@@ -1,7 +0,0 @@
1
- import { MagicPathError } from './error.js';
2
- export class AuthRequiredError extends MagicPathError {
3
- constructor() {
4
- super('You must be logged in to install components.');
5
- }
6
- }
7
- //# sourceMappingURL=authError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authError.js","sourceRoot":"","sources":["../../src/util/authError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD;QACE,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -1 +0,0 @@
1
- export declare function showBanner(version: string): void;
@@ -1,79 +0,0 @@
1
- import chalk from 'chalk';
2
- import { loadTokens, loadUserInfo } from './auth.js';
3
- const GRADIENT_HEX = [
4
- '#95D5B2',
5
- '#74C69D',
6
- '#52B788',
7
- '#40916C',
8
- '#2D6A4F',
9
- '#1B4332',
10
- ];
11
- function gradientColor(step) {
12
- return chalk.hex(GRADIENT_HEX[Math.min(step, GRADIENT_HEX.length - 1)]);
13
- }
14
- const G1 = chalk.hex('#2D6A4F');
15
- const G2 = chalk.hex('#1B4332');
16
- const WH = chalk.hex('#E8F5E9');
17
- const DM = chalk.hex('#888888');
18
- const MAGIC = [
19
- '███╗ ███╗ █████╗ ██████╗ ██╗ ██████╗',
20
- '████╗ ████║██╔══██╗██╔════╝ ██║██╔════╝',
21
- '██╔████╔██║███████║██║ ███╗██║██║ ',
22
- '██║╚██╔╝██║██╔══██║██║ ██║██║██║ ',
23
- '██║ ╚═╝ ██║██║ ██║╚██████╔╝██║╚██████╗',
24
- '╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝',
25
- ];
26
- const PATH = [
27
- '██████╗ █████╗ ████████╗██╗ ██╗',
28
- '██╔══██╗██╔══██╗╚══██╔══╝██║ ██║',
29
- '██████╔╝███████║ ██║ ███████║',
30
- '██╔═══╝ ██╔══██║ ██║ ██╔══██║',
31
- '██║ ██║ ██║ ██║ ██║ ██║',
32
- '╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝',
33
- ];
34
- const SPRITE = MAGIC.map((row, i) => row + ' ' + PATH[i]);
35
- function styleSprite(rows) {
36
- return rows.map((row, y) => {
37
- const colorFn = gradientColor(y);
38
- let out = '';
39
- for (const ch of row) {
40
- out += ch === ' ' ? ch : colorFn(ch);
41
- }
42
- return out;
43
- });
44
- }
45
- export function showBanner(version) {
46
- const loggedIn = !!loadTokens();
47
- const user = loggedIn ? loadUserInfo() : null;
48
- console.log();
49
- for (const row of styleSprite(SPRITE)) {
50
- console.log(row);
51
- }
52
- console.log();
53
- if (loggedIn && user) {
54
- const planLabel = user.plan ? ` · ${user.plan}` : '';
55
- console.log(' ' +
56
- G1('●') +
57
- ' ' +
58
- chalk.bold(WH(user.name ?? 'MagicPath User')) +
59
- G2(' ' + (user.email ?? '') + planLabel));
60
- }
61
- else {
62
- console.log(' ' + DM('○ Not logged in · run') + ' ' + G1('magicpath-ai login'));
63
- }
64
- console.log();
65
- const CMD_W = 20;
66
- const cmds = [
67
- ['search <query>', 'Search components'],
68
- ['add <name>', 'Add to project'],
69
- ['list-projects', 'Your projects'],
70
- ['setup-skills', 'Set up AI agents'],
71
- ];
72
- for (const [cmd, desc] of cmds) {
73
- console.log(' ' + G1(cmd.padEnd(CMD_W)) + DM(desc));
74
- }
75
- console.log();
76
- console.log(' ' + DM(`v${version} ─ magicpath-ai --help`));
77
- console.log();
78
- }
79
- //# sourceMappingURL=banner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/util/banner.ts"],"names":[],"mappings":"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"}
@@ -1,186 +0,0 @@
1
- import { z } from 'zod';
2
- declare const componentFileSchema: z.ZodObject<{
3
- name: z.ZodString;
4
- path: z.ZodString;
5
- content: z.ZodString;
6
- }, "strip", z.ZodTypeAny, {
7
- name: string;
8
- path: string;
9
- content: string;
10
- }, {
11
- name: string;
12
- path: string;
13
- content: string;
14
- }>;
15
- declare const registryResponseSchema: z.ZodObject<{
16
- data: z.ZodObject<{
17
- name: z.ZodString;
18
- generatedName: z.ZodString;
19
- files: z.ZodArray<z.ZodObject<{
20
- name: z.ZodString;
21
- path: z.ZodString;
22
- content: z.ZodString;
23
- }, "strip", z.ZodTypeAny, {
24
- name: string;
25
- path: string;
26
- content: string;
27
- }, {
28
- name: string;
29
- path: string;
30
- content: string;
31
- }>, "many">;
32
- utils: z.ZodObject<{
33
- content: z.ZodString;
34
- }, "strip", z.ZodTypeAny, {
35
- content: string;
36
- }, {
37
- content: string;
38
- }>;
39
- dependencies: z.ZodArray<z.ZodString, "many">;
40
- }, "strip", z.ZodTypeAny, {
41
- name: string;
42
- generatedName: string;
43
- files: {
44
- name: string;
45
- path: string;
46
- content: string;
47
- }[];
48
- utils: {
49
- content: string;
50
- };
51
- dependencies: string[];
52
- }, {
53
- name: string;
54
- generatedName: string;
55
- files: {
56
- name: string;
57
- path: string;
58
- content: string;
59
- }[];
60
- utils: {
61
- content: string;
62
- };
63
- dependencies: string[];
64
- }>;
65
- }, "strip", z.ZodTypeAny, {
66
- data: {
67
- name: string;
68
- generatedName: string;
69
- files: {
70
- name: string;
71
- path: string;
72
- content: string;
73
- }[];
74
- utils: {
75
- content: string;
76
- };
77
- dependencies: string[];
78
- };
79
- }, {
80
- data: {
81
- name: string;
82
- generatedName: string;
83
- files: {
84
- name: string;
85
- path: string;
86
- content: string;
87
- }[];
88
- utils: {
89
- content: string;
90
- };
91
- dependencies: string[];
92
- };
93
- }>;
94
- export type ComponentFile = z.infer<typeof componentFileSchema>;
95
- export type RegistryResponse = z.infer<typeof registryResponseSchema>['data'];
96
- /**
97
- * Information about a component's exports extracted from its source code
98
- */
99
- export interface ComponentExportInfo {
100
- name: string;
101
- isDefault: boolean;
102
- propsType?: string;
103
- requiredProps: string[];
104
- optionalProps: string[];
105
- }
106
- /**
107
- * Extract export information from a component's source code
108
- * Parses the TSX/TS content to find exported components and their props
109
- */
110
- export declare function extractComponentExports(content: string): ComponentExportInfo | null;
111
- /**
112
- * Generate an import statement for a component
113
- */
114
- export declare function generateImportStatement(exportInfo: ComponentExportInfo, importPath: string): string;
115
- /**
116
- * Generate a usage example for a component
117
- */
118
- export declare function generateUsageExample(exportInfo: ComponentExportInfo): string;
119
- /**
120
- * Options for generating usage markdown
121
- */
122
- export interface UsageMarkdownOptions {
123
- componentName: string;
124
- importPath: string;
125
- exportInfo: ComponentExportInfo | null;
126
- fileName: string;
127
- }
128
- /**
129
- * Generate a usage.md file content for a component
130
- */
131
- export declare function generateUsageMarkdown(options: UsageMarkdownOptions): string;
132
- /**
133
- * Write the usage.md file to the component directory
134
- */
135
- export declare function writeUsageFile(targetDir: string, options: UsageMarkdownOptions): void;
136
- /**
137
- * Fetch component data from the MagicPath registry
138
- */
139
- export declare function fetchComponent(generatedName: string): Promise<RegistryResponse>;
140
- /**
141
- * Check which files already exist in the target directory
142
- */
143
- export declare function checkExistingFiles(files: ComponentFile[], targetDir: string): string[];
144
- /**
145
- * Adjust relative import paths in component content to account for extra directory depth.
146
- * When placing components in a subfolder, relative imports need an extra "../" prefix.
147
- *
148
- * @param content - The file content with imports to adjust
149
- * @param extraDepth - Number of extra directory levels to account for (default: 1)
150
- */
151
- export declare function adjustRelativeImports(content: string, extraDepth?: number): string;
152
- /**
153
- * Write component files to the target directory
154
- *
155
- * @param files - Array of component files to write
156
- * @param targetDir - Target directory to write files to
157
- * @param adjustImports - Whether to adjust relative imports for subfolder placement (default: false)
158
- */
159
- export declare function writeComponentFiles(files: ComponentFile[], targetDir: string, adjustImports?: boolean): void;
160
- /**
161
- * Check if utils.ts already exists and has the cn function
162
- */
163
- export declare function checkUtilsExists(utilsDir: string): boolean;
164
- /**
165
- * Write the utils.ts file
166
- */
167
- export declare function writeUtilsFile(utilsContent: string, utilsDir: string): void;
168
- export declare const DEFAULT_COMPONENTS_PATH = "src/components/magicpath";
169
- export declare const DEFAULT_UTILS_PATH = "src/lib";
170
- /**
171
- * Sanitize a component name for use as a folder name
172
- * - Converts to lowercase kebab-case
173
- * - Removes special characters
174
- * - Replaces spaces with hyphens
175
- * - Falls back to 'component' if the result would be empty
176
- */
177
- export declare function sanitizeComponentFolderName(name: string): string;
178
- /**
179
- * Resolve the components path (with optional override)
180
- */
181
- export declare function resolveComponentsPath(overridePath?: string, cwd?: string): string;
182
- /**
183
- * Resolve the utils path
184
- */
185
- export declare function resolveUtilsPath(cwd?: string): string;
186
- export {};