Class: Ace::LLM::Molecules::PresetLoader

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

Overview

Loads named execution presets from llm/presets/*.yml via config cascade.

Class Method Summary collapse

Class Method Details

.load(name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ace/llm/molecules/preset_loader.rb', line 12

def load(name)
  preset_name = normalize_preset_name(name)
  preset_hash = resolve_preset(preset_name)
  if preset_hash.nil? || preset_hash.empty?
    raise ConfigurationError,
      "Preset '#{preset_name}' not found. Define .ace/llm/presets/#{preset_name}.yml"
  end

  preset_hash
rescue ConfigurationError
  raise
rescue => e
  raise ConfigurationError, "Failed to load preset '#{preset_name}': #{e.message}"
end

.load_for_provider(provider, preset_name) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ace/llm/molecules/preset_loader.rb', line 27

def load_for_provider(provider, preset_name)
  normalized_provider = normalize_provider_name(provider)
  normalized_preset_name = normalize_preset_name(preset_name)

  global_preset = resolve_preset(normalized_preset_name)
  provider_preset = resolve_preset("#{normalized_provider}/#{normalized_preset_name}")

  if global_preset.empty? && provider_preset.empty?
    raise ConfigurationError,
      "Preset '#{normalized_preset_name}' not found for provider '#{normalized_provider}'. " \
      "Define .ace/llm/presets/#{normalized_preset_name}.yml or " \
      ".ace/llm/presets/#{normalized_provider}/#{normalized_preset_name}.yml"
  end

  Ace::Support::Config::Models::Config.wrap(
    global_preset,
    provider_preset,
    source: "llm_preset_overlay"
  )
rescue ConfigurationError
  raise
rescue => e
  raise ConfigurationError,
    "Failed to load preset '#{normalized_preset_name}' for provider '#{normalized_provider}': #{e.message}"
end