From bb41aa1a303649b2aac58ce2799c8de9362f9592 Mon Sep 17 00:00:00 2001 From: Dotta Date: Wed, 9 Sep 2026 11:27:52 -0500 Subject: [PATCH] fix(ui): remove action buttons from agent list Co-Authored-By: Paperclip --- ui/src/pages/Agents.test.tsx | 14 +++++-------- ui/src/pages/Agents.tsx | 40 ++++-------------------------------- 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/ui/src/pages/Agents.test.tsx b/ui/src/pages/Agents.test.tsx index ec5e12df74..c5e4c9e848 100644 --- a/ui/src/pages/Agents.test.tsx +++ b/ui/src/pages/Agents.test.tsx @@ -479,15 +479,11 @@ describe("Agents", () => { expect(subtitle).toBeDefined(); expect(subtitle?.classList.contains("truncate")).toBe(true); const actions = row?.querySelector('button[aria-label="Open actions for Paperclip Engineer With A Much Longer Display Name"]'); - expect(actions).not.toBeNull(); - // Neither the action button nor its ancestors may hide the mobile menu. - for (let node = actions; node && node !== row; node = node.parentElement) { - expect(node.classList.contains("hidden")).toBe(false); - } - await act(async () => { (actions as HTMLButtonElement).click(); }); - await flushReact(); - expect(document.body.textContent).toContain("Duplicate"); - expect(document.body.textContent).toContain("Terminate"); + expect(actions).toBeNull(); + expect(row?.textContent).not.toContain("Assign Task"); + expect(row?.textContent).not.toContain("Run Heartbeat"); + expect(row?.textContent).not.toContain("Run with provider trace"); + expect(row?.textContent).not.toContain("Pause"); }); it("uses the built-in agents route segment as the built-in filter", async () => { diff --git a/ui/src/pages/Agents.tsx b/ui/src/pages/Agents.tsx index 9c83b9ec01..1c0584c05a 100644 --- a/ui/src/pages/Agents.tsx +++ b/ui/src/pages/Agents.tsx @@ -6,7 +6,6 @@ import { builtInAgentsApi, type BuiltInAgentState } from "../api/builtInAgents"; import { environmentsApi } from "../api/environments"; import { heartbeatsApi } from "../api/heartbeats"; import { instanceSettingsApi } from "../api/instanceSettings"; -import { accessApi } from "../api/access"; import { useCompany } from "../context/CompanyContext"; import { useDialogActions } from "../context/DialogContext"; import { useBreadcrumbs } from "../context/BreadcrumbContext"; @@ -15,7 +14,6 @@ import { useStreamlinedUiEnabled } from "../hooks/useStreamlinedUiEnabled"; import { queryKeys } from "../lib/queryKeys"; import { isPlatformManagedEnvironment } from "../lib/managed-sandbox-environment"; import { AgentStatusBadge, AgentStatusCapsule } from "../components/StatusBadge"; -import { AgentActionButtons } from "../components/AgentActionButtons"; import { MembershipAction } from "../components/MembershipAction"; import { StarToggle } from "../components/StarToggle"; import { EntityRow } from "../components/EntityRow"; @@ -211,15 +209,6 @@ export function Agents({ initialView = "list" }: { initialView?: AgentsView } = setView(streamlinedUiEnabled ? initialView : "org"); }, [initialView, streamlinedUiEnabled]); - const { data: boardAccess } = useQuery({ - queryKey: queryKeys.access.currentBoardAccess, - queryFn: () => accessApi.getCurrentBoardAccess(), - retry: false, - }); - const canUseProviderTrace = - boardAccess?.source === "local_implicit" || - boardAccess?.isInstanceAdmin === true; - const { data: instanceSettings } = useQuery({ queryKey: queryKeys.instance.settings, queryFn: () => instanceSettingsApi.get(), @@ -411,32 +400,11 @@ export function Agents({ initialView = "list" }: { initialView?: AgentsView } = ) : ( )} - secondaryRow={ -
- {builtInCluster && ( -
- {builtInCluster} -
- )} - {/* Actions have their own wrapping line, so names keep their width. */} -
{ - e.preventDefault(); - e.stopPropagation(); - }} - > - -
+ secondaryRow={builtInCluster && ( +
+ {builtInCluster}
- } + )} meta={
{builtInCluster && (