1c78e46ebd
• PRICING table — per-1M-token rates by model • calcCost(model, usage) — Gemini usage object → cost record • buildAnalysisPrompt(...) — JSON-output topic-analysis prompt These all share the Gemini contract — pricing schema, usage shape, and prompt format. When we add other providers, each gets its own provider-specific helpers file; this becomes the basis of the Gemini provider implementation. server/index.js: 2828 → 2758 lines. Smoke tested: server boots; /api/license-status, /api/health, and / (frontend) all respond. No behavior change.