Skip to content

Spec proposal: OVOS-TRANSFORM-1 — Transformer Plugins (six lifecycle hooks) #19

@JarbasAl

Description

@JarbasAl

Tracking issue for PR #20 — OVOS-TRANSFORM-1: Transformer Plugins

The OVOS transformer ecosystem runs six plugin types as ordered chains at fixed points around the utterance lifecycle: audio (pre-STT), utterance (post-STT), metadata (post-utterance), intent (post-match, pre-dispatch), dialog (post-skill, pre-TTS), and TTS (post-TTS, pre-playback). All six share the same shape but have no normative contract.

Proposal

OVOS-TRANSFORM-1 unifies the six types under one spec:

  • One abstraction — a transformer is a black-box component identified by an opaque transformer_id that always runs at its hook (unlike a pipeline plugin, which decides whether to claim).
  • Six lifecycle hooks at the fixed points above.
  • Per-type IO contracts — permitted mutations, canonical use cases, and a Where LLMs fit note per stage.
  • Intent transformer = canonical home for system-entity injection (dates, numbers, durations, ordinals) into match captures. The agreed pathway for applying typed normalisation globally.
  • Ascending priority (lower number = earlier; default 50). Deployer-configured explicit order wins over priority.
  • Per-session chain overrides via six optional session.*_transformers list fields.
  • Passive registration index per type — ovos.transformer.<type>.list / .response.
  • Robust error handling — exceptions and shape violations become no-op transforms; the orchestrator logs and proceeds.

Out of scope

  • Typed-value schemas for injected entities (future text-normalisation spec).
  • Per-plugin behavioural contracts.
  • Cross-transformer coordination protocols.
  • Hot reload, timeout policy, plugin loading and discovery.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions