1 line
6.0 KiB
JSON
1 line
6.0 KiB
JSON
{"repo": "aegntic/soldexter", "files": {"src/providers.ts": {"a6b507f11ec0737e3662f45a94d72e905c127f43": {"t": 1785745581.1919246, "n": 2842, "h": "3b3098d8b7acfae4", "c": "/**\n * Canonical provider registry — single source of truth for all provider metadata.\n * When adding a new provider, add a single entry here; all other modules derive from this.\n */\n\nexport interface ProviderDef {\n /** Slug used in config/settings (e.g., 'anthropic') */\n id: string;\n /** Human-readable name (e.g., 'Anthropic') */\n displayName: string;\n /** Model name prefix used for routing (e.g., 'claude-'). Empty string for default (OpenAI). */\n modelPrefix: string;\n /** Environment variable name for API key. Omit for local providers (e.g., Ollama). */\n apiKeyEnvVar?: string;\n /** Fast model variant for lightweight tasks like summarization. */\n fastModel?: string;\n /** Default context window size in tokens. Used for model-aware compaction thresholds. */\n contextWindow?: number;\n}\n\nexport const PROVIDERS: ProviderDef[] = [\n {\n id: 'openai',\n displayName: 'OpenAI',\n modelPrefix: '',\n apiKeyEnvVar: 'OPENAI_API_KEY',\n fastModel: 'gpt-5.4-mini',\n contextWindow: 1_047_576,\n },\n {\n id: 'anthropic',\n displayName: 'Anthropic',\n modelPrefix: 'claude-',\n apiKeyEnvVar: 'ANTHROPIC_API_KEY',\n fastModel: 'claude-haiku-4-5',\n contextWindow: 200_000,\n },\n {\n id: 'google',\n displayName: 'Google',\n modelPrefix: 'gemini-',\n apiKeyEnvVar: 'GOOGLE_API_KEY',\n fastModel: 'gemini-3-flash-preview',\n contextWindow: 1_000_000,\n },\n {\n id: 'xai',\n displayName: 'xAI',\n modelPrefix: 'grok-',\n apiKeyEnvVar: 'XAI_API_KEY',\n fastModel: 'grok-4-1-fast-reasoning',\n contextWindow: 131_072,\n },\n {\n id: 'moonshot',\n displayName: 'Moonshot',\n modelPrefix: 'kimi-',\n apiKeyEnvVar: 'MOONSHOT_API_KEY',\n fastModel: 'kimi-k2-5',\n contextWindow: 131_072,\n },\n {\n id: 'deepseek',\n displayName: 'DeepSeek',\n modelPrefix: 'deepseek-',\n apiKeyEnvVar: 'DEEPSEEK_API_KEY',\n fastModel: 'deepseek-v4-flash',\n contextWindow: 1_000_000,\n },\n {\n id: 'openrouter',\n displayName: 'OpenRouter',\n modelPrefix: 'openrouter:',\n apiKeyEnvVar: 'OPENROUTER_API_KEY',\n fastModel: 'openrouter:openai/gpt-4o-mini',\n contextWindow: 128_000,\n },\n {\n id: 'ollama',\n displayName: 'Ollama',\n modelPrefix: 'ollama:',\n contextWindow: 128_000,\n },\n];\n\nconst defaultProvider = PROVIDERS.find((p) => p.id === 'openai')!;\n\n/**\n * Resolve the provider for a given model name based on its prefix.\n * Falls back to OpenAI when no prefix matches.\n */\nexport function resolveProvider(modelName: string): ProviderDef {\n return (\n PROVIDERS.find((p) => p.modelPrefix && modelName.startsWith(p.modelPrefix)) ??\n defaultProvider\n );\n}\n\n/**\n * Look up a provider by its slug (e.g., 'anthropic', 'google').\n */\nexport function getProviderById(id: string): ProviderDef | undefined {\n return PROVIDERS.find((p) => p.id === id);\n}\n"}, "b1ac77515cd92caaf670126d49651aa9f076efe9": {"t": 1785754480.8012419, "n": 2842, "h": "3b3098d8b7acfae4", "c": "/**\n * Canonical provider registry — single source of truth for all provider metadata.\n * When adding a new provider, add a single entry here; all other modules derive from this.\n */\n\nexport interface ProviderDef {\n /** Slug used in config/settings (e.g., 'anthropic') */\n id: string;\n /** Human-readable name (e.g., 'Anthropic') */\n displayName: string;\n /** Model name prefix used for routing (e.g., 'claude-'). Empty string for default (OpenAI). */\n modelPrefix: string;\n /** Environment variable name for API key. Omit for local providers (e.g., Ollama). */\n apiKeyEnvVar?: string;\n /** Fast model variant for lightweight tasks like summarization. */\n fastModel?: string;\n /** Default context window size in tokens. Used for model-aware compaction thresholds. */\n contextWindow?: number;\n}\n\nexport const PROVIDERS: ProviderDef[] = [\n {\n id: 'openai',\n displayName: 'OpenAI',\n modelPrefix: '',\n apiKeyEnvVar: 'OPENAI_API_KEY',\n fastModel: 'gpt-5.4-mini',\n contextWindow: 1_047_576,\n },\n {\n id: 'anthropic',\n displayName: 'Anthropic',\n modelPrefix: 'claude-',\n apiKeyEnvVar: 'ANTHROPIC_API_KEY',\n fastModel: 'claude-haiku-4-5',\n contextWindow: 200_000,\n },\n {\n id: 'google',\n displayName: 'Google',\n modelPrefix: 'gemini-',\n apiKeyEnvVar: 'GOOGLE_API_KEY',\n fastModel: 'gemini-3-flash-preview',\n contextWindow: 1_000_000,\n },\n {\n id: 'xai',\n displayName: 'xAI',\n modelPrefix: 'grok-',\n apiKeyEnvVar: 'XAI_API_KEY',\n fastModel: 'grok-4-1-fast-reasoning',\n contextWindow: 131_072,\n },\n {\n id: 'moonshot',\n displayName: 'Moonshot',\n modelPrefix: 'kimi-',\n apiKeyEnvVar: 'MOONSHOT_API_KEY',\n fastModel: 'kimi-k2-5',\n contextWindow: 131_072,\n },\n {\n id: 'deepseek',\n displayName: 'DeepSeek',\n modelPrefix: 'deepseek-',\n apiKeyEnvVar: 'DEEPSEEK_API_KEY',\n fastModel: 'deepseek-v4-flash',\n contextWindow: 1_000_000,\n },\n {\n id: 'openrouter',\n displayName: 'OpenRouter',\n modelPrefix: 'openrouter:',\n apiKeyEnvVar: 'OPENROUTER_API_KEY',\n fastModel: 'openrouter:openai/gpt-4o-mini',\n contextWindow: 128_000,\n },\n {\n id: 'ollama',\n displayName: 'Ollama',\n modelPrefix: 'ollama:',\n contextWindow: 128_000,\n },\n];\n\nconst defaultProvider = PROVIDERS.find((p) => p.id === 'openai')!;\n\n/**\n * Resolve the provider for a given model name based on its prefix.\n * Falls back to OpenAI when no prefix matches.\n */\nexport function resolveProvider(modelName: string): ProviderDef {\n return (\n PROVIDERS.find((p) => p.modelPrefix && modelName.startsWith(p.modelPrefix)) ??\n defaultProvider\n );\n}\n\n/**\n * Look up a provider by its slug (e.g., 'anthropic', 'google').\n */\nexport function getProviderById(id: string): ProviderDef | undefined {\n return PROVIDERS.find((p) => p.id === id);\n}\n"}}}} |