autotel 7.0.1 → 7.1.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.
@@ -0,0 +1,57 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/evidence.ts
4
+ /** Prefix for per-field evidence labels. */
5
+ const EVIDENCE_ATTR_PREFIX = "autotel.evidence.";
6
+ /** The span attribute key carrying `field`'s evidence label. */
7
+ function evidenceAttribute(field) {
8
+ return `${EVIDENCE_ATTR_PREFIX}${field}`;
9
+ }
10
+ /** Label how `field` on this span came to be. */
11
+ function recordEvidence(ctx, field, quality) {
12
+ ctx.setAttribute(evidenceAttribute(field), quality);
13
+ }
14
+ /**
15
+ * The capture surfaces a deployment can be asked about. Closed set, because the
16
+ * point is that a backend can query `unobserved` across services and get
17
+ * comparable answers.
18
+ */
19
+ const CAPTURE_SURFACES = [
20
+ "llm_calls",
21
+ "tool_calls",
22
+ "user_prompts",
23
+ "file_io",
24
+ "subprocess",
25
+ "network",
26
+ "ide_context"
27
+ ];
28
+ const CAPTURE_COVERAGE_ATTR = {
29
+ observed: "autotel.coverage.observed",
30
+ unobserved: "autotel.coverage.unobserved"
31
+ };
32
+ /**
33
+ * Resource attributes declaring {@link CaptureCoverage}.
34
+ *
35
+ * An empty list is omitted rather than emitted: `unobserved: []` would read as
36
+ * "this process has no blind spots", which is a stronger claim than declaring
37
+ * nothing. A surface claimed as both is dropped from both — a contradiction
38
+ * that left `observed` intact would let a reader conclude a gap does not exist.
39
+ */
40
+ function captureCoverageAttributes(coverage) {
41
+ const claimedBoth = new Set(coverage.observed.filter((s) => coverage.unobserved.includes(s)));
42
+ const keep = (surfaces) => [...new Set(surfaces.filter((s) => !claimedBoth.has(s)))];
43
+ const observed = keep(coverage.observed);
44
+ const unobserved = keep(coverage.unobserved);
45
+ return {
46
+ ...observed.length > 0 && { [CAPTURE_COVERAGE_ATTR.observed]: observed },
47
+ ...unobserved.length > 0 && { [CAPTURE_COVERAGE_ATTR.unobserved]: unobserved }
48
+ };
49
+ }
50
+
51
+ //#endregion
52
+ exports.CAPTURE_COVERAGE_ATTR = CAPTURE_COVERAGE_ATTR;
53
+ exports.CAPTURE_SURFACES = CAPTURE_SURFACES;
54
+ exports.EVIDENCE_ATTR_PREFIX = EVIDENCE_ATTR_PREFIX;
55
+ exports.captureCoverageAttributes = captureCoverageAttributes;
56
+ exports.evidenceAttribute = evidenceAttribute;
57
+ exports.recordEvidence = recordEvidence;
@@ -0,0 +1,61 @@
1
+ import { Attributes } from "@opentelemetry/api";
2
+ //#region src/evidence.d.ts
3
+ /**
4
+ * Why a recorded fact is the way it is.
5
+ *
6
+ * There is deliberately no `unknown` member: a field carrying no evidence label
7
+ * is already unknown, and encoding that as a value invites code that treats an
8
+ * unlabelled field as *verified* unknown rather than simply unexamined.
9
+ */
10
+ type EvidenceQuality =
11
+ /** The instrumentation saw the value directly. */
12
+ 'observed' |
13
+ /** Derived from other observed facts, not seen. */
14
+ 'inferred' |
15
+ /** Computed from a price table, heuristic, or model — not reported upstream. */
16
+ 'estimated' |
17
+ /** Seen, then cut short. What is here is real; what is missing is not. */
18
+ 'truncated' |
19
+ /** Seen, then removed before storage. */
20
+ 'redacted' |
21
+ /** Expected here and not present — a real gap in an observable place. */
22
+ 'absent' |
23
+ /** This process cannot see it at all, so its absence proves nothing. */
24
+ 'unobservable';
25
+ /** Prefix for per-field evidence labels. */
26
+ declare const EVIDENCE_ATTR_PREFIX = "autotel.evidence.";
27
+ /** The span attribute key carrying `field`'s evidence label. */
28
+ declare function evidenceAttribute(field: string): string;
29
+ /** The one thing {@link recordEvidence} needs — any `TraceContext` or `Span`. */
30
+ interface EvidenceTarget {
31
+ setAttribute(key: string, value: string): void;
32
+ }
33
+ /** Label how `field` on this span came to be. */
34
+ declare function recordEvidence(ctx: EvidenceTarget, field: string, quality: EvidenceQuality): void;
35
+ /**
36
+ * The capture surfaces a deployment can be asked about. Closed set, because the
37
+ * point is that a backend can query `unobserved` across services and get
38
+ * comparable answers.
39
+ */
40
+ declare const CAPTURE_SURFACES: readonly ["llm_calls", "tool_calls", "user_prompts", "file_io", "subprocess", "network", "ide_context"];
41
+ type CaptureSurface = (typeof CAPTURE_SURFACES)[number];
42
+ /** What this process can and cannot see. Anything in neither list is unknown. */
43
+ interface CaptureCoverage {
44
+ observed: readonly CaptureSurface[];
45
+ unobserved: readonly CaptureSurface[];
46
+ }
47
+ declare const CAPTURE_COVERAGE_ATTR: {
48
+ readonly observed: "autotel.coverage.observed";
49
+ readonly unobserved: "autotel.coverage.unobserved";
50
+ };
51
+ /**
52
+ * Resource attributes declaring {@link CaptureCoverage}.
53
+ *
54
+ * An empty list is omitted rather than emitted: `unobserved: []` would read as
55
+ * "this process has no blind spots", which is a stronger claim than declaring
56
+ * nothing. A surface claimed as both is dropped from both — a contradiction
57
+ * that left `observed` intact would let a reader conclude a gap does not exist.
58
+ */
59
+ declare function captureCoverageAttributes(coverage: CaptureCoverage): Attributes;
60
+ //#endregion
61
+ export { CAPTURE_COVERAGE_ATTR, CAPTURE_SURFACES, CaptureCoverage, CaptureSurface, EVIDENCE_ATTR_PREFIX, EvidenceQuality, EvidenceTarget, captureCoverageAttributes, evidenceAttribute, recordEvidence };
@@ -0,0 +1,61 @@
1
+ import { Attributes } from "@opentelemetry/api";
2
+ //#region src/evidence.d.ts
3
+ /**
4
+ * Why a recorded fact is the way it is.
5
+ *
6
+ * There is deliberately no `unknown` member: a field carrying no evidence label
7
+ * is already unknown, and encoding that as a value invites code that treats an
8
+ * unlabelled field as *verified* unknown rather than simply unexamined.
9
+ */
10
+ type EvidenceQuality =
11
+ /** The instrumentation saw the value directly. */
12
+ 'observed' |
13
+ /** Derived from other observed facts, not seen. */
14
+ 'inferred' |
15
+ /** Computed from a price table, heuristic, or model — not reported upstream. */
16
+ 'estimated' |
17
+ /** Seen, then cut short. What is here is real; what is missing is not. */
18
+ 'truncated' |
19
+ /** Seen, then removed before storage. */
20
+ 'redacted' |
21
+ /** Expected here and not present — a real gap in an observable place. */
22
+ 'absent' |
23
+ /** This process cannot see it at all, so its absence proves nothing. */
24
+ 'unobservable';
25
+ /** Prefix for per-field evidence labels. */
26
+ declare const EVIDENCE_ATTR_PREFIX = "autotel.evidence.";
27
+ /** The span attribute key carrying `field`'s evidence label. */
28
+ declare function evidenceAttribute(field: string): string;
29
+ /** The one thing {@link recordEvidence} needs — any `TraceContext` or `Span`. */
30
+ interface EvidenceTarget {
31
+ setAttribute(key: string, value: string): void;
32
+ }
33
+ /** Label how `field` on this span came to be. */
34
+ declare function recordEvidence(ctx: EvidenceTarget, field: string, quality: EvidenceQuality): void;
35
+ /**
36
+ * The capture surfaces a deployment can be asked about. Closed set, because the
37
+ * point is that a backend can query `unobserved` across services and get
38
+ * comparable answers.
39
+ */
40
+ declare const CAPTURE_SURFACES: readonly ["llm_calls", "tool_calls", "user_prompts", "file_io", "subprocess", "network", "ide_context"];
41
+ type CaptureSurface = (typeof CAPTURE_SURFACES)[number];
42
+ /** What this process can and cannot see. Anything in neither list is unknown. */
43
+ interface CaptureCoverage {
44
+ observed: readonly CaptureSurface[];
45
+ unobserved: readonly CaptureSurface[];
46
+ }
47
+ declare const CAPTURE_COVERAGE_ATTR: {
48
+ readonly observed: "autotel.coverage.observed";
49
+ readonly unobserved: "autotel.coverage.unobserved";
50
+ };
51
+ /**
52
+ * Resource attributes declaring {@link CaptureCoverage}.
53
+ *
54
+ * An empty list is omitted rather than emitted: `unobserved: []` would read as
55
+ * "this process has no blind spots", which is a stronger claim than declaring
56
+ * nothing. A surface claimed as both is dropped from both — a contradiction
57
+ * that left `observed` intact would let a reader conclude a gap does not exist.
58
+ */
59
+ declare function captureCoverageAttributes(coverage: CaptureCoverage): Attributes;
60
+ //#endregion
61
+ export { CAPTURE_COVERAGE_ATTR, CAPTURE_SURFACES, CaptureCoverage, CaptureSurface, EVIDENCE_ATTR_PREFIX, EvidenceQuality, EvidenceTarget, captureCoverageAttributes, evidenceAttribute, recordEvidence };
@@ -0,0 +1,50 @@
1
+ //#region src/evidence.ts
2
+ /** Prefix for per-field evidence labels. */
3
+ const EVIDENCE_ATTR_PREFIX = "autotel.evidence.";
4
+ /** The span attribute key carrying `field`'s evidence label. */
5
+ function evidenceAttribute(field) {
6
+ return `${EVIDENCE_ATTR_PREFIX}${field}`;
7
+ }
8
+ /** Label how `field` on this span came to be. */
9
+ function recordEvidence(ctx, field, quality) {
10
+ ctx.setAttribute(evidenceAttribute(field), quality);
11
+ }
12
+ /**
13
+ * The capture surfaces a deployment can be asked about. Closed set, because the
14
+ * point is that a backend can query `unobserved` across services and get
15
+ * comparable answers.
16
+ */
17
+ const CAPTURE_SURFACES = [
18
+ "llm_calls",
19
+ "tool_calls",
20
+ "user_prompts",
21
+ "file_io",
22
+ "subprocess",
23
+ "network",
24
+ "ide_context"
25
+ ];
26
+ const CAPTURE_COVERAGE_ATTR = {
27
+ observed: "autotel.coverage.observed",
28
+ unobserved: "autotel.coverage.unobserved"
29
+ };
30
+ /**
31
+ * Resource attributes declaring {@link CaptureCoverage}.
32
+ *
33
+ * An empty list is omitted rather than emitted: `unobserved: []` would read as
34
+ * "this process has no blind spots", which is a stronger claim than declaring
35
+ * nothing. A surface claimed as both is dropped from both — a contradiction
36
+ * that left `observed` intact would let a reader conclude a gap does not exist.
37
+ */
38
+ function captureCoverageAttributes(coverage) {
39
+ const claimedBoth = new Set(coverage.observed.filter((s) => coverage.unobserved.includes(s)));
40
+ const keep = (surfaces) => [...new Set(surfaces.filter((s) => !claimedBoth.has(s)))];
41
+ const observed = keep(coverage.observed);
42
+ const unobserved = keep(coverage.unobserved);
43
+ return {
44
+ ...observed.length > 0 && { [CAPTURE_COVERAGE_ATTR.observed]: observed },
45
+ ...unobserved.length > 0 && { [CAPTURE_COVERAGE_ATTR.unobserved]: unobserved }
46
+ };
47
+ }
48
+
49
+ //#endregion
50
+ export { CAPTURE_COVERAGE_ATTR, CAPTURE_SURFACES, EVIDENCE_ATTR_PREFIX, captureCoverageAttributes, evidenceAttribute, recordEvidence };
@@ -4,6 +4,7 @@ const require_tracer_provider = require('./tracer-provider.cjs');
4
4
  const require_config = require('./config.cjs');
