pub struct GatewayConfig {
pub enabled: bool,
pub top_n: usize,
pub cache_ttl_secs: u64,
pub call_timeout_secs: u64,
pub servers: Vec<GatewayServer>,
pub compress_output: bool,
pub handle_spill: bool,
pub index_output: bool,
pub output_budget_tokens: usize,
}Expand description
[gateway] configuration block.
Fields§
§enabled: boolMaster switch. false → fully no-op (default).
top_n: usizeHow many tools ctx_tools find returns per query.
cache_ttl_secs: u64Aggregated-catalog cache lifetime (seconds).
call_timeout_secs: u64Per-operation timeout for downstream connect/list/call (seconds).
servers: Vec<GatewayServer>Downstream MCP servers to aggregate.
compress_output: boolL1 (#1093): run downstream tool output through lean-ctx’s format-aware
compressor before it reaches the model. false → output passes through
unchanged (legacy). The transform is a deterministic function of
(content, budget) so it never defeats provider prompt-caching (#498).
handle_spill: boolL2 (#1094): when output exceeds output_budget_tokens, spill the verbatim
blob to the content-addressed archive and hand the model a ctx_expand
handle + summary instead of the full payload.
index_output: boolL3 (#1095): side-channel — consolidate downstream output into the BM25
index, property graph, and knowledge store (so ctx_search /
ctx_semantic_search find it later), without altering the returned text.
output_budget_tokens: usizeToken budget driving the L1 compression target and the L2 spill threshold. Inert while every post-processing flag is off.
Implementations§
Source§impl GatewayConfig
impl GatewayConfig
Sourcepub fn enabled_effective(&self) -> bool
pub fn enabled_effective(&self) -> bool
Effective enabled flag, honoring the LEAN_CTX_GATEWAY env override
(0|false|off disables, anything else enables).
Sourcepub fn active_servers(&self) -> impl Iterator<Item = &GatewayServer>
pub fn active_servers(&self) -> impl Iterator<Item = &GatewayServer>
Enabled servers in declaration order.
Sourcepub fn effective_top_n(&self) -> usize
pub fn effective_top_n(&self) -> usize
Clamp top_n into a sane range (1..=50).
Sourcepub fn postprocess_active(&self) -> bool
pub fn postprocess_active(&self) -> bool
Whether any output post-processing is active (L1 compress / L2 spill /
L3 index). When false, super::postprocess is a pure pass-through
and the proxy hot-path pays nothing.
Sourcepub fn effective_output_budget(&self) -> usize
pub fn effective_output_budget(&self) -> usize
Effective output token budget, clamped away from the degenerate 0
(which would make L1 target nothing and L2 spill everything). Floors at
256 tokens so a misconfigured 0 still yields sane behaviour.
Trait Implementations§
Source§impl Clone for GatewayConfig
impl Clone for GatewayConfig
Source§fn clone(&self) -> GatewayConfig
fn clone(&self) -> GatewayConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GatewayConfig
impl Debug for GatewayConfig
Source§impl Default for GatewayConfig
impl Default for GatewayConfig
Source§impl<'de> Deserialize<'de> for GatewayConfigwhere
GatewayConfig: Default,
impl<'de> Deserialize<'de> for GatewayConfigwhere
GatewayConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for GatewayConfig
Source§impl PartialEq for GatewayConfig
impl PartialEq for GatewayConfig
Source§fn eq(&self, other: &GatewayConfig) -> bool
fn eq(&self, other: &GatewayConfig) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for GatewayConfig
impl Serialize for GatewayConfig
impl StructuralPartialEq for GatewayConfig
Auto Trait Implementations§
impl Freeze for GatewayConfig
impl RefUnwindSafe for GatewayConfig
impl Send for GatewayConfig
impl Sync for GatewayConfig
impl Unpin for GatewayConfig
impl UnsafeUnpin for GatewayConfig
impl UnwindSafe for GatewayConfig
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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 more