UNPKG

@debugg-ai/debugg-ai-mcp

Version:

Zero-Config, Fully AI-Managed End-to-End Testing for all code gen platforms.

62 lines (61 loc) 1.74 kB
/** * Generic telemetry abstraction layer. * Providers implement TelemetryProvider; call sites use Telemetry.capture(). * Falls back to NoopProvider when no provider is configured. */ import { createHash } from 'crypto'; class NoopProvider { capture(_event) { } identify(_distinctId, _properties) { } async flush() { } async shutdown() { } } let _provider = new NoopProvider(); let _distinctId = 'anonymous'; export const Telemetry = { configure(provider) { _provider = provider; }, /** * Derive a stable, anonymous identifier from the API key. * Uses SHA-256 so the raw key is never stored or transmitted. */ setDistinctId(apiKey) { _distinctId = createHash('sha256').update(apiKey).digest('hex').slice(0, 16); }, capture(event, properties) { try { _provider.capture({ event, distinctId: _distinctId, properties, timestamp: new Date() }); } catch { // never let telemetry crash the app } }, async flush() { try { await _provider.flush(); } catch { // best-effort } }, async shutdown() { try { await _provider.shutdown(); } catch { // best-effort } }, }; export const TelemetryEvents = { TOOL_EXECUTED: 'tool.executed', TOOL_FAILED: 'tool.failed', WORKFLOW_EXECUTED: 'workflow.executed', WORKFLOW_TRANSIENT_RETRY: 'workflow.transient_retry', TUNNEL_PROVISIONED: 'tunnel.provisioned', TUNNEL_PROVISION_RETRY: 'tunnel.provision_retry', TUNNEL_STOPPED: 'tunnel.stopped', TEMPLATE_LOOKUP: 'template.lookup', PROJECT_LOOKUP: 'project.lookup', };