rcrewai 0.2.1 → 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 +2 -2
  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 +39 -39
  57. metadata +65 -47
@@ -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.1"
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,14 +1,14 @@
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 = "Build intelligent AI agent crews in Ruby - CrewAI implementation with multi-LLM support"
11
+ spec.summary = 'Build intelligent AI agent crews in Ruby - CrewAI implementation with multi-LLM support'
12
12
  spec.description = <<~DESC
13
13
  RCrewAI is a powerful Ruby framework for creating autonomous AI agent crews that collaborate to solve complex tasks.
14
14
  Build intelligent workflows with reasoning agents, tool usage, memory systems, and human oversight.
@@ -25,17 +25,17 @@ Gem::Specification.new do |spec|
25
25
  • Ruby-First Design: Built specifically for Ruby developers with idiomatic patterns
26
26
  • CLI Tools: Command-line interface for creating and managing AI crews
27
27
  DESC
28
- spec.homepage = "https://github.com/gkosmo/rcrewAI"
29
- spec.license = "MIT"
30
- spec.required_ruby_version = ">= 3.0.0"
28
+ spec.homepage = 'https://github.com/gkosmo/rcrewAI'
29
+ spec.license = 'MIT'
30
+ spec.required_ruby_version = '>= 3.0.0'
31
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"
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'
39
39
 
40
40
  # Specify which files should be added to the gem when it is released.
41
41
  spec.files = Dir.chdir(__dir__) do
@@ -44,30 +44,30 @@ Gem::Specification.new do |spec|
44
44
  f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
45
45
  end
46
46
  end
47
- spec.bindir = "bin"
48
- spec.executables = ["rcrewai"]
49
- spec.require_paths = ["lib"]
47
+ spec.bindir = 'bin'
48
+ spec.executables = ['rcrewai']
49
+ spec.require_paths = ['lib']
50
50
 
51
51
  # Runtime dependencies
52
- spec.add_dependency "thor", "~> 1.3"
53
- spec.add_dependency "faraday", "~> 2.7"
54
- spec.add_dependency "faraday-multipart", "~> 1.0"
55
- spec.add_dependency "json", "~> 2.6"
56
- spec.add_dependency "logger", "~> 1.5"
57
- spec.add_dependency "concurrent-ruby", "~> 1.2"
58
- spec.add_dependency "nokogiri", "~> 1.15"
59
- spec.add_dependency "ruby-openai", "~> 6.3"
60
- spec.add_dependency "anthropic", "~> 0.2"
61
- spec.add_dependency "pdf-reader", "~> 2.11"
62
- spec.add_dependency "mail", "~> 2.8"
63
-
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
+
64
64
  # Development dependencies
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 "webmock", "~> 3.18"
69
- spec.add_development_dependency "vcr", "~> 6.1"
70
- spec.add_development_dependency "simplecov", "~> 0.22"
71
- spec.add_development_dependency "rubocop", "~> 1.50"
72
- spec.add_development_dependency "rubocop-rspec", "~> 2.20"
73
- 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.1
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,33 +248,33 @@ 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'
277
+ version: '3.18'
279
278
  description: |
280
279
  RCrewAI is a powerful Ruby framework for creating autonomous AI agent crews that collaborate to solve complex tasks.
281
280
  Build intelligent workflows with reasoning agents, tool usage, memory systems, and human oversight.
@@ -298,6 +297,8 @@ executables:
298
297
  extensions: []
299
298
  extra_rdoc_files: []
300
299
  files:
300
+ - ".rubocop.yml"
301
+ - ".rubocop_todo.yml"
301
302
  - CHANGELOG.md
302
303
  - LICENSE
303
304
  - README.md
@@ -337,22 +338,31 @@ files:
337
338
  - docs/examples/tool-composition.md
338
339
  - docs/examples/web-scraping.md
339
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
340
344
  - docs/tutorials/advanced-agents.md
341
345
  - docs/tutorials/custom-tools.md
342
346
  - docs/tutorials/deployment.md
343
347
  - docs/tutorials/getting-started.md
344
348
  - docs/tutorials/index.md
345
349
  - docs/tutorials/multiple-crews.md
350
+ - docs/upgrading-to-0.3.md
346
351
  - examples/async_execution_example.rb
347
352
  - examples/hierarchical_crew_example.rb
348
353
  - examples/human_in_the_loop_example.rb
354
+ - examples/mcp_example.rb
355
+ - examples/native_tools_example.rb
356
+ - examples/streaming_example.rb
349
357
  - lib/rcrewai.rb
350
358
  - lib/rcrewai/agent.rb
351
359
  - lib/rcrewai/async_executor.rb
352
360
  - lib/rcrewai/cli.rb
353
361
  - lib/rcrewai/configuration.rb
354
362
  - lib/rcrewai/crew.rb
363
+ - lib/rcrewai/events.rb
355
364
  - lib/rcrewai/human_input.rb
365
+ - lib/rcrewai/legacy_react_runner.rb
356
366
  - lib/rcrewai/llm_client.rb
357
367
  - lib/rcrewai/llm_clients/anthropic.rb
358
368
  - lib/rcrewai/llm_clients/azure.rb
@@ -360,9 +370,19 @@ files:
360
370
  - lib/rcrewai/llm_clients/google.rb
361
371
  - lib/rcrewai/llm_clients/ollama.rb
362
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
363
378
  - lib/rcrewai/memory.rb
379
+ - lib/rcrewai/pricing.rb
364
380
  - lib/rcrewai/process.rb
381
+ - lib/rcrewai/provider_schema.rb
382
+ - lib/rcrewai/sse_parser.rb
365
383
  - lib/rcrewai/task.rb
384
+ - lib/rcrewai/tool_runner.rb
385
+ - lib/rcrewai/tool_schema.rb
366
386
  - lib/rcrewai/tools/base.rb
367
387
  - lib/rcrewai/tools/code_executor.rb
368
388
  - lib/rcrewai/tools/email_sender.rb
@@ -384,7 +404,6 @@ metadata:
384
404
  bug_tracker_uri: https://github.com/gkosmo/rcrewAI/issues
385
405
  wiki_uri: https://github.com/gkosmo/rcrewAI/wiki
386
406
  rubygems_mfa_required: 'true'
387
- post_install_message:
388
407
  rdoc_options: []
389
408
  require_paths:
390
409
  - lib
@@ -399,8 +418,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
418
  - !ruby/object:Gem::Version
400
419
  version: '0'
401
420
  requirements: []
402
- rubygems_version: 3.4.10
403
- signing_key:
421
+ rubygems_version: 3.6.9
404
422
  specification_version: 4
405
423
  summary: Build intelligent AI agent crews in Ruby - CrewAI implementation with multi-LLM
406
424
  support