pub struct AgentCore { /* private fields */ }Expand description
Core agent execution engine
Implementations§
Source§impl AgentCore
impl AgentCore
Sourcepub fn new(
profile: AgentProfile,
provider: Arc<dyn ModelProvider>,
embeddings_client: Option<EmbeddingsClient>,
persistence: Persistence,
session_id: String,
agent_name: Option<String>,
tool_registry: Arc<ToolRegistry>,
policy_engine: Arc<PolicyEngine>,
speak_responses: bool,
) -> Self
pub fn new( profile: AgentProfile, provider: Arc<dyn ModelProvider>, embeddings_client: Option<EmbeddingsClient>, persistence: Persistence, session_id: String, agent_name: Option<String>, tool_registry: Arc<ToolRegistry>, policy_engine: Arc<PolicyEngine>, speak_responses: bool, ) -> Self
Create a new agent core
Sourcepub fn with_fast_provider(self, fast_provider: Arc<dyn ModelProvider>) -> Self
pub fn with_fast_provider(self, fast_provider: Arc<dyn ModelProvider>) -> Self
Set the fast model provider for hierarchical reasoning
Sourcepub fn with_session(self, session_id: String) -> Self
pub fn with_session(self, session_id: String) -> Self
Set a new session ID and clear conversation history
Sourcepub async fn run_step(&mut self, input: &str) -> Result<AgentOutput>
pub async fn run_step(&mut self, input: &str) -> Result<AgentOutput>
Execute a single interaction step
Sourcepub async fn run_spec(&mut self, spec: &AgentSpec) -> Result<AgentOutput>
pub async fn run_spec(&mut self, spec: &AgentSpec) -> Result<AgentOutput>
Execute a structured spec by converting it into a single prompt.
Sourcepub async fn run_step_streaming(
&mut self,
input: &str,
) -> Result<Pin<Box<dyn Stream<Item = Result<String>> + Send>>>
pub async fn run_step_streaming( &mut self, input: &str, ) -> Result<Pin<Box<dyn Stream<Item = Result<String>> + Send>>>
Execute a streaming interaction step.
Returns a stream of text chunks. After consuming the stream, call
finalize_streaming_step with the accumulated content to store the
assistant message and update conversation history.
Sourcepub async fn finalize_streaming_step(&mut self, content: &str) -> Result<i64>
pub async fn finalize_streaming_step(&mut self, content: &str) -> Result<i64>
Finalize a streaming step by storing the assistant message.
Call this after consuming the stream from run_step_streaming.
Sourcepub fn session_id(&self) -> &str
pub fn session_id(&self) -> &str
Get the current session ID
Sourcepub fn profile(&self) -> &AgentProfile
pub fn profile(&self) -> &AgentProfile
Get the agent profile
Sourcepub fn agent_name(&self) -> Option<&str>
pub fn agent_name(&self) -> Option<&str>
Get the logical agent name (if provided)
Sourcepub fn conversation_history(&self) -> &[Message]
pub fn conversation_history(&self) -> &[Message]
Get conversation history
Sourcepub fn load_history(&mut self, limit: i64) -> Result<()>
pub fn load_history(&mut self, limit: i64) -> Result<()>
Load conversation history from persistence
Sourcepub fn tool_registry(&self) -> &ToolRegistry
pub fn tool_registry(&self) -> &ToolRegistry
Get the tool registry
Sourcepub fn policy_engine(&self) -> &PolicyEngine
pub fn policy_engine(&self) -> &PolicyEngine
Get the policy engine
Sourcepub fn set_policy_engine(&mut self, policy_engine: Arc<PolicyEngine>)
pub fn set_policy_engine(&mut self, policy_engine: Arc<PolicyEngine>)
Set a new policy engine (useful for reloading policies)
Sourcepub fn set_speak_responses(&mut self, enabled: bool)
pub fn set_speak_responses(&mut self, enabled: bool)
Enable or disable speech-oriented prompting
Sourcepub async fn generate_embedding(&self, text: &str) -> Option<i64>
pub async fn generate_embedding(&self, text: &str) -> Option<i64>
Generate and store an embedding for arbitrary text (e.g., transcriptions) Returns the embedding_id if successful, None otherwise
Auto Trait Implementations§
impl Freeze for AgentCore
impl !RefUnwindSafe for AgentCore
impl Send for AgentCore
impl Sync for AgentCore
impl Unpin for AgentCore
impl !UnwindSafe for AgentCore
Blanket Implementations§
Source§impl<T> AlignerFor<1> for T
impl<T> AlignerFor<1> for T
Source§impl<T> AlignerFor<1024> for T
impl<T> AlignerFor<1024> for T
Source§type Aligner = AlignTo1024<T>
type Aligner = AlignTo1024<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<128> for T
impl<T> AlignerFor<128> for T
Source§type Aligner = AlignTo128<T>
type Aligner = AlignTo128<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<16> for T
impl<T> AlignerFor<16> for T
Source§impl<T> AlignerFor<16384> for T
impl<T> AlignerFor<16384> for T
Source§type Aligner = AlignTo16384<T>
type Aligner = AlignTo16384<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<2> for T
impl<T> AlignerFor<2> for T
Source§impl<T> AlignerFor<2048> for T
impl<T> AlignerFor<2048> for T
Source§type Aligner = AlignTo2048<T>
type Aligner = AlignTo2048<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<256> for T
impl<T> AlignerFor<256> for T
Source§type Aligner = AlignTo256<T>
type Aligner = AlignTo256<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<32> for T
impl<T> AlignerFor<32> for T
Source§impl<T> AlignerFor<32768> for T
impl<T> AlignerFor<32768> for T
Source§type Aligner = AlignTo32768<T>
type Aligner = AlignTo32768<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<4> for T
impl<T> AlignerFor<4> for T
Source§impl<T> AlignerFor<4096> for T
impl<T> AlignerFor<4096> for T
Source§type Aligner = AlignTo4096<T>
type Aligner = AlignTo4096<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<512> for T
impl<T> AlignerFor<512> for T
Source§type Aligner = AlignTo512<T>
type Aligner = AlignTo512<T>
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<64> for T
impl<T> AlignerFor<64> for T
Source§impl<T> AlignerFor<8> for T
impl<T> AlignerFor<8> for T
Source§impl<T> AlignerFor<8192> for T
impl<T> AlignerFor<8192> for T
Source§type Aligner = AlignTo8192<T>
type Aligner = AlignTo8192<T>
AlignTo* type which aligns Self to ALIGNMENT.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, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
offset. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
offset. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
offset. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
offset. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
piped except that the function takes &Self
Useful for functions that take &Self instead of Self. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
piped, except that the function takes &mut Self.
Useful for functions that take &mut Self instead of Self.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
AsRef,
using the turbofish .as_ref_::<_>() syntax. Read more