rcrewai-rails 0.5.1 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3002ce8deaeb0a940a8d3636d3e88e7c3209a7198682f8210b2f93e46998c2c6
4
- data.tar.gz: b37ea3a73e1d4a9d040293cf017d2790fd200745971c487a23c353cf1269c513
3
+ metadata.gz: 92b441696cd97a26aeca352027a7f8e4bdef639f34c452494599d51cb302b8b6
4
+ data.tar.gz: 00466757e89f9b12e46956dcdb38d67a40a938bb4a68d43e0292f79babfb6260
5
5
  SHA512:
6
- metadata.gz: e085f8cb656d8ff666a5796801268371ffcbbf9c80348b42ce82586e4d43cd91c419e1d32eae570eee3b75e757030a94732a584b88ccd2e51cef136c4f5f4933
7
- data.tar.gz: 16fdc1b89c8955bdf57e74e43354965c0ca820ee8b18f254bdf1580e20db4d5fdc5efcaa08d468ed129fb06c777c94c5a4071f883200cfaa47481a5688a1173c
6
+ metadata.gz: ec0516a3dba432d2b1a6308f89981a65905e110a4ef543ed5a516476ab62f47c9ba86cdc538288e52512841c34e01f5c2e9146970420d6435144922c4e2926a7
7
+ data.tar.gz: 26fb59a9bed5be7db14f7520a57d037c23e46bf572adf7946c98cf6fbe2d67fd3dd682e85942c84b38d9807e612aeb575b104f4c411f1dcd450f3de2cb8ab7b1
data/CHANGELOG.md CHANGED
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.6.0] - 2026-07-07
11
+
12
+ Tracks rcrewai 0.7.0: adds the `:consensual` crew process and agent-level
13
+ cognitive memory configuration, and requires `rcrewai ~> 0.7`. Includes a
14
+ schema cleanup that removes unused columns (see Removed + the `009` migration).
15
+
16
+ ### Added
17
+ - Support the rcrewai 0.7.0 `:consensual` crew process: `process_type:
18
+ "consensual"` is now valid, a nullable `consensus_agents` column is forwarded to
19
+ the core crew (defaulting to the core's 3 when unset), and the web UI + API
20
+ permit it. Existing sequential/hierarchical crews are unaffected.
21
+ - Agent memory configuration: enable rcrewai 0.6+ cognitive memory per agent via
22
+ the existing `memory_enabled` flag, with `memory_scope` /
23
+ `memory_short_term_limit` columns forwarded to the core agent. The embedder and
24
+ store come from `RcrewAI::Rails.config.default_memory_embedder` /
25
+ `default_memory_store` (set in a host initializer). Memory is off by default, so
26
+ existing agents are unaffected.
27
+
28
+ ### Changed
29
+ - Require `rcrewai ~> 0.7` (was `~> 0.5`).
30
+
31
+ ### Removed
32
+ - Dropped the unused `memory_enabled` and `memory` columns from `rcrewai_crews`.
33
+ Core memory is agent-level; these crew columns were never wired to anything.
34
+ **Migration note:** the `009` migration removes them (reversible).
35
+
10
36
  ## [0.5.1] - 2026-07-06
11
37
 
12
38
  ### Fixed
@@ -88,7 +114,8 @@ existing agents, tasks, and crews build unchanged.
88
114
  ### Changed
89
115
  - Rename generators from `rcrew_a_i` to `rcrewai` namespacing.
90
116
 
91
- [Unreleased]: https://github.com/gkosmo/rcrewai-rails/compare/v0.5.1...HEAD
117
+ [Unreleased]: https://github.com/gkosmo/rcrewai-rails/compare/v0.6.0...HEAD
118
+ [0.6.0]: https://github.com/gkosmo/rcrewai-rails/compare/v0.5.1...v0.6.0
92
119
  [0.5.1]: https://github.com/gkosmo/rcrewai-rails/compare/v0.5.0...v0.5.1
93
120
  [0.5.0]: https://github.com/gkosmo/rcrewai-rails/compare/v0.4.0...v0.5.0
94
121
  [0.4.0]: https://github.com/gkosmo/rcrewai-rails/compare/v0.3.1...v0.4.0
@@ -45,7 +45,7 @@ module RcrewAI
45
45
  def crew_params
46
46
  params.require(:crew).permit(
47
47
  :name, :description, :process_type, :verbose,
48
- :memory_enabled, :cache_enabled, :max_rpm, :manager_llm, :active
48
+ :cache_enabled, :max_rpm, :manager_llm, :consensus_agents, :active
49
49
  )
50
50
  end
51
51
  end
@@ -59,7 +59,7 @@ module RcrewAI
59
59
  def crew_params
60
60
  params.require(:crew).permit(
61
61
  :name, :description, :process_type, :verbose,
62
- :memory_enabled, :cache_enabled, :max_rpm, :manager_llm, :active
62
+ :cache_enabled, :max_rpm, :manager_llm, :consensus_agents, :active
63
63
  )
64
64
  end
65
65
  end
@@ -41,9 +41,24 @@ module RcrewAI
41
41
  opts[:llm] = llm_config.symbolize_keys if llm_config.present?
42
42
  sources = rcrew_knowledge_sources
43
43
  opts[:knowledge_sources] = sources if sources.any?
44
+ opts[:memory] = memory_options if memory_enabled
44
45
  opts
45
46
  end
46
47
 
48
+ # Agent memory config (rcrewai 0.6+). Scalars come from columns; embedder
49
+ # and store come from the engine configuration (set in a host initializer).
50
+ # May return {} — an empty hash still enables memory with core defaults.
51
+ def memory_options
52
+ m = {}
53
+ m[:scope] = memory_scope if memory_scope.present?
54
+ m[:short_term_limit] = memory_short_term_limit if memory_short_term_limit.present?
55
+ embedder = RcrewAI::Rails.config.default_memory_embedder
56
+ store = RcrewAI::Rails.config.default_memory_store
57
+ m[:embedder] = embedder if embedder
58
+ m[:store] = store if store
59
+ m
60
+ end
61
+
47
62
  def rcrew_knowledge_sources
48
63
  knowledge_sources.active.map(&:to_rcrew_source)
49
64
  end
@@ -9,10 +9,9 @@ module RcrewAI
9
9
  has_many :knowledge_sources, as: :owner, class_name: "RcrewAI::Rails::KnowledgeSource", dependent: :destroy
10
10
 
11
11
  validates :name, presence: true
12
- validates :process_type, inclusion: { in: %w[sequential hierarchical] }
12
+ validates :process_type, inclusion: { in: %w[sequential hierarchical consensual] }
13
13
 
14
14
  serialize :config, coder: JSON
15
- serialize :memory, coder: JSON
16
15
 
17
16
  scope :active, -> { where(active: true) }
18
17
  scope :with_agents, -> { includes(:agents) }
@@ -37,14 +36,16 @@ module RcrewAI
37
36
  crew
38
37
  end
39
38
 
40
- # rcrewai 0.5.0 planning options. Emit a key only when meaningfully set, so
41
- # an all-default crew constructs exactly as it did before.
39
+ # Crew construction options (planning, consensus_agents, knowledge). Emit a
40
+ # key only when meaningfully set, so an all-default crew constructs exactly
41
+ # as it did before.
42
42
  def crew_planning_options
43
43
  opts = {}
44
44
  opts[:planning] = planning if planning
45
45
  opts[:planning_llm] = planning_llm.to_sym if planning_llm.present?
46
46
  sources = rcrew_knowledge_sources
47
47
  opts[:knowledge_sources] = sources if sources.any?
48
+ opts[:consensus_agents] = consensus_agents if consensus_agents.present?
48
49
  opts
49
50
  end
50
51
 
@@ -34,7 +34,8 @@
34
34
  <%= form.select :process_type,
35
35
  options_for_select([
36
36
  ['Sequential', 'sequential'],
37
- ['Hierarchical', 'hierarchical']
37
+ ['Hierarchical', 'hierarchical'],
38
+ ['Consensual', 'consensual']
38
39
  ], @crew.process_type),
39
40
  { prompt: 'Select process type' },
40
41
  { class: "form-select" } %>
@@ -46,12 +47,6 @@
46
47
  <span class="form-help">Enable verbose logging</span>
47
48
  </div>
48
49
 
49
- <div class="form-group">
50
- <%= form.label :memory_enabled, class: "form-label" %>
51
- <%= form.check_box :memory_enabled, class: "form-checkbox" %>
52
- <span class="form-help">Enable memory for agents</span>
53
- </div>
54
-
55
50
  <div class="form-group">
56
51
  <%= form.label :cache_enabled, class: "form-label" %>
57
52
  <%= form.check_box :cache_enabled, class: "form-checkbox" %>
@@ -31,7 +31,8 @@
31
31
  <%= form.select :process_type,
32
32
  options_for_select([
33
33
  ['Sequential', 'sequential'],
34
- ['Hierarchical', 'hierarchical']
34
+ ['Hierarchical', 'hierarchical'],
35
+ ['Consensual', 'consensual']
35
36
  ], @crew.process_type),
36
37
  { prompt: 'Select process type' },
37
38
  { class: "form-select" } %>
@@ -43,12 +44,6 @@
43
44
  <span class="form-help">Enable verbose logging</span>
44
45
  </div>
45
46
 
46
- <div class="form-group">
47
- <%= form.label :memory_enabled, class: "form-label" %>
48
- <%= form.check_box :memory_enabled, class: "form-checkbox" %>
49
- <span class="form-help">Enable memory for agents</span>
50
- </div>
51
-
52
47
  <div class="form-group">
53
48
  <%= form.label :cache_enabled, class: "form-label" %>
54
49
  <%= form.check_box :cache_enabled, class: "form-checkbox" %>
@@ -14,9 +14,6 @@
14
14
  <div class="meta-item">
15
15
  <strong>Process Type:</strong> <%= @crew.process_type %>
16
16
  </div>
17
- <div class="meta-item">
18
- <strong>Memory:</strong> <%= @crew.memory_enabled ? "Enabled" : "Disabled" %>
19
- </div>
20
17
  <div class="meta-item">
21
18
  <strong>Cache:</strong> <%= @crew.cache_enabled ? "Enabled" : "Disabled" %>
22
19
  </div>
@@ -0,0 +1,5 @@
1
+ class AddConsensusAgentsToRcrewaiCrews < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :rcrewai_crews, :consensus_agents, :integer
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ class AddMemoryConfigToAgentsAndCleanCrews < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :rcrewai_agents, :memory_scope, :string
4
+ add_column :rcrewai_agents, :memory_short_term_limit, :integer
5
+
6
+ # Core memory is agent-level; these crew columns were never used.
7
+ remove_column :rcrewai_crews, :memory_enabled, :boolean, default: false
8
+ remove_column :rcrewai_crews, :memory, :text
9
+ end
10
+ end
@@ -7,7 +7,6 @@ class <%= class_name %>Crew
7
7
  description: "<%= crew_description %>",
8
8
  process_type: "<%= process_type %>",
9
9
  verbose: true,
10
- memory_enabled: false,
11
10
  cache_enabled: true
12
11
  )
