pub struct ContextPolicy {
pub include: Option<Vec<String>>,
pub exclude: Vec<String>,
pub steps: Option<Vec<String>>,
pub steps_exclude: Vec<String>,
}Expand description
Filter over AgentContextView fields (GH #20/#21). Relocated to the
schema crate in GH #21 Phase 1 so a Blueprint author can declare one via
Blueprint.default_context_policy / AgentMeta.context_policy — this
re-export keeps mlua_swarm::core::agent_context::ContextPolicy
resolving unchanged for every existing caller (path-compat; see the
context_policy_path_compat_reexport test below). The filter
application logic lives on the view side, at
AgentContextView::apply_policy.
Receptacle for a Blueprint-driven filter over the materialized
AgentContextView (GH #20/#21). Declared BP-side via
Blueprint::default_context_policy (BP-global) or
AgentMeta::context_policy (per-agent, outranks the BP-global tier) —
resolved and applied by AgentContextMiddleware in the mlua-swarm
core crate (this crate stays execution-free; see the crate doc).
Default (include: None, exclude: vec![]) is pass-all — Self::allows
returns true for every field name.
Fields§
§include: Option<Vec<String>>Field names to keep. None means “keep everything” (pass-all).
Matched against the AgentContextView named-field strings
("project_root" / "work_dir" / "task_metadata" / "run_id" /
"project_name_alias") and extra keys by their own key string.
Identity fields (task_id / agent / attempt) are never
filtered regardless of include.
exclude: Vec<String>Field names to drop, applied AFTER include (exclude wins when a
name appears in both). Same name-matching rule as include.
steps: Option<Vec<String>>Which preceding steps’ OUTPUT pointers a worker’s fetch payload may
see (WorkerPayload.context.steps, ST5 of the projection-adapter
design). None = pass-all (every submitted step, the pre-ST5
ctx_step_dir behavior); Some(list) = only the named steps;
Some(vec![]) = none. Evaluated by Self::allows_step, a sibling
of Self::allows with the same include/exclude precedence rule
but a separate namespace (step names vs. AgentContextView field /
extra key names never collide).
steps_exclude: Vec<String>Step names to drop, applied AFTER steps (exclude wins when a name
appears in both). Same name-matching rule as steps.
Implementations§
Source§impl ContextPolicy
impl ContextPolicy
Sourcepub fn allows(&self, name: &str) -> bool
pub fn allows(&self, name: &str) -> bool
Whether name survives this policy: false if exclude lists it;
otherwise true when include is None (pass-all) or lists
name. Shared by both the schema crate (tests) and the mlua-swarm
core crate’s AgentContextView::apply_policy, so the include/exclude
evaluation rule has exactly one implementation.
Sourcepub fn allows_step(&self, name: &str) -> bool
pub fn allows_step(&self, name: &str) -> bool
Whether the preceding step named name survives this policy for the
worker fetch payload’s context.steps pointer list: false if
steps_exclude lists it; otherwise true when steps is None
(pass-all) or lists name. Same precedence rule as Self::allows,
evaluated against the separate steps / steps_exclude fields.
Trait Implementations§
Source§impl Clone for ContextPolicy
impl Clone for ContextPolicy
Source§fn clone(&self) -> ContextPolicy
fn clone(&self) -> ContextPolicy
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 ContextPolicy
impl Debug for ContextPolicy
Source§impl Default for ContextPolicy
impl Default for ContextPolicy
Source§fn default() -> ContextPolicy
fn default() -> ContextPolicy
Source§impl<'de> Deserialize<'de> for ContextPolicy
impl<'de> Deserialize<'de> for ContextPolicy
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ContextPolicy, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ContextPolicy, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for ContextPolicy
impl JsonSchema for ContextPolicy
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for ContextPolicy
impl PartialEq for ContextPolicy
Source§fn eq(&self, other: &ContextPolicy) -> bool
fn eq(&self, other: &ContextPolicy) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ContextPolicy
impl Serialize for ContextPolicy
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for ContextPolicy
Auto Trait Implementations§
impl Freeze for ContextPolicy
impl RefUnwindSafe for ContextPolicy
impl Send for ContextPolicy
impl Sync for ContextPolicy
impl Unpin for ContextPolicy
impl UnsafeUnpin for ContextPolicy
impl UnwindSafe for ContextPolicy
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<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