Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 12 additions & 98 deletions open-sse/config/audioRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,7 @@ export interface AudioProvider {
models: AudioModel[];
}

let _AUDIO_TRANSCRIPTION_PROVIDERS: Record<string, AudioProvider> | null = null;

function getOrCreateTranscriptionProviders(): Record<string, AudioProvider> {
if (!_AUDIO_TRANSCRIPTION_PROVIDERS) {
_AUDIO_TRANSCRIPTION_PROVIDERS = {
export const AUDIO_TRANSCRIPTION_PROVIDERS: Record<string, AudioProvider> = {
Comment thread
soyelmismo marked this conversation as resolved.
openai: {
id: "openai",
baseUrl: "https://api.openai.com/v1/audio/transcriptions",
Expand Down Expand Up @@ -149,56 +145,9 @@ function getOrCreateTranscriptionProviders(): Record<string, AudioProvider> {
{ id: "elevenlabs/audio-isolation", name: "ElevenLabs Audio Isolation" },
],
},
};
}
return _AUDIO_TRANSCRIPTION_PROVIDERS;
}
};

export const AUDIO_TRANSCRIPTION_PROVIDERS: Record<string, AudioProvider> = new Proxy({} as Record<string, AudioProvider>, {
get(target, key: string) {
if (key in target) {
return target[key];
}
return getOrCreateTranscriptionProviders()[key];
},
set(target, key: string, value) {
target[key] = value;
getOrCreateTranscriptionProviders()[key] = value;
return true;
},
deleteProperty(target, key: string) {
delete target[key];
delete getOrCreateTranscriptionProviders()[key];
return true;
},
ownKeys(target) {
const targetKeys = Reflect.ownKeys(target);
const registryKeys = Reflect.ownKeys(getOrCreateTranscriptionProviders());
return Array.from(new Set([...targetKeys, ...registryKeys]));
},
has(target, key) {
return key in target || key in getOrCreateTranscriptionProviders();
},
getOwnPropertyDescriptor(target, key) {
if (key in target) {
return Reflect.getOwnPropertyDescriptor(target, key);
}
if (key in getOrCreateTranscriptionProviders()) {
return { configurable: true, enumerable: true, value: getOrCreateTranscriptionProviders()[key as string] };
}
return undefined;
},
});

export function getTranscriptionProviders(): Record<string, AudioProvider> {
return AUDIO_TRANSCRIPTION_PROVIDERS;
}

let _AUDIO_SPEECH_PROVIDERS: Record<string, AudioProvider> | null = null;

function getOrCreateSpeechProviders(): Record<string, AudioProvider> {
if (!_AUDIO_SPEECH_PROVIDERS) {
_AUDIO_SPEECH_PROVIDERS = {
export const AUDIO_SPEECH_PROVIDERS: Record<string, AudioProvider> = {
openai: {
id: "openai",
baseUrl: "https://api.openai.com/v1/audio/speech",
Expand Down Expand Up @@ -418,57 +367,22 @@ function getOrCreateSpeechProviders(): Record<string, AudioProvider> {
{ id: "mimo-v2.5-tts-voiceclone", name: "MiMo V2.5 Voice Clone" },
],
},
};
}
return _AUDIO_SPEECH_PROVIDERS;
}

export const AUDIO_SPEECH_PROVIDERS: Record<string, AudioProvider> = new Proxy({} as Record<string, AudioProvider>, {
get(target, key: string) {
if (key in target) {
return target[key];
}
return getOrCreateSpeechProviders()[key];
},
set(target, key: string, value) {
target[key] = value;
getOrCreateSpeechProviders()[key] = value;
return true;
},
deleteProperty(target, key: string) {
delete target[key];
delete getOrCreateSpeechProviders()[key];
return true;
},
ownKeys(target) {
const targetKeys = Reflect.ownKeys(target);
const registryKeys = Reflect.ownKeys(getOrCreateSpeechProviders());
return Array.from(new Set([...targetKeys, ...registryKeys]));
},
has(target, key) {
return key in target || key in getOrCreateSpeechProviders();
},
getOwnPropertyDescriptor(target, key) {
if (key in target) {
return Reflect.getOwnPropertyDescriptor(target, key);
}
if (key in getOrCreateSpeechProviders()) {
return { configurable: true, enumerable: true, value: getOrCreateSpeechProviders()[key as string] };
}
return undefined;
},
});

export function getSpeechProviders(): Record<string, AudioProvider> {
return AUDIO_SPEECH_PROVIDERS;
}
};

