pub struct RecallScope {
pub namespaces: Option<Vec<String>>,
pub since: Option<String>,
pub tier: Option<String>,
pub limit: Option<u32>,
}Expand description
v0.7.0 (issue #518) — operator-configured recall defaults. Each
field is optional; when present and the inbound recall request
omits the corresponding axis AND passes session_default=true, the
handler splices in the configured value before dispatching to the
storage layer.
Resolution: explicit request args > recall_scope defaults > compiled defaults. The splice never overrides an explicit filter — operators can always narrow the result set further at call time.
Wire format:
[agents.defaults.recall_scope]
namespaces = ["projects/atlas"] # default namespace filter
since = "24h" # duration → since = now() - 24h
tier = "long" # "short" / "mid" / "long"
limit = 50 # default capFields§
§namespaces: Option<Vec<String>>Default namespace filter applied when the request omits its
own namespace field. The current recall handlers accept a
single namespace per call; when multiple namespaces are
configured we apply the first one. (The list form is future-
compatible with a planned multi-namespace recall surface.)
since: Option<String>Default time-window applied when the request omits since.
Expressed as a duration string: "24h", "7d", "30m", … See
parse_duration_string for the parser. The handler resolves
it to now() - duration at request time and passes the
resulting RFC3339 timestamp through the existing since
filter — no new SQL path.
tier: Option<String>Default tier filter applied when the request omits its own
tier. Accepted values: "short" / "mid" / "long". The
sqlite recall handlers do not currently expose a tier
parameter, so this knob is applied on the postgres SAL path
(which carries a Filter.tier) and stored on the request
envelope for forward-compatibility on sqlite (no observable
behaviour change there).
limit: Option<u32>Default recall limit applied when the request omits its own
limit. The handler still clamps to the per-tool maximum
(50) after applying this default, so an oversized value here
degrades gracefully.
Trait Implementations§
Source§impl Clone for RecallScope
impl Clone for RecallScope
Source§fn clone(&self) -> RecallScope
fn clone(&self) -> RecallScope
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 RecallScope
impl Debug for RecallScope
Source§impl Default for RecallScope
impl Default for RecallScope
Source§fn default() -> RecallScope
fn default() -> RecallScope
Source§impl<'de> Deserialize<'de> for RecallScope
impl<'de> Deserialize<'de> for RecallScope
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>,
Auto Trait Implementations§
impl Freeze for RecallScope
impl RefUnwindSafe for RecallScope
impl Send for RecallScope
impl Sync for RecallScope
impl Unpin for RecallScope
impl UnsafeUnpin for RecallScope
impl UnwindSafe for RecallScope
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
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