mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-05-17 01:22:45 +00:00
39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import { ClaudeProvider } from '@/modules/providers/list/claude/claude.provider.js';
|
|
import { CodexProvider } from '@/modules/providers/list/codex/codex.provider.js';
|
|
import { CursorProvider } from '@/modules/providers/list/cursor/cursor.provider.js';
|
|
import { GeminiProvider } from '@/modules/providers/list/gemini/gemini.provider.js';
|
|
import { OpenCodeProvider } from '@/modules/providers/list/opencode/opencode.provider.js';
|
|
import type { IProvider } from '@/shared/interfaces.js';
|
|
import type { LLMProvider } from '@/shared/types.js';
|
|
import { AppError } from '@/shared/utils.js';
|
|
|
|
const providers: Record<LLMProvider, IProvider> = {
|
|
claude: new ClaudeProvider(),
|
|
codex: new CodexProvider(),
|
|
cursor: new CursorProvider(),
|
|
gemini: new GeminiProvider(),
|
|
opencode: new OpenCodeProvider(),
|
|
};
|
|
|
|
/**
|
|
* Central registry for resolving concrete provider implementations by id.
|
|
*/
|
|
export const providerRegistry = {
|
|
listProviders(): IProvider[] {
|
|
return Object.values(providers);
|
|
},
|
|
|
|
resolveProvider(provider: string): IProvider {
|
|
const key = provider as LLMProvider;
|
|
const resolvedProvider = providers[key];
|
|
if (!resolvedProvider) {
|
|
throw new AppError(`Unsupported provider "${provider}".`, {
|
|
code: 'UNSUPPORTED_PROVIDER',
|
|
statusCode: 400,
|
|
});
|
|
}
|
|
|
|
return resolvedProvider;
|
|
},
|
|
};
|