Class: OllamaAgent::Memory::SessionMemory

Inherits:
Object
  • Object
show all
Defined in:
lib/ollama_agent/memory/session_memory.rb

Overview

Session-scoped key-value store for goals, task progress, and intermediate state. Persisted to YAML under .ollama_agent/memory/<session_id>.yml. Outlives a single run but is scoped to a session.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root:, session_id: nil) ⇒ SessionMemory

Returns a new instance of SessionMemory.



14
15
16
17
18
# File 'lib/ollama_agent/memory/session_memory.rb', line 14

def initialize(root:, session_id: nil)
  @root       = File.expand_path(root)
  @session_id = session_id || "default"
  @store      = load_or_initialize
end

Instance Attribute Details

#session_idObject (readonly)

Returns the value of attribute session_id.



12
13
14
# File 'lib/ollama_agent/memory/session_memory.rb', line 12

def session_id
  @session_id
end

Instance Method Details

#active_goalsObject



63
64
65
# File 'lib/ollama_agent/memory/session_memory.rb', line 63

def active_goals
  @store.fetch("_goals", []).select { |g| g[:status] == "active" }
end

#allObject



41
42
43
# File 'lib/ollama_agent/memory/session_memory.rb', line 41

def all
  @store.dup
end

#clear!Object



45
46
47
48
# File 'lib/ollama_agent/memory/session_memory.rb', line 45

def clear!
  @store = {}
  persist!
end

#complete_goal(description) ⇒ Object



57
58
59
60
61
# File 'lib/ollama_agent/memory/session_memory.rb', line 57

def complete_goal(description)
  goals = @store.fetch("_goals", [])
  goals.each { |g| g[:status] = "done" if g[:description] == description }
  set("_goals", goals)
end

#delete(key) ⇒ Object



32
33
34
35
# File 'lib/ollama_agent/memory/session_memory.rb', line 32

def delete(key)
  @store.delete(key.to_s)
  persist!
end

#get(key) ⇒ Object



28
29
30
# File 'lib/ollama_agent/memory/session_memory.rb', line 28

def get(key)
  @store[key.to_s]
end

#keysObject



37
38
39
# File 'lib/ollama_agent/memory/session_memory.rb', line 37

def keys
  @store.keys
end

#set(key, value) ⇒ Object

Parameters:

  • key (String, Symbol)
  • value (Object)

    must be YAML-serialisable



22
23
24
25
26
# File 'lib/ollama_agent/memory/session_memory.rb', line 22

def set(key, value)
  @store[key.to_s] = value
  persist!
  value
end

#set_goal(description) ⇒ Object

Active goals tracking



51
52
53
54
55
# File 'lib/ollama_agent/memory/session_memory.rb', line 51

def set_goal(description)
  goals = @store.fetch("_goals", [])
  goals << { description: description, status: "active", added_at: Time.now.iso8601 }
  set("_goals", goals)
end