Class: Legion::Extensions::Llm::Routing::OfferingRegistry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/legion/extensions/llm/routing/offering_registry.rb

Overview

DEPRECATED (Phase 4 removal): the old mutable registry, kept only for old callers. It is never returned by Inventory::Registry.snapshot. In-memory index of provider-neutral model offerings.

Instance Method Summary collapse

Constructor Details

#initialize(offerings = []) ⇒ OfferingRegistry

Returns a new instance of OfferingRegistry.



13
14
15
16
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 13

def initialize(offerings = [])
  @offerings = []
  Array(offerings).each { |offering| register(offering) }
end

Instance Method Details

#allObject Also known as: list



29
30
31
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 29

def all
  @offerings.dup
end

#by_capability(capability) ⇒ Object



66
67
68
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 66

def by_capability(capability)
  filter(capability:)
end

#by_model_family(model_family) ⇒ Object



58
59
60
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 58

def by_model_family(model_family)
  filter(model_family:)
end

#by_provider_family(provider_family) ⇒ Object



54
55
56
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 54

def by_provider_family(provider_family)
  filter(provider_family:)
end

#by_provider_instance(provider_instance) ⇒ Object



62
63
64
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 62

def by_provider_instance(provider_instance)
  filter(provider_instance:)
end

#eachObject



25
26
27
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 25

def each(&)
  @offerings.each(&)
end

#filter(**criteria) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 42

def filter(**criteria)
  @offerings.select do |offering|
    matches_symbol?(offering.provider_family, criteria[:provider_family]) &&
      matches_symbol?(offering.model_family, criteria[:model_family]) &&
      matches_symbol?(offering.provider_instance, criteria[:provider_instance]) &&
      matches_capability?(offering, criteria[:capability]) &&
      matches_model_alias?(offering, criteria[:model_alias]) &&
      matches_model?(offering, criteria[:model]) &&
      matches_usage_type?(offering, criteria[:usage_type])
  end
end

#find(offering_id) ⇒ Object



34
35
36
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 34

def find(offering_id)
  @offerings.find { |offering| offering.offering_id == offering_id.to_s }
end

#find_by_model_alias(alias_name) ⇒ Object



38
39
40
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 38

def find_by_model_alias(alias_name)
  @offerings.find { |offering| offering.model_alias?(alias_name) }
end

#register(offering) ⇒ Object



18
19
20
21
22
23
# File 'lib/legion/extensions/llm/routing/offering_registry.rb', line 18

def register(offering)
  normalized = normalize_offering(offering)
  @offerings.reject! { |existing| existing.offering_id == normalized.offering_id }
  @offerings << normalized
  normalized
end