UNPKG

@ant-design/x

Version:

Craft AI-driven interfaces effortlessly

42 lines (41 loc) 2.14 kB
import React from 'react'; import { XAgent } from '../use-x-agent'; export type SimpleType = string | number | boolean | object; export type MessageStatus = 'local' | 'loading' | 'success' | 'error'; type RequestPlaceholderFn<Message extends SimpleType> = (message: Message, info: { messages: Message[]; }) => Message; type RequestFallbackFn<Message extends SimpleType> = (message: Message, info: { error: Error; messages: Message[]; }) => Message | Promise<Message>; export interface XChatConfig<AgentMessage extends SimpleType = string, BubbleMessage extends SimpleType = AgentMessage> { agent?: XAgent<AgentMessage>; defaultMessages?: DefaultMessageInfo<AgentMessage>[]; /** Convert agent message to bubble usage message type */ parser?: (message: AgentMessage) => BubbleMessage | BubbleMessage[]; requestPlaceholder?: AgentMessage | RequestPlaceholderFn<AgentMessage>; requestFallback?: AgentMessage | RequestFallbackFn<AgentMessage>; } export interface MessageInfo<Message extends SimpleType> { id: number | string; message: Message; status: MessageStatus; } 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 RequestResult<Message extends SimpleType> = Message | Message[] | RequestResultObject<Message> | RequestResultObject<Message>[]; export type StandardRequestResult<Message extends SimpleType> = Omit<RequestResultObject<Message>, 'message' | 'status'> & { message: Message; status?: MessageStatus; }; export default function useXChat<AgentMessage extends SimpleType = string, ParsedMessage extends SimpleType = AgentMessage>(config: XChatConfig<AgentMessage, ParsedMessage>): { readonly onRequest: (message: AgentMessage) => void; readonly messages: MessageInfo<AgentMessage>[]; readonly parsedMessages: MessageInfo<ParsedMessage>[]; readonly setMessages: (action: React.SetStateAction<MessageInfo<AgentMessage>[]>) => void; }; export {};