import { ThinkingLevel } from "@gajae-code/agent-core"; import { type Api, type Effort, type Model, type ThinkingControlMode } from "@gajae-code/ai/core"; import { type ModelProfileDefinition } from "../config/model-profiles"; export type Q10ThinkingEffort = Effort; export type Q10SettableThinkingLevel = typeof ThinkingLevel.Off | Q10ThinkingEffort; export type Q10CurrentThinkingLevel = Q10SettableThinkingLevel | typeof ThinkingLevel.Inherit; export type Q10ThinkingMode = ThinkingControlMode; export interface Q10ThinkingCapabilities { validLevels: readonly Q10SettableThinkingLevel[]; minLevel?: Q10ThinkingEffort; maxLevel?: Q10ThinkingEffort; mode?: Q10ThinkingMode; defaultLevel?: Q10ThinkingEffort; /** Fresh raw explicit descriptor copy; source order retained. */ levels?: readonly Q10ThinkingEffort[]; } export interface Q10Model { provider: string; id: string; name: string; contextWindow: number; maxTokens: number; reasoning: boolean; thinking: Q10ThinkingCapabilities; current: boolean; currentThinkingLevel?: Q10CurrentThinkingLevel; } export type Q10ThinkingMetadataReason = "missing_thinking" | "unknown_min_level" | "unknown_max_level" | "inverted_range" | "unknown_mode" | "empty_levels" | "unknown_level" | "level_out_of_range" | "lower_bound_mismatch" | "upper_bound_mismatch" | "supported_membership_mismatch" | "empty_supported_levels" | "unknown_default_level" | "default_not_supported"; /** An intentionally safe error for malformed model thinking metadata. */ export declare class Q10ThinkingMetadataError extends Error { readonly reason: Q10ThinkingMetadataReason; readonly code = "internal"; constructor(provider: string, id: string, reason: Q10ThinkingMetadataReason); } export interface Q10ModelProjectionInput { models: readonly Model[]; currentModel?: Model; currentThinkingLevel?: Q10CurrentThinkingLevel; resolveSupportedEfforts?: (model: Model) => readonly Effort[]; /** * Logical model-profile facade inputs. When supplied, deterministic, * availability-filtered synthetic rows (`gajae-code/`) are * appended after the real rows; the underlying `Model` registry entries * are never touched. */ profiles?: ReadonlyMap; /** Profile ids whose providers are authenticated and therefore selectable. */ availableProfileIds?: ReadonlySet; /** Active in-session profile marker; its synthetic row is the logical current. */ activeProfile?: string; /** Resolve a profile's default concrete model for display metadata. */ resolveProfileDefaultModel?: (profile: ModelProfileDefinition) => Model | undefined; } /** * Projects model registry entries into the Q10 public DTO without exposing * transport, credentials, pricing, or other registry internals. */ export declare function projectQ10Models(input: Q10ModelProjectionInput): Q10Model[];