@assistant-ui/mcp-docs-server 0.1.29 → 0.1.31
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 +15 -7
- package/.docs/organized/code-examples/with-a2a.md +9 -21
- package/.docs/organized/code-examples/with-ag-ui.md +11 -8
- package/.docs/organized/code-examples/with-ai-sdk-v6.md +10 -10
- package/.docs/organized/code-examples/with-artifacts.md +12 -10
- package/.docs/organized/code-examples/with-assistant-transport.md +11 -12
- package/.docs/organized/code-examples/with-chain-of-thought.md +83 -54
- package/.docs/organized/code-examples/with-cloud-standalone.md +14 -11
- package/.docs/organized/code-examples/with-cloud.md +9 -10
- package/.docs/organized/code-examples/with-custom-thread-list.md +61 -16
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +17 -12
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +13 -13
- package/.docs/organized/code-examples/with-expo.md +25 -21
- package/.docs/organized/code-examples/with-external-store.md +8 -8
- package/.docs/organized/code-examples/with-ffmpeg.md +17 -12
- package/.docs/organized/code-examples/with-generative-ui.md +9 -9
- package/.docs/organized/code-examples/with-google-adk.md +8 -8
- package/.docs/organized/code-examples/with-heat-graph.md +5 -5
- package/.docs/organized/code-examples/with-interactables.md +10 -25
- package/.docs/organized/code-examples/with-langchain.md +437 -0
- package/.docs/organized/code-examples/with-langgraph.md +16 -16
- package/.docs/organized/code-examples/with-livekit.md +18 -13
- package/.docs/organized/code-examples/with-opencode.md +105 -62
- package/.docs/organized/code-examples/with-parent-id-grouping.md +10 -10
- package/.docs/organized/code-examples/with-react-hook-form.md +220 -148
- package/.docs/organized/code-examples/with-react-ink.md +2 -2
- package/.docs/organized/code-examples/with-react-router.md +12 -12
- package/.docs/organized/code-examples/with-store.md +8 -5
- package/.docs/organized/code-examples/with-tanstack.md +10 -10
- package/.docs/organized/code-examples/with-tap-runtime.md +10 -6
- package/.docs/raw/docs/(docs)/cli.mdx +2 -1
- package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
- package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
- package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
- package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
- package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
- package/.docs/raw/docs/(docs)/index.mdx +1 -0
- package/.docs/raw/docs/(docs)/installation.mdx +1 -0
- package/.docs/raw/docs/(docs)/rtl.mdx +80 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +34 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +41 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +26 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +34 -0
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +31 -0
- package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +20 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +26 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +72 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +41 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +48 -0
- package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +30 -0
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +23 -0
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +21 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +7 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +149 -40
- package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +65 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +2 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +50 -6
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +15 -0
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +36 -1
- package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +38 -0
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +9 -0
- package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +144 -6
- package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +231 -3
- package/.docs/raw/docs/cloud/ai-sdk.mdx +221 -3
- package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
- package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +41 -36
- package/.docs/raw/docs/guides/branching.mdx +76 -0
- package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +50 -22
- package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +2 -0
- package/.docs/raw/docs/guides/editing.mdx +102 -0
- package/.docs/raw/docs/guides/index.mdx +103 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +49 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +51 -8
- package/.docs/raw/docs/guides/mentions.mdx +520 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +8 -2
- package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +64 -4
- package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +10 -17
- package/.docs/raw/docs/guides/slash-commands.mdx +361 -0
- package/.docs/raw/docs/guides/speech.mdx +156 -0
- package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +21 -83
- package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +108 -36
- package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +131 -35
- package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +39 -0
- package/.docs/raw/docs/ink/index.mdx +1 -3
- package/.docs/raw/docs/ink/migration.mdx +1 -3
- package/.docs/raw/docs/ink/primitives.mdx +37 -1
- package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
- package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
- package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
- package/.docs/raw/docs/integrations/gateways/index.mdx +157 -0
- package/.docs/raw/docs/integrations/index.mdx +173 -0
- package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +156 -0
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +146 -0
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
- package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
- package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
- package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
- package/.docs/raw/docs/primitives/attachment.mdx +1 -0
- package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
- package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
- package/.docs/raw/docs/primitives/composer.mdx +96 -63
- package/.docs/raw/docs/primitives/error.mdx +1 -0
- package/.docs/raw/docs/primitives/index.mdx +2 -1
- package/.docs/raw/docs/primitives/message.mdx +68 -5
- package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
- package/.docs/raw/docs/primitives/suggestion.mdx +1 -0
- package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
- package/.docs/raw/docs/primitives/thread.mdx +16 -13
- package/.docs/raw/docs/react-native/index.mdx +1 -3
- package/.docs/raw/docs/react-native/migration.mdx +1 -3
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
- package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
- package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
- package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
- package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +123 -0
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +71 -131
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +69 -63
- package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +365 -101
- package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
- package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
- package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
- package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
- package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +323 -0
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +253 -1236
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
- package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
- package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
- package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
- package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
- package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
- package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
- package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
- package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
- package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
- package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
- package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
- package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
- package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
- package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
- package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
- package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +74 -198
- package/.docs/raw/docs/ui/accordion.mdx +1 -0
- package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
- package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
- package/.docs/raw/docs/ui/attachment.mdx +1 -0
- package/.docs/raw/docs/ui/badge.mdx +1 -0
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +200 -0
- package/.docs/raw/docs/ui/context-display.mdx +1 -0
- package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
- package/.docs/raw/docs/ui/directive-text.mdx +114 -0
- package/.docs/raw/docs/ui/file.mdx +1 -0
- package/.docs/raw/docs/ui/image.mdx +1 -0
- package/.docs/raw/docs/ui/markdown.mdx +2 -14
- package/.docs/raw/docs/ui/mermaid.mdx +1 -0
- package/.docs/raw/docs/ui/message-timing.mdx +3 -2
- package/.docs/raw/docs/ui/model-selector.mdx +1 -0
- package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
- package/.docs/raw/docs/ui/quote.mdx +1 -0
- package/.docs/raw/docs/ui/reasoning.mdx +69 -32
- package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
- package/.docs/raw/docs/ui/select.mdx +1 -0
- package/.docs/raw/docs/ui/sources.mdx +1 -0
- package/.docs/raw/docs/ui/streamdown.mdx +1 -0
- package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
- package/.docs/raw/docs/ui/tabs.mdx +1 -0
- package/.docs/raw/docs/ui/thread-list.mdx +17 -0
- package/.docs/raw/docs/ui/thread.mdx +56 -1
- package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
- package/.docs/raw/docs/ui/tool-group.mdx +39 -11
- package/.docs/raw/docs/ui/voice.mdx +1 -0
- package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
- package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
- package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +4 -4
- package/src/tools/tests/path-traversal.test.ts +1 -1
- package/src/utils/logger.ts +1 -1
- package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
- package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
- package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
- package/.docs/raw/docs/(docs)/guides/mentions.mdx +0 -406
- package/.docs/raw/docs/(docs)/guides/slash-commands.mdx +0 -275
- package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
- package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
- package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
- package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -268
- package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
- package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
- package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
- package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
- package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -607
- package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
- package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
- package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
- package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
- package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
- package/.docs/raw/docs/ui/mention.mdx +0 -168
|
@@ -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.61",
|
|
569
572
|
"@assistant-ui/cloud-ai-sdk": "workspace:*",
|
|
570
|
-
"ai": "^6.0.
|
|
573
|
+
"ai": "^6.0.175",
|
|
571
574
|
"class-variance-authority": "^0.7.1",
|
|
572
575
|
"clsx": "^2.1.1",
|
|
573
|
-
"lucide-react": "^1.
|
|
574
|
-
"next": "^16.2.
|
|
576
|
+
"lucide-react": "^1.14.0",
|
|
577
|
+
"next": "^16.2.4",
|
|
575
578
|
"react": "^19.2.5",
|
|
576
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.
|
|
584
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
582
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.14",
|
|
589
|
+
"tailwindcss": "^4.2.4",
|
|
587
590
|
"tw-animate-css": "^1.4.0",
|
|
588
|
-
"typescript": "^6.0.
|
|
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.61",
|
|
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.175",
|
|
336
336
|
"class-variance-authority": "^0.7.1",
|
|
337
337
|
"clsx": "^2.1.1",
|
|
338
|
-
"lucide-react": "^1.
|
|
339
|
-
"next": "^16.2.
|
|
338
|
+
"lucide-react": "^1.14.0",
|
|
339
|
+
"next": "^16.2.4",
|
|
340
340
|
"react": "^19.2.5",
|
|
341
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.
|
|
346
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
347
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.14",
|
|
351
|
+
"tailwindcss": "^4.2.4",
|
|
352
352
|
"tw-animate-css": "^1.4.0",
|
|
353
|
-
"typescript": "^6.0.
|
|
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
|
```
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { openai } from "@ai-sdk/openai";
|
|
7
7
|
import {
|
|
8
8
|
streamText,
|
|
9
|
-
UIMessage,
|
|
9
|
+
type UIMessage,
|
|
10
10
|
convertToModelMessages,
|
|
11
11
|
tool,
|
|
12
12
|
stepCountIs,
|
|
@@ -215,7 +215,8 @@ import {
|
|
|
215
215
|
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
216
216
|
import { createAssistantStream } from "assistant-stream";
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
const PAGE_SIZE = 10;
|
|
219
|
+
|
|
219
220
|
const threadsStore = new Map<
|
|
220
221
|
string,
|
|
221
222
|
{
|
|
@@ -223,16 +224,33 @@ const threadsStore = new Map<
|
|
|
223
224
|
status: "regular" | "archived";
|
|
224
225
|
title?: string;
|
|
225
226
|
}
|
|
226
|
-
>(
|
|
227
|
+
>(
|
|
228
|
+
Array.from({ length: 25 }, (_, i) => {
|
|
229
|
+
const id = `seed-${String(i).padStart(2, "0")}`;
|
|
230
|
+
return [
|
|
231
|
+
id,
|
|
232
|
+
{
|
|
233
|
+
remoteId: id,
|
|
234
|
+
status: "regular" as const,
|
|
235
|
+
title: `Seeded thread ${i + 1}`,
|
|
236
|
+
},
|
|
237
|
+
] as const;
|
|
238
|
+
}),
|
|
239
|
+
);
|
|
227
240
|
|
|
228
241
|
const threadListAdapter: RemoteThreadListAdapter = {
|
|
229
|
-
async list() {
|
|
242
|
+
async list({ after }: { after?: string } = {}) {
|
|
243
|
+
const all = Array.from(threadsStore.values());
|
|
244
|
+
const start = after ? Number(after) : 0;
|
|
245
|
+
const page = all.slice(start, start + PAGE_SIZE);
|
|
246
|
+
const nextStart = start + page.length;
|
|
230
247
|
return {
|
|
231
|
-
threads:
|
|
248
|
+
threads: page.map((thread) => ({
|
|
232
249
|
remoteId: thread.remoteId,
|
|
233
250
|
status: thread.status,
|
|
234
251
|
title: thread.title,
|
|
235
252
|
})),
|
|
253
|
+
nextCursor: nextStart < all.length ? String(nextStart) : undefined,
|
|
236
254
|
};
|
|
237
255
|
},
|
|
238
256
|
|
|
@@ -323,8 +341,35 @@ export function MyRuntimeProvider({
|
|
|
323
341
|
"use client";
|
|
324
342
|
|
|
325
343
|
import { Thread } from "@/components/assistant-ui/thread";
|
|
326
|
-
import {
|
|
327
|
-
|
|
344
|
+
import {
|
|
345
|
+
AuiProvider,
|
|
346
|
+
Suggestions,
|
|
347
|
+
ThreadListItemPrimitive,
|
|
348
|
+
ThreadListPrimitive,
|
|
349
|
+
useAui,
|
|
350
|
+
} from "@assistant-ui/react";
|
|
351
|
+
|
|
352
|
+
function ThreadList() {
|
|
353
|
+
return (
|
|
354
|
+
<ThreadListPrimitive.Root className="flex flex-col gap-1 overflow-y-auto">
|
|
355
|
+
<ThreadListPrimitive.New className="flex h-9 items-center gap-2 rounded-lg border px-3 text-sm hover:bg-muted">
|
|
356
|
+
New Thread
|
|
357
|
+
</ThreadListPrimitive.New>
|
|
358
|
+
<ThreadListPrimitive.Items>
|
|
359
|
+
{() => (
|
|
360
|
+
<ThreadListItemPrimitive.Root className="flex h-9 items-center rounded-lg hover:bg-muted data-active:bg-muted">
|
|
361
|
+
<ThreadListItemPrimitive.Trigger className="flex-1 truncate px-3 text-start text-sm">
|
|
362
|
+
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
363
|
+
</ThreadListItemPrimitive.Trigger>
|
|
364
|
+
</ThreadListItemPrimitive.Root>
|
|
365
|
+
)}
|
|
366
|
+
</ThreadListPrimitive.Items>
|
|
367
|
+
<ThreadListPrimitive.LoadMore className="mt-1 h-9 rounded-lg border px-3 text-sm hover:bg-muted disabled:opacity-50">
|
|
368
|
+
Load more
|
|
369
|
+
</ThreadListPrimitive.LoadMore>
|
|
370
|
+
</ThreadListPrimitive.Root>
|
|
371
|
+
);
|
|
372
|
+
}
|
|
328
373
|
|
|
329
374
|
function ThreadWithSuggestions() {
|
|
330
375
|
const aui = useAui({
|
|
@@ -414,32 +459,32 @@ export default nextConfig;
|
|
|
414
459
|
"start": "next start"
|
|
415
460
|
},
|
|
416
461
|
"dependencies": {
|
|
417
|
-
"@ai-sdk/openai": "^3.0.
|
|
462
|
+
"@ai-sdk/openai": "^3.0.61",
|
|
418
463
|
"@assistant-ui/react": "workspace:*",
|
|
419
464
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
420
465
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
421
466
|
"@assistant-ui/ui": "workspace:*",
|
|
422
|
-
"ai": "^6.0.
|
|
467
|
+
"ai": "^6.0.175",
|
|
423
468
|
"assistant-stream": "workspace:*",
|
|
424
469
|
"class-variance-authority": "^0.7.1",
|
|
425
470
|
"clsx": "^2.1.1",
|
|
426
|
-
"lucide-react": "^1.
|
|
427
|
-
"next": "^16.2.
|
|
471
|
+
"lucide-react": "^1.14.0",
|
|
472
|
+
"next": "^16.2.4",
|
|
428
473
|
"react": "^19.2.5",
|
|
429
474
|
"react-dom": "^19.2.5",
|
|
430
475
|
"tailwind-merge": "^3.5.0",
|
|
431
|
-
"zod": "^4.3
|
|
476
|
+
"zod": "^4.4.3"
|
|
432
477
|
},
|
|
433
478
|
"devDependencies": {
|
|
434
479
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
435
|
-
"@tailwindcss/postcss": "^4.2.
|
|
480
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
436
481
|
"@types/node": "^25.6.0",
|
|
437
482
|
"@types/react": "^19.2.14",
|
|
438
483
|
"@types/react-dom": "^19.2.3",
|
|
439
|
-
"postcss": "^8.5.
|
|
440
|
-
"tailwindcss": "^4.2.
|
|
484
|
+
"postcss": "^8.5.14",
|
|
485
|
+
"tailwindcss": "^4.2.4",
|
|
441
486
|
"tw-animate-css": "^1.4.0",
|
|
442
|
-
"typescript": "^6.0.
|
|
487
|
+
"typescript": "^6.0.3"
|
|
443
488
|
}
|
|
444
489
|
}
|
|
445
490
|
|
|
@@ -4,7 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
```typescript
|
|
6
6
|
import { openai } from "@ai-sdk/openai";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
streamText,
|
|
9
|
+
type UIMessage,
|
|
10
|
+
convertToModelMessages,
|
|
11
|
+
stepCountIs,
|
|
12
|
+
} from "ai";
|
|
8
13
|
|
|
9
14
|
export const maxDuration = 30;
|
|
10
15
|
|
|
@@ -433,26 +438,26 @@ export default nextConfig;
|
|
|
433
438
|
"version": "0.0.0",
|
|
434
439
|
"type": "module",
|
|
435
440
|
"dependencies": {
|
|
436
|
-
"@ai-sdk/openai": "^3.0.
|
|
437
|
-
"@ai-sdk/react": "^3.0.
|
|
441
|
+
"@ai-sdk/openai": "^3.0.61",
|
|
442
|
+
"@ai-sdk/react": "^3.0.177",
|
|
438
443
|
"@assistant-ui/react": "workspace:^",
|
|
439
444
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
440
445
|
"@assistant-ui/react-markdown": "workspace:^",
|
|
441
446
|
"@assistant-ui/ui": "workspace:*",
|
|
442
|
-
"@elevenlabs/client": "^1.
|
|
443
|
-
"@tailwindcss/postcss": "^4.2.
|
|
444
|
-
"ai": "^6.0.
|
|
447
|
+
"@elevenlabs/client": "^1.5.0",
|
|
448
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
449
|
+
"ai": "^6.0.175",
|
|
445
450
|
"class-variance-authority": "^0.7.1",
|
|
446
451
|
"clsx": "^2.1.1",
|
|
447
|
-
"lucide-react": "^1.
|
|
452
|
+
"lucide-react": "^1.14.0",
|
|
448
453
|
"motion": "^12.38.0",
|
|
449
|
-
"next": "^16.2.
|
|
450
|
-
"postcss": "^8.5.
|
|
454
|
+
"next": "^16.2.4",
|
|
455
|
+
"postcss": "^8.5.14",
|
|
451
456
|
"react": "^19.2.5",
|
|
452
457
|
"react-dom": "^19.2.5",
|
|
453
458
|
"tailwind-merge": "^3.5.0",
|
|
454
|
-
"tailwindcss": "^4.2.
|
|
455
|
-
"zod": "^4.3
|
|
459
|
+
"tailwindcss": "^4.2.4",
|
|
460
|
+
"zod": "^4.4.3"
|
|
456
461
|
},
|
|
457
462
|
"devDependencies": {
|
|
458
463
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
@@ -460,7 +465,7 @@ export default nextConfig;
|
|
|
460
465
|
"@types/react": "^19.2.14",
|
|
461
466
|
"@types/react-dom": "^19.2.3",
|
|
462
467
|
"tw-animate-css": "^1.4.0",
|
|
463
|
-
"typescript": "^6.0.
|
|
468
|
+
"typescript": "^6.0.3"
|
|
464
469
|
},
|
|
465
470
|
"scripts": {
|
|
466
471
|
"dev": "next dev",
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { openai } from "@ai-sdk/openai";
|
|
7
7
|
import {
|
|
8
8
|
streamText,
|
|
9
|
-
UIMessage,
|
|
9
|
+
type UIMessage,
|
|
10
10
|
convertToModelMessages,
|
|
11
11
|
tool,
|
|
12
12
|
stepCountIs,
|
|
@@ -57,7 +57,7 @@ export async function POST() {
|
|
|
57
57
|
{
|
|
58
58
|
method: "POST",
|
|
59
59
|
headers: {
|
|
60
|
-
"xi-api-key": process.env
|
|
60
|
+
"xi-api-key": process.env.ELEVENLABS_API_KEY!,
|
|
61
61
|
},
|
|
62
62
|
},
|
|
63
63
|
);
|
|
@@ -562,26 +562,26 @@ export default nextConfig;
|
|
|
562
562
|
"version": "0.0.0",
|
|
563
563
|
"type": "module",
|
|
564
564
|
"dependencies": {
|
|
565
|
-
"@ai-sdk/openai": "^3.0.
|
|
566
|
-
"@ai-sdk/react": "^3.0.
|
|
565
|
+
"@ai-sdk/openai": "^3.0.61",
|
|
566
|
+
"@ai-sdk/react": "^3.0.177",
|
|
567
567
|
"@assistant-ui/react": "workspace:^",
|
|
568
568
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
569
569
|
"@assistant-ui/react-markdown": "workspace:^",
|
|
570
570
|
"@assistant-ui/ui": "workspace:*",
|
|
571
|
-
"@elevenlabs/client": "^1.
|
|
572
|
-
"@tailwindcss/postcss": "^4.2.
|
|
573
|
-
"ai": "^6.0.
|
|
571
|
+
"@elevenlabs/client": "^1.5.0",
|
|
572
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
573
|
+
"ai": "^6.0.175",
|
|
574
574
|
"class-variance-authority": "^0.7.1",
|
|
575
575
|
"clsx": "^2.1.1",
|
|
576
|
-
"lucide-react": "^1.
|
|
576
|
+
"lucide-react": "^1.14.0",
|
|
577
577
|
"motion": "^12.38.0",
|
|
578
|
-
"next": "^16.2.
|
|
579
|
-
"postcss": "^8.5.
|
|
578
|
+
"next": "^16.2.4",
|
|
579
|
+
"postcss": "^8.5.14",
|
|
580
580
|
"react": "^19.2.5",
|
|
581
581
|
"react-dom": "^19.2.5",
|
|
582
582
|
"tailwind-merge": "^3.5.0",
|
|
583
|
-
"tailwindcss": "^4.2.
|
|
584
|
-
"zod": "^4.3
|
|
583
|
+
"tailwindcss": "^4.2.4",
|
|
584
|
+
"zod": "^4.4.3"
|
|
585
585
|
},
|
|
586
586
|
"devDependencies": {
|
|
587
587
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
@@ -589,7 +589,7 @@ export default nextConfig;
|
|
|
589
589
|
"@types/react": "^19.2.14",
|
|
590
590
|
"@types/react-dom": "^19.2.3",
|
|
591
591
|
"tw-animate-css": "^1.4.0",
|
|
592
|
-
"typescript": "^6.0.
|
|
592
|
+
"typescript": "^6.0.3"
|
|
593
593
|
},
|
|
594
594
|
"scripts": {
|
|
595
595
|
"dev": "next dev",
|
|
@@ -1639,8 +1639,12 @@ const styles = StyleSheet.create({
|
|
|
1639
1639
|
## components/ui/icon-symbol.ios.tsx
|
|
1640
1640
|
|
|
1641
1641
|
```tsx
|
|
1642
|
-
import {
|
|
1643
|
-
|
|
1642
|
+
import {
|
|
1643
|
+
SymbolView,
|
|
1644
|
+
type SymbolViewProps,
|
|
1645
|
+
type SymbolWeight,
|
|
1646
|
+
} from "expo-symbols";
|
|
1647
|
+
import type { StyleProp, ViewStyle } from "react-native";
|
|
1644
1648
|
|
|
1645
1649
|
export function IconSymbol({
|
|
1646
1650
|
name,
|
|
@@ -1680,9 +1684,9 @@ export function IconSymbol({
|
|
|
1680
1684
|
// Fallback for using MaterialIcons on Android and web.
|
|
1681
1685
|
|
|
1682
1686
|
import MaterialIcons from "@expo/vector-icons/MaterialIcons";
|
|
1683
|
-
import { SymbolWeight, SymbolViewProps } from "expo-symbols";
|
|
1684
|
-
import { ComponentProps } from "react";
|
|
1685
|
-
import { OpaqueColorValue,
|
|
1687
|
+
import type { SymbolWeight, SymbolViewProps } from "expo-symbols";
|
|
1688
|
+
import type { ComponentProps } from "react";
|
|
1689
|
+
import type { OpaqueColorValue, StyleProp, TextStyle } from "react-native";
|
|
1686
1690
|
|
|
1687
1691
|
type IconMapping = Record<
|
|
1688
1692
|
SymbolViewProps["name"],
|
|
@@ -1940,34 +1944,34 @@ module.exports = config;
|
|
|
1940
1944
|
"export:web": "expo export --platform web && node scripts/flatten-assets.mjs"
|
|
1941
1945
|
},
|
|
1942
1946
|
"dependencies": {
|
|
1943
|
-
"@ai-sdk/openai": "^3.0.
|
|
1944
|
-
"@ai-sdk/react": "^3.0.
|
|
1947
|
+
"@ai-sdk/openai": "^3.0.61",
|
|
1948
|
+
"@ai-sdk/react": "^3.0.177",
|
|
1945
1949
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
1946
1950
|
"@assistant-ui/react-native": "workspace:*",
|
|
1947
1951
|
"@expo/vector-icons": "^15.1.1",
|
|
1948
1952
|
"@react-navigation/drawer": "7.9.4",
|
|
1949
1953
|
"@react-navigation/native": "7.1.33",
|
|
1950
|
-
"ai": "^6.0.
|
|
1951
|
-
"expo": "~55.0.
|
|
1952
|
-
"expo-constants": "~55.0.
|
|
1953
|
-
"expo-font": "~55.0.
|
|
1954
|
-
"expo-image-picker": "~55.0.
|
|
1955
|
-
"expo-linking": "~55.0.
|
|
1956
|
-
"expo-router": "~55.0.
|
|
1957
|
-
"expo-server": "~55.0.
|
|
1958
|
-
"expo-splash-screen": "~55.0.
|
|
1959
|
-
"expo-status-bar": "~55.0.
|
|
1960
|
-
"expo-system-ui": "~55.0.
|
|
1954
|
+
"ai": "^6.0.175",
|
|
1955
|
+
"expo": "~55.0.23",
|
|
1956
|
+
"expo-constants": "~55.0.16",
|
|
1957
|
+
"expo-font": "~55.0.7",
|
|
1958
|
+
"expo-image-picker": "~55.0.20",
|
|
1959
|
+
"expo-linking": "~55.0.15",
|
|
1960
|
+
"expo-router": "~55.0.14",
|
|
1961
|
+
"expo-server": "~55.0.9",
|
|
1962
|
+
"expo-splash-screen": "~55.0.20",
|
|
1963
|
+
"expo-status-bar": "~55.0.6",
|
|
1964
|
+
"expo-system-ui": "~55.0.17",
|
|
1961
1965
|
"react": "19.2.0",
|
|
1962
1966
|
"react-dom": "19.2.0",
|
|
1963
|
-
"react-native": "0.83.
|
|
1967
|
+
"react-native": "0.83.6",
|
|
1964
1968
|
"react-native-gesture-handler": "2.30.1",
|
|
1965
1969
|
"react-native-reanimated": "4.2.1",
|
|
1966
1970
|
"react-native-safe-area-context": "5.6.2",
|
|
1967
1971
|
"react-native-screens": "4.23.0",
|
|
1968
1972
|
"react-native-web": "~0.21.2",
|
|
1969
|
-
"react-native-worklets": "0.7.
|
|
1970
|
-
"zod": "^4.3
|
|
1973
|
+
"react-native-worklets": "0.7.4",
|
|
1974
|
+
"zod": "^4.4.3"
|
|
1971
1975
|
},
|
|
1972
1976
|
"devDependencies": {
|
|
1973
1977
|
"@types/react": "~19.2.14",
|
|
@@ -162,8 +162,8 @@ export default function RootLayout({
|
|
|
162
162
|
```tsx
|
|
163
163
|
"use client";
|
|
164
164
|
|
|
165
|
-
import { ThreadMessageLike } from "@assistant-ui/react";
|
|
166
|
-
import { AppendMessage } from "@assistant-ui/react";
|
|
165
|
+
import type { ThreadMessageLike } from "@assistant-ui/react";
|
|
166
|
+
import type { AppendMessage } from "@assistant-ui/react";
|
|
167
167
|
import {
|
|
168
168
|
AssistantRuntimeProvider,
|
|
169
169
|
useExternalStoreRuntime,
|
|
@@ -319,22 +319,22 @@ export default nextConfig;
|
|
|
319
319
|
"@assistant-ui/ui": "workspace:*",
|
|
320
320
|
"class-variance-authority": "^0.7.1",
|
|
321
321
|
"clsx": "^2.1.1",
|
|
322
|
-
"lucide-react": "^1.
|
|
323
|
-
"next": "^16.2.
|
|
322
|
+
"lucide-react": "^1.14.0",
|
|
323
|
+
"next": "^16.2.4",
|
|
324
324
|
"react": "^19.2.5",
|
|
325
325
|
"react-dom": "^19.2.5",
|
|
326
326
|
"tailwind-merge": "^3.5.0"
|
|
327
327
|
},
|
|
328
328
|
"devDependencies": {
|
|
329
329
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
330
|
-
"@tailwindcss/postcss": "^4.2.
|
|
330
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
331
331
|
"@types/node": "^25.6.0",
|
|
332
332
|
"@types/react": "^19.2.14",
|
|
333
333
|
"@types/react-dom": "^19.2.3",
|
|
334
|
-
"postcss": "^8.5.
|
|
335
|
-
"tailwindcss": "^4.2.
|
|
334
|
+
"postcss": "^8.5.14",
|
|
335
|
+
"tailwindcss": "^4.2.4",
|
|
336
336
|
"tw-animate-css": "^1.4.0",
|
|
337
|
-
"typescript": "^6.0.
|
|
337
|
+
"typescript": "^6.0.3"
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|
|
@@ -189,7 +189,7 @@ export default function RootLayout({
|
|
|
189
189
|
"use client";
|
|
190
190
|
|
|
191
191
|
import { AssistantRuntimeProvider } from "@assistant-ui/react";
|
|
192
|
-
import { AttachmentAdapter } from "@assistant-ui/react";
|
|
192
|
+
import type { AttachmentAdapter } from "@assistant-ui/react";
|
|
193
193
|
import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
|
|
194
194
|
import { INTERNAL } from "@assistant-ui/react";
|
|
195
195
|
import { lastAssistantMessageIsCompleteWithToolCalls } from "ai";
|
|
@@ -250,7 +250,7 @@ export function MyRuntimeProvider({
|
|
|
250
250
|
|
|
251
251
|
```tsx
|
|
252
252
|
import dynamic from "next/dynamic";
|
|
253
|
-
import { FC, PropsWithChildren } from "react";
|
|
253
|
+
import type { FC, PropsWithChildren } from "react";
|
|
254
254
|
|
|
255
255
|
const NoSSRWrapper: FC<PropsWithChildren> = (props) => <>{props.children}</>;
|
|
256
256
|
|
|
@@ -276,7 +276,7 @@ import {
|
|
|
276
276
|
import { z } from "zod";
|
|
277
277
|
import { FFmpeg } from "@ffmpeg/ffmpeg";
|
|
278
278
|
import { toBlobURL } from "@ffmpeg/util";
|
|
279
|
-
import { FC, useCallback, useEffect, useRef, useState } from "react";
|
|
279
|
+
import { type FC, useCallback, useEffect, useRef, useState } from "react";
|
|
280
280
|
import {
|
|
281
281
|
CircleCheckIcon,
|
|
282
282
|
DownloadIcon,
|
|
@@ -489,8 +489,10 @@ const FfmpegTool: FC<{ file: File }> = ({ file }) => {
|
|
|
489
489
|
args: { fileName, mimeType },
|
|
490
490
|
result,
|
|
491
491
|
}) {
|
|
492
|
+
// biome-ignore lint/correctness/useHookAtTopLevel: intentional conditional/nested hook usage
|
|
492
493
|
const [blobUrl, setBlobUrl] = useState<string | null>(null);
|
|
493
494
|
|
|
495
|
+
// biome-ignore lint/correctness/useHookAtTopLevel: intentional conditional/nested hook usage
|
|
494
496
|
const readFile = useCallback(async () => {
|
|
495
497
|
const ffmpeg = ffmpegRef.current;
|
|
496
498
|
const data = (await ffmpeg.readFile(
|
|
@@ -499,6 +501,7 @@ const FfmpegTool: FC<{ file: File }> = ({ file }) => {
|
|
|
499
501
|
return URL.createObjectURL(new Blob([data.buffer], { type: mimeType }));
|
|
500
502
|
}, [fileName, mimeType]);
|
|
501
503
|
|
|
504
|
+
// biome-ignore lint/correctness/useHookAtTopLevel: intentional conditional/nested hook usage
|
|
502
505
|
useEffect(() => {
|
|
503
506
|
if (!result?.success) return;
|
|
504
507
|
let revoked = false;
|
|
@@ -551,6 +554,7 @@ const FfmpegTool: FC<{ file: File }> = ({ file }) => {
|
|
|
551
554
|
return (
|
|
552
555
|
<div className="mb-2 flex flex-col gap-3 rounded-lg border px-5 py-4">
|
|
553
556
|
{blobUrl && isImage && (
|
|
557
|
+
// biome-ignore lint/performance/noImgElement: blob URL display
|
|
554
558
|
<img
|
|
555
559
|
src={blobUrl}
|
|
556
560
|
alt={fileName}
|
|
@@ -570,6 +574,7 @@ const FfmpegTool: FC<{ file: File }> = ({ file }) => {
|
|
|
570
574
|
</div>
|
|
571
575
|
)}
|
|
572
576
|
<button
|
|
577
|
+
type="button"
|
|
573
578
|
onClick={handleDownload}
|
|
574
579
|
className="flex w-fit items-center gap-2 rounded-md border bg-background px-4 py-2 text-sm hover:bg-accent"
|
|
575
580
|
>
|
|
@@ -677,33 +682,33 @@ export default nextConfig;
|
|
|
677
682
|
"start": "next start"
|
|
678
683
|
},
|
|
679
684
|
"dependencies": {
|
|
680
|
-
"@ai-sdk/openai": "^3.0.
|
|
685
|
+
"@ai-sdk/openai": "^3.0.61",
|
|
681
686
|
"@assistant-ui/react": "workspace:*",
|
|
682
687
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
683
688
|
"@assistant-ui/react-markdown": "workspace:*",
|
|
684
689
|
"@assistant-ui/ui": "workspace:*",
|
|
685
690
|
"@ffmpeg/ffmpeg": "^0.12.15",
|
|
686
691
|
"@ffmpeg/util": "^0.12.2",
|
|
687
|
-
"ai": "^6.0.
|
|
692
|
+
"ai": "^6.0.175",
|
|
688
693
|
"class-variance-authority": "^0.7.1",
|
|
689
694
|
"clsx": "^2.1.1",
|
|
690
|
-
"lucide-react": "^1.
|
|
691
|
-
"next": "^16.2.
|
|
695
|
+
"lucide-react": "^1.14.0",
|
|
696
|
+
"next": "^16.2.4",
|
|
692
697
|
"react": "^19.2.5",
|
|
693
698
|
"react-dom": "^19.2.5",
|
|
694
699
|
"tailwind-merge": "^3.5.0",
|
|
695
|
-
"zod": "^4.3
|
|
700
|
+
"zod": "^4.4.3"
|
|
696
701
|
},
|
|
697
702
|
"devDependencies": {
|
|
698
703
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
699
|
-
"@tailwindcss/postcss": "^4.2.
|
|
704
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
700
705
|
"@types/node": "^25.6.0",
|
|
701
706
|
"@types/react": "^19.2.14",
|
|
702
707
|
"@types/react-dom": "^19.2.3",
|
|
703
|
-
"postcss": "^8.5.
|
|
704
|
-
"tailwindcss": "^4.2.
|
|
708
|
+
"postcss": "^8.5.14",
|
|
709
|
+
"tailwindcss": "^4.2.4",
|
|
705
710
|
"tw-animate-css": "^1.4.0",
|
|
706
|
-
"typescript": "^6.0.
|
|
711
|
+
"typescript": "^6.0.3"
|
|
707
712
|
}
|
|
708
713
|
}
|
|
709
714
|
|
|
@@ -787,31 +787,31 @@ export default nextConfig;
|
|
|
787
787
|
"start": "next start"
|
|
788
788
|
},
|
|
789
789
|
"dependencies": {
|
|
790
|
-
"@ai-sdk/openai": "^3.0.
|
|
790
|
+
"@ai-sdk/openai": "^3.0.61",
|
|
791
791
|
"@assistant-ui/react": "workspace:*",
|
|
792
792
|
"@assistant-ui/react-ai-sdk": "workspace:*",
|
|
793
793
|
"@assistant-ui/ui": "workspace:*",
|
|
794
|
-
"ai": "^6.0.
|
|
794
|
+
"ai": "^6.0.175",
|
|
795
795
|
"class-variance-authority": "^0.7.1",
|
|
796
796
|
"clsx": "^2.1.1",
|
|
797
|
-
"lucide-react": "^1.
|
|
798
|
-
"next": "^16.2.
|
|
797
|
+
"lucide-react": "^1.14.0",
|
|
798
|
+
"next": "^16.2.4",
|
|
799
799
|
"react": "^19.2.5",
|
|
800
800
|
"react-dom": "^19.2.5",
|
|
801
801
|
"recharts": "^3.8.1",
|
|
802
802
|
"tailwind-merge": "^3.5.0",
|
|
803
|
-
"zod": "^4.3
|
|
803
|
+
"zod": "^4.4.3"
|
|
804
804
|
},
|
|
805
805
|
"devDependencies": {
|
|
806
806
|
"@assistant-ui/x-buildutils": "workspace:*",
|
|
807
|
-
"@tailwindcss/postcss": "^4.2.
|
|
807
|
+
"@tailwindcss/postcss": "^4.2.4",
|
|
808
808
|
"@types/node": "^25.6.0",
|
|
809
809
|
"@types/react": "^19.2.14",
|
|
810
810
|
"@types/react-dom": "^19.2.3",
|
|
811
|
-
"postcss": "^8.5.
|
|
812
|
-
"tailwindcss": "^4.2.
|
|
811
|
+
"postcss": "^8.5.14",
|
|
812
|
+
"tailwindcss": "^4.2.4",
|
|
813
813
|
"tw-animate-css": "^1.4.0",
|
|
814
|
-
"typescript": "^6.0.
|
|
814
|
+
"typescript": "^6.0.3"
|
|
815
815
|
}
|
|
816
816
|
}
|
|
817
817
|
|