Commit 110bf939 by heheer Committed by GitHub

fix: get plugin input variables from history (#2255)

parent 48f2c95b
......@@ -5,6 +5,20 @@ import { FlowNodeTypeEnum } from '../../workflow/node/constant';
export const getPluginInputsFromStoreNodes = (nodes: StoreNodeItemType[]) => {
return nodes.find((node) => node.flowNodeType === FlowNodeTypeEnum.pluginInput)?.inputs || [];
};
export const getPluginRunContent = (e: { pluginInputs: FlowNodeInputItemType[] }) => {
return JSON.stringify(e);
export const getPluginRunContent = ({
pluginInputs,
variables
}: {
pluginInputs: FlowNodeInputItemType[];
variables: Record<string, any>;
}) => {
const pluginInputsWithValue = pluginInputs.map((input) => {
const { key } = input;
const value = variables?.hasOwnProperty(key) ? variables[key] : input.defaultValue;
return {
...input,
value
};
});
return JSON.stringify(pluginInputsWithValue);
};
......@@ -31,10 +31,34 @@ const RenderInput = () => {
);
}, [pluginInputs]);
const historyFormValues = useMemo(() => {
if (histories.length === 0) return undefined;
try {
const inputValueString = histories[0].value[0].text?.content || '[]';
return JSON.parse(inputValueString).reduce(
(
acc: Record<string, any>,
{
key,
value
}: {
key: string;
value: any;
}
) => ({ ...acc, [key]: value }),
{}
);
} catch (error) {
console.error('Failed to parse input value:', error);
return undefined;
}
}, [histories]);
useEffect(() => {
if (isEqual(getValues(), defaultFormValues)) return;
reset(defaultFormValues);
}, [defaultFormValues, histories]);
reset(historyFormValues || defaultFormValues);
}, [defaultFormValues, historyFormValues]);
const isDisabledInput = histories.length > 0;
......
......@@ -51,7 +51,7 @@ const PluginRunContextProvider = ({
}, []);
const generatingMessage = useCallback(
({ event, text = '', status, name, tool, variables }: generatingMessageProps) => {
({ event, text = '', status, name, tool }: generatingMessageProps) => {
setHistories((state) =>
state.map((item, index) => {
if (index !== state.length - 1 || item.obj !== ChatRoleEnum.AI) return item;
......@@ -170,7 +170,8 @@ const PluginRunContextProvider = ({
type: ChatItemValueTypeEnum.text,
text: {
content: getPluginRunContent({
pluginInputs
pluginInputs,
variables: e
})
}
}
......
......@@ -201,7 +201,8 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
type: ChatItemValueTypeEnum.text,
text: {
content: getPluginRunContent({
pluginInputs: getPluginInputsFromStoreNodes(app.modules)
pluginInputs: getPluginInputsFromStoreNodes(app.modules),
variables
})
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment