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
TypeScript
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;