5
5
  const require_sampling = require('./sampling.cjs');
6
6
  const require_init = require('./init-C5aHRqi2.cjs');
7
+ const require_evidence = require('./evidence.cjs');
7
8
  const require_trace_helpers = require('./trace-helpers.cjs');
8
9
  let _opentelemetry_api = require("@opentelemetry/api");
9
10
  let node_fs = require("node:fs");
@@ -205,25 +206,41 @@ function createDummyCtx() {
205
206
  getAllBaggage: () => /* @__PURE__ */ new Map()
206
207
  };
207
208
  }
209
+ /**
210
+ * Serialize a captured value, and say whether the ceiling cut it. The flag is
211
+ * separate from the text because `…[truncated]` inside the value is only
212
+ * legible to a human reading one span — a backend cannot filter on it.
213
+ */
208
214
  function serializeCapture(value) {
209
215
  if (value === void 0) return void 0;
210
216
  try {
211
217
  const json = require_values.asString(value) ?? JSON.stringify(value);
212
218
  if (json === void 0) return void 0;
213
- return json.length > CAPTURE_MAX_CHARS ? `${json.slice(0, CAPTURE_MAX_CHARS)}…[truncated]` : json;
219
+ return json.length > CAPTURE_MAX_CHARS ? {
220
+ text: `${json.slice(0, CAPTURE_MAX_CHARS)}…[truncated]`,
221
+ truncated: true
222
+ } : {
223
+ text: json,
224
+ truncated: false
225
+ };
214
226
  } catch {
215
227
  return;
216
228
  }
217
229
  }
