pub struct AgentContextView {
pub task_id: String,
pub agent: String,
pub attempt: u32,
pub project_root: Option<String>,
pub work_dir: Option<String>,
pub task_metadata: Option<Value>,
pub run_id: Option<String>,
pub project_name_alias: Option<String>,
pub extra: Map<String, Value>,
pub steps: Vec<StepPointer>,
}Expand description
Contract C’s view struct — the task-level context that must reach the LLM/Agent boundary, materialized once per spawn (see the module doc).
task_id / agent / attempt are Ctx-immediate identity fields,
always present. Every other named field is independently optional,
mirroring the “absent key = no value, not an empty placeholder”
contract the individual ctx.meta.runtime injectors already follow
(TaskInputMiddleware, ProjectNameAliasMiddleware, …). extra is
the injectable surface for future supply-axis fields (FlowIr ctx /
StepMeta) — empty in Self::from_ctx today, but a value dropped into
it reaches every consumer of this view (directive header text, the
Worker axis’s crate::types::WorkerPayload::context, and the
serialized JSON) with no further wiring.
deny_unknown_fields is deliberately NOT set: this view is meant to
grow additively (new named fields, new extra entries) without
breaking deserialization of a view a slightly older engine build
produced — forward tolerance for additive fields.
Fields§
§task_id: StringThe task this view was materialized for (Ctx.task_id, rendered
via its Display — the same string form StepId serializes as
elsewhere).
agent: StringThe agent this dispatch is targeting (Ctx.agent).
attempt: u321-based attempt counter for task_id (Ctx.attempt).
project_root: Option<String>Task-level project root path, from
ctx.meta.runtime[TASK_PROJECT_ROOT_KEY].
work_dir: Option<String>Task-level working directory, from
ctx.meta.runtime[TASK_WORK_DIR_KEY].
task_metadata: Option<Value>Task-level free-form metadata bag, from
ctx.meta.runtime[TASK_METADATA_KEY].
run_id: Option<String>Issue #13 run-id propagation value, from
ctx.meta.runtime[RUN_ID_KEY].
project_name_alias: Option<String>Blueprint.metadata.project_name_alias, from
ctx.meta.runtime[PROJECT_NAME_ALIAS_KEY].
extra: Map<String, Value>Injectable surface for future supply-axis fields not yet promoted
to a named field (e.g. FlowIr ctx / StepMeta). Empty in
Self::from_ctx today — a future ContextPolicy-aware
materializer may populate it without a breaking change to this
struct.
steps: Vec<StepPointer>Pointers to preceding steps’ OUTPUT, ContextPolicy.steps-filtered
(projection-adapter ST5 Worker axis). Empty in Self::from_ctx
/ on every snapshot stashed into EngineState.agent_ctx —
this field is populated only on the WorkerPayload clone
crates/mlua-swarm-server/src/worker.rs’s GET /v1/worker/prompt
handler returns (assembled at fetch time, so in-flight submissions
after spawn are still visible — see that module’s doc).
Implementations§
Source§impl AgentContextView
impl AgentContextView
Sourcepub fn from_ctx(ctx: &Ctx) -> Self
pub fn from_ctx(ctx: &Ctx) -> Self
Builds a view directly off ctx — the Ctx-immediate identity
fields plus whatever the canonical keys above currently hold in
ctx.meta.runtime. extra is always empty here (see the field
doc); a caller that wants to inject additional fields should build
on top of the result.
Sourcepub fn materialized_or_from_ctx(ctx: &Ctx) -> Self
pub fn materialized_or_from_ctx(ctx: &Ctx) -> Self
Reads the canonical, policy-applied view back out of
ctx.meta.runtime[AGENT_CONTEXT_KEY] (materialized by
AgentContextMiddleware); falls back to Self::from_ctx when
the key is absent or fails to deserialize (middleware not yet
layered onto this spawner stack — backward compat).
Sourcepub fn to_directive_header(&self) -> String
pub fn to_directive_header(&self) -> String
Renders ONLY the task-level context lines for the Spawn directive
header — project_name_alias: / project_root: / work_dir: in
that literal order (matching the pre-existing splice order in
crates/mlua-swarm-server/src/operator_ws/session.rs), then a new
task_metadata: {compact-json} line when Some, then one
{key}: {compact-json} line per extra entry. Absent fields
render as nothing (no empty-string placeholder) — same contract as
the individual ctx.meta.runtime injectors. Does NOT render
task_id / agent / attempt / run_id — those already appear
elsewhere in the directive template.
Sourcepub fn apply_policy(self, policy: &ContextPolicy) -> Self
pub fn apply_policy(self, policy: &ContextPolicy) -> Self
Applies policy to self, returning a filtered copy. Filtered
Option fields become None; filtered extra keys are removed.
Identity fields (task_id / agent / attempt) are never
filtered. A pass-all policy (the ContextPolicy default) returns
self unchanged. Moved here from the former
ContextPolicy::apply(&self, view) (GH #21 Phase 1 — the filter
data shape now lives in mlua_swarm_schema::ContextPolicy; the
application logic stays on the view it filters).
Trait Implementations§
Source§impl Clone for AgentContextView
impl Clone for AgentContextView
Source§fn clone(&self) -> AgentContextView
fn clone(&self) -> AgentContextView
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 AgentContextView
impl Debug for AgentContextView
Source§impl Default for AgentContextView
impl Default for AgentContextView
Source§fn default() -> AgentContextView
fn default() -> AgentContextView
Source§impl<'de> Deserialize<'de> for AgentContextView
impl<'de> Deserialize<'de> for AgentContextView
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>,
Source§impl JsonSchema for AgentContextView
impl JsonSchema for AgentContextView
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 AgentContextView
impl PartialEq for AgentContextView
Source§fn eq(&self, other: &AgentContextView) -> bool
fn eq(&self, other: &AgentContextView) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for AgentContextView
impl Serialize for AgentContextView
impl StructuralPartialEq for AgentContextView
Auto Trait Implementations§
impl Freeze for AgentContextView
impl RefUnwindSafe for AgentContextView
impl Send for AgentContextView
impl Sync for AgentContextView
impl Unpin for AgentContextView
impl UnsafeUnpin for AgentContextView
impl UnwindSafe for AgentContextView
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