autotel 7.2.0 → 7.3.0

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.
Files changed (42) hide show
  1. package/README.md +16 -14
  2. package/dist/auto.cjs +1 -1
  3. package/dist/auto.js +1 -1
  4. package/dist/correlation-id.cjs +1 -1
  5. package/dist/correlation-id.js +1 -1
  6. package/dist/decorators.cjs +1 -1
  7. package/dist/decorators.js +1 -1
  8. package/dist/event.cjs +1 -1
  9. package/dist/event.js +1 -1
  10. package/dist/{functional-Doi0hFm3.js → functional-C4js2vTM.js} +5 -2
  11. package/dist/{functional-C925G95W.cjs → functional-DHlD7V0x.cjs} +5 -2
  12. package/dist/functional.cjs +1 -1
  13. package/dist/functional.js +1 -1
  14. package/dist/http.cjs +1 -1
  15. package/dist/http.js +1 -1
  16. package/dist/index.cjs +2 -2
  17. package/dist/index.js +2 -2
  18. package/dist/{init-DzAdgcFM.js → init-CsKK9vZO.js} +22 -2
  19. package/dist/{init-aTZKsAwy.cjs → init-DmM7dprX.cjs} +27 -1
  20. package/dist/instrumentation.cjs +1 -1
  21. package/dist/instrumentation.js +1 -1
  22. package/dist/messaging.cjs +2 -2
  23. package/dist/messaging.js +2 -2
  24. package/dist/sampling.cjs +1 -1
  25. package/dist/sampling.js +1 -1
  26. package/dist/semantic-helpers.cjs +1 -1
  27. package/dist/semantic-helpers.js +1 -1
  28. package/dist/tail-sampling-processor.cjs +1 -1
  29. package/dist/tail-sampling-processor.js +1 -1
  30. package/dist/testing.cjs +32 -0
  31. package/dist/testing.d.cts +26 -1
  32. package/dist/testing.d.ts +26 -1
  33. package/dist/testing.js +32 -1
  34. package/dist/webhook.cjs +1 -1
  35. package/dist/webhook.js +1 -1
  36. package/dist/workflow-distributed.cjs +1 -1
  37. package/dist/workflow-distributed.js +1 -1
  38. package/dist/workflow.cjs +1 -1
  39. package/dist/workflow.js +1 -1
  40. package/dist/yaml-config.cjs +1 -1
  41. package/dist/yaml-config.js +1 -1
  42. package/package.json +1 -1
package/README.md CHANGED
@@ -143,20 +143,20 @@ Replace `NODE_OPTIONS` and 30+ lines of SDK boilerplate with `init()`, wrap func
143
143
 
144
144
  `autotel` has ~35 subpath exports. For most scenarios you only need one or two. Cloudflare Workers and other edge runtimes should use [`autotel-cloudflare`](../autotel-cloudflare) or [`autotel-edge`](../autotel-edge), not `autotel` (which expects Node).
145
145
 
146
- | Scenario | Package | Import |
147
- | -------------------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------- |
148
- | Node service: init + spans | `autotel` | `import { init, trace, span, withTracing, span } from 'autotel'` |
149
- | Node service: pino-style logger with trace context | `autotel` | `import { createLogger } from 'autotel/logger'` |
150
- | Node service: class decorators | `autotel` | `import { Trace, Span } from 'autotel/decorators'` |
151
- | Node service: Drizzle ORM spans | `autotel-drizzle` | `import { instrumentDrizzleClient } from 'autotel-drizzle'` |
152
- | Node service: testing assertions | `autotel` | `import { createTraceCollector } from 'autotel/testing'` |
153
- | Cloudflare Worker: fetch with spans | `autotel-cloudflare` | `import { wrapModule, trace, span, withTracing } from 'autotel-cloudflare'` |
154
- | Cloudflare Worker: logs only, no `nodejs_compat` | `autotel-cloudflare` | `import { createEdgeLogger } from 'autotel-cloudflare/logger'` |
155
- | Cloudflare Worker: queue consumer | `autotel-cloudflare` | `import { wrapModule, getQueueLogger } from 'autotel-cloudflare'` |
156
- | Cloudflare Worker: Durable Object | `autotel-cloudflare` | `import { wrapDurableObject } from 'autotel-cloudflare'` |
157
- | Hono on Workers | `autotel-cloudflare` + `autotel-hono` | `wrapModule` from `autotel-cloudflare`, middleware from `autotel-hono` |
158
- | Vercel Edge / Netlify Edge / Deno Deploy | `autotel-edge` | `import { init, trace, span, withTracing } from 'autotel-edge'` |
159
- | Edge runtime: logs only | `autotel-edge` | `import { createEdgeLogger } from 'autotel-edge/logger'` |
146
+ | Scenario | Package | Import |
147
+ | -------------------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------ |
148
+ | Node service: init + spans | `autotel` | `import { init, trace, span, withTracing, span } from 'autotel'` |
149
+ | Node service: pino-style logger with trace context | `autotel` | `import { createLogger } from 'autotel/logger'` |
150
+ | Node service: class decorators | `autotel` | `import { Trace, Span } from 'autotel/decorators'` |
151
+ | Node service: Drizzle ORM spans | `autotel-drizzle` | `import { instrumentDrizzleClient } from 'autotel-drizzle'` |
152
+ | Node service: testing assertions | `autotel` | `import { createTraceCollector, createMemoryExporter } from 'autotel/testing'` |
153
+ | Cloudflare Worker: fetch with spans | `autotel-cloudflare` | `import { wrapModule, trace, span, withTracing } from 'autotel-cloudflare'` |
154
+ | Cloudflare Worker: logs only, no `nodejs_compat` | `autotel-cloudflare` | `import { createEdgeLogger } from 'autotel-cloudflare/logger'` |
155
+ | Cloudflare Worker: queue consumer | `autotel-cloudflare` | `import { wrapModule, getQueueLogger } from 'autotel-cloudflare'` |
156
+ | Cloudflare Worker: Durable Object | `autotel-cloudflare` | `import { wrapDurableObject } from 'autotel-cloudflare'` |
157
+ | Hono on Workers | `autotel-cloudflare` + `autotel-hono` | `wrapModule` from `autotel-cloudflare`, middleware from `autotel-hono` |
158
+ | Vercel Edge / Netlify Edge / Deno Deploy | `autotel-edge` | `import { init, trace, span, withTracing } from 'autotel-edge'` |
159
+ | Edge runtime: logs only | `autotel-edge` | `import { createEdgeLogger } from 'autotel-edge/logger'` |
160
160
 
161
161
  ## Quick Start
