pub struct BlueprintMetadata {
pub description: Option<String>,
pub origin: BlueprintOrigin,
pub tags: Vec<String>,
pub version_label: Option<String>,
pub project_name_alias: Option<String>,
pub default_run_ttl_secs: Option<u64>,
pub strict_verdict_handling: Option<bool>,
pub lints: Option<BTreeMap<String, LintSetting>>,
}Expand description
Blueprint-level metadata (description / origin / tags / ttl / version label / alias).
Fields§
§description: Option<String>Short human-readable description of the Blueprint.
origin: BlueprintOriginProvenance record (inline / file / algocline).
Tag list for classification / routing.
version_label: Option<String>Optional SemVer label (= match target for TaskPipeline VersionSelector::SemVerReq).
Example: "1.2.3". Rewritten by EnhanceAdapter on PATCH/MINOR/MAJOR bumps.
project_name_alias: Option<String>Optional LDS session alias label. The Swarm engine itself does not apply this
(= it is free-form content); the value is expanded into the Spawn directive and
reaches the MainAI. The MainAI is expected to establish a task session via
mcp__lds__session_create(root=..., alias=<this>), and to inject
LDS Session Alias: <this> verbatim into the SubAgent dispatch prompt body.
The SubAgent body then calls mcp__lds__session_start(alias=<this>) with the
received alias. Worktree ownership is thereby unified under a single session, and
cross-SubAgent / cross-worktree ownership blocks (= not owned by this session)
cannot fire structurally.
default_run_ttl_secs: Option<u64>Optional default TTL (seconds) for tasks dispatched via this BP. Estimated by the
Blueprint author from the flow shape (agent count × expected duration per agent).
If POST /v1/tasks supplies ttl_secs explicitly, the body value wins; otherwise
this metadata field is used as the default; if both are absent, the server global
default (default_run_ttl() = 1800s) applies. Not needed for short chains (~5 min);
recommended for long chains (14 agents × several minutes = 30-60 min).
strict_verdict_handling: Option<bool>GH #50 follow-up (issue 33bc825b): promote VerdictValueUnhandled
compile-time lint to a hard error. When false (or absent), a
declared AgentDef.verdict.values entry that no downstream cond
references is only surfaced via tracing::warn! (informational);
when true, Compiler::compile rejects the Blueprint with
CompileError::VerdictValueUnhandled. Opt-in so existing Blueprints
that intentionally leave some verdict values as silent-pass
informational tokens keep compiling unchanged.
Legacy spelling. This is now sugar for
lints = {"verdict-value-unhandled": "deny"},
which is the preferred form (it addresses the same lint kind as
every other layer and reads next to the rest of the Blueprint’s
lint policy). Both spellings are honored and union toward deny:
either one saying deny rejects the compile, and true here wins
over a lints allow on either layer — this one or
AgentDef::lints. The field is kept indefinitely — existing
Blueprints are not asked to migrate. Blueprint-wide by nature: to
exempt one agent, drop the flag and declare the kind per agent.
lints: Option<BTreeMap<String, LintSetting>>Blueprint-wide lint level overrides — the outermost layer of the
LintSetting cascade (call-site > AgentDef::lints > this >
the kind’s registry default), consumed by bp_doctor. Keys are
kind literals ("agent-md-size"), "category:<cat>" groups, or
"all"; see LintSetting for the full grammar and the
precedence rules. None (the default) = no Blueprint-wide
overrides.
One entry also reaches the compile stage: a deny matching
"verdict-value-unhandled" rejects the Blueprint exactly like
strict_verdict_handling, and an
allow silences its tracing::warn!. This is the outer of the two
layers the compile stage reads — an agent that declares the kind in
its own AgentDef::lints decides for itself, and only agents
that declare nothing fall through to here. No other kind’s compile
behavior can be changed — compile-stage errors are hard errors, not
lints.
Trait Implementations§
Source§impl Clone for BlueprintMetadata
impl Clone for BlueprintMetadata
Source§fn clone(&self) -> BlueprintMetadata
fn clone(&self) -> BlueprintMetadata
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 BlueprintMetadata
impl Debug for BlueprintMetadata
Source§impl Default for BlueprintMetadata
impl Default for BlueprintMetadata
Source§fn default() -> BlueprintMetadata
fn default() -> BlueprintMetadata
Source§impl<'de> Deserialize<'de> for BlueprintMetadata
impl<'de> Deserialize<'de> for BlueprintMetadata
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<BlueprintMetadata, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<BlueprintMetadata, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for BlueprintMetadata
impl JsonSchema for BlueprintMetadata
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 BlueprintMetadata
impl PartialEq for BlueprintMetadata
Source§impl Serialize for BlueprintMetadata
impl Serialize for BlueprintMetadata
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 BlueprintMetadata
Auto Trait Implementations§
impl Freeze for BlueprintMetadata
impl RefUnwindSafe for BlueprintMetadata
impl Send for BlueprintMetadata
impl Sync for BlueprintMetadata
impl Unpin for BlueprintMetadata
impl UnsafeUnpin for BlueprintMetadata
impl UnwindSafe for BlueprintMetadata
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