1use crate::ThreadId;
2use crate::dynamic_tools::DynamicToolCallRequest;
3use crate::items::AgentMessageContent;
4use crate::items::AgentMessageItem;
5use crate::items::CollabAgentTool;
6use crate::items::CollabAgentToolCallItem;
7use crate::items::CollabAgentToolCallStatus;
8use crate::items::CommandExecutionItem;
9use crate::items::CommandExecutionStatus;
10use crate::items::ContextCompactionItem;
11use crate::items::DynamicToolCallItem;
12use crate::items::DynamicToolCallStatus;
13use crate::items::EnteredReviewModeItem;
14use crate::items::ExitedReviewModeItem;
15use crate::items::FileChangeItem;
16use crate::items::ImageGenerationItem;
17use crate::items::McpToolCallItem;
18use crate::items::ReasoningItem;
19use crate::items::SubAgentActivityItem;
20use crate::items::TurnItem;
21use crate::items::UserMessageItem;
22use crate::items::WebSearchItem;
23use crate::protocol::AgentMessageContentDeltaEvent;
24use crate::protocol::AgentMessageEvent;
25use crate::protocol::AgentReasoningEvent;
26use crate::protocol::AgentReasoningRawContentEvent;
27use crate::protocol::AgentStatus;
28use crate::protocol::CollabAgentInteractionBeginEvent;
29use crate::protocol::CollabAgentInteractionEndEvent;
30use crate::protocol::CollabAgentSpawnBeginEvent;
31use crate::protocol::CollabAgentSpawnEndEvent;
32use crate::protocol::CollabAgentStatusEntry;
33use crate::protocol::CollabCloseBeginEvent;
34use crate::protocol::CollabCloseEndEvent;
35use crate::protocol::CollabResumeBeginEvent;
36use crate::protocol::CollabResumeEndEvent;
37use crate::protocol::CollabWaitingBeginEvent;
38use crate::protocol::CollabWaitingEndEvent;
39use crate::protocol::ContextCompactedEvent;
40use crate::protocol::DynamicToolCallResponseEvent;
41use crate::protocol::EnteredReviewModeEvent;
42use crate::protocol::EventMsg;
43use crate::protocol::ExecCommandBeginEvent;
44use crate::protocol::ExecCommandEndEvent;
45use crate::protocol::ExecCommandStatus;
46use crate::protocol::ExitedReviewModeEvent;
47use crate::protocol::ImageGenerationBeginEvent;
48use crate::protocol::ImageGenerationEndEvent;
49use crate::protocol::ItemCompletedEvent;
50use crate::protocol::ItemStartedEvent;
51use crate::protocol::McpInvocation;
52use crate::protocol::McpToolCallBeginEvent;
53use crate::protocol::McpToolCallEndEvent;
54use crate::protocol::PatchApplyBeginEvent;
55use crate::protocol::PatchApplyEndEvent;
56use crate::protocol::PatchApplyStatus;
57use crate::protocol::ReasoningContentDeltaEvent;
58use crate::protocol::ReasoningRawContentDeltaEvent;
59use crate::protocol::SubAgentActivityEvent;
60use crate::protocol::UserMessageEvent;
61use crate::protocol::ViewImageToolCallEvent;
62use crate::protocol::WebSearchBeginEvent;
63use crate::protocol::WebSearchEndEvent;
64
65pub trait HasLegacyEvent {
68 fn as_legacy_events(&self, show_raw_agent_reasoning: bool) -> Vec<EventMsg>;
69}
70
71impl ContextCompactionItem {
72 pub fn as_legacy_event(&self) -> EventMsg {
73 EventMsg::ContextCompacted(ContextCompactedEvent {})
74 }
75}
76
77impl UserMessageItem {
78 pub fn as_legacy_user_message_event(&self) -> UserMessageEvent {
79 UserMessageEvent {
82 client_id: self.client_id.clone(),
83 message: self.message(),
84 images: Some(self.image_urls()),
85 image_details: self.image_details(),
86 local_images: self.local_image_paths(),
87 local_image_details: self.local_image_details(),
88 audio: Some(self.audio_urls()),
89 local_audio: self.local_audio_paths(),
90 text_elements: self.text_elements(),
91 }
92 }
93
94 pub fn as_legacy_event(&self) -> EventMsg {
95 EventMsg::UserMessage(self.as_legacy_user_message_event())
96 }
97}
98
99impl AgentMessageItem {
100 pub fn as_legacy_events(&self) -> Vec<EventMsg> {
101 self.content
102 .iter()
103 .map(|c| match c {
104 AgentMessageContent::Text { text } => EventMsg::AgentMessage(AgentMessageEvent {
105 message: text.clone(),
106 phase: self.phase.clone(),
107 memory_citation: self.memory_citation.clone(),
108 }),
109 })
110 .collect()
111 }
112}
113
114impl EnteredReviewModeItem {
115 pub fn as_legacy_event(&self, turn_id: String) -> EventMsg {
116 EventMsg::EnteredReviewMode(EnteredReviewModeEvent {
117 target: self.target.clone(),
118 user_facing_hint: Some(self.user_facing_hint.clone()),
119 turn_id: Some(turn_id),
120 item_id: Some(self.id.clone()),
121 })
122 }
123}
124
125impl ExitedReviewModeItem {
126 pub fn as_legacy_event(&self, turn_id: String) -> EventMsg {
127 EventMsg::ExitedReviewMode(ExitedReviewModeEvent {
128 turn_id: Some(turn_id),
129 item_id: Some(self.id.clone()),
130 review_output: self.review_output.clone(),
131 })
132 }
133}
134
135impl ReasoningItem {
136 pub fn as_legacy_events(&self, show_raw_agent_reasoning: bool) -> Vec<EventMsg> {
137 let mut events = Vec::new();
138 for summary in &self.summary_text {
139 events.push(EventMsg::AgentReasoning(AgentReasoningEvent {
140 text: summary.clone(),
141 }));
142 }
143
144 if show_raw_agent_reasoning {
145 for entry in &self.raw_content {
146 events.push(EventMsg::AgentReasoningRawContent(
147 AgentReasoningRawContentEvent {
148 text: entry.clone(),
149 },
150 ));
151 }
152 }
153
154 events
155 }
156}
157
158impl CommandExecutionItem {
159 pub(crate) fn as_legacy_begin_event(&self, turn_id: String, started_at_ms: i64) -> EventMsg {
160 EventMsg::ExecCommandBegin(ExecCommandBeginEvent {
161 call_id: self.id.clone(),
162 process_id: self.process_id.clone(),
163 turn_id,
164 started_at_ms,
165 command: self.command.clone(),
166 cwd: self.cwd.clone(),
167 parsed_cmd: self.parsed_cmd.clone(),
168 source: self.source,
169 interaction_input: self.interaction_input.clone(),
170 })
171 }
172
173 pub(crate) fn as_legacy_end_event(
174 &self,
175 turn_id: String,
176 completed_at_ms: i64,
177 ) -> Option<EventMsg> {
178 let status = match self.status {
179 CommandExecutionStatus::InProgress => return None,
180 CommandExecutionStatus::Completed => ExecCommandStatus::Completed,
181 CommandExecutionStatus::Failed => ExecCommandStatus::Failed,
182 CommandExecutionStatus::Declined => ExecCommandStatus::Declined,
183 };
184 Some(EventMsg::ExecCommandEnd(ExecCommandEndEvent {
185 call_id: self.id.clone(),
186 process_id: self.process_id.clone(),
187 turn_id,
188 completed_at_ms,
189 command: self.command.clone(),
190 cwd: self.cwd.clone(),
191 parsed_cmd: self.parsed_cmd.clone(),
192 source: self.source,
193 interaction_input: self.interaction_input.clone(),
194 stdout: self.stdout.clone().unwrap_or_default(),
195 stderr: self.stderr.clone().unwrap_or_default(),
196 aggregated_output: self.aggregated_output.clone().unwrap_or_default(),
197 exit_code: self.exit_code.unwrap_or_default(),
198 duration: self.duration.unwrap_or_default(),
199 formatted_output: self.formatted_output.clone().unwrap_or_default(),
200 status,
201 }))
202 }
203}
204
205impl DynamicToolCallItem {
206 pub(crate) fn as_legacy_request_event(&self, turn_id: String, started_at_ms: i64) -> EventMsg {
207 EventMsg::DynamicToolCallRequest(DynamicToolCallRequest {
208 call_id: self.id.clone(),
209 turn_id,
210 started_at_ms,
211 namespace: self.namespace.clone(),
212 tool: self.tool.clone(),
213 arguments: self.arguments.clone(),
214 })
215 }
216
217 pub(crate) fn as_legacy_response_event(
218 &self,
219 turn_id: String,
220 completed_at_ms: i64,
221 ) -> Option<EventMsg> {
222 if matches!(self.status, DynamicToolCallStatus::InProgress) {
223 return None;
224 }
225 Some(EventMsg::DynamicToolCallResponse(
226 DynamicToolCallResponseEvent {
227 call_id: self.id.clone(),
228 turn_id,
229 completed_at_ms,
230 namespace: self.namespace.clone(),
231 tool: self.tool.clone(),
232 arguments: self.arguments.clone(),
233 content_items: self.content_items.clone().unwrap_or_default(),
234 success: self.success.unwrap_or(false),
235 error: self.error.clone(),
236 duration: self.duration.unwrap_or_default(),
237 },
238 ))
239 }
240}
241
242impl CollabAgentToolCallItem {
243 pub(crate) fn as_legacy_begin_event(&self, started_at_ms: i64) -> Option<EventMsg> {
244 let receiver_thread_id = self.receiver_thread_ids.first().copied();
245 match self.tool {
246 CollabAgentTool::SpawnAgent => Some(EventMsg::CollabAgentSpawnBegin(
247 CollabAgentSpawnBeginEvent {
248 call_id: self.id.clone(),
249 started_at_ms,
250 sender_thread_id: self.sender_thread_id,
251 prompt: self.prompt.clone().unwrap_or_default(),
252 model: self.model.clone().unwrap_or_default(),
253 reasoning_effort: self.reasoning_effort.clone().unwrap_or_default(),
254 },
255 )),
256 CollabAgentTool::SendInput => receiver_thread_id.map(|receiver_thread_id| {
257 EventMsg::CollabAgentInteractionBegin(CollabAgentInteractionBeginEvent {
258 call_id: self.id.clone(),
259 started_at_ms,
260 sender_thread_id: self.sender_thread_id,
261 receiver_thread_id,
262 prompt: self.prompt.clone().unwrap_or_default(),
263 })
264 }),
265 CollabAgentTool::ResumeAgent => receiver_thread_id.map(|receiver_thread_id| {
266 let (receiver_agent_nickname, receiver_agent_role) =
267 self.receiver_agent_identity(receiver_thread_id);
268 EventMsg::CollabResumeBegin(CollabResumeBeginEvent {
269 call_id: self.id.clone(),
270 started_at_ms,
271 sender_thread_id: self.sender_thread_id,
272 receiver_thread_id,
273 receiver_agent_nickname,
274 receiver_agent_role,
275 })
276 }),
277 CollabAgentTool::Wait => Some(EventMsg::CollabWaitingBegin(CollabWaitingBeginEvent {
278 started_at_ms,
279 sender_thread_id: self.sender_thread_id,
280 receiver_thread_ids: self.receiver_thread_ids.clone(),
281 receiver_agents: self.receiver_agents.clone(),
282 call_id: self.id.clone(),
283 })),
284 CollabAgentTool::CloseAgent => receiver_thread_id.map(|receiver_thread_id| {
285 EventMsg::CollabCloseBegin(CollabCloseBeginEvent {
286 call_id: self.id.clone(),
287 started_at_ms,
288 sender_thread_id: self.sender_thread_id,
289 receiver_thread_id,
290 })
291 }),
292 }
293 }
294
295 pub(crate) fn as_legacy_end_event(&self, completed_at_ms: i64) -> Option<EventMsg> {
296 if matches!(self.status, CollabAgentToolCallStatus::InProgress) {
297 return None;
298 }
299 let receiver_thread_id = self.receiver_thread_ids.first().copied();
300 match self.tool {
301 CollabAgentTool::SpawnAgent => {
302 let (new_agent_nickname, new_agent_role) = receiver_thread_id
303 .map(|thread_id| self.receiver_agent_identity(thread_id))
304 .unwrap_or_default();
305 Some(EventMsg::CollabAgentSpawnEnd(CollabAgentSpawnEndEvent {
306 call_id: self.id.clone(),
307 completed_at_ms,
308 sender_thread_id: self.sender_thread_id,
309 new_thread_id: receiver_thread_id,
310 new_agent_nickname,
311 new_agent_role,
312 prompt: self.prompt.clone().unwrap_or_default(),
313 model: self.model.clone().unwrap_or_default(),
314 reasoning_effort: self.reasoning_effort.clone().unwrap_or_default(),
315 status: receiver_thread_id
316 .map(|thread_id| self.agent_status(thread_id))
317 .unwrap_or(AgentStatus::NotFound),
318 }))
319 }
320 CollabAgentTool::SendInput => receiver_thread_id.map(|receiver_thread_id| {
321 let (receiver_agent_nickname, receiver_agent_role) =
322 self.receiver_agent_identity(receiver_thread_id);
323 EventMsg::CollabAgentInteractionEnd(CollabAgentInteractionEndEvent {
324 call_id: self.id.clone(),
325 completed_at_ms,
326 sender_thread_id: self.sender_thread_id,
327 receiver_thread_id,
328 receiver_agent_nickname,
329 receiver_agent_role,
330 prompt: self.prompt.clone().unwrap_or_default(),
331 status: self.agent_status(receiver_thread_id),
332 })
333 }),
334 CollabAgentTool::ResumeAgent => receiver_thread_id.map(|receiver_thread_id| {
335 let (receiver_agent_nickname, receiver_agent_role) =
336 self.receiver_agent_identity(receiver_thread_id);
337 EventMsg::CollabResumeEnd(CollabResumeEndEvent {
338 call_id: self.id.clone(),
339 completed_at_ms,
340 sender_thread_id: self.sender_thread_id,
341 receiver_thread_id,
342 receiver_agent_nickname,
343 receiver_agent_role,
344 status: self.agent_status(receiver_thread_id),
345 })
346 }),
347 CollabAgentTool::Wait => Some(EventMsg::CollabWaitingEnd(CollabWaitingEndEvent {
348 sender_thread_id: self.sender_thread_id,
349 call_id: self.id.clone(),
350 completed_at_ms,
351 agent_statuses: self
352 .receiver_agents
353 .iter()
354 .map(|agent| CollabAgentStatusEntry {
355 thread_id: agent.thread_id,
356 agent_nickname: agent.agent_nickname.clone(),
357 agent_role: agent.agent_role.clone(),
358 status: self.agent_status(agent.thread_id),
359 })
360 .collect(),
361 statuses: self.agents_states.clone(),
362 })),
363 CollabAgentTool::CloseAgent => receiver_thread_id.map(|receiver_thread_id| {
364 let (receiver_agent_nickname, receiver_agent_role) =
365 self.receiver_agent_identity(receiver_thread_id);
366 EventMsg::CollabCloseEnd(CollabCloseEndEvent {
367 call_id: self.id.clone(),
368 completed_at_ms,
369 sender_thread_id: self.sender_thread_id,
370 receiver_thread_id,
371 receiver_agent_nickname,
372 receiver_agent_role,
373 status: self.agent_status(receiver_thread_id),
374 })
375 }),
376 }
377 }
378
379 fn receiver_agent_identity(&self, thread_id: ThreadId) -> (Option<String>, Option<String>) {
380 let receiver_agent = self
381 .receiver_agents
382 .iter()
383 .find(|agent| agent.thread_id == thread_id);
384 (
385 receiver_agent.and_then(|agent| agent.agent_nickname.clone()),
386 receiver_agent.and_then(|agent| agent.agent_role.clone()),
387 )
388 }
389
390 fn agent_status(&self, thread_id: ThreadId) -> AgentStatus {
391 self.agents_states
392 .get(&thread_id)
393 .cloned()
394 .unwrap_or(AgentStatus::NotFound)
395 }
396}
397
398impl SubAgentActivityItem {
399 pub(crate) fn as_legacy_event(&self, occurred_at_ms: i64) -> EventMsg {
400 EventMsg::SubAgentActivity(SubAgentActivityEvent {
401 event_id: self.id.clone(),
402 occurred_at_ms,
403 agent_thread_id: self.agent_thread_id,
404 agent_path: self.agent_path.clone(),
405 kind: self.kind,
406 })
407 }
408}
409
410impl WebSearchItem {
411 pub fn as_legacy_event(&self) -> EventMsg {
412 EventMsg::WebSearchEnd(WebSearchEndEvent {
413 call_id: self.id.clone(),
414 query: self.query.clone(),
415 action: self.action.clone(),
416 results: self.results.clone(),
417 })
418 }
419}
420
421impl ImageGenerationItem {
422 pub fn as_legacy_event(&self) -> EventMsg {
423 EventMsg::ImageGenerationEnd(ImageGenerationEndEvent {
424 call_id: self.id.clone(),
425 status: self.status.clone(),
426 revised_prompt: self.revised_prompt.clone(),
427 result: self.result.clone(),
428 saved_path: self.saved_path.clone(),
429 })
430 }
431}
432
433impl FileChangeItem {
434 pub fn as_legacy_begin_event(&self, turn_id: String) -> EventMsg {
435 EventMsg::PatchApplyBegin(PatchApplyBeginEvent {
436 call_id: self.id.clone(),
437 turn_id,
438 auto_approved: self.auto_approved.unwrap_or(false),
439 changes: self.changes.clone(),
440 })
441 }
442
443 pub fn as_legacy_end_event(&self, turn_id: String) -> Option<EventMsg> {
444 let status = self.status.clone()?;
445 Some(EventMsg::PatchApplyEnd(PatchApplyEndEvent {
446 call_id: self.id.clone(),
447 turn_id,
448 stdout: self.stdout.clone().unwrap_or_default(),
449 stderr: self.stderr.clone().unwrap_or_default(),
450 success: status == PatchApplyStatus::Completed,
451 changes: self.changes.clone(),
452 status,
453 }))
454 }
455}
456
457impl McpToolCallItem {
458 pub fn as_legacy_begin_event(&self) -> EventMsg {
459 EventMsg::McpToolCallBegin(McpToolCallBeginEvent {
460 call_id: self.id.clone(),
461 invocation: McpInvocation {
462 server: self.server.clone(),
463 tool: self.tool.clone(),
464 arguments: (!self.arguments.is_null()).then(|| self.arguments.clone()),
465 },
466 connector_id: self.connector_id.clone(),
467 mcp_app_resource_uri: self.mcp_app_resource_uri.clone(),
468 link_id: self.link_id.clone(),
469 app_name: self.app_name.clone(),
470 action_name: self.action_name.clone(),
471 plugin_id: self.plugin_id.clone(),
472 })
473 }
474
475 pub fn as_legacy_end_event(&self) -> Option<EventMsg> {
476 let result = match (&self.result, &self.error) {
477 (Some(result), _) => Ok(result.clone()),
478 (None, Some(error)) => Err(error.message.clone()),
479 (None, None) => return None,
480 };
481
482 Some(EventMsg::McpToolCallEnd(McpToolCallEndEvent {
483 call_id: self.id.clone(),
484 invocation: McpInvocation {
485 server: self.server.clone(),
486 tool: self.tool.clone(),
487 arguments: (!self.arguments.is_null()).then(|| self.arguments.clone()),
488 },
489 mcp_app_resource_uri: self.mcp_app_resource_uri.clone(),
490 connector_id: self.connector_id.clone(),
491 link_id: self.link_id.clone(),
492 app_name: self.app_name.clone(),
493 action_name: self.action_name.clone(),
494 plugin_id: self.plugin_id.clone(),
495 duration: self.duration?,
496 result,
497 }))
498 }
499}
500
501impl TurnItem {
502 pub fn as_legacy_events(&self, show_raw_agent_reasoning: bool) -> Vec<EventMsg> {
503 match self {
504 TurnItem::UserMessage(item) => vec![item.as_legacy_event()],
505 TurnItem::HookPrompt(_) => Vec::new(),
506 TurnItem::AgentMessage(item) => item.as_legacy_events(),
507 TurnItem::Plan(_) => Vec::new(),
508 TurnItem::CommandExecution(_)
509 | TurnItem::DynamicToolCall(_)
510 | TurnItem::CollabAgentToolCall(_) => Vec::new(),
511 TurnItem::SubAgentActivity(_) => Vec::new(),
512 TurnItem::WebSearch(item) => vec![item.as_legacy_event()],
513 TurnItem::ImageView(item) => {
514 vec![EventMsg::ViewImageToolCall(ViewImageToolCallEvent {
515 call_id: item.id.clone(),
516 path: item.path.clone(),
517 })]
518 }
519 TurnItem::Extension(_) => Vec::new(),
520 TurnItem::ImageGeneration(item) => vec![item.as_legacy_event()],
521 TurnItem::EnteredReviewMode(_) | TurnItem::ExitedReviewMode(_) => Vec::new(),
522 TurnItem::FileChange(item) => item
523 .as_legacy_end_event(String::new())
524 .into_iter()
525 .collect(),
526 TurnItem::McpToolCall(item) => item.as_legacy_end_event().into_iter().collect(),
527 TurnItem::Reasoning(item) => item.as_legacy_events(show_raw_agent_reasoning),
528 TurnItem::ContextCompaction(item) => vec![item.as_legacy_event()],
529 }
530 }
531}
532
533impl HasLegacyEvent for ItemStartedEvent {
534 fn as_legacy_events(&self, _: bool) -> Vec<EventMsg> {
535 match &self.item {
536 TurnItem::WebSearch(item) => vec![EventMsg::WebSearchBegin(WebSearchBeginEvent {
537 call_id: item.id.clone(),
538 })],
539 TurnItem::ImageView(_) => Vec::new(),
540 TurnItem::ImageGeneration(item) => {
541 vec![EventMsg::ImageGenerationBegin(ImageGenerationBeginEvent {
542 call_id: item.id.clone(),
543 })]
544 }
545 TurnItem::FileChange(item) => vec![item.as_legacy_begin_event(self.turn_id.clone())],
546 TurnItem::McpToolCall(item) => vec![item.as_legacy_begin_event()],
547 TurnItem::CommandExecution(item) => {
548 vec![item.as_legacy_begin_event(self.turn_id.clone(), self.started_at_ms)]
549 }
550 TurnItem::DynamicToolCall(item) => {
551 vec![item.as_legacy_request_event(self.turn_id.clone(), self.started_at_ms)]
552 }
553 TurnItem::CollabAgentToolCall(item) => item
554 .as_legacy_begin_event(self.started_at_ms)
555 .into_iter()
556 .collect(),
557 _ => Vec::new(),
558 }
559 }
560}
561
562impl HasLegacyEvent for ItemCompletedEvent {
563 fn as_legacy_events(&self, show_raw_agent_reasoning: bool) -> Vec<EventMsg> {
564 match &self.item {
565 TurnItem::FileChange(item) => item
566 .as_legacy_end_event(self.turn_id.clone())
567 .into_iter()
568 .collect(),
569 TurnItem::CommandExecution(item) => item
570 .as_legacy_end_event(self.turn_id.clone(), self.completed_at_ms)
571 .into_iter()
572 .collect(),
573 TurnItem::DynamicToolCall(item) => item
574 .as_legacy_response_event(self.turn_id.clone(), self.completed_at_ms)
575 .into_iter()
576 .collect(),
577 TurnItem::CollabAgentToolCall(item) => item
578 .as_legacy_end_event(self.completed_at_ms)
579 .into_iter()
580 .collect(),
581 TurnItem::SubAgentActivity(item) => {
582 vec![item.as_legacy_event(self.completed_at_ms)]
583 }
584 TurnItem::EnteredReviewMode(item) => {
585 vec![item.as_legacy_event(self.turn_id.clone())]
586 }
587 TurnItem::ExitedReviewMode(item) => {
588 vec![item.as_legacy_event(self.turn_id.clone())]
589 }
590 _ => self.item.as_legacy_events(show_raw_agent_reasoning),
591 }
592 }
593}
594
595impl HasLegacyEvent for AgentMessageContentDeltaEvent {
596 fn as_legacy_events(&self, _: bool) -> Vec<EventMsg> {
597 Vec::new()
598 }
599}
600
601impl HasLegacyEvent for ReasoningContentDeltaEvent {
602 fn as_legacy_events(&self, _: bool) -> Vec<EventMsg> {
603 Vec::new()
604 }
605}
606
607impl HasLegacyEvent for ReasoningRawContentDeltaEvent {
608 fn as_legacy_events(&self, _: bool) -> Vec<EventMsg> {
609 Vec::new()
610 }
611}
612
613impl HasLegacyEvent for EventMsg {
614 fn as_legacy_events(&self, show_raw_agent_reasoning: bool) -> Vec<EventMsg> {
615 match self {
616 EventMsg::ItemStarted(event) => event.as_legacy_events(show_raw_agent_reasoning),
617 EventMsg::ItemCompleted(event) => event.as_legacy_events(show_raw_agent_reasoning),
618 EventMsg::AgentMessageContentDelta(event) => {
619 event.as_legacy_events(show_raw_agent_reasoning)
620 }
621 EventMsg::ReasoningContentDelta(event) => {
622 event.as_legacy_events(show_raw_agent_reasoning)
623 }
624 EventMsg::ReasoningRawContentDelta(event) => {
625 event.as_legacy_events(show_raw_agent_reasoning)
626 }
627 _ => Vec::new(),
628 }
629 }
630}