autotel 2.25.3 → 2.25.5

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 (68) hide show
  1. package/dist/{chunk-FXKB7EPR.cjs → chunk-A5ZUL2RZ.cjs} +5 -5
  2. package/dist/{chunk-FXKB7EPR.cjs.map → chunk-A5ZUL2RZ.cjs.map} +1 -1
  3. package/dist/{chunk-SR35DG5A.js → chunk-BBBWDIYQ.js} +27 -13
  4. package/dist/chunk-BBBWDIYQ.js.map +1 -0
  5. package/dist/{chunk-3ZLYWPMY.js → chunk-CMUM4JQI.js} +3 -3
  6. package/dist/{chunk-3ZLYWPMY.js.map → chunk-CMUM4JQI.js.map} +1 -1
  7. package/dist/{chunk-AQXPGGQK.cjs → chunk-EEJGUBWV.cjs} +5 -5
  8. package/dist/{chunk-AQXPGGQK.cjs.map → chunk-EEJGUBWV.cjs.map} +1 -1
  9. package/dist/{chunk-W4EUTSB2.cjs → chunk-HZ3FYBJG.cjs} +27 -12
  10. package/dist/chunk-HZ3FYBJG.cjs.map +1 -0
  11. package/dist/{chunk-WOWTZ4EB.cjs → chunk-I6JPSD4R.cjs} +5 -5
  12. package/dist/{chunk-WOWTZ4EB.cjs.map → chunk-I6JPSD4R.cjs.map} +1 -1
  13. package/dist/{chunk-XRKAL7WJ.cjs → chunk-JSNUWSBH.cjs} +6 -6
  14. package/dist/chunk-JSNUWSBH.cjs.map +1 -0
  15. package/dist/{chunk-OWXXS4JB.cjs → chunk-MN6PZ4AN.cjs} +7 -7
  16. package/dist/{chunk-OWXXS4JB.cjs.map → chunk-MN6PZ4AN.cjs.map} +1 -1
  17. package/dist/{chunk-JM63D22M.js → chunk-OPTGXEVN.js} +368 -349
  18. package/dist/chunk-OPTGXEVN.js.map +1 -0
  19. package/dist/{chunk-PKXD2RMI.js → chunk-QDREXAD7.js} +3 -3
  20. package/dist/{chunk-PKXD2RMI.js.map → chunk-QDREXAD7.js.map} +1 -1
  21. package/dist/{chunk-RMGSBMQF.cjs → chunk-QQLP4M6W.cjs} +372 -353
  22. package/dist/chunk-QQLP4M6W.cjs.map +1 -0
  23. package/dist/{chunk-USSL3D6L.js → chunk-S4OFEXLA.js} +6 -6
  24. package/dist/chunk-S4OFEXLA.js.map +1 -0
  25. package/dist/{chunk-VVYSQXQL.js → chunk-WYP6OOCT.js} +3 -3
  26. package/dist/{chunk-VVYSQXQL.js.map → chunk-WYP6OOCT.js.map} +1 -1
  27. package/dist/{chunk-IFKDBL65.js → chunk-XB2GITM5.js} +3 -3
  28. package/dist/{chunk-IFKDBL65.js.map → chunk-XB2GITM5.js.map} +1 -1
  29. package/dist/correlation-id.cjs +10 -9
  30. package/dist/correlation-id.d.cts +4 -1
  31. package/dist/correlation-id.d.ts +4 -1
  32. package/dist/correlation-id.js +2 -1
  33. package/dist/decorators.cjs +4 -4
  34. package/dist/decorators.js +3 -3
  35. package/dist/event.cjs +6 -5
  36. package/dist/event.js +3 -2
  37. package/dist/functional.cjs +10 -10
  38. package/dist/functional.js +3 -3
  39. package/dist/http.cjs +2 -2
  40. package/dist/http.js +1 -1
  41. package/dist/index.cjs +45 -45
  42. package/dist/index.js +10 -10
  43. package/dist/messaging.cjs +7 -7
  44. package/dist/messaging.js +4 -4
  45. package/dist/semantic-helpers.cjs +8 -8
  46. package/dist/semantic-helpers.js +4 -4
  47. package/dist/test-span-collector.cjs.map +1 -1
  48. package/dist/test-span-collector.d.cts +5 -2
  49. package/dist/test-span-collector.d.ts +5 -2
  50. package/dist/test-span-collector.js.map +1 -1
  51. package/dist/webhook.cjs +4 -4
  52. package/dist/webhook.js +3 -3
  53. package/dist/workflow-distributed.cjs +5 -5
  54. package/dist/workflow-distributed.js +3 -3
  55. package/dist/workflow.cjs +8 -8
  56. package/dist/workflow.js +4 -4
  57. package/package.json +1 -1
  58. package/src/correlation-id.ts +10 -5
  59. package/src/functional.ts +440 -420
  60. package/src/test-span-collector.ts +5 -2
  61. package/src/trace-context.test.ts +73 -0
  62. package/src/trace-context.ts +44 -12
  63. package/dist/chunk-JM63D22M.js.map +0 -1
  64. package/dist/chunk-RMGSBMQF.cjs.map +0 -1
  65. package/dist/chunk-SR35DG5A.js.map +0 -1
  66. package/dist/chunk-USSL3D6L.js.map +0 -1
  67. package/dist/chunk-W4EUTSB2.cjs.map +0 -1
  68. package/dist/chunk-XRKAL7WJ.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import './chunk-JM63D22M.js';
2
- import { createTraceContext } from './chunk-SR35DG5A.js';
1
+ import './chunk-OPTGXEVN.js';
3
2
  import './chunk-B3ZHLLMP.js';
4
3
  import './chunk-WD4RP6IV.js';
5
- import './chunk-USSL3D6L.js';
4
+ import './chunk-S4OFEXLA.js';
5
+ import { createTraceContext } from './chunk-BBBWDIYQ.js';
6
6
  import './chunk-MNBAXRVG.js';
7
7
  import './chunk-RUD7KS4R.js';
8
8
  import './chunk-XDKK53OL.js';
package/dist/event.cjs CHANGED
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkFXKB7EPR_cjs = require('./chunk-FXKB7EPR.cjs');
3
+ var chunkA5ZUL2RZ_cjs = require('./chunk-A5ZUL2RZ.cjs');
4
4
  require('./chunk-NZ72VDNY.cjs');
