rcrewai 0.2.0 → 0.3.0

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/.rubocop_todo.yml +99 -0
  4. data/CHANGELOG.md +24 -0
  5. data/README.md +33 -1
  6. data/Rakefile +53 -53
  7. data/bin/rcrewai +3 -3
  8. data/docs/mcp.md +109 -0
  9. data/docs/superpowers/plans/2026-05-11-llm-modernization.md +2753 -0
  10. data/docs/superpowers/specs/2026-05-11-llm-modernization-design.md +479 -0
  11. data/docs/upgrading-to-0.3.md +163 -0
  12. data/examples/async_execution_example.rb +82 -81
  13. data/examples/hierarchical_crew_example.rb +68 -72
  14. data/examples/human_in_the_loop_example.rb +73 -74
  15. data/examples/mcp_example.rb +48 -0
  16. data/examples/native_tools_example.rb +64 -0
  17. data/examples/streaming_example.rb +56 -0
  18. data/lib/rcrewai/agent.rb +148 -287
  19. data/lib/rcrewai/async_executor.rb +43 -43
  20. data/lib/rcrewai/cli.rb +11 -11
  21. data/lib/rcrewai/configuration.rb +14 -9
  22. data/lib/rcrewai/crew.rb +56 -39
  23. data/lib/rcrewai/events.rb +30 -0
  24. data/lib/rcrewai/human_input.rb +104 -114
  25. data/lib/rcrewai/legacy_react_runner.rb +172 -0
  26. data/lib/rcrewai/llm_client.rb +1 -1
  27. data/lib/rcrewai/llm_clients/anthropic.rb +174 -54
  28. data/lib/rcrewai/llm_clients/azure.rb +23 -128
  29. data/lib/rcrewai/llm_clients/base.rb +11 -7
  30. data/lib/rcrewai/llm_clients/google.rb +159 -95
  31. data/lib/rcrewai/llm_clients/ollama.rb +150 -106
  32. data/lib/rcrewai/llm_clients/openai.rb +140 -63
  33. data/lib/rcrewai/mcp/client.rb +101 -0
  34. data/lib/rcrewai/mcp/tool_adapter.rb +59 -0
  35. data/lib/rcrewai/mcp/transport/http.rb +53 -0
  36. data/lib/rcrewai/mcp/transport/stdio.rb +55 -0
  37. data/lib/rcrewai/mcp.rb +8 -0
  38. data/lib/rcrewai/memory.rb +45 -37
  39. data/lib/rcrewai/pricing.rb +34 -0
  40. data/lib/rcrewai/process.rb +86 -95
  41. data/lib/rcrewai/provider_schema.rb +38 -0
  42. data/lib/rcrewai/sse_parser.rb +55 -0
  43. data/lib/rcrewai/task.rb +56 -64
  44. data/lib/rcrewai/tool_runner.rb +132 -0
  45. data/lib/rcrewai/tool_schema.rb +97 -0
  46. data/lib/rcrewai/tools/base.rb +98 -37
  47. data/lib/rcrewai/tools/code_executor.rb +71 -74
  48. data/lib/rcrewai/tools/email_sender.rb +70 -78
  49. data/lib/rcrewai/tools/file_reader.rb +38 -30
  50. data/lib/rcrewai/tools/file_writer.rb +40 -38
  51. data/lib/rcrewai/tools/pdf_processor.rb +115 -130
  52. data/lib/rcrewai/tools/sql_database.rb +58 -55
  53. data/lib/rcrewai/tools/web_search.rb +26 -25
  54. data/lib/rcrewai/version.rb +2 -2
  55. data/lib/rcrewai.rb +18 -10
  56. data/rcrewai.gemspec +55 -36
  57. metadata +86 -50
@@ -8,24 +8,29 @@ require 'uri'
8
8
  module RCrewAI
9
9
  module Tools
10
10
  class WebSearch < Base
