ant-design-x-vue
Version:
Craft AI-driven interfaces effortlessly
55 lines (54 loc) • 2.84 kB
TypeScript
import { XAgent } from '../use-x-agent';
import { XStreamOptions } from '../x-stream';
import { XRequestParams } from '../x-request';
import { AnyObject } from '../_util/type';
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>;
type TransformMessageFn<Message> = (info: {
originMessage?: Message;
currentMessage: any;
status: MessageStatus;
}) => 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>;
transformMessage?: TransformMessageFn<AgentMessage>;
transformStream?: XStreamOptions<AgentMessage>['transformStream'];
resolveAbortController?: (abortController: AbortController) => void;
}
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;
};
interface RequestParams<Message> extends XRequestParams, AnyObject {
message: Message;
}
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: (value: AgentMessage | RequestParams<AgentMessage>) => void;
readonly messages: import("vue").Ref<MessageInfo<AgentMessage>[], MessageInfo<AgentMessage>[]>;
readonly parsedMessages: import("vue").ComputedRef<MessageInfo<ParsedMessage>[]>;
readonly setMessages: (updater: MessageInfo<AgentMessage>[] | ((prev: MessageInfo<AgentMessage>[]) => MessageInfo<AgentMessage>[])) => void;
};
export {};