5
5
  require('./chunk-UY3UYPBZ.cjs');
6
6
  require('./chunk-D5LMF53P.cjs');
7
- require('./chunk-XRKAL7WJ.cjs');
7
+ require('./chunk-JSNUWSBH.cjs');
8
+ require('./chunk-HZ3FYBJG.cjs');
8
9
  require('./chunk-ITYASFHQ.cjs');
9
10
  require('./chunk-OFPZULMQ.cjs');
10
11
  require('./chunk-KZEC4CHV.cjs');
@@ -24,15 +25,15 @@ require('./chunk-JEQ2X3Z6.cjs');
24
25
 
25
26
  Object.defineProperty(exports, "Event", {
26
27
  enumerable: true,
27
- get: function () { return chunkFXKB7EPR_cjs.Event; }
28
+ get: function () { return chunkA5ZUL2RZ_cjs.Event; }
28
29
  });
29
30
  Object.defineProperty(exports, "getEvents", {
30
31
  enumerable: true,
31
- get: function () { return chunkFXKB7EPR_cjs.getEvents; }
32
+ get: function () { return chunkA5ZUL2RZ_cjs.getEvents; }
32
33
  });
33
34
  Object.defineProperty(exports, "resetEvents", {
34
35
  enumerable: true,
35
- get: function () { return chunkFXKB7EPR_cjs.resetEvents; }
36
+ get: function () { return chunkA5ZUL2RZ_cjs.resetEvents; }
36
37
  });
37
38
  //# sourceMappingURL=event.cjs.map
38
39
  //# sourceMappingURL=event.cjs.map
package/dist/event.js CHANGED
@@ -1,8 +1,9 @@
1
- export { Event, getEvents, resetEvents } from './chunk-IFKDBL65.js';
1
+ export { Event, getEvents, resetEvents } from './chunk-XB2GITM5.js';
2
2
  import './chunk-LITNXTTT.js';
3
3
  import './chunk-BZHG5IZ4.js';
4
4
  import './chunk-WD4RP6IV.js';
5
- import './chunk-USSL3D6L.js';
5
+ import './chunk-S4OFEXLA.js';
6
+ import './chunk-BBBWDIYQ.js';
6
7
  import './chunk-MNBAXRVG.js';
7
8
  import './chunk-RUD7KS4R.js';
8
9
  import './chunk-XDKK53OL.js';
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkRMGSBMQF_cjs = require('./chunk-RMGSBMQF.cjs');
4
- require('./chunk-W4EUTSB2.cjs');
3
+ var chunkQQLP4M6W_cjs = require('./chunk-QQLP4M6W.cjs');
5
4
  require('./chunk-GML3FBOT.cjs');
6
5
  require('./chunk-D5LMF53P.cjs');
7
- require('./chunk-XRKAL7WJ.cjs');
6
+ require('./chunk-JSNUWSBH.cjs');
7
+ require('./chunk-HZ3FYBJG.cjs');
8
8
  require('./chunk-ITYASFHQ.cjs');
9
9
  require('./chunk-OFPZULMQ.cjs');
10
10
  require('./chunk-KZEC4CHV.cjs');
@@ -24,31 +24,31 @@ require('./chunk-JEQ2X3Z6.cjs');
24
24
 
25
25
  Object.defineProperty(exports, "ctx", {
26
26
  enumerable: true,
27
- get: function () { return chunkRMGSBMQF_cjs.ctx; }
27
+ get: function () { return chunkQQLP4M6W_cjs.ctx; }
28
28
  });
29
29
  Object.defineProperty(exports, "instrument", {
30
30
  enumerable: true,
31
- get: function () { return chunkRMGSBMQF_cjs.instrument; }
31
+ get: function () { return chunkQQLP4M6W_cjs.instrument; }
32
32
  });
33
33
  Object.defineProperty(exports, "span", {
34
34
  enumerable: true,
35
- get: function () { return chunkRMGSBMQF_cjs.span; }
35
+ get: function () { return chunkQQLP4M6W_cjs.span; }
36
36
  });
37
37
  Object.defineProperty(exports, "trace", {
38
38
  enumerable: true,
39
- get: function () { return chunkRMGSBMQF_cjs.trace; }
39
+ get: function () { return chunkQQLP4M6W_cjs.trace; }
40
40
  });
41
41
  Object.defineProperty(exports, "withBaggage", {
42
42
  enumerable: true,
43
- get: function () { return chunkRMGSBMQF_cjs.withBaggage; }
43
+ get: function () { return chunkQQLP4M6W_cjs.withBaggage; }
44
44
  });
45
45
  Object.defineProperty(exports, "withNewContext", {
46
46
  enumerable: true,
47
- get: function () { return chunkRMGSBMQF_cjs.withNewContext; }
47
+ get: function () { return chunkQQLP4M6W_cjs.withNewContext; }
48
48
  });
49
49
  Object.defineProperty(exports, "withTracing", {
50
50
  enumerable: true,
51
- get: function () { return chunkRMGSBMQF_cjs.withTracing; }
51
+ get: function () { return chunkQQLP4M6W_cjs.withTracing; }
52
52
  });
53
53
  //# sourceMappingURL=functional.cjs.map
54
54
  //# sourceMappingURL=functional.cjs.map
@@ -1,8 +1,8 @@
1
- export { ctx, instrument, span, trace, withBaggage, withNewContext, withTracing } from './chunk-JM63D22M.js';
2
- import './chunk-SR35DG5A.js';
1
+ export { ctx, instrument, span, trace, withBaggage, withNewContext, withTracing } from './chunk-OPTGXEVN.js';
3
2
  import './chunk-B3ZHLLMP.js';
4
3
  import './chunk-WD4RP6IV.js';
5
- import './chunk-USSL3D6L.js';
4
+ import './chunk-S4OFEXLA.js';
5
+ import './chunk-BBBWDIYQ.js';
6
6
  import './chunk-MNBAXRVG.js';
7
7
  import './chunk-RUD7KS4R.js';
8
8
  import './chunk-XDKK53OL.js';
package/dist/http.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkW4EUTSB2_cjs = require('./chunk-W4EUTSB2.cjs');
3
+ var chunkHZ3FYBJG_cjs = require('./chunk-HZ3FYBJG.cjs');
4
4
  var chunkESLWRGAG_cjs = require('./chunk-ESLWRGAG.cjs');
