rcrewai-rails 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 353628caface76713be1e44bd2cf1d8e3bf665cb603f5ed19afb3bb48e460c99
4
- data.tar.gz: 1d75db788deba2bec2462528107fd21c1b0fbad22c93d5d8b3c14e6d464059d0
3
+ metadata.gz: a983bc15d53694f94c8730ff76d92b4d2b51c5526d4ce72b3e8df78251328f16
4
+ data.tar.gz: 30cf57ab32d034b63fd3ff3f94a26afe3db2d6b2db02261378a59a9dd0bb6ce5
5
5
  SHA512:
6
- metadata.gz: eef641fc2157fffe10bcfb634fa4235dfbfc1a0d4d9fba5ad7e7208554b6e16f71cc6cb19707b423ba05f398f18207bca58159af47e883c5ac23835260328efd
7
- data.tar.gz: c0a0f57c8bf242f1d050f5422edf26f8044cb00b9738e936e7437a00c934f3e9f47fa786fc69474279113861d71588854123906ede51e34e1f8a6b1f15b38191
6
+ metadata.gz: e30e0d23b8dac34e84eb157cb5ac9478f3025ffb48805001e16548b0d238f93f2b631ed585484dd6aca17f126fce967ee1754edc07ab3a3c5c2655149d6ddc12
7
+ data.tar.gz: dcda024dbcfec7f39e84c6e40aab2a3f8e9c1b53e9aa0a8d80f0220bd2a84be0b2a118a40296c5a96afff12b0dc9b0b829961e9643c7cd383f01603935643765
@@ -1,37 +1,32 @@
1
1
  require "rails/generators"
2
- require "rails/generators/migration"
3
2
 
4
3
  module RcrewAI
5
4
  module Rails
6
5
  module Generators
7
6
  class InstallGenerator < ::Rails::Generators::Base
8
- include ::Rails::Generators::Migration
9
-
10
7
  source_root File.expand_path("templates", __dir__)
11
8
 
12
- def self.next_migration_number(dirname)
13
- Time.now.utc.strftime("%Y%m%d%H%M%S")
14
- end
15
-
16
- def create_migration_file
17
- migration_template "create_rcrewai_tables.rb", "db/migrate/create_rcrewai_tables.rb", migration_class_name: "CreateRcrewaiTables"
18
- end
19
-
20
9
  def create_initializer
21
- template "rcrewai.rb", "config/initializers/rcrewai.rb"
22
- end
23
-
24
- def add_routes
25
- route "mount RcrewAI::Rails::Engine => '/rcrewai'"
10
+ create_file "config/initializers/rcrewai.rb", <<~RUBY
11
+ RcrewAI.configure do |config|
12
+ # Configure your LLM settings
13
+ # config.default_llm = :openai
14
+ # config.openai_api_key = ENV['OPENAI_API_KEY']
15
+
16
+ # Rails specific configuration
17
+ config.job_queue_name = ENV.fetch("RCREWAI_QUEUE", "default")
18
+ config.enable_web_ui = ENV.fetch("RCREWAI_WEB_UI", "true") == "true"
19
+ config.async_execution = ENV.fetch("RCREWAI_ASYNC", "true") == "true"
20
+ end
21
+ RUBY
26
22
  end
27
23
 
28
24
  def display_post_install_message
29
25
  say "\n✅ RcrewAI Rails has been installed!", :green
30
26
  say "\nNext steps:", :yellow
31
- say " 1. Run migrations: rails db:migrate"
32
- say " 2. Configure your settings in config/initializers/rcrewai.rb"
33
- say " 3. Set your LLM API keys in environment variables"
34
- say " 4. Visit /rcrewai for the web UI (if enabled)"
27
+ say " 1. Configure your settings in config/initializers/rcrewai.rb"
28
+ say " 2. Set your LLM API keys in environment variables"
29
+ say " 3. Start building AI crews with RcrewAI!"
35
30
  say "\n"
36
31
  end
37
32
  end
@@ -19,6 +19,11 @@ module RcrewAI
19
19
  #{config.root}/lib
20
20
  ]
21
21
 
22
+ # Tell Zeitwerk to ignore generator files - they aren't meant to be autoloaded
23
+ initializer "rcrewai_rails.zeitwerk" do |app|
24
+ ::Rails.autoloaders.main.ignore("#{root}/lib/generators")
25
+ end
26
+
22
27
  config.generators do |g|
23
28
  g.test_framework :rspec
24
29
  g.fixture_replacement :factory_bot
@@ -1,6 +1,6 @@
1
1
  module RcrewAI
2
2
  module Rails