11
+ tool_name 'web_search'
12
+ description 'Search the web using DuckDuckGo and return top results'
13
+ param :query, type: :string, required: true,
14
+ description: 'Search query'
15
+ param :max_results, type: :integer, default: 5,
16
+ description: 'Number of results to return (1-25)'
17
+
11
18
  def initialize(**options)
12
19
  super()
13
- @name = 'websearch'
14
- @description = 'Search the web for information using DuckDuckGo'
15
20
  @max_results = options.fetch(:max_results, 5)
16
21
  @timeout = options.fetch(:timeout, 30)
17
22
  end
18
23
 
19
24
  def execute(**params)
20
25
  validate_params!(params, required: [:query], optional: [:max_results])
21
-
26
+
22
27
  query = params[:query]
23
28
  max_results = params[:max_results] || @max_results
24
-
29
+
25
30
  begin
26
31
  search_results = perform_search(query, max_results)
27
32
  format_results(search_results)
28
- rescue => e
33
+ rescue StandardError => e
29
34
  "Search failed: #{e.message}"
30
35
  end
31
36
  end
@@ -36,14 +41,12 @@ module RCrewAI
36
41
  # Use DuckDuckGo HTML search (no API key required)
37
42
  encoded_query = URI.encode_www_form_component(query)
38
43
  url = "https://html.duckduckgo.com/html/?q=#{encoded_query}"
39
-
44
+
40
45
  response = http_client.get(url, {}, headers)
41
-
42
- if response.success?
43
- parse_duckduckgo_results(response.body, max_results)
44
- else
45
- raise ToolError, "Search request failed with status: #{response.status}"
46
- end
46
+
47
+ raise ToolError, "Search request failed with status: #{response.status}" unless response.success?
48
+
49
+ parse_duckduckgo_results(response.body, max_results)
47
50
  end
48
51
 
49
52
  def parse_duckduckgo_results(html, max_results)
@@ -62,13 +65,13 @@ module RCrewAI
62
65
  # Clean up URL (DuckDuckGo sometimes wraps URLs)
63
66
  url = clean_duckduckgo_url(url) if url
64
67
 
65
- if title.present? && url.present?
66
- results << {
67
- title: title,
68
- url: url,
69
- snippet: snippet
70
- }
71
- end
68
+ next unless title.present? && url.present?
69
+
70
+ results << {
71
+ title: title,
72
+ url: url,
73
+ snippet: snippet
74
+ }
72
75
  end
73
76
 
74
77
  results
@@ -80,17 +83,15 @@ module RCrewAI
80
83
  # Extract the actual URL from the redirect
81
84
  uri = URI.parse("https://duckduckgo.com#{url}")
82
85
  query_params = URI.decode_www_form(uri.query || '')
83
- actual_url = query_params.find { |k, v| k == 'uddg' }&.last
86
+ actual_url = query_params.find { |k, _v| k == 'uddg' }&.last
84
87
  return actual_url if actual_url
85
88
  end
86
-
89
+
87
90
  url
88
91
  end
89
92
 
90
93
  def format_results(results)
91
- if results.empty?
92
- return "No search results found."
93
- end
94
+ return 'No search results found.' if results.empty?
94
95
 
95
96
  formatted = "Search Results:\n\n"
96
97
  results.each_with_index do |result, index|
@@ -128,4 +129,4 @@ class String
128
129
  def present?
129
130
  !empty?
130
131
  end
131
- end
132
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RCrewAI
4
- VERSION = "0.2.0"
5
- end
4
+ VERSION = '0.3.0'
5
+ end
data/lib/rcrewai.rb CHANGED
@@ -1,26 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "thor"
4
- require "faraday"
5
- require "json"
6
- require "logger"
7
- require "concurrent"
8
- require "nokogiri"
3
+ require 'thor'
4
+ require 'faraday'
5
+ require 'json'
6
+ require 'logger'
7
+ require 'concurrent'
8
+ require 'nokogiri'
9
9
 
10
10
  module RCrewAI
11
11
  class Error < StandardError; end
12
-
12
+
13
13
  def self.root
14
- @root ||= Pathname.new(File.expand_path("..", __dir__))
14
+ @root ||= Pathname.new(File.expand_path('..', __dir__))
15
15
  end
