mod definitions;
mod handlers;
use serde::{Deserialize, Serialize};
use serde_json::Value;
pub use definitions::{get_tool_definitions, get_tool_definitions_with_budget, explore_call_budget, context_description};
pub use handlers::handle_tool_call;
const MAX_RESPONSE_CHARS: usize = 15_000;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ToolDefinition {
pub name: String,
pub description: String,
#[serde(rename = "inputSchema")]
pub input_schema: Value,
#[serde(skip_serializing_if = "Option::is_none")]
pub annotations: Option<Value>,
#[serde(rename = "_meta", skip_serializing_if = "Option::is_none")]
pub meta: Option<Value>,
}
pub struct ToolResult {
pub value: Value,
pub touched_files: Vec<String>,
}