Feat/add ability to specify initial state in overrideConfig (#2893)

add ability to specify initial state in overrideConfig
This commit is contained in:
Henry Heng
2024-07-27 13:13:16 +01:00
committed by GitHub
parent 3e54d53692
commit e39fd130d0
4 changed files with 103 additions and 0 deletions
@@ -101,6 +101,43 @@ class State_SeqAgents implements INode {
const appDataSource = options.appDataSource as DataSource
const databaseEntities = options.databaseEntities as IDatabaseEntity
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) {
const returnOutput: ISeqAgentNode = {