UNPKG

@genkit-ai/core

Version:

Genkit AI framework core libraries.

107 lines 4.43 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var node_telemetry_provider_exports = {}; __export(node_telemetry_provider_exports, { initNodeTelemetryProvider: () => initNodeTelemetryProvider }); module.exports = __toCommonJS(node_telemetry_provider_exports); var import_sdk_logs = require("@opentelemetry/sdk-logs"); var import_sdk_node = require("@opentelemetry/sdk-node"); var import_sdk_trace_base = require("@opentelemetry/sdk-trace-base"); var import_logging = require("../logging.js"); var import_tracing = require("../tracing.js"); var import_utils = require("../utils.js"); var import_exporter = require("./exporter.js"); var import_realtime_span_processor = require("./realtime-span-processor.js"); let telemetrySDK = null; let nodeOtelConfig = null; function initNodeTelemetryProvider() { (0, import_tracing.setTelemetryProvider)({ enableTelemetry, flushTracing }); } async function enableTelemetry(telemetryConfig) { if (process.env.GENKIT_TELEMETRY_SERVER) { (0, import_exporter.setTelemetryServerUrl)(process.env.GENKIT_TELEMETRY_SERVER); } telemetryConfig = telemetryConfig instanceof Promise ? await telemetryConfig : telemetryConfig; nodeOtelConfig = telemetryConfig || {}; const processors = [createTelemetryServerProcessor()]; if (nodeOtelConfig.traceExporter) { throw new Error("Please specify spanProcessors instead."); } if (nodeOtelConfig.spanProcessors) { processors.push(...nodeOtelConfig.spanProcessors); } if (nodeOtelConfig.spanProcessor) { processors.push(nodeOtelConfig.spanProcessor); delete nodeOtelConfig.spanProcessor; } nodeOtelConfig.spanProcessors = processors; if (process.env.GENKIT_OTEL_ENABLE_LOGS === "true") { const enableRealTimeTelemetry = process.env.GENKIT_ENABLE_REALTIME_TELEMETRY === "true"; const logExporter = new import_exporter.LogServerExporter(); const logProcessor = (0, import_utils.isDevEnv)() || enableRealTimeTelemetry ? new import_sdk_logs.SimpleLogRecordProcessor(logExporter) : new import_sdk_logs.BatchLogRecordProcessor(logExporter); nodeOtelConfig.logRecordProcessor = logProcessor; } telemetrySDK = new import_sdk_node.NodeSDK(nodeOtelConfig); telemetrySDK.start(); process.on("SIGTERM", async () => await cleanUpTracing()); } async function cleanUpTracing() { if (!telemetrySDK) { return; } await maybeFlushMetrics(); await telemetrySDK.shutdown(); import_logging.logger.debug("OpenTelemetry SDK shut down."); telemetrySDK = null; } function createTelemetryServerProcessor() { const exporter = new import_exporter.TraceServerExporter(); const enableRealTimeTelemetry = process.env.GENKIT_ENABLE_REALTIME_TELEMETRY === "true"; if ((0, import_utils.isDevEnv)() && enableRealTimeTelemetry) { return new import_realtime_span_processor.RealtimeSpanProcessor(exporter); } else if ((0, import_utils.isDevEnv)()) { return new import_sdk_trace_base.SimpleSpanProcessor(exporter); } return new import_sdk_trace_base.BatchSpanProcessor(exporter); } function maybeFlushMetrics() { if (nodeOtelConfig?.metricReader) { return nodeOtelConfig.metricReader.forceFlush(); } return Promise.resolve(); } async function flushTracing() { const promises = []; if (nodeOtelConfig?.spanProcessors) { promises.push(...nodeOtelConfig.spanProcessors.map((p) => p.forceFlush())); } if (nodeOtelConfig?.logRecordProcessor) { promises.push(nodeOtelConfig.logRecordProcessor.forceFlush()); } await Promise.all(promises); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { initNodeTelemetryProvider }); //# sourceMappingURL=node-telemetry-provider.js.map