Skip to main content

AppContext

Struct AppContext 

Source
pub struct AppContext<P: Platform> { /* private fields */ }
Expand description

Fully initialized application context.

Holds all dependencies needed to run the agent loop. Created via AppContext::new and consumed via AppContext::into_agent_loop.

The generic parameter P is the platform implementation (e.g. NativePlatform for native, a WASM platform for browser environments).

Implementations§

Source§

impl<P: Platform> AppContext<P>

Source

pub async fn new(config: Config, platform: Arc<P>) -> Result<Self>

Initialize all components from configuration and platform.

This is the primary constructor. It:

  1. Creates the MessageBus
  2. Initializes the SessionManager (discovers/creates sessions dir)
  3. Initializes the MemoryStore (discovers memory dir)
  4. Initializes the SkillsLoader (discovers skills dir)
  5. Creates the ContextBuilder
  6. Creates an empty ToolRegistry (caller registers tools after)
  7. Wires the default Level 0 pipeline (keyword classifier, static router, token budget assembler, stub transport, noop scorer, noop learner)
§Errors

Returns [ClawftError] if the home directory cannot be determined or the sessions directory cannot be created.

Source

pub fn into_agent_loop(self) -> AgentLoop<P>

Consume the context and produce a running AgentLoop.

All dependencies are moved into the agent loop. After this call, the AppContext is consumed and cannot be reused.

Source

pub fn config(&self) -> &Config

Get a reference to the root configuration.

Source

pub fn platform(&self) -> &Arc<P>

Get a reference to the platform.

Source

pub fn bus(&self) -> &Arc<MessageBus>

Get a reference to the message bus.

Channel adapters should clone the inbound sender from here before the context is consumed by [into_agent_loop].

Source

pub fn tools_mut(&mut self) -> &mut ToolRegistry

Get a mutable reference to the tool registry.

Call this to register tools before converting to an agent loop.

§Panics

Panics if Arc clones have already been taken (e.g. via tools_arc()). Always call tools_mut() for registration before sharing the registry.

Source

pub fn tools(&self) -> &Arc<ToolRegistry>

Get a reference to the tool registry.

Source

pub fn tools_arc(&self) -> Arc<ToolRegistry>

Get a clone of the Arc<ToolRegistry> for sharing with other components.

Source

pub fn sessions(&self) -> &Arc<SessionManager<P>>

Get a reference to the session manager.

Source

pub fn memory(&self) -> &Arc<MemoryStore<P>>

Get a reference to the shared memory store.

Source

pub fn skills(&self) -> &Arc<SkillsLoader<P>>

Get a reference to the shared skills loader.

Source

pub fn set_auto_delegation(&mut self, delegation: Arc<dyn AutoDelegation>)

Set an auto-delegation router for pre-LLM routing.

When set, inbound messages are checked against delegation rules before the local LLM is invoked. Matching messages are routed directly to delegate_task.

Source

pub fn set_pipeline(&mut self, pipeline: PipelineRegistry)

Replace the pipeline registry with a custom one.

Use this to inject a transport backed by a real LLM provider or to register specialized pipelines for specific task types.

Source

pub fn enable_live_llm(&mut self)

Replace the pipeline with a live LLM-backed pipeline.

Convenience method that calls build_live_pipeline and sets it as the active pipeline, enabling real LLM calls through the clawft-llm provider resolved from configuration.

Only available with the native feature.

Auto Trait Implementations§

§

impl<P> Freeze for AppContext<P>

§

impl<P> !RefUnwindSafe for AppContext<P>

§

impl<P> Send for AppContext<P>

§

impl<P> Sync for AppContext<P>

§

impl<P> Unpin for AppContext<P>

§

impl<P> UnsafeUnpin for AppContext<P>

§

impl<P> !UnwindSafe for AppContext<P>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more