import { Context, Service, Session } from "koishi"; import { Config } from "../../config"; import { Services } from "../../shared/constants"; import { IExtension, ToolCallResult, ToolDefinition, ToolSchema } from "./types"; declare module "koishi" { interface Context { [Services.Tool]: ToolService; } } /** * ToolService * 负责注册、管理和提供所有扩展和工具。 */ export declare class ToolService extends Service { static readonly inject: Services[]; private tools; private extensions; private _logger; private promptService; constructor(ctx: Context, config: Config); protected start(): Promise; private registerCommands; private _registerPromptTemplates; /** * 注册一个新的扩展。 * @param ExtConstructor 扩展的构造函数 * @param enabled 是否启用此扩展 * @param extConfig 传递给扩展实例的配置 */ register(extensionInstance: IExtension, enabled: boolean, extConfig: any): void; unregister(name: string): boolean; registerTool(definition: ToolDefinition): void; unregisterTool(name: string): boolean; invoke(functionName: string, params: Record, session?: Session): Promise; getTool(name: string, session?: Session): ToolDefinition | undefined; getAvailableTools(session?: Session): ToolDefinition[]; getExtension(name: string): IExtension | undefined; /** * 根据工具名称获取其 schema。 * 如果工具在当前会话中不可用,则返回 undefined。 * @param name 工具名称 * @param session 可选的会话对象 * @returns 工具的 Schema 或 undefined */ getSchema(name: string, session?: Session): ToolSchema | undefined; /** * 获取在当前会话中所有可用工具的 Schema 列表。 * @param session 可选的会话对象 * @returns 可用工具的 Schema 数组 */ getToolSchemas(session?: Session): ToolSchema[]; /** * 将 ToolDefinition 转换为 ToolSchema。 * @param tool 工具定义对象 * @returns 工具的 Schema 对象 */ private _toolDefinitionToSchema; }