@blaxel/telemetry 0.2.17-dev.124 → 0.2.17-dev.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,6 +42,14 @@ declare class TelemetryManager {
42
42
  flush(): Promise<void>;
43
43
  getLogger(): Promise<Logger>;
44
44
  setupSignalHandler(): void;
45
+ /**
46
+ * Check if telemetry is properly initialized and active
47
+ */
48
+ get isActive(): boolean;
49
+ /**
50
+ * Re-initialize telemetry if it was shut down
51
+ */
52
+ reinitialize(): Promise<void>;
45
53
  /**
46
54
  * Get resource attributes for OpenTelemetry.
47
55
  */
@@ -63,4 +71,6 @@ declare class TelemetryManager {
63
71
  shutdownApp(): Promise<void>;
64
72
  }
65
73
  export declare const blaxelTelemetry: TelemetryManager;
74
+ export declare function ensureTelemetryActive(): Promise<void>;
75
+ export declare function isTelemetryActive(): boolean;
66
76
  export {};
package/dist/telemetry.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.blaxelTelemetry = exports.DefaultAttributesSpanProcessor = exports.BlaxelResource = void 0;
4
+ exports.ensureTelemetryActive = ensureTelemetryActive;
5
+ exports.isTelemetryActive = isTelemetryActive;
4
6
  const core_1 = require("@blaxel/core");
5
7
  const api_1 = require("@opentelemetry/api");
6
8
  const api_logs_1 = require("@opentelemetry/api-logs");
@@ -142,6 +144,39 @@ class TelemetryManager {
142
144
  });
143
145
  });
144
146
  }
147
+ // Handle uncaughtException differently - log but don't shutdown telemetry
148
+ process.on("uncaughtException", (error) => {
149
+ core_1.logger.error("Uncaught exception:", error);
150
+ // Don't shutdown telemetry for uncaught exceptions
151
+ });
152
+ // Don't listen to 'exit' event as it can be triggered by various things
153
+ // and we don't want to shutdown telemetry unless explicitly requested
154
+ }
155
+ /**
156
+ * Check if telemetry is properly initialized and active
157
+ */
158
+ get isActive() {
159
+ return (this.initialized &&
160
+ this.configured &&
161
+ this.nodeTracerProvider !== null &&
162
+ this.meterProvider !== null);
163
+ }
164
+ /**
165
+ * Re-initialize telemetry if it was shut down
166
+ */
167
+ async reinitialize() {
168
+ if (!this.isActive) {
169
+ core_1.logger.info("Reinitializing telemetry...");
170
+ this.initialized = false;
171
+ this.configured = false;
172
+ this.nodeTracerProvider = null;
173
+ this.meterProvider = null;
174
+ this.loggerProvider = null;
175
+ this.otelLogger = null;
176
+ this.initialize();
177
+ await this.setConfiguration();
178
+ core_1.logger.info("Telemetry reinitialized successfully");
179
+ }
145
180
  }
146
181
  /**
147
182
  * Get resource attributes for OpenTelemetry.
@@ -364,3 +399,14 @@ class TelemetryManager {
364
399
  }
365
400
  }
366
401
  exports.blaxelTelemetry = new TelemetryManager();
402
+ // Export a function to manually check and reinitialize telemetry
403
+ async function ensureTelemetryActive() {
404
+ if (!exports.blaxelTelemetry.isActive) {
405
+ core_1.logger.info("Telemetry not active, reinitializing...");
406
+ await exports.blaxelTelemetry.reinitialize();
407
+ }
408
+ }
409
+ // Export a function to check telemetry status
410
+ function isTelemetryActive() {
411
+ return exports.blaxelTelemetry.isActive;
412
+ }
@@ -34,6 +34,12 @@ class OtelSpan {
34
34
  }
35
35
  class OtelTelemetryProvider {
36
36
  startSpan(name, options) {
37
+ // Check if telemetry is active, reinitialize if needed
38
+ if (!telemetry_1.blaxelTelemetry.isActive) {
39
+ core_1.logger.warn("Telemetry not active, reinitializing...");
40
+ // Synchronous reinitialize - just call initialize, setConfiguration will happen async
41
+ telemetry_1.blaxelTelemetry.initialize();
42
+ }
37
43
  // Use the tracer from the registered NodeTracerProvider
38
44
  const tracer = api_1.trace.getTracer("blaxel");
39
45
  // Prepare OpenTelemetry span options
@@ -55,6 +61,7 @@ class OtelTelemetryProvider {
55
61
  otelOptions: JSON.stringify(otelOptions),
56
62
  activeTraceId: activeSpan?.spanContext().traceId,
57
63
  contextKeys: Object.keys(ctx),
64
+ telemetryActive: telemetry_1.blaxelTelemetry.isActive,
58
65
  }));
59
66
  if (options?.parentContext) {
60
67
  // If explicit parent context is provided, use it
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaxel/telemetry",
3
- "version": "0.2.17-dev.124",
3
+ "version": "0.2.17-dev.125",
4
4
  "description": "Blaxel SDK for TypeScript",
5
5
  "license": "MIT",
6
6
  "author": "Blaxel, INC (https://blaxel.ai)",
@@ -71,7 +71,7 @@
71
71
  "@opentelemetry/sdk-trace-base": "^2.0.0",
72
72
  "@opentelemetry/sdk-trace-node": "^2.0.0",
73
73
  "ai": "^4.3.13",
74
- "@blaxel/core": "0.2.17-dev.124"
74
+ "@blaxel/core": "0.2.17-dev.125"
75
75
  },
76
76
  "devDependencies": {
77
77
  "@eslint/js": "^9.26.0",