Skip to main content

gproxy_protocol/protocol/claude/common/
thinking.rs

1use 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}