gproxy_protocol/protocol/claude/common/blocks/
content.rs1use 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>;