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.
@@ -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":"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","names":[]}
@@ -15,7 +15,7 @@ var reactUIExports = [
15
15
  "AssistantModal",
16
16
  "BranchPicker",
17
17
  "Composer",
18
- "ContentPart",
18
+ "MessagePart",
19
19
  "AttachmentUI",
20
20
  "EditComposer",
21
21
  "Thread",
@@ -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":";AAAA,SAAS,yBAAyB;AAElC,IAAM,iBAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,qBAAqB,kBAAkB,CAAC,EAAE,GAAG,MAAM,cAAc,MAAM;AAC3E,QAAM,mBAA6B;AAAA,IACjC;AAAA,IACA;AAAA,EACF;AACA,QAAM,kBAAyB,CAAC;AAChC,MAAI,yBAA8B;AAElC,OACG,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,SAAc,iBAAiB,SAAS,KAAK,MAAM,OAAO,KAAK,CAAC,EACxE,QAAQ,CAAC,SAAc;AACtB,QAAI,wBAAwB;AAC5B,UAAM,sBAA6B,CAAC;AACpC,SAAK,MAAM,WAAW,QAAQ,CAAC,cAAmB;AAChD,UACE,EAAE,gBAAgB,MAAM,SAAS,KACjC,eAAe,SAAS,UAAU,SAAS,IAAc,GACzD;AACA,wBAAgB,KAAK,SAAS;AAC9B,gCAAwB;AAAA,MAC1B,OAAO;AACL,4BAAoB,KAAK,SAAS;AAAA,MACpC;AAAA,IACF,CAAC;AACD,QAAI,uBAAuB;AACzB,+BAAyB;AAAA,IAC3B;AACA,QAAI,oBAAoB,WAAW,GAAG;AACpC,QAAE,IAAI,EAAE,OAAO;AACf,oBAAc;AAAA,IAChB,WAAW,oBAAoB,WAAW,KAAK,MAAM,WAAW,QAAQ;AACtE,WAAK,MAAM,aAAa;AACxB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,MAAI,gBAAgB,SAAS,GAAG;AAC9B,UAAM,wBAAwB,KAAK,KAAK,EAAE,mBAAmB;AAAA,MAC3D,QAAQ,EAAE,OAAO,yBAAyB;AAAA,IAC5C,CAAC;AACD,QAAI,sBAAsB,KAAK,IAAI,GAAG;AACpC,4BAAsB,QAAQ,CAAC,SAAc;AAC3C,wBAAgB,QAAQ,CAAC,cAAmB;AAC1C,cACE,CAAC,KAAK,MAAM,WAAW;AAAA,YACrB,CAAC,MAAW,EAAE,SAAS,SAAS,UAAU,SAAS;AAAA,UACrD,GACA;AACA,iBAAK,MAAM,WAAW,KAAK,SAAS;AAAA,UACtC;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,OAAO;AACL,YAAM,YAAY,EAAE;AAAA,QAClB;AAAA,QACA,EAAE,QAAQ,wBAAwB;AAAA,MACpC;AACA,UAAI,wBAAwB;AAC1B,UAAE,sBAAsB,EAAE,YAAY,SAAS;AAAA,MACjD,OAAO;AACL,cAAM,cAAc,KAAK,KAAK,EAAE,iBAAiB,EAAE,GAAG,CAAC;AACvD,YAAI,YAAY,KAAK,IAAI,GAAG;AAC1B,sBAAY,aAAa,SAAS;AAAA,QACpC,OAAO;AACL,eAAK,IAAI,EAAE,KAAK,QAAQ,KAAK,QAAQ,SAAS;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AACA,kBAAc;AAAA,EAChB;AAEA,QAAM,kBAA0C;AAAA,IAC9C,wCACE;AAAA,IACF,wCACE;AAAA,IACF,oDACE;AAAA,EACJ;AAEA,OAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAc;AACpD,UAAM,cAAsB,KAAK,MAAM,OAAO;AAC9C,QAAI,gBAAgB,WAAW,GAAG;AAChC,WAAK,MAAM,SAAS,EAAE,QAAQ,gBAAgB,WAAW,CAAC;AAC1D,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,MAAI,wBAAwB;AAC5B,OACG,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,EAAE,CAAC,EACtD,OAAO,CAAC,SAAc;AACrB,UAAM,MAAM,KAAK,MAAM,UAAU,CAAC;AAClC,WACE,QACC,IAAI,SAAS,aAAa,IAAI,SAAS,oBACxC,IAAI,UAAU;AAAA,EAElB,CAAC,EACA,QAAQ,CAAC,SAAc;AACtB,4BAAwB;AACxB,UAAM,SAAS,KAAK;AACpB,QACE,UACA,OAAO,SACP,OAAO,MAAM,SAAS,sBACtB;AACA,YAAM,UAAU,OAAO;AACvB,UACE,WACA,QAAQ,MAAM,gBACd,QAAQ,MAAM,aAAa,WAAW,GACtC;AACA,UAAE,OAAO,EAAE,OAAO;AAAA,MACpB,OAAO;AACL,gBAAQ,MAAM,eAAe,QAAQ,MAAM,aAAa;AAAA,UACtD,CAAC,SAAc,SAAS,OAAO;AAAA,QACjC;AAAA,MACF;AACA,oBAAc;AAAA,IAChB,OAAO;AACL,QAAE,IAAI,EAAE,OAAO;AACf,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,OACG,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,UAAU,EAAE,CAAC,EACtD,OAAO,CAAC,SAAc;AACrB,UAAM,MAAM,KAAK,MAAM,UAAU,CAAC;AAClC,WACE,QACC,IAAI,SAAS,aAAa,IAAI,SAAS,oBACxC,IAAI,UAAU;AAAA,EAElB,CAAC,EACA,QAAQ,CAAC,SAAc;AACtB,SAAK,MAAM,UAAU,CAAC,EAAE,QAAQ;AAChC,kBAAc;AACd,QAAI,uBAAuB;AACzB,UACE,KAAK,cACL,KAAK,WAAW,SAChB,KAAK,WAAW,MAAM,SAAS,oBAC/B,KAAK,WAAW,MAAM,UAAU,SAAS,GACzC;AACA,cAAM,YAAY,KAAK,WAAW,MAAM,UAAU,CAAC;AACnD,YAAI,aAAa,UAAU,SAAS,oBAAoB;AACtD,gBAAM,iBAAiB,UAAU,WAAW,KAAK,CAAC,SAAc;AAC9D,oBACG,KAAK,IAAI,SAAS,gBACjB,KAAK,IAAI,UAAU,iBACrB,KAAK,MAAM,SAAS;AAAA,UAExB,CAAC;AACD,cAAI,gBAAgB;AAClB,kBAAM,kBAAkB,eAAe,MAAM;AAC7C,kBAAM,cAAc,gBAAgB;AAAA,cAClC,CAAC,OAAY,GAAG,SAAS,aAAa,GAAG,UAAU;AAAA,YACrD;AACA,gBAAI,CAAC,aAAa;AAChB,8BAAgB,KAAK,EAAE,QAAQ,UAAU,CAAC;AAC1C,4BAAc;AAAA,YAChB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACL,CAAC;AAED,IAAO,2BAAQ;","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":"AAqCA,QAAA,MAAM,oBAAoB,6HA0LxB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
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 reactEdgeExports = [
4
- // Edge Runtime
5
- "useEdgeRuntime",
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
- "CoreUserContentPart",
18
- "CoreAssistantContentPart",
19
- "CoreToolCallContentPart",
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) && reactEdgeExports.includes(specifier.imported.name)) {
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-edge/"
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,CAoD5D"}
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-edge")) {
54
+ if (isPackageInstalled("@assistant-ui/react-ai-sdk")) {
55
55
  console.log(
56
- "@assistant-ui/react-edge is already installed. Skipping installation."
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 added but @assistant-ui/react-edge is not installed. Do you want to install it? (Y/n) "
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-edge";
67
+ cmd = "yarn add @assistant-ui/react-ai-sdk";
68
68
  } else if (pm === "pnpm") {
69
- cmd = "pnpm add @assistant-ui/react-edge";
69
+ cmd = "pnpm add @assistant-ui/react-ai-sdk";
70
70
  } else if (pm === "bun") {
71
- cmd = "bun add @assistant-ui/react-edge";
71
+ cmd = "bun add @assistant-ui/react-ai-sdk";
72
72
  } else {
73
- cmd = "npm install @assistant-ui/react-edge";
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-edge\")) {\n console.log(\n \"@assistant-ui/react-edge is already installed. Skipping installation.\",\n );\n return;\n }\n\n const answer = await askQuestion(\n \"Edge Runtime imports were added but @assistant-ui/react-edge 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-edge\";\n } else if (pm === \"pnpm\") {\n cmd = \"pnpm add @assistant-ui/react-edge\";\n } else if (pm === \"bun\") {\n cmd = \"bun add @assistant-ui/react-edge\";\n } else {\n cmd = \"npm install @assistant-ui/react-edge\";\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,QAAI,QAAQ,SAAS,0BAA0B,GAAG;AAChD,cAAQ;AACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO;AACT,QAAI,mBAAmB,0BAA0B,GAAG;AAClD,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
+ {"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;AAWvD;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,gBAAgB,iBA+DtD"}
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"}
@@ -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 = ["v0-8/ui-package-split", "v0-9/edge-package-split"];
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) {
@@ -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\", \"v0-9/edge-package-split\"];\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,CAAC,yBAAyB,yBAAyB;AAElE,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"]}
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.55",
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.1",
23
+ "@types/node": "^24.1.0",
24
24
  "@types/semver": "^7.7.0",
25
25
  "eslint": "^9",
26
- "eslint-config-next": "15.3.3",
26
+ "eslint-config-next": "15.4.5",
27
27
  "tsx": "^4.20.3",
28
28
  "@assistant-ui/x-buildutils": "0.0.1"
29
29
  },