mirror of
https://github.com/farcasclaudiu/Flowise.git
synced 2026-06-29 09:01:06 +03:00
Feat/add ability to specify initial state in overrideConfig (#2893)
add ability to specify initial state in overrideConfig
This commit is contained in:
@@ -754,6 +754,7 @@ const getReturnOutput = async (nodeData: INodeData, input: string, options: ICom
|
|||||||
const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string
|
const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string
|
||||||
const updateStateMemoryUI = nodeData.inputs?.updateStateMemoryUI as string
|
const updateStateMemoryUI = nodeData.inputs?.updateStateMemoryUI as string
|
||||||
const updateStateMemoryCode = nodeData.inputs?.updateStateMemoryCode as string
|
const updateStateMemoryCode = nodeData.inputs?.updateStateMemoryCode as string
|
||||||
|
const updateStateMemory = nodeData.inputs?.updateStateMemory as string
|
||||||
|
|
||||||
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'updateStateMemoryUI'
|
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'updateStateMemoryUI'
|
||||||
const variables = await getVars(appDataSource, databaseEntities, nodeData)
|
const variables = await getVars(appDataSource, databaseEntities, nodeData)
|
||||||
@@ -768,6 +769,27 @@ const getReturnOutput = async (nodeData: INodeData, input: string, options: ICom
|
|||||||
vars: prepareSandboxVars(variables)
|
vars: prepareSandboxVars(variables)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (updateStateMemory && updateStateMemory !== 'updateStateMemoryUI' && updateStateMemory !== 'updateStateMemoryCode') {
|
||||||
|
try {
|
||||||
|
const parsedSchema = typeof updateStateMemory === 'string' ? JSON.parse(updateStateMemory) : updateStateMemory
|
||||||
|
const obj: ICommonObject = {}
|
||||||
|
for (const sch of parsedSchema) {
|
||||||
|
const key = sch.Key
|
||||||
|
if (!key) throw new Error(`Key is required`)
|
||||||
|
let value = sch.Value as string
|
||||||
|
if (value.startsWith('$flow')) {
|
||||||
|
value = customGet(flow, sch.Value.replace('$flow.', ''))
|
||||||
|
} else if (value.startsWith('$vars')) {
|
||||||
|
value = customGet(flow, sch.Value.replace('$', ''))
|
||||||
|
}
|
||||||
|
obj[key] = value
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (selectedTab === 'updateStateMemoryUI' && updateStateMemoryUI) {
|
if (selectedTab === 'updateStateMemoryUI' && updateStateMemoryUI) {
|
||||||
try {
|
try {
|
||||||
const parsedSchema = typeof updateStateMemoryUI === 'string' ? JSON.parse(updateStateMemoryUI) : updateStateMemoryUI
|
const parsedSchema = typeof updateStateMemoryUI === 'string' ? JSON.parse(updateStateMemoryUI) : updateStateMemoryUI
|
||||||
|
|||||||
@@ -557,6 +557,7 @@ const getReturnOutput = async (nodeData: INodeData, input: string, options: ICom
|
|||||||
const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string
|
const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string
|
||||||
const updateStateMemoryUI = nodeData.inputs?.updateStateMemoryUI as string
|
const updateStateMemoryUI = nodeData.inputs?.updateStateMemoryUI as string
|
||||||
const updateStateMemoryCode = nodeData.inputs?.updateStateMemoryCode as string
|
const updateStateMemoryCode = nodeData.inputs?.updateStateMemoryCode as string
|
||||||
|
const updateStateMemory = nodeData.inputs?.updateStateMemory as string
|
||||||
|
|
||||||
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'updateStateMemoryUI'
|
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'updateStateMemoryUI'
|
||||||
const variables = await getVars(appDataSource, databaseEntities, nodeData)
|
const variables = await getVars(appDataSource, databaseEntities, nodeData)
|
||||||
@@ -571,6 +572,27 @@ const getReturnOutput = async (nodeData: INodeData, input: string, options: ICom
|
|||||||
vars: prepareSandboxVars(variables)
|
vars: prepareSandboxVars(variables)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (updateStateMemory && updateStateMemory !== 'updateStateMemoryUI' && updateStateMemory !== 'updateStateMemoryCode') {
|
||||||
|
try {
|
||||||
|
const parsedSchema = typeof updateStateMemory === 'string' ? JSON.parse(updateStateMemory) : updateStateMemory
|
||||||
|
const obj: ICommonObject = {}
|
||||||
|
for (const sch of parsedSchema) {
|
||||||
|
const key = sch.Key
|
||||||
|
if (!key) throw new Error(`Key is required`)
|
||||||
|
let value = sch.Value as string
|
||||||
|
if (value.startsWith('$flow')) {
|
||||||
|
value = customGet(flow, sch.Value.replace('$flow.', ''))
|
||||||
|
} else if (value.startsWith('$vars')) {
|
||||||
|
value = customGet(flow, sch.Value.replace('$', ''))
|
||||||
|
}
|
||||||
|
obj[key] = value
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (selectedTab === 'updateStateMemoryUI' && updateStateMemoryUI) {
|
if (selectedTab === 'updateStateMemoryUI' && updateStateMemoryUI) {
|
||||||
try {
|
try {
|
||||||
const parsedSchema = typeof updateStateMemoryUI === 'string' ? JSON.parse(updateStateMemoryUI) : updateStateMemoryUI
|
const parsedSchema = typeof updateStateMemoryUI === 'string' ? JSON.parse(updateStateMemoryUI) : updateStateMemoryUI
|
||||||
|
|||||||
@@ -101,6 +101,43 @@ class State_SeqAgents implements INode {
|
|||||||
const appDataSource = options.appDataSource as DataSource
|
const appDataSource = options.appDataSource as DataSource
|
||||||
const databaseEntities = options.databaseEntities as IDatabaseEntity
|
const databaseEntities = options.databaseEntities as IDatabaseEntity
|
||||||
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'stateMemoryUI'
|
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'stateMemoryUI'
|
||||||
|
const stateMemory = nodeData.inputs?.stateMemory as string
|
||||||
|
|
||||||
|
if (stateMemory && stateMemory !== 'stateMemoryUI' && stateMemory !== 'stateMemoryCode') {
|
||||||
|
try {
|
||||||
|
const parsedSchema = typeof stateMemory === 'string' ? JSON.parse(stateMemory) : stateMemory
|
||||||
|
const obj: ICommonObject = {}
|
||||||
|
for (const sch of parsedSchema) {
|
||||||
|
const key = sch.Key
|
||||||
|
if (!key) throw new Error(`Key is required`)
|
||||||
|
const type = sch.Operation
|
||||||
|
const defaultValue = sch['Default Value']
|
||||||
|
|
||||||
|
if (type === 'Append') {
|
||||||
|
obj[key] = {
|
||||||
|
value: (x: any, y: any) => (Array.isArray(y) ? x.concat(y) : x.concat([y])),
|
||||||
|
default: () => (defaultValue ? JSON.parse(defaultValue) : [])
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
obj[key] = {
|
||||||
|
value: (x: any, y: any) => y ?? x,
|
||||||
|
default: () => defaultValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const returnOutput: ISeqAgentNode = {
|
||||||
|
id: nodeData.id,
|
||||||
|
node: obj,
|
||||||
|
name: 'state',
|
||||||
|
label: 'state',
|
||||||
|
type: 'state',
|
||||||
|
output: START
|
||||||
|
}
|
||||||
|
return returnOutput
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!stateMemoryUI && !stateMemoryCode) {
|
if (!stateMemoryUI && !stateMemoryCode) {
|
||||||
const returnOutput: ISeqAgentNode = {
|
const returnOutput: ISeqAgentNode = {
|
||||||
|
|||||||
@@ -441,6 +441,7 @@ const getReturnOutput = async (
|
|||||||
const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string
|
const tabIdentifier = nodeData.inputs?.[`${TAB_IDENTIFIER}_${nodeData.id}`] as string
|
||||||
const updateStateMemoryUI = nodeData.inputs?.updateStateMemoryUI as string
|
const updateStateMemoryUI = nodeData.inputs?.updateStateMemoryUI as string
|
||||||
const updateStateMemoryCode = nodeData.inputs?.updateStateMemoryCode as string
|
const updateStateMemoryCode = nodeData.inputs?.updateStateMemoryCode as string
|
||||||
|
const updateStateMemory = nodeData.inputs?.updateStateMemory as string
|
||||||
|
|
||||||
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'updateStateMemoryUI'
|
const selectedTab = tabIdentifier ? tabIdentifier.split(`_${nodeData.id}`)[0] : 'updateStateMemoryUI'
|
||||||
const variables = await getVars(appDataSource, databaseEntities, nodeData)
|
const variables = await getVars(appDataSource, databaseEntities, nodeData)
|
||||||
@@ -464,6 +465,27 @@ const getReturnOutput = async (
|
|||||||
vars: prepareSandboxVars(variables)
|
vars: prepareSandboxVars(variables)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (updateStateMemory && updateStateMemory !== 'updateStateMemoryUI' && updateStateMemory !== 'updateStateMemoryCode') {
|
||||||
|
try {
|
||||||
|
const parsedSchema = typeof updateStateMemory === 'string' ? JSON.parse(updateStateMemory) : updateStateMemory
|
||||||
|
const obj: ICommonObject = {}
|
||||||
|
for (const sch of parsedSchema) {
|
||||||
|
const key = sch.Key
|
||||||
|
if (!key) throw new Error(`Key is required`)
|
||||||
|
let value = sch.Value as string
|
||||||
|
if (value.startsWith('$flow')) {
|
||||||
|
value = customGet(flow, sch.Value.replace('$flow.', ''))
|
||||||
|
} else if (value.startsWith('$vars')) {
|
||||||
|
value = customGet(flow, sch.Value.replace('$', ''))
|
||||||
|
}
|
||||||
|
obj[key] = value
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
} catch (e) {
|
||||||
|
throw new Error(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (selectedTab === 'updateStateMemoryUI' && updateStateMemoryUI) {
|
if (selectedTab === 'updateStateMemoryUI' && updateStateMemoryUI) {
|
||||||
try {
|
try {
|
||||||
const parsedSchema = typeof updateStateMemoryUI === 'string' ? JSON.parse(updateStateMemoryUI) : updateStateMemoryUI
|
const parsedSchema = typeof updateStateMemoryUI === 'string' ? JSON.parse(updateStateMemoryUI) : updateStateMemoryUI
|
||||||
|
|||||||
Reference in New Issue
Block a user