UNPKG

@copilotkit/runtime

Version:

<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />

109 lines (107 loc) 4.12 kB
import "reflect-metadata"; import { __toESM } from "../../../_virtual/_rolldown/runtime.mjs"; import { require_package } from "../../../package.mjs"; import { firstNonBlankTelemetryId } from "./telemetry-identity.mjs"; import { TELEMETRY_EMITTER_V2, computeSamplingMeta, lambdaClient, parseAndWarnTelemetryId } from "@copilotkit/shared"; //#region src/v2/runtime/telemetry/telemetry-client.ts var import_package = /* @__PURE__ */ __toESM(require_package()); function isTelemetryDisabled$1() { return process.env.COPILOTKIT_TELEMETRY_DISABLED === "true" || process.env.COPILOTKIT_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "true" || process.env.DO_NOT_TRACK === "1"; } var TelemetryClient$1 = class { constructor({ telemetryDisabled, sampleRate } = {}) { this.telemetryDisabled = false; this.sampleRate = .05; this.licenseToken = null; this.telemetryId = null; this.licenseTelemetryId = null; this.globalProperties = {}; this.telemetryDisabled = telemetryDisabled || isTelemetryDisabled$1(); this.setSampleRate(sampleRate); } shouldSendEvent() { if (this.sampleRate >= 1) return true; return Math.random() < this.sampleRate; } /** * Add properties carried by every subsequent event. * * Merged rather than replaced, so two callers setting different fields do not * erase each other. Set once at runtime construction in practice; nothing * here is per-request. */ setGlobalProperties(properties) { this.globalProperties = { ...this.globalProperties, ...properties }; } /** Atomically replace the process-wide telemetry identity. */ setTelemetryIdentity(identity) { const resolvedIdentity = this.resolveTelemetryIdentity(identity); this.telemetryId = resolvedIdentity.telemetryId; this.licenseToken = resolvedIdentity.licenseToken; this.licenseTelemetryId = resolvedIdentity.licenseTelemetryId; } /** @deprecated Prefer {@link setTelemetryIdentity}. */ setLicenseToken(licenseToken) { this.setTelemetryIdentity({ licenseToken }); } /** Create an immutable capture scope for one Runtime instance. */ createScope(identity) { const resolvedIdentity = this.resolveTelemetryIdentity(identity); return { capture: (event, properties) => this.captureWithIdentity(event, properties, resolvedIdentity) }; } async capture(event, properties) { return this.captureWithIdentity(event, properties, { telemetryId: this.telemetryId, licenseToken: this.licenseToken, licenseTelemetryId: this.licenseTelemetryId }); } async captureWithIdentity(event, properties, identity) { if (this.telemetryDisabled) return; if (!identity.licenseTelemetryId && !this.shouldSendEvent()) return; await lambdaClient.send({ event, properties, globalProperties: { ...this.globalProperties, ...computeSamplingMeta({ telemetryId: identity.licenseTelemetryId, sampleRate: this.sampleRate }), telemetry_emitter: TELEMETRY_EMITTER_V2, telemetry_transport: "lambda" }, packageName: import_package.name, packageVersion: import_package.version, telemetryId: identity.telemetryId ?? void 0, licenseToken: identity.licenseToken ?? void 0 }); } resolveTelemetryIdentity(identity) { const telemetryId = firstNonBlankTelemetryId(identity.telemetryId); if (telemetryId !== void 0) return { telemetryId, licenseToken: null, licenseTelemetryId: null }; return { telemetryId: null, licenseToken: identity.licenseToken ?? null, licenseTelemetryId: identity.licenseToken ? parseAndWarnTelemetryId(identity.licenseToken) : null }; } setSampleRate(sampleRate) { let _sampleRate; _sampleRate = sampleRate ?? .05; if (process.env.COPILOTKIT_TELEMETRY_SAMPLE_RATE) _sampleRate = parseFloat(process.env.COPILOTKIT_TELEMETRY_SAMPLE_RATE); if (Number.isNaN(_sampleRate) || _sampleRate < 0 || _sampleRate > 1) throw new Error("Sample rate must be between 0 and 1"); this.sampleRate = _sampleRate; } }; const telemetry = new TelemetryClient$1(); //#endregion export { telemetry as default, isTelemetryDisabled$1 as isTelemetryDisabled }; //# sourceMappingURL=telemetry-client.mjs.map