Class: Llmemory::Maintenance::Summarizer

Inherits:
Object
  • Object
show all
Defined in:
lib/llmemory/maintenance/summarizer.rb

Instance Method Summary collapse

Constructor Details

#initialize(storage, llm: nil) ⇒ Summarizer

Returns a new instance of Summarizer.



6
7
8
9
# File 'lib/llmemory/maintenance/summarizer.rb', line 6

def initialize(storage, llm: nil)
  @storage = storage
  @llm = llm || Llmemory::LLM.client
end

Instance Method Details

#run_weekly(user_id, prune_after_days: nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/llmemory/maintenance/summarizer.rb', line 11

def run_weekly(user_id, prune_after_days: nil)
  prune_after_days ||= Llmemory.configuration.prune_after_days
  old_items = @storage.get_items_older_than(user_id, days: 30)
  categories = group_by_category(old_items)

  categories.each do |category, items|
    next if items.empty?
    summary = create_summary(items)
    existing = @storage.load_category(user_id, category)
    updated = existing.to_s.empty? ? summary : "#{existing}\n\n## Archived summary\n#{summary}"
    @storage.save_category(user_id, category, updated)
    @storage.archive_items(user_id, items.map { |i| i[:id] })
  end

  prune_stale_items(user_id, prune_after_days)
  true
end