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