import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { QueryClientProvider } from "@tanstack/react-query";
import { Suspense, lazy, type ReactElement } from "react";
import { queryClient } from "../api/queries";
import { Shell } from "./Shell";
import { LoadingState } from "../design/components/states/LoadingState";
import { getWorkbenchPrefs } from "./workbenchPrefs";
import { WORKBENCH_ROUTES, type RouteElementMap } from "./routes";
const ChatRoute = lazy(() =>
import("../routes/ChatRoute").then((module) => ({ default: module.ChatRoute })),
);
const TraceRoute = lazy(() =>
import("./trace/TraceRoute").then((module) => ({ default: module.TraceRoute })),
);
const ContemplationRoute = lazy(() =>
import("./contemplation/ContemplationRoute").then((module) => ({
default: module.ContemplationRoute,
})),
);
const ReplayRoute = lazy(() =>
import("./replay/ReplayRoute").then((module) => ({ default: module.ReplayRoute })),
);
const TourRoute = lazy(() =>
import("./tour/TourRoute").then((module) => ({ default: module.TourRoute })),
);
const DemoTheaterRoute = lazy(() =>
import("./demos/DemoTheaterRoute").then((module) => ({
default: module.DemoTheaterRoute,
})),
);
const ProposalsRoute = lazy(() =>
import("./proposals/ProposalsRoute").then((module) => ({
default: module.ProposalsRoute,
})),
);
const RunsRoute = lazy(() =>
import("./runs/RunsRoute").then((module) => ({ default: module.RunsRoute })),
);
const VaultRoute = lazy(() =>
import("./vault/VaultRoute").then((module) => ({ default: module.VaultRoute })),
);
const AuditRoute = lazy(() =>
import("./audit/AuditRoute").then((module) => ({ default: module.AuditRoute })),
);
const EvalsRoute = lazy(() =>
import("./evals/EvalsRoute").then((module) => ({ default: module.EvalsRoute })),
);
const CalibrationRoute = lazy(() =>
import("./calibration/CalibrationRoute").then((module) => ({
default: module.CalibrationRoute,
})),
);
const PacksRoute = lazy(() =>
import("./packs/PacksRoute").then((module) => ({ default: module.PacksRoute })),
);
const LogosRoute = lazy(() =>
import("./logos/LogosRoute").then((module) => ({ default: module.LogosRoute })),
);
const SettingsRoute = lazy(() =>
import("./settings/SettingsRoute").then((module) => ({
default: module.SettingsRoute,
})),
);
const PreviewPage = lazy(() =>
import("../preview/PreviewPage").then((module) => ({ default: module.PreviewPage })),
);
function lazyRoute(element: ReactElement): ReactElement {
return (
}>
{element}
);
}
// The one place route id → element is bound (App owns the route-component
// imports). Every WORKBENCH_ROUTES id must have an entry here; routes.test
// asserts it, so a registry route without an element fails the suite instead
// of rendering `undefined`.
export const ROUTE_ELEMENTS: RouteElementMap = {
chat: lazyRoute(),
trace: lazyRoute(),
contemplation: lazyRoute(),
tour: lazyRoute(),
replay: lazyRoute(),
demos: lazyRoute(),
proposals: lazyRoute(),
runs: lazyRoute(),
vault: lazyRoute(),
audit: lazyRoute(),
evals: lazyRoute(),
calibration: lazyRoute(),
packs: lazyRoute(),
logos: lazyRoute(),
settings: lazyRoute(),
};
export function App() {
return (
}>
} />
{WORKBENCH_ROUTES.map((route) => (
))}
)} />
);
}