@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
JavaScript
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