Add Self-hosted STT/TTS/Embedding providers that read baseUrl per connection instead of a fixed registry endpoint, so 9Router can point at whisper.cpp, faster-whisper, Kokoro-FastAPI, llama-server, vLLM, Infinity, and similar OpenAI-compatible local servers. Self-hosted Embedding refuses to run without a baseUrl rather than falling back to api.openai.com like openaiCompatNode does, since that fallback would silently send input text and the API key to OpenAI under a provider named "Self-hosted". Also fixes embeddingsCore to catch adapter build errors as a 400 instead of letting them escape uncaught, and bounds the upstream fetch with FETCH_CONNECT_TIMEOUT_MS to avoid hanging forever on a dead endpoint. Self-hosted TTS treats a bare model value as the model rather than the voice, since the generic OpenAI TTS convention (bare = voice) is backwards for a provider where the model is the variable part. |
||
|---|---|---|
| .. | ||
| _base.js | ||
| edgeTts.js | ||
| elevenlabs.js | ||
| gemini.js | ||
| genericFormats.js | ||
| googleTts.js | ||
| index.js | ||
| localDevice.js | ||
| minimax.js | ||
| openai.js | ||
| openrouter.js | ||
| selfhostedTts.js | ||
| xiaomi-mimo.js | ||