diff --git a/ui/src/pages/ExecutionWorkspaceDetail.test.tsx b/ui/src/pages/ExecutionWorkspaceDetail.test.tsx index d4356c0d212..acc75649388 100644 --- a/ui/src/pages/ExecutionWorkspaceDetail.test.tsx +++ b/ui/src/pages/ExecutionWorkspaceDetail.test.tsx @@ -318,6 +318,14 @@ describe("ExecutionWorkspaceDetail plugin slots", () => { expect(container.querySelector('[data-testid="summary-slot-card"]')).not.toBeNull(); }); + it("does not show a workspace access status card", async () => { + await render(); + + expect(container.querySelector('[data-testid="workspace-access-card"]')).toBeNull(); + expect(container.textContent).not.toContain("Workspace is not running"); + expect(container.textContent).not.toContain("Open workspace"); + }); + it("does not mount plugin slots scoped to other entity types", async () => { await render(); diff --git a/ui/src/pages/ExecutionWorkspaceDetail.tsx b/ui/src/pages/ExecutionWorkspaceDetail.tsx index 17506e841f2..62df8bf8a6d 100644 --- a/ui/src/pages/ExecutionWorkspaceDetail.tsx +++ b/ui/src/pages/ExecutionWorkspaceDetail.tsx @@ -13,7 +13,6 @@ import { CopyText } from "../components/CopyText"; import { ExecutionWorkspaceCloseDialog } from "../components/ExecutionWorkspaceCloseDialog"; import { MissingPluginTabPlaceholder } from "../components/MissingPluginTabPlaceholder"; import { agentsApi } from "../api/agents"; -import { ApiError } from "../api/client"; import { executionWorkspacesApi } from "../api/execution-workspaces"; import { heartbeatsApi } from "../api/heartbeats"; import { issuesApi } from "../api/issues"; @@ -36,7 +35,6 @@ import { type WorkspaceRuntimeControlRequest, } from "../components/WorkspaceRuntimeControls"; import { WorkspaceServiceControlBar } from "../components/WorkspaceServiceControlBar"; -import { WorkspaceAccessCard } from "../components/WorkspaceAccessCard"; import { useBreadcrumbs } from "../context/BreadcrumbContext"; import { useCompany } from "../context/CompanyContext"; import { useManagedSandboxOnly } from "../hooks/useManagedSandboxOnly"; @@ -44,10 +42,6 @@ import { useToastActions } from "../context/ToastContext"; import { collectLiveIssueIds } from "../lib/liveIssueIds"; import { queryKeys } from "../lib/queryKeys"; import { cn, formatDateTime, issueUrl, projectRouteRef, projectWorkspaceUrl } from "../lib/utils"; -import { - resolveWorkspaceAccessState, - type WorkspaceLoginHandoffFailureInfo, -} from "../lib/workspace-access-state"; import { getWorkspaceSpecificRoutineVariableNames, routineHasWorkspaceSpecificVariables, @@ -423,27 +417,6 @@ export function resolveRuntimeProvisionStatus(input: { return configured ? { kind: "deferred" } : { kind: "eager" }; } -/** - * Read the structured refusal the login-handoff endpoint returns. - * - * The server keeps a machine `reason` (and, where it probed, the workspace's own - * readiness) on the error body so the UI can name the cause instead of showing a - * bare HTTP failure. Anything else is a genuine transport error. - */ -export function readWorkspaceHandoffFailure(error: unknown): WorkspaceLoginHandoffFailureInfo | null { - if (!(error instanceof ApiError)) return null; - const body = error.body as - | { reason?: unknown; detail?: unknown; readiness?: unknown } - | null - | undefined; - if (!body || typeof body.reason !== "string") return null; - return { - reason: body.reason, - detail: typeof body.detail === "string" ? body.detail : null, - readiness: (body.readiness as WorkspaceLoginHandoffFailureInfo["readiness"]) ?? null, - }; -} - function DetailRow({ label, children }: { label: string; children: React.ReactNode }) { return (
Loading workspace…
; if (workspaceQuery.error) { return ( @@ -1088,12 +998,6 @@ export function ExecutionWorkspaceDetail() { runtimeServices: workspace.runtimeServices ?? [], pendingRequests: pendingRuntimeActions, }); - const workspaceAccess = resolveWorkspaceAccessState({ - runtimeServices: workspace.runtimeServices ?? [], - operations: workspaceOperationsQuery.data, - handoffFailure, - }); - const pluginSlotContext = { companyId: workspace.companyId, projectId: workspace.projectId, @@ -1163,20 +1067,6 @@ export function ExecutionWorkspaceDetail() { {runtimeActionErrorMessage ?{runtimeActionErrorMessage}
: null} {!runtimeActionErrorMessage && runtimeActionMessage ?{runtimeActionMessage}
: null} -