import { DEFAULT_MODEL, DEFAULT_MODEL_BY_PROVIDER, defaultInstanceIdForDriver, ProviderDriverKind, type ModelCapabilities, type ProviderInstanceId, type ServerProvider, type ServerProviderModel, } from "@t3tools/contracts"; import { createModelCapabilities, normalizeModelSlug } from "@t3tools/shared/model"; const EMPTY_CAPABILITIES: ModelCapabilities = createModelCapabilities({ optionDescriptors: [], }); const DEFAULT_DRIVER_KIND = ProviderDriverKind.make("codex"); export function formatProviderDriverKindLabel(provider: ProviderDriverKind): string { return provider .replace(/([a-z])([A-Z])/g, "$1 $2") .replace(/[_-]+/g, " ") .trim() .replace(/\b\w/g, (char) => char.toUpperCase()); } export function getProviderModels( providers: ReadonlyArray, provider: ProviderDriverKind, ): ReadonlyArray { return getProviderSnapshot(providers, provider)?.models ?? []; } export function getProviderSnapshot( providers: ReadonlyArray, provider: ProviderDriverKind, ): ServerProvider | undefined { const defaultInstanceId = defaultInstanceIdForDriver(provider); return providers.find((candidate) => candidate.instanceId === defaultInstanceId); } export function getProviderDisplayName( providers: ReadonlyArray, provider: ProviderDriverKind, ): string { const snapshot = getProviderSnapshot(providers, provider); return snapshot?.displayName?.trim() || formatProviderDriverKindLabel(provider); } export function getProviderInteractionModeToggle( providers: ReadonlyArray, provider: ProviderDriverKind, ): boolean { return getProviderSnapshot(providers, provider)?.showInteractionModeToggle ?? true; } export function isProviderEnabled( providers: ReadonlyArray, provider: ProviderDriverKind, ): boolean { if (providers.length === 0) { return true; } return getProviderSnapshot(providers, provider)?.enabled ?? false; } // Resolve an instance selection to the correlated live driver. If the // instance is absent, fall back to a live enabled provider instead of // inferring a driver from the missing instance id. export function resolveSelectableProvider( providers: ReadonlyArray, provider: ProviderDriverKind | ProviderInstanceId | null | undefined, ): ProviderDriverKind { const requestedEntry = providers.find((candidate) => candidate.instanceId === provider); if (requestedEntry?.enabled) { return requestedEntry.driver; } return providers.find((candidate) => candidate.enabled)?.driver ?? DEFAULT_DRIVER_KIND; } export function getProviderModelCapabilities( models: ReadonlyArray, model: string | null | undefined, provider: ProviderDriverKind, ): ModelCapabilities { const slug = normalizeModelSlug(model, provider); return models.find((candidate) => candidate.slug === slug)?.capabilities ?? EMPTY_CAPABILITIES; } export function getDefaultServerModel( providers: ReadonlyArray, provider: ProviderDriverKind, ): string { const models = getProviderModels(providers, provider); return ( models.find((model) => model.isDefault && !model.isCustom)?.slug ?? models.find((model) => !model.isCustom)?.slug ?? models[0]?.slug ?? DEFAULT_MODEL_BY_PROVIDER[provider] ?? DEFAULT_MODEL ); }