@microsoft/agents-a365-observability 0.1.0-preview.93 → 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.
Files changed (243) hide show
  1. package/dist/cjs/ObservabilityBuilder.d.ts +47 -1
  2. package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -1
  3. package/dist/cjs/ObservabilityBuilder.js +95 -15
  4. package/dist/cjs/ObservabilityBuilder.js.map +1 -1
  5. package/dist/cjs/ObservabilityManager.d.ts.map +1 -1
  6. package/dist/cjs/ObservabilityManager.js +3 -0
  7. package/dist/cjs/ObservabilityManager.js.map +1 -1
  8. package/dist/cjs/configuration/ObservabilityConfiguration.d.ts +19 -0
  9. package/dist/cjs/configuration/ObservabilityConfiguration.d.ts.map +1 -0
  10. package/dist/cjs/configuration/ObservabilityConfiguration.js +60 -0
  11. package/dist/cjs/configuration/ObservabilityConfiguration.js.map +1 -0
  12. package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts +58 -0
  13. package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
  14. package/dist/cjs/configuration/ObservabilityConfigurationOptions.js +5 -0
  15. package/dist/cjs/configuration/ObservabilityConfigurationOptions.js.map +1 -0
  16. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts +22 -0
  17. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
  18. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js +73 -0
  19. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
  20. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +71 -0
  21. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
  22. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js +5 -0
  23. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
  24. package/dist/cjs/configuration/index.d.ts +16 -0
  25. package/dist/cjs/configuration/index.d.ts.map +1 -0
  26. package/dist/cjs/configuration/index.js +35 -0
  27. package/dist/cjs/configuration/index.js.map +1 -0
  28. package/dist/cjs/index.d.ts +11 -3
  29. package/dist/cjs/index.d.ts.map +1 -1
  30. package/dist/cjs/index.js +48 -5
  31. package/dist/cjs/index.js.map +1 -1
  32. package/dist/cjs/internal/PerRequestProcessorInternalOverrides.d.ts +4 -0
  33. package/dist/cjs/internal/PerRequestProcessorInternalOverrides.d.ts.map +1 -0
  34. package/dist/cjs/internal/PerRequestProcessorInternalOverrides.js +15 -0
  35. package/dist/cjs/internal/PerRequestProcessorInternalOverrides.js.map +1 -0
  36. package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts +10 -3
  37. package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts.map +1 -1
  38. package/dist/cjs/tracing/PerRequestSpanProcessor.js +14 -23
  39. package/dist/cjs/tracing/PerRequestSpanProcessor.js.map +1 -1
  40. package/dist/cjs/tracing/constants.d.ts +35 -35
  41. package/dist/cjs/tracing/constants.d.ts.map +1 -1
  42. package/dist/cjs/tracing/constants.js +42 -40
  43. package/dist/cjs/tracing/constants.js.map +1 -1
  44. package/dist/cjs/tracing/context/parent-span-context.d.ts +11 -2
  45. package/dist/cjs/tracing/context/parent-span-context.d.ts.map +1 -1
  46. package/dist/cjs/tracing/context/parent-span-context.js +10 -5
  47. package/dist/cjs/tracing/context/parent-span-context.js.map +1 -1
  48. package/dist/cjs/tracing/context/token-context.d.ts +14 -0
  49. package/dist/cjs/tracing/context/token-context.d.ts.map +1 -1
  50. package/dist/cjs/tracing/context/token-context.js +35 -2
  51. package/dist/cjs/tracing/context/token-context.js.map +1 -1
  52. package/dist/cjs/tracing/context/trace-context-propagation.d.ts +68 -0
  53. package/dist/cjs/tracing/context/trace-context-propagation.d.ts.map +1 -0
  54. package/dist/cjs/tracing/context/trace-context-propagation.js +85 -0
  55. package/dist/cjs/tracing/context/trace-context-propagation.js.map +1 -0
  56. package/dist/cjs/tracing/contracts.d.ts +229 -62
  57. package/dist/cjs/tracing/contracts.d.ts.map +1 -1
  58. package/dist/cjs/tracing/contracts.js +39 -18
  59. package/dist/cjs/tracing/contracts.js.map +1 -1
  60. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +9 -4
  61. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -1
  62. package/dist/cjs/tracing/exporter/Agent365Exporter.js +53 -46
  63. package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -1
  64. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts +8 -5
  65. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -1
  66. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js +11 -7
  67. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js.map +1 -1
  68. package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts +20 -0
  69. package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
  70. package/dist/cjs/tracing/exporter/ExporterEventNames.js +26 -0
  71. package/dist/cjs/tracing/exporter/ExporterEventNames.js.map +1 -0
  72. package/dist/cjs/tracing/exporter/utils.d.ts +24 -11
  73. package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -1
  74. package/dist/cjs/tracing/exporter/utils.js +354 -33
  75. package/dist/cjs/tracing/exporter/utils.js.map +1 -1
  76. package/dist/cjs/tracing/message-utils.d.ts +36 -0
  77. package/dist/cjs/tracing/message-utils.d.ts.map +1 -0
  78. package/dist/cjs/tracing/message-utils.js +90 -0
  79. package/dist/cjs/tracing/message-utils.js.map +1 -0
  80. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +32 -44
  81. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -1
  82. package/dist/cjs/tracing/middleware/BaggageBuilder.js +49 -62
  83. package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -1
  84. package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -1
  85. package/dist/cjs/tracing/processors/SpanProcessor.js +12 -3
  86. package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -1
  87. package/dist/cjs/tracing/processors/util.d.ts.map +1 -1
  88. package/dist/cjs/tracing/processors/util.js +16 -22
  89. package/dist/cjs/tracing/processors/util.js.map +1 -1
  90. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +10 -11
  91. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -1
  92. package/dist/cjs/tracing/scopes/ExecuteToolScope.js +26 -20
  93. package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -1
  94. package/dist/cjs/tracing/scopes/InferenceScope.d.ts +20 -24
  95. package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -1
  96. package/dist/cjs/tracing/scopes/InferenceScope.js +53 -48
  97. package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -1
  98. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +17 -12
  99. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -1
  100. package/dist/cjs/tracing/scopes/InvokeAgentScope.js +55 -54
  101. package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -1
  102. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +43 -12
  103. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -1
  104. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +114 -30
  105. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -1
  106. package/dist/cjs/tracing/scopes/OutputScope.d.ts +33 -0
  107. package/dist/cjs/tracing/scopes/OutputScope.d.ts.map +1 -0
  108. package/dist/cjs/tracing/scopes/OutputScope.js +80 -0
  109. package/dist/cjs/tracing/scopes/OutputScope.js.map +1 -0
  110. package/dist/cjs/tracing/util.d.ts +14 -1
  111. package/dist/cjs/tracing/util.d.ts.map +1 -1
  112. package/dist/cjs/tracing/util.js +38 -7
  113. package/dist/cjs/tracing/util.js.map +1 -1
  114. package/dist/cjs/utils/logging.d.ts +106 -5
  115. package/dist/cjs/utils/logging.d.ts.map +1 -1
  116. package/dist/cjs/utils/logging.js +120 -38
  117. package/dist/cjs/utils/logging.js.map +1 -1
  118. package/dist/cjs/version.d.ts +2 -0
  119. package/dist/cjs/version.d.ts.map +1 -0
  120. package/dist/cjs/version.js +5 -0
  121. package/dist/cjs/version.js.map +1 -0
  122. package/dist/esm/ObservabilityBuilder.d.ts +47 -1
  123. package/dist/esm/ObservabilityBuilder.d.ts.map +1 -1
  124. package/dist/esm/ObservabilityBuilder.js +63 -13
  125. package/dist/esm/ObservabilityBuilder.js.map +1 -1
  126. package/dist/esm/ObservabilityManager.d.ts.map +1 -1
  127. package/dist/esm/ObservabilityManager.js +3 -0
  128. package/dist/esm/ObservabilityManager.js.map +1 -1
  129. package/dist/esm/configuration/ObservabilityConfiguration.d.ts +19 -0
  130. package/dist/esm/configuration/ObservabilityConfiguration.d.ts.map +1 -0
  131. package/dist/esm/configuration/ObservabilityConfiguration.js +56 -0
  132. package/dist/esm/configuration/ObservabilityConfiguration.js.map +1 -0
  133. package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts +58 -0
  134. package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
  135. package/dist/esm/configuration/ObservabilityConfigurationOptions.js +4 -0
  136. package/dist/esm/configuration/ObservabilityConfigurationOptions.js.map +1 -0
  137. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts +22 -0
  138. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
  139. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js +69 -0
  140. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
  141. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +71 -0
  142. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
  143. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js +4 -0
  144. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
  145. package/dist/esm/configuration/index.d.ts +16 -0
  146. package/dist/esm/configuration/index.d.ts.map +1 -0
  147. package/dist/esm/configuration/index.js +18 -0
  148. package/dist/esm/configuration/index.js.map +1 -0
  149. package/dist/esm/index.d.ts +11 -3
  150. package/dist/esm/index.d.ts.map +1 -1
  151. package/dist/esm/index.js +18 -6
  152. package/dist/esm/index.js.map +1 -1
  153. package/dist/esm/internal/PerRequestProcessorInternalOverrides.d.ts +4 -0
  154. package/dist/esm/internal/PerRequestProcessorInternalOverrides.d.ts.map +1 -0
  155. package/dist/esm/internal/PerRequestProcessorInternalOverrides.js +11 -0
  156. package/dist/esm/internal/PerRequestProcessorInternalOverrides.js.map +1 -0
  157. package/dist/esm/tracing/PerRequestSpanProcessor.d.ts +10 -3
  158. package/dist/esm/tracing/PerRequestSpanProcessor.d.ts.map +1 -1
  159. package/dist/esm/tracing/PerRequestSpanProcessor.js +14 -23
  160. package/dist/esm/tracing/PerRequestSpanProcessor.js.map +1 -1
  161. package/dist/esm/tracing/constants.d.ts +35 -35
  162. package/dist/esm/tracing/constants.d.ts.map +1 -1
  163. package/dist/esm/tracing/constants.js +42 -40
  164. package/dist/esm/tracing/constants.js.map +1 -1
  165. package/dist/esm/tracing/context/parent-span-context.d.ts +11 -2
  166. package/dist/esm/tracing/context/parent-span-context.d.ts.map +1 -1
  167. package/dist/esm/tracing/context/parent-span-context.js +10 -5
  168. package/dist/esm/tracing/context/parent-span-context.js.map +1 -1
  169. package/dist/esm/tracing/context/token-context.d.ts +14 -0
  170. package/dist/esm/tracing/context/token-context.d.ts.map +1 -1
  171. package/dist/esm/tracing/context/token-context.js +34 -2
  172. package/dist/esm/tracing/context/token-context.js.map +1 -1
  173. package/dist/esm/tracing/context/trace-context-propagation.d.ts +68 -0
  174. package/dist/esm/tracing/context/trace-context-propagation.d.ts.map +1 -0
  175. package/dist/esm/tracing/context/trace-context-propagation.js +79 -0
  176. package/dist/esm/tracing/context/trace-context-propagation.js.map +1 -0
  177. package/dist/esm/tracing/contracts.d.ts +229 -62
  178. package/dist/esm/tracing/contracts.d.ts.map +1 -1
  179. package/dist/esm/tracing/contracts.js +38 -17
  180. package/dist/esm/tracing/contracts.js.map +1 -1
  181. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +9 -4
  182. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -1
  183. package/dist/esm/tracing/exporter/Agent365Exporter.js +54 -47
  184. package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -1
  185. package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts +8 -5
  186. package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -1
  187. package/dist/esm/tracing/exporter/Agent365ExporterOptions.js +11 -7
  188. package/dist/esm/tracing/exporter/Agent365ExporterOptions.js.map +1 -1
  189. package/dist/esm/tracing/exporter/ExporterEventNames.d.ts +20 -0
  190. package/dist/esm/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
  191. package/dist/esm/tracing/exporter/ExporterEventNames.js +23 -0
  192. package/dist/esm/tracing/exporter/ExporterEventNames.js.map +1 -0
  193. package/dist/esm/tracing/exporter/utils.d.ts +24 -11
  194. package/dist/esm/tracing/exporter/utils.d.ts.map +1 -1
  195. package/dist/esm/tracing/exporter/utils.js +352 -32
  196. package/dist/esm/tracing/exporter/utils.js.map +1 -1
  197. package/dist/esm/tracing/message-utils.d.ts +36 -0
  198. package/dist/esm/tracing/message-utils.d.ts.map +1 -0
  199. package/dist/esm/tracing/message-utils.js +82 -0
  200. package/dist/esm/tracing/message-utils.js.map +1 -0
  201. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +32 -44
  202. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -1
  203. package/dist/esm/tracing/middleware/BaggageBuilder.js +49 -62
  204. package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -1
  205. package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -1
  206. package/dist/esm/tracing/processors/SpanProcessor.js +12 -3
  207. package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -1
  208. package/dist/esm/tracing/processors/util.d.ts.map +1 -1
  209. package/dist/esm/tracing/processors/util.js +16 -22
  210. package/dist/esm/tracing/processors/util.js.map +1 -1
  211. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +10 -11
  212. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -1
  213. package/dist/esm/tracing/scopes/ExecuteToolScope.js +26 -20
  214. package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -1
  215. package/dist/esm/tracing/scopes/InferenceScope.d.ts +20 -24
  216. package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -1
  217. package/dist/esm/tracing/scopes/InferenceScope.js +53 -48
  218. package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -1
  219. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +17 -12
  220. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -1
  221. package/dist/esm/tracing/scopes/InvokeAgentScope.js +55 -54
  222. package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -1
  223. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +43 -12
  224. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -1
  225. package/dist/esm/tracing/scopes/OpenTelemetryScope.js +115 -31
  226. package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -1
  227. package/dist/esm/tracing/scopes/OutputScope.d.ts +33 -0
  228. package/dist/esm/tracing/scopes/OutputScope.d.ts.map +1 -0
  229. package/dist/esm/tracing/scopes/OutputScope.js +76 -0
  230. package/dist/esm/tracing/scopes/OutputScope.js.map +1 -0
  231. package/dist/esm/tracing/util.d.ts +14 -1
  232. package/dist/esm/tracing/util.d.ts.map +1 -1
  233. package/dist/esm/tracing/util.js +37 -7
  234. package/dist/esm/tracing/util.js.map +1 -1
  235. package/dist/esm/utils/logging.d.ts +106 -5
  236. package/dist/esm/utils/logging.d.ts.map +1 -1
  237. package/dist/esm/utils/logging.js +115 -37
  238. package/dist/esm/utils/logging.js.map +1 -1
  239. package/dist/esm/version.d.ts +2 -0
  240. package/dist/esm/version.d.ts.map +1 -0
  241. package/dist/esm/version.js +2 -0
  242. package/dist/esm/version.js.map +1 -0
  243. package/package.json +9 -9
