Class: PassiveRecallJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/passive_recall_job.rb

Overview

Runs passive recall after goal updates — searches message history for context relevant to active goals and caches results on the session for viewport injection.

Idempotent: multiple enqueues for the same session safely overwrite each other’s results — last one wins.

Examples:

PassiveRecallJob.perform_later(session.id)

Instance Method Summary collapse

Instance Method Details

#perform(session_id) ⇒ Object

Parameters:

  • session_id (Integer)


18
19
20
21
22
23
24
25
26
27
28
# File 'app/jobs/passive_recall_job.rb', line 18

def perform(session_id)
  session = Session.find(session_id)
  results = Mneme::PassiveRecall.new(session).call

  if results.any?
    session.update_column(:recalled_message_ids, results.map(&:message_id))
    Mneme.logger.info("session=#{session_id} — passive recall found #{results.size} memories")
  elsif session.recalled_message_ids.present?
    session.update_column(:recalled_message_ids, [])
  end
end