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.13 kB
require("reflect-metadata"); const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs'); const require_package$1 = require('../../../package.cjs'); let _copilotkit_shared = require("@copilotkit/shared"); //#region src/v2/runtime/telemetry/telemetry-client.ts var import_package = /* @__PURE__ */ require_runtime.__toESM(require_package$1.default); function isTelemetryDisabled() { 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 = 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(); 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 _copilotkit_shared.lambdaClient.send({ event, properties, globalProperties: { ...this.globalProperties, ...(0, _copilotkit_shared.computeSamplingMeta)({ telemetryId: identity.licenseTelemetryId, sampleRate: this.sampleRate }), telemetry_emitter: _copilotkit_shared.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 = (0, _copilotkit_shared.firstNonBlankTelemetryId)(identity.telemetryId); if (telemetryId !== void 0) return { telemetryId, licenseToken: null, licenseTelemetryId: null }; return { telemetryId: null, licenseToken: identity.licenseToken ?? null, licenseTelemetryId: identity.licenseToken ? (0, _copilotkit_shared.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(); //#endregion exports.default = telemetry; exports.isTelemetryDisabled = isTelemetryDisabled; //# sourceMappingURL=telemetry-client.cjs.map