Bugfix/Override State WhenStartPersistState (#5017)

- Added support for overriding startState from overrideConfig even when startPersistState is true
This commit is contained in:
Henry Heng 2025-08-04 13:36:13 +01:00 committed by GitHub
parent 5930f1119c
commit e3e4d6a904
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 59 additions and 4 deletions

View File

@ -1403,6 +1403,29 @@ export const executeAgentFlow = async ({
}
}
// Check if startState has been overridden from overrideConfig.startState and is enabled
const startAgentflowNode = nodes.find((node) => node.data.name === 'startAgentflow')
const isStartStateEnabled =
nodeOverrides && startAgentflowNode
? nodeOverrides[startAgentflowNode.data.label]?.find((param: any) => param.name === 'startState')?.enabled ?? false
: false
if (isStartStateEnabled && overrideConfig?.startState) {
if (Array.isArray(overrideConfig.startState)) {
// Handle array format: [{"key": "foo", "value": "foo4"}]
const overrideStateObj: ICommonObject = {}
for (const item of overrideConfig.startState) {
if (item.key && item.value !== undefined) {
overrideStateObj[item.key] = item.value
}
}
previousState = { ...previousState, ...overrideStateObj }
} else if (typeof overrideConfig.startState === 'object') {
// Object override: "startState": {...}
previousState = { ...previousState, ...overrideConfig.startState }
}
}
agentflowRuntime.state = previousState
}
@ -1584,12 +1607,44 @@ export const executeAgentFlow = async ({
role: message.role === 'userMessage' ? 'user' : 'assistant'
}
// Only add additional_kwargs when fileUploads or artifacts exists and is not empty
if ((message.fileUploads && message.fileUploads !== '') || (message.artifacts && message.artifacts !== '')) {
const hasFileUploads = message.fileUploads && message.fileUploads !== ''
const hasArtifacts = message.artifacts && message.artifacts !== ''
const hasFileAnnotations = message.fileAnnotations && message.fileAnnotations !== ''
const hasUsedTools = message.usedTools && message.usedTools !== ''
if (hasFileUploads || hasArtifacts || hasFileAnnotations || hasUsedTools) {
mappedMessage.additional_kwargs = {}
if (message.fileUploads && message.fileUploads !== '') {
mappedMessage.additional_kwargs.fileUploads = message.fileUploads
if (hasFileUploads) {
try {
mappedMessage.additional_kwargs.fileUploads = JSON.parse(message.fileUploads!)
} catch {
mappedMessage.additional_kwargs.fileUploads = message.fileUploads
}
}
if (hasArtifacts) {
try {
mappedMessage.additional_kwargs.artifacts = JSON.parse(message.artifacts!)
} catch {
mappedMessage.additional_kwargs.artifacts = message.artifacts
}
}
if (hasFileAnnotations) {
try {
mappedMessage.additional_kwargs.fileAnnotations = JSON.parse(message.fileAnnotations!)
} catch {
mappedMessage.additional_kwargs.fileAnnotations = message.fileAnnotations
}
}
if (hasUsedTools) {
try {
mappedMessage.additional_kwargs.usedTools = JSON.parse(message.usedTools!)
} catch {
mappedMessage.additional_kwargs.usedTools = message.usedTools
}
}
}