Arcana::AI::Chat::ThinkingConfig
Unified representation of chain-of-thought / reasoning knobs across providers. Each provider maps this to its own wire shape:
Anthropic — thinking: {type: "enabled", budget_tokens: N}
thinking content surfaced as type: "thinking" blocks
in the response's content array.
OpenAI — reasoning_effort: "low"|"medium"|"high" (o-series
reasoning models). Content is NOT surfaced; only the
reasoning token count comes back in
usage.completion_tokens_details.reasoning_tokens.
Gemini — generationConfig.thinkingConfig: {thinkingBudget: N, includeThoughts: bool} (2.5 series). Thought parts
come back with thought: true when includeThoughts
is set.
Callers can supply what fits their target: budget for
Anthropic/Gemini, effort for OpenAI. Each provider ignores
fields it doesn't use and picks a sensible default for its own
tier if the caller left them nil.