assistant-ui 0.0.92 → 0.0.93

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 (117) hide show
  1. package/dist/codemods/utils/createTransformer.d.ts +17 -13
  2. package/dist/codemods/utils/createTransformer.d.ts.map +1 -1
  3. package/dist/codemods/utils/createTransformer.js +18 -15
  4. package/dist/codemods/utils/createTransformer.js.map +1 -1
  5. package/dist/codemods/v0-11/content-part-to-message-part.d.ts +3 -1
  6. package/dist/codemods/v0-11/content-part-to-message-part.d.ts.map +1 -1
  7. package/dist/codemods/v0-11/content-part-to-message-part.js +98 -135
  8. package/dist/codemods/v0-11/content-part-to-message-part.js.map +1 -1
  9. package/dist/codemods/v0-12/assistant-api-to-aui.d.ts +3 -1
  10. package/dist/codemods/v0-12/assistant-api-to-aui.d.ts.map +1 -1
  11. package/dist/codemods/v0-12/assistant-api-to-aui.js +126 -213
  12. package/dist/codemods/v0-12/assistant-api-to-aui.js.map +1 -1
  13. package/dist/codemods/v0-12/event-names-to-camelcase.d.ts +3 -1
  14. package/dist/codemods/v0-12/event-names-to-camelcase.d.ts.map +1 -1
  15. package/dist/codemods/v0-12/event-names-to-camelcase.js +33 -38
  16. package/dist/codemods/v0-12/event-names-to-camelcase.js.map +1 -1
  17. package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts +3 -1
  18. package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts.map +1 -1
  19. package/dist/codemods/v0-12/primitive-if-to-aui-if.js +212 -297
  20. package/dist/codemods/v0-12/primitive-if-to-aui-if.js.map +1 -1
  21. package/dist/codemods/v0-8/ui-package-split.d.ts +3 -1
  22. package/dist/codemods/v0-8/ui-package-split.d.ts.map +1 -1
  23. package/dist/codemods/v0-8/ui-package-split.js +121 -164
  24. package/dist/codemods/v0-8/ui-package-split.js.map +1 -1
  25. package/dist/codemods/v0-9/edge-package-split.d.ts +3 -1
  26. package/dist/codemods/v0-9/edge-package-split.d.ts.map +1 -1
  27. package/dist/codemods/v0-9/edge-package-split.js +96 -140
  28. package/dist/codemods/v0-9/edge-package-split.js.map +1 -1
  29. package/dist/commands/add.d.ts +16 -12
  30. package/dist/commands/add.d.ts.map +1 -1
  31. package/dist/commands/add.js +53 -64
  32. package/dist/commands/add.js.map +1 -1
  33. package/dist/commands/agent.d.ts +5 -1
  34. package/dist/commands/agent.d.ts.map +1 -1
  35. package/dist/commands/agent.js +16 -25
  36. package/dist/commands/agent.js.map +1 -1
  37. package/dist/commands/create.d.ts +34 -30
  38. package/dist/commands/create.d.ts.map +1 -1
  39. package/dist/commands/create.js +454 -527
  40. package/dist/commands/create.js.map +1 -1
  41. package/dist/commands/info.d.ts +5 -1
  42. package/dist/commands/info.d.ts.map +1 -1
  43. package/dist/commands/info.js +233 -314
  44. package/dist/commands/info.js.map +1 -1
  45. package/dist/commands/init.d.ts +12 -9
  46. package/dist/commands/init.d.ts.map +1 -1
  47. package/dist/commands/init.js +98 -107
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/mcp.d.ts +5 -1
  50. package/dist/commands/mcp.d.ts.map +1 -1
  51. package/dist/commands/mcp.js +175 -214
  52. package/dist/commands/mcp.js.map +1 -1
  53. package/dist/commands/update.d.ts +5 -1
  54. package/dist/commands/update.d.ts.map +1 -1
  55. package/dist/commands/update.js +46 -55
  56. package/dist/commands/update.js.map +1 -1
  57. package/dist/commands/upgrade.d.ts +11 -7
  58. package/dist/commands/upgrade.d.ts.map +1 -1
  59. package/dist/commands/upgrade.js +26 -38
  60. package/dist/commands/upgrade.js.map +1 -1
  61. package/dist/index.d.ts +1 -3
  62. package/dist/index.js +15 -14
  63. package/dist/index.js.map +1 -1
  64. package/dist/lib/create-project.d.ts +24 -21
  65. package/dist/lib/create-project.d.ts.map +1 -1
  66. package/dist/lib/create-project.js +227 -297
  67. package/dist/lib/create-project.js.map +1 -1
  68. package/dist/lib/install-ai-sdk-lib.d.ts +4 -1
  69. package/dist/lib/install-ai-sdk-lib.d.ts.map +1 -1
  70. package/dist/lib/install-ai-sdk-lib.js +12 -8
  71. package/dist/lib/install-ai-sdk-lib.js.map +1 -1
  72. package/dist/lib/install-edge-lib.d.ts +4 -1
  73. package/dist/lib/install-edge-lib.d.ts.map +1 -1
  74. package/dist/lib/install-edge-lib.js +16 -12
  75. package/dist/lib/install-edge-lib.js.map +1 -1
  76. package/dist/lib/install-ui-lib.d.ts +4 -1
  77. package/dist/lib/install-ui-lib.d.ts.map +1 -1
  78. package/dist/lib/install-ui-lib.js +12 -8
  79. package/dist/lib/install-ui-lib.js.map +1 -1
  80. package/dist/lib/run-spawn.d.ts +7 -4
  81. package/dist/lib/run-spawn.d.ts.map +1 -1
  82. package/dist/lib/run-spawn.js +23 -23
  83. package/dist/lib/run-spawn.js.map +1 -1
  84. package/dist/lib/transform-options.d.ts +8 -5
  85. package/dist/lib/transform-options.d.ts.map +1 -1
  86. package/dist/lib/transform-options.js +0 -2
  87. package/dist/lib/transform.d.ts +15 -11
  88. package/dist/lib/transform.d.ts.map +1 -1
  89. package/dist/lib/transform.js +97 -114
  90. package/dist/lib/transform.js.map +1 -1
  91. package/dist/lib/upgrade.d.ts +6 -2
  92. package/dist/lib/upgrade.d.ts.map +1 -1
  93. package/dist/lib/upgrade.js +62 -64
  94. package/dist/lib/upgrade.js.map +1 -1
  95. package/dist/lib/utils/config.d.ts +21 -18
  96. package/dist/lib/utils/config.d.ts.map +1 -1
  97. package/dist/lib/utils/config.js +24 -28
  98. package/dist/lib/utils/config.js.map +1 -1
  99. package/dist/lib/utils/file-scanner.d.ts +9 -6
  100. package/dist/lib/utils/file-scanner.d.ts.map +1 -1
  101. package/dist/lib/utils/file-scanner.js +44 -51
  102. package/dist/lib/utils/file-scanner.js.map +1 -1
  103. package/dist/lib/utils/logger.d.ts +10 -7
  104. package/dist/lib/utils/logger.d.ts.map +1 -1
  105. package/dist/lib/utils/logger.js +23 -19
  106. package/dist/lib/utils/logger.js.map +1 -1
  107. package/dist/lib/utils/package-installer.d.ts +10 -7
  108. package/dist/lib/utils/package-installer.d.ts.map +1 -1
  109. package/dist/lib/utils/package-installer.js +18 -19
  110. package/dist/lib/utils/package-installer.js.map +1 -1
  111. package/dist/lib/utils/package-manager.d.ts +10 -7
  112. package/dist/lib/utils/package-manager.d.ts.map +1 -1
  113. package/dist/lib/utils/package-manager.js +68 -59
  114. package/dist/lib/utils/package-manager.js.map +1 -1
  115. package/package.json +7 -7
  116. package/dist/index.d.ts.map +0 -1
  117. package/dist/lib/transform-options.js.map +0 -1
