resolve Llm Options
open override fun resolveLlmOptions(llmOptions: <Error class: unknown class>): <Error class: unknown class>
Resolve any role in these options to a concrete model, applying whatever hyperparameters are configured against that role.
Hyperparameters the caller set explicitly are kept - a role may say temperature: 0.3, but a caller that passed its own temperature still gets that one. Model selection is the exception and comes from the role wholesale: deciding which model a role means is the entire point of resolving it, so a model set alongside a role is replaced rather than preserved.
Called once per LLM operation, before the model is chosen, so that a role can carry more than a model name. Options naming no role are returned unchanged.