13
12
 
@@ -5,10 +5,10 @@ class CreateRcrewaiTables < ActiveRecord::Migration[7.0]
5
5
  t.text :description
6
6
  t.string :process_type, default: "sequential"
7
7
  t.boolean :verbose, default: false
8
- t.boolean :memory_enabled, default: false
9
8
  t.boolean :cache_enabled, default: false
10
9
  t.integer :max_rpm
11
10
  t.string :manager_llm
11
+ t.integer :consensus_agents
12
12
  t.boolean :planning, default: false, null: false
13
13
  t.string :planning_llm
14
14
  t.string :before_kickoff_class
@@ -16,7 +16,6 @@ class CreateRcrewaiTables < ActiveRecord::Migration[7.0]
16
16
  t.string :after_kickoff_class
17
17
  t.string :after_kickoff_method
18
18
  t.text :config
19
- t.text :memory
20
19
  t.boolean :active, default: true
21
20
 
22
21
  t.timestamps
@@ -32,6 +31,8 @@ class CreateRcrewaiTables < ActiveRecord::Migration[7.0]
32
31
  t.text :goal
33
32
  t.text :backstory
34
33
  t.boolean :memory_enabled, default: false
34
+ t.string :memory_scope
35
+ t.integer :memory_short_term_limit
35
36
  t.boolean :verbose, default: false
