@assistant-ui/react-ai-sdk 0.5.16 → 0.6.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/rsc/useVercelRSCRuntime.tsx","../src/rsc/getVercelRSCMessage.tsx","../src/ui/use-chat/useVercelUseChatRuntime.tsx","../src/ui/use-chat/VercelUseChatRuntime.tsx","../src/ui/use-chat/VercelUseChatThreadRuntime.tsx","../src/ui/getVercelAIMessage.tsx","../src/ui/utils/sliceMessagesUntil.tsx","../src/ui/utils/useVercelAIComposerSync.tsx","../src/ui/utils/useVercelAIThreadSync.tsx","../src/utils/ThreadMessageConverter.ts","../src/ui/use-assistant/useVercelUseAssistantRuntime.tsx","../src/ui/use-assistant/VercelUseAssistantRuntime.tsx","../src/ui/use-assistant/VercelUseAssistantThreadRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport type { VercelRSCAdapter } from \"./VercelRSCAdapter\";\nimport {\n ExternalStoreAdapter,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { VercelRSCMessage } from \"./VercelRSCMessage\";\n\nconst vercelToThreadMessage = <T,>(\n converter: (message: T) => VercelRSCMessage,\n rawMessage: T,\n): ThreadMessageLike => {\n const message = converter(rawMessage);\n\n return {\n id: message.id,\n role: message.role,\n content: [{ type: \"ui\", display: message.display }],\n createdAt: message.createdAt,\n };\n};\n\nexport const useVercelRSCRuntime = <T extends WeakKey>(\n adapter: VercelRSCAdapter<T>,\n) => {\n const onNew = adapter.onNew ?? adapter.append;\n if (!onNew)\n throw new Error(\"You must pass a onNew function to useVercelRSCRuntime\");\n const eAdapter: ExternalStoreAdapter<any> = {\n isRunning: adapter.isRunning,\n messages: adapter.messages,\n onNew,\n onEdit: adapter.onEdit ?? adapter.edit,\n onReload: adapter.onReload ?? adapter.reload,\n onCopy: null,\n convertMessage: (m: T) =>\n vercelToThreadMessage(\n adapter.convertMessage ?? ((m) => m as VercelRSCMessage),\n m,\n ),\n };\n\n const runtime = useExternalStoreRuntime(eAdapter);\n return runtime;\n};\n","import {\n getExternalStoreMessage,\n type ThreadMessage,\n} from \"@assistant-ui/react\";\n\nexport const symbolInnerRSCMessage = Symbol(\"innerVercelRSCMessage\");\n\nexport const getVercelRSCMessage = (message: ThreadMessage) => {\n return getExternalStoreMessage(message);\n};\n","import type { useChat } from \"ai/react\";\nimport { useEffect, useInsertionEffect, useState } from \"react\";\nimport { VercelUseChatRuntime } from \"./VercelUseChatRuntime\";\n\nexport const useVercelUseChatRuntime = (\n chatHelpers: ReturnType<typeof useChat>,\n) => {\n const [runtime] = useState(() => new VercelUseChatRuntime(chatHelpers));\n\n useInsertionEffect(() => {\n runtime.vercel = chatHelpers;\n });\n useEffect(() => {\n runtime.onVercelUpdated();\n });\n\n return runtime;\n};\n","import { INTERNAL, ModelConfigProvider } from \"@assistant-ui/react\";\nimport { useChat } from \"ai/react\";\nimport { VercelUseChatThreadRuntime } from \"./VercelUseChatThreadRuntime\";\n\nconst { ProxyConfigProvider, BaseAssistantRuntime } = INTERNAL;\n\nexport class VercelUseChatRuntime extends BaseAssistantRuntime<VercelUseChatThreadRuntime> {\n private readonly _proxyConfigProvider = new ProxyConfigProvider();\n\n constructor(vercel: ReturnType<typeof useChat>) {\n super(new VercelUseChatThreadRuntime(vercel));\n }\n\n public set vercel(vercel: ReturnType<typeof useChat>) {\n this.thread.vercel = vercel;\n }\n\n public onVercelUpdated() {\n return this.thread.onVercelUpdated();\n }\n\n public getModelConfig() {\n return this._proxyConfigProvider.getModelConfig();\n }\n\n public registerModelConfigProvider(provider: ModelConfigProvider) {\n return this._proxyConfigProvider.registerModelConfigProvider(provider);\n }\n\n public switchToThread(threadId: string | null) {\n if (threadId) {\n throw new Error(\n \"VercelAIRuntime does not yet support switching threads.\",\n );\n }\n\n // clear the vercel state (otherwise, it will be captured by the MessageRepository)\n this.thread.vercel.messages = [];\n this.thread.vercel.input = \"\";\n this.thread.vercel.setMessages([]);\n this.thread.vercel.setInput(\"\");\n\n this.thread = new VercelUseChatThreadRuntime(this.thread.vercel);\n }\n}\n","import {\n type ReactThreadRuntime,\n type Unsubscribe,\n type AppendMessage,\n type ThreadMessage,\n AddToolResultOptions,\n INTERNAL,\n} from \"@assistant-ui/react\";\nimport type { Message } from \"ai\";\nimport { type StoreApi, type UseBoundStore, create } from \"zustand\";\nimport { useChat } from \"ai/react\";\nimport { getVercelAIMessage } from \"../getVercelAIMessage\";\nimport { sliceMessagesUntil } from \"../utils/sliceMessagesUntil\";\nimport { useVercelAIComposerSync } from \"../utils/useVercelAIComposerSync\";\nimport { useVercelAIThreadSync } from \"../utils/useVercelAIThreadSync\";\n\nconst { MessageRepository } = INTERNAL;\n\nexport const hasUpcomingMessage = (\n isRunning: boolean,\n messages: ThreadMessage[],\n) => {\n return isRunning && messages[messages.length - 1]?.role !== \"assistant\";\n};\n\nconst CAPABILITIES = Object.freeze({\n switchToBranch: true,\n edit: true,\n reload: true,\n cancel: true,\n copy: true,\n});\n\nexport class VercelUseChatThreadRuntime implements ReactThreadRuntime {\n private _subscriptions = new Set<() => void>();\n private repository = new MessageRepository();\n private assistantOptimisticId: string | null = null;\n\n private useVercel: UseBoundStore<\n StoreApi<{ vercel: ReturnType<typeof useChat> }>\n >;\n\n public readonly capabilities = CAPABILITIES;\n\n public messages: ThreadMessage[] = [];\n public readonly isDisabled = false;\n\n public readonly composer = {\n text: \"\",\n setText: (value: string) => {\n this.composer.text = value;\n\n for (const callback of this._subscriptions) callback();\n },\n };\n\n constructor(public vercel: ReturnType<typeof useChat>) {\n this.useVercel = create(() => ({\n vercel,\n }));\n }\n\n public getBranches(messageId: string): string[] {\n return this.repository.getBranches(messageId);\n }\n\n public switchToBranch(branchId: string): void {\n this.repository.switchToBranch(branchId);\n this.updateVercelMessages(this.repository.getMessages());\n }\n\n public async append(message: AppendMessage): Promise<void> {\n // add user message\n if (message.content.length !== 1 || message.content[0]?.type !== \"text\")\n throw new Error(\n \"Only text content is supported by VercelUseChatRuntime. Use the Edge runtime for image support.\",\n );\n\n const newMessages = sliceMessagesUntil(\n this.vercel.messages,\n message.parentId,\n );\n this.vercel.setMessages(newMessages);\n\n await this.vercel.append({\n role: message.role,\n content: message.content[0].text,\n });\n }\n\n public async startRun(parentId: string | null): Promise<void> {\n const newMessages = sliceMessagesUntil(this.vercel.messages, parentId);\n this.vercel.setMessages(newMessages);\n\n await this.vercel.reload();\n }\n\n public cancelRun(): void {\n const previousMessage = this.vercel.messages.at(-1);\n\n this.vercel.stop();\n\n if (this.assistantOptimisticId) {\n this.repository.deleteMessage(this.assistantOptimisticId);\n this.assistantOptimisticId = null;\n }\n\n let messages = this.repository.getMessages();\n if (\n previousMessage?.role === \"user\" &&\n previousMessage.id === messages.at(-1)?.id // ensure the previous message is a leaf node\n ) {\n this.vercel.setInput(previousMessage.content);\n this.repository.deleteMessage(previousMessage.id);\n\n messages = this.repository.getMessages();\n }\n\n // resync messages\n setTimeout(() => {\n this.updateVercelMessages(messages);\n }, 0);\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private updateVercelMessages = (messages: ThreadMessage[]) => {\n this.vercel.setMessages(\n messages\n .flatMap(getVercelAIMessage)\n .filter((m): m is Message => m != null),\n );\n };\n\n public onVercelUpdated() {\n if (this.useVercel.getState().vercel !== this.vercel) {\n this.useVercel.setState({ vercel: this.vercel });\n }\n }\n\n private updateData = (isRunning: boolean, vm: ThreadMessage[]) => {\n for (let i = 0; i < vm.length; i++) {\n const message = vm[i]!;\n const parent = vm[i - 1];\n this.repository.addOrUpdateMessage(parent?.id ?? null, message);\n }\n\n if (this.assistantOptimisticId) {\n this.repository.deleteMessage(this.assistantOptimisticId);\n this.assistantOptimisticId = null;\n }\n\n if (hasUpcomingMessage(isRunning, vm)) {\n this.assistantOptimisticId = this.repository.appendOptimisticMessage(\n vm.at(-1)?.id ?? null,\n {\n role: \"assistant\",\n content: [],\n },\n );\n }\n\n this.repository.resetHead(\n this.assistantOptimisticId ?? vm.at(-1)?.id ?? null,\n );\n\n this.messages = this.repository.getMessages();\n\n for (const callback of this._subscriptions) callback();\n };\n\n unstable_synchronizer = () => {\n const { vercel } = this.useVercel();\n\n useVercelAIThreadSync(vercel, this.updateData);\n useVercelAIComposerSync(vercel);\n\n return null;\n };\n\n addToolResult({ toolCallId, result }: AddToolResultOptions) {\n this.vercel.addToolResult({ toolCallId, result });\n }\n}\n","import type { ThreadMessage } from \"@assistant-ui/react\";\nimport type { Message } from \"ai\";\n\nexport const symbolInnerAIMessage = Symbol(\"innerVercelAIUIMessage\");\n\nexport type VercelAIThreadMessage = ThreadMessage & {\n [symbolInnerAIMessage]?: Message[];\n};\n\nexport const getVercelAIMessage = (message: ThreadMessage) => {\n return (message as VercelAIThreadMessage)[symbolInnerAIMessage];\n};\n","import type { Message } from \"ai\";\n\nexport const sliceMessagesUntil = (\n messages: Message[],\n messageId: string | null,\n) => {\n if (messageId == null) return [];\n\n let messageIdx = messages.findIndex((m) => m.id === messageId);\n if (messageIdx === -1)\n throw new Error(\n \"useVercelAIThreadState: Message not found. This is liekly an internal bug in assistant-ui.\",\n );\n\n while (messages[messageIdx + 1]?.role === \"assistant\") {\n messageIdx++;\n }\n\n return messages.slice(0, messageIdx + 1);\n};\n","import { useThreadContext, ComposerState } from \"@assistant-ui/react\";\nimport { useEffect } from \"react\";\nimport type { VercelHelpers } from \"./VercelHelpers\";\nimport { StoreApi } from \"zustand\";\n\n// two way sync between vercel helpers input state and composer text state\nexport const useVercelAIComposerSync = (vercel: VercelHelpers) => {\n const { useComposer, useThreadRuntime } = useThreadContext();\n\n useEffect(() => {\n useThreadRuntime.getState().composer.setText(vercel.input);\n }, [useComposer, useThreadRuntime, vercel.input]);\n\n useEffect(() => {\n (useComposer as unknown as StoreApi<ComposerState>).setState({\n setText: (t) => {\n vercel.setInput(t);\n useThreadRuntime.getState().composer.setText(t);\n },\n });\n }, [useComposer, useThreadRuntime, vercel]);\n};\n","import type {\n TextContentPart,\n ThreadMessage,\n ToolCallContentPart,\n MessageStatus,\n ThreadAssistantMessage,\n} from \"@assistant-ui/react\";\nimport type { Message } from \"ai\";\nimport { useEffect, useMemo } from \"react\";\nimport {\n type ConverterCallback,\n ThreadMessageConverter,\n} from \"../../utils/ThreadMessageConverter\";\nimport {\n type VercelAIThreadMessage,\n symbolInnerAIMessage,\n} from \"../getVercelAIMessage\";\nimport type { VercelHelpers } from \"./VercelHelpers\";\n\nconst getIsRunning = (vercel: VercelHelpers) => {\n if (\"isLoading\" in vercel) return vercel.isLoading;\n return vercel.status === \"in_progress\";\n};\n\nconst vercelToThreadMessage = (\n messages: Message[],\n status: MessageStatus,\n): VercelAIThreadMessage => {\n const firstMessage = messages[0];\n if (!firstMessage) throw new Error(\"No messages found\");\n\n const common = {\n id: firstMessage.id,\n createdAt: firstMessage.createdAt ?? new Date(),\n [symbolInnerAIMessage]: messages,\n };\n\n switch (firstMessage.role) {\n case \"user\":\n if (messages.length > 1) {\n throw new Error(\n \"Multiple user messages found. This is likely an internal bug in assistant-ui.\",\n );\n }\n\n return {\n ...common,\n role: \"user\",\n content: [{ type: \"text\", text: firstMessage.content }],\n };\n\n case \"system\":\n return {\n ...common,\n role: \"system\",\n content: [{ type: \"text\", text: firstMessage.content }],\n };\n\n case \"data\":\n case \"assistant\": {\n const res: ThreadAssistantMessage = {\n ...common,\n role: \"assistant\",\n content: messages.flatMap((message) => {\n return [\n ...(message.content\n ? [{ type: \"text\", text: message.content } as TextContentPart]\n : []),\n ...(message.toolInvocations?.map(\n (t) =>\n ({\n type: \"tool-call\",\n toolName: t.toolName,\n toolCallId: t.toolCallId,\n argsText: JSON.stringify(t.args),\n args: t.args,\n result: \"result\" in t ? t.result : undefined,\n }) satisfies ToolCallContentPart,\n ) ?? []),\n ...(typeof message.data === \"object\" &&\n !Array.isArray(message.data) &&\n message.data?.[\"type\"] === \"tool-call\"\n ? [message.data as ToolCallContentPart]\n : []),\n ];\n }),\n status,\n };\n\n for (const message of messages) {\n if (\n typeof message.data === \"object\" &&\n !Array.isArray(message.data) &&\n message.data?.[\"type\"] === \"tool-result\"\n ) {\n const toolCallId = message.data[\"toolCallId\"];\n const toolContent = res.content.find(\n (c) => c.type === \"tool-call\" && c.toolCallId === toolCallId,\n ) as ToolCallContentPart | undefined;\n if (!toolContent) throw new Error(\"Tool call not found\");\n toolContent.result = message.data[\"result\"];\n }\n }\n\n return res;\n }\n\n default:\n const _unsupported: \"function\" | \"tool\" = firstMessage.role;\n throw new Error(\n `You have a message with an unsupported role. The role ${_unsupported} is not supported.`,\n );\n }\n};\n\ntype Chunk = [Message, ...Message[]];\nconst hasItems = (messages: Message[]): messages is Chunk =>\n messages.length > 0;\n\nconst chunkedMessages = (messages: Message[]): Chunk[] => {\n const chunks: Chunk[] = [];\n let currentChunk: Message[] = [];\n\n for (const message of messages) {\n if (message.role === \"assistant\" || message.role === \"data\") {\n currentChunk.push(message);\n } else {\n if (hasItems(currentChunk)) {\n chunks.push(currentChunk);\n currentChunk = [];\n }\n chunks.push([message]);\n }\n }\n\n if (hasItems(currentChunk)) {\n chunks.push(currentChunk);\n }\n\n return chunks;\n};\n\nconst shallowArrayEqual = (a: unknown[], b: unknown[]) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\ntype UpdateDataCallback = (isRunning: boolean, vm: ThreadMessage[]) => void;\n\nexport const useVercelAIThreadSync = (\n vercel: VercelHelpers,\n updateData: UpdateDataCallback,\n) => {\n const isRunning = getIsRunning(vercel);\n\n const converter = useMemo(() => new ThreadMessageConverter(), []);\n\n useEffect(() => {\n const lastMessageId = vercel.messages.at(-1)?.id;\n const convertCallback: ConverterCallback<Chunk> = (messages, cache) => {\n const status: MessageStatus =\n lastMessageId === messages[0].id && isRunning\n ? {\n type: \"running\",\n }\n : {\n type: \"complete\",\n reason: \"unknown\",\n };\n\n if (\n cache &&\n shallowArrayEqual(cache.content, messages) &&\n (cache.role !== \"assistant\" || cache.status.type === status.type)\n )\n return cache;\n\n return vercelToThreadMessage(messages, status);\n };\n\n const messages = converter.convertMessages(\n chunkedMessages(vercel.messages),\n convertCallback,\n (m) => m[0],\n );\n\n updateData(isRunning, messages);\n }, [updateData, isRunning, vercel.messages, converter]);\n};\n","import type { ThreadMessage } from \"@assistant-ui/react\";\n\nexport type ConverterCallback<TIn> = (\n message: TIn,\n cache: ThreadMessage | undefined,\n) => ThreadMessage;\n\nexport class ThreadMessageConverter {\n private readonly cache = new WeakMap<WeakKey, ThreadMessage>();\n\n convertMessages<TIn extends WeakKey>(\n messages: TIn[],\n converter: ConverterCallback<TIn>,\n keyMapper: (m: TIn) => WeakKey = (key) => key,\n ): ThreadMessage[] {\n return messages.map((m) => {\n const key = keyMapper(m);\n const cached = this.cache.get(key);\n const newMessage = converter(m, cached);\n this.cache.set(key, newMessage);\n return newMessage;\n });\n }\n}\n","import type { useAssistant } from \"ai/react\";\nimport { useEffect, useInsertionEffect, useState } from \"react\";\nimport { VercelUseAssistantRuntime } from \"./VercelUseAssistantRuntime\";\n\nexport const useVercelUseAssistantRuntime = (\n assistantHelpers: ReturnType<typeof useAssistant>,\n) => {\n const [runtime] = useState(\n () => new VercelUseAssistantRuntime(assistantHelpers),\n );\n\n useInsertionEffect(() => {\n runtime.vercel = assistantHelpers;\n });\n useEffect(() => {\n runtime.onVercelUpdated();\n });\n\n return runtime;\n};\n","import {\n type ThreadMessage,\n INTERNAL,\n ModelConfigProvider,\n} from \"@assistant-ui/react\";\nimport { useAssistant } from \"ai/react\";\nimport { VercelUseAssistantThreadRuntime } from \"./VercelUseAssistantThreadRuntime\";\n\nconst { ProxyConfigProvider, BaseAssistantRuntime } = INTERNAL;\n\nexport const hasUpcomingMessage = (\n isRunning: boolean,\n messages: ThreadMessage[],\n) => {\n return isRunning && messages[messages.length - 1]?.role !== \"assistant\";\n};\n\nexport class VercelUseAssistantRuntime extends BaseAssistantRuntime<VercelUseAssistantThreadRuntime> {\n private readonly _proxyConfigProvider = new ProxyConfigProvider();\n\n constructor(vercel: ReturnType<typeof useAssistant>) {\n super(new VercelUseAssistantThreadRuntime(vercel));\n }\n\n public set vercel(vercel: ReturnType<typeof useAssistant>) {\n this.thread.vercel = vercel;\n }\n\n public onVercelUpdated() {\n return this.thread.onVercelUpdated();\n }\n\n public getModelConfig() {\n return this._proxyConfigProvider.getModelConfig();\n }\n\n public registerModelConfigProvider(provider: ModelConfigProvider) {\n return this._proxyConfigProvider.registerModelConfigProvider(provider);\n }\n\n public switchToThread(threadId: string | null) {\n if (threadId) {\n throw new Error(\"VercelAIRuntime does not yet support switching threads\");\n }\n\n // clear the vercel state (otherwise, it will be captured by the MessageRepository)\n this.thread.vercel.messages = [];\n this.thread.vercel.input = \"\";\n this.thread.vercel.setMessages([]);\n this.thread.vercel.setInput(\"\");\n\n this.thread = new VercelUseAssistantThreadRuntime(this.thread.vercel);\n }\n}\n","import {\n type ReactThreadRuntime,\n type Unsubscribe,\n type AppendMessage,\n type ThreadMessage,\n} from \"@assistant-ui/react\";\nimport { type StoreApi, type UseBoundStore, create } from \"zustand\";\nimport { useVercelAIComposerSync } from \"../utils/useVercelAIComposerSync\";\nimport { useVercelAIThreadSync } from \"../utils/useVercelAIThreadSync\";\nimport { useAssistant } from \"ai/react\";\nimport { hasUpcomingMessage } from \"./VercelUseAssistantRuntime\";\n\nconst EMPTY_BRANCHES: readonly string[] = Object.freeze([]);\n\nconst CAPABILITIES = Object.freeze({\n switchToBranch: false,\n edit: false,\n reload: false,\n cancel: false,\n copy: true,\n});\n\nexport class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {\n private _subscriptions = new Set<() => void>();\n\n public readonly capabilities = CAPABILITIES;\n\n private useVercel: UseBoundStore<\n StoreApi<{ vercel: ReturnType<typeof useAssistant> }>\n >;\n\n public messages: readonly ThreadMessage[] = [];\n\n public readonly composer = {\n text: \"\",\n setText: (value: string) => {\n this.composer.text = value;\n\n for (const callback of this._subscriptions) callback();\n },\n };\n\n public readonly isDisabled = false;\n\n constructor(public vercel: ReturnType<typeof useAssistant>) {\n this.useVercel = create(() => ({\n vercel,\n }));\n }\n\n public getBranches(): readonly string[] {\n return EMPTY_BRANCHES;\n }\n\n public switchToBranch(): void {\n throw new Error(\n \"VercelUseAssistantRuntime does not support switching branches.\",\n );\n }\n\n public async append(message: AppendMessage): Promise<void> {\n // add user message\n if (message.role !== \"user\")\n throw new Error(\n \"Only appending user messages are supported in VercelUseAssistantRuntime. This is likely an internal bug in assistant-ui.\",\n );\n if (message.content.length !== 1 || message.content[0]?.type !== \"text\")\n throw new Error(\"VercelUseAssistantRuntime only supports text content.\");\n\n if (message.parentId !== (this.messages.at(-1)?.id ?? null))\n throw new Error(\n \"VercelUseAssistantRuntime does not support editing messages.\",\n );\n\n await this.vercel.append({\n role: \"user\",\n content: message.content[0].text,\n });\n }\n\n public async startRun(): Promise<void> {\n throw new Error(\"VercelUseAssistantRuntime does not support reloading.\");\n }\n\n public cancelRun(): void {\n const previousMessage = this.vercel.messages.at(-1);\n\n this.vercel.stop();\n if (previousMessage?.role === \"user\") {\n this.vercel.setInput(previousMessage.content);\n }\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n public onVercelUpdated() {\n if (this.useVercel.getState().vercel !== this.vercel) {\n this.useVercel.setState({ vercel: this.vercel });\n }\n }\n\n private updateData = (isRunning: boolean, vm: ThreadMessage[]) => {\n if (hasUpcomingMessage(isRunning, vm)) {\n vm.push({\n id: \"__optimistic__result\",\n createdAt: new Date(),\n status: { type: \"running\" },\n role: \"assistant\",\n content: [],\n });\n }\n\n this.messages = vm;\n\n for (const callback of this._subscriptions) callback();\n };\n\n unstable_synchronizer = () => {\n const { vercel } = this.useVercel();\n\n useVercelAIThreadSync(vercel, this.updateData);\n useVercelAIComposerSync(vercel);\n\n return null;\n };\n\n addToolResult() {\n throw new Error(\n \"VercelUseAssistantRuntime does not support adding tool results.\",\n );\n }\n}\n"],"mappings":";AAGA;AAAA,EAGE;AAAA,OACK;AAGP,IAAM,wBAAwB,CAC5B,WACA,eACsB;AACtB,QAAM,UAAU,UAAU,UAAU;AAEpC,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ,MAAM,QAAQ;AAAA,IACd,SAAS,CAAC,EAAE,MAAM,MAAM,SAAS,QAAQ,QAAQ,CAAC;AAAA,IAClD,WAAW,QAAQ;AAAA,EACrB;AACF;AAEO,IAAM,sBAAsB,CACjC,YACG;AACH,QAAM,QAAQ,QAAQ,SAAS,QAAQ;AACvC,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,uDAAuD;AACzE,QAAM,WAAsC;AAAA,IAC1C,WAAW,QAAQ;AAAA,IACnB,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA,QAAQ,QAAQ,UAAU,QAAQ;AAAA,IAClC,UAAU,QAAQ,YAAY,QAAQ;AAAA,IACtC,QAAQ;AAAA,IACR,gBAAgB,CAAC,MACf;AAAA,MACE,QAAQ,mBAAmB,CAACA,OAAMA;AAAA,MAClC;AAAA,IACF;AAAA,EACJ;AAEA,QAAM,UAAU,wBAAwB,QAAQ;AAChD,SAAO;AACT;;;AC9CA;AAAA,EACE;AAAA,OAEK;AAEA,IAAM,wBAAwB,OAAO,uBAAuB;AAE5D,IAAM,sBAAsB,CAAC,YAA2B;AAC7D,SAAO,wBAAwB,OAAO;AACxC;;;ACRA,SAAS,aAAAC,YAAW,oBAAoB,gBAAgB;;;ACDxD,SAAS,YAAAC,iBAAqC;;;ACA9C;AAAA,EAME;AAAA,OACK;AAEP,SAA4C,cAAc;;;ACNnD,IAAM,uBAAuB,OAAO,wBAAwB;AAM5D,IAAM,qBAAqB,CAAC,YAA2B;AAC5D,SAAQ,QAAkC,oBAAoB;AAChE;;;ACTO,IAAM,qBAAqB,CAChC,UACA,cACG;AACH,MAAI,aAAa,KAAM,QAAO,CAAC;AAE/B,MAAI,aAAa,SAAS,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS;AAC7D,MAAI,eAAe;AACjB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAEF,SAAO,SAAS,aAAa,CAAC,GAAG,SAAS,aAAa;AACrD;AAAA,EACF;AAEA,SAAO,SAAS,MAAM,GAAG,aAAa,CAAC;AACzC;;;ACnBA,SAAS,wBAAuC;AAChD,SAAS,iBAAiB;AAKnB,IAAM,0BAA0B,CAAC,WAA0B;AAChE,QAAM,EAAE,aAAa,iBAAiB,IAAI,iBAAiB;AAE3D,YAAU,MAAM;AACd,qBAAiB,SAAS,EAAE,SAAS,QAAQ,OAAO,KAAK;AAAA,EAC3D,GAAG,CAAC,aAAa,kBAAkB,OAAO,KAAK,CAAC;AAEhD,YAAU,MAAM;AACd,IAAC,YAAmD,SAAS;AAAA,MAC3D,SAAS,CAAC,MAAM;AACd,eAAO,SAAS,CAAC;AACjB,yBAAiB,SAAS,EAAE,SAAS,QAAQ,CAAC;AAAA,MAChD;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,aAAa,kBAAkB,MAAM,CAAC;AAC5C;;;ACbA,SAAS,aAAAC,YAAW,eAAe;;;ACD5B,IAAM,yBAAN,MAA6B;AAAA,EACjB,QAAQ,oBAAI,QAAgC;AAAA,EAE7D,gBACE,UACA,WACA,YAAiC,CAAC,QAAQ,KACzB;AACjB,WAAO,SAAS,IAAI,CAAC,MAAM;AACzB,YAAM,MAAM,UAAU,CAAC;AACvB,YAAM,SAAS,KAAK,MAAM,IAAI,GAAG;AACjC,YAAM,aAAa,UAAU,GAAG,MAAM;AACtC,WAAK,MAAM,IAAI,KAAK,UAAU;AAC9B,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;;;ADJA,IAAM,eAAe,CAAC,WAA0B;AAC9C,MAAI,eAAe,OAAQ,QAAO,OAAO;AACzC,SAAO,OAAO,WAAW;AAC3B;AAEA,IAAMC,yBAAwB,CAC5B,UACA,WAC0B;AAC1B,QAAM,eAAe,SAAS,CAAC;AAC/B,MAAI,CAAC,aAAc,OAAM,IAAI,MAAM,mBAAmB;AAEtD,QAAM,SAAS;AAAA,IACb,IAAI,aAAa;AAAA,IACjB,WAAW,aAAa,aAAa,oBAAI,KAAK;AAAA,IAC9C,CAAC,oBAAoB,GAAG;AAAA,EAC1B;AAEA,UAAQ,aAAa,MAAM;AAAA,IACzB,KAAK;AACH,UAAI,SAAS,SAAS,GAAG;AACvB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,MAAM;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,aAAa,QAAQ,CAAC;AAAA,MACxD;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,MAAM;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,aAAa,QAAQ,CAAC;AAAA,MACxD;AAAA,IAEF,KAAK;AAAA,IACL,KAAK,aAAa;AAChB,YAAM,MAA8B;AAAA,QAClC,GAAG;AAAA,QACH,MAAM;AAAA,QACN,SAAS,SAAS,QAAQ,CAAC,YAAY;AACrC,iBAAO;AAAA,YACL,GAAI,QAAQ,UACR,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,QAAQ,CAAoB,IAC3D,CAAC;AAAA,YACL,GAAI,QAAQ,iBAAiB;AAAA,cAC3B,CAAC,OACE;AAAA,gBACC,MAAM;AAAA,gBACN,UAAU,EAAE;AAAA,gBACZ,YAAY,EAAE;AAAA,gBACd,UAAU,KAAK,UAAU,EAAE,IAAI;AAAA,gBAC/B,MAAM,EAAE;AAAA,gBACR,QAAQ,YAAY,IAAI,EAAE,SAAS;AAAA,cACrC;AAAA,YACJ,KAAK,CAAC;AAAA,YACN,GAAI,OAAO,QAAQ,SAAS,YAC5B,CAAC,MAAM,QAAQ,QAAQ,IAAI,KAC3B,QAAQ,OAAO,MAAM,MAAM,cACvB,CAAC,QAAQ,IAA2B,IACpC,CAAC;AAAA,UACP;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAEA,iBAAW,WAAW,UAAU;AAC9B,YACE,OAAO,QAAQ,SAAS,YACxB,CAAC,MAAM,QAAQ,QAAQ,IAAI,KAC3B,QAAQ,OAAO,MAAM,MAAM,eAC3B;AACA,gBAAM,aAAa,QAAQ,KAAK,YAAY;AAC5C,gBAAM,cAAc,IAAI,QAAQ;AAAA,YAC9B,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,eAAe;AAAA,UACpD;AACA,cAAI,CAAC,YAAa,OAAM,IAAI,MAAM,qBAAqB;AACvD,sBAAY,SAAS,QAAQ,KAAK,QAAQ;AAAA,QAC5C;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA;AACE,YAAM,eAAoC,aAAa;AACvD,YAAM,IAAI;AAAA,QACR,yDAAyD,YAAY;AAAA,MACvE;AAAA,EACJ;AACF;AAGA,IAAM,WAAW,CAAC,aAChB,SAAS,SAAS;AAEpB,IAAM,kBAAkB,CAAC,aAAiC;AACxD,QAAM,SAAkB,CAAC;AACzB,MAAI,eAA0B,CAAC;AAE/B,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,SAAS,eAAe,QAAQ,SAAS,QAAQ;AAC3D,mBAAa,KAAK,OAAO;AAAA,IAC3B,OAAO;AACL,UAAI,SAAS,YAAY,GAAG;AAC1B,eAAO,KAAK,YAAY;AACxB,uBAAe,CAAC;AAAA,MAClB;AACA,aAAO,KAAK,CAAC,OAAO,CAAC;AAAA,IACvB;AAAA,EACF;AAEA,MAAI,SAAS,YAAY,GAAG;AAC1B,WAAO,KAAK,YAAY;AAAA,EAC1B;AAEA,SAAO;AACT;AAEA,IAAM,oBAAoB,CAAC,GAAc,MAAiB;AACxD,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAG,QAAO;AAAA,EAC5B;AACA,SAAO;AACT;AAIO,IAAM,wBAAwB,CACnC,QACA,eACG;AACH,QAAM,YAAY,aAAa,MAAM;AAErC,QAAM,YAAY,QAAQ,MAAM,IAAI,uBAAuB,GAAG,CAAC,CAAC;AAEhE,EAAAC,WAAU,MAAM;AACd,UAAM,gBAAgB,OAAO,SAAS,GAAG,EAAE,GAAG;AAC9C,UAAM,kBAA4C,CAACC,WAAU,UAAU;AACrE,YAAM,SACJ,kBAAkBA,UAAS,CAAC,EAAE,MAAM,YAChC;AAAA,QACE,MAAM;AAAA,MACR,IACA;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAEN,UACE,SACA,kBAAkB,MAAM,SAASA,SAAQ,MACxC,MAAM,SAAS,eAAe,MAAM,OAAO,SAAS,OAAO;AAE5D,eAAO;AAET,aAAOF,uBAAsBE,WAAU,MAAM;AAAA,IAC/C;AAEA,UAAM,WAAW,UAAU;AAAA,MACzB,gBAAgB,OAAO,QAAQ;AAAA,MAC/B;AAAA,MACA,CAAC,MAAM,EAAE,CAAC;AAAA,IACZ;AAEA,eAAW,WAAW,QAAQ;AAAA,EAChC,GAAG,CAAC,YAAY,WAAW,OAAO,UAAU,SAAS,CAAC;AACxD;;;AJ/KA,IAAM,EAAE,kBAAkB,IAAI;AAEvB,IAAM,qBAAqB,CAChC,WACA,aACG;AACH,SAAO,aAAa,SAAS,SAAS,SAAS,CAAC,GAAG,SAAS;AAC9D;AAEA,IAAM,eAAe,OAAO,OAAO;AAAA,EACjC,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AACR,CAAC;AAEM,IAAM,6BAAN,MAA+D;AAAA,EAuBpE,YAAmB,QAAoC;AAApC;AACjB,SAAK,YAAY,OAAO,OAAO;AAAA,MAC7B;AAAA,IACF,EAAE;AAAA,EACJ;AAAA,EA1BQ,iBAAiB,oBAAI,IAAgB;AAAA,EACrC,aAAa,IAAI,kBAAkB;AAAA,EACnC,wBAAuC;AAAA,EAEvC;AAAA,EAIQ,eAAe;AAAA,EAExB,WAA4B,CAAC;AAAA,EACpB,aAAa;AAAA,EAEb,WAAW;AAAA,IACzB,MAAM;AAAA,IACN,SAAS,CAAC,UAAkB;AAC1B,WAAK,SAAS,OAAO;AAErB,iBAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,IACvD;AAAA,EACF;AAAA,EAQO,YAAY,WAA6B;AAC9C,WAAO,KAAK,WAAW,YAAY,SAAS;AAAA,EAC9C;AAAA,EAEO,eAAe,UAAwB;AAC5C,SAAK,WAAW,eAAe,QAAQ;AACvC,SAAK,qBAAqB,KAAK,WAAW,YAAY,CAAC;AAAA,EACzD;AAAA,EAEA,MAAa,OAAO,SAAuC;AAEzD,QAAI,QAAQ,QAAQ,WAAW,KAAK,QAAQ,QAAQ,CAAC,GAAG,SAAS;AAC/D,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,UAAM,cAAc;AAAA,MAClB,KAAK,OAAO;AAAA,MACZ,QAAQ;AAAA,IACV;AACA,SAAK,OAAO,YAAY,WAAW;AAEnC,UAAM,KAAK,OAAO,OAAO;AAAA,MACvB,MAAM,QAAQ;AAAA,MACd,SAAS,QAAQ,QAAQ,CAAC,EAAE;AAAA,IAC9B,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,SAAS,UAAwC;AAC5D,UAAM,cAAc,mBAAmB,KAAK,OAAO,UAAU,QAAQ;AACrE,SAAK,OAAO,YAAY,WAAW;AAEnC,UAAM,KAAK,OAAO,OAAO;AAAA,EAC3B;AAAA,EAEO,YAAkB;AACvB,UAAM,kBAAkB,KAAK,OAAO,SAAS,GAAG,EAAE;AAElD,SAAK,OAAO,KAAK;AAEjB,QAAI,KAAK,uBAAuB;AAC9B,WAAK,WAAW,cAAc,KAAK,qBAAqB;AACxD,WAAK,wBAAwB;AAAA,IAC/B;AAEA,QAAI,WAAW,KAAK,WAAW,YAAY;AAC3C,QACE,iBAAiB,SAAS,UAC1B,gBAAgB,OAAO,SAAS,GAAG,EAAE,GAAG,IACxC;AACA,WAAK,OAAO,SAAS,gBAAgB,OAAO;AAC5C,WAAK,WAAW,cAAc,gBAAgB,EAAE;AAEhD,iBAAW,KAAK,WAAW,YAAY;AAAA,IACzC;AAGA,eAAW,MAAM;AACf,WAAK,qBAAqB,QAAQ;AAAA,IACpC,GAAG,CAAC;AAAA,EACN;AAAA,EAEO,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AAAA,EAEQ,uBAAuB,CAAC,aAA8B;AAC5D,SAAK,OAAO;AAAA,MACV,SACG,QAAQ,kBAAkB,EAC1B,OAAO,CAAC,MAAoB,KAAK,IAAI;AAAA,IAC1C;AAAA,EACF;AAAA,EAEO,kBAAkB;AACvB,QAAI,KAAK,UAAU,SAAS,EAAE,WAAW,KAAK,QAAQ;AACpD,WAAK,UAAU,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,IACjD;AAAA,EACF;AAAA,EAEQ,aAAa,CAAC,WAAoB,OAAwB;AAChE,aAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAClC,YAAM,UAAU,GAAG,CAAC;AACpB,YAAM,SAAS,GAAG,IAAI,CAAC;AACvB,WAAK,WAAW,mBAAmB,QAAQ,MAAM,MAAM,OAAO;AAAA,IAChE;AAEA,QAAI,KAAK,uBAAuB;AAC9B,WAAK,WAAW,cAAc,KAAK,qBAAqB;AACxD,WAAK,wBAAwB;AAAA,IAC/B;AAEA,QAAI,mBAAmB,WAAW,EAAE,GAAG;AACrC,WAAK,wBAAwB,KAAK,WAAW;AAAA,QAC3C,GAAG,GAAG,EAAE,GAAG,MAAM;AAAA,QACjB;AAAA,UACE,MAAM;AAAA,UACN,SAAS,CAAC;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAEA,SAAK,WAAW;AAAA,MACd,KAAK,yBAAyB,GAAG,GAAG,EAAE,GAAG,MAAM;AAAA,IACjD;AAEA,SAAK,WAAW,KAAK,WAAW,YAAY;AAE5C,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AAAA,EAEA,wBAAwB,MAAM;AAC5B,UAAM,EAAE,OAAO,IAAI,KAAK,UAAU;AAElC,0BAAsB,QAAQ,KAAK,UAAU;AAC7C,4BAAwB,MAAM;AAE9B,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,EAAE,YAAY,OAAO,GAAyB;AAC1D,SAAK,OAAO,cAAc,EAAE,YAAY,OAAO,CAAC;AAAA,EAClD;AACF;;;ADtLA,IAAM,EAAE,qBAAqB,qBAAqB,IAAIC;AAE/C,IAAM,uBAAN,cAAmC,qBAAiD;AAAA,EACxE,uBAAuB,IAAI,oBAAoB;AAAA,EAEhE,YAAY,QAAoC;AAC9C,UAAM,IAAI,2BAA2B,MAAM,CAAC;AAAA,EAC9C;AAAA,EAEA,IAAW,OAAO,QAAoC;AACpD,SAAK,OAAO,SAAS;AAAA,EACvB;AAAA,EAEO,kBAAkB;AACvB,WAAO,KAAK,OAAO,gBAAgB;AAAA,EACrC;AAAA,EAEO,iBAAiB;AACtB,WAAO,KAAK,qBAAqB,eAAe;AAAA,EAClD;AAAA,EAEO,4BAA4B,UAA+B;AAChE,WAAO,KAAK,qBAAqB,4BAA4B,QAAQ;AAAA,EACvE;AAAA,EAEO,eAAe,UAAyB;AAC7C,QAAI,UAAU;AACZ,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,SAAK,OAAO,OAAO,WAAW,CAAC;AAC/B,SAAK,OAAO,OAAO,QAAQ;AAC3B,SAAK,OAAO,OAAO,YAAY,CAAC,CAAC;AACjC,SAAK,OAAO,OAAO,SAAS,EAAE;AAE9B,SAAK,SAAS,IAAI,2BAA2B,KAAK,OAAO,MAAM;AAAA,EACjE;AACF;;;ADxCO,IAAM,0BAA0B,CACrC,gBACG;AACH,QAAM,CAAC,OAAO,IAAI,SAAS,MAAM,IAAI,qBAAqB,WAAW,CAAC;AAEtE,qBAAmB,MAAM;AACvB,YAAQ,SAAS;AAAA,EACnB,CAAC;AACD,EAAAC,WAAU,MAAM;AACd,YAAQ,gBAAgB;AAAA,EAC1B,CAAC;AAED,SAAO;AACT;;;AQhBA,SAAS,aAAAC,YAAW,sBAAAC,qBAAoB,YAAAC,iBAAgB;;;ACDxD;AAAA,EAEE,YAAAC;AAAA,OAEK;;;ACEP,SAA4C,UAAAC,eAAc;AAM1D,IAAM,iBAAoC,OAAO,OAAO,CAAC,CAAC;AAE1D,IAAMC,gBAAe,OAAO,OAAO;AAAA,EACjC,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AACR,CAAC;AAEM,IAAM,kCAAN,MAAoE;AAAA,EAsBzE,YAAmB,QAAyC;AAAzC;AACjB,SAAK,YAAYC,QAAO,OAAO;AAAA,MAC7B;AAAA,IACF,EAAE;AAAA,EACJ;AAAA,EAzBQ,iBAAiB,oBAAI,IAAgB;AAAA,EAE7B,eAAeD;AAAA,EAEvB;AAAA,EAID,WAAqC,CAAC;AAAA,EAE7B,WAAW;AAAA,IACzB,MAAM;AAAA,IACN,SAAS,CAAC,UAAkB;AAC1B,WAAK,SAAS,OAAO;AAErB,iBAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,IACvD;AAAA,EACF;AAAA,EAEgB,aAAa;AAAA,EAQtB,cAAiC;AACtC,WAAO;AAAA,EACT;AAAA,EAEO,iBAAuB;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,OAAO,SAAuC;AAEzD,QAAI,QAAQ,SAAS;AACnB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AACF,QAAI,QAAQ,QAAQ,WAAW,KAAK,QAAQ,QAAQ,CAAC,GAAG,SAAS;AAC/D,YAAM,IAAI,MAAM,uDAAuD;AAEzE,QAAI,QAAQ,cAAc,KAAK,SAAS,GAAG,EAAE,GAAG,MAAM;AACpD,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,UAAM,KAAK,OAAO,OAAO;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,QAAQ,QAAQ,CAAC,EAAE;AAAA,IAC9B,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,WAA0B;AACrC,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAAA,EAEO,YAAkB;AACvB,UAAM,kBAAkB,KAAK,OAAO,SAAS,GAAG,EAAE;AAElD,SAAK,OAAO,KAAK;AACjB,QAAI,iBAAiB,SAAS,QAAQ;AACpC,WAAK,OAAO,SAAS,gBAAgB,OAAO;AAAA,IAC9C;AAAA,EACF;AAAA,EAEO,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AAAA,EAEO,kBAAkB;AACvB,QAAI,KAAK,UAAU,SAAS,EAAE,WAAW,KAAK,QAAQ;AACpD,WAAK,UAAU,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,IACjD;AAAA,EACF;AAAA,EAEQ,aAAa,CAAC,WAAoB,OAAwB;AAChE,QAAIE,oBAAmB,WAAW,EAAE,GAAG;AACrC,SAAG,KAAK;AAAA,QACN,IAAI;AAAA,QACJ,WAAW,oBAAI,KAAK;AAAA,QACpB,QAAQ,EAAE,MAAM,UAAU;AAAA,QAC1B,MAAM;AAAA,QACN,SAAS,CAAC;AAAA,MACZ,CAAC;AAAA,IACH;AAEA,SAAK,WAAW;AAEhB,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AAAA,EAEA,wBAAwB,MAAM;AAC5B,UAAM,EAAE,OAAO,IAAI,KAAK,UAAU;AAElC,0BAAsB,QAAQ,KAAK,UAAU;AAC7C,4BAAwB,MAAM;AAE9B,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB;AACd,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AD9HA,IAAM,EAAE,qBAAAC,sBAAqB,sBAAAC,sBAAqB,IAAIC;AAE/C,IAAMC,sBAAqB,CAChC,WACA,aACG;AACH,SAAO,aAAa,SAAS,SAAS,SAAS,CAAC,GAAG,SAAS;AAC9D;AAEO,IAAM,4BAAN,cAAwCF,sBAAsD;AAAA,EAClF,uBAAuB,IAAID,qBAAoB;AAAA,EAEhE,YAAY,QAAyC;AACnD,UAAM,IAAI,gCAAgC,MAAM,CAAC;AAAA,EACnD;AAAA,EAEA,IAAW,OAAO,QAAyC;AACzD,SAAK,OAAO,SAAS;AAAA,EACvB;AAAA,EAEO,kBAAkB;AACvB,WAAO,KAAK,OAAO,gBAAgB;AAAA,EACrC;AAAA,EAEO,iBAAiB;AACtB,WAAO,KAAK,qBAAqB,eAAe;AAAA,EAClD;AAAA,EAEO,4BAA4B,UAA+B;AAChE,WAAO,KAAK,qBAAqB,4BAA4B,QAAQ;AAAA,EACvE;AAAA,EAEO,eAAe,UAAyB;AAC7C,QAAI,UAAU;AACZ,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAGA,SAAK,OAAO,OAAO,WAAW,CAAC;AAC/B,SAAK,OAAO,OAAO,QAAQ;AAC3B,SAAK,OAAO,OAAO,YAAY,CAAC,CAAC;AACjC,SAAK,OAAO,OAAO,SAAS,EAAE;AAE9B,SAAK,SAAS,IAAI,gCAAgC,KAAK,OAAO,MAAM;AAAA,EACtE;AACF;;;ADjDO,IAAM,+BAA+B,CAC1C,qBACG;AACH,QAAM,CAAC,OAAO,IAAII;AAAA,IAChB,MAAM,IAAI,0BAA0B,gBAAgB;AAAA,EACtD;AAEA,EAAAC,oBAAmB,MAAM;AACvB,YAAQ,SAAS;AAAA,EACnB,CAAC;AACD,EAAAC,WAAU,MAAM;AACd,YAAQ,gBAAgB;AAAA,EAC1B,CAAC;AAED,SAAO;AACT;","names":["m","useEffect","INTERNAL","useEffect","vercelToThreadMessage","useEffect","messages","INTERNAL","useEffect","useEffect","useInsertionEffect","useState","INTERNAL","create","CAPABILITIES","create","hasUpcomingMessage","ProxyConfigProvider","BaseAssistantRuntime","INTERNAL","hasUpcomingMessage","useState","useInsertionEffect","useEffect"]}
1
+ {"version":3,"sources":["../src/rsc/useVercelRSCRuntime.tsx","../src/rsc/getVercelRSCMessage.tsx","../src/ui/utils/useCachedChunkedMessages.ts","../src/ui/utils/convertMessage.ts","../src/ui/use-chat/useVercelUseChatRuntime.tsx","../src/ui/utils/useInputSync.tsx","../src/ui/utils/sliceMessagesUntil.tsx","../src/ui/use-assistant/useVercelUseAssistantRuntime.tsx","../src/ui/getVercelAIMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport type { VercelRSCAdapter } from \"./VercelRSCAdapter\";\nimport {\n ExternalStoreAdapter,\n ThreadMessageLike,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { VercelRSCMessage } from \"./VercelRSCMessage\";\n\nconst vercelToThreadMessage = <T,>(\n converter: (message: T) => VercelRSCMessage,\n rawMessage: T,\n): ThreadMessageLike => {\n const message = converter(rawMessage);\n\n return {\n id: message.id,\n role: message.role,\n content: [{ type: \"ui\", display: message.display }],\n createdAt: message.createdAt,\n };\n};\n\nexport const useVercelRSCRuntime = <T extends WeakKey>(\n adapter: VercelRSCAdapter<T>,\n) => {\n const onNew = adapter.onNew ?? adapter.append;\n if (!onNew)\n throw new Error(\"You must pass a onNew function to useVercelRSCRuntime\");\n const eAdapter: ExternalStoreAdapter<any> = {\n isRunning: adapter.isRunning,\n messages: adapter.messages,\n onNew,\n onEdit: adapter.onEdit ?? adapter.edit,\n onReload: adapter.onReload ?? adapter.reload,\n onCopy: null,\n convertMessage: (m: T) =>\n vercelToThreadMessage(\n adapter.convertMessage ?? ((m) => m as VercelRSCMessage),\n m,\n ),\n };\n\n const runtime = useExternalStoreRuntime(eAdapter);\n return runtime;\n};\n","import {\n getExternalStoreMessage,\n type ThreadMessage,\n} from \"@assistant-ui/react\";\n\nexport const symbolInnerRSCMessage = Symbol(\"innerVercelRSCMessage\");\n\nexport const getVercelRSCMessage = (message: ThreadMessage) => {\n return getExternalStoreMessage(message);\n};\n","import { Message } from \"ai\";\nimport { useMemo } from \"react\";\n\ntype Chunk = [Message, ...Message[]];\nconst hasItems = (messages: Message[]): messages is Chunk =>\n messages.length > 0;\n\nconst chunkedMessages = (messages: Message[]): Chunk[] => {\n const chunks: Chunk[] = [];\n let currentChunk: Message[] = [];\n\n for (const message of messages) {\n if (message.role === \"assistant\" || message.role === \"data\") {\n currentChunk.push(message);\n } else {\n if (hasItems(currentChunk)) {\n chunks.push(currentChunk);\n currentChunk = [];\n }\n chunks.push([message]);\n }\n }\n\n if (hasItems(currentChunk)) {\n chunks.push(currentChunk);\n }\n\n return chunks;\n};\n\nconst shallowArrayEqual = (a: unknown[], b: unknown[]) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\nexport const useCachedChunkedMessages = (messages: Message[]) => {\n const cache = useMemo(() => new WeakMap<Message, Message[]>(), []);\n\n return useMemo(() => {\n return chunkedMessages(messages).map((m) => {\n const key = m[0];\n if (!key) return m;\n\n const cached = cache.get(key);\n if (cached && shallowArrayEqual(cached, m)) return cached;\n cache.set(key, m);\n return m;\n });\n }, [messages, cache]);\n};\n","import { Message } from \"ai\";\nimport { ThreadMessageLike } from \"@assistant-ui/react\";\nimport { ToolCallContentPart } from \"@assistant-ui/react\";\nimport { TextContentPart } from \"@assistant-ui/react\";\n\nexport const convertMessage = (messages: Message[]): ThreadMessageLike => {\n const firstMessage = messages[0];\n if (!firstMessage) throw new Error(\"No messages found\");\n\n const common = {\n id: firstMessage.id,\n createdAt: firstMessage.createdAt ?? new Date(),\n };\n\n switch (firstMessage.role) {\n case \"user\":\n if (messages.length > 1) {\n throw new Error(\n \"Multiple user messages found. This is likely an internal bug in assistant-ui.\",\n );\n }\n\n return {\n ...common,\n role: \"user\",\n content: [{ type: \"text\", text: firstMessage.content }],\n };\n\n case \"system\":\n return {\n ...common,\n role: \"system\",\n content: [{ type: \"text\", text: firstMessage.content }],\n };\n\n case \"data\":\n case \"assistant\": {\n const res: ThreadMessageLike = {\n ...common,\n role: \"assistant\",\n content: messages.flatMap((message) => {\n return [\n ...(message.content\n ? [{ type: \"text\", text: message.content } as TextContentPart]\n : []),\n ...(message.toolInvocations?.map(\n (t) =>\n ({\n type: \"tool-call\",\n toolName: t.toolName,\n toolCallId: t.toolCallId,\n argsText: JSON.stringify(t.args),\n args: t.args,\n result: \"result\" in t ? t.result : undefined,\n }) satisfies ToolCallContentPart,\n ) ?? []),\n ...(typeof message.data === \"object\" &&\n !Array.isArray(message.data) &&\n message.data?.[\"type\"] === \"tool-call\"\n ? [message.data as ToolCallContentPart]\n : []),\n ];\n }),\n };\n\n for (const message of messages) {\n if (\n typeof message.data === \"object\" &&\n !Array.isArray(message.data) &&\n message.data?.[\"type\"] === \"tool-result\"\n ) {\n const toolCallId = message.data[\"toolCallId\"];\n const toolContent = res.content.find(\n (c) => c.type === \"tool-call\" && c.toolCallId === toolCallId,\n ) as ToolCallContentPart | undefined;\n if (!toolContent) throw new Error(\"Tool call not found\");\n toolContent.result = message.data[\"result\"];\n }\n }\n\n return res;\n }\n\n default:\n const _unsupported: \"function\" | \"tool\" = firstMessage.role;\n throw new Error(\n `You have a message with an unsupported role. The role ${_unsupported} is not supported.`,\n );\n }\n};\n","import type { useChat } from \"ai/react\";\nimport { useCachedChunkedMessages } from \"../utils/useCachedChunkedMessages\";\nimport { convertMessage } from \"../utils/convertMessage\";\nimport { useExternalStoreRuntime } from \"@assistant-ui/react\";\nimport { useInputSync } from \"../utils/useInputSync\";\nimport { sliceMessagesUntil } from \"../utils/sliceMessagesUntil\";\n\nexport const useVercelUseChatRuntime = (\n chatHelpers: ReturnType<typeof useChat>,\n) => {\n const messages = useCachedChunkedMessages(chatHelpers.messages);\n const runtime = useExternalStoreRuntime({\n isRunning: chatHelpers.isLoading,\n messages,\n setMessages: (messages) => chatHelpers.setMessages(messages.flat()),\n onCancel: async () => chatHelpers.stop(),\n onNew: async (message) => {\n if (message.content.length !== 1 || message.content[0]?.type !== \"text\")\n throw new Error(\n \"Only text content is supported by VercelUseChatRuntime. Use the Edge runtime for image support.\",\n );\n await chatHelpers.append({\n role: message.role,\n content: message.content[0].text,\n });\n },\n onEdit: async (message) => {\n if (message.content.length !== 1 || message.content[0]?.type !== \"text\")\n throw new Error(\n \"Only text content is supported by VercelUseChatRuntime. Use the Edge runtime for image support.\",\n );\n\n const newMessages = sliceMessagesUntil(\n chatHelpers.messages,\n message.parentId,\n );\n chatHelpers.setMessages(newMessages);\n\n await chatHelpers.append({\n role: message.role,\n content: message.content[0].text,\n });\n },\n onReload: async (parentId: string | null) => {\n const newMessages = sliceMessagesUntil(chatHelpers.messages, parentId);\n chatHelpers.setMessages(newMessages);\n\n await chatHelpers.reload();\n },\n onAddToolResult: ({ toolCallId, result }) => {\n chatHelpers.addToolResult({ toolCallId, result });\n },\n // onCopy // TODO\n onNewThread: () => {\n chatHelpers.messages = [];\n chatHelpers.input = \"\";\n chatHelpers.setMessages([]);\n chatHelpers.setInput(\"\");\n },\n convertMessage,\n });\n\n useInputSync(chatHelpers, runtime);\n\n return runtime;\n};\n","import { useRef, useEffect } from \"react\";\nimport {\n ExternalStoreRuntime,\n subscribeToMainThread,\n} from \"@assistant-ui/react\";\nimport { useAssistant, useChat } from \"ai/react\";\n\ntype VercelHelpers =\n | ReturnType<typeof useChat>\n | ReturnType<typeof useAssistant>;\n\nexport const useInputSync = (\n helpers: VercelHelpers,\n runtime: ExternalStoreRuntime,\n) => {\n // sync input from vercel to assistant-ui\n const helpersRef = useRef(helpers);\n useEffect(() => {\n helpersRef.current = helpers;\n if (runtime.thread.composer.text !== helpers.input) {\n runtime.thread.composer.setText(helpers.input);\n }\n }, [helpers, runtime]);\n\n // sync input from assistant-ui to vercel\n useEffect(() => {\n return subscribeToMainThread(runtime, () => {\n if (runtime.thread.composer.text !== helpersRef.current.input) {\n helpersRef.current.setInput(runtime.thread.composer.text);\n }\n });\n }, [runtime]);\n};\n","import type { Message } from \"ai\";\n\nexport const sliceMessagesUntil = (\n messages: Message[],\n messageId: string | null,\n) => {\n if (messageId == null) return [];\n\n let messageIdx = messages.findIndex((m) => m.id === messageId);\n if (messageIdx === -1)\n throw new Error(\n \"useVercelAIThreadState: Message not found. This is liekly an internal bug in assistant-ui.\",\n );\n\n while (messages[messageIdx + 1]?.role === \"assistant\") {\n messageIdx++;\n }\n\n return messages.slice(0, messageIdx + 1);\n};\n","import type { useAssistant } from \"ai/react\";\nimport { useExternalStoreRuntime } from \"@assistant-ui/react\";\nimport { useCachedChunkedMessages } from \"../utils/useCachedChunkedMessages\";\nimport { convertMessage } from \"../utils/convertMessage\";\nimport { useInputSync } from \"../utils/useInputSync\";\n\nexport const useVercelUseAssistantRuntime = (\n assistantHelpers: ReturnType<typeof useAssistant>,\n) => {\n const messages = useCachedChunkedMessages(assistantHelpers.messages);\n const runtime = useExternalStoreRuntime({\n isRunning: assistantHelpers.status === \"in_progress\",\n messages,\n onCancel: async () => assistantHelpers.stop(),\n onNew: async (message) => {\n if (message.content.length !== 1 || message.content[0]?.type !== \"text\")\n throw new Error(\n \"VercelUseAssistantRuntime only supports text content.\",\n );\n\n await assistantHelpers.append({\n role: message.role,\n content: message.content[0].text,\n });\n },\n onNewThread: () => {\n assistantHelpers.messages = [];\n assistantHelpers.input = \"\";\n assistantHelpers.setMessages([]);\n assistantHelpers.setInput(\"\");\n },\n convertMessage,\n });\n\n useInputSync(assistantHelpers, runtime);\n\n return runtime;\n};\n","import {\n getExternalStoreMessage,\n type ThreadMessage,\n} from \"@assistant-ui/react\";\nimport type { Message } from \"ai\";\n\nexport const getVercelAIMessage = (message: ThreadMessage) => {\n return getExternalStoreMessage(message) as Message[];\n};\n"],"mappings":"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","names":["m","useExternalStoreRuntime","useExternalStoreRuntime","messages","useExternalStoreRuntime","useExternalStoreRuntime","getExternalStoreMessage"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-ai-sdk",
3
- "version": "0.5.16",
3
+ "version": "0.6.0",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  ".": {
@@ -28,7 +28,7 @@
28
28
  "zustand": "^4.5.5"
29
29
  },
30
30
  "peerDependencies": {
31
- "@assistant-ui/react": "^0.5.31",
31
+ "@assistant-ui/react": "^0.5.32",
32
32
  "@types/react": "*",
33
33
  "ai": "^3.2.x",
34
34
  "react": "^18"