Module: Legion::Extensions::Apollo::Helpers::Capability
- Defined in:
- lib/legion/extensions/apollo/helpers/capability.rb
Constant Summary collapse
- EMBEDDING_MODELS =
%w[mxbai-embed-large bge-large snowflake-arctic-embed].freeze
Class Method Summary collapse
- .apollo_write_enabled? ⇒ Boolean
- .can_embed? ⇒ Boolean
- .can_write? ⇒ Boolean
- .check_db_write_privilege ⇒ Object
- .cloud_embedding_configured? ⇒ Boolean
- .log ⇒ Object
- .ollama_embedding_available? ⇒ Boolean
- .reset! ⇒ Object
Class Method Details
.apollo_write_enabled? ⇒ Boolean
35 36 37 38 39 40 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 35 def apollo_write_enabled? Legion::Settings.dig(:data, :apollo_write) == true rescue StandardError => e log.warn("Apollo Capability.apollo_write_enabled? failed: #{e.}") false end |
.can_embed? ⇒ Boolean
16 17 18 19 20 21 22 23 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 16 def return false unless defined?(Legion::LLM) && Legion::LLM.started? || rescue StandardError => e log.warn("Apollo Capability.can_embed? failed: #{e.}") false end |
.can_write? ⇒ Boolean
25 26 27 28 29 30 31 32 33 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 25 def can_write? return false unless apollo_write_enabled? return false unless defined?(Legion::Data) && Legion::Data.connected? check_db_write_privilege rescue StandardError => e log.warn("Apollo Capability.can_write? failed: #{e.}") false end |
.check_db_write_privilege ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 60 def check_db_write_privilege return @apollo_write_privilege unless @apollo_write_privilege.nil? @apollo_write_privilege = Legion::Data.connection .fetch("SELECT has_table_privilege(current_user, 'apollo_entries', 'INSERT') AS can_insert") .first[:can_insert] == true rescue StandardError => e log.warn("Apollo Capability.check_db_write_privilege failed: #{e.}") @apollo_write_privilege = false end |
.cloud_embedding_configured? ⇒ Boolean
51 52 53 54 55 56 57 58 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 51 def provider = Legion::Settings.dig(:apollo, :embedding, :provider) model = Legion::Settings.dig(:apollo, :embedding, :model) !provider.nil? && !model.nil? rescue StandardError => e log.warn("Apollo Capability.cloud_embedding_configured? failed: #{e.}") false end |
.log ⇒ Object
12 13 14 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 12 def log Legion::Logging end |
.ollama_embedding_available? ⇒ Boolean
42 43 44 45 46 47 48 49 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 42 def return false unless defined?(Legion::LLM::Discovery::Ollama) EMBEDDING_MODELS.any? { |m| Legion::LLM::Discovery::Ollama.model_available?(m) } rescue StandardError => e log.warn("Apollo Capability.ollama_embedding_available? failed: #{e.}") false end |
.reset! ⇒ Object
71 72 73 |
# File 'lib/legion/extensions/apollo/helpers/capability.rb', line 71 def reset! @apollo_write_privilege = nil end |