import { useQuery } from "@tanstack/react-query"; import { Activity, BadgeDollarSign, BookOpenText, History, KeyRound, Library, MessageSquare, PlayCircle, ReceiptText, Settings2, ShieldCheck, Sparkles, Wrench, } from "lucide-react"; import { agentsApi } from "@/api/agents"; import { useCompany } from "@/context/CompanyContext"; import { queryKeys } from "@/lib/queryKeys"; import { ContextualSidebarFrame } from "./ContextualSidebarFrame"; import { SidebarNavItem } from "./SidebarNavItem"; import { contextualSidebarStyles } from "./contextual-sidebar-styles"; import { AGENT_DETAIL_NAVIGATION, agentDetailHref, agentScopedAuditHref, type AgentLocalDetailView, } from "@/pages/agent-detail-navigation"; const localIcons = { overview: Sparkles, instructions: BookOpenText, skills: Library, runtime: Settings2, secrets: ShieldCheck, tools: Wrench, channels: MessageSquare, permissions: ShieldCheck, "api-keys": KeyRound, revisions: History, } satisfies Record; const auditItems = [ { section: "activity", label: "Activity", icon: Activity }, { section: "runs", label: "Runs", icon: PlayCircle }, { section: "costs", label: "Costs", icon: ReceiptText }, { section: "budgets", label: "Budgets", icon: BadgeDollarSign }, ] as const; export function AgentContextualSidebar({ agentRef, agentId, agentName, labels = { secrets: "Secrets & variables" }, }: { agentRef: string; agentId?: string; agentName?: string; labels?: Partial>; }) { const { selectedCompanyId } = useCompany(); const shouldResolveAgent = !agentId || !agentName; const { data: resolvedAgent } = useQuery({ queryKey: [...queryKeys.agents.detail(agentRef), selectedCompanyId ?? null, "contextual-sidebar"], queryFn: () => agentsApi.get(agentRef, selectedCompanyId ?? undefined), enabled: shouldResolveAgent && Boolean(agentRef && selectedCompanyId), }); const resolvedId = agentId ?? resolvedAgent?.id; const resolvedName = agentName ?? resolvedAgent?.name ?? "Agent"; return ( ); }