Function execute_turn
pub async fn execute_turn<F, Fut>(
agent: Arc<Mutex<Agent>>,
prompt: String,
cancel: CancellationToken,
attribution: TurnAttribution,
cost_context: Option<ToolLoopCostTrackingContext>,
connection_activity: Option<ConnectionActivity>,
steering_rx: Option<Receiver<SteeringInput>>,
admission: Option<TurnAdmission>,
on_event: F,
) -> Result<TurnOutcome, TurnError>