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 =
['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



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

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

.levelString

Returns configured telemetry level (default: info).

Returns:

  • (String)

    configured telemetry level (default: info)



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

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



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

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

.reporterRosettAi::Telemetry::Reporter

Returns singleton reporter instance.

Returns:



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

def self.reporter
  Reporter.instance
end

.reset!

This method returns an undefined value.

Reset singleton state. Intended for test isolation.



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

def self.reset!
  Reporter.reset!
end