gproxy_protocol/protocol/claude/common/
thinking.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::{JsonObject, ThinkingDisplay, TypedObject};
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8#[serde(untagged)]
9pub enum ThinkingConfig {
10 Enabled(ThinkingEnabled),
11 Disabled(ThinkingDisabled),
12 Adaptive(ThinkingAdaptive),
13 Unknown(TypedObject),
14}
15
16#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
17pub struct ThinkingEnabled {
18 pub budget_tokens: u64,
19 #[serde(rename = "type")]
20 pub type_: ThinkingEnabledType,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub display: Option<ThinkingDisplay>,
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 ThinkingEnabledType {
29 #[serde(rename = "enabled")]
30 Enabled,
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
34pub struct ThinkingDisabled {
35 #[serde(rename = "type")]
36 pub type_: ThinkingDisabledType,
37 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
38 pub extra: JsonObject,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
42pub enum ThinkingDisabledType {
43 #[serde(rename = "disabled")]
44 Disabled,
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
48pub struct ThinkingAdaptive {
49 #[serde(rename = "type")]
50 pub type_: ThinkingAdaptiveType,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub display: Option<ThinkingDisplay>,
53 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
54 pub extra: JsonObject,
55}
56
57#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
58pub enum ThinkingAdaptiveType {
59 #[serde(rename = "adaptive")]
60 Adaptive,
61}