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/lib/upgrade.js
CHANGED
|
@@ -1,74 +1,72 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { SingleBar, Presets } from "cli-progress";
|
|
1
|
+
import { logger } from "./utils/logger.js";
|
|
2
|
+
import { getRelevantFiles, transform } from "./transform.js";
|
|
4
3
|
import installReactUILib from "./install-ui-lib.js";
|
|
5
4
|
import installEdgeLib from "./install-edge-lib.js";
|
|
6
5
|
import installAiSdkLib from "./install-ai-sdk-lib.js";
|
|
7
|
-
import
|
|
6
|
+
import debug from "debug";
|
|
7
|
+
import { Presets, SingleBar } from "cli-progress";
|
|
8
|
+
//#region src/lib/upgrade.ts
|
|
8
9
|
const bundle = [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
"v0-8/ui-package-split",
|
|
11
|
+
"v0-9/edge-package-split",
|
|
12
|
+
"v0-11/content-part-to-message-part",
|
|
13
|
+
"v0-12/assistant-api-to-aui",
|
|
14
|
+
"v0-12/event-names-to-camelcase",
|
|
15
|
+
"v0-12/primitive-if-to-aui-if"
|
|
15
16
|
];
|
|
16
17
|
const log = debug("codemod:upgrade");
|
|
17
18
|
const error = debug("codemod:upgrade:error");
|
|
18
19
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
logger.info("Checking for package dependencies...");
|
|
68
|
-
await installReactUILib();
|
|
69
|
-
await installEdgeLib();
|
|
70
|
-
await installAiSdkLib();
|
|
71
|
-
log("Upgrade complete.");
|
|
72
|
-
logger.success("Upgrade complete!");
|
|
20
|
+
* Runs the upgrade cycle:
|
|
21
|
+
* - Runs each codemod in the bundle.
|
|
22
|
+
* - Displays progress using cli-progress.
|
|
23
|
+
* - After codemods run, checks if any file now imports from the new packages and prompts for install.
|
|
24
|
+
*/
|
|
25
|
+
async function upgrade(options) {
|
|
26
|
+
const cwd = process.cwd();
|
|
27
|
+
log("Starting upgrade...");
|
|
28
|
+
logger.info("Analyzing codebase...");
|
|
29
|
+
const relevantFiles = getRelevantFiles(cwd);
|
|
30
|
+
const fileCount = relevantFiles.length;
|
|
31
|
+
logger.info(`Found ${fileCount} files to process.`);
|
|
32
|
+
const totalWork = fileCount * bundle.length;
|
|
33
|
+
let completedWork = 0;
|
|
34
|
+
const bar = new SingleBar({
|
|
35
|
+
format: "Progress |{bar}| {percentage}% | ETA: {eta}s || {status}",
|
|
36
|
+
hideCursor: true
|
|
37
|
+
}, Presets.shades_classic);
|
|
38
|
+
bar.start(totalWork, 0, { status: "Starting..." });
|
|
39
|
+
const allErrors = [];
|
|
40
|
+
for (const codemod of bundle) {
|
|
41
|
+
bar.update(completedWork, { status: `Running ${codemod}...` });
|
|
42
|
+
const errors = transform(codemod, cwd, options, {
|
|
43
|
+
logStatus: false,
|
|
44
|
+
onProgress: (processedFiles) => {
|
|
45
|
+
completedWork = bundle.indexOf(codemod) * fileCount + processedFiles;
|
|
46
|
+
bar.update(Math.min(completedWork, totalWork), { status: `Running ${codemod} (${processedFiles}/${fileCount} files)` });
|
|
47
|
+
},
|
|
48
|
+
relevantFiles
|
|
49
|
+
});
|
|
50
|
+
allErrors.push(...errors);
|
|
51
|
+
completedWork = (bundle.indexOf(codemod) + 1) * fileCount;
|
|
52
|
+
bar.update(completedWork, { status: `Completed ${codemod}` });
|
|
53
|
+
}
|
|
54
|
+
bar.update(totalWork, { status: "Checking dependencies..." });
|
|
55
|
+
bar.stop();
|
|
56
|
+
if (allErrors.length > 0) {
|
|
57
|
+
log("Some codemods did not apply successfully to all files. Details:");
|
|
58
|
+
allErrors.forEach(({ transform, filename, summary }) => {
|
|
59
|
+
error(`codemod=${transform}, path=${filename}, summary=${summary}`);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
logger.info("Checking for package dependencies...");
|
|
63
|
+
await installReactUILib();
|
|
64
|
+
await installEdgeLib();
|
|
65
|
+
await installAiSdkLib();
|
|
66
|
+
log("Upgrade complete.");
|
|
67
|
+
logger.success("Upgrade complete!");
|
|
73
68
|
}
|
|
69
|
+
//#endregion
|
|
70
|
+
export { upgrade };
|
|
71
|
+
|
|
74
72
|
//# sourceMappingURL=upgrade.js.map
|
package/dist/lib/upgrade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","
|
|
1
|
+
{"version":3,"file":"upgrade.js","names":[],"sources":["../../src/lib/upgrade.ts"],"sourcesContent":["import debug from \"debug\";\nimport { transform, type TransformErrors, getRelevantFiles } from \"./transform\";\nimport type { TransformOptions } from \"./transform-options\";\nimport { SingleBar, Presets } from \"cli-progress\";\nimport installReactUILib from \"./install-ui-lib\";\nimport installEdgeLib from \"./install-edge-lib\";\nimport installAiSdkLib from \"./install-ai-sdk-lib\";\nimport { logger } from \"./utils/logger\";\n\nconst bundle = [\n \"v0-8/ui-package-split\",\n \"v0-9/edge-package-split\",\n \"v0-11/content-part-to-message-part\",\n \"v0-12/assistant-api-to-aui\",\n \"v0-12/event-names-to-camelcase\",\n \"v0-12/primitive-if-to-aui-if\",\n];\n\nconst log = debug(\"codemod:upgrade\");\nconst error = debug(\"codemod:upgrade:error\");\n\n/**\n * Runs the upgrade cycle:\n * - Runs each codemod in the bundle.\n * - Displays progress using cli-progress.\n * - After codemods run, checks if any file now imports from the new packages and prompts for install.\n */\nexport async function upgrade(options: TransformOptions) {\n const cwd = process.cwd();\n log(\"Starting upgrade...\");\n\n // Find relevant files once to avoid duplicate work\n logger.info(\"Analyzing codebase...\");\n const relevantFiles = getRelevantFiles(cwd);\n const fileCount = relevantFiles.length;\n logger.info(`Found ${fileCount} files to process.`);\n\n // Calculate total work units (files × codemods)\n const totalWork = fileCount * bundle.length;\n let completedWork = 0;\n\n const bar = new SingleBar(\n {\n format: \"Progress |{bar}| {percentage}% | ETA: {eta}s || {status}\",\n hideCursor: true,\n },\n Presets.shades_classic,\n );\n\n bar.start(totalWork, 0, { status: \"Starting...\" });\n const allErrors: TransformErrors = [];\n\n for (const codemod of bundle) {\n bar.update(completedWork, { status: `Running ${codemod}...` });\n\n // Use a custom progress callback to update the progress bar\n const errors = transform(codemod, cwd, options, {\n logStatus: false,\n onProgress: (processedFiles: number) => {\n completedWork = bundle.indexOf(codemod) * fileCount + processedFiles;\n bar.update(Math.min(completedWork, totalWork), {\n status: `Running ${codemod} (${processedFiles}/${fileCount} files)`,\n });\n },\n relevantFiles, // Pass the pre-computed relevant files\n });\n\n allErrors.push(...errors);\n completedWork = (bundle.indexOf(codemod) + 1) * fileCount;\n bar.update(completedWork, { status: `Completed ${codemod}` });\n }\n\n bar.update(totalWork, { status: \"Checking dependencies...\" });\n bar.stop();\n\n if (allErrors.length > 0) {\n log(\"Some codemods did not apply successfully to all files. Details:\");\n allErrors.forEach(({ transform, filename, summary }) => {\n error(`codemod=${transform}, path=${filename}, summary=${summary}`);\n });\n }\n\n // After codemods run, check if files import from the new packages and prompt for install.\n logger.info(\"Checking for package dependencies...\");\n await installReactUILib();\n await installEdgeLib();\n await installAiSdkLib();\n\n log(\"Upgrade complete.\");\n logger.success(\"Upgrade complete!\");\n}\n"],"mappings":";;;;;;;;AASA,MAAM,SAAS;CACb;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAM,MAAM,MAAM,iBAAiB;AACnC,MAAM,QAAQ,MAAM,uBAAuB;;;;;;;AAQ3C,eAAsB,QAAQ,SAA2B;CACvD,MAAM,MAAM,QAAQ,IAAI;CACxB,IAAI,qBAAqB;CAGzB,OAAO,KAAK,uBAAuB;CACnC,MAAM,gBAAgB,iBAAiB,GAAG;CAC1C,MAAM,YAAY,cAAc;CAChC,OAAO,KAAK,SAAS,UAAU,mBAAmB;CAGlD,MAAM,YAAY,YAAY,OAAO;CACrC,IAAI,gBAAgB;CAEpB,MAAM,MAAM,IAAI,UACd;EACE,QAAQ;EACR,YAAY;CACd,GACA,QAAQ,cACV;CAEA,IAAI,MAAM,WAAW,GAAG,EAAE,QAAQ,cAAc,CAAC;CACjD,MAAM,YAA6B,CAAC;CAEpC,KAAK,MAAM,WAAW,QAAQ;EAC5B,IAAI,OAAO,eAAe,EAAE,QAAQ,WAAW,QAAQ,KAAK,CAAC;EAG7D,MAAM,SAAS,UAAU,SAAS,KAAK,SAAS;GAC9C,WAAW;GACX,aAAa,mBAA2B;IACtC,gBAAgB,OAAO,QAAQ,OAAO,IAAI,YAAY;IACtD,IAAI,OAAO,KAAK,IAAI,eAAe,SAAS,GAAG,EAC7C,QAAQ,WAAW,QAAQ,IAAI,eAAe,GAAG,UAAU,SAC7D,CAAC;GACH;GACA;EACF,CAAC;EAED,UAAU,KAAK,GAAG,MAAM;EACxB,iBAAiB,OAAO,QAAQ,OAAO,IAAI,KAAK;EAChD,IAAI,OAAO,eAAe,EAAE,QAAQ,aAAa,UAAU,CAAC;CAC9D;CAEA,IAAI,OAAO,WAAW,EAAE,QAAQ,2BAA2B,CAAC;CAC5D,IAAI,KAAK;CAET,IAAI,UAAU,SAAS,GAAG;EACxB,IAAI,iEAAiE;EACrE,UAAU,SAAS,EAAE,WAAW,UAAU,cAAc;GACtD,MAAM,WAAW,UAAU,SAAS,SAAS,YAAY,SAAS;EACpE,CAAC;CACH;CAGA,OAAO,KAAK,sCAAsC;CAClD,MAAM,kBAAkB;CACxB,MAAM,eAAe;CACrB,MAAM,gBAAgB;CAEtB,IAAI,mBAAmB;CACvB,OAAO,QAAQ,mBAAmB;AACpC"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
//#region src/lib/utils/config.d.ts
|
|
2
|
+
interface AssistantUIConfig {
|
|
3
|
+
$schema?: string;
|
|
4
|
+
style?: string;
|
|
5
|
+
tailwind?: {
|
|
6
|
+
config?: string;
|
|
7
|
+
css?: string;
|
|
8
|
+
baseColor?: string;
|
|
9
|
+
cssVariables?: boolean;
|
|
10
|
+
};
|
|
11
|
+
aliases?: {
|
|
12
|
+
components?: string;
|
|
13
|
+
utils?: string;
|
|
14
|
+
ui?: string;
|
|
15
|
+
lib?: string;
|
|
16
|
+
};
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
declare function getConfig(cwd?: string): AssistantUIConfig | null;
|
|
19
|
+
declare function saveConfig(config: AssistantUIConfig, cwd?: string): void;
|
|
20
|
+
declare function hasConfig(cwd?: string): boolean;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { AssistantUIConfig, getConfig, hasConfig, saveConfig };
|
|
20
23
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","
|
|
1
|
+
{"version":3,"file":"config.d.ts","names":[],"sources":["../../../src/lib/utils/config.ts"],"mappings":";UAIiB,iBAAA;EACf,OAAA;EACA,KAAA;EACA,QAAA;IACE,MAAA;IACA,GAAA;IACA,SAAA;IACA,YAAA;EAAA;EAEF,OAAA;IACE,UAAA;IACA,KAAA;IACA,EAAA;IACA,GAAA;EAAA;AAAA;AAAA,iBASY,SAAA,CACd,GAAA,YACC,iBAAiB;AAAA,iBAmBJ,UAAA,CACd,MAAA,EAAQ,iBAAiB,EACzB,GAAA;AAAA,iBAMc,SAAA,CAAU,GAA2B"}
|
package/dist/lib/utils/config.js
CHANGED
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
1
|
import { logger } from "./logger.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
];
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
logger.error(`Error reading config file ${fileName}: ${errorDetails}`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return null;
|
|
2
|
+
import * as fs$1 from "node:fs";
|
|
3
|
+
import * as path$1 from "node:path";
|
|
4
|
+
//#region src/lib/utils/config.ts
|
|
5
|
+
const CONFIG_FILE_NAMES = ["assistant-ui.json", "components.json"];
|
|
6
|
+
function getConfig(cwd = process.cwd()) {
|
|
7
|
+
for (const fileName of CONFIG_FILE_NAMES) {
|
|
8
|
+
const configPath = path$1.join(cwd, fileName);
|
|
9
|
+
if (fs$1.existsSync(configPath)) try {
|
|
10
|
+
const configContent = fs$1.readFileSync(configPath, "utf8");
|
|
11
|
+
return JSON.parse(configContent);
|
|
12
|
+
} catch (error) {
|
|
13
|
+
const errorDetails = error instanceof Error ? error.stack ?? error.message : String(error);
|
|
14
|
+
logger.error(`Error reading config file ${fileName}: ${errorDetails}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
25
18
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
function saveConfig(config, cwd = process.cwd()) {
|
|
20
|
+
const configPath = path$1.join(cwd, "assistant-ui.json");
|
|
21
|
+
fs$1.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
29
22
|
}
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
function hasConfig(cwd = process.cwd()) {
|
|
24
|
+
return CONFIG_FILE_NAMES.some((fileName) => fs$1.existsSync(path$1.join(cwd, fileName)));
|
|
32
25
|
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { getConfig, hasConfig, saveConfig };
|
|
28
|
+
|
|
33
29
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","
|
|
1
|
+
{"version":3,"file":"config.js","names":["path","fs"],"sources":["../../../src/lib/utils/config.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { logger } from \"./logger\";\n\nexport interface AssistantUIConfig {\n $schema?: string;\n style?: string;\n tailwind?: {\n config?: string;\n css?: string;\n baseColor?: string;\n cssVariables?: boolean;\n };\n aliases?: {\n components?: string;\n utils?: string;\n ui?: string;\n lib?: string;\n };\n}\n\nconst CONFIG_FILE_NAMES = [\n \"assistant-ui.json\",\n \"components.json\", // For backward compatibility with shadcn\n];\n\nexport function getConfig(\n cwd: string = process.cwd(),\n): AssistantUIConfig | null {\n for (const fileName of CONFIG_FILE_NAMES) {\n const configPath = path.join(cwd, fileName);\n if (fs.existsSync(configPath)) {\n try {\n const configContent = fs.readFileSync(configPath, \"utf8\");\n return JSON.parse(configContent) as AssistantUIConfig;\n } catch (error) {\n const errorDetails =\n error instanceof Error\n ? (error.stack ?? error.message)\n : String(error);\n logger.error(`Error reading config file ${fileName}: ${errorDetails}`);\n }\n }\n }\n return null;\n}\n\nexport function saveConfig(\n config: AssistantUIConfig,\n cwd: string = process.cwd(),\n): void {\n const configPath = path.join(cwd, \"assistant-ui.json\");\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2));\n}\n\nexport function hasConfig(cwd: string = process.cwd()): boolean {\n return CONFIG_FILE_NAMES.some((fileName) =>\n fs.existsSync(path.join(cwd, fileName)),\n );\n}\n"],"mappings":";;;;AAqBA,MAAM,oBAAoB,CACxB,qBACA,iBACF;AAEA,SAAgB,UACd,MAAc,QAAQ,IAAI,GACA;CAC1B,KAAK,MAAM,YAAY,mBAAmB;EACxC,MAAM,aAAaA,OAAK,KAAK,KAAK,QAAQ;EAC1C,IAAIC,KAAG,WAAW,UAAU,GAC1B,IAAI;GACF,MAAM,gBAAgBA,KAAG,aAAa,YAAY,MAAM;GACxD,OAAO,KAAK,MAAM,aAAa;EACjC,SAAS,OAAO;GACd,MAAM,eACJ,iBAAiB,QACZ,MAAM,SAAS,MAAM,UACtB,OAAO,KAAK;GAClB,OAAO,MAAM,6BAA6B,SAAS,IAAI,cAAc;EACvE;CAEJ;CACA,OAAO;AACT;AAEA,SAAgB,WACd,QACA,MAAc,QAAQ,IAAI,GACpB;CACN,MAAM,aAAaD,OAAK,KAAK,KAAK,mBAAmB;CACrD,KAAG,cAAc,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC9D;AAEA,SAAgB,UAAU,MAAc,QAAQ,IAAI,GAAY;CAC9D,OAAO,kBAAkB,MAAM,aAC7BC,KAAG,WAAWD,OAAK,KAAK,KAAK,QAAQ,CAAC,CACxC;AACF"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
//#region src/lib/utils/file-scanner.d.ts
|
|
2
|
+
interface ScanOptions {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
pattern?: string;
|
|
5
|
+
ignore?: string[];
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
declare function scanForImport(importPattern: string | string[], options?: ScanOptions): boolean;
|
|
8
|
+
declare function getFilesContaining(searchString: string, options?: ScanOptions): string[];
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ScanOptions, getFilesContaining, scanForImport };
|
|
8
11
|
//# sourceMappingURL=file-scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-scanner.d.ts","
|
|
1
|
+
{"version":3,"file":"file-scanner.d.ts","names":[],"sources":["../../../src/lib/utils/file-scanner.ts"],"mappings":";UAIiB,WAAA;EACf,GAAA;EACA,OAAA;EACA,MAAA;AAAA;AAAA,iBAGc,aAAA,CACd,aAAA,qBACA,OAAA,GAAS,WAAgB;AAAA,iBA8BX,kBAAA,CACd,YAAA,UACA,OAAA,GAAS,WAAgB"}
|
|
@@ -1,54 +1,47 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
|
-
import { sync
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
catch {
|
|
25
|
-
// Ignore files that cannot be read
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
1
|
+
import * as fs$1 from "node:fs";
|
|
2
|
+
import * as path$1 from "node:path";
|
|
3
|
+
import { sync } from "glob";
|
|
4
|
+
//#region src/lib/utils/file-scanner.ts
|
|
5
|
+
function scanForImport(importPattern, options = {}) {
|
|
6
|
+
const cwd = options.cwd || process.cwd();
|
|
7
|
+
const files = sync(options.pattern || "**/*.{js,jsx,ts,tsx}", {
|
|
8
|
+
cwd,
|
|
9
|
+
ignore: options.ignore || [
|
|
10
|
+
"**/node_modules/**",
|
|
11
|
+
"**/dist/**",
|
|
12
|
+
"**/build/**"
|
|
13
|
+
]
|
|
14
|
+
});
|
|
15
|
+
const patterns = Array.isArray(importPattern) ? importPattern : [importPattern];
|
|
16
|
+
for (const file of files) {
|
|
17
|
+
const fullPath = path$1.join(cwd, file);
|
|
18
|
+
try {
|
|
19
|
+
const content = fs$1.readFileSync(fullPath, "utf8");
|
|
20
|
+
if (patterns.some((p) => content.includes(p))) return true;
|
|
21
|
+
} catch {}
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
29
24
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
catch {
|
|
49
|
-
// Ignore files that cannot be read
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
25
|
+
function getFilesContaining(searchString, options = {}) {
|
|
26
|
+
const cwd = options.cwd || process.cwd();
|
|
27
|
+
const files = sync(options.pattern || "**/*.{js,jsx,ts,tsx}", {
|
|
28
|
+
cwd,
|
|
29
|
+
ignore: options.ignore || [
|
|
30
|
+
"**/node_modules/**",
|
|
31
|
+
"**/dist/**",
|
|
32
|
+
"**/build/**"
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
const result = [];
|
|
36
|
+
for (const file of files) {
|
|
37
|
+
const fullPath = path$1.join(cwd, file);
|
|
38
|
+
try {
|
|
39
|
+
if (fs$1.readFileSync(fullPath, "utf8").includes(searchString)) result.push(fullPath);
|
|
40
|
+
} catch {}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
53
43
|
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { getFilesContaining, scanForImport };
|
|
46
|
+
|
|
54
47
|
//# sourceMappingURL=file-scanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-scanner.js","
|
|
1
|
+
{"version":3,"file":"file-scanner.js","names":["globSync","path","fs"],"sources":["../../../src/lib/utils/file-scanner.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { sync as globSync } from \"glob\";\n\nexport interface ScanOptions {\n cwd?: string;\n pattern?: string;\n ignore?: string[];\n}\n\nexport function scanForImport(\n importPattern: string | string[],\n options: ScanOptions = {},\n): boolean {\n const cwd = options.cwd || process.cwd();\n const pattern = options.pattern || \"**/*.{js,jsx,ts,tsx}\";\n const ignore = options.ignore || [\n \"**/node_modules/**\",\n \"**/dist/**\",\n \"**/build/**\",\n ];\n\n const files = globSync(pattern, { cwd, ignore });\n const patterns = Array.isArray(importPattern)\n ? importPattern\n : [importPattern];\n\n for (const file of files) {\n const fullPath = path.join(cwd, file);\n try {\n const content = fs.readFileSync(fullPath, \"utf8\");\n if (patterns.some((p) => content.includes(p))) {\n return true;\n }\n } catch {\n // Ignore files that cannot be read\n }\n }\n\n return false;\n}\n\nexport function getFilesContaining(\n searchString: string,\n options: ScanOptions = {},\n): string[] {\n const cwd = options.cwd || process.cwd();\n const pattern = options.pattern || \"**/*.{js,jsx,ts,tsx}\";\n const ignore = options.ignore || [\n \"**/node_modules/**\",\n \"**/dist/**\",\n \"**/build/**\",\n ];\n\n const files = globSync(pattern, { cwd, ignore });\n const result: string[] = [];\n\n for (const file of files) {\n const fullPath = path.join(cwd, file);\n try {\n const content = fs.readFileSync(fullPath, \"utf8\");\n if (content.includes(searchString)) {\n result.push(fullPath);\n }\n } catch {\n // Ignore files that cannot be read\n }\n }\n\n return result;\n}\n"],"mappings":";;;;AAUA,SAAgB,cACd,eACA,UAAuB,CAAC,GACf;CACT,MAAM,MAAM,QAAQ,OAAO,QAAQ,IAAI;CAQvC,MAAM,QAAQA,KAPE,QAAQ,WAAW,wBAOH;EAAE;EAAK,QANxB,QAAQ,UAAU;GAC/B;GACA;GACA;EACF;CAE8C,CAAC;CAC/C,MAAM,WAAW,MAAM,QAAQ,aAAa,IACxC,gBACA,CAAC,aAAa;CAElB,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,WAAWC,OAAK,KAAK,KAAK,IAAI;EACpC,IAAI;GACF,MAAM,UAAUC,KAAG,aAAa,UAAU,MAAM;GAChD,IAAI,SAAS,MAAM,MAAM,QAAQ,SAAS,CAAC,CAAC,GAC1C,OAAO;EAEX,QAAQ,CAER;CACF;CAEA,OAAO;AACT;AAEA,SAAgB,mBACd,cACA,UAAuB,CAAC,GACd;CACV,MAAM,MAAM,QAAQ,OAAO,QAAQ,IAAI;CAQvC,MAAM,QAAQF,KAPE,QAAQ,WAAW,wBAOH;EAAE;EAAK,QANxB,QAAQ,UAAU;GAC/B;GACA;GACA;EACF;CAE8C,CAAC;CAC/C,MAAM,SAAmB,CAAC;CAE1B,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,WAAWC,OAAK,KAAK,KAAK,IAAI;EACpC,IAAI;GAEF,IADgBC,KAAG,aAAa,UAAU,MAChC,EAAE,SAAS,YAAY,GAC/B,OAAO,KAAK,QAAQ;EAExB,QAAQ,CAER;CACF;CAEA,OAAO;AACT"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
//#region src/lib/utils/logger.d.ts
|
|
2
|
+
declare const logger: {
|
|
3
|
+
info: (message: string) => void;
|
|
4
|
+
success: (message: string) => void;
|
|
5
|
+
error: (message: string) => void;
|
|
6
|
+
warn: (message: string) => void;
|
|
7
|
+
step: (message: string) => void;
|
|
8
|
+
break: () => void;
|
|
8
9
|
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { logger };
|
|
9
12
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","
|
|
1
|
+
{"version":3,"file":"logger.d.ts","names":[],"sources":["../../../src/lib/utils/logger.ts"],"mappings":";cAEa,MAAA"}
|
package/dist/lib/utils/logger.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
//#region src/lib/utils/logger.ts
|
|
3
|
+
const logger = {
|
|
4
|
+
info: (message) => {
|
|
5
|
+
console.log(chalk.blue(message));
|
|
6
|
+
},
|
|
7
|
+
success: (message) => {
|
|
8
|
+
console.log(chalk.green(`✓ ${message}`));
|
|
9
|
+
},
|
|
10
|
+
error: (message) => {
|
|
11
|
+
console.error(chalk.red(`✗ ${message}`));
|
|
12
|
+
},
|
|
13
|
+
warn: (message) => {
|
|
14
|
+
console.log(chalk.yellow(`⚠ ${message}`));
|
|
15
|
+
},
|
|
16
|
+
step: (message) => {
|
|
17
|
+
console.log(chalk.cyan(`→ ${message}`));
|
|
18
|
+
},
|
|
19
|
+
break: () => {
|
|
20
|
+
console.log("");
|
|
21
|
+
}
|
|
21
22
|
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { logger };
|
|
25
|
+
|
|
22
26
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","
|
|
1
|
+
{"version":3,"file":"logger.js","names":[],"sources":["../../../src/lib/utils/logger.ts"],"sourcesContent":["import chalk from \"chalk\";\n\nexport const logger = {\n info: (message: string) => {\n console.log(chalk.blue(message));\n },\n success: (message: string) => {\n console.log(chalk.green(`✓ ${message}`));\n },\n error: (message: string) => {\n console.error(chalk.red(`✗ ${message}`));\n },\n warn: (message: string) => {\n console.log(chalk.yellow(`⚠ ${message}`));\n },\n step: (message: string) => {\n console.log(chalk.cyan(`→ ${message}`));\n },\n break: () => {\n console.log(\"\");\n },\n};\n"],"mappings":";;AAEA,MAAa,SAAS;CACpB,OAAO,YAAoB;EACzB,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC;CACjC;CACA,UAAU,YAAoB;EAC5B,QAAQ,IAAI,MAAM,MAAM,KAAK,SAAS,CAAC;CACzC;CACA,QAAQ,YAAoB;EAC1B,QAAQ,MAAM,MAAM,IAAI,KAAK,SAAS,CAAC;CACzC;CACA,OAAO,YAAoB;EACzB,QAAQ,IAAI,MAAM,OAAO,KAAK,SAAS,CAAC;CAC1C;CACA,OAAO,YAAoB;EACzB,QAAQ,IAAI,MAAM,KAAK,KAAK,SAAS,CAAC;CACxC;CACA,aAAa;EACX,QAAQ,IAAI,EAAE;CAChB;AACF"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
//#region src/lib/utils/package-installer.d.ts
|
|
2
|
+
interface PackageInstallConfig {
|
|
3
|
+
packageName: string;
|
|
4
|
+
importPatterns: string[];
|
|
5
|
+
promptMessage: string;
|
|
6
|
+
skipMessage: string;
|
|
7
|
+
notFoundMessage: string;
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
declare function installPackageIfNeeded(config: PackageInstallConfig): Promise<void>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { PackageInstallConfig, installPackageIfNeeded };
|
|
9
12
|
//# sourceMappingURL=package-installer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-installer.d.ts","
|
|
1
|
+
{"version":3,"file":"package-installer.d.ts","names":[],"sources":["../../../src/lib/utils/package-installer.ts"],"mappings":";UAQiB,oBAAA;EACf,WAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;EACA,eAAA;AAAA;AAAA,iBAGoB,sBAAA,CACpB,MAAA,EAAQ,oBAAA,GACP,OAAO"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import { scanForImport } from "./file-scanner.js";
|
|
2
|
-
import { isPackageInstalled, askQuestion, installPackage, } from "./package-manager.js";
|
|
3
1
|
import { logger } from "./logger.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
logger.info("Skipping installation.");
|
|
20
|
-
}
|
|
2
|
+
import { scanForImport } from "./file-scanner.js";
|
|
3
|
+
import { askQuestion, installPackage, isPackageInstalled } from "./package-manager.js";
|
|
4
|
+
//#region src/lib/utils/package-installer.ts
|
|
5
|
+
async function installPackageIfNeeded(config) {
|
|
6
|
+
if (!scanForImport(config.importPatterns)) {
|
|
7
|
+
logger.info(config.notFoundMessage);
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (isPackageInstalled(config.packageName)) {
|
|
11
|
+
logger.info(config.skipMessage);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const answer = await askQuestion(config.promptMessage);
|
|
15
|
+
if (answer === "" || answer.toLowerCase().startsWith("y")) await installPackage(config.packageName);
|
|
16
|
+
else logger.info("Skipping installation.");
|
|
21
17
|
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { installPackageIfNeeded };
|
|
20
|
+
|
|
22
21
|
//# sourceMappingURL=package-installer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-installer.js","
|
|
1
|
+
{"version":3,"file":"package-installer.js","names":[],"sources":["../../../src/lib/utils/package-installer.ts"],"sourcesContent":["import { scanForImport } from \"./file-scanner\";\nimport {\n isPackageInstalled,\n askQuestion,\n installPackage,\n} from \"./package-manager\";\nimport { logger } from \"./logger\";\n\nexport interface PackageInstallConfig {\n packageName: string;\n importPatterns: string[];\n promptMessage: string;\n skipMessage: string;\n notFoundMessage: string;\n}\n\nexport async function installPackageIfNeeded(\n config: PackageInstallConfig,\n): Promise<void> {\n const found = scanForImport(config.importPatterns);\n\n if (!found) {\n logger.info(config.notFoundMessage);\n return;\n }\n\n if (isPackageInstalled(config.packageName)) {\n logger.info(config.skipMessage);\n return;\n }\n\n const answer = await askQuestion(config.promptMessage);\n if (answer === \"\" || answer.toLowerCase().startsWith(\"y\")) {\n await installPackage(config.packageName);\n } else {\n logger.info(\"Skipping installation.\");\n }\n}\n"],"mappings":";;;;AAgBA,eAAsB,uBACpB,QACe;CAGf,IAAI,CAFU,cAAc,OAAO,cAE1B,GAAG;EACV,OAAO,KAAK,OAAO,eAAe;EAClC;CACF;CAEA,IAAI,mBAAmB,OAAO,WAAW,GAAG;EAC1C,OAAO,KAAK,OAAO,WAAW;EAC9B;CACF;CAEA,MAAM,SAAS,MAAM,YAAY,OAAO,aAAa;CACrD,IAAI,WAAW,MAAM,OAAO,YAAY,EAAE,WAAW,GAAG,GACtD,MAAM,eAAe,OAAO,WAAW;MAEvC,OAAO,KAAK,wBAAwB;AAExC"}
|