pub struct DirectProviderActionExecutor { /* private fields */ }Expand description
Backward-compatible GraphActionExecutor that directly calls provider + tools.
This is the “no AgentLoop integration” path — used when StateGraphExecutor
is constructed via with_direct_provider(). It mimics the original behavior:
- LlmInfer: calls provider.infer() with a basic request (no hooks, no domain pack)
- ToolCall: calls tool.execute() directly (no permission, no hooks)
- SwitchParadigm: updates state.active_paradigm (no paradigm config)
- parse_decision: simple ContentBlock-based parsing
For full AgentLoop integration, use AgentLoopGraphActionExecutor from
oneai-agent.
Implementations§
Source§impl DirectProviderActionExecutor
impl DirectProviderActionExecutor
Sourcepub fn new(
provider: Arc<dyn LlmProvider>,
tools: Arc<RwLock<HashMap<String, Arc<dyn Tool>>>>,
) -> Self
pub fn new( provider: Arc<dyn LlmProvider>, tools: Arc<RwLock<HashMap<String, Arc<dyn Tool>>>>, ) -> Self
Create a new direct executor with provider and tools.
Sourcepub fn with_permission_resolver(
self,
resolver: Arc<dyn PermissionResolver>,
) -> Self
pub fn with_permission_resolver( self, resolver: Arc<dyn PermissionResolver>, ) -> Self
Attach a domain permission resolver so ToolCall nodes honour DomainPack
deny_by_default policy on this stateless path too.
Trait Implementations§
Source§impl GraphActionExecutor for DirectProviderActionExecutor
impl GraphActionExecutor for DirectProviderActionExecutor
Source§fn execute_llm_infer<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
action: &'life1 NodeAction,
state: &'life2 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<ActionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_llm_infer<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
action: &'life1 NodeAction,
state: &'life2 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<ActionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute an LLM inference node — using full AgentLoop infrastructure. Read more
Source§fn execute_tool_call<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
args: &'life2 Value,
state: &'life3 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<ActionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn execute_tool_call<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
tool_name: &'life1 str,
args: &'life2 Value,
state: &'life3 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<ActionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Execute a tool call node — using AgentLoop’s permission and hooks. Read more
Source§fn execute_paradigm_switch<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
paradigm: &'life1 str,
state: &'life2 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<ActionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_paradigm_switch<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
paradigm: &'life1 str,
state: &'life2 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<ActionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a paradigm switch node. Read more
Source§fn parse_decision<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
response: &'life1 InferenceResponse,
state: &'life2 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<GraphDecision>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn parse_decision<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
response: &'life1 InferenceResponse,
state: &'life2 mut GraphState,
) -> Pin<Box<dyn Future<Output = Result<GraphDecision>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Parse an LLM response into a GraphDecision. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for DirectProviderActionExecutor
impl !UnwindSafe for DirectProviderActionExecutor
impl Freeze for DirectProviderActionExecutor
impl Send for DirectProviderActionExecutor
impl Sync for DirectProviderActionExecutor
impl Unpin for DirectProviderActionExecutor
impl UnsafeUnpin for DirectProviderActionExecutor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more