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    ToolAddition(ToolAdditionBlock),
44    ToolRemoval(ToolRemovalBlock),
45    Fallback(FallbackBlock),
46    Raw(TypedObject),
47}
48
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
50#[serde(untagged)]
51pub enum ResponseContentBlock {
52    Text(ResponseTextBlock),
53    Thinking(ThinkingBlock),
54    RedactedThinking(RedactedThinkingBlock),
55    ToolUse(ResponseToolUseBlock),
56    ServerToolUse(ResponseServerToolUseBlock),
57    WebSearchToolResult(ResponseWebSearchToolResultBlock),
58    WebFetchToolResult(ResponseWebFetchToolResultBlock),
59    AdvisorToolResult(ResponseAdvisorToolResultBlock),
60    CodeExecutionToolResult(ResponseCodeExecutionToolResultBlock),
61    BashCodeExecutionToolResult(ResponseBashCodeExecutionToolResultBlock),
62    TextEditorCodeExecutionToolResult(ResponseTextEditorCodeExecutionToolResultBlock),
63    ToolSearchToolResult(ResponseToolSearchToolResultBlock),
64    McpToolUse(ResponseMcpToolUseBlock),
65    McpToolResult(ResponseMcpToolResultBlock),
66    ContainerUpload(ResponseContainerUploadBlock),
67    Compaction(ResponseCompactionBlock),
68    Fallback(FallbackBlock),
69    Raw(TypedObject),
70}
71
72#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
73#[serde(untagged)]
74pub enum ToolResultContent {
75    Text(String),
76    Blocks(Vec<ToolResultContentBlock>),
77    Raw(serde_json::Value),
78}
79
80#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
81#[serde(untagged)]
82pub enum ToolResultContentBlock {
83    Text(TextBlock),
84    Image(ImageBlock),
85    SearchResult(SearchResultBlock),
86    Document(DocumentBlock),
87    ToolReference(ToolReferenceBlock),
88    Raw(TypedObject),
89}
90
91pub type McpToolResultContent = StringOrArray<TextBlock>;