import { type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent"; export declare const PROFILE_NAMES: readonly ["fast", "balanced", "frontier", "fav"]; export type ProfileName = (typeof PROFILE_NAMES)[number]; export declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"]; export type ThinkingLevel = (typeof THINKING_LEVELS)[number]; /** A consumer-owned independently executed model operation. */ export type ModelTask = Readonly<{ id: string; label: string; purpose: string; defaultProfile: ProfileName; }>; export type TaskModelRoute = { model: string; thinkingLevel: ThinkingLevel; }; export type TaskModelProfile = { primary: TaskModelRoute; fallback?: TaskModelRoute; }; export type TaskModelsConfig = { profiles: Partial>; /** Explicit user overrides only; consumer defaults are declared at runtime. */ tasks: Record; }; export type AvailableModel = ReturnType[number]; export type ResolvedTaskRoute = { model: AvailableModel; thinkingLevel: ThinkingLevel; }; export declare function loadTaskModelsConfig(agentDir?: string): { source: "file" | "missing"; value: TaskModelsConfig; }; export declare function canonicalModelReference(model: { provider: string; id: string; } | string): string; export declare function modelReference(model: { provider: string; id: string; }): string; export declare function dedupeAvailableModels(models: readonly AvailableModel[], preferredProvider?: string): AvailableModel[]; export declare function resolveAvailableModel(models: readonly AvailableModel[], reference: string, preferredProvider?: string): AvailableModel | undefined; export declare function availableTaskModels(ctx: ExtensionContext): AvailableModel[]; export declare function taskThinkingLevels(ctx: ExtensionContext, model: AvailableModel): ThinkingLevel[]; export declare function resolveTaskModelRoute(ctx: ExtensionContext, route: TaskModelRoute, thinking?: ThinkingLevel): ResolvedTaskRoute | undefined; export declare function resolveConfiguredTaskRoutes(ctx: ExtensionContext, task: ModelTask, agentDir?: string, thinking?: ThinkingLevel): ResolvedTaskRoute[]; export type TaskRouteErrorCode = "config-missing" | "config-read" | "profile-missing" | "no-route"; export type TaskRouteError = Error & { taskRouteCode: TaskRouteErrorCode; profileName?: ProfileName; }; export declare function resolveConfiguredTaskRoute(ctx: ExtensionContext, task: ModelTask, agentDir?: string, thinking?: ThinkingLevel): ResolvedTaskRoute; export declare function executeTaskRoutes(routes: readonly ResolvedTaskRoute[], attempt: (route: ResolvedTaskRoute) => Promise, { signal, shouldFallback }: { signal?: AbortSignal; shouldFallback: (error: unknown) => boolean; }): Promise; export declare function orderedProfileRoutes(profile: TaskModelProfile): TaskModelRoute[]; /** Register one consumer-owned declaration for on-demand control-plane discovery. */ export declare function registerModelTask(pi: Pick, declaration: ModelTask): void; export declare function createTaskModelsExtension(pi: ExtensionAPI, options?: { agentDir?: string; }): void; export default createTaskModelsExtension;