assistant-ui 0.0.92 → 0.0.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codemods/utils/createTransformer.d.ts +17 -13
- package/dist/codemods/utils/createTransformer.d.ts.map +1 -1
- package/dist/codemods/utils/createTransformer.js +18 -15
- package/dist/codemods/utils/createTransformer.js.map +1 -1
- package/dist/codemods/v0-11/content-part-to-message-part.d.ts +3 -1
- package/dist/codemods/v0-11/content-part-to-message-part.d.ts.map +1 -1
- package/dist/codemods/v0-11/content-part-to-message-part.js +98 -135
- package/dist/codemods/v0-11/content-part-to-message-part.js.map +1 -1
- package/dist/codemods/v0-12/assistant-api-to-aui.d.ts +3 -1
- package/dist/codemods/v0-12/assistant-api-to-aui.d.ts.map +1 -1
- package/dist/codemods/v0-12/assistant-api-to-aui.js +126 -213
- package/dist/codemods/v0-12/assistant-api-to-aui.js.map +1 -1
- package/dist/codemods/v0-12/event-names-to-camelcase.d.ts +3 -1
- package/dist/codemods/v0-12/event-names-to-camelcase.d.ts.map +1 -1
- package/dist/codemods/v0-12/event-names-to-camelcase.js +33 -38
- package/dist/codemods/v0-12/event-names-to-camelcase.js.map +1 -1
- package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts +3 -1
- package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts.map +1 -1
- package/dist/codemods/v0-12/primitive-if-to-aui-if.js +212 -297
- package/dist/codemods/v0-12/primitive-if-to-aui-if.js.map +1 -1
- package/dist/codemods/v0-8/ui-package-split.d.ts +3 -1
- package/dist/codemods/v0-8/ui-package-split.d.ts.map +1 -1
- package/dist/codemods/v0-8/ui-package-split.js +121 -164
- package/dist/codemods/v0-8/ui-package-split.js.map +1 -1
- package/dist/codemods/v0-9/edge-package-split.d.ts +3 -1
- package/dist/codemods/v0-9/edge-package-split.d.ts.map +1 -1
- package/dist/codemods/v0-9/edge-package-split.js +96 -140
- package/dist/codemods/v0-9/edge-package-split.js.map +1 -1
- package/dist/commands/add.d.ts +16 -12
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +53 -64
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/agent.d.ts +5 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +16 -25
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/create.d.ts +34 -30
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +446 -527
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/info.d.ts +5 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +233 -314
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.d.ts +12 -9
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +98 -107
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts +5 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +175 -214
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/update.d.ts +5 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +46 -55
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts +11 -7
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +26 -38
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.js +15 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/create-project.d.ts +24 -21
- package/dist/lib/create-project.d.ts.map +1 -1
- package/dist/lib/create-project.js +227 -297
- package/dist/lib/create-project.js.map +1 -1
- package/dist/lib/install-ai-sdk-lib.d.ts +4 -1
- package/dist/lib/install-ai-sdk-lib.d.ts.map +1 -1
- package/dist/lib/install-ai-sdk-lib.js +12 -8
- package/dist/lib/install-ai-sdk-lib.js.map +1 -1
- package/dist/lib/install-edge-lib.d.ts +4 -1
- package/dist/lib/install-edge-lib.d.ts.map +1 -1
- package/dist/lib/install-edge-lib.js +16 -12
- package/dist/lib/install-edge-lib.js.map +1 -1
- package/dist/lib/install-ui-lib.d.ts +4 -1
- package/dist/lib/install-ui-lib.d.ts.map +1 -1
- package/dist/lib/install-ui-lib.js +12 -8
- package/dist/lib/install-ui-lib.js.map +1 -1
- package/dist/lib/run-spawn.d.ts +7 -4
- package/dist/lib/run-spawn.d.ts.map +1 -1
- package/dist/lib/run-spawn.js +23 -23
- package/dist/lib/run-spawn.js.map +1 -1
- package/dist/lib/transform-options.d.ts +8 -5
- package/dist/lib/transform-options.d.ts.map +1 -1
- package/dist/lib/transform-options.js +0 -2
- package/dist/lib/transform.d.ts +15 -11
- package/dist/lib/transform.d.ts.map +1 -1
- package/dist/lib/transform.js +97 -114
- package/dist/lib/transform.js.map +1 -1
- package/dist/lib/upgrade.d.ts +6 -2
- package/dist/lib/upgrade.d.ts.map +1 -1
- package/dist/lib/upgrade.js +62 -64
- package/dist/lib/upgrade.js.map +1 -1
- package/dist/lib/utils/config.d.ts +21 -18
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js +24 -28
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/utils/file-scanner.d.ts +9 -6
- package/dist/lib/utils/file-scanner.d.ts.map +1 -1
- package/dist/lib/utils/file-scanner.js +44 -51
- package/dist/lib/utils/file-scanner.js.map +1 -1
- package/dist/lib/utils/logger.d.ts +10 -7
- package/dist/lib/utils/logger.d.ts.map +1 -1
- package/dist/lib/utils/logger.js +23 -19
- package/dist/lib/utils/logger.js.map +1 -1
- package/dist/lib/utils/package-installer.d.ts +10 -7
- package/dist/lib/utils/package-installer.d.ts.map +1 -1
- package/dist/lib/utils/package-installer.js +18 -19
- package/dist/lib/utils/package-installer.js.map +1 -1
- package/dist/lib/utils/package-manager.d.ts +10 -7
- package/dist/lib/utils/package-manager.d.ts.map +1 -1
- package/dist/lib/utils/package-manager.js +68 -59
- package/dist/lib/utils/package-manager.js.map +1 -1
- package/package.json +7 -7
- package/src/commands/create.ts +1 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/transform-options.js.map +0 -1
package/dist/commands/info.js
CHANGED
|
@@ -1,357 +1,276 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import * as fs from "node:fs";
|
|
3
|
-
import * as os from "node:os";
|
|
4
|
-
import * as path from "node:path";
|
|
5
|
-
import { spawnSync } from "node:child_process";
|
|
6
2
|
import chalk from "chalk";
|
|
3
|
+
import * as fs$1 from "node:fs";
|
|
4
|
+
import * as path$1 from "node:path";
|
|
7
5
|
import { detect } from "detect-package-manager";
|
|
6
|
+
import { spawnSync } from "node:child_process";
|
|
7
|
+
import * as os$1 from "node:os";
|
|
8
|
+
//#region src/commands/info.ts
|
|
8
9
|
const ASSISTANT_UI_PACKAGES = [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"@assistant-ui/react-lexical",
|
|
32
|
-
"@assistant-ui/react-syntax-highlighter",
|
|
33
|
-
"@assistant-ui/react-hook-form",
|
|
34
|
-
// Observability & DevTools
|
|
35
|
-
"@assistant-ui/react-o11y",
|
|
36
|
-
"@assistant-ui/react-devtools",
|
|
10
|
+
"@assistant-ui/react",
|
|
11
|
+
"@assistant-ui/react-native",
|
|
12
|
+
"@assistant-ui/react-ink",
|
|
13
|
+
"@assistant-ui/core",
|
|
14
|
+
"@assistant-ui/store",
|
|
15
|
+
"@assistant-ui/tap",
|
|
16
|
+
"assistant-stream",
|
|
17
|
+
"assistant-cloud",
|
|
18
|
+
"@assistant-ui/cloud-ai-sdk",
|
|
19
|
+
"@assistant-ui/react-ai-sdk",
|
|
20
|
+
"@assistant-ui/react-langgraph",
|
|
21
|
+
"@assistant-ui/react-ag-ui",
|
|
22
|
+
"@assistant-ui/react-a2a",
|
|
23
|
+
"@assistant-ui/react-data-stream",
|
|
24
|
+
"@assistant-ui/react-google-adk",
|
|
25
|
+
"@assistant-ui/react-markdown",
|
|
26
|
+
"@assistant-ui/react-streamdown",
|
|
27
|
+
"@assistant-ui/react-lexical",
|
|
28
|
+
"@assistant-ui/react-syntax-highlighter",
|
|
29
|
+
"@assistant-ui/react-hook-form",
|
|
30
|
+
"@assistant-ui/react-o11y",
|
|
31
|
+
"@assistant-ui/react-devtools"
|
|
37
32
|
];
|
|
38
33
|
const ECOSYSTEM_PACKAGES = [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
"react",
|
|
35
|
+
"react-dom",
|
|
36
|
+
"react-native",
|
|
37
|
+
"next",
|
|
38
|
+
"vite",
|
|
39
|
+
"expo",
|
|
40
|
+
"ai",
|
|
41
|
+
"zod",
|
|
42
|
+
"zustand",
|
|
43
|
+
"typescript"
|
|
49
44
|
];
|
|
50
|
-
// Packages that users should NOT install directly — they are internal
|
|
51
|
-
// dependencies pulled in automatically by distribution packages.
|
|
52
45
|
const SHOULD_NOT_DIRECT_INSTALL = new Set([
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
"@assistant-ui/core",
|
|
47
|
+
"@assistant-ui/store",
|
|
48
|
+
"@assistant-ui/tap"
|
|
56
49
|
]);
|
|
57
50
|
function resolvePackageJson(pkg, cwd) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return null;
|
|
51
|
+
let dir = cwd;
|
|
52
|
+
const root = path$1.parse(dir).root;
|
|
53
|
+
while (dir !== root) {
|
|
54
|
+
const candidate = path$1.join(dir, "node_modules", ...pkg.split("/"), "package.json");
|
|
55
|
+
if (fs$1.existsSync(candidate)) return candidate;
|
|
56
|
+
dir = path$1.dirname(dir);
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
67
59
|
}
|
|
68
60
|
function getInstalledVersion(pkg, cwd) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
// ignore
|
|
78
|
-
}
|
|
79
|
-
return null;
|
|
61
|
+
try {
|
|
62
|
+
const pkgJsonPath = resolvePackageJson(pkg, cwd);
|
|
63
|
+
if (pkgJsonPath) return JSON.parse(fs$1.readFileSync(pkgJsonPath, "utf8")).version ?? null;
|
|
64
|
+
} catch {}
|
|
65
|
+
return null;
|
|
80
66
|
}
|
|
81
67
|
function findWorkspaceRoot(cwd) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// ignore
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
dir = path.dirname(dir);
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
68
|
+
let dir = path$1.dirname(cwd);
|
|
69
|
+
const root = path$1.parse(dir).root;
|
|
70
|
+
while (dir !== root) {
|
|
71
|
+
if (fs$1.existsSync(path$1.join(dir, "pnpm-workspace.yaml"))) return dir;
|
|
72
|
+
const pkgPath = path$1.join(dir, "package.json");
|
|
73
|
+
if (fs$1.existsSync(pkgPath)) try {
|
|
74
|
+
if (JSON.parse(fs$1.readFileSync(pkgPath, "utf8")).workspaces) return dir;
|
|
75
|
+
} catch {}
|
|
76
|
+
dir = path$1.dirname(dir);
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
101
79
|
}
|
|
102
80
|
function readProjectDeps(projectPkg) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
81
|
+
return {
|
|
82
|
+
...projectPkg.dependencies ?? {},
|
|
83
|
+
...projectPkg.devDependencies ?? {}
|
|
84
|
+
};
|
|
107
85
|
}
|
|
108
86
|
function getSpecifiedRange(pkg, projectPkg) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
87
|
+
const deps = projectPkg.dependencies ?? {};
|
|
88
|
+
const devDeps = projectPkg.devDependencies ?? {};
|
|
89
|
+
return deps[pkg] ?? devDeps[pkg] ?? null;
|
|
112
90
|
}
|
|
113
91
|
function getPeerDeps(pkg, cwd) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch {
|
|
122
|
-
// ignore
|
|
123
|
-
}
|
|
124
|
-
return null;
|
|
92
|
+
try {
|
|
93
|
+
const pkgJsonPath = resolvePackageJson(pkg, cwd);
|
|
94
|
+
if (pkgJsonPath) return JSON.parse(fs$1.readFileSync(pkgJsonPath, "utf8")).peerDependencies ?? null;
|
|
95
|
+
} catch {}
|
|
96
|
+
return null;
|
|
125
97
|
}
|
|
126
98
|
function detectFramework(projectPkg, cwd) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
if (deps.vite) {
|
|
137
|
-
const v = getInstalledVersion("vite", cwd);
|
|
138
|
-
return `Vite ${v ?? deps.vite}`;
|
|
139
|
-
}
|
|
140
|
-
if (deps["@remix-run/react"] || deps.remix)
|
|
141
|
-
return "Remix";
|
|
142
|
-
if (deps.gatsby)
|
|
143
|
-
return "Gatsby";
|
|
144
|
-
if (deps.astro)
|
|
145
|
-
return "Astro";
|
|
146
|
-
return "Unknown";
|
|
99
|
+
const deps = readProjectDeps(projectPkg);
|
|
100
|
+
if (deps.next) return `Next.js ${getInstalledVersion("next", cwd) ?? deps.next}`;
|
|
101
|
+
if (deps.expo) return `Expo ${getInstalledVersion("expo", cwd) ?? deps.expo}`;
|
|
102
|
+
if (deps.vite) return `Vite ${getInstalledVersion("vite", cwd) ?? deps.vite}`;
|
|
103
|
+
if (deps["@remix-run/react"] || deps.remix) return "Remix";
|
|
104
|
+
if (deps.gatsby) return "Gatsby";
|
|
105
|
+
if (deps.astro) return "Astro";
|
|
106
|
+
return "Unknown";
|
|
147
107
|
}
|
|
148
108
|
function getOsInfo() {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
case "win32":
|
|
163
|
-
return `Windows ${release} (${arch})`;
|
|
164
|
-
case "linux":
|
|
165
|
-
return `Linux ${release} (${arch})`;
|
|
166
|
-
default:
|
|
167
|
-
return `${platform} ${release} (${arch})`;
|
|
168
|
-
}
|
|
109
|
+
const platform = os$1.platform();
|
|
110
|
+
const arch = os$1.arch();
|
|
111
|
+
const release = os$1.release();
|
|
112
|
+
switch (platform) {
|
|
113
|
+
case "darwin": {
|
|
114
|
+
const macVer = spawnSync("sw_vers", ["-productVersion"], { encoding: "utf8" }).stdout?.trim();
|
|
115
|
+
return macVer ? `macOS ${macVer} (${arch})` : `macOS ${release} (${arch})`;
|
|
116
|
+
}
|
|
117
|
+
case "win32": return `Windows ${release} (${arch})`;
|
|
118
|
+
case "linux": return `Linux ${release} (${arch})`;
|
|
119
|
+
default: return `${platform} ${release} (${arch})`;
|
|
120
|
+
}
|
|
169
121
|
}
|
|
170
122
|
async function getPackageManagerInfo(cwd) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
123
|
+
const pm = await detect({ cwd });
|
|
124
|
+
return {
|
|
125
|
+
name: pm,
|
|
126
|
+
version: spawnSync(pm, ["--version"], {
|
|
127
|
+
encoding: "utf8",
|
|
128
|
+
cwd
|
|
129
|
+
}).stdout?.trim() ?? "unknown"
|
|
130
|
+
};
|
|
178
131
|
}
|
|
179
132
|
function satisfiesRange(version, range) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const versionMajor = major(version);
|
|
191
|
-
if (Number.isNaN(rangeMajor) || Number.isNaN(versionMajor))
|
|
192
|
-
return true;
|
|
193
|
-
if (range.startsWith("^"))
|
|
194
|
-
return versionMajor >= rangeMajor;
|
|
195
|
-
if (range.startsWith(">="))
|
|
196
|
-
return versionMajor >= rangeMajor;
|
|
197
|
-
return versionMajor >= rangeMajor;
|
|
133
|
+
if (range === "*" || range === "any") return true;
|
|
134
|
+
const clean = (v) => v.replace(/^[^\d]*/, "");
|
|
135
|
+
const major = (v) => parseInt(clean(v).split(".")[0], 10);
|
|
136
|
+
if (range.includes("||")) return range.split("||").some((part) => satisfiesRange(version, part.trim()));
|
|
137
|
+
const rangeMajor = major(range);
|
|
138
|
+
const versionMajor = major(version);
|
|
139
|
+
if (Number.isNaN(rangeMajor) || Number.isNaN(versionMajor)) return true;
|
|
140
|
+
if (range.startsWith("^")) return versionMajor >= rangeMajor;
|
|
141
|
+
if (range.startsWith(">=")) return versionMajor >= rangeMajor;
|
|
142
|
+
return versionMajor >= rangeMajor;
|
|
198
143
|
}
|
|
199
144
|
function collectPackages(names, cwd, projectPkg) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
return result;
|
|
145
|
+
const result = [];
|
|
146
|
+
const deps = readProjectDeps(projectPkg);
|
|
147
|
+
for (const name of names) {
|
|
148
|
+
const version = getInstalledVersion(name, cwd);
|
|
149
|
+
if (version) result.push({
|
|
150
|
+
name,
|
|
151
|
+
version,
|
|
152
|
+
range: getSpecifiedRange(name, projectPkg)
|
|
153
|
+
});
|
|
154
|
+
else {
|
|
155
|
+
const range = deps[name];
|
|
156
|
+
if (range && !range.startsWith("workspace:")) result.push({
|
|
157
|
+
name,
|
|
158
|
+
version: `${range} (not installed)`,
|
|
159
|
+
range
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
220
164
|
}
|
|
221
165
|
function collectWarnings(packages, cwd, projectPkg) {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// Check for direct install of internal packages
|
|
239
|
-
for (const name of SHOULD_NOT_DIRECT_INSTALL) {
|
|
240
|
-
if (deps[name]) {
|
|
241
|
-
warnings.push(`${name} should not be installed directly — it is an internal dependency`);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return warnings;
|
|
166
|
+
const warnings = [];
|
|
167
|
+
const deps = readProjectDeps(projectPkg);
|
|
168
|
+
for (const pkg of packages) {
|
|
169
|
+
const peerDeps = getPeerDeps(pkg.name, cwd);
|
|
170
|
+
if (!peerDeps) continue;
|
|
171
|
+
for (const [peerName, peerRange] of Object.entries(peerDeps)) {
|
|
172
|
+
const peerVersion = getInstalledVersion(peerName, cwd);
|
|
173
|
+
if (!peerVersion) continue;
|
|
174
|
+
if (!satisfiesRange(peerVersion, peerRange)) warnings.push(`${pkg.name} requires ${peerName} ${peerRange}, found ${peerVersion}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
for (const name of SHOULD_NOT_DIRECT_INSTALL) if (deps[name]) warnings.push(`${name} should not be installed directly — it is an internal dependency`);
|
|
178
|
+
return warnings;
|
|
245
179
|
}
|
|
246
180
|
async function collectInfo(cwd, projectPkg) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
181
|
+
const pm = await getPackageManagerInfo(cwd);
|
|
182
|
+
const packages = collectPackages(ASSISTANT_UI_PACKAGES, cwd, projectPkg);
|
|
183
|
+
const ecosystem = collectPackages(ECOSYSTEM_PACKAGES, cwd, projectPkg);
|
|
184
|
+
const warnings = collectWarnings(packages, cwd, projectPkg);
|
|
185
|
+
return {
|
|
186
|
+
os: getOsInfo(),
|
|
187
|
+
node: process.version,
|
|
188
|
+
pm,
|
|
189
|
+
framework: detectFramework(projectPkg, cwd),
|
|
190
|
+
isMonorepo: findWorkspaceRoot(cwd) !== null,
|
|
191
|
+
packages,
|
|
192
|
+
ecosystem,
|
|
193
|
+
warnings
|
|
194
|
+
};
|
|
261
195
|
}
|
|
262
196
|
function formatSection(label, items) {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
lines.push(` ${pkg.name.padEnd(maxLen)} ${pkg.version}`);
|
|
271
|
-
}
|
|
272
|
-
return lines;
|
|
197
|
+
if (items.length === 0) return [];
|
|
198
|
+
const lines = [];
|
|
199
|
+
lines.push("");
|
|
200
|
+
lines.push(`${label}:`);
|
|
201
|
+
const maxLen = Math.max(...items.map((p) => p.name.length));
|
|
202
|
+
for (const pkg of items) lines.push(` ${pkg.name.padEnd(maxLen)} ${pkg.version}`);
|
|
203
|
+
return lines;
|
|
273
204
|
}
|
|
274
205
|
function renderPlain(data) {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
lines.push(` ! ${w}`);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
return lines;
|
|
206
|
+
const lines = [];
|
|
207
|
+
lines.push("Environment:");
|
|
208
|
+
lines.push(` OS: ${data.os}`);
|
|
209
|
+
lines.push(` Node.js: ${data.node}`);
|
|
210
|
+
lines.push(` Package Manager: ${data.pm.name} ${data.pm.version}`);
|
|
211
|
+
lines.push(` Framework: ${data.framework}`);
|
|
212
|
+
if (data.isMonorepo) lines.push(` Monorepo: yes`);
|
|
213
|
+
lines.push(...formatSection("Packages", data.packages));
|
|
214
|
+
lines.push(...formatSection("Ecosystem", data.ecosystem));
|
|
215
|
+
if (data.warnings.length > 0) {
|
|
216
|
+
lines.push("");
|
|
217
|
+
lines.push("Warnings:");
|
|
218
|
+
for (const w of data.warnings) lines.push(` ! ${w}`);
|
|
219
|
+
}
|
|
220
|
+
return lines;
|
|
294
221
|
}
|
|
295
222
|
function renderColored(data) {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
for (const w of data.warnings) {
|
|
325
|
-
lines.push(chalk.yellow(` ! ${w}`));
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
return lines;
|
|
223
|
+
const lines = [];
|
|
224
|
+
lines.push(chalk.bold("Environment:"));
|
|
225
|
+
lines.push(` OS: ${data.os}`);
|
|
226
|
+
lines.push(` Node.js: ${data.node}`);
|
|
227
|
+
lines.push(` Package Manager: ${data.pm.name} ${data.pm.version}`);
|
|
228
|
+
lines.push(` Framework: ${data.framework}`);
|
|
229
|
+
if (data.isMonorepo) lines.push(` Monorepo: yes`);
|
|
230
|
+
if (data.packages.length > 0) {
|
|
231
|
+
const section = formatSection("Packages", data.packages);
|
|
232
|
+
section[0] = "";
|
|
233
|
+
section[1] = chalk.bold("Packages:");
|
|
234
|
+
lines.push(...section);
|
|
235
|
+
} else {
|
|
236
|
+
lines.push("");
|
|
237
|
+
lines.push(chalk.yellow(" No assistant-ui packages found."));
|
|
238
|
+
}
|
|
239
|
+
if (data.ecosystem.length > 0) {
|
|
240
|
+
const section = formatSection("Ecosystem", data.ecosystem);
|
|
241
|
+
section[0] = "";
|
|
242
|
+
section[1] = chalk.bold("Ecosystem:");
|
|
243
|
+
lines.push(...section);
|
|
244
|
+
}
|
|
245
|
+
if (data.warnings.length > 0) {
|
|
246
|
+
lines.push("");
|
|
247
|
+
lines.push(chalk.yellow.bold("Warnings:"));
|
|
248
|
+
for (const w of data.warnings) lines.push(chalk.yellow(` ! ${w}`));
|
|
249
|
+
}
|
|
250
|
+
return lines;
|
|
329
251
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
const plain = renderPlain(data);
|
|
351
|
-
const block = ["```", ...plain, "```"].join("\n");
|
|
352
|
-
console.log(chalk.dim("— Copy the text below into your bug report —"));
|
|
353
|
-
console.log("");
|
|
354
|
-
console.log(block);
|
|
355
|
-
console.log("");
|
|
252
|
+
const info = new Command().name("info").description("Print environment and package information for bug reports.").option("-c, --cwd <cwd>", "the working directory. defaults to the current directory.", process.cwd()).action(async (opts) => {
|
|
253
|
+
const cwd = path$1.resolve(opts.cwd);
|
|
254
|
+
const packageJsonPath = path$1.join(cwd, "package.json");
|
|
255
|
+
if (!fs$1.existsSync(packageJsonPath)) {
|
|
256
|
+
console.error(chalk.red("No package.json found in the current directory."));
|
|
257
|
+
process.exit(1);
|
|
258
|
+
}
|
|
259
|
+
const data = await collectInfo(cwd, JSON.parse(fs$1.readFileSync(packageJsonPath, "utf8")));
|
|
260
|
+
console.log("");
|
|
261
|
+
for (const line of renderColored(data)) console.log(line);
|
|
262
|
+
console.log("");
|
|
263
|
+
const block = [
|
|
264
|
+
"```",
|
|
265
|
+
...renderPlain(data),
|
|
266
|
+
"```"
|
|
267
|
+
].join("\n");
|
|
268
|
+
console.log(chalk.dim("— Copy the text below into your bug report —"));
|
|
269
|
+
console.log("");
|
|
270
|
+
console.log(block);
|
|
271
|
+
console.log("");
|
|
356
272
|
});
|
|
273
|
+
//#endregion
|
|
274
|
+
export { info };
|
|
275
|
+
|
|
357
276
|
//# sourceMappingURL=info.js.map
|