pub struct Agent { /* private fields */ }Expand description
The Agent orchestrator running the Think → Act → Observe loop.
Implementations§
Source§impl Agent
impl Agent
pub fn new( provider: Arc<dyn LlmProvider>, config: AgentConfig, callback: Arc<dyn AgentCallback>, ) -> Self
Sourcepub fn register_tool(&mut self, tool: RegisteredTool)
pub fn register_tool(&mut self, tool: RegisteredTool)
Register a tool with the agent.
Sourcepub fn tool_definitions(
&self,
classification: Option<&TaskClassification>,
) -> Vec<ToolDefinition>
pub fn tool_definitions( &self, classification: Option<&TaskClassification>, ) -> Vec<ToolDefinition>
Get tool definitions for the LLM, optionally filtered by task classification.
When a classification is provided (and is not General/Workflow), only
tools relevant to that task type are returned, reducing token overhead by
60-82% (~25K-35K tokens down to ~5K-12K).
Sourcepub async fn process_task(
&mut self,
task: &str,
) -> Result<TaskResult, RustantError>
pub async fn process_task( &mut self, task: &str, ) -> Result<TaskResult, RustantError>
Process a user task through the agent loop.
Sourcepub fn state(&self) -> &AgentState
pub fn state(&self) -> &AgentState
Get the current agent state.
Sourcepub fn cancellation_token(&self) -> CancellationToken
pub fn cancellation_token(&self) -> CancellationToken
Get a cancellation token for this agent.
Sourcepub fn reset_cancellation(&mut self)
pub fn reset_cancellation(&mut self)
Reset the cancellation token so the agent can process another task.
Must be called before process_task() if a previous task was cancelled.
Sourcepub fn safety(&self) -> &SafetyGuardian
pub fn safety(&self) -> &SafetyGuardian
Get the safety guardian reference (for audit log).
Sourcepub fn safety_mut(&mut self) -> &mut SafetyGuardian
pub fn safety_mut(&mut self) -> &mut SafetyGuardian
Get a mutable reference to the safety guardian (for contract setup).
Sourcepub fn memory(&self) -> &MemorySystem
pub fn memory(&self) -> &MemorySystem
Get the memory system reference.
Sourcepub fn memory_mut(&mut self) -> &mut MemorySystem
pub fn memory_mut(&mut self) -> &mut MemorySystem
Get a mutable reference to the memory system.
Sourcepub fn config(&self) -> &AgentConfig
pub fn config(&self) -> &AgentConfig
Get a reference to the agent configuration.
Sourcepub fn config_mut(&mut self) -> &mut AgentConfig
pub fn config_mut(&mut self) -> &mut AgentConfig
Get a mutable reference to the agent configuration.
Sourcepub fn cron_scheduler(&self) -> Option<&CronScheduler>
pub fn cron_scheduler(&self) -> Option<&CronScheduler>
Get a reference to the cron scheduler (if enabled).
Sourcepub fn cron_scheduler_mut(&mut self) -> Option<&mut CronScheduler>
pub fn cron_scheduler_mut(&mut self) -> Option<&mut CronScheduler>
Get a mutable reference to the cron scheduler (if enabled).
Sourcepub fn job_manager(&self) -> &JobManager
pub fn job_manager(&self) -> &JobManager
Get a reference to the job manager.
Sourcepub fn job_manager_mut(&mut self) -> &mut JobManager
pub fn job_manager_mut(&mut self) -> &mut JobManager
Get a mutable reference to the job manager.
Sourcepub fn check_scheduler(&mut self) -> Vec<String>
pub fn check_scheduler(&mut self) -> Vec<String>
Check scheduler for due tasks and return their task strings.
Sourcepub fn save_scheduler_state(
&self,
state_dir: &Path,
) -> Result<(), SchedulerError>
pub fn save_scheduler_state( &self, state_dir: &Path, ) -> Result<(), SchedulerError>
Save scheduler state (cron jobs + background jobs) to the given directory.
Sourcepub fn load_scheduler_state(&mut self, state_dir: &Path)
pub fn load_scheduler_state(&mut self, state_dir: &Path)
Load scheduler state from disk and replace current scheduler/job_manager.
Sourcepub fn recent_explanations(&self) -> &[DecisionExplanation]
pub fn recent_explanations(&self) -> &[DecisionExplanation]
Get recent decision explanations for transparency.
Sourcepub fn tool_token_breakdown(&self) -> &HashMap<String, usize>
pub fn tool_token_breakdown(&self) -> &HashMap<String, usize>
Get per-tool token usage breakdown (tool_name -> estimated tokens).
Sourcepub fn top_tool_consumers(&self, n: usize) -> String
pub fn top_tool_consumers(&self, n: usize) -> String
Format top token consumers as a summary string.
Sourcepub async fn think_with_council(
&self,
task: &str,
council: &PlanningCouncil,
) -> Option<CouncilResult>
pub async fn think_with_council( &self, task: &str, council: &PlanningCouncil, ) -> Option<CouncilResult>
Run a council deliberation if configured and the task is appropriate.
Returns Some(CouncilResult) if council was used, None if skipped.
Falls back gracefully if council fails.
Sourcepub fn set_plan_mode(&mut self, enabled: bool)
pub fn set_plan_mode(&mut self, enabled: bool)
Toggle plan mode on or off.
Sourcepub fn current_plan(&self) -> Option<&ExecutionPlan>
pub fn current_plan(&self) -> Option<&ExecutionPlan>
Access the current plan, if any.
Auto Trait Implementations§
impl Freeze for Agent
impl !RefUnwindSafe for Agent
impl Send for Agent
impl Sync for Agent
impl Unpin for Agent
impl UnsafeUnpin for Agent
impl !UnwindSafe for Agent
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);