Skip to main content

ContextLoader

Struct ContextLoader 

Source
pub struct ContextLoader { /* private fields */ }
Expand description

Loads AGENTS.md files from the workspace and parent directories.

The loader walks up from the workspace root to the git root (or filesystem root), collecting AGENTS.md files along the way. It also loads a global AGENTS.md from ~/.talos/ if it exists.

§Example

use talos_agent::context::ContextLoader;
use std::path::PathBuf;

let loader = ContextLoader::new(PathBuf::from("/path/to/project"));
let context = loader.load().unwrap();

Implementations§

Source§

impl ContextLoader

Source

pub fn new(workspace_root: PathBuf) -> Self

Creates a new context loader for the given workspace root.

Context loading is enabled by default. Use ContextLoader::with_no_context to disable it.

Source

pub fn with_no_context(self) -> Self

Disables context loading.

When context loading is disabled, ContextLoader::load returns an empty string without reading any files.

Source

pub fn with_global_dir(self, global_dir: PathBuf) -> Self

Overrides the directory used to resolve the global AGENTS.md.

When set, the global file is read from <global_dir>/AGENTS.md instead of the default $HOME/.talos/AGENTS.md. Primarily intended for tests so they do not need to mutate the process-wide HOME environment variable.

Source

pub fn load(&self) -> ContextResult<String>

Loads and concatenates all AGENTS.md files.

Files are loaded in this order:

  1. Global: ~/.talos/AGENTS.md (if exists)
  2. Project: walk from workspace_root up to git root (or filesystem root), loading AGENTS.md from each directory

Each file is separated by --- AGENTS.md from {path} ---.

If the total context exceeds 20,000 characters, it is truncated with head (first 10,000) + tail (last 10,000) preservation.

§Errors

Returns ContextError::IoError if a file exists but cannot be read. Missing files are skipped gracefully.

Auto Trait Implementations§

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> 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<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