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.
30 lines
811 B
TypeScript
30 lines
811 B
TypeScript
import type { IProvider, IProviderMcpRuntime } from '@/shared/interfaces.js';
|
|
import type {
|
|
FetchHistoryOptions,
|
|
FetchHistoryResult,
|
|
LLMProvider,
|
|
NormalizedMessage,
|
|
} from '@/shared/types.js';
|
|
|
|
/**
|
|
* Shared provider base.
|
|
*
|
|
* Concrete providers must implement message normalization and history loading
|
|
* because both behaviors depend on each provider's native SDK/CLI event format.
|
|
*/
|
|
export abstract class AbstractProvider implements IProvider {
|
|
readonly id: LLMProvider;
|
|
abstract readonly mcp: IProviderMcpRuntime;
|
|
|
|
protected constructor(id: LLMProvider) {
|
|
this.id = id;
|
|
}
|
|
|
|
abstract normalizeMessage(raw: unknown, sessionId: string | null): NormalizedMessage[];
|
|
|
|
abstract fetchHistory(
|
|
sessionId: string,
|
|
options?: FetchHistoryOptions,
|
|
): Promise<FetchHistoryResult>;
|
|
}
|