Skip to main content

NarrationRequest

Struct NarrationRequest 

Source
pub struct NarrationRequest {
    pub tone: ToneProfile,
    pub locale: Locale,
    pub user_text: Option<String>,
    pub questions: Vec<AnswerTask>,
    pub pending_questions: usize,
    pub allowed_facts: Vec<NarratableFact>,
    pub forbidden_claim_classes: Vec<ClaimClass>,
    pub surrounding_receipts: Vec<ReceiptSummary>,
    pub next_interaction_summary: Option<InteractionSummary>,
    pub guidance: Vec<CaseGuidance>,
    pub preceding_reply: Option<String>,
    pub case_labels: Vec<CaseLabel>,
}
Expand description

What the runtime asks a narrator model to produce (spec §18.3). The output is inserted around deterministic blocks, never trusted as the blocks themselves.

Fields§

§tone: ToneProfile

Voice.

§locale: Locale

Locale of the user.

§user_text: Option<String>

The user’s text, for acknowledgment.

§questions: Vec<AnswerTask>

Questions to answer.

Empty for the transition stage, and that is the point. A transition shown a question answers it — that is what a model does with a question in its context — so the user read the same explanation twice, once in the answer block and once in the acknowledgement above it, in two different wordings. Two increasingly explicit paragraphs of prompt did not hold, because a rule the model has to remember is not a rule.

The questions belong to the answer stage, which has them, writes one block each with its own basis and its own guard, and is the only stage that should be answering anything.

§pending_questions: usize

How many questions another block of this turn will answer.

What the transition stage gets instead of the questions themselves: it may need to know that an answer is coming — to leave room for it, or to not ask for something that is about to be explained — and the count says that without giving it anything to answer.

§allowed_facts: Vec<NarratableFact>

Facts that may be stated.

§forbidden_claim_classes: Vec<ClaimClass>

Claims that must not be made.

§surrounding_receipts: Vec<ReceiptSummary>

Receipts that will surround the narration.

§next_interaction_summary: Option<InteractionSummary>

The next card, if any.

§guidance: Vec<CaseGuidance>

What each workflow in view wants said, in the phase its case is in.

Server-authored, one per case, and empty for a deployment whose workflows say nothing. Before this the composer had no briefing at all, so everything a domain had to say about its own voice — ask one question at a time, do not restate a summary already on screen — reached the only stage with a voice not at all.

§preceding_reply: Option<String>

The reply that came just before this turn, when there was one.

§The one input a deictic question points at

The answer stage was built from the tasks, the facts, the forbidden classes and the receipts. The conversation was not in it, so a question whose subject is the previous assistant message reached a stage that could not see that message. Asked “in che senso?” about a sentence the assistant had just written, it had the three words, a pile of open obligations belonging to several records, and nothing about what had been asked — and told the user his own message was not specific enough.

One message rather than the window, and only the assistant’s. A question about the antecedent almost always means the last thing said; the current message is already here as Self::user_text; and handing this stage the whole transcript is the shape that produces prose about whatever is in front of it, which three earlier rounds were spent undoing.

Absent on the first turn of a conversation, and absent from the acknowledgement stage’s brief, which has no question to resolve.

§case_labels: Vec<CaseLabel>

What a person calls each case the brief mentions, as the directory labels it, so the stage that speaks to the user names a record as the user does. Server-authored, and only for cases the brief already carries: a label is what something is called, not a new subject to bring up.

Trait Implementations§

Source§

impl Clone for NarrationRequest

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for NarrationRequest

Source§

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

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

impl<'de> Deserialize<'de> for NarrationRequest

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 Eq for NarrationRequest

Source§

impl PartialEq for NarrationRequest

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for NarrationRequest

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 StructuralPartialEq for NarrationRequest

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.