16
16
  end
17
17
 
18
18
  # Load all components manually to ensure proper order
19
19
  require_relative 'rcrewai/version'
20
20
  require_relative 'rcrewai/configuration'
21
+ require_relative 'rcrewai/events'
22
+ require_relative 'rcrewai/sse_parser'
23
+ require_relative 'rcrewai/pricing'
21
24
  require_relative 'rcrewai/llm_client'
22
25
  require_relative 'rcrewai/memory'
23
26
  require_relative 'rcrewai/human_input'
27
+ require_relative 'rcrewai/tool_schema'
28
+ require_relative 'rcrewai/provider_schema'
24
29
  require_relative 'rcrewai/tools/base'
25
30
  require_relative 'rcrewai/tools/web_search'
26
31
  require_relative 'rcrewai/tools/file_reader'
@@ -29,8 +34,11 @@ require_relative 'rcrewai/tools/sql_database'
29
34
  require_relative 'rcrewai/tools/email_sender'
30
35
  require_relative 'rcrewai/tools/code_executor'
31
36
  require_relative 'rcrewai/tools/pdf_processor'
37
+ require_relative 'rcrewai/tool_runner'
38
+ require_relative 'rcrewai/legacy_react_runner'
32
39
  require_relative 'rcrewai/process'
33
40
  require_relative 'rcrewai/async_executor'
34
41
  require_relative 'rcrewai/agent'
35
- require_relative 'rcrewai/task'
36
- require_relative 'rcrewai/crew'
42
+ require_relative 'rcrewai/task'
43
+ require_relative 'rcrewai/crew'
44
+ require_relative 'rcrewai/mcp'
data/rcrewai.gemspec CHANGED
@@ -1,22 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/rcrewai/version"
3
+ require_relative 'lib/rcrewai/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "rcrewai"
6
+ spec.name = 'rcrewai'
7
7
  spec.version = RCrewAI::VERSION
8
- spec.authors = ["gkosmo"]
9
- spec.email = ["gkosmo1@hotmail.com"]
8
+ spec.authors = ['gkosmo']
9
+ spec.email = ['gkosmo1@hotmail.com']
10
10
 
11
- spec.summary = "Ruby implementation of CrewAI framework"
12
- spec.description = "A Ruby gem for building AI agent crews that work together to accomplish tasks"
13
- spec.homepage = "https://github.com/gkosmo/rcrewAI"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 3.0.0"
11
+ spec.summary = 'Build intelligent AI agent crews in Ruby - CrewAI implementation with multi-LLM support'
12
+ spec.description = <<~DESC
13
+ RCrewAI is a powerful Ruby framework for creating autonomous AI agent crews that collaborate to solve complex tasks.
14
+ Build intelligent workflows with reasoning agents, tool usage, memory systems, and human oversight.
16
15
 
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = spec.homepage
19
- spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
16
+ Key Features:
17
+ Multi-Agent Orchestration: Create crews of specialized AI agents that work together
18
+ Multi-LLM Support: OpenAI GPT-4, Anthropic Claude, Google Gemini, Azure OpenAI, Ollama
19
+ • Rich Tool Ecosystem: Web search, file operations, SQL databases, email, code execution, PDF processing
20
+ • Agent Memory: Short-term and long-term memory for learning from past executions
21
+ • Human-in-the-Loop: Interactive approval workflows and collaborative decision making
22
+ • Advanced Task Management: Dependencies, retries, async execution, and context sharing
23
+ • Hierarchical Teams: Manager agents that coordinate and delegate to specialist agents
24
+ • Production Ready: Security controls, error handling, comprehensive logging, and monitoring
25
+ • Ruby-First Design: Built specifically for Ruby developers with idiomatic patterns
26
+ • CLI Tools: Command-line interface for creating and managing AI crews
27
+ DESC
28
+ spec.homepage = 'https://github.com/gkosmo/rcrewAI'
29
+ spec.license = 'MIT'
30
+ spec.required_ruby_version = '>= 3.0.0'
31
+
32
+ spec.metadata['homepage_uri'] = spec.homepage
33
+ spec.metadata['source_code_uri'] = spec.homepage
34
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
35
+ spec.metadata['documentation_uri'] = 'https://gkosmo.github.io/rcrewAI/'
36
+ spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
37
+ spec.metadata['wiki_uri'] = "#{spec.homepage}/wiki"
38
+ spec.metadata['rubygems_mfa_required'] = 'true'
20
39
 
