From 2bf68e5be8fd51cdab9a912683db713230d28c3e Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Sat, 18 Apr 2026 22:10:10 -0300 Subject: [PATCH] feat(captain-memory): add feature flag helpers on Account --- app/models/concerns/captain_featurable.rb | 8 ++++++ .../concerns/captain_featurable_spec.rb | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/app/models/concerns/captain_featurable.rb b/app/models/concerns/captain_featurable.rb index af73fded3..344f86086 100644 --- a/app/models/concerns/captain_featurable.rb +++ b/app/models/concerns/captain_featurable.rb @@ -27,6 +27,14 @@ module CaptainFeaturable }.with_indifferent_access end + def captain_contact_memory_extraction_enabled? + custom_attributes.fetch('captain_contact_memory_extraction_enabled', false) == true + end + + def captain_contact_memory_recall_enabled? + custom_attributes.fetch('captain_contact_memory_recall_enabled', false) == true + end + private def captain_models_with_defaults diff --git a/spec/models/concerns/captain_featurable_spec.rb b/spec/models/concerns/captain_featurable_spec.rb index 7221ad055..93cb2ea3d 100644 --- a/spec/models/concerns/captain_featurable_spec.rb +++ b/spec/models/concerns/captain_featurable_spec.rb @@ -112,6 +112,34 @@ RSpec.describe CaptainFeaturable do end end + describe '#captain_contact_memory_extraction_enabled?' do + let(:account) { create(:account) } + + it 'returns false by default' do + expect(account.captain_contact_memory_extraction_enabled?).to be(false) + end + + it 'returns true when flag set in custom_attributes' do + account.custom_attributes = { 'captain_contact_memory_extraction_enabled' => true } + account.save! + expect(account.captain_contact_memory_extraction_enabled?).to be(true) + end + end + + describe '#captain_contact_memory_recall_enabled?' do + let(:account) { create(:account) } + + it 'returns false by default' do + expect(account.captain_contact_memory_recall_enabled?).to be(false) + end + + it 'returns true when flag set in custom_attributes' do + account.custom_attributes = { 'captain_contact_memory_recall_enabled' => true } + account.save! + expect(account.captain_contact_memory_recall_enabled?).to be(true) + end + end + describe 'integration with existing captain_preferences' do it 'enabled? methods use the same logic as captain_preferences[:features]' do account.update!(captain_features: { 'editor' => true, 'copilot' => true })