Class: Legion::Extensions::Apollo::Actor::WritebackVectorize

Inherits:
Legion::Extensions::Actors::Subscription
  • Object
show all
Defined in:
lib/legion/extensions/apollo/actors/writeback_vectorize.rb

Instance Method Summary collapse

Instance Method Details

#check_subtask?Boolean

Returns:

  • (Boolean)


12
# File 'lib/legion/extensions/apollo/actors/writeback_vectorize.rb', line 12

def check_subtask?  = false

#enabled?Boolean

rubocop:disable Legion/Extension/ActorEnabledSideEffects

Returns:

  • (Boolean)


41
42
43
44
45
46
# File 'lib/legion/extensions/apollo/actors/writeback_vectorize.rb', line 41

def enabled? # rubocop:disable Legion/Extension/ActorEnabledSideEffects
  Legion.const_defined?(:Transport, false) && Helpers::Capability.can_embed?
rescue StandardError => e
  log.warn("WritebackVectorize enabled? check failed: #{e.message}")
  false
end

#generate_task?Boolean

Returns:

  • (Boolean)


13
# File 'lib/legion/extensions/apollo/actors/writeback_vectorize.rb', line 13

def generate_task?  = false

#handle_vectorize(payload) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/legion/extensions/apollo/actors/writeback_vectorize.rb', line 15

def handle_vectorize(payload)
  payload = symbolize(payload)
  log.debug("WritebackVectorize handle_vectorize content_length=#{payload[:content].to_s.length} content_type=#{payload[:content_type] || 'nil'}")
  result = Legion::LLM::Embeddings.generate(text: payload[:content])
  vector = result.is_a?(Hash) ? result[:vector] : result
  embedding = vector.is_a?(Array) && vector.any? ? vector : Array.new(1024, 0.0)
  log.debug("WritebackVectorize embedding_dimensions=#{embedding.length} vector_generated=#{vector.is_a?(Array) && vector.any?}")
  enriched = payload.merge(embedding: embedding)

  if Helpers::Capability.can_write?
    log.debug('WritebackVectorize route=direct_ingest')
    Runners::Knowledge.handle_ingest(**enriched)
  else
    log.debug('WritebackVectorize route=transport_writeback')
    Transport::Messages::Writeback.new(
      **enriched, has_embedding: true
    ).publish
  end

  log.info('WritebackVectorize completed action=vectorized')
  { success: true, action: :vectorized }
rescue StandardError => e
  handle_exception(e, level: :error, operation: 'apollo.writeback_vectorize.handle_vectorize')
  { success: false, error: e.message }
end

#runner_classObject



10
# File 'lib/legion/extensions/apollo/actors/writeback_vectorize.rb', line 10

def runner_class    = self.class

#runner_functionObject



11
# File 'lib/legion/extensions/apollo/actors/writeback_vectorize.rb', line 11

def runner_function = 'handle_vectorize'