From e203f72fc66b8c7315a25b5bc8024143d65c43e2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Dec 2025 10:07:44 +0000 Subject: [PATCH] fix: replace cloneDeep with shallow copy to prevent stack overflow with base64 images Co-authored-by: DeJeune <67425183+DeJeune@users.noreply.github.com> --- src/renderer/src/aiCore/provider/providerConfig.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/aiCore/provider/providerConfig.ts b/src/renderer/src/aiCore/provider/providerConfig.ts index 99e4fbd1c9..1e99bc9b9d 100644 --- a/src/renderer/src/aiCore/provider/providerConfig.ts +++ b/src/renderer/src/aiCore/provider/providerConfig.ts @@ -30,7 +30,7 @@ import { isSupportStreamOptionsProvider, isVertexProvider } from '@renderer/utils/provider' -import { cloneDeep, isEmpty } from 'lodash' +import { isEmpty } from 'lodash' import type { AiSdkConfig } from '../types' import { aihubmixProviderCreator, newApiResolverCreator, vertexAnthropicProviderCreator } from './config' @@ -122,9 +122,14 @@ export function getActualProvider(model: Model): Provider { * @param provider - The base provider configuration to transform. * @param model - The model associated with the provider; optional but required for special-provider handling. * @returns A new Provider instance with all transformations applied. + * + * @remarks + * Uses shallow copy to avoid maximum call stack errors when Provider contains large base64 image data. + * All transformations use shallow copy patterns, so deep cloning is not necessary. */ export function adaptProvider({ provider, model }: { provider: Provider; model?: Model }): Provider { - let adaptedProvider = cloneDeep(provider) + // Use shallow copy instead of cloneDeep to avoid stack overflow with large base64 images + let adaptedProvider = { ...provider } // Apply transformations in order if (model) {