import { Loader2Icon } from "lucide-react"; import { lazy, Suspense, type ComponentType } from "react"; import type { QueueSurfaceProps } from "./queue-surface-implementation"; export { requestQueueDraftEdit } from "./queue-draft-policy"; import { EmptyQueueStateSurface } from "./queue-surface-state"; import { useOpenGeniText } from "../messages/runtime"; export type { QueueSurfaceProps } from "./queue-surface-implementation"; const loadQueueSurface = () => import("./queue-surface-implementation"); type QueueSurfaceModule = { QueueSurface: ComponentType }; type QueueSurfaceLoader = () => Promise; /** The sole pending-input surface: compact above Goal, Agents, and composer. */ export const QueueSurface = createQueueSurface(loadQueueSurface); /** @internal Deterministic Suspense seam for the QueueSurface regression suite. */ export function createQueueSurfaceForTest(loadImplementation: QueueSurfaceLoader) { return createQueueSurface(loadImplementation); } function createQueueSurface(loadImplementation: QueueSurfaceLoader) { const LazyQueueSurface = lazy(async () => ({ default: (await loadImplementation()).QueueSurface, })); return function QueueSurfaceBoundary(props: QueueSurfaceProps) { const { queue } = props; if (queue.queue.length + queue.pendingInputs.length === 0) { if (!queue.stoppingPreviousAttempt && !queue.error && !queue.mutationError) return null; return ; } return ( }> ); }; } function QueueSurfaceFallback() { const t = useOpenGeniText(); return (
); }