diff --git a/scripts/gen-models-table.ts b/scripts/gen-models-table.ts index 5d1d4f0..a26340a 100644 --- a/scripts/gen-models-table.ts +++ b/scripts/gen-models-table.ts @@ -56,12 +56,15 @@ type Row = { recommendation_bucket: string | null; }; +const PAGE_SIZE = 10_000; + async function main() { const url = new URL(`${SUPABASE_URL}/rest/v1/ai_models`); url.searchParams.set('select', SELECT); url.searchParams.set('is_hidden', 'eq.false'); url.searchParams.set('is_available', 'eq.true'); url.searchParams.set('order', 'provider.asc,name.asc'); + url.searchParams.set('limit', String(PAGE_SIZE)); const res = await fetch(url, { headers: { @@ -76,10 +79,17 @@ async function main() { const rows = (await res.json()) as Row[]; + if (rows.length === 0) { + throw new Error('No rows returned — check RLS policies or filters.'); + } + if (rows.length >= PAGE_SIZE) { + throw new Error( + `Received ${rows.length} rows — at or above PAGE_SIZE (${PAGE_SIZE}). Snapshot may be truncated; raise PAGE_SIZE or add pagination.`, + ); + } + const snapshot = { - source: `${SUPABASE_URL}/rest/v1/ai_models`, fetched_at: new Date().toISOString(), - count: rows.length, models: rows, }; diff --git a/src/components/ai-models-table.tsx b/src/components/ai-models-table.tsx index 6bdbcc9..351acb7 100644 --- a/src/components/ai-models-table.tsx +++ b/src/components/ai-models-table.tsx @@ -21,9 +21,7 @@ type Model = { }; type Snapshot = { - source: string; fetched_at: string; - count: number; models: Model[]; }; @@ -39,8 +37,12 @@ function formatContext(value: number | null): string { function formatPrice(value: number | null): string { if (value == null) return '—'; const perMtok = value * 1_000_000; + if (perMtok === 0) return '$0'; if (perMtok >= 1) return `$${perMtok.toFixed(2)}`; - return `$${perMtok.toFixed(3).replace(/0+$/, '').replace(/\.$/, '')}`; + if (perMtok >= 0.001) { + return `$${perMtok.toFixed(3).replace(/0+$/, '').replace(/\.$/, '')}`; + } + return `$${perMtok.toExponential(1)}`; } function formatFetched(iso: string): string { @@ -133,7 +135,7 @@ export function AiModelsTable() { />
- Showing {filtered.length} of {DATA.count} models. Snapshot fetched{' '} + Showing {filtered.length} of {DATA.models.length} models. Snapshot fetched{' '} {formatFetched(DATA.fetched_at)}. Pricing is per million tokens.
diff --git a/src/data/ai-models.json b/src/data/ai-models.json index 1ba8e62..96e1363 100644 --- a/src/data/ai-models.json +++ b/src/data/ai-models.json @@ -1,7 +1,5 @@ { - "source": "https://enxvgkxsrpbtqlaeotjz.supabase.co/rest/v1/ai_models", "fetched_at": "2026-05-18T21:17:53.304Z", - "count": 84, "models": [ { "id": "alibaba/qwen3-max-thinking",