collet 0.1.1

Relentless agentic coding orchestrator with zero-drop agent loops
Documentation
use super::super::App;

use crate::tui::state::{OptimizeSuggestionItem, PopupKind, PopupState};

impl App {
    pub(crate) fn try_open_optimize_popup(&mut self) -> bool {
        let bench_path = crate::config::bench_log_path();
        let model = &self.state.model_name;
        if let Some(result) = crate::optimizer::advisor::advise(&bench_path, model, &self.config) {
            if result.suggestions.is_empty() {
                return false;
            }
            let items: Vec<OptimizeSuggestionItem> = result
                .suggestions
                .iter()
                .map(|s| OptimizeSuggestionItem {
                    key: s.key.clone(),
                    label: s.label.clone(),
                    current: s.current.clone(),
                    suggested: s.suggested.clone(),
                    reason: s.reason.clone(),
                    confidence: s.confidence,
                    apply: true,
                })
                .collect();
            self.state.popup = Some(PopupState {
                title: format!(
                    "Optimize: {} ({} sessions)",
                    result.model, result.session_count
                ),
                content: String::new(),
                scroll: 0,
                kind: PopupKind::OptimizeSuggestion {
                    model: result.model,
                    session_count: result.session_count,
                    items,
                    selected: 0,
                    action: 0,
                },
                saved_theme: None,
                select_prefix: None,
                search: String::new(),
            });
            true
        } else {
            false
        }
    }
}