feat(web): add context window support to dashboard config

- Add GET /api/model/info endpoint that resolves model metadata using the
  same 10-step context-length detection chain the agent uses. Returns
  auto-detected context length, config override, effective value, and
  model capabilities (tools, vision, reasoning, max output, model family).

- Surface model.context_length as model_context_length virtual field in
  the config normalize/denormalize cycle. 0 = auto-detect (default),
  positive value overrides. Writing 0 removes context_length from the
  model dict on disk.

- Add ModelInfoCard component showing resolved context window (e.g. '1M
  auto-detected' or '500K override — auto: 1M'), max output tokens, and
  colored capability badges (Tools, Vision, Reasoning, model family).

- Inject ModelInfoCard between model field and context_length override in
  ConfigPage General tab. Card re-fetches on model change and after save.

- Insert model_context_length right after model in CONFIG_SCHEMA ordering
  so the three elements (model input → info card → override) are adjacent.
This commit is contained in:
kshitijk4poor 2026-04-14 08:25:09 +05:30 committed by Teknium
parent eabc0a2f66
commit 8fd3093f49
6 changed files with 293 additions and 5 deletions

View file

@ -1,4 +1,5 @@
import { useEffect, useState, useCallback } from "react";
import { formatTokenCount } from "@/lib/format";
import {
BarChart3,
Cpu,
@ -18,11 +19,7 @@ const PERIODS = [
const CHART_HEIGHT_PX = 160;
function formatTokens(n: number): string {
if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;
if (n >= 1_000) return `${(n / 1_000).toFixed(1)}K`;
return String(n);
}
const formatTokens = formatTokenCount;
function formatDate(day: string): string {
try {