36
37
  t.boolean :allow_delegation, default: false
37
38
  t.text :tools
@@ -3,7 +3,8 @@ module RcrewAI
3
3
  class Configuration
4
4
  attr_accessor :job_queue_name, :enable_web_ui, :persistence_backend,
5
5
  :default_llm_provider, :default_llm_model, :max_retries,
6
- :timeout, :enable_logging, :log_level, :async_execution
6
+ :timeout, :enable_logging, :log_level, :async_execution,
7
+ :default_memory_embedder, :default_memory_store
7
8
 
8
9
  def initialize
9
10
  @job_queue_name = "default"
@@ -16,6 +17,8 @@ module RcrewAI
16
17
  @enable_logging = true
17
18
  @log_level = :info
18
19
  @async_execution = true # Use ActiveJob for async by default
20
+ @default_memory_embedder = nil
21
+ @default_memory_store = nil
19
22
  end
20
23
  end
21
24
  end
@@ -26,11 +26,6 @@ module RcrewAI
26
26
  @process_type || :sequential
27
27
  end
28
28
 
29
- def memory_enabled(enabled = nil)
30
- @memory_enabled = enabled unless enabled.nil?
31
- @memory_enabled || false
32
- end
33
-
34
29
  def cache_enabled(enabled = nil)
