"use client"; import { AssistantRuntimeProvider, generateId } from "@assistant-ui/react"; import type { AttachmentAdapter } from "@assistant-ui/react"; import { useChatRuntime } from "@assistant-ui/react-ai-sdk"; import { lastAssistantMessageIsCompleteWithToolCalls } from "ai"; const attachmentAdapter: AttachmentAdapter = { accept: "image/*,video/*,audio/*", async add({ file }) { return { id: generateId(), file, type: "file", name: file.name, contentType: file.type, status: { type: "requires-action", reason: "composer-send" }, }; }, async send(attachment) { return { ...attachment, content: [ { type: "text", text: `[User attached a file: ${attachment.name}]`, }, ], status: { type: "complete" }, }; }, async remove() { // noop }, }; export function MyRuntimeProvider({ children, }: Readonly<{ children: React.ReactNode; }>) { const runtime = useChatRuntime({ sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls, adapters: { attachments: attachmentAdapter, }, }); return ( {children} ); }