import { providerRegistry } from '@/modules/providers/provider.registry.js'; import type { FetchHistoryOptions, FetchHistoryResult, LLMProvider, NormalizedMessage, } from '@/shared/types.js'; /** * Application service for provider-backed session message operations. * * Callers pass a provider id and this service resolves the concrete provider * class, keeping normalization/history call sites decoupled from implementation * file layout. */ export const sessionsService = { /** * Lists provider ids that can load session history and normalize live messages. */ listProviderIds(): LLMProvider[] { return providerRegistry.listProviders().map((provider) => provider.id); }, /** * Normalizes one provider-native event into frontend session message events. */ normalizeMessage( providerName: string, raw: unknown, sessionId: string | null, ): NormalizedMessage[] { return providerRegistry.resolveProvider(providerName).normalizeMessage(raw, sessionId); }, /** * Fetches normalized persisted session history for one provider/session pair. */ fetchHistory( providerName: string, sessionId: string, options?: FetchHistoryOptions, ): Promise { return providerRegistry.resolveProvider(providerName).fetchHistory(sessionId, options); }, };