Class: NitroIntelligence::Observability::PromptResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/nitro_intelligence/observability/prompt_resolver.rb

Overview

Resolves a managed prompt from the lookups a request asks for, most specific first. A lookup that is missing -- or that fails -- yields to the next; the last one's failure propagates.

Defined Under Namespace

Classes: Lookup

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(store:, lookups:) ⇒ PromptResolver

Returns a new instance of PromptResolver.



32
33
34
35
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 32

def initialize(store:, lookups:)
  @store = store
  @lookups = lookups.select { |lookup| lookup.name.present? }.uniq
end

Class Method Details

.for(store:, parameters:) ⇒ Object



11
12
13
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 11

def self.for(store:, parameters:)
  new(store: store, lookups: lookups_for(parameters)).prompt
end

.lookups_for(parameters) ⇒ Object

The fallback names its own label and version and inherits neither: a version is minted per prompt, and a label the requested prompt carries need not exist on the fallback at all.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 17

def self.lookups_for(parameters)
  [
    Lookup.new(
      name: parameters[:prompt_name],
      label: parameters[:prompt_label],
      version: parameters[:prompt_version]
    ),
    Lookup.new(
      name: parameters[:prompt_fallback_name],
      label: parameters[:prompt_fallback_label],
      version: parameters[:prompt_fallback_version]
    ),
  ]
end

Instance Method Details

#promptObject



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 37

def prompt
  *optional, final = @lookups
  return nil if final.nil?

  optional.each do |lookup|
    resolved = fetch_optional(lookup)
    return resolved if resolved
  end

  fetch(final)
end