21
40
  # Specify which files should be added to the gem when it is released.
22
41
  spec.files = Dir.chdir(__dir__) do
@@ -25,30 +44,30 @@ Gem::Specification.new do |spec|
25
44
  f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
26
45
  end
27
46
  end
28
- spec.bindir = "bin"
29
- spec.executables = ["rcrewai"]
30
- spec.require_paths = ["lib"]
47
+ spec.bindir = 'bin'
48
+ spec.executables = ['rcrewai']
49
+ spec.require_paths = ['lib']
31
50
 
32
51
  # Runtime dependencies
33
- spec.add_dependency "thor", "~> 1.3"
34
- spec.add_dependency "faraday", "~> 2.7"
35
- spec.add_dependency "faraday-multipart", "~> 1.0"
36
- spec.add_dependency "json", "~> 2.6"
37
- spec.add_dependency "logger", "~> 1.5"
38
- spec.add_dependency "concurrent-ruby", "~> 1.2"
39
- spec.add_dependency "nokogiri", "~> 1.15"
40
- spec.add_dependency "ruby-openai", "~> 6.3"
41
- spec.add_dependency "anthropic", "~> 0.2"
42
- spec.add_dependency "pdf-reader", "~> 2.11"
43
- spec.add_dependency "mail", "~> 2.8"
44
-
52
+ spec.add_dependency 'anthropic', '~> 0.2'
53
+ spec.add_dependency 'concurrent-ruby', '~> 1.2'
54
+ spec.add_dependency 'faraday', '~> 2.7'
55
+ spec.add_dependency 'faraday-multipart', '~> 1.0'
56
+ spec.add_dependency 'json', '~> 2.6'
57
+ spec.add_dependency 'logger', '~> 1.5'
58
+ spec.add_dependency 'mail', '~> 2.8'
59
+ spec.add_dependency 'nokogiri', '~> 1.15'
60
+ spec.add_dependency 'pdf-reader', '~> 2.11'
61
+ spec.add_dependency 'ruby-openai', '~> 6.3'
62
+ spec.add_dependency 'thor', '~> 1.3'
63
+
45
64
  # Development dependencies
46
- spec.add_development_dependency "bundler", "~> 2.0"
47
- spec.add_development_dependency "rake", "~> 13.0"
48
- spec.add_development_dependency "rspec", "~> 3.12"
49
- spec.add_development_dependency "webmock", "~> 3.18"
50
- spec.add_development_dependency "vcr", "~> 6.1"
51
- spec.add_development_dependency "simplecov", "~> 0.22"
52
- spec.add_development_dependency "rubocop", "~> 1.50"
53
- spec.add_development_dependency "rubocop-rspec", "~> 2.20"
54
- end
65
+ spec.add_development_dependency 'bundler', '~> 2.0'
66
+ spec.add_development_dependency 'rake', '~> 13.0'
67
+ spec.add_development_dependency 'rspec', '~> 3.12'
68
+ spec.add_development_dependency 'rubocop', '~> 1.50'
69
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.20'
70
+ spec.add_development_dependency 'simplecov', '~> 0.22'
71
+ spec.add_development_dependency 'vcr', '~> 6.1'
72
+ spec.add_development_dependency 'webmock', '~> 3.18'
73
+ end
metadata CHANGED
@@ -1,29 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcrewai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - gkosmo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-08-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: thor
13
+ name: anthropic
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '1.3'
18
+ version: '0.2'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '1.3'
25
+ version: '0.2'
26
+ - !ruby/object:Gem::Dependency
27
+ name: concurrent-ruby
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.2'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.2'
27
40
  - !ruby/object:Gem::Dependency
