codetether-agent 4.7.0-a-002.4

A2A-native AI coding agent for the CodeTether ecosystem
Documentation
use crate::session::{Session, import_codex_sessions_for_directory};
use crate::tui::app::message_text::sync_messages_from_session;
use crate::tui::app::session_fork::fork_if_truncated;
use crate::tui::app::session_load_status::load_status_with_original;
use crate::tui::app::session_loader::load_session_for_tui;
use crate::tui::app::session_sync::{refresh_sessions, return_to_chat};
use crate::tui::app::state::App;
use std::path::Path;

pub async fn load_selected_session(
    app: &mut App,
    cwd: &Path,
    session: &mut Session,
    session_id: &str,
) {
    match load_session_for_tui(session_id).await {
        Ok(loaded) => {
            let dropped = loaded.dropped;
            let file_bytes = loaded.file_bytes;
            *session = loaded.session;
            let original_id = fork_if_truncated(session, dropped);
            session.attach_global_bus_if_missing();
            app.state.auto_apply_edits = session.metadata.auto_apply_edits;
            app.state.use_worktree = session.metadata.use_worktree;
            app.state.session_id = Some(session.id.clone());
            sync_messages_from_session(app, session);
            refresh_sessions(app, cwd).await;
            app.state.clear_session_filter();
            return_to_chat(app);
            app.state.status =
                load_status_with_original(session, dropped, file_bytes, original_id.as_deref());
        }
        Err(error) => {
            app.state.status = format!("Failed to load session: {error}");
        }
    }
}

pub async fn import_workspace_sessions(app: &mut App, cwd: &Path) {
    match import_codex_sessions_for_directory(cwd).await {
        Ok(report) => {
            refresh_sessions(app, cwd).await;
            app.state.status = format!(
                "Imported {} Codex sessions, skipped {}",
                report.imported, report.skipped
            );
        }
        Err(error) => {
            app.state.status = format!("Codex import failed: {error}");
        }
    }
}