Skip to main content

Spec

Struct Spec 

Source
pub struct Spec {
    pub name: Name,
    pub purpose: Purpose,
    pub allowed_tools: Vec<ToolName>,
    pub forbidden_actions: Vec<ForbiddenAction>,
    pub default_review_gates: Vec<ReviewGate>,
}
Expand description

Domain contract for one bounded automation agent.

A spec describes what an agent is meant to help with, which narrow tools may be exposed to it, which live operational actions are outside its authority, and which deterministic review gates must remain in the app workflow.

Fields§

§name: Name

Stable workflow-facing agent name.

This is an identifier such as manager-daily-brief or booking-triage, not a human display label. It connects prompt packets, outputs, and audit evidence back to the spec that constrained the agent run.

§purpose: Purpose

Business purpose for the agent’s draft or evidence work.

The purpose should state the resort operation being supported, such as summarizing labor risk, drafting customer-safe follow-up, or routing vaccine-document ambiguity; it does not grant live-action authority.

§allowed_tools: Vec<ToolName>

Tool names the runtime may expose to this agent.

These should be read-only, draft-only, or task-creation surfaces scoped to the workflow. They are the positive capability list for context building, not permission to bypass review gates or mutate source systems.

§forbidden_actions: Vec<ForbiddenAction>

Live or unsafe actions the agent must not perform directly.

Examples include confirming bookings, promising availability, changing labor schedules, waiving deposits, diagnosing pets, or sending customer messages without approval.

§default_review_gates: Vec<ReviewGate>

Human or deterministic app review gates required for the workflow.

These gates keep manager approval, customer-message approval, medical document review, and similar authority outside the model-generated output.

Implementations§

Source§

impl Spec

Source

pub fn builder() -> SpecBuilder

Create an instance of Spec using the builder syntax

Trait Implementations§

Source§

impl Clone for Spec

Source§

fn clone(&self) -> Spec

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Spec

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Spec

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Spec

Source§

fn eq(&self, other: &Spec) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Spec

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Spec

Source§

impl StructuralPartialEq for Spec

Auto Trait Implementations§

§

impl Freeze for Spec

§

impl RefUnwindSafe for Spec

§

impl Send for Spec

§

impl Sync for Spec

§

impl Unpin for Spec

§

impl UnsafeUnpin for Spec

§

impl UnwindSafe for Spec

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,