28
41
  name: faraday
29
42
  requirement: !ruby/object:Gem::Requirement
@@ -81,19 +94,19 @@ dependencies:
81
94
  - !ruby/object:Gem::Version
82
95
  version: '1.5'
83
96
  - !ruby/object:Gem::Dependency
84
- name: concurrent-ruby
97
+ name: mail
85
98
  requirement: !ruby/object:Gem::Requirement
86
99
  requirements:
87
100
  - - "~>"
88
101
  - !ruby/object:Gem::Version
89
- version: '1.2'
102
+ version: '2.8'
90
103
  type: :runtime
91
104
  prerelease: false
92
105
  version_requirements: !ruby/object:Gem::Requirement
93
106
  requirements:
94
107
  - - "~>"
95
108
  - !ruby/object:Gem::Version
96
- version: '1.2'
109
+ version: '2.8'
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: nokogiri
99
112
  requirement: !ruby/object:Gem::Requirement
@@ -109,61 +122,47 @@ dependencies:
109
122
  - !ruby/object:Gem::Version
110
123
  version: '1.15'
111
124
  - !ruby/object:Gem::Dependency
112
- name: ruby-openai
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '6.3'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '6.3'
125
- - !ruby/object:Gem::Dependency
126
- name: anthropic
125
+ name: pdf-reader
127
126
  requirement: !ruby/object:Gem::Requirement
128
127
  requirements:
129
128
  - - "~>"
130
129
  - !ruby/object:Gem::Version
131
- version: '0.2'
130
+ version: '2.11'
132
131
  type: :runtime
133
132
  prerelease: false
134
133
  version_requirements: !ruby/object:Gem::Requirement
135
134
  requirements:
136
135
  - - "~>"
137
136
  - !ruby/object:Gem::Version
138
- version: '0.2'
137
+ version: '2.11'
139
138
  - !ruby/object:Gem::Dependency
140
- name: pdf-reader
139
+ name: ruby-openai
141
140
  requirement: !ruby/object:Gem::Requirement
142
141
  requirements:
143
142
  - - "~>"
144
143
  - !ruby/object:Gem::Version
145
- version: '2.11'
144
+ version: '6.3'
146
145
  type: :runtime
147
146
  prerelease: false
148
147
  version_requirements: !ruby/object:Gem::Requirement
149
148
  requirements:
150
149
  - - "~>"
151
150
  - !ruby/object:Gem::Version
152
- version: '2.11'
151
+ version: '6.3'
153
152
  - !ruby/object:Gem::Dependency
154
- name: mail
153
+ name: thor
155
154
  requirement: !ruby/object:Gem::Requirement
156
155
  requirements:
157
156
  - - "~>"
158
157
  - !ruby/object:Gem::Version
159
- version: '2.8'
158
+ version: '1.3'
160
159
  type: :runtime
161
160
  prerelease: false
162
161
  version_requirements: !ruby/object:Gem::Requirement
163
162
  requirements:
164
163
  - - "~>"
165
164
  - !ruby/object:Gem::Version
166
- version: '2.8'
165
+ version: '1.3'
167
166
  - !ruby/object:Gem::Dependency
168
167
  name: bundler
169
168
  requirement: !ruby/object:Gem::Requirement
@@ -207,33 +206,33 @@ dependencies:
207
206
  - !ruby/object:Gem::Version
208
207
  version: '3.12'
209
208
  - !ruby/object:Gem::Dependency
210
- name: webmock
209
+ name: rubocop
211
210
  requirement: !ruby/object:Gem::Requirement
212
211
  requirements:
213
212
  - - "~>"
214
213
  - !ruby/object:Gem::Version
215
- version: '3.18'
214
+ version: '1.50'
216
215
  type: :development
217
216
  prerelease: false
218
217
  version_requirements: !ruby/object:Gem::Requirement
219
218
  requirements:
220
219
  - - "~>"
221
220
  - !ruby/object:Gem::Version
