2 Commits

  • refactor(thinking): pass source and target formats to ApplyThinking for cross-format validation
    Update ApplyThinking signature to accept fromFormat and toFormat parameters
    instead of a single provider string. This enables:
    
    - Proper level-to-budget conversion when source is level-based (openai/codex)
      and target is budget-based (gemini/claude)
    - Strict budget range validation when source and target formats match
    - Level clamping to nearest supported level for cross-format requests
    - Format alias resolution in SDK translator registry for codex/openai-response
    
    Also adds ErrBudgetOutOfRange error code and improves iflow config extraction
    to fall back to openai format when iflow-specific config is not present.