"use client"; import { useState, useEffect, useCallback } from "react"; import { Card, Button, Input, Modal, Toggle } from "@/shared/components"; import { useCopyToClipboard } from "@/shared/hooks/useCopyToClipboard"; import { getCurrentLocale, onLocaleChange } from "@/i18n/runtime"; import { WENYAN_LOCALES, CAVEMAN_LEVELS, PONYTAIL_LEVELS, } from "../endpoint/endpointConstants"; export default function TokenSaverClient() { const [rtkEnabled, setRtkEnabledState] = useState(true); const [headroomEnabled, setHeadroomEnabled] = useState(false); const [headroomUrl, setHeadroomUrl] = useState("http://localhost:8787"); const [headroomStatus, setHeadroomStatus] = useState({ installed: false, running: false, python: null, loading: true, }); const [showHeadroomInstallModal, setShowHeadroomInstallModal] = useState(false); const [headroomActionLoading, setHeadroomActionLoading] = useState(false); const [headroomActionError, setHeadroomActionError] = useState(""); const [cavemanEnabled, setCavemanEnabled] = useState(false); const [cavemanLevel, setCavemanLevel] = useState("full"); const [ponytailEnabled, setPonytailEnabled] = useState(false); const [ponytailLevel, setPonytailLevel] = useState("full"); const [locale, setLocale] = useState("en"); const { copied, copy } = useCopyToClipboard(); useEffect(() => { setLocale(getCurrentLocale()); return onLocaleChange(() => setLocale(getCurrentLocale())); }, []); const isWenyanLocale = WENYAN_LOCALES.includes(locale); const visibleCavemanLevels = isWenyanLocale ? CAVEMAN_LEVELS : CAVEMAN_LEVELS.filter((lvl) => !lvl.wenyan); useEffect(() => { const current = CAVEMAN_LEVELS.find((lvl) => lvl.id === cavemanLevel); if (current?.wenyan && !isWenyanLocale) { setCavemanLevel("ultra"); patchSetting({ cavemanLevel: "ultra" }); } }, [isWenyanLocale, cavemanLevel]); const patchSetting = async (patch) => { try { await fetch("/api/settings", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify(patch), }); } catch (error) { console.log("Error updating setting:", error); } }; const handleRtkEnabled = async (value) => { try { const res = await fetch("/api/settings", { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ rtkEnabled: value }), }); if (res.ok) setRtkEnabledState(value); } catch (error) { console.log("Error updating rtkEnabled:", error); } }; const handleCavemanEnabled = (value) => { setCavemanEnabled(value); patchSetting({ cavemanEnabled: value }); }; const handleHeadroomEnabled = (value) => { const nextUrl = headroomUrl.trim() || "http://localhost:8787"; setHeadroomUrl(nextUrl); setHeadroomEnabled(value); patchSetting({ headroomEnabled: value, headroomUrl: nextUrl }); }; const handleHeadroomUrlBlur = async () => { const next = headroomUrl.trim() || "http://localhost:8787"; setHeadroomUrl(next); await patchSetting({ headroomUrl: next }); refreshHeadroomStatus(); }; const refreshHeadroomStatus = useCallback(async () => { setHeadroomStatus((s) => ({ ...s, loading: true })); try { const res = await fetch("/api/headroom/status", { headers: { "Cache-Control": "no-store" }, }); const data = await res.json(); setHeadroomStatus({ ...data, loading: false }); } catch { setHeadroomStatus({ installed: false, running: false, python: null, loading: false, }); } }, []); const handleHeadroomStart = useCallback(async () => { setHeadroomActionError(""); setHeadroomActionLoading(true); try { const res = await fetch("/api/headroom/start", { method: "POST" }); const data = await res.json().catch(() => ({})); if (!res.ok) throw new Error(data.error || "Failed to start proxy"); await refreshHeadroomStatus(); } catch (e) { setHeadroomActionError(e.message); } finally { setHeadroomActionLoading(false); } }, [refreshHeadroomStatus]); const handleHeadroomStop = useCallback(async () => { setHeadroomActionLoading(true); try { await fetch("/api/headroom/stop", { method: "POST" }); await refreshHeadroomStatus(); } finally { setHeadroomActionLoading(false); } }, [refreshHeadroomStatus]); const handleCavemanLevel = (level) => { setCavemanLevel(level); patchSetting({ cavemanLevel: level }); }; const handlePonytailEnabled = (value) => { setPonytailEnabled(value); patchSetting({ ponytailEnabled: value }); }; const handlePonytailLevel = (level) => { setPonytailLevel(level); patchSetting({ ponytailLevel: level }); }; useEffect(() => { const loadSettings = async () => { try { const res = await fetch("/api/settings"); if (res.ok) { const data = await res.json(); setRtkEnabledState(data.rtkEnabled !== false); setHeadroomEnabled(!!data.headroomEnabled); setHeadroomUrl(data.headroomUrl || "http://localhost:8787"); setCavemanEnabled(!!data.cavemanEnabled); setCavemanLevel(data.cavemanLevel || "full"); setPonytailEnabled(!!data.ponytailEnabled); setPonytailLevel(data.ponytailLevel || "full"); refreshHeadroomStatus(); } } catch {} }; loadSettings(); }, [refreshHeadroomStatus]); const headroomRunning = !!headroomStatus.running; const headroomStatusLabel = headroomStatus.loading ? "Checking…" : headroomRunning ? "Running" : headroomStatus.localUrl !== false && !headroomStatus.installed ? "Not installed" : headroomStatus.localUrl !== false ? "Stopped" : "External"; const headroomLocalUrl = headroomStatus.localUrl !== false; const headroomCanStart = !!headroomStatus.canStart; const headroomManaged = headroomLocalUrl && !!headroomStatus.managedPid; return (
Compress tool output{" "} (RTK)
git/grep/ls/tree/logs → 60-90% fewer input tokens
Compress context{" "} (Headroom)
{headroomStatusLabel}Compress prompts via /v1/compress before routing to the model
Compress LLM output{" "} (Caveman)
Terse-style system prompt → ~65% fewer output tokens (up to 87%)
{ CAVEMAN_LEVELS.find((lvl) => lvl.id === cavemanLevel) ?.desc }
Lazy senior dev{" "} (Ponytail)
Bias the model toward minimal code: YAGNI, reuse stdlib, deletion over addition
{ PONYTAIL_LEVELS.find((lvl) => lvl.id === ponytailLevel) ?.desc }
Proxy URL
setHeadroomUrl(e.target.value)} onBlur={handleHeadroomUrlBlur} placeholder="http://localhost:8787" className="font-mono text-sm" />Use a local proxy for Start/Stop, or an external Docker sidecar like http://headroom:8787.
Headroom proxy is reachable. You can enable the token saver.
) : headroomCanStart ? ( ) : !headroomLocalUrl ? (Start Headroom separately at the configured URL, then recheck.
) : !headroomStatus.python ? (Python ≥ 3.10 required for local managed mode. Install Python first, or use an external proxy URL.
) : (Install then click Start:
{`pip install "headroom-ai[proxy]"`}
{headroomActionError}
)}