UNPKG

@ant-design/x-sdk

Version:

placeholder for @ant-design/x-sdk

65 lines (64 loc) 3.14 kB
import type { AnyObject } from '../_util/type'; import { ConversationData } from '../x-conversations'; import type { SSEOutput } from '../x-stream'; import { AbstractChatProvider } from './providers'; export type SimpleType = string | number | boolean | object; declare enum MessageStatusEnum { local = "local", loading = "loading", updating = "updating", success = "success", error = "error", abort = "abort" } export type MessageStatus = `${MessageStatusEnum}`; type RequestPlaceholderFn<Input, Message> = (requestParams: Partial<Input>, info: { messages: Message[]; }) => Message; type RequestFallbackFn<Input, MessageInfo, Message> = (requestParams: Partial<Input>, info: { error: Error; messages: Message[]; messageInfo: MessageInfo; }) => Message | Promise<Message>; export type RequestParams<Message> = { [Key: PropertyKey]: Message; } & AnyObject; export interface XChatConfig<ChatMessage extends SimpleType = string, BubbleMessage extends SimpleType = ChatMessage, Input = ChatMessage, Output = ChatMessage> { provider?: AbstractChatProvider<ChatMessage, Input, Output>; conversationKey?: ConversationData['key']; defaultMessages?: DefaultMessageInfo<ChatMessage>[]; /** Convert agent message to bubble usage message type */ parser?: (message: ChatMessage) => BubbleMessage | BubbleMessage[]; requestPlaceholder?: ChatMessage | RequestPlaceholderFn<Input, ChatMessage>; requestFallback?: ChatMessage | RequestFallbackFn<Input, MessageInfo<ChatMessage>, ChatMessage>; } export interface MessageInfo<Message extends SimpleType> { id: number | string; message: Message; status: MessageStatus; extra?: AnyObject; } export type DefaultMessageInfo<Message extends SimpleType> = Pick<MessageInfo<Message>, 'message'> & Partial<Omit<MessageInfo<Message>, 'message'>>; export type RequestResultObject<Message> = { message: Message | Message[]; status: MessageStatus; }; export type StandardRequestResult<Message extends SimpleType> = Omit<RequestResultObject<Message>, 'message' | 'status'> & { message: Message; status?: MessageStatus; }; export default function useXChat<ChatMessage extends SimpleType = string, ParsedMessage extends SimpleType = ChatMessage, Input = RequestParams<ChatMessage>, Output = SSEOutput>(config: XChatConfig<ChatMessage, ParsedMessage, Input, Output>): { readonly onRequest: (requestParams: Partial<Input>, opts?: { extra: AnyObject; }) => void; readonly messages: MessageInfo<ChatMessage>[]; readonly parsedMessages: MessageInfo<ParsedMessage>[]; readonly setMessages: (messages: MessageInfo<ChatMessage>[] | ((ori: MessageInfo<ChatMessage>[]) => MessageInfo<ChatMessage>[])) => boolean; readonly setMessage: (id: string | number, message: Partial<MessageInfo<ChatMessage>> | ((message: MessageInfo<ChatMessage>) => Partial<MessageInfo<ChatMessage>>)) => boolean; readonly abort: () => void; readonly isRequesting: boolean; readonly onReload: (id: string | number, requestParams: Partial<Input>, opts?: { extra: AnyObject; }) => void; }; export {};