vv-agent 0.1.3

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

use crate::runtime::{ExecutionContext, RuntimeRunControls};
use crate::sdk::session::AgentSessionRunRequest;
use crate::workspace::{LocalWorkspaceBackend, WorkspaceBackend};

fn execution_context_from_request(request: &AgentSessionRunRequest) -> Option<ExecutionContext> {
    request
        .stream_callback
        .clone()
        .map(|callback| ExecutionContext::default().with_stream_callback(callback))
}

pub(super) fn run_controls_from_request(request: &AgentSessionRunRequest) -> RuntimeRunControls {
    RuntimeRunControls {
        log_handler: request.runtime_event_handler.clone(),
        before_cycle_messages: request.before_cycle_messages.clone(),
        interruption_messages: request.interruption_messages.clone(),
        steering_queue: request.steering_queue.clone(),
        cancellation_token: request.cancellation_token.clone(),
        execution_context: execution_context_from_request(request),
        workspace: request.workspace.clone(),
        workspace_backend: request.workspace.as_ref().map(|workspace| {
            Arc::new(LocalWorkspaceBackend::new(workspace.clone())) as Arc<dyn WorkspaceBackend>
        }),
        sub_task_manager: request.sub_task_manager.clone(),
    }
}