@@ -58,6 +58,16 @@ impl ContextMessage {
5858 }
5959 }
6060
61+ /// Returns the raw content before template rendering (only for User
62+ /// messages)
63+ pub fn raw_content ( & self ) -> Option < & str > {
64+ match self {
65+ ContextMessage :: Text ( text_message) => text_message. raw_content . as_deref ( ) ,
66+ ContextMessage :: Tool ( _) => None ,
67+ ContextMessage :: Image ( _) => None ,
68+ }
69+ }
70+
6171 /// Estimates the number of tokens in a message using character-based
6272 /// approximation.
6373 /// ref: https://github.com/openai/codex/blob/main/codex-cli/src/utils/approximate-tokens-used.ts
@@ -133,6 +143,7 @@ impl ContextMessage {
133143 TextMessage {
134144 role : Role :: User ,
135145 content : content. to_string ( ) ,
146+ raw_content : None ,
136147 tool_calls : None ,
137148 reasoning_details : None ,
138149 model,
@@ -144,6 +155,7 @@ impl ContextMessage {
144155 TextMessage {
145156 role : Role :: System ,
146157 content : content. to_string ( ) ,
158+ raw_content : None ,
147159 tool_calls : None ,
148160 model : None ,
149161 reasoning_details : None ,
@@ -161,6 +173,7 @@ impl ContextMessage {
161173 TextMessage {
162174 role : Role :: Assistant ,
163175 content : content. to_string ( ) ,
176+ raw_content : None ,
164177 tool_calls,
165178 reasoning_details,
166179 model : None ,
@@ -240,6 +253,9 @@ fn reasoning_content_char_count(text_message: &TextMessage) -> usize {
240253pub struct TextMessage {
241254 pub role : Role ,
242255 pub content : String ,
256+ /// The raw content before any template rendering (only for User messages)
257+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
258+ pub raw_content : Option < String > ,
243259 #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
244260 pub tool_calls : Option < Vec < ToolCallFull > > ,
245261 // note: this used to track model used for this message.
@@ -262,6 +278,7 @@ impl TextMessage {
262278 Self {
263279 role : Role :: Assistant ,
264280 content : content. to_string ( ) ,
281+ raw_content : None ,
265282 tool_calls : None ,
266283 reasoning_details,
267284 model,
0 commit comments