162
162
 
@@ -434,6 +434,8 @@ calling a model, this is why.
434
434
 
435
435
  Autotel defaults to production-ready adaptive sampling: a 10% baseline, with errors and slow requests kept automatically.
436
436
 
437
+ A sampler configured here also governs the functions you wrap. `trace()`, `withTracing()` and `instrument()` resolve their sampler per call as `options.sampler ?? init()'s sampler ?? keep everything`, so `sampling: 'production'` applies to wrapped spans and not only to the SDK. Resolution is per call because a wrapper is usually created at module load, before `init()` has run. A sampler passed at the wrapper still wins.
438
+
437
439
  ### Preset Shorthand
438
440
 
439
441
  Use the `sampling` field on `init()` when you want the shortest path:
package/dist/auto.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  const require_rolldown_runtime = require('./rolldown-runtime-C_NdSu1c.cjs');
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
  let node_module = require("node:module");
4
4
  node_module = require_rolldown_runtime.__toESM(node_module, 1);
5
5
  let import_in_the_middle = require("import-in-the-middle");
package/dist/auto.js CHANGED
@@ -1,4 +1,4 @@
1
- import { g as loadYamlConfig, i as init } from "./init-DzAdgcFM.js";
1
+ import { _ as loadYamlConfig, a as init } from "./init-CsKK9vZO.js";
2
2
  import * as nodeModule from "node:module";
3
3
  import { createAddHookMessageChannel } from "import-in-the-middle";
4
4
 
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
 
4
4
  exports.CORRELATION_ID_BAGGAGE_KEY = require_init.CORRELATION_ID_BAGGAGE_KEY;
5
5
  exports.generateCorrelationId = require_init.generateCorrelationId;
@@ -1,3 +1,3 @@
1
- import { $ as getOrCreateCorrelationId, Q as getCorrelationStorage, X as generateCorrelationId, Y as CORRELATION_ID_BAGGAGE_KEY, Z as getCorrelationId, et as runWithCorrelationId, nt as setCorrelationIdInBaggage, tt as setCorrelationId } from "./init-DzAdgcFM.js";
1
+ import { $ as getCorrelationStorage, Q as getCorrelationId, X as CORRELATION_ID_BAGGAGE_KEY, Z as generateCorrelationId, et as getOrCreateCorrelationId, nt as setCorrelationId, rt as setCorrelationIdInBaggage, tt as runWithCorrelationId } from "./init-CsKK9vZO.js";
2
2
 
3
3
  export { CORRELATION_ID_BAGGAGE_KEY, generateCorrelationId, getCorrelationId, getCorrelationStorage, getOrCreateCorrelationId, runWithCorrelationId, setCorrelationId, setCorrelationIdInBaggage };
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_values = require('./values-DApyq53y.cjs');
3
3
  const require_config = require('./config.cjs');
4
- const require_init = require('./init-aTZKsAwy.cjs');
4
+ const require_init = require('./init-DmM7dprX.cjs');
5
5
  let _opentelemetry_api = require("@opentelemetry/api");
6
6
 
7
7
  //#region src/decorators.ts
@@ -1,6 +1,6 @@
1
1
  import { y as splitNameOrOptions } from "./values-BenyvWKz.js";
2
2
  import { getConfig } from "./config.js";
3
- import { H as createTraceContext } from "./init-DzAdgcFM.js";
3
+ import { U as createTraceContext } from "./init-CsKK9vZO.js";
4
4
  import { SpanStatusCode } from "@opentelemetry/api";
5
5
 
6
6
  //#region src/decorators.ts
package/dist/event.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
 
4
4
  exports.Event = require_init.Event;
5
5
  exports.getEvents = require_init.getEvents;
package/dist/event.js CHANGED
@@ -1,3 +1,3 @@
1
- import { d as getEvents, f as resetEvents, u as Event } from "./init-DzAdgcFM.js";
1
+ import { d as Event, f as getEvents, p as resetEvents } from "./init-CsKK9vZO.js";
2
2
 
3
3
  export { Event, getEvents, resetEvents };
@@ -1,7 +1,7 @@
1
1
  import { l as asString, m as isDevelopment } from "./values-BenyvWKz.js";
2
2
  import { getForceFlushableProvider } from "./tracer-provider.js";
3
3
  import { getConfig } from "./config.js";
4
- import { C as AUTOTEL_SAMPLING_TAIL_EVALUATED, E as AlwaysSampler, F as debugCaptureRequested, G as getContextStorage, H as createTraceContext, K as hasExplicitSpanStatus, R as isForceKept, S as AUTOTEL_SAMPLING_RATE, W as getActiveContextWithBaggage, m as runInOperationContext, q as getEventQueue, r as getSdk, t as getConfig$1, w as AUTOTEL_SAMPLING_TAIL_KEEP } from "./init-DzAdgcFM.js";
4
+ import { C as AUTOTEL_SAMPLING_RATE, D as AlwaysSampler, G as getActiveContextWithBaggage, I as debugCaptureRequested, J as getEventQueue, K as getContextStorage, T as AUTOTEL_SAMPLING_TAIL_KEEP, U as createTraceContext, h as runInOperationContext, i as getSdk, n as getConfiguredSampler, q as hasExplicitSpanStatus, t as getConfig$1, w as AUTOTEL_SAMPLING_TAIL_EVALUATED, z as isForceKept } from "./init-CsKK9vZO.js";
5
5
  import { evidenceAttribute } from "./evidence.js";
6
6
  import { setSpanName } from "./trace-helpers.js";
