(
opts: &SessionOptions,
session_id: &str,
agent_event_tx: broadcast::Sender<AgentEvent>,
)
| 65 | } |
| 66 | |
| 67 | fn build_command_queue( |
| 68 | opts: &SessionOptions, |
| 69 | session_id: &str, |
| 70 | agent_event_tx: broadcast::Sender<AgentEvent>, |
| 71 | ) -> Option<Arc<SessionLaneQueue>> { |
| 72 | let queue_config = opts.queue_config.as_ref()?; |
| 73 | |
| 74 | let rt = tokio::runtime::Handle::try_current(); |
| 75 | match rt { |
| 76 | Ok(handle) => { |
| 77 | let queue = tokio::task::block_in_place(|| { |
| 78 | handle.block_on(SessionLaneQueue::new( |
| 79 | session_id, |
| 80 | queue_config.clone(), |
| 81 | agent_event_tx, |
| 82 | )) |
| 83 | }); |
| 84 | match queue { |
| 85 | Ok(queue) => { |
| 86 | let queue = Arc::new(queue); |
| 87 | let queue_to_start = Arc::clone(&queue); |
| 88 | tokio::task::block_in_place(|| { |
| 89 | handle.block_on(async { queue_to_start.start().await.ok() }) |
| 90 | }); |
| 91 | Some(queue) |
| 92 | } |
| 93 | Err(e) => { |
| 94 | tracing::warn!("Failed to create session lane queue: {}", e); |
| 95 | None |
| 96 | } |
| 97 | } |
| 98 | } |
| 99 | Err(_) => { |
| 100 | tracing::warn!("No async runtime available for queue creation - queue disabled"); |
| 101 | None |
| 102 | } |
| 103 | } |
| 104 | } |
| 105 | |
| 106 | fn build_tool_context( |
| 107 | code_config: &CodeConfig, |
no test coverage detected