Skip to main content

gproxy_protocol/protocol/claude/common/blocks/
content.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::server_tools::*;
4use super::super::{JsonObject, MessageRole, StringOrArray, TypedObject};
5use super::*;
6
7pub type MessageContent = StringOrArray<ContentBlockParam>;
8pub type SystemPrompt = StringOrArray<TextBlock>;
9pub type ContentBlock = ResponseContentBlock;
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct MessageParam {
13    pub role: MessageRole,
14    pub content: MessageContent,
15    #[serde(default, flatten, skip_serializing_if = "JsonObject::is_empty")]
16    pub extra: JsonObject,
17}
18
19#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum ContentBlockParam {
22    Text(TextBlock),
23    Image(ImageBlock),
24    Document(DocumentBlock),
25    SearchResult(SearchResultBlock),
26    Thinking(ThinkingBlock),
27    RedactedThinking(RedactedThinkingBlock),
28    ToolUse(ToolUseBlock),
29    ToolResult(ToolResultBlock),
30    ServerToolUse(ServerToolUseBlock),
31    WebSearchToolResult(WebSearchToolResultBlock),
32    WebFetchToolResult(WebFetchToolResultBlock),
33    AdvisorToolResult(AdvisorToolResultBlock),
34    CodeExecutionToolResult(CodeExecutionToolResultBlock),
35    BashCodeExecutionToolResult(BashCodeExecutionToolResultBlock),
36    TextEditorCodeExecutionToolResult(TextEditorCodeExecutionToolResultBlock),
37    ToolSearchToolResult(ToolSearchToolResultBlock),
38    McpToolUse(McpToolUseBlock),
39    McpToolResult(McpToolResultBlock),
40    ContainerUpload(ContainerUploadBlock),
41    Compaction(CompactionBlock),
42    MidConversationSystem(MidConversationSystemBlock),
43    Fallback(FallbackBlock),
44    Raw(TypedObject),
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum ResponseContentBlock {
50    Text(ResponseTextBlock),
51    Thinking(ThinkingBlock),
52    RedactedThinking(RedactedThinkingBlock),
53    ToolUse(ResponseToolUseBlock),
54    ServerToolUse(ResponseServerToolUseBlock),
55    WebSearchToolResult(ResponseWebSearchToolResultBlock),
56    WebFetchToolResult(ResponseWebFetchToolResultBlock),
57    AdvisorToolResult(ResponseAdvisorToolResultBlock),
58    CodeExecutionToolResult(ResponseCodeExecutionToolResultBlock),
59    BashCodeExecutionToolResult(ResponseBashCodeExecutionToolResultBlock),
60    TextEditorCodeExecutionToolResult(ResponseTextEditorCodeExecutionToolResultBlock),
61    ToolSearchToolResult(ResponseToolSearchToolResultBlock),
62    McpToolUse(ResponseMcpToolUseBlock),
63    McpToolResult(ResponseMcpToolResultBlock),
64    ContainerUpload(ResponseContainerUploadBlock),
65    Compaction(ResponseCompactionBlock),
66    Fallback(FallbackBlock),
67    Raw(TypedObject),
68}
69
70#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
71#[serde(untagged)]
72pub enum ToolResultContent {
73    Text(String),
74    Blocks(Vec<ToolResultContentBlock>),
75    Raw(serde_json::Value),
76}
77
78#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
79#[serde(untagged)]
80pub enum ToolResultContentBlock {
81    Text(TextBlock),
82    Image(ImageBlock),
83    SearchResult(SearchResultBlock),
84    Document(DocumentBlock),
85    ToolReference(ToolReferenceBlock),
86    Raw(TypedObject),
87}
88
89pub type McpToolResultContent = StringOrArray<TextBlock>;