assistant-ui 0.0.78 → 0.0.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,14 +4,18 @@ The `assistant-ui` CLI for adding components and dependencies to your project.
4
4
 
5
5
  ## Usage
6
6
 
7
- Use the `init` command to initialize dependencies for a new or existing project.
7
+ Use the `init` command to initialize assistant-ui in an existing project.
8
8
 
9
9
  The `init` command installs dependencies, adds components, and configures your project for assistant-ui.
10
10
 
11
11
  ```bash
12
12
  npx assistant-ui@latest init
13
+ npx assistant-ui@latest init --yes # non-interactive / CI / agent mode
13
14
  ```
14
15
 
16
+ If no existing project is found (no `package.json`), `init` forwards to `create`.
17
+ Passing `--preset` to `init` also forwards to `create` for compatibility.
18
+
15
19
  ## create
16
20
 
17
21
  Use the `create` command to scaffold a new Next.js project with assistant-ui.
@@ -28,14 +32,23 @@ You can choose from multiple templates:
28
32
  # Default template with Vercel AI SDK
29
33
  npx assistant-ui@latest create my-app
30
34
 
35
+ # Minimal starter
36
+ npx assistant-ui@latest create my-app -t minimal
37
+
31
38
  # With Assistant Cloud for persistence
32
39
  npx assistant-ui@latest create my-app -t cloud
33
40
 
34
- # With LangGraph integration
41
+ # With Assistant Cloud + Clerk auth
42
+ npx assistant-ui@latest create my-app -t cloud-clerk
43
+
44
+ # With LangGraph starter template
35
45
  npx assistant-ui@latest create my-app -t langgraph
36
46
 
37
- # With MCP support
47
+ # With MCP starter template
38
48
  npx assistant-ui@latest create my-app -t mcp
49
+
50
+ # With playground preset configuration
51
+ npx assistant-ui@latest create my-app --preset "https://www.assistant-ui.com/playground/init?preset=chatgpt"
39
52
  ```
40
53
 
41
54
  ## add
@@ -0,0 +1,3 @@
1
+ declare const migratePrimitiveIfToAuiIf: (fileInfo: import("jscodeshift/src/core").FileInfo, api: import("jscodeshift/src/core").API, options: any) => string | null;
2
+ export default migratePrimitiveIfToAuiIf;
3
+ //# sourceMappingURL=primitive-if-to-aui-if.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-if-to-aui-if.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-12/primitive-if-to-aui-if.ts"],"names":[],"mappings":"AAmKA,QAAA,MAAM,yBAAyB,6HA6L9B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,308 @@
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
+ };
85
+ 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
+ },
95
+ };
96
+ /**
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
+ */
103
+ 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;
128
+ };
129
+ 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(" && ");
134
+ };
135
+ 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 || !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
+ }
306
+ });
307
+ export default migratePrimitiveIfToAuiIf;
308
+ //# sourceMappingURL=primitive-if-to-aui-if.js.map
@@ -0,0 +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":"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"}
@@ -1,3 +1,57 @@
1
1
  import { Command } from "commander";
2
+ import * as p from "@clack/prompts";
3
+ declare const templates: {
4
+ readonly default: {
5
+ readonly url: "https://github.com/assistant-ui/assistant-ui-starter";
6
+ readonly label: "Default";
7
+ readonly hint: "Default template with Vercel AI SDK";
8
+ };
9
+ readonly minimal: {
10
+ readonly url: "https://github.com/assistant-ui/assistant-ui-starter-minimal";
11
+ readonly label: "Minimal";
12
+ readonly hint: "Bare-bones starting point";
13
+ };
14
+ readonly cloud: {
15
+ readonly url: "https://github.com/assistant-ui/assistant-cloud-starter";
16
+ readonly label: "Cloud";
17
+ readonly hint: "Cloud-backed persistence starter";
18
+ };
19
+ readonly "cloud-clerk": {
20
+ readonly url: "https://github.com/assistant-ui/assistant-ui-starter-cloud-clerk";
21
+ readonly label: "Cloud + Clerk";
22
+ readonly hint: "Cloud-backed starter with Clerk auth";
23
+ };
24
+ readonly langgraph: {
25
+ readonly url: "https://github.com/assistant-ui/assistant-ui-starter-langgraph";
26
+ readonly label: "LangGraph";
27
+ readonly hint: "LangGraph starter template";
28
+ };
29
+ readonly mcp: {
30
+ readonly url: "https://github.com/assistant-ui/assistant-ui-starter-mcp";
31
+ readonly label: "MCP";
32
+ readonly hint: "MCP starter template";
33
+ };
34
+ };
35
+ type TemplateName = keyof typeof templates;
36
+ export declare function resolveCreateTemplateName(params: {
37
+ template?: string;
38
+ stdinIsTTY?: boolean;
39
+ select?: typeof p.select;
40
+ isCancel?: typeof p.isCancel;
41
+ }): Promise<TemplateName | null>;
42
+ export declare function buildCreateNextAppArgs(params: {
43
+ projectDirectory?: string;
44
+ useNpm?: boolean;
45
+ usePnpm?: boolean;
46
+ useYarn?: boolean;
47
+ useBun?: boolean;
48
+ skipInstall?: boolean;
49
+ templateUrl: string;
50
+ }): string[];
51
+ export declare function resolveCreateProjectDirectory(params: {
52
+ projectDirectory?: string;
53
+ stdinIsTTY?: boolean;
54
+ }): string | undefined;
2
55
  export declare const create: Command;
56
+ export {};
3
57
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,MAAM,SAgFf,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAKpC,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BL,CAAC;AAEX,KAAK,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAa3C,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;CAC9B,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B/B;AAiCD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,EAAE,CAqBX;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAMD,eAAO,MAAM,MAAM,SAkHf,CAAC"}