vv-agent 0.6.0

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use std::collections::BTreeMap;

use crate::types::{Message, MessageRole};

#[derive(Debug, Clone, PartialEq, Eq)]
pub(super) struct ToolCallInfo {
    pub tool_name: Option<String>,
    pub arguments: Option<String>,
}

pub(super) fn build_tool_call_info(messages: &[Message]) -> BTreeMap<String, ToolCallInfo> {
    let mut info = BTreeMap::new();
    for message in messages {
        if message.role != MessageRole::Assistant {
            continue;
        }
        for tool_call in &message.tool_calls {
            let arguments = serde_json::to_string(&tool_call.arguments).ok();
            info.insert(
                tool_call.id.clone(),
                ToolCallInfo {
                    tool_name: Some(tool_call.name.clone()),
                    arguments,
                },
            );
        }
    }
    info
}