Module: RosettAi::Telemetry

Defined in:
lib/rosett_ai/telemetry.rb,
lib/rosett_ai/telemetry/provider.rb,
lib/rosett_ai/telemetry/reporter.rb,
lib/rosett_ai/telemetry/log_rotator.rb,
lib/rosett_ai/telemetry/json_lines_writer.rb

Overview

Opt-in structured telemetry for CLI observability.

Enabled via RAI_TELEMETRY=1. Captures JSON Lines events for command timing, errors, and diagnostics. All data stays local.

See Also:

  • conf/design/monitoring_observabilityconf/design/monitoring_observability.yml

Author:

  • hugo

  • claude

Defined Under Namespace

Modules: Provider Classes: JsonLinesWriter, LogRotator, Reporter

Constant Summary collapse

LEVELS =

Returns Supported level values.

Returns:

  • (Array)

    Supported level values.

['debug', 'info', 'warn', 'error'].freeze

Class Method Summary collapse

Class Method Details

.enabled?Boolean

Returns true if telemetry is enabled via environment variable.

Returns:

  • (Boolean)

    true if telemetry is enabled via environment variable



20
21
22
# File 'lib/rosett_ai/telemetry.rb', line 20

def self.enabled?
  ENV['RAI_TELEMETRY'] == '1'
end

.levelString

Returns configured telemetry level (default: info).

Returns:

  • (String)

    configured telemetry level (default: info)



30
31
32
33
# File 'lib/rosett_ai/telemetry.rb', line 30

def self.level
  raw = ENV.fetch('RAI_TELEMETRY_LEVEL', 'info').downcase
  LEVELS.include?(raw) ? raw : 'info'
end

.level_enabled?(level) ⇒ Boolean

Returns true if the level meets the configured threshold.

Parameters:

  • level (String)

    event level to check

Returns:

  • (Boolean)

    true if the level meets the configured threshold



37
38
39
# File 'lib/rosett_ai/telemetry.rb', line 37

def self.level_enabled?(level)
  LEVELS.index(level.to_s) >= LEVELS.index(self.level)
end

.reporterRosettAi::Telemetry::Reporter

Returns singleton reporter instance.

Returns:



25
26
27
# File 'lib/rosett_ai/telemetry.rb', line 25

def self.reporter
  Reporter.instance
end

.reset!void

This method returns an undefined value.

Reset singleton state. Intended for test isolation.



44
45
46
# File 'lib/rosett_ai/telemetry.rb', line 44

def self.reset!
  Reporter.reset!
end