Class: Observ::AgentProvider

Inherits:
Object
  • Object
show all
Defined in:
app/services/observ/agent_provider.rb

Overview

Service for discovering and providing available agents This is the ONLY class that knows how to discover agents in the application

Responsibilities:

- Loading agent files in development mode (via Zeitwerk)
- Discovering all agents that implement Observ::AgentSelectable
- Sorting and filtering agents

The Observ domain queries this service to get available agents, maintaining clean separation between domains.

Configuration:

You can customize the agent discovery path via configuration:

Observ.configure do |config|
config.agent_path = Rails.root.join("lib", "my_agents")
end

Usage:

agents = Observ::AgentProvider.all_agents
# => [LanguageDetectionAgent, MoodDetectionAgent, ...]

Class Method Summary collapse

Class Method Details

.all_agentsArray<Class>

Returns all available agents that implement the Observ::AgentSelectable interface Agents are sorted alphabetically by display_name

Returns:

  • (Array<Class>)

    array of agent classes



31
32
33
34
35
36
37
38
39
# File 'app/services/observ/agent_provider.rb', line 31

def all_agents
  ensure_agents_loaded

  return [] unless defined?(::BaseAgent)

  ::BaseAgent.descendants
    .select { |agent_class| agent_class.included_modules.include?(Observ::AgentSelectable) }
    .sort_by(&:display_name)
end