vv-agent 0.6.2

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use serde_json::Value;

use crate::types::{Message, ToolCall, ToolExecutionResult};

#[derive(Debug, Clone, Default, PartialEq)]
pub struct BeforeLlmPatch {
    pub messages: Option<Vec<Message>>,
    pub tool_schemas: Option<Vec<Value>>,
}

#[derive(Debug, Clone, Default, PartialEq)]
pub struct BeforeToolCallPatch {
    pub call: Option<ToolCall>,
    pub result: Option<ToolExecutionResult>,
}

impl BeforeToolCallPatch {
    pub fn call(call: ToolCall) -> Self {
        Self {
            call: Some(call),
            result: None,
        }
    }

    pub fn result(result: ToolExecutionResult) -> Self {
        Self {
            call: None,
            result: Some(result),
        }
    }
}

impl From<ToolCall> for BeforeToolCallPatch {
    fn from(call: ToolCall) -> Self {
        Self::call(call)
    }
}

impl From<ToolExecutionResult> for BeforeToolCallPatch {
    fn from(result: ToolExecutionResult) -> Self {
        Self::result(result)
    }
}