UNPKG

ant-design-x-vue-next

Version:

Ant Design X for Vue — community continuation aligned with @ant-design/x

60 lines (59 loc) 2.85 kB
import type { MessageStatus, SimpleType } from '../use-x-chat'; import type { AbstractXRequestClass, ManualXRequestOptions } from '../x-request/manual-x-request'; export interface ChatProviderConfig<Input = unknown, Output = unknown, ChatMessage extends SimpleType = SimpleType> { /** * Base params merged by DefaultChatProvider.transformParams * (aligned with @ant-design/x-sdk request options.params). */ params?: Record<string, unknown>; /** * Optional manual XRequest owned by the provider (SDK-style). * When set, useXChat can run without useXAgent. */ request?: AbstractXRequestClass<Input, Output, ChatMessage> | (() => AbstractXRequestClass<Input, Output, ChatMessage>); } export interface TransformMessageInfo<ChatMessage extends SimpleType, Output> { originMessage?: ChatMessage; chunk: Output; chunks: Output[]; status: MessageStatus; responseHeaders?: Headers; } /** * Base chat provider (aligned with @ant-design/x-sdk AbstractChatProvider). * Supports transform-only mode or provider-owned manual XRequest. */ export declare abstract class AbstractChatProvider<ChatMessage extends SimpleType = SimpleType, Input = unknown, Output = unknown> { protected config: ChatProviderConfig<Input, Output, ChatMessage>; private _getMessagesFn?; private _request?; private _originalCallbacks?; constructor(config?: ChatProviderConfig<Input, Output, ChatMessage>); get request(): AbstractXRequestClass<Input, Output, ChatMessage> | undefined; get hasRequest(): boolean; /** * Merge onRequest params with history / provider defaults before calling the agent/request. */ abstract transformParams(requestParams: Partial<Input>, history?: ChatMessage[], options?: ManualXRequestOptions<Input, Output, ChatMessage>): Input; /** * Convert onRequest params into the local (user) ChatMessage for rendering. */ abstract transformLocalMessage(requestParams: Partial<Input>): ChatMessage | ChatMessage[]; /** * Convert streaming / final chunks into an assistant ChatMessage. */ abstract transformMessage(info: TransformMessageInfo<ChatMessage, Output>): ChatMessage; getMessages(): ChatMessage[]; injectGetMessages(getMessages: () => ChatMessage[]): void; /** * Wire useXChat stream handlers into the owned manual request callbacks. */ injectRequest({ onUpdate, onSuccess, onError, }: { onUpdate: (data: Output, responseHeaders: Headers) => any; onSuccess: (data: Output[], responseHeaders: Headers) => any; onError: (error: any, errorInfo?: any) => any; }): void; /** Ready-to-use transformMessage for useXChat */ asTransformMessage(): (info: TransformMessageInfo<ChatMessage, Output>) => ChatMessage; } export default AbstractChatProvider;