mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-04-18 19:41:31 +00:00
Move provider-specific normalizeMessage and fetchHistory logic out of the legacy server/providers adapters and into the refactored provider classes so callers can depend on the main provider contract instead of parallel adapter plumbing. Add a providers service to resolve concrete providers through the registry and delegate message normalization/history loading from realtime handlers and the unified messages route. Add shared TypeScript message/history types and normalized message helpers so provider implementations and callers use the same contract. Remove the old adapter registry/files now that Claude, Codex, Cursor, and Gemini implement the required behavior directly.
37 lines
1.2 KiB
TypeScript
37 lines
1.2 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 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(),
|
|
};
|
|
|
|
/**
|
|
* 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;
|
|
},
|
|
};
|