@@ -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