mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-08 00:02:20 +03:00
- providerModels: supportsXHighEffort returns true for unknown providers (passthrough) so PR #2162 sanitizeReasoningEffortForProvider no longer downgrades xhigh for non-registry custom providers - providerRegistry(openai): add gpt-4o + gpt-4o-2024-11-20 with explicit contextLength so catalog tests can resolve them without synced DB data - context-manager.test: update GPT-5.5 Codex expected context 1050000→400000 (PR #2163 capped codex OAuth context at 400K) - provider-models-config.test: update kiro claude-opus-4.7 contextLength undefined→1000000 (PR #2163 added explicit context window) - oauth-providers-config.test: add windsurf and devin-cli to expected provider keys and config map (PR #2168) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
69 lines
2.5 KiB
TypeScript
69 lines
2.5 KiB
TypeScript
import { generateModels, generateAliasMap, type RegistryModel } from "./providerRegistry.ts";
|
|
|
|
// Provider models - Generated from providerRegistry.js (single source of truth)
|
|
export const PROVIDER_MODELS = generateModels();
|
|
|
|
// Provider ID to alias mapping - Generated from providerRegistry.js
|
|
export const PROVIDER_ID_TO_ALIAS = generateAliasMap();
|
|
|
|
// Helper functions
|
|
export function getProviderModels(aliasOrId: string): RegistryModel[] {
|
|
return PROVIDER_MODELS[aliasOrId] || [];
|
|
}
|
|
|
|
export function getDefaultModel(aliasOrId: string): string | null {
|
|
const models = PROVIDER_MODELS[aliasOrId];
|
|
return models?.[0]?.id || null;
|
|
}
|
|
|
|
export function getProviderModel(aliasOrId: string, modelId: string): RegistryModel | undefined {
|
|
const models = PROVIDER_MODELS[aliasOrId];
|
|
if (!models) return undefined;
|
|
return models.find((model) => model.id === modelId);
|
|
}
|
|
|
|
export function isValidModel(
|
|
aliasOrId: string,
|
|
modelId: string,
|
|
passthroughProviders = new Set<string>()
|
|
): boolean {
|
|
if (passthroughProviders.has(aliasOrId)) return true;
|
|
const models = PROVIDER_MODELS[aliasOrId];
|
|
if (!models) return false;
|
|
return models.some((m) => m.id === modelId);
|
|
}
|
|
|
|
export function findModelName(aliasOrId: string, modelId: string): string {
|
|
const models = PROVIDER_MODELS[aliasOrId];
|
|
if (!models) return modelId;
|
|
const found = models.find((m) => m.id === modelId);
|
|
return found?.name || modelId;
|
|
}
|
|
|
|
export function getModelTargetFormat(aliasOrId: string, modelId: string): string | null {
|
|
const models = PROVIDER_MODELS[aliasOrId];
|
|
if (!models) return null;
|
|
const found = models.find((m) => m.id === modelId);
|
|
return found?.targetFormat || null;
|
|
}
|
|
|
|
export function getModelStripTypes(aliasOrId: string, modelId: string): string[] {
|
|
const models = PROVIDER_MODELS[aliasOrId];
|
|
if (!models) return [];
|
|
const found = models.find((m) => m.id === modelId);
|
|
return Array.isArray(found?.strip) ? [...found.strip] : [];
|
|
}
|
|
|
|
export function getModelsByProviderId(providerId: string): RegistryModel[] {
|
|
const alias = PROVIDER_ID_TO_ALIAS[providerId] || providerId;
|
|
return PROVIDER_MODELS[alias] || [];
|
|
}
|
|
|
|
export function supportsXHighEffort(aliasOrId: string, modelId: string): boolean {
|
|
const alias = PROVIDER_ID_TO_ALIAS[aliasOrId] || aliasOrId;
|
|
const providerModels = PROVIDER_MODELS[alias] || PROVIDER_MODELS[aliasOrId];
|
|
// Unknown provider (not in registry) — pass through unchanged.
|
|
if (!providerModels) return true;
|
|
return getProviderModel(alias, modelId)?.supportsXHighEffort === true;
|
|
}
|