File tree 1 file changed +20
-17
lines changed
1 file changed +20
-17
lines changed Original file line number Diff line number Diff line change @@ -79,24 +79,27 @@ export async function registerComponentTools({
79
79
appKey = cp . name
80
80
continue
81
81
} else if ( cp . type === "string" ) {
82
- schema [ cp . name ] = z . string ( )
82
+ if (
83
+ cp . options &&
84
+ Array . isArray ( cp . options ) &&
85
+ cp . options . length > 0 &&
86
+ cp . options . some ( ( o ) => typeof o === "string" )
87
+ ) {
88
+ schema [ cp . name ] = z . enum ( cp . options )
89
+ } else {
90
+ schema [ cp . name ] = z . string ( )
91
+ }
83
92
} else if ( cp . type === "string[]" ) {
84
- schema [ cp . name ] = z
85
- . union ( [
86
- z . string ( ) . transform ( ( val ) => {
87
- try {
88
- return JSON . parse ( val )
89
- } catch {
90
- return [
91
- val ,
92
- ] // If not valid JSON, treat as single item array
93
- }
94
- } ) ,
95
- z . array ( z . string ( ) ) ,
96
- ] )
97
- . refine ( ( val ) => Array . isArray ( val ) , {
98
- message : "Must be an array of strings" ,
99
- } )
93
+ if (
94
+ cp . options &&
95
+ Array . isArray ( cp . options ) &&
96
+ cp . options . length > 0 &&
97
+ cp . options . some ( ( o ) => o . value != null )
98
+ ) {
99
+ schema [ cp . name ] = z . array ( z . enum ( cp . options . map ( ( o ) => o . value ) ) )
100
+ } else {
101
+ schema [ cp . name ] = z . array ( z . string ( ) )
102
+ }
100
103
configurablePropsDescription += `- ${ cp . name } : Return JSON in this format: string[]\n`
101
104
} else if ( cp . type === "number" ) {
102
105
schema [ cp . name ] = z . number ( )
You can’t perform that action at this time.
0 commit comments