Class: ClaudeMemory::Dashboard::Telemetry

Inherits:
Object
  • Object
show all
Defined in:
lib/claude_memory/dashboard/telemetry.rb

Overview

Cost & Tokens dashboard panel. Aggregates Claude Code’s OTel metric exports — server-side via Sequel datasets so the API returns final-rendered bins and the JS does no reduce.

Returns the empty shape (cost_over_time: [], …) when no store or no rows exist so the dashboard renders before the first ingest.

Constant Summary collapse

LOOKBACK_DAYS =
7
TOP_TOOLS_LIMIT =
10

Instance Method Summary collapse

Constructor Details

#initialize(manager) ⇒ Telemetry

Returns a new instance of Telemetry.



16
17
18
# File 'lib/claude_memory/dashboard/telemetry.rb', line 16

def initialize(manager)
  @manager = manager
end

Instance Method Details

#snapshotObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/claude_memory/dashboard/telemetry.rb', line 20

def snapshot
  store = @manager.default_store(prefer: :global)
  return empty_snapshot(store) unless store&.db&.table_exists?(:otel_metrics)

  cutoff = (Time.now - LOOKBACK_DAYS * 86_400).utc.iso8601
  metrics = store.otel_metrics.where { recorded_at >= cutoff }
  events = events_dataset(store, cutoff)

  {
    status: status_payload(store),
    cost_over_time: cost_over_time(metrics),
    tokens_by_model: tokens_by_model(metrics),
    top_tools_by_latency: top_tools(events),
    error_rate: error_rate(events),
    recent_metrics: recent_metrics(metrics),
    contains_prompt_content: contains_prompt_content?(events)
  }
end