Frame

Derive Macro Frame 

Source
#[derive(Frame)]
{
    // Attributes available to this derive:
    #[slot]
    #[frame]
    #[recognize]
}
Expand description

Derive macro that generates a frame::Frame impl from a struct’s #[slot(..)] fields. Shares the name Frame with the trait (macro vs type namespace), so both can be imported together. Derive a Frame impl from a struct’s #[slot(..)] fields.

Every named field becomes a slot (state key = field name unless overridden). The generated fn frame() -> FrameSpec carries each slot’s prompt, reprompt, confirmation policy, and PII flag — the metadata the conversation compiler and repair use.

#[derive(Frame)]
#[frame(name = "booking")]
struct Booking {
    #[slot(prompt = "For how many people?", confirm = "low_confidence")]
    party_size: u8,
    #[slot(prompt = "Name?", pii)]
    name: String,
}

Field #[slot(..)] options: prompt, reprompt, confirm (never/low_confidence/always), state (key override), pii (flag). Container #[frame(name = "...")] sets the frame name.