UNPKG

@glodon-aiot/agent-cli-sdk

Version:

aiot agent client js sdk

210 lines (209 loc) 9.02 kB
import { ChatMessageRole, IApplication, IChatMessage, ICommentParam, ISession, ISessionPrompt } from '@glodon-aiot/apis'; import { Socket } from 'socket.io-client'; import EventBus from './EventBus'; import { ActionPayload, PluginFunctionBasic, Thought } from './PayloadTypes'; import { CVForceApi } from '@glodon-aiot/apis'; import { ChatHistoryParams, IKnowledge } from '@glodon-aiot/apis'; import BotClient from './BotClient'; export declare enum NetOpen { enable = 1, disable = 2 } export interface QuestionBody { content: string; stream: boolean; requestId?: string; fileIds?: string[]; oldMessageId?: string; referenceFirst?: boolean; } export interface QuestionConfig { stream?: boolean; referenceFirst?: boolean; formatValues?: any; oldMessageId?: string; } type ActionPayloadBasic = ActionPayload<PluginFunctionBasic & Thought>; export type SessionEventName = 'init' | 'ready' | 'activated' | 'inactivated' | 'frozen' | 'data:loading' | 'data:loaded' | 'data:updating' | 'data:updated' | 'data:updated:promptVariables' | 'data:updated:knowledges' | 'data:creating' | 'data:created' | 'data:deleting' | 'data:deleted' | 'socket:connect' | 'socket:disconnect' | 'error' | 'destroy' | 'history:loading' | 'history:loaded' | 'history:moreloading' | 'history:moreloaded' | 'history:add' | 'message:new' | 'message:updated' | 'message:action' | 'message:content' | 'message:reference' | 'message:relatedQuesion:loading' | 'message:relatedQuesion:loaded' | 'message:comment' | 'message:error' | 'answer:finish'; export declare enum SessionErrors { DataRequestFailed = "data request error", SocketConnectionFailed = "socket error", IdUndefined = "session id is not defined", SendingEmptyContent = "failed at sending empty content", Frozen = "session is frozen", UserModeError = "failed at setting socket user mode", Inactive = "session is inactive" } export declare const SESSION_ERROR_CAUSE: { "session id is not defined": { code: number; message: string; }; "failed at sending empty content": { code: number; message: string; }; "session is frozen": { code: number; message: string; }; }; export default abstract class Session { protected token: string; protected lazyload?: boolean | undefined; protected _id?: string; protected _frozen: boolean; protected inactivating: boolean; protected _ready: boolean; protected event: EventBus; _applicationId: string; _application: IApplication | null; data: ISession | null; readonly client: BotClient | null; messages: IChatMessage[]; protected _loadingMessages: boolean; protected _loadingMessagesSize: number; cvforceApi: CVForceApi; socket: Socket | null; protected _promptVariables: ISessionPrompt[]; protected active: boolean; protected activing: boolean; protected _stopAnswer: boolean; private _dataLoading; private _dataLoaded; /** * Session 类的构造函数,用于初始化会话实例。 * @param token - 用户的身份验证令牌,用于解析应用 ID。 * @param _id - 会话的 ID,可选参数,默认为空字符串。 * @param _data - 会话的初始数据,可选参数,包含提示变量、知识库等信息。 * @param lazyload - 是否懒加载数据,可选参数,默认为 undefined。 * @param _application - 应用信息,可选参数。 * @param client - Bot 客户端实例,可选参数。 */ constructor(token: string, _id?: string, _data?: Partial<ISession & { promptVariables?: Partial<ISessionPrompt>[]; }>, lazyload?: boolean | undefined, _application?: IApplication, client?: BotClient); fetchData(): Promise<ISession>; get id(): string; get applicationId(): string; get application(): IApplication | null; loadApplicationInfo(): Promise<IApplication>; get ready(): boolean; get frozen(): boolean; protected set frozen(v: boolean); get knowledges(): IKnowledge[] | undefined; setKnowledges(knowledges?: IKnowledge[]): Promise<IKnowledge[] | undefined>; validateConfigs(): void; get promptVariables(): ISessionPrompt[]; setPromptVariables(v: ISessionPrompt[]): Promise<ISessionPrompt[] | undefined>; get netOpen(): boolean; /** * 异步设置会话的网络访问开关状态 * @param v - 布尔值,表示是否开启网络访问,true 为开启,false 为关闭 * @returns 如果设置成功,返回最终的网络访问开关状态;若不满足设置条件,则提前返回 undefined */ setNetOpen(v: boolean): Promise<boolean | undefined>; private getService; addEventListener(eventName: SessionEventName, callback: any, once?: boolean): void; removeEventListener(eventName: SessionEventName, callback: any): void; /** * 获取对话记录 * @param params ChatHistoryParams * @returns Promise<false|Message[]> */ fetchMessages(params?: ChatHistoryParams): Promise<false | { actions: ActionPayloadBasic[][]; relatedQuesion: string[] | undefined; ts?: string | undefined; messageId: string; content: string; role: ChatMessageRole; userId?: string | undefined; sessionId: string; reference: import("@glodon-aiot/apis").IReference[]; searchReference: import("@glodon-aiot/apis").ISearchRefernce[]; comment?: import("@glodon-aiot/apis/dist/src/cvforce").ICommentParam | undefined; knowledges?: IKnowledge[] | undefined; isLoading?: boolean | undefined; messageTime: string; fileId?: string | undefined; file?: import("@glodon-aiot/apis/dist/src/cvforce").KnowledgeFileMetadata | undefined; chatMode?: import("@glodon-aiot/apis").ChatMode | undefined; llmModel?: string | undefined; isContext?: boolean | undefined; index?: number | undefined; agentHistoryList?: { agentList: string; createdAt: string; creator: string; deletedAt: string; id: string; updatedAt: string; } | undefined; finish?: boolean | undefined; code?: number | undefined; isSensitive?: boolean | undefined; message?: string | undefined; stream?: boolean | undefined; fileIds?: string[] | undefined; isReplying?: boolean | undefined; files?: import("@glodon-aiot/apis").ChatMessageFile[] | undefined; thinkingSecs?: number | undefined; thinkingStatus?: "end" | "start" | undefined; reasoningContent?: string | undefined; }[]>; rename(name: string): Promise<boolean>; protected pushMessage(message: IChatMessage): Promise<void>; reloadSessionInfo(): Promise<this>; reload(): Promise<unknown>; delete(): Promise<string | false>; activate(): Promise<unknown>; inactivate(immediately?: boolean): boolean; abstract prepareConnection(): Promise<boolean>; abstract sendQuestion(params: QuestionBody, configs: QuestionConfig): any; abstract stopAnswer(): any; get dataLoaded(): boolean; get messagesLoading(): boolean; send(params: { text?: string; uuid?: string; fileIds?: string[]; }, configs?: QuestionConfig): Promise<false | { sessionId: string; role: number; content: string; messageId: string; reference: never[]; searchReference: never[]; messageTime: string; }>; protected getRelatedQuesion(message: IChatMessage): Promise<IChatMessage>; protected fillMessageReference(message: IChatMessage): Promise<IChatMessage>; answerAgain(configs?: QuestionConfig): Promise<void>; setTop(top: boolean): Promise<void>; /** * 暂停当前会话的回答过程 * 该方法会停止当前回答,标记回答停止状态,处理正在进行的消息和操作, * 并根据情况更新消息内容或添加新的系统消息。 * @returns 返回当前会话实例 */ suspend(): this | undefined; /** * 异步提交评论信息 * @param params - 评论参数,包含评论相关的信息,如消息 ID 等 * @returns 返回调用 API 提交评论后的响应结果 */ postMessageComment(params: ICommentParam): Promise<string>; /** * 清除当前会话的上下文信息 * 该方法会调用 API 清除指定会话的上下文,并在操作成功后触发相应事件 * @returns 如果会话 ID 存在且清除操作成功,返回一个解析为 true 的 Promise;若会话 ID 不存在,抛出错误 */ clear(): Promise<boolean>; /** * 销毁当前会话实例,执行清理操作并触发销毁事件 * @returns 返回当前会话的 ID,如果会话 ID 不存在则返回空字符串 */ destroy(): string; } export {};