import { useState } from "react"; import { AlertTriangle, Database, Loader2, Save } from "lucide-react"; import type { Analysis, DataBindItem } from "@/services/orchestrationApi"; import { DataBindSelector } from "./DataBindSelector"; interface AnalysisHeaderProps { analysis: Analysis | null; staleSources?: DataBindItem[]; onUpdateDataBind: (items: DataBindItem[]) => Promise; } export function AnalysisHeader({ analysis, staleSources = [], onUpdateDataBind }: AnalysisHeaderProps) { const [editingSources, setEditingSources] = useState(false); const [draftBind, setDraftBind] = useState(analysis?.data_bind ?? []); const [saving, setSaving] = useState(false); const [error, setError] = useState(null); if (!analysis) { return (

Select or create an analysis

Knowledge setup comes first, then analysis, then agent conversation.

); } const save = async () => { setSaving(true); setError(null); try { await onUpdateDataBind(draftBind); setEditingSources(false); } catch (err) { setError(err instanceof Error ? err.message : "Failed to update sources"); } finally { setSaving(false); } }; const openSourceEditor = () => { setDraftBind(analysis.data_bind); setEditingSources((open) => !open); }; return (

{analysis.analysis_title}

{staleSources.length > 0 && (

Some bound sources are no longer available.

Update sources before relying on this analysis: {staleSources.map((source) => source.name).join(", ")}.

)} {editingSources && (
{error &&

{error}

}
)}
); }