Spaces:
Runtime error
Runtime error
| import { Router } from 'express'; | |
| import type { Request, Response } from 'express'; | |
| import { getDb } from '../db/index.js'; | |
| import { hasProvider } from '../providers/index.js'; | |
| export const modelsRouter = Router(); | |
| // List all models with availability info | |
| modelsRouter.get('/', (_req: Request, res: Response) => { | |
| const db = getDb(); | |
| const models = db.prepare(` | |
| SELECT m.*, fc.priority, fc.enabled as fallback_enabled | |
| FROM models m | |
| LEFT JOIN fallback_config fc ON fc.model_db_id = m.id | |
| ORDER BY COALESCE(fc.priority, m.intelligence_rank) ASC | |
| `).all() as any[]; | |
| // Count keys per platform | |
| const keyCounts = db.prepare(` | |
| SELECT platform, COUNT(*) as count | |
| FROM api_keys | |
| WHERE enabled = 1 | |
| GROUP BY platform | |
| `).all() as { platform: string; count: number }[]; | |
| const keyCountMap = new Map(keyCounts.map(k => [k.platform, k.count])); | |
| const result = models.map(m => ({ | |
| id: m.id, | |
| platform: m.platform, | |
| modelId: m.model_id, | |
| displayName: m.display_name, | |
| intelligenceRank: m.intelligence_rank, | |
| speedRank: m.speed_rank, | |
| sizeLabel: m.size_label, | |
| rpmLimit: m.rpm_limit, | |
| rpdLimit: m.rpd_limit, | |
| tpmLimit: m.tpm_limit, | |
| tpdLimit: m.tpd_limit, | |
| monthlyTokenBudget: m.monthly_token_budget, | |
| contextWindow: m.context_window, | |
| enabled: m.enabled === 1, | |
| supportsVision: m.supports_vision === 1, | |
| supportsTools: m.supports_tools === 1, | |
| priority: m.priority, | |
| fallbackEnabled: m.fallback_enabled === 1, | |
| hasProvider: hasProvider(m.platform), | |
| keyCount: keyCountMap.get(m.platform) ?? 0, | |
| })); | |
| res.json(result); | |
| }); | |