Module: Legion::Extensions::Helpers::Knowledge

Includes:
Base
Included in:
Core
Defined in:
lib/legion/extensions/helpers/knowledge.rb

Constant Summary

Constants included from Base

Base::NAMESPACE_BOUNDARIES

Instance Method Summary collapse

Methods included from Base

#actor_class, #actor_const, #actor_name, #amqp_prefix, #calling_class, #calling_class_array, #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

  extraction_tags = () if 
  all_tags = Array(tags) + Array(extraction_tags) + Array(knowledge_default_tags)

  target.ingest(
    content:        text,
    tags:           all_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.

Returns:

  • (Boolean)


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_scopeObject

Override to set a custom default query scope for this extension. Resolution: LEX override -> Settings[:local] -> :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_tagsObject

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 knowledge_default_tags
  []
rescue StandardError
  []
end

#knowledge_global_connected?Boolean

Returns:

  • (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

Returns:

  • (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