@temporalio/interceptors-opentelemetry 1.14.2-canary-release-testing.0 → 1.16.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.
package/lib/index.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  *
8
8
  * @module
9
9
  */
10
+ export * from './plugin';
10
11
  export * from './workflow';
11
12
  export * from './worker';
12
13
  export { OpenTelemetryWorkflowClientInterceptor,
package/lib/index.js CHANGED
@@ -24,6 +24,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.OpenTelemetryWorkflowClientCallsInterceptor = exports.OpenTelemetryWorkflowClientInterceptor = void 0;
27
+ __exportStar(require("./plugin"), exports);
27
28
  __exportStar(require("./workflow"), exports);
28
29
  __exportStar(require("./worker"), exports);
29
30
  var client_1 = require("./client");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,2CAAyB;AACzB,mCAIkB;AAHhB,gIAAA,sCAAsC,OAAA;AACtC,qEAAqE;AACrE,qIAAA,sCAAsC,OAA+C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,mCAIkB;AAHhB,gIAAA,sCAAsC,OAAA;AACtC,qEAAqE;AACrE,qIAAA,sCAAsC,OAA+C"}
@@ -26,10 +26,21 @@ export declare const NEXUS_ENDPOINT_ATTR_KEY = "temporalNexusEndpoint";
26
26
  * If found, return an otel Context deserialized from the provided headers
27
27
  */
28
28
  export declare function extractContextFromHeaders(headers: Headers): otel.Context | undefined;
29
+ /**
30
+ * If found, return an otel Context deserialized from the provided Nexus headers.
31
+ *
32
+ * Nexus headers are plain `Record<string, string>`, so we extract the context
33
+ * directly from the string map.
34
+ */
35
+ export declare function extractContextFromNexusHeaders(headers: Record<string, string>): otel.Context | undefined;
29
36
  /**
30
37
  * Given headers, return new headers with the current otel context inserted
31
38
  */
32
39
  export declare function headersWithContext(headers: Headers): Headers;
40
+ /**
41
+ * Given Nexus headers, return new headers with the current otel context injected directly
42
+ */
43
+ export declare function nexusHeadersWithContext(headers: Record<string, string>): Record<string, string>;
33
44
  export interface InstrumentOptions<T> {
34
45
  tracer: otel.Tracer;
35
46
  spanName: string;
@@ -25,7 +25,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.NEXUS_ENDPOINT_ATTR_KEY = exports.NEXUS_OPERATION_ATTR_KEY = exports.NEXUS_SERVICE_ATTR_KEY = exports.TERMINATE_REASON_ATTR_KEY = exports.UPDATE_ID_ATTR_KEY = exports.ACTIVITY_ID_ATTR_KEY = exports.WORKFLOW_ID_ATTR_KEY = exports.RUN_ID_ATTR_KEY = exports.TRACE_HEADER = void 0;
27
27
  exports.extractContextFromHeaders = extractContextFromHeaders;
28
+ exports.extractContextFromNexusHeaders = extractContextFromNexusHeaders;
28
29
  exports.headersWithContext = headersWithContext;
30
+ exports.nexusHeadersWithContext = nexusHeadersWithContext;
29
31
  exports.instrument = instrument;
30
32
  exports.instrumentSync = instrumentSync;
31
33
  /**
@@ -64,6 +66,18 @@ function extractContextFromHeaders(headers) {
64
66
  const textMap = payloadConverter.fromPayload(encodedSpanContext);
65
67
  return otel.propagation.extract(otel.context.active(), textMap, otel.defaultTextMapGetter);
66
68
  }
69
+ /**
70
+ * If found, return an otel Context deserialized from the provided Nexus headers.
71
+ *
72
+ * Nexus headers are plain `Record<string, string>`, so we extract the context
73
+ * directly from the string map.
74
+ */
75
+ function extractContextFromNexusHeaders(headers) {
76
+ if (Object.keys(headers).length === 0) {
77
+ return undefined;
78
+ }
79
+ return otel.propagation.extract(otel.context.active(), headers, otel.defaultTextMapGetter);
80
+ }
67
81
  /**
68
82
  * Given headers, return new headers with the current otel context inserted
69
83
  */
@@ -72,6 +86,14 @@ function headersWithContext(headers) {
72
86
  otel.propagation.inject(otel.context.active(), carrier, otel.defaultTextMapSetter);
73
87
  return { ...headers, [exports.TRACE_HEADER]: payloadConverter.toPayload(carrier) };
74
88
  }
89
+ /**
90
+ * Given Nexus headers, return new headers with the current otel context injected directly
91
+ */
92
+ function nexusHeadersWithContext(headers) {
93
+ const carrier = {};
94
+ otel.propagation.inject(otel.context.active(), carrier, otel.defaultTextMapSetter);
95
+ return { ...headers, ...carrier };
96
+ }
75
97
  async function wrapWithSpan(span, fn, acceptableErrors) {
76
98
  try {
77
99
  const ret = await fn(span);
@@ -104,7 +126,8 @@ function maybeAddErrorToSpan(err, span, acceptableErrors) {
104
126
  const isBenignErr = err instanceof common_1.ApplicationFailure && err.category === common_1.ApplicationFailureCategory.BENIGN;
105
127
  if (acceptableErrors === undefined || !acceptableErrors(err)) {
106
128
  const statusCode = isBenignErr ? otel.SpanStatusCode.UNSET : otel.SpanStatusCode.ERROR;
107
- span.setStatus({ code: statusCode, message: err.message ?? String(err) });
129
+ const message = err != null && typeof err.message === 'string' ? err.message : String(err);
130
+ span.setStatus({ code: statusCode, message });
108
131
  span.recordException(err);
109
132
  }
110
133
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { SpanProcessor } from '@opentelemetry/sdk-trace-base';
2
+ import { Resource } from '@opentelemetry/resources';
3
+ import { SimplePlugin } from '@temporalio/plugin';
4
+ import { ReplayWorkerOptions, WorkerOptions } from '@temporalio/worker';
5
+ import { InterceptorOptions } from './client';
6
+ /**
7
+ * Configuration options for {@link OpenTelemetryPlugin}.
8
+ *
9
+ * @experimental Plugins is an experimental feature; APIs may change without notice.
10
+ */
11
+ export interface OpenTelemetryPluginOptions extends InterceptorOptions {
12
+ /** OpenTelemetry resource attributes to attach to exported spans */
13
+ readonly resource: Resource;
14
+ /** Exporter used to send spans to a tracing backend */
15
+ readonly spanProcessor: SpanProcessor;
16
+ }
17
+ /**
18
+ * A plugin that adds OpenTelemetry tracing.
19
+ *
20
+ * Configures Client, Activity, and Workflow interceptors for trace propagation and injects
21
+ * a span exporter sink for Workflow spans.
22
+ *
23
+ * @experimental Plugins is an experimental feature; APIs may change without notice.
24
+ */
25
+ export declare class OpenTelemetryPlugin extends SimplePlugin {
26
+ readonly otelOptions: OpenTelemetryPluginOptions;
27
+ constructor(otelOptions: OpenTelemetryPluginOptions);
28
+ configureWorker(options: WorkerOptions): WorkerOptions;
29
+ configureReplayWorker(options: ReplayWorkerOptions): ReplayWorkerOptions;
30
+ private injectSinks;
31
+ }
package/lib/plugin.js ADDED
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenTelemetryPlugin = void 0;
4
+ const plugin_1 = require("@temporalio/plugin");
5
+ const client_1 = require("./client");
6
+ const worker_1 = require("./worker");
7
+ /**
8
+ * A plugin that adds OpenTelemetry tracing.
9
+ *
10
+ * Configures Client, Activity, and Workflow interceptors for trace propagation and injects
11
+ * a span exporter sink for Workflow spans.
12
+ *
13
+ * @experimental Plugins is an experimental feature; APIs may change without notice.
14
+ */
15
+ class OpenTelemetryPlugin extends plugin_1.SimplePlugin {
16
+ otelOptions;
17
+ constructor(otelOptions) {
18
+ const workflowInterceptorsPath = require.resolve('./workflow-interceptors');
19
+ const interceptorOptions = otelOptions.tracer ? { tracer: otelOptions.tracer } : {};
20
+ super({
21
+ name: 'OpenTelemetryPlugin',
22
+ clientInterceptors: {
23
+ workflow: [new client_1.OpenTelemetryWorkflowClientInterceptor(interceptorOptions)],
24
+ },
25
+ workerInterceptors: {
26
+ client: {
27
+ workflow: [new client_1.OpenTelemetryWorkflowClientInterceptor(interceptorOptions)],
28
+ },
29
+ workflowModules: [workflowInterceptorsPath],
30
+ activity: [
31
+ (ctx) => ({
32
+ inbound: new worker_1.OpenTelemetryActivityInboundInterceptor(ctx, interceptorOptions),
33
+ outbound: new worker_1.OpenTelemetryActivityOutboundInterceptor(ctx),
34
+ }),
35
+ ],
36
+ nexus: [
37
+ (ctx) => ({
38
+ inbound: new worker_1.OpenTelemetryNexusInboundInterceptor(ctx, interceptorOptions),
39
+ outbound: new worker_1.OpenTelemetryNexusOutboundInterceptor(ctx),
40
+ }),
41
+ ],
42
+ },
43
+ });
44
+ this.otelOptions = otelOptions;
45
+ }
46
+ configureWorker(options) {
47
+ return super.configureWorker(this.injectSinks(options));
48
+ }
49
+ configureReplayWorker(options) {
50
+ return super.configureReplayWorker(this.injectSinks(options));
51
+ }
52
+ injectSinks(options) {
53
+ const sinks = {
54
+ exporter: (0, worker_1.makeWorkflowExporter)(this.otelOptions.spanProcessor, this.otelOptions.resource),
55
+ };
56
+ return {
57
+ ...options,
58
+ sinks: {
59
+ ...options.sinks,
60
+ ...sinks,
61
+ },
62
+ };
63
+ }
64
+ }
65
+ exports.OpenTelemetryPlugin = OpenTelemetryPlugin;
66
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAElD,qCAAsF;AACtF,qCAMkB;AAelB;;;;;;;GAOG;AACH,MAAa,mBAAoB,SAAQ,qBAAY;IAC9B;IAArB,YAAqB,WAAuC;QAC1D,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC5E,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,KAAK,CAAC;YACJ,IAAI,EAAE,qBAAqB;YAC3B,kBAAkB,EAAE;gBAClB,QAAQ,EAAE,CAAC,IAAI,+CAAsC,CAAC,kBAAkB,CAAC,CAAC;aAC3E;YACD,kBAAkB,EAAE;gBAClB,MAAM,EAAE;oBACN,QAAQ,EAAE,CAAC,IAAI,+CAAsC,CAAC,kBAAkB,CAAC,CAAC;iBAC3E;gBACD,eAAe,EAAE,CAAC,wBAAwB,CAAC;gBAC3C,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACR,OAAO,EAAE,IAAI,gDAAuC,CAAC,GAAG,EAAE,kBAAkB,CAAC;wBAC7E,QAAQ,EAAE,IAAI,iDAAwC,CAAC,GAAG,CAAC;qBAC5D,CAAC;iBACH;gBACD,KAAK,EAAE;oBACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACR,OAAO,EAAE,IAAI,6CAAoC,CAAC,GAAG,EAAE,kBAAkB,CAAC;wBAC1E,QAAQ,EAAE,IAAI,8CAAqC,CAAC,GAAG,CAAC;qBACzD,CAAC;iBACH;aACF;SACF,CAAC,CAAC;QA1BgB,gBAAW,GAAX,WAAW,CAA4B;IA2B5D,CAAC;IAED,eAAe,CAAC,OAAsB;QACpC,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAqB,CAAC,OAA4B;QAChD,OAAO,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAEO,WAAW,CAA2C,OAAU;QACtE,MAAM,KAAK,GAAsC;YAC/C,QAAQ,EAAE,IAAA,6BAAoB,EAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;SAC1F,CAAC;QACF,OAAO;YACL,GAAG,OAAO;YACV,KAAK,EAAE;gBACL,GAAG,OAAO,CAAC,KAAK;gBAChB,GAAG,KAAK;aACT;SACF,CAAC;IACJ,CAAC;CACF;AAlDD,kDAkDC"}
@@ -1,8 +1,9 @@
1
1
  import * as otel from '@opentelemetry/api';
2
2
  import type { Resource } from '@opentelemetry/resources';
3
- import type { SpanExporter } from '@opentelemetry/sdk-trace-base';
3
+ import type { SpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base';
4
+ import type * as nexus from 'nexus-rpc';
4
5
  import type { Context as ActivityContext } from '@temporalio/activity';
5
- import type { Next, ActivityInboundCallsInterceptor, ActivityOutboundCallsInterceptor, InjectedSink, GetLogAttributesInput, GetMetricTagsInput, ActivityExecuteInput } from '@temporalio/worker';
6
+ import type { Next, ActivityInboundCallsInterceptor, ActivityOutboundCallsInterceptor, NexusInboundCallsInterceptor, NexusOutboundCallsInterceptor, NexusStartOperationInput, NexusStartOperationOutput, NexusCancelOperationInput, InjectedSink, GetLogAttributesInput, GetMetricTagsInput, ActivityExecuteInput } from '@temporalio/worker';
6
7
  import { type OpenTelemetryWorkflowExporter } from '../workflow/definitions';
7
8
  export interface InterceptorOptions {
8
9
  readonly tracer?: otel.Tracer;
@@ -30,7 +31,39 @@ export declare class OpenTelemetryActivityOutboundInterceptor implements Activit
30
31
  getLogAttributes(input: GetLogAttributesInput, next: Next<ActivityOutboundCallsInterceptor, 'getLogAttributes'>): Record<string, unknown>;
31
32
  getMetricTags(input: GetMetricTagsInput, next: Next<ActivityOutboundCallsInterceptor, 'getMetricTags'>): GetMetricTagsInput;
32
33
  }
34
+ /**
35
+ * Intercepts inbound Nexus Operation calls on the worker.
36
+ *
37
+ * Wraps `startOperation` and `cancelOperation` in opentelemetry Spans, linking to a parent Span context
38
+ * if one is provided in the Nexus request headers.
39
+ */
40
+ export declare class OpenTelemetryNexusInboundInterceptor implements NexusInboundCallsInterceptor {
41
+ protected readonly ctx: nexus.OperationContext;
42
+ protected readonly tracer: otel.Tracer;
43
+ constructor(ctx: nexus.OperationContext, options?: InterceptorOptions);
44
+ startOperation(input: NexusStartOperationInput, next: Next<NexusInboundCallsInterceptor, 'startOperation'>): Promise<NexusStartOperationOutput>;
45
+ cancelOperation(input: NexusCancelOperationInput, next: Next<NexusInboundCallsInterceptor, 'cancelOperation'>): Promise<void>;
46
+ }
47
+ /**
48
+ * Intercepts outbound calls from a Nexus Operation handler.
49
+ *
50
+ * Attaches OpenTelemetry context tracing attributes to emitted log messages and metrics.
51
+ */
52
+ export declare class OpenTelemetryNexusOutboundInterceptor implements NexusOutboundCallsInterceptor {
53
+ protected readonly ctx: nexus.OperationContext;
54
+ constructor(ctx: nexus.OperationContext);
55
+ getLogAttributes(input: GetLogAttributesInput, next: Next<NexusOutboundCallsInterceptor, 'getLogAttributes'>): Record<string, unknown>;
56
+ getMetricTags(input: GetMetricTagsInput, next: Next<NexusOutboundCallsInterceptor, 'getMetricTags'>): GetMetricTagsInput;
57
+ }
33
58
  /**
34
59
  * Takes an opentelemetry SpanExporter and turns it into an injected Workflow span exporter sink
60
+ *
61
+ * @deprecated Do not directly pass a `SpanExporter`. Pass a `SpanProcessor` instead to ensure proper handling of async attributes.
62
+ */
63
+ export declare function makeWorkflowExporter(spanExporter: SpanExporter, resource: Resource): InjectedSink<OpenTelemetryWorkflowExporter>;
64
+ /**
65
+ * Takes an opentelemetry SpanProcessor and turns it into an injected Workflow span exporter sink.
66
+ *
67
+ * For backward compatibility, passing a `SpanExporter` directly is still supported.
35
68
  */
36
- export declare function makeWorkflowExporter(exporter: SpanExporter, resource: Resource): InjectedSink<OpenTelemetryWorkflowExporter>;
69
+ export declare function makeWorkflowExporter(spanProcessor: SpanProcessor, resource: Resource): InjectedSink<OpenTelemetryWorkflowExporter>;
@@ -23,9 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.OpenTelemetryActivityOutboundInterceptor = exports.OpenTelemetryActivityInboundInterceptor = void 0;
26
+ exports.OpenTelemetryNexusOutboundInterceptor = exports.OpenTelemetryNexusInboundInterceptor = exports.OpenTelemetryActivityOutboundInterceptor = exports.OpenTelemetryActivityInboundInterceptor = void 0;
27
27
  exports.makeWorkflowExporter = makeWorkflowExporter;
28
28
  const otel = __importStar(require("@opentelemetry/api"));
29
+ const api_1 = require("@opentelemetry/api");
30
+ const common_1 = require("@temporalio/common");
29
31
  const instrumentation_1 = require("../instrumentation");
30
32
  const definitions_1 = require("../workflow/definitions");
31
33
  /**
@@ -54,6 +56,7 @@ class OpenTelemetryActivityInboundInterceptor {
54
56
  return next(input);
55
57
  },
56
58
  context,
59
+ acceptableErrors: (err) => err instanceof common_1.CompleteAsyncError,
57
60
  });
58
61
  }
59
62
  }
@@ -101,9 +104,92 @@ class OpenTelemetryActivityOutboundInterceptor {
101
104
  }
102
105
  exports.OpenTelemetryActivityOutboundInterceptor = OpenTelemetryActivityOutboundInterceptor;
103
106
  /**
104
- * Takes an opentelemetry SpanExporter and turns it into an injected Workflow span exporter sink
107
+ * Intercepts inbound Nexus Operation calls on the worker.
108
+ *
109
+ * Wraps `startOperation` and `cancelOperation` in opentelemetry Spans, linking to a parent Span context
110
+ * if one is provided in the Nexus request headers.
105
111
  */
106
- function makeWorkflowExporter(exporter, resource) {
112
+ class OpenTelemetryNexusInboundInterceptor {
113
+ ctx;
114
+ tracer;
115
+ constructor(ctx, options) {
116
+ this.ctx = ctx;
117
+ this.tracer = options?.tracer ?? otel.trace.getTracer('@temporalio/interceptor-nexus');
118
+ }
119
+ async startOperation(input, next) {
120
+ const context = (0, instrumentation_1.extractContextFromNexusHeaders)(input.ctx.headers);
121
+ const spanName = `${definitions_1.SpanName.NEXUS_START_OPERATION_EXECUTE}${definitions_1.SPAN_DELIMITER}${input.ctx.service}/${input.ctx.operation}`;
122
+ return await (0, instrumentation_1.instrument)({
123
+ tracer: this.tracer,
124
+ spanName,
125
+ fn: (span) => {
126
+ span.setAttribute(instrumentation_1.NEXUS_SERVICE_ATTR_KEY, input.ctx.service);
127
+ span.setAttribute(instrumentation_1.NEXUS_OPERATION_ATTR_KEY, input.ctx.operation);
128
+ return next(input);
129
+ },
130
+ context,
131
+ });
132
+ }
133
+ async cancelOperation(input, next) {
134
+ const context = (0, instrumentation_1.extractContextFromNexusHeaders)(input.ctx.headers);
135
+ const spanName = `${definitions_1.SpanName.NEXUS_CANCEL_OPERATION_EXECUTE}${definitions_1.SPAN_DELIMITER}${input.ctx.service}/${input.ctx.operation}`;
136
+ return await (0, instrumentation_1.instrument)({
137
+ tracer: this.tracer,
138
+ spanName,
139
+ fn: (span) => {
140
+ span.setAttribute(instrumentation_1.NEXUS_SERVICE_ATTR_KEY, input.ctx.service);
141
+ span.setAttribute(instrumentation_1.NEXUS_OPERATION_ATTR_KEY, input.ctx.operation);
142
+ return next(input);
143
+ },
144
+ context,
145
+ });
146
+ }
147
+ }
148
+ exports.OpenTelemetryNexusInboundInterceptor = OpenTelemetryNexusInboundInterceptor;
149
+ /**
150
+ * Intercepts outbound calls from a Nexus Operation handler.
151
+ *
152
+ * Attaches OpenTelemetry context tracing attributes to emitted log messages and metrics.
153
+ */
154
+ class OpenTelemetryNexusOutboundInterceptor {
155
+ ctx;
156
+ constructor(ctx) {
157
+ this.ctx = ctx;
158
+ }
159
+ getLogAttributes(input, next) {
160
+ const span = otel.trace.getSpan(otel.context.active());
161
+ const spanContext = span?.spanContext();
162
+ if (spanContext && otel.isSpanContextValid(spanContext)) {
163
+ return next({
164
+ trace_id: spanContext.traceId,
165
+ span_id: spanContext.spanId,
166
+ trace_flags: `0${spanContext.traceFlags.toString(16)}`,
167
+ ...input,
168
+ });
169
+ }
170
+ else {
171
+ return next(input);
172
+ }
173
+ }
174
+ getMetricTags(input, next) {
175
+ const span = otel.trace.getSpan(otel.context.active());
176
+ const spanContext = span?.spanContext();
177
+ if (spanContext && otel.isSpanContextValid(spanContext)) {
178
+ return next({
179
+ trace_id: spanContext.traceId,
180
+ span_id: spanContext.spanId,
181
+ trace_flags: `0${spanContext.traceFlags.toString(16)}`,
182
+ ...input,
183
+ });
184
+ }
185
+ else {
186
+ return next(input);
187
+ }
188
+ }
189
+ }
190
+ exports.OpenTelemetryNexusOutboundInterceptor = OpenTelemetryNexusOutboundInterceptor;
191
+ function makeWorkflowExporter(processorOrExporter, resource) {
192
+ const givenSpanProcessor = isSpanProcessor(processorOrExporter);
107
193
  return {
108
194
  export: {
109
195
  fn: (info, spanData) => {
@@ -112,17 +198,30 @@ function makeWorkflowExporter(exporter, resource) {
112
198
  // Spans are copied over from the isolate and are converted to ReadableSpan instances
113
199
  return extractReadableSpan(serialized, resource);
114
200
  });
115
- // Ignore the export result for simplicity
116
- exporter.export(spans, () => undefined);
201
+ if (givenSpanProcessor) {
202
+ spans.forEach((span) => processorOrExporter.onEnd(span));
203
+ }
204
+ else {
205
+ // Ignore the export result for simplicity
206
+ processorOrExporter.export(spans, () => undefined);
207
+ }
117
208
  },
118
209
  },
119
210
  };
120
211
  }
212
+ function isSpanProcessor(obj) {
213
+ return 'onEnd' in obj && typeof obj.onEnd === 'function';
214
+ }
121
215
  /**
122
216
  * Deserialize a serialized span created by the Workflow isolate
123
217
  */
124
218
  function extractReadableSpan(serializable, resource) {
125
- const { spanContext, ...rest } = serializable;
219
+ const { spanContext: { traceState, ...restSpanContext }, ...rest } = serializable;
220
+ const spanContext = {
221
+ // Reconstruct the TraceState from the serialized string.
222
+ traceState: traceState ? (0, api_1.createTraceState)(traceState) : undefined,
223
+ ...restSpanContext,
224
+ };
126
225
  return {
127
226
  spanContext() {
128
227
  return spanContext;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,6 @@ class ContextManager {
49
49
  * It isn't possible to tell Typescript that contextWrapper is the same as T
50
50
  * so we forced to cast as any here.
51
51
  */
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
52
  return contextWrapper;
54
53
  }
55
54
  enable() {
@@ -1 +1 @@
1
- {"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/workflow/context-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yDAA2C;AAE3C,MAAa,cAAc;IACzB,sEAAsE;IAC5D,OAAO,GAAoC,IAAK,UAAkB,CAAC,iBAAiB,EAAE,CAAC;IAEjG,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,IAAI,CAAI,OAAqB,EAAE,MAAS;QACtC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,2CAA2C,OAAO,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,8JAA8J;QAC9J,MAAM,cAAc,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE;YAC9C,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC,CAAC;QACH;;;WAGG;QACH,8DAA8D;QAC9D,OAAO,cAAqB,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CACF,OAAqB,EACrB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAjDD,wCAiDC"}
1
+ {"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/workflow/context-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yDAA2C;AAE3C,MAAa,cAAc;IACzB,sEAAsE;IAC5D,OAAO,GAAoC,IAAK,UAAkB,CAAC,iBAAiB,EAAE,CAAC;IAEjG,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,IAAI,CAAI,OAAqB,EAAE,MAAS;QACtC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,2CAA2C,OAAO,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,8JAA8J;QAC9J,MAAM,cAAc,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE;YAC9C,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC,CAAC;QACH;;;WAGG;QAEH,OAAO,cAAqB,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CACF,OAAqB,EACrB,EAAK,EACL,OAA8B,EAC9B,GAAG,IAAO;QAEV,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAjDD,wCAiDC"}
@@ -2,13 +2,19 @@ import * as otel from '@opentelemetry/api';
2
2
  import * as tracing from '@opentelemetry/sdk-trace-base';
3
3
  import { InstrumentationLibrary } from '@opentelemetry/core';
4
4
  import type { Sink, Sinks } from '@temporalio/workflow';
5
+ /**
6
+ * Serializable version of SpanContext where traceState is converted to a string.
7
+ */
8
+ export type SerializableSpanContext = Omit<otel.SpanContext, 'traceState'> & {
9
+ traceState?: string;
10
+ };
5
11
  /**
6
12
  * Serializable version of the opentelemetry Span for cross isolate copying
7
13
  */
8
14
  export interface SerializableSpan {
9
15
  readonly name: string;
10
16
  readonly kind: otel.SpanKind;
11
- readonly spanContext: otel.SpanContext;
17
+ readonly spanContext: SerializableSpanContext;
12
18
  readonly parentSpanId?: string;
13
19
  readonly startTime: otel.HrTime;
14
20
  readonly endTime: otel.HrTime;
@@ -108,6 +114,14 @@ export declare enum SpanName {
108
114
  /**
109
115
  * Nexus operation is started
110
116
  */
111
- NEXUS_OPERATION_START = "StartNexusOperation"
117
+ NEXUS_OPERATION_START = "StartNexusOperation",
118
+ /**
119
+ * Nexus operation is executing
120
+ */
121
+ NEXUS_START_OPERATION_EXECUTE = "RunStartNexusOperation",
122
+ /**
123
+ * Nexus operation cancel is executing
124
+ */
125
+ NEXUS_CANCEL_OPERATION_EXECUTE = "RunCancelNexusOperation"
112
126
  }
113
127
  export declare const SPAN_DELIMITER = ":";
@@ -79,6 +79,14 @@ var SpanName;
79
79
  * Nexus operation is started
80
80
  */
81
81
  SpanName["NEXUS_OPERATION_START"] = "StartNexusOperation";
82
+ /**
83
+ * Nexus operation is executing
84
+ */
85
+ SpanName["NEXUS_START_OPERATION_EXECUTE"] = "RunStartNexusOperation";
86
+ /**
87
+ * Nexus operation cancel is executing
88
+ */
89
+ SpanName["NEXUS_CANCEL_OPERATION_EXECUTE"] = "RunCancelNexusOperation";
82
90
  })(SpanName || (exports.SpanName = SpanName = {}));
83
91
  exports.SPAN_DELIMITER = ':';
84
92
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/workflow/definitions.ts"],"names":[],"mappings":";;;AAwCA,IAAY,QA0FX;AA1FD,WAAY,QAAQ;IAClB;;OAEG;IACH,4CAAgC,CAAA;IAEhC;;OAEG;IACH,8CAAkC,CAAA;IAElC;;OAEG;IACH,kEAAsD,CAAA;IAEtD;;OAEG;IACH,4CAAgC,CAAA;IAEhC;;OAEG;IACH,yDAA6C,CAAA;IAE7C;;OAEG;IACH,kEAAsD,CAAA;IAEtD;;OAEG;IACH,mDAAuC,CAAA;IAEvC;;OAEG;IACH,iDAAqC,CAAA;IAErC;;OAEG;IACH,mDAAuC,CAAA;IAEvC;;OAEG;IACH,uDAA2C,CAAA;IAE3C;;OAEG;IACH,oDAAwC,CAAA;IAExC;;OAEG;IACH,8CAAkC,CAAA;IAElC;;OAEG;IACH,kDAAsC,CAAA;IAEtC;;OAEG;IACH,4CAAgC,CAAA;IAChC;;OAEG;IACH,uDAA2C,CAAA;IAC3C;;OAEG;IACH,4CAAgC,CAAA;IAChC;;OAEG;IACH,4CAAgC,CAAA;IAChC;;OAEG;IACH,6CAAiC,CAAA;IACjC;;OAEG;IACH,yDAA6C,CAAA;AAC/C,CAAC,EA1FW,QAAQ,wBAAR,QAAQ,QA0FnB;AAEY,QAAA,cAAc,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/workflow/definitions.ts"],"names":[],"mappings":";;;AA6CA,IAAY,QAkGX;AAlGD,WAAY,QAAQ;IAClB;;OAEG;IACH,4CAAgC,CAAA;IAEhC;;OAEG;IACH,8CAAkC,CAAA;IAElC;;OAEG;IACH,kEAAsD,CAAA;IAEtD;;OAEG;IACH,4CAAgC,CAAA;IAEhC;;OAEG;IACH,yDAA6C,CAAA;IAE7C;;OAEG;IACH,kEAAsD,CAAA;IAEtD;;OAEG;IACH,mDAAuC,CAAA;IAEvC;;OAEG;IACH,iDAAqC,CAAA;IAErC;;OAEG;IACH,mDAAuC,CAAA;IAEvC;;OAEG;IACH,uDAA2C,CAAA;IAE3C;;OAEG;IACH,oDAAwC,CAAA;IAExC;;OAEG;IACH,8CAAkC,CAAA;IAElC;;OAEG;IACH,kDAAsC,CAAA;IAEtC;;OAEG;IACH,4CAAgC,CAAA;IAChC;;OAEG;IACH,uDAA2C,CAAA;IAC3C;;OAEG;IACH,4CAAgC,CAAA;IAChC;;OAEG;IACH,4CAAgC,CAAA;IAChC;;OAEG;IACH,6CAAiC,CAAA;IACjC;;OAEG;IACH,yDAA6C,CAAA;IAC7C;;OAEG;IACH,oEAAwD,CAAA;IACxD;;OAEG;IACH,sEAA0D,CAAA;AAC5D,CAAC,EAlGW,QAAQ,wBAAR,QAAQ,QAkGnB;AAEY,QAAA,cAAc,GAAG,GAAG,CAAC"}
@@ -27,7 +27,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.OpenTelemetryInternalsInterceptor = exports.OpenTelemetryOutboundInterceptor = exports.OpenTelemetryInboundInterceptor = void 0;
30
- /* eslint-disable import/order */
31
30
  // eslint-disable-next-line import/no-unassigned-import
32
31
  require("./runtime"); // Patch the Workflow isolate runtime for opentelemetry
33
32
  const otel = __importStar(require("@opentelemetry/api"));
@@ -176,12 +175,13 @@ class OpenTelemetryOutboundInterceptor {
176
175
  return next(input);
177
176
  return await (0, instrumentation_1.instrument)({
178
177
  tracer: this.tracer,
179
- spanName: `${definitions_1.SpanName.NEXUS_OPERATION_START}${definitions_1.SPAN_DELIMITER}${input.service}${definitions_1.SPAN_DELIMITER}${input.operation}`,
178
+ spanName: `${definitions_1.SpanName.NEXUS_OPERATION_START}${definitions_1.SPAN_DELIMITER}${input.service}/${input.operation}`,
180
179
  fn: async (span) => {
181
180
  span.setAttribute(instrumentation_1.NEXUS_SERVICE_ATTR_KEY, input.service);
182
181
  span.setAttribute(instrumentation_1.NEXUS_OPERATION_ATTR_KEY, input.operation);
183
182
  span.setAttribute(instrumentation_1.NEXUS_ENDPOINT_ATTR_KEY, input.endpoint);
184
- return await next(input);
183
+ const headers = (0, instrumentation_1.nexusHeadersWithContext)(input.headers);
184
+ return await next({ ...input, headers });
185
185
  },
186
186
  });
187
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
@@ -16,10 +16,18 @@ class SpanExporter {
16
16
  // Nothing to shut down
17
17
  }
18
18
  makeSerializable(span) {
19
+ const { traceState, ...restSpanContext } = span.spanContext();
20
+ // Serialize traceState to a string because TraceState objects lose their
21
+ // prototype methods when crossing the V8 isolate boundary.
22
+ // See: https://github.com/temporalio/sdk-typescript/issues/1738
23
+ const serializableSpanContext = {
24
+ traceState: traceState?.serialize(),
25
+ ...restSpanContext,
26
+ };
19
27
  return {
20
28
  name: span.name,
21
29
  kind: span.kind,
22
- spanContext: span.spanContext(),
30
+ spanContext: serializableSpanContext,
23
31
  parentSpanId: span.parentSpanId,
24
32
  startTime: span.startTime,
25
33
  endTime: span.endTime,
@@ -1 +1 @@
1
- {"version":3,"file":"span-exporter.js","sourceRoot":"","sources":["../../src/workflow/span-exporter.ts"],"names":[],"mappings":";;;AACA,8CAAqE;AAErE,yDAAgD;AAEhD,MAAa,YAAY;IACf,QAAQ,CAAkC;IAE3C,MAAM,CAAC,KAA6B,EAAE,cAA8C;QACzF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAA,6BAAU,GAAsB,CAAC,QAAQ,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,uBAAuB;IACzB,CAAC;IAEM,gBAAgB,CAAC,IAA0B;QAChD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC;IACJ,CAAC;CACF;AAnCD,oCAmCC"}
1
+ {"version":3,"file":"span-exporter.js","sourceRoot":"","sources":["../../src/workflow/span-exporter.ts"],"names":[],"mappings":";;;AACA,8CAAqE;AAErE,yDAAgD;AAEhD,MAAa,YAAY;IACf,QAAQ,CAAkC;IAE3C,MAAM,CAAC,KAA6B,EAAE,cAA8C;QACzF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAA,6BAAU,GAAsB,CAAC,QAAQ,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvE,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,uBAAuB;IACzB,CAAC;IAEM,gBAAgB,CAAC,IAA0B;QAChD,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9D,yEAAyE;QACzE,2DAA2D;QAC3D,gEAAgE;QAChE,MAAM,uBAAuB,GAA4B;YACvD,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE;YACnC,GAAG,eAAe;SACnB,CAAC;QACF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,uBAAuB;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD,CAAC;IACJ,CAAC;CACF;AA3CD,oCA2CC"}
@@ -0,0 +1,3 @@
1
+ /** Not a workflow, just interceptors */
2
+ import type { WorkflowInterceptors } from '@temporalio/workflow';
3
+ export declare const interceptors: () => WorkflowInterceptors;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /** Not a workflow, just interceptors */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.interceptors = void 0;
5
+ const workflow_1 = require("./workflow");
6
+ const interceptors = () => ({
7
+ inbound: [new workflow_1.OpenTelemetryInboundInterceptor()],
8
+ outbound: [new workflow_1.OpenTelemetryOutboundInterceptor()],
9
+ internals: [new workflow_1.OpenTelemetryInternalsInterceptor()],
10
+ });
11
+ exports.interceptors = interceptors;
12
+ //# sourceMappingURL=workflow-interceptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-interceptors.js","sourceRoot":"","sources":["../src/workflow-interceptors.ts"],"names":[],"mappings":";AAAA,wCAAwC;;;AAGxC,yCAIoB;AAEb,MAAM,YAAY,GAAG,GAAyB,EAAE,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,IAAI,0CAA+B,EAAE,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,2CAAgC,EAAE,CAAC;IAClD,SAAS,EAAE,CAAC,IAAI,4CAAiC,EAAE,CAAC;CACrD,CAAC,CAAC;AAJU,QAAA,YAAY,gBAItB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temporalio/interceptors-opentelemetry",
3
- "version": "1.14.2-canary-release-testing.0",
3
+ "version": "1.16.0",
4
4
  "description": "Temporal.io SDK interceptors bundle for tracing with opentelemetry",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -16,18 +16,20 @@
16
16
  "@opentelemetry/api": "^1.9.0",
17
17
  "@opentelemetry/core": "^1.25.1",
18
18
  "@opentelemetry/resources": "^1.25.1",
19
- "@opentelemetry/sdk-trace-base": "^1.25.1"
19
+ "@opentelemetry/sdk-trace-base": "^1.25.1",
20
+ "@temporalio/plugin": "1.16.0"
20
21
  },
21
22
  "devDependencies": {
22
- "@temporalio/activity": "1.14.2-canary-release-testing.0",
23
- "@temporalio/common": "1.14.2-canary-release-testing.0",
24
- "@temporalio/workflow": "1.14.2-canary-release-testing.0",
25
- "@temporalio/client": "1.14.2-canary-release-testing.0",
26
- "@temporalio/worker": "1.14.2-canary-release-testing.0"
23
+ "nexus-rpc": "^0.0.2",
24
+ "@temporalio/activity": "1.16.0",
25
+ "@temporalio/client": "1.16.0",
26
+ "@temporalio/worker": "1.16.0",
27
+ "@temporalio/common": "1.16.0",
28
+ "@temporalio/workflow": "1.16.0"
27
29
  },
28
30
  "peerDependencies": {
29
- "@temporalio/common": "1.14.2-canary-release-testing.0",
30
- "@temporalio/workflow": "1.14.2-canary-release-testing.0"
31
+ "@temporalio/common": "1.16.0",
32
+ "@temporalio/workflow": "1.16.0"
31
33
  },
32
34
  "peerDependenciesMeta": {
33
35
  "@temporalio/workflow": {
@@ -47,7 +49,7 @@
47
49
  "access": "public"
48
50
  },
49
51
  "engines": {
50
- "node": ">= 18.0.0"
52
+ "node": ">= 20.0.0"
51
53
  },
52
54
  "files": [
53
55
  "src",
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@
8
8
  * @module
9
9
  */
10
10
 
11
+ export * from './plugin';
11
12
  export * from './workflow';
12
13
  export * from './worker';
13
14
  export {
@@ -43,6 +43,19 @@ export function extractContextFromHeaders(headers: Headers): otel.Context | unde
43
43
  return otel.propagation.extract(otel.context.active(), textMap, otel.defaultTextMapGetter);
44
44
  }
45
45
 
46
+ /**
47
+ * If found, return an otel Context deserialized from the provided Nexus headers.
48
+ *
49
+ * Nexus headers are plain `Record<string, string>`, so we extract the context
50
+ * directly from the string map.
51
+ */
52
+ export function extractContextFromNexusHeaders(headers: Record<string, string>): otel.Context | undefined {
53
+ if (Object.keys(headers).length === 0) {
54
+ return undefined;
55
+ }
56
+ return otel.propagation.extract(otel.context.active(), headers, otel.defaultTextMapGetter);
57
+ }
58
+
46
59
  /**
47
60
  * Given headers, return new headers with the current otel context inserted
48
61
  */
@@ -52,6 +65,15 @@ export function headersWithContext(headers: Headers): Headers {
52
65
  return { ...headers, [TRACE_HEADER]: payloadConverter.toPayload(carrier) };
53
66
  }
54
67
 
68
+ /**
69
+ * Given Nexus headers, return new headers with the current otel context injected directly
70
+ */
71
+ export function nexusHeadersWithContext(headers: Record<string, string>): Record<string, string> {
72
+ const carrier: Record<string, string> = {};
73
+ otel.propagation.inject(otel.context.active(), carrier, otel.defaultTextMapSetter);
74
+ return { ...headers, ...carrier };
75
+ }
76
+
55
77
  async function wrapWithSpan<T>(
56
78
  span: otel.Span,
57
79
  fn: (span: otel.Span) => Promise<T>,
@@ -90,7 +112,8 @@ function maybeAddErrorToSpan(err: any, span: otel.Span, acceptableErrors?: (err:
90
112
  const isBenignErr = err instanceof ApplicationFailure && err.category === ApplicationFailureCategory.BENIGN;
91
113
  if (acceptableErrors === undefined || !acceptableErrors(err)) {
92
114
  const statusCode = isBenignErr ? otel.SpanStatusCode.UNSET : otel.SpanStatusCode.ERROR;
93
- span.setStatus({ code: statusCode, message: (err as Error).message ?? String(err) });
115
+ const message = err != null && typeof err.message === 'string' ? err.message : String(err);
116
+ span.setStatus({ code: statusCode, message });
94
117
  span.recordException(err);
95
118
  } else {
96
119
  span.setStatus({ code: otel.SpanStatusCode.OK });
package/src/plugin.ts ADDED
@@ -0,0 +1,85 @@
1
+ import { SpanProcessor } from '@opentelemetry/sdk-trace-base';
2
+ import { Resource } from '@opentelemetry/resources';
3
+ import { SimplePlugin } from '@temporalio/plugin';
4
+ import { InjectedSinks, ReplayWorkerOptions, WorkerOptions } from '@temporalio/worker';
5
+ import { InterceptorOptions, OpenTelemetryWorkflowClientInterceptor } from './client';
6
+ import {
7
+ makeWorkflowExporter,
8
+ OpenTelemetryActivityInboundInterceptor,
9
+ OpenTelemetryActivityOutboundInterceptor,
10
+ OpenTelemetryNexusInboundInterceptor,
11
+ OpenTelemetryNexusOutboundInterceptor,
12
+ } from './worker';
13
+ import { OpenTelemetrySinks } from './workflow';
14
+
15
+ /**
16
+ * Configuration options for {@link OpenTelemetryPlugin}.
17
+ *
18
+ * @experimental Plugins is an experimental feature; APIs may change without notice.
19
+ */
20
+ export interface OpenTelemetryPluginOptions extends InterceptorOptions {
21
+ /** OpenTelemetry resource attributes to attach to exported spans */
22
+ readonly resource: Resource;
23
+ /** Exporter used to send spans to a tracing backend */
24
+ readonly spanProcessor: SpanProcessor;
25
+ }
26
+
27
+ /**
28
+ * A plugin that adds OpenTelemetry tracing.
29
+ *
30
+ * Configures Client, Activity, and Workflow interceptors for trace propagation and injects
31
+ * a span exporter sink for Workflow spans.
32
+ *
33
+ * @experimental Plugins is an experimental feature; APIs may change without notice.
34
+ */
35
+ export class OpenTelemetryPlugin extends SimplePlugin {
36
+ constructor(readonly otelOptions: OpenTelemetryPluginOptions) {
37
+ const workflowInterceptorsPath = require.resolve('./workflow-interceptors');
38
+ const interceptorOptions = otelOptions.tracer ? { tracer: otelOptions.tracer } : {};
39
+ super({
40
+ name: 'OpenTelemetryPlugin',
41
+ clientInterceptors: {
42
+ workflow: [new OpenTelemetryWorkflowClientInterceptor(interceptorOptions)],
43
+ },
44
+ workerInterceptors: {
45
+ client: {
46
+ workflow: [new OpenTelemetryWorkflowClientInterceptor(interceptorOptions)],
47
+ },
48
+ workflowModules: [workflowInterceptorsPath],
49
+ activity: [
50
+ (ctx) => ({
51
+ inbound: new OpenTelemetryActivityInboundInterceptor(ctx, interceptorOptions),
52
+ outbound: new OpenTelemetryActivityOutboundInterceptor(ctx),
53
+ }),
54
+ ],
55
+ nexus: [
56
+ (ctx) => ({
57
+ inbound: new OpenTelemetryNexusInboundInterceptor(ctx, interceptorOptions),
58
+ outbound: new OpenTelemetryNexusOutboundInterceptor(ctx),
59
+ }),
60
+ ],
61
+ },
62
+ });
63
+ }
64
+
65
+ configureWorker(options: WorkerOptions): WorkerOptions {
66
+ return super.configureWorker(this.injectSinks(options));
67
+ }
68
+
69
+ configureReplayWorker(options: ReplayWorkerOptions): ReplayWorkerOptions {
70
+ return super.configureReplayWorker(this.injectSinks(options));
71
+ }
72
+
73
+ private injectSinks<T extends { sinks?: InjectedSinks<any> }>(options: T): T {
74
+ const sinks: InjectedSinks<OpenTelemetrySinks> = {
75
+ exporter: makeWorkflowExporter(this.otelOptions.spanProcessor, this.otelOptions.resource),
76
+ };
77
+ return {
78
+ ...options,
79
+ sinks: {
80
+ ...options.sinks,
81
+ ...sinks,
82
+ },
83
+ };
84
+ }
85
+ }
@@ -1,11 +1,19 @@
1
1
  import * as otel from '@opentelemetry/api';
2
+ import { createTraceState } from '@opentelemetry/api';
2
3
  import type { Resource } from '@opentelemetry/resources';
3
- import type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
4
+ import type { ReadableSpan, SpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base';
5
+ import type * as nexus from 'nexus-rpc';
4
6
  import type { Context as ActivityContext } from '@temporalio/activity';
7
+ import { CompleteAsyncError } from '@temporalio/common';
5
8
  import type {
6
9
  Next,
7
10
  ActivityInboundCallsInterceptor,
8
11
  ActivityOutboundCallsInterceptor,
12
+ NexusInboundCallsInterceptor,
13
+ NexusOutboundCallsInterceptor,
14
+ NexusStartOperationInput,
15
+ NexusStartOperationOutput,
16
+ NexusCancelOperationInput,
9
17
  InjectedSink,
10
18
  GetLogAttributesInput,
11
19
  GetMetricTagsInput,
@@ -14,9 +22,12 @@ import type {
14
22
  import {
15
23
  instrument,
16
24
  extractContextFromHeaders,
25
+ extractContextFromNexusHeaders,
17
26
  WORKFLOW_ID_ATTR_KEY,
18
27
  RUN_ID_ATTR_KEY,
19
28
  ACTIVITY_ID_ATTR_KEY,
29
+ NEXUS_SERVICE_ATTR_KEY,
30
+ NEXUS_OPERATION_ATTR_KEY,
20
31
  } from '../instrumentation';
21
32
  import {
22
33
  type OpenTelemetryWorkflowExporter,
@@ -58,6 +69,7 @@ export class OpenTelemetryActivityInboundInterceptor implements ActivityInboundC
58
69
  return next(input);
59
70
  },
60
71
  context,
72
+ acceptableErrors: (err) => err instanceof CompleteAsyncError,
61
73
  });
62
74
  }
63
75
  }
@@ -107,13 +119,128 @@ export class OpenTelemetryActivityOutboundInterceptor implements ActivityOutboun
107
119
  }
108
120
  }
109
121
 
122
+ /**
123
+ * Intercepts inbound Nexus Operation calls on the worker.
124
+ *
125
+ * Wraps `startOperation` and `cancelOperation` in opentelemetry Spans, linking to a parent Span context
126
+ * if one is provided in the Nexus request headers.
127
+ */
128
+ export class OpenTelemetryNexusInboundInterceptor implements NexusInboundCallsInterceptor {
129
+ protected readonly tracer: otel.Tracer;
130
+
131
+ constructor(
132
+ protected readonly ctx: nexus.OperationContext,
133
+ options?: InterceptorOptions
134
+ ) {
135
+ this.tracer = options?.tracer ?? otel.trace.getTracer('@temporalio/interceptor-nexus');
136
+ }
137
+
138
+ async startOperation(
139
+ input: NexusStartOperationInput,
140
+ next: Next<NexusInboundCallsInterceptor, 'startOperation'>
141
+ ): Promise<NexusStartOperationOutput> {
142
+ const context = extractContextFromNexusHeaders(input.ctx.headers);
143
+ const spanName = `${SpanName.NEXUS_START_OPERATION_EXECUTE}${SPAN_DELIMITER}${input.ctx.service}/${input.ctx.operation}`;
144
+ return await instrument({
145
+ tracer: this.tracer,
146
+ spanName,
147
+ fn: (span) => {
148
+ span.setAttribute(NEXUS_SERVICE_ATTR_KEY, input.ctx.service);
149
+ span.setAttribute(NEXUS_OPERATION_ATTR_KEY, input.ctx.operation);
150
+ return next(input);
151
+ },
152
+ context,
153
+ });
154
+ }
155
+
156
+ async cancelOperation(
157
+ input: NexusCancelOperationInput,
158
+ next: Next<NexusInboundCallsInterceptor, 'cancelOperation'>
159
+ ): Promise<void> {
160
+ const context = extractContextFromNexusHeaders(input.ctx.headers);
161
+ const spanName = `${SpanName.NEXUS_CANCEL_OPERATION_EXECUTE}${SPAN_DELIMITER}${input.ctx.service}/${input.ctx.operation}`;
162
+ return await instrument({
163
+ tracer: this.tracer,
164
+ spanName,
165
+ fn: (span) => {
166
+ span.setAttribute(NEXUS_SERVICE_ATTR_KEY, input.ctx.service);
167
+ span.setAttribute(NEXUS_OPERATION_ATTR_KEY, input.ctx.operation);
168
+ return next(input);
169
+ },
170
+ context,
171
+ });
172
+ }
173
+ }
174
+
175
+ /**
176
+ * Intercepts outbound calls from a Nexus Operation handler.
177
+ *
178
+ * Attaches OpenTelemetry context tracing attributes to emitted log messages and metrics.
179
+ */
180
+ export class OpenTelemetryNexusOutboundInterceptor implements NexusOutboundCallsInterceptor {
181
+ constructor(protected readonly ctx: nexus.OperationContext) {}
182
+
183
+ public getLogAttributes(
184
+ input: GetLogAttributesInput,
185
+ next: Next<NexusOutboundCallsInterceptor, 'getLogAttributes'>
186
+ ): Record<string, unknown> {
187
+ const span = otel.trace.getSpan(otel.context.active());
188
+ const spanContext = span?.spanContext();
189
+ if (spanContext && otel.isSpanContextValid(spanContext)) {
190
+ return next({
191
+ trace_id: spanContext.traceId,
192
+ span_id: spanContext.spanId,
193
+ trace_flags: `0${spanContext.traceFlags.toString(16)}`,
194
+ ...input,
195
+ });
196
+ } else {
197
+ return next(input);
198
+ }
199
+ }
200
+
201
+ public getMetricTags(
202
+ input: GetMetricTagsInput,
203
+ next: Next<NexusOutboundCallsInterceptor, 'getMetricTags'>
204
+ ): GetMetricTagsInput {
205
+ const span = otel.trace.getSpan(otel.context.active());
206
+ const spanContext = span?.spanContext();
207
+ if (spanContext && otel.isSpanContextValid(spanContext)) {
208
+ return next({
209
+ trace_id: spanContext.traceId,
210
+ span_id: spanContext.spanId,
211
+ trace_flags: `0${spanContext.traceFlags.toString(16)}`,
212
+ ...input,
213
+ });
214
+ } else {
215
+ return next(input);
216
+ }
217
+ }
218
+ }
219
+
110
220
  /**
111
221
  * Takes an opentelemetry SpanExporter and turns it into an injected Workflow span exporter sink
222
+ *
223
+ * @deprecated Do not directly pass a `SpanExporter`. Pass a `SpanProcessor` instead to ensure proper handling of async attributes.
224
+ */
225
+ export function makeWorkflowExporter(
226
+ spanExporter: SpanExporter,
227
+ resource: Resource
228
+ ): InjectedSink<OpenTelemetryWorkflowExporter>;
229
+ /**
230
+ * Takes an opentelemetry SpanProcessor and turns it into an injected Workflow span exporter sink.
231
+ *
232
+ * For backward compatibility, passing a `SpanExporter` directly is still supported.
112
233
  */
113
234
  export function makeWorkflowExporter(
114
- exporter: SpanExporter,
235
+ spanProcessor: SpanProcessor,
236
+ resource: Resource
237
+ ): InjectedSink<OpenTelemetryWorkflowExporter>;
238
+ export function makeWorkflowExporter(
239
+ processorOrExporter: SpanProcessor | SpanExporter,
115
240
  resource: Resource
116
241
  ): InjectedSink<OpenTelemetryWorkflowExporter> {
242
+ const givenSpanProcessor = isSpanProcessor(processorOrExporter);
243
+
117
244
  return {
118
245
  export: {
119
246
  fn: (info, spanData) => {
@@ -122,18 +249,35 @@ export function makeWorkflowExporter(
122
249
  // Spans are copied over from the isolate and are converted to ReadableSpan instances
123
250
  return extractReadableSpan(serialized, resource);
124
251
  });
125
- // Ignore the export result for simplicity
126
- exporter.export(spans, () => undefined);
252
+
253
+ if (givenSpanProcessor) {
254
+ spans.forEach((span) => processorOrExporter.onEnd(span));
255
+ } else {
256
+ // Ignore the export result for simplicity
257
+ processorOrExporter.export(spans, () => undefined);
258
+ }
127
259
  },
128
260
  },
129
261
  };
130
262
  }
131
263
 
264
+ function isSpanProcessor(obj: SpanProcessor | SpanExporter): obj is SpanProcessor {
265
+ return 'onEnd' in obj && typeof obj.onEnd === 'function';
266
+ }
267
+
132
268
  /**
133
269
  * Deserialize a serialized span created by the Workflow isolate
134
270
  */
135
271
  function extractReadableSpan(serializable: SerializableSpan, resource: Resource): ReadableSpan {
136
- const { spanContext, ...rest } = serializable;
272
+ const {
273
+ spanContext: { traceState, ...restSpanContext },
274
+ ...rest
275
+ } = serializable;
276
+ const spanContext: otel.SpanContext = {
277
+ // Reconstruct the TraceState from the serialized string.
278
+ traceState: traceState ? createTraceState(traceState) : undefined,
279
+ ...restSpanContext,
280
+ };
137
281
  return {
138
282
  spanContext() {
139
283
  return spanContext;
@@ -28,7 +28,7 @@ export class ContextManager implements otel.ContextManager {
28
28
  * It isn't possible to tell Typescript that contextWrapper is the same as T
29
29
  * so we forced to cast as any here.
30
30
  */
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+
32
32
  return contextWrapper as any;
33
33
  }
34
34
 
@@ -1,15 +1,20 @@
1
1
  import * as otel from '@opentelemetry/api';
2
2
  import * as tracing from '@opentelemetry/sdk-trace-base';
3
- import { InstrumentationLibrary } from '@opentelemetry/core'; // eslint-disable deprecation/deprecation
3
+ import { InstrumentationLibrary } from '@opentelemetry/core'; // eslint-disable @typescript-eslint/no-deprecated
4
4
  import type { Sink, Sinks } from '@temporalio/workflow';
5
5
 
6
+ /**
7
+ * Serializable version of SpanContext where traceState is converted to a string.
8
+ */
9
+ export type SerializableSpanContext = Omit<otel.SpanContext, 'traceState'> & { traceState?: string };
10
+
6
11
  /**
7
12
  * Serializable version of the opentelemetry Span for cross isolate copying
8
13
  */
9
14
  export interface SerializableSpan {
10
15
  readonly name: string;
11
16
  readonly kind: otel.SpanKind;
12
- readonly spanContext: otel.SpanContext;
17
+ readonly spanContext: SerializableSpanContext;
13
18
  readonly parentSpanId?: string;
14
19
  readonly startTime: otel.HrTime;
15
20
  readonly endTime: otel.HrTime;
@@ -23,7 +28,7 @@ export interface SerializableSpan {
23
28
  readonly droppedLinksCount: number;
24
29
  readonly droppedEventsCount: number;
25
30
  // readonly resource: Resource;
26
- // eslint-disable-next-line deprecation/deprecation
31
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
27
32
  readonly instrumentationLibrary: InstrumentationLibrary;
28
33
  }
29
34
 
@@ -128,6 +133,14 @@ export enum SpanName {
128
133
  * Nexus operation is started
129
134
  */
130
135
  NEXUS_OPERATION_START = 'StartNexusOperation',
136
+ /**
137
+ * Nexus operation is executing
138
+ */
139
+ NEXUS_START_OPERATION_EXECUTE = 'RunStartNexusOperation',
140
+ /**
141
+ * Nexus operation cancel is executing
142
+ */
143
+ NEXUS_CANCEL_OPERATION_EXECUTE = 'RunCancelNexusOperation',
131
144
  }
132
145
 
133
146
  export const SPAN_DELIMITER = ':';
@@ -1,4 +1,3 @@
1
- /* eslint-disable import/order */
2
1
  // eslint-disable-next-line import/no-unassigned-import
3
2
  import './runtime'; // Patch the Workflow isolate runtime for opentelemetry
4
3
  import * as otel from '@opentelemetry/api';
@@ -28,6 +27,7 @@ import {
28
27
  instrumentSync,
29
28
  extractContextFromHeaders,
30
29
  headersWithContext,
30
+ nexusHeadersWithContext,
31
31
  UPDATE_ID_ATTR_KEY,
32
32
  NEXUS_SERVICE_ATTR_KEY,
33
33
  NEXUS_OPERATION_ATTR_KEY,
@@ -211,12 +211,13 @@ export class OpenTelemetryOutboundInterceptor implements WorkflowOutboundCallsIn
211
211
 
212
212
  return await instrument({
213
213
  tracer: this.tracer,
214
- spanName: `${SpanName.NEXUS_OPERATION_START}${SPAN_DELIMITER}${input.service}${SPAN_DELIMITER}${input.operation}`,
214
+ spanName: `${SpanName.NEXUS_OPERATION_START}${SPAN_DELIMITER}${input.service}/${input.operation}`,
215
215
  fn: async (span) => {
216
216
  span.setAttribute(NEXUS_SERVICE_ATTR_KEY, input.service);
217
217
  span.setAttribute(NEXUS_OPERATION_ATTR_KEY, input.operation);
218
218
  span.setAttribute(NEXUS_ENDPOINT_ATTR_KEY, input.endpoint);
219
- return await next(input);
219
+ const headers = nexusHeadersWithContext(input.headers);
220
+ return await next({ ...input, headers });
220
221
  },
221
222
  });
222
223
  }
@@ -1,6 +1,6 @@
1
1
  import * as tracing from '@opentelemetry/sdk-trace-base';
2
2
  import { ExportResult, ExportResultCode } from '@opentelemetry/core';
3
- import { OpenTelemetrySinks, SerializableSpan } from './definitions';
3
+ import { OpenTelemetrySinks, SerializableSpan, SerializableSpanContext } from './definitions';
4
4
  import { proxySinks } from './workflow-imports';
5
5
 
6
6
  export class SpanExporter implements tracing.SpanExporter {
@@ -19,10 +19,18 @@ export class SpanExporter implements tracing.SpanExporter {
19
19
  }
20
20
 
21
21
  public makeSerializable(span: tracing.ReadableSpan): SerializableSpan {
22
+ const { traceState, ...restSpanContext } = span.spanContext();
23
+ // Serialize traceState to a string because TraceState objects lose their
24
+ // prototype methods when crossing the V8 isolate boundary.
25
+ // See: https://github.com/temporalio/sdk-typescript/issues/1738
26
+ const serializableSpanContext: SerializableSpanContext = {
27
+ traceState: traceState?.serialize(),
28
+ ...restSpanContext,
29
+ };
22
30
  return {
23
31
  name: span.name,
24
32
  kind: span.kind,
25
- spanContext: span.spanContext(),
33
+ spanContext: serializableSpanContext,
26
34
  parentSpanId: span.parentSpanId,
27
35
  startTime: span.startTime,
28
36
  endTime: span.endTime,
@@ -0,0 +1,14 @@
1
+ /** Not a workflow, just interceptors */
2
+
3
+ import type { WorkflowInterceptors } from '@temporalio/workflow';
4
+ import {
5
+ OpenTelemetryInboundInterceptor,
6
+ OpenTelemetryOutboundInterceptor,
7
+ OpenTelemetryInternalsInterceptor,
8
+ } from './workflow';
9
+
10
+ export const interceptors = (): WorkflowInterceptors => ({
11
+ inbound: [new OpenTelemetryInboundInterceptor()],
12
+ outbound: [new OpenTelemetryOutboundInterceptor()],
13
+ internals: [new OpenTelemetryInternalsInterceptor()],
14
+ });