Skip to main content

Module model

Module model 

Source
Expand description

The generated document model (Flow, Node, Prompt, …), emitted from the schema by typify into OUT_DIR/flow_types.rs.

Node is an internally-tagged enum (#[serde(tag = "kind")]): the build.rs schema normalization inlines the per-node oneOf branches and rewrites the kind const to a single-valued enum so typify discriminates on kind instead of emitting an #[serde(untagged)] enum that would mis-deserialize (a menu as a greeting).

Modules§

defaults
Generation of default values for serde.
error
Error types.

Structs§

Exits
Wired exits: exit name → target node id. Which names are valid is a property of the node’s kind and is checked by the validator, not by this schema.
Flow
The WaveKat call-flow (“Receptionist”) document, schema_version 2. Version 2 is version 1 plus the book component (appointment booking over the phone); every version-1 document is a valid version-2 document once its schema_version is bumped, and nothing else changed. This file is the single source of truth for the document SHAPE, and — being the newest version — it is also the file both consumers generate their model types from, so one model covers every supported version. Semantic rules that a JSON Schema cannot express (graph reachability, exit-set exactness, hours/timezone math, DTMF digit validity, prompt length, per-component numeric bounds, and which components a given schema_version may use) are NOT encoded here — they live in each language’s validator and are pinned by the shared conformance corpus. Unknown fields are permitted structurally, matching both implementations (Rust serde ignores them; the TS parser surfaces a non-blocking warning).
HoursException
A single-date override of the weekly schedule (holiday / special hours).
TimeRange
One open window: open–close as “HH:MM” (24-hour). Ordering and overnight rules are enforced by the validator.
WeeklySchedule
Open ranges per weekday; a missing or empty day means closed all day.

Enums§

MessageTone
The cue a message node plays between its prompt and the start of recording.
Node
One node: a component (kind + its config) plus its wired exits. An internally-tagged union on kind.
Prompt
What a component speaks: TTS text (a bare string) or a reference to a pre-rendered audio asset shipped alongside the flow.