3
- VERSION = "0.2.7"
3
+ VERSION = "0.2.8"
4
4
 
5
5
  # Also define Version for Zeitwerk compatibility
6
6
  Version = VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcrewai-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - gkosmo
@@ -238,12 +238,6 @@ files:
238
238
  - app/views/rcrewai/rails/tools/show.html.erb
239
239
  - config/routes.rb
240
240
  - db/migrate/001_add_agent_to_tasks.rb
241
- - lib/generators/rcrew_a_i/rails/crew/crew_generator.rb
242
- - lib/generators/rcrew_a_i/rails/crew/templates/agent.rb.erb
243
- - lib/generators/rcrew_a_i/rails/crew/templates/crew.rb.erb
244
- - lib/generators/rcrew_a_i/rails/install/install_generator.rb
245
- - lib/generators/rcrew_a_i/rails/install/templates/create_rcrewai_tables.rb
246
- - lib/generators/rcrew_a_i/rails/install/templates/rcrewai.rb
247
241
  - lib/generators/rcrewai/rails/crew/crew_generator.rb
248
242
  - lib/generators/rcrewai/rails/crew/templates/agent.rb.erb
249
243
  - lib/generators/rcrewai/rails/crew/templates/crew.rb.erb
@@ -1,42 +0,0 @@
1
- require "rails/generators"
2
-
3
- module RcrewAI
4
- module Rails
5
- module Generators
6
- class CrewGenerator < ::Rails::Generators::NamedBase
7
- source_root File.expand_path("templates", __dir__)
8
-
9
- argument :process_type, type: :string, default: "sequential", banner: "sequential|hierarchical"
10
-
11
- class_option :agents, type: :array, default: [], desc: "List of agents to create"
12
- class_option :description, type: :string, desc: "Crew description"
13
-
14
- def create_crew_file
15
- template "crew.rb.erb", "app/crews/#{file_name}_crew.rb"
16
- end
17
-
18
- def create_agent_files
19
- options[:agents].each do |agent_name|
20
- @agent_name = agent_name
21
- template "agent.rb.erb", "app/crews/agents/#{agent_name.underscore}_agent.rb"
22
- end
23
- end
24
-
25
- def display_next_steps
26
- say "\n✅ Created #{class_name}Crew!", :green
27
- say "\nNext steps:", :yellow
28
- say " 1. Configure your crew in app/crews/#{file_name}_crew.rb"
29
- say " 2. Define tasks for your crew"
30
- say " 3. Run your crew with: #{class_name}Crew.new.execute"
31
- say "\n"
32
- end
33
-
34
- private
35
-
36
- def crew_description
37
- options[:description] || "#{class_name} crew for AI task orchestration"
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,45 +0,0 @@
1
- class <%= @agent_name.camelize %>Agent
2
- include RcrewAI::Rails::AgentBuilder
3
-
4
- def initialize
5
- @agent = RcrewAI::Agent.new(
6
- role: role,
7
- goal: goal,
8
- backstory: backstory,
9
- memory: true,
10
- verbose: true,
11
- allow_delegation: false,
12
- tools: tools,
13
- max_iter: 25,
14
- max_rpm: 10
15
- )
16
- end
17
-
18
- def role
19
- "<%= @agent_name.humanize %> Specialist"
20
- end
21
-
22
- def goal
23
- "Perform <%= @agent_name.humanize.downcase %> tasks efficiently and accurately"
24
- end
25
-
26
- def backstory
27
- <<~BACKSTORY
28
- You are a highly skilled <%= @agent_name.humanize.downcase %> specialist with extensive experience.
29
- Your expertise allows you to handle complex <%= @agent_name.humanize.downcase %> challenges effectively.
30
- BACKSTORY
31
- end
32
-
33
- def tools
34
- [
35
- # Add your tools here
36
- # RcrewAI::Tools::WebSearch.new,
37
- # RcrewAI::Tools::FileReader.new,
38
- # CustomTool.new
39
- ]
40
- end
41
-
42
- def to_agent
43
- @agent
44
- end
45
- end
@@ -1,72 +0,0 @@
1
- class <%= class_name %>Crew
2
- include RcrewAI::Rails::CrewBuilder
3
-
4
- def initialize
5
- @crew = RcrewAI::Rails::Crew.create!(
6
- name: "<%= file_name %>",
7
- description: "<%= crew_description %>",
8
- process_type: "<%= process_type %>",
9
- verbose: true,
10
- memory_enabled: false,
11
- cache_enabled: true
12
- )
13
-
14
- setup_agents
15
- setup_tasks
16
- end
17
-
18
- def execute(inputs = {})
19
- # Execute asynchronously via ActiveJob
20
- @crew.execute_async(inputs)
21
-
22
- # Or execute synchronously:
23
- # @crew.execute_sync(inputs)
24
- end
25
-
26
- private
27
-
28
- def setup_agents
29
- # Define your agents here
30
- # Example:
31
- # @researcher = @crew.agents.create!(
32
- # name: "researcher",
33
- # role: "Senior Research Analyst",
34
- # goal: "Uncover cutting-edge developments in AI and data science",
35
- # backstory: "You are an expert researcher with years of experience",
36
- # verbose: true,
37
- # allow_delegation: false
38
- # )
39
- <% options[:agents].each do |agent_name| %>
40
-
41
- @<%= agent_name.underscore %> = @crew.agents.create!(
42
- name: "<%= agent_name.underscore %>",
43
- role: "<%= agent_name.humanize %> Agent",
44
- goal: "Perform <%= agent_name.humanize.downcase %> tasks",
45
- backstory: "You are an expert <%= agent_name.humanize.downcase %> agent",
46
- verbose: true,
47
- allow_delegation: false
48
- )
49
- <% end %>
50
- end
51
-
52
- def setup_tasks
53
- # Define your tasks here
54
- # Example:
55
- # @research_task = @crew.tasks.create!(
56
- # description: "Research the latest AI trends",
57
- # expected_output: "A comprehensive report on AI trends",
58
- # position: 1
59
- # )
60
- # @research_task.agents << @researcher
61
-
62
- # Task dependencies can be set like:
63
- # @analysis_task.add_dependency(@research_task)
64
- end
65
-
66
- # Add any helper methods here
67
-
68
- # Example callback for task completion:
69
- # def task_completed(output)
70
- # Rails.logger.info "Task completed with output: #{output}"
71
- # end
72
- end
@@ -1,40 +0,0 @@
1
- require "rails/generators"
2
- require "rails/generators/migration"
3
-
4
- module RcrewAI
5
- module Rails
6
- module Generators
7
- class InstallGenerator < ::Rails::Generators::Base
8
- include ::Rails::Generators::Migration
9
-
10
- source_root File.expand_path("templates", __dir__)
11
-
12
- def self.next_migration_number(dirname)
13
- Time.now.utc.strftime("%Y%m%d%H%M%S")
14
- end
15
-
16
- def create_migration_file
17
- migration_template "create_rcrewai_tables.rb", "db/migrate/create_rcrewai_tables.rb", migration_class_name: "CreateRcrewaiTables"
18
- end
19
-
20
- def create_initializer
21
- template "rcrewai.rb", "config/initializers/rcrewai.rb"
22
- end
23
-
24
- def add_routes
25
- route "mount RcrewAI::Rails::Engine => '/rcrewai'"
26
- end
27
-
28
- def display_post_install_message
29
- say "\n✅ RcrewAI Rails has been installed!", :green
30
- say "\nNext steps:", :yellow
31
- say " 1. Run migrations: rails db:migrate"
32
- say " 2. Configure your settings in config/initializers/rcrewai.rb"
33
- say " 3. Set your LLM API keys in environment variables"
34
- say " 4. Visit /rcrewai for the web UI (if enabled)"
35
- say "\n"
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,109 +0,0 @@
1
- class CreateRcrewaiTables < ActiveRecord::Migration[7.0]
2
- def change
3
- create_table :rcrewai_crews do |t|
4
- t.string :name, null: false
5
- t.text :description
6
- t.string :process_type, default: "sequential"
7
- t.boolean :verbose, default: false
8
- t.boolean :memory_enabled, default: false
9
- t.boolean :cache_enabled, default: false
10
- t.integer :max_rpm
11
- t.string :manager_llm
12
- t.text :config
13
- t.text :memory
14
- t.boolean :active, default: true
15
-
16
- t.timestamps
17
- end
18
-
19
- add_index :rcrewai_crews, :name
20
- add_index :rcrewai_crews, :active
21
-
22
- create_table :rcrewai_agents do |t|
23
- t.references :crew, null: false, foreign_key: { to_table: :rcrewai_crews }
24
- t.string :name, null: false
25
- t.string :role, null: false
26
- t.text :goal
27
- t.text :backstory
28
- t.boolean :memory_enabled, default: false
29
- t.boolean :verbose, default: false
30
- t.boolean :allow_delegation, default: false
31
- t.text :tools
32
- t.integer :max_iterations, default: 25
33
- t.integer :max_rpm
34
- t.text :llm_config
35
- t.boolean :active, default: true
36
-
37
- t.timestamps
38
- end
39
-
40
- add_index :rcrewai_agents, :name
41
-
42
- create_table :rcrewai_tasks do |t|
43
- t.references :crew, null: false, foreign_key: { to_table: :rcrewai_crews }
44
- t.text :description, null: false
45
- t.text :expected_output, null: false
46
- t.boolean :async_execution, default: false
47
- t.text :context
48
- t.text :output_json
49
- t.text :output_pydantic
50
- t.string :output_file
51
- t.text :tools
52
- t.string :callback_class
53
- t.string :callback_method_name
54
- t.integer :position
55
-
56
- t.timestamps
57
- end
58
-
59
- add_index :rcrewai_tasks, :position
60
-
61
- create_table :rcrewai_task_assignments do |t|
62
- t.references :task, null: false, foreign_key: { to_table: :rcrewai_tasks }
63
- t.references :agent, null: false, foreign_key: { to_table: :rcrewai_agents }
64
-
65
- t.timestamps
66
- end
67
-
68
- add_index :rcrewai_task_assignments, [:task_id, :agent_id], unique: true
69
-
70
- create_table :rcrewai_task_dependencies do |t|
71
- t.references :task, null: false, foreign_key: { to_table: :rcrewai_tasks }
72
- t.references :dependency, null: false, foreign_key: { to_table: :rcrewai_tasks }
73
-
74
- t.timestamps
75
- end
76
-
77
- add_index :rcrewai_task_dependencies, [:task_id, :dependency_id], unique: true
78
-
79
- create_table :rcrewai_executions do |t|
80
- t.references :crew, null: false, foreign_key: { to_table: :rcrewai_crews }
81
- t.string :status, null: false
82
- t.text :inputs
83
- t.text :output
84
- t.string :error_message
85
- t.text :error_details
86
- t.datetime :started_at
87
- t.datetime :completed_at
88
- t.integer :duration_seconds
89
-
90
- t.timestamps
91
- end
92
-
93
- add_index :rcrewai_executions, :status
94
- add_index :rcrewai_executions, :created_at
95
-
96
- create_table :rcrewai_execution_logs do |t|
97
- t.references :execution, null: false, foreign_key: { to_table: :rcrewai_executions }
98
- t.string :level, null: false
99
- t.text :message, null: false
100
- t.text :details
101
- t.datetime :timestamp, null: false
102
-
103
- t.timestamps
104
- end
105
-
106
- add_index :rcrewai_execution_logs, :level
107
- add_index :rcrewai_execution_logs, :timestamp
108
- end
109
- end
@@ -1,53 +0,0 @@
1
- RcrewAI::Rails.configure do |config|
2
- # ActiveJob queue name for background processing
3
- # Default: "default"
4
- config.job_queue_name = ENV.fetch("RCREWAI_QUEUE", "default")
5
-
6
- # Enable web UI for monitoring crews
7
- # Default: true
8
- config.enable_web_ui = ENV.fetch("RCREWAI_WEB_UI", "true") == "true"
9
-
10
- # Use ActiveJob for async execution
11
- # Default: true
12
- config.async_execution = ENV.fetch("RCREWAI_ASYNC", "true") == "true"
13
-
14
- # Persistence backend (currently only :active_record supported)
15
- # Default: :active_record
16
- config.persistence_backend = :active_record
17
-
18
- # Default LLM provider
19
- # Options: "openai", "anthropic", "cohere", "groq", etc.
20
- config.default_llm_provider = ENV.fetch("RCREWAI_LLM_PROVIDER", "openai")
21
-
22
- # Default LLM model
23
- config.default_llm_model = ENV.fetch("RCREWAI_LLM_MODEL", "gpt-4")
24
-
25
- # Maximum retries for failed tasks
26
- # Default: 3
27
- config.max_retries = 3
28
-
29
- # Timeout for crew execution (in seconds)
30
- # Default: 300 (5 minutes)
31
- config.timeout = 300
32
-
33
- # Enable logging
34
- # Default: true
35
- config.enable_logging = true
36
-
37
- # Log level
38
- # Options: :debug, :info, :warn, :error
39
- # Default: :info
40
- config.log_level = :info
41
- end
42
-
43
- # Configure RcrewAI base gem if needed
44
- RcrewAI.configure do |config|
45
- # Set your API keys here or in environment variables
46
- # config.openai_api_key = ENV["OPENAI_API_KEY"]
47
- # config.anthropic_api_key = ENV["ANTHROPIC_API_KEY"]
48
- # config.groq_api_key = ENV["GROQ_API_KEY"]
49
-
50
- # Configure other RcrewAI settings
51
- # config.default_model = "gpt-4"
52
- # config.temperature = 0.7
53
- end