@glodon-aiot/agent-cli-sdk
Version:
aiot agent client js sdk
210 lines (209 loc) • 9.02 kB
TypeScript
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 {};