Update completion-params.ts

pull/21247/head
Kalo Chin 11 months ago
parent 69b1d562f8
commit b10e6868b8

@ -11,7 +11,7 @@ export const mergeValidCompletionParams = (
const acceptedKeys = new Set(rules.map(r => r.name)) const acceptedKeys = new Set(rules.map(r => r.name))
const ruleMap: Record<string, ModelParameterRule> = {} const ruleMap: Record<string, ModelParameterRule> = {}
rules.forEach(r => { rules.forEach((r) => {
ruleMap[r.name] = r ruleMap[r.name] = r
}) })
@ -19,53 +19,62 @@ export const mergeValidCompletionParams = (
const removedDetails: Record<string, string> = {} const removedDetails: Record<string, string> = {}
Object.entries(oldParams).forEach(([key, value]) => { Object.entries(oldParams).forEach(([key, value]) => {
if (!acceptedKeys.has(key)) if (!acceptedKeys.has(key)) {
{ removedDetails[key] = 'unsupported'; return } removedDetails[key] = 'unsupported'
return
}
const rule = ruleMap[key] const rule = ruleMap[key]
if (!rule) if (!rule) {
{ removedDetails[key] = 'unsupported'; return } removedDetails[key] = 'unsupported'
return
}
switch (rule.type) { switch (rule.type) {
case 'int': case 'int':
case 'float': { case 'float': {
if (typeof value !== 'number') { removedDetails[key] = 'invalid type'; return } if (typeof value !== 'number') {
removedDetails[key] = 'invalid type'
return
}
const min = rule.min ?? Number.NEGATIVE_INFINITY const min = rule.min ?? Number.NEGATIVE_INFINITY
const max = rule.max ?? Number.POSITIVE_INFINITY const max = rule.max ?? Number.POSITIVE_INFINITY
if (value < min || value > max) { removedDetails[key] = `out of range (${min}-${max})`; return } if (value < min || value > max) {
removedDetails[key] = `out of range (${min}-${max})`
return
}
nextParams[key] = value nextParams[key] = value
return return
} }
case 'boolean': { case 'boolean': {
if (typeof value === 'boolean') if (typeof value !== 'boolean') {
nextParams[key] = value
else
removedDetails[key] = 'invalid type' removedDetails[key] = 'invalid type'
return
}
nextParams[key] = value
return return
} }
case 'string': case 'string':
case 'text': { case 'text': {
if (typeof value === 'string') { if (typeof value !== 'string') {
if (Array.isArray(rule.options) && rule.options.length) {
if ((rule.options as string[]).includes(value))
nextParams[key] = value
else
removedDetails[key] = 'unsupported option'
}
else {
nextParams[key] = value
}
}
else {
removedDetails[key] = 'invalid type' removedDetails[key] = 'invalid type'
return
}
if (Array.isArray(rule.options) && rule.options.length) {
if (!(rule.options as string[]).includes(value)) {
removedDetails[key] = 'unsupported option'
return
}
} }
nextParams[key] = value
return return
} }
case 'tag': { case 'tag': {
if (Array.isArray(value)) if (!Array.isArray(value)) {
nextParams[key] = value
else
removedDetails[key] = 'invalid type' removedDetails[key] = 'invalid type'
return
}
nextParams[key] = value
return return
} }
default: { default: {

Loading…
Cancel
Save