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)]
9#[non_exhaustive]
10pub enum ThinkingConfig {
11 Enabled(ThinkingEnabled),
12 Disabled(ThinkingDisabled),
13 Adaptive(ThinkingAdaptive),
14 Unknown(TypedObject),
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
18#[non_exhaustive]
19pub struct ThinkingEnabled {
20 pub budget_tokens: u64,
21 #[serde(rename = "type")]
22 pub type_: ThinkingEnabledType,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub display: Option<ThinkingDisplay>,
25 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
26 pub extra: JsonObject,
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30#[non_exhaustive]
31pub enum ThinkingEnabledType {
32 #[serde(rename = "enabled")]
33 Enabled,
34}
35
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
37#[non_exhaustive]
38pub struct ThinkingDisabled {
39 #[serde(rename = "type")]
40 pub type_: ThinkingDisabledType,
41 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
42 pub extra: JsonObject,
43}
44
45#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
46#[non_exhaustive]
47pub enum ThinkingDisabledType {
48 #[serde(rename = "disabled")]
49 Disabled,
50}
51
52#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
53#[non_exhaustive]
54pub struct ThinkingAdaptive {
55 #[serde(rename = "type")]
56 pub type_: ThinkingAdaptiveType,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub display: Option<ThinkingDisplay>,
59 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
60 pub extra: JsonObject,
61}
62
63#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
64#[non_exhaustive]
65pub enum ThinkingAdaptiveType {
66 #[serde(rename = "adaptive")]
67 Adaptive,
68}