@assistant-ui/mcp-docs-server 0.1.34 → 0.1.36
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/.docs/organized/code-examples/waterfall.md +4 -4
- package/.docs/organized/code-examples/with-a2a.md +5 -5
- package/.docs/organized/code-examples/with-ag-ui.md +6 -6
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +7 -7
- package/.docs/organized/code-examples/with-artifacts.md +7 -7
- package/.docs/organized/code-examples/with-assistant-transport.md +73 -57
- package/.docs/organized/code-examples/with-browser-extension.md +7 -7
- package/.docs/organized/code-examples/with-chain-of-thought.md +44 -93
- package/.docs/organized/code-examples/with-cloud-standalone.md +7 -7
- package/.docs/organized/code-examples/with-cloud.md +7 -7
- package/.docs/organized/code-examples/with-custom-thread-list.md +7 -7
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +9 -9
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +9 -9
- package/.docs/organized/code-examples/with-eve.md +343 -0
- package/.docs/organized/code-examples/with-expo.md +943 -940
- package/.docs/organized/code-examples/with-external-store.md +5 -5
- package/.docs/organized/code-examples/with-ffmpeg.md +8 -11
- package/.docs/organized/code-examples/with-generative-ui.md +33 -309
- package/.docs/organized/code-examples/with-google-adk.md +5 -5
- package/.docs/organized/code-examples/with-heat-graph.md +4 -4
- package/.docs/organized/code-examples/with-image-generation.md +7 -7
- package/.docs/organized/code-examples/with-interactables.md +169 -341
- package/.docs/organized/code-examples/with-langchain.md +7 -7
- package/.docs/organized/code-examples/with-langgraph.md +23 -160
- package/.docs/organized/code-examples/with-livekit.md +10 -10
- package/.docs/organized/code-examples/with-mcp.md +7 -7
- package/.docs/organized/code-examples/with-opencode.md +106 -580
- package/.docs/organized/code-examples/with-pi.md +2046 -0
- package/.docs/organized/code-examples/with-react-hook-form.md +16 -9
- package/.docs/organized/code-examples/with-react-ink-web.md +691 -0
- package/.docs/organized/code-examples/with-react-ink.md +29 -17
- package/.docs/organized/code-examples/with-react-router.md +12 -12
- package/.docs/organized/code-examples/with-resumable-stream.md +8 -8
- package/.docs/organized/code-examples/with-store.md +14 -10
- package/.docs/organized/code-examples/with-tanstack.md +21 -7
- package/.docs/organized/code-examples/with-tap-runtime.md +5 -5
- package/.docs/organized/code-examples/with-virtualized-thread.md +676 -0
- package/.docs/raw/docs/(docs)/architecture.mdx +13 -12
- package/.docs/raw/docs/(docs)/cli.mdx +4 -2
- package/.docs/raw/docs/(docs)/devtools.mdx +25 -2
- package/.docs/raw/docs/(docs)/index.mdx +5 -2
- package/.docs/raw/docs/(docs)/installation.mdx +5 -2
- package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +16 -16
- package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +73 -42
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +3 -20
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +234 -123
- package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +51 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +4 -1
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +70 -38
- package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +1 -1
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +30 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +7 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +26 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +15 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +103 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +16 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +56 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +12 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +12 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +14 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +57 -1
- package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +6 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/interactables-legacy.mdx +55 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +151 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +17 -38
- package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +22 -0
- package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +20 -27
- package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +40 -25
- package/.docs/raw/docs/guides/chain-of-thought.mdx +1 -1
- package/.docs/raw/docs/guides/headless-composer-input.mdx +113 -0
- package/.docs/raw/docs/guides/index.mdx +3 -0
- package/.docs/raw/docs/guides/input-history.mdx +55 -0
- package/.docs/raw/docs/guides/latex.mdx +28 -22
- package/.docs/raw/docs/guides/mentions.mdx +32 -7
- package/.docs/raw/docs/guides/slash-commands.mdx +3 -6
- package/.docs/raw/docs/guides/speech.mdx +5 -7
- package/.docs/raw/docs/guides/virtualization.mdx +133 -0
- package/.docs/raw/docs/guides/voice.mdx +3 -2
- package/.docs/raw/docs/ink/hooks.mdx +2 -2
- package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +4 -12
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +7 -10
- package/.docs/raw/docs/integrations/auth/clerk.mdx +3 -9
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +3 -8
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +8 -5
- package/.docs/raw/docs/integrations/index.mdx +5 -12
- package/.docs/raw/docs/integrations/observability/helicone.mdx +3 -4
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +3 -5
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +3 -2
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +4 -3
- package/.docs/raw/docs/primitives/composer.mdx +8 -0
- package/.docs/raw/docs/primitives/thread.mdx +24 -0
- package/.docs/raw/docs/react-native/hooks.mdx +1 -1
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +22 -3
- package/.docs/raw/docs/runtimes/concepts/stability.mdx +1 -1
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +1 -1
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +54 -0
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +108 -4
- package/.docs/raw/docs/runtimes/eve/overview.mdx +100 -0
- package/.docs/raw/docs/runtimes/eve/quickstart.mdx +143 -0
- package/.docs/raw/docs/runtimes/langchain.mdx +386 -18
- package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +1 -1
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +1 -1
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +12 -6
- package/.docs/raw/docs/tools/defining-tools.mdx +4 -0
- package/.docs/raw/docs/tools/interactables-legacy.mdx +410 -0
- package/.docs/raw/docs/tools/interactables.mdx +892 -223
- package/.docs/raw/docs/tools/mcp.mdx +4 -4
- package/.docs/raw/docs/tools/multi-agent.mdx +5 -0
- package/.docs/raw/docs/tools/tool-ui.mdx +37 -1
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +2 -0
- package/.docs/raw/docs/ui/dot-matrix.mdx +133 -0
- package/.docs/raw/docs/ui/file.mdx +1 -1
- package/.docs/raw/docs/ui/model-selector.mdx +219 -52
- package/.docs/raw/docs/ui/number-roll.mdx +154 -0
- package/.docs/raw/docs/ui/part-grouping.mdx +38 -0
- package/.docs/raw/docs/ui/reasoning.mdx +3 -3
- package/.docs/raw/docs/ui/streamdown.mdx +2 -0
- package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -1
- package/.docs/raw/docs/ui/thread.mdx +52 -0
- package/.docs/raw/docs/ui/tool-fallback.mdx +2 -2
- package/.docs/raw/docs/utilities/react-o11y.mdx +92 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +14 -6
- package/src/tools/tests/mcp-protocol.test.ts +9 -0
|
@@ -320,8 +320,8 @@ export default withAui(nextConfig);
|
|
|
320
320
|
"@assistant-ui/ui": "workspace:*",
|
|
321
321
|
"class-variance-authority": "^0.7.1",
|
|
322
322
|
"clsx": "^2.1.1",
|
|
323
|
-
"lucide-react": "^1.
|
|
324
|
-
"next": "^16.2.
|
|
323
|
+
"lucide-react": "^1.21.0",
|
|
324
|
+
"next": "^16.2.9",
|
|
325
325
|
"react": "^19.2.7",
|
|
326
326
|
"react-dom": "^19.2.7",
|
|
327
327
|
"tailwind-merge": "^3.6.0"
|
|
@@ -329,12 +329,12 @@ export default withAui(nextConfig);
|
|
|
329
329
|
"devDependencies": {
|
|
330
330
|
"@assistant-ui/next": "workspace:*",
|
|
331
331
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
332
|
-
"@tailwindcss/postcss": "^4.3.
|
|
333
|
-
"@types/node": "^
|
|
332
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
333
|
+
"@types/node": "^26.0.0",
|
|
334
334
|
"@types/react": "^19.2.17",
|
|
335
335
|
"@types/react-dom": "^19.2.3",
|
|
336
336
|
"postcss": "^8.5.15",
|
|
337
|
-
"tailwindcss": "^4.3.
|
|
337
|
+
"tailwindcss": "^4.3.1",
|
|
338
338
|
"tw-animate-css": "^1.4.0",
|
|
339
339
|
"typescript": "^6.0.3"
|
|
340
340
|
}
|
|
@@ -188,14 +188,11 @@ export default function RootLayout({
|
|
|
188
188
|
```tsx
|
|
189
189
|
"use client";
|
|
190
190
|
|
|
191
|
-
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
191
|
+
import { AssistantRuntimeProvider, generateId } from "@assistant-ui/react";
|
|
192
192
|
import type { AttachmentAdapter } from "@assistant-ui/react";
|
|
193
193
|
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
194
|
-
import { INTERNAL } from "@assistant-ui/react";
|
|
195
194
|
import { lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
|
196
195
|
|
|
197
|
-
const { generateId } = INTERNAL;
|
|
198
|
-
|
|
199
196
|
const attachmentAdapter: AttachmentAdapter = {
|
|
200
197
|
accept: "image/*,video/*,audio/*",
|
|
201
198
|
async add({ file }) {
|
|
@@ -718,18 +715,18 @@ export default withAui(nextConfig);
|
|
|
718
715
|
"start": "next start"
|
|
719
716
|
},
|
|
720
717
|
"dependencies": {
|
|
721
|
-
"@ai-sdk/openai": "^3.0.
|
|
718
|
+
"@ai-sdk/openai": "^3.0.73",
|
|
722
719
|
"@assistant-ui/react": "workspace:*",
|
|
723
720
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
724
721
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
725
722
|
"@assistant-ui/ui": "workspace:*",
|
|
726
723
|
"@ffmpeg/ffmpeg": "^0.12.15",
|
|
727
724
|
"@ffmpeg/util": "^0.12.2",
|
|
728
|
-
"ai": "^6.0.
|
|
725
|
+
"ai": "^6.0.208",
|
|
729
726
|
"class-variance-authority": "^0.7.1",
|
|
730
727
|
"clsx": "^2.1.1",
|
|
731
|
-
"lucide-react": "^1.
|
|
732
|
-
"next": "^16.2.
|
|
728
|
+
"lucide-react": "^1.21.0",
|
|
729
|
+
"next": "^16.2.9",
|
|
733
730
|
"react": "^19.2.7",
|
|
734
731
|
"react-dom": "^19.2.7",
|
|
735
732
|
"tailwind-merge": "^3.6.0",
|
|
@@ -738,12 +735,12 @@ export default withAui(nextConfig);
|
|
|
738
735
|
"devDependencies": {
|
|
739
736
|
"@assistant-ui/next": "workspace:*",
|
|
740
737
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
741
|
-
"@tailwindcss/postcss": "^4.3.
|
|
742
|
-
"@types/node": "^
|
|
738
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
739
|
+
"@types/node": "^26.0.0",
|
|
743
740
|
"@types/react": "^19.2.17",
|
|
744
741
|
"@types/react-dom": "^19.2.3",
|
|
745
742
|
"postcss": "^8.5.15",
|
|
746
|
-
"tailwindcss": "^4.3.
|
|
743
|
+
"tailwindcss": "^4.3.1",
|
|
747
744
|
"tw-animate-css": "^1.4.0",
|
|
748
745
|
"typescript": "^6.0.3"
|
|
749
746
|
}
|
|
@@ -246,7 +246,11 @@ export async function POST(req: Request) {
|
|
|
246
246
|
"use client";
|
|
247
247
|
|
|
248
248
|
import { ExampleNav } from "@/components/example-nav";
|
|
249
|
-
import {
|
|
249
|
+
import { AssistantMessageGui } from "@/components/assistant-message-gui";
|
|
250
|
+
import {
|
|
251
|
+
Thread,
|
|
252
|
+
type ThreadComponents,
|
|
253
|
+
} from "@/components/assistant-ui/thread";
|
|
250
254
|
import {
|
|
251
255
|
AssistantRuntimeProvider,
|
|
252
256
|
Suggestions,
|
|
@@ -262,6 +266,24 @@ const GuiChatInstructions = () => {
|
|
|
262
266
|
return null;
|
|
263
267
|
};
|
|
264
268
|
|
|
269
|
+
const GuiWelcome = () => {
|
|
270
|
+
return (
|
|
271
|
+
<div className="aui-thread-welcome-root mb-6 flex flex-col items-center gap-1 px-4 text-center">
|
|
272
|
+
<h1 className="aui-thread-welcome-message-inner fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-2xl font-semibold duration-200">
|
|
273
|
+
Compose UI from a spec
|
|
274
|
+
</h1>
|
|
275
|
+
<p className="aui-thread-welcome-message-inner fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-muted-foreground text-xl delay-75 duration-200">
|
|
276
|
+
Ask the agent to call render_gui with Card, Button, and Stack.
|
|
277
|
+
</p>
|
|
278
|
+
</div>
|
|
279
|
+
);
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
const THREAD_COMPONENTS: ThreadComponents = {
|
|
283
|
+
AssistantMessage: AssistantMessageGui,
|
|
284
|
+
Welcome: GuiWelcome,
|
|
285
|
+
};
|
|
286
|
+
|
|
265
287
|
export default function GuiChatPage() {
|
|
266
288
|
const runtime = useChatRuntime({
|
|
267
289
|
sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,
|
|
@@ -290,7 +312,7 @@ export default function GuiChatPage() {
|
|
|
290
312
|
<div className="flex h-full flex-col">
|
|
291
313
|
<ExampleNav />
|
|
292
314
|
<main className="min-h-0 flex-1">
|
|
293
|
-
<
|
|
315
|
+
<Thread components={THREAD_COMPONENTS} />
|
|
294
316
|
</main>
|
|
295
317
|
</div>
|
|
296
318
|
</AssistantRuntimeProvider>
|
|
@@ -713,7 +735,7 @@ export const AssistantMessageGui: FC<AssistantMessageGuiProps> = ({
|
|
|
713
735
|
case "group-reasoning": {
|
|
714
736
|
const running = part.status.type === "running";
|
|
715
737
|
return (
|
|
716
|
-
<ReasoningRoot
|
|
738
|
+
<ReasoningRoot streaming={running}>
|
|
717
739
|
<ReasoningTrigger active={running} />
|
|
718
740
|
<ReasoningContent aria-busy={running}>
|
|
719
741
|
<ReasoningText>{children}</ReasoningText>
|
|
@@ -1143,304 +1165,6 @@ export function ExampleNav() {
|
|
|
1143
1165
|
|
|
1144
1166
|
```
|
|
1145
1167
|
|
|
1146
|
-
## components/gui-thread.tsx
|
|
1147
|
-
|
|
1148
|
-
```tsx
|
|
1149
|
-
import {
|
|
1150
|
-
ComposerAddAttachment,
|
|
1151
|
-
ComposerAttachments,
|
|
1152
|
-
UserMessageAttachments,
|
|
1153
|
-
} from "@/components/assistant-ui/attachment";
|
|
1154
|
-
import { TooltipIconButton } from "@/components/assistant-ui/tooltip-icon-button";
|
|
1155
|
-
import { Button } from "@/components/ui/button";
|
|
1156
|
-
import { cn } from "@/lib/utils";
|
|
1157
|
-
import {
|
|
1158
|
-
ActionBarPrimitive,
|
|
1159
|
-
AuiIf,
|
|
1160
|
-
BranchPickerPrimitive,
|
|
1161
|
-
ComposerPrimitive,
|
|
1162
|
-
MessagePrimitive,
|
|
1163
|
-
SuggestionPrimitive,
|
|
1164
|
-
ThreadPrimitive,
|
|
1165
|
-
useAuiState,
|
|
1166
|
-
} from "@assistant-ui/react";
|
|
1167
|
-
import {
|
|
1168
|
-
ArrowDownIcon,
|
|
1169
|
-
ArrowUpIcon,
|
|
1170
|
-
ChevronLeftIcon,
|
|
1171
|
-
ChevronRightIcon,
|
|
1172
|
-
PencilIcon,
|
|
1173
|
-
SquareIcon,
|
|
1174
|
-
} from "lucide-react";
|
|
1175
|
-
import type { FC } from "react";
|
|
1176
|
-
import { AssistantMessageGui } from "@/components/assistant-message-gui";
|
|
1177
|
-
|
|
1178
|
-
/** Thread fork: swaps the assistant message renderer for the generative-ui bridge. */
|
|
1179
|
-
export const GuiThread: FC = () => {
|
|
1180
|
-
return (
|
|
1181
|
-
<ThreadPrimitive.Root
|
|
1182
|
-
className="aui-root aui-thread-root bg-background @container flex h-full flex-col"
|
|
1183
|
-
style={{
|
|
1184
|
-
["--thread-max-width" as string]: "44rem",
|
|
1185
|
-
["--composer-radius" as string]: "24px",
|
|
1186
|
-
["--composer-padding" as string]: "10px",
|
|
1187
|
-
}}
|
|
1188
|
-
>
|
|
1189
|
-
<ThreadPrimitive.Viewport
|
|
1190
|
-
turnAnchor="top"
|
|
1191
|
-
data-slot="aui_thread-viewport"
|
|
1192
|
-
className="relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll scroll-smooth"
|
|
1193
|
-
>
|
|
1194
|
-
<div className="mx-auto flex w-full max-w-(--thread-max-width) flex-1 flex-col px-4 pt-4">
|
|
1195
|
-
<AuiIf condition={(s) => s.thread.isEmpty}>
|
|
1196
|
-
<ThreadWelcome />
|
|
1197
|
-
</AuiIf>
|
|
1198
|
-
|
|
1199
|
-
<div
|
|
1200
|
-
data-slot="aui_message-group"
|
|
1201
|
-
className="mb-10 flex flex-col gap-y-8 empty:hidden"
|
|
1202
|
-
>
|
|
1203
|
-
<ThreadPrimitive.Messages>
|
|
1204
|
-
{() => <ThreadMessage />}
|
|
1205
|
-
</ThreadPrimitive.Messages>
|
|
1206
|
-
</div>
|
|
1207
|
-
|
|
1208
|
-
<ThreadPrimitive.ViewportFooter className="aui-thread-viewport-footer bg-background sticky bottom-0 mt-auto flex flex-col gap-4 overflow-visible rounded-t-(--composer-radius) pb-4 md:pb-6">
|
|
1209
|
-
<ThreadScrollToBottom />
|
|
1210
|
-
<Composer />
|
|
1211
|
-
</ThreadPrimitive.ViewportFooter>
|
|
1212
|
-
</div>
|
|
1213
|
-
</ThreadPrimitive.Viewport>
|
|
1214
|
-
</ThreadPrimitive.Root>
|
|
1215
|
-
);
|
|
1216
|
-
};
|
|
1217
|
-
|
|
1218
|
-
const ThreadMessage: FC = () => {
|
|
1219
|
-
const role = useAuiState((s) => s.message.role);
|
|
1220
|
-
const isEditing = useAuiState((s) => s.message.composer.isEditing);
|
|
1221
|
-
|
|
1222
|
-
if (isEditing) return <EditComposer />;
|
|
1223
|
-
if (role === "user") return <UserMessage />;
|
|
1224
|
-
return <AssistantMessageGui />;
|
|
1225
|
-
};
|
|
1226
|
-
|
|
1227
|
-
const ThreadScrollToBottom: FC = () => {
|
|
1228
|
-
return (
|
|
1229
|
-
<ThreadPrimitive.ScrollToBottom asChild>
|
|
1230
|
-
<TooltipIconButton
|
|
1231
|
-
tooltip="Scroll to bottom"
|
|
1232
|
-
variant="outline"
|
|
1233
|
-
className="aui-thread-scroll-to-bottom dark:border-border dark:bg-background dark:hover:bg-accent absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible"
|
|
1234
|
-
>
|
|
1235
|
-
<ArrowDownIcon />
|
|
1236
|
-
</TooltipIconButton>
|
|
1237
|
-
</ThreadPrimitive.ScrollToBottom>
|
|
1238
|
-
);
|
|
1239
|
-
};
|
|
1240
|
-
|
|
1241
|
-
const ThreadWelcome: FC = () => {
|
|
1242
|
-
return (
|
|
1243
|
-
<div className="aui-thread-welcome-root my-auto flex grow flex-col">
|
|
1244
|
-
<div className="aui-thread-welcome-center flex w-full grow flex-col items-center justify-center">
|
|
1245
|
-
<div className="aui-thread-welcome-message flex size-full flex-col justify-center px-4">
|
|
1246
|
-
<h1 className="aui-thread-welcome-message-inner fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-2xl font-semibold duration-200">
|
|
1247
|
-
Compose UI from a spec
|
|
1248
|
-
</h1>
|
|
1249
|
-
<p className="aui-thread-welcome-message-inner fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-muted-foreground text-xl delay-75 duration-200">
|
|
1250
|
-
Ask the agent to call render_gui with Card, Button, and Stack.
|
|
1251
|
-
</p>
|
|
1252
|
-
</div>
|
|
1253
|
-
</div>
|
|
1254
|
-
<ThreadSuggestions />
|
|
1255
|
-
</div>
|
|
1256
|
-
);
|
|
1257
|
-
};
|
|
1258
|
-
|
|
1259
|
-
const ThreadSuggestions: FC = () => {
|
|
1260
|
-
return (
|
|
1261
|
-
<div className="aui-thread-welcome-suggestions grid w-full gap-2 pb-4 @md:grid-cols-2">
|
|
1262
|
-
<ThreadPrimitive.Suggestions>
|
|
1263
|
-
{() => <ThreadSuggestionItem />}
|
|
1264
|
-
</ThreadPrimitive.Suggestions>
|
|
1265
|
-
</div>
|
|
1266
|
-
);
|
|
1267
|
-
};
|
|
1268
|
-
|
|
1269
|
-
const ThreadSuggestionItem: FC = () => {
|
|
1270
|
-
return (
|
|
1271
|
-
<div className="aui-thread-welcome-suggestion-display fade-in slide-in-from-bottom-2 animate-in fill-mode-both duration-200 nth-[n+3]:hidden @md:nth-[n+3]:block">
|
|
1272
|
-
<SuggestionPrimitive.Trigger send asChild>
|
|
1273
|
-
<Button
|
|
1274
|
-
variant="ghost"
|
|
1275
|
-
className="aui-thread-welcome-suggestion bg-background hover:bg-muted h-auto w-full flex-wrap items-start justify-start gap-1 rounded-3xl border px-4 py-3 text-start text-sm transition-colors @md:flex-col"
|
|
1276
|
-
>
|
|
1277
|
-
<SuggestionPrimitive.Title className="aui-thread-welcome-suggestion-text-1 font-medium" />
|
|
1278
|
-
<SuggestionPrimitive.Description className="aui-thread-welcome-suggestion-text-2 text-muted-foreground empty:hidden" />
|
|
1279
|
-
</Button>
|
|
1280
|
-
</SuggestionPrimitive.Trigger>
|
|
1281
|
-
</div>
|
|
1282
|
-
);
|
|
1283
|
-
};
|
|
1284
|
-
|
|
1285
|
-
const Composer: FC = () => {
|
|
1286
|
-
return (
|
|
1287
|
-
<ComposerPrimitive.Root className="aui-composer-root relative flex w-full flex-col">
|
|
1288
|
-
<ComposerPrimitive.AttachmentDropzone asChild>
|
|
1289
|
-
<div
|
|
1290
|
-
data-slot="aui_composer-shell"
|
|
1291
|
-
className="bg-background focus-within:border-ring/75 focus-within:ring-ring/20 data-[dragging=true]:border-ring data-[dragging=true]:bg-accent/50 flex w-full flex-col gap-2 rounded-(--composer-radius) border p-(--composer-padding) transition-shadow focus-within:ring-2 data-[dragging=true]:border-dashed"
|
|
1292
|
-
>
|
|
1293
|
-
<ComposerAttachments />
|
|
1294
|
-
<ComposerPrimitive.Input
|
|
1295
|
-
placeholder="Send a message..."
|
|
1296
|
-
className="aui-composer-input placeholder:text-muted-foreground/80 max-h-32 min-h-10 w-full resize-none bg-transparent px-1.75 py-1 text-sm outline-none"
|
|
1297
|
-
rows={1}
|
|
1298
|
-
autoFocus
|
|
1299
|
-
aria-label="Message input"
|
|
1300
|
-
/>
|
|
1301
|
-
<ComposerAction />
|
|
1302
|
-
</div>
|
|
1303
|
-
</ComposerPrimitive.AttachmentDropzone>
|
|
1304
|
-
</ComposerPrimitive.Root>
|
|
1305
|
-
);
|
|
1306
|
-
};
|
|
1307
|
-
|
|
1308
|
-
const ComposerAction: FC = () => {
|
|
1309
|
-
return (
|
|
1310
|
-
<div className="aui-composer-action-wrapper relative flex items-center justify-between">
|
|
1311
|
-
<ComposerAddAttachment />
|
|
1312
|
-
<AuiIf condition={(s) => !s.thread.isRunning}>
|
|
1313
|
-
<ComposerPrimitive.Send asChild>
|
|
1314
|
-
<TooltipIconButton
|
|
1315
|
-
tooltip="Send message"
|
|
1316
|
-
side="bottom"
|
|
1317
|
-
type="button"
|
|
1318
|
-
variant="default"
|
|
1319
|
-
size="icon"
|
|
1320
|
-
className="aui-composer-send size-8 rounded-full"
|
|
1321
|
-
aria-label="Send message"
|
|
1322
|
-
>
|
|
1323
|
-
<ArrowUpIcon className="aui-composer-send-icon size-4" />
|
|
1324
|
-
</TooltipIconButton>
|
|
1325
|
-
</ComposerPrimitive.Send>
|
|
1326
|
-
</AuiIf>
|
|
1327
|
-
<AuiIf condition={(s) => s.thread.isRunning}>
|
|
1328
|
-
<ComposerPrimitive.Cancel asChild>
|
|
1329
|
-
<Button
|
|
1330
|
-
type="button"
|
|
1331
|
-
variant="default"
|
|
1332
|
-
size="icon"
|
|
1333
|
-
className="aui-composer-cancel size-8 rounded-full"
|
|
1334
|
-
aria-label="Stop generating"
|
|
1335
|
-
>
|
|
1336
|
-
<SquareIcon className="aui-composer-cancel-icon size-3 fill-current" />
|
|
1337
|
-
</Button>
|
|
1338
|
-
</ComposerPrimitive.Cancel>
|
|
1339
|
-
</AuiIf>
|
|
1340
|
-
</div>
|
|
1341
|
-
);
|
|
1342
|
-
};
|
|
1343
|
-
|
|
1344
|
-
const UserMessage: FC = () => {
|
|
1345
|
-
return (
|
|
1346
|
-
<MessagePrimitive.Root
|
|
1347
|
-
data-slot="aui_user-message-root"
|
|
1348
|
-
className="fade-in slide-in-from-bottom-1 animate-in grid auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] content-start gap-y-2 px-2 duration-150 [contain-intrinsic-size:auto_60px] [content-visibility:auto] [&:where(>*)]:col-start-2"
|
|
1349
|
-
data-role="user"
|
|
1350
|
-
>
|
|
1351
|
-
<UserMessageAttachments />
|
|
1352
|
-
|
|
1353
|
-
<div className="aui-user-message-content-wrapper relative col-start-2 min-w-0">
|
|
1354
|
-
<div className="aui-user-message-content peer bg-muted text-foreground rounded-2xl px-4 py-2.5 wrap-break-word empty:hidden">
|
|
1355
|
-
<MessagePrimitive.Parts />
|
|
1356
|
-
</div>
|
|
1357
|
-
<div className="aui-user-action-bar-wrapper absolute start-0 top-1/2 -translate-x-full -translate-y-1/2 pe-2 peer-empty:hidden rtl:translate-x-full">
|
|
1358
|
-
<UserActionBar />
|
|
1359
|
-
</div>
|
|
1360
|
-
</div>
|
|
1361
|
-
|
|
1362
|
-
<BranchPicker
|
|
1363
|
-
data-slot="aui_user-branch-picker"
|
|
1364
|
-
className="col-span-full col-start-1 row-start-3 -me-1 justify-end"
|
|
1365
|
-
/>
|
|
1366
|
-
</MessagePrimitive.Root>
|
|
1367
|
-
);
|
|
1368
|
-
};
|
|
1369
|
-
|
|
1370
|
-
const UserActionBar: FC = () => {
|
|
1371
|
-
return (
|
|
1372
|
-
<ActionBarPrimitive.Root
|
|
1373
|
-
hideWhenRunning
|
|
1374
|
-
autohide="not-last"
|
|
1375
|
-
className="aui-user-action-bar-root flex flex-col items-end"
|
|
1376
|
-
>
|
|
1377
|
-
<ActionBarPrimitive.Edit asChild>
|
|
1378
|
-
<TooltipIconButton tooltip="Edit" className="aui-user-action-edit p-4">
|
|
1379
|
-
<PencilIcon />
|
|
1380
|
-
</TooltipIconButton>
|
|
1381
|
-
</ActionBarPrimitive.Edit>
|
|
1382
|
-
</ActionBarPrimitive.Root>
|
|
1383
|
-
);
|
|
1384
|
-
};
|
|
1385
|
-
|
|
1386
|
-
const EditComposer: FC = () => {
|
|
1387
|
-
return (
|
|
1388
|
-
<MessagePrimitive.Root
|
|
1389
|
-
data-slot="aui_edit-composer-wrapper"
|
|
1390
|
-
className="flex flex-col px-2"
|
|
1391
|
-
>
|
|
1392
|
-
<ComposerPrimitive.Root className="aui-edit-composer-root bg-muted ms-auto flex w-full max-w-[85%] flex-col rounded-2xl">
|
|
1393
|
-
<ComposerPrimitive.Input
|
|
1394
|
-
className="aui-edit-composer-input text-foreground min-h-14 w-full resize-none bg-transparent p-4 text-sm outline-none"
|
|
1395
|
-
autoFocus
|
|
1396
|
-
/>
|
|
1397
|
-
<div className="aui-edit-composer-footer mx-3 mb-3 flex items-center gap-2 self-end">
|
|
1398
|
-
<ComposerPrimitive.Cancel asChild>
|
|
1399
|
-
<Button variant="ghost" size="sm">
|
|
1400
|
-
Cancel
|
|
1401
|
-
</Button>
|
|
1402
|
-
</ComposerPrimitive.Cancel>
|
|
1403
|
-
<ComposerPrimitive.Send asChild>
|
|
1404
|
-
<Button size="sm">Update</Button>
|
|
1405
|
-
</ComposerPrimitive.Send>
|
|
1406
|
-
</div>
|
|
1407
|
-
</ComposerPrimitive.Root>
|
|
1408
|
-
</MessagePrimitive.Root>
|
|
1409
|
-
);
|
|
1410
|
-
};
|
|
1411
|
-
|
|
1412
|
-
const BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({
|
|
1413
|
-
className,
|
|
1414
|
-
...rest
|
|
1415
|
-
}) => {
|
|
1416
|
-
return (
|
|
1417
|
-
<BranchPickerPrimitive.Root
|
|
1418
|
-
hideWhenSingleBranch
|
|
1419
|
-
className={cn(
|
|
1420
|
-
"aui-branch-picker-root text-muted-foreground -ms-2 me-2 inline-flex items-center text-xs",
|
|
1421
|
-
className,
|
|
1422
|
-
)}
|
|
1423
|
-
{...rest}
|
|
1424
|
-
>
|
|
1425
|
-
<BranchPickerPrimitive.Previous asChild>
|
|
1426
|
-
<TooltipIconButton tooltip="Previous">
|
|
1427
|
-
<ChevronLeftIcon />
|
|
1428
|
-
</TooltipIconButton>
|
|
1429
|
-
</BranchPickerPrimitive.Previous>
|
|
1430
|
-
<span className="aui-branch-picker-state font-medium">
|
|
1431
|
-
<BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />
|
|
1432
|
-
</span>
|
|
1433
|
-
<BranchPickerPrimitive.Next asChild>
|
|
1434
|
-
<TooltipIconButton tooltip="Next">
|
|
1435
|
-
<ChevronRightIcon />
|
|
1436
|
-
</TooltipIconButton>
|
|
1437
|
-
</BranchPickerPrimitive.Next>
|
|
1438
|
-
</BranchPickerPrimitive.Root>
|
|
1439
|
-
);
|
|
1440
|
-
};
|
|
1441
|
-
|
|
1442
|
-
```
|
|
1443
|
-
|
|
1444
1168
|
## components/gui/index.tsx
|
|
1445
1169
|
|
|
1446
1170
|
```tsx
|
|
@@ -1778,15 +1502,15 @@ export default withAui(nextConfig);
|
|
|
1778
1502
|
"test": "vitest run"
|
|
1779
1503
|
},
|
|
1780
1504
|
"dependencies": {
|
|
1781
|
-
"@ai-sdk/openai": "^3.0.
|
|
1505
|
+
"@ai-sdk/openai": "^3.0.73",
|
|
1782
1506
|
"@assistant-ui/react": "workspace:*",
|
|
1783
1507
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
1784
1508
|
"@assistant-ui/ui": "workspace:*",
|
|
1785
|
-
"ai": "^6.0.
|
|
1509
|
+
"ai": "^6.0.208",
|
|
1786
1510
|
"class-variance-authority": "^0.7.1",
|
|
1787
1511
|
"clsx": "^2.1.1",
|
|
1788
|
-
"lucide-react": "^1.
|
|
1789
|
-
"next": "^16.2.
|
|
1512
|
+
"lucide-react": "^1.21.0",
|
|
1513
|
+
"next": "^16.2.9",
|
|
1790
1514
|
"react": "^19.2.7",
|
|
1791
1515
|
"react-dom": "^19.2.7",
|
|
1792
1516
|
"recharts": "^3.8.1",
|
|
@@ -1796,15 +1520,15 @@ export default withAui(nextConfig);
|
|
|
1796
1520
|
"devDependencies": {
|
|
1797
1521
|
"@assistant-ui/next": "workspace:*",
|
|
1798
1522
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
1799
|
-
"@tailwindcss/postcss": "^4.3.
|
|
1800
|
-
"@types/node": "^
|
|
1523
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
1524
|
+
"@types/node": "^26.0.0",
|
|
1801
1525
|
"@types/react": "^19.2.17",
|
|
1802
1526
|
"@types/react-dom": "^19.2.3",
|
|
1803
1527
|
"postcss": "^8.5.15",
|
|
1804
|
-
"tailwindcss": "^4.3.
|
|
1528
|
+
"tailwindcss": "^4.3.1",
|
|
1805
1529
|
"tw-animate-css": "^1.4.0",
|
|
1806
1530
|
"typescript": "^6.0.3",
|
|
1807
|
-
"vitest": "^4.1.
|
|
1531
|
+
"vitest": "^4.1.9"
|
|
1808
1532
|
}
|
|
1809
1533
|
}
|
|
1810
1534
|
|
|
@@ -308,8 +308,8 @@ export default withAui(nextConfig);
|
|
|
308
308
|
"@google/adk": "^1.2.0",
|
|
309
309
|
"class-variance-authority": "^0.7.1",
|
|
310
310
|
"clsx": "^2.1.1",
|
|
311
|
-
"lucide-react": "^1.
|
|
312
|
-
"next": "^16.2.
|
|
311
|
+
"lucide-react": "^1.21.0",
|
|
312
|
+
"next": "^16.2.9",
|
|
313
313
|
"react": "^19.2.7",
|
|
314
314
|
"react-dom": "^19.2.7",
|
|
315
315
|
"tailwind-merge": "^3.6.0",
|
|
@@ -318,12 +318,12 @@ export default withAui(nextConfig);
|
|
|
318
318
|
"devDependencies": {
|
|
319
319
|
"@assistant-ui/next": "workspace:*",
|
|
320
320
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
321
|
-
"@tailwindcss/postcss": "^4.3.
|
|
322
|
-
"@types/node": "^
|
|
321
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
322
|
+
"@types/node": "^26.0.0",
|
|
323
323
|
"@types/react": "^19.2.17",
|
|
324
324
|
"@types/react-dom": "^19.2.3",
|
|
325
325
|
"postcss": "^8.5.15",
|
|
326
|
-
"tailwindcss": "^4.3.
|
|
326
|
+
"tailwindcss": "^4.3.1",
|
|
327
327
|
"tw-animate-css": "^1.4.0",
|
|
328
328
|
"typescript": "^6.0.3"
|
|
329
329
|
}
|
|
@@ -271,19 +271,19 @@ export default withAui(nextConfig);
|
|
|
271
271
|
},
|
|
272
272
|
"dependencies": {
|
|
273
273
|
"heat-graph": "workspace:*",
|
|
274
|
-
"next": "^16.2.
|
|
274
|
+
"next": "^16.2.9",
|
|
275
275
|
"react": "^19.2.7",
|
|
276
276
|
"react-dom": "^19.2.7"
|
|
277
277
|
},
|
|
278
278
|
"devDependencies": {
|
|
279
279
|
"@assistant-ui/next": "workspace:*",
|
|
280
280
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
281
|
-
"@tailwindcss/postcss": "^4.3.
|
|
282
|
-
"@types/node": "^
|
|
281
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
282
|
+
"@types/node": "^26.0.0",
|
|
283
283
|
"@types/react": "^19.2.17",
|
|
284
284
|
"@types/react-dom": "^19.2.3",
|
|
285
285
|
"postcss": "^8.5.15",
|
|
286
|
-
"tailwindcss": "^4.3.
|
|
286
|
+
"tailwindcss": "^4.3.1",
|
|
287
287
|
"typescript": "^6.0.3"
|
|
288
288
|
}
|
|
289
289
|
}
|
|
@@ -380,14 +380,14 @@ export default withAui(nextConfig);
|
|
|
380
380
|
"start": "next start"
|
|
381
381
|
},
|
|
382
382
|
"dependencies": {
|
|
383
|
-
"@ai-sdk/openai": "^3.0.
|
|
383
|
+
"@ai-sdk/openai": "^3.0.73",
|
|
384
384
|
"@assistant-ui/react": "workspace:*",
|
|
385
385
|
"@assistant-ui/ui": "workspace:*",
|
|
386
|
-
"ai": "^6.0.
|
|
386
|
+
"ai": "^6.0.208",
|
|
387
387
|
"class-variance-authority": "^0.7.1",
|
|
388
388
|
"clsx": "^2.1.1",
|
|
389
|
-
"lucide-react": "^1.
|
|
390
|
-
"next": "^16.2.
|
|
389
|
+
"lucide-react": "^1.21.0",
|
|
390
|
+
"next": "^16.2.9",
|
|
391
391
|
"react": "^19.2.7",
|
|
392
392
|
"react-dom": "^19.2.7",
|
|
393
393
|
"tailwind-merge": "^3.6.0"
|
|
@@ -395,12 +395,12 @@ export default withAui(nextConfig);
|
|
|
395
395
|
"devDependencies": {
|
|
396
396
|
"@assistant-ui/next": "workspace:*",
|
|
397
397
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
398
|
-
"@tailwindcss/postcss": "^4.3.
|
|
399
|
-
"@types/node": "^
|
|
398
|
+
"@tailwindcss/postcss": "^4.3.1",
|
|
399
|
+
"@types/node": "^26.0.0",
|
|
400
400
|
"@types/react": "^19.2.17",
|
|
401
401
|
"@types/react-dom": "^19.2.3",
|
|
402
402
|
"postcss": "^8.5.15",
|
|
403
|
-
"tailwindcss": "^4.3.
|
|
403
|
+
"tailwindcss": "^4.3.1",
|
|
404
404
|
"tw-animate-css": "^1.4.0",
|
|
405
405
|
"typescript": "^6.0.3"
|
|
406
406
|
}
|