Class: SolidAgent::Generators::ReasonsGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/solid_agent/reasons/reasons_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(dirname) ⇒ Object



26
27
28
# File 'lib/generators/solid_agent/reasons/reasons_generator.rb', line 26

def self.next_migration_number(dirname)
  ActiveRecord::Generators::Base.next_migration_number(dirname)
end

Instance Method Details

#add_concern_to_modelObject



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/generators/solid_agent/reasons/reasons_generator.rb', line 42

def add_concern_to_model
  model_file = "app/models/#{model_name.underscore}.rb"

  return unless File.exist?(model_file)

  inject_into_class model_file, model_name do
    "  include SolidAgent::Reasonable\n\n"
  end

  say "Added SolidAgent::Reasonable to #{model_name}", :green
end

#create_migrationObject



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/solid_agent/reasons/reasons_generator.rb', line 30

def create_migration
  @table_name = model_name.underscore.pluralize
  @content_column = options[:content_column]
  @tokens_column = options[:tokens_column]
  @metadata_column = options[:metadata_column]

  migration_template(
    "add_reasoning_columns.rb.erb",
    "db/migrate/add_reasoning_to_#{@table_name}.rb"
  )
end

#show_post_install_messageObject



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/generators/solid_agent/reasons/reasons_generator.rb', line 54

def show_post_install_message
  say ""
  say "Reasoning support added to #{model_name}!", :green
  say ""
  say "Next steps:", :yellow
  say "  1. Run migrations: rails db:migrate"
  say "  2. Use reasoning in your agents:"
  say ""
  say "     class MyAgent < ApplicationAgent"
  say "       include SolidAgent::HasReasons"
  say "       include SolidAgent::HasContext"
  say ""
  say "       has_reasons auto_capture: true, persist: true"
  say ""
  say "       def analyze"
  say "         result = prompt("
  say "           messages: messages,"
  say "           extended_thinking: true"
  say "         )"
  say ""
  say "         # Access reasoning"
  say "         last_reasoning.content"
  say "         total_reasoning_tokens"
  say "       end"
  say "     end"
  say ""
end