Module: Legion::Extensions::Llm::Fleet::Settings

Defined in:
lib/legion/extensions/llm/fleet/settings.rb

Overview

Reads fleet settings from Legion::Settings when available, falling back to lex-llm defaults.

Class Method Summary collapse

Class Method Details

.configured_llm_settingsObject



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/llm/fleet/settings.rb', line 21

def configured_llm_settings
  return [] unless defined?(::Legion::Settings) && ::Legion::Settings.respond_to?(:[])

  configured = []
  extensions = safe_fetch(::Legion::Settings, :extensions)
  extension_llm = dig(extensions, :llm)
  configured << extension_llm if extension_llm.respond_to?(:key?)

  llm = safe_fetch(::Legion::Settings, :llm)
  configured << llm if llm.respond_to?(:key?)
  configured
rescue StandardError
  []
end

.default_settingsObject



56
57
58
59
60
61
# File 'lib/legion/extensions/llm/fleet/settings.rb', line 56

def default_settings
  return ::Legion::Extensions::Llm.default_settings if
    ::Legion::Extensions::Llm.respond_to?(:default_settings)

  {}
end

.dig(hash, *keys) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/legion/extensions/llm/fleet/settings.rb', line 36

def dig(hash, *keys)
  keys.reduce(hash) do |current, key|
    break nil unless current.respond_to?(:key?)

    symbol_key = key.respond_to?(:to_sym) ? key.to_sym : key
    string_key = key.to_s
    if current.key?(symbol_key)
      current[symbol_key]
    elsif current.key?(string_key)
      current[string_key]
    end
  end
end

.safe_fetch(source, key) ⇒ Object



50
51
52
53
54
# File 'lib/legion/extensions/llm/fleet/settings.rb', line 50

def safe_fetch(source, key)
  source[key] || source[key.to_s]
rescue StandardError
  nil
end

.value(*path, default:) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/legion/extensions/llm/fleet/settings.rb', line 11

def value(*path, default:)
  configured_llm_settings.each do |configured|
    found = dig(configured, *path)
    return found unless found.nil?
  end

  fallback = dig(default_settings, *path)
  fallback.nil? ? default : fallback
end