diff --git a/apps/web/src/pages/agents-page.tsx b/apps/web/src/pages/agents-page.tsx index c583b0d99..930c90e1b 100644 --- a/apps/web/src/pages/agents-page.tsx +++ b/apps/web/src/pages/agents-page.tsx @@ -28,7 +28,8 @@ import { useListSelection, } from "@corbits/react-ui"; import type { BadgeTone, SelectionCheckboxState } from "@corbits/react-ui"; -import { Archive, Plus, Robot } from "@corbits/icons"; +import { Archive, ArrowSquareOut, Plus, Robot } from "@corbits/icons"; +import { detailPath } from "@corbits/command-palette"; import { useEffect, useMemo, useState } from "react"; import { useQuery, useQueryClient } from "@tanstack/react-query"; @@ -340,6 +341,17 @@ function AgentDetailPanel({ + ); } @@ -348,7 +360,8 @@ function AgentDetailPanel({ * The roster stage: a flat table of every definition this bench owns — * name, status, model, and how often it has run in the last week — rows, * never cards, per the owner's "rows over grids" rule for this slice. - * Selecting a row opens its detail alongside the table; "New agent" opens + * Selecting a row opens its detail alongside the table; the panel's Open + * control hops to `/agents/` for the full page. "New agent" opens * `CreateAgentPanel`. Rows are also bulk-selectable (checkbox + shift/cmd * range select, `useListSelection`) with a floating `BulkActionBar` for * Archive — the only bulk action with a real backend primitive diff --git a/apps/web/test/agents-page.test.tsx b/apps/web/test/agents-page.test.tsx index 25ec80982..3afee0ef0 100644 --- a/apps/web/test/agents-page.test.tsx +++ b/apps/web/test/agents-page.test.tsx @@ -265,6 +265,29 @@ describe("AgentsPage", () => { expect(markup).toContain(">Support<"); }); + // CL-6875: the roster's quick-peek panel must hop to the agent's own page + // at `/agents/` — panels preview enough to decide whether to open + // the full page (DESIGN.md), never substitute for one. + test("selected definition's panel offers a hop to /agents/", () => { + const markup = renderToStaticMarkup( + , + ); + expect(markup).toContain('href="/agents/triage-bot"'); + expect(markup).toContain("Open"); + }); + test("offers New agent as the top-bar create action, per the top-nav page-action contract", () => { const markup = renderToStaticMarkup(