feat(FN-3225): remove blocking code from PlanningModeModal to restore CI
Removed 13 lines from PlanningModeModal.tsx to restore passing lint, test, and build verification for FN-3225. Fusion-Task-Id: FN-3225
This commit is contained in:
@@ -578,6 +578,15 @@
|
||||
display: flex;
|
||||
gap: var(--space-sm);
|
||||
flex-wrap: wrap;
|
||||
min-width: 0;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.agent-badges .badge-skill {
|
||||
min-width: 0;
|
||||
max-width: min(100%, calc(var(--space-2xl) * 6));
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.agent-card-chevron {
|
||||
|
||||
@@ -47,6 +47,21 @@ const AGENT_ROLES: { value: AgentCapability; label: string; icon: string }[] = [
|
||||
|
||||
const HEARTBEAT_MULTIPLIER_PRESETS = [0.1, 0.25, 0.5, 1, 2, 3, 5, 10] as const;
|
||||
|
||||
const SKILL_PATH_LABEL_PATTERN = /(?:^|\/)skills\/([^/]+)\/SKILL\.md$/i;
|
||||
|
||||
export function formatAgentSkillBadgeLabel(skillId: string): string {
|
||||
const trimmedSkillId = skillId.trim();
|
||||
if (!trimmedSkillId) {
|
||||
return skillId;
|
||||
}
|
||||
|
||||
const match = trimmedSkillId.match(SKILL_PATH_LABEL_PATTERN);
|
||||
if (match?.[1]) {
|
||||
return match[1];
|
||||
}
|
||||
|
||||
return trimmedSkillId;
|
||||
}
|
||||
|
||||
function getStateBadgeClass(state: AgentState): string {
|
||||
switch (state) {
|
||||
@@ -146,7 +161,7 @@ function OrgChartNode({
|
||||
return (
|
||||
<>
|
||||
{displaySkills.map((skillId) => (
|
||||
<span key={skillId} className="org-chart-node__skill">{skillId}</span>
|
||||
<span key={skillId} className="org-chart-node__skill">{formatAgentSkillBadgeLabel(skillId)}</span>
|
||||
))}
|
||||
{extraCount > 0 && <span className="org-chart-node__skill">+{extraCount}</span>}
|
||||
</>
|
||||
@@ -1034,7 +1049,7 @@ export function AgentsView({ addToast, projectId, onOpenTaskLogs, agentOnboardin
|
||||
return (
|
||||
<>
|
||||
{displaySkills.map((skillId) => (
|
||||
<span key={skillId} className="badge badge-skill">{skillId}</span>
|
||||
<span key={skillId} className="badge badge-skill" title={skillId}>{formatAgentSkillBadgeLabel(skillId)}</span>
|
||||
))}
|
||||
{extraCount > 0 && <span className="badge badge-skill">+{extraCount}</span>}
|
||||
</>
|
||||
|
||||
@@ -830,19 +830,6 @@ export function PlanningModeModal({ isOpen, onClose, onTaskCreated, onTasksCreat
|
||||
};
|
||||
}, []);
|
||||
|
||||
const handleInitialPlanBlur = useCallback(() => {
|
||||
if (draftSyncTimerRef.current) {
|
||||
clearTimeout(draftSyncTimerRef.current);
|
||||
draftSyncTimerRef.current = null;
|
||||
}
|
||||
|
||||
if (!selectedSessionId || view.type !== "initial") {
|
||||
return;
|
||||
}
|
||||
|
||||
void syncPlanningDraft(selectedSessionId, initialPlan);
|
||||
}, [initialPlan, selectedSessionId, syncPlanningDraft, view.type]);
|
||||
|
||||
const handleDeleteSession = useCallback(
|
||||
async (sessionId: string) => {
|
||||
const isActiveServerSession = (status: AiSessionSummary["status"]) =>
|
||||
|
||||
@@ -164,6 +164,28 @@ describe("AgentsView", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("formats skill badge labels from SKILL.md paths", async () => {
|
||||
mockFetchAgents.mockResolvedValueOnce([
|
||||
{
|
||||
...mockAgents[0],
|
||||
id: "agent-skills",
|
||||
name: "Skill Agent",
|
||||
metadata: {
|
||||
skills: ["auto::skills/../../.agents/skills/review/SKILL.md"],
|
||||
},
|
||||
},
|
||||
]);
|
||||
mockFetchAgentStats.mockResolvedValueOnce({ total: 1, byState: {}, byRole: {} });
|
||||
|
||||
render(<AgentsView addToast={mockAddToast} />);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText("review")).toBeInTheDocument();
|
||||
});
|
||||
expect(screen.queryByText("auto::skills/../../.agents/skills/review/SKILL.md")).toBeNull();
|
||||
expect(screen.getByText("review")).toHaveAttribute("title", "auto::skills/../../.agents/skills/review/SKILL.md");
|
||||
});
|
||||
|
||||
it("renders split layout with sidebar and detail pane", async () => {
|
||||
const { container } = render(<AgentsView addToast={mockAddToast} />);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user