@@ -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
- // Distribution
10
- "@assistant-ui/react",
11
- "@assistant-ui/react-native",
12
- "@assistant-ui/react-ink",
13
- // Core (should not be installed directly)
14
- "@assistant-ui/core",
15
- "@assistant-ui/store",
16
- "@assistant-ui/tap",
17
- // Streaming & Cloud
18
- "assistant-stream",
19
- "assistant-cloud",
20
- "@assistant-ui/cloud-ai-sdk",
21
- // Adapters
22
- "@assistant-ui/react-ai-sdk",
23
- "@assistant-ui/react-langgraph",
24
- "@assistant-ui/react-ag-ui",
25
- "@assistant-ui/react-a2a",
26
- "@assistant-ui/react-data-stream",
27
- "@assistant-ui/react-google-adk",
28
- // UI / Rendering
29
- "@assistant-ui/react-markdown",
30
- "@assistant-ui/react-streamdown",
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
- "react",
40
- "react-dom",
41
- "react-native",
42
- "next",
43
- "vite",
44
- "expo",
45
- "ai",
46
- "zod",
47
- "zustand",
48
- "typescript",
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
- "@assistant-ui/core",
54
- "@assistant-ui/store",
55
- "@assistant-ui/tap",
46
+ "@assistant-ui/core",
47
+ "@assistant-ui/store",
48
+ "@assistant-ui/tap"
56
49
  ]);
