open-swe/ui/src/features/agents/components/subagents/SubagentGroup.tsx

26 lines
882 B
TypeScript
Raw Normal View History

import { SubagentCard } from "./SubagentCard";
refactor: move ui/src/{components,lib}/agents into features/ layout Part of the domain-reorg adoption (build plan step C6): fork content, upstream layout. git mv's all 80 pure-rename files from the move-map (agent-scoped components/lib -> ui/src/features/{agents,automations, reviews,settings}/...), including ported/ splitting into features/agents/experiments/ (still-unintegrated desktop-host ports) and features/agents/components/chat/ (CloudPromptBar, CodeBlock, DiffView, Logo, Markdown, ReplyCard, ShellCommand, ToolExecution -- files actually wired into the live dashboard). Fork-diverged files (PlanReview.tsx, WorkflowApprovalCard.tsx, AgentsSidebar.tsx, SidebarFilterMenu.tsx, AgentGitPanel.tsx, AutomationEditor.tsx, DiffView.tsx, CloudPromptBar.tsx) keep fork content -- verified via diff that only import lines changed. Rewrote @/components/agents and @/lib/agents imports across all 54 importer files plus the moved files' own internal imports (grep-driven, 85-entry alias map covering every old->new path pair). Two hazards caught only by the build gate (not tsc, since both files sit under the new experiments/** tsconfig exclude): ui/src/lib/notifications.ts had a relative `./agents/types` import (no `@/` alias) that the grep missed; and features/agents/experiments/index.ts's barrel re-export of the messages module needed to switch from an `@/` alias to a relative import (`../components/messages`) after landing inside the newly tsconfig-excluded experiments/ directory -- vite-tsconfig-paths failed to resolve it at build time even though tsc stayed silent. AgentPromptBar.tsx (the 2-line CloudPromptBar re-export shim) moves to features/agents/components/ with its export path retargeted at CloudPromptBar's new chat/ location -- a D/A pair, not a content loss, since the import-path edit drops it below git's rename-similarity threshold. ported/index.ts is the same D/A story for the same reason. Swapped the 8-file ported/ exclude lists in tsconfig.json and eslint.config.js for the single `src/features/agents/experiments/**` glob (upstream's simplification, no behavior change). Deleted ui/pnpm-workspace.yaml (lockfile hygiene -- bun stays the toolchain). Gates: bunx tsc --noEmit (clean), bun run build (clean after the two notifications.ts / experiments-index.ts fixes above), bun run test (33/33), and the full Playwright E2E suite against the real langgraph dev server + built dashboard (9/9).
2026-07-17 14:51:12 -04:00
import type { ToolExecutionChunk } from "@/features/agents/lib/types";
/** Maximum number of subagent cards rendered per row. */
const MAX_SUBAGENT_COLUMNS = 4;
/**
* Renders the subagents from a `subagent-group` render item as a responsive
* card grid. The column count follows the number of cards up to
* {@link MAX_SUBAGENT_COLUMNS}, so 1–4 subagents fill the row evenly and 5+
* wrap onto additional rows.
*/
export function SubagentGroup({ chunks }: { chunks: Array<ToolExecutionChunk> }) {
const columns = Math.min(Math.max(chunks.length, 1), MAX_SUBAGENT_COLUMNS);
return (
<div
className="grid gap-2"
style={{ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` }}
>
{chunks.map((chunk) => (
<SubagentCard key={chunk.toolCallId} chunk={chunk} />
))}
</div>
);
}