import type { RequestHeader } from './common'; import type { MIND_MODE, WS_MIND_TYPE } from './session'; import type { SocketMessageInterface } from './socket'; export enum TaskMultipleDataType { text = 'text', template = 'template', upload = 'upload' } export enum TaskItemSize { medium = 'medium', // 2 * 1 large = 'large' // 2 * 2 } export interface TaskMultipleDataModel { answer?: string; speech?: string; template?: string; link?: string; displayStyle: TaskItemSize; } export interface TaskMultipleData { type: TaskMultipleDataType; modal: TaskMultipleDataModel; } export enum TaskMessageModelGroup { hint = 'hint', msg = 'msg', user_upload = 'user_upload', web_search = 'web_search' } export interface TaskMessageModel extends SocketMessageInterface { multipleData: TaskMultipleData[]; type: 'task'; group: TaskMessageModelGroup; groupId: string; title: string; timestamp: string; } export function isTaskMessage(msg: SocketMessageInterface): boolean { return msg.type === 'task'; } export interface TaskCallback { onTaskListDidUpdate: (taskItem: TaskMessageModel[]) => void; onTaskListLoadError: (error: Error) => void; } export interface TaskDataInfo { mindId: string; mindType: WS_MIND_TYPE; mode: MIND_MODE; } export interface TaskUrlConfig { baseUrl: string; header: RequestHeader; refUserId: string; } export interface TaskConfig { callback: TaskCallback; mindInfo: TaskDataInfo; sessionId: string; urlConfig: TaskUrlConfig; } export interface TaskInterface { // 业务回调 callback: TaskCallback; mindInfo: TaskDataInfo; // socket 分发之后追加 appendTask: (taskItem: TaskMessageModel) => void; startReceiveMsg(): Promise; waitingForStart(): void; // 拉取新信息 fetchTaskMsg(data: { history: boolean; seqId?: string; }): Promise; } export interface TaskLoadMoreRequestInterface { sessionId: string; seqId?: string; pageSize?: number; direction?: 'backward' | 'forward'; } export interface TaskLoadMoreResponseInterface { list: TaskMessageModel[]; total: number; }