import { Link, useParams } from "@/lib/router";
import { useQuery } from "@tanstack/react-query";
import { ExternalLink } from "lucide-react";
import { executionWorkspacesApi } from "../api/execution-workspaces";
import { queryKeys } from "../lib/queryKeys";
function DetailRow({ label, children }: { label: string; children: React.ReactNode }) {
return (
);
}
export function ExecutionWorkspaceDetail() {
const { workspaceId } = useParams<{ workspaceId: string }>();
const { data: workspace, isLoading, error } = useQuery({
queryKey: queryKeys.executionWorkspaces.detail(workspaceId!),
queryFn: () => executionWorkspacesApi.get(workspaceId!),
enabled: Boolean(workspaceId),
});
if (isLoading) return Loading...
;
if (error) return {error instanceof Error ? error.message : "Failed to load workspace"}
;
if (!workspace) return null;
return (
Execution workspace
{workspace.name}
{workspace.status} · {workspace.mode} · {workspace.providerType}
{workspace.projectId ? {workspace.projectId} : "None"}
{workspace.sourceIssueId ? {workspace.sourceIssueId} : "None"}
{workspace.branchName ?? "None"}
{workspace.baseRef ?? "None"}
{workspace.cwd ?? "None"}
{workspace.providerRef ?? "None"}
{workspace.repoUrl ? (
{workspace.repoUrl}
) : "None"}
{new Date(workspace.openedAt).toLocaleString()}
{new Date(workspace.lastUsedAt).toLocaleString()}
{workspace.cleanupEligibleAt ? `${new Date(workspace.cleanupEligibleAt).toLocaleString()}${workspace.cleanupReason ? ` · ${workspace.cleanupReason}` : ""}` : "Not scheduled"}
);
}