pub(crate) async fn execute_reason<A: crate::host::RuntimeHostAdapter>(
adapter: &A,
org_id: i64,
input: crate::engine::ReasonInput,
assembled: crate::AssembledTurnContext,
atom: crate::engine::ReasonAtom,
) -> everruns_contracts::error::Result<crate::engine::ReasonResult> {
#[cfg(feature = "openai-agents-api")]
if let Some(result) = crate::host::openai_agents_api::backend::try_execute_reason(
adapter, org_id, &input, &assembled,
)
.await?
{
return Ok(result);
}
let atom = atom.with_background_call(crate::host::background_call::context(
adapter,
org_id,
input.context.session_id,
input.context.turn_id,
));
crate::host::native_async::execute_reason(adapter, org_id, input, assembled, atom).await
}