From 26caedf49272bb8207d6204ec7aced56f0892647 Mon Sep 17 00:00:00 2001 From: Sarina Li Date: Sat, 29 Nov 2025 22:41:27 -0500 Subject: [PATCH 1/2] update to only use CUA_TELEMETRY_ENABLED --- docs/content/docs/agent-sdk/telemetry.mdx | 6 ++++ docs/tsconfig.json | 2 +- libs/python/agent/pyproject.toml | 2 +- libs/python/core/core/telemetry/posthog.py | 13 ++++----- libs/python/core/tests/test_telemetry.py | 10 +------ .../core/src/telemetry/clients/posthog.ts | 12 ++++---- libs/typescript/core/tests/telemetry.test.ts | 29 +++++++++++++------ 7 files changed, 40 insertions(+), 34 deletions(-) diff --git a/docs/content/docs/agent-sdk/telemetry.mdx b/docs/content/docs/agent-sdk/telemetry.mdx index c4cc6fa5..4dcb80a8 100644 --- a/docs/content/docs/agent-sdk/telemetry.mdx +++ b/docs/content/docs/agent-sdk/telemetry.mdx @@ -52,6 +52,12 @@ import os os.environ["CUA_TELEMETRY_ENABLED"] = "false" ``` + + **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. + + ### Per instance **Computer SDK:** diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 34346f5f..14131e68 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -13,7 +13,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "react-jsx", + "jsx": "preserve", "incremental": true, "paths": { "@/.source": ["./.source/index.ts"], diff --git a/libs/python/agent/pyproject.toml b/libs/python/agent/pyproject.toml index a8d84b05..8e187716 100644 --- a/libs/python/agent/pyproject.toml +++ b/libs/python/agent/pyproject.toml @@ -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 = [ diff --git a/libs/python/core/core/telemetry/posthog.py b/libs/python/core/core/telemetry/posthog.py index 5edd7343..29f5a661 100644 --- a/libs/python/core/core/telemetry/posthog.py +++ b/libs/python/core/core/telemetry/posthog.py @@ -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. diff --git a/libs/python/core/tests/test_telemetry.py b/libs/python/core/tests/test_telemetry.py index 5446a884..93f4ae3d 100644 --- a/libs/python/core/tests/test_telemetry.py +++ b/libs/python/core/tests/test_telemetry.py @@ -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") diff --git a/libs/typescript/core/src/telemetry/clients/posthog.ts b/libs/typescript/core/src/telemetry/clients/posthog.ts index 7b14d162..260a1873 100644 --- a/libs/typescript/core/src/telemetry/clients/posthog.ts +++ b/libs/typescript/core/src/telemetry/clients/posthog.ts @@ -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) ); diff --git a/libs/typescript/core/tests/telemetry.test.ts b/libs/typescript/core/tests/telemetry.test.ts index 4c4d47f6..7cfbec4e 100644 --- a/libs/typescript/core/tests/telemetry.test.ts +++ b/libs/typescript/core/tests/telemetry.test.ts @@ -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); }); }); }); From ef1bf49977db148cef3a33741aff19afe6a379ff Mon Sep 17 00:00:00 2001 From: Sarina Li Date: Sat, 29 Nov 2025 22:43:00 -0500 Subject: [PATCH 2/2] fix field --- docs/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 14131e68..34346f5f 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -13,7 +13,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "paths": { "@/.source": ["./.source/index.ts"],