assistant-ui 0.0.55 → 0.0.57
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/v0-11/content-part-to-message-part.d.ts +3 -0
- package/dist/codemods/v0-11/content-part-to-message-part.d.ts.map +1 -0
- package/dist/codemods/v0-11/content-part-to-message-part.js +127 -0
- package/dist/codemods/v0-11/content-part-to-message-part.js.map +1 -0
- package/dist/codemods/v0-8/ui-package-split.js +1 -1
- package/dist/codemods/v0-8/ui-package-split.js.map +1 -1
- package/dist/codemods/v0-9/edge-package-split.d.ts.map +1 -1
- package/dist/codemods/v0-9/edge-package-split.js +11 -54
- package/dist/codemods/v0-9/edge-package-split.js.map +1 -1
- package/dist/lib/install-edge-lib.d.ts.map +1 -1
- package/dist/lib/install-edge-lib.js +8 -8
- package/dist/lib/install-edge-lib.js.map +1 -1
- package/dist/lib/upgrade.d.ts.map +1 -1
- package/dist/lib/upgrade.js +5 -1
- package/dist/lib/upgrade.js.map +1 -1
- package/package.json +3 -3
- package/src/codemods/v0-11/README.md +246 -0
- package/src/codemods/v0-11/__tests__/content-part-to-message-part.test.ts +230 -0
- package/src/codemods/v0-11/content-part-to-message-part.ts +171 -0
- package/src/codemods/v0-8/ui-package-split.ts +1 -1
- package/src/codemods/v0-9/edge-package-split.ts +14 -61
- package/src/lib/install-edge-lib.ts +12 -8
- package/src/lib/upgrade.ts +5 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const migrateContentPartToMessagePart: (fileInfo: import("jscodeshift/src/core").FileInfo, api: import("jscodeshift/src/core").API, options: any) => string | null;
|
|
2
|
+
export default migrateContentPartToMessagePart;
|
|
3
|
+
//# sourceMappingURL=content-part-to-message-part.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-part-to-message-part.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-11/content-part-to-message-part.ts"],"names":[],"mappings":"AAuEA,QAAA,MAAM,+BAA+B,6HAiGpC,CAAC;AAEF,eAAe,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// src/codemods/v0-11/content-part-to-message-part.ts
|
|
2
|
+
import { createTransformer } from "../utils/createTransformer.js";
|
|
3
|
+
var typeRenamingMap = {
|
|
4
|
+
// Core types
|
|
5
|
+
TextContentPart: "TextMessagePart",
|
|
6
|
+
ReasoningContentPart: "ReasoningMessagePart",
|
|
7
|
+
SourceContentPart: "SourceMessagePart",
|
|
8
|
+
ImageContentPart: "ImageMessagePart",
|
|
9
|
+
FileContentPart: "FileMessagePart",
|
|
10
|
+
Unstable_AudioContentPart: "Unstable_AudioMessagePart",
|
|
11
|
+
ToolCallContentPart: "ToolCallMessagePart",
|
|
12
|
+
// Status types
|
|
13
|
+
ContentPartStatus: "MessagePartStatus",
|
|
14
|
+
ToolCallContentPartStatus: "ToolCallMessagePartStatus",
|
|
15
|
+
// Thread message parts
|
|
16
|
+
ThreadUserContentPart: "ThreadUserMessagePart",
|
|
17
|
+
ThreadAssistantContentPart: "ThreadAssistantMessagePart",
|
|
18
|
+
// Runtime and state types
|
|
19
|
+
ContentPartRuntime: "MessagePartRuntime",
|
|
20
|
+
ContentPartState: "MessagePartState",
|
|
21
|
+
// Component types
|
|
22
|
+
EmptyContentPartComponent: "EmptyMessagePartComponent",
|
|
23
|
+
TextContentPartComponent: "TextMessagePartComponent",
|
|
24
|
+
ReasoningContentPartComponent: "ReasoningMessagePartComponent",
|
|
25
|
+
SourceContentPartComponent: "SourceMessagePartComponent",
|
|
26
|
+
ImageContentPartComponent: "ImageMessagePartComponent",
|
|
27
|
+
FileContentPartComponent: "FileMessagePartComponent",
|
|
28
|
+
Unstable_AudioContentPartComponent: "Unstable_AudioMessagePartComponent",
|
|
29
|
+
ToolCallContentPartComponent: "ToolCallMessagePartComponent",
|
|
30
|
+
// Props types
|
|
31
|
+
EmptyContentPartProps: "EmptyMessagePartProps",
|
|
32
|
+
TextContentPartProps: "TextMessagePartProps",
|
|
33
|
+
ReasoningContentPartProps: "ReasoningMessagePartProps",
|
|
34
|
+
SourceContentPartProps: "SourceMessagePartProps",
|
|
35
|
+
ImageContentPartProps: "ImageMessagePartProps",
|
|
36
|
+
FileContentPartProps: "FileMessagePartProps",
|
|
37
|
+
Unstable_AudioContentPartProps: "Unstable_AudioMessagePartProps",
|
|
38
|
+
ToolCallContentPartProps: "ToolCallMessagePartProps",
|
|
39
|
+
// Provider types
|
|
40
|
+
TextContentPartProvider: "TextMessagePartProvider",
|
|
41
|
+
TextContentPartProviderProps: "TextMessagePartProviderProps",
|
|
42
|
+
ContentPartRuntimeProvider: "MessagePartRuntimeProvider",
|
|
43
|
+
// Context types
|
|
44
|
+
ContentPartContext: "MessagePartContext",
|
|
45
|
+
ContentPartContextValue: "MessagePartContextValue",
|
|
46
|
+
// Hook names
|
|
47
|
+
useContentPart: "useMessagePart",
|
|
48
|
+
useContentPartRuntime: "useMessagePartRuntime",
|
|
49
|
+
useContentPartText: "useMessagePartText",
|
|
50
|
+
useContentPartReasoning: "useMessagePartReasoning",
|
|
51
|
+
useContentPartSource: "useMessagePartSource",
|
|
52
|
+
useContentPartFile: "useMessagePartFile",
|
|
53
|
+
useContentPartImage: "useMessagePartImage",
|
|
54
|
+
useTextContentPart: "useTextMessagePart",
|
|
55
|
+
// Primitive names
|
|
56
|
+
ContentPartPrimitive: "MessagePartPrimitive",
|
|
57
|
+
ContentPartPrimitiveText: "MessagePartPrimitiveText",
|
|
58
|
+
ContentPartPrimitiveImage: "MessagePartPrimitiveImage",
|
|
59
|
+
ContentPartPrimitiveInProgress: "MessagePartPrimitiveInProgress"
|
|
60
|
+
};
|
|
61
|
+
var migrateContentPartToMessagePart = createTransformer(
|
|
62
|
+
({ j, root, markAsChanged }) => {
|
|
63
|
+
root.find(j.ImportDeclaration).forEach((path) => {
|
|
64
|
+
const source = path.value.source.value;
|
|
65
|
+
if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
|
|
66
|
+
path.value.specifiers?.forEach((specifier) => {
|
|
67
|
+
if (j.ImportSpecifier.check(specifier)) {
|
|
68
|
+
const oldName = specifier.imported.name;
|
|
69
|
+
if (typeRenamingMap[oldName]) {
|
|
70
|
+
specifier.imported.name = typeRenamingMap[oldName];
|
|
71
|
+
if (specifier.local && specifier.local.name === oldName) {
|
|
72
|
+
specifier.local.name = typeRenamingMap[oldName];
|
|
73
|
+
}
|
|
74
|
+
markAsChanged();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
root.find(j.MemberExpression).forEach((path) => {
|
|
81
|
+
if (path.value.object && path.value.object.name === "MessagePrimitive" && path.value.property && path.value.property.name === "Content") {
|
|
82
|
+
path.value.property.name = "Parts";
|
|
83
|
+
markAsChanged();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
root.find(j.JSXMemberExpression).forEach((path) => {
|
|
87
|
+
if (path.value.object && path.value.object.name === "MessagePrimitive" && path.value.property && path.value.property.name === "Content") {
|
|
88
|
+
path.value.property.name = "Parts";
|
|
89
|
+
markAsChanged();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
Object.entries(typeRenamingMap).forEach(([oldName, newName]) => {
|
|
93
|
+
root.find(j.TSTypeReference).forEach((path) => {
|
|
94
|
+
if (path.value.typeName && path.value.typeName.name === oldName) {
|
|
95
|
+
path.value.typeName.name = newName;
|
|
96
|
+
markAsChanged();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
root.find(j.Identifier).forEach((path) => {
|
|
100
|
+
if (path.value.name === oldName) {
|
|
101
|
+
if (j.ImportSpecifier.check(path.parent.value)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (j.Property.check(path.parent.value) && path.parent.value.key === path.value) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (j.MemberExpression.check(path.parent.value) && path.parent.value.property === path.value) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
path.value.name = newName;
|
|
111
|
+
markAsChanged();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
root.find(j.JSXIdentifier).forEach((path) => {
|
|
115
|
+
if (path.value.name === oldName) {
|
|
116
|
+
path.value.name = newName;
|
|
117
|
+
markAsChanged();
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
var content_part_to_message_part_default = migrateContentPartToMessagePart;
|
|
124
|
+
export {
|
|
125
|
+
content_part_to_message_part_default as default
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=content-part-to-message-part.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/codemods/v0-11/content-part-to-message-part.ts"],"sourcesContent":["import { createTransformer } from \"../utils/createTransformer\";\n\n// Map of old ContentPart names to new MessagePart names\nconst typeRenamingMap: Record<string, string> = {\n // Core types\n TextContentPart: \"TextMessagePart\",\n ReasoningContentPart: \"ReasoningMessagePart\",\n SourceContentPart: \"SourceMessagePart\",\n ImageContentPart: \"ImageMessagePart\",\n FileContentPart: \"FileMessagePart\",\n Unstable_AudioContentPart: \"Unstable_AudioMessagePart\",\n ToolCallContentPart: \"ToolCallMessagePart\",\n\n // Status types\n ContentPartStatus: \"MessagePartStatus\",\n ToolCallContentPartStatus: \"ToolCallMessagePartStatus\",\n\n // Thread message parts\n ThreadUserContentPart: \"ThreadUserMessagePart\",\n ThreadAssistantContentPart: \"ThreadAssistantMessagePart\",\n\n // Runtime and state types\n ContentPartRuntime: \"MessagePartRuntime\",\n ContentPartState: \"MessagePartState\",\n\n // Component types\n EmptyContentPartComponent: \"EmptyMessagePartComponent\",\n TextContentPartComponent: \"TextMessagePartComponent\",\n ReasoningContentPartComponent: \"ReasoningMessagePartComponent\",\n SourceContentPartComponent: \"SourceMessagePartComponent\",\n ImageContentPartComponent: \"ImageMessagePartComponent\",\n FileContentPartComponent: \"FileMessagePartComponent\",\n Unstable_AudioContentPartComponent: \"Unstable_AudioMessagePartComponent\",\n ToolCallContentPartComponent: \"ToolCallMessagePartComponent\",\n\n // Props types\n EmptyContentPartProps: \"EmptyMessagePartProps\",\n TextContentPartProps: \"TextMessagePartProps\",\n ReasoningContentPartProps: \"ReasoningMessagePartProps\",\n SourceContentPartProps: \"SourceMessagePartProps\",\n ImageContentPartProps: \"ImageMessagePartProps\",\n FileContentPartProps: \"FileMessagePartProps\",\n Unstable_AudioContentPartProps: \"Unstable_AudioMessagePartProps\",\n ToolCallContentPartProps: \"ToolCallMessagePartProps\",\n\n // Provider types\n TextContentPartProvider: \"TextMessagePartProvider\",\n TextContentPartProviderProps: \"TextMessagePartProviderProps\",\n ContentPartRuntimeProvider: \"MessagePartRuntimeProvider\",\n\n // Context types\n ContentPartContext: \"MessagePartContext\",\n ContentPartContextValue: \"MessagePartContextValue\",\n\n // Hook names\n useContentPart: \"useMessagePart\",\n useContentPartRuntime: \"useMessagePartRuntime\",\n useContentPartText: \"useMessagePartText\",\n useContentPartReasoning: \"useMessagePartReasoning\",\n useContentPartSource: \"useMessagePartSource\",\n useContentPartFile: \"useMessagePartFile\",\n useContentPartImage: \"useMessagePartImage\",\n useTextContentPart: \"useTextMessagePart\",\n\n // Primitive names\n ContentPartPrimitive: \"MessagePartPrimitive\",\n ContentPartPrimitiveText: \"MessagePartPrimitiveText\",\n ContentPartPrimitiveImage: \"MessagePartPrimitiveImage\",\n ContentPartPrimitiveInProgress: \"MessagePartPrimitiveInProgress\",\n};\n\nconst migrateContentPartToMessagePart = createTransformer(\n ({ j, root, markAsChanged }) => {\n // 1. Update imports\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const source = path.value.source.value;\n\n // Only process imports from @assistant-ui packages\n if (typeof source === \"string\" && source.startsWith(\"@assistant-ui/\")) {\n path.value.specifiers?.forEach((specifier: any) => {\n if (j.ImportSpecifier.check(specifier)) {\n const oldName = specifier.imported.name as string;\n if (typeRenamingMap[oldName]) {\n specifier.imported.name = typeRenamingMap[oldName];\n if (specifier.local && specifier.local.name === oldName) {\n specifier.local.name = typeRenamingMap[oldName];\n }\n markAsChanged();\n }\n }\n });\n }\n });\n\n // 2. Update MessagePrimitive.Content to MessagePrimitive.Parts\n root.find(j.MemberExpression).forEach((path: any) => {\n if (\n path.value.object &&\n path.value.object.name === \"MessagePrimitive\" &&\n path.value.property &&\n path.value.property.name === \"Content\"\n ) {\n path.value.property.name = \"Parts\";\n markAsChanged();\n }\n });\n\n // 3. Update JSX member expressions (e.g., MessagePrimitive.Content in JSX)\n root.find(j.JSXMemberExpression).forEach((path: any) => {\n if (\n path.value.object &&\n path.value.object.name === \"MessagePrimitive\" &&\n path.value.property &&\n path.value.property.name === \"Content\"\n ) {\n path.value.property.name = \"Parts\";\n markAsChanged();\n }\n });\n\n // 4. Update all identifiers for types, hooks, and primitives\n Object.entries(typeRenamingMap).forEach(([oldName, newName]) => {\n // Update type references\n root.find(j.TSTypeReference).forEach((path: any) => {\n if (path.value.typeName && path.value.typeName.name === oldName) {\n path.value.typeName.name = newName;\n markAsChanged();\n }\n });\n\n // Update identifier references\n root.find(j.Identifier).forEach((path: any) => {\n if (path.value.name === oldName) {\n // Skip if this is part of an import declaration (already handled above)\n if (j.ImportSpecifier.check(path.parent.value)) {\n return;\n }\n\n // Skip if this is a property key in an object\n if (\n j.Property.check(path.parent.value) &&\n path.parent.value.key === path.value\n ) {\n return;\n }\n\n // Skip if this is a property in a member expression\n if (\n j.MemberExpression.check(path.parent.value) &&\n path.parent.value.property === path.value\n ) {\n return;\n }\n\n path.value.name = newName;\n markAsChanged();\n }\n });\n\n // Update JSX element names\n root.find(j.JSXIdentifier).forEach((path: any) => {\n if (path.value.name === oldName) {\n path.value.name = newName;\n markAsChanged();\n }\n });\n });\n },\n);\n\nexport default migrateContentPartToMessagePart;\n"],"mappings":";AAAA,SAAS,yBAAyB;AAGlC,IAAM,kBAA0C;AAAA;AAAA,EAE9C,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA;AAAA,EAGrB,mBAAmB;AAAA,EACnB,2BAA2B;AAAA;AAAA,EAG3B,uBAAuB;AAAA,EACvB,4BAA4B;AAAA;AAAA,EAG5B,oBAAoB;AAAA,EACpB,kBAAkB;AAAA;AAAA,EAGlB,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,+BAA+B;AAAA,EAC/B,4BAA4B;AAAA,EAC5B,2BAA2B;AAAA,EAC3B,0BAA0B;AAAA,EAC1B,oCAAoC;AAAA,EACpC,8BAA8B;AAAA;AAAA,EAG9B,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,gCAAgC;AAAA,EAChC,0BAA0B;AAAA;AAAA,EAG1B,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,4BAA4B;AAAA;AAAA,EAG5B,oBAAoB;AAAA,EACpB,yBAAyB;AAAA;AAAA,EAGzB,gBAAgB;AAAA,EAChB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA;AAAA,EAGpB,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,gCAAgC;AAClC;AAEA,IAAM,kCAAkC;AAAA,EACtC,CAAC,EAAE,GAAG,MAAM,cAAc,MAAM;AAE9B,SAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAc;AACpD,YAAM,SAAS,KAAK,MAAM,OAAO;AAGjC,UAAI,OAAO,WAAW,YAAY,OAAO,WAAW,gBAAgB,GAAG;AACrE,aAAK,MAAM,YAAY,QAAQ,CAAC,cAAmB;AACjD,cAAI,EAAE,gBAAgB,MAAM,SAAS,GAAG;AACtC,kBAAM,UAAU,UAAU,SAAS;AACnC,gBAAI,gBAAgB,OAAO,GAAG;AAC5B,wBAAU,SAAS,OAAO,gBAAgB,OAAO;AACjD,kBAAI,UAAU,SAAS,UAAU,MAAM,SAAS,SAAS;AACvD,0BAAU,MAAM,OAAO,gBAAgB,OAAO;AAAA,cAChD;AACA,4BAAc;AAAA,YAChB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAGD,SAAK,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,SAAc;AACnD,UACE,KAAK,MAAM,UACX,KAAK,MAAM,OAAO,SAAS,sBAC3B,KAAK,MAAM,YACX,KAAK,MAAM,SAAS,SAAS,WAC7B;AACA,aAAK,MAAM,SAAS,OAAO;AAC3B,sBAAc;AAAA,MAChB;AAAA,IACF,CAAC;AAGD,SAAK,KAAK,EAAE,mBAAmB,EAAE,QAAQ,CAAC,SAAc;AACtD,UACE,KAAK,MAAM,UACX,KAAK,MAAM,OAAO,SAAS,sBAC3B,KAAK,MAAM,YACX,KAAK,MAAM,SAAS,SAAS,WAC7B;AACA,aAAK,MAAM,SAAS,OAAO;AAC3B,sBAAc;AAAA,MAChB;AAAA,IACF,CAAC;AAGD,WAAO,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,OAAO,MAAM;AAE9D,WAAK,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,SAAc;AAClD,YAAI,KAAK,MAAM,YAAY,KAAK,MAAM,SAAS,SAAS,SAAS;AAC/D,eAAK,MAAM,SAAS,OAAO;AAC3B,wBAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAGD,WAAK,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAc;AAC7C,YAAI,KAAK,MAAM,SAAS,SAAS;AAE/B,cAAI,EAAE,gBAAgB,MAAM,KAAK,OAAO,KAAK,GAAG;AAC9C;AAAA,UACF;AAGA,cACE,EAAE,SAAS,MAAM,KAAK,OAAO,KAAK,KAClC,KAAK,OAAO,MAAM,QAAQ,KAAK,OAC/B;AACA;AAAA,UACF;AAGA,cACE,EAAE,iBAAiB,MAAM,KAAK,OAAO,KAAK,KAC1C,KAAK,OAAO,MAAM,aAAa,KAAK,OACpC;AACA;AAAA,UACF;AAEA,eAAK,MAAM,OAAO;AAClB,wBAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAGD,WAAK,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,SAAc;AAChD,YAAI,KAAK,MAAM,SAAS,SAAS;AAC/B,eAAK,MAAM,OAAO;AAClB,wBAAc;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,IAAO,uCAAQ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/codemods/v0-8/ui-package-split.ts"],"sourcesContent":["import { createTransformer } from \"../utils/createTransformer\";\n\nconst reactUIExports: string[] = [\n \"ThreadConfigProvider\",\n \"useThreadConfig\",\n \"ThreadConfig\",\n \"ThreadWelcomeConfig\",\n \"UserMessageConfig\",\n \"AssistantMessageConfig\",\n \"StringsConfig\",\n \"SuggestionConfig\",\n \"ThreadConfigProviderProps\",\n \"AssistantActionBar\",\n \"AssistantMessage\",\n \"AssistantModal\",\n \"BranchPicker\",\n \"Composer\",\n \"ContentPart\",\n \"AttachmentUI\",\n \"EditComposer\",\n \"Thread\",\n \"ThreadList\",\n \"ThreadListItem\",\n \"ThreadWelcome\",\n \"UserMessage\",\n \"makeMarkdownText\",\n \"MakeMarkdownTextProps\",\n \"CodeHeader\",\n];\n\nconst migrateAssistantUI = createTransformer(({ j, root, markAsChanged }) => {\n const sourcesToMigrate: string[] = [\n \"@assistant-ui/react\",\n \"@assistant-ui/react-markdown\",\n ];\n const movedSpecifiers: any[] = [];\n let lastMigratedImportPath: any = null;\n\n root\n .find(j.ImportDeclaration)\n .filter((path: any) => sourcesToMigrate.includes(path.value.source.value))\n .forEach((path: any) => {\n let hadMigratedSpecifiers = false;\n const remainingSpecifiers: any[] = [];\n path.value.specifiers.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n reactUIExports.includes(specifier.imported.name as string)\n ) {\n movedSpecifiers.push(specifier);\n hadMigratedSpecifiers = true;\n } else {\n remainingSpecifiers.push(specifier);\n }\n });\n if (hadMigratedSpecifiers) {\n lastMigratedImportPath = path;\n }\n if (remainingSpecifiers.length === 0) {\n j(path).remove();\n markAsChanged();\n } else if (remainingSpecifiers.length !== path.value.specifiers.length) {\n path.value.specifiers = remainingSpecifiers;\n markAsChanged();\n }\n });\n\n if (movedSpecifiers.length > 0) {\n const existingReactUIImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-ui\" },\n });\n if (existingReactUIImport.size() > 0) {\n existingReactUIImport.forEach((path: any) => {\n movedSpecifiers.forEach((specifier: any) => {\n if (\n !path.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n path.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n movedSpecifiers,\n j.literal(\"@assistant-ui/react-ui\"),\n );\n if (lastMigratedImportPath) {\n j(lastMigratedImportPath).insertAfter(newImport);\n } else {\n const firstImport = root.find(j.ImportDeclaration).at(0);\n if (firstImport.size() > 0) {\n firstImport.insertBefore(newImport);\n } else {\n root.get().node.program.body.unshift(newImport);\n }\n }\n }\n markAsChanged();\n }\n\n const cssReplacements: Record<string, string> = {\n \"@assistant-ui/react/styles/index.css\":\n \"@assistant-ui/react-ui/styles/index.css\",\n \"@assistant-ui/react/styles/modal.css\":\n \"@assistant-ui/react-ui/styles/modal.css\",\n \"@assistant-ui/react-markdown/styles/markdown.css\":\n \"@assistant-ui/react-ui/styles/markdown.css\",\n };\n\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const sourceValue: string = path.value.source.value;\n if (cssReplacements[sourceValue]) {\n path.value.source = j.literal(cssReplacements[sourceValue]);\n markAsChanged();\n }\n });\n\n let removedMarkdownPlugin = false;\n root\n .find(j.CallExpression, { callee: { name: \"require\" } })\n .filter((path: any) => {\n const arg = path.value.arguments[0];\n return (\n arg &&\n (arg.type === \"Literal\" || arg.type === \"StringLiteral\") &&\n arg.value === \"@assistant-ui/react-markdown/tailwindcss\"\n );\n })\n .forEach((path: any) => {\n removedMarkdownPlugin = true;\n const parent = path.parentPath;\n if (\n parent &&\n parent.value &&\n parent.value.type === \"VariableDeclarator\"\n ) {\n const varDecl = parent.parentPath;\n if (\n varDecl &&\n varDecl.value.declarations &&\n varDecl.value.declarations.length === 1\n ) {\n j(varDecl).remove();\n } else {\n varDecl.value.declarations = varDecl.value.declarations.filter(\n (decl: any) => decl !== parent.value,\n );\n }\n markAsChanged();\n } else {\n j(path).remove();\n markAsChanged();\n }\n });\n\n root\n .find(j.CallExpression, { callee: { name: \"require\" } })\n .filter((path: any) => {\n const arg = path.value.arguments[0];\n return (\n arg &&\n (arg.type === \"Literal\" || arg.type === \"StringLiteral\") &&\n arg.value === \"@assistant-ui/react/tailwindcss\"\n );\n })\n .forEach((path: any) => {\n path.value.arguments[0].value = \"@assistant-ui/react-ui/tailwindcss\";\n markAsChanged();\n if (removedMarkdownPlugin) {\n if (\n path.parentPath &&\n path.parentPath.value &&\n path.parentPath.value.type === \"CallExpression\" &&\n path.parentPath.value.arguments.length > 0\n ) {\n const configObj = path.parentPath.value.arguments[0];\n if (configObj && configObj.type === \"ObjectExpression\") {\n const componentsProp = configObj.properties.find((prop: any) => {\n return (\n (prop.key.name === \"components\" ||\n prop.key.value === \"components\") &&\n prop.value.type === \"ArrayExpression\"\n );\n });\n if (componentsProp) {\n const componentsArray = componentsProp.value.elements;\n const hasMarkdown = componentsArray.some(\n (el: any) => el.type === \"Literal\" && el.value === \"markdown\",\n );\n if (!hasMarkdown) {\n componentsArray.push(j.literal(\"markdown\"));\n markAsChanged();\n }\n }\n }\n }\n }\n });\n});\n\nexport default migrateAssistantUI;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/codemods/v0-8/ui-package-split.ts"],"sourcesContent":["import { createTransformer } from \"../utils/createTransformer\";\n\nconst reactUIExports: string[] = [\n \"ThreadConfigProvider\",\n \"useThreadConfig\",\n \"ThreadConfig\",\n \"ThreadWelcomeConfig\",\n \"UserMessageConfig\",\n \"AssistantMessageConfig\",\n \"StringsConfig\",\n \"SuggestionConfig\",\n \"ThreadConfigProviderProps\",\n \"AssistantActionBar\",\n \"AssistantMessage\",\n \"AssistantModal\",\n \"BranchPicker\",\n \"Composer\",\n \"MessagePart\",\n \"AttachmentUI\",\n \"EditComposer\",\n \"Thread\",\n \"ThreadList\",\n \"ThreadListItem\",\n \"ThreadWelcome\",\n \"UserMessage\",\n \"makeMarkdownText\",\n \"MakeMarkdownTextProps\",\n \"CodeHeader\",\n];\n\nconst migrateAssistantUI = createTransformer(({ j, root, markAsChanged }) => {\n const sourcesToMigrate: string[] = [\n \"@assistant-ui/react\",\n \"@assistant-ui/react-markdown\",\n ];\n const movedSpecifiers: any[] = [];\n let lastMigratedImportPath: any = null;\n\n root\n .find(j.ImportDeclaration)\n .filter((path: any) => sourcesToMigrate.includes(path.value.source.value))\n .forEach((path: any) => {\n let hadMigratedSpecifiers = false;\n const remainingSpecifiers: any[] = [];\n path.value.specifiers.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n reactUIExports.includes(specifier.imported.name as string)\n ) {\n movedSpecifiers.push(specifier);\n hadMigratedSpecifiers = true;\n } else {\n remainingSpecifiers.push(specifier);\n }\n });\n if (hadMigratedSpecifiers) {\n lastMigratedImportPath = path;\n }\n if (remainingSpecifiers.length === 0) {\n j(path).remove();\n markAsChanged();\n } else if (remainingSpecifiers.length !== path.value.specifiers.length) {\n path.value.specifiers = remainingSpecifiers;\n markAsChanged();\n }\n });\n\n if (movedSpecifiers.length > 0) {\n const existingReactUIImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-ui\" },\n });\n if (existingReactUIImport.size() > 0) {\n existingReactUIImport.forEach((path: any) => {\n movedSpecifiers.forEach((specifier: any) => {\n if (\n !path.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n path.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n movedSpecifiers,\n j.literal(\"@assistant-ui/react-ui\"),\n );\n if (lastMigratedImportPath) {\n j(lastMigratedImportPath).insertAfter(newImport);\n } else {\n const firstImport = root.find(j.ImportDeclaration).at(0);\n if (firstImport.size() > 0) {\n firstImport.insertBefore(newImport);\n } else {\n root.get().node.program.body.unshift(newImport);\n }\n }\n }\n markAsChanged();\n }\n\n const cssReplacements: Record<string, string> = {\n \"@assistant-ui/react/styles/index.css\":\n \"@assistant-ui/react-ui/styles/index.css\",\n \"@assistant-ui/react/styles/modal.css\":\n \"@assistant-ui/react-ui/styles/modal.css\",\n \"@assistant-ui/react-markdown/styles/markdown.css\":\n \"@assistant-ui/react-ui/styles/markdown.css\",\n };\n\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const sourceValue: string = path.value.source.value;\n if (cssReplacements[sourceValue]) {\n path.value.source = j.literal(cssReplacements[sourceValue]);\n markAsChanged();\n }\n });\n\n let removedMarkdownPlugin = false;\n root\n .find(j.CallExpression, { callee: { name: \"require\" } })\n .filter((path: any) => {\n const arg = path.value.arguments[0];\n return (\n arg &&\n (arg.type === \"Literal\" || arg.type === \"StringLiteral\") &&\n arg.value === \"@assistant-ui/react-markdown/tailwindcss\"\n );\n })\n .forEach((path: any) => {\n removedMarkdownPlugin = true;\n const parent = path.parentPath;\n if (\n parent &&\n parent.value &&\n parent.value.type === \"VariableDeclarator\"\n ) {\n const varDecl = parent.parentPath;\n if (\n varDecl &&\n varDecl.value.declarations &&\n varDecl.value.declarations.length === 1\n ) {\n j(varDecl).remove();\n } else {\n varDecl.value.declarations = varDecl.value.declarations.filter(\n (decl: any) => decl !== parent.value,\n );\n }\n markAsChanged();\n } else {\n j(path).remove();\n markAsChanged();\n }\n });\n\n root\n .find(j.CallExpression, { callee: { name: \"require\" } })\n .filter((path: any) => {\n const arg = path.value.arguments[0];\n return (\n arg &&\n (arg.type === \"Literal\" || arg.type === \"StringLiteral\") &&\n arg.value === \"@assistant-ui/react/tailwindcss\"\n );\n })\n .forEach((path: any) => {\n path.value.arguments[0].value = \"@assistant-ui/react-ui/tailwindcss\";\n markAsChanged();\n if (removedMarkdownPlugin) {\n if (\n path.parentPath &&\n path.parentPath.value &&\n path.parentPath.value.type === \"CallExpression\" &&\n path.parentPath.value.arguments.length > 0\n ) {\n const configObj = path.parentPath.value.arguments[0];\n if (configObj && configObj.type === \"ObjectExpression\") {\n const componentsProp = configObj.properties.find((prop: any) => {\n return (\n (prop.key.name === \"components\" ||\n prop.key.value === \"components\") &&\n prop.value.type === \"ArrayExpression\"\n );\n });\n if (componentsProp) {\n const componentsArray = componentsProp.value.elements;\n const hasMarkdown = componentsArray.some(\n (el: any) => el.type === \"Literal\" && el.value === \"markdown\",\n );\n if (!hasMarkdown) {\n componentsArray.push(j.literal(\"markdown\"));\n markAsChanged();\n }\n }\n }\n }\n }\n });\n});\n\nexport default migrateAssistantUI;\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-package-split.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-9/edge-package-split.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edge-package-split.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-9/edge-package-split.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,oBAAoB,6HAkJxB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,29 +1,22 @@
|
|
|
1
1
|
// src/codemods/v0-9/edge-package-split.ts
|
|
2
2
|
import { createTransformer } from "../utils/createTransformer.js";
|
|
3
|
-
var
|
|
4
|
-
//
|
|
5
|
-
"
|
|
6
|
-
"EdgeRuntimeOptions",
|
|
7
|
-
"EdgeModelAdapter",
|
|
8
|
-
"EdgeChatAdapter",
|
|
9
|
-
"EdgeRuntimeRequestOptions",
|
|
10
|
-
"createEdgeRuntimeAPI",
|
|
11
|
-
"getEdgeRuntimeResponse",
|
|
3
|
+
var reactAiSdkExports = [
|
|
4
|
+
// Chat Runtime (replaces edge runtime)
|
|
5
|
+
"useChatRuntime",
|
|
12
6
|
// Core Types
|
|
13
7
|
"CoreMessage",
|
|
14
8
|
"CoreUserMessage",
|
|
15
9
|
"CoreAssistantMessage",
|
|
16
10
|
"CoreSystemMessage",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
11
|
+
"CoreUserMessagePart",
|
|
12
|
+
"CoreAssistantMessagePart",
|
|
13
|
+
"CoreToolCallMessagePart",
|
|
20
14
|
// Core message converters
|
|
21
15
|
"fromCoreMessages",
|
|
22
16
|
"fromCoreMessage",
|
|
23
17
|
"toCoreMessages",
|
|
24
|
-
"toCoreMessage"
|
|
25
|
-
|
|
26
|
-
var reactAiSdkExports = [
|
|
18
|
+
"toCoreMessage",
|
|
19
|
+
// Language model converters
|
|
27
20
|
"toLanguageModelMessages",
|
|
28
21
|
"toLanguageModelTools",
|
|
29
22
|
"fromLanguageModelMessages",
|
|
@@ -32,17 +25,13 @@ var reactAiSdkExports = [
|
|
|
32
25
|
];
|
|
33
26
|
var migrateToEdgePackage = createTransformer(({ j, root, markAsChanged }) => {
|
|
34
27
|
const sourcesToMigrate = ["@assistant-ui/react"];
|
|
35
|
-
const movedEdgeSpecifiers = [];
|
|
36
28
|
const movedAiSdkSpecifiers = [];
|
|
37
29
|
let lastMigratedImportPath = null;
|
|
38
30
|
root.find(j.ImportDeclaration).filter((path) => sourcesToMigrate.includes(path.value.source.value)).forEach((path) => {
|
|
39
31
|
let hadMigratedSpecifiers = false;
|
|
40
32
|
const remainingSpecifiers = [];
|
|
41
33
|
path.value.specifiers.forEach((specifier) => {
|
|
42
|
-
if (j.ImportSpecifier.check(specifier) &&
|
|
43
|
-
movedEdgeSpecifiers.push(specifier);
|
|
44
|
-
hadMigratedSpecifiers = true;
|
|
45
|
-
} else if (j.ImportSpecifier.check(specifier) && reactAiSdkExports.includes(specifier.imported.name)) {
|
|
34
|
+
if (j.ImportSpecifier.check(specifier) && reactAiSdkExports.includes(specifier.imported.name)) {
|
|
46
35
|
movedAiSdkSpecifiers.push(specifier);
|
|
47
36
|
hadMigratedSpecifiers = true;
|
|
48
37
|
} else {
|
|
@@ -60,38 +49,6 @@ var migrateToEdgePackage = createTransformer(({ j, root, markAsChanged }) => {
|
|
|
60
49
|
markAsChanged();
|
|
61
50
|
}
|
|
62
51
|
});
|
|
63
|
-
if (movedEdgeSpecifiers.length > 0) {
|
|
64
|
-
const existingEdgeImport = root.find(j.ImportDeclaration, {
|
|
65
|
-
source: { value: "@assistant-ui/react-edge" }
|
|
66
|
-
});
|
|
67
|
-
if (existingEdgeImport.size() > 0) {
|
|
68
|
-
existingEdgeImport.forEach((path) => {
|
|
69
|
-
movedEdgeSpecifiers.forEach((specifier) => {
|
|
70
|
-
if (!path.value.specifiers.some(
|
|
71
|
-
(s) => s.imported.name === specifier.imported.name
|
|
72
|
-
)) {
|
|
73
|
-
path.value.specifiers.push(specifier);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
} else {
|
|
78
|
-
const newImport = j.importDeclaration(
|
|
79
|
-
movedEdgeSpecifiers,
|
|
80
|
-
j.literal("@assistant-ui/react-edge")
|
|
81
|
-
);
|
|
82
|
-
if (lastMigratedImportPath) {
|
|
83
|
-
j(lastMigratedImportPath).insertAfter(newImport);
|
|
84
|
-
} else {
|
|
85
|
-
const firstImport = root.find(j.ImportDeclaration).at(0);
|
|
86
|
-
if (firstImport.size() > 0) {
|
|
87
|
-
firstImport.insertBefore(newImport);
|
|
88
|
-
} else {
|
|
89
|
-
root.get().node.program.body.unshift(newImport);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
markAsChanged();
|
|
94
|
-
}
|
|
95
52
|
if (movedAiSdkSpecifiers.length > 0) {
|
|
96
53
|
const existingAiSdkImport = root.find(j.ImportDeclaration, {
|
|
97
54
|
source: { value: "@assistant-ui/react-ai-sdk" }
|
|
@@ -130,7 +87,7 @@ var migrateToEdgePackage = createTransformer(({ j, root, markAsChanged }) => {
|
|
|
130
87
|
path.value.source = j.literal(
|
|
131
88
|
sourceValue.replace(
|
|
132
89
|
"@assistant-ui/react/",
|
|
133
|
-
"@assistant-ui/react-
|
|
90
|
+
"@assistant-ui/react-ai-sdk/"
|
|
134
91
|
)
|
|
135
92
|
);
|
|
136
93
|
markAsChanged();
|
|
@@ -138,7 +95,7 @@ var migrateToEdgePackage = createTransformer(({ j, root, markAsChanged }) => {
|
|
|
138
95
|
});
|
|
139
96
|
root.find(j.ImportDeclaration).forEach((path) => {
|
|
140
97
|
const sourceValue = path.value.source.value;
|
|
141
|
-
if (sourceValue === "@assistant-ui/react-edge") {
|
|
98
|
+
if (sourceValue === "@assistant-ui/react-edge" || sourceValue === "@assistant-ui/react") {
|
|
142
99
|
let hasLanguageModelConverters = false;
|
|
143
100
|
const remainingSpecifiers = [];
|
|
144
101
|
const aiSdkSpecifiers = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/codemods/v0-9/edge-package-split.ts"],"sourcesContent":["import { createTransformer } from \"../utils/createTransformer\";\n\nconst reactEdgeExports: string[] = [\n // Edge Runtime\n \"useEdgeRuntime\",\n \"EdgeRuntimeOptions\",\n \"EdgeModelAdapter\",\n \"EdgeChatAdapter\",\n \"EdgeRuntimeRequestOptions\",\n \"createEdgeRuntimeAPI\",\n \"getEdgeRuntimeResponse\",\n\n // Core Types\n \"CoreMessage\",\n \"CoreUserMessage\",\n \"CoreAssistantMessage\",\n \"CoreSystemMessage\",\n \"CoreUserContentPart\",\n \"CoreAssistantContentPart\",\n \"CoreToolCallContentPart\",\n\n // Core message converters\n \"fromCoreMessages\",\n \"fromCoreMessage\",\n \"toCoreMessages\",\n \"toCoreMessage\",\n];\n\n// Language model converters to be moved to react-ai-sdk\nconst reactAiSdkExports: string[] = [\n \"toLanguageModelMessages\",\n \"toLanguageModelTools\",\n \"fromLanguageModelMessages\",\n \"fromLanguageModelTools\",\n \"useDangerousInBrowserRuntime\",\n];\n\nconst migrateToEdgePackage = createTransformer(({ j, root, markAsChanged }) => {\n const sourcesToMigrate: string[] = [\"@assistant-ui/react\"];\n const movedEdgeSpecifiers: any[] = [];\n const movedAiSdkSpecifiers: any[] = [];\n let lastMigratedImportPath: any = null;\n\n root\n .find(j.ImportDeclaration)\n .filter((path: any) => sourcesToMigrate.includes(path.value.source.value))\n .forEach((path: any) => {\n let hadMigratedSpecifiers = false;\n const remainingSpecifiers: any[] = [];\n path.value.specifiers.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n reactEdgeExports.includes(specifier.imported.name as string)\n ) {\n movedEdgeSpecifiers.push(specifier);\n hadMigratedSpecifiers = true;\n } else if (\n j.ImportSpecifier.check(specifier) &&\n reactAiSdkExports.includes(specifier.imported.name as string)\n ) {\n movedAiSdkSpecifiers.push(specifier);\n hadMigratedSpecifiers = true;\n } else {\n remainingSpecifiers.push(specifier);\n }\n });\n if (hadMigratedSpecifiers) {\n lastMigratedImportPath = path;\n }\n if (remainingSpecifiers.length === 0) {\n j(path).remove();\n markAsChanged();\n } else if (remainingSpecifiers.length !== path.value.specifiers.length) {\n path.value.specifiers = remainingSpecifiers;\n markAsChanged();\n }\n });\n\n // Add imports for react-edge\n if (movedEdgeSpecifiers.length > 0) {\n const existingEdgeImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-edge\" },\n });\n if (existingEdgeImport.size() > 0) {\n existingEdgeImport.forEach((path: any) => {\n movedEdgeSpecifiers.forEach((specifier: any) => {\n if (\n !path.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n path.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n movedEdgeSpecifiers,\n j.literal(\"@assistant-ui/react-edge\"),\n );\n if (lastMigratedImportPath) {\n j(lastMigratedImportPath).insertAfter(newImport);\n } else {\n const firstImport = root.find(j.ImportDeclaration).at(0);\n if (firstImport.size() > 0) {\n firstImport.insertBefore(newImport);\n } else {\n root.get().node.program.body.unshift(newImport);\n }\n }\n }\n markAsChanged();\n }\n\n // Add imports for react-ai-sdk\n if (movedAiSdkSpecifiers.length > 0) {\n const existingAiSdkImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-ai-sdk\" },\n });\n if (existingAiSdkImport.size() > 0) {\n existingAiSdkImport.forEach((path: any) => {\n movedAiSdkSpecifiers.forEach((specifier: any) => {\n if (\n !path.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n path.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n movedAiSdkSpecifiers,\n j.literal(\"@assistant-ui/react-ai-sdk\"),\n );\n if (lastMigratedImportPath) {\n j(lastMigratedImportPath).insertAfter(newImport);\n } else {\n const firstImport = root.find(j.ImportDeclaration).at(0);\n if (firstImport.size() > 0) {\n firstImport.insertBefore(newImport);\n } else {\n root.get().node.program.body.unshift(newImport);\n }\n }\n }\n markAsChanged();\n }\n\n // Migrate imports from edge/converters\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const sourceValue: string = path.value.source.value;\n if (\n sourceValue.startsWith(\"@assistant-ui/react/\") &&\n (sourceValue.includes(\"edge/\") ||\n sourceValue.includes(\"dangerous-in-browser/\"))\n ) {\n path.value.source = j.literal(\n sourceValue.replace(\n \"@assistant-ui/react/\",\n \"@assistant-ui/react-edge/\",\n ),\n );\n markAsChanged();\n }\n });\n\n // Migrate language model converter imports from react-edge to react-ai-sdk\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const sourceValue: string = path.value.source.value;\n if (sourceValue === \"@assistant-ui/react-edge\") {\n let hasLanguageModelConverters = false;\n const remainingSpecifiers: any[] = [];\n const aiSdkSpecifiers: any[] = [];\n\n path.value.specifiers.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n reactAiSdkExports.includes(specifier.imported.name as string)\n ) {\n aiSdkSpecifiers.push(specifier);\n hasLanguageModelConverters = true;\n } else {\n remainingSpecifiers.push(specifier);\n }\n });\n\n if (hasLanguageModelConverters) {\n if (remainingSpecifiers.length === 0) {\n j(path).remove();\n } else {\n path.value.specifiers = remainingSpecifiers;\n }\n\n const existingAiSdkImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-ai-sdk\" },\n });\n\n if (existingAiSdkImport.size() > 0) {\n existingAiSdkImport.forEach((importPath: any) => {\n aiSdkSpecifiers.forEach((specifier: any) => {\n if (\n !importPath.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n importPath.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n aiSdkSpecifiers,\n j.literal(\"@assistant-ui/react-ai-sdk\"),\n );\n j(path).insertAfter(newImport);\n }\n\n markAsChanged();\n }\n }\n });\n});\n\nexport default migrateToEdgePackage;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/codemods/v0-9/edge-package-split.ts"],"sourcesContent":["import { createTransformer } from \"../utils/createTransformer\";\n\n// Chat runtime and converter exports moved to react-ai-sdk\nconst reactAiSdkExports: string[] = [\n // Chat Runtime (replaces edge runtime)\n \"useChatRuntime\",\n\n // Core Types\n \"CoreMessage\",\n \"CoreUserMessage\",\n \"CoreAssistantMessage\",\n \"CoreSystemMessage\",\n \"CoreUserMessagePart\",\n \"CoreAssistantMessagePart\",\n \"CoreToolCallMessagePart\",\n\n // Core message converters\n \"fromCoreMessages\",\n \"fromCoreMessage\",\n \"toCoreMessages\",\n \"toCoreMessage\",\n\n // Language model converters\n \"toLanguageModelMessages\",\n \"toLanguageModelTools\",\n \"fromLanguageModelMessages\",\n \"fromLanguageModelTools\",\n \"useDangerousInBrowserRuntime\",\n];\n\nconst migrateToEdgePackage = createTransformer(({ j, root, markAsChanged }) => {\n const sourcesToMigrate: string[] = [\"@assistant-ui/react\"];\n const movedAiSdkSpecifiers: any[] = [];\n let lastMigratedImportPath: any = null;\n\n root\n .find(j.ImportDeclaration)\n .filter((path: any) => sourcesToMigrate.includes(path.value.source.value))\n .forEach((path: any) => {\n let hadMigratedSpecifiers = false;\n const remainingSpecifiers: any[] = [];\n path.value.specifiers.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n reactAiSdkExports.includes(specifier.imported.name as string)\n ) {\n movedAiSdkSpecifiers.push(specifier);\n hadMigratedSpecifiers = true;\n } else {\n remainingSpecifiers.push(specifier);\n }\n });\n if (hadMigratedSpecifiers) {\n lastMigratedImportPath = path;\n }\n if (remainingSpecifiers.length === 0) {\n j(path).remove();\n markAsChanged();\n } else if (remainingSpecifiers.length !== path.value.specifiers.length) {\n path.value.specifiers = remainingSpecifiers;\n markAsChanged();\n }\n });\n\n // Add imports for react-ai-sdk (all edge-related imports now go here)\n if (movedAiSdkSpecifiers.length > 0) {\n const existingAiSdkImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-ai-sdk\" },\n });\n if (existingAiSdkImport.size() > 0) {\n existingAiSdkImport.forEach((path: any) => {\n movedAiSdkSpecifiers.forEach((specifier: any) => {\n if (\n !path.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n path.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n movedAiSdkSpecifiers,\n j.literal(\"@assistant-ui/react-ai-sdk\"),\n );\n if (lastMigratedImportPath) {\n j(lastMigratedImportPath).insertAfter(newImport);\n } else {\n const firstImport = root.find(j.ImportDeclaration).at(0);\n if (firstImport.size() > 0) {\n firstImport.insertBefore(newImport);\n } else {\n root.get().node.program.body.unshift(newImport);\n }\n }\n }\n markAsChanged();\n }\n\n // Migrate imports from edge/converters\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const sourceValue: string = path.value.source.value;\n if (\n sourceValue.startsWith(\"@assistant-ui/react/\") &&\n (sourceValue.includes(\"edge/\") ||\n sourceValue.includes(\"dangerous-in-browser/\"))\n ) {\n path.value.source = j.literal(\n sourceValue.replace(\n \"@assistant-ui/react/\",\n \"@assistant-ui/react-ai-sdk/\",\n ),\n );\n markAsChanged();\n }\n });\n\n // Migrate language model converter imports from react-edge to react-ai-sdk\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const sourceValue: string = path.value.source.value;\n if (\n sourceValue === \"@assistant-ui/react-edge\" ||\n sourceValue === \"@assistant-ui/react\"\n ) {\n let hasLanguageModelConverters = false;\n const remainingSpecifiers: any[] = [];\n const aiSdkSpecifiers: any[] = [];\n\n path.value.specifiers.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n reactAiSdkExports.includes(specifier.imported.name as string)\n ) {\n aiSdkSpecifiers.push(specifier);\n hasLanguageModelConverters = true;\n } else {\n remainingSpecifiers.push(specifier);\n }\n });\n\n if (hasLanguageModelConverters) {\n if (remainingSpecifiers.length === 0) {\n j(path).remove();\n } else {\n path.value.specifiers = remainingSpecifiers;\n }\n\n const existingAiSdkImport = root.find(j.ImportDeclaration, {\n source: { value: \"@assistant-ui/react-ai-sdk\" },\n });\n\n if (existingAiSdkImport.size() > 0) {\n existingAiSdkImport.forEach((importPath: any) => {\n aiSdkSpecifiers.forEach((specifier: any) => {\n if (\n !importPath.value.specifiers.some(\n (s: any) => s.imported.name === specifier.imported.name,\n )\n ) {\n importPath.value.specifiers.push(specifier);\n }\n });\n });\n } else {\n const newImport = j.importDeclaration(\n aiSdkSpecifiers,\n j.literal(\"@assistant-ui/react-ai-sdk\"),\n );\n j(path).insertAfter(newImport);\n }\n\n markAsChanged();\n }\n }\n });\n});\n\nexport default migrateToEdgePackage;\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-edge-lib.d.ts","sourceRoot":"","sources":["../../src/lib/install-edge-lib.ts"],"names":[],"mappings":"AAuCA,wBAA8B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"install-edge-lib.d.ts","sourceRoot":"","sources":["../../src/lib/install-edge-lib.ts"],"names":[],"mappings":"AAuCA,wBAA8B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAwD5D"}
|
|
@@ -45,32 +45,32 @@ async function installEdgeLib() {
|
|
|
45
45
|
for (const file of files) {
|
|
46
46
|
const fullPath = path.join(cwd, file);
|
|
47
47
|
const content = fs.readFileSync(fullPath, "utf8");
|
|
48
|
-
if (content.includes("@assistant-ui/react-edge")) {
|
|
48
|
+
if (content.includes("@assistant-ui/react-edge") || content.includes("useChatRuntime") && content.includes("@assistant-ui/react-ai-sdk")) {
|
|
49
49
|
found = true;
|
|
50
50
|
break;
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
if (found) {
|
|
54
|
-
if (isPackageInstalled("@assistant-ui/react-
|
|
54
|
+
if (isPackageInstalled("@assistant-ui/react-ai-sdk")) {
|
|
55
55
|
console.log(
|
|
56
|
-
"@assistant-ui/react-
|
|
56
|
+
"@assistant-ui/react-ai-sdk is already installed. Skipping installation."
|
|
57
57
|
);
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
const answer = await askQuestion(
|
|
61
|
-
"Edge Runtime imports were
|
|
61
|
+
"Edge Runtime imports were detected but @assistant-ui/react-ai-sdk is not installed. Do you want to install it? (Y/n) "
|
|
62
62
|
);
|
|
63
63
|
if (answer === "" || answer.toLowerCase().startsWith("y")) {
|
|
64
64
|
const pm = await detect();
|
|
65
65
|
let cmd = "";
|
|
66
66
|
if (pm === "yarn") {
|
|
67
|
-
cmd = "yarn add @assistant-ui/react-
|
|
67
|
+
cmd = "yarn add @assistant-ui/react-ai-sdk";
|
|
68
68
|
} else if (pm === "pnpm") {
|
|
69
|
-
cmd = "pnpm add @assistant-ui/react-
|
|
69
|
+
cmd = "pnpm add @assistant-ui/react-ai-sdk";
|
|
70
70
|
} else if (pm === "bun") {
|
|
71
|
-
cmd = "bun add @assistant-ui/react-
|
|
71
|
+
cmd = "bun add @assistant-ui/react-ai-sdk";
|
|
72
72
|
} else {
|
|
73
|
-
cmd = "npm install @assistant-ui/react-
|
|
73
|
+
cmd = "npm install @assistant-ui/react-ai-sdk";
|
|
74
74
|
}
|
|
75
75
|
try {
|
|
76
76
|
execSync(cmd, { stdio: "inherit" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/install-edge-lib.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { execSync } from \"child_process\";\nimport { sync as globSync } from \"glob\";\nimport * as readline from \"readline\";\nimport { detect } from \"detect-package-manager\";\n\nfunction askQuestion(query: string): Promise<string> {\n return new Promise((resolve) => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n rl.question(query, (answer) => {\n rl.close();\n resolve(answer);\n });\n });\n}\n\nfunction isPackageInstalled(pkg: string): boolean {\n const cwd = process.cwd();\n try {\n const pkgJsonPath = path.join(cwd, \"package.json\");\n if (fs.existsSync(pkgJsonPath)) {\n const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf8\"));\n const deps = pkgJson.dependencies || {};\n const devDeps = pkgJson.devDependencies || {};\n if (deps[pkg] || devDeps[pkg]) {\n return true;\n }\n }\n } catch {\n // Fall back to node_modules check below.\n }\n const modulePath = path.join(cwd, \"node_modules\", ...pkg.split(\"/\"));\n return fs.existsSync(modulePath);\n}\n\nexport default async function installEdgeLib(): Promise<void> {\n const cwd = process.cwd();\n const pattern = \"**/*.{js,jsx,ts,tsx}\";\n const files = globSync(pattern, {\n cwd,\n ignore: [\"**/node_modules/**\", \"**/dist/**\", \"**/build/**\"],\n });\n\n let found = false;\n for (const file of files) {\n const fullPath = path.join(cwd, file);\n const content = fs.readFileSync(fullPath, \"utf8\");\n if (content.includes(\"@assistant-ui/react-edge\")) {\n found = true;\n break;\n }\n }\n\n if (found) {\n if (isPackageInstalled(\"@assistant-ui/react-
|
|
1
|
+
{"version":3,"sources":["../../src/lib/install-edge-lib.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { execSync } from \"child_process\";\nimport { sync as globSync } from \"glob\";\nimport * as readline from \"readline\";\nimport { detect } from \"detect-package-manager\";\n\nfunction askQuestion(query: string): Promise<string> {\n return new Promise((resolve) => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n rl.question(query, (answer) => {\n rl.close();\n resolve(answer);\n });\n });\n}\n\nfunction isPackageInstalled(pkg: string): boolean {\n const cwd = process.cwd();\n try {\n const pkgJsonPath = path.join(cwd, \"package.json\");\n if (fs.existsSync(pkgJsonPath)) {\n const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf8\"));\n const deps = pkgJson.dependencies || {};\n const devDeps = pkgJson.devDependencies || {};\n if (deps[pkg] || devDeps[pkg]) {\n return true;\n }\n }\n } catch {\n // Fall back to node_modules check below.\n }\n const modulePath = path.join(cwd, \"node_modules\", ...pkg.split(\"/\"));\n return fs.existsSync(modulePath);\n}\n\nexport default async function installEdgeLib(): Promise<void> {\n const cwd = process.cwd();\n const pattern = \"**/*.{js,jsx,ts,tsx}\";\n const files = globSync(pattern, {\n cwd,\n ignore: [\"**/node_modules/**\", \"**/dist/**\", \"**/build/**\"],\n });\n\n let found = false;\n for (const file of files) {\n const fullPath = path.join(cwd, file);\n const content = fs.readFileSync(fullPath, \"utf8\");\n if (\n content.includes(\"@assistant-ui/react-edge\") ||\n (content.includes(\"useChatRuntime\") &&\n content.includes(\"@assistant-ui/react-ai-sdk\"))\n ) {\n found = true;\n break;\n }\n }\n\n if (found) {\n if (isPackageInstalled(\"@assistant-ui/react-ai-sdk\")) {\n console.log(\n \"@assistant-ui/react-ai-sdk is already installed. Skipping installation.\",\n );\n return;\n }\n\n const answer = await askQuestion(\n \"Edge Runtime imports were detected but @assistant-ui/react-ai-sdk is not installed. Do you want to install it? (Y/n) \",\n );\n if (answer === \"\" || answer.toLowerCase().startsWith(\"y\")) {\n const pm = await detect();\n let cmd = \"\";\n if (pm === \"yarn\") {\n cmd = \"yarn add @assistant-ui/react-ai-sdk\";\n } else if (pm === \"pnpm\") {\n cmd = \"pnpm add @assistant-ui/react-ai-sdk\";\n } else if (pm === \"bun\") {\n cmd = \"bun add @assistant-ui/react-ai-sdk\";\n } else {\n cmd = \"npm install @assistant-ui/react-ai-sdk\";\n }\n try {\n execSync(cmd, { stdio: \"inherit\" });\n } catch (e) {\n console.error(\"Installation failed:\", e);\n }\n } else {\n console.log(\"Skipping installation.\");\n }\n } else {\n console.log(\"No Edge Runtime imports found; skipping installation.\");\n }\n}\n"],"mappings":";AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,gBAAgB;AACzB,SAAS,QAAQ,gBAAgB;AACjC,YAAY,cAAc;AAC1B,SAAS,cAAc;AAEvB,SAAS,YAAY,OAAgC;AACnD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,KAAc,yBAAgB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,IAClB,CAAC;AACD,OAAG,SAAS,OAAO,CAAC,WAAW;AAC7B,SAAG,MAAM;AACT,cAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AACH;AAEA,SAAS,mBAAmB,KAAsB;AAChD,QAAM,MAAM,QAAQ,IAAI;AACxB,MAAI;AACF,UAAM,cAAmB,UAAK,KAAK,cAAc;AACjD,QAAO,cAAW,WAAW,GAAG;AAC9B,YAAM,UAAU,KAAK,MAAS,gBAAa,aAAa,MAAM,CAAC;AAC/D,YAAM,OAAO,QAAQ,gBAAgB,CAAC;AACtC,YAAM,UAAU,QAAQ,mBAAmB,CAAC;AAC5C,UAAI,KAAK,GAAG,KAAK,QAAQ,GAAG,GAAG;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAER;AACA,QAAM,aAAkB,UAAK,KAAK,gBAAgB,GAAG,IAAI,MAAM,GAAG,CAAC;AACnE,SAAU,cAAW,UAAU;AACjC;AAEA,eAAO,iBAAuD;AAC5D,QAAM,MAAM,QAAQ,IAAI;AACxB,QAAM,UAAU;AAChB,QAAM,QAAQ,SAAS,SAAS;AAAA,IAC9B;AAAA,IACA,QAAQ,CAAC,sBAAsB,cAAc,aAAa;AAAA,EAC5D,CAAC;AAED,MAAI,QAAQ;AACZ,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAgB,UAAK,KAAK,IAAI;AACpC,UAAM,UAAa,gBAAa,UAAU,MAAM;AAChD,QACE,QAAQ,SAAS,0BAA0B,KAC1C,QAAQ,SAAS,gBAAgB,KAChC,QAAQ,SAAS,4BAA4B,GAC/C;AACA,cAAQ;AACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO;AACT,QAAI,mBAAmB,4BAA4B,GAAG;AACpD,cAAQ;AAAA,QACN;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,IACF;AACA,QAAI,WAAW,MAAM,OAAO,YAAY,EAAE,WAAW,GAAG,GAAG;AACzD,YAAM,KAAK,MAAM,OAAO;AACxB,UAAI,MAAM;AACV,UAAI,OAAO,QAAQ;AACjB,cAAM;AAAA,MACR,WAAW,OAAO,QAAQ;AACxB,cAAM;AAAA,MACR,WAAW,OAAO,OAAO;AACvB,cAAM;AAAA,MACR,OAAO;AACL,cAAM;AAAA,MACR;AACA,UAAI;AACF,iBAAS,KAAK,EAAE,OAAO,UAAU,CAAC;AAAA,MACpC,SAAS,GAAG;AACV,gBAAQ,MAAM,wBAAwB,CAAC;AAAA,MACzC;AAAA,IACF,OAAO;AACL,cAAQ,IAAI,wBAAwB;AAAA,IACtC;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,uDAAuD;AAAA,EACrE;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/lib/upgrade.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/lib/upgrade.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAevD;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,gBAAgB,iBA+DtD"}
|
package/dist/lib/upgrade.js
CHANGED
|
@@ -5,7 +5,11 @@ import { SingleBar, Presets } from "cli-progress";
|
|
|
5
5
|
import installReactUILib from "./install-ui-lib.js";
|
|
6
6
|
import installEdgeLib from "./install-edge-lib.js";
|
|
7
7
|
import installAiSdkLib from "./install-ai-sdk-lib.js";
|
|
8
|
-
var bundle = [
|
|
8
|
+
var bundle = [
|
|
9
|
+
"v0-8/ui-package-split",
|
|
10
|
+
"v0-9/edge-package-split",
|
|
11
|
+
"v0-11/content-part-to-message-part"
|
|
12
|
+
];
|
|
9
13
|
var log = debug("codemod:upgrade");
|
|
10
14
|
var error = debug("codemod:upgrade:error");
|
|
11
15
|
async function upgrade(options) {
|
package/dist/lib/upgrade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/upgrade.ts"],"sourcesContent":["import debug from \"debug\";\nimport { transform, TransformErrors, getRelevantFiles } from \"./transform\";\nimport { 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\";\n\nconst bundle = [\"v0-8/ui-package-split\"
|
|
1
|
+
{"version":3,"sources":["../../src/lib/upgrade.ts"],"sourcesContent":["import debug from \"debug\";\nimport { transform, TransformErrors, getRelevantFiles } from \"./transform\";\nimport { 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\";\n\nconst bundle = [\n \"v0-8/ui-package-split\",\n \"v0-9/edge-package-split\",\n \"v0-11/content-part-to-message-part\",\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 console.log(\"Analyzing codebase...\");\n const relevantFiles = getRelevantFiles(cwd);\n const fileCount = relevantFiles.length;\n console.log(`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 console.log(\"Checking for package dependencies...\");\n await installReactUILib();\n await installEdgeLib();\n await installAiSdkLib();\n\n log(\"Upgrade complete.\");\n console.log(\"✅ Upgrade complete!\");\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAClB,SAAS,WAA4B,wBAAwB;AAE7D,SAAS,WAAW,eAAe;AACnC,OAAO,uBAAuB;AAC9B,OAAO,oBAAoB;AAC3B,OAAO,qBAAqB;AAE5B,IAAM,SAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,MAAM,MAAM,iBAAiB;AACnC,IAAM,QAAQ,MAAM,uBAAuB;AAQ3C,eAAsB,QAAQ,SAA2B;AACvD,QAAM,MAAM,QAAQ,IAAI;AACxB,MAAI,qBAAqB;AAGzB,UAAQ,IAAI,uBAAuB;AACnC,QAAM,gBAAgB,iBAAiB,GAAG;AAC1C,QAAM,YAAY,cAAc;AAChC,UAAQ,IAAI,SAAS,SAAS,oBAAoB;AAGlD,QAAM,YAAY,YAAY,OAAO;AACrC,MAAI,gBAAgB;AAEpB,QAAM,MAAM,IAAI;AAAA,IACd;AAAA,MACE,QAAQ;AAAA,MACR,YAAY;AAAA,IACd;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,MAAI,MAAM,WAAW,GAAG,EAAE,QAAQ,cAAc,CAAC;AACjD,QAAM,YAA6B,CAAC;AAEpC,aAAW,WAAW,QAAQ;AAC5B,QAAI,OAAO,eAAe,EAAE,QAAQ,WAAW,OAAO,MAAM,CAAC;AAG7D,UAAM,SAAS,UAAU,SAAS,KAAK,SAAS;AAAA,MAC9C,WAAW;AAAA,MACX,YAAY,CAAC,mBAA2B;AACtC,wBAAgB,OAAO,QAAQ,OAAO,IAAI,YAAY;AACtD,YAAI,OAAO,KAAK,IAAI,eAAe,SAAS,GAAG;AAAA,UAC7C,QAAQ,WAAW,OAAO,KAAK,cAAc,IAAI,SAAS;AAAA,QAC5D,CAAC;AAAA,MACH;AAAA,MACA;AAAA;AAAA,IACF,CAAC;AAED,cAAU,KAAK,GAAG,MAAM;AACxB,qBAAiB,OAAO,QAAQ,OAAO,IAAI,KAAK;AAChD,QAAI,OAAO,eAAe,EAAE,QAAQ,aAAa,OAAO,GAAG,CAAC;AAAA,EAC9D;AAEA,MAAI,OAAO,WAAW,EAAE,QAAQ,2BAA2B,CAAC;AAC5D,MAAI,KAAK;AAET,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,iEAAiE;AACrE,cAAU,QAAQ,CAAC,EAAE,WAAAA,YAAW,UAAU,QAAQ,MAAM;AACtD,YAAM,WAAWA,UAAS,UAAU,QAAQ,aAAa,OAAO,EAAE;AAAA,IACpE,CAAC;AAAA,EACH;AAGA,UAAQ,IAAI,sCAAsC;AAClD,QAAM,kBAAkB;AACxB,QAAM,eAAe;AACrB,QAAM,gBAAgB;AAEtB,MAAI,mBAAmB;AACvB,UAAQ,IAAI,0BAAqB;AACnC;","names":["transform"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "assistant-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.57",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"@types/cross-spawn": "^6.0.6",
|
|
21
21
|
"@types/debug": "^4.1.12",
|
|
22
22
|
"@types/jscodeshift": "^17.3.0",
|
|
23
|
-
"@types/node": "^24.0
|
|
23
|
+
"@types/node": "^24.1.0",
|
|
24
24
|
"@types/semver": "^7.7.0",
|
|
25
25
|
"eslint": "^9",
|
|
26
|
-
"eslint-config-next": "15.
|
|
26
|
+
"eslint-config-next": "15.4.5",
|
|
27
27
|
"tsx": "^4.20.3",
|
|
28
28
|
"@assistant-ui/x-buildutils": "0.0.1"
|
|
29
29
|
},
|