Class: RubyLlmAgents::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
ActiveRecord::Generators::Migration
Defined in:
lib/generators/ruby_llm_agents/install_generator.rb

Overview

Install generator for ruby_llm-agents

Usage:

rails generate ruby_llm_agents:install

This will:

- Create the migration for ruby_llm_agents_executions table
- Create the initializer at config/initializers/ruby_llm_agents.rb
- Create app/agents/application_agent.rb base class
- Create app/agents/concerns/ directory
- Optionally mount the dashboard engine in routes

Instance Method Summary collapse

Instance Method Details

#create_application_agentObject



66
67
68
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 66

def create_application_agent
  template "application_agent.rb.tt", "app/agents/application_agent.rb"
end

#create_directory_structureObject



55
56
57
58
59
60
61
62
63
64
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 55

def create_directory_structure
  say_status :create, "agents/ directory structure", :green

  # Create agents directory and subdirectories
  empty_directory "app/agents"
  empty_directory "app/agents/concerns"

  # Create tools directory
  empty_directory "app/tools"
end

#create_execution_details_migrationObject



40
41
42
43
44
45
46
47
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 40

def create_execution_details_migration
  return if options[:skip_migration]

  migration_template(
    "create_execution_details_migration.rb.tt",
    File.join(db_migrate_path, "create_ruby_llm_agents_execution_details.rb")
  )
end

#create_initializerObject



49
50
51
52
53
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 49

def create_initializer
  return if options[:skip_initializer]

  template "initializer.rb.tt", "config/initializers/ruby_llm_agents.rb"
end

#create_migration_fileObject



31
32
33
34
35
36
37
38
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 31

def create_migration_file
  return if options[:skip_migration]

  migration_template(
    "migration.rb.tt",
    File.join(db_migrate_path, "create_ruby_llm_agents_executions.rb")
  )
end

#create_skill_filesObject



70
71
72
73
74
75
76
77
78
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 70

def create_skill_files
  say_status :create, "skill documentation files", :green

  # Create agents skill file
  template "skills/AGENTS.md.tt", "app/agents/AGENTS.md"

  # Create tools skill file
  template "skills/TOOLS.md.tt", "app/tools/TOOLS.md"
end

#mount_dashboard_engineObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 80

def mount_dashboard_engine
  return unless options[:mount_dashboard]

  route_content = 'mount RubyLLM::Agents::Engine => "/agents"'

  if File.exist?(File.join(destination_root, "config/routes.rb"))
    inject_into_file(
      "config/routes.rb",
      "  #{route_content}\n",
      after: "Rails.application.routes.draw do\n"
    )
    say_status :route, route_content, :green
  end
end

#show_post_install_messageObject



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 95

def show_post_install_message
  say ""
  say "RubyLLM::Agents has been installed!", :green
  say ""
  say "Next steps:"
  say "  1. Set your API key in config/initializers/ruby_llm_agents.rb"
  say "  2. Run migrations: rails db:migrate"
  say "  3. Verify setup:   rails ruby_llm_agents:doctor"
  say "  4. Try it out:     rails generate ruby_llm_agents:demo"
  say ""
  say "Or generate a custom agent:"
  say "  rails generate ruby_llm_agents:agent MyAgent query:required"
  say ""
  say "Dashboard: /agents"
  say ""
end