@microsoft/agents-a365-observability 0.1.0-preview.95 → 0.2.0-preview.3
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 +357 -34
- 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 +355 -33
- 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,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
5
4
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
5
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
6
|
};
|
|
@@ -10,6 +9,8 @@ exports.OpenTelemetryScope = void 0;
|
|
|
10
9
|
const api_1 = require("@opentelemetry/api");
|
|
11
10
|
const constants_1 = require("../constants");
|
|
12
11
|
const parent_span_context_1 = require("../context/parent-span-context");
|
|
12
|
+
const trace_context_propagation_1 = require("../context/trace-context-propagation");
|
|
13
|
+
const message_utils_1 = require("../message-utils");
|
|
13
14
|
const logging_1 = __importDefault(require("../../utils/logging"));
|
|
14
15
|
/**
|
|
15
16
|
* Base class for OpenTelemetry tracing scopes
|
|
@@ -17,48 +18,70 @@ const logging_1 = __importDefault(require("../../utils/logging"));
|
|
|
17
18
|
class OpenTelemetryScope {
|
|
18
19
|
/**
|
|
19
20
|
* Initializes a new instance of the OpenTelemetryScope class
|
|
20
|
-
* @param kind The kind of span (CLIENT, SERVER, INTERNAL, etc.)
|
|
21
21
|
* @param operationName The name of the operation being traced
|
|
22
22
|
* @param spanName The name of the span for display purposes
|
|
23
|
-
* @param agentDetails Optional agent details
|
|
24
|
-
* @param
|
|
25
|
-
*
|
|
23
|
+
* @param agentDetails Optional agent details. Tenant ID is read from `agentDetails.tenantId`.
|
|
24
|
+
* @param spanDetails Optional span configuration including parent context, start/end times,
|
|
25
|
+
* span kind, and span links. Subclasses may override `spanDetails.spanKind` before
|
|
26
|
+
* calling this constructor; defaults to `SpanKind.CLIENT`.
|
|
27
|
+
* @param userDetails Optional human caller identity details (id, upn, name, client ip).
|
|
26
28
|
*/
|
|
27
|
-
constructor(
|
|
29
|
+
constructor(operationName, spanName, agentDetails, spanDetails, userDetails) {
|
|
28
30
|
this.hasEnded = false;
|
|
31
|
+
const parentContext = spanDetails?.parentContext;
|
|
32
|
+
const startTime = spanDetails?.startTime;
|
|
33
|
+
const endTime = spanDetails?.endTime;
|
|
34
|
+
const spanLinks = spanDetails?.spanLinks;
|
|
35
|
+
const kind = spanDetails?.spanKind ?? api_1.SpanKind.CLIENT;
|
|
29
36
|
// Determine the context to use for span creation
|
|
30
37
|
let currentContext = api_1.context.active();
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
if (parentContext) {
|
|
39
|
+
if ((0, trace_context_propagation_1.isParentSpanRef)(parentContext)) {
|
|
40
|
+
// Existing ParentSpanRef path (backward compatible)
|
|
41
|
+
currentContext = (0, parent_span_context_1.createContextWithParentSpanRef)(currentContext, parentContext);
|
|
42
|
+
logging_1.default.info(`[A365Observability] Using explicit parent span: traceId=${parentContext.traceId}, spanId=${parentContext.spanId}`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// OTel Context path (from extractContextFromHeaders or propagation.extract)
|
|
46
|
+
currentContext = parentContext;
|
|
47
|
+
}
|
|
34
48
|
}
|
|
35
|
-
logging_1.default.info(`[A365Observability] Starting span: ${spanName}, operation: ${operationName} for tenantId: ${
|
|
49
|
+
logging_1.default.info(`[A365Observability] Starting span: ${spanName}, operation: ${operationName} for tenantId: ${agentDetails?.tenantId || 'unknown'}, agentId: ${agentDetails?.agentId || 'unknown'}`);
|
|
36
50
|
// Start span with current context to establish parent-child relationship
|
|
37
51
|
this.span = OpenTelemetryScope.tracer.startSpan(spanName, {
|
|
38
52
|
kind,
|
|
53
|
+
startTime,
|
|
54
|
+
links: spanLinks,
|
|
39
55
|
attributes: {
|
|
40
|
-
[constants_1.OpenTelemetryConstants.GEN_AI_SYSTEM_KEY]: constants_1.OpenTelemetryConstants.GEN_AI_SYSTEM_VALUE,
|
|
41
56
|
[constants_1.OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY]: operationName,
|
|
42
57
|
},
|
|
43
58
|
}, currentContext);
|
|
44
59
|
logging_1.default.info(`[A365Observability] Span[${this.span.spanContext().spanId}] ${spanName}, operation: ${operationName} started successfully`);
|
|
45
|
-
this.
|
|
60
|
+
this.wallClockStartMs = Date.now();
|
|
61
|
+
if (startTime !== undefined) {
|
|
62
|
+
this.customStartTime = startTime;
|
|
63
|
+
}
|
|
64
|
+
this.customEndTime = endTime;
|
|
46
65
|
// Set agent details if provided
|
|
47
66
|
if (agentDetails) {
|
|
48
67
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY, agentDetails.agentId);
|
|
49
68
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY, agentDetails.agentName);
|
|
50
|
-
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_TYPE_KEY, agentDetails.agentType);
|
|
51
69
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY, agentDetails.agentDescription);
|
|
52
70
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_PLATFORM_ID_KEY, agentDetails.platformId);
|
|
53
|
-
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, agentDetails.conversationId);
|
|
54
71
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_ICON_URI_KEY, agentDetails.iconUri);
|
|
55
72
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_AUID_KEY, agentDetails.agentAUID);
|
|
56
|
-
this.setTagMaybe(constants_1.OpenTelemetryConstants.
|
|
73
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_EMAIL_KEY, agentDetails.agentEmail);
|
|
57
74
|
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_BLUEPRINT_ID_KEY, agentDetails.agentBlueprintId);
|
|
75
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_AGENT_VERSION_KEY, agentDetails.agentVersion);
|
|
58
76
|
}
|
|
59
|
-
// Set tenant
|
|
60
|
-
|
|
61
|
-
|
|
77
|
+
// Set tenant ID from agent details
|
|
78
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.TENANT_ID_KEY, agentDetails?.tenantId);
|
|
79
|
+
// Set caller details if provided
|
|
80
|
+
if (userDetails) {
|
|
81
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.USER_ID_KEY, userDetails.userId);
|
|
82
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.USER_EMAIL_KEY, userDetails.userEmail);
|
|
83
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.USER_NAME_KEY, userDetails.userName);
|
|
84
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CALLER_CLIENT_IP_KEY, userDetails.callerClientIp);
|
|
62
85
|
}
|
|
63
86
|
}
|
|
64
87
|
/**
|
|
@@ -89,7 +112,6 @@ class OpenTelemetryScope {
|
|
|
89
112
|
else {
|
|
90
113
|
this.errorType = error.constructor.name;
|
|
91
114
|
}
|
|
92
|
-
this.exception = error;
|
|
93
115
|
this.span.setStatus({
|
|
94
116
|
code: api_1.SpanStatusCode.ERROR,
|
|
95
117
|
message: error.message
|
|
@@ -130,7 +152,25 @@ class OpenTelemetryScope {
|
|
|
130
152
|
}
|
|
131
153
|
}
|
|
132
154
|
/**
|
|
133
|
-
*
|
|
155
|
+
* Records the input messages for telemetry tracking.
|
|
156
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL ChatMessage), or a versioned InputMessages wrapper.
|
|
157
|
+
* @param messages A string, array of strings, or an InputMessages wrapper
|
|
158
|
+
*/
|
|
159
|
+
recordInputMessages(messages) {
|
|
160
|
+
const wrapper = (0, message_utils_1.normalizeInputMessages)(messages);
|
|
161
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, (0, message_utils_1.serializeMessages)(wrapper));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Records the output messages for telemetry tracking.
|
|
165
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage), or a versioned OutputMessages wrapper.
|
|
166
|
+
* @param messages A string, array of strings, or an OutputMessages wrapper
|
|
167
|
+
*/
|
|
168
|
+
recordOutputMessages(messages) {
|
|
169
|
+
const wrapper = (0, message_utils_1.normalizeOutputMessages)(messages);
|
|
170
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, (0, message_utils_1.serializeMessages)(wrapper));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Sets a tag on the span if the value is not null or undefined.
|
|
134
174
|
* @param name The tag name
|
|
135
175
|
* @param value The tag value
|
|
136
176
|
*/
|
|
@@ -149,6 +189,43 @@ class OpenTelemetryScope {
|
|
|
149
189
|
// This would typically be handled through the baggage API
|
|
150
190
|
this.span.setAttributes({ [`baggage.${key}`]: value });
|
|
151
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Converts a `TimeInput` value to milliseconds since epoch.
|
|
194
|
+
* OTel's `TimeInput` can be a `number` (ms epoch), a `Date`, or an `HrTime` tuple `[seconds, nanoseconds]`.
|
|
195
|
+
*/
|
|
196
|
+
static timeInputToMs(t) {
|
|
197
|
+
if (typeof t === 'number')
|
|
198
|
+
return t;
|
|
199
|
+
if (t instanceof Date)
|
|
200
|
+
return t.getTime();
|
|
201
|
+
if (Array.isArray(t) && t.length === 2)
|
|
202
|
+
return t[0] * 1000 + t[1] / 1000000;
|
|
203
|
+
logging_1.default.warn(`[A365Observability] timeInputToMs received unexpected TimeInput (type=${typeof t}, isArray=${Array.isArray(t)}); falling back to Date.now()`);
|
|
204
|
+
return Date.now();
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Sets a custom end time for the scope.
|
|
208
|
+
* When set, {@link dispose} will pass this value to `span.end()` instead of using the current wall-clock time.
|
|
209
|
+
* This is useful when the actual end time of the operation is known before the scope is disposed.
|
|
210
|
+
* @param endTime The end time as milliseconds since epoch, a Date, or an HrTime tuple.
|
|
211
|
+
*/
|
|
212
|
+
setEndTime(endTime) {
|
|
213
|
+
this.customEndTime = endTime;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Records a cancellation event on the span.
|
|
217
|
+
* Sets the span status to ERROR with the cancellation reason and marks the error type as 'TaskCanceledException'.
|
|
218
|
+
* @param reason Optional cancellation reason. Defaults to 'Task was cancelled'.
|
|
219
|
+
*/
|
|
220
|
+
recordCancellation(reason) {
|
|
221
|
+
const message = reason ?? 'Task was cancelled';
|
|
222
|
+
logging_1.default.info(`[A365Observability] Recording cancellation on span[${this.span.spanContext().spanId}]: ${message}`);
|
|
223
|
+
this.span.setStatus({
|
|
224
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
225
|
+
message
|
|
226
|
+
});
|
|
227
|
+
this.errorType = constants_1.OpenTelemetryConstants.ERROR_TYPE_CANCELLED;
|
|
228
|
+
}
|
|
152
229
|
/**
|
|
153
230
|
* Finalizes the scope and records metrics
|
|
154
231
|
*/
|
|
@@ -157,17 +234,19 @@ class OpenTelemetryScope {
|
|
|
157
234
|
logging_1.default.info(`[A365Observability] Span already ended for span[${this.span.spanContext().spanId}]`);
|
|
158
235
|
return;
|
|
159
236
|
}
|
|
160
|
-
|
|
161
|
-
const
|
|
237
|
+
// Calculate duration: use custom start/end when provided, otherwise fall back to wall-clock.
|
|
238
|
+
const startMs = this.customStartTime !== undefined
|
|
239
|
+
? OpenTelemetryScope.timeInputToMs(this.customStartTime)
|
|
240
|
+
: this.wallClockStartMs;
|
|
241
|
+
const endMs = this.customEndTime !== undefined
|
|
242
|
+
? OpenTelemetryScope.timeInputToMs(this.customEndTime)
|
|
243
|
+
: Date.now();
|
|
244
|
+
const durationMs = Math.max(0, endMs - startMs);
|
|
162
245
|
if (this.errorType) {
|
|
163
|
-
finalTags[constants_1.OpenTelemetryConstants.ERROR_TYPE_KEY] = this.errorType;
|
|
164
246
|
this.span.setAttributes({ [constants_1.OpenTelemetryConstants.ERROR_TYPE_KEY]: this.errorType });
|
|
165
247
|
}
|
|
166
|
-
// Record duration metric (would typically use a meter here)
|
|
167
|
-
// For now, we'll add it as a span attribute
|
|
168
|
-
this.span.setAttributes({ 'operation.duration': duration });
|
|
169
248
|
this.hasEnded = true;
|
|
170
|
-
logging_1.default.info(`[A365Observability] Ending span[${this.span.spanContext().spanId}], duration: ${
|
|
249
|
+
logging_1.default.info(`[A365Observability] Ending span[${this.span.spanContext().spanId}], duration: ${(durationMs / 1000).toFixed(3)}s`);
|
|
171
250
|
}
|
|
172
251
|
/**
|
|
173
252
|
* Disposes the scope and finalizes telemetry data collection
|
|
@@ -175,7 +254,12 @@ class OpenTelemetryScope {
|
|
|
175
254
|
[Symbol.dispose]() {
|
|
176
255
|
if (!this.hasEnded) {
|
|
177
256
|
this.end();
|
|
178
|
-
this.
|
|
257
|
+
if (this.customEndTime !== undefined) {
|
|
258
|
+
this.span.end(this.customEndTime);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
this.span.end();
|
|
262
|
+
}
|
|
179
263
|
}
|
|
180
264
|
}
|
|
181
265
|
/**
|
|
@@ -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,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.OutputScope = void 0;
|
|
6
|
+
const api_1 = require("@opentelemetry/api");
|
|
7
|
+
const OpenTelemetryScope_1 = require("./OpenTelemetryScope");
|
|
8
|
+
const contracts_1 = require("../contracts");
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
const message_utils_1 = require("../message-utils");
|
|
11
|
+
/**
|
|
12
|
+
* Provides OpenTelemetry tracing scope for output message tracing with parent span linking.
|
|
13
|
+
*/
|
|
14
|
+
class OutputScope extends OpenTelemetryScope_1.OpenTelemetryScope {
|
|
15
|
+
/**
|
|
16
|
+
* Creates and starts a new scope for output message tracing.
|
|
17
|
+
*
|
|
18
|
+
* @param request Request payload (channel, conversationId, content, sessionId).
|
|
19
|
+
* @param response The response containing initial output messages.
|
|
20
|
+
* @param agentDetails The agent producing the output. Tenant ID is derived from `agentDetails.tenantId`.
|
|
21
|
+
* @param userDetails Optional human caller identity details.
|
|
22
|
+
* @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanLinks).
|
|
23
|
+
* @returns A new OutputScope instance.
|
|
24
|
+
*/
|
|
25
|
+
static start(request, response, agentDetails, userDetails, spanDetails) {
|
|
26
|
+
return new OutputScope(request, response, agentDetails, userDetails, spanDetails);
|
|
27
|
+
}
|
|
28
|
+
constructor(request, response, agentDetails, userDetails, spanDetails) {
|
|
29
|
+
// Validate tenantId is present (required for telemetry)
|
|
30
|
+
if (!agentDetails.tenantId) {
|
|
31
|
+
throw new Error('OutputScope: tenantId is required on agentDetails');
|
|
32
|
+
}
|
|
33
|
+
// spanKind for OutputScope is always CLIENT
|
|
34
|
+
const resolvedSpanDetails = { ...spanDetails, spanKind: api_1.SpanKind.CLIENT };
|
|
35
|
+
super(constants_1.OpenTelemetryConstants.OUTPUT_MESSAGES_OPERATION_NAME, agentDetails.agentName
|
|
36
|
+
? `${constants_1.OpenTelemetryConstants.OUTPUT_MESSAGES_OPERATION_NAME} ${agentDetails.agentName}`
|
|
37
|
+
: `${constants_1.OpenTelemetryConstants.OUTPUT_MESSAGES_OPERATION_NAME} ${agentDetails.agentId}`, agentDetails, resolvedSpanDetails, userDetails);
|
|
38
|
+
// Normalize and set initial output messages
|
|
39
|
+
this._setOutput(response.messages);
|
|
40
|
+
// Set conversation and channel
|
|
41
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, request.conversationId);
|
|
42
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.CHANNEL_NAME_KEY, request.channel?.name);
|
|
43
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.CHANNEL_LINK_KEY, request.channel?.description);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Records the output messages for telemetry tracking.
|
|
47
|
+
* Overwrites any previously recorded output messages on the span.
|
|
48
|
+
* Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage), a versioned OutputMessages wrapper,
|
|
49
|
+
* or a raw dict (treated as a tool call result per OTEL spec, serialized directly).
|
|
50
|
+
* @param messages A string, array of strings, an OutputMessages wrapper, or a dict.
|
|
51
|
+
*/
|
|
52
|
+
recordOutputMessages(messages) {
|
|
53
|
+
this._setOutput(messages);
|
|
54
|
+
}
|
|
55
|
+
_setOutput(messages) {
|
|
56
|
+
// Dict (Record<string, unknown>) — treat as tool call result, serialize directly
|
|
57
|
+
if (this._isRawDict(messages)) {
|
|
58
|
+
try {
|
|
59
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, JSON.stringify(messages));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, JSON.stringify({ error: 'serialization failed' }));
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const normalized = (0, message_utils_1.normalizeOutputMessages)(messages);
|
|
67
|
+
const wrapper = { version: contracts_1.A365_MESSAGE_SCHEMA_VERSION, messages: normalized.messages };
|
|
68
|
+
this.setTagMaybe(constants_1.OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, (0, message_utils_1.serializeMessages)(wrapper));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if the value is a raw dict (plain object, not string[] or OutputMessages wrapper).
|
|
72
|
+
*/
|
|
73
|
+
_isRawDict(messages) {
|
|
74
|
+
return typeof messages === 'object' && messages !== null
|
|
75
|
+
&& !Array.isArray(messages)
|
|
76
|
+
&& !('version' in messages && 'messages' in messages);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.OutputScope = OutputScope;
|
|
80
|
+
//# 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/cjs/tracing/util.js
CHANGED
|
@@ -5,20 +5,51 @@
|
|
|
5
5
|
// ------------------------------------------------------------------------------
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.isAgent365ExporterEnabled = void 0;
|
|
8
|
-
|
|
8
|
+
exports.safeSerializeToJson = safeSerializeToJson;
|
|
9
|
+
const configuration_1 = require("../configuration");
|
|
9
10
|
/**
|
|
10
11
|
* Check if exporter is enabled via environment variables.
|
|
11
12
|
*
|
|
12
13
|
* NOTE: Exporter-specific helpers have been moved to
|
|
13
14
|
* tracing/exporter/utils.ts. This file remains only for any
|
|
14
15
|
* non-exporter tracing utilities that may be added in the future.
|
|
16
|
+
*
|
|
17
|
+
* @param configProvider Optional configuration provider. Defaults to defaultObservabilityConfigurationProvider if not specified.
|
|
15
18
|
*/
|
|
16
|
-
const isAgent365ExporterEnabled = () => {
|
|
17
|
-
const
|
|
18
|
-
return (
|
|
19
|
-
enableA365Exporter === '1' ||
|
|
20
|
-
enableA365Exporter === 'yes' ||
|
|
21
|
-
enableA365Exporter === 'on');
|
|
19
|
+
const isAgent365ExporterEnabled = (configProvider) => {
|
|
20
|
+
const provider = configProvider ?? configuration_1.defaultObservabilityConfigurationProvider;
|
|
21
|
+
return provider.getConfiguration().isObservabilityExporterEnabled;
|
|
22
22
|
};
|
|
23
23
|
exports.isAgent365ExporterEnabled = isAgent365ExporterEnabled;
|
|
24
|
+
/**
|
|
25
|
+
* Ensures the value is always a JSON-parseable string.
|
|
26
|
+
* - Objects are serialized via JSON.stringify.
|
|
27
|
+
* - Strings that are already valid JSON objects/arrays are passed through.
|
|
28
|
+
* - All other strings (including bare JSON primitives) are wrapped: `{ [key]: value }`.
|
|
29
|
+
* @param value The value to serialize.
|
|
30
|
+
* @param key The key to use when wrapping a plain string.
|
|
31
|
+
*/
|
|
32
|
+
function safeSerializeToJson(value, key) {
|
|
33
|
+
if (typeof value === 'object' && value !== null) {
|
|
34
|
+
try {
|
|
35
|
+
return JSON.stringify(value);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return JSON.stringify({ error: 'serialization failed' });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// String: check if it's already a valid JSON object/array, otherwise wrap it
|
|
42
|
+
const str = value;
|
|
43
|
+
try {
|
|
44
|
+
const parsed = JSON.parse(str);
|
|
45
|
+
// Only pass through objects/arrays; bare primitives (numbers, booleans, etc.) get wrapped
|
|
46
|
+
if (parsed !== null && typeof parsed === 'object') {
|
|
47
|
+
return str;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// not valid JSON — fall through to wrap
|
|
52
|
+
}
|
|
53
|
+
return JSON.stringify({ [key]: str });
|
|
54
|
+
}
|
|
24
55
|
//# 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;;;AA6BjF,kDAoBC;AA9CD,oDAAyG;AAEzG;;;;;;;;GAQG;AACI,MAAM,yBAAyB,GAAG,CACvC,cAAmE,EAC1D,EAAE;IACX,MAAM,QAAQ,GAAG,cAAc,IAAI,yDAAyC,CAAC;IAC7E,OAAO,QAAQ,CAAC,gBAAgB,EAAE,CAAC,8BAA8B,CAAC;AACpE,CAAC,CAAC;AALW,QAAA,yBAAyB,6BAKpC;AAEF;;;;;;;GAOG;AACH,SAAgB,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"}
|