/**
* Get transcription provider config by ID
*/
export function getTranscriptionProvider(providerId: string): AudioProvider | null {
return AUDIO_TRANSCRIPTION_PROVIDERS[providerId] || null;
}

/**
* Get speech provider config by ID
*/
export function getSpeechProvider(providerId: string): AudioProvider | null {
return AUDIO_SPEECH_PROVIDERS[providerId] || null;
}

export interface ProviderNodeRow {
prefix: string;
name: string;
Expand Down
51 changes: 2 additions & 49 deletions open-sse/config/embeddingRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,7 @@ export function buildDynamicEmbeddingProvider(node: EmbeddingProviderNodeRow): E
};
}

let _EMBEDDING_PROVIDERS: Record<string, EmbeddingProvider> | null = null;

function getOrCreateEmbeddingProviders(): Record<string, EmbeddingProvider> {
if (!_EMBEDDING_PROVIDERS) {
_EMBEDDING_PROVIDERS = {
export const EMBEDDING_PROVIDERS: Record<string, EmbeddingProvider> = {
cohere: {
id: "cohere",
baseUrl: "https://api.cohere.com/v2/embed",
Expand Down Expand Up @@ -237,50 +233,7 @@ function getOrCreateEmbeddingProviders(): Record<string, EmbeddingProvider> {
{ id: "jina-colbert-v2", name: "Jina ColBERT v2", dimensions: 128 },
],
},
};
}
return _EMBEDDING_PROVIDERS;
}

export const EMBEDDING_PROVIDERS: Record<string, EmbeddingProvider> = new Proxy({} as Record<string, EmbeddingProvider>, {
get(target, key: string) {
if (key in target) {
return target[key];
}
return getOrCreateEmbeddingProviders()[key];
},
set(target, key: string, value) {
target[key] = value;
getOrCreateEmbeddingProviders()[key] = value;
return true;
},
deleteProperty(target, key: string) {
delete target[key];
delete getOrCreateEmbeddingProviders()[key];
return true;
},
ownKeys(target) {
const targetKeys = Reflect.ownKeys(target);
const registryKeys = Reflect.ownKeys(getOrCreateEmbeddingProviders());
return Array.from(new Set([...targetKeys, ...registryKeys]));
},
has(target, key) {
return key in target || key in getOrCreateEmbeddingProviders();
},
getOwnPropertyDescriptor(target, key) {
if (key in target) {
return Reflect.getOwnPropertyDescriptor(target, key);
}
if (key in getOrCreateEmbeddingProviders()) {
return { configurable: true, enumerable: true, value: getOrCreateEmbeddingProviders()[key as string] };
}
return undefined;
},
});

export function getEmbeddingProviders(): Record<string, EmbeddingProvider> {
return EMBEDDING_PROVIDERS;
}
};

