File size: 2,338 Bytes
68d7816 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 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<readonly PluginSummary[]>;
installPlugin(input: InstallPluginInput): Promise<PluginSummary>;
setPluginEnabled(input: SetPluginEnabledInput): Promise<void>;
setPluginMcpServerEnabled(input: SetPluginMcpServerEnabledInput): Promise<void>;
removePlugin(input: RemovePluginInput): Promise<void>;
reloadPlugins(): Promise<ReloadSummary>;
getPluginInfo(input: GetPluginInfoInput): Promise<PluginInfo>;
listPluginCommands(): Promise<readonly PluginCommandDef[]>;
checkUpdates(): Promise<readonly PluginUpdateStatus[]>;
pluginSkillRoots(): Promise<readonly SkillRoot[]>;
pluginAgentRoots(): Promise<readonly PluginAgentRoot[]>;
enabledSessionStarts(): Promise<readonly EnabledPluginSessionStart[]>;
enabledSystemPrompts(): Promise<readonly EnabledPluginSystemPrompt[]>;
enabledMcpServers(): Promise<Record<string, McpServerConfig>>;
mcpServerEntries(): Promise<readonly PluginMcpServerEntry[]>;
enabledHooks(): Promise<readonly HookDef[]>;
hasLoadedSnapshot(): boolean;
readonly onDidReload: Event<PluginReloadEvent>;
readonly onDidMutate: Event<PluginMutationSummary>;
}
export const IPluginService: ServiceIdentifier<IPluginService> =
createDecorator<IPluginService>('pluginService');
|