Bugfix/Allow OverrideConfig For Multiple Nodes In AgentflowV2 (#4734)

Bugfix/Enhance input configuration merging logic in replaceInputsWithConfig

Improve the handling of input configurations by merging existing values with overrides instead of complete replacement. This includes support for merging objects and parsing JSON strings when necessary.
This commit is contained in:
Henry Heng
2025-06-26 14:55:26 +01:00
committed by GitHub
parent 9efb70e04c
commit e7553a1c4e
+27 -1
View File
@@ -1149,7 +1149,33 @@ export const replaceInputsWithConfig = (
if (nodeIds.includes(flowNodeData.id)) {
// Check if this parameter is enabled
if (isParameterEnabled(flowNodeData.label, config)) {
inputsObj[config] = overrideConfig[config][flowNodeData.id]
const existingValue = inputsObj[config]
const overrideValue = overrideConfig[config][flowNodeData.id]
// Merge objects instead of completely overriding
if (
typeof existingValue === 'object' &&
typeof overrideValue === 'object' &&
!Array.isArray(existingValue) &&
!Array.isArray(overrideValue) &&
existingValue !== null &&
overrideValue !== null
) {
inputsObj[config] = Object.assign({}, existingValue, overrideValue)
} else if (typeof existingValue === 'string' && existingValue.startsWith('{') && existingValue.endsWith('}')) {
try {
const parsedExisting = JSON.parse(existingValue)
if (typeof overrideValue === 'object' && !Array.isArray(overrideValue)) {
inputsObj[config] = Object.assign({}, parsedExisting, overrideValue)
} else {
inputsObj[config] = overrideValue
}
} catch (e) {
inputsObj[config] = overrideValue
}
} else {
inputsObj[config] = overrideValue
}
}
continue
} else if (nodeIds.some((nodeId) => nodeId.includes(flowNodeData.name))) {