SPB Git

spb/chat-spboucher Public

Private universal chat interface over the OpenRouter ecosystem — 400+ models, branching, streaming, usage tracking. Next.js 16 + SQLite, PWA, deployed on m4m64a at chat.spboucher.ai

TypeScript 78.8% CSS 15.1% JavaScript 4.9% Shell 1.2%
921 B · 21 lines typescript
Raw Blame History
1// Author: Simon-Pierre Boucher2// Contact: contact@spboucher.ai3// Project: chat.spboucher.ai45import type { ORModelRaw } from "./schemas";6import type { ModelDefinition } from "./types";78/** Derive normalized capabilities from OpenRouter metadata — never from string-parsing model IDs. */9export function deriveCapabilities(raw: ORModelRaw): ModelDefinition["capabilities"] {10  const inputs = raw.architecture?.input_modalities ?? [];11  const outputs = raw.architecture?.output_modalities ?? [];12  const params = raw.supported_parameters ?? [];13  return {14    text: outputs.length === 0 || outputs.includes("text"),15    vision: inputs.includes("image"),16    reasoning: params.includes("reasoning") || params.includes("include_reasoning"),17    tools: params.includes("tools") || params.includes("tool_choice"),18    structuredOutput: params.includes("structured_outputs") || params.includes("response_format"),19  };20}21