- Fix resolveBaseBranch to use stored branch name and consistent fusion/ prefix for both explicit deps and blockedBy paths (was using kb/ for blockedBy) - Add main branch checkout verification in merger before squash merge to prevent feature code from landing on wrong branch lineage - Align all branch prefix references from stale kb/ to fusion/ across executor, merger, store, and routes - Fix executor test OOM by mocking merger fully, adding fake timers to retry tests, and switching vitest pool to vmThreads - Update all test assertions to use fusion/ branch prefix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
import { Activity, CheckCircle, ListTodo } from "lucide-react";
|
|
import type { AgentStats } from "../api";
|
|
|
|
interface AgentMetricsBarProps {
|
|
stats: AgentStats | null;
|
|
}
|
|
|
|
export function AgentMetricsBar({ stats }: AgentMetricsBarProps) {
|
|
if (!stats) return null;
|
|
|
|
const cards = [
|
|
{ icon: Activity, label: "Active Agents", value: stats.activeCount, color: "var(--state-active-text)" },
|
|
{ icon: ListTodo, label: "Assigned Tasks", value: stats.assignedTaskCount, color: "var(--in-progress)" },
|
|
{ icon: CheckCircle, label: "Success Rate", value: `${Math.round(stats.successRate * 100)}%`, color: "var(--color-success, #3fb950)" },
|
|
];
|
|
|
|
return (
|
|
<div className="agent-metrics-bar">
|
|
{cards.map(card => (
|
|
<div key={card.label} className="agent-metric-card">
|
|
<card.icon size={18} style={{ color: card.color }} />
|
|
<div className="agent-metric-info">
|
|
<span className="agent-metric-value">{card.value}</span>
|
|
<span className="agent-metric-label">{card.label}</span>
|
|
</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
}
|