Class: Ace::LLM::Molecules::ThinkingLevelLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/llm/molecules/thinking_level_loader.rb

Overview

Loads provider-scoped thinking-level overrides from llm/thinking/*.yml.

Constant Summary collapse

ALLOWED_LEVELS =
%w[low medium high xhigh].freeze

Class Method Summary collapse

Class Method Details

.load_for_provider(provider, level) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ace/llm/molecules/thinking_level_loader.rb', line 14

def load_for_provider(provider, level)
  normalized_provider = normalize_provider_name(provider)
  normalized_level = normalize_level(level)
  thinking_hash = resolve_level("#{normalized_provider}/#{normalized_level}")

  if thinking_hash.nil? || thinking_hash.empty?
    raise ConfigurationError,
      "Thinking level '#{normalized_level}' not found for provider '#{normalized_provider}'. " \
      "Define .ace/llm/thinking/#{normalized_provider}/#{normalized_level}.yml"
  end

  thinking_hash
rescue ConfigurationError
  raise
rescue => e
  raise ConfigurationError,
    "Failed to load thinking level '#{normalized_level}' for provider '#{normalized_provider}': #{e.message}"
end