import type { ToolDefinition } from "@earendil-works/pi-coding-agent"; export interface ResolvedDynamicExtension { name: string; description: string; revision: string; selector: string; /** Immutable catalog source used for repair and attestation diagnostics. */ canonicalPath: string; /** Exact run-local snapshot directory loaded by the child. */ sourcePath: string; loadPath: string; overrides: string[]; } export interface UsedDynamicExtension { name: string; description: string; selector: string; sourcePath: string; debugLogPaths: string[]; } export interface DynamicExtensionResolver { resolve( names: string[], args: { phase: string; agentId: string; signal?: AbortSignal }, ): Promise; builder( agentId: string, signal?: AbortSignal, ): Promise<{ tools: ToolDefinition[]; prompt: string; activeTools: string[]; }>; loaded( extensions: ResolvedDynamicExtension[], sessionId: string, ): UsedDynamicExtension[]; complete(): Promise; }