diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentIcon.css b/frontend/packages/swarm-ui/src/agent/AgentIcon.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentIcon.css rename to frontend/packages/swarm-ui/src/agent/AgentIcon.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentIcon.tsx b/frontend/packages/swarm-ui/src/agent/AgentIcon.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentIcon.tsx rename to frontend/packages/swarm-ui/src/agent/AgentIcon.tsx diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentTypes.ts b/frontend/packages/swarm-ui/src/agent/AgentTypes.ts similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentTypes.ts rename to frontend/packages/swarm-ui/src/agent/AgentTypes.ts diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentDetail.css b/frontend/packages/swarm-ui/src/agent/detail/AgentDetail.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentDetail.css rename to frontend/packages/swarm-ui/src/agent/detail/AgentDetail.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentDetail.tsx b/frontend/packages/swarm-ui/src/agent/detail/AgentDetail.tsx similarity index 93% rename from frontend/packages/swarm-ui/src/pages/agents/AgentDetail.tsx rename to frontend/packages/swarm-ui/src/agent/detail/AgentDetail.tsx index ad7d67eb..3f864178 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/AgentDetail.tsx +++ b/frontend/packages/swarm-ui/src/agent/detail/AgentDetail.tsx @@ -9,14 +9,14 @@ import { ApiErrorPanel } from "@hive/shared/api-error-panel.js"; import { Badge } from "@hive/shared/badge.js"; import { RelativeTime } from "../../ui/relative-time/RelativeTime.js"; -import type { AgentActions } from "./AgentActions.js"; +import type { AgentActions } from "../roster/AgentActions.js"; import { AgentInference } from "./AgentInference.js"; -import { AgentTermPreview } from "./AgentTermPreview.js"; -import { FRESHNESS, type AgentRow } from "./AgentTypes.js"; +import { AgentTermPreview } from "../terminal/AgentTermPreview.js"; +import { FRESHNESS, type AgentRow } from "../AgentTypes.js"; import { LinkAccountMenu } from "./LinkAccountMenu.js"; import { LinkedAccounts } from "./LinkedAccounts.js"; -import { SubagentTerms } from "./SubagentTerms.js"; -import { WantedMenu } from "./WantedMenu.js"; +import { SubagentTerms } from "../terminal/SubagentTerms.js"; +import { WantedMenu } from "../roster/WantedMenu.js"; import "./AgentDetail.css"; export function AgentDetail({ diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentDetailDialog.tsx b/frontend/packages/swarm-ui/src/agent/detail/AgentDetailDialog.tsx similarity index 96% rename from frontend/packages/swarm-ui/src/pages/agents/AgentDetailDialog.tsx rename to frontend/packages/swarm-ui/src/agent/detail/AgentDetailDialog.tsx index acf5c630..4fa49980 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/AgentDetailDialog.tsx +++ b/frontend/packages/swarm-ui/src/agent/detail/AgentDetailDialog.tsx @@ -12,9 +12,9 @@ import { ApiErrorPanel } from "@hive/shared/api-error-panel.js"; import { readApiError, type ProblemDetails } from "@hive/shared/api-error.js"; import { Dialog } from "../../ui/dialog/Dialog.js"; import { Panel } from "../../ui/panel/Panel.js"; -import { useAgentActions } from "./AgentActions.js"; +import { useAgentActions } from "../roster/AgentActions.js"; import { AgentDetail } from "./AgentDetail.js"; -import type { AgentRow } from "./AgentTypes.js"; +import type { AgentRow } from "../AgentTypes.js"; export function AgentDetailDialog({ agent, diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentInference.css b/frontend/packages/swarm-ui/src/agent/detail/AgentInference.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentInference.css rename to frontend/packages/swarm-ui/src/agent/detail/AgentInference.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentInference.tsx b/frontend/packages/swarm-ui/src/agent/detail/AgentInference.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentInference.tsx rename to frontend/packages/swarm-ui/src/agent/detail/AgentInference.tsx diff --git a/frontend/packages/swarm-ui/src/pages/agents/LinkAccountMenu.tsx b/frontend/packages/swarm-ui/src/agent/detail/LinkAccountMenu.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/LinkAccountMenu.tsx rename to frontend/packages/swarm-ui/src/agent/detail/LinkAccountMenu.tsx diff --git a/frontend/packages/swarm-ui/src/pages/agents/LinkedAccounts.css b/frontend/packages/swarm-ui/src/agent/detail/LinkedAccounts.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/LinkedAccounts.css rename to frontend/packages/swarm-ui/src/agent/detail/LinkedAccounts.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/LinkedAccounts.tsx b/frontend/packages/swarm-ui/src/agent/detail/LinkedAccounts.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/LinkedAccounts.tsx rename to frontend/packages/swarm-ui/src/agent/detail/LinkedAccounts.tsx diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentActions.tsx b/frontend/packages/swarm-ui/src/agent/roster/AgentActions.tsx similarity index 96% rename from frontend/packages/swarm-ui/src/pages/agents/AgentActions.tsx rename to frontend/packages/swarm-ui/src/agent/roster/AgentActions.tsx index b783bbe2..3b041c7b 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/AgentActions.tsx +++ b/frontend/packages/swarm-ui/src/agent/roster/AgentActions.tsx @@ -15,11 +15,11 @@ import type { ComponentChildren } from "preact"; import { readApiError, type ProblemDetails } from "@hive/shared/api-error.js"; import { ConfirmDialog } from "../../ui/confirm-dialog/ConfirmDialog.js"; import { Dialog } from "../../ui/dialog/Dialog.js"; -import { LinkMatrixAccountForm } from "../LinkMatrixAccountForm.js"; -import { LinkForgeAccountForm } from "../LinkForgeAccountForm.js"; -import { LinkGithubAccountForm } from "../LinkGithubAccountForm.js"; -import type { AgentRow } from "./AgentTypes.js"; -import type { LinkKind } from "./LinkAccountMenu.js"; +import { LinkMatrixAccountForm } from "../../pages/LinkMatrixAccountForm.js"; +import { LinkForgeAccountForm } from "../../pages/LinkForgeAccountForm.js"; +import { LinkGithubAccountForm } from "../../pages/LinkGithubAccountForm.js"; +import type { AgentRow } from "../AgentTypes.js"; +import type { LinkKind } from "../detail/LinkAccountMenu.js"; // The one thing that differs between the "offline" and "paused" confirm // dialogs `confirmTarget` drives — everything else (button row, open/close diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentCard.css b/frontend/packages/swarm-ui/src/agent/roster/AgentCard.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentCard.css rename to frontend/packages/swarm-ui/src/agent/roster/AgentCard.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentCard.tsx b/frontend/packages/swarm-ui/src/agent/roster/AgentCard.tsx similarity index 97% rename from frontend/packages/swarm-ui/src/pages/agents/AgentCard.tsx rename to frontend/packages/swarm-ui/src/agent/roster/AgentCard.tsx index b046e4be..c66d244b 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/AgentCard.tsx +++ b/frontend/packages/swarm-ui/src/agent/roster/AgentCard.tsx @@ -16,8 +16,8 @@ import { Badge } from "@hive/shared/badge.js"; import type { ProblemDetails } from "@hive/shared/api-error.js"; import { Card } from "../../ui/card/Card.js"; import { RelativeTime } from "../../ui/relative-time/RelativeTime.js"; -import { AgentIcon } from "./AgentIcon.js"; -import { FRESHNESS, type AgentRow } from "./AgentTypes.js"; +import { AgentIcon } from "../AgentIcon.js"; +import { FRESHNESS, type AgentRow } from "../AgentTypes.js"; import { WantedMenu } from "./WantedMenu.js"; import "./AgentCard.css"; diff --git a/frontend/packages/swarm-ui/src/pages/agents/WantedMenu.tsx b/frontend/packages/swarm-ui/src/agent/roster/WantedMenu.tsx similarity index 99% rename from frontend/packages/swarm-ui/src/pages/agents/WantedMenu.tsx rename to frontend/packages/swarm-ui/src/agent/roster/WantedMenu.tsx index 825679a8..4b491514 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/WantedMenu.tsx +++ b/frontend/packages/swarm-ui/src/agent/roster/WantedMenu.tsx @@ -20,7 +20,7 @@ import { useRef, useState } from "preact/hooks"; import { Badge, type BadgeTone } from "@hive/shared/badge.js"; import { Dropdown, type DropdownOption } from "@hive/shared/dropdown.js"; -import type { AgentRow } from "./AgentTypes.js"; +import type { AgentRow } from "../AgentTypes.js"; export function WantedMenu({ row, diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentInputForm.css b/frontend/packages/swarm-ui/src/agent/terminal/AgentInputForm.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentInputForm.css rename to frontend/packages/swarm-ui/src/agent/terminal/AgentInputForm.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentInputForm.tsx b/frontend/packages/swarm-ui/src/agent/terminal/AgentInputForm.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentInputForm.tsx rename to frontend/packages/swarm-ui/src/agent/terminal/AgentInputForm.tsx diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.css b/frontend/packages/swarm-ui/src/agent/terminal/AgentTermPreview.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.css rename to frontend/packages/swarm-ui/src/agent/terminal/AgentTermPreview.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.tsx b/frontend/packages/swarm-ui/src/agent/terminal/AgentTermPreview.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/AgentTermPreview.tsx rename to frontend/packages/swarm-ui/src/agent/terminal/AgentTermPreview.tsx diff --git a/frontend/packages/swarm-ui/src/pages/agents/SubagentTerms.css b/frontend/packages/swarm-ui/src/agent/terminal/SubagentTerms.css similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/SubagentTerms.css rename to frontend/packages/swarm-ui/src/agent/terminal/SubagentTerms.css diff --git a/frontend/packages/swarm-ui/src/pages/agents/SubagentTerms.tsx b/frontend/packages/swarm-ui/src/agent/terminal/SubagentTerms.tsx similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/SubagentTerms.tsx rename to frontend/packages/swarm-ui/src/agent/terminal/SubagentTerms.tsx diff --git a/frontend/packages/swarm-ui/src/shell/useAgentFavicon.ts b/frontend/packages/swarm-ui/src/agent/terminal/useAgentFavicon.ts similarity index 100% rename from frontend/packages/swarm-ui/src/shell/useAgentFavicon.ts rename to frontend/packages/swarm-ui/src/agent/terminal/useAgentFavicon.ts diff --git a/frontend/packages/swarm-ui/src/pages/agents/useSwarmAgentStateStream.ts b/frontend/packages/swarm-ui/src/agent/terminal/useSwarmAgentStateStream.ts similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/useSwarmAgentStateStream.ts rename to frontend/packages/swarm-ui/src/agent/terminal/useSwarmAgentStateStream.ts diff --git a/frontend/packages/swarm-ui/src/pages/agents/useSwarmTermStream.ts b/frontend/packages/swarm-ui/src/agent/terminal/useSwarmTermStream.ts similarity index 100% rename from frontend/packages/swarm-ui/src/pages/agents/useSwarmTermStream.ts rename to frontend/packages/swarm-ui/src/agent/terminal/useSwarmTermStream.ts diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentTerminalPage.tsx b/frontend/packages/swarm-ui/src/pages/agents/AgentTerminalPage.tsx index edd4b290..501647e1 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/AgentTerminalPage.tsx +++ b/frontend/packages/swarm-ui/src/pages/agents/AgentTerminalPage.tsx @@ -12,10 +12,13 @@ import { useEffect, useState } from "preact/hooks"; import type { RouteComponentProps } from "wouter-preact"; import { Badge } from "@hive/shared/badge.js"; -import { AgentDetailDialog } from "./AgentDetailDialog.js"; -import { AgentIcon } from "./AgentIcon.js"; -import { AgentTermPreview, termPaths } from "./AgentTermPreview.js"; -import { useAgentFavicon } from "../../shell/useAgentFavicon.js"; +import { AgentDetailDialog } from "../../agent/detail/AgentDetailDialog.js"; +import { AgentIcon } from "../../agent/AgentIcon.js"; +import { + AgentTermPreview, + termPaths, +} from "../../agent/terminal/AgentTermPreview.js"; +import { useAgentFavicon } from "../../agent/terminal/useAgentFavicon.js"; import { useDynamicTabs } from "../../shell/useDynamicTabs.js"; import "./AgentTerminalPage.css"; diff --git a/frontend/packages/swarm-ui/src/pages/agents/AgentsPage.tsx b/frontend/packages/swarm-ui/src/pages/agents/AgentsPage.tsx index f43264b1..c082db11 100644 --- a/frontend/packages/swarm-ui/src/pages/agents/AgentsPage.tsx +++ b/frontend/packages/swarm-ui/src/pages/agents/AgentsPage.tsx @@ -31,10 +31,10 @@ import { ApiErrorPanel } from "@hive/shared/api-error-panel.js"; import { readApiError, type ProblemDetails } from "@hive/shared/api-error.js"; import { Badge } from "@hive/shared/badge.js"; import { LinkIcon } from "@hive/shared/icons.js"; -import { useAgentActions } from "./AgentActions.js"; -import { AgentCard } from "./AgentCard.js"; -import { AgentDetail } from "./AgentDetail.js"; -import { FRESHNESS, type AgentRow } from "./AgentTypes.js"; +import { useAgentActions } from "../../agent/roster/AgentActions.js"; +import { AgentCard } from "../../agent/roster/AgentCard.js"; +import { AgentDetail } from "../../agent/detail/AgentDetail.js"; +import { FRESHNESS, type AgentRow } from "../../agent/AgentTypes.js"; import { Button } from "../../ui/button/Button.js"; import { Dialog } from "../../ui/dialog/Dialog.js"; import { FilterableView } from "../../ui/filterable-view/FilterableView.js"; @@ -48,7 +48,7 @@ import { import { SplitView } from "../../ui/split-view/SplitView.js"; import { type TableColumn } from "../../ui/table/Table.js"; import { CreateAgentForm } from "../CreateAgentForm.js"; -import { WantedMenu } from "./WantedMenu.js"; +import { WantedMenu } from "../../agent/roster/WantedMenu.js"; import "./AgentsPage.css"; // Same 30s default + same reasoning as HivesPage: no inputs on this page diff --git a/frontend/packages/swarm-ui/src/pages/schedules/SchedulesPage.tsx b/frontend/packages/swarm-ui/src/pages/schedules/SchedulesPage.tsx index 2fbae2d2..247a53c1 100644 --- a/frontend/packages/swarm-ui/src/pages/schedules/SchedulesPage.tsx +++ b/frontend/packages/swarm-ui/src/pages/schedules/SchedulesPage.tsx @@ -22,7 +22,7 @@ import { type RefreshIntervalMs, } from "../../ui/refresh-interval/RefreshInterval.js"; import type { TableColumn } from "../../ui/table/Table.js"; -import type { AgentRow } from "../agents/AgentTypes.js"; +import type { AgentRow } from "../../agent/AgentTypes.js"; import { ScheduleCard } from "./ScheduleCard.js"; import { ScheduleForm } from "./ScheduleForm.js"; import { scheduleState, type Schedule } from "./ScheduleTypes.js";