Class: Spurline::CLI::Checks::AdapterResolution

Inherits:
Base
  • Object
show all
Defined in:
lib/spurline/cli/checks/adapter_resolution.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Spurline::CLI::Checks::Base

Instance Method Details

#runObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/spurline/cli/checks/adapter_resolution.rb', line 7

def run
  load_framework!
  files = agent_files

  if files.empty?
    return [fail(:adapter_resolution, message: "No agent files found under app/agents")]
  end

  files.each { |file| require file }
  agents = resolve_agent_classes

  if agents.empty?
    return [fail(:adapter_resolution, message: "No Spurline::Agent subclasses found in app/agents")]
  end

  unresolved = []

  agents.each do |agent_class|
    model_name = agent_class.model_config && agent_class.model_config[:name]
    if model_name.nil?
      unresolved << "#{agent_class.name} has no model configuration"
      next
    end

    begin
      agent_class.adapter_registry.resolve(model_name)
    rescue Spurline::AdapterNotFoundError => e
      unresolved << "#{agent_class.name}: #{e.message}"
    end
  end

  if unresolved.empty?
    [pass(:adapter_resolution)]
  else
    [fail(:adapter_resolution, message: unresolved.join("; "))]
  end
rescue LoadError, NameError, SyntaxError => e
  [fail(:adapter_resolution, message: "#{e.class}: #{e.message}")]
end