import type { ITool } from '../tool/entities.js'; import type { SkillDefinition } from '../skill/entities.js'; /** Permissions a plugin can request */ export interface PluginPermissions { fileSystem?: boolean; network?: boolean; subprocess?: boolean; tools?: string[]; } export interface PluginManifest { name: string; version: string; description: string; permissions: PluginPermissions; main: string; } export interface PluginAPI { registerTool(tool: ITool): void; registerSkill(skill: SkillDefinition): void; getWorkingDirectory(): string; log(message: string, level?: "info" | "warn" | "error"): void; } export interface IPlugin { readonly manifest: PluginManifest; readonly loaded: boolean; load(): Promise; activate(api: PluginAPI): Promise; deactivate(): Promise; } export interface IPluginLoader { /** Load a plugin from its directory (reads manifest.json) */ loadFromDirectory(dirPath: string): Promise; /** Create a plugin instance from a manifest */ create(manifest: PluginManifest): IPlugin; } export interface IPluginManager { loadPlugin(dirPath: string): Promise; unloadPlugin(name: string): Promise; activatePlugin(name: string, api: PluginAPI): Promise; deactivatePlugin(name: string): Promise; getPlugin(name: string): IPlugin | undefined; listPlugins(): IPlugin[]; } //# sourceMappingURL=entities.d.ts.map