chore: update to ai sdk v5 beta (#1074)

This commit is contained in:
Jeremy 2025-07-03 02:26:34 -07:00 committed by GitHub
parent 7d8e71383f
commit 4c281fe09d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
54 changed files with 1372 additions and 1060 deletions

View file

@ -1,32 +1,32 @@
'use client';
import { useEffect } from 'react';
import type { UIMessage } from 'ai';
import type { UseChatHelpers } from '@ai-sdk/react';
import type { DataPart } from '@/lib/types';
import type { ChatMessage } from '@/lib/types';
import { useDataStream } from '@/components/data-stream-provider';
export interface UseAutoResumeParams {
autoResume: boolean;
initialMessages: UIMessage[];
experimental_resume: UseChatHelpers['experimental_resume'];
data: UseChatHelpers['data'];
setMessages: UseChatHelpers['setMessages'];
initialMessages: ChatMessage[];
resumeStream: UseChatHelpers<ChatMessage>['resumeStream'];
setMessages: UseChatHelpers<ChatMessage>['setMessages'];
}
export function useAutoResume({
autoResume,
initialMessages,
experimental_resume,
data,
resumeStream,
setMessages,
}: UseAutoResumeParams) {
const { dataStream } = useDataStream();
useEffect(() => {
if (!autoResume) return;
const mostRecentMessage = initialMessages.at(-1);
if (mostRecentMessage?.role === 'user') {
experimental_resume();
resumeStream();
}
// we intentionally run this once
@ -34,14 +34,14 @@ export function useAutoResume({
}, []);
useEffect(() => {
if (!data) return;
if (data.length === 0) return;
if (!dataStream) return;
if (dataStream.length === 0) return;
const dataPart = data[0] as DataPart;
const dataPart = dataStream[0];
if (dataPart.type === 'append-message') {
const message = JSON.parse(dataPart.message) as UIMessage;
if (dataPart.type === 'data-appendMessage') {
const message = JSON.parse(dataPart.data);
setMessages([...initialMessages, message]);
}
}, [data, initialMessages, setMessages]);
}, [dataStream, initialMessages, setMessages]);
}

View file

@ -1,13 +1,14 @@
import { useState, useEffect } from 'react';
import { useScrollToBottom } from './use-scroll-to-bottom';
import type { UseChatHelpers } from '@ai-sdk/react';
import type { ChatMessage } from '@/lib/types';
export function useMessages({
chatId,
status,
}: {
chatId: string;
status: UseChatHelpers['status'];
status: UseChatHelpers<ChatMessage>['status'];
}) {
const {
containerRef,