mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-10-02 02:43:15 +00:00
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).
25 lines
882 B
TypeScript
25 lines
882 B
TypeScript
import { SubagentCard } from "./SubagentCard";
|
||
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>
|
||
);
|
||
}
|