35
30
  @cache_enabled = enabled unless enabled.nil?
36
31
  @cache_enabled || true
@@ -66,7 +61,6 @@ module RcrewAI
66
61
  RcrewAI::Rails::Crew.find_or_create_by(name: self.class.crew_name) do |crew|
67
62
  crew.description = self.class.crew_description
68
63
  crew.process_type = self.class.process_type.to_s
69
- crew.memory_enabled = self.class.memory_enabled
70
64
  crew.cache_enabled = self.class.cache_enabled
71
65
  crew.verbose = verbose?
72
66
  end
@@ -1,6 +1,6 @@
1
1
  module RcrewAI
2
2
  module Rails
3
- VERSION = "0.5.1"
3
+ VERSION = "0.6.0"
4
4
  Version = VERSION
5
5
  end
6
6
  end
@@ -45,7 +45,7 @@ Gem::Specification.new do |spec|
45
45
  spec.require_paths = ["lib"]
46
46
 
47
47
  # Core dependency
48
- spec.add_dependency "rcrewai", "~> 0.5"
48
+ spec.add_dependency "rcrewai", "~> 0.7"
49
49
 
50
50
  # Rails dependencies
51
51
  spec.add_dependency "rails", ">= 7.0.0"
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.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - gkosmo
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.5'
18
+ version: '0.7'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.5'
25
+ version: '0.7'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rails
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -249,6 +249,8 @@ files:
249
249
  - db/migrate/005_add_batch_id_to_rcrewai_executions.rb
250
250
  - db/migrate/006_create_rcrewai_knowledge_sources.rb
251
251
  - db/migrate/007_create_rcrewai_flows.rb
252
+ - db/migrate/008_add_consensus_agents_to_rcrewai_crews.rb
253
+ - db/migrate/009_add_memory_config_to_agents_and_clean_crews.rb
252
254
  - docs/index.html
253
255
  - lib/generators/rcrewai/rails/crew/crew_generator.rb
254
256
  - lib/generators/rcrewai/rails/crew/templates/agent.rb.erb