7
7
  import { SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
@@ -343,9 +343,11 @@ function runWithTraceContextStorage(fn) {
343
343
  if (storage.getStore()) return fn();
344
344
  return storage.run({ value: context.active() }, fn);
345
345
  }
346
+ /** Used when neither the wrapper nor `init()` chose a sampler. */
347
+ const FALLBACK_SAMPLER = new AlwaysSampler();
346
348
  function wrapWithTracingSync(fnFactory, options, variableName) {
347
349
  const { tracer, meter } = getConfig();
348
- const sampler = options.sampler || new AlwaysSampler();
350
+ const resolveSampler = () => options.sampler ?? getConfiguredSampler() ?? FALLBACK_SAMPLER;
349
351
  const spanName = getSpanName(options, fnFactory, variableName);
350
352
  const callCounter = options.withMetrics ? meter.createCounter(`${spanName}.calls`, {
351
353
  description: `Call count for ${spanName}`,
@@ -361,6 +363,7 @@ function wrapWithTracingSync(fnFactory, options, variableName) {
361
363
  args,
362
364
  metadata: {}
363
365
  };
366
+ const sampler = resolveSampler();
364
367
  const shouldSample = sampler.shouldSample(samplingContext);
365
368
  const sampleRate = sampler.sampleRate?.(samplingContext);
366
369
  const needsTailSampling = sampler.needsTailSampling?.() ?? false;
@@ -2,7 +2,7 @@ const require_rolldown_runtime = require('./rolldown-runtime-C_NdSu1c.cjs');
2
2
  const require_values = require('./values-DApyq53y.cjs');
3
3
  const require_tracer_provider = require('./tracer-provider.cjs');
4
4
  const require_config = require('./config.cjs');
5
- const require_init = require('./init-aTZKsAwy.cjs');
5
+ const require_init = require('./init-DmM7dprX.cjs');
6
6
  const require_evidence = require('./evidence.cjs');
7
7
  const require_trace_helpers = require('./trace-helpers.cjs');
8
8
  let _opentelemetry_api = require("@opentelemetry/api");
@@ -346,9 +346,11 @@ function runWithTraceContextStorage(fn) {
346
346
  if (storage.getStore()) return fn();
347
347
  return storage.run({ value: _opentelemetry_api.context.active() }, fn);
348
348
  }
349
+ /** Used when neither the wrapper nor `init()` chose a sampler. */
350
+ const FALLBACK_SAMPLER = new require_init.AlwaysSampler();
349
351
  function wrapWithTracingSync(fnFactory, options, variableName) {
350
352
  const { tracer, meter } = require_config.getConfig();
351
- const sampler = options.sampler || new require_init.AlwaysSampler();
353
+ const resolveSampler = () => options.sampler ?? require_init.getConfiguredSampler() ?? FALLBACK_SAMPLER;
352
354
  const spanName = getSpanName(options, fnFactory, variableName);
353
355
  const callCounter = options.withMetrics ? meter.createCounter(`${spanName}.calls`, {
354
356
  description: `Call count for ${spanName}`,
@@ -364,6 +366,7 @@ function wrapWithTracingSync(fnFactory, options, variableName) {
364
366
  args,
365
367
  metadata: {}
366
368
  };
369
+ const sampler = resolveSampler();
367
370
  const shouldSample = sampler.shouldSample(samplingContext);
368
371
  const sampleRate = sampler.sampleRate?.(samplingContext);
369
372
  const needsTailSampling = sampler.needsTailSampling?.() ?? false;
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_functional = require('./functional-C925G95W.cjs');
2
+ const require_functional = require('./functional-DHlD7V0x.cjs');
3
3
 
4
4
  exports.ctx = require_functional.ctx;
5
5
  exports.getActiveTraceContext = require_functional.getActiveTraceContext;
@@ -1,3 +1,3 @@
1
- import { a as trace, c as withTracing, i as span, n as getActiveTraceContext, o as withBaggage, r as instrument, s as withNewContext, t as ctx } from "./functional-Doi0hFm3.js";
1
+ import { a as trace, c as withTracing, i as span, n as getActiveTraceContext, o as withBaggage, r as instrument, s as withNewContext, t as ctx } from "./functional-C4js2vTM.js";
2
2
 
3
3
  export { ctx, getActiveTraceContext, instrument, span, trace, withBaggage, withNewContext, withTracing };
package/dist/http.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_values = require('./values-DApyq53y.cjs');
3
3
  const require_config = require('./config.cjs');
4
- const require_init = require('./init-aTZKsAwy.cjs');
4
+ const require_init = require('./init-DmM7dprX.cjs');
5
5
  let _opentelemetry_api = require("@opentelemetry/api");
6
6
 
7
7
  //#region src/http.ts
package/dist/http.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { _ as readProperty, h as isFunction, i as asNumber, l as asString } from "./values-BenyvWKz.js";
2
2
  import { getConfig } from "./config.js";
3
- import { W as getActiveContextWithBaggage } from "./init-DzAdgcFM.js";
3
+ import { G as getActiveContextWithBaggage } from "./init-CsKK9vZO.js";
4
4
  import { SpanStatusCode, context, propagation } from "@opentelemetry/api";
5
5
 
6
6
  //#region src/http.ts
package/dist/index.cjs CHANGED
@@ -3,13 +3,13 @@ const require_rolldown_runtime = require('./rolldown-runtime-C_NdSu1c.cjs');
3
3
  const require_values = require('./values-DApyq53y.cjs');
4
4
  const require_tracer_provider = require('./tracer-provider.cjs');
5
5
  const require_structured_error = require('./structured-error--_wXpd_C.cjs');
6
- const require_init = require('./init-aTZKsAwy.cjs');
6
+ const require_init = require('./init-DmM7dprX.cjs');
7
7
  const require_filtering_span_processor = require('./filtering-span-processor.cjs');
8
8
  const require_span_name_normalizer = require('./span-name-normalizer.cjs');
9
9
  const require_attribute_redacting_processor = require('./attribute-redacting-processor.cjs');
10
10
  const require_canonical_log_line_processor = require('./canonical-log-line-processor-DolzdawH.cjs');
11
11
  const require_metric = require('./metric.cjs');
12
- const require_functional = require('./functional-C925G95W.cjs');
12
+ const require_functional = require('./functional-DHlD7V0x.cjs');
13
13
  const require_trace_helpers = require('./trace-helpers.cjs');
14
14
  const require_stable_hash = require('./stable-hash-C0pOegH_.cjs');
15
15
  const require_correlated_events = require('./correlated-events-CcuknWnU.cjs');
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { g as nonEmptyString, i as asNumber, l as asString, r as asFunction, s as asRecord, x as toError } from "./values-BenyvWKz.js";
2
2
  import { getAutotelTracer, getAutotelTracerProvider, setAutotelTracerProvider } from "./tracer-provider.js";
3
3
  import { a as flattenToAttributes, i as structuredErrorToJSON, n as getStructuredErrorAttributes, o as toAttributeValue, r as recordStructuredError, t as createStructuredError } from "./structured-error-YIuka-FE.js";
4
- import { $ as getOrCreateCorrelationId, B as resolveSamplingPreset, C as AUTOTEL_SAMPLING_TAIL_EVALUATED, E as AlwaysSampler, H as createTraceContext, I as extractLinksFromBatch, J as track, M as RandomSampler, N as UserIdSampler, P as createLinkFromHeaders, T as AdaptiveSampler, U as defineBaggageSchema, V as samplingPresets, X as generateCorrelationId, Y as CORRELATION_ID_BAGGAGE_KEY, Z as getCorrelationId, a as isInitialized, c as flush, d as getEvents, et as runWithCorrelationId, f as resetEvents, i as init, j as NeverSampler, l as shutdown, m as runInOperationContext, nt as setCorrelationIdInBaggage, o as isLoggerLocked, p as getOperationContext, q as getEventQueue, s as lockLogger, tt as setCorrelationId, u as Event, v as createStringRedactor, w as AUTOTEL_SAMPLING_TAIL_KEEP, x as AUTOTEL_DEBUG_BAGGAGE_KEY, y as BaggageSpanProcessor, z as markForceKept } from "./init-DzAdgcFM.js";
4
+ import { B as markForceKept, D as AlwaysSampler, E as AdaptiveSampler, F as createLinkFromHeaders, H as samplingPresets, J as getEventQueue, L as extractLinksFromBatch, M as NeverSampler, N as RandomSampler, P as UserIdSampler, Q as getCorrelationId, S as AUTOTEL_DEBUG_BAGGAGE_KEY, T as AUTOTEL_SAMPLING_TAIL_KEEP, U as createTraceContext, V as resolveSamplingPreset, W as defineBaggageSchema, X as CORRELATION_ID_BAGGAGE_KEY, Y as track, Z as generateCorrelationId, a as init, b as BaggageSpanProcessor, c as lockLogger, d as Event, et as getOrCreateCorrelationId, f as getEvents, h as runInOperationContext, l as flush, m as getOperationContext, nt as setCorrelationId, o as isInitialized, p as resetEvents, rt as setCorrelationIdInBaggage, s as isLoggerLocked, tt as runWithCorrelationId, u as shutdown, w as AUTOTEL_SAMPLING_TAIL_EVALUATED, y as createStringRedactor } from "./init-CsKK9vZO.js";
5
5
  import { FilteringSpanProcessor } from "./filtering-span-processor.js";
6
6
  import { NORMALIZER_PATTERNS, NORMALIZER_PRESETS, SpanNameNormalizingProcessor } from "./span-name-normalizer.js";
7
7
  import { AttributeRedactingProcessor, REDACTOR_PATTERNS, REDACTOR_PRESETS, builtinPatterns, createAttributeRedactor, createRedactedSpan, normalizeAttributeRedactorConfig } from "./attribute-redacting-processor.js";
8
8
  import { n as formatDuration } from "./canonical-log-line-processor-hFUmS__K.js";
9
9
  import { Metric, getMetrics, resetMetrics } from "./metric.js";
10
- import { a as trace$2, c as withTracing, i as span, n as getActiveTraceContext, o as withBaggage, r as instrument, s as withNewContext, t as ctx } from "./functional-Doi0hFm3.js";
10
+ import { a as trace$2, c as withTracing, i as span, n as getActiveTraceContext, o as withBaggage, r as instrument, s as withNewContext, t as ctx } from "./functional-C4js2vTM.js";
11
11
  import { createDeterministicTraceId, enrichWithTraceContext, finalizeSpan, flattenMetadata, getActiveContext, getActiveSpan, getTraceContext, getTracer, isTracing, resolveTraceUrl, runWithSpan } from "./trace-helpers.js";
12
12
  import { t as hashJson } from "./stable-hash-BkoAYVks.js";
13
13
  import { t as emitCorrelatedEvent } from "./correlated-events-DwMMbItg.js";
@@ -782,6 +782,7 @@ function validateEvent(eventName, attributes, config) {
782
782
  * Simple, no instantiation needed, auto-attaches trace context
783
783
  */
784
784
  let eventsQueue = null;
785
+ let warnedNoSubscribers = false;
785
786
  /**
786
787
  * Build autotel event context for trace correlation
787
788
  *
@@ -838,7 +839,13 @@ function getOrCreateQueue() {
838
839
  }
839
840
  if (!eventsQueue) {
840
841
  const config = getConfig();
841
- if (!config?.subscribers || config.subscribers.length === 0) return null;
842
+ if (!config?.subscribers || config.subscribers.length === 0) {
843
+ if (!warnedNoSubscribers) {
844
+ warnedNoSubscribers = true;
845
+ getLogger().warn({}, "[autotel] track() dropped an event: init() configured no subscribers. Events (including gen_ai.evaluation.result and audit events) reach a backend through init({ subscribers: [...] }).");
846
+ }
847
+ return null;
848
+ }
842
849
  eventsQueue = new EventQueue(config.subscribers);
843
850
  }
844
851
  return eventsQueue;
@@ -910,6 +917,7 @@ function getEventQueue() {
910
917
  */
911
918
  function resetEventQueue() {
912
919
  eventsQueue = null;
920
+ warnedNoSubscribers = false;
913
921
  }
914
922
 
915
923
  //#endregion
@@ -4212,6 +4220,18 @@ function warnIfNotInitialized(context) {
4212
4220
  }
4213
4221
  }
4214
4222
  /**
4223
+ * The sampler `init()` was configured with, or undefined when it was not.
4224
+ *
4225
+ * Separate from {@link getDefaultSampler} on purpose: the tracing wrapper needs
4226
+ * to know whether a sampler was *chosen*. Falling back to the production preset
4227
+ * there would start dropping spans for every app that never asked to sample.
4228
+ *
4229
+ * @internal
4230
+ */
4231
+ function getConfiguredSampler() {
4232
+ return config?.sampler;
4233
+ }
4234
+ /**
4215
4235
  * @internal Close embedded devtools if running.
4216
4236
  */
4217
4237
  async function _closeEmbeddedDevtools() {
@@ -4228,4 +4248,4 @@ function getSdk() {
4228
4248
  }
4229
4249
 
4230
4250
  //#endregion
4231
- export { getOrCreateCorrelationId as $, KeyTargetRateSampler as A, resolveSamplingPreset as B, AUTOTEL_SAMPLING_TAIL_EVALUATED as C, CompositeSampler as D, AlwaysSampler as E, debugCaptureRequested as F, getContextStorage as G, createTraceContext as H, extractLinksFromBatch as I, track as J, hasExplicitSpanStatus as K, hashUnitInterval as L, RandomSampler as M, UserIdSampler as N, DeterministicSampler as O, createLinkFromHeaders as P, getCorrelationStorage as Q, isForceKept as R, AUTOTEL_SAMPLING_RATE as S, AdaptiveSampler as T, defineBaggageSchema as U, samplingPresets as V, getActiveContextWithBaggage as W, generateCorrelationId as X, CORRELATION_ID_BAGGAGE_KEY as Y, getCorrelationId as Z, loadYamlConfigFromFile as _, isInitialized as a, TailSamplingSpanProcessor as b, flush as c, getEvents as d, runWithCorrelationId as et, resetEvents as f, loadYamlConfig as g, hasYamlConfig as h, init as i, NeverSampler as j, FeatureFlagSampler as k, shutdown as l, runInOperationContext as m, getLogger as n, setCorrelationIdInBaggage as nt, isLoggerLocked as o, getOperationContext as p, getEventQueue as q, getSdk as r, lockLogger as s, getConfig as t, setCorrelationId as tt, Event as u, createStringRedactor as v, AUTOTEL_SAMPLING_TAIL_KEEP as w, AUTOTEL_DEBUG_BAGGAGE_KEY as x, BaggageSpanProcessor as y, markForceKept as z };
4251
+ export { getCorrelationStorage as $, FeatureFlagSampler as A, markForceKept as B, AUTOTEL_SAMPLING_RATE as C, AlwaysSampler as D, AdaptiveSampler as E, createLinkFromHeaders as F, getActiveContextWithBaggage as G, samplingPresets as H, debugCaptureRequested as I, getEventQueue as J, getContextStorage as K, extractLinksFromBatch as L, NeverSampler as M, RandomSampler as N, CompositeSampler as O, UserIdSampler as P, getCorrelationId as Q, hashUnitInterval as R, AUTOTEL_DEBUG_BAGGAGE_KEY as S, AUTOTEL_SAMPLING_TAIL_KEEP as T, createTraceContext as U, resolveSamplingPreset as V, defineBaggageSchema as W, CORRELATION_ID_BAGGAGE_KEY as X, track as Y, generateCorrelationId as Z, loadYamlConfig as _, init as a, BaggageSpanProcessor as b, lockLogger as c, Event as d, getOrCreateCorrelationId as et, getEvents as f, hasYamlConfig as g, runInOperationContext as h, getSdk as i, KeyTargetRateSampler as j, DeterministicSampler as k, flush as l, getOperationContext as m, getConfiguredSampler as n, setCorrelationId as nt, isInitialized as o, resetEvents as p, hasExplicitSpanStatus as q, getLogger as r, setCorrelationIdInBaggage as rt, isLoggerLocked as s, getConfig as t, runWithCorrelationId as tt, shutdown as u, loadYamlConfigFromFile as v, AUTOTEL_SAMPLING_TAIL_EVALUATED as w, TailSamplingSpanProcessor as x, createStringRedactor as y, isForceKept as z };
@@ -786,6 +786,7 @@ function validateEvent(eventName, attributes, config) {
786
786
  * Simple, no instantiation needed, auto-attaches trace context
787
787
  */
788
788
  let eventsQueue = null;
789
+ let warnedNoSubscribers = false;
789
790
  /**
790
791
  * Build autotel event context for trace correlation
791
792
  *
@@ -842,7 +843,13 @@ function getOrCreateQueue() {
842
843
  }
843
844
  if (!eventsQueue) {
844
845
  const config = getConfig();
845
- if (!config?.subscribers || config.subscribers.length === 0) return null;
846
+ if (!config?.subscribers || config.subscribers.length === 0) {
847
+ if (!warnedNoSubscribers) {
848
+ warnedNoSubscribers = true;
849
+ getLogger().warn({}, "[autotel] track() dropped an event: init() configured no subscribers. Events (including gen_ai.evaluation.result and audit events) reach a backend through init({ subscribers: [...] }).");
850
+ }
851
+ return null;
852
+ }
846
853
  eventsQueue = new EventQueue(config.subscribers);
847
854
  }
848
855
  return eventsQueue;
@@ -914,6 +921,7 @@ function getEventQueue() {
914
921
  */
915
922
  function resetEventQueue() {
916
923
  eventsQueue = null;
924
+ warnedNoSubscribers = false;
917
925
  }
918
926
 
919
927
  //#endregion
@@ -4216,6 +4224,18 @@ function warnIfNotInitialized(context) {
4216
4224
  }
4217
4225
  }
4218
4226
  /**
4227
+ * The sampler `init()` was configured with, or undefined when it was not.
4228
+ *
4229
+ * Separate from {@link getDefaultSampler} on purpose: the tracing wrapper needs
4230
+ * to know whether a sampler was *chosen*. Falling back to the production preset
4231
+ * there would start dropping spans for every app that never asked to sample.
4232
+ *
4233
+ * @internal
4234
+ */
4235
+ function getConfiguredSampler() {
4236
+ return config?.sampler;
4237
+ }
4238
+ /**
4219
4239
  * @internal Close embedded devtools if running.
4220
4240
  */
4221
4241
  async function _closeEmbeddedDevtools() {
@@ -4394,6 +4414,12 @@ Object.defineProperty(exports, 'getConfig', {
4394
4414
  return getConfig;
4395
4415
  }
4396
4416
  });
4417
+ Object.defineProperty(exports, 'getConfiguredSampler', {
4418
+ enumerable: true,
4419
+ get: function () {
4420
+ return getConfiguredSampler;
4421
+ }
4422
+ });
4397
4423
  Object.defineProperty(exports, 'getContextStorage', {
4398
4424
  enumerable: true,
4399
4425
  get: function () {
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
  const require_node_require = require('./node-require-EifOMikz.cjs');
4
4
  let _opentelemetry_sdk_node = require("@opentelemetry/sdk-node");
5
5
  let _opentelemetry_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
@@ -1,4 +1,4 @@
1
- import { b as TailSamplingSpanProcessor, n as getLogger } from "./init-DzAdgcFM.js";
1
+ import { r as getLogger, x as TailSamplingSpanProcessor } from "./init-CsKK9vZO.js";
2
2
  import { n as safeRequire, t as requireModule } from "./node-require-DSPjaw_l.js";
3
3
  import { NodeSDK } from "@opentelemetry/sdk-node";
4
4
  import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_values = require('./values-DApyq53y.cjs');
3
- const require_init = require('./init-aTZKsAwy.cjs');
4
- const require_functional = require('./functional-C925G95W.cjs');
3
+ const require_init = require('./init-DmM7dprX.cjs');
4
+ const require_functional = require('./functional-DHlD7V0x.cjs');
5
5
  const require_correlated_events = require('./correlated-events-CcuknWnU.cjs');
6
6
  const require_trace_factory_validation = require('./trace-factory-validation-Dc8epn87.cjs');
7
7
  let _opentelemetry_api = require("@opentelemetry/api");
package/dist/messaging.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { _ as readProperty, b as toAttributeValue, c as asScalar, g as nonEmptyString, h as isFunction, s as asRecord, v as resolveValue, y as splitNameOrOptions } from "./values-BenyvWKz.js";
2
- import { I as extractLinksFromBatch, P as createLinkFromHeaders } from "./init-DzAdgcFM.js";
3
- import { c as withTracing } from "./functional-Doi0hFm3.js";
2
+ import { F as createLinkFromHeaders, L as extractLinksFromBatch } from "./init-CsKK9vZO.js";
3
+ import { c as withTracing } from "./functional-C4js2vTM.js";
4
4
  import { t as emitCorrelatedEvent } from "./correlated-events-DwMMbItg.js";
5
5
  import { t as assertTraceFactory } from "./trace-factory-validation-BjVAinz6.js";
6
6
  import { SpanKind, context, propagation } from "@opentelemetry/api";
package/dist/sampling.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
 
4
4
  exports.AUTOTEL_DEBUG_BAGGAGE_KEY = require_init.AUTOTEL_DEBUG_BAGGAGE_KEY;
5
5
  exports.AUTOTEL_SAMPLING_RATE = require_init.AUTOTEL_SAMPLING_RATE;
package/dist/sampling.js CHANGED
@@ -1,3 +1,3 @@
1
- import { A as KeyTargetRateSampler, B as resolveSamplingPreset, C as AUTOTEL_SAMPLING_TAIL_EVALUATED, D as CompositeSampler, E as AlwaysSampler, F as debugCaptureRequested, I as extractLinksFromBatch, L as hashUnitInterval, M as RandomSampler, N as UserIdSampler, O as DeterministicSampler, P as createLinkFromHeaders, R as isForceKept, S as AUTOTEL_SAMPLING_RATE, T as AdaptiveSampler, V as samplingPresets, j as NeverSampler, k as FeatureFlagSampler, w as AUTOTEL_SAMPLING_TAIL_KEEP, x as AUTOTEL_DEBUG_BAGGAGE_KEY, z as markForceKept } from "./init-DzAdgcFM.js";
1
+ import { A as FeatureFlagSampler, B as markForceKept, C as AUTOTEL_SAMPLING_RATE, D as AlwaysSampler, E as AdaptiveSampler, F as createLinkFromHeaders, H as samplingPresets, I as debugCaptureRequested, L as extractLinksFromBatch, M as NeverSampler, N as RandomSampler, O as CompositeSampler, P as UserIdSampler, R as hashUnitInterval, S as AUTOTEL_DEBUG_BAGGAGE_KEY, T as AUTOTEL_SAMPLING_TAIL_KEEP, V as resolveSamplingPreset, j as KeyTargetRateSampler, k as DeterministicSampler, w as AUTOTEL_SAMPLING_TAIL_EVALUATED, z as isForceKept } from "./init-CsKK9vZO.js";
2
2
 
3
3
  export { AUTOTEL_DEBUG_BAGGAGE_KEY, AUTOTEL_SAMPLING_RATE, AUTOTEL_SAMPLING_TAIL_EVALUATED, AUTOTEL_SAMPLING_TAIL_KEEP, AdaptiveSampler, AlwaysSampler, CompositeSampler, DeterministicSampler, FeatureFlagSampler, KeyTargetRateSampler, NeverSampler, RandomSampler, UserIdSampler, createLinkFromHeaders, debugCaptureRequested, extractLinksFromBatch, hashUnitInterval, isForceKept, markForceKept, resolveSamplingPreset, samplingPresets };
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_values = require('./values-DApyq53y.cjs');
3
- const require_functional = require('./functional-C925G95W.cjs');
3
+ const require_functional = require('./functional-DHlD7V0x.cjs');
4
4
  const require_trace_factory_validation = require('./trace-factory-validation-Dc8epn87.cjs');
5
5
  let _opentelemetry_api = require("@opentelemetry/api");
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { b as toAttributeValue, g as nonEmptyString, s as asRecord } from "./values-BenyvWKz.js";
2
- import { c as withTracing } from "./functional-Doi0hFm3.js";
2
+ import { c as withTracing } from "./functional-C4js2vTM.js";
3
3
  import { t as assertTraceFactory } from "./trace-factory-validation-BjVAinz6.js";
4
4
  import { SpanKind } from "@opentelemetry/api";
5
5
 
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
 
4
4
  exports.TailSamplingSpanProcessor = require_init.TailSamplingSpanProcessor;
@@ -1,3 +1,3 @@
1
- import { b as TailSamplingSpanProcessor } from "./init-DzAdgcFM.js";
1
+ import { x as TailSamplingSpanProcessor } from "./init-CsKK9vZO.js";
2
2
 
3
3
  export { TailSamplingSpanProcessor };
package/dist/testing.cjs CHANGED
@@ -8,6 +8,37 @@ let _opentelemetry_api = require("@opentelemetry/api");
8
8
  let node_async_hooks = require("node:async_hooks");
9
9
  node_async_hooks = require_rolldown_runtime.__toESM(node_async_hooks, 1);
10
10
 
11
+ //#region src/memory-exporter.ts
12
+ function toRecordedSpan(span) {
13
+ return {
14
+ name: span.name,
15
+ traceId: span.spanContext().traceId,
16
+ spanId: span.spanContext().spanId,
17
+ parentSpanId: span.parentSpanContext?.spanId,
18
+ durationMs: span.duration[0] * 1e3 + span.duration[1] / 1e6,
19
+ attributes: { ...span.attributes },
20
+ status: span.status
21
+ };
22
+ }
23
+ function createMemoryExporter() {
24
+ const collected = [];
25
+ return {
26
+ export(spans, resultCallback) {
27
+ for (const span of spans) collected.push(toRecordedSpan(span));
28
+ resultCallback({ code: 0 });
29
+ },
30
+ async shutdown() {},
31
+ async forceFlush() {},
32
+ spans: () => [...collected],
33
+ findSpan: (name) => collected.find((span) => span.name === name),
34
+ findSpans: (name) => collected.filter((span) => span.name === name),
35
+ reset: () => {
36
+ collected.length = 0;
37
+ }
38
+ };
39
+ }
40
+
41
+ //#endregion
11
42
  //#region src/testing.ts
12
43
  /**
13
44
  * Testing Utilities
@@ -479,6 +510,7 @@ exports.assertTraceDuration = assertTraceDuration;
479
510
  exports.assertTraceFailed = assertTraceFailed;
480
511
  exports.assertTraceSucceeded = assertTraceSucceeded;
481
512
  exports.createEventCollector = require_event_testing.createEventCollector;
513
+ exports.createMemoryExporter = createMemoryExporter;
482
514
  exports.createMockLogger = createMockLogger;
483
515
  exports.createTraceCollector = createTraceCollector;
484
516
  exports.getTraceDuration = getTraceDuration;
@@ -2,7 +2,32 @@ import { t as UnknownRecord } from "./values-CeMH-mYG.cjs";
2
2
  import { s as Logger } from "./logger-S1Fgl0g3.cjs";
3
3
  import { a as EventsValue, c as createEventCollector, i as EventsOutcome, n as EventData, o as assertEventTracked, r as EventsFunnelStep, s as assertOutcomeTracked, t as EventCollector } from "./event-testing-CBtnJXE5.cjs";
4
4
  import { SerializedSpan, TestSpanCollector, serializeSpan } from "./test-span-collector.cjs";
5
+ import { SpanExporter } from "@opentelemetry/sdk-trace-base";
5
6
  import { Attributes, Link, SpanKind, SpanStatus, SpanStatusCode } from "@opentelemetry/api";
7
+ //#region src/memory-exporter.d.ts
8
+ /** One finished span, flattened to the fields an assertion usually wants. */
9
+ interface RecordedSpan {
10
+ name: string;
11
+ traceId: string;
12
+ spanId: string;
13
+ parentSpanId: string | undefined;
14
+ /** Wall-clock duration of the span, in milliseconds. */
15
+ durationMs: number;
16
+ attributes: Attributes;
17
+ status: SpanStatus;
18
+ }
19
+ interface MemoryExporter extends SpanExporter {
20
+ /** Every span exported so far, in the order it finished. */
21
+ spans(): RecordedSpan[];
22
+ /** The first span with this name, or undefined. */
23
+ findSpan(name: string): RecordedSpan | undefined;
24
+ /** Every span with this name. */
25
+ findSpans(name: string): RecordedSpan[];
26
+ /** Discard what has been collected. */
27
+ reset(): void;
28
+ }
29
+ declare function createMemoryExporter(): MemoryExporter;
30
+ //#endregion
6
31
  //#region src/testing.d.ts
7
32
  /**
8
33
  * Note: OpenTelemetry exporters and processors have moved to dedicated modules
@@ -290,4 +315,4 @@ declare function getTraceDuration(collector: TraceCollector, operationName: stri
290
315
  */
291
316
  declare function assertTraceDuration(collector: TraceCollector, operationName: string, maxDurationMs: number): void;
292
317
  //#endregion
293
- export { type EventCollector, type EventData, type EventsFunnelStep, type EventsOutcome, type EventsValue, LogCollector, LogEntry, type SerializedSpan, SpanMatch, TestSpan, TestSpanCollector, TraceCollector, assertEventTracked, assertNoErrors, assertNoErrorsLogged, assertOutcomeTracked, assertTraceCreated, assertTraceDuration, assertTraceFailed, assertTraceSucceeded, createEventCollector, createMockLogger, createTraceCollector, getTraceDuration, serializeSpan, waitForTrace };
318
+ export { type EventCollector, type EventData, type EventsFunnelStep, type EventsOutcome, type EventsValue, LogCollector, LogEntry, type MemoryExporter, type RecordedSpan, type SerializedSpan, SpanMatch, TestSpan, TestSpanCollector, TraceCollector, assertEventTracked, assertNoErrors, assertNoErrorsLogged, assertOutcomeTracked, assertTraceCreated, assertTraceDuration, assertTraceFailed, assertTraceSucceeded, createEventCollector, createMemoryExporter, createMockLogger, createTraceCollector, getTraceDuration, serializeSpan, waitForTrace };
package/dist/testing.d.ts CHANGED
@@ -2,7 +2,32 @@ import { t as UnknownRecord } from "./values-CeMH-mYG.js";
2
2
  import { s as Logger } from "./logger-S1Fgl0g3.js";
3
3
  import { a as EventsValue, c as createEventCollector, i as EventsOutcome, n as EventData, o as assertEventTracked, r as EventsFunnelStep, s as assertOutcomeTracked, t as EventCollector } from "./event-testing-CkPgV3Ii.js";
4
4
  import { SerializedSpan, TestSpanCollector, serializeSpan } from "./test-span-collector.js";
5
+ import { SpanExporter } from "@opentelemetry/sdk-trace-base";
5
6
  import { Attributes, Link, SpanKind, SpanStatus, SpanStatusCode } from "@opentelemetry/api";
7
+ //#region src/memory-exporter.d.ts
8
+ /** One finished span, flattened to the fields an assertion usually wants. */
9
+ interface RecordedSpan {
10
+ name: string;
11
+ traceId: string;
12
+ spanId: string;
13
+ parentSpanId: string | undefined;
14
+ /** Wall-clock duration of the span, in milliseconds. */
15
+ durationMs: number;
16
+ attributes: Attributes;
17
+ status: SpanStatus;
18
+ }
19
+ interface MemoryExporter extends SpanExporter {
20
+ /** Every span exported so far, in the order it finished. */
21
+ spans(): RecordedSpan[];
22
+ /** The first span with this name, or undefined. */
23
+ findSpan(name: string): RecordedSpan | undefined;
24
+ /** Every span with this name. */
25
+ findSpans(name: string): RecordedSpan[];
26
+ /** Discard what has been collected. */
27
+ reset(): void;
28
+ }
29
+ declare function createMemoryExporter(): MemoryExporter;
30
+ //#endregion
6
31
  //#region src/testing.d.ts
7
32
  /**
8
33
  * Note: OpenTelemetry exporters and processors have moved to dedicated modules
@@ -290,4 +315,4 @@ declare function getTraceDuration(collector: TraceCollector, operationName: stri
290
315
  */
291
316
  declare function assertTraceDuration(collector: TraceCollector, operationName: string, maxDurationMs: number): void;
292
317
  //#endregion
293
- export { type EventCollector, type EventData, type EventsFunnelStep, type EventsOutcome, type EventsValue, LogCollector, LogEntry, type SerializedSpan, SpanMatch, TestSpan, TestSpanCollector, TraceCollector, assertEventTracked, assertNoErrors, assertNoErrorsLogged, assertOutcomeTracked, assertTraceCreated, assertTraceDuration, assertTraceFailed, assertTraceSucceeded, createEventCollector, createMockLogger, createTraceCollector, getTraceDuration, serializeSpan, waitForTrace };
318
+ export { type EventCollector, type EventData, type EventsFunnelStep, type EventsOutcome, type EventsValue, LogCollector, LogEntry, type MemoryExporter, type RecordedSpan, type SerializedSpan, SpanMatch, TestSpan, TestSpanCollector, TraceCollector, assertEventTracked, assertNoErrors, assertNoErrorsLogged, assertOutcomeTracked, assertTraceCreated, assertTraceDuration, assertTraceFailed, assertTraceSucceeded, createEventCollector, createMemoryExporter, createMockLogger, createTraceCollector, getTraceDuration, serializeSpan, waitForTrace };
package/dist/testing.js CHANGED
@@ -5,6 +5,37 @@ import { TestSpanCollector, serializeSpan } from "./test-span-collector.js";
5
5
  import { SpanStatusCode, context, trace } from "@opentelemetry/api";
6
6
  import * as nodeAsyncHooks from "node:async_hooks";
7
7
 
8
+ //#region src/memory-exporter.ts
9
+ function toRecordedSpan(span) {
10
+ return {
11
+ name: span.name,
12
+ traceId: span.spanContext().traceId,
13
+ spanId: span.spanContext().spanId,
14
+ parentSpanId: span.parentSpanContext?.spanId,
15
+ durationMs: span.duration[0] * 1e3 + span.duration[1] / 1e6,
16
+ attributes: { ...span.attributes },
17
+ status: span.status
18
+ };
19
+ }
20
+ function createMemoryExporter() {
21
+ const collected = [];
22
+ return {
23
+ export(spans, resultCallback) {
24
+ for (const span of spans) collected.push(toRecordedSpan(span));
25
+ resultCallback({ code: 0 });
26
+ },
27
+ async shutdown() {},
28
+ async forceFlush() {},
29
+ spans: () => [...collected],
30
+ findSpan: (name) => collected.find((span) => span.name === name),
31
+ findSpans: (name) => collected.filter((span) => span.name === name),
32
+ reset: () => {
33
+ collected.length = 0;
34
+ }
35
+ };
36
+ }
37
+
38
+ //#endregion
8
39
  //#region src/testing.ts
9
40
  /**
10
41
  * Testing Utilities
@@ -466,4 +497,4 @@ function assertTraceDuration(collector, operationName, maxDurationMs) {
466
497
  }
467
498
 
468
499
  //#endregion
469
- export { TestSpanCollector, assertEventTracked, assertNoErrors, assertNoErrorsLogged, assertOutcomeTracked, assertTraceCreated, assertTraceDuration, assertTraceFailed, assertTraceSucceeded, createEventCollector, createMockLogger, createTraceCollector, getTraceDuration, serializeSpan, waitForTrace };
500
+ export { TestSpanCollector, assertEventTracked, assertNoErrors, assertNoErrorsLogged, assertOutcomeTracked, assertTraceCreated, assertTraceDuration, assertTraceFailed, assertTraceSucceeded, createEventCollector, createMemoryExporter, createMockLogger, createTraceCollector, getTraceDuration, serializeSpan, waitForTrace };
package/dist/webhook.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_structured_error = require('./structured-error--_wXpd_C.cjs');
3
- const require_functional = require('./functional-C925G95W.cjs');
3
+ const require_functional = require('./functional-DHlD7V0x.cjs');
4
4
  const require_correlated_events = require('./correlated-events-CcuknWnU.cjs');
5
5
  let _opentelemetry_api = require("@opentelemetry/api");
6
6
 
package/dist/webhook.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { r as recordStructuredError } from "./structured-error-YIuka-FE.js";
2
- import { c as withTracing } from "./functional-Doi0hFm3.js";
2
+ import { c as withTracing } from "./functional-C4js2vTM.js";
3
3
  import { t as emitCorrelatedEvent } from "./correlated-events-DwMMbItg.js";
4
4
  import { SpanKind, trace } from "@opentelemetry/api";
5
5
 
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_values = require('./values-DApyq53y.cjs');
3
- const require_functional = require('./functional-C925G95W.cjs');
3
+ const require_functional = require('./functional-DHlD7V0x.cjs');
4
4
  const require_correlated_events = require('./correlated-events-CcuknWnU.cjs');
5
5
  const require_business_baggage = require('./business-baggage.cjs');
6
6
  let _opentelemetry_api = require("@opentelemetry/api");
@@ -1,5 +1,5 @@
1
1
  import { h as isFunction, x as toError } from "./values-BenyvWKz.js";
2
- import { c as withTracing } from "./functional-Doi0hFm3.js";
2
+ import { c as withTracing } from "./functional-C4js2vTM.js";
3
3
  import { t as emitCorrelatedEvent } from "./correlated-events-DwMMbItg.js";
4
4
  import { createSafeBaggageSchema } from "./business-baggage.js";
5
5
  import { SpanKind, context, propagation } from "@opentelemetry/api";
package/dist/workflow.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_rolldown_runtime = require('./rolldown-runtime-C_NdSu1c.cjs');
3
3
  const require_values = require('./values-DApyq53y.cjs');
4
- const require_functional = require('./functional-C925G95W.cjs');
4
+ const require_functional = require('./functional-DHlD7V0x.cjs');
5
5
  const require_trace_helpers = require('./trace-helpers.cjs');
6
6
  const require_correlated_events = require('./correlated-events-CcuknWnU.cjs');
7
7
  const require_trace_factory_validation = require('./trace-factory-validation-Dc8epn87.cjs');
package/dist/workflow.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { b as toAttributeValue, g as nonEmptyString, h as isFunction, l as asString, s as asRecord, x as toError } from "./values-BenyvWKz.js";
2
- import { c as withTracing } from "./functional-Doi0hFm3.js";
2
+ import { c as withTracing } from "./functional-C4js2vTM.js";
3
3
  import { getActiveSpan } from "./trace-helpers.js";
4
4
  import { t as emitCorrelatedEvent } from "./correlated-events-DwMMbItg.js";
5
5
  import { t as assertTraceFactory } from "./trace-factory-validation-BjVAinz6.js";
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_init = require('./init-aTZKsAwy.cjs');
2
+ const require_init = require('./init-DmM7dprX.cjs');
3
3
 
4
4
  exports.hasYamlConfig = require_init.hasYamlConfig;
5
5
  exports.loadYamlConfig = require_init.loadYamlConfig;
@@ -1,3 +1,3 @@
1
- import { _ as loadYamlConfigFromFile, g as loadYamlConfig, h as hasYamlConfig } from "./init-DzAdgcFM.js";
1
+ import { _ as loadYamlConfig, g as hasYamlConfig, v as loadYamlConfigFromFile } from "./init-CsKK9vZO.js";
2
2
 
3
3
  export { hasYamlConfig, loadYamlConfig, loadYamlConfigFromFile };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autotel",
3
- "version": "7.2.0",
3
+ "version": "7.3.0",
4
4
  "description": "Write Once, Observe Anywhere",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",