@glodon-aiot/agent-cli-sdk
Version:
aiot agent client js sdk
223 lines (222 loc) • 9.46 kB
TypeScript
import { ChatMessageRole, IApplication, IChatMessage, ICommentParam, ISession, ISessionPrompt, CVForceApi, ChatHistoryParams, IKnowledge } from '@glodon-aiot/apis';
import { MCPConfig } from './Config';
import { Socket } from 'socket.io-client';
import { default as EventBus } from './EventBus';
import { ActionPayload, PluginFunctionBasic, Thought } from './PayloadTypes';
import { default as 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;
protected _mcpServers: MCPConfig | null;
/**
* 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;
set application(v: IApplication | null);
loadApplicationInfo(): Promise<IApplication> | Promise<import('@glodon-aiot/apis/dist/src/cvforce').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[]>;
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;
messageId: string;
content: string;
role: ChatMessageRole;
userId?: string;
sessionId: string;
reference: import('@glodon-aiot/apis').IReference[];
searchReference: import('@glodon-aiot/apis').ISearchRefernce[];
comment?: import('@glodon-aiot/apis/dist/src/cvforce').ICommentParam;
knowledges?: IKnowledge[];
isLoading?: boolean;
messageTime: string;
fileId?: string;
file?: import('@glodon-aiot/apis/dist/src/cvforce').KnowledgeFileMetadata;
chatMode?: import('@glodon-aiot/apis').ChatMode;
llmModel?: string;
isContext?: boolean;
index?: number;
agentHistoryList?: {
agentList: string;
createdAt: string;
creator: string;
deletedAt: string;
id: string;
updatedAt: string;
};
finish?: boolean;
code?: number;
isSensitive?: boolean;
message?: string;
stream?: boolean;
fileIds?: string[];
isReplying?: boolean;
files?: import('@glodon-aiot/apis').ChatMessageFile[];
thinkingSecs?: number;
thinkingStatus?: "end" | "start";
reasoningContent?: string;
searchingStatus?: "start" | "end";
}[]>;
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;
abstract registerMcpFromClientConfig(): Promise<boolean>;
abstract addMcpServers(mcpServers: MCPConfig): Promise<boolean>;
abstract listMcpServers(): Promise<MCPConfig>;
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 declare class DialogSession extends Session {
prepareConnection(): Promise<boolean>;
sendQuestion(params: QuestionBody, configs: QuestionConfig): Promise<void>;
stopAnswer(): void;
registerMcpFromClientConfig(): Promise<boolean>;
addMcpServers(mcpServers: MCPConfig): Promise<boolean>;
listMcpServers(): Promise<MCPConfig>;
}
export {};