use serde::{Deserialize, Serialize};
use serde_json::json;
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct ToolSchema {
pub name: String,
pub scope: String,
pub input_schema: serde_json::Value,
pub output_schema: serde_json::Value,
}
#[must_use]
pub fn object_schema(required: &[&str]) -> serde_json::Value {
json!({
"type": "object",
"required": required,
"additionalProperties": false
})
}
#[must_use]
pub fn safe_output_schema() -> serde_json::Value {
json!({
"type": "object",
"additionalProperties": true,
"x-redaction": "tokens,cookies,credentials,headers,local_paths"
})
}
#[must_use]
pub fn order_preview_input_schema() -> serde_json::Value {
json!({
"type": "object",
"required": [
"account_id",
"symbol",
"side",
"quantity",
"order_type",
"time_in_force"
],
"additionalProperties": false
})
}