/** @jsxImportSource @opentui/solid */ import { compressPermission } from "../compress-permission" import { analyzeContextTokens } from "../commands/context" import type { PluginConfig } from "../config" import type { SessionState, WithParts } from "../state" import { formatTokenCount } from "../ui/utils" import { TextAttributes } from "@opentui/core" import { formatDuration, formatRatio } from "./format" import { ActionRow, Card, DcpFrame, Metric, Progress, PromptRow, StatusPill } from "./ui" import type { StatsReport, TuiApi } from "./types" export function StatusDialog(props: { api: TuiApi title: string eyebrow: string message: string }) { return ( {props.message} ) } export function ContextDialog(props: { api: TuiApi state: SessionState messages: WithParts[] onBack: () => void }) { const theme = props.api.theme.current const breakdown = analyzeContextTokens(props.state, props.messages) const total = Math.max(0, breakdown.total) const activePruned = breakdown.prunedToolCount + breakdown.prunedMessageCount return ( ) } export function StatsDialog(props: { api: TuiApi; report: StatsReport; onBack: () => void }) { const theme = props.api.theme.current const ratio = formatRatio(props.report.sessionTokens, props.report.sessionSummaryTokens) return ( ) } export function PanelDialog(props: { api: TuiApi state: SessionState config: PluginConfig onContext: () => void onStats: () => void onManual: (enabled: boolean) => void }) { const theme = props.api.theme.current const canCompress = compressPermission(props.state, props.config) !== "deny" return ( {canCompress ? ( ) : ( Compression is denied by permissions. )} ) } function ManualModeToggle(props: { api: TuiApi state: SessionState onToggle: (enabled: boolean) => void }) { const theme = props.api.theme.current const enabled = !!props.state.manualMode const track = enabled ? theme.success : theme.error return ( Manual mode props.onToggle(!enabled)} > {enabled ? " ■" : "■ "} ) }