import { createDecorator, type ServiceIdentifier } from '#/_base/di/instantiation'; import type { Event } from '#/_base/event'; import type { HookDef } from '#/features/externalHooks/internal/types'; import type { SkillRoot } from '#/features/skill/catalog/types'; import type { McpServerConfig } from '#/mcpCore/config-schema'; import type { EnabledPluginSessionStart, EnabledPluginSystemPrompt, PluginAgentRoot, PluginCommandDef, PluginInfo, PluginMcpServerEntry, PluginMutationSummary, PluginReloadEvent, PluginSummary, PluginUpdateStatus, ReloadSummary, } from './types'; export interface InstallPluginInput { readonly source: string; } export interface SetPluginEnabledInput { readonly id: string; readonly enabled: boolean; } export interface SetPluginMcpServerEnabledInput { readonly id: string; readonly server: string; readonly enabled: boolean; } export interface RemovePluginInput { readonly id: string; } export interface GetPluginInfoInput { readonly id: string; } export interface IPluginService { readonly _serviceBrand: undefined; listPlugins(): Promise; installPlugin(input: InstallPluginInput): Promise; setPluginEnabled(input: SetPluginEnabledInput): Promise; setPluginMcpServerEnabled(input: SetPluginMcpServerEnabledInput): Promise; removePlugin(input: RemovePluginInput): Promise; reloadPlugins(): Promise; getPluginInfo(input: GetPluginInfoInput): Promise; listPluginCommands(): Promise; checkUpdates(): Promise; pluginSkillRoots(): Promise; pluginAgentRoots(): Promise; enabledSessionStarts(): Promise; enabledSystemPrompts(): Promise; enabledMcpServers(): Promise>; mcpServerEntries(): Promise; enabledHooks(): Promise; hasLoadedSnapshot(): boolean; readonly onDidReload: Event; readonly onDidMutate: Event; } export const IPluginService: ServiceIdentifier = createDecorator('pluginService');