assistant-ui 0.0.92 → 0.0.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/codemods/utils/createTransformer.d.ts +17 -13
  2. package/dist/codemods/utils/createTransformer.d.ts.map +1 -1
  3. package/dist/codemods/utils/createTransformer.js +18 -15
  4. package/dist/codemods/utils/createTransformer.js.map +1 -1
  5. package/dist/codemods/v0-11/content-part-to-message-part.d.ts +3 -1
  6. package/dist/codemods/v0-11/content-part-to-message-part.d.ts.map +1 -1
  7. package/dist/codemods/v0-11/content-part-to-message-part.js +98 -135
  8. package/dist/codemods/v0-11/content-part-to-message-part.js.map +1 -1
  9. package/dist/codemods/v0-12/assistant-api-to-aui.d.ts +3 -1
  10. package/dist/codemods/v0-12/assistant-api-to-aui.d.ts.map +1 -1
  11. package/dist/codemods/v0-12/assistant-api-to-aui.js +126 -213
  12. package/dist/codemods/v0-12/assistant-api-to-aui.js.map +1 -1
  13. package/dist/codemods/v0-12/event-names-to-camelcase.d.ts +3 -1
  14. package/dist/codemods/v0-12/event-names-to-camelcase.d.ts.map +1 -1
  15. package/dist/codemods/v0-12/event-names-to-camelcase.js +33 -38
  16. package/dist/codemods/v0-12/event-names-to-camelcase.js.map +1 -1
  17. package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts +3 -1
  18. package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts.map +1 -1
  19. package/dist/codemods/v0-12/primitive-if-to-aui-if.js +212 -297
  20. package/dist/codemods/v0-12/primitive-if-to-aui-if.js.map +1 -1
  21. package/dist/codemods/v0-8/ui-package-split.d.ts +3 -1
  22. package/dist/codemods/v0-8/ui-package-split.d.ts.map +1 -1
  23. package/dist/codemods/v0-8/ui-package-split.js +121 -164
  24. package/dist/codemods/v0-8/ui-package-split.js.map +1 -1
  25. package/dist/codemods/v0-9/edge-package-split.d.ts +3 -1
  26. package/dist/codemods/v0-9/edge-package-split.d.ts.map +1 -1
  27. package/dist/codemods/v0-9/edge-package-split.js +96 -140
  28. package/dist/codemods/v0-9/edge-package-split.js.map +1 -1
  29. package/dist/commands/add.d.ts +16 -12
  30. package/dist/commands/add.d.ts.map +1 -1
  31. package/dist/commands/add.js +53 -64
  32. package/dist/commands/add.js.map +1 -1
  33. package/dist/commands/agent.d.ts +5 -1
  34. package/dist/commands/agent.d.ts.map +1 -1
  35. package/dist/commands/agent.js +16 -25
  36. package/dist/commands/agent.js.map +1 -1
  37. package/dist/commands/create.d.ts +34 -30
  38. package/dist/commands/create.d.ts.map +1 -1
  39. package/dist/commands/create.js +446 -527
  40. package/dist/commands/create.js.map +1 -1
  41. package/dist/commands/info.d.ts +5 -1
  42. package/dist/commands/info.d.ts.map +1 -1
  43. package/dist/commands/info.js +233 -314
  44. package/dist/commands/info.js.map +1 -1
  45. package/dist/commands/init.d.ts +12 -9
  46. package/dist/commands/init.d.ts.map +1 -1
  47. package/dist/commands/init.js +98 -107
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/mcp.d.ts +5 -1
  50. package/dist/commands/mcp.d.ts.map +1 -1
  51. package/dist/commands/mcp.js +175 -214
  52. package/dist/commands/mcp.js.map +1 -1
  53. package/dist/commands/update.d.ts +5 -1
  54. package/dist/commands/update.d.ts.map +1 -1
  55. package/dist/commands/update.js +46 -55
  56. package/dist/commands/update.js.map +1 -1
  57. package/dist/commands/upgrade.d.ts +11 -7
  58. package/dist/commands/upgrade.d.ts.map +1 -1
  59. package/dist/commands/upgrade.js +26 -38
  60. package/dist/commands/upgrade.js.map +1 -1
  61. package/dist/index.d.ts +1 -3
  62. package/dist/index.js +15 -14
  63. package/dist/index.js.map +1 -1
  64. package/dist/lib/create-project.d.ts +24 -21
  65. package/dist/lib/create-project.d.ts.map +1 -1
  66. package/dist/lib/create-project.js +227 -297
  67. package/dist/lib/create-project.js.map +1 -1
  68. package/dist/lib/install-ai-sdk-lib.d.ts +4 -1
  69. package/dist/lib/install-ai-sdk-lib.d.ts.map +1 -1
  70. package/dist/lib/install-ai-sdk-lib.js +12 -8
  71. package/dist/lib/install-ai-sdk-lib.js.map +1 -1
  72. package/dist/lib/install-edge-lib.d.ts +4 -1
  73. package/dist/lib/install-edge-lib.d.ts.map +1 -1
  74. package/dist/lib/install-edge-lib.js +16 -12
  75. package/dist/lib/install-edge-lib.js.map +1 -1
  76. package/dist/lib/install-ui-lib.d.ts +4 -1
  77. package/dist/lib/install-ui-lib.d.ts.map +1 -1
  78. package/dist/lib/install-ui-lib.js +12 -8
  79. package/dist/lib/install-ui-lib.js.map +1 -1
  80. package/dist/lib/run-spawn.d.ts +7 -4
  81. package/dist/lib/run-spawn.d.ts.map +1 -1
  82. package/dist/lib/run-spawn.js +23 -23
  83. package/dist/lib/run-spawn.js.map +1 -1
  84. package/dist/lib/transform-options.d.ts +8 -5
  85. package/dist/lib/transform-options.d.ts.map +1 -1
  86. package/dist/lib/transform-options.js +0 -2
  87. package/dist/lib/transform.d.ts +15 -11
  88. package/dist/lib/transform.d.ts.map +1 -1
  89. package/dist/lib/transform.js +97 -114
  90. package/dist/lib/transform.js.map +1 -1
  91. package/dist/lib/upgrade.d.ts +6 -2
  92. package/dist/lib/upgrade.d.ts.map +1 -1
  93. package/dist/lib/upgrade.js +62 -64
  94. package/dist/lib/upgrade.js.map +1 -1
  95. package/dist/lib/utils/config.d.ts +21 -18
  96. package/dist/lib/utils/config.d.ts.map +1 -1
  97. package/dist/lib/utils/config.js +24 -28
  98. package/dist/lib/utils/config.js.map +1 -1
  99. package/dist/lib/utils/file-scanner.d.ts +9 -6
  100. package/dist/lib/utils/file-scanner.d.ts.map +1 -1
  101. package/dist/lib/utils/file-scanner.js +44 -51
  102. package/dist/lib/utils/file-scanner.js.map +1 -1
  103. package/dist/lib/utils/logger.d.ts +10 -7
  104. package/dist/lib/utils/logger.d.ts.map +1 -1
  105. package/dist/lib/utils/logger.js +23 -19
  106. package/dist/lib/utils/logger.js.map +1 -1
  107. package/dist/lib/utils/package-installer.d.ts +10 -7
  108. package/dist/lib/utils/package-installer.d.ts.map +1 -1
  109. package/dist/lib/utils/package-installer.js +18 -19
  110. package/dist/lib/utils/package-installer.js.map +1 -1
  111. package/dist/lib/utils/package-manager.d.ts +10 -7
  112. package/dist/lib/utils/package-manager.d.ts.map +1 -1
  113. package/dist/lib/utils/package-manager.js +68 -59
  114. package/dist/lib/utils/package-manager.js.map +1 -1
  115. package/package.json +7 -7
  116. package/src/commands/create.ts +1 -9
  117. package/dist/index.d.ts.map +0 -1
  118. package/dist/lib/transform-options.js.map +0 -1
