@microsoft/agents-a365-observability 0.1.0-preview.95 → 0.2.0-preview.1
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/dist/cjs/ObservabilityBuilder.d.ts +24 -1
- package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -1
- package/dist/cjs/ObservabilityBuilder.js +39 -12
- package/dist/cjs/ObservabilityBuilder.js.map +1 -1
- package/dist/cjs/ObservabilityManager.d.ts.map +1 -1
- package/dist/cjs/ObservabilityManager.js +3 -0
- package/dist/cjs/ObservabilityManager.js.map +1 -1
- package/dist/cjs/configuration/ObservabilityConfiguration.d.ts +19 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.d.ts.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.js +60 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.js.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts +58 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.js +5 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.js.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts +22 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js +73 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +71 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js +5 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
- package/dist/cjs/configuration/index.d.ts +16 -0
- package/dist/cjs/configuration/index.d.ts.map +1 -0
- package/dist/cjs/configuration/index.js +35 -0
- package/dist/cjs/configuration/index.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +45 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/PerRequestProcessorInternalOverrides.d.ts +4 -0
- package/dist/cjs/internal/PerRequestProcessorInternalOverrides.d.ts.map +1 -0
- package/dist/cjs/internal/PerRequestProcessorInternalOverrides.js +15 -0
- package/dist/cjs/internal/PerRequestProcessorInternalOverrides.js.map +1 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts +10 -3
- package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts.map +1 -1
- package/dist/cjs/tracing/PerRequestSpanProcessor.js +14 -23
- package/dist/cjs/tracing/PerRequestSpanProcessor.js.map +1 -1
- package/dist/cjs/tracing/constants.d.ts +35 -35
- package/dist/cjs/tracing/constants.d.ts.map +1 -1
- package/dist/cjs/tracing/constants.js +42 -40
- package/dist/cjs/tracing/constants.js.map +1 -1
- package/dist/cjs/tracing/context/parent-span-context.d.ts +11 -2
- package/dist/cjs/tracing/context/parent-span-context.d.ts.map +1 -1
- package/dist/cjs/tracing/context/parent-span-context.js +10 -5
- package/dist/cjs/tracing/context/parent-span-context.js.map +1 -1
- package/dist/cjs/tracing/context/token-context.d.ts +14 -0
- package/dist/cjs/tracing/context/token-context.d.ts.map +1 -1
- package/dist/cjs/tracing/context/token-context.js +35 -2
- package/dist/cjs/tracing/context/token-context.js.map +1 -1
- package/dist/cjs/tracing/context/trace-context-propagation.d.ts +68 -0
- package/dist/cjs/tracing/context/trace-context-propagation.d.ts.map +1 -0
- package/dist/cjs/tracing/context/trace-context-propagation.js +85 -0
- package/dist/cjs/tracing/context/trace-context-propagation.js.map +1 -0
- package/dist/cjs/tracing/contracts.d.ts +229 -62
- package/dist/cjs/tracing/contracts.d.ts.map +1 -1
- package/dist/cjs/tracing/contracts.js +39 -18
- package/dist/cjs/tracing/contracts.js.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +9 -4
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365Exporter.js +53 -46
- package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts +8 -5
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js +11 -7
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js.map +1 -1
- package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts +20 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.js +26 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.js.map +1 -0
- package/dist/cjs/tracing/exporter/utils.d.ts +24 -11
- package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -1
- package/dist/cjs/tracing/exporter/utils.js +354 -33
- package/dist/cjs/tracing/exporter/utils.js.map +1 -1
- package/dist/cjs/tracing/message-utils.d.ts +36 -0
- package/dist/cjs/tracing/message-utils.d.ts.map +1 -0
- package/dist/cjs/tracing/message-utils.js +90 -0
- package/dist/cjs/tracing/message-utils.js.map +1 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +32 -44
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -1
- package/dist/cjs/tracing/middleware/BaggageBuilder.js +49 -62
- package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -1
- package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -1
- package/dist/cjs/tracing/processors/SpanProcessor.js +12 -3
- package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -1
- package/dist/cjs/tracing/processors/util.d.ts.map +1 -1
- package/dist/cjs/tracing/processors/util.js +16 -22
- package/dist/cjs/tracing/processors/util.js.map +1 -1
- package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +10 -11
- package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -1
- package/dist/cjs/tracing/scopes/ExecuteToolScope.js +26 -20
- package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -1
- package/dist/cjs/tracing/scopes/InferenceScope.d.ts +20 -24
- package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -1
- package/dist/cjs/tracing/scopes/InferenceScope.js +53 -48
- package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -1
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +17 -12
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -1
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js +55 -54
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -1
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +43 -12
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -1
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +114 -30
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -1
- package/dist/cjs/tracing/scopes/OutputScope.d.ts +33 -0
- package/dist/cjs/tracing/scopes/OutputScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/OutputScope.js +80 -0
- package/dist/cjs/tracing/scopes/OutputScope.js.map +1 -0
- package/dist/cjs/tracing/util.d.ts +14 -1
- package/dist/cjs/tracing/util.d.ts.map +1 -1
- package/dist/cjs/tracing/util.js +38 -7
- package/dist/cjs/tracing/util.js.map +1 -1
- package/dist/cjs/utils/logging.d.ts +45 -2
- package/dist/cjs/utils/logging.d.ts.map +1 -1
- package/dist/cjs/utils/logging.js +53 -79
- package/dist/cjs/utils/logging.js.map +1 -1
- package/dist/cjs/version.d.ts +2 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/ObservabilityBuilder.d.ts +24 -1
- package/dist/esm/ObservabilityBuilder.d.ts.map +1 -1
- package/dist/esm/ObservabilityBuilder.js +41 -14
- package/dist/esm/ObservabilityBuilder.js.map +1 -1
- package/dist/esm/ObservabilityManager.d.ts.map +1 -1
- package/dist/esm/ObservabilityManager.js +3 -0
- package/dist/esm/ObservabilityManager.js.map +1 -1
- package/dist/esm/configuration/ObservabilityConfiguration.d.ts +19 -0
- package/dist/esm/configuration/ObservabilityConfiguration.d.ts.map +1 -0
- package/dist/esm/configuration/ObservabilityConfiguration.js +56 -0
- package/dist/esm/configuration/ObservabilityConfiguration.js.map +1 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts +58 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.js +4 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.js.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts +22 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js +69 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +71 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js +4 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
- package/dist/esm/configuration/index.d.ts +16 -0
- package/dist/esm/configuration/index.d.ts.map +1 -0
- package/dist/esm/configuration/index.js +18 -0
- package/dist/esm/configuration/index.js.map +1 -0
- package/dist/esm/index.d.ts +11 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +17 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/PerRequestProcessorInternalOverrides.d.ts +4 -0
- package/dist/esm/internal/PerRequestProcessorInternalOverrides.d.ts.map +1 -0
- package/dist/esm/internal/PerRequestProcessorInternalOverrides.js +11 -0
- package/dist/esm/internal/PerRequestProcessorInternalOverrides.js.map +1 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.d.ts +10 -3
- package/dist/esm/tracing/PerRequestSpanProcessor.d.ts.map +1 -1
- package/dist/esm/tracing/PerRequestSpanProcessor.js +14 -23
- package/dist/esm/tracing/PerRequestSpanProcessor.js.map +1 -1
- package/dist/esm/tracing/constants.d.ts +35 -35
- package/dist/esm/tracing/constants.d.ts.map +1 -1
- package/dist/esm/tracing/constants.js +42 -40
- package/dist/esm/tracing/constants.js.map +1 -1
- package/dist/esm/tracing/context/parent-span-context.d.ts +11 -2
- package/dist/esm/tracing/context/parent-span-context.d.ts.map +1 -1
- package/dist/esm/tracing/context/parent-span-context.js +10 -5
- package/dist/esm/tracing/context/parent-span-context.js.map +1 -1
- package/dist/esm/tracing/context/token-context.d.ts +14 -0
- package/dist/esm/tracing/context/token-context.d.ts.map +1 -1
- package/dist/esm/tracing/context/token-context.js +34 -2
- package/dist/esm/tracing/context/token-context.js.map +1 -1
- package/dist/esm/tracing/context/trace-context-propagation.d.ts +68 -0
- package/dist/esm/tracing/context/trace-context-propagation.d.ts.map +1 -0
- package/dist/esm/tracing/context/trace-context-propagation.js +79 -0
- package/dist/esm/tracing/context/trace-context-propagation.js.map +1 -0
- package/dist/esm/tracing/contracts.d.ts +229 -62
- package/dist/esm/tracing/contracts.d.ts.map +1 -1
- package/dist/esm/tracing/contracts.js +38 -17
- package/dist/esm/tracing/contracts.js.map +1 -1
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +9 -4
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/Agent365Exporter.js +54 -47
- package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -1
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts +8 -5
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.js +11 -7
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.js.map +1 -1
- package/dist/esm/tracing/exporter/ExporterEventNames.d.ts +20 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.js +23 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.js.map +1 -0
- package/dist/esm/tracing/exporter/utils.d.ts +24 -11
- package/dist/esm/tracing/exporter/utils.d.ts.map +1 -1
- package/dist/esm/tracing/exporter/utils.js +352 -32
- package/dist/esm/tracing/exporter/utils.js.map +1 -1
- package/dist/esm/tracing/message-utils.d.ts +36 -0
- package/dist/esm/tracing/message-utils.d.ts.map +1 -0
- package/dist/esm/tracing/message-utils.js +82 -0
- package/dist/esm/tracing/message-utils.js.map +1 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +32 -44
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -1
- package/dist/esm/tracing/middleware/BaggageBuilder.js +49 -62
- package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -1
- package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -1
- package/dist/esm/tracing/processors/SpanProcessor.js +12 -3
- package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -1
- package/dist/esm/tracing/processors/util.d.ts.map +1 -1
- package/dist/esm/tracing/processors/util.js +16 -22
- package/dist/esm/tracing/processors/util.js.map +1 -1
- package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +10 -11
- package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -1
- package/dist/esm/tracing/scopes/ExecuteToolScope.js +26 -20
- package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -1
- package/dist/esm/tracing/scopes/InferenceScope.d.ts +20 -24
- package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -1
- package/dist/esm/tracing/scopes/InferenceScope.js +53 -48
- package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -1
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +17 -12
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -1
- package/dist/esm/tracing/scopes/InvokeAgentScope.js +55 -54
- package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -1
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +43 -12
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -1
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js +115 -31
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -1
- package/dist/esm/tracing/scopes/OutputScope.d.ts +33 -0
- package/dist/esm/tracing/scopes/OutputScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/OutputScope.js +76 -0
- package/dist/esm/tracing/scopes/OutputScope.js.map +1 -0
- package/dist/esm/tracing/util.d.ts +14 -1
- package/dist/esm/tracing/util.d.ts.map +1 -1
- package/dist/esm/tracing/util.js +37 -7
- package/dist/esm/tracing/util.js.map +1 -1
- package/dist/esm/utils/logging.d.ts +45 -2
- package/dist/esm/utils/logging.d.ts.map +1 -1
- package/dist/esm/utils/logging.js +52 -79
- package/dist/esm/utils/logging.js.map +1 -1
- package/dist/esm/version.d.ts +2 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +9 -9
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AgentDetails,
|
|
3
|
-
import { ParentSpanRef } from '../context/parent-span-context';
|
|
1
|
+
import { Span, AttributeValue, SpanContext, TimeInput } from '@opentelemetry/api';
|
|
2
|
+
import { AgentDetails, UserDetails, SpanDetails, InputMessagesParam, OutputMessagesParam } from '../contracts';
|
|
4
3
|
/**
|
|
5
4
|
* Base class for OpenTelemetry tracing scopes
|
|
6
5
|
*/
|
|
7
6
|
export declare abstract class OpenTelemetryScope implements Disposable {
|
|
8
7
|
private static readonly tracer;
|
|
9
8
|
protected readonly span: Span;
|
|
10
|
-
private readonly
|
|
9
|
+
private readonly wallClockStartMs;
|
|
10
|
+
private customStartTime?;
|
|
11
|
+
private customEndTime?;
|
|
11
12
|
private errorType?;
|
|
12
|
-
private exception?;
|
|
13
13
|
private hasEnded;
|
|
14
14
|
/**
|
|
15
15
|
* Initializes a new instance of the OpenTelemetryScope class
|
|
16
|
-
* @param kind The kind of span (CLIENT, SERVER, INTERNAL, etc.)
|
|
17
16
|
* @param operationName The name of the operation being traced
|
|
18
17
|
* @param spanName The name of the span for display purposes
|
|
19
|
-
* @param agentDetails Optional agent details
|
|
20
|
-
* @param
|
|
21
|
-
*
|
|
18
|
+
* @param agentDetails Optional agent details. Tenant ID is read from `agentDetails.tenantId`.
|
|
19
|
+
* @param spanDetails Optional span configuration including parent context, start/end times,
|
|
20
|
+
* span kind, and span links. Subclasses may override `spanDetails.spanKind` before
|
|
21
|
+
* calling this constructor; defaults to `SpanKind.CLIENT`.
|
|
22
|
+
* @param userDetails Optional human caller identity details (id, upn, name, client ip).
|
|
22
23
|
*/
|
|
23
|
-
protected constructor(
|
|
24
|
+
protected constructor(operationName: string, spanName: string, agentDetails?: AgentDetails, spanDetails?: SpanDetails, userDetails?: UserDetails);
|
|
24
25
|
/**
|
|
25
26
|
* Makes this span active for the duration of the async callback execution
|
|
26
27
|
*/
|
|
@@ -42,17 +43,47 @@ export declare abstract class OpenTelemetryScope implements Disposable {
|
|
|
42
43
|
*/
|
|
43
44
|
recordAttributes(attributes: Iterable<[string, AttributeValue]> | Record<string, AttributeValue> | null | undefined): void;
|
|
44
45
|
/**
|
|
45
|
-
*
|
|
46
|
+
* Records the input messages for telemetry tracking.
|
|
47
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL ChatMessage), or a versioned InputMessages wrapper.
|
|
48
|
+
* @param messages A string, array of strings, or an InputMessages wrapper
|
|
49
|
+
*/
|
|
50
|
+
protected recordInputMessages(messages: InputMessagesParam): void;
|
|
51
|
+
/**
|
|
52
|
+
* Records the output messages for telemetry tracking.
|
|
53
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage), or a versioned OutputMessages wrapper.
|
|
54
|
+
* @param messages A string, array of strings, or an OutputMessages wrapper
|
|
55
|
+
*/
|
|
56
|
+
protected recordOutputMessages(messages: OutputMessagesParam): void;
|
|
57
|
+
/**
|
|
58
|
+
* Sets a tag on the span if the value is not null or undefined.
|
|
46
59
|
* @param name The tag name
|
|
47
60
|
* @param value The tag value
|
|
48
61
|
*/
|
|
49
|
-
protected setTagMaybe<T extends string | number | boolean>(name: string, value: T | null | undefined): void;
|
|
62
|
+
protected setTagMaybe<T extends string | number | boolean | string[] | number[]>(name: string, value: T | null | undefined): void;
|
|
50
63
|
/**
|
|
51
64
|
* Add baggage to the current context
|
|
52
65
|
* @param key The baggage key
|
|
53
66
|
* @param value The baggage value
|
|
54
67
|
*/
|
|
55
68
|
protected addBaggage(key: string, value: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Converts a `TimeInput` value to milliseconds since epoch.
|
|
71
|
+
* OTel's `TimeInput` can be a `number` (ms epoch), a `Date`, or an `HrTime` tuple `[seconds, nanoseconds]`.
|
|
72
|
+
*/
|
|
73
|
+
private static timeInputToMs;
|
|
74
|
+
/**
|
|
75
|
+
* Sets a custom end time for the scope.
|
|
76
|
+
* When set, {@link dispose} will pass this value to `span.end()` instead of using the current wall-clock time.
|
|
77
|
+
* This is useful when the actual end time of the operation is known before the scope is disposed.
|
|
78
|
+
* @param endTime The end time as milliseconds since epoch, a Date, or an HrTime tuple.
|
|
79
|
+
*/
|
|
80
|
+
setEndTime(endTime: TimeInput): void;
|
|
81
|
+
/**
|
|
82
|
+
* Records a cancellation event on the span.
|
|
83
|
+
* Sets the span status to ERROR with the cancellation reason and marks the error type as 'TaskCanceledException'.
|
|
84
|
+
* @param reason Optional cancellation reason. Defaults to 'Task was cancelled'.
|
|
85
|
+
*/
|
|
86
|
+
recordCancellation(reason?: string): void;
|
|
56
87
|
/**
|
|
57
88
|
* Finalizes the scope and records metrics
|
|
58
89
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenTelemetryScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OpenTelemetryScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,IAAI,EAA2B,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5H,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAM/G;;GAEG;AACH,8BAAsB,kBAAmB,YAAW,UAAU;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAuD;IAErF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,eAAe,CAAC,CAAY;IACpC,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;;OASG;IACH,SAAS,aACP,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW;IAkE3B;;OAEG;IACI,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKrE;;;;OAIG;IACI,cAAc,IAAI,WAAW;IAIpC;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAiBtC;;;OAGG;IACI,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IA2BjI;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAKjE;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAKnE;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAMjI;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B;;;;;OAKG;IACI,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAI3C;;;;OAIG;IACI,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAUhD;;OAEG;IACH,OAAO,CAAC,GAAG;IAuBX;;OAEG;IACI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAW/B;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
import { trace, SpanStatusCode, context } from '@opentelemetry/api';
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { trace, SpanKind, SpanStatusCode, context } from '@opentelemetry/api';
|
|
5
4
|
import { OpenTelemetryConstants } from '../constants';
|
|
6
5
|
import { createContextWithParentSpanRef } from '../context/parent-span-context';
|
|
6
|
+
import { isParentSpanRef } from '../context/trace-context-propagation';
|
|
7
|
+
import { normalizeInputMessages, normalizeOutputMessages, serializeMessages } from '../message-utils';
|
|
7
8
|
import logger from '../../utils/logging';
|
|
8
9
|
/**
|
|
9
10
|
* Base class for OpenTelemetry tracing scopes
|
|
@@ -11,48 +12,70 @@ import logger from '../../utils/logging';
|
|
|
11
12
|
export class OpenTelemetryScope {
|
|
12
13
|
/**
|
|
13
14
|
* Initializes a new instance of the OpenTelemetryScope class
|
|
14
|
-
* @param kind The kind of span (CLIENT, SERVER, INTERNAL, etc.)
|
|
15
15
|
* @param operationName The name of the operation being traced
|
|
16
16
|
* @param spanName The name of the span for display purposes
|
|
17
|
-
* @param agentDetails Optional agent details
|
|
18
|
-
* @param
|
|
19
|
-
*
|
|
17
|
+
* @param agentDetails Optional agent details. Tenant ID is read from `agentDetails.tenantId`.
|
|
18
|
+
* @param spanDetails Optional span configuration including parent context, start/end times,
|
|
19
|
+
* span kind, and span links. Subclasses may override `spanDetails.spanKind` before
|
|
20
|
+
* calling this constructor; defaults to `SpanKind.CLIENT`.
|
|
21
|
+
* @param userDetails Optional human caller identity details (id, upn, name, client ip).
|
|
20
22
|
*/
|
|
21
|
-
constructor(
|
|
23
|
+
constructor(operationName, spanName, agentDetails, spanDetails, userDetails) {
|
|
22
24
|
this.hasEnded = false;
|
|
25
|
+
const parentContext = spanDetails?.parentContext;
|
|
26
|
+
const startTime = spanDetails?.startTime;
|
|
27
|
+
const endTime = spanDetails?.endTime;
|
|
28
|
+
const spanLinks = spanDetails?.spanLinks;
|
|
29
|
+
const kind = spanDetails?.spanKind ?? SpanKind.CLIENT;
|
|
23
30
|
// Determine the context to use for span creation
|
|
24
31
|
let currentContext = context.active();
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
if (parentContext) {
|
|
33
|
+
if (isParentSpanRef(parentContext)) {
|
|
34
|
+
// Existing ParentSpanRef path (backward compatible)
|
|
35
|
+
currentContext = createContextWithParentSpanRef(currentContext, parentContext);
|
|
36
|
+
logger.info(`[A365Observability] Using explicit parent span: traceId=${parentContext.traceId}, spanId=${parentContext.spanId}`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// OTel Context path (from extractContextFromHeaders or propagation.extract)
|
|
40
|
+
currentContext = parentContext;
|
|
41
|
+
}
|
|
28
42
|
}
|
|
29
|
-
logger.info(`[A365Observability] Starting span: ${spanName}, operation: ${operationName} for tenantId: ${
|
|
43
|
+
logger.info(`[A365Observability] Starting span: ${spanName}, operation: ${operationName} for tenantId: ${agentDetails?.tenantId || 'unknown'}, agentId: ${agentDetails?.agentId || 'unknown'}`);
|
|
30
44
|
// Start span with current context to establish parent-child relationship
|
|
31
45
|
this.span = OpenTelemetryScope.tracer.startSpan(spanName, {
|
|
32
46
|
kind,
|
|
47
|
+
startTime,
|
|
48
|
+
links: spanLinks,
|
|
33
49
|
attributes: {
|
|
34
|
-
[OpenTelemetryConstants.GEN_AI_SYSTEM_KEY]: OpenTelemetryConstants.GEN_AI_SYSTEM_VALUE,
|
|
35
50
|
[OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY]: operationName,
|
|
36
51
|
},
|
|
37
52
|
}, currentContext);
|
|
38
53
|
logger.info(`[A365Observability] Span[${this.span.spanContext().spanId}] ${spanName}, operation: ${operationName} started successfully`);
|
|
39
|
-
this.
|
|
54
|
+
this.wallClockStartMs = Date.now();
|
|
55
|
+
if (startTime !== undefined) {
|
|
56
|
+
this.customStartTime = startTime;
|
|
57
|
+
}
|
|
58
|
+
this.customEndTime = endTime;
|
|
40
59
|
// Set agent details if provided
|
|
41
60
|
if (agentDetails) {
|
|
42
61
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY, agentDetails.agentId);
|
|
43
62
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY, agentDetails.agentName);
|
|
44
|
-
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_TYPE_KEY, agentDetails.agentType);
|
|
45
63
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY, agentDetails.agentDescription);
|
|
46
64
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_PLATFORM_ID_KEY, agentDetails.platformId);
|
|
47
|
-
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, agentDetails.conversationId);
|
|
48
65
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_ICON_URI_KEY, agentDetails.iconUri);
|
|
49
66
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_AUID_KEY, agentDetails.agentAUID);
|
|
50
|
-
this.setTagMaybe(OpenTelemetryConstants.
|
|
67
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_EMAIL_KEY, agentDetails.agentEmail);
|
|
51
68
|
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_BLUEPRINT_ID_KEY, agentDetails.agentBlueprintId);
|
|
69
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_VERSION_KEY, agentDetails.agentVersion);
|
|
52
70
|
}
|
|
53
|
-
// Set tenant
|
|
54
|
-
|
|
55
|
-
|
|
71
|
+
// Set tenant ID from agent details
|
|
72
|
+
this.setTagMaybe(OpenTelemetryConstants.TENANT_ID_KEY, agentDetails?.tenantId);
|
|
73
|
+
// Set caller details if provided
|
|
74
|
+
if (userDetails) {
|
|
75
|
+
this.setTagMaybe(OpenTelemetryConstants.USER_ID_KEY, userDetails.userId);
|
|
76
|
+
this.setTagMaybe(OpenTelemetryConstants.USER_EMAIL_KEY, userDetails.userEmail);
|
|
77
|
+
this.setTagMaybe(OpenTelemetryConstants.USER_NAME_KEY, userDetails.userName);
|
|
78
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_CLIENT_IP_KEY, userDetails.callerClientIp);
|
|
56
79
|
}
|
|
57
80
|
}
|
|
58
81
|
/**
|
|
@@ -83,7 +106,6 @@ export class OpenTelemetryScope {
|
|
|
83
106
|
else {
|
|
84
107
|
this.errorType = error.constructor.name;
|
|
85
108
|
}
|
|
86
|
-
this.exception = error;
|
|
87
109
|
this.span.setStatus({
|
|
88
110
|
code: SpanStatusCode.ERROR,
|
|
89
111
|
message: error.message
|
|
@@ -124,7 +146,25 @@ export class OpenTelemetryScope {
|
|
|
124
146
|
}
|
|
125
147
|
}
|
|
126
148
|
/**
|
|
127
|
-
*
|
|
149
|
+
* Records the input messages for telemetry tracking.
|
|
150
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL ChatMessage), or a versioned InputMessages wrapper.
|
|
151
|
+
* @param messages A string, array of strings, or an InputMessages wrapper
|
|
152
|
+
*/
|
|
153
|
+
recordInputMessages(messages) {
|
|
154
|
+
const wrapper = normalizeInputMessages(messages);
|
|
155
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, serializeMessages(wrapper));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Records the output messages for telemetry tracking.
|
|
159
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage), or a versioned OutputMessages wrapper.
|
|
160
|
+
* @param messages A string, array of strings, or an OutputMessages wrapper
|
|
161
|
+
*/
|
|
162
|
+
recordOutputMessages(messages) {
|
|
163
|
+
const wrapper = normalizeOutputMessages(messages);
|
|
164
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, serializeMessages(wrapper));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Sets a tag on the span if the value is not null or undefined.
|
|
128
168
|
* @param name The tag name
|
|
129
169
|
* @param value The tag value
|
|
130
170
|
*/
|
|
@@ -143,6 +183,43 @@ export class OpenTelemetryScope {
|
|
|
143
183
|
// This would typically be handled through the baggage API
|
|
144
184
|
this.span.setAttributes({ [`baggage.${key}`]: value });
|
|
145
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Converts a `TimeInput` value to milliseconds since epoch.
|
|
188
|
+
* OTel's `TimeInput` can be a `number` (ms epoch), a `Date`, or an `HrTime` tuple `[seconds, nanoseconds]`.
|
|
189
|
+
*/
|
|
190
|
+
static timeInputToMs(t) {
|
|
191
|
+
if (typeof t === 'number')
|
|
192
|
+
return t;
|
|
193
|
+
if (t instanceof Date)
|
|
194
|
+
return t.getTime();
|
|
195
|
+
if (Array.isArray(t) && t.length === 2)
|
|
196
|
+
return t[0] * 1000 + t[1] / 1000000;
|
|
197
|
+
logger.warn(`[A365Observability] timeInputToMs received unexpected TimeInput (type=${typeof t}, isArray=${Array.isArray(t)}); falling back to Date.now()`);
|
|
198
|
+
return Date.now();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Sets a custom end time for the scope.
|
|
202
|
+
* When set, {@link dispose} will pass this value to `span.end()` instead of using the current wall-clock time.
|
|
203
|
+
* This is useful when the actual end time of the operation is known before the scope is disposed.
|
|
204
|
+
* @param endTime The end time as milliseconds since epoch, a Date, or an HrTime tuple.
|
|
205
|
+
*/
|
|
206
|
+
setEndTime(endTime) {
|
|
207
|
+
this.customEndTime = endTime;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Records a cancellation event on the span.
|
|
211
|
+
* Sets the span status to ERROR with the cancellation reason and marks the error type as 'TaskCanceledException'.
|
|
212
|
+
* @param reason Optional cancellation reason. Defaults to 'Task was cancelled'.
|
|
213
|
+
*/
|
|
214
|
+
recordCancellation(reason) {
|
|
215
|
+
const message = reason ?? 'Task was cancelled';
|
|
216
|
+
logger.info(`[A365Observability] Recording cancellation on span[${this.span.spanContext().spanId}]: ${message}`);
|
|
217
|
+
this.span.setStatus({
|
|
218
|
+
code: SpanStatusCode.ERROR,
|
|
219
|
+
message
|
|
220
|
+
});
|
|
221
|
+
this.errorType = OpenTelemetryConstants.ERROR_TYPE_CANCELLED;
|
|
222
|
+
}
|
|
146
223
|
/**
|
|
147
224
|
* Finalizes the scope and records metrics
|
|
148
225
|
*/
|
|
@@ -151,17 +228,19 @@ export class OpenTelemetryScope {
|
|
|
151
228
|
logger.info(`[A365Observability] Span already ended for span[${this.span.spanContext().spanId}]`);
|
|
152
229
|
return;
|
|
153
230
|
}
|
|
154
|
-
|
|
155
|
-
const
|
|
231
|
+
// Calculate duration: use custom start/end when provided, otherwise fall back to wall-clock.
|
|
232
|
+
const startMs = this.customStartTime !== undefined
|
|
233
|
+
? OpenTelemetryScope.timeInputToMs(this.customStartTime)
|
|
234
|
+
: this.wallClockStartMs;
|
|
235
|
+
const endMs = this.customEndTime !== undefined
|
|
236
|
+
? OpenTelemetryScope.timeInputToMs(this.customEndTime)
|
|
237
|
+
: Date.now();
|
|
238
|
+
const durationMs = Math.max(0, endMs - startMs);
|
|
156
239
|
if (this.errorType) {
|
|
157
|
-
finalTags[OpenTelemetryConstants.ERROR_TYPE_KEY] = this.errorType;
|
|
158
240
|
this.span.setAttributes({ [OpenTelemetryConstants.ERROR_TYPE_KEY]: this.errorType });
|
|
159
241
|
}
|
|
160
|
-
// Record duration metric (would typically use a meter here)
|
|
161
|
-
// For now, we'll add it as a span attribute
|
|
162
|
-
this.span.setAttributes({ 'operation.duration': duration });
|
|
163
242
|
this.hasEnded = true;
|
|
164
|
-
logger.info(`[A365Observability] Ending span[${this.span.spanContext().spanId}], duration: ${
|
|
243
|
+
logger.info(`[A365Observability] Ending span[${this.span.spanContext().spanId}], duration: ${(durationMs / 1000).toFixed(3)}s`);
|
|
165
244
|
}
|
|
166
245
|
/**
|
|
167
246
|
* Disposes the scope and finalizes telemetry data collection
|
|
@@ -169,7 +248,12 @@ export class OpenTelemetryScope {
|
|
|
169
248
|
[Symbol.dispose]() {
|
|
170
249
|
if (!this.hasEnded) {
|
|
171
250
|
this.end();
|
|
172
|
-
this.
|
|
251
|
+
if (this.customEndTime !== undefined) {
|
|
252
|
+
this.span.end(this.customEndTime);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
this.span.end();
|
|
256
|
+
}
|
|
173
257
|
}
|
|
174
258
|
}
|
|
175
259
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenTelemetryScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"OpenTelemetryScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { OpenTelemetryScope } from './OpenTelemetryScope';
|
|
2
|
+
import { AgentDetails, UserDetails, OutputResponse, Request, SpanDetails, ResponseMessagesParam } from '../contracts';
|
|
3
|
+
/**
|
|
4
|
+
* Provides OpenTelemetry tracing scope for output message tracing with parent span linking.
|
|
5
|
+
*/
|
|
6
|
+
export declare class OutputScope extends OpenTelemetryScope {
|
|
7
|
+
/**
|
|
8
|
+
* Creates and starts a new scope for output message tracing.
|
|
9
|
+
*
|
|
10
|
+
* @param request Request payload (channel, conversationId, content, sessionId).
|
|
11
|
+
* @param response The response containing initial output messages.
|
|
12
|
+
* @param agentDetails The agent producing the output. Tenant ID is derived from `agentDetails.tenantId`.
|
|
13
|
+
* @param userDetails Optional human caller identity details.
|
|
14
|
+
* @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanLinks).
|
|
15
|
+
* @returns A new OutputScope instance.
|
|
16
|
+
*/
|
|
17
|
+
static start(request: Request, response: OutputResponse, agentDetails: AgentDetails, userDetails?: UserDetails, spanDetails?: SpanDetails): OutputScope;
|
|
18
|
+
private constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Records the output messages for telemetry tracking.
|
|
21
|
+
* Overwrites any previously recorded output messages on the span.
|
|
22
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage), a versioned OutputMessages wrapper,
|
|
23
|
+
* or a raw dict (treated as a tool call result per OTEL spec, serialized directly).
|
|
24
|
+
* @param messages A string, array of strings, an OutputMessages wrapper, or a dict.
|
|
25
|
+
*/
|
|
26
|
+
recordOutputMessages(messages: ResponseMessagesParam): void;
|
|
27
|
+
private _setOutput;
|
|
28
|
+
/**
|
|
29
|
+
* Check if the value is a raw dict (plain object, not string[] or OutputMessages wrapper).
|
|
30
|
+
*/
|
|
31
|
+
private _isRawDict;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=OutputScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutputScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/OutputScope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAA+B,MAAM,cAAc,CAAC;AAInJ;;GAEG;AACH,qBAAa,WAAY,SAAQ,kBAAkB;IAEjD;;;;;;;;;OASG;WACW,KAAK,CACjB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,GACxB,WAAW;IAId,OAAO;IAkCP;;;;;;OAMG;IACI,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAIlE,OAAO,CAAC,UAAU;IAwBlB;;OAEG;IACH,OAAO,CAAC,UAAU;CAKnB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
4
|
+
import { OpenTelemetryScope } from './OpenTelemetryScope';
|
|
5
|
+
import { A365_MESSAGE_SCHEMA_VERSION } from '../contracts';
|
|
6
|
+
import { OpenTelemetryConstants } from '../constants';
|
|
7
|
+
import { normalizeOutputMessages, serializeMessages } from '../message-utils';
|
|
8
|
+
/**
|
|
9
|
+
* Provides OpenTelemetry tracing scope for output message tracing with parent span linking.
|
|
10
|
+
*/
|
|
11
|
+
export class OutputScope extends OpenTelemetryScope {
|
|
12
|
+
/**
|
|
13
|
+
* Creates and starts a new scope for output message tracing.
|
|
14
|
+
*
|
|
15
|
+
* @param request Request payload (channel, conversationId, content, sessionId).
|
|
16
|
+
* @param response The response containing initial output messages.
|
|
17
|
+
* @param agentDetails The agent producing the output. Tenant ID is derived from `agentDetails.tenantId`.
|
|
18
|
+
* @param userDetails Optional human caller identity details.
|
|
19
|
+
* @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanLinks).
|
|
20
|
+
* @returns A new OutputScope instance.
|
|
21
|
+
*/
|
|
22
|
+
static start(request, response, agentDetails, userDetails, spanDetails) {
|
|
23
|
+
return new OutputScope(request, response, agentDetails, userDetails, spanDetails);
|
|
24
|
+
}
|
|
25
|
+
constructor(request, response, agentDetails, userDetails, spanDetails) {
|
|
26
|
+
// Validate tenantId is present (required for telemetry)
|
|
27
|
+
if (!agentDetails.tenantId) {
|
|
28
|
+
throw new Error('OutputScope: tenantId is required on agentDetails');
|
|
29
|
+
}
|
|
30
|
+
// spanKind for OutputScope is always CLIENT
|
|
31
|
+
const resolvedSpanDetails = { ...spanDetails, spanKind: SpanKind.CLIENT };
|
|
32
|
+
super(OpenTelemetryConstants.OUTPUT_MESSAGES_OPERATION_NAME, agentDetails.agentName
|
|
33
|
+
? `${OpenTelemetryConstants.OUTPUT_MESSAGES_OPERATION_NAME} ${agentDetails.agentName}`
|
|
34
|
+
: `${OpenTelemetryConstants.OUTPUT_MESSAGES_OPERATION_NAME} ${agentDetails.agentId}`, agentDetails, resolvedSpanDetails, userDetails);
|
|
35
|
+
// Normalize and set initial output messages
|
|
36
|
+
this._setOutput(response.messages);
|
|
37
|
+
// Set conversation and channel
|
|
38
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, request.conversationId);
|
|
39
|
+
this.setTagMaybe(OpenTelemetryConstants.CHANNEL_NAME_KEY, request.channel?.name);
|
|
40
|
+
this.setTagMaybe(OpenTelemetryConstants.CHANNEL_LINK_KEY, request.channel?.description);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Records the output messages for telemetry tracking.
|
|
44
|
+
* Overwrites any previously recorded output messages on the span.
|
|
45
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage), a versioned OutputMessages wrapper,
|
|
46
|
+
* or a raw dict (treated as a tool call result per OTEL spec, serialized directly).
|
|
47
|
+
* @param messages A string, array of strings, an OutputMessages wrapper, or a dict.
|
|
48
|
+
*/
|
|
49
|
+
recordOutputMessages(messages) {
|
|
50
|
+
this._setOutput(messages);
|
|
51
|
+
}
|
|
52
|
+
_setOutput(messages) {
|
|
53
|
+
// Dict (Record<string, unknown>) — treat as tool call result, serialize directly
|
|
54
|
+
if (this._isRawDict(messages)) {
|
|
55
|
+
try {
|
|
56
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, JSON.stringify(messages));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, JSON.stringify({ error: 'serialization failed' }));
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const normalized = normalizeOutputMessages(messages);
|
|
64
|
+
const wrapper = { version: A365_MESSAGE_SCHEMA_VERSION, messages: normalized.messages };
|
|
65
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, serializeMessages(wrapper));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if the value is a raw dict (plain object, not string[] or OutputMessages wrapper).
|
|
69
|
+
*/
|
|
70
|
+
_isRawDict(messages) {
|
|
71
|
+
return typeof messages === 'object' && messages !== null
|
|
72
|
+
&& !Array.isArray(messages)
|
|
73
|
+
&& !('version' in messages && 'messages' in messages);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=OutputScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutputScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/OutputScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
+
import { IConfigurationProvider } from '@microsoft/agents-a365-runtime';
|
|
2
|
+
import { ObservabilityConfiguration } from '../configuration';
|
|
1
3
|
/**
|
|
2
4
|
* Check if exporter is enabled via environment variables.
|
|
3
5
|
*
|
|
4
6
|
* NOTE: Exporter-specific helpers have been moved to
|
|
5
7
|
* tracing/exporter/utils.ts. This file remains only for any
|
|
6
8
|
* non-exporter tracing utilities that may be added in the future.
|
|
9
|
+
*
|
|
10
|
+
* @param configProvider Optional configuration provider. Defaults to defaultObservabilityConfigurationProvider if not specified.
|
|
11
|
+
*/
|
|
12
|
+
export declare const isAgent365ExporterEnabled: (configProvider?: IConfigurationProvider<ObservabilityConfiguration>) => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Ensures the value is always a JSON-parseable string.
|
|
15
|
+
* - Objects are serialized via JSON.stringify.
|
|
16
|
+
* - Strings that are already valid JSON objects/arrays are passed through.
|
|
17
|
+
* - All other strings (including bare JSON primitives) are wrapped: `{ [key]: value }`.
|
|
18
|
+
* @param value The value to serialize.
|
|
19
|
+
* @param key The key to use when wrapping a plain string.
|
|
7
20
|
*/
|
|
8
|
-
export declare
|
|
21
|
+
export declare function safeSerializeToJson(value: Record<string, unknown> | string, key: string): string;
|
|
9
22
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAA6C,MAAM,kBAAkB,CAAC;AAEzG;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,GACpC,iBAAiB,sBAAsB,CAAC,0BAA0B,CAAC,KAClE,OAGF,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBhG"}
|
package/dist/esm/tracing/util.js
CHANGED
|
@@ -2,19 +2,49 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
// ------------------------------------------------------------------------------
|
|
5
|
-
import {
|
|
5
|
+
import { defaultObservabilityConfigurationProvider } from '../configuration';
|
|
6
6
|
/**
|
|
7
7
|
* Check if exporter is enabled via environment variables.
|
|
8
8
|
*
|
|
9
9
|
* NOTE: Exporter-specific helpers have been moved to
|
|
10
10
|
* tracing/exporter/utils.ts. This file remains only for any
|
|
11
11
|
* non-exporter tracing utilities that may be added in the future.
|
|
12
|
+
*
|
|
13
|
+
* @param configProvider Optional configuration provider. Defaults to defaultObservabilityConfigurationProvider if not specified.
|
|
12
14
|
*/
|
|
13
|
-
export const isAgent365ExporterEnabled = () => {
|
|
14
|
-
const
|
|
15
|
-
return (
|
|
16
|
-
enableA365Exporter === '1' ||
|
|
17
|
-
enableA365Exporter === 'yes' ||
|
|
18
|
-
enableA365Exporter === 'on');
|
|
15
|
+
export const isAgent365ExporterEnabled = (configProvider) => {
|
|
16
|
+
const provider = configProvider ?? defaultObservabilityConfigurationProvider;
|
|
17
|
+
return provider.getConfiguration().isObservabilityExporterEnabled;
|
|
19
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Ensures the value is always a JSON-parseable string.
|
|
21
|
+
* - Objects are serialized via JSON.stringify.
|
|
22
|
+
* - Strings that are already valid JSON objects/arrays are passed through.
|
|
23
|
+
* - All other strings (including bare JSON primitives) are wrapped: `{ [key]: value }`.
|
|
24
|
+
* @param value The value to serialize.
|
|
25
|
+
* @param key The key to use when wrapping a plain string.
|
|
26
|
+
*/
|
|
27
|
+
export function safeSerializeToJson(value, key) {
|
|
28
|
+
if (typeof value === 'object' && value !== null) {
|
|
29
|
+
try {
|
|
30
|
+
return JSON.stringify(value);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return JSON.stringify({ error: 'serialization failed' });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// String: check if it's already a valid JSON object/array, otherwise wrap it
|
|
37
|
+
const str = value;
|
|
38
|
+
try {
|
|
39
|
+
const parsed = JSON.parse(str);
|
|
40
|
+
// Only pass through objects/arrays; bare primitives (numbers, booleans, etc.) get wrapped
|
|
41
|
+
if (parsed !== null && typeof parsed === 'object') {
|
|
42
|
+
return str;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// not valid JSON — fall through to wrap
|
|
47
|
+
}
|
|
48
|
+
return JSON.stringify({ [key]: str });
|
|
49
|
+
}
|
|
20
50
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,uCAAuC;AACvC,kCAAkC;AAClC,iFAAiF;AAGjF,OAAO,EAA8B,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAEzG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,cAAmE,EAC1D,EAAE;IACX,MAAM,QAAQ,GAAG,cAAc,IAAI,yCAAyC,CAAC;IAC7E,OAAO,QAAQ,CAAC,gBAAgB,EAAE,CAAC,8BAA8B,CAAC;AACpE,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuC,EAAE,GAAW;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,6EAA6E;IAC7E,MAAM,GAAG,GAAG,KAAe,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,0FAA0F;QAC1F,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACxC,CAAC"}
|