import { useState } from "react"; import { useIsMutating } from "@tanstack/react-query"; import { useHealth, useRuntimeStatus } from "../api/queries"; import { useCopyToClipboard } from "../design/hooks/useCopyToClipboard"; function HealthIndicator() { const { data, isError, isLoading } = useHealth(); const healthy = !isError && data?.status === "ok"; const pending = isLoading && !data && !isError; const label = pending ? "Checking" : healthy ? "Healthy" : "Unhealthy"; const dotColor = pending ? "var(--color-state-neutral-text)" : healthy ? "var(--color-state-success-text)" : "var(--color-state-danger-text)"; return ( {label} ); } export function StatusFooter() { const { data, isError } = useRuntimeStatus(); const chatTurnsPending = useIsMutating({ mutationKey: ["chat-turn"] }) > 0; const [revisionExpanded, setRevisionExpanded] = useState(false); const { copied: shaCopied, copy: copySha } = useCopyToClipboard(); if (isError) { return ( ); } if (!data) return null; const { mutation_mode, git_revision, checkpoint_revision, revision_warning } = data; const visibleMutationMode = chatTurnsPending ? "runtime_turn" : mutation_mode; const shortSha = (sha: string) => sha.slice(0, 8); const mutationModeEl = visibleMutationMode === "read_only" ? ( Read Only ) : ( Runtime Turn ); return ( ); }