import type { LogFunc, RequestHeader } from './common'; import type { SocketMessageInterface } from './socket'; /** * session 的错误配置 * deprecated,参数在业务方自己处理 * * @export * @enum {string} */ export declare enum SessionErrorCode { SESSION_CLOSED = "session.status.closed",// session 被关闭 CONNECT_SESSION_TIMEOUT = "connect session timeout",// 连接 session 超时 SESSION_OPENAI_ERROR = "session.openai.error",// session openai 错误 SERVICE_STATUS_UNAVAILABLE = "service.status.unavailable",// 服务不可用 SESSION_MESSAGE_EXCEED_REQUEST_LIMIT = "session.message.exceedRequestLimit",//超过消息发送频次 PACKAGE_TURN_EXHAUSTION = "package.turn.exhaustion",// 计费达到上限 SESSION_MESSAGE_EXCEED_QPS_LIMIT = "session.message.exceedQPSLimit",//QPS 超过上限 - MindOS UMM_MSG_EXCEED_QPS_LIMIT = "umm.msg.exceedQPSLimit",// QPS 超过上限 - UMM SESSION_RESPONSE_TIMEOUT = "session.response.timeout",// session 返回超时 FREE_USED_UP_BYOK_PLAN = "freeUsedUp.byokPlan",// 免费额度用完 MESSAGE_LENGTH_LIMIT = "message.length.limit" } export declare enum SENDER_TYPE { umm = "umm", client = "client" } /** * data 结构类型 */ export declare enum WS_MSG_DATA_TYPE { text = "text", template = "template" } /** * 前端自己处理的错误码,比如说 ws 建立存在异常,需要在 session 侧展示 */ export declare enum FRONTEND_ERROR_CODE { WS_CONNECT_ERROR = "ws.connect.error" } /** * session 出错后的行为配置 * 从chat-container复制而来,参数在业务方维护 * * @export * @enum {string} */ export declare enum ChatSessionSubCodeAction { RESTART_SESSION = "restartSession",// 红色,点击后重启 session RESEND_MSG = "resendMessage",// 黄色,点击后重发当前消息 SIMPLE_HINT = "simpleHint",// 灰色系统消息,类似于 Genius Update OPEN_PAGE = "openPage" } /** * Session 会话需要的链接 */ export interface SessionURLConfig { openPath: string; closePath: string; sendMsgPath: string; fetchMsgPath: string; fetchLastMsgPath: string; } /** * Session 会话需要的参数 */ export interface SessionConnectConfig { deviceId: string; } /** * 当前心识类型 */ export declare enum WS_MIND_TYPE { shadow = "shadow",// 未发布的影子心识 original = "original" } /** * 当前心识模式 */ export declare enum MIND_MODE { NORMAL = "NORMAL", PERSONAL = "PERSONAL",// PA SELF = "SELF" } /** * 用户发送的纯文本消息 * * @export * @interface WS_DATA_TYPE_TEXT */ export interface WS_DATA_TYPE_TEXT { content: string; urls?: string[]; } /** * 用户发送的图片(现阶段是否使用不确定,需要 @jinkai 确认) * * @export * @interface WS_DATA_TYPE_IMG */ export interface WS_DATA_TYPE_IMG { base64: string; } /** * 用户发送的画图 AIGC(现阶段是否使用不确定,需要 @jinkai 确认) * * @export * @interface WS_DATA_TYPE_AIGC */ export interface WS_DATA_TYPE_AIGC { isPolling: boolean; } /** * 用户发送的消息类型,通用定义,方便外部使用 */ export type SEND_MSG_TYPE = WS_DATA_TYPE_AIGC | WS_DATA_TYPE_IMG | WS_DATA_TYPE_TEXT; /** * Session 发送消息的数据结构,给 socket 的数据结构 * * @export * @interface SessionSendMessageModel */ export interface SessionSendMessageModel { messageId?: string; type: SessionMessageType; sessionId: string; refUserId?: string; wsId: string; data?: SEND_MSG_TYPE; canvasInfo?: CanvasInfo[]; } /** * 画图状态 */ export declare enum WS_MSG_MULTIPLE_IMG_STATUS { PROCESSING = "PROCESSING",// 正在画图中 FINISH = "FINISH" } /** * 多模态数据结构 * * @export * @interface WS_MSG_MULTIPLE_MODAL */ export interface WS_MSG_MULTIPLE_MODAL { answer?: string; speech?: string; template?: string; } /** * 多模态数据类型定义 */ export interface WS_MSG_MULTIPLE_DATA { singleDataType: WS_MSG_DATA_TYPE; modal: WS_MSG_MULTIPLE_MODAL; } export declare enum SessionMessageType { msg = "msg", hint = "hint", sys = "sys",// 异常消息,统一通过 sys 给回来 recommend = "recommend" } export declare function isSessionMessage(msg: SocketMessageInterface): boolean; /** * Session 返回的消息数据结构 * * @export * @interface SessionMessageModel * @extends {SocketMessageBasicType} */ export interface SessionMessageModel extends SocketMessageInterface { sender: SENDER_TYPE; subCode?: string; subCodeReason?: string; subCodeActions?: string[]; timestamp: number; type: SessionMessageType; index: number; mindId: string; sessionId: string; messageId: string; seqId: string; apiVersion?: string; sdkVersion?: string; multipleData: WS_MSG_MULTIPLE_DATA[]; data: SEND_MSG_TYPE; canvasInfo?: CanvasInfo[]; } /** * Session 用户的快捷消息结构 * * @export * @interface CreateSessionSentence */ export interface CreateSessionSentence { open: boolean; firstOfUser: string[]; } /** * 需要引用的 canvas 信息 */ export interface CanvasInfo { fileDocId: string; canvasId: string; type: string; title: string; quote?: string[]; images?: string[]; } /** * Session 发送消息的数据结构,外部调用传入 * * @export * @interface SessionSendModel */ export interface SessionSendModel { dataType: WS_MSG_DATA_TYPE; data: SEND_MSG_TYPE; canvasInfo?: CanvasInfo[]; } /** * session 消息的回调逻辑 * * @export * @interface SessionMessageCallbackObject */ export interface SessionMessageCallbackObject { /** * 收到的消息(包括中间步骤) * * @memberof SessionMessageCallbackObject */ onMsgUpdateListener?: (msgList: SessionMessageModel[]) => void; /** * 收到的错误消息 * * @memberof SessionMessageCallbackObject */ onErrorListener?: (errorMsg: ErrorMsg) => void; } /** * Session 的生命周期回调接口 * * @export * @interface SessionLifeCycleModel */ export interface SessionLifeCycleModel { /** * session 创建之后的回调,用于处理删除逻辑。 * * @memberof SessionLifeCycleModel */ sessionClose?: (sessionId?: string) => void; /** * session 日志消息展示 * * @type {LogFunc} * @memberof SessionLifeCycleModel */ log?: LogFunc; } /** * 开启 session 的配置参数 * * @export * @interface OpenSessionModel */ export interface OpenSessionModel { deviceId: string; mindId: string; mindType: WS_MIND_TYPE; mode: MIND_MODE; } export interface SessionMindInfo { mindId: string; mindType: WS_MIND_TYPE; mode: MIND_MODE; } /** * Session 的基本信息 * * @export * @interface SessionDataInfo */ export interface SessionDataInfo extends SessionMindInfo { sessionId: string; sentence?: CreateSessionSentence; validFileScheme?: string; openSessionTime?: number; openSessionCount?: number; confirmSessionTime?: number; } /** * Socket 对象配置参数 */ export interface SessionConfig { baseUrl: string; header: RequestHeader; config: OpenSessionModel; deviceId: string; refUserId: string; urlConfigModel: SessionURLConfig; lifeCycle: SessionLifeCycleModel; callback: SessionMessageCallbackObject; log?: LogFunc; } /** Session 最大重试次数 */ export declare const MAX_RETRY_COUNT = 10; /** 自定义错误消息 */ export interface ErrorMsg { subCode: string; subCodeReason?: string; subCodeActions?: string[]; messageId?: string; seqId?: string; } export interface OpenSessionResult { sessionId: string; retryCount?: number; } export interface SessionInterface { callback: SessionMessageCallbackObject; sessionData: SessionDataInfo; receiveMsgFromSocket: (data: SessionMessageModel) => void; waitingForStart: () => void; startReceiveMsg: () => Promise; sendMsg(msg: SessionSendModel, wsId: string): Promise; fetchSessionMsg(data: { history: boolean; msgList?: SessionMessageModel[]; seqId?: string; }): Promise; appendErrorMsg: (data: ErrorMsg) => void; }