kiro: only set additionalModelRequestFields for supported models

The field is rejected by models that don't support thinking/reasoning
configuration. Check model name before setting the field; 'auto' and
unknown models skip it to avoid ValidationException errors.
This commit is contained in:
Levi Neely 2026-09-21 14:40:30 +02:00
parent 48bd852594
commit f88b5fcc32
1 changed files with 19 additions and 2 deletions

View File

@ -283,6 +283,19 @@ func kiroSanitizeModel(model string) string {
return model
}
// kiroModelSupportsThinking returns true if the model supports
// additionalModelRequestFields for thinking/reasoning configuration.
// Only explicit model names are supported; "auto" routes through Kiro's
// model selection which may choose models that don't support this field.
func kiroModelSupportsThinking(model string) bool {
switch model {
case "claude-opus-4-5", "claude-opus-4", "claude-sonnet-4-5", "claude-sonnet-4":
return true
default:
return false
}
}
func buildKiroRequest(model string, messages []Message, tools []Tool, profileARN string, params GenerationParams) (*kiroGenerateRequest, error) {
model = kiroSanitizeModel(model)
if len(messages) == 0 {
@ -349,9 +362,13 @@ func buildKiroRequest(model string, messages []Message, tools []Tool, profileARN
}
// Set additionalModelRequestFields for reasoning/thinking support.
// Only set for models known to support it (claude-opus-4, claude-sonnet-4).
// Other models (including "auto") may route to models that reject this field.
if kiroModelSupportsThinking(model) {
if fields := kiroModelRequestFieldsFromParams(params); fields != nil {
req.AdditionalModelRequestFields = fields
}
}
return req, nil
}