use crate::tui::state;
use crate::primary_agents::sanitized_primary_agent_diagnostic_text;
pub(crate) fn record_primary_agent_startup_diagnostics(
state: &mut state::MissionControlState,
diagnostics: &[crate::primary_agents::PrimaryAgentProfileDiagnostic],
) {
if diagnostics.is_empty() {
return;
}
let summary = format!(
"{} primary agent profile diagnostic(s); invalid profiles skipped",
diagnostics.len()
);
state.status = summary.clone();
state.record_error_transcript(&summary);
for diagnostic in diagnostics.iter().take(5) {
state.record_error_transcript(&format!(
"primary agent profile skipped: profile={} reason={}",
sanitized_primary_agent_diagnostic_label(diagnostic),
sanitized_primary_agent_diagnostic_text(&diagnostic.message)
));
}
if diagnostics.len() > 5 {
state.record_error_transcript(&format!(
"{} additional primary agent profile diagnostic(s) omitted",
diagnostics.len() - 5
));
}
}
fn sanitized_primary_agent_diagnostic_label(
diagnostic: &crate::primary_agents::PrimaryAgentProfileDiagnostic,
) -> String {
let label = diagnostic
.path
.as_ref()
.and_then(|path| path.file_name())
.and_then(|name| name.to_str())
.or(diagnostic.id.as_deref())
.unwrap_or("<unknown>");
sanitized_primary_agent_diagnostic_text(label)
}