refactor(playground): centralize assistant completion state

- add a helper for finalizing assistant messages with complete status.
- reuse the helper in stream completion and stop-generation paths.
This commit is contained in:
QuentinHsu
2026-05-29 23:17:59 +08:00
parent 76469cb944
commit 2f16326562
2 changed files with 10 additions and 3 deletions
@@ -25,9 +25,9 @@ import {
buildChatCompletionPayload,
updateAssistantMessageWithError,
updateLastAssistantMessage,
finalizeMessage,
parseRequestErrorDetails,
applyChatCompletionChoice,
completeAssistantMessage,
} from '../lib'
import type { Message, PlaygroundConfig, ParameterEnabled } from '../types'
import { useStreamRequest } from './use-stream-request'
@@ -71,7 +71,7 @@ export function useChatHandler({
message.status === MESSAGE_STATUS.COMPLETE ||
message.status === MESSAGE_STATUS.ERROR
? message
: { ...finalizeMessage(message), status: MESSAGE_STATUS.COMPLETE }
: completeAssistantMessage(message)
)
)
}, [onMessageUpdate])
@@ -184,7 +184,7 @@ export function useChatHandler({
updateLastAssistantMessage(prev, (message) =>
message.status === MESSAGE_STATUS.LOADING ||
message.status === MESSAGE_STATUS.STREAMING
? { ...finalizeMessage(message), status: MESSAGE_STATUS.COMPLETE }
? completeAssistantMessage(message)
: message
)
)
@@ -102,6 +102,13 @@ export function finalizeMessage(
}
}
export function completeAssistantMessage(message: Message): Message {
return {
...finalizeMessage(message),
status: MESSAGE_STATUS.COMPLETE,
}
}
type ChatCompletionChoice = ChatCompletionResponse['choices'][number]
export function applyChatCompletionChoice(