@@ -1,308 +1,223 @@
1
1
  import { createTransformer } from "../utils/createTransformer.js";
2
- // Map ThreadPrimitive.If props to condition expressions
3
- const threadPropMap = {
4
- empty: (v) => ({
5
- expression: "s.thread.isEmpty",
6
- negated: v === false,
7
- }),
8
- running: (v) => ({
9
- expression: "s.thread.isRunning",
10
- negated: v === false,
11
- }),
12
- disabled: (v) => ({
13
- expression: "s.thread.isDisabled",
14
- negated: v === false,
15
- }),
16
- };
17
- // Map MessagePrimitive.If props to condition expressions
18
- const messagePropMap = {
19
- user: () => ({ expression: 's.message.role === "user"', negated: false }),
20
- assistant: () => ({
21
- expression: 's.message.role === "assistant"',
22
- negated: false,
23
- }),
24
- system: () => ({
25
- expression: 's.message.role === "system"',
26
- negated: false,
27
- }),
28
- hasBranches: () => ({
29
- expression: "s.message.branchCount >= 2",
30
- negated: false,
31
- }),
32
- copied: (v) => ({
33
- expression: "s.message.isCopied",
34
- negated: v === false,
35
- }),
36
- last: (v) => ({
37
- expression: "s.message.isLast",
38
- negated: v === false,
39
- }),
40
- lastOrHover: () => ({
41
- expression: "s.message.isHovering || s.message.isLast",
42
- negated: false,
43
- }),
44
- speaking: (v) => ({
45
- expression: "s.message.speech != null",
46
- negated: v === false,
47
- }),
48
- hasAttachments: (v) => v === true
49
- ? {
50
- expression: 's.message.role === "user" && !!s.message.attachments?.length',
51
- negated: false,
52
- }
53
- : {
54
- expression: 's.message.role !== "user" || !s.message.attachments?.length',
55
- negated: false,
56
- },
57
- hasContent: (v) => ({
58
- expression: "s.message.parts.length > 0",
59
- negated: v === false,
60
- }),
61
- submittedFeedback: (v) => {
62
- if (v === null) {
63
- return {
64
- expression: "(s.message.metadata.submittedFeedback?.type ?? null) === null",
65
- negated: false,
66
- };
67
- }
68
- return {
69
- expression: `s.message.metadata.submittedFeedback?.type === "${v}"`,
70
- negated: false,
71
- };
72
- },
73
- };
74
- // Map ComposerPrimitive.If props to condition expressions
75
- const composerPropMap = {
76
- editing: (v) => ({
77
- expression: "s.composer.isEditing",
78
- negated: v === false,
79
- }),
80
- dictation: (v) => ({
81
- expression: "s.composer.dictation != null",
82
- negated: v === false,
83
- }),
84
- };
2
+ //#region src/codemods/v0-12/primitive-if-to-aui-if.ts
85
3
  const primitiveMap = {
86
- ThreadPrimitive: threadPropMap,
87
- MessagePrimitive: messagePropMap,
88
- ComposerPrimitive: composerPropMap,
89
- };
90
- // Map of XPrimitive.Component → fixed condition (no props needed)
91
- const fixedConditionMap = {
92
- ThreadPrimitive: {
93
- Empty: "s.thread.isEmpty",
94
- },
4
+ ThreadPrimitive: {
5
+ empty: (v) => ({
6
+ expression: "s.thread.isEmpty",
7
+ negated: v === false
8
+ }),
9
+ running: (v) => ({
10
+ expression: "s.thread.isRunning",
11
+ negated: v === false
12
+ }),
13
+ disabled: (v) => ({
14
+ expression: "s.thread.isDisabled",
15
+ negated: v === false
16
+ })
17
+ },
18
+ MessagePrimitive: {
19
+ user: () => ({
20
+ expression: "s.message.role === \"user\"",
21
+ negated: false
22
+ }),
23
+ assistant: () => ({
24
+ expression: "s.message.role === \"assistant\"",
25
+ negated: false
26
+ }),
27
+ system: () => ({
28
+ expression: "s.message.role === \"system\"",
29
+ negated: false
30
+ }),
31
+ hasBranches: () => ({
32
+ expression: "s.message.branchCount >= 2",
33
+ negated: false
34
+ }),
35
+ copied: (v) => ({
36
+ expression: "s.message.isCopied",
37
+ negated: v === false
38
+ }),
39
+ last: (v) => ({
40
+ expression: "s.message.isLast",
41
+ negated: v === false
42
+ }),
43
+ lastOrHover: () => ({
44
+ expression: "s.message.isHovering || s.message.isLast",
45
+ negated: false
46
+ }),
47
+ speaking: (v) => ({
48
+ expression: "s.message.speech != null",
49
+ negated: v === false
50
+ }),
51
+ hasAttachments: (v) => v === true ? {
52
+ expression: "s.message.role === \"user\" && !!s.message.attachments?.length",
53
+ negated: false
54
+ } : {
55
+ expression: "s.message.role !== \"user\" || !s.message.attachments?.length",
56
+ negated: false
57
+ },
58
+ hasContent: (v) => ({
59
+ expression: "s.message.parts.length > 0",
60
+ negated: v === false
61
+ }),
62
+ submittedFeedback: (v) => {
63
+ if (v === null) return {
64
+ expression: "(s.message.metadata.submittedFeedback?.type ?? null) === null",
65
+ negated: false
66
+ };
67
+ return {
68
+ expression: `s.message.metadata.submittedFeedback?.type === "${v}"`,
69
+ negated: false
70
+ };
71
+ }
72
+ },
73
+ ComposerPrimitive: {
74
+ editing: (v) => ({
75
+ expression: "s.composer.isEditing",
76
+ negated: v === false
77
+ }),
78
+ dictation: (v) => ({
79
+ expression: "s.composer.dictation != null",
80
+ negated: v === false
81
+ })
82
+ }
95
83
  };
