@assistant-ui/mcp-docs-server 0.1.28 → 0.1.30
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 +18 -10
- package/.docs/organized/code-examples/with-a2a.md +12 -24
- package/.docs/organized/code-examples/with-ag-ui.md +14 -11
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +12 -12
- package/.docs/organized/code-examples/with-artifacts.md +14 -12
- package/.docs/organized/code-examples/with-assistant-transport.md +13 -14
- package/.docs/organized/code-examples/with-chain-of-thought.md +11 -11
- package/.docs/organized/code-examples/with-cloud-standalone.md +17 -14
- package/.docs/organized/code-examples/with-cloud.md +12 -13
- package/.docs/organized/code-examples/with-custom-thread-list.md +12 -12
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +19 -14
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +15 -15
- package/.docs/organized/code-examples/with-expo.md +27 -23
- package/.docs/organized/code-examples/with-external-store.md +11 -11
- package/.docs/organized/code-examples/with-ffmpeg.md +19 -14
- package/.docs/organized/code-examples/with-generative-ui.md +11 -11
- package/.docs/organized/code-examples/with-google-adk.md +10 -10
- package/.docs/organized/code-examples/with-heat-graph.md +8 -8
- package/.docs/organized/code-examples/with-interactables.md +12 -27
- package/.docs/organized/code-examples/with-langchain.md +437 -0
- package/.docs/organized/code-examples/with-langgraph.md +20 -20
- package/.docs/organized/code-examples/with-livekit.md +59 -18
- package/.docs/organized/code-examples/with-opencode.md +2392 -0
- package/.docs/organized/code-examples/with-parent-id-grouping.md +12 -12
- package/.docs/organized/code-examples/with-react-hook-form.md +223 -151
- package/.docs/organized/code-examples/with-react-ink.md +3 -3
- package/.docs/organized/code-examples/with-react-router.md +15 -15
- package/.docs/organized/code-examples/with-store.md +11 -8
- package/.docs/organized/code-examples/with-tanstack.md +14 -14
- package/.docs/organized/code-examples/with-tap-runtime.md +13 -9
- package/.docs/raw/docs/(docs)/guides/mentions.mdx +248 -109
- package/.docs/raw/docs/(docs)/guides/slash-commands.mdx +112 -92
- package/.docs/raw/docs/(docs)/guides/voice.mdx +10 -3
- package/.docs/raw/docs/(docs)/rtl.mdx +79 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +149 -40
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +2 -0
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +4 -0
- package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +1 -1
- package/.docs/raw/docs/primitives/composer.mdx +94 -62
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +57 -0
- package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +49 -3
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +39 -1
- package/.docs/raw/docs/runtimes/custom/local.mdx +65 -18
- package/.docs/raw/docs/runtimes/google-adk/index.mdx +62 -0
- package/.docs/raw/docs/runtimes/langchain/comparison.mdx +60 -0
- package/.docs/raw/docs/runtimes/langchain/index.mdx +210 -0
- package/.docs/raw/docs/runtimes/langgraph/index.mdx +288 -60
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +12 -4
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +199 -0
- package/.docs/raw/docs/ui/directive-text.mdx +113 -0
- package/.docs/raw/docs/ui/reasoning.mdx +13 -9
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +4 -4
- package/src/utils/logger.ts +1 -1
- package/.docs/raw/docs/ui/mention.mdx +0 -168
|
@@ -417,6 +417,7 @@ export function WaterfallRow() {
|
|
|
417
417
|
<AuiIf condition={(s) => s.span.hasChildren}>
|
|
418
418
|
<SpanPrimitive.CollapseToggle className="flex shrink-0 items-center justify-center rounded p-0.5 text-muted-foreground hover:text-foreground">
|
|
419
419
|
<svg
|
|
420
|
+
aria-hidden="true"
|
|
420
421
|
className="size-3.5 transition-transform data-[collapsed=true]:[-rotate-90]"
|
|
421
422
|
viewBox="0 0 16 16"
|
|
422
423
|
fill="currentColor"
|
|
@@ -438,7 +439,7 @@ export function WaterfallRow() {
|
|
|
438
439
|
className="group-hover:bg-accent/30"
|
|
439
440
|
style={{ width: barWidth, height: barHeight }}
|
|
440
441
|
>
|
|
441
|
-
<svg width={barWidth} height={barHeight}>
|
|
442
|
+
<svg aria-hidden="true" width={barWidth} height={barHeight}>
|
|
442
443
|
<WaterfallBar />
|
|
443
444
|
</svg>
|
|
444
445
|
</div>
|
|
@@ -515,7 +516,12 @@ function TimeAxisTicks({
|
|
|
515
516
|
});
|
|
516
517
|
|
|
517
518
|
return (
|
|
518
|
-
<svg
|
|
519
|
+
<svg
|
|
520
|
+
aria-hidden="true"
|
|
521
|
+
width={barWidth}
|
|
522
|
+
height={28}
|
|
523
|
+
className="overflow-visible"
|
|
524
|
+
>
|
|
519
525
|
{ticks.map(({ t, x }) => (
|
|
520
526
|
<g key={x}>
|
|
521
527
|
<line
|
|
@@ -678,6 +684,8 @@ export function WaterfallTimeline() {
|
|
|
678
684
|
|
|
679
685
|
{/* Span rows */}
|
|
680
686
|
<WaterfallLayoutContext.Provider value={layoutValue}>
|
|
687
|
+
{/* biome-ignore lint/a11y/useKeyWithClickEvents: event delegation on span rows */}
|
|
688
|
+
{/* biome-ignore lint/a11y/noStaticElementInteractions: event delegation on span rows */}
|
|
681
689
|
<div
|
|
682
690
|
style={{ width: contentWidth }}
|
|
683
691
|
onClick={(e) => {
|
|
@@ -769,19 +777,19 @@ export default nextConfig;
|
|
|
769
777
|
"@assistant-ui/react-o11y": "workspace:*",
|
|
770
778
|
"@assistant-ui/store": "workspace:*",
|
|
771
779
|
"@assistant-ui/tap": "workspace:*",
|
|
772
|
-
"next": "^16.2.
|
|
773
|
-
"react": "^19.2.
|
|
774
|
-
"react-dom": "^19.2.
|
|
780
|
+
"next": "^16.2.4",
|
|
781
|
+
"react": "^19.2.5",
|
|
782
|
+
"react-dom": "^19.2.5"
|
|
775
783
|
},
|
|
776
784
|
"devDependencies": {
|
|
777
785
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
778
|
-
"@tailwindcss/postcss": "^4.2.
|
|
779
|
-
"@types/node": "^25.
|
|
786
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
787
|
+
"@types/node": "^25.6.0",
|
|
780
788
|
"@types/react": "^19.2.14",
|
|
781
789
|
"@types/react-dom": "^19.2.3",
|
|
782
|
-
"postcss": "^8.5.
|
|
783
|
-
"tailwindcss": "^4.2.
|
|
784
|
-
"typescript": "
|
|
790
|
+
"postcss": "^8.5.10",
|
|
791
|
+
"tailwindcss": "^4.2.4",
|
|
792
|
+
"typescript": "^6.0.3"
|
|
785
793
|
}
|
|
786
794
|
}
|
|
787
795
|
|
|
@@ -170,7 +170,7 @@ export function MyRuntimeProvider({
|
|
|
170
170
|
children,
|
|
171
171
|
}: Readonly<{ children: ReactNode }>) {
|
|
172
172
|
const serverUrl =
|
|
173
|
-
(process.env
|
|
173
|
+
(process.env.NEXT_PUBLIC_A2A_SERVER_URL as string | undefined) ??
|
|
174
174
|
"http://localhost:9999";
|
|
175
175
|
|
|
176
176
|
const runtime = useA2ARuntime({
|
|
@@ -201,8 +201,6 @@ import {
|
|
|
201
201
|
} from "@assistant-ui/react-a2a";
|
|
202
202
|
import { Thread } from "@/components/assistant-ui/thread";
|
|
203
203
|
|
|
204
|
-
// === State Badge ===
|
|
205
|
-
|
|
206
204
|
const STATE_CONFIG: Record<
|
|
207
205
|
string,
|
|
208
206
|
{ label: string; color: string; bg: string }
|
|
@@ -274,8 +272,6 @@ function StateBadge({ state }: { state: A2ATaskState }) {
|
|
|
274
272
|
);
|
|
275
273
|
}
|
|
276
274
|
|
|
277
|
-
// === Task Status Bar ===
|
|
278
|
-
|
|
279
275
|
function TaskStatusBar() {
|
|
280
276
|
const task = useA2ATask();
|
|
281
277
|
|
|
@@ -296,8 +292,6 @@ function TaskStatusBar() {
|
|
|
296
292
|
);
|
|
297
293
|
}
|
|
298
294
|
|
|
299
|
-
// === Artifact Part Renderer ===
|
|
300
|
-
|
|
301
295
|
function ArtifactPartView({ part }: { part: A2APart }) {
|
|
302
296
|
if (part.text !== undefined) {
|
|
303
297
|
return (
|
|
@@ -322,6 +316,7 @@ function ArtifactPartView({ part }: { part: A2APart }) {
|
|
|
322
316
|
const isImage = part.mediaType?.startsWith("image/");
|
|
323
317
|
if (isImage) {
|
|
324
318
|
return (
|
|
319
|
+
// biome-ignore lint/performance/noImgElement: example component
|
|
325
320
|
<img
|
|
326
321
|
src={part.url}
|
|
327
322
|
alt={part.filename ?? "image"}
|
|
@@ -350,6 +345,7 @@ function ArtifactPartView({ part }: { part: A2APart }) {
|
|
|
350
345
|
const isImage = part.mediaType?.startsWith("image/");
|
|
351
346
|
if (isImage) {
|
|
352
347
|
return (
|
|
348
|
+
// biome-ignore lint/performance/noImgElement: example component
|
|
353
349
|
<img
|
|
354
350
|
src={`data:${part.mediaType};base64,${part.raw}`}
|
|
355
351
|
alt={part.filename ?? "image"}
|
|
@@ -377,8 +373,6 @@ function ArtifactPartView({ part }: { part: A2APart }) {
|
|
|
377
373
|
return null;
|
|
378
374
|
}
|
|
379
375
|
|
|
380
|
-
// === Artifact Panel ===
|
|
381
|
-
|
|
382
376
|
function ArtifactPanel() {
|
|
383
377
|
const artifacts = useA2AArtifacts();
|
|
384
378
|
|
|
@@ -417,8 +411,6 @@ function ArtifactPanel() {
|
|
|
417
411
|
);
|
|
418
412
|
}
|
|
419
413
|
|
|
420
|
-
// === Agent Card Banner ===
|
|
421
|
-
|
|
422
414
|
function AgentCardBanner() {
|
|
423
415
|
const card = useA2AAgentCard();
|
|
424
416
|
|
|
@@ -449,8 +441,6 @@ function AgentCardBanner() {
|
|
|
449
441
|
);
|
|
450
442
|
}
|
|
451
443
|
|
|
452
|
-
// === Thread with Suggestions ===
|
|
453
|
-
|
|
454
444
|
function ThreadWithSuggestions() {
|
|
455
445
|
const aui = useAui({
|
|
456
446
|
suggestions: Suggestions([
|
|
@@ -488,8 +478,6 @@ function ThreadWithSuggestions() {
|
|
|
488
478
|
);
|
|
489
479
|
}
|
|
490
480
|
|
|
491
|
-
// === Main ===
|
|
492
|
-
|
|
493
481
|
export default function Home() {
|
|
494
482
|
return (
|
|
495
483
|
<main className="flex h-dvh flex-col">
|
|
@@ -568,22 +556,22 @@ export default nextConfig;
|
|
|
568
556
|
"@assistant-ui/ui": "workspace:*",
|
|
569
557
|
"class-variance-authority": "^0.7.1",
|
|
570
558
|
"clsx": "^2.1.1",
|
|
571
|
-
"lucide-react": "^1.
|
|
572
|
-
"next": "^16.2.
|
|
573
|
-
"react": "^19.2.
|
|
574
|
-
"react-dom": "^19.2.
|
|
559
|
+
"lucide-react": "^1.8.0",
|
|
560
|
+
"next": "^16.2.4",
|
|
561
|
+
"react": "^19.2.5",
|
|
562
|
+
"react-dom": "^19.2.5",
|
|
575
563
|
"tailwind-merge": "^3.5.0"
|
|
576
564
|
},
|
|
577
565
|
"devDependencies": {
|
|
578
566
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
579
|
-
"@tailwindcss/postcss": "^4.2.
|
|
580
|
-
"@types/node": "^25.
|
|
567
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
568
|
+
"@types/node": "^25.6.0",
|
|
581
569
|
"@types/react": "^19.2.14",
|
|
582
570
|
"@types/react-dom": "^19.2.3",
|
|
583
|
-
"postcss": "^8.5.
|
|
584
|
-
"tailwindcss": "^4.2.
|
|
571
|
+
"postcss": "^8.5.10",
|
|
572
|
+
"tailwindcss": "^4.2.4",
|
|
585
573
|
"tw-animate-css": "^1.4.0",
|
|
586
|
-
"typescript": "
|
|
574
|
+
"typescript": "^6.0.3"
|
|
587
575
|
}
|
|
588
576
|
}
|
|
589
577
|
|
|
@@ -141,6 +141,8 @@ export const metadata: Metadata = {
|
|
|
141
141
|
description: "Generated by create next app",
|
|
142
142
|
};
|
|
143
143
|
|
|
144
|
+
export const dynamic = "force-dynamic";
|
|
145
|
+
|
|
144
146
|
export default function RootLayout({
|
|
145
147
|
children,
|
|
146
148
|
}: Readonly<{
|
|
@@ -182,7 +184,7 @@ export function MyRuntimeProvider({
|
|
|
182
184
|
children,
|
|
183
185
|
}: Readonly<{ children: ReactNode }>) {
|
|
184
186
|
const agentUrl =
|
|
185
|
-
(process.env
|
|
187
|
+
(process.env.NEXT_PUBLIC_AGUI_AGENT_URL as string | undefined) ??
|
|
186
188
|
"http://localhost:8000/agent";
|
|
187
189
|
|
|
188
190
|
// Simple in-memory thread storage
|
|
@@ -313,6 +315,7 @@ function NewThreadButton() {
|
|
|
313
315
|
|
|
314
316
|
return (
|
|
315
317
|
<button
|
|
318
|
+
type="button"
|
|
316
319
|
onClick={() => aui.threads().switchToNewThread()}
|
|
317
320
|
className="absolute top-4 right-4 z-10 flex items-center gap-2 rounded-lg border bg-background px-3 py-2 font-medium text-sm shadow-sm transition-colors hover:bg-accent"
|
|
318
321
|
>
|
|
@@ -413,29 +416,29 @@ export default nextConfig;
|
|
|
413
416
|
"start": "next start"
|
|
414
417
|
},
|
|
415
418
|
"dependencies": {
|
|
416
|
-
"@ag-ui/client": "^0.0.
|
|
419
|
+
"@ag-ui/client": "^0.0.52",
|
|
417
420
|
"@assistant-ui/react": "workspace:*",
|
|
418
421
|
"@assistant-ui/react-ag-ui": "workspace:*",
|
|
419
422
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
420
423
|
"@assistant-ui/ui": "workspace:*",
|
|
421
424
|
"class-variance-authority": "^0.7.1",
|
|
422
425
|
"clsx": "^2.1.1",
|
|
423
|
-
"lucide-react": "^1.
|
|
424
|
-
"next": "^16.2.
|
|
425
|
-
"react": "^19.2.
|
|
426
|
-
"react-dom": "^19.2.
|
|
426
|
+
"lucide-react": "^1.8.0",
|
|
427
|
+
"next": "^16.2.4",
|
|
428
|
+
"react": "^19.2.5",
|
|
429
|
+
"react-dom": "^19.2.5",
|
|
427
430
|
"tailwind-merge": "^3.5.0"
|
|
428
431
|
},
|
|
429
432
|
"devDependencies": {
|
|
430
433
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
431
|
-
"@tailwindcss/postcss": "^4.2.
|
|
432
|
-
"@types/node": "^25.
|
|
434
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
435
|
+
"@types/node": "^25.6.0",
|
|
433
436
|
"@types/react": "^19.2.14",
|
|
434
437
|
"@types/react-dom": "^19.2.3",
|
|
435
|
-
"postcss": "^8.5.
|
|
436
|
-
"tailwindcss": "^4.2.
|
|
438
|
+
"postcss": "^8.5.10",
|
|
439
|
+
"tailwindcss": "^4.2.4",
|
|
437
440
|
"tw-animate-css": "^1.4.0",
|
|
438
|
-
"typescript": "
|
|
441
|
+
"typescript": "^6.0.3"
|
|
439
442
|
}
|
|
440
443
|
}
|
|
441
444
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { openai } from "@ai-sdk/openai";
|
|
7
7
|
import { frontendTools } from "@assistant-ui/react-ai-sdk";
|
|
8
8
|
import {
|
|
9
|
-
JSONSchema7,
|
|
9
|
+
type JSONSchema7,
|
|
10
10
|
streamText,
|
|
11
11
|
convertToModelMessages,
|
|
12
12
|
type UIMessage,
|
|
@@ -315,31 +315,31 @@ export default nextConfig;
|
|
|
315
315
|
"start": "next start"
|
|
316
316
|
},
|
|
317
317
|
"dependencies": {
|
|
318
|
-
"@ai-sdk/openai": "^3.0.
|
|
318
|
+
"@ai-sdk/openai": "^3.0.53",
|
|
319
319
|
"@assistant-ui/react": "workspace:*",
|
|
320
320
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
321
321
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
322
322
|
"@assistant-ui/ui": "workspace:*",
|
|
323
|
-
"ai": "^6.0.
|
|
323
|
+
"ai": "^6.0.168",
|
|
324
324
|
"class-variance-authority": "^0.7.1",
|
|
325
325
|
"clsx": "^2.1.1",
|
|
326
|
-
"lucide-react": "^1.
|
|
327
|
-
"next": "^16.2.
|
|
328
|
-
"react": "^19.2.
|
|
329
|
-
"react-dom": "^19.2.
|
|
326
|
+
"lucide-react": "^1.8.0",
|
|
327
|
+
"next": "^16.2.4",
|
|
328
|
+
"react": "^19.2.5",
|
|
329
|
+
"react-dom": "^19.2.5",
|
|
330
330
|
"tailwind-merge": "^3.5.0",
|
|
331
331
|
"zod": "^4.3.6"
|
|
332
332
|
},
|
|
333
333
|
"devDependencies": {
|
|
334
334
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
335
|
-
"@tailwindcss/postcss": "^4.2.
|
|
336
|
-
"@types/node": "^25.
|
|
335
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
336
|
+
"@types/node": "^25.6.0",
|
|
337
337
|
"@types/react": "^19.2.14",
|
|
338
338
|
"@types/react-dom": "^19.2.3",
|
|
339
|
-
"postcss": "^8.5.
|
|
340
|
-
"tailwindcss": "^4.2.
|
|
339
|
+
"postcss": "^8.5.10",
|
|
340
|
+
"tailwindcss": "^4.2.4",
|
|
341
341
|
"tw-animate-css": "^1.4.0",
|
|
342
|
-
"typescript": "
|
|
342
|
+
"typescript": "^6.0.3"
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
345
|
|
|
@@ -258,7 +258,7 @@ function ArtifactsView() {
|
|
|
258
258
|
.at(-1);
|
|
259
259
|
});
|
|
260
260
|
|
|
261
|
-
const code = lastToolCall?.args
|
|
261
|
+
const code = lastToolCall?.args.code as string | undefined;
|
|
262
262
|
const isComplete = lastToolCall?.result !== undefined;
|
|
263
263
|
|
|
264
264
|
if (!code) return null;
|
|
@@ -268,6 +268,7 @@ function ArtifactsView() {
|
|
|
268
268
|
<div className="flex h-full w-full flex-col overflow-hidden rounded-lg border">
|
|
269
269
|
<div className="flex border-b">
|
|
270
270
|
<button
|
|
271
|
+
type="button"
|
|
271
272
|
onClick={() => setTab("source")}
|
|
272
273
|
className={`inline-flex flex-1 items-center justify-center gap-2 px-4 py-2.5 font-medium text-sm transition-colors ${
|
|
273
274
|
tab === "source"
|
|
@@ -279,6 +280,7 @@ function ArtifactsView() {
|
|
|
279
280
|
Source Code
|
|
280
281
|
</button>
|
|
281
282
|
<button
|
|
283
|
+
type="button"
|
|
282
284
|
onClick={() => isComplete && setTab("preview")}
|
|
283
285
|
disabled={!isComplete}
|
|
284
286
|
className={`inline-flex flex-1 items-center justify-center gap-2 px-4 py-2.5 font-medium text-sm transition-colors ${
|
|
@@ -413,31 +415,31 @@ export default nextConfig;
|
|
|
413
415
|
"start": "next start"
|
|
414
416
|
},
|
|
415
417
|
"dependencies": {
|
|
416
|
-
"@ai-sdk/openai": "^3.0.
|
|
418
|
+
"@ai-sdk/openai": "^3.0.53",
|
|
417
419
|
"@assistant-ui/react": "workspace:*",
|
|
418
420
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
419
421
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
420
422
|
"@assistant-ui/ui": "workspace:*",
|
|
421
|
-
"ai": "^6.0.
|
|
423
|
+
"ai": "^6.0.168",
|
|
422
424
|
"class-variance-authority": "^0.7.1",
|
|
423
425
|
"clsx": "^2.1.1",
|
|
424
|
-
"lucide-react": "^1.
|
|
425
|
-
"next": "^16.2.
|
|
426
|
-
"react": "^19.2.
|
|
427
|
-
"react-dom": "^19.2.
|
|
426
|
+
"lucide-react": "^1.8.0",
|
|
427
|
+
"next": "^16.2.4",
|
|
428
|
+
"react": "^19.2.5",
|
|
429
|
+
"react-dom": "^19.2.5",
|
|
428
430
|
"tailwind-merge": "^3.5.0",
|
|
429
431
|
"zod": "^4.3.6"
|
|
430
432
|
},
|
|
431
433
|
"devDependencies": {
|
|
432
434
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
433
|
-
"@tailwindcss/postcss": "^4.2.
|
|
434
|
-
"@types/node": "^25.
|
|
435
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
436
|
+
"@types/node": "^25.6.0",
|
|
435
437
|
"@types/react": "^19.2.14",
|
|
436
438
|
"@types/react-dom": "^19.2.3",
|
|
437
|
-
"postcss": "^8.5.
|
|
438
|
-
"tailwindcss": "^4.2.
|
|
439
|
+
"postcss": "^8.5.10",
|
|
440
|
+
"tailwindcss": "^4.2.4",
|
|
439
441
|
"tw-animate-css": "^1.4.0",
|
|
440
|
-
"typescript": "
|
|
442
|
+
"typescript": "^6.0.3"
|
|
441
443
|
}
|
|
442
444
|
}
|
|
443
445
|
|
|
@@ -170,16 +170,16 @@ export default function RootLayout({
|
|
|
170
170
|
|
|
171
171
|
import {
|
|
172
172
|
AssistantRuntimeProvider,
|
|
173
|
-
AssistantTransportConnectionMetadata,
|
|
173
|
+
type AssistantTransportConnectionMetadata,
|
|
174
174
|
makeAssistantTool,
|
|
175
175
|
unstable_createMessageConverter as createMessageConverter,
|
|
176
176
|
useAssistantTransportRuntime,
|
|
177
177
|
} from "@assistant-ui/react";
|
|
178
178
|
import {
|
|
179
179
|
convertLangChainMessages,
|
|
180
|
-
LangChainMessage,
|
|
180
|
+
type LangChainMessage,
|
|
181
181
|
} from "@assistant-ui/react-langgraph";
|
|
182
|
-
import { ReactNode } from "react";
|
|
182
|
+
import type { ReactNode } from "react";
|
|
183
183
|
import { z } from "zod";
|
|
184
184
|
|
|
185
185
|
// Frontend tool with execute function
|
|
@@ -274,8 +274,7 @@ export function MyRuntimeProvider({ children }: MyRuntimeProviderProps) {
|
|
|
274
274
|
initialState: {
|
|
275
275
|
messages: [],
|
|
276
276
|
},
|
|
277
|
-
api:
|
|
278
|
-
process.env["NEXT_PUBLIC_API_URL"] || "http://localhost:8010/assistant",
|
|
277
|
+
api: process.env.NEXT_PUBLIC_API_URL || "http://localhost:8010/assistant",
|
|
279
278
|
converter,
|
|
280
279
|
headers: async () => ({
|
|
281
280
|
"Test-Header": "test-value",
|
|
@@ -423,23 +422,23 @@ export default nextConfig;
|
|
|
423
422
|
"@assistant-ui/ui": "workspace:*",
|
|
424
423
|
"class-variance-authority": "^0.7.1",
|
|
425
424
|
"clsx": "^2.1.1",
|
|
426
|
-
"lucide-react": "^1.
|
|
427
|
-
"next": "^16.2.
|
|
428
|
-
"react": "^19.2.
|
|
429
|
-
"react-dom": "^19.2.
|
|
425
|
+
"lucide-react": "^1.8.0",
|
|
426
|
+
"next": "^16.2.4",
|
|
427
|
+
"react": "^19.2.5",
|
|
428
|
+
"react-dom": "^19.2.5",
|
|
430
429
|
"tailwind-merge": "^3.5.0",
|
|
431
430
|
"zod": "^4.3.6"
|
|
432
431
|
},
|
|
433
432
|
"devDependencies": {
|
|
434
433
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
435
|
-
"@tailwindcss/postcss": "^4.2.
|
|
436
|
-
"@types/node": "^25.
|
|
434
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
435
|
+
"@types/node": "^25.6.0",
|
|
437
436
|
"@types/react": "^19.2.14",
|
|
438
437
|
"@types/react-dom": "^19.2.3",
|
|
439
|
-
"postcss": "^8.5.
|
|
440
|
-
"tailwindcss": "^4.2.
|
|
438
|
+
"postcss": "^8.5.10",
|
|
439
|
+
"tailwindcss": "^4.2.4",
|
|
441
440
|
"tw-animate-css": "^1.4.0",
|
|
442
|
-
"typescript": "
|
|
441
|
+
"typescript": "^6.0.3"
|
|
443
442
|
}
|
|
444
443
|
}
|
|
445
444
|
|
|
@@ -557,31 +557,31 @@ export default nextConfig;
|
|
|
557
557
|
"start": "next start"
|
|
558
558
|
},
|
|
559
559
|
"dependencies": {
|
|
560
|
-
"@ai-sdk/openai": "^3.0.
|
|
560
|
+
"@ai-sdk/openai": "^3.0.53",
|
|
561
561
|
"@assistant-ui/react": "workspace:*",
|
|
562
562
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
563
563
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
564
564
|
"@assistant-ui/ui": "workspace:*",
|
|
565
|
-
"ai": "^6.0.
|
|
565
|
+
"ai": "^6.0.168",
|
|
566
566
|
"class-variance-authority": "^0.7.1",
|
|
567
567
|
"clsx": "^2.1.1",
|
|
568
|
-
"lucide-react": "^1.
|
|
569
|
-
"next": "^16.2.
|
|
570
|
-
"react": "^19.2.
|
|
571
|
-
"react-dom": "^19.2.
|
|
568
|
+
"lucide-react": "^1.8.0",
|
|
569
|
+
"next": "^16.2.4",
|
|
570
|
+
"react": "^19.2.5",
|
|
571
|
+
"react-dom": "^19.2.5",
|
|
572
572
|
"tailwind-merge": "^3.5.0",
|
|
573
573
|
"zod": "^4.3.6"
|
|
574
574
|
},
|
|
575
575
|
"devDependencies": {
|
|
576
576
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
577
|
-
"@tailwindcss/postcss": "^4.2.
|
|
578
|
-
"@types/node": "^25.
|
|
577
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
578
|
+
"@types/node": "^25.6.0",
|
|
579
579
|
"@types/react": "^19.2.14",
|
|
580
580
|
"@types/react-dom": "^19.2.3",
|
|
581
|
-
"postcss": "^8.5.
|
|
582
|
-
"tailwindcss": "^4.2.
|
|
581
|
+
"postcss": "^8.5.10",
|
|
582
|
+
"tailwindcss": "^4.2.4",
|
|
583
583
|
"tw-animate-css": "^1.4.0",
|
|
584
|
-
"typescript": "
|
|
584
|
+
"typescript": "^6.0.3"
|
|
585
585
|
}
|
|
586
586
|
}
|
|
587
587
|
|
|
@@ -472,6 +472,7 @@ export function ThreadList({
|
|
|
472
472
|
<div className="flex h-full w-64 shrink-0 flex-col border-r bg-sidebar">
|
|
473
473
|
<div className="p-3">
|
|
474
474
|
<button
|
|
475
|
+
type="button"
|
|
475
476
|
onClick={() => onSelect(null)}
|
|
476
477
|
className="flex w-full items-center justify-center gap-2 rounded-lg border border-sidebar-border bg-sidebar px-4 py-2 font-medium text-sidebar-foreground text-sm transition-colors hover:bg-sidebar-accent"
|
|
477
478
|
>
|
|
@@ -493,11 +494,12 @@ export function ThreadList({
|
|
|
493
494
|
) : (
|
|
494
495
|
<div className="space-y-0.5">
|
|
495
496
|
{threads.map((thread) => (
|
|
496
|
-
<
|
|
497
|
+
<button
|
|
498
|
+
type="button"
|
|
497
499
|
key={thread.id}
|
|
498
500
|
onClick={() => onSelect(thread.id)}
|
|
499
501
|
className={cn(
|
|
500
|
-
"group flex cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm transition-colors",
|
|
502
|
+
"group flex w-full cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors",
|
|
501
503
|
selectedId === thread.id
|
|
502
504
|
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
503
505
|
: "text-sidebar-foreground hover:bg-sidebar-accent/50",
|
|
@@ -507,6 +509,7 @@ export function ThreadList({
|
|
|
507
509
|
{thread.title || "New conversation"}
|
|
508
510
|
</span>
|
|
509
511
|
<button
|
|
512
|
+
type="button"
|
|
510
513
|
onClick={(e) => {
|
|
511
514
|
e.stopPropagation();
|
|
512
515
|
onDelete(thread.id);
|
|
@@ -516,7 +519,7 @@ export function ThreadList({
|
|
|
516
519
|
>
|
|
517
520
|
<Trash2 className="size-3.5 text-muted-foreground hover:text-destructive" />
|
|
518
521
|
</button>
|
|
519
|
-
</
|
|
522
|
+
</button>
|
|
520
523
|
))}
|
|
521
524
|
</div>
|
|
522
525
|
)}
|
|
@@ -565,27 +568,27 @@ export default nextConfig;
|
|
|
565
568
|
"start": "next start"
|
|
566
569
|
},
|
|
567
570
|
"dependencies": {
|
|
568
|
-
"@ai-sdk/openai": "^3.0.
|
|
571
|
+
"@ai-sdk/openai": "^3.0.53",
|
|
569
572
|
"@assistant-ui/cloud-ai-sdk": "workspace:*",
|
|
570
|
-
"ai": "^6.0.
|
|
573
|
+
"ai": "^6.0.168",
|
|
571
574
|
"class-variance-authority": "^0.7.1",
|
|
572
575
|
"clsx": "^2.1.1",
|
|
573
|
-
"lucide-react": "^1.
|
|
574
|
-
"next": "^16.2.
|
|
575
|
-
"react": "^19.2.
|
|
576
|
-
"react-dom": "^19.2.
|
|
576
|
+
"lucide-react": "^1.8.0",
|
|
577
|
+
"next": "^16.2.4",
|
|
578
|
+
"react": "^19.2.5",
|
|
579
|
+
"react-dom": "^19.2.5",
|
|
577
580
|
"tailwind-merge": "^3.5.0"
|
|
578
581
|
},
|
|
579
582
|
"devDependencies": {
|
|
580
583
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
581
|
-
"@tailwindcss/postcss": "^4.2.
|
|
582
|
-
"@types/node": "^25.
|
|
584
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
585
|
+
"@types/node": "^25.6.0",
|
|
583
586
|
"@types/react": "^19.2.14",
|
|
584
587
|
"@types/react-dom": "^19.2.3",
|
|
585
|
-
"postcss": "^8.5.
|
|
586
|
-
"tailwindcss": "^4.2.
|
|
588
|
+
"postcss": "^8.5.10",
|
|
589
|
+
"tailwindcss": "^4.2.4",
|
|
587
590
|
"tw-animate-css": "^1.4.0",
|
|
588
|
-
"typescript": "
|
|
591
|
+
"typescript": "^6.0.3"
|
|
589
592
|
}
|
|
590
593
|
}
|
|
591
594
|
|
|
@@ -206,7 +206,7 @@ import { AssistantCloud, AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
|
206
206
|
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
207
207
|
|
|
208
208
|
const cloud = new AssistantCloud({
|
|
209
|
-
baseUrl: process.env
|
|
209
|
+
baseUrl: process.env.NEXT_PUBLIC_ASSISTANT_BASE_URL!,
|
|
210
210
|
anonymous: true,
|
|
211
211
|
});
|
|
212
212
|
|
|
@@ -327,30 +327,30 @@ export default nextConfig;
|
|
|
327
327
|
"start": "next start"
|
|
328
328
|
},
|
|
329
329
|
"dependencies": {
|
|
330
|
-
"@ai-sdk/openai": "^3.0.
|
|
330
|
+
"@ai-sdk/openai": "^3.0.53",
|
|
331
331
|
"@assistant-ui/react": "workspace:*",
|
|
332
332
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
333
333
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
334
334
|
"@assistant-ui/ui": "workspace:*",
|
|
335
|
-
"ai": "^6.0.
|
|
335
|
+
"ai": "^6.0.168",
|
|
336
336
|
"class-variance-authority": "^0.7.1",
|
|
337
337
|
"clsx": "^2.1.1",
|
|
338
|
-
"lucide-react": "^1.
|
|
339
|
-
"next": "^16.2.
|
|
340
|
-
"react": "^19.2.
|
|
341
|
-
"react-dom": "^19.2.
|
|
338
|
+
"lucide-react": "^1.8.0",
|
|
339
|
+
"next": "^16.2.4",
|
|
340
|
+
"react": "^19.2.5",
|
|
341
|
+
"react-dom": "^19.2.5",
|
|
342
342
|
"tailwind-merge": "^3.5.0"
|
|
343
343
|
},
|
|
344
344
|
"devDependencies": {
|
|
345
345
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
346
|
-
"@tailwindcss/postcss": "^4.2.
|
|
347
|
-
"@types/node": "^25.
|
|
346
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
347
|
+
"@types/node": "^25.6.0",
|
|
348
348
|
"@types/react": "^19.2.14",
|
|
349
349
|
"@types/react-dom": "^19.2.3",
|
|
350
|
-
"postcss": "^8.5.
|
|
351
|
-
"tailwindcss": "^4.2.
|
|
350
|
+
"postcss": "^8.5.10",
|
|
351
|
+
"tailwindcss": "^4.2.4",
|
|
352
352
|
"tw-animate-css": "^1.4.0",
|
|
353
|
-
"typescript": "
|
|
353
|
+
"typescript": "^6.0.3"
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
|
|
@@ -378,7 +378,6 @@ Create `.env.local`:
|
|
|
378
378
|
|
|
379
379
|
```
|
|
380
380
|
OPENAI_API_KEY=sk-...
|
|
381
|
-
JWT_SECRET=your-jwt-secret
|
|
382
381
|
ASSISTANT_API_KEY=sk-aui-proj-...
|
|
383
382
|
NEXT_PUBLIC_ASSISTANT_BASE_URL=https://proj-xxxx.assistant-api.com
|
|
384
383
|
```
|