Module: ClaudeMemory::ActivityLog
- Defined in:
- lib/claude_memory/activity_log.rb
Overview
Records activity events for debugging and observability. Events are stored in the activity_events table and surfaced via the dashboard and ‘memory.activity` MCP tool.
Class Method Summary collapse
-
.recent(store, limit: 50, event_type: nil, since: nil) ⇒ Array<Hash>
Query recent activity events.
-
.record(store, event_type:, status:, session_id: nil, duration_ms: nil, details: nil) ⇒ Object
Record an activity event in the given store.
-
.summary(store, since: nil) ⇒ Hash
Summarize activity counts grouped by event_type.
Class Method Details
.recent(store, limit: 50, event_type: nil, since: nil) ⇒ Array<Hash>
Query recent activity events.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/claude_memory/activity_log.rb', line 47 def recent(store, limit: 50, event_type: nil, since: nil) dataset = store.activity_events.order(Sequel.desc(:occurred_at)).limit(limit) dataset = dataset.where(event_type: event_type) if event_type dataset = dataset.where { occurred_at >= since } if since dataset.all.map do |row| row[:details] = row[:detail_json] ? JSON.parse(row[:detail_json], symbolize_names: true) : nil row.delete(:detail_json) row end rescue => e ClaudeMemory.logger.warn("activity_log", message: "Failed to query events", error: e.) [] end |
.record(store, event_type:, status:, session_id: nil, duration_ms: nil, details: nil) ⇒ Object
Record an activity event in the given store.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/claude_memory/activity_log.rb', line 20 def record(store, event_type:, status:, session_id: nil, duration_ms: nil, details: nil) store.activity_events.insert( event_type: event_type, session_id: session_id, status: status, duration_ms: duration_ms, detail_json: details&.to_json, occurred_at: Time.now.utc.iso8601 ) rescue => e ClaudeMemory.logger.warn("activity_log", message: "Failed to record event", event_type: event_type, status: status, error_class: e.class.name, error: e., backtrace: e.backtrace&.first(3)) nil end |
.summary(store, since: nil) ⇒ Hash
Summarize activity counts grouped by event_type.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/claude_memory/activity_log.rb', line 67 def summary(store, since: nil) dataset = store.activity_events dataset = dataset.where { occurred_at >= since } if since rows = dataset .group_and_count(:event_type, :status) .all result = {} rows.each do |row| result[row[:event_type]] ||= {} result[row[:event_type]][row[:status].to_sym] = row[:count] end result rescue => e ClaudeMemory.logger.warn("activity_log", message: "Failed to summarize events", error: e.) {} end |