5
5
  require('./chunk-YREV3LGG.cjs');
6
6
  require('./chunk-JEQ2X3Z6.cjs');
@@ -166,7 +166,7 @@ function extractStatusCode(result) {
166
166
  return void 0;
167
167
  }
168
168
  function injectTraceContext(headers = {}) {
169
- const currentContext = chunkW4EUTSB2_cjs.getActiveContextWithBaggage();
169
+ const currentContext = chunkHZ3FYBJG_cjs.getActiveContextWithBaggage();
170
170
  api.propagation.inject(currentContext, headers);
171
171
  return headers;
172
172
  }
package/dist/http.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getActiveContextWithBaggage } from './chunk-SR35DG5A.js';
1
+ import { getActiveContextWithBaggage } from './chunk-BBBWDIYQ.js';
2
2
  import { getConfig } from './chunk-J5QENANM.js';
3
3
  import './chunk-HA2WBOGQ.js';
4
4
  import './chunk-DGUM43GV.js';
package/dist/index.cjs CHANGED
@@ -1,25 +1,25 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk7EQ4G4SI_cjs = require('./chunk-7EQ4G4SI.cjs');
4
- var chunkAQXPGGQK_cjs = require('./chunk-AQXPGGQK.cjs');
4
+ var chunkEEJGUBWV_cjs = require('./chunk-EEJGUBWV.cjs');
5
5
  var chunkXRBP4RYL_cjs = require('./chunk-XRBP4RYL.cjs');
6
6
  var chunk2ZKEORFN_cjs = require('./chunk-2ZKEORFN.cjs');
7
7
  var chunkESMHTKLJ_cjs = require('./chunk-ESMHTKLJ.cjs');
8
8
  var chunkT4B5LB6E_cjs = require('./chunk-T4B5LB6E.cjs');
9
- var chunkWOWTZ4EB_cjs = require('./chunk-WOWTZ4EB.cjs');
9
+ var chunkI6JPSD4R_cjs = require('./chunk-I6JPSD4R.cjs');
10
10
  var chunkINJD3G4K_cjs = require('./chunk-INJD3G4K.cjs');
11
11
  var chunkTC5ZPWM4_cjs = require('./chunk-TC5ZPWM4.cjs');
12
12
  require('./chunk-YTXEZ4SD.cjs');
13
13
  var chunkWJH6IYU2_cjs = require('./chunk-WJH6IYU2.cjs');
14
- var chunkOWXXS4JB_cjs = require('./chunk-OWXXS4JB.cjs');
15
- var chunkRMGSBMQF_cjs = require('./chunk-RMGSBMQF.cjs');
16
- var chunkW4EUTSB2_cjs = require('./chunk-W4EUTSB2.cjs');
14
+ var chunkMN6PZ4AN_cjs = require('./chunk-MN6PZ4AN.cjs');
15
+ var chunkQQLP4M6W_cjs = require('./chunk-QQLP4M6W.cjs');
17
16
  var chunkGML3FBOT_cjs = require('./chunk-GML3FBOT.cjs');
18
- var chunkFXKB7EPR_cjs = require('./chunk-FXKB7EPR.cjs');
17
+ var chunkA5ZUL2RZ_cjs = require('./chunk-A5ZUL2RZ.cjs');
19
18
  require('./chunk-NZ72VDNY.cjs');
20
19
  require('./chunk-UY3UYPBZ.cjs');
21
20
  var chunkD5LMF53P_cjs = require('./chunk-D5LMF53P.cjs');
22
- var chunkXRKAL7WJ_cjs = require('./chunk-XRKAL7WJ.cjs');
21
+ var chunkJSNUWSBH_cjs = require('./chunk-JSNUWSBH.cjs');
22
+ var chunkHZ3FYBJG_cjs = require('./chunk-HZ3FYBJG.cjs');
23
23
  var chunkITYASFHQ_cjs = require('./chunk-ITYASFHQ.cjs');
24
24
  require('./chunk-OFPZULMQ.cjs');
25
25
  require('./chunk-KZEC4CHV.cjs');
