Merge pull request #625 from sarinali/fix/telemetry-consolidation

Consolidate Telemetry Vars
This commit is contained in:
Sarina Li
2025-11-29 22:45:49 -05:00
committed by GitHub
6 changed files with 39 additions and 33 deletions

View File

@@ -52,6 +52,12 @@ import os
os.environ["CUA_TELEMETRY_ENABLED"] = "false"
```
<Callout type="info">
**Deprecated environment variables:** The environment variables `CUA_TELEMETRY` and
`CUA_TELEMETRY_DISABLED` are deprecated and no longer have any effect. Use `CUA_TELEMETRY_ENABLED`
instead.
</Callout>
### Per instance
**Computer SDK:**

View File

@@ -4,7 +4,7 @@ build-backend = "pdm.backend"
[project]
name = "cua-agent"
version = "0.5.0"
version = "0.5.1"
description = "CUA (Computer Use) Agent for AI-driven computer interaction"
readme = "README.md"
authors = [

View File

@@ -44,13 +44,12 @@ class PostHogTelemetryClient:
@classmethod
def is_telemetry_enabled(cls) -> bool:
"""True if telemetry is currently active for this process."""
return (
# Legacy opt-out flag
os.environ.get("CUA_TELEMETRY", "").lower() != "off"
# Opt-in flag (defaults to enabled)
and os.environ.get("CUA_TELEMETRY_ENABLED", "true").lower()
in {"1", "true", "yes", "on"}
)
return os.environ.get("CUA_TELEMETRY_ENABLED", "true").lower() in {
"1",
"true",
"yes",
"on",
}
def _get_or_create_installation_id(self) -> str:
"""Get or create a unique installation ID that persists across runs.

View File

@@ -24,15 +24,7 @@ class TestTelemetryEnabled:
assert is_telemetry_enabled() is True
def test_telemetry_disabled_with_legacy_flag(self, monkeypatch):
"""Test that telemetry can be disabled with legacy CUA_TELEMETRY=off."""
monkeypatch.setenv("CUA_TELEMETRY", "off")
from core.telemetry import is_telemetry_enabled
assert is_telemetry_enabled() is False
def test_telemetry_disabled_with_new_flag(self, monkeypatch):
def test_telemetry_disabled_with_flag(self, monkeypatch):
"""Test that telemetry can be disabled with CUA_TELEMETRY_ENABLED=false."""
monkeypatch.setenv("CUA_TELEMETRY_ENABLED", "false")

View File

@@ -44,14 +44,12 @@ export class PostHogTelemetryClient {
sampleRate: TELEMETRY_SAMPLE_RATE,
posthog: { apiKey: PUBLIC_POSTHOG_API_KEY, host: PUBLIC_POSTHOG_HOST },
};
// Check for multiple environment variables that can disable telemetry:
// CUA_TELEMETRY=off to disable telemetry (legacy way)
// CUA_TELEMETRY_DISABLED=1 to disable telemetry (new, more explicit way)
const telemetryDisabled =
process.env.CUA_TELEMETRY?.toLowerCase() === 'off' ||
['1', 'true', 'yes', 'on'].includes(process.env.CUA_TELEMETRY_DISABLED?.toLowerCase() || '');
// Check CUA_TELEMETRY_ENABLED environment variable (defaults to enabled)
const telemetryEnabled = ['1', 'true', 'yes', 'on'].includes(
process.env.CUA_TELEMETRY_ENABLED?.toLowerCase() || 'true'
);
this.config.enabled = !telemetryDisabled;
this.config.enabled = telemetryEnabled;
this.config.sampleRate = Number.parseFloat(
process.env.CUA_TELEMETRY_SAMPLE_RATE || String(TELEMETRY_SAMPLE_RATE)
);

View File

@@ -4,27 +4,38 @@ import { Telemetry } from '../src/';
describe('Telemetry', () => {
let telemetry: Telemetry;
beforeEach(() => {
process.env.CUA_TELEMETRY = '';
process.env.CUA_TELEMETRY_DISABLED = '';
process.env.CUA_TELEMETRY_ENABLED = '';
telemetry = new Telemetry();
});
describe('telemetry.enabled', () => {
it('should return false when CUA_TELEMETRY is off', () => {
process.env.CUA_TELEMETRY = 'off';
it('should return false when CUA_TELEMETRY_ENABLED is false', () => {
process.env.CUA_TELEMETRY_ENABLED = 'false';
telemetry = new Telemetry();
expect(telemetry.enabled).toBe(false);
});
it('should return true when CUA_TELEMETRY is not set', () => {
process.env.CUA_TELEMETRY = '';
it('should return false when CUA_TELEMETRY_ENABLED is 0', () => {
process.env.CUA_TELEMETRY_ENABLED = '0';
telemetry = new Telemetry();
expect(telemetry.enabled).toBe(false);
});
it('should return true when CUA_TELEMETRY_ENABLED is not set (default)', () => {
delete process.env.CUA_TELEMETRY_ENABLED;
telemetry = new Telemetry();
expect(telemetry.enabled).toBe(true);
});
it('should return false if CUA_TELEMETRY_DISABLED is 1', () => {
process.env.CUA_TELEMETRY_DISABLED = '1';
it('should return true when CUA_TELEMETRY_ENABLED is true', () => {
process.env.CUA_TELEMETRY_ENABLED = 'true';
telemetry = new Telemetry();
expect(telemetry.enabled).toBe(false);
expect(telemetry.enabled).toBe(true);
});
it('should return true when CUA_TELEMETRY_ENABLED is 1', () => {
process.env.CUA_TELEMETRY_ENABLED = '1';
telemetry = new Telemetry();
expect(telemetry.enabled).toBe(true);
});
});
});