84
+ const fixedConditionMap = { ThreadPrimitive: { Empty: "s.thread.isEmpty" } };
96
85
  /**
97
- * Extract the value of a JSX attribute.
98
- * - Boolean prop (no value): `<X.If user>` → `true`
99
- * - `{true}` / `{false}`: → `true` / `false`
100
- * - `{"positive"}`: → `"positive"`
101
- * - `{null}`: → `null`
102
- */
86
+ * Extract the value of a JSX attribute.
87
+ * - Boolean prop (no value): `<X.If user>` → `true`
88
+ * - `{true}` / `{false}`: → `true` / `false`
89
+ * - `{"positive"}`: → `"positive"`
90
+ * - `{null}`: → `null`
91
+ */
103
92
  const getAttrValue = (j, attr) => {
104
- // Boolean attribute (no value), e.g. `<X.If user>`
105
- if (attr.value === null || attr.value === undefined) {
106
- return true;
107
- }
108
- // JSX expression container: `{true}`, `{false}`, `{"positive"}`, `{null}`
109
- if (j.JSXExpressionContainer.check(attr.value)) {
110
- const expr = attr.value.expression;
111
- if (j.BooleanLiteral.check(expr))
112
- return expr.value;
113
- if (j.Literal.check(expr)) {
114
- if (expr.value === null)
115
- return null;
116
- return expr.value;
117
- }
118
- if (j.NullLiteral.check(expr))
119
- return null;
120
- if (j.Identifier.check(expr) && expr.name === "undefined")
121
- return undefined;
122
- }
123
- // String literal
124
- if (j.StringLiteral.check(attr.value) || j.Literal.check(attr.value)) {
125
- return attr.value.value;
126
- }
127
- return undefined;
93
+ if (attr.value === null || attr.value === void 0) return true;
94
+ if (j.JSXExpressionContainer.check(attr.value)) {
95
+ const expr = attr.value.expression;
96
+ if (j.BooleanLiteral.check(expr)) return expr.value;
97
+ if (j.Literal.check(expr)) {
98
+ if (expr.value === null) return null;
99
+ return expr.value;
100
+ }
101
+ if (j.NullLiteral.check(expr)) return null;
102
+ if (j.Identifier.check(expr) && expr.name === "undefined") return void 0;
103
+ }
104
+ if (j.StringLiteral.check(attr.value) || j.Literal.check(attr.value)) return attr.value.value;
128
105
  };
129
106
  const buildConditionString = (fragments) => {
130
- const parts = fragments.map((f) => f.negated ? `!${f.expression}` : f.expression);
131
- if (parts.length === 1)
132
- return parts[0];
133
- return parts.join(" && ");
107
+ const parts = fragments.map((f) => f.negated ? `!${f.expression}` : f.expression);
108
+ if (parts.length === 1) return parts[0];
109
+ return parts.join(" && ");
134
110
  };