57
50
  function resolvePackageJson(pkg, cwd) {
58
- let dir = cwd;
59
- const root = path.parse(dir).root;
60
- while (dir !== root) {
61
- const candidate = path.join(dir, "node_modules", ...pkg.split("/"), "package.json");
62
- if (fs.existsSync(candidate))
63
- return candidate;
64
- dir = path.dirname(dir);
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
- try {
70
- const pkgJsonPath = resolvePackageJson(pkg, cwd);
71
- if (pkgJsonPath) {
72
- const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
73
- return pkgJson.version ?? null;
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
- let dir = path.dirname(cwd);
83
- const root = path.parse(dir).root;
84
- while (dir !== root) {
85
- if (fs.existsSync(path.join(dir, "pnpm-workspace.yaml")))
86
- return dir;
87
- const pkgPath = path.join(dir, "package.json");
88
- if (fs.existsSync(pkgPath)) {
89
- try {
90
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
91
- if (pkg.workspaces)
92
- return dir;
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
- return {
104
- ...(projectPkg.dependencies ?? {}),
105
- ...(projectPkg.devDependencies ?? {}),
106
- };
81
+ return {
82
+ ...projectPkg.dependencies ?? {},
83
+ ...projectPkg.devDependencies ?? {}
84
+ };
107
85
  }
108
86
  function getSpecifiedRange(pkg, projectPkg) {
109
- const deps = (projectPkg.dependencies ?? {});
110
- const devDeps = (projectPkg.devDependencies ?? {});
111
- return deps[pkg] ?? devDeps[pkg] ?? null;
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
- try {
115
- const pkgJsonPath = resolvePackageJson(pkg, cwd);
116
- if (pkgJsonPath) {
117
- const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
118
- return pkgJson.peerDependencies ?? null;
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
- const deps = readProjectDeps(projectPkg);
128
- if (deps.next) {
129
- const v = getInstalledVersion("next", cwd);
130
- return `Next.js ${v ?? deps.next}`;
131
- }
132
- if (deps.expo) {
133
- const v = getInstalledVersion("expo", cwd);
134
- return `Expo ${v ?? deps.expo}`;
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
- const platform = os.platform();
150
- const arch = os.arch();
151
- const release = os.release();
152
- switch (platform) {
153
- case "darwin": {
154
- const result = spawnSync("sw_vers", ["-productVersion"], {
155
- encoding: "utf8",
156
- });
157
- const macVer = result.stdout?.trim();
158
- return macVer
159
- ? `macOS ${macVer} (${arch})`
160
- : `macOS ${release} (${arch})`;
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
- const pm = await detect({ cwd });
172
- const result = spawnSync(pm, ["--version"], {
173
- encoding: "utf8",
174
- cwd,
175
- });
176
- const version = result.stdout?.trim() ?? "unknown";
177
- return { name: pm, version };
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
- if (range === "*" || range === "any")
181
- return true;
182
- const clean = (v) => v.replace(/^[^\d]*/, "");
183
- const major = (v) => parseInt(clean(v).split(".")[0], 10);
184
- if (range.includes("||")) {
185
- return range
186
- .split("||")
187
- .some((part) => satisfiesRange(version, part.trim()));
188
- }
189
- const rangeMajor = major(range);
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
- const result = [];
201
- const deps = readProjectDeps(projectPkg);
202
- for (const name of names) {
203
- const version = getInstalledVersion(name, cwd);
204
- if (version) {
205
- result.push({
206
- name,
207
- version,
208
- range: getSpecifiedRange(name, projectPkg),
209
- });
210
- }
211
- else {
212
- // Fallback: no node_modules, show range from package.json
213
- const range = deps[name];
214
- if (range && !range.startsWith("workspace:")) {
215
- result.push({ name, version: `${range} (not installed)`, range });
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
- const warnings = [];
223
- const deps = readProjectDeps(projectPkg);
224
- // Check peer dependency mismatches
225
- for (const pkg of packages) {
226
- const peerDeps = getPeerDeps(pkg.name, cwd);
227
- if (!peerDeps)
228
- continue;
229
- for (const [peerName, peerRange] of Object.entries(peerDeps)) {
230
- const peerVersion = getInstalledVersion(peerName, cwd);
231
- if (!peerVersion)
232
- continue;
233
- if (!satisfiesRange(peerVersion, peerRange)) {
234
- warnings.push(`${pkg.name} requires ${peerName} ${peerRange}, found ${peerVersion}`);
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
- const pm = await getPackageManagerInfo(cwd);
248
- const packages = collectPackages(ASSISTANT_UI_PACKAGES, cwd, projectPkg);
249
- const ecosystem = collectPackages(ECOSYSTEM_PACKAGES, cwd, projectPkg);
250
- const warnings = collectWarnings(packages, cwd, projectPkg);
251
- return {
252
- os: getOsInfo(),
253
- node: process.version,
254
- pm,
255
- framework: detectFramework(projectPkg, cwd),
256
- isMonorepo: findWorkspaceRoot(cwd) !== null,
257
- packages,
258
- ecosystem,
259
- warnings,
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
- if (items.length === 0)
264
- return [];
265
- const lines = [];
266
- lines.push("");
267
- lines.push(`${label}:`);
268
- const maxLen = Math.max(...items.map((p) => p.name.length));
269
- for (const pkg of items) {
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
- const lines = [];
276
- lines.push("Environment:");
277
- lines.push(` OS: ${data.os}`);
278
- lines.push(` Node.js: ${data.node}`);
279
- lines.push(` Package Manager: ${data.pm.name} ${data.pm.version}`);
280
- lines.push(` Framework: ${data.framework}`);
281
- if (data.isMonorepo) {
282
- lines.push(` Monorepo: yes`);
283
- }
284
- lines.push(...formatSection("Packages", data.packages));
285
- lines.push(...formatSection("Ecosystem", data.ecosystem));
286
- if (data.warnings.length > 0) {
287
- lines.push("");
288
- lines.push("Warnings:");
289
- for (const w of data.warnings) {
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
- const lines = [];
297
- lines.push(chalk.bold("Environment:"));
298
- lines.push(` OS: ${data.os}`);
299
- lines.push(` Node.js: ${data.node}`);
300
- lines.push(` Package Manager: ${data.pm.name} ${data.pm.version}`);
301
- lines.push(` Framework: ${data.framework}`);
302
- if (data.isMonorepo) {
303
- lines.push(` Monorepo: yes`);
304
- }
305
- if (data.packages.length > 0) {
306
- const section = formatSection("Packages", data.packages);
307
- section[0] = "";
308
- section[1] = chalk.bold("Packages:");
309
- lines.push(...section);
310
- }
311
- else {
312
- lines.push("");
313
- lines.push(chalk.yellow(" No assistant-ui packages found."));
314
- }
315
- if (data.ecosystem.length > 0) {
316
- const section = formatSection("Ecosystem", data.ecosystem);
317
- section[0] = "";
318
- section[1] = chalk.bold("Ecosystem:");
319
- lines.push(...section);
320
- }
321
- if (data.warnings.length > 0) {
322
- lines.push("");
323
- lines.push(chalk.yellow.bold("Warnings:"));
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
- export const info = new Command()
331
- .name("info")
332
- .description("Print environment and package information for bug reports.")
333
- .option("-c, --cwd <cwd>", "the working directory. defaults to the current directory.", process.cwd())
334
- .action(async (opts) => {
335
- const cwd = path.resolve(opts.cwd);
336
- const packageJsonPath = path.join(cwd, "package.json");
337
- if (!fs.existsSync(packageJsonPath)) {
338
- console.error(chalk.red("No package.json found in the current directory."));
339
- process.exit(1);
340
- }
341
- const projectPkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
342
- const data = await collectInfo(cwd, projectPkg);
343
- // Colored output for terminal
344
- console.log("");
345
- for (const line of renderColored(data)) {
346
- console.log(line);
347
- }
348
- console.log("");
349
- // Copyable plain text
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