Skip to content

Add GitOps Support for Pronunciation Dictionaries with Versioned Updates #37

@devtrillo

Description

@devtrillo

Request

Add first-class GitOps support for Vapi pronunciation dictionaries.

Context

Assistants can currently reference pronunciation dictionary IDs in voice config, but the dictionaries themselves are managed outside GitOps. We want dictionary resources to live in resources/<org>/pronunciationDictionaries/ so they can be pulled, reviewed, updated, and pushed like assistants and tools.

Requirements

  • Support both ElevenLabs and Cartesia pronunciation dictionaries.
  • Dictionary files should support multiple local versions.
  • Each dictionary should have an explicit activeVersion.
  • npm run push should create dictionaries when missing.
  • npm run push should PATCH the provider dictionary when the active version changes.
  • PATCH should only run when the active version payload changed.
  • Assistant configs should be allowed to reference local dictionary IDs.
  • During push, local assistant references must resolve to the provider/Vapi-compatible fields because the Vapi API contract cannot change.
  • State should track both the Vapi wrapper UUID used for PATCH/delete endpoints and the provider dictionary/version IDs used in assistant voice fields.
  • npm run pull should materialize remote dictionaries into local files.
  • Removing an assistant attachment must not delete the dictionary.
  • Dictionary deletion should be controlled by deleting the dictionary resource file or using the cleanup flow only.

Proposed Local Shape

provider: 11labs
name: Custom Pronunciations
activeVersion: v2
versions:
  v1:
    rules:
      - type: alias
        stringToReplace: ASPN
        alias: "'æspən"
  v2:
    rules:
      - type: alias
        stringToReplace: ASPN
        alias: "'æspən"
        caseSensitive: false
        wordBoundaries: true

Acceptance Criteria

  • A dictionary can be created from a local file.
  • Updating activeVersion content triggers a provider PATCH.
  • No-op pushes do not PATCH unchanged dictionaries.
  • Assistant dictionary references resolve correctly during push.
  • Pull creates or updates local dictionary files from provider state.
  • Build and tests pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions