/** * Shared Cursor model fallback metadata. * * Single source of truth for the static fallback catalog, consumed by both * the runtime discovery path (src/models.ts) and the setup config patcher * (bin/setup.ts) so the two can never drift apart. This module must stay * dependency-free of proxy/network imports: bin/setup.ts bundles it. * * Per-tier Cursor slugs are listed in RAW_FALLBACK_MODELS, then collapsed * into base families via collapseModelsToFamilies (src/model-variants.ts). * Legacy per-tier slugs remain as aliases on the base entry. */ export interface CursorModelParameter { id: string; value: string; } export interface CursorModelCapabilities { supportsAgent: boolean; supportsCmdK: boolean; supportsPlanMode: boolean; supportsThinking: boolean; supportsImages: boolean; supportsMaxMode: boolean; supportsNonMaxMode: boolean; supportsSandboxing: boolean; } export interface CursorModelVariantMetadata { publicId: string; displayName: string; variantStringRepresentation?: string; legacySlug?: string; parameterValues: CursorModelParameter[]; isDefaultMaxConfig: boolean; isDefaultNonMaxConfig: boolean; contextWindow?: number; } export interface CursorModel { id: string; name: string; reasoning: boolean; contextWindow: number; maxTokens: number; cursorModelId: string; parameters: CursorModelParameter[]; aliases: string[]; legacySlugs: string[]; capabilities: CursorModelCapabilities; parameterDefinitions: unknown[]; variants: CursorModelVariantMetadata[]; vendor?: string; } export declare function defaultCapabilities(reasoning: boolean): CursorModelCapabilities; export declare function fallbackModel(id: string, name: string, reasoning: boolean, contextWindow: number, maxTokens: number, extras?: { cursorModelId?: string; aliases?: string[]; legacySlugs?: string[]; parameters?: CursorModelParameter[]; }): CursorModel; /** Collapsed catalog: one picker entry per effort family. */ export declare const FALLBACK_MODELS: CursorModel[]; /** * Former picker ids that setup should drop from opencode.json. Includes the * removed non-fast grok-4.5 family (base + per-tier slugs). */ export declare const REMOVED_PICKER_MODEL_IDS: ReadonlySet; export declare const REQUIRED_MODEL_IDS: readonly ["composer-2.5-fast", "composer-2.5", "grok-4.5-fast", "grok-4.6", "grok-4.6-fast"]; export declare const FALLBACK_BY_ID: Map; /** * Per-tier Cursor slugs that used to be top-level picker entries and are now * aliases of a collapsed base family. Setup drops these from opencode.json so * the picker does not list both `grok-4.5-fast` and `grok-4.5-fast-high`. * Runtime still resolves them via aliases/legacySlugs. */ export declare const LEGACY_EFFORT_MODEL_IDS: ReadonlySet; export declare const NO_TEMPERATURE_MODEL_IDS: Set; /** OpenCode picker metadata for a single seeded Cursor model. */ export interface SetupModelMetadata { name: string; reasoning: boolean; temperature: boolean; attachment: boolean; tool_call: boolean; limit: { context: number; input: number; output: number; }; } /** * Single source of truth for the model list that `bin/setup.ts` seeds into * `opencode.json`. Derived from FALLBACK_MODELS so the setup-seeded picker and * the runtime fallback list cannot drift apart. */ export declare const SETUP_MODEL_METADATA: Record;