magicpath-ai 1.3.0-beta.2 → 1.3.0-beta.4
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/README.md +63 -8
- package/dist/cli.js +28 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +49 -0
- package/dist/commands/add.js +129 -25
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/auth.js +33 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/clone.js +112 -86
- package/dist/commands/clone.js.map +1 -1
- package/dist/commands/info.d.ts +2 -0
- package/dist/commands/info.js +124 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +280 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integrate.js +282 -81
- package/dist/commands/integrate.js.map +1 -1
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.js +138 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/schema.d.ts +2 -0
- package/dist/commands/schema.js +213 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.js +120 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/skills.d.ts +2 -0
- package/dist/commands/skills.js +55 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/view.d.ts +2 -0
- package/dist/commands/view.js +27 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.js +58 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/util/api.d.ts +4 -0
- package/dist/util/api.js +12 -0
- package/dist/util/api.js.map +1 -1
- package/dist/util/auth.js +5 -0
- package/dist/util/auth.js.map +1 -1
- package/dist/util/component.d.ts +8 -8
- package/dist/util/diff.d.ts +4 -0
- package/dist/util/diff.js +11 -3
- package/dist/util/diff.js.map +1 -1
- package/dist/util/integrate.d.ts +13 -2
- package/dist/util/integrate.js +111 -9
- package/dist/util/integrate.js.map +1 -1
- package/dist/util/output.d.ts +14 -0
- package/dist/util/output.js +27 -0
- package/dist/util/output.js.map +1 -0
- package/package.json +3 -2
- package/skills/magicpath-add-component/SKILL.md +49 -0
- package/skills/magicpath-integrate/SKILL.md +50 -0
- package/skills/magicpath-list/SKILL.md +38 -0
- package/skills/magicpath-shared/SKILL.md +34 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MagicPath CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Instantly bring your MagicPath AI projects to your local development environment. Edit, remix, and create in your own vibe.
|
|
4
4
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
@@ -43,7 +43,8 @@ npx magicpath-ai@latest clone -k <access-key> [options]
|
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**Options:**
|
|
46
|
-
- `-k, --key <accessKey>` (required):
|
|
46
|
+
- `-k, --key <accessKey>` (required): One-time magic access key to unlock and download your project
|
|
47
|
+
- `-i, --ide <ide>`: Pre-select IDE to open project in (cursor, antigravity, vscode, webstorm)
|
|
47
48
|
- `-d, --debug`: Get verbose debug logs in the CLI
|
|
48
49
|
|
|
49
50
|
**Example:**
|
|
@@ -52,10 +53,64 @@ npx magicpath-ai@latest clone -k mp_1234567890abcdef
|
|
|
52
53
|
```
|
|
53
54
|
|
|
54
55
|
The CLI will:
|
|
55
|
-
1.
|
|
56
|
-
2.
|
|
57
|
-
3.
|
|
58
|
-
4.
|
|
56
|
+
1. Download your project using the access key
|
|
57
|
+
2. Prompt you to name your project (default: `magicpath-project`)
|
|
58
|
+
3. Unpack the project to a local directory
|
|
59
|
+
4. Your project is ready to go!
|
|
60
|
+
|
|
61
|
+
### Add Command
|
|
62
|
+
|
|
63
|
+
Add a MagicPath component to your project:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npx magicpath-ai@latest add <generatedName> [options]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- `<generatedName>` (required): The generated name of the component (e.g., `wispy-river-5234`)
|
|
70
|
+
|
|
71
|
+
**Options:**
|
|
72
|
+
- `-y, --yes`: Skip confirmation prompts
|
|
73
|
+
- `-o, --overwrite`: Overwrite existing files
|
|
74
|
+
- `-p, --path <path>`: Custom path for components (default: `components/magicpath`)
|
|
75
|
+
- `-d, --debug`: Enable debug logging
|
|
76
|
+
|
|
77
|
+
The CLI will fetch the component from the MagicPath registry, write the component files to your project, install any required dependencies, and display usage instructions.
|
|
78
|
+
|
|
79
|
+
### Integrate Command
|
|
80
|
+
|
|
81
|
+
Integrate a MagicPath component into your project using AI:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npx magicpath-ai@latest integrate <generatedName> [options]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- `<generatedName>` (required): The generated name of the component
|
|
88
|
+
|
|
89
|
+
**Options:**
|
|
90
|
+
- `-d, --debug`: Enable debug logging
|
|
91
|
+
- `--no-review`: Apply changes immediately without review
|
|
92
|
+
|
|
93
|
+
The integrate command offers two modes:
|
|
94
|
+
- **Integrate into a specific file** — Embed the component into an existing file in your project.
|
|
95
|
+
- **Retheme entire project** (experimental) — Restyle your entire project to match the component's theme.
|
|
96
|
+
|
|
97
|
+
### Login Command
|
|
98
|
+
|
|
99
|
+
Log in to your MagicPath account:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npx magicpath-ai@latest login
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Opens your browser for authentication. Required for the `add` and `integrate` commands.
|
|
106
|
+
|
|
107
|
+
### Logout Command
|
|
108
|
+
|
|
109
|
+
Log out of your MagicPath account:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npx magicpath-ai@latest logout
|
|
113
|
+
```
|
|
59
114
|
|
|
60
115
|
## What You Get
|
|
61
116
|
|
|
@@ -100,8 +155,8 @@ When you clone a MagicPath project, you'll get a complete local copy with:
|
|
|
100
155
|
|
|
101
156
|
## License
|
|
102
157
|
|
|
103
|
-
MIT
|
|
158
|
+
MIT - Jack Beoris
|
|
104
159
|
|
|
105
160
|
---
|
|
106
161
|
|
|
107
|
-
Made with
|
|
162
|
+
Made with love by the MagicPath team
|
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { program } from 'commander';
|
|
3
|
+
import { setJsonMode } from './util/output.js';
|
|
3
4
|
import { registerCloneCommand } from './commands/clone.js';
|
|
4
5
|
import { registerAddCommand } from './commands/add.js';
|
|
5
6
|
import { registerIntegrateCommand } from './commands/integrate.js';
|
|
6
7
|
import { registerAuthCommands } from './commands/auth.js';
|
|
7
|
-
|
|
8
|
+
import { registerWhoamiCommand } from './commands/whoami.js';
|
|
9
|
+
import { registerListCommands } from './commands/list.js';
|
|
10
|
+
import { registerSchemaCommand } from './commands/schema.js';
|
|
11
|
+
import { registerSkillsCommand } from './commands/skills.js';
|
|
12
|
+
import { registerInitCommand } from './commands/init.js';
|
|
13
|
+
import { registerViewCommand } from './commands/view.js';
|
|
14
|
+
import { registerInfoCommand } from './commands/info.js';
|
|
15
|
+
import { registerSearchCommand } from './commands/search.js';
|
|
16
|
+
program
|
|
17
|
+
.name('magicpath')
|
|
18
|
+
.description('CLI for MagicPath AI')
|
|
19
|
+
.version('1.3.0')
|
|
20
|
+
.option('-o, --output <format>', 'Output format: json')
|
|
21
|
+
.hook('preAction', (thisCommand) => {
|
|
22
|
+
const opts = thisCommand.optsWithGlobals();
|
|
23
|
+
if (opts.output === 'json') {
|
|
24
|
+
setJsonMode(true);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
8
27
|
registerCloneCommand(program);
|
|
9
28
|
registerAddCommand(program);
|
|
10
29
|
registerIntegrateCommand(program);
|
|
11
30
|
registerAuthCommands(program);
|
|
31
|
+
registerWhoamiCommand(program);
|
|
32
|
+
registerListCommands(program);
|
|
33
|
+
registerSchemaCommand(program);
|
|
34
|
+
registerSkillsCommand(program);
|
|
35
|
+
registerInitCommand(program);
|
|
36
|
+
registerViewCommand(program);
|
|
37
|
+
registerInfoCommand(program);
|
|
38
|
+
registerSearchCommand(program);
|
|
12
39
|
program.parse();
|
|
13
40
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;KACtD,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/commands/add.d.ts
CHANGED
|
@@ -1,2 +1,51 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const addOptionsSchema: z.ZodObject<{
|
|
4
|
+
yes: z.ZodDefault<z.ZodBoolean>;
|
|
5
|
+
overwrite: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
path: z.ZodOptional<z.ZodString>;
|
|
7
|
+
debug: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
dryRun: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
inspect: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
debug: boolean;
|
|
12
|
+
yes: boolean;
|
|
13
|
+
overwrite: boolean;
|
|
14
|
+
dryRun: boolean;
|
|
15
|
+
inspect: boolean;
|
|
16
|
+
path?: string | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
debug?: boolean | undefined;
|
|
19
|
+
path?: string | undefined;
|
|
20
|
+
yes?: boolean | undefined;
|
|
21
|
+
overwrite?: boolean | undefined;
|
|
22
|
+
dryRun?: boolean | undefined;
|
|
23
|
+
inspect?: boolean | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export type AddOptions = z.infer<typeof addOptionsSchema>;
|
|
26
|
+
export declare const addOutputSchema: z.ZodObject<{
|
|
27
|
+
component: z.ZodString;
|
|
28
|
+
generatedName: z.ZodString;
|
|
29
|
+
filesWritten: z.ZodArray<z.ZodString, "many">;
|
|
30
|
+
dependenciesInstalled: z.ZodArray<z.ZodString, "many">;
|
|
31
|
+
importStatement: z.ZodOptional<z.ZodString>;
|
|
32
|
+
usage: z.ZodOptional<z.ZodString>;
|
|
33
|
+
dryRun: z.ZodBoolean;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
generatedName: string;
|
|
36
|
+
component: string;
|
|
37
|
+
dryRun: boolean;
|
|
38
|
+
filesWritten: string[];
|
|
39
|
+
dependenciesInstalled: string[];
|
|
40
|
+
importStatement?: string | undefined;
|
|
41
|
+
usage?: string | undefined;
|
|
42
|
+
}, {
|
|
43
|
+
generatedName: string;
|
|
44
|
+
component: string;
|
|
45
|
+
dryRun: boolean;
|
|
46
|
+
filesWritten: string[];
|
|
47
|
+
dependenciesInstalled: string[];
|
|
48
|
+
importStatement?: string | undefined;
|
|
49
|
+
usage?: string | undefined;
|
|
50
|
+
}>;
|
|
2
51
|
export declare function registerAddCommand(program: Command): void;
|
package/dist/commands/add.js
CHANGED
|
@@ -6,14 +6,26 @@ import { enableDebugLogger, logger } from '../util/logger.js';
|
|
|
6
6
|
import { MagicPathError } from '../util/error.js';
|
|
7
7
|
import { AuthRequiredError } from '../util/authError.js';
|
|
8
8
|
import { brandSpinner } from '../util/ui.js';
|
|
9
|
+
import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
|
|
9
10
|
import { fetchComponent, checkExistingFiles, writeComponentFiles, checkUtilsExists, writeUtilsFile, resolveComponentsPath, resolveUtilsPath, sanitizeComponentFolderName, extractComponentExports, generateImportStatement, generateUsageExample, writeUsageFile, DEFAULT_COMPONENTS_PATH, } from '../util/component.js';
|
|
10
11
|
import { installPackages } from '../util/dependencies.js';
|
|
11
12
|
import { runLoginFlow } from './auth.js';
|
|
12
|
-
const addOptionsSchema = z.object({
|
|
13
|
+
export const addOptionsSchema = z.object({
|
|
13
14
|
yes: z.boolean().default(false),
|
|
14
15
|
overwrite: z.boolean().default(false),
|
|
15
16
|
path: z.string().optional(),
|
|
16
17
|
debug: z.boolean().default(false),
|
|
18
|
+
dryRun: z.boolean().default(false),
|
|
19
|
+
inspect: z.boolean().default(false),
|
|
20
|
+
});
|
|
21
|
+
export const addOutputSchema = z.object({
|
|
22
|
+
component: z.string(),
|
|
23
|
+
generatedName: z.string(),
|
|
24
|
+
filesWritten: z.array(z.string()),
|
|
25
|
+
dependenciesInstalled: z.array(z.string()),
|
|
26
|
+
importStatement: z.string().optional(),
|
|
27
|
+
usage: z.string().optional(),
|
|
28
|
+
dryRun: z.boolean(),
|
|
17
29
|
});
|
|
18
30
|
export function registerAddCommand(program) {
|
|
19
31
|
program
|
|
@@ -24,6 +36,8 @@ export function registerAddCommand(program) {
|
|
|
24
36
|
.option('-o, --overwrite', 'Overwrite existing files', false)
|
|
25
37
|
.option('-p, --path <path>', `Custom path for components (default: ${DEFAULT_COMPONENTS_PATH})`)
|
|
26
38
|
.option('-d, --debug', 'Enable debug logging', false)
|
|
39
|
+
.option('--dry-run', 'Show what would happen without writing files', false)
|
|
40
|
+
.option('--inspect', 'Show component source code without installing (implies --dry-run)', false)
|
|
27
41
|
.action(async (generatedName, options) => {
|
|
28
42
|
try {
|
|
29
43
|
let addOptions;
|
|
@@ -35,6 +49,15 @@ export function registerAddCommand(program) {
|
|
|
35
49
|
}
|
|
36
50
|
if (addOptions.debug)
|
|
37
51
|
enableDebugLogger();
|
|
52
|
+
// --inspect implies --dry-run and --yes (no prompts, no writing)
|
|
53
|
+
if (addOptions.inspect) {
|
|
54
|
+
addOptions.dryRun = true;
|
|
55
|
+
addOptions.yes = true;
|
|
56
|
+
}
|
|
57
|
+
// In JSON mode, imply --yes (skip prompts)
|
|
58
|
+
const json = isJsonMode();
|
|
59
|
+
if (json)
|
|
60
|
+
addOptions.yes = true;
|
|
38
61
|
logger.debug({ generatedName, options: addOptions });
|
|
39
62
|
const cwd = process.cwd();
|
|
40
63
|
// Check if we're in a valid project directory
|
|
@@ -43,15 +66,20 @@ export function registerAddCommand(program) {
|
|
|
43
66
|
throw new MagicPathError('No package.json found. Please run this command from the root of your React project.');
|
|
44
67
|
}
|
|
45
68
|
// Step 1: Fetch component from registry
|
|
46
|
-
const fetchSpinner =
|
|
69
|
+
const fetchSpinner = json
|
|
70
|
+
? null
|
|
71
|
+
: brandSpinner(`Fetching component "${generatedName}"...`).start();
|
|
47
72
|
let componentData;
|
|
48
73
|
try {
|
|
49
74
|
componentData = await fetchComponent(generatedName);
|
|
50
|
-
fetchSpinner
|
|
75
|
+
fetchSpinner?.succeed(`Found component: ${componentData.name}`);
|
|
51
76
|
}
|
|
52
77
|
catch (err) {
|
|
53
78
|
if (err instanceof AuthRequiredError) {
|
|
54
|
-
fetchSpinner
|
|
79
|
+
fetchSpinner?.fail('Not logged in');
|
|
80
|
+
if (json) {
|
|
81
|
+
throw new MagicPathError('Not authenticated. Set MAGICPATH_TOKEN or run `magicpath-ai login`.');
|
|
82
|
+
}
|
|
55
83
|
const { shouldLogin } = await prompts({
|
|
56
84
|
type: 'confirm',
|
|
57
85
|
name: 'shouldLogin',
|
|
@@ -82,7 +110,7 @@ export function registerAddCommand(program) {
|
|
|
82
110
|
}
|
|
83
111
|
}
|
|
84
112
|
else {
|
|
85
|
-
fetchSpinner
|
|
113
|
+
fetchSpinner?.fail('Failed to fetch component');
|
|
86
114
|
if (err instanceof MagicPathError) {
|
|
87
115
|
throw err;
|
|
88
116
|
}
|
|
@@ -103,8 +131,10 @@ export function registerAddCommand(program) {
|
|
|
103
131
|
// Step 2: Check for existing files
|
|
104
132
|
const existingFiles = checkExistingFiles(componentData.files, componentsPath);
|
|
105
133
|
if (existingFiles.length > 0 && !addOptions.overwrite) {
|
|
106
|
-
|
|
107
|
-
|
|
134
|
+
if (!json) {
|
|
135
|
+
console.log('\nThe following files already exist:');
|
|
136
|
+
existingFiles.forEach((file) => console.log(` - ${file}`));
|
|
137
|
+
}
|
|
108
138
|
if (!addOptions.yes) {
|
|
109
139
|
const { shouldOverwrite } = await prompts({
|
|
110
140
|
type: 'confirm',
|
|
@@ -118,6 +148,9 @@ export function registerAddCommand(program) {
|
|
|
118
148
|
}
|
|
119
149
|
}
|
|
120
150
|
else {
|
|
151
|
+
if (json) {
|
|
152
|
+
throw new MagicPathError(`Files already exist: ${existingFiles.join(', ')}. Use --overwrite to replace.`);
|
|
153
|
+
}
|
|
121
154
|
console.log('Use --overwrite to replace existing files.');
|
|
122
155
|
return;
|
|
123
156
|
}
|
|
@@ -139,35 +172,100 @@ export function registerAddCommand(program) {
|
|
|
139
172
|
return;
|
|
140
173
|
}
|
|
141
174
|
}
|
|
175
|
+
// Build result data for JSON output
|
|
176
|
+
const filesWritten = componentData.files.map((f) => path.relative(cwd, path.join(componentsPath, f.path)));
|
|
177
|
+
// Extract import info
|
|
178
|
+
const mainFile = componentData.files[0];
|
|
179
|
+
let importStatement;
|
|
180
|
+
let usageStr;
|
|
181
|
+
if (mainFile) {
|
|
182
|
+
const fileName = mainFile.name.replace(/\.tsx?$/, '');
|
|
183
|
+
const importPath = addOptions.path
|
|
184
|
+
? `@/${addOptions.path}/${componentFolderName}/${fileName}`
|
|
185
|
+
: `@/components/magicpath/${componentFolderName}/${fileName}`;
|
|
186
|
+
const exportInfo = extractComponentExports(mainFile.content);
|
|
187
|
+
if (exportInfo) {
|
|
188
|
+
importStatement = generateImportStatement(exportInfo, importPath);
|
|
189
|
+
usageStr = generateUsageExample(exportInfo);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
importStatement = `import { ${fileName} } from '${importPath}';`;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Dry run: return what would happen without writing
|
|
196
|
+
if (addOptions.dryRun) {
|
|
197
|
+
const fileContents = addOptions.inspect || json
|
|
198
|
+
? componentData.files.map((f) => ({
|
|
199
|
+
path: f.path,
|
|
200
|
+
name: f.name,
|
|
201
|
+
content: f.content,
|
|
202
|
+
}))
|
|
203
|
+
: undefined;
|
|
204
|
+
if (json) {
|
|
205
|
+
jsonResult({
|
|
206
|
+
component: componentData.name,
|
|
207
|
+
generatedName: componentData.generatedName,
|
|
208
|
+
filesWritten,
|
|
209
|
+
files: fileContents,
|
|
210
|
+
dependenciesInstalled: componentData.dependencies,
|
|
211
|
+
importStatement,
|
|
212
|
+
usage: usageStr,
|
|
213
|
+
dryRun: true,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
console.log('\n[Dry run] Would install:');
|
|
217
|
+
console.log(` Component: ${componentData.name}`);
|
|
218
|
+
console.log(` Files: ${filesWritten.join(', ')}`);
|
|
219
|
+
console.log(` Dependencies: ${componentData.dependencies.join(', ') || 'none'}`);
|
|
220
|
+
if (importStatement)
|
|
221
|
+
console.log(` Import: ${importStatement}`);
|
|
222
|
+
// --inspect: show file contents
|
|
223
|
+
if (addOptions.inspect) {
|
|
224
|
+
for (const f of componentData.files) {
|
|
225
|
+
console.log(`\n${'─'.repeat(60)}`);
|
|
226
|
+
console.log(` ${f.path}`);
|
|
227
|
+
console.log(`${'─'.repeat(60)}`);
|
|
228
|
+
console.log(f.content);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
142
233
|
// Step 4: Write component files
|
|
143
|
-
const writeSpinner =
|
|
234
|
+
const writeSpinner = json
|
|
235
|
+
? null
|
|
236
|
+
: brandSpinner('Writing component files...').start();
|
|
144
237
|
try {
|
|
145
238
|
writeComponentFiles(componentData.files, componentsPath, true);
|
|
146
|
-
writeSpinner
|
|
239
|
+
writeSpinner?.succeed(`Wrote ${componentData.files.length} file(s) to ${path.relative(cwd, componentsPath) || '.'}`);
|
|
147
240
|
}
|
|
148
241
|
catch (err) {
|
|
149
|
-
writeSpinner
|
|
242
|
+
writeSpinner?.fail('Failed to write component files');
|
|
150
243
|
throw new MagicPathError('Failed to write component files. Please check permissions and try again.');
|
|
151
244
|
}
|
|
152
245
|
// Step 5: Install utils if needed
|
|
153
246
|
const utilsExists = checkUtilsExists(utilsPath);
|
|
154
247
|
if (!utilsExists && componentData.utils.content) {
|
|
155
|
-
const utilsSpinner =
|
|
248
|
+
const utilsSpinner = json
|
|
249
|
+
? null
|
|
250
|
+
: brandSpinner('Installing utilities...').start();
|
|
156
251
|
try {
|
|
157
252
|
writeUtilsFile(componentData.utils.content, utilsPath);
|
|
158
|
-
utilsSpinner
|
|
253
|
+
utilsSpinner?.succeed(`Wrote utils.ts to ${path.relative(cwd, utilsPath) || '.'}`);
|
|
159
254
|
}
|
|
160
255
|
catch (err) {
|
|
161
|
-
utilsSpinner
|
|
256
|
+
utilsSpinner?.fail('Failed to write utils file');
|
|
162
257
|
logger.debug({ err });
|
|
163
|
-
|
|
164
|
-
|
|
258
|
+
if (!json) {
|
|
259
|
+
console.log(' Warning: Could not write utils.ts. You may need to create it manually.');
|
|
260
|
+
}
|
|
165
261
|
}
|
|
166
262
|
}
|
|
167
263
|
// Step 6: Install dependencies
|
|
264
|
+
const installedDeps = [];
|
|
168
265
|
if (componentData.dependencies.length > 0) {
|
|
169
266
|
try {
|
|
170
267
|
const { installed, skipped } = installPackages(componentData.dependencies, cwd);
|
|
268
|
+
installedDeps.push(...installed);
|
|
171
269
|
if (skipped.length > 0) {
|
|
172
270
|
logger.debug({
|
|
173
271
|
message: 'Skipped already installed packages',
|
|
@@ -177,39 +275,44 @@ export function registerAddCommand(program) {
|
|
|
177
275
|
}
|
|
178
276
|
catch (err) {
|
|
179
277
|
if (err instanceof MagicPathError) {
|
|
180
|
-
|
|
181
|
-
|
|
278
|
+
if (!json)
|
|
279
|
+
console.log(`\n⚠️ ${err.message}`);
|
|
182
280
|
}
|
|
183
281
|
}
|
|
184
282
|
}
|
|
283
|
+
// JSON output
|
|
284
|
+
if (json) {
|
|
285
|
+
jsonResult({
|
|
286
|
+
component: componentData.name,
|
|
287
|
+
generatedName: componentData.generatedName,
|
|
288
|
+
filesWritten,
|
|
289
|
+
dependenciesInstalled: installedDeps,
|
|
290
|
+
importStatement,
|
|
291
|
+
usage: usageStr,
|
|
292
|
+
dryRun: false,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
185
295
|
// Step 7: Show success message and write usage file
|
|
186
296
|
console.log(`\n✅ Successfully added "${componentData.name}" to your project!`);
|
|
187
297
|
console.log(`\nUsage:`);
|
|
188
|
-
// Show import and usage example
|
|
189
|
-
const mainFile = componentData.files[0];
|
|
190
298
|
if (mainFile) {
|
|
191
299
|
const fileName = mainFile.name.replace(/\.tsx?$/, '');
|
|
192
300
|
const importPath = addOptions.path
|
|
193
301
|
? `@/${addOptions.path}/${componentFolderName}/${fileName}`
|
|
194
302
|
: `@/components/magicpath/${componentFolderName}/${fileName}`;
|
|
195
|
-
// Try to extract actual export info from the component source
|
|
196
303
|
const exportInfo = extractComponentExports(mainFile.content);
|
|
197
304
|
if (exportInfo) {
|
|
198
|
-
// Show accurate import statement based on actual exports
|
|
199
305
|
console.log(` ${generateImportStatement(exportInfo, importPath)}`);
|
|
200
306
|
console.log('');
|
|
201
307
|
console.log(` ${generateUsageExample(exportInfo)}`);
|
|
202
|
-
// Show required props hint if there are any
|
|
203
308
|
if (exportInfo.requiredProps.length > 0) {
|
|
204
309
|
console.log('');
|
|
205
310
|
console.log(` Required props: ${exportInfo.requiredProps.join(', ')}`);
|
|
206
311
|
}
|
|
207
312
|
}
|
|
208
313
|
else {
|
|
209
|
-
// Fallback to simple named export assumption
|
|
210
314
|
console.log(` import { ${fileName} } from '${importPath}';`);
|
|
211
315
|
}
|
|
212
|
-
// Write usage.md file to the component folder
|
|
213
316
|
try {
|
|
214
317
|
writeUsageFile(componentsPath, {
|
|
215
318
|
componentName: componentData.name,
|
|
@@ -221,11 +324,12 @@ export function registerAddCommand(program) {
|
|
|
221
324
|
}
|
|
222
325
|
catch (err) {
|
|
223
326
|
logger.debug({ err });
|
|
224
|
-
// Non-fatal - just skip writing the usage file
|
|
225
327
|
}
|
|
226
328
|
}
|
|
227
329
|
}
|
|
228
330
|
catch (err) {
|
|
331
|
+
if (isJsonMode())
|
|
332
|
+
jsonError(err);
|
|
229
333
|
if (err instanceof MagicPathError) {
|
|
230
334
|
console.error(`\n${err.message}`);
|
|
231
335
|
process.exit(1);
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACpC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CACP,iBAAiB,EACjB,8DAA8D,CAC/D;SACA,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,KAAK,CAAC;SAC5D,MAAM,CACL,mBAAmB,EACnB,wCAAwC,uBAAuB,GAAG,CACnE;SACA,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,8CAA8C,EAAE,KAAK,CAAC;SAC1E,MAAM,CACL,WAAW,EACX,mEAAmE,EACnE,KAAK,CACN;SACA,MAAM,CAAC,KAAK,EAAE,aAAqB,EAAE,OAAO,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,IAAI,UAAsB,CAAC;YAE3B,IAAI,CAAC;gBACH,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,UAAU,CAAC,KAAK;gBAAE,iBAAiB,EAAE,CAAC;YAE1C,iEAAiE;YACjE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;gBACzB,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC;YACxB,CAAC;YAED,2CAA2C;YAC3C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,IAAI;gBAAE,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC;YAEhC,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAErD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAE1B,8CAA8C;YAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,cAAc,CACtB,qFAAqF,CACtF,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,MAAM,YAAY,GAAG,IAAI;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY,CAAC,uBAAuB,aAAa,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YACrE,IAAI,aAAa,CAAC;YAClB,IAAI,CAAC;gBACH,aAAa,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;gBACpD,YAAY,EAAE,OAAO,CAAC,oBAAoB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;oBACrC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBAEpC,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,IAAI,cAAc,CACtB,qEAAqE,CACtE,CAAC;oBACJ,CAAC;oBAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC;wBACpC,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,aAAa;wBACnB,OAAO,EACL,6DAA6D;wBAC/D,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;oBAEH,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,OAAO;oBACT,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,OAAO;oBACT,CAAC;oBAED,0BAA0B;oBAC1B,MAAM,YAAY,GAAG,YAAY,CAC/B,uBAAuB,aAAa,MAAM,CAC3C,CAAC,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC;wBACH,aAAa,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;wBACpD,YAAY,CAAC,OAAO,CAAC,oBAAoB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjE,CAAC;oBAAC,OAAO,QAAQ,EAAE,CAAC;wBAClB,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;wBAC/C,IAAI,QAAQ,YAAY,cAAc,EAAE,CAAC;4BACvC,MAAM,QAAQ,CAAC;wBACjB,CAAC;wBACD,MAAM,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,YAAY,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBAChD,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;wBAClC,MAAM,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,uDAAuD;YACvD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7D,MAAM,mBAAmB,GAAG,2BAA2B,CACrD,aAAa,CAAC,IAAI,CACnB,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAExC,MAAM,CAAC,KAAK,CAAC;gBACX,QAAQ;gBACR,mBAAmB;gBACnB,cAAc;gBACd,SAAS;aACV,CAAC,CAAC;YAEH,mCAAmC;YACnC,MAAM,aAAa,GAAG,kBAAkB,CACtC,aAAa,CAAC,KAAK,EACnB,cAAc,CACf,CAAC;YAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;oBACpD,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC;gBAED,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;oBACpB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,OAAO,CAAC;wBACxC,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,uCAAuC;wBAChD,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;oBAEH,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;wBACvC,OAAO;oBACT,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,IAAI,cAAc,CACtB,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAChF,CAAC;oBACJ,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;oBAC1D,OAAO;gBACT,CAAC;YACH,CAAC;YAED,mDAAmD;YACnD,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CACT,YAAY,aAAa,CAAC,KAAK,CAAC,MAAM,eAAe,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,GAAG,EAAE,CACjG,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,mBAAmB,aAAa,CAAC,YAAY,CAAC,MAAM,aAAa,CAClE,CAAC;gBAEF,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,OAAO,CAAC;oBACtC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,4BAA4B;oBACrC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CACtD,CAAC;YAEF,sBAAsB;YACtB,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,eAAmC,CAAC;YACxC,IAAI,QAA4B,CAAC;YACjC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI;oBAChC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,IAAI,mBAAmB,IAAI,QAAQ,EAAE;oBAC3D,CAAC,CAAC,0BAA0B,mBAAmB,IAAI,QAAQ,EAAE,CAAC;gBAChE,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,UAAU,EAAE,CAAC;oBACf,eAAe,GAAG,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBAClE,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,YAAY,QAAQ,YAAY,UAAU,IAAI,CAAC;gBACnE,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,YAAY,GAChB,UAAU,CAAC,OAAO,IAAI,IAAI;oBACxB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;qBACnB,CAAC,CAAC;oBACL,CAAC,CAAC,SAAS,CAAC;gBAEhB,IAAI,IAAI,EAAE,CAAC;oBACT,UAAU,CAAC;wBACT,SAAS,EAAE,aAAa,CAAC,IAAI;wBAC7B,aAAa,EAAE,aAAa,CAAC,aAAa;wBAC1C,YAAY;wBACZ,KAAK,EAAE,YAAY;wBACnB,qBAAqB,EAAE,aAAa,CAAC,YAAY;wBACjD,eAAe;wBACf,KAAK,EAAE,QAAQ;wBACf,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CACT,mBAAmB,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CACrE,CAAC;gBACF,IAAI,eAAe;oBAAE,OAAO,CAAC,GAAG,CAAC,aAAa,eAAe,EAAE,CAAC,CAAC;gBAEjE,gCAAgC;gBAChC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACvB,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;wBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,MAAM,YAAY,GAAG,IAAI;gBACvB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;gBAC/D,YAAY,EAAE,OAAO,CACnB,SAAS,aAAa,CAAC,KAAK,CAAC,MAAM,eAAe,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,GAAG,EAAE,CAC9F,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,YAAY,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACtD,MAAM,IAAI,cAAc,CACtB,0EAA0E,CAC3E,CAAC;YACJ,CAAC;YAED,kCAAkC;YAClC,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChD,MAAM,YAAY,GAAG,IAAI;oBACvB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpD,IAAI,CAAC;oBACH,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBACvD,YAAY,EAAE,OAAO,CACnB,qBAAqB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,EAAE,CAC5D,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,YAAY,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBACjD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBACtB,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,OAAO,CAAC,GAAG,CACT,0EAA0E,CAC3E,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,+BAA+B;YAC/B,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,eAAe,CAC5C,aAAa,CAAC,YAAY,EAC1B,GAAG,CACJ,CAAC;oBACF,aAAa,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;oBACjC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,CAAC;4BACX,OAAO,EAAE,oCAAoC;4BAC7C,OAAO;yBACR,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;wBAClC,IAAI,CAAC,IAAI;4BAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,cAAc;YACd,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC;oBACT,SAAS,EAAE,aAAa,CAAC,IAAI;oBAC7B,aAAa,EAAE,aAAa,CAAC,aAAa;oBAC1C,YAAY;oBACZ,qBAAqB,EAAE,aAAa;oBACpC,eAAe;oBACf,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;YACL,CAAC;YAED,oDAAoD;YACpD,OAAO,CAAC,GAAG,CACT,2BAA2B,aAAa,CAAC,IAAI,oBAAoB,CAClE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAExB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI;oBAChC,CAAC,CAAC,KAAK,UAAU,CAAC,IAAI,IAAI,mBAAmB,IAAI,QAAQ,EAAE;oBAC3D,CAAC,CAAC,0BAA0B,mBAAmB,IAAI,QAAQ,EAAE,CAAC;gBAEhE,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAE7D,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,KAAK,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;oBACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAErD,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChB,OAAO,CAAC,GAAG,CACT,qBAAqB,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,YAAY,UAAU,IAAI,CAAC,CAAC;gBAChE,CAAC;gBAED,IAAI,CAAC;oBACH,cAAc,CAAC,cAAc,EAAE;wBAC7B,aAAa,EAAE,aAAa,CAAC,IAAI;wBACjC,UAAU;wBACV,UAAU;wBACV,QAAQ;qBACT,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CACT,uCAAuC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,EAAE,CACnG,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,UAAU,EAAE;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -4,7 +4,8 @@ import axios from 'axios';
|
|
|
4
4
|
import { exec } from 'child_process';
|
|
5
5
|
import { MagicPathError } from '../util/error.js';
|
|
6
6
|
import { makeWebUrl, makeAuthUrl } from '../util/api.js';
|
|
7
|
-
import { saveTokens, clearTokens } from '../util/auth.js';
|
|
7
|
+
import { saveTokens, clearTokens, loadTokens } from '../util/auth.js';
|
|
8
|
+
import { isJsonMode, jsonResult, jsonError } from '../util/output.js';
|
|
8
9
|
/**
|
|
9
10
|
* Run the interactive login flow: open browser, prompt for code, exchange for tokens.
|
|
10
11
|
* Returns true if login succeeded, false if cancelled.
|
|
@@ -50,14 +51,41 @@ export function registerAuthCommands(program) {
|
|
|
50
51
|
program
|
|
51
52
|
.command('login')
|
|
52
53
|
.description('Log in to your MagicPath account')
|
|
53
|
-
.
|
|
54
|
+
.option('--code <code>', 'Exchange an authorization code non-interactively')
|
|
55
|
+
.action(async (options) => {
|
|
54
56
|
try {
|
|
57
|
+
if (options.code) {
|
|
58
|
+
// Non-interactive: exchange auth code directly
|
|
59
|
+
const response = await axios.post(makeAuthUrl('extension/tokens'), {
|
|
60
|
+
token: options.code,
|
|
61
|
+
});
|
|
62
|
+
const { access_token, refresh_token } = response.data;
|
|
63
|
+
saveTokens(access_token, refresh_token);
|
|
64
|
+
if (isJsonMode()) {
|
|
65
|
+
jsonResult({ authenticated: true, method: 'code' });
|
|
66
|
+
}
|
|
67
|
+
console.log('Logged in successfully!');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (isJsonMode()) {
|
|
71
|
+
// In JSON mode, check if already authenticated via env var or stored tokens
|
|
72
|
+
if (process.env.MAGICPATH_TOKEN) {
|
|
73
|
+
jsonResult({ authenticated: true, method: 'environment' });
|
|
74
|
+
}
|
|
75
|
+
const tokens = loadTokens();
|
|
76
|
+
if (tokens) {
|
|
77
|
+
jsonResult({ authenticated: true, method: 'stored' });
|
|
78
|
+
}
|
|
79
|
+
jsonError(new Error('Not authenticated. Set MAGICPATH_TOKEN environment variable or run login interactively.'));
|
|
80
|
+
}
|
|
55
81
|
const loggedIn = await runLoginFlow();
|
|
56
82
|
if (!loggedIn) {
|
|
57
83
|
console.log('Login cancelled.');
|
|
58
84
|
}
|
|
59
85
|
}
|
|
60
86
|
catch (err) {
|
|
87
|
+
if (isJsonMode())
|
|
88
|
+
jsonError(err);
|
|
61
89
|
if (err instanceof MagicPathError) {
|
|
62
90
|
console.error(`\n${err.message}`);
|
|
63
91
|
process.exit(1);
|
|
@@ -70,6 +98,9 @@ export function registerAuthCommands(program) {
|
|
|
70
98
|
.description('Log out of your MagicPath account')
|
|
71
99
|
.action(() => {
|
|
72
100
|
clearTokens();
|
|
101
|
+
if (isJsonMode()) {
|
|
102
|
+
jsonResult({ loggedOut: true });
|
|
103
|
+
}
|
|
73
104
|
console.log('Logged out successfully.');
|
|
74
105
|
});
|
|
75
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|