From c0a07a246c188f2d466d4e82a55c51664ed5008e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=97=8D+85CD?= <50108258+kwaa@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:54:00 +0800 Subject: [PATCH] refactor(stream-text): unexport types --- packages/stream-text/src/const.ts | 54 --------------------------- packages/stream-text/src/helper.ts | 2 +- packages/stream-text/src/index.ts | 60 ++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 59 deletions(-) delete mode 100644 packages/stream-text/src/const.ts diff --git a/packages/stream-text/src/const.ts b/packages/stream-text/src/const.ts deleted file mode 100644 index a3740b2a..00000000 --- a/packages/stream-text/src/const.ts +++ /dev/null @@ -1,54 +0,0 @@ -import type { AssistantMessage, FinishReason, Message, ToolCall, Usage } from '@xsai/shared-chat' - -export interface StreamTextChoice { - finish_reason?: FinishReason | null - index: number - message: StreamTextMessage -} - -export interface StreamTextChoiceState { - calledToolCallIDs: Set - currentToolID: null | string - endedToolCallIDs: Set - index: number - toolCallErrors: { [id: string]: Error } - toolCallResults: { [id: string]: string } -} - -export interface StreamTextChunkResult { - choices: { - delta: { - content?: string - refusal?: string - role: 'assistant' - tool_calls?: ToolCall[] - } - finish_reason?: FinishReason - index: number - }[] - created: number - id: string - model: string - object: 'chat.completion.chunk' - system_fingerprint: string - usage?: Usage -} - -export interface StreamTextMessage extends Omit { - content?: string - tool_calls?: { [id: string]: StreamTextToolCall } -} - -export interface StreamTextStep { - choices: StreamTextChoice[] - messages: Message[] - usage?: Usage -} - -export interface StreamTextToolCall extends ToolCall { - function: { - arguments: string - name: string - parsed_arguments: Record - } -} diff --git a/packages/stream-text/src/helper.ts b/packages/stream-text/src/helper.ts index a1481435..f51e0e98 100644 --- a/packages/stream-text/src/helper.ts +++ b/packages/stream-text/src/helper.ts @@ -1,4 +1,4 @@ -import type { StreamTextChunkResult } from './const' +import type { StreamTextChunkResult } from '.' /** @internal */ // eslint-disable-next-line @masknet/string-no-data-url diff --git a/packages/stream-text/src/index.ts b/packages/stream-text/src/index.ts index 45d487b1..c74661eb 100644 --- a/packages/stream-text/src/index.ts +++ b/packages/stream-text/src/index.ts @@ -1,13 +1,28 @@ -import type { ChatOptions, Tool, ToolMessage } from '@xsai/shared-chat' +import type { AssistantMessage, ChatOptions, FinishReason, Message, Tool, ToolCall, ToolMessage, Usage } from '@xsai/shared-chat' import { XSAIError } from '@xsai/shared' import { chat } from '@xsai/shared-chat' -import type { StreamTextChoice, StreamTextChoiceState, StreamTextChunkResult, StreamTextMessage, StreamTextStep, StreamTextToolCall } from './const' - import { parseChunk } from './helper' -export * from './const' +export interface StreamTextChunkResult { + choices: { + delta: { + content?: string + refusal?: string + role: 'assistant' + tool_calls?: ToolCall[] + } + finish_reason?: FinishReason + index: number + }[] + created: number + id: string + model: string + object: 'chat.completion.chunk' + system_fingerprint: string + usage?: Usage +} /** * Options for configuring the StreamText functionality. @@ -64,8 +79,45 @@ export interface StreamTextResult { textStream: ReadableStream } +export interface StreamTextStep { + choices: StreamTextChoice[] + messages: Message[] + usage?: Usage +} + +/** @internal */ type RecursivePromise = Promise<(() => RecursivePromise) | T> +/** @internal */ +interface StreamTextChoice { + finish_reason?: FinishReason | null + index: number + message: StreamTextMessage +} + +/** @internal */ +interface StreamTextChoiceState { + calledToolCallIDs: Set + currentToolID: null | string + endedToolCallIDs: Set + index: number + toolCallErrors: { [id: string]: Error } + toolCallResults: { [id: string]: string } +} + +/** @internal */ +interface StreamTextMessage extends Omit { + content?: string + tool_calls?: { [id: string]: StreamTextToolCall } +} + +/** @internal */ +interface StreamTextToolCall extends ToolCall { + function: ToolCall['function'] & { + parsed_arguments: Record + } +} + export const streamText = async (options: StreamTextOptions): Promise => { // output let chunkCtrl: ReadableStreamDefaultController | undefined