/** * Pi model registry → ModelProfile mapper. * * Maps pi `Model` objects (provider + id) to router fleet entries using * pattern-based lookup for known families. When `config/benchmark-profiles.json` * contains a row for the model id (SP-134/136 ingest output), or a fleet alias * pointing at such a row (SP-174), capability vectors are grounded in benchmark * scores instead of regex defaults. Unknown models or missing benchmark rows * receive conservative pattern defaults. Mapped profiles include * `capability_source` (`benchmark` | `pattern_default`) for explain/telemetry. */ import type { ModelLimits, ModelProfile, Tier } from '../domain/types/entities.js'; /** Checked-in ingest artifact from `npm run routing:ingest-benchmarks` (SP-134). */ export declare const DEFAULT_BENCHMARK_PROFILES_PATH: string; /** Whether HyDRA capabilities came from the ingest artifact (or alias) vs regex defaults. */ export type CapabilitySource = 'benchmark' | 'pattern_default'; /** ModelProfile plus operator-visible capability provenance (SP-174). */ export interface MappedModelProfile extends ModelProfile { readonly capability_source: CapabilitySource; } /** * Test hook — override benchmark artifact path (null disables benchmark grounding). */ export declare function setBenchmarkProfilesPathForTests(filePath: string | null): void; /** Test hook — clear cached benchmark artifact between cases. */ export declare function resetBenchmarkProfilesCacheForTests(): void; /** * Resolve a scoped-fleet model id to the canonical ingest `model_id` via aliases. * Returns the input id when no alias exists. */ export declare function resolveBenchmarkModelId(modelId: string): string; /** * Whether capabilities for this model id resolve from the benchmark artifact * (direct row or fleet alias) vs pattern/family defaults. */ export declare function getCapabilitySource(modelId: string): CapabilitySource; /** Pi registry `Model.cost` shape — per-token USD rates. */ export interface PiRegistryCost { readonly input: number; readonly output: number; readonly cacheRead: number; readonly cacheWrite: number; } export interface PiModelInput { readonly provider: string; readonly id: string; readonly name?: string; readonly cost?: PiRegistryCost; } /** Conservative context limits when YAML and LiteLLM registry have no entry (SP-092). */ export declare const DEFAULT_MODEL_LIMITS: Readonly>; export declare function getDefaultLimitsForTier(tier: Tier): ModelLimits; /** * Default virtual subscription-quota cost for Cursor frontier models (SP-096 / #70). * `fallback_cost_per_1m` stays 0 (no per-token API billing); `quota_cost_per_1m` * is used only for frugality scoring and telemetry so economical API models are * not dominated solely because subscription registry cost is zero. */ export declare const DEFAULT_CURSOR_QUOTA_COST_PER_1M = 3; /** * Map a pi model registry entry to a router ModelProfile. * Includes `capability_source` for operators (benchmark vs pattern_default). */ export declare function mapPiModelToProfile(input: PiModelInput): MappedModelProfile; /** * Map an array of pi registry models to a router fleet catalog. */ export declare function mapFleetFromRegistry(models: readonly PiModelInput[]): MappedModelProfile[]; //# sourceMappingURL=pi-model-mapper.d.ts.map