import type { XClientOptions, XRequest, XResponse } from "../core/types"; import { getProviderAdapter } from "../providers/registry"; import { resolveConfig } from "../runtime/config"; import { postJSON, throwForBadStatus } from "../runtime/http"; export const generate = async (options: XClientOptions, request: XRequest): Promise => { const resolved = resolveConfig(request, options); const adapter = getProviderAdapter(resolved.provider); const providerRequest = adapter.toProviderRequest(request, resolved, false); const response = await postJSON(resolved.fetchImpl, providerRequest, adapter); await throwForBadStatus(response, adapter); const payload = await response.json(); const normalized = adapter.fromProviderResponse(payload, resolved.provider); return { ...normalized, provider: resolved.provider, model: normalized.model || resolved.model }; };