Skip to main content

vtcode_core/tools/
request_response.rs

1use hashbrown::HashMap;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5use crate::types::CompactStr;
6
7/// Canonical tool call request used across tool execution layers.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct ToolCallRequest {
10    pub id: String,
11    pub tool_name: CompactStr,
12    pub args: Value,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub metadata: Option<HashMap<String, String>>,
15}
16
17/// Canonical tool call response used across tool execution layers.
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct ToolCallResponse {
20    pub id: String,
21    pub success: bool,
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub result: Option<Value>,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub error: Option<String>,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub duration_ms: Option<u64>,
28    #[serde(default, skip_serializing_if = "Option::is_none")]
29    pub cache_hit: Option<bool>,
30}