pub struct ExtensionRunner { /* private fields */ }Expand description
Orchestrates extension lifecycle and event dispatch.
Implementations§
Source§impl ExtensionRunner
impl ExtensionRunner
Sourcepub fn new(cwd: PathBuf) -> Self
pub fn new(cwd: PathBuf) -> Self
Create a new extension runner for the given working directory.
Sourcepub fn on_error<F>(&mut self, listener: F) -> ExtensionErrorHandle
pub fn on_error<F>(&mut self, listener: F) -> ExtensionErrorHandle
Register an error listener and return a handle for unregistering.
Sourcepub fn emit_error_record(&self, record: ExtensionErrorRecord)
pub fn emit_error_record(&self, record: ExtensionErrorRecord)
Emit an error record to all listeners.
Sourcepub fn register(&mut self, ext: Arc<dyn Extension>, ctx: &ExtensionContext)
pub fn register(&mut self, ext: Arc<dyn Extension>, ctx: &ExtensionContext)
Register an extension into the runner.
Sourcepub fn unload_extension(&mut self, name: &str) -> bool
pub fn unload_extension(&mut self, name: &str) -> bool
Unregister an extension by name.
Sourcepub fn state(&self, name: &str) -> ExtensionState
pub fn state(&self, name: &str) -> ExtensionState
Get the state of an extension.
Sourcepub fn states(&self) -> &HashMap<String, ExtensionState>
pub fn states(&self) -> &HashMap<String, ExtensionState>
Get all extension states.
Sourcepub fn extension_order(&self) -> &[String]
pub fn extension_order(&self) -> &[String]
Get the extension execution order.
Sourcepub fn enable(
&mut self,
name: &str,
ctx: &ExtensionContext,
) -> Result<(), ExtensionError>
pub fn enable( &mut self, name: &str, ctx: &ExtensionContext, ) -> Result<(), ExtensionError>
Enable an extension.
Sourcepub fn is_enabled(&self, name: &str) -> bool
pub fn is_enabled(&self, name: &str) -> bool
Check if an extension is enabled.
Sourcepub fn has_handlers(&self, _event_type: &str) -> bool
pub fn has_handlers(&self, _event_type: &str) -> bool
Whether any handlers exist for an event type.
Sourcepub fn has_enabled_extensions(&self) -> bool
pub fn has_enabled_extensions(&self) -> bool
Whether any extensions are enabled.
Sourcepub fn all_commands(&self) -> Vec<Command>
pub fn all_commands(&self) -> Vec<Command>
Collect all commands from enabled extensions.
Sourcepub fn wrap_tool(&self, tool: Arc<dyn AgentTool>) -> Arc<dyn AgentTool> ⓘ
pub fn wrap_tool(&self, tool: Arc<dyn AgentTool>) -> Arc<dyn AgentTool> ⓘ
Wrap a tool with extension error handling.
Sourcepub fn wrap_tools(
&self,
tools: Vec<Arc<dyn AgentTool>>,
) -> Vec<Arc<dyn AgentTool>>
pub fn wrap_tools( &self, tools: Vec<Arc<dyn AgentTool>>, ) -> Vec<Arc<dyn AgentTool>>
Wrap multiple tools with extension error handling.
Sourcepub fn emit_tool_call(
&self,
tool_name: &str,
params: &Value,
) -> ToolCallEmitResult
pub fn emit_tool_call( &self, tool_name: &str, params: &Value, ) -> ToolCallEmitResult
Emit before_tool_call and on_tool_call events.
Sourcepub fn emit_tool_result_event(
&self,
tool_name: &str,
tool_result: &AgentToolResult,
) -> ToolResultEmitResult
pub fn emit_tool_result_event( &self, tool_name: &str, tool_result: &AgentToolResult, ) -> ToolResultEmitResult
Emit after_tool_call and on_tool_result events.
Sourcepub fn emit_input_event(&self, event: &mut InputEvent) -> InputEventResult
pub fn emit_input_event(&self, event: &mut InputEvent) -> InputEventResult
Emit input event through extensions.
Sourcepub fn emit_context_event(&self, messages: Vec<Message>) -> ContextEmitResult
pub fn emit_context_event(&self, messages: Vec<Message>) -> ContextEmitResult
Emit context event (message modification).
Sourcepub fn emit_before_provider_request_event(
&self,
payload: Value,
) -> ProviderRequestEmitResult
pub fn emit_before_provider_request_event( &self, payload: Value, ) -> ProviderRequestEmitResult
Emit before_provider_request event.
Sourcepub fn emit_session_before_switch_event(
&self,
event: &SessionBeforeSwitchEvent,
) -> SessionBeforeEmitResult
pub fn emit_session_before_switch_event( &self, event: &SessionBeforeSwitchEvent, ) -> SessionBeforeEmitResult
Emit session_before_switch event.
Sourcepub fn emit_session_before_fork_event(
&self,
event: &SessionBeforeForkEvent,
) -> SessionBeforeEmitResult
pub fn emit_session_before_fork_event( &self, event: &SessionBeforeForkEvent, ) -> SessionBeforeEmitResult
Emit session_before_fork event.
Sourcepub fn emit_session_before_compact_event(
&self,
event: &SessionBeforeCompactEvent,
) -> SessionBeforeEmitResult
pub fn emit_session_before_compact_event( &self, event: &SessionBeforeCompactEvent, ) -> SessionBeforeEmitResult
Emit session_before_compact event.
Sourcepub fn emit_session_before_tree_event(
&self,
event: &SessionBeforeTreeEvent,
) -> SessionBeforeEmitResult
pub fn emit_session_before_tree_event( &self, event: &SessionBeforeTreeEvent, ) -> SessionBeforeEmitResult
Emit session_before_tree event.
Sourcepub fn emit_session_shutdown_event(&self, event: &SessionShutdownEvent) -> bool
pub fn emit_session_shutdown_event(&self, event: &SessionShutdownEvent) -> bool
Emit session_shutdown event.
Sourcepub fn emit_event(&self, event: &AgentEvent)
pub fn emit_event(&self, event: &AgentEvent)
Emit a generic agent event.
Sourcepub fn registry(&self) -> &ExtensionRegistry
pub fn registry(&self) -> &ExtensionRegistry
Access the underlying registry.
Sourcepub fn registry_mut(&mut self) -> &mut ExtensionRegistry
pub fn registry_mut(&mut self) -> &mut ExtensionRegistry
Access the underlying registry mutably.
Sourcepub fn errors(&self) -> Vec<ExtensionErrorRecord>
pub fn errors(&self) -> Vec<ExtensionErrorRecord>
Get all recorded errors.
Sourcepub fn clear_errors(&self)
pub fn clear_errors(&self)
Clear recorded errors.
Trait Implementations§
Source§impl Debug for ExtensionRunner
impl Debug for ExtensionRunner
Auto Trait Implementations§
impl Freeze for ExtensionRunner
impl !RefUnwindSafe for ExtensionRunner
impl Send for ExtensionRunner
impl Sync for ExtensionRunner
impl Unpin for ExtensionRunner
impl UnsafeUnpin for ExtensionRunner
impl !UnwindSafe for ExtensionRunner
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
Source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
Source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self file descriptor.Source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
Source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
self file descriptor. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more