Centralizes credential lookup with consistent AgentConfigException
messages that point at the relevant liteflow.agent.* config path.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
resolve() is the framework SPI: ReActAgentComponent (in a different
package) needs to call spec.resolve(cfg), which protected access
does not permit. The test's TestSpec override is widened in lockstep
since Java forbids narrowing visibility on override.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Vendor-neutral model descriptor with common fluent setters
(temperature/topP/topK/maxTokens/seed/stream/cacheControl) and an
abstract resolve(AgentConfig) SPI that provider modules implement.
The AgentConfig/SessionConfig/WorkspaceConfig POJOs belong in
liteflow-core, not liteflow-react-agent-core.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>