Skip to content

feat(inworld): add delivery mode option#1577

Merged
tinalenguyen merged 1 commit into
mainfrom
feat/inworld-delivery-mode
May 21, 2026
Merged

feat(inworld): add delivery mode option#1577
tinalenguyen merged 1 commit into
mainfrom
feat/inworld-delivery-mode

Conversation

@rosetta-livekit-bot
Copy link
Copy Markdown
Contributor

@rosetta-livekit-bot rosetta-livekit-bot Bot commented May 21, 2026

Summary

  • Adds delivery_mode to the Inworld TTS plugin, exposing the TTS-2-only
    deliveryMode output-variation control. Accepts "DELIVERY_MODE_UNSPECIFIED",
    "STABLE", "BALANCED", or "CREATIVE" per the Inworld REST API reference.
  • Wired through both transport paths: the WebSocket streaming create packet
    (SynthesizeStream via _InworldConnection._send_loop) and the HTTP
    streaming request body (ChunkedStream._run). Mirrors the existing
    text_normalization / timestamp_type plumbing.
  • Surfaced on TTS.__init__, TTS.update_options, and _TTSOptions, with
    the same _validate_str_param validation used by the sibling enum params.

Why

Inworld TTS-2 introduced deliveryMode and silently ignores temperature
on that model. Previously the plugin gave TTS-2 users no way to steer output
variation. Defaults are unchanged — delivery_mode is opt-in and absent from
the wire when unset, letting the server default (BALANCED) apply.

No client-side model-gating: Inworld silently ignores the wrong knob on each
model, and gating client-side would require tracking Inworld's per-model field
support over time. The docstring calls out the TTS-2-only semantics.

Test plan

  • uv run pytest tests/test_plugin_inworld_tts.py — 9 new unit tests pass
    (option round-trip + validation for all four documented values + rejection
    of unknown values + wire-payload assertions for both WS and HTTP paths,
    including the negative case that deliveryMode is omitted when unset)
  • make check — ruff lint, ruff format, mypy clean
  • Live-tested against the real Inworld API end-to-end: rendered the same
    line with delivery_mode="STABLE", "BALANCED", and "CREATIVE" against
    inworld-tts-2. All three were accepted (no fallback to EXPRESSIVE needed —
    the REST docs are authoritative, the Inworld Python SDK docstring is stale)
    and produced audibly different cadence/expressiveness.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 21, 2026

🦋 Changeset detected

Latest commit: 8925ccd

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 33 packages
Name Type
@livekit/agents-plugin-inworld Patch
@livekit/agents Patch
@livekit/agents-plugin-anam Patch
@livekit/agents-plugin-assemblyai Patch
@livekit/agents-plugin-baseten Patch
@livekit/agents-plugin-bey Patch
@livekit/agents-plugin-cartesia Patch
@livekit/agents-plugin-cerebras Patch
@livekit/agents-plugin-deepgram Patch
@livekit/agents-plugin-elevenlabs Patch
@livekit/agents-plugin-fishaudio Patch
@livekit/agents-plugin-google Patch
@livekit/agents-plugin-hedra Patch
@livekit/agents-plugin-hume Patch
@livekit/agents-plugin-lemonslice Patch
@livekit/agents-plugin-liveavatar Patch
@livekit/agents-plugin-livekit Patch
@livekit/agents-plugin-minimax Patch
@livekit/agents-plugin-mistral Patch
@livekit/agents-plugin-mistralai Patch
@livekit/agents-plugin-neuphonic Patch
@livekit/agents-plugin-openai Patch
@livekit/agents-plugin-perplexity Patch
@livekit/agents-plugin-phonic Patch
@livekit/agents-plugin-resemble Patch
@livekit/agents-plugin-rime Patch
@livekit/agents-plugin-runway Patch
@livekit/agents-plugin-sarvam Patch
@livekit/agents-plugin-silero Patch
@livekit/agents-plugin-tavus Patch
@livekit/agents-plugin-trugen Patch
@livekit/agents-plugin-xai Patch
@livekit/agents-plugins-test Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 1 additional finding.

Open in Devin Review

@tinalenguyen tinalenguyen merged commit aaaf80a into main May 21, 2026
9 checks passed
@tinalenguyen tinalenguyen deleted the feat/inworld-delivery-mode branch May 21, 2026 19:50
@github-actions github-actions Bot mentioned this pull request May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant