pub struct AgentRegistry { /* private fields */ }Expand description
Registry for managing agent configurations and creating agent instances
Supports both TOML-based static config and TOON-based dynamic config. TOML configs take precedence over TOON configs when both exist.
Implementations§
Source§impl AgentRegistry
impl AgentRegistry
Sourcepub fn new(
provider_registry: Arc<ProviderRegistry>,
tools: Arc<Tools>,
) -> AgentRegistry
pub fn new( provider_registry: Arc<ProviderRegistry>, tools: Arc<Tools>, ) -> AgentRegistry
Create a new agent registry
Sourcepub fn from_config(
agents: HashMap<String, AgentConfig>,
provider_registry: Arc<ProviderRegistry>,
tools: Arc<Tools>,
) -> AgentRegistry
pub fn from_config( agents: HashMap<String, AgentConfig>, provider_registry: Arc<ProviderRegistry>, tools: Arc<Tools>, ) -> AgentRegistry
Create an agent registry from TOML agent configs
Sourcepub fn with_dynamic_config(
agents: HashMap<String, AgentConfig>,
provider_registry: Arc<ProviderRegistry>,
tools: Arc<Tools>,
dynamic_config: Arc<dyn ToonAgents>,
) -> AgentRegistry
pub fn with_dynamic_config( agents: HashMap<String, AgentConfig>, provider_registry: Arc<ProviderRegistry>, tools: Arc<Tools>, dynamic_config: Arc<dyn ToonAgents>, ) -> AgentRegistry
Create an agent registry with both TOML and TOON config support
Sourcepub fn set_dynamic_config(&mut self, dynamic_config: Arc<dyn ToonAgents>)
pub fn set_dynamic_config(&mut self, dynamic_config: Arc<dyn ToonAgents>)
Set the dynamic TOON agent lookup
Sourcepub fn register(&mut self, name: &str, config: AgentConfig)
pub fn register(&mut self, name: &str, config: AgentConfig)
Register an agent configuration
Sourcepub fn get_config(&self, name: &str) -> Option<&AgentConfig>
pub fn get_config(&self, name: &str) -> Option<&AgentConfig>
Get an agent configuration by name (TOML only)
Note: For lookups that include TOON, use get_config_any instead.
Sourcepub fn get_config_any(&self, name: &str) -> Option<AgentConfig>
pub fn get_config_any(&self, name: &str) -> Option<AgentConfig>
Get an agent configuration by name from TOML or TOON.
Sourcepub fn get_toon_config(&self, name: &str) -> Option<AgentConfig>
pub fn get_toon_config(&self, name: &str) -> Option<AgentConfig>
Get TOON agent config by name (already converted to AgentConfig)
Sourcepub fn agent_names(&self) -> Vec<String>
pub fn agent_names(&self) -> Vec<String>
Get all agent names (from both TOML and TOON)
Sourcepub fn has_agent(&self, name: &str) -> bool
pub fn has_agent(&self, name: &str) -> bool
Check if an agent exists (in either TOML or TOON config)
Sourcepub async fn create_agent(
&self,
name: &str,
) -> Result<ConfigurableAgent, AppError>
pub async fn create_agent( &self, name: &str, ) -> Result<ConfigurableAgent, AppError>
Create an agent instance by name
This creates a new ConfigurableAgent with the appropriate LLM client and tool registry based on the agent’s configuration.
Lookup order:
- TOML config (
ares.toml[agents.*]) - TOON config (
config/agents/*.toon)
Sourcepub async fn create_agent_from_config(
&self,
name: &str,
config: &AgentConfig,
) -> Result<ConfigurableAgent, AppError>
pub async fn create_agent_from_config( &self, name: &str, config: &AgentConfig, ) -> Result<ConfigurableAgent, AppError>
Create an agent instance from an explicit configuration
Sourcepub async fn create_agent_from_config_with_fallbacks(
&self,
name: &str,
config: &AgentConfig,
tenant_id: &str,
pool: &Pool<Postgres>,
fleet_secrets: &FleetSecrets,
) -> Result<ConfigurableAgent, AppError>
pub async fn create_agent_from_config_with_fallbacks( &self, name: &str, config: &AgentConfig, tenant_id: &str, pool: &Pool<Postgres>, fleet_secrets: &FleetSecrets, ) -> Result<ConfigurableAgent, AppError>
Create an agent instance from an explicit configuration with tier resolution and fallback providers wired in.
Sourcepub async fn create_agent_by_type(
&self,
agent_type: AgentType,
) -> Result<ConfigurableAgent, AppError>
pub async fn create_agent_by_type( &self, agent_type: AgentType, ) -> Result<ConfigurableAgent, AppError>
Create an agent instance for a specific AgentType
Sourcepub fn type_to_name(agent_type: &AgentType) -> &str
pub fn type_to_name(agent_type: &AgentType) -> &str
Convert AgentType to agent name
Sourcepub fn get_agent_model(&self, name: &str) -> Option<String>
pub fn get_agent_model(&self, name: &str) -> Option<String>
Get the model name for an agent (checks both TOML and TOON)
Sourcepub fn get_agent_tools(&self, name: &str) -> Vec<String>
pub fn get_agent_tools(&self, name: &str) -> Vec<String>
Get the tools for an agent (checks both TOML and TOON). Returns the explicit allowed_tools list, falling back to the legacy tools field. An empty result means no configured tools; runtime execution remains deny-by-default.
Sourcepub fn get_agent_system_prompt(&self, name: &str) -> Option<String>
pub fn get_agent_system_prompt(&self, name: &str) -> Option<String>
Get the system prompt for an agent (checks both TOML and TOON)
Trait Implementations§
Source§impl Service for AgentRegistry
impl Service for AgentRegistry
Auto Trait Implementations§
impl !RefUnwindSafe for AgentRegistry
impl !UnwindSafe for AgentRegistry
impl Freeze for AgentRegistry
impl Send for AgentRegistry
impl Sync for AgentRegistry
impl Unpin for AgentRegistry
impl UnsafeUnpin for AgentRegistry
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
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 moreimpl<T> MaybeSendSync for T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.