@@ -42,7 +42,7 @@ async function flush(options) {
42
42
  const timeout = options?.timeout ?? 2e3;
43
43
  const forShutdown = options?.forShutdown ?? false;
44
44
  const doFlush = async () => {
45
- const eventsQueue = chunkRMGSBMQF_cjs.getEventQueue();
45
+ const eventsQueue = chunkQQLP4M6W_cjs.getEventQueue();
46
46
  if (eventsQueue) {
47
47
  if (forShutdown) {
48
48
  await eventsQueue.shutdown();
@@ -124,13 +124,13 @@ async function shutdown() {
124
124
  logger.error({ err }, "[autotel] SDK shutdown failed");
125
125
  }
126
126
  } finally {
127
- const eventsQueue = chunkRMGSBMQF_cjs.getEventQueue();
127
+ const eventsQueue = chunkQQLP4M6W_cjs.getEventQueue();
128
128
  if (eventsQueue && typeof eventsQueue.cleanup === "function") {
129
129
  eventsQueue.cleanup();
130
130
  }
131
- chunkFXKB7EPR_cjs.resetEvents();
131
+ chunkA5ZUL2RZ_cjs.resetEvents();
132
132
  chunkTC5ZPWM4_cjs.resetMetrics();
133
- chunkRMGSBMQF_cjs.resetEventQueue();
133
+ chunkQQLP4M6W_cjs.resetEventQueue();
134
134
  }
135
135
  if (shutdownError) {
136
136
  throw shutdownError;
@@ -294,7 +294,7 @@ function resolveContext(ctx2) {
294
294
  "[autotel] getRequestLogger() requires an active span or runWithRequestContext(). Wrap your handler with trace() or use runWithRequestContext()."
295
295
  );
296
296
  }
297
- return chunkW4EUTSB2_cjs.createTraceContext(span2);
297
+ return chunkHZ3FYBJG_cjs.createTraceContext(span2);
298
298
  }
299
299
  function getRequestLogger(ctx2, options) {
300
300
  const activeContext = resolveContext(ctx2);
@@ -384,19 +384,19 @@ Object.defineProperty(exports, "createDrainPipeline", {
384
384
  });
385
385
  Object.defineProperty(exports, "getCurrentWorkflowContext", {
386
386
  enumerable: true,
387
- get: function () { return chunkAQXPGGQK_cjs.getCurrentWorkflowContext; }
387
+ get: function () { return chunkEEJGUBWV_cjs.getCurrentWorkflowContext; }
388
388
  });
389
389
  Object.defineProperty(exports, "isInWorkflow", {
390
390
  enumerable: true,
391
- get: function () { return chunkAQXPGGQK_cjs.isInWorkflow; }
391
+ get: function () { return chunkEEJGUBWV_cjs.isInWorkflow; }
392
392
  });
393
393
  Object.defineProperty(exports, "traceStep", {
394
394
  enumerable: true,
395
- get: function () { return chunkAQXPGGQK_cjs.traceStep; }
395
+ get: function () { return chunkEEJGUBWV_cjs.traceStep; }
396
396
  });
397
397
  Object.defineProperty(exports, "traceWorkflow", {
398
398
  enumerable: true,
399
- get: function () { return chunkAQXPGGQK_cjs.traceWorkflow; }
399
+ get: function () { return chunkEEJGUBWV_cjs.traceWorkflow; }
400
400
  });
401
401
  Object.defineProperty(exports, "attrs", {
402
402
  enumerable: true,
@@ -488,11 +488,11 @@ Object.defineProperty(exports, "parseError", {
488
488
  });
489
489
  Object.defineProperty(exports, "traceConsumer", {
490
490
  enumerable: true,
491
- get: function () { return chunkWOWTZ4EB_cjs.traceConsumer; }
491
+ get: function () { return chunkI6JPSD4R_cjs.traceConsumer; }
492
492
  });
493
493
  Object.defineProperty(exports, "traceProducer", {
494
494
  enumerable: true,
495
- get: function () { return chunkWOWTZ4EB_cjs.traceProducer; }
495
+ get: function () { return chunkI6JPSD4R_cjs.traceProducer; }
496
496
  });
497
497
  Object.defineProperty(exports, "BusinessBaggage", {
498
498
  enumerable: true,
@@ -536,59 +536,55 @@ Object.defineProperty(exports, "getMeter", {
536
536
  });
537
537
  Object.defineProperty(exports, "traceDB", {
538
538
  enumerable: true,
539
- get: function () { return chunkOWXXS4JB_cjs.traceDB; }
539
+ get: function () { return chunkMN6PZ4AN_cjs.traceDB; }
540
540
  });
541
541
  Object.defineProperty(exports, "traceHTTP", {
542
542
  enumerable: true,
543
- get: function () { return chunkOWXXS4JB_cjs.traceHTTP; }
543
+ get: function () { return chunkMN6PZ4AN_cjs.traceHTTP; }
544
544
  });
545
545
  Object.defineProperty(exports, "traceLLM", {
546
546
  enumerable: true,
547
- get: function () { return chunkOWXXS4JB_cjs.traceLLM; }
547
+ get: function () { return chunkMN6PZ4AN_cjs.traceLLM; }
548
548
  });
549
549
  Object.defineProperty(exports, "traceMessaging", {
550
550
  enumerable: true,
551
- get: function () { return chunkOWXXS4JB_cjs.traceMessaging; }
551
+ get: function () { return chunkMN6PZ4AN_cjs.traceMessaging; }
552
552
  });
553
553
  Object.defineProperty(exports, "ctx", {
554
554
  enumerable: true,
555
- get: function () { return chunkRMGSBMQF_cjs.ctx; }
555
+ get: function () { return chunkQQLP4M6W_cjs.ctx; }
556
556
  });
557
557
  Object.defineProperty(exports, "getEventQueue", {
558
558
  enumerable: true,
559
- get: function () { return chunkRMGSBMQF_cjs.getEventQueue; }
559
+ get: function () { return chunkQQLP4M6W_cjs.getEventQueue; }
560
560
  });
561
561
  Object.defineProperty(exports, "instrument", {
562
562
  enumerable: true,
563
- get: function () { return chunkRMGSBMQF_cjs.instrument; }
563
+ get: function () { return chunkQQLP4M6W_cjs.instrument; }
564
564
  });
565
565
  Object.defineProperty(exports, "span", {
566
566
  enumerable: true,
567
- get: function () { return chunkRMGSBMQF_cjs.span; }
567
+ get: function () { return chunkQQLP4M6W_cjs.span; }
568
568
  });
569
569
  Object.defineProperty(exports, "trace", {
570
570
  enumerable: true,
571
- get: function () { return chunkRMGSBMQF_cjs.trace; }
571
+ get: function () { return chunkQQLP4M6W_cjs.trace; }
572
572
  });
573
573
  Object.defineProperty(exports, "track", {
574
574
  enumerable: true,
575
- get: function () { return chunkRMGSBMQF_cjs.track; }
575
+ get: function () { return chunkQQLP4M6W_cjs.track; }
576
576
  });
577
577
  Object.defineProperty(exports, "withBaggage", {
578
578
  enumerable: true,
579
- get: function () { return chunkRMGSBMQF_cjs.withBaggage; }
579
+ get: function () { return chunkQQLP4M6W_cjs.withBaggage; }
580
580
  });
581
581
  Object.defineProperty(exports, "withNewContext", {
582
582
  enumerable: true,
583
- get: function () { return chunkRMGSBMQF_cjs.withNewContext; }
583
+ get: function () { return chunkQQLP4M6W_cjs.withNewContext; }
584
584
  });
585
585
  Object.defineProperty(exports, "withTracing", {
586
586
  enumerable: true,
587
- get: function () { return chunkRMGSBMQF_cjs.withTracing; }
588
- });
589
- Object.defineProperty(exports, "defineBaggageSchema", {
590
- enumerable: true,
591
- get: function () { return chunkW4EUTSB2_cjs.defineBaggageSchema; }
587
+ get: function () { return chunkQQLP4M6W_cjs.withTracing; }
592
588
  });
593
589
  Object.defineProperty(exports, "createDeterministicTraceId", {
594
590
  enumerable: true,
@@ -636,15 +632,15 @@ Object.defineProperty(exports, "runWithSpan", {
636
632
  });
637
633
  Object.defineProperty(exports, "Event", {
638
634
  enumerable: true,
639
- get: function () { return chunkFXKB7EPR_cjs.Event; }
635
+ get: function () { return chunkA5ZUL2RZ_cjs.Event; }
640
636
  });
641
637
  Object.defineProperty(exports, "getEvents", {
642
638
  enumerable: true,
643
- get: function () { return chunkFXKB7EPR_cjs.getEvents; }
639
+ get: function () { return chunkA5ZUL2RZ_cjs.getEvents; }
644
640
  });
645
641
  Object.defineProperty(exports, "resetEvents", {
646
642
  enumerable: true,
647
- get: function () { return chunkFXKB7EPR_cjs.resetEvents; }
643
+ get: function () { return chunkA5ZUL2RZ_cjs.resetEvents; }
648
644
  });
649
645
  Object.defineProperty(exports, "getOperationContext", {
650
646
  enumerable: true,
@@ -656,31 +652,35 @@ Object.defineProperty(exports, "runInOperationContext", {
656
652
  });
657
653
  Object.defineProperty(exports, "CORRELATION_ID_BAGGAGE_KEY", {
658
654
  enumerable: true,
659
- get: function () { return chunkXRKAL7WJ_cjs.CORRELATION_ID_BAGGAGE_KEY; }
655
+ get: function () { return chunkJSNUWSBH_cjs.CORRELATION_ID_BAGGAGE_KEY; }
660
656
  });
661
657
  Object.defineProperty(exports, "generateCorrelationId", {
662
658
  enumerable: true,
663
- get: function () { return chunkXRKAL7WJ_cjs.generateCorrelationId; }
659
+ get: function () { return chunkJSNUWSBH_cjs.generateCorrelationId; }
664
660
  });
665
661
  Object.defineProperty(exports, "getCorrelationId", {
666
662
  enumerable: true,
667
- get: function () { return chunkXRKAL7WJ_cjs.getCorrelationId; }
663
+ get: function () { return chunkJSNUWSBH_cjs.getCorrelationId; }
668
664
  });
669
665
  Object.defineProperty(exports, "getOrCreateCorrelationId", {
670
666
  enumerable: true,
671
- get: function () { return chunkXRKAL7WJ_cjs.getOrCreateCorrelationId; }
667
+ get: function () { return chunkJSNUWSBH_cjs.getOrCreateCorrelationId; }
672
668
  });
673
669
  Object.defineProperty(exports, "runWithCorrelationId", {
674
670
  enumerable: true,
675
- get: function () { return chunkXRKAL7WJ_cjs.runWithCorrelationId; }
671
+ get: function () { return chunkJSNUWSBH_cjs.runWithCorrelationId; }
676
672
  });
677
673
  Object.defineProperty(exports, "setCorrelationId", {
678
674
  enumerable: true,
679
- get: function () { return chunkXRKAL7WJ_cjs.setCorrelationId; }
675
+ get: function () { return chunkJSNUWSBH_cjs.setCorrelationId; }
680
676
  });
681
677
  Object.defineProperty(exports, "setCorrelationIdInBaggage", {
682
678
  enumerable: true,
683
- get: function () { return chunkXRKAL7WJ_cjs.setCorrelationIdInBaggage; }
679
+ get: function () { return chunkJSNUWSBH_cjs.setCorrelationIdInBaggage; }
680
+ });
681
+ Object.defineProperty(exports, "defineBaggageSchema", {
682
+ enumerable: true,
683
+ get: function () { return chunkHZ3FYBJG_cjs.defineBaggageSchema; }
684
684
  });
685
685
  Object.defineProperty(exports, "BaggageSpanProcessor", {
686
686
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,27 +1,27 @@
1
1
  export { createDrainPipeline } from './chunk-KFOHQK7X.js';
2
- export { getCurrentWorkflowContext, isInWorkflow, traceStep, traceWorkflow } from './chunk-VVYSQXQL.js';
2
+ export { getCurrentWorkflowContext, isInWorkflow, traceStep, traceWorkflow } from './chunk-WYP6OOCT.js';
3
3
  export { attrs, autoRedactPII, dbClient, httpClient, httpServer, identify, mergeAttrs, mergeServiceResource, request, safeSetAttributes, setDevice, setError, setException, setSession, setUser, validateAttribute } from './chunk-M4US3P4K.js';
4
4
  export { httpRequestHeaderAttribute, httpResponseHeaderAttribute } from './chunk-7552UTQW.js';
5
5
  export { HTTPAttributes, ServiceAttributes, URLAttributes } from './chunk-4A53YIAX.js';
6
6
  export { parseError } from './chunk-J7VGRIAJ.js';
7
- export { traceConsumer, traceProducer } from './chunk-PKXD2RMI.js';
7
+ export { traceConsumer, traceProducer } from './chunk-QDREXAD7.js';
8
8
  export { BusinessBaggage, createSafeBaggageSchema } from './chunk-4IFSYQVX.js';
9
9
  import { resetMetrics } from './chunk-7SAWIN74.js';
10
10
  export { Metric, getMetrics, resetMetrics } from './chunk-7SAWIN74.js';
11
11
  import './chunk-5ZN622AO.js';
12
12
  export { createCounter, createHistogram, createObservableGauge, createUpDownCounter, getMeter } from './chunk-TQ5UWA7S.js';
13
- export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-3ZLYWPMY.js';
14
- import { getEventQueue, resetEventQueue } from './chunk-JM63D22M.js';
15
- export { ctx, getEventQueue, instrument, span, trace, track, withBaggage, withNewContext, withTracing } from './chunk-JM63D22M.js';
16
- import { createTraceContext } from './chunk-SR35DG5A.js';
17
- export { defineBaggageSchema } from './chunk-SR35DG5A.js';
13
+ export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-CMUM4JQI.js';
14
+ import { getEventQueue, resetEventQueue } from './chunk-OPTGXEVN.js';
15
+ export { ctx, getEventQueue, instrument, span, trace, track, withBaggage, withNewContext, withTracing } from './chunk-OPTGXEVN.js';
18
16
  export { createDeterministicTraceId, enrichWithTraceContext, finalizeSpan, flattenMetadata, getActiveContext, getActiveSpan, getTraceContext, getTracer, isTracing, resolveTraceUrl, runWithSpan } from './chunk-B3ZHLLMP.js';
19
- import { resetEvents } from './chunk-IFKDBL65.js';
20
- export { Event, getEvents, resetEvents } from './chunk-IFKDBL65.js';
17
+ import { resetEvents } from './chunk-XB2GITM5.js';
18
+ export { Event, getEvents, resetEvents } from './chunk-XB2GITM5.js';
21
19
  import './chunk-LITNXTTT.js';
22
20
  import './chunk-BZHG5IZ4.js';
23
21
  export { getOperationContext, runInOperationContext } from './chunk-WD4RP6IV.js';
24
- export { CORRELATION_ID_BAGGAGE_KEY, generateCorrelationId, getCorrelationId, getOrCreateCorrelationId, runWithCorrelationId, setCorrelationId, setCorrelationIdInBaggage } from './chunk-USSL3D6L.js';
22
+ export { CORRELATION_ID_BAGGAGE_KEY, generateCorrelationId, getCorrelationId, getOrCreateCorrelationId, runWithCorrelationId, setCorrelationId, setCorrelationIdInBaggage } from './chunk-S4OFEXLA.js';
23
+ import { createTraceContext } from './chunk-BBBWDIYQ.js';
24
+ export { defineBaggageSchema } from './chunk-BBBWDIYQ.js';
25
25
  import { getLogger, getSdk } from './chunk-MNBAXRVG.js';
26
26
  export { BaggageSpanProcessor, createStringRedactor, init } from './chunk-MNBAXRVG.js';
27
27
  import './chunk-RUD7KS4R.js';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkWOWTZ4EB_cjs = require('./chunk-WOWTZ4EB.cjs');
4
- require('./chunk-RMGSBMQF.cjs');
5
- require('./chunk-W4EUTSB2.cjs');
3
+ var chunkI6JPSD4R_cjs = require('./chunk-I6JPSD4R.cjs');
4
+ require('./chunk-QQLP4M6W.cjs');
6
5
  require('./chunk-GML3FBOT.cjs');
7
6
  require('./chunk-D5LMF53P.cjs');
8
- require('./chunk-XRKAL7WJ.cjs');
7
+ require('./chunk-JSNUWSBH.cjs');
8
+ require('./chunk-HZ3FYBJG.cjs');
9
9
  require('./chunk-ITYASFHQ.cjs');
10
10
  require('./chunk-OFPZULMQ.cjs');
11
11
  require('./chunk-KZEC4CHV.cjs');
@@ -25,15 +25,15 @@ require('./chunk-JEQ2X3Z6.cjs');
25
25
 
26
26
  Object.defineProperty(exports, "clearOrderingState", {
27
27
  enumerable: true,
28
- get: function () { return chunkWOWTZ4EB_cjs.clearOrderingState; }
28
+ get: function () { return chunkI6JPSD4R_cjs.clearOrderingState; }
29
29
  });
30
30
  Object.defineProperty(exports, "traceConsumer", {
31
31
  enumerable: true,
32
- get: function () { return chunkWOWTZ4EB_cjs.traceConsumer; }
32
+ get: function () { return chunkI6JPSD4R_cjs.traceConsumer; }
33
33
  });
34
34
  Object.defineProperty(exports, "traceProducer", {
35
35
  enumerable: true,
36
- get: function () { return chunkWOWTZ4EB_cjs.traceProducer; }
36
+ get: function () { return chunkI6JPSD4R_cjs.traceProducer; }
37
37
  });
38
38
  //# sourceMappingURL=messaging.cjs.map
39
39
  //# sourceMappingURL=messaging.cjs.map
package/dist/messaging.js CHANGED
@@ -1,9 +1,9 @@
1
- export { clearOrderingState, traceConsumer, traceProducer } from './chunk-PKXD2RMI.js';
2
- import './chunk-JM63D22M.js';
3
- import './chunk-SR35DG5A.js';
1
+ export { clearOrderingState, traceConsumer, traceProducer } from './chunk-QDREXAD7.js';
2
+ import './chunk-OPTGXEVN.js';
4
3
  import './chunk-B3ZHLLMP.js';
5
4
  import './chunk-WD4RP6IV.js';
6
- import './chunk-USSL3D6L.js';
5
+ import './chunk-S4OFEXLA.js';
6
+ import './chunk-BBBWDIYQ.js';
7
7
  import './chunk-MNBAXRVG.js';
8
8
  import './chunk-RUD7KS4R.js';
9
9
  import './chunk-XDKK53OL.js';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkOWXXS4JB_cjs = require('./chunk-OWXXS4JB.cjs');
4
- require('./chunk-RMGSBMQF.cjs');
5
- require('./chunk-W4EUTSB2.cjs');
3
+ var chunkMN6PZ4AN_cjs = require('./chunk-MN6PZ4AN.cjs');
4
+ require('./chunk-QQLP4M6W.cjs');
6
5
  require('./chunk-GML3FBOT.cjs');
7
6
  require('./chunk-D5LMF53P.cjs');
8
- require('./chunk-XRKAL7WJ.cjs');
7
+ require('./chunk-JSNUWSBH.cjs');
8
+ require('./chunk-HZ3FYBJG.cjs');
9
9
  require('./chunk-ITYASFHQ.cjs');
10
10
  require('./chunk-OFPZULMQ.cjs');
11
11
  require('./chunk-KZEC4CHV.cjs');
@@ -25,19 +25,19 @@ require('./chunk-JEQ2X3Z6.cjs');
25
25
 
26
26
  Object.defineProperty(exports, "traceDB", {
27
27
  enumerable: true,
28
- get: function () { return chunkOWXXS4JB_cjs.traceDB; }
28
+ get: function () { return chunkMN6PZ4AN_cjs.traceDB; }
29
29
  });
30
30
  Object.defineProperty(exports, "traceHTTP", {
31
31
  enumerable: true,
32
- get: function () { return chunkOWXXS4JB_cjs.traceHTTP; }
32
+ get: function () { return chunkMN6PZ4AN_cjs.traceHTTP; }
33
33
  });
34
34
  Object.defineProperty(exports, "traceLLM", {
35
35
  enumerable: true,
36
- get: function () { return chunkOWXXS4JB_cjs.traceLLM; }
36
+ get: function () { return chunkMN6PZ4AN_cjs.traceLLM; }
37
37
  });
38
38
  Object.defineProperty(exports, "traceMessaging", {
39
39
  enumerable: true,
40
- get: function () { return chunkOWXXS4JB_cjs.traceMessaging; }
40
+ get: function () { return chunkMN6PZ4AN_cjs.traceMessaging; }
41
41
  });
42
42
  //# sourceMappingURL=semantic-helpers.cjs.map
43
43
  //# sourceMappingURL=semantic-helpers.cjs.map
@@ -1,9 +1,9 @@
1
- export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-3ZLYWPMY.js';
2
- import './chunk-JM63D22M.js';
3
- import './chunk-SR35DG5A.js';
1
+ export { traceDB, traceHTTP, traceLLM, traceMessaging } from './chunk-CMUM4JQI.js';
2
+ import './chunk-OPTGXEVN.js';
4
3
  import './chunk-B3ZHLLMP.js';
5
4
  import './chunk-WD4RP6IV.js';
6
- import './chunk-USSL3D6L.js';
5
+ import './chunk-S4OFEXLA.js';
6
+ import './chunk-BBBWDIYQ.js';
7
7
  import './chunk-MNBAXRVG.js';
8
8
  import './chunk-RUD7KS4R.js';
9
9
  import './chunk-XDKK53OL.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/test-span-collector.ts"],"names":["SpanStatusCode"],"mappings":"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","file":"test-span-collector.cjs","sourcesContent":["/**\n * TestSpanCollector — SpanExporter that groups finished spans by traceId\n * and drains per-trace for embedding in test metadata.\n *\n * @example\n * ```typescript\n * import { TestSpanCollector } from 'autotel/test-span-collector';\n * import { SimpleSpanProcessor } from 'autotel/processors';\n * import { getAutotelTracerProvider } from 'autotel';\n *\n * const collector = new TestSpanCollector();\n * const provider = getAutotelTracerProvider();\n * provider.addSpanProcessor(new SimpleSpanProcessor(collector));\n *\n * // After a test span ends:\n * const spans = collector.drainTrace(traceId, rootSpanId);\n * // spans contains only descendants of rootSpanId\n * ```\n */\n\nimport type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SpanStatusCode } from '@opentelemetry/api';\n\n/** @see ExportResultCode from @opentelemetry/core */\nconst ExportResultCode = { SUCCESS: 0, FAILED: 1 } as const;\n\n/** Attribute value types that survive serialization */\ntype SerializableValue =\n | string\n | number\n | boolean\n | string[]\n | number[]\n | boolean[];\n\n/**\n * Portable serialized span for embedding in test metadata.\n * `startTimeMs` is derived from OTel HrTime — epoch-based wall-clock ms in the current SDK.\n */\nexport interface SerializedSpan {\n spanId: string;\n parentSpanId?: string;\n name: string;\n startTimeMs: number;\n durationMs: number;\n status: 'ok' | 'error' | 'unset';\n statusMessage?: string;\n attributes?: Record<string, SerializableValue>;\n}\n\nexport class TestSpanCollector implements SpanExporter {\n private traces = new Map<string, ReadableSpan[]>();\n\n export(\n spans: ReadableSpan[],\n callback: (result: { code: number }) => void,\n ): void {\n for (const span of spans) {\n const traceId = span.spanContext().traceId;\n let list = this.traces.get(traceId);\n if (!list) {\n list = [];\n this.traces.set(traceId, list);\n }\n list.push(span);\n }\n callback({ code: ExportResultCode.SUCCESS });\n }\n\n /**\n * Drain and serialize spans that are descendants of `rootSpanId` within `traceId`.\n * Filters to the subtree rooted at the test span to prevent cross-test mixing.\n * Removes the entire traceId entry from the collector.\n */\n drainTrace(traceId: string, rootSpanId: string): SerializedSpan[] {\n const allSpans = this.traces.get(traceId);\n this.traces.delete(traceId);\n if (!allSpans?.length) return [];\n\n // Build spanId → span index for efficient parent-chain walking\n const byId = new Map<string, ReadableSpan>();\n for (const s of allSpans) byId.set(s.spanContext().spanId, s);\n\n // Filter to spans that are the root or descendants of rootSpanId\n const included = allSpans.filter((s) => {\n let id: string | undefined = s.spanContext().spanId;\n while (id) {\n if (id === rootSpanId) return true;\n const parent = byId.get(id);\n const parentId = parent?.parentSpanContext?.spanId || undefined;\n if (parentId === id) break; // cycle guard\n id = parentId;\n }\n return false;\n });\n\n return included.map((s) => serializeSpan(s));\n }\n\n shutdown(): Promise<void> {\n this.traces.clear();\n return Promise.resolve();\n }\n\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n\nfunction hrTimeToMs(hr: [number, number]): number {\n return hr[0] * 1000 + hr[1] / 1_000_000;\n}\n\nfunction isSerializable(v: unknown): v is SerializableValue {\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean')\n return true;\n if (Array.isArray(v) && v.length > 0) {\n const t = typeof v[0];\n return (\n (t === 'string' || t === 'number' || t === 'boolean') &&\n v.every((e) => typeof e === t)\n );\n }\n return false;\n}\n\nexport function serializeSpan(span: ReadableSpan): SerializedSpan {\n const attrs: Record<string, SerializableValue> = {};\n for (const [k, v] of Object.entries(span.attributes)) {\n if (isSerializable(v)) attrs[k] = v;\n }\n return {\n spanId: span.spanContext().spanId,\n parentSpanId: span.parentSpanContext?.spanId || undefined,\n name: span.name,\n startTimeMs: hrTimeToMs(span.startTime as [number, number]),\n durationMs: hrTimeToMs(span.duration as [number, number]),\n status:\n span.status.code === SpanStatusCode.ERROR\n ? 'error'\n : span.status.code === SpanStatusCode.OK\n ? 'ok'\n : 'unset',\n statusMessage: span.status.message || undefined,\n attributes: Object.keys(attrs).length > 0 ? attrs : undefined,\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/test-span-collector.ts"],"names":["SpanStatusCode"],"mappings":"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","file":"test-span-collector.cjs","sourcesContent":["/**\n * TestSpanCollector — SpanExporter that groups finished spans by traceId\n * and drains per-trace for embedding in test metadata.\n *\n * @example\n * ```typescript\n * import { TestSpanCollector } from 'autotel/test-span-collector';\n * import { SimpleSpanProcessor } from 'autotel/processors';\n * import { getAutotelTracerProvider } from 'autotel';\n *\n * const collector = new TestSpanCollector();\n * const provider = getAutotelTracerProvider();\n * provider.addSpanProcessor(new SimpleSpanProcessor(collector));\n *\n * // After a test span ends:\n * const spans = collector.drainTrace(traceId, rootSpanId);\n * // spans contains only descendants of rootSpanId\n * ```\n */\n\nimport type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';\nimport { SpanStatusCode } from '@opentelemetry/api';\n\n/** @see ExportResultCode from @opentelemetry/core */\nconst ExportResultCode = { SUCCESS: 0, FAILED: 1 } as const;\n\n/** Attribute value types that survive serialization */\ntype SerializableValue =\n | string\n | number\n | boolean\n | string[]\n | number[]\n | boolean[];\n\n/**\n * Portable serialized span for embedding in test metadata.\n * `startTimeMs` is derived from OTel HrTime — epoch-based wall-clock ms in the current SDK.\n *\n * Defined as a `type` (not `interface`) so it is assignable to\n * `Record<string, unknown>` in TypeScript 6+ strict mode.\n */\nexport type SerializedSpan = {\n spanId: string;\n parentSpanId?: string;\n name: string;\n startTimeMs: number;\n durationMs: number;\n status: 'ok' | 'error' | 'unset';\n statusMessage?: string;\n attributes?: Record<string, SerializableValue>;\n};\n\nexport class TestSpanCollector implements SpanExporter {\n private traces = new Map<string, ReadableSpan[]>();\n\n export(\n spans: ReadableSpan[],\n callback: (result: { code: number }) => void,\n ): void {\n for (const span of spans) {\n const traceId = span.spanContext().traceId;\n let list = this.traces.get(traceId);\n if (!list) {\n list = [];\n this.traces.set(traceId, list);\n }\n list.push(span);\n }\n callback({ code: ExportResultCode.SUCCESS });\n }\n\n /**\n * Drain and serialize spans that are descendants of `rootSpanId` within `traceId`.\n * Filters to the subtree rooted at the test span to prevent cross-test mixing.\n * Removes the entire traceId entry from the collector.\n */\n drainTrace(traceId: string, rootSpanId: string): SerializedSpan[] {\n const allSpans = this.traces.get(traceId);\n this.traces.delete(traceId);\n if (!allSpans?.length) return [];\n\n // Build spanId → span index for efficient parent-chain walking\n const byId = new Map<string, ReadableSpan>();\n for (const s of allSpans) byId.set(s.spanContext().spanId, s);\n\n // Filter to spans that are the root or descendants of rootSpanId\n const included = allSpans.filter((s) => {\n let id: string | undefined = s.spanContext().spanId;\n while (id) {\n if (id === rootSpanId) return true;\n const parent = byId.get(id);\n const parentId = parent?.parentSpanContext?.spanId || undefined;\n if (parentId === id) break; // cycle guard\n id = parentId;\n }\n return false;\n });\n\n return included.map((s) => serializeSpan(s));\n }\n\n shutdown(): Promise<void> {\n this.traces.clear();\n return Promise.resolve();\n }\n\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n\nfunction hrTimeToMs(hr: [number, number]): number {\n return hr[0] * 1000 + hr[1] / 1_000_000;\n}\n\nfunction isSerializable(v: unknown): v is SerializableValue {\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean')\n return true;\n if (Array.isArray(v) && v.length > 0) {\n const t = typeof v[0];\n return (\n (t === 'string' || t === 'number' || t === 'boolean') &&\n v.every((e) => typeof e === t)\n );\n }\n return false;\n}\n\nexport function serializeSpan(span: ReadableSpan): SerializedSpan {\n const attrs: Record<string, SerializableValue> = {};\n for (const [k, v] of Object.entries(span.attributes)) {\n if (isSerializable(v)) attrs[k] = v;\n }\n return {\n spanId: span.spanContext().spanId,\n parentSpanId: span.parentSpanContext?.spanId || undefined,\n name: span.name,\n startTimeMs: hrTimeToMs(span.startTime as [number, number]),\n durationMs: hrTimeToMs(span.duration as [number, number]),\n status:\n span.status.code === SpanStatusCode.ERROR\n ? 'error'\n : span.status.code === SpanStatusCode.OK\n ? 'ok'\n : 'unset',\n statusMessage: span.status.message || undefined,\n attributes: Object.keys(attrs).length > 0 ? attrs : undefined,\n };\n}\n"]}
@@ -25,8 +25,11 @@ type SerializableValue = string | number | boolean | string[] | number[] | boole
25
25
  /**
26
26
  * Portable serialized span for embedding in test metadata.
27
27
  * `startTimeMs` is derived from OTel HrTime — epoch-based wall-clock ms in the current SDK.
28
+ *
29
+ * Defined as a `type` (not `interface`) so it is assignable to
30
+ * `Record<string, unknown>` in TypeScript 6+ strict mode.
28
31
  */
29
- interface SerializedSpan {
32
+ type SerializedSpan = {
30
33
  spanId: string;
31
34
  parentSpanId?: string;
32
35
  name: string;
@@ -35,7 +38,7 @@ interface SerializedSpan {
35
38
  status: 'ok' | 'error' | 'unset';
36
39
  statusMessage?: string;
37
40
  attributes?: Record<string, SerializableValue>;
38
- }
41
+ };
39
42
  declare class TestSpanCollector implements SpanExporter {
40
43
  private traces;
41
44
  export(spans: ReadableSpan[], callback: (result: {
@@ -25,8 +25,11 @@ type SerializableValue = string | number | boolean | string[] | number[] | boole
25
25
  /**
26
26
  * Portable serialized span for embedding in test metadata.
27
27
  * `startTimeMs` is derived from OTel HrTime — epoch-based wall-clock ms in the current SDK.
28
+ *
29
+ * Defined as a `type` (not `interface`) so it is assignable to
30
+ * `Record<string, unknown>` in TypeScript 6+ strict mode.
28
31
  */
29
- interface SerializedSpan {
32
+ type SerializedSpan = {
30
33
  spanId: string;
31
34
  parentSpanId?: string;
32
35
  name: string;
@@ -35,7 +38,7 @@ interface SerializedSpan {
35
38
  status: 'ok' | 'error' | 'unset';
36
39
  statusMessage?: string;
37
40
  attributes?: Record<string, SerializableValue>;
38
- }
41
+ };
39
42
  declare class TestSpanCollector implements SpanExporter {
40
43
  private traces;
41
44
  export(spans: ReadableSpan[], callback: (result: {