gproxy_protocol/protocol/claude/common/tools/
choice.rs1use 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}