222
- version: '3.18'
221
+ version: '1.50'
223
222
  - !ruby/object:Gem::Dependency
224
- name: vcr
223
+ name: rubocop-rspec
225
224
  requirement: !ruby/object:Gem::Requirement
226
225
  requirements:
227
226
  - - "~>"
228
227
  - !ruby/object:Gem::Version
229
- version: '6.1'
228
+ version: '2.20'
230
229
  type: :development
231
230
  prerelease: false
232
231
  version_requirements: !ruby/object:Gem::Requirement
233
232
  requirements:
234
233
  - - "~>"
235
234
  - !ruby/object:Gem::Version
236
- version: '6.1'
235
+ version: '2.20'
237
236
  - !ruby/object:Gem::Dependency
238
237
  name: simplecov
239
238
  requirement: !ruby/object:Gem::Requirement
@@ -249,35 +248,48 @@ dependencies:
249
248
  - !ruby/object:Gem::Version
250
249
  version: '0.22'
251
250
  - !ruby/object:Gem::Dependency
252
- name: rubocop
251
+ name: vcr
253
252
  requirement: !ruby/object:Gem::Requirement
254
253
  requirements:
255
254
  - - "~>"
256
255
  - !ruby/object:Gem::Version
257
- version: '1.50'
256
+ version: '6.1'
258
257
  type: :development
259
258
  prerelease: false
260
259
  version_requirements: !ruby/object:Gem::Requirement
261
260
  requirements:
262
261
  - - "~>"
263
262
  - !ruby/object:Gem::Version
264
- version: '1.50'
263
+ version: '6.1'
265
264
  - !ruby/object:Gem::Dependency
266
- name: rubocop-rspec
265
+ name: webmock
267
266
  requirement: !ruby/object:Gem::Requirement
268
267
  requirements:
269
268
  - - "~>"
270
269
  - !ruby/object:Gem::Version
271
- version: '2.20'
270
+ version: '3.18'
272
271
  type: :development
273
272
  prerelease: false
274
273
  version_requirements: !ruby/object:Gem::Requirement
275
274
  requirements:
276
275
  - - "~>"
277
276
  - !ruby/object:Gem::Version
278
- version: '2.20'
279
- description: A Ruby gem for building AI agent crews that work together to accomplish
280
- tasks
277
+ version: '3.18'
278
+ description: |
279
+ RCrewAI is a powerful Ruby framework for creating autonomous AI agent crews that collaborate to solve complex tasks.
280
+ Build intelligent workflows with reasoning agents, tool usage, memory systems, and human oversight.
281
+
282
+ Key Features:
283
+ • Multi-Agent Orchestration: Create crews of specialized AI agents that work together
284
+ • Multi-LLM Support: OpenAI GPT-4, Anthropic Claude, Google Gemini, Azure OpenAI, Ollama
285
+ • Rich Tool Ecosystem: Web search, file operations, SQL databases, email, code execution, PDF processing
286
+ • Agent Memory: Short-term and long-term memory for learning from past executions
287
+ • Human-in-the-Loop: Interactive approval workflows and collaborative decision making
288
+ • Advanced Task Management: Dependencies, retries, async execution, and context sharing
289
+ • Hierarchical Teams: Manager agents that coordinate and delegate to specialist agents
290
+ • Production Ready: Security controls, error handling, comprehensive logging, and monitoring
291
+ • Ruby-First Design: Built specifically for Ruby developers with idiomatic patterns
292
+ • CLI Tools: Command-line interface for creating and managing AI crews
281
293
  email:
282
294
  - gkosmo1@hotmail.com
283
295
  executables:
@@ -285,6 +297,8 @@ executables:
285
297
  extensions: []
286
298
  extra_rdoc_files: []
287
299
  files:
300
+ - ".rubocop.yml"
301
+ - ".rubocop_todo.yml"
288
302
  - CHANGELOG.md
289
303
  - LICENSE
290
304
  - README.md
@@ -324,22 +338,31 @@ files:
324
338
  - docs/examples/tool-composition.md
