assistant-ui 0.0.72 → 0.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codemods/v0-12/assistant-api-to-aui.d.ts +3 -0
- package/dist/codemods/v0-12/assistant-api-to-aui.d.ts.map +1 -0
- package/dist/codemods/v0-12/assistant-api-to-aui.js +227 -0
- package/dist/codemods/v0-12/assistant-api-to-aui.js.map +1 -0
- package/dist/codemods/v0-12/event-names-to-camelcase.d.ts +3 -0
- package/dist/codemods/v0-12/event-names-to-camelcase.d.ts.map +1 -0
- package/dist/codemods/v0-12/event-names-to-camelcase.js +44 -0
- package/dist/codemods/v0-12/event-names-to-camelcase.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +19 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +226 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/create-from-example.d.ts +9 -0
- package/dist/lib/create-from-example.d.ts.map +1 -0
- package/dist/lib/create-from-example.js +319 -0
- package/dist/lib/create-from-example.js.map +1 -0
- package/dist/lib/upgrade.d.ts.map +1 -1
- package/dist/lib/upgrade.js +2 -0
- package/dist/lib/upgrade.js.map +1 -1
- package/package.json +2 -1
- package/src/codemods/v0-12/__tests__/assistant-api-to-aui.test.ts +594 -0
- package/src/codemods/v0-12/__tests__/event-names-to-camelcase.test.ts +127 -0
- package/src/codemods/v0-12/assistant-api-to-aui.ts +274 -0
- package/src/codemods/v0-12/event-names-to-camelcase.ts +53 -0
- package/src/commands/create.ts +24 -1
- package/src/commands/mcp.ts +280 -0
- package/src/index.ts +2 -0
- package/src/lib/create-from-example.ts +420 -0
- package/src/lib/upgrade.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-api-to-aui.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-12/assistant-api-to-aui.ts"],"names":[],"mappings":"AAsFA,QAAA,MAAM,wBAAwB,6HAyL7B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { createTransformer } from "../utils/createTransformer.js";
|
|
2
|
+
// Map of old hook names to new hook names
|
|
3
|
+
const hookRenamingMap = {
|
|
4
|
+
useAssistantApi: "useAui",
|
|
5
|
+
useAssistantState: "useAuiState",
|
|
6
|
+
useAssistantEvent: "useAuiEvent",
|
|
7
|
+
};
|
|
8
|
+
// Map of old component names to new component names
|
|
9
|
+
const componentRenamingMap = {
|
|
10
|
+
AssistantIf: "AuiIf",
|
|
11
|
+
AssistantProvider: "AuiProvider",
|
|
12
|
+
};
|
|
13
|
+
const isUseAuiCall = (j, node) => {
|
|
14
|
+
return (node &&
|
|
15
|
+
j.CallExpression.check(node) &&
|
|
16
|
+
j.Identifier.check(node.callee) &&
|
|
17
|
+
(node.callee.name === "useAui" || node.callee.name === "useAssistantApi"));
|
|
18
|
+
};
|
|
19
|
+
// Check if a scope node directly contains an 'api' variable declaration
|
|
20
|
+
const scopeHasDirectApiDeclaration = (j, scopeNode) => {
|
|
21
|
+
// Get the body of the scope
|
|
22
|
+
let body = null;
|
|
23
|
+
if (j.FunctionDeclaration.check(scopeNode) ||
|
|
24
|
+
j.FunctionExpression.check(scopeNode)) {
|
|
25
|
+
body = scopeNode.body?.body;
|
|
26
|
+
}
|
|
27
|
+
else if (j.ArrowFunctionExpression.check(scopeNode)) {
|
|
28
|
+
// Arrow functions might have block or expression body
|
|
29
|
+
if (j.BlockStatement.check(scopeNode.body)) {
|
|
30
|
+
body = scopeNode.body.body;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (j.BlockStatement.check(scopeNode)) {
|
|
34
|
+
body = scopeNode.body;
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(body))
|
|
37
|
+
return false;
|
|
38
|
+
// Check only direct statements in this scope's body
|
|
39
|
+
for (const statement of body) {
|
|
40
|
+
if (j.VariableDeclaration.check(statement)) {
|
|
41
|
+
for (const declarator of statement.declarations) {
|
|
42
|
+
if (j.Identifier.check(declarator.id) && declarator.id.name === "api") {
|
|
43
|
+
// Don't count it as shadowing if it's from useAui
|
|
44
|
+
if (!isUseAuiCall(j, declarator.init)) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
};
|
|
53
|
+
// Check if a path is inside a scope that shadows the api variable
|
|
54
|
+
const isInsideShadowingScope = (j, identifierPath) => {
|
|
55
|
+
let currentPath = identifierPath.parent;
|
|
56
|
+
while (currentPath) {
|
|
57
|
+
const node = currentPath.value;
|
|
58
|
+
// Check if this is a scope-creating node (function, arrow function, block)
|
|
59
|
+
if (j.FunctionDeclaration.check(node) ||
|
|
60
|
+
j.FunctionExpression.check(node) ||
|
|
61
|
+
j.ArrowFunctionExpression.check(node) ||
|
|
62
|
+
j.BlockStatement.check(node)) {
|
|
63
|
+
if (scopeHasDirectApiDeclaration(j, node)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
currentPath = currentPath.parent;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
};
|
|
71
|
+
const migrateAssistantApiToAui = createTransformer(({ j, root, markAsChanged }) => {
|
|
72
|
+
let hasApiFromUseAui = false;
|
|
73
|
+
// 1. Update imports
|
|
74
|
+
root.find(j.ImportDeclaration).forEach((path) => {
|
|
75
|
+
const source = path.value.source.value;
|
|
76
|
+
// Only process imports from @assistant-ui packages
|
|
77
|
+
if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
|
|
78
|
+
path.value.specifiers?.forEach((specifier) => {
|
|
79
|
+
if (j.ImportSpecifier.check(specifier)) {
|
|
80
|
+
const oldName = specifier.imported.name;
|
|
81
|
+
// Rename hooks
|
|
82
|
+
if (hookRenamingMap[oldName]) {
|
|
83
|
+
const newName = hookRenamingMap[oldName];
|
|
84
|
+
specifier.imported.name = newName;
|
|
85
|
+
if (specifier.local && specifier.local.name === oldName) {
|
|
86
|
+
specifier.local.name = newName;
|
|
87
|
+
}
|
|
88
|
+
markAsChanged();
|
|
89
|
+
}
|
|
90
|
+
// Rename components
|
|
91
|
+
if (componentRenamingMap[oldName]) {
|
|
92
|
+
const newName = componentRenamingMap[oldName];
|
|
93
|
+
specifier.imported.name = newName;
|
|
94
|
+
if (specifier.local && specifier.local.name === oldName) {
|
|
95
|
+
specifier.local.name = newName;
|
|
96
|
+
}
|
|
97
|
+
markAsChanged();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// 2. Find and rename variable declarations from useAui (or useAssistantApi)
|
|
104
|
+
root.find(j.VariableDeclarator).forEach((path) => {
|
|
105
|
+
const init = path.value.init;
|
|
106
|
+
// Check if this is a call to useAui or useAssistantApi
|
|
107
|
+
if (isUseAuiCall(j, init)) {
|
|
108
|
+
if (j.Identifier.check(path.value.id)) {
|
|
109
|
+
const oldVarName = path.value.id.name;
|
|
110
|
+
// Only rename if it's called 'api'
|
|
111
|
+
if (oldVarName === "api") {
|
|
112
|
+
path.value.id.name = "aui";
|
|
113
|
+
hasApiFromUseAui = true;
|
|
114
|
+
markAsChanged();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
// 3. Rename all references to 'api' if we found it from useAui
|
|
120
|
+
if (hasApiFromUseAui) {
|
|
121
|
+
root.find(j.Identifier).forEach((path) => {
|
|
122
|
+
if (path.value.name === "api") {
|
|
123
|
+
// Skip if this is part of an import
|
|
124
|
+
if (j.ImportSpecifier.check(path.parent.value)) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Skip if this is a variable declarator id
|
|
128
|
+
if (j.VariableDeclarator.check(path.parent.value)) {
|
|
129
|
+
const declarator = path.parent.value;
|
|
130
|
+
if (declarator.id === path.value) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Skip if this is a property key in an object (e.g., { api: true })
|
|
135
|
+
if (j.Property.check(path.parent.value)) {
|
|
136
|
+
const prop = path.parent.value;
|
|
137
|
+
if (prop.key === path.value && !prop.shorthand && !prop.computed) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (j.ObjectProperty.check(path.parent.value)) {
|
|
142
|
+
const prop = path.parent.value;
|
|
143
|
+
if (prop.key === path.value && !prop.shorthand && !prop.computed) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Skip if this is a property in a member expression (e.g., foo.api)
|
|
148
|
+
if (j.MemberExpression.check(path.parent.value) &&
|
|
149
|
+
path.parent.value.property === path.value &&
|
|
150
|
+
!path.parent.value.computed) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Skip if this is a JSX attribute name
|
|
154
|
+
if (j.JSXAttribute.check(path.parent.value)) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Skip if this identifier is inside a scope that shadows the api variable
|
|
158
|
+
if (isInsideShadowingScope(j, path)) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Update the reference
|
|
162
|
+
path.value.name = "aui";
|
|
163
|
+
markAsChanged();
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
// Also handle JSX identifiers
|
|
167
|
+
root.find(j.JSXIdentifier).forEach((path) => {
|
|
168
|
+
if (path.value.name === "api") {
|
|
169
|
+
if (!isInsideShadowingScope(j, path)) {
|
|
170
|
+
path.value.name = "aui";
|
|
171
|
+
markAsChanged();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
// 4. Update hook call references (in case they're used as values)
|
|
177
|
+
Object.entries(hookRenamingMap).forEach(([oldName, newName]) => {
|
|
178
|
+
root.find(j.Identifier).forEach((path) => {
|
|
179
|
+
if (path.value.name === oldName) {
|
|
180
|
+
// Skip if already handled in imports
|
|
181
|
+
if (j.ImportSpecifier.check(path.parent.value)) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// This might be a reference to the hook as a value
|
|
185
|
+
path.value.name = newName;
|
|
186
|
+
markAsChanged();
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
// 5. Update JSX component names
|
|
191
|
+
Object.entries(componentRenamingMap).forEach(([oldName, newName]) => {
|
|
192
|
+
// Update JSX opening elements
|
|
193
|
+
root.find(j.JSXOpeningElement).forEach((path) => {
|
|
194
|
+
if (j.JSXIdentifier.check(path.value.name) &&
|
|
195
|
+
path.value.name.name === oldName) {
|
|
196
|
+
path.value.name.name = newName;
|
|
197
|
+
markAsChanged();
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
// Update JSX closing elements
|
|
201
|
+
root.find(j.JSXClosingElement).forEach((path) => {
|
|
202
|
+
if (j.JSXIdentifier.check(path.value.name) &&
|
|
203
|
+
path.value.name.name === oldName) {
|
|
204
|
+
path.value.name.name = newName;
|
|
205
|
+
markAsChanged();
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
// Update regular identifier references (for component references)
|
|
209
|
+
root.find(j.Identifier).forEach((path) => {
|
|
210
|
+
if (path.value.name === oldName) {
|
|
211
|
+
// Skip if already handled in imports
|
|
212
|
+
if (j.ImportSpecifier.check(path.parent.value)) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
// Skip JSX identifiers (already handled above)
|
|
216
|
+
if (j.JSXIdentifier.check(path.value)) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
// This might be a reference to the component as a value
|
|
220
|
+
path.value.name = newName;
|
|
221
|
+
markAsChanged();
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
export default migrateAssistantApiToAui;
|
|
227
|
+
//# sourceMappingURL=assistant-api-to-aui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-api-to-aui.js","sourceRoot":"","sources":["../../../src/codemods/v0-12/assistant-api-to-aui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-names-to-camelcase.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-12/event-names-to-camelcase.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,4BAA4B,6HAsCjC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createTransformer } from "../utils/createTransformer.js";
|
|
2
|
+
// Map of old kebab-case event names to new camelCase event names
|
|
3
|
+
const eventNameMap = {
|
|
4
|
+
"thread.run-start": "thread.runStart",
|
|
5
|
+
"thread.run-end": "thread.runEnd",
|
|
6
|
+
"thread.model-context-update": "thread.modelContextUpdate",
|
|
7
|
+
"composer.attachment-add": "composer.attachmentAdd",
|
|
8
|
+
"thread-list-item.switched-to": "threadListItem.switchedTo",
|
|
9
|
+
"thread-list-item.switched-away": "threadListItem.switchedAway",
|
|
10
|
+
};
|
|
11
|
+
const migrateEventNamesToCamelCase = createTransformer(({ j, root, markAsChanged }) => {
|
|
12
|
+
// Find all string literals in the code
|
|
13
|
+
root.find(j.Literal).forEach((path) => {
|
|
14
|
+
const node = path.value;
|
|
15
|
+
// Check if this is a string literal
|
|
16
|
+
if (typeof node.value === "string") {
|
|
17
|
+
const oldEventName = node.value;
|
|
18
|
+
// Check if this event name needs to be migrated
|
|
19
|
+
if (eventNameMap[oldEventName]) {
|
|
20
|
+
const newEventName = eventNameMap[oldEventName];
|
|
21
|
+
node.value = newEventName;
|
|
22
|
+
markAsChanged();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
// Also handle template literals (in case event names are in template strings)
|
|
27
|
+
root.find(j.TemplateLiteral).forEach((path) => {
|
|
28
|
+
const node = path.value;
|
|
29
|
+
// Check quasi (string parts) in template literals
|
|
30
|
+
node.quasis.forEach((quasi) => {
|
|
31
|
+
if (quasi.value && typeof quasi.value.raw === "string") {
|
|
32
|
+
const oldEventName = quasi.value.raw;
|
|
33
|
+
if (eventNameMap[oldEventName]) {
|
|
34
|
+
const newEventName = eventNameMap[oldEventName];
|
|
35
|
+
quasi.value.raw = newEventName;
|
|
36
|
+
quasi.value.cooked = newEventName;
|
|
37
|
+
markAsChanged();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
export default migrateEventNamesToCamelCase;
|
|
44
|
+
//# sourceMappingURL=event-names-to-camelcase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-names-to-camelcase.js","sourceRoot":"","sources":["../../../src/codemods/v0-12/event-names-to-camelcase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,sCAAmC;AAE/D,iEAAiE;AACjE,MAAM,YAAY,GAA2B;IAC3C,kBAAkB,EAAE,iBAAiB;IACrC,gBAAgB,EAAE,eAAe;IACjC,6BAA6B,EAAE,2BAA2B;IAC1D,yBAAyB,EAAE,wBAAwB;IACnD,8BAA8B,EAAE,2BAA2B;IAC3D,gCAAgC,EAAE,6BAA6B;CAChE,CAAC;AAEF,MAAM,4BAA4B,GAAG,iBAAiB,CACpD,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;IAC7B,uCAAuC;IACvC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAExB,oCAAoC;QACpC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAEhC,gDAAgD;YAChD,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;gBAChD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;gBAC1B,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAExB,kDAAkD;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YACjC,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;gBAErC,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC/B,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;oBAChD,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;oBAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;oBAClC,aAAa,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,MAAM,SAwFf,CAAC"}
|
package/dist/commands/create.js
CHANGED
|
@@ -2,18 +2,36 @@ import { Command } from "commander";
|
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { spawn } from "cross-spawn";
|
|
4
4
|
import { logger } from "../lib/utils/logger.js";
|
|
5
|
+
import { createFromExample } from "../lib/create-from-example.js";
|
|
5
6
|
export const create = new Command()
|
|
6
7
|
.name("create")
|
|
7
8
|
.description("create a new project")
|
|
8
9
|
.argument("[project-directory]")
|
|
9
10
|
.usage(`${chalk.green("[project-directory]")} [options]`)
|
|
10
11
|
.option("-t, --template <template>", "template to use (default, cloud, langgraph, mcp)")
|
|
12
|
+
.option("-e, --example <example>", "create from an example (e.g., with-langgraph, with-ai-sdk-v6)")
|
|
11
13
|
.option("--use-npm", "explicitly use npm")
|
|
12
14
|
.option("--use-pnpm", "explicitly use pnpm")
|
|
13
15
|
.option("--use-yarn", "explicitly use yarn")
|
|
14
16
|
.option("--use-bun", "explicitly use bun")
|
|
15
17
|
.option("--skip-install", "skip installing packages")
|
|
16
|
-
.action((
|
|
18
|
+
.action(async (projectDirectory, opts) => {
|
|
19
|
+
// Handle --example option
|
|
20
|
+
if (opts.example) {
|
|
21
|
+
if (!projectDirectory) {
|
|
22
|
+
logger.error("Project directory is required when using --example");
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
await createFromExample(projectDirectory, opts.example, {
|
|
26
|
+
skipInstall: opts.skipInstall,
|
|
27
|
+
useNpm: opts.useNpm,
|
|
28
|
+
usePnpm: opts.usePnpm,
|
|
29
|
+
useYarn: opts.useYarn,
|
|
30
|
+
useBun: opts.useBun,
|
|
31
|
+
});
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Handle --template option (existing logic)
|
|
17
35
|
const templates = {
|
|
18
36
|
default: "https://github.com/assistant-ui/assistant-ui-starter",
|
|
19
37
|
cloud: "https://github.com/assistant-ui/assistant-ui-starter-cloud",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,+BAA4B;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,+BAA4B;AAC7C,OAAO,EAAE,iBAAiB,EAAE,sCAAmC;AAE/D,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE;KAChC,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,qBAAqB,CAAC;KAC/B,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,YAAY,CAAC;KACxD,MAAM,CACL,2BAA2B,EAC3B,kDAAkD,CACnD;KACA,MAAM,CACL,yBAAyB,EACzB,+DAA+D,CAChE;KACA,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE;IACvC,0BAA0B;IAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE;YACtD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,4CAA4C;IAC5C,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,sDAAsD;QAC/D,KAAK,EAAE,4DAA4D;QACnE,SAAS,EACP,gEAAgE;QAClE,GAAG,EAAE,0DAA0D;KAChE,CAAC;IAEF,MAAM,YAAY,GAAI,IAAI,CAAC,QAAmC,IAAI,SAAS,CAAC;IAC5E,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpE,OAAO,CAAC,CACN,GAAG,KAAK,IAAI;YACZ,GAAG,KAAK,YAAY;YACpB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI;YACvB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,YAAY,CAChC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,CACjB,KAAK,EACL,CAAC,wBAAwB,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,WAAW,CAAC,EAC9D;QACE,KAAK,EAAE,SAAS;KACjB,CACF,CAAC;IAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqOpC,eAAO,MAAM,GAAG,SAkDZ,CAAC"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import { spawn } from "cross-spawn";
|
|
6
|
+
import { logger } from "../lib/utils/logger.js";
|
|
7
|
+
import * as p from "@clack/prompts";
|
|
8
|
+
const MCP_CONFIGS = {
|
|
9
|
+
cursor: {
|
|
10
|
+
name: "Cursor",
|
|
11
|
+
getPath: () => path.join(process.cwd(), ".cursor", "mcp.json"),
|
|
12
|
+
config: {
|
|
13
|
+
mcpServers: {
|
|
14
|
+
"assistant-ui": {
|
|
15
|
+
command: "npx",
|
|
16
|
+
args: ["-y", "@assistant-ui/mcp-docs-server"],
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
postInstall: "Open Cursor Settings → MCP → find 'assistant-ui' and click enable.",
|
|
21
|
+
},
|
|
22
|
+
windsurf: {
|
|
23
|
+
name: "Windsurf",
|
|
24
|
+
getPath: () => path.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json"),
|
|
25
|
+
config: {
|
|
26
|
+
mcpServers: {
|
|
27
|
+
"assistant-ui": {
|
|
28
|
+
command: "npx",
|
|
29
|
+
args: ["-y", "@assistant-ui/mcp-docs-server"],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
postInstall: "Fully quit and re-open Windsurf to activate.",
|
|
34
|
+
},
|
|
35
|
+
vscode: {
|
|
36
|
+
name: "VSCode",
|
|
37
|
+
getPath: () => path.join(process.cwd(), ".vscode", "mcp.json"),
|
|
38
|
+
config: {
|
|
39
|
+
servers: {
|
|
40
|
+
"assistant-ui": {
|
|
41
|
+
command: "npx",
|
|
42
|
+
args: ["-y", "@assistant-ui/mcp-docs-server"],
|
|
43
|
+
type: "stdio",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
postInstall: "Enable MCP in Settings → search 'MCP' → enable 'Chat > MCP'. Use Copilot Chat in Agent mode.",
|
|
48
|
+
},
|
|
49
|
+
zed: {
|
|
50
|
+
name: "Zed",
|
|
51
|
+
getPath: () => {
|
|
52
|
+
if (process.platform === "win32") {
|
|
53
|
+
return path.join(process.env["APPDATA"] || "", "Zed", "settings.json");
|
|
54
|
+
}
|
|
55
|
+
if (process.platform === "darwin") {
|
|
56
|
+
return path.join(os.homedir(), ".zed", "settings.json");
|
|
57
|
+
}
|
|
58
|
+
return path.join(os.homedir(), ".config", "zed", "settings.json");
|
|
59
|
+
},
|
|
60
|
+
config: {
|
|
61
|
+
context_servers: {
|
|
62
|
+
"assistant-ui": {
|
|
63
|
+
command: {
|
|
64
|
+
path: "npx",
|
|
65
|
+
args: ["-y", "@assistant-ui/mcp-docs-server"],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
postInstall: "The server starts automatically with the Assistant Panel.",
|
|
71
|
+
},
|
|
72
|
+
"claude-desktop": {
|
|
73
|
+
name: "Claude Desktop",
|
|
74
|
+
getPath: () => {
|
|
75
|
+
if (process.platform === "win32") {
|
|
76
|
+
return path.join(process.env["APPDATA"] || "", "Claude", "claude_desktop_config.json");
|
|
77
|
+
}
|
|
78
|
+
return path.join(os.homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
79
|
+
},
|
|
80
|
+
config: {
|
|
81
|
+
mcpServers: {
|
|
82
|
+
"assistant-ui": {
|
|
83
|
+
command: "npx",
|
|
84
|
+
args: ["-y", "@assistant-ui/mcp-docs-server"],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
postInstall: "Restart Claude Desktop to activate.",
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
function deepMerge(target, source) {
|
|
92
|
+
const result = { ...target };
|
|
93
|
+
for (const key of Object.keys(source)) {
|
|
94
|
+
if (source[key] &&
|
|
95
|
+
typeof source[key] === "object" &&
|
|
96
|
+
!Array.isArray(source[key])) {
|
|
97
|
+
result[key] = deepMerge(result[key] || {}, source[key]);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
result[key] = source[key];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
async function installForTarget(target) {
|
|
106
|
+
if (target === "claude-code") {
|
|
107
|
+
logger.info("Installing MCP server for Claude Code...");
|
|
108
|
+
logger.break();
|
|
109
|
+
const child = spawn("claude", [
|
|
110
|
+
"mcp",
|
|
111
|
+
"add",
|
|
112
|
+
"assistant-ui",
|
|
113
|
+
"--",
|
|
114
|
+
"npx",
|
|
115
|
+
"-y",
|
|
116
|
+
"@assistant-ui/mcp-docs-server",
|
|
117
|
+
], {
|
|
118
|
+
stdio: "inherit",
|
|
119
|
+
});
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
child.on("error", (error) => {
|
|
122
|
+
logger.error(`Failed to install: ${error.message}`);
|
|
123
|
+
logger.info("Make sure Claude Code CLI is installed: https://docs.anthropic.com/en/docs/claude-code");
|
|
124
|
+
reject(error);
|
|
125
|
+
});
|
|
126
|
+
child.on("close", (code) => {
|
|
127
|
+
if (code !== 0) {
|
|
128
|
+
logger.error(`Installation failed with code ${code}`);
|
|
129
|
+
reject(new Error(`Exit code ${code}`));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
logger.break();
|
|
133
|
+
logger.success("MCP server installed for Claude Code!");
|
|
134
|
+
logger.info("The server starts automatically. Try asking about assistant-ui!");
|
|
135
|
+
resolve();
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (target === "claude-desktop" && process.platform === "linux") {
|
|
141
|
+
logger.error("Claude Desktop is not available on Linux.");
|
|
142
|
+
logger.info("See: https://claude.ai/download for supported operating systems.");
|
|
143
|
+
throw new Error("Unsupported platform for Claude Desktop");
|
|
144
|
+
}
|
|
145
|
+
const targetConfig = MCP_CONFIGS[target];
|
|
146
|
+
const configPath = targetConfig.getPath();
|
|
147
|
+
const configDir = path.dirname(configPath);
|
|
148
|
+
logger.info(`Installing MCP server for ${targetConfig.name}...`);
|
|
149
|
+
if (!fs.existsSync(configDir)) {
|
|
150
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
151
|
+
}
|
|
152
|
+
let existingConfig = {};
|
|
153
|
+
if (fs.existsSync(configPath)) {
|
|
154
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
155
|
+
try {
|
|
156
|
+
existingConfig = JSON.parse(content);
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
logger.error(`Could not parse existing config at ${configPath}`);
|
|
160
|
+
logger.error("Please fix the JSON syntax error before running this command.");
|
|
161
|
+
throw e;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const newConfig = deepMerge(existingConfig, targetConfig.config);
|
|
165
|
+
fs.writeFileSync(configPath, `${JSON.stringify(newConfig, null, 2)}\n`);
|
|
166
|
+
logger.break();
|
|
167
|
+
logger.success(`MCP server installed for ${targetConfig.name}!`);
|
|
168
|
+
logger.info(`Config written to: ${configPath}`);
|
|
169
|
+
if (targetConfig.postInstall) {
|
|
170
|
+
logger.break();
|
|
171
|
+
logger.info(targetConfig.postInstall);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
export const mcp = new Command()
|
|
175
|
+
.name("mcp")
|
|
176
|
+
.description("install assistant-ui MCP docs server for your IDE")
|
|
177
|
+
.option("--cursor", "install for Cursor")
|
|
178
|
+
.option("--windsurf", "install for Windsurf")
|
|
179
|
+
.option("--vscode", "install for VSCode")
|
|
180
|
+
.option("--zed", "install for Zed")
|
|
181
|
+
.option("--claude-code", "install for Claude Code")
|
|
182
|
+
.option("--claude-desktop", "install for Claude Desktop")
|
|
183
|
+
.action(async (opts) => {
|
|
184
|
+
const targets = [];
|
|
185
|
+
if (opts.cursor)
|
|
186
|
+
targets.push("cursor");
|
|
187
|
+
if (opts.windsurf)
|
|
188
|
+
targets.push("windsurf");
|
|
189
|
+
if (opts.vscode)
|
|
190
|
+
targets.push("vscode");
|
|
191
|
+
if (opts.zed)
|
|
192
|
+
targets.push("zed");
|
|
193
|
+
if (opts.claudeCode)
|
|
194
|
+
targets.push("claude-code");
|
|
195
|
+
if (opts.claudeDesktop)
|
|
196
|
+
targets.push("claude-desktop");
|
|
197
|
+
// If no target specified, prompt user
|
|
198
|
+
if (targets.length === 0) {
|
|
199
|
+
p.intro("assistant-ui MCP Server Installation");
|
|
200
|
+
const selected = await p.select({
|
|
201
|
+
message: "Select your IDE or tool:",
|
|
202
|
+
options: [
|
|
203
|
+
{ value: "cursor", label: "Cursor" },
|
|
204
|
+
{ value: "windsurf", label: "Windsurf" },
|
|
205
|
+
{ value: "vscode", label: "VSCode" },
|
|
206
|
+
{ value: "zed", label: "Zed" },
|
|
207
|
+
{ value: "claude-code", label: "Claude Code" },
|
|
208
|
+
{ value: "claude-desktop", label: "Claude Desktop" },
|
|
209
|
+
],
|
|
210
|
+
});
|
|
211
|
+
if (p.isCancel(selected)) {
|
|
212
|
+
p.cancel("Installation cancelled.");
|
|
213
|
+
process.exit(0);
|
|
214
|
+
}
|
|
215
|
+
targets.push(selected);
|
|
216
|
+
}
|
|
217
|
+
for (const target of targets) {
|
|
218
|
+
try {
|
|
219
|
+
await installForTarget(target);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { add } from "./commands/add.js";
|
|
|
5
5
|
import { codemodCommand, upgradeCommand } from "./commands/upgrade.js";
|
|
6
6
|
import { init } from "./commands/init.js";
|
|
7
7
|
import { update } from "./commands/update.js";
|
|
8
|
+
import { mcp } from "./commands/mcp.js";
|
|
8
9
|
process.on("SIGINT", () => process.exit(0));
|
|
9
10
|
process.on("SIGTERM", () => process.exit(0));
|
|
10
11
|
function main() {
|
|
@@ -14,6 +15,7 @@ function main() {
|
|
|
14
15
|
program.addCommand(add);
|
|
15
16
|
program.addCommand(create);
|
|
16
17
|
program.addCommand(init);
|
|
18
|
+
program.addCommand(mcp);
|
|
17
19
|
program.addCommand(codemodCommand);
|
|
18
20
|
program.addCommand(upgradeCommand);
|
|
19
21
|
program.addCommand(update);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,6BAA0B;AAC3C,OAAO,EAAE,GAAG,EAAE,0BAAuB;AACrC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,8BAA2B;AACpE,OAAO,EAAE,IAAI,EAAE,2BAAwB;AACvC,OAAO,EAAE,MAAM,EAAE,6BAA0B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,6BAA0B;AAC3C,OAAO,EAAE,GAAG,EAAE,0BAAuB;AACrC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,8BAA2B;AACpE,OAAO,EAAE,IAAI,EAAE,2BAAwB;AACvC,OAAO,EAAE,MAAM,EAAE,6BAA0B;AAC3C,OAAO,EAAE,GAAG,EAAE,0BAAuB;AAErC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C,SAAS,IAAI;IACX,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,cAAc,CAAC;SACpB,WAAW,CAAC,iDAAiD,CAAC,CAAC;IAElE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE3B,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface CreateFromExampleOptions {
|
|
2
|
+
skipInstall?: boolean;
|
|
3
|
+
useNpm?: boolean;
|
|
4
|
+
usePnpm?: boolean;
|
|
5
|
+
useYarn?: boolean;
|
|
6
|
+
useBun?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function createFromExample(projectDir: string, exampleName: string, opts: CreateFromExampleOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=create-from-example.d.ts.map
|