import type { AuthProfileCredential } from "../agents/auth-profiles/types.js"; import type { OpenClawConfig } from "../config/config.js"; import type { ProviderAuthResult } from "../plugins/types.js"; export function buildOauthProviderAuthResult(params: { providerId: string; defaultModel: string; access: string; refresh?: string | null; expires?: number | null; email?: string | null; profilePrefix?: string; credentialExtra?: Record; configPatch?: Partial; notes?: string[]; }): ProviderAuthResult { const email = params.email ?? undefined; const profilePrefix = params.profilePrefix ?? params.providerId; const profileId = `${profilePrefix}:${email ?? "default"}`; const credential: AuthProfileCredential = { type: "oauth", provider: params.providerId, access: params.access, ...(params.refresh ? { refresh: params.refresh } : {}), ...(Number.isFinite(params.expires) ? { expires: params.expires as number } : {}), ...(email ? { email } : {}), ...params.credentialExtra, } as AuthProfileCredential; return { profiles: [{ profileId, credential }], configPatch: params.configPatch ?? ({ agents: { defaults: { models: { [params.defaultModel]: {}, }, }, }, } as Partial), defaultModel: params.defaultModel, notes: params.notes, }; }