pub struct ContextAssembler { /* private fields */ }Expand description
Context assembler — builds prompts respecting token budgets.
Implementations§
Source§impl ContextAssembler
impl ContextAssembler
Sourcepub fn new(budget: TokenBudget) -> Self
pub fn new(budget: TokenBudget) -> Self
Create a new context assembler.
Sourcepub fn with_defaults() -> Self
pub fn with_defaults() -> Self
Create with default budget.
Sourcepub fn budget(&self) -> TokenBudget
pub fn budget(&self) -> TokenBudget
The active token budget — lets the pipeline plan history compaction against the same per-section allocation the assembler enforces.
Sourcepub fn with_system_prompt(self, prompt: impl Into<String>) -> Self
pub fn with_system_prompt(self, prompt: impl Into<String>) -> Self
Set custom system prompt.
Sourcepub fn with_user_profile(self, profile: UserProfile) -> Self
pub fn with_user_profile(self, profile: UserProfile) -> Self
Set user profile.
Sourcepub fn assemble(
&self,
user_message: &str,
memories: &[Memory],
conversation_history: &[Message],
) -> Vec<Message>
pub fn assemble( &self, user_message: &str, memories: &[Memory], conversation_history: &[Message], ) -> Vec<Message>
Assemble context into messages.
Takes retrieved memories and conversation history, returns messages ready for the LLM.
Sourcepub fn assemble_with_addendum(
&self,
user_message: &str,
memories: &[Memory],
conversation_history: &[Message],
addendum: Option<&str>,
) -> Vec<Message>
pub fn assemble_with_addendum( &self, user_message: &str, memories: &[Memory], conversation_history: &[Message], addendum: Option<&str>, ) -> Vec<Message>
Like [assemble], but appends addendum to the system prompt if provided.
Used to switch prompt modes per-turn (e.g. onboarding) without mutating
the shared assembler.
Sourcepub fn assemble_full(
&self,
user_message: &str,
memories: &[Memory],
conversation_history: &[Message],
addendum: Option<&str>,
capabilities: Option<&str>,
attachments: &[Attachment],
skipped: &[SkippedAttachment],
) -> Vec<Message>
pub fn assemble_full( &self, user_message: &str, memories: &[Memory], conversation_history: &[Message], addendum: Option<&str>, capabilities: Option<&str>, attachments: &[Attachment], skipped: &[SkippedAttachment], ) -> Vec<Message>
Full assembly with path-attachment grounding. Attachments render
as <ATTACHED_CONTENT> blocks in a System message positioned
right before the user’s actual message — closest attention slot
to “what the user just put on the table.” Skipped paths render
as <SKIPPED_PATH> tags in the same block so Brain can mention
them naturally.
Per-attachment content is truncated to fit budget.attachments;
when total snapshot text exceeds the budget, later attachments
shrink first so the first (and usually primary) reference stays
intact.
capabilities is the “Your Capabilities” section of the SOUL
prompt. The chat path passes a live digest rendered from the
currently-wired tools and agents; every other path
passes None and falls back to DEFAULT_CAPABILITIES. Either
way the section is appended after the base prompt so the reasoner
always sees an explicit capability manifest.
Sourcepub fn estimate_tokens(messages: &[Message]) -> usize
pub fn estimate_tokens(messages: &[Message]) -> usize
Quick estimate of total tokens in messages.
Auto Trait Implementations§
impl Freeze for ContextAssembler
impl RefUnwindSafe for ContextAssembler
impl Send for ContextAssembler
impl Sync for ContextAssembler
impl Unpin for ContextAssembler
impl UnsafeUnpin for ContextAssembler
impl UnwindSafe for ContextAssembler
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> 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>
renamed to 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);