135
111
  const migratePrimitiveIfToAuiIf = createTransformer(({ j, root, markAsChanged }) => {
136
- let needsAuiIfImport = false;
137
- // Track which primitive namespaces are imported
138
- const importedPrimitives = new Set();
139
- root.find(j.ImportDeclaration).forEach((path) => {
140
- const source = path.value.source.value;
141
- if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
142
- path.value.specifiers?.forEach((specifier) => {
143
- if (j.ImportSpecifier.check(specifier)) {
144
- const name = String(specifier.local?.name ?? specifier.imported.name);
145
- if (primitiveMap[name] || fixedConditionMap[name]) {
146
- importedPrimitives.add(name);
147
- }
148
- }
149
- });
150
- }
151
- });
152
- if (importedPrimitives.size === 0)
153
- return;
154
- // Process fixed-condition components: <ThreadPrimitive.Empty> → <AuiIf condition={...}>
155
- root.find(j.JSXOpeningElement).forEach((path) => {
156
- const name = path.value.name;
157
- if (!j.JSXMemberExpression.check(name))
158
- return;
159
- if (!j.JSXIdentifier.check(name.object))
160
- return;
161
- if (!j.JSXIdentifier.check(name.property))
162
- return;
163
- const primitiveName = name.object.name;
164
- const propertyName = name.property.name;
165
- const fixedMap = fixedConditionMap[primitiveName];
166
- if (!fixedMap)
167
- return;
168
- const conditionBody = fixedMap[propertyName];
169
- if (!conditionBody)
170
- return;
171
- if (!importedPrimitives.has(primitiveName))
172
- return;
173
- // Only transform if there are no props (other than children, which are implicit)
174
- const attrs = path.value.attributes || [];
175
- if (attrs.length > 0)
176
- return;
177
- const arrowFnAst = j(`(s) => ${conditionBody}`)
178
- .find(j.ArrowFunctionExpression)
179
- .paths()[0].value;
180
- path.value.name = j.jsxIdentifier("AuiIf");
181
- path.value.attributes = [
182
- j.jsxAttribute(j.jsxIdentifier("condition"), j.jsxExpressionContainer(arrowFnAst)),
183
- ];
184
- needsAuiIfImport = true;
185
- markAsChanged();
186
- });
187
- // Update closing elements for fixed-condition components
188
- root.find(j.JSXClosingElement).forEach((path) => {
189
- const name = path.value.name;
190
- if (!j.JSXMemberExpression.check(name))
191
- return;
192
- if (!j.JSXIdentifier.check(name.object))
193
- return;
194
- if (!j.JSXIdentifier.check(name.property))
195
- return;
196
- const primitiveName = name.object.name;
197
- const propertyName = name.property.name;
198
- const fixedMap = fixedConditionMap[primitiveName];
199
- if (!fixedMap?.[propertyName])
200
- return;
201
- if (!importedPrimitives.has(primitiveName))
202
- return;
203
- path.value.name = j.jsxIdentifier("AuiIf");
204
- markAsChanged();
205
- });
206
- // Process JSX elements: <ThreadPrimitive.If ...> → <AuiIf condition={...}>
207
- root.find(j.JSXOpeningElement).forEach((path) => {
208
- const name = path.value.name;
209
- // Check for `<XPrimitive.If ...>`
210
- if (!j.JSXMemberExpression.check(name))
211
- return;
212
- if (!j.JSXIdentifier.check(name.object))
213
- return;
214
- if (!j.JSXIdentifier.check(name.property))
215
- return;
216
- if (name.property.name !== "If")
217
- return;
218
- const primitiveName = name.object.name;
219
- const propMap = primitiveMap[primitiveName];
220
- if (!propMap)
221
- return;
222
- if (!importedPrimitives.has(primitiveName))
223
- return;
224
- // Extract props
225
- const attrs = path.value.attributes || [];
226
- const fragments = [];
227
- let hasUnknownProp = false;
228
- for (const attr of attrs) {
229
- if (!j.JSXAttribute.check(attr)) {
230
- // JSX spread attributes — can't migrate
231
- hasUnknownProp = true;
232
- continue;
233
- }
234
- const propName = typeof attr.name.name === "string" ? attr.name.name : null;
235
- if (!propName)
236
- continue;
237
- const mapper = propMap[propName];
238
- if (!mapper) {
239
- hasUnknownProp = true;
240
- continue;
241
- }
242
- const value = getAttrValue(j, attr);
243
- const fragment = mapper(value);
244
- if (fragment) {
245
- fragments.push(fragment);
246
- }
247
- }
248
- // If we couldn't map all props, skip this element
249
- if (hasUnknownProp || fragments.length === 0)
250
- return;
251
- const conditionBody = buildConditionString(fragments);
252
- // Parse the arrow function as an expression to get a proper AST node
253
- const arrowFnAst = j(`(s) => ${conditionBody}`)
254
- .find(j.ArrowFunctionExpression)
255
- .paths()[0].value;
256
- // Replace <XPrimitive.If ...> with <AuiIf condition={...}>
257
- path.value.name = j.jsxIdentifier("AuiIf");
258
- // Replace all attributes with a single condition prop
259
- path.value.attributes = [
260
- j.jsxAttribute(j.jsxIdentifier("condition"), j.jsxExpressionContainer(arrowFnAst)),
261
- ];
262
- needsAuiIfImport = true;
263
- markAsChanged();
264
- });
265
- // Update closing elements to match
266
- root.find(j.JSXClosingElement).forEach((path) => {
267
- const name = path.value.name;
268
- if (!j.JSXMemberExpression.check(name))
269
- return;
270
- if (!j.JSXIdentifier.check(name.object))
271
- return;
272
- if (!j.JSXIdentifier.check(name.property))
273
- return;
274
- if (name.property.name !== "If")
275
- return;
276
- const primitiveName = name.object.name;
277
- if (!primitiveMap[primitiveName])
278
- return;
279
- if (!importedPrimitives.has(primitiveName))
280
- return;
281
- path.value.name = j.jsxIdentifier("AuiIf");
282
- markAsChanged();
283
- });
284
- // Add AuiIf import if needed
285
- if (needsAuiIfImport) {
286
- let hasAuiIfImport = false;
287
- let assistantUiImport = null;
288
- root.find(j.ImportDeclaration).forEach((path) => {
289
- const source = path.value.source.value;
290
- if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
291
- assistantUiImport = path;
292
- path.value.specifiers?.forEach((specifier) => {
293
- if (j.ImportSpecifier.check(specifier) &&
294
- (specifier.imported.name === "AuiIf" ||
295
- specifier.local?.name === "AuiIf")) {
296
- hasAuiIfImport = true;
297
- }
298
- });
299
- }
300
- });
301
- if (!hasAuiIfImport && assistantUiImport) {
302
- assistantUiImport.value.specifiers.push(j.importSpecifier(j.identifier("AuiIf")));
303
- markAsChanged();
304
- }
305
- }
112
+ let needsAuiIfImport = false;
113
+ const importedPrimitives = /* @__PURE__ */ new Set();
114
+ root.find(j.ImportDeclaration).forEach((path) => {
115
+ const source = path.value.source.value;
116
+ if (typeof source === "string" && source.startsWith("@assistant-ui/")) path.value.specifiers?.forEach((specifier) => {
117
+ if (j.ImportSpecifier.check(specifier)) {
118
+ const name = String(specifier.local?.name ?? specifier.imported.name);
119
+ if (primitiveMap[name] || fixedConditionMap[name]) importedPrimitives.add(name);
120
+ }
121
+ });
122
+ });
123
+ if (importedPrimitives.size === 0) return;
124
+ root.find(j.JSXOpeningElement).forEach((path) => {
125
+ const name = path.value.name;
126
+ if (!j.JSXMemberExpression.check(name)) return;
127
+ if (!j.JSXIdentifier.check(name.object)) return;
128
+ if (!j.JSXIdentifier.check(name.property)) return;
129
+ const primitiveName = name.object.name;
130
+ const propertyName = name.property.name;
131
+ const fixedMap = fixedConditionMap[primitiveName];
132
+ if (!fixedMap) return;
133
+ const conditionBody = fixedMap[propertyName];
134
+ if (!conditionBody) return;
135
+ if (!importedPrimitives.has(primitiveName)) return;
136
+ if ((path.value.attributes || []).length > 0) return;
137
+ const arrowFnAst = j(`(s) => ${conditionBody}`).find(j.ArrowFunctionExpression).paths()[0].value;
138
+ path.value.name = j.jsxIdentifier("AuiIf");
139
+ path.value.attributes = [j.jsxAttribute(j.jsxIdentifier("condition"), j.jsxExpressionContainer(arrowFnAst))];
140
+ needsAuiIfImport = true;
141
+ markAsChanged();
142
+ });
143
+ root.find(j.JSXClosingElement).forEach((path) => {
144
+ const name = path.value.name;
145
+ if (!j.JSXMemberExpression.check(name)) return;
146
+ if (!j.JSXIdentifier.check(name.object)) return;
147
+ if (!j.JSXIdentifier.check(name.property)) return;
148
+ const primitiveName = name.object.name;
149
+ const propertyName = name.property.name;
150
+ if (!fixedConditionMap[primitiveName]?.[propertyName]) return;
151
+ if (!importedPrimitives.has(primitiveName)) return;
152
+ path.value.name = j.jsxIdentifier("AuiIf");
153
+ markAsChanged();
154
+ });
155
+ root.find(j.JSXOpeningElement).forEach((path) => {
156
+ const name = path.value.name;
157
+ if (!j.JSXMemberExpression.check(name)) return;
158
+ if (!j.JSXIdentifier.check(name.object)) return;
159
+ if (!j.JSXIdentifier.check(name.property)) return;
160
+ if (name.property.name !== "If") return;
161
+ const primitiveName = name.object.name;
162
+ const propMap = primitiveMap[primitiveName];
163
+ if (!propMap) return;
164
+ if (!importedPrimitives.has(primitiveName)) return;
165
+ const attrs = path.value.attributes || [];
166
+ const fragments = [];
167
+ let hasUnknownProp = false;
168
+ for (const attr of attrs) {
169
+ if (!j.JSXAttribute.check(attr)) {
170
+ hasUnknownProp = true;
171
+ continue;
172
+ }
173
+ const propName = typeof attr.name.name === "string" ? attr.name.name : null;
174
+ if (!propName) continue;
175
+ const mapper = propMap[propName];
176
+ if (!mapper) {
177
+ hasUnknownProp = true;
178
+ continue;
179
+ }
180
+ const fragment = mapper(getAttrValue(j, attr));
181
+ if (fragment) fragments.push(fragment);
182
+ }
183
+ if (hasUnknownProp || fragments.length === 0) return;
184
+ const arrowFnAst = j(`(s) => ${buildConditionString(fragments)}`).find(j.ArrowFunctionExpression).paths()[0].value;
185
+ path.value.name = j.jsxIdentifier("AuiIf");
186
+ path.value.attributes = [j.jsxAttribute(j.jsxIdentifier("condition"), j.jsxExpressionContainer(arrowFnAst))];
187
+ needsAuiIfImport = true;
188
+ markAsChanged();
189
+ });
190
+ root.find(j.JSXClosingElement).forEach((path) => {
191
+ const name = path.value.name;
192
+ if (!j.JSXMemberExpression.check(name)) return;
193
+ if (!j.JSXIdentifier.check(name.object)) return;
194
+ if (!j.JSXIdentifier.check(name.property)) return;
195
+ if (name.property.name !== "If") return;
196
+ const primitiveName = name.object.name;
197
+ if (!primitiveMap[primitiveName]) return;
198
+ if (!importedPrimitives.has(primitiveName)) return;
199
+ path.value.name = j.jsxIdentifier("AuiIf");
200
+ markAsChanged();
201
+ });
202
+ if (needsAuiIfImport) {
203
+ let hasAuiIfImport = false;
204
+ let assistantUiImport = null;
205
+ root.find(j.ImportDeclaration).forEach((path) => {
206
+ const source = path.value.source.value;
207
+ if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
208
+ assistantUiImport = path;
209
+ path.value.specifiers?.forEach((specifier) => {
210
+ if (j.ImportSpecifier.check(specifier) && (specifier.imported.name === "AuiIf" || specifier.local?.name === "AuiIf")) hasAuiIfImport = true;
211
+ });
212
+ }
213
+ });
214
+ if (!hasAuiIfImport && assistantUiImport) {
215
+ assistantUiImport.value.specifiers.push(j.importSpecifier(j.identifier("AuiIf")));
216
+ markAsChanged();
217
+ }
218
+ }
306
219
  });
