Skip to main content

RegionDefinition

Struct RegionDefinition 

Source
pub struct RegionDefinition {
Show 15 fields pub name: String, pub kind: RegionKind, pub max_tokens: usize, pub budget: BudgetSpec, pub compact_at: Option<f64>, pub schema: Option<RegionSchema>, pub description: Option<String>, pub describe_in_prompt: bool, pub required: bool, pub summarizable: bool, pub admission: Admission, pub volatility: Volatility, pub required_message: Option<String>, pub seed: Option<RegionSeed>, pub accepts: Vec<String>,
}
Expand description

Definition of a region in a layout.

This is the blueprint for creating a Region instance. It specifies the region’s configuration but doesn’t contain actual content.

Fields§

§name: String

Unique name for this region

§kind: RegionKind

Region lifecycle policy

§max_tokens: usize

Resolved maximum tokens for this region. This is the concrete ceiling every downstream consumer reads; for a percentage budget it is populated when the layout is resolved against a model window (see ContextLayout::resolved). Self::budget is the source of truth for how this value is derived.

§budget: BudgetSpec

How this region’s ceiling is expressed. Defaults (via Self::new) to BudgetSpec::Absolute holding max_tokens, so a region that names a token count directly gets an absolute ceiling. A percentage budget is resolved against the model context window at window-build time.

§compact_at: Option<f64>

For RegionKind::Compacting regions only: compact when the region reaches this fraction of its resolved budget (0.80 for compact_at = "80%"). None keeps the absolute threshold_tokens carried on the kind. See ContextLayout::resolved for how this becomes a concrete threshold.

§schema: Option<RegionSchema>

Optional validation schema

§description: Option<String>

Human-readable description of this region’s purpose

§describe_in_prompt: bool

Whether description is also shown to the model, under the region’s name. Off by default - see crate::region::Region::describe_in_prompt.

§required: bool

When true, this region must be non-empty before a stage that can write to it is allowed to complete. Guards against an agent skipping a context-population step (e.g. never writing the plan region). Enforced in the run loop, which re-runs the stage with Self::required_message until the region is populated.

§summarizable: bool

Whether an edge transform may hand this region to the summarizer.

transform = "compact" reads as “summarize the transcript on the way out” and means “summarize every region that is not pinned”, which includes the ones holding the run’s results. Figures that survive a paraphrase are no longer figures: without this, a results region carrying computed values is rewritten into prose before the stage that reports them ever sees it.

Setting this false protects the region wherever it is used, rather than at each of the N edges that might touch it. clear still applies - this says “do not paraphrase my content”, not “keep it forever”.

§admission: Admission

What this region does when a write does not fit.

Declared per region rather than per stage: whether losing the oldest entry is acceptable is a property of what the region holds, and does not change depending on which stage is writing to it.

§volatility: Volatility

How much this region’s contents move between requests. See crate::region::Volatility.

Defaulted on the wire so a definition written before this existed still loads, and loads as the pessimistic value - which is what an unclassified region should be.

§required_message: Option<String>

Optional custom message shown to the agent when this region is required but empty. Falls back to a generated default when None.

§seed: Option<RegionSeed>

Where this region’s initial content comes from at run start. None means the region starts empty (the agent populates it). See RegionSeed.

§accepts: Vec<String>

Mime type patterns this region takes; empty means anything. See crate::region::Region::accepts.

Implementations§

Source§

impl RegionDefinition

Source

pub fn new(name: String, kind: RegionKind, max_tokens: usize) -> Self

Create a new region definition with an absolute token ceiling.

The budget is set to BudgetSpec::Absolute holding max_tokens and compact_at to None, so every existing caller (and every region without a percentage budget) is unaffected - resolving such a layout is a no-op.

Source

pub fn with_budget(self, budget: BudgetSpec) -> Self

Set this region’s budget spec (e.g. a percentage of the model window). max_tokens is left as the provisional/resolved value; it is (re)computed from the budget when the owning layout is resolved.

Source

pub fn with_compact_at(self, fraction: f64) -> Self

Set the compaction trigger fraction for a RegionKind::Compacting region (0.80 == compact at 80% of the resolved budget).

Source

pub fn with_seed(self, seed: RegionSeed) -> Self

Set this region’s seed source.

Source

pub fn with_required(self, required: bool, message: Option<String>) -> Self

Mark this region as required, with an optional custom nudge message.

Source

pub fn with_schema(self, schema: RegionSchema) -> Self

Add a schema to this region definition.

Source

pub fn with_description(self, description: String) -> Self

Add a description to this region definition.

Trait Implementations§

Source§

impl Clone for RegionDefinition

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RegionDefinition

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RegionDefinition

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for RegionDefinition

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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