vv-agent 0.7.0

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use std::sync::Arc;

use crate::runtime::state::{Checkpoint, StateStore};
use crate::types::{AgentResult, CycleRecord, Message, Metadata};

pub(super) fn load_checkpoint(
    state_store: &Arc<dyn StateStore>,
    task_id: &str,
    operation: &str,
) -> Result<Option<Checkpoint>, String> {
    state_store
        .load_checkpoint(task_id)
        .map_err(|error| format!("{operation}: failed to load checkpoint: {error}"))
}

pub(super) fn checkpoint_snapshot(
    checkpoint: &Checkpoint,
) -> (Vec<Message>, Vec<CycleRecord>, Metadata) {
    (
        checkpoint.messages.clone(),
        checkpoint.cycles.clone(),
        checkpoint.shared_state.clone(),
    )
}

pub(super) fn terminal_checkpoint(checkpoint: &Checkpoint, result: &AgentResult) -> Checkpoint {
    Checkpoint {
        task_id: checkpoint.task_id.clone(),
        cycle_index: checkpoint.cycle_index,
        status: result.status,
        messages: result.messages.clone(),
        cycles: result.cycles.clone(),
        shared_state: result.shared_state.clone(),
        revision: checkpoint.revision,
        claim_token: None,
        claimed_cycle: None,
        lease_expires_at_ms: None,
        terminal_result: Some(result.clone()),
        budget_usage: result.budget_usage.clone(),
    }
}