Skip to content

feat(plugin-sdk): allow extensions to register custom TTS providers#521

Merged
alexey-pelykh merged 1 commit intomainfrom
feat/plugin-sdk-tts-providers
Mar 9, 2026
Merged

feat(plugin-sdk): allow extensions to register custom TTS providers#521
alexey-pelykh merged 1 commit intomainfrom
feat/plugin-sdk-tts-providers

Conversation

@alexey-pelykh
Copy link
Copy Markdown

Summary

  • Define TtsProviderImpl interface (with TtsSynthesisRequest/TtsSynthesisResult) and export from plugin-sdk
  • Wrap built-in TTS providers (OpenAI, ElevenLabs, Edge) as TtsProviderImpl implementations behind a registry (buildTtsProviderRegistry)
  • Add registerTtsProvider to plugin runtime API, manifest tts field, and CLI display
  • Widen TtsProvider type and TtsProviderSchema to accept plugin provider IDs
  • Add plugin provider dispatch path in textToSpeech() and textToSpeechTelephony() after built-in provider checks

Closes #498

Test plan

  • New tts-providers.test.ts — registers provider, rejects empty id, rejects duplicate, accessible via API
  • All 876 existing tests pass
  • TypeScript type-check clean (src/)
  • Lint clean (0 errors)
  • Format clean

🤖 Generated with Claude Code

…498)

Mirror the STT provider extension pattern for TTS: define a
TtsProviderImpl interface, wrap built-in providers (OpenAI, ElevenLabs,
Edge), build a provider registry, and wire plugin registration through
the manifest and runtime API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@alexey-pelykh alexey-pelykh enabled auto-merge (squash) March 9, 2026 09:26
@alexey-pelykh alexey-pelykh merged commit 42e37d6 into main Mar 9, 2026
7 checks passed
@alexey-pelykh alexey-pelykh deleted the feat/plugin-sdk-tts-providers branch March 9, 2026 09:34
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.

feat(plugin-sdk): allow extensions to register custom TTS providers

1 participant