feat(web): workflow variable type
This commit is contained in:
@@ -248,7 +248,7 @@ const Properties: FC<PropertiesProps> = ({
|
||||
return null;
|
||||
})() : null;
|
||||
|
||||
let filteredList = variableList.filter(variable => variable.dataType !== 'boolean');
|
||||
let filteredList = variableList.filter(variable => !['boolean', 'object', 'array[boolean]'].includes(variable.dataType));
|
||||
|
||||
// If this LLM node is a child of iteration/loop, ensure parent variables are included
|
||||
if (parentLoopNode) {
|
||||
@@ -315,7 +315,46 @@ const Properties: FC<PropertiesProps> = ({
|
||||
|
||||
return filteredList;
|
||||
}
|
||||
if (nodeType === 'knowledge-retrieval' || nodeType === 'parameter-extractor' && key !== 'prompt' || nodeType === 'memory-read' || nodeType === 'question-classifier') {
|
||||
if (nodeType === 'knowledge-retrieval'
|
||||
|| (nodeType === 'parameter-extractor' && key === 'text')
|
||||
|| (nodeType === 'question-classifier' && ['input_variable', 'categories'].includes(key as string))
|
||||
) {
|
||||
const allList = addParentIterationVars(variableList);
|
||||
let filteredList: Suggestion[] = []
|
||||
allList.forEach(variable => {
|
||||
if (variable.dataType === 'string') {
|
||||
filteredList.push(variable)
|
||||
} else if (variable.dataType === 'file') {
|
||||
filteredList.push({
|
||||
...variable,
|
||||
children: variable.children.filter((child: Suggestion) => child.dataType === 'string')
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
return filteredList
|
||||
}
|
||||
|
||||
if ((nodeType === 'parameter-extractor' && key === 'prompt')
|
||||
|| (nodeType === 'question-classifier' && key === 'user_supplement_prompt')
|
||||
) {
|
||||
const allList = addParentIterationVars(variableList);
|
||||
let filteredList: Suggestion[] = []
|
||||
allList.forEach(variable => {
|
||||
if (['string', 'number'].includes(variable.dataType)) {
|
||||
filteredList.push(variable)
|
||||
} else if (variable.dataType === 'file') {
|
||||
filteredList.push({
|
||||
...variable,
|
||||
disabled: true,
|
||||
children: variable.children.filter((child: Suggestion) => ['string', 'number'].includes(child.dataType))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
return filteredList
|
||||
}
|
||||
if (nodeType === 'memory-read') {
|
||||
let filteredList = addParentIterationVars(variableList).filter(variable => variable.dataType === 'string');
|
||||
return filteredList;
|
||||
}
|
||||
@@ -327,11 +366,24 @@ const Properties: FC<PropertiesProps> = ({
|
||||
let filteredList = addParentIterationVars(variableList).filter(variable => variable.dataType === 'string' || variable.dataType === 'number');
|
||||
return filteredList;
|
||||
}
|
||||
if (nodeType === 'iteration' && key === 'output' || nodeType === 'loop' && key === 'condition') {
|
||||
|
||||
if ((nodeType === 'iteration' && key === 'output')) {
|
||||
if (!selectedNode) return [];
|
||||
let filteredList = nodeType === 'iteration'
|
||||
? variableList.filter(variable => variable.value.includes('sys.'))
|
||||
: addParentIterationVars(variableList).filter(variable => variable.nodeData.type !== 'loop');
|
||||
let filteredList = variableList.filter(variable => variable.value.includes('sys.'))
|
||||
const childVariables = getChildNodeVariables(selectedNode, graphRef);
|
||||
const existingKeys = new Set(filteredList.map(v => v.key));
|
||||
childVariables.forEach(v => {
|
||||
if (!existingKeys.has(v.key)) {
|
||||
filteredList.push(v);
|
||||
existingKeys.add(v.key);
|
||||
}
|
||||
});
|
||||
|
||||
return filteredList.filter(variable => variable.dataType !== 'array[file]');
|
||||
}
|
||||
if (nodeType === 'loop' && key === 'condition') {
|
||||
if (!selectedNode) return [];
|
||||
let filteredList = addParentIterationVars(variableList).filter(variable => variable.nodeData.type !== 'loop');
|
||||
|
||||
const childVariables = getChildNodeVariables(selectedNode, graphRef);
|
||||
const existingKeys = new Set(filteredList.map(v => v.key));
|
||||
@@ -348,6 +400,25 @@ const Properties: FC<PropertiesProps> = ({
|
||||
return variableList.filter(variable => variable.dataType.includes('array'));
|
||||
}
|
||||
|
||||
if (nodeType === 'code'
|
||||
|| (nodeType === 'if-else' && key === 'cases')
|
||||
) {
|
||||
const allList = addParentIterationVars(variableList);
|
||||
let filteredList: Suggestion[] = []
|
||||
allList.forEach(variable => {
|
||||
if (variable.dataType === 'file') {
|
||||
filteredList.push({
|
||||
...variable,
|
||||
disabled: true,
|
||||
})
|
||||
} else {
|
||||
filteredList.push(variable)
|
||||
}
|
||||
})
|
||||
|
||||
return filteredList
|
||||
}
|
||||
|
||||
// For all other node types, add parent iteration variables if applicable
|
||||
let baseList = variableList;
|
||||
return addParentIterationVars(baseList);
|
||||
|
||||
Reference in New Issue
Block a user