Skip to content

Commit 7147083

Browse files
committed
🐛 Bugfix: agent tools params cannot initialize correctly
1 parent abf3f0c commit 7147083

File tree

1 file changed

+41
-51
lines changed

1 file changed

+41
-51
lines changed

frontend/app/[locale]/agents/components/tool/ToolConfigModal.tsx

Lines changed: 41 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -65,69 +65,59 @@ export default function ToolConfigModal({
6565

6666
// load tool config
6767
useEffect(() => {
68+
const buildDefaultParams = () =>
69+
(tool?.initParams || []).map((param) => ({
70+
...param,
71+
value: param.value,
72+
}));
73+
6874
const loadToolConfig = async () => {
69-
if (tool && mainAgentId) {
70-
setIsLoading(true);
71-
try {
72-
const result = await searchToolConfig(parseInt(tool.id), mainAgentId);
73-
if (result.success) {
74-
if (result.data?.params) {
75-
// use backend returned config content
76-
const savedParams = tool.initParams.map((param) => {
77-
// if backend returned config has this param value, use backend returned value
78-
// otherwise use param default value
79-
const savedValue = result.data.params[param.name];
80-
return {
81-
...param,
82-
value: savedValue !== undefined ? savedValue : param.value,
83-
};
84-
});
85-
setCurrentParams(savedParams);
86-
} else {
87-
// if backend returned params is null, means no saved config, use default config
88-
setCurrentParams(
89-
tool.initParams.map((param) => ({
90-
...param,
91-
value: param.value, // use default value
92-
}))
93-
);
94-
}
95-
} else {
96-
message.error(result.message || t("toolConfig.message.loadError"));
97-
// when load failed, use default config
98-
setCurrentParams(
99-
tool.initParams.map((param) => ({
75+
if (!tool) {
76+
setCurrentParams([]);
77+
return;
78+
}
79+
80+
// In creation mode we do not have an agent ID yet, so use the tool's default params.
81+
if (!mainAgentId) {
82+
setCurrentParams(buildDefaultParams());
83+
return;
84+
}
85+
86+
setIsLoading(true);
87+
try {
88+
const result = await searchToolConfig(parseInt(tool.id), mainAgentId);
89+
if (result.success) {
90+
if (result.data?.params) {
91+
const savedParams = tool.initParams.map((param) => {
92+
const savedValue = result.data.params[param.name];
93+
return {
10094
...param,
101-
value: param.value,
102-
}))
103-
);
95+
value: savedValue !== undefined ? savedValue : param.value,
96+
};
97+
});
98+
setCurrentParams(savedParams);
99+
} else {
100+
setCurrentParams(buildDefaultParams());
104101
}
105-
} catch (error) {
106-
log.error(t("toolConfig.message.loadError"), error);
107-
message.error(t("toolConfig.message.loadErrorUseDefault"));
108-
// when error occurs, use default config
109-
setCurrentParams(
110-
tool.initParams.map((param) => ({
111-
...param,
112-
value: param.value,
113-
}))
114-
);
115-
} finally {
116-
setIsLoading(false);
102+
} else {
103+
message.error(result.message || t("toolConfig.message.loadError"));
104+
setCurrentParams(buildDefaultParams());
117105
}
118-
} else {
119-
// if there is no tool or mainAgentId, clear params
120-
setCurrentParams([]);
106+
} catch (error) {
107+
log.error(t("toolConfig.message.loadError"), error);
108+
message.error(t("toolConfig.message.loadErrorUseDefault"));
109+
setCurrentParams(buildDefaultParams());
110+
} finally {
111+
setIsLoading(false);
121112
}
122113
};
123114

124115
if (isOpen && tool) {
125116
loadToolConfig();
126117
} else {
127-
// when modal is closed, clear params
128118
setCurrentParams([]);
129119
}
130-
}, [isOpen, tool, mainAgentId, t]);
120+
}, [isOpen, tool, mainAgentId, t, message]);
131121

132122
// check required fields
133123
const checkRequiredFields = () => {

0 commit comments

Comments
 (0)