@@ -1,26 +1,27 @@
1
- import { SpanKind, Span, AttributeValue, SpanContext } from '@opentelemetry/api';
2
- import { AgentDetails, TenantDetails } from '../contracts';
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 startTime;
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 tenantDetails Optional tenant details
21
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing
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(kind: SpanKind, operationName: string, spanName: string, agentDetails?: AgentDetails, tenantDetails?: TenantDetails, parentSpanRef?: ParentSpanRef);
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
- * Sets a tag on the span if telemetry is enabled
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":"AAIA,OAAO,EAAS,QAAQ,EAAE,IAAI,EAAuC,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAkC,MAAM,gCAAgC,CAAC;AAG/F;;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,SAAS,CAAS;IACnC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;OAQG;IACH,SAAS,aACP,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,aAAa;IA4C/B;;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;IAkBtC;;;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,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAM3G;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtD;;OAEG;IACH,OAAO,CAAC,GAAG;IAsBX;;OAEG;IACI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAO/B;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}
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
- // Copyright (c) Microsoft Corporation. All rights reserved.
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 tenantDetails Optional tenant details
25
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing
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(kind, operationName, spanName, agentDetails, tenantDetails, parentSpanRef) {
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 (parentSpanRef) {
32
- currentContext = (0, parent_span_context_1.createContextWithParentSpanRef)(currentContext, parentSpanRef);
33
- logging_1.default.info(`[A365Observability] Using explicit parent span: traceId=${parentSpanRef.traceId}, spanId=${parentSpanRef.spanId}`);
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: ${tenantDetails?.tenantId || 'unknown'}, agentId: ${agentDetails?.agentId || 'unknown'}`);
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.startTime = Date.now();
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.GEN_AI_AGENT_UPN_KEY, agentDetails.agentUPN);
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 details if provided
60
- if (tenantDetails) {
61
- this.setTagMaybe(constants_1.OpenTelemetryConstants.TENANT_ID_KEY, tenantDetails.tenantId);
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
- * Sets a tag on the span if telemetry is enabled
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
- const duration = (Date.now() - this.startTime) / 1000; // Convert to seconds
161
- const finalTags = {};
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: ${duration}s`);
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.span.end();
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":"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"}
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 const isAgent365ExporterEnabled: () => boolean;
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":"AAOA;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,OAS7C,CAAC"}
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"}
@@ -5,20 +5,51 @@
5
5
  // ------------------------------------------------------------------------------
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.isAgent365ExporterEnabled = void 0;
8
- const constants_1 = require("./constants");
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 enableA365Exporter = process.env[constants_1.OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY_EXPORTER]?.toLowerCase();
18
- return (enableA365Exporter === 'true' ||
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;;;AAEjF,2CAAqD;AAErD;;;;;;GAMG;AACI,MAAM,yBAAyB,GAAkB,GAAY,EAAE;IACpE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAsB,CAAC,kCAAkC,CAAC,EAAE,WAAW,EAAE,CAAC;IAEjH,OAAO,CACL,kBAAkB,KAAK,MAAM;QAC7B,kBAAkB,KAAK,GAAG;QAC1B,kBAAkB,KAAK,KAAK;QAC5B,kBAAkB,KAAK,IAAI,CAC5B,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,yBAAyB,6BASpC"}
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"}