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 (