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§
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).
- Hours
Exception - A single-date override of the weekly schedule (holiday / special hours).
- Time
Range - One open window: open–close as “HH:MM” (24-hour). Ordering and overnight rules are enforced by the validator.
- Weekly
Schedule - Open ranges per weekday; a missing or empty day means closed all day.
Enums§
- Message
Tone - 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.