78 lines · 2.2 KB · TypeScript
RawDownload
import {  CODEX_REASONING_EFFORT_OPTIONS,  DEFAULT_MODEL_BY_PROVIDER,  MODEL_OPTIONS_BY_PROVIDER,  MODEL_SLUG_ALIASES_BY_PROVIDER,  type CodexReasoningEffort,  type ModelSlug,  type ProviderKind,} from "@t3tools/contracts"; type CatalogProvider = keyof typeof MODEL_OPTIONS_BY_PROVIDER; const MODEL_SLUG_SET_BY_PROVIDER: Record<CatalogProvider, ReadonlySet<ModelSlug>> = {  codex: new Set(MODEL_OPTIONS_BY_PROVIDER.codex.map((option) => option.slug)),}; export function getModelOptions(provider: ProviderKind = "codex") {  return MODEL_OPTIONS_BY_PROVIDER[provider];} export function getDefaultModel(provider: ProviderKind = "codex"): ModelSlug {  return DEFAULT_MODEL_BY_PROVIDER[provider];} export function normalizeModelSlug(  model: string | null | undefined,  provider: ProviderKind = "codex",): ModelSlug | null {  if (typeof model !== "string") {    return null;  }   const trimmed = model.trim();  if (!trimmed) {    return null;  }   const aliases = MODEL_SLUG_ALIASES_BY_PROVIDER[provider] as Record<string, ModelSlug>;  const aliased = aliases[trimmed];  return typeof aliased === "string" ? aliased : (trimmed as ModelSlug);} export function resolveModelSlug(  model: string | null | undefined,  provider: ProviderKind = "codex",): ModelSlug {  const normalized = normalizeModelSlug(model, provider);  if (!normalized) {    return getDefaultModel(provider);  }   return MODEL_SLUG_SET_BY_PROVIDER[provider].has(normalized)    ? normalized    : getDefaultModel(provider);} export function resolveModelSlugForProvider(  provider: ProviderKind,  model: string | null | undefined,): ModelSlug {  return resolveModelSlug(model, provider);} export function getReasoningEffortOptions(  provider: ProviderKind = "codex",): ReadonlyArray<CodexReasoningEffort> {  return provider === "codex" ? CODEX_REASONING_EFFORT_OPTIONS : [];} export function getDefaultReasoningEffort(provider: "codex"): CodexReasoningEffort;export function getDefaultReasoningEffort(provider: ProviderKind): CodexReasoningEffort | null;export function getDefaultReasoningEffort(  provider: ProviderKind = "codex",): CodexReasoningEffort | null {  return provider === "codex" ? "high" : null;} export { CODEX_REASONING_EFFORT_OPTIONS };