Module: Legion::Extensions::Helpers::Knowledge
Constant Summary
Constants included from Base
Instance Method Summary collapse
- #ingest_knowledge(content_or_path, type: :auto, tags: [], scope: :global, **opts) ⇒ Object
-
#knowledge_connected? ⇒ Boolean
--- Status --- Override these in your LEX to customise availability checks.
-
#knowledge_default_scope ⇒ Object
Override to set a custom default query scope for this extension.
-
#knowledge_default_tags ⇒ Object
Override to automatically attach extension-level tags to every ingest call.
- #knowledge_global_connected? ⇒ Boolean
- #knowledge_local_connected? ⇒ Boolean
- #query_knowledge(text:, limit: 5, scope: nil) ⇒ Object
Methods included from Base
#actor_class, #actor_const, #actor_name, #amqp_prefix, #calling_class, #calling_class_array, #find_gem_path, #from_json, #full_path, #lex_class, #lex_const, #lex_name, #lex_slug, #log_tag, #normalize, #runner_class, #runner_const, #runner_name, #segments, #settings_path, #table_prefix, #to_dotted_hash
Instance Method Details
#ingest_knowledge(content_or_path, type: :auto, tags: [], scope: :global, **opts) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 11 def ingest_knowledge(content_or_path, type: :auto, tags: [], scope: :global, **opts) target = resolve_ingest_target(scope) return { success: false, error: :apollo_not_available } unless target text, = extract_if_needed(content_or_path, type: type) return { success: false, error: :extraction_failed, detail: } unless text = () if = Array() + Array() + Array() target.ingest( content: text, tags: , source_channel: opts[:source_channel] || derive_lex_name, **opts.except(:source_channel) ) end |
#knowledge_connected? ⇒ Boolean
--- Status --- Override these in your LEX to customise availability checks.
42 43 44 45 46 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 42 def knowledge_connected? knowledge_global_connected? || knowledge_local_connected? rescue StandardError false end |
#knowledge_default_scope ⇒ Object
Override to set a custom default query scope for this extension. Resolution: LEX override -> Settings[:local][:default_query_scope] -> :all
66 67 68 69 70 71 72 73 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 66 def knowledge_default_scope return :all unless defined?(Legion::Settings) scope = Legion::Settings.dig(:apollo, :local, :default_query_scope) scope ? scope.to_sym : :all rescue StandardError :all end |
#knowledge_default_tags ⇒ Object
Override to automatically attach extension-level tags to every ingest call. Resolution: LEX override -> [] (no default tags)
77 78 79 80 81 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 77 def [] rescue StandardError [] end |
#knowledge_global_connected? ⇒ Boolean
48 49 50 51 52 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 48 def knowledge_global_connected? global_available? rescue StandardError false end |
#knowledge_local_connected? ⇒ Boolean
54 55 56 57 58 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 54 def knowledge_local_connected? local_available? rescue StandardError false end |
#query_knowledge(text:, limit: 5, scope: nil) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/legion/extensions/helpers/knowledge.rb', line 29 def query_knowledge(text:, limit: 5, scope: nil, **) scope ||= default_query_scope case scope.to_sym when :local then query_local(text: text, limit: limit, **) when :global then query_global(text: text, limit: limit, **) else query_all(text: text, limit: limit, **) end end |