e30e75b5d4
Changesets / Create Version PR (push) Has been cancelled
Deploy Shadcn Registry / Deploy Production (push) Has been cancelled
Template Metrics / LOC + Bundle Size (push) Has been cancelled
Code Quality / Oxlint + Oxfmt (push) Has been cancelled
Code Quality / Template Sync (push) Has been cancelled
Code Quality / Build Changed Packages (push) Has been cancelled
Code Quality / Test Changed Packages (push) Has been cancelled
Deploy Expo Example / Deploy Production (push) Has been cancelled
Deploy Ink Example / Deploy Production (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.12) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.12) (push) Has been cancelled
55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
"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 (
|
|
<AssistantRuntimeProvider runtime={runtime}>
|
|
{children}
|
|
</AssistantRuntimeProvider>
|
|
);
|
|
}
|