/** * [WHO]: KNOWN_MODEL_METADATA, lookupKnownModel(), UNKNOWN_MODEL_DEFAULTS, KnownModelMetadata * [FROM]: Depends on @catui/ai/types for Api type; data from known-models.generated.ts * [TO]: Consumed by core/model-registry.ts for discovered model defaults * [HERE]: core/model/known-models.ts - known model metadata for discovery fallback * * Provides a lookup table of model metadata extracted from models.generated.ts at build time. * When discovery finds a model ID from a remote /models endpoint, this table supplies * contextWindow, maxTokens, cost, etc. that the endpoint doesn't provide. */ import type { Api } from "@catui/ai/types"; /** * Lightweight metadata for a known model (no provider/baseUrl/runtime fields). */ export interface KnownModelMetadata { id: string; name: string; api: Api; contextWindow: number; maxTokens: number; reasoning: boolean; input: ("text" | "image")[]; cost: { input: number; output: number; cacheRead: number; cacheWrite: number; }; } /** * Map of model ID → known metadata. * * Populated at build time from models.generated.ts via scripts/generate-known-models.ts. * Multiple providers may share the same model ID (e.g., "gpt-4o" appears under both * "openai" and "openrouter"), so this map uses the bare model ID as key. */ export declare const KNOWN_MODEL_METADATA: Map; /** * Look up known metadata for a discovered model by ID. * * Resolution order: * 1. Exact match (e.g., "claude-sonnet-4-20250514") * 2. Strip date suffix (e.g., "claude-sonnet-4-20250514" → "claude-sonnet-4") * 3. Strip "-latest" suffix (e.g., "gemini-2.5-flash-latest" → "gemini-2.5-flash") * 4. Returns undefined if no match found */ export declare function lookupKnownModel(modelId: string): KnownModelMetadata | undefined; /** * Conservative defaults for completely unknown discovered models. * Used when lookupKnownModel() returns undefined. * * Note: `api` is intentionally omitted — it should come from the provider config. */ export declare const UNKNOWN_MODEL_DEFAULTS: { readonly contextWindow: 128000; readonly maxTokens: 16384; readonly reasoning: false; readonly input: ("text" | "image")[]; readonly cost: { readonly input: 0; readonly output: 0; readonly cacheRead: 0; readonly cacheWrite: 0; }; };