Class: Llmemory::Maintenance::TTLExpiry

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

Overview

TTL expiry job: soft-archives episodic/procedural entries whose age exceeds the configured per-type TTL. Designed to run as a maintenance task (cron / Rails Job). Idempotent — already-archived entries are skipped by the storage layer.

Reads ‘Llmemory.configuration.ttl_episodic_days` and `Llmemory.configuration.ttl_procedural_days`. A nil/zero TTL disables expiry for that memory type.

Returns a hash ‘{ episodic: N, procedural: M }` with the number of entries archived per type for the given user.

Constant Summary collapse

DEFAULT_REASON =
"ttl_expired"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user_id, episodic: nil, procedural: nil, reason: DEFAULT_REASON) ⇒ TTLExpiry

Returns a new instance of TTLExpiry.



23
24
25
26
27
28
# File 'lib/llmemory/maintenance/ttl_expiry.rb', line 23

def initialize(user_id, episodic: nil, procedural: nil, reason: DEFAULT_REASON)
  @user_id = user_id
  @episodic = episodic
  @procedural = procedural
  @reason = reason
end

Class Method Details

.run!(user_id, episodic: nil, procedural: nil, reason: DEFAULT_REASON) ⇒ Object



19
20
21
# File 'lib/llmemory/maintenance/ttl_expiry.rb', line 19

def self.run!(user_id, episodic: nil, procedural: nil, reason: DEFAULT_REASON)
  new(user_id, episodic: episodic, procedural: procedural, reason: reason).run!
end

Instance Method Details

#run!Object



30
31
32
33
34
35
36
37
# File 'lib/llmemory/maintenance/ttl_expiry.rb', line 30

def run!
  {
    episodic: expire(memory: @episodic ||= Llmemory::LongTerm::Episodic::Memory.new(user_id: @user_id),
                     ttl_days: Llmemory.configuration.ttl_episodic_days),
    procedural: expire(memory: @procedural ||= Llmemory::LongTerm::Procedural::Memory.new(user_id: @user_id),
                       ttl_days: Llmemory.configuration.ttl_procedural_days)
  }
end