307
- export default migratePrimitiveIfToAuiIf;
220
+ //#endregion
221
+ export { migratePrimitiveIfToAuiIf as default };
222
+
308
223
  //# sourceMappingURL=primitive-if-to-aui-if.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitive-if-to-aui-if.js","sourceRoot":"","sources":["../../../src/codemods/v0-12/primitive-if-to-aui-if.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,sCAAmC;AAO/D,wDAAwD;AACxD,MAAM,aAAa,GAGf;IACF,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACb,UAAU,EAAE,kBAAkB;QAC9B,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,UAAU,EAAE,qBAAqB;QACjC,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;CACH,CAAC;AAEF,yDAAyD;AACzD,MAAM,cAAc,GAGhB;IACF,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,2BAA2B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAChB,UAAU,EAAE,gCAAgC;QAC5C,OAAO,EAAE,KAAK;KACf,CAAC;IACF,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACb,UAAU,EAAE,6BAA6B;QACzC,OAAO,EAAE,KAAK;KACf,CAAC;IACF,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,UAAU,EAAE,4BAA4B;QACxC,OAAO,EAAE,KAAK;KACf,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACd,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACZ,UAAU,EAAE,kBAAkB;QAC9B,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,UAAU,EAAE,0CAA0C;QACtD,OAAO,EAAE,KAAK;KACf,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,UAAU,EAAE,0BAA0B;QACtC,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC,KAAK,IAAI;QACR,CAAC,CAAC;YACE,UAAU,EACR,8DAA8D;YAChE,OAAO,EAAE,KAAK;SACf;QACH,CAAC,CAAC;YACE,UAAU,EACR,6DAA6D;YAC/D,OAAO,EAAE,KAAK;SACf;IACP,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,UAAU,EAAE,4BAA4B;QACxC,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,OAAO;gBACL,UAAU,EACR,+DAA+D;gBACjE,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QACD,OAAO;YACL,UAAU,EAAE,mDAAmD,CAAC,GAAG;YACnE,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,0DAA0D;AAC1D,MAAM,eAAe,GAGjB;IACF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,UAAU,EAAE,sBAAsB;QAClC,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjB,UAAU,EAAE,8BAA8B;QAC1C,OAAO,EAAE,CAAC,KAAK,KAAK;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,YAAY,GAGd;IACF,eAAe,EAAE,aAAa;IAC9B,gBAAgB,EAAE,cAAc;IAChC,iBAAiB,EAAE,eAAe;CACnC,CAAC;AAEF,kEAAkE;AAClE,MAAM,iBAAiB,GAA2C;IAChE,eAAe,EAAE;QACf,KAAK,EAAE,kBAAkB;KAC1B;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,CAAC,CAAM,EAAE,IAAS,EAAW,EAAE;IAClD,mDAAmD;IACnD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpD,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACrC,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC;IAC9E,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,SAA8B,EAAU,EAAE;IACtE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAC9C,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,iBAAiB,CACjD,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;IAC7B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE;gBAChD,IAAI,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,MAAM,CACjB,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CACjD,CAAC;oBACF,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClD,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,kBAAkB,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE1C,wFAAwF;IACxF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/C,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAElD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAc,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAc,CAAC;QAClD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;YAAE,OAAO;QAEnD,iFAAiF;QACjF,MAAM,KAAK,GAAU,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAE7B,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,aAAa,EAAE,CAAC;aAC5C,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;aAC/B,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;QAErB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG;YACtB,CAAC,CAAC,YAAY,CACZ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,EAC5B,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CACrC;SACF,CAAC;QAEF,gBAAgB,GAAG,IAAI,CAAC;QACxB,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/C,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAElD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAc,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAc,CAAC;QAClD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC;YAAE,OAAO;QACtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;YAAE,OAAO;QAEnD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAE7B,kCAAkC;QAClC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/C,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO;QAExC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;YAAE,OAAO;QAEnD,gBAAgB;QAChB,MAAM,KAAK,GAAU,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,wCAAwC;gBACxC,cAAc,GAAG,IAAI,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,cAAc,GAAG,IAAI,CAAC;gBACtB,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,IAAI,cAAc,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErD,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEtD,qEAAqE;QACrE,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,aAAa,EAAE,CAAC;aAC5C,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;aAC/B,KAAK,EAAE,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;QAErB,2DAA2D;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE3C,sDAAsD;QACtD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG;YACtB,CAAC,CAAC,YAAY,CACZ,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,EAC5B,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CACrC;SACF,CAAC;QAEF,gBAAgB,GAAG,IAAI,CAAC;QACxB,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/C,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO;QAExC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAAE,OAAO;QACzC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC;YAAE,OAAO;QAEnD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,iBAAiB,GAAQ,IAAI,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtE,iBAAiB,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE;oBAChD,IACE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC;wBAClC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO;4BAClC,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,EACpC,CAAC;wBACD,cAAc,GAAG,IAAI,CAAC;oBACxB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,IAAI,iBAAiB,EAAE,CAAC;YACzC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CACrC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CACzC,CAAC;YACF,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC,CACF,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"primitive-if-to-aui-if.js","names":[],"sources":["../../../src/codemods/v0-12/primitive-if-to-aui-if.ts"],"sourcesContent":["import { createTransformer } from \"../utils/createTransformer\";\n\ntype ConditionFragment = {\n expression: string;\n negated: boolean;\n};\n\n// Map ThreadPrimitive.If props to condition expressions\nconst threadPropMap: Record<\n string,\n (value: unknown) => ConditionFragment | null\n> = {\n empty: (v) => ({\n expression: \"s.thread.isEmpty\",\n negated: v === false,\n }),\n running: (v) => ({\n expression: \"s.thread.isRunning\",\n negated: v === false,\n }),\n disabled: (v) => ({\n expression: \"s.thread.isDisabled\",\n negated: v === false,\n }),\n};\n\n// Map MessagePrimitive.If props to condition expressions\nconst messagePropMap: Record<\n string,\n (value: unknown) => ConditionFragment | null\n> = {\n user: () => ({ expression: 's.message.role === \"user\"', negated: false }),\n assistant: () => ({\n expression: 's.message.role === \"assistant\"',\n negated: false,\n }),\n system: () => ({\n expression: 's.message.role === \"system\"',\n negated: false,\n }),\n hasBranches: () => ({\n expression: \"s.message.branchCount >= 2\",\n negated: false,\n }),\n copied: (v) => ({\n expression: \"s.message.isCopied\",\n negated: v === false,\n }),\n last: (v) => ({\n expression: \"s.message.isLast\",\n negated: v === false,\n }),\n lastOrHover: () => ({\n expression: \"s.message.isHovering || s.message.isLast\",\n negated: false,\n }),\n speaking: (v) => ({\n expression: \"s.message.speech != null\",\n negated: v === false,\n }),\n hasAttachments: (v) =>\n v === true\n ? {\n expression:\n 's.message.role === \"user\" && !!s.message.attachments?.length',\n negated: false,\n }\n : {\n expression:\n 's.message.role !== \"user\" || !s.message.attachments?.length',\n negated: false,\n },\n hasContent: (v) => ({\n expression: \"s.message.parts.length > 0\",\n negated: v === false,\n }),\n submittedFeedback: (v) => {\n if (v === null) {\n return {\n expression:\n \"(s.message.metadata.submittedFeedback?.type ?? null) === null\",\n negated: false,\n };\n }\n return {\n expression: `s.message.metadata.submittedFeedback?.type === \"${v}\"`,\n negated: false,\n };\n },\n};\n\n// Map ComposerPrimitive.If props to condition expressions\nconst composerPropMap: Record<\n string,\n (value: unknown) => ConditionFragment | null\n> = {\n editing: (v) => ({\n expression: \"s.composer.isEditing\",\n negated: v === false,\n }),\n dictation: (v) => ({\n expression: \"s.composer.dictation != null\",\n negated: v === false,\n }),\n};\n\nconst primitiveMap: Record<\n string,\n Record<string, (value: unknown) => ConditionFragment | null>\n> = {\n ThreadPrimitive: threadPropMap,\n MessagePrimitive: messagePropMap,\n ComposerPrimitive: composerPropMap,\n};\n\n// Map of XPrimitive.Component → fixed condition (no props needed)\nconst fixedConditionMap: Record<string, Record<string, string>> = {\n ThreadPrimitive: {\n Empty: \"s.thread.isEmpty\",\n },\n};\n\n/**\n * Extract the value of a JSX attribute.\n * - Boolean prop (no value): `<X.If user>` → `true`\n * - `{true}` / `{false}`: → `true` / `false`\n * - `{\"positive\"}`: → `\"positive\"`\n * - `{null}`: → `null`\n */\nconst getAttrValue = (j: any, attr: any): unknown => {\n // Boolean attribute (no value), e.g. `<X.If user>`\n if (attr.value === null || attr.value === undefined) {\n return true;\n }\n\n // JSX expression container: `{true}`, `{false}`, `{\"positive\"}`, `{null}`\n if (j.JSXExpressionContainer.check(attr.value)) {\n const expr = attr.value.expression;\n if (j.BooleanLiteral.check(expr)) return expr.value;\n if (j.Literal.check(expr)) {\n if (expr.value === null) return null;\n return expr.value;\n }\n if (j.NullLiteral.check(expr)) return null;\n if (j.Identifier.check(expr) && expr.name === \"undefined\") return undefined;\n }\n\n // String literal\n if (j.StringLiteral.check(attr.value) || j.Literal.check(attr.value)) {\n return attr.value.value;\n }\n\n return undefined;\n};\n\nconst buildConditionString = (fragments: ConditionFragment[]): string => {\n const parts = fragments.map((f) =>\n f.negated ? `!${f.expression}` : f.expression,\n );\n if (parts.length === 1) return parts[0]!;\n return parts.join(\" && \");\n};\n\nconst migratePrimitiveIfToAuiIf = createTransformer(\n ({ j, root, markAsChanged }) => {\n let needsAuiIfImport = false;\n\n // Track which primitive namespaces are imported\n const importedPrimitives = new Set<string>();\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const source = path.value.source.value;\n if (typeof source === \"string\" && source.startsWith(\"@assistant-ui/\")) {\n path.value.specifiers?.forEach((specifier: any) => {\n if (j.ImportSpecifier.check(specifier)) {\n const name = String(\n specifier.local?.name ?? specifier.imported.name,\n );\n if (primitiveMap[name] || fixedConditionMap[name]) {\n importedPrimitives.add(name);\n }\n }\n });\n }\n });\n\n if (importedPrimitives.size === 0) return;\n\n // Process fixed-condition components: <ThreadPrimitive.Empty> → <AuiIf condition={...}>\n root.find(j.JSXOpeningElement).forEach((path: any) => {\n const name = path.value.name;\n if (!j.JSXMemberExpression.check(name)) return;\n if (!j.JSXIdentifier.check(name.object)) return;\n if (!j.JSXIdentifier.check(name.property)) return;\n\n const primitiveName = name.object.name as string;\n const propertyName = name.property.name as string;\n const fixedMap = fixedConditionMap[primitiveName];\n if (!fixedMap) return;\n const conditionBody = fixedMap[propertyName];\n if (!conditionBody) return;\n if (!importedPrimitives.has(primitiveName)) return;\n\n // Only transform if there are no props (other than children, which are implicit)\n const attrs: any[] = path.value.attributes || [];\n if (attrs.length > 0) return;\n\n const arrowFnAst = j(`(s) => ${conditionBody}`)\n .find(j.ArrowFunctionExpression)\n .paths()[0]!.value;\n\n path.value.name = j.jsxIdentifier(\"AuiIf\");\n path.value.attributes = [\n j.jsxAttribute(\n j.jsxIdentifier(\"condition\"),\n j.jsxExpressionContainer(arrowFnAst),\n ),\n ];\n\n needsAuiIfImport = true;\n markAsChanged();\n });\n\n // Update closing elements for fixed-condition components\n root.find(j.JSXClosingElement).forEach((path: any) => {\n const name = path.value.name;\n if (!j.JSXMemberExpression.check(name)) return;\n if (!j.JSXIdentifier.check(name.object)) return;\n if (!j.JSXIdentifier.check(name.property)) return;\n\n const primitiveName = name.object.name as string;\n const propertyName = name.property.name as string;\n const fixedMap = fixedConditionMap[primitiveName];\n if (!fixedMap?.[propertyName]) return;\n if (!importedPrimitives.has(primitiveName)) return;\n\n path.value.name = j.jsxIdentifier(\"AuiIf\");\n markAsChanged();\n });\n\n // Process JSX elements: <ThreadPrimitive.If ...> → <AuiIf condition={...}>\n root.find(j.JSXOpeningElement).forEach((path: any) => {\n const name = path.value.name;\n\n // Check for `<XPrimitive.If ...>`\n if (!j.JSXMemberExpression.check(name)) return;\n if (!j.JSXIdentifier.check(name.object)) return;\n if (!j.JSXIdentifier.check(name.property)) return;\n if (name.property.name !== \"If\") return;\n\n const primitiveName = name.object.name;\n const propMap = primitiveMap[primitiveName];\n if (!propMap) return;\n if (!importedPrimitives.has(primitiveName)) return;\n\n // Extract props\n const attrs: any[] = path.value.attributes || [];\n const fragments: ConditionFragment[] = [];\n let hasUnknownProp = false;\n\n for (const attr of attrs) {\n if (!j.JSXAttribute.check(attr)) {\n // JSX spread attributes — can't migrate\n hasUnknownProp = true;\n continue;\n }\n const propName =\n typeof attr.name.name === \"string\" ? attr.name.name : null;\n if (!propName) continue;\n\n const mapper = propMap[propName];\n if (!mapper) {\n hasUnknownProp = true;\n continue;\n }\n\n const value = getAttrValue(j, attr);\n const fragment = mapper(value);\n if (fragment) {\n fragments.push(fragment);\n }\n }\n\n // If we couldn't map all props, skip this element\n if (hasUnknownProp || fragments.length === 0) return;\n\n const conditionBody = buildConditionString(fragments);\n\n // Parse the arrow function as an expression to get a proper AST node\n const arrowFnAst = j(`(s) => ${conditionBody}`)\n .find(j.ArrowFunctionExpression)\n .paths()[0]!.value;\n\n // Replace <XPrimitive.If ...> with <AuiIf condition={...}>\n path.value.name = j.jsxIdentifier(\"AuiIf\");\n\n // Replace all attributes with a single condition prop\n path.value.attributes = [\n j.jsxAttribute(\n j.jsxIdentifier(\"condition\"),\n j.jsxExpressionContainer(arrowFnAst),\n ),\n ];\n\n needsAuiIfImport = true;\n markAsChanged();\n });\n\n // Update closing elements to match\n root.find(j.JSXClosingElement).forEach((path: any) => {\n const name = path.value.name;\n if (!j.JSXMemberExpression.check(name)) return;\n if (!j.JSXIdentifier.check(name.object)) return;\n if (!j.JSXIdentifier.check(name.property)) return;\n if (name.property.name !== \"If\") return;\n\n const primitiveName = name.object.name;\n if (!primitiveMap[primitiveName]) return;\n if (!importedPrimitives.has(primitiveName)) return;\n\n path.value.name = j.jsxIdentifier(\"AuiIf\");\n markAsChanged();\n });\n\n // Add AuiIf import if needed\n if (needsAuiIfImport) {\n let hasAuiIfImport = false;\n let assistantUiImport: any = null;\n\n root.find(j.ImportDeclaration).forEach((path: any) => {\n const source = path.value.source.value;\n if (typeof source === \"string\" && source.startsWith(\"@assistant-ui/\")) {\n assistantUiImport = path;\n path.value.specifiers?.forEach((specifier: any) => {\n if (\n j.ImportSpecifier.check(specifier) &&\n (specifier.imported.name === \"AuiIf\" ||\n specifier.local?.name === \"AuiIf\")\n ) {\n hasAuiIfImport = true;\n }\n });\n }\n });\n\n if (!hasAuiIfImport && assistantUiImport) {\n assistantUiImport.value.specifiers.push(\n j.importSpecifier(j.identifier(\"AuiIf\")),\n );\n markAsChanged();\n }\n }\n },\n);\n\nexport default migratePrimitiveIfToAuiIf;\n"],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ //#region src/codemods/v0-8/ui-package-split.d.ts
1
2
  declare const migrateAssistantUI: (fileInfo: import("jscodeshift/src/core").FileInfo, api: import("jscodeshift/src/core").API, options: any) => string | null;
2
- export default migrateAssistantUI;
3
+ //#endregion
4
+ export { migrateAssistantUI as default };
3
5
  //# sourceMappingURL=ui-package-split.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-package-split.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-8/ui-package-split.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,kBAAkB,6HAoKtB,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"ui-package-split.d.ts","names":[],"sources":["../../../src/codemods/v0-8/ui-package-split.ts"],"mappings":";cA8BM,kBAAA,GAAkB,QAAA,iCAAA,QAAA,EAAA,GAAA,iCAAA,GAAA,EAAA,OAAA"}