218
- function captureInputAttrs(args, enabled) {
230
+ function captureAttrs(value, valueAttr, field, enabled) {
219
231
  if (!enabled) return {};
220
- const serialized = serializeCapture(args.length === 1 ? args[0] : args);
221
- return serialized === void 0 ? {} : { [AUTOTEL_INPUT_ATTR]: serialized };
232
+ const serialized = serializeCapture(value);
233
+ if (serialized === void 0) return {};
234
+ return {
235
+ [valueAttr]: serialized.text,
236
+ ...serialized.truncated && { [require_evidence.evidenceAttribute(field)]: "truncated" }
237
+ };
238
+ }
239
+ function captureInputAttrs(args, enabled) {
240
+ return captureAttrs(args.length === 1 ? args[0] : args, AUTOTEL_INPUT_ATTR, "input", enabled);
222
241
  }
223
242
  function captureOutputAttrs(result, enabled) {
224
- if (!enabled) return {};
225
- const serialized = serializeCapture(result);
226
- return serialized === void 0 ? {} : { [AUTOTEL_OUTPUT_ATTR]: serialized };
243
+ return captureAttrs(result, AUTOTEL_OUTPUT_ATTR, "output", enabled);
227
244
  }
228
245
  function truncateErrorMessage(message) {
229
246
  return message.length <= 500 ? message : `${message.slice(0, 500)}... (truncated)`;
@@ -3,6 +3,7 @@ import { getForceFlushableProvider } from "./tracer-provider.js";
3
3
  import { getConfig } from "./config.js";
4
4
  import { AUTOTEL_SAMPLING_RATE, AUTOTEL_SAMPLING_TAIL_EVALUATED, AUTOTEL_SAMPLING_TAIL_KEEP, AlwaysSampler } from "./sampling.js";
5
5
  import { D as getActiveContextWithBaggage, O as getContextStorage, T as createTraceContext, h as getEventQueue, k as hasExplicitSpanStatus, m as runInOperationContext, r as getSdk, t as getConfig$1 } from "./init-DDyaLzeg.js";
6
+ import { evidenceAttribute } from "./evidence.js";
6
7
  import { setSpanName } from "./trace-helpers.js";
7
8
  import { SpanStatusCode, context, propagation, trace } from "@opentelemetry/api";
8
9
  import * as nodeFs from "node:fs";
@@ -202,25 +203,41 @@ function createDummyCtx() {
202
203
  getAllBaggage: () => /* @__PURE__ */ new Map()
203
204
  };
204
205
  }
206
+ /**
207
+ * Serialize a captured value, and say whether the ceiling cut it. The flag is
208
+ * separate from the text because `…[truncated]` inside the value is only
209
+ * legible to a human reading one span — a backend cannot filter on it.
210
+ */
205
211
  function serializeCapture(value) {
206
212
  if (value === void 0) return void 0;
207
213
  try {
208
214
  const json = asString(value) ?? JSON.stringify(value);
209
215
  if (json === void 0) return void 0;
210
- return json.length > CAPTURE_MAX_CHARS ? `${json.slice(0, CAPTURE_MAX_CHARS)}…[truncated]` : json;
216
+ return json.length > CAPTURE_MAX_CHARS ? {
217
+ text: `${json.slice(0, CAPTURE_MAX_CHARS)}…[truncated]`,
218
+ truncated: true
219
+ } : {
220
+ text: json,
221
+ truncated: false
222
+ };
211
223
  } catch {
212
224
  return;
213
225
  }
214
226
  }
215
- function captureInputAttrs(args, enabled) {
227
+ function captureAttrs(value, valueAttr, field, enabled) {
216
228
  if (!enabled) return {};
217
- const serialized = serializeCapture(args.length === 1 ? args[0] : args);
218
- return serialized === void 0 ? {} : { [AUTOTEL_INPUT_ATTR]: serialized };
229
+ const serialized = serializeCapture(value);
230
+ if (serialized === void 0) return {};
231
+ return {
232
+ [valueAttr]: serialized.text,
233
+ ...serialized.truncated && { [evidenceAttribute(field)]: "truncated" }
234
+ };
235
+ }
236
+ function captureInputAttrs(args, enabled) {
237
+ return captureAttrs(args.length === 1 ? args[0] : args, AUTOTEL_INPUT_ATTR, "input", enabled);
219
238
  }
220
239
  function captureOutputAttrs(result, enabled) {
221
- if (!enabled) return {};
222
- const serialized = serializeCapture(result);
223
- return serialized === void 0 ? {} : { [AUTOTEL_OUTPUT_ATTR]: serialized };
240
+ return captureAttrs(result, AUTOTEL_OUTPUT_ATTR, "output", enabled);
224
241
  }
225
242
  function truncateErrorMessage(message) {
226
243
  return message.length <= 500 ? message : `${message.slice(0, 500)}... (truncated)`;
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_functional = require('./functional-C2ONG9PK.cjs');
2
+ const require_functional = require('./functional-BhhP4Er_.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-nS5U4KCQ.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-Cub1ku-C.js";
2
2
 
3
3
  export { ctx, getActiveTraceContext, instrument, span, trace, withBaggage, withNewContext, withTracing };
package/dist/index.cjs CHANGED
@@ -11,7 +11,7 @@ const require_canonical_log_line_processor = require('./canonical-log-line-proce
11
11
  const require_structured_error = require('./structured-error--_wXpd_C.cjs');
12
12
  const require_metric = require('./metric.cjs');
13
13
  const require_trace_helpers = require('./trace-helpers.cjs');
14
- const require_functional = require('./functional-C2ONG9PK.cjs');
14
+ const require_functional = require('./functional-BhhP4Er_.cjs');
15
15
  const require_stable_hash = require('./stable-hash-C0pOegH_.cjs');
16
16
  const require_correlated_events = require('./correlated-events-CcuknWnU.cjs');
17
17
  const require_parse_error = require('./parse-error.cjs');
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import { n as formatDuration } from "./canonical-log-line-processor-hFUmS__K.js"
9
9
  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";
10
10
  import { Metric, getMetrics, resetMetrics } from "./metric.js";
11
11
  import { createDeterministicTraceId, enrichWithTraceContext, finalizeSpan, flattenMetadata, getActiveContext, getActiveSpan, getTraceContext, getTracer, isTracing, resolveTraceUrl, runWithSpan } from "./trace-helpers.js";
12
- 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-nS5U4KCQ.js";
12
+ 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-Cub1ku-C.js";
13
13
  import { t as hashJson } from "./stable-hash-BkoAYVks.js";
14
14
  import { t as emitCorrelatedEvent } from "./correlated-events-DwMMbItg.js";
15
15
  import { parseError } from "./parse-error.js";
@@ -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_sampling = require('./sampling.cjs');
4
- const require_functional = require('./functional-C2ONG9PK.cjs');
4
+ const require_functional = require('./functional-BhhP4Er_.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
2
  import { createLinkFromHeaders, extractLinksFromBatch } from "./sampling.js";
3
- import { c as withTracing } from "./functional-nS5U4KCQ.js";
3
+ import { c as withTracing } from "./functional-Cub1ku-C.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";
@@ -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-C2ONG9PK.cjs');
3
+ const require_functional = require('./functional-BhhP4Er_.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-nS5U4KCQ.js";
2
+ import { c as withTracing } from "./functional-Cub1ku-C.js";
3
3
  import { t as assertTraceFactory } from "./trace-factory-validation-BjVAinz6.js";
4
4
  import { SpanKind } from "@opentelemetry/api";
5
5
 
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-C2ONG9PK.cjs');
3
+ const require_functional = require('./functional-BhhP4Er_.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-nS5U4KCQ.js";
2
+ import { c as withTracing } from "./functional-Cub1ku-C.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-C2ONG9PK.cjs');
3
+ const require_functional = require('./functional-BhhP4Er_.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-nS5U4KCQ.js";
2
+ import { c as withTracing } from "./functional-Cub1ku-C.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
@@ -2,7 +2,7 @@ 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
4
  const require_trace_helpers = require('./trace-helpers.cjs');
5
- const require_functional = require('./functional-C2ONG9PK.cjs');
5
+ const require_functional = require('./functional-BhhP4Er_.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');
8
8
  let node_async_hooks = require("node:async_hooks");
package/dist/workflow.js CHANGED
@@ -1,6 +1,6 @@
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
2
  import { getActiveSpan } from "./trace-helpers.js";
3
- import { c as withTracing } from "./functional-nS5U4KCQ.js";
3
+ import { c as withTracing } from "./functional-Cub1ku-C.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 * as nodeAsyncHooks from "node:async_hooks";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autotel",
3
- "version": "7.0.1",
3
+ "version": "7.1.0",
4
4
  "description": "Write Once, Observe Anywhere",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -258,6 +258,11 @@
258
258
  "import": "./dist/drain-pipeline.js",
259
259
  "require": "./dist/drain-pipeline.cjs"
260
260
  },
261
+ "./evidence": {
262
+ "types": "./dist/evidence.d.ts",
263
+ "import": "./dist/evidence.js",
264
+ "require": "./dist/evidence.cjs"
265
+ },
261
266
  "./enrichers": {
262
267
  "types": "./dist/enrichers.d.ts",
263
268
  "import": "./dist/enrichers.js",