feat(extensions): add telegram-tts extension for voice responses

Add a new extension that provides automatic text-to-speech for chat
responses using ElevenLabs API.

Features:
- `speak` tool for converting text to voice messages
- RPC methods: tts.status, tts.enable, tts.disable, tts.convert
- User preferences file for persistent TTS state
- Configurable voice ID, model, and max text length

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Glucksberg
2026-01-23 00:38:43 +00:00
committed by Peter Steinberger
parent 202d7af855
commit 5428c97685
4 changed files with 434 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
{
"id": "telegram-tts",
"uiHints": {
"enabled": {
"label": "Enable TTS",
"help": "Automatically convert text responses to voice messages"
},
"provider": {
"label": "TTS Provider"
},
"elevenlabs.apiKey": {
"label": "ElevenLabs API Key",
"sensitive": true
},
"elevenlabs.voiceId": {
"label": "ElevenLabs Voice ID",
"help": "Default: pMsXgVXv3BLzUgSXRplE (Borislav)"
},
"elevenlabs.modelId": {
"label": "ElevenLabs Model ID",
"help": "Default: eleven_multilingual_v2"
},
"prefsPath": {
"label": "User Preferences File",
"help": "Path to JSON file storing TTS state",
"advanced": true
},
"maxTextLength": {
"label": "Max Text Length",
"help": "Maximum characters to convert to speech",
"advanced": true
}
},
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"provider": {
"type": "string",
"enum": ["elevenlabs", "openai"],
"default": "elevenlabs"
},
"elevenlabs": {
"type": "object",
"additionalProperties": false,
"properties": {
"apiKey": {
"type": "string"
},
"voiceId": {
"type": "string",
"default": "pMsXgVXv3BLzUgSXRplE"
},
"modelId": {
"type": "string",
"default": "eleven_multilingual_v2"
}
}
},
"prefsPath": {
"type": "string"
},
"maxTextLength": {
"type": "integer",
"minimum": 1,
"default": 4000
},
"channels": {
"type": "array",
"items": {
"type": "string"
},
"default": ["telegram"]
}
}
}
}