/** * `ExtensionRegistryImpl` — extracted from `loader.ts` so `api.ts` can use it * without going through `loader.ts` (which imports back from `api.ts`, * forming a circular cycle). * * `loader.ts` still re-exports the class for backward-compat; this file is a * leaf and only depends on the type definitions in `./types/index.js`. */ import type { AgentTool } from '@earendil-works/pi-agent-core'; import type { ChannelPlugin } from '../channels/plugin-types.js'; import type { ExtensionCliRegistration, ExtensionCommand, ExtensionHookEvent, ExtensionHookHandler, ExtensionRecord, ExtensionRegistry, ExtensionMigrationRegistration, ExtensionReloadRegistration, ExtensionService, GatewayMethodHandler, HttpRequestHandler, TuiExtensionRegistrar, TuiExtensionRegistration } from './types/index.js'; export declare class ExtensionRegistryImpl implements ExtensionRegistry { extensions: Map; hooks: Map; httpRoutes: Map; commands: Map; services: Map; gatewayMethods: Map; tools: Map>; private toolExtensionIds; channelPlugins: ChannelPlugin[]; private cliRegistrations; private reloadRegistrations; private migrationRegistrations; private tuiRegistrations; addExtension(record: ExtensionRecord): void; getExtension(id: string): ExtensionRecord | undefined; getEnabledExtensions(): ExtensionRecord[]; addHook(event: ExtensionHookEvent, handler: ExtensionHookHandler, _extensionId: string, _priority?: number): void; getHooks(event: ExtensionHookEvent): ExtensionHookHandler[]; addChannelPlugin(plugin: ChannelPlugin): void; addHttpRoute(path: string, handler: HttpRequestHandler): void; getHttpRoute(path: string): HttpRequestHandler | undefined; addCommand(command: ExtensionCommand): void; getCommand(name: string): ExtensionCommand | undefined; addService(service: ExtensionService): void; getService(id: string): ExtensionService | undefined; addGatewayMethod(method: string, handler: GatewayMethodHandler): void; getGatewayMethod(method: string): GatewayMethodHandler | undefined; addTool(tool: any, extensionId: string): void; removeTool(name: string): void; getTools(): Map; getTool(name: string): any | undefined; getToolExtensionId(name: string): string | undefined; getAllTools(): any[]; addCliRegistration(reg: ExtensionCliRegistration): void; getCliRegistrations(): readonly ExtensionCliRegistration[]; addTuiRegistration(extensionId: string, register: TuiExtensionRegistrar): void; getTuiRegistrations(): readonly TuiExtensionRegistration[]; addReloadRegistration(reg: ExtensionReloadRegistration): void; removeReloadRegistration(extensionId: string): void; getReloadRegistrations(): readonly ExtensionReloadRegistration[]; addMigrationRegistration(reg: ExtensionMigrationRegistration): void; getMigrationRegistrations(): readonly ExtensionMigrationRegistration[]; getMatchingReloadRegistrations(changedPaths: string[]): ExtensionReloadRegistration[]; }