{"version":3,"sources":["../src/telemetry/posthog.ts"],"names":["createHash","os","PostHog"],"mappings":";;;;;;;;;;;AAIA,IAAM,eAAA,GAAkB,iDAAA;AACxB,IAAM,YAAA,GAAe,wBAAA;AACrB,IAAM,yCAAyB,IAAI,GAAA,CAAI,CAAC,GAAA,EAAK,MAAA,EAAQ,KAAK,CAAC,CAAA;AAE3D,IAAI,MAAA,GAAyB,IAAA;AAMtB,SAAS,oBAAA,GAAgC;AAC9C,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,2BAA2B,CAAA;AACrD,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAC,sBAAA,CAAuB,GAAA,CAAI,MAAM,IAAA,EAAK,CAAE,aAAa,CAAA;AAC/D;AAEO,SAAS,mBAAmB,KAAA,EAAuB;AACxD,EAAA,OAAOA,kBAAW,QAAQ,CAAA,CAAE,OAAO,KAAK,CAAA,CAAE,OAAO,KAAK,CAAA;AACxD;AAEA,SAAS,iBAAA,GAA4B;AACnC,EAAA,OAAO,kBAAA,CAAmBC,oBAAG,QAAA,EAAS,IAAK,cAAc,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AACxE;AAEO,SAAS,gCAAA,GAA2C;AACzD,EAAA,OAAO,CAAA,OAAA,EAAU,mBAAmB,CAAA,CAAA;AACtC;AAEA,SAAS,SAAA,GAA4B;AACnC,EAAA,IAAI,CAAC,sBAAqB,EAAG;AAC3B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAA,GAAS,IAAIC,oBAAQ,eAAA,EAAiB;AAAA,MACpC,IAAA,EAAM,YAAA;AAAA,MACN,OAAA,EAAS,CAAA;AAAA,MACT,aAAA,EAAe,CAAA;AAAA,MACf,YAAA,EAAc;AAAA,KACf,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,GAA+C;AACtD,EAAA,OAAO;AAAA,IACL,IAAI,OAAA,CAAQ,QAAA;AAAA,IACZ,UAAA,EAAYD,oBAAG,OAAA,EAAQ;AAAA,IACvB,cAAc,OAAA,CAAQ,OAAA;AAAA,IACtB,UAAU,OAAA,CAAQ,IAAA;AAAA,IAClB,YAAY,iBAAA,EAAkB;AAAA,IAC9B,cAAA,EAAgB,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA,IAAK;AAAA,GACxD;AACF;AAEO,SAAS,qBAAA,CACd,KAAA,EACA,UAAA,EACA,UAAA,EACM;AACN,EAAA,IAAI;AACF,IAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CAAQ,OAAA,CAAQ;AAAA,MACd,UAAA,EAAY,cAAc,gCAAA,EAAiC;AAAA,MAC3D,KAAA;AAAA,MACA,UAAA,EAAY;AAAA,QACV,GAAG,mBAAA,EAAoB;AAAA,QACvB,GAAG;AAAA;AACL,KACD,CAAA;AAAA,EACH,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAEO,SAAS,cAAA,CACd,KAAA,EACA,UAAA,EACA,UAAA,EACM;AACN,EAAA,qBAAA,CAAsB,KAAA,EAAO,YAAY,UAAU,CAAA;AACrD","file":"chunk-OEW7GS6U.cjs","sourcesContent":["import { createHash } from 'node:crypto';\nimport os from 'node:os';\nimport { PostHog } from 'posthog-node';\n\nconst POSTHOG_API_KEY = 'phc_SBLpZVAB6jmHOct9CABq3PF0Yn5FU3G2FgT4xUr2XrT';\nconst POSTHOG_HOST = 'https://us.posthog.com';\nconst TRUTHY_DISABLED_VALUES = new Set(['1', 'true', 'yes']);\n\nlet client: PostHog | null = null;\n\nexport type EEEventName = 'ee_license_check' | 'ee_feature_used';\n\nexport type TelemetryEventName = EEEventName | 'mastra_model_token_usage';\n\nexport function isEETelemetryEnabled(): boolean {\n  const value = process.env['MASTRA_TELEMETRY_DISABLED'];\n  if (!value) {\n    return true;\n  }\n  return !TRUTHY_DISABLED_VALUES.has(value.trim().toLowerCase());\n}\n\nexport function hashTelemetryValue(value: string): string {\n  return createHash('sha256').update(value).digest('hex');\n}\n\nfunction getHashedHostname(): string {\n  return hashTelemetryValue(os.hostname() || 'unknown-host').slice(0, 16);\n}\n\nexport function getEETelemetryFallbackDistinctId(): string {\n  return `mastra-${getHashedHostname()}`;\n}\n\nfunction getClient(): PostHog | null {\n  if (!isEETelemetryEnabled()) {\n    return null;\n  }\n\n  if (!client) {\n    client = new PostHog(POSTHOG_API_KEY, {\n      host: POSTHOG_HOST,\n      flushAt: 1,\n      flushInterval: 0,\n      disableGeoip: false,\n    });\n  }\n\n  return client;\n}\n\nfunction getSystemProperties(): Record<string, unknown> {\n  return {\n    os: process.platform,\n    os_version: os.release(),\n    node_version: process.version,\n    platform: process.arch,\n    machine_id: getHashedHostname(),\n    mastra_version: process.env['npm_package_version'] || 'unknown',\n  };\n}\n\nexport function captureTelemetryEvent(\n  event: TelemetryEventName,\n  distinctId: string | undefined,\n  properties?: Record<string, unknown>,\n): void {\n  try {\n    const posthog = getClient();\n    if (!posthog) {\n      return;\n    }\n\n    posthog.capture({\n      distinctId: distinctId || getEETelemetryFallbackDistinctId(),\n      event,\n      properties: {\n        ...getSystemProperties(),\n        ...properties,\n      },\n    });\n  } catch {\n    // Telemetry must never affect auth or EE feature behavior.\n  }\n}\n\nexport function captureEEEvent(\n  event: EEEventName,\n  distinctId: string | undefined,\n  properties?: Record<string, unknown>,\n): void {\n  captureTelemetryEvent(event, distinctId, properties);\n}\n\nexport function resetEETelemetryForTests(): void {\n  client = null;\n}\n"]}