Class: Observ::AgentProvider
- Inherits:
-
Object
- Object
- Observ::AgentProvider
- 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
-
.all_agents ⇒ Array<Class>
Returns all available agents that implement the Observ::AgentSelectable interface Agents are sorted alphabetically by display_name.
Class Method Details
.all_agents ⇒ Array<Class>
Returns all available agents that implement the Observ::AgentSelectable interface Agents are sorted alphabetically by display_name
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 |