Proposal for OVOS-TRANSFORM-1, the transformer plugin specification.
Problem
Six transformer plugin types run at fixed points around the utterance lifecycle but share no normative contract — chain ordering, per-session overrides, error handling, and the registration index are all implementation-defined.
Proposal
One abstraction for all six types:
- Six injection points: audio (pre-STT), utterance (post-STT), metadata (post-utterance), intent (post-match pre-dispatch), dialog (post-skill pre-TTS, runs in audio-output layer), TTS (post-synthesis pre-playback)
- Chain ordering: ascending priority (lower = earlier); deployer-configured explicit order wins
- Per-session overrides:
session.{audio,utterance,metadata,intent,dialog,tts}_transformers fields
- Passive registration index:
ovos.transformer.{type}.list / .list.response per type
- Error handling: exceptions and shape violations become no-ops; orchestrator logs and proceeds
- Dialog transformer note: runs in the audio-output layer just before TTS — in satellite topologies this means it runs on the satellite, not the hub
PR
PR #20
Proposal for OVOS-TRANSFORM-1, the transformer plugin specification.
Problem
Six transformer plugin types run at fixed points around the utterance lifecycle but share no normative contract — chain ordering, per-session overrides, error handling, and the registration index are all implementation-defined.
Proposal
One abstraction for all six types:
session.{audio,utterance,metadata,intent,dialog,tts}_transformersfieldsovos.transformer.{type}.list/.list.responseper typePR
PR #20