11use std:: io:: Write as _;
22use std:: marker:: PhantomData ;
33
4+ use crossterm:: execute;
5+ use crossterm:: style:: Print ;
6+
47use crate :: protocol:: {
58 Event ,
69 LegacyPassThroughOutput ,
@@ -40,8 +43,8 @@ impl ViewEnd {
4043 mut stdout : std:: io:: Stdout ,
4144 ) -> Result < ( ) , ConduitError > {
4245 while let Ok ( event) = self . receiver . recv ( ) {
43- if let Event :: LegacyPassThrough ( content ) = event {
44- match content {
46+ match event {
47+ Event :: LegacyPassThrough ( content ) => match content {
4548 LegacyPassThroughOutput :: Stderr ( content) => {
4649 stderr. write_all ( & content) ?;
4750 stderr. flush ( ) ?;
@@ -50,7 +53,260 @@ impl ViewEnd {
5053 stdout. write_all ( & content) ?;
5154 stdout. flush ( ) ?;
5255 } ,
53- }
56+ } ,
57+ Event :: RunStarted ( run_started) => {
58+ let _ = execute ! (
59+ stderr,
60+ Print ( format!(
61+ "Run started - Thread: {}, Run: {}\n " ,
62+ run_started. thread_id, run_started. run_id
63+ ) )
64+ ) ;
65+ } ,
66+ Event :: RunFinished ( run_finished) => {
67+ let result_info = run_finished
68+ . result
69+ . as_ref ( )
70+ . map ( |r| format ! ( " with result: {:?}" , r) )
71+ . unwrap_or_default ( ) ;
72+ let _ = execute ! (
73+ stderr,
74+ Print ( format!(
75+ "Run finished - Thread: {}, Run: {}{}\n " ,
76+ run_finished. thread_id, run_finished. run_id, result_info
77+ ) )
78+ ) ;
79+ } ,
80+ Event :: RunError ( run_error) => {
81+ let code_info = run_error
82+ . code
83+ . as_ref ( )
84+ . map ( |c| format ! ( " (Code: {})" , c) )
85+ . unwrap_or_default ( ) ;
86+ let _ = execute ! (
87+ stderr,
88+ Print ( format!( "Run error{}: {}\n " , code_info, run_error. message) )
89+ ) ;
90+ } ,
91+ Event :: StepStarted ( step_started) => {
92+ let _ = execute ! ( stderr, Print ( format!( "Step started: {}\n " , step_started. step_name) ) ) ;
93+ } ,
94+ Event :: StepFinished ( step_finished) => {
95+ let _ = execute ! ( stderr, Print ( format!( "Step finished: {}\n " , step_finished. step_name) ) ) ;
96+ } ,
97+ Event :: TextMessageStart ( text_message_start) => {
98+ let _ = execute ! (
99+ stderr,
100+ Print ( format!(
101+ "Text message started - ID: {}, Role: {:?}\n " ,
102+ text_message_start. message_id, text_message_start. role
103+ ) )
104+ ) ;
105+ } ,
106+ Event :: TextMessageContent ( text_message_content) => {
107+ let _ = execute ! (
108+ stderr,
109+ Print ( format!(
110+ "Text content ({}): {}\n " ,
111+ text_message_content. message_id, text_message_content. delta
112+ ) )
113+ ) ;
114+ } ,
115+ Event :: TextMessageEnd ( text_message_end) => {
116+ let _ = execute ! (
117+ stderr,
118+ Print ( format!( "Text message ended - ID: {}\n " , text_message_end. message_id) )
119+ ) ;
120+ } ,
121+ Event :: TextMessageChunk ( text_message_chunk) => {
122+ let message_id = text_message_chunk
123+ . message_id
124+ . as_ref ( )
125+ . map ( |id| format ! ( " ID: {}" , id) )
126+ . unwrap_or_default ( ) ;
127+ let role = text_message_chunk
128+ . role
129+ . as_ref ( )
130+ . map ( |r| format ! ( " Role: {:?}" , r) )
131+ . unwrap_or_default ( ) ;
132+ let delta = text_message_chunk
133+ . delta
134+ . as_ref ( )
135+ . map ( |d| format ! ( " Content: {}" , d) )
136+ . unwrap_or_default ( ) ;
137+ let _ = execute ! (
138+ stderr,
139+ Print ( format!( "Text message chunk{}{}{}\n " , message_id, role, delta) )
140+ ) ;
141+ } ,
142+ Event :: ToolCallStart ( tool_call_start) => {
143+ let parent_info = tool_call_start
144+ . parent_message_id
145+ . as_ref ( )
146+ . map ( |p| format ! ( " (Parent: {})" , p) )
147+ . unwrap_or_default ( ) ;
148+ let _ = execute ! (
149+ stderr,
150+ Print ( format!(
151+ "Tool call started - ID: {}, Tool: {}{}\n " ,
152+ tool_call_start. tool_call_id, tool_call_start. tool_call_name, parent_info
153+ ) )
154+ ) ;
155+ } ,
156+ Event :: ToolCallArgs ( tool_call_args) => {
157+ let _ = execute ! (
158+ stderr,
159+ Print ( format!(
160+ "Tool call args ({}): {}\n " ,
161+ tool_call_args. tool_call_id, tool_call_args. delta
162+ ) )
163+ ) ;
164+ } ,
165+ Event :: ToolCallEnd ( tool_call_end) => {
166+ let _ = execute ! (
167+ stderr,
168+ Print ( format!( "Tool call ended - ID: {}\n " , tool_call_end. tool_call_id) )
169+ ) ;
170+ } ,
171+ Event :: ToolCallResult ( tool_call_result) => {
172+ let role_info = tool_call_result
173+ . role
174+ . as_ref ( )
175+ . map ( |r| format ! ( " Role: {:?}" , r) )
176+ . unwrap_or_default ( ) ;
177+ let _ = execute ! (
178+ stderr,
179+ Print ( format!(
180+ "Tool call result - Message: {}, Tool: {}{}\n Content: {}\n " ,
181+ tool_call_result. message_id,
182+ tool_call_result. tool_call_id,
183+ role_info,
184+ tool_call_result. content
185+ ) )
186+ ) ;
187+ } ,
188+ Event :: StateSnapshot ( state_snapshot) => {
189+ let _ = execute ! (
190+ stderr,
191+ Print ( format!( "State snapshot: {:?}\n " , state_snapshot. snapshot) )
192+ ) ;
193+ } ,
194+ Event :: StateDelta ( state_delta) => {
195+ let _ = execute ! ( stderr, Print ( format!( "State delta: {:?}\n " , state_delta. delta) ) ) ;
196+ } ,
197+ Event :: MessagesSnapshot ( messages_snapshot) => {
198+ let _ = execute ! (
199+ stderr,
200+ Print ( format!(
201+ "Messages snapshot: {} messages\n " ,
202+ messages_snapshot. messages. len( )
203+ ) )
204+ ) ;
205+ } ,
206+ Event :: Raw ( raw) => {
207+ let source_info = raw. source . as_ref ( ) . map ( |s| format ! ( " from {}" , s) ) . unwrap_or_default ( ) ;
208+ let _ = execute ! ( stderr, Print ( format!( "Raw event{}: {:?}\n " , source_info, raw. event) ) ) ;
209+ } ,
210+ Event :: Custom ( custom) => {
211+ let _ = execute ! (
212+ stderr,
213+ Print ( format!(
214+ "Custom event - Name: {}, Value: {:?}\n " ,
215+ custom. name, custom. value
216+ ) )
217+ ) ;
218+ } ,
219+ Event :: ActivitySnapshotEvent ( activity_snapshot_event) => {
220+ let _ = execute ! (
221+ stderr,
222+ Print ( format!(
223+ "Activity snapshot - Message: {}, Type: {}, Content: {:?}\n " ,
224+ activity_snapshot_event. message_id,
225+ activity_snapshot_event. activity_type,
226+ activity_snapshot_event. content
227+ ) )
228+ ) ;
229+ } ,
230+ Event :: ActivityDeltaEvent ( activity_delta_event) => {
231+ let _ = execute ! (
232+ stderr,
233+ Print ( format!(
234+ "Activity delta - Message: {}, Type: {}, Patch: {:?}\n " ,
235+ activity_delta_event. message_id,
236+ activity_delta_event. activity_type,
237+ activity_delta_event. patch
238+ ) )
239+ ) ;
240+ } ,
241+ Event :: ReasoningStart ( reasoning_start) => {
242+ if let Some ( info) = reasoning_start. encrypted_content . as_deref ( ) {
243+ let _ = execute ! (
244+ stderr,
245+ Print ( format!(
246+ "Reasoning started - Message: {}{}\n " ,
247+ reasoning_start. message_id, info
248+ ) )
249+ ) ;
250+ }
251+ } ,
252+ Event :: ReasoningMessageStart ( reasoning_message_start) => {
253+ let _ = execute ! (
254+ stderr,
255+ Print ( format!(
256+ "Reasoning message started - ID: {}, Role: {:?}\n " ,
257+ reasoning_message_start. message_id, reasoning_message_start. role
258+ ) )
259+ ) ;
260+ } ,
261+ Event :: ReasoningMessageContent ( reasoning_message_content) => {
262+ let _ = execute ! (
263+ stderr,
264+ Print ( format!(
265+ "Reasoning content ({}): {}\n " ,
266+ reasoning_message_content. message_id, reasoning_message_content. delta
267+ ) )
268+ ) ;
269+ } ,
270+ Event :: ReasoningMessageEnd ( reasoning_message_end) => {
271+ let _ = execute ! (
272+ stderr,
273+ Print ( format!(
274+ "Reasoning message ended - ID: {}\n " ,
275+ reasoning_message_end. message_id
276+ ) )
277+ ) ;
278+ } ,
279+ Event :: ReasoningMessageChunk ( reasoning_message_chunk) => {
280+ let message_id = reasoning_message_chunk
281+ . message_id
282+ . as_ref ( )
283+ . map ( |id| format ! ( " ID: {}" , id) )
284+ . unwrap_or_default ( ) ;
285+ let delta = reasoning_message_chunk
286+ . delta
287+ . as_ref ( )
288+ . map ( |d| format ! ( " Content: {}" , d) )
289+ . unwrap_or_default ( ) ;
290+ let _ = execute ! (
291+ stderr,
292+ Print ( format!( "Reasoning message chunk{}{}\n " , message_id, delta) )
293+ ) ;
294+ } ,
295+ Event :: ReasoningEnd ( reasoning_end) => {
296+ let _ = execute ! (
297+ stderr,
298+ Print ( format!( "Reasoning ended - Message: {}\n " , reasoning_end. message_id) )
299+ ) ;
300+ } ,
301+ Event :: MetaEvent ( meta_event) => {
302+ let _ = execute ! (
303+ stderr,
304+ Print ( format!(
305+ "Meta event - Type: {}, Payload: {:?}\n " ,
306+ meta_event. meta_type, meta_event. payload
307+ ) )
308+ ) ;
309+ } ,
54310 }
55311 }
56312
0 commit comments