Skip to content

Commit 2dce354

Browse files
authored
🐛 Changing the parameter value in manual input mode does not take effect. #1471
2 parents 268bc5a + ea147d2 commit 2dce354

File tree

1 file changed

+86
-32
lines changed

1 file changed

+86
-32
lines changed

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

Lines changed: 86 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -319,39 +319,53 @@ export default function ToolConfigModal({
319319
try {
320320
// Prepare parameters for tool validation with correct types
321321
const toolParams: Record<string, any> = {};
322-
dynamicInputParams.forEach((paramName) => {
323-
const value = paramValues[paramName];
324-
const paramInfo = parsedInputs[paramName];
325-
const paramType = paramInfo?.type || DEFAULT_TYPE;
326-
327-
if (value && value.trim() !== "") {
328-
// Convert value to correct type based on parameter type from inputs
329-
switch (paramType) {
330-
case "integer":
331-
case "number":
332-
const numValue = Number(value.trim());
333-
if (!isNaN(numValue)) {
334-
toolParams[paramName] = numValue;
335-
} else {
336-
toolParams[paramName] = value.trim(); // fallback to string if conversion fails
337-
}
338-
break;
339-
case "boolean":
340-
toolParams[paramName] = value.trim().toLowerCase() === "true";
341-
break;
342-
case "array":
343-
case "object":
344-
try {
345-
toolParams[paramName] = JSON.parse(value.trim());
346-
} catch {
347-
toolParams[paramName] = value.trim(); // fallback to string if JSON parsing fails
348-
}
349-
break;
350-
default:
351-
toolParams[paramName] = value.trim();
352-
}
322+
323+
if (isManualInputMode) {
324+
// Use manual JSON input
325+
try {
326+
const manualParams = JSON.parse(manualJsonInput);
327+
Object.assign(toolParams, manualParams);
328+
} catch (error) {
329+
log.error("Failed to parse manual JSON input:", error);
330+
setTestResult(`Test failed: Invalid JSON format in manual input`);
331+
return;
353332
}
354-
});
333+
} else {
334+
// Use parsed parameters
335+
dynamicInputParams.forEach((paramName) => {
336+
const value = paramValues[paramName];
337+
const paramInfo = parsedInputs[paramName];
338+
const paramType = paramInfo?.type || DEFAULT_TYPE;
339+
340+
if (value && value.trim() !== "") {
341+
// Convert value to correct type based on parameter type from inputs
342+
switch (paramType) {
343+
case "integer":
344+
case "number":
345+
const numValue = Number(value.trim());
346+
if (!isNaN(numValue)) {
347+
toolParams[paramName] = numValue;
348+
} else {
349+
toolParams[paramName] = value.trim(); // fallback to string if conversion fails
350+
}
351+
break;
352+
case "boolean":
353+
toolParams[paramName] = value.trim().toLowerCase() === "true";
354+
break;
355+
case "array":
356+
case "object":
357+
try {
358+
toolParams[paramName] = JSON.parse(value.trim());
359+
} catch {
360+
toolParams[paramName] = value.trim(); // fallback to string if JSON parsing fails
361+
}
362+
break;
363+
default:
364+
toolParams[paramName] = value.trim();
365+
}
366+
}
367+
});
368+
}
355369

356370
// Prepare configuration parameters from current params
357371
const configParams = currentParams.reduce((acc, param) => {
@@ -767,6 +781,46 @@ export default function ToolConfigModal({
767781
setManualJsonInput(
768782
JSON.stringify(currentParamsJson, null, 2)
769783
);
784+
} else {
785+
// From manual input mode to parsed mode
786+
try {
787+
const manualParams =
788+
JSON.parse(manualJsonInput);
789+
const updatedParamValues: Record<
790+
string,
791+
string
792+
> = {};
793+
dynamicInputParams.forEach((paramName) => {
794+
const manualValue = manualParams[paramName];
795+
const paramInfo = parsedInputs[paramName];
796+
const paramType =
797+
paramInfo?.type || DEFAULT_TYPE;
798+
799+
if (manualValue !== undefined) {
800+
// Convert to string for display based on parameter type
801+
switch (paramType) {
802+
case "boolean":
803+
updatedParamValues[paramName] =
804+
manualValue ? "true" : "false";
805+
break;
806+
case "array":
807+
case "object":
808+
updatedParamValues[paramName] =
809+
JSON.stringify(manualValue, null, 2);
810+
break;
811+
default:
812+
updatedParamValues[paramName] =
813+
String(manualValue);
814+
}
815+
}
816+
});
817+
setParamValues(updatedParamValues);
818+
} catch (error) {
819+
log.error(
820+
"Failed to sync manual input to parsed mode:",
821+
error
822+
);
823+
}
770824
}
771825
}}
772826
>

0 commit comments

Comments
 (0)