Skip to main content

gproxy_protocol/protocol/claude/common/tools/
choice.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::super::{JsonObject, TypedObject};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8#[serde(untagged)]
9pub enum ToolChoice {
10    Auto(ToolChoiceAuto),
11    Any(ToolChoiceAny),
12    Tool(ToolChoiceTool),
13    None(ToolChoiceNone),
14    Unknown(TypedObject),
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
18pub struct ToolChoiceAuto {
19    #[serde(rename = "type")]
20    pub type_: ToolChoiceAutoType,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub disable_parallel_tool_use: Option<bool>,
23    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
24    pub extra: JsonObject,
25}
26
27#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
28pub enum ToolChoiceAutoType {
29    #[serde(rename = "auto")]
30    Auto,
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
34pub struct ToolChoiceAny {
35    #[serde(rename = "type")]
36    pub type_: ToolChoiceAnyType,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub disable_parallel_tool_use: Option<bool>,
39    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
40    pub extra: JsonObject,
41}
42
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
44pub enum ToolChoiceAnyType {
45    #[serde(rename = "any")]
46    Any,
47}
48
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
50pub struct ToolChoiceTool {
51    pub name: String,
52    #[serde(rename = "type")]
53    pub type_: ToolChoiceToolType,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub disable_parallel_tool_use: Option<bool>,
56    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
57    pub extra: JsonObject,
58}
59
60#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
61pub enum ToolChoiceToolType {
62    #[serde(rename = "tool")]
63    Tool,
64}
65
66#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
67pub struct ToolChoiceNone {
68    #[serde(rename = "type")]
69    pub type_: ToolChoiceNoneType,
70    #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
71    pub extra: JsonObject,
72}
73
74#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
75pub enum ToolChoiceNoneType {
76    #[serde(rename = "none")]
77    None,
78}