UNPKG

@genkit-ai/core

Version:

Genkit AI framework core libraries.

68 lines 2.31 kB
import { GenkitError } from "./error.js"; import { logger } from "./logging.js"; export * from "./tracing/exporter.js"; export * from "./tracing/instrumentation.js"; export * from "./tracing/types.js"; const oTelInitializationKey = "__GENKIT_DISABLE_GENKIT_OTEL_INITIALIZATION"; const instrumentationKey = "__GENKIT_TELEMETRY_INSTRUMENTED"; const telemetryProviderKey = "__GENKIT_TELEMETRY_PROVIDER"; async function ensureBasicTelemetryInstrumentation() { await checkFirebaseMonitoringAutoInit(); if (global[instrumentationKey]) { return await global[instrumentationKey]; } await enableTelemetry({}); } async function checkFirebaseMonitoringAutoInit() { if (!global[instrumentationKey] && process.env.ENABLE_FIREBASE_MONITORING === "true") { try { const importModule = new Function( "moduleName", "return import(moduleName)" ); const firebaseModule = await importModule("@genkit-ai/firebase"); firebaseModule.enableFirebaseTelemetry(); } catch (e) { logger.warn( "It looks like you're trying to enable firebase monitoring, but haven't installed the firebase plugin. Please run `npm i --save @genkit-ai/firebase` and redeploy." ); } } } function getTelemetryProvider() { if (global[telemetryProviderKey]) { return global[telemetryProviderKey]; } throw new GenkitError({ status: "FAILED_PRECONDITION", message: "TelemetryProvider is not initialized." }); } function setTelemetryProvider(provider) { if (global[telemetryProviderKey]) return; global[telemetryProviderKey] = provider; } async function enableTelemetry(telemetryConfig) { if (isOTelInitializationDisabled()) { return; } global[instrumentationKey] = telemetryConfig instanceof Promise ? telemetryConfig : Promise.resolve(); return getTelemetryProvider().enableTelemetry(telemetryConfig); } async function flushTracing() { return getTelemetryProvider().flushTracing(); } function isOTelInitializationDisabled() { return global[oTelInitializationKey] === true; } function disableGenkitOTelInitialization() { global[oTelInitializationKey] = true; } export { disableGenkitOTelInitialization, enableTelemetry, ensureBasicTelemetryInstrumentation, flushTracing, setTelemetryProvider }; //# sourceMappingURL=tracing.mjs.map