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 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>;