Class: ClaudeMemory::Dashboard::Telemetry
- Inherits:
-
Object
- Object
- ClaudeMemory::Dashboard::Telemetry
- 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
-
#initialize(manager) ⇒ Telemetry
constructor
A new instance of Telemetry.
- #snapshot ⇒ Object
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
#snapshot ⇒ Object
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 |