325
339
  - docs/examples/web-scraping.md
326
340
  - docs/index.md
341
+ - docs/mcp.md
342
+ - docs/superpowers/plans/2026-05-11-llm-modernization.md
343
+ - docs/superpowers/specs/2026-05-11-llm-modernization-design.md
327
344
  - docs/tutorials/advanced-agents.md
328
345
  - docs/tutorials/custom-tools.md
329
346
  - docs/tutorials/deployment.md
330
347
  - docs/tutorials/getting-started.md
331
348
  - docs/tutorials/index.md
332
349
  - docs/tutorials/multiple-crews.md
350
+ - docs/upgrading-to-0.3.md
333
351
  - examples/async_execution_example.rb
334
352
  - examples/hierarchical_crew_example.rb
335
353
  - examples/human_in_the_loop_example.rb
354
+ - examples/mcp_example.rb
355
+ - examples/native_tools_example.rb
356
+ - examples/streaming_example.rb
336
357
  - lib/rcrewai.rb
337
358
  - lib/rcrewai/agent.rb
338
359
  - lib/rcrewai/async_executor.rb
339
360
  - lib/rcrewai/cli.rb
340
361
  - lib/rcrewai/configuration.rb
341
362
  - lib/rcrewai/crew.rb
363
+ - lib/rcrewai/events.rb
342
364
  - lib/rcrewai/human_input.rb
365
+ - lib/rcrewai/legacy_react_runner.rb
343
366
  - lib/rcrewai/llm_client.rb
344
367
  - lib/rcrewai/llm_clients/anthropic.rb
345
368
  - lib/rcrewai/llm_clients/azure.rb
@@ -347,9 +370,19 @@ files:
347
370
  - lib/rcrewai/llm_clients/google.rb
348
371
  - lib/rcrewai/llm_clients/ollama.rb
349
372
  - lib/rcrewai/llm_clients/openai.rb
373
+ - lib/rcrewai/mcp.rb
374
+ - lib/rcrewai/mcp/client.rb
375
+ - lib/rcrewai/mcp/tool_adapter.rb
376
+ - lib/rcrewai/mcp/transport/http.rb
377
+ - lib/rcrewai/mcp/transport/stdio.rb
350
378
  - lib/rcrewai/memory.rb
379
+ - lib/rcrewai/pricing.rb
351
380
  - lib/rcrewai/process.rb
381
+ - lib/rcrewai/provider_schema.rb
382
+ - lib/rcrewai/sse_parser.rb
352
383
  - lib/rcrewai/task.rb
384
+ - lib/rcrewai/tool_runner.rb
385
+ - lib/rcrewai/tool_schema.rb
353
386
  - lib/rcrewai/tools/base.rb
354
387
  - lib/rcrewai/tools/code_executor.rb
355
388
  - lib/rcrewai/tools/email_sender.rb
@@ -367,7 +400,10 @@ metadata:
367
400
  homepage_uri: https://github.com/gkosmo/rcrewAI
368
401
  source_code_uri: https://github.com/gkosmo/rcrewAI
369
402
  changelog_uri: https://github.com/gkosmo/rcrewAI/blob/main/CHANGELOG.md
370
- post_install_message:
403
+ documentation_uri: https://gkosmo.github.io/rcrewAI/
404
+ bug_tracker_uri: https://github.com/gkosmo/rcrewAI/issues
405
+ wiki_uri: https://github.com/gkosmo/rcrewAI/wiki
406
+ rubygems_mfa_required: 'true'
371
407
  rdoc_options: []
372
408
  require_paths:
373
409
  - lib
@@ -382,8 +418,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
382
418
  - !ruby/object:Gem::Version
383
419
  version: '0'
384
420
  requirements: []
385
- rubygems_version: 3.4.10
386
- signing_key:
421
+ rubygems_version: 3.6.9
387
422
  specification_version: 4
388
- summary: Ruby implementation of CrewAI framework
423
+ summary: Build intelligent AI agent crews in Ruby - CrewAI implementation with multi-LLM
424
+ support
389
425
  test_files: []