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 1. This file is the single source of truth for the document SHAPE: every consumer (the @wavekat/flow-schema npm package, the wavekat-flow Rust crate) generates its model types from this file. Semantic rules that a JSON Schema cannot express (graph reachability, exit-set exactness, hours/timezone math, DTMF digit validity, prompt length) 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.