gproxy_protocol/protocol/claude/common/tools/
support.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::super::{CacheControl, JsonObject, JsonSchemaObjectType};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8pub struct ToolCommon {
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub allowed_callers: Option<Vec<ToolCaller>>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub cache_control: Option<CacheControl>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub defer_loading: Option<bool>,
15 #[serde(default, skip_serializing_if = "Vec::is_empty")]
16 pub input_examples: Vec<JsonObject>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub strict: Option<bool>,
19 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
20 pub extra: JsonObject,
21}
22
23#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
24pub struct ToolCommonWithoutInputExamples {
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub allowed_callers: Option<Vec<ToolCaller>>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub cache_control: Option<CacheControl>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub defer_loading: Option<bool>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub strict: Option<bool>,
33 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
34 pub extra: JsonObject,
35}
36
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
38pub struct JsonSchema {
39 #[serde(rename = "type")]
40 pub type_: JsonSchemaObjectType,
41 #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
42 pub properties: JsonObject,
43 #[serde(default, skip_serializing_if = "Vec::is_empty")]
44 pub required: Vec<String>,
45 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
46 pub extra: JsonObject,
47}
48
49#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
50pub enum CustomToolType {
51 #[serde(rename = "custom")]
52 Custom,
53}
54
55#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
56pub enum ToolCaller {
57 #[serde(rename = "direct")]
58 Direct,
59 #[serde(rename = "code_execution_20250825")]
60 CodeExecution20250825,
61 #[serde(rename = "code_execution_20260120")]
62 CodeExecution20260120,
63 #[serde(rename = "code_execution_20260521")]
64 CodeExecution20260521,
65}