Class: RubyLlmAgents::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- RubyLlmAgents::InstallGenerator
- 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
- #create_application_agent ⇒ Object
- #create_directory_structure ⇒ Object
- #create_execution_details_migration ⇒ Object
- #create_initializer ⇒ Object
- #create_migration_file ⇒ Object
- #create_skill_files ⇒ Object
- #mount_dashboard_engine ⇒ Object
- #show_post_install_message ⇒ Object
Instance Method Details
#create_application_agent ⇒ Object
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_structure ⇒ Object
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_migration ⇒ Object
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 [:skip_migration] migration_template( "create_execution_details_migration.rb.tt", File.join(db_migrate_path, "create_ruby_llm_agents_execution_details.rb") ) end |
#create_initializer ⇒ Object
49 50 51 52 53 |
# File 'lib/generators/ruby_llm_agents/install_generator.rb', line 49 def create_initializer return if [:skip_initializer] template "initializer.rb.tt", "config/initializers/ruby_llm_agents.rb" end |
#create_migration_file ⇒ Object
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 [:skip_migration] migration_template( "migration.rb.tt", File.join(db_migrate_path, "create_ruby_llm_agents_executions.rb") ) end |
#create_skill_files ⇒ Object
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_engine ⇒ Object
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 [: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_message ⇒ Object
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 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 |