Issue #3594715: Read the first content block that carries text, and route model-specific parameters to additionalModelRequestFields
Closes #3594715
Two changes, both in BedrockProvider::chat().
The response. Reasoning models put their reasoning in its own content block and it arrives first, so block zero holds reasoningContent rather than text. The ?? "" added for #3517795 (closed), where block zero held toolUse, then turns that into an empty ChatMessage with nothing reported. The same line now has two ways to miss the answer, so this scans for the first block that actually carries text, which covers both.
The parameters. Converse validates inferenceConfig strictly and rejects anything outside maxTokens, temperature, topP and stopSequences, so today there is no way to send a model-specific parameter at all. Splitting the configuration puts those four where Converse expects them and everything else in additionalModelRequestFields, which is where reasoning_effort has to go for a gpt-oss model to answer rather than spend its output budget thinking.
No API change. Callers setting only temperature are unaffected, since it is in both lists.
Verified against live Bedrock on openai.gpt-oss-120b-1:0 in us-east-1. phpcs against Drupal and DrupalPractice is clean on the changed file.
See the issue for the adjacent snake_case problem, left out of this MR deliberately, and for how this relates to the payload alter MR on #3562254.