gproxy_protocol/claude/common/
diagnostics.rs1use serde::{Deserialize, Serialize};
2
3use super::TypedObject;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
6#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
7pub struct DiagnosticsParam {
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub previous_message_id: Option<Option<String>>,
10 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
11 pub rest: serde_json::Map<String, serde_json::Value>,
12}
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
15#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
16pub struct Diagnostics {
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub cache_miss_reason: Option<CacheMissReason>,
19 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
20 pub rest: serde_json::Map<String, serde_json::Value>,
21}
22
23#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
24#[serde(untagged)]
25#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
26pub enum CacheMissReason {
27 Known(KnownCacheMissReason),
28 Unknown(TypedObject),
29}
30
31#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
32#[serde(tag = "type")]
33#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
34pub enum KnownCacheMissReason {
35 #[serde(rename = "model_changed")]
36 ModelChanged {
37 cache_missed_input_tokens: u64,
38 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
39 rest: serde_json::Map<String, serde_json::Value>,
40 },
41 #[serde(rename = "system_changed")]
42 SystemChanged {
43 cache_missed_input_tokens: u64,
44 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
45 rest: serde_json::Map<String, serde_json::Value>,
46 },
47 #[serde(rename = "tools_changed")]
48 ToolsChanged {
49 cache_missed_input_tokens: u64,
50 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
51 rest: serde_json::Map<String, serde_json::Value>,
52 },
53 #[serde(rename = "messages_changed")]
54 MessagesChanged {
55 cache_missed_input_tokens: u64,
56 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
57 rest: serde_json::Map<String, serde_json::Value>,
58 },
59 #[serde(rename = "previous_message_not_found")]
60 PreviousMessageNotFound {
61 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
62 rest: serde_json::Map<String, serde_json::Value>,
63 },
64 #[serde(rename = "unavailable")]
65 Unavailable {
66 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
67 rest: serde_json::Map<String, serde_json::Value>,
68 },
69}