import type { ReactElement } from 'react'; import { CommandsPanel } from '@/spa/chat/commands-panel'; import { Composer } from '@/spa/chat/composer'; import { MessageTranscript } from '@/spa/chat/message-transcript'; import { asFiniteNumberOrNull, asString } from '@/spa/chat/runtime-guards'; import { SessionPanel } from '@/spa/chat/session-panel'; import { ToolCallList } from '@/spa/chat/tool-call-list'; import { useChatConnection } from '@/spa/chat/use-chat-connection'; import { useHarnessSelection } from '@/spa/chat/use-harness-selection'; /** Renders a real value normally, but an honest "unavailable" label instead * of a fabricated `0` for a missing/malformed count — a real `0 tokens` and * an unknown token count must never look the same. */ function formatTokens(value: unknown): string { const tokens = asFiniteNumberOrNull(value); return tokens === null ? 'tokens unavailable' : `${tokens} tokens`; } /** Same honesty guarantee as `formatTokens`, for cost. */ function formatCost(value: unknown): string { const cost = asFiniteNumberOrNull(value); return cost === null ? 'cost unavailable' : `$${cost.toFixed(4)}`; } export function ChatPage(): ReactElement { const { state, actions } = useChatConnection(); const harness = useHarnessSelection(); const hasConversation = state.conversationId !== null; return (

Chat

{state.systemReload ? (
{asString(state.systemReload.message)}
) : null} {state.error ? (
{asString(state.error)}
) : null} {state.ack ? (
Message accepted · conversation {asString(state.ack.conversationId, 'unknown')} · id{' '} {asString(state.ack.messageId, 'unknown')}
) : null} {state.thinking ? (
{state.thinking}
) : null} {state.usage ? (
{formatTokens(state.usage.tokens?.total)} · {formatCost(state.usage.cost)} ·{' '} {asString(state.usage.provider, 'unknown')}/{asString(state.usage.modelId, 'unknown')}
) : null}
); }