assistant-ui 0.0.77 → 0.0.79
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 +16 -3
- package/dist/commands/create.d.ts +54 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +160 -29
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +103 -76
- package/dist/commands/init.js.map +1 -1
- package/dist/lib/create-from-example.d.ts.map +1 -1
- package/dist/lib/create-from-example.js +7 -3
- package/dist/lib/create-from-example.js.map +1 -1
- package/package.json +2 -2
- package/src/codemods/v0-12/__tests__/assistant-api-to-aui.test.ts +4 -4
- package/src/commands/create.ts +219 -37
- package/src/commands/init.ts +130 -88
- package/src/lib/create-from-example.ts +7 -3
package/README.md
CHANGED
|
@@ -4,14 +4,18 @@ The `assistant-ui` CLI for adding components and dependencies to your project.
|
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
|
-
Use the `init` command to initialize
|
|
7
|
+
Use the `init` command to initialize assistant-ui in an existing project.
|
|
8
8
|
|
|
9
9
|
The `init` command installs dependencies, adds components, and configures your project for assistant-ui.
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
npx assistant-ui@latest init
|
|
13
|
+
npx assistant-ui@latest init --yes # non-interactive / CI / agent mode
|
|
13
14
|
```
|
|
14
15
|
|
|
16
|
+
If no existing project is found (no `package.json`), `init` forwards to `create`.
|
|
17
|
+
Passing `--preset` to `init` also forwards to `create` for compatibility.
|
|
18
|
+
|
|
15
19
|
## create
|
|
16
20
|
|
|
17
21
|
Use the `create` command to scaffold a new Next.js project with assistant-ui.
|
|
@@ -28,14 +32,23 @@ You can choose from multiple templates:
|
|
|
28
32
|
# Default template with Vercel AI SDK
|
|
29
33
|
npx assistant-ui@latest create my-app
|
|
30
34
|
|
|
35
|
+
# Minimal starter
|
|
36
|
+
npx assistant-ui@latest create my-app -t minimal
|
|
37
|
+
|
|
31
38
|
# With Assistant Cloud for persistence
|
|
32
39
|
npx assistant-ui@latest create my-app -t cloud
|
|
33
40
|
|
|
34
|
-
# With
|
|
41
|
+
# With Assistant Cloud + Clerk auth
|
|
42
|
+
npx assistant-ui@latest create my-app -t cloud-clerk
|
|
43
|
+
|
|
44
|
+
# With LangGraph starter template
|
|
35
45
|
npx assistant-ui@latest create my-app -t langgraph
|
|
36
46
|
|
|
37
|
-
# With MCP
|
|
47
|
+
# With MCP starter template
|
|
38
48
|
npx assistant-ui@latest create my-app -t mcp
|
|
49
|
+
|
|
50
|
+
# With playground preset configuration
|
|
51
|
+
npx assistant-ui@latest create my-app --preset "https://www.assistant-ui.com/playground/init?preset=chatgpt"
|
|
39
52
|
```
|
|
40
53
|
|
|
41
54
|
## add
|
|
@@ -1,3 +1,57 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
declare const templates: {
|
|
4
|
+
readonly default: {
|
|
5
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter";
|
|
6
|
+
readonly label: "Default";
|
|
7
|
+
readonly hint: "Default template with Vercel AI SDK";
|
|
8
|
+
};
|
|
9
|
+
readonly minimal: {
|
|
10
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-minimal";
|
|
11
|
+
readonly label: "Minimal";
|
|
12
|
+
readonly hint: "Bare-bones starting point";
|
|
13
|
+
};
|
|
14
|
+
readonly cloud: {
|
|
15
|
+
readonly url: "https://github.com/assistant-ui/assistant-cloud-starter";
|
|
16
|
+
readonly label: "Cloud";
|
|
17
|
+
readonly hint: "Cloud-backed persistence starter";
|
|
18
|
+
};
|
|
19
|
+
readonly "cloud-clerk": {
|
|
20
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-cloud-clerk";
|
|
21
|
+
readonly label: "Cloud + Clerk";
|
|
22
|
+
readonly hint: "Cloud-backed starter with Clerk auth";
|
|
23
|
+
};
|
|
24
|
+
readonly langgraph: {
|
|
25
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-langgraph";
|
|
26
|
+
readonly label: "LangGraph";
|
|
27
|
+
readonly hint: "LangGraph starter template";
|
|
28
|
+
};
|
|
29
|
+
readonly mcp: {
|
|
30
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-mcp";
|
|
31
|
+
readonly label: "MCP";
|
|
32
|
+
readonly hint: "MCP starter template";
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
type TemplateName = keyof typeof templates;
|
|
36
|
+
export declare function resolveCreateTemplateName(params: {
|
|
37
|
+
template?: string;
|
|
38
|
+
stdinIsTTY?: boolean;
|
|
39
|
+
select?: typeof p.select;
|
|
40
|
+
isCancel?: typeof p.isCancel;
|
|
41
|
+
}): Promise<TemplateName | null>;
|
|
42
|
+
export declare function buildCreateNextAppArgs(params: {
|
|
43
|
+
projectDirectory?: string;
|
|
44
|
+
useNpm?: boolean;
|
|
45
|
+
usePnpm?: boolean;
|
|
46
|
+
useYarn?: boolean;
|
|
47
|
+
useBun?: boolean;
|
|
48
|
+
skipInstall?: boolean;
|
|
49
|
+
templateUrl: string;
|
|
50
|
+
}): string[];
|
|
51
|
+
export declare function resolveCreateProjectDirectory(params: {
|
|
52
|
+
projectDirectory?: string;
|
|
53
|
+
stdinIsTTY?: boolean;
|
|
54
|
+
}): string | undefined;
|
|
2
55
|
export declare const create: Command;
|
|
56
|
+
export {};
|
|
3
57
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAKpC,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BL,CAAC;AAEX,KAAK,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAa3C,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;CAC9B,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B/B;AAiCD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,EAAE,CAqBX;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAMD,eAAO,MAAM,MAAM,SAkHf,CAAC"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,17 +1,119 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { spawn } from "cross-spawn";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import * as p from "@clack/prompts";
|
|
4
6
|
import { logger } from "../lib/utils/logger.js";
|
|
5
7
|
import { createFromExample } from "../lib/create-from-example.js";
|
|
6
8
|
// Keep in sync with packages/create-assistant-ui/src/index.ts
|
|
7
9
|
const templates = {
|
|
8
|
-
default:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
default: {
|
|
11
|
+
url: "https://github.com/assistant-ui/assistant-ui-starter",
|
|
12
|
+
label: "Default",
|
|
13
|
+
hint: "Default template with Vercel AI SDK",
|
|
14
|
+
},
|
|
15
|
+
minimal: {
|
|
16
|
+
url: "https://github.com/assistant-ui/assistant-ui-starter-minimal",
|
|
17
|
+
label: "Minimal",
|
|
18
|
+
hint: "Bare-bones starting point",
|
|
19
|
+
},
|
|
20
|
+
cloud: {
|
|
21
|
+
url: "https://github.com/assistant-ui/assistant-cloud-starter",
|
|
22
|
+
label: "Cloud",
|
|
23
|
+
hint: "Cloud-backed persistence starter",
|
|
24
|
+
},
|
|
25
|
+
"cloud-clerk": {
|
|
26
|
+
url: "https://github.com/assistant-ui/assistant-ui-starter-cloud-clerk",
|
|
27
|
+
label: "Cloud + Clerk",
|
|
28
|
+
hint: "Cloud-backed starter with Clerk auth",
|
|
29
|
+
},
|
|
30
|
+
langgraph: {
|
|
31
|
+
url: "https://github.com/assistant-ui/assistant-ui-starter-langgraph",
|
|
32
|
+
label: "LangGraph",
|
|
33
|
+
hint: "LangGraph starter template",
|
|
34
|
+
},
|
|
35
|
+
mcp: {
|
|
36
|
+
url: "https://github.com/assistant-ui/assistant-ui-starter-mcp",
|
|
37
|
+
label: "MCP",
|
|
38
|
+
hint: "MCP starter template",
|
|
39
|
+
},
|
|
13
40
|
};
|
|
14
41
|
const templateNames = Object.keys(templates);
|
|
42
|
+
const templatePickerOptions = templateNames.map((name) => ({
|
|
43
|
+
value: name,
|
|
44
|
+
label: templates[name].label,
|
|
45
|
+
hint: templates[name].hint,
|
|
46
|
+
}));
|
|
47
|
+
export async function resolveCreateTemplateName(params) {
|
|
48
|
+
const { template, stdinIsTTY = process.stdin.isTTY, select = p.select, isCancel = p.isCancel, } = params;
|
|
49
|
+
if (template) {
|
|
50
|
+
return template;
|
|
51
|
+
}
|
|
52
|
+
if (!stdinIsTTY) {
|
|
53
|
+
return "default";
|
|
54
|
+
}
|
|
55
|
+
const selected = await select({
|
|
56
|
+
message: "Select a template:",
|
|
57
|
+
options: templatePickerOptions,
|
|
58
|
+
});
|
|
59
|
+
if (isCancel(selected)) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return selected;
|
|
63
|
+
}
|
|
64
|
+
class SpawnExitError extends Error {
|
|
65
|
+
code;
|
|
66
|
+
constructor(code) {
|
|
67
|
+
super(`Process exited with code ${code}`);
|
|
68
|
+
this.code = code;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function runSpawn(command, args, cwd) {
|
|
72
|
+
return new Promise((resolve, reject) => {
|
|
73
|
+
const child = spawn(command, args, {
|
|
74
|
+
stdio: "inherit",
|
|
75
|
+
cwd,
|
|
76
|
+
});
|
|
77
|
+
child.on("error", (error) => reject(error));
|
|
78
|
+
child.on("close", (code) => {
|
|
79
|
+
if (code !== 0) {
|
|
80
|
+
reject(new SpawnExitError(code || 1));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
resolve();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export function buildCreateNextAppArgs(params) {
|
|
89
|
+
const { projectDirectory, useNpm, usePnpm, useYarn, useBun, skipInstall, templateUrl, } = params;
|
|
90
|
+
const args = ["create-next-app@latest"];
|
|
91
|
+
if (projectDirectory)
|
|
92
|
+
args.push(projectDirectory);
|
|
93
|
+
if (useNpm)
|
|
94
|
+
args.push("--use-npm");
|
|
95
|
+
if (usePnpm)
|
|
96
|
+
args.push("--use-pnpm");
|
|
97
|
+
if (useYarn)
|
|
98
|
+
args.push("--use-yarn");
|
|
99
|
+
if (useBun)
|
|
100
|
+
args.push("--use-bun");
|
|
101
|
+
if (skipInstall)
|
|
102
|
+
args.push("--skip-install");
|
|
103
|
+
args.push("-e", templateUrl);
|
|
104
|
+
return args;
|
|
105
|
+
}
|
|
106
|
+
export function resolveCreateProjectDirectory(params) {
|
|
107
|
+
const { projectDirectory, stdinIsTTY = process.stdin.isTTY } = params;
|
|
108
|
+
if (projectDirectory)
|
|
109
|
+
return projectDirectory;
|
|
110
|
+
if (!stdinIsTTY)
|
|
111
|
+
return "my-aui-app";
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
function buildPresetAddArgs(presetUrl) {
|
|
115
|
+
return ["shadcn@latest", "add", "--yes", presetUrl];
|
|
116
|
+
}
|
|
15
117
|
export const create = new Command()
|
|
16
118
|
.name("create")
|
|
17
119
|
.description("create a new project")
|
|
@@ -19,19 +121,31 @@ export const create = new Command()
|
|
|
19
121
|
.usage(`${chalk.green("[project-directory]")} [options]`)
|
|
20
122
|
.option("-t, --template <template>", `template to use (${templateNames.join(", ")})`)
|
|
21
123
|
.option("-e, --example <example>", "create from an example (e.g., with-langgraph, with-ai-sdk-v6)")
|
|
124
|
+
.option("-p, --preset <url>", "preset URL from playground (e.g., https://www.assistant-ui.com/playground/init?preset=chatgpt)")
|
|
22
125
|
.option("--use-npm", "explicitly use npm")
|
|
23
126
|
.option("--use-pnpm", "explicitly use pnpm")
|
|
24
127
|
.option("--use-yarn", "explicitly use yarn")
|
|
25
128
|
.option("--use-bun", "explicitly use bun")
|
|
26
129
|
.option("--skip-install", "skip installing packages")
|
|
27
130
|
.action(async (projectDirectory, opts) => {
|
|
131
|
+
const resolvedProjectDirectory = resolveCreateProjectDirectory({
|
|
132
|
+
projectDirectory,
|
|
133
|
+
});
|
|
134
|
+
if (opts.example && opts.preset) {
|
|
135
|
+
logger.error("Cannot use --preset with --example.");
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
if (opts.preset && !resolvedProjectDirectory) {
|
|
139
|
+
logger.error("Project directory is required when using --preset.");
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
28
142
|
// Handle --example option
|
|
29
143
|
if (opts.example) {
|
|
30
|
-
if (!
|
|
144
|
+
if (!resolvedProjectDirectory) {
|
|
31
145
|
logger.error("Project directory is required when using --example");
|
|
32
146
|
process.exit(1);
|
|
33
147
|
}
|
|
34
|
-
await createFromExample(
|
|
148
|
+
await createFromExample(resolvedProjectDirectory, opts.example, {
|
|
35
149
|
skipInstall: opts.skipInstall,
|
|
36
150
|
useNpm: opts.useNpm,
|
|
37
151
|
usePnpm: opts.usePnpm,
|
|
@@ -41,8 +155,14 @@ export const create = new Command()
|
|
|
41
155
|
return;
|
|
42
156
|
}
|
|
43
157
|
// Handle --template option
|
|
44
|
-
const templateName =
|
|
45
|
-
|
|
158
|
+
const templateName = await resolveCreateTemplateName({
|
|
159
|
+
template: opts.template,
|
|
160
|
+
});
|
|
161
|
+
if (!templateName) {
|
|
162
|
+
p.cancel("Project creation cancelled.");
|
|
163
|
+
process.exit(0);
|
|
164
|
+
}
|
|
165
|
+
const templateUrl = templates[templateName]?.url;
|
|
46
166
|
if (!templateUrl) {
|
|
47
167
|
logger.error(`Unknown template: ${opts.template}`);
|
|
48
168
|
logger.info(`Available templates: ${templateNames.join(", ")}`);
|
|
@@ -50,28 +170,39 @@ export const create = new Command()
|
|
|
50
170
|
}
|
|
51
171
|
logger.info(`Creating project with template: ${templateName}`);
|
|
52
172
|
logger.break();
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
logger.error(`Failed to create project: ${error.message}`);
|
|
64
|
-
process.exit(1);
|
|
173
|
+
const createNextAppArgs = buildCreateNextAppArgs({
|
|
174
|
+
...(resolvedProjectDirectory
|
|
175
|
+
? { projectDirectory: resolvedProjectDirectory }
|
|
176
|
+
: {}),
|
|
177
|
+
...(opts.useNpm ? { useNpm: true } : {}),
|
|
178
|
+
...(opts.usePnpm ? { usePnpm: true } : {}),
|
|
179
|
+
...(opts.useYarn ? { useYarn: true } : {}),
|
|
180
|
+
...(opts.useBun ? { useBun: true } : {}),
|
|
181
|
+
...(opts.skipInstall ? { skipInstall: true } : {}),
|
|
182
|
+
templateUrl,
|
|
65
183
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
184
|
+
try {
|
|
185
|
+
await runSpawn("npx", createNextAppArgs);
|
|
186
|
+
if (opts.preset) {
|
|
187
|
+
if (!resolvedProjectDirectory) {
|
|
188
|
+
logger.error("Project directory is required when using --preset.");
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
logger.info("Applying preset configuration...");
|
|
72
192
|
logger.break();
|
|
73
|
-
|
|
193
|
+
await runSpawn("npx", buildPresetAddArgs(opts.preset), path.resolve(process.cwd(), resolvedProjectDirectory));
|
|
74
194
|
}
|
|
75
|
-
|
|
195
|
+
logger.break();
|
|
196
|
+
logger.success("Project created successfully!");
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (error instanceof SpawnExitError) {
|
|
200
|
+
logger.error(`Project creation failed with code ${error.code}`);
|
|
201
|
+
process.exit(error.code);
|
|
202
|
+
}
|
|
203
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
204
|
+
logger.error(`Failed to create project: ${message}`);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
76
207
|
});
|
|
77
208
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,+BAA4B;AAC7C,OAAO,EAAE,iBAAiB,EAAE,sCAAmC;AAE/D,8DAA8D;AAC9D,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,sDAAsD;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
interface ExistingProjectInitPlan {
|
|
3
|
+
initArgs: string[] | null;
|
|
4
|
+
addArgs: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare function createExistingProjectInitPlan(params: {
|
|
7
|
+
yes: boolean;
|
|
8
|
+
overwrite: boolean;
|
|
9
|
+
registryUrl: string;
|
|
10
|
+
}): ExistingProjectInitPlan;
|
|
11
|
+
export declare function isNonInteractiveShell(stdinIsTTY?: boolean): boolean;
|
|
2
12
|
export declare const init: Command;
|
|
13
|
+
export {};
|
|
3
14
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAmB5C,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,uBAAuB,CAiB1B;AAED,wBAAgB,qBAAqB,CACnC,UAAU,UAAsB,GAC/B,OAAO,CAET;AA2BD,eAAO,MAAM,IAAI,SAkGb,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,26 +1,63 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
1
|
+
import { Command, Option } from "commander";
|
|
2
2
|
import { spawn } from "cross-spawn";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { logger } from "../lib/utils/logger.js";
|
|
6
|
-
import {
|
|
6
|
+
import { create } from "./create.js";
|
|
7
7
|
const DEFAULT_REGISTRY_URL = "https://r.assistant-ui.com/chat/b/ai-sdk-quick-start/json";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
8
|
+
class SpawnExitError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
constructor(code) {
|
|
11
|
+
super(`Process exited with code ${code}`);
|
|
12
|
+
this.code = code;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function createExistingProjectInitPlan(params) {
|
|
16
|
+
const { yes, overwrite, registryUrl } = params;
|
|
17
|
+
if (!yes) {
|
|
18
|
+
const addArgs = [`shadcn@latest`, "add"];
|
|
19
|
+
if (overwrite)
|
|
20
|
+
addArgs.push("--overwrite");
|
|
21
|
+
addArgs.push(registryUrl);
|
|
22
|
+
return { initArgs: null, addArgs };
|
|
23
|
+
}
|
|
24
|
+
const initArgs = [`shadcn@latest`, "init", "--defaults", "--yes"];
|
|
25
|
+
const addArgs = [`shadcn@latest`, "add", "--yes"];
|
|
26
|
+
if (overwrite)
|
|
27
|
+
addArgs.push("--overwrite");
|
|
28
|
+
addArgs.push(registryUrl);
|
|
29
|
+
return { initArgs, addArgs };
|
|
30
|
+
}
|
|
31
|
+
export function isNonInteractiveShell(stdinIsTTY = process.stdin.isTTY) {
|
|
32
|
+
return !stdinIsTTY;
|
|
33
|
+
}
|
|
34
|
+
async function runSpawn(command, args, cwd) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const child = spawn(command, args, {
|
|
37
|
+
stdio: "inherit",
|
|
38
|
+
cwd,
|
|
39
|
+
});
|
|
40
|
+
child.on("error", (error) => {
|
|
41
|
+
reject(error);
|
|
42
|
+
});
|
|
43
|
+
child.on("close", (code) => {
|
|
44
|
+
if (code !== 0) {
|
|
45
|
+
reject(new SpawnExitError(code || 1));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
resolve();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
17
53
|
export const init = new Command()
|
|
18
54
|
.name("init")
|
|
19
|
-
.description("initialize assistant-ui in
|
|
55
|
+
.description("initialize assistant-ui in an existing project")
|
|
20
56
|
.argument("[project-directory]", "directory for the new project")
|
|
57
|
+
.option("-y, --yes", "skip confirmation prompt.", false)
|
|
58
|
+
.option("-o, --overwrite", "overwrite existing files.", false)
|
|
21
59
|
.option("-c, --cwd <cwd>", "the working directory. defaults to the current directory.", process.cwd())
|
|
22
|
-
.
|
|
23
|
-
.option("-t, --template <template>", `template to use (${templateNames.join(", ")})`, "minimal")
|
|
60
|
+
.addOption(new Option("-p, --preset <url>", "preset URL from playground (forwarded to 'assistant-ui create')").hideHelp())
|
|
24
61
|
.option("--use-npm", "explicitly use npm")
|
|
25
62
|
.option("--use-pnpm", "explicitly use pnpm")
|
|
26
63
|
.option("--use-yarn", "explicitly use yarn")
|
|
@@ -28,84 +65,74 @@ export const init = new Command()
|
|
|
28
65
|
.option("--skip-install", "skip installing packages")
|
|
29
66
|
.action(async (projectDirectory, opts) => {
|
|
30
67
|
const cwd = opts.cwd;
|
|
68
|
+
const presetUrl = opts.preset;
|
|
31
69
|
const targetDir = projectDirectory
|
|
32
70
|
? path.resolve(cwd, projectDirectory)
|
|
33
71
|
: cwd;
|
|
34
|
-
const
|
|
35
|
-
if (
|
|
72
|
+
const componentsConfigPath = path.join(targetDir, "components.json");
|
|
73
|
+
if (!presetUrl && fs.existsSync(componentsConfigPath)) {
|
|
36
74
|
logger.warn("Project is already initialized.");
|
|
37
75
|
logger.info("Use 'assistant-ui add' to add more components.");
|
|
38
76
|
return;
|
|
39
77
|
}
|
|
40
78
|
const packageJsonPath = path.join(targetDir, "package.json");
|
|
41
79
|
const packageJsonExists = fs.existsSync(packageJsonPath);
|
|
42
|
-
if (packageJsonExists) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
logger.
|
|
80
|
+
if (presetUrl || !packageJsonExists) {
|
|
81
|
+
if (!presetUrl) {
|
|
82
|
+
logger.info("No existing project found. Running 'create' instead...");
|
|
83
|
+
logger.break();
|
|
46
84
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
stdio: "inherit",
|
|
53
|
-
cwd: targetDir,
|
|
54
|
-
});
|
|
55
|
-
child.on("error", (error) => {
|
|
56
|
-
logger.error(`Failed to initialize: ${error.message}`);
|
|
57
|
-
process.exit(1);
|
|
58
|
-
});
|
|
59
|
-
child.on("close", (code) => {
|
|
60
|
-
if (code !== 0) {
|
|
61
|
-
logger.error(`Initialization failed with code ${code}`);
|
|
62
|
-
process.exit(code || 1);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
logger.break();
|
|
66
|
-
logger.success("Project initialized successfully!");
|
|
67
|
-
logger.info("You can now add more components with 'assistant-ui add'");
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
const templateName = opts.template;
|
|
73
|
-
const templateUrl = templates[templateName];
|
|
74
|
-
if (!templateUrl) {
|
|
75
|
-
logger.error(`Unknown template: ${opts.template}`);
|
|
76
|
-
logger.info(`Available templates: ${templateNames.join(", ")}`);
|
|
77
|
-
process.exit(1);
|
|
78
|
-
}
|
|
79
|
-
logger.info(`Creating a new assistant-ui project (template: ${templateName})...`);
|
|
80
|
-
logger.break();
|
|
81
|
-
const cnaArgs = ["create-next-app@latest"];
|
|
82
|
-
cnaArgs.push(projectDirectory || ".");
|
|
83
|
-
cnaArgs.push("-e", templateUrl);
|
|
85
|
+
const createArgs = [];
|
|
86
|
+
if (projectDirectory)
|
|
87
|
+
createArgs.push(projectDirectory);
|
|
88
|
+
if (presetUrl)
|
|
89
|
+
createArgs.push("--preset", presetUrl);
|
|
84
90
|
if (opts.useNpm)
|
|
85
|
-
|
|
91
|
+
createArgs.push("--use-npm");
|
|
86
92
|
if (opts.usePnpm)
|
|
87
|
-
|
|
93
|
+
createArgs.push("--use-pnpm");
|
|
88
94
|
if (opts.useYarn)
|
|
89
|
-
|
|
95
|
+
createArgs.push("--use-yarn");
|
|
90
96
|
if (opts.useBun)
|
|
91
|
-
|
|
97
|
+
createArgs.push("--use-bun");
|
|
92
98
|
if (opts.skipInstall)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
99
|
+
createArgs.push("--skip-install");
|
|
100
|
+
await create.parseAsync(createArgs, { from: "user" });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const registryUrl = DEFAULT_REGISTRY_URL;
|
|
104
|
+
logger.info("Initializing assistant-ui in existing project...");
|
|
105
|
+
logger.break();
|
|
106
|
+
if (!opts.yes && isNonInteractiveShell()) {
|
|
107
|
+
logger.error([
|
|
108
|
+
"Detected a non-interactive shell, but 'assistant-ui init' needs interactive prompts by default.",
|
|
109
|
+
"To run this in CI/agent mode, re-run with '--yes' so shadcn initialization and component install run non-interactively.",
|
|
110
|
+
"Example: assistant-ui init --yes",
|
|
111
|
+
].join("\n"));
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const { initArgs, addArgs } = createExistingProjectInitPlan({
|
|
116
|
+
yes: opts.yes,
|
|
117
|
+
overwrite: opts.overwrite,
|
|
118
|
+
registryUrl,
|
|
108
119
|
});
|
|
120
|
+
if (initArgs) {
|
|
121
|
+
await runSpawn("npx", initArgs, targetDir);
|
|
122
|
+
}
|
|
123
|
+
await runSpawn("npx", addArgs, targetDir);
|
|
124
|
+
logger.break();
|
|
125
|
+
logger.success("Project initialized successfully!");
|
|
126
|
+
logger.info("You can now add more components with 'assistant-ui add'");
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (error instanceof SpawnExitError) {
|
|
130
|
+
logger.error(`Initialization failed with code ${error.code}`);
|
|
131
|
+
process.exit(error.code);
|
|
132
|
+
}
|
|
133
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
134
|
+
logger.error(`Failed to initialize: ${message}`);
|
|
135
|
+
process.exit(1);
|
|
109
136
|
}
|
|
110
137
|
});
|
|
111
138
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|