fix(ai-chat): record chats that fail on their first turn
Behaviour change (split out of the test commit per review). In AI SDK v6 the useChat `onFinish` callback does NOT fire when the stream errors. A brand-new chat whose very first turn fails would therefore never run the post-turn path: the chat list was not invalidated and the client never adopted the server-created chat id — so the failed chat only appeared in history after a manual refresh (the server already creates the row and stores the error message). Running the same `onTurnFinished()` handler on `onError` makes the failed chat show up immediately. The error itself is still surfaced to the user via the existing `error` state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
committed by
vvzvlad
parent
f1980cf425
commit
1e650262a4
@@ -134,6 +134,13 @@ export default function ChatThread({
|
||||
messages: initialMessages,
|
||||
transport,
|
||||
onFinish: () => onTurnFinished(),
|
||||
// In AI SDK v6 `onFinish` does NOT fire when the stream errors, so a brand
|
||||
// new chat that fails on its first turn would never invalidate the chat list
|
||||
// nor adopt the server-created chat id (the server still creates the row and
|
||||
// saves the error message). Run the same post-turn path on error so the
|
||||
// failed chat appears in history immediately instead of after a manual
|
||||
// refresh. The error itself is still surfaced via `error` below.
|
||||
onError: () => onTurnFinished(),
|
||||
});
|
||||
|
||||
const isStreaming = status === "submitted" || status === "streaming";
|
||||
|
||||
Reference in New Issue
Block a user