const EMBEDDING_PROVIDER_ALIASES: Record<string, string> = {
jina: "jina-ai",
Expand Down
53 changes: 5 additions & 48 deletions open-sse/config/imageRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,7 @@ function findImageModelConfig(providerId, modelId) {
return provider.models.find((model) => model.id === modelId) || null;
}

let _IMAGE_PROVIDERS: Record<string, ImageProviderConfig> | null = null;

function getOrCreateImageProviders(): Record<string, ImageProviderConfig> {
if (!_IMAGE_PROVIDERS) {
_IMAGE_PROVIDERS = {
export const IMAGE_PROVIDERS: Record<string, ImageProviderConfig> = {
openai: {
id: "openai",
baseUrl: "https://api.openai.com/v1/images/generations",
Expand Down Expand Up @@ -544,53 +540,14 @@ function getOrCreateImageProviders(): Record<string, ImageProviderConfig> {
supportedSizes: ["1024x1024", "1024x1280", "1280x1024"],
},
};
}
return _IMAGE_PROVIDERS;
}

export function getImageProviders(): Record<string, ImageProviderConfig> {
return IMAGE_PROVIDERS;
}

export const IMAGE_PROVIDERS = new Proxy({} as Record<string, ImageProviderConfig>, {
get(target, key: string) {
if (key in target) {
return target[key];
}
return getOrCreateImageProviders()[key];
},
set(target, key: string, value) {
target[key] = value;
getOrCreateImageProviders()[key] = value;
return true;
},
deleteProperty(target, key: string) {
delete target[key];
delete getOrCreateImageProviders()[key];
return true;
},
ownKeys(target) {
const targetKeys = Reflect.ownKeys(target);
const registryKeys = Reflect.ownKeys(getOrCreateImageProviders());
return Array.from(new Set([...targetKeys, ...registryKeys]));
},
has(target, key) {
return key in target || key in getOrCreateImageProviders();
},
getOwnPropertyDescriptor(target, key) {
if (key in target) {
return Reflect.getOwnPropertyDescriptor(target, key);
}
if (key in getOrCreateImageProviders()) {
return { configurable: true, enumerable: true, value: getOrCreateImageProviders()[key as string] };
}
return undefined;
},
});

/**
* Get image provider config by ID
*/
export function getImageProvider(providerId) {
return IMAGE_PROVIDERS[providerId] || null;
}

/**
* Parse image model string (format: "provider/model")
* Returns { provider, model }
Expand Down
60 changes: 11 additions & 49 deletions open-sse/config/moderationRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@
* Follows OpenAI's moderation API format.
*/

let _MODERATION_PROVIDERS: Record<string, any> | null = null;

function getOrCreateModerationProviders(): Record<string, any> {
if (!_MODERATION_PROVIDERS) {
_MODERATION_PROVIDERS = {
export const MODERATION_PROVIDERS = {
openai: {
id: "openai",
baseUrl: "https://api.openai.com/v1/moderations",
Expand All @@ -20,55 +16,18 @@ function getOrCreateModerationProviders(): Record<string, any> {
{ id: "text-moderation-latest", name: "Text Moderation Latest" },
],
},
};
}
return _MODERATION_PROVIDERS;
}

export const MODERATION_PROVIDERS = new Proxy({} as Record<string, any>, {
get(target, key: string) {
if (key in target) {
return target[key];
}
return getOrCreateModerationProviders()[key];
},
set(target, key: string, value) {
target[key] = value;
getOrCreateModerationProviders()[key] = value;
return true;
},
deleteProperty(target, key: string) {
delete target[key];
delete getOrCreateModerationProviders()[key];
return true;
},
ownKeys(target) {
const targetKeys = Reflect.ownKeys(target);
const registryKeys = Reflect.ownKeys(getOrCreateModerationProviders());
return Array.from(new Set([...targetKeys, ...registryKeys]));
},
has(target, key) {
return key in target || key in getOrCreateModerationProviders();
},
getOwnPropertyDescriptor(target, key) {
if (key in target) {
return Reflect.getOwnPropertyDescriptor(target, key);
}
if (key in getOrCreateModerationProviders()) {
return { configurable: true, enumerable: true, value: getOrCreateModerationProviders()[key as string] };
}
return undefined;
},
});

export function getModerationProviders(): Record<string, any> {
return MODERATION_PROVIDERS;
}
};

/**
* Get moderation provider config by ID
*/
export function getModerationProvider(providerId) {
return MODERATION_PROVIDERS[providerId] || null;
}

/**
* Parse moderation model string
*/
export function parseModerationModel(modelStr) {
if (!modelStr) return { provider: null, model: null };

Expand All @@ -87,6 +46,9 @@ export function parseModerationModel(modelStr) {
return { provider: null, model: modelStr };
}

/**
* Get all moderation models as a flat list
*/
export function getAllModerationModels() {
const models = [];
for (const [providerId, config] of Object.entries(MODERATION_PROVIDERS)) {
Expand Down
Loading