mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-04 14:22:09 +03:00
Add 6 TTS providers (Nvidia NIM, ElevenLabs, HuggingFace, Coqui, Tortoise, Qwen3), 3 STT providers (Nvidia NIM, HuggingFace, Qwen3), 2 local image providers (SD WebUI, ComfyUI), and two new modalities — Text-to-Video (/v1/videos/generations) and Text-to-Music (/v1/music/generations). Key design decisions: - Format-based unified providers: local providers grouped by API format (comfyui, sdwebui, coqui, tortoise, openai-compatible) with configurable base URLs and expandable model lists - Cloud providers kept separate (unique auth and API shapes) - Local providers use authType: "none" — credential checks bypassed at both route and handler level - Shared ComfyUI client (comfyuiClient.ts) reused across image/video/music - Shared registry utilities (registryUtils.ts) for model parsing and listing - Qwen3 TTS/ASR use format: "openai" — no custom handler needed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
167 lines
3.8 KiB
TypeScript
167 lines
3.8 KiB
TypeScript
// Patch global fetch with proxy support (must be first)
|
|
import "./utils/proxyFetch.ts";
|
|
|
|
// Config
|
|
export {
|
|
PROVIDERS,
|
|
OAUTH_ENDPOINTS,
|
|
CACHE_TTL,
|
|
DEFAULT_MAX_TOKENS,
|
|
CLAUDE_SYSTEM_PROMPT,
|
|
COOLDOWN_MS,
|
|
BACKOFF_CONFIG,
|
|
} from "./config/constants.ts";
|
|
export {
|
|
PROVIDER_MODELS,
|
|
getProviderModels,
|
|
getDefaultModel,
|
|
isValidModel,
|
|
findModelName,
|
|
getModelTargetFormat,
|
|
PROVIDER_ID_TO_ALIAS,
|
|
getModelsByProviderId,
|
|
} from "./config/providerModels.ts";
|
|
|
|
// Translator
|
|
export { FORMATS } from "./translator/formats.ts";
|
|
export {
|
|
register,
|
|
translateRequest,
|
|
translateResponse,
|
|
needsTranslation,
|
|
initState,
|
|
initTranslators,
|
|
} from "./translator/index.ts";
|
|
|
|
// Services
|
|
export {
|
|
detectFormat,
|
|
getProviderConfig,
|
|
buildProviderUrl,
|
|
buildProviderHeaders,
|
|
getTargetFormat,
|
|
} from "./services/provider.ts";
|
|
|
|
export { parseModel, resolveModelAliasFromMap, getModelInfoCore } from "./services/model.ts";
|
|
|
|
export {
|
|
checkFallbackError,
|
|
isAccountUnavailable,
|
|
getUnavailableUntil,
|
|
filterAvailableAccounts,
|
|
} from "./services/accountFallback.ts";
|
|
|
|
export {
|
|
TOKEN_EXPIRY_BUFFER_MS,
|
|
refreshAccessToken,
|
|
refreshClaudeOAuthToken,
|
|
refreshGoogleToken,
|
|
refreshQwenToken,
|
|
refreshCodexToken,
|
|
refreshIflowToken,
|
|
refreshGitHubToken,
|
|
refreshCopilotToken,
|
|
getAccessToken,
|
|
refreshTokenByProvider,
|
|
} from "./services/tokenRefresh.ts";
|
|
|
|
// Handlers
|
|
export { handleChatCore, isTokenExpiringSoon } from "./handlers/chatCore.ts";
|
|
export {
|
|
createStreamController,
|
|
pipeWithDisconnect,
|
|
createDisconnectAwareStream,
|
|
} from "./utils/streamHandler.ts";
|
|
|
|
// Executors
|
|
export { getExecutor, hasSpecializedExecutor } from "./executors/index.ts";
|
|
|
|
// Utils
|
|
export { errorResponse, formatProviderError } from "./utils/error.ts";
|
|
export {
|
|
createSSETransformStreamWithLogger,
|
|
createPassthroughStreamWithLogger,
|
|
} from "./utils/stream.ts";
|
|
|
|
// Embeddings
|
|
export { handleEmbedding } from "./handlers/embeddings.ts";
|
|
export {
|
|
EMBEDDING_PROVIDERS,
|
|
getEmbeddingProvider,
|
|
parseEmbeddingModel,
|
|
getAllEmbeddingModels,
|
|
} from "./config/embeddingRegistry.ts";
|
|
|
|
// Image Generation
|
|
export { handleImageGeneration } from "./handlers/imageGeneration.ts";
|
|
export {
|
|
IMAGE_PROVIDERS,
|
|
getImageProvider,
|
|
parseImageModel,
|
|
getAllImageModels,
|
|
} from "./config/imageRegistry.ts";
|
|
|
|
// Think Tag Parser
|
|
export {
|
|
hasThinkTags,
|
|
extractThinkTags,
|
|
processStreamingThinkDelta,
|
|
flushThinkBuffer,
|
|
} from "./utils/thinkTagParser.ts";
|
|
|
|
// Rerank
|
|
export { handleRerank } from "./handlers/rerank.ts";
|
|
export {
|
|
RERANK_PROVIDERS,
|
|
getRerankProvider,
|
|
parseRerankModel,
|
|
getAllRerankModels,
|
|
} from "./config/rerankRegistry.ts";
|
|
|
|
// Audio (Transcription + Speech)
|
|
export { handleAudioTranscription } from "./handlers/audioTranscription.ts";
|
|
export { handleAudioSpeech } from "./handlers/audioSpeech.ts";
|
|
export {
|
|
AUDIO_TRANSCRIPTION_PROVIDERS,
|
|
AUDIO_SPEECH_PROVIDERS,
|
|
getTranscriptionProvider,
|
|
getSpeechProvider,
|
|
parseTranscriptionModel,
|
|
parseSpeechModel,
|
|
getAllAudioModels,
|
|
} from "./config/audioRegistry.ts";
|
|
|
|
// Moderations
|
|
export { handleModeration } from "./handlers/moderations.ts";
|
|
export {
|
|
MODERATION_PROVIDERS,
|
|
getModerationProvider,
|
|
parseModerationModel,
|
|
getAllModerationModels,
|
|
} from "./config/moderationRegistry.ts";
|
|
|
|
// Video Generation
|
|
export { handleVideoGeneration } from "./handlers/videoGeneration.ts";
|
|
export {
|
|
VIDEO_PROVIDERS,
|
|
getVideoProvider,
|
|
parseVideoModel,
|
|
getAllVideoModels,
|
|
} from "./config/videoRegistry.ts";
|
|
|
|
// Music Generation
|
|
export { handleMusicGeneration } from "./handlers/musicGeneration.ts";
|
|
export {
|
|
MUSIC_PROVIDERS,
|
|
getMusicProvider,
|
|
parseMusicModel,
|
|
getAllMusicModels,
|
|
} from "./config/musicRegistry.ts";
|
|
|
|
// Registry Utilities
|
|
export {
|
|
parseModelFromRegistry,
|
|
getAllModelsFromRegistry,
|
|
buildAuthHeaders,
|
|
} from "./config/registryUtils.ts";
|