@microsoft/agents-a365-observability 0.1.0-preview.95 → 0.2.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/dist/cjs/ObservabilityBuilder.d.ts +24 -1
  2. package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -1
  3. package/dist/cjs/ObservabilityBuilder.js +39 -12
  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 +45 -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 +45 -2
  115. package/dist/cjs/utils/logging.d.ts.map +1 -1
  116. package/dist/cjs/utils/logging.js +53 -79
  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 +24 -1
  123. package/dist/esm/ObservabilityBuilder.d.ts.map +1 -1
  124. package/dist/esm/ObservabilityBuilder.js +41 -14
  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 +17 -5
  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 +45 -2
  236. package/dist/esm/utils/logging.d.ts.map +1 -1
  237. package/dist/esm/utils/logging.js +52 -79
  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,38 +1,44 @@
1
- // ------------------------------------------------------------------------------
2
- // Copyright (c) Microsoft Corporation. All rights reserved.
3
- // ------------------------------------------------------------------------------
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
4
3
  import { SpanKind } from '@opentelemetry/api';
5
4
  import { OpenTelemetryScope } from './OpenTelemetryScope';
6
5
  import { OpenTelemetryConstants } from '../constants';
6
+ import { safeSerializeToJson } from '../util';
7
7
  /**
8
8
  * Provides OpenTelemetry tracing scope for AI tool execution operations.
9
9
  */
10
10
  export class ExecuteToolScope extends OpenTelemetryScope {
11
11
  /**
12
12
  * Creates and starts a new scope for tool execution tracing.
13
- * @param details The tool call details
14
- * @param agentDetails The agent details
15
- * @param tenantDetails The tenant details
16
- * @param conversationId Optional conversation id to tag on the span (`gen_ai.conversation.id`).
17
- * @param sourceMetadata Optional source metadata; only `name` (channel name) and `description` (channel link/URL) are used for tagging.
18
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing.
13
+ *
14
+ * @param request Request payload (channel, conversationId, content, sessionId).
15
+ * @param details The tool call details (name, type, args, call id, etc.).
16
+ * @param agentDetails The agent executing the tool. Tenant ID is derived from `agentDetails.tenantId`.
17
+ * @param userDetails Optional human caller identity.
18
+ * @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanLinks, spanKind). Defaults to SpanKind.INTERNAL.
19
19
  * @returns A new ExecuteToolScope instance.
20
20
  */
21
- static start(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef) {
22
- return new ExecuteToolScope(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef);
21
+ static start(request, details, agentDetails, userDetails, spanDetails) {
22
+ return new ExecuteToolScope(request, details, agentDetails, userDetails, spanDetails);
23
23
  }
24
- constructor(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef) {
25
- super(SpanKind.INTERNAL, OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME, `${OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME} ${details.toolName}`, agentDetails, tenantDetails, parentSpanRef);
26
- // Destructure the details object to match C# pattern
24
+ constructor(request, details, agentDetails, userDetails, spanDetails) {
25
+ // Validate tenantId is present (required for telemetry)
26
+ if (!agentDetails.tenantId) {
27
+ throw new Error('ExecuteToolScope: tenantId is required on agentDetails');
28
+ }
29
+ // Default to INTERNAL; allow caller override via spanDetails
30
+ const resolvedSpanDetails = { spanKind: SpanKind.INTERNAL, ...spanDetails };
31
+ super(OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME, `${OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME} ${details.toolName}`, agentDetails, resolvedSpanDetails, userDetails);
32
+ // Destructure the details object
27
33
  const { toolName, arguments: args, toolCallId, description, toolType, endpoint } = details;
28
34
  this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_NAME_KEY, toolName);
29
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY, args);
35
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY, args != null ? safeSerializeToJson(args, 'arguments') : undefined);
30
36
  this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_TYPE_KEY, toolType);
31
37
  this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_CALL_ID_KEY, toolCallId);
32
38
  this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_DESCRIPTION_KEY, description);
33
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, conversationId);
34
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, sourceMetadata?.name);
35
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, sourceMetadata?.description);
39
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, request.conversationId);
40
+ this.setTagMaybe(OpenTelemetryConstants.CHANNEL_NAME_KEY, request.channel?.name);
41
+ this.setTagMaybe(OpenTelemetryConstants.CHANNEL_LINK_KEY, request.channel?.description);
36
42
  // Set endpoint information if provided
37
43
  if (endpoint) {
38
44
  this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, endpoint.host);
@@ -44,10 +50,10 @@ export class ExecuteToolScope extends OpenTelemetryScope {
44
50
  }
45
51
  /**
46
52
  * Records response information for telemetry tracking.
47
- * @param response The tool execution response
53
+ * @param response The tool execution response. Objects are serialized to JSON automatically.
48
54
  */
49
55
  recordResponse(response) {
50
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EVENT_CONTENT, response);
56
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_CALL_RESULT_KEY, safeSerializeToJson(response, 'result'));
51
57
  }
52
58
  }
53
59
  //# sourceMappingURL=ExecuteToolScope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecuteToolScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/ExecuteToolScope.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CACjB,OAAwB,EACxB,YAA0B,EAC1B,aAA4B,EAC5B,cAAuB,EACvB,cAA6D,EAC7D,aAA6B;QAE7B,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACnH,CAAC;IAED,YACE,OAAwB,EACxB,YAA0B,EAC1B,aAA4B,EAC5B,cAAuB,EACvB,cAA6D,EAC7D,aAA6B;QAE7B,KAAK,CACH,QAAQ,CAAC,QAAQ,EACjB,sBAAsB,CAAC,2BAA2B,EAClD,GAAG,sBAAsB,CAAC,2BAA2B,IAAI,OAAO,CAAC,QAAQ,EAAE,EAC3E,YAAY,EACZ,aAAa,EACb,aAAa,CACd,CAAC;QAEF,qDAAqD;QACrD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE3F,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QAChG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAG9G,uCAAuC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE3E,oEAAoE;YACpE,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,QAAgB;QACpC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;CACF"}
1
+ {"version":3,"file":"ExecuteToolScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/ExecuteToolScope.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,21 @@
1
1
  import { OpenTelemetryScope } from './OpenTelemetryScope';
2
- import { InferenceDetails, AgentDetails, TenantDetails, SourceMetadata } from '../contracts';
3
- import { ParentSpanRef } from '../context/parent-span-context';
2
+ import { InferenceDetails, AgentDetails, UserDetails, Request, SpanDetails, InputMessagesParam, OutputMessagesParam } from '../contracts';
4
3
  /**
5
4
  * Provides OpenTelemetry tracing scope for generative AI inference operations.
6
5
  */
7
6
  export declare class InferenceScope extends OpenTelemetryScope {
8
7
  /**
9
8
  * Creates and starts a new scope for inference tracing.
10
- * @param details The inference call details
11
- * @param agentDetails The agent details
12
- * @param tenantDetails The tenant details
13
- * @param conversationId Optional conversation id to tag on the span (`gen_ai.conversation.id`).
14
- * @param sourceMetadata Optional source metadata; only `name` (channel name) and `description` (channel link/URL) are used for tagging.
15
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing.
9
+ *
10
+ * @param request Request payload (channel, conversationId, content, sessionId).
11
+ * @param details The inference call details (model, provider, tokens, etc.).
12
+ * @param agentDetails The agent performing the inference. Tenant ID is derived from `agentDetails.tenantId`.
13
+ * @param userDetails Optional human caller identity.
14
+ * @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanLinks). Note: `spanKind` is ignored; InferenceScope always uses `SpanKind.CLIENT`.
16
15
  * @returns A new InferenceScope instance
17
16
  */
18
- static start(details: InferenceDetails, agentDetails: AgentDetails, tenantDetails: TenantDetails, conversationId?: string, sourceMetadata?: Pick<SourceMetadata, "name" | "description">, parentSpanRef?: ParentSpanRef): InferenceScope;
17
+ static start(request: Request, details: InferenceDetails, agentDetails: AgentDetails, userDetails?: UserDetails, spanDetails?: SpanDetails): InferenceScope;
19
18
  private constructor();
20
- /**
21
- * Records the input messages for telemetry tracking.
22
- * @param messages Array of input messages
23
- */
24
- recordInputMessages(messages: string[]): void;
25
- /**
26
- * Records the output messages for telemetry tracking.
27
- * @param messages Array of output messages
28
- */
29
- recordOutputMessages(messages: string[]): void;
30
19
  /**
31
20
  * Records the number of input tokens for telemetry tracking.
32
21
  * @param inputTokens Number of input tokens
@@ -37,15 +26,22 @@ export declare class InferenceScope extends OpenTelemetryScope {
37
26
  * @param outputTokens Number of output tokens
38
27
  */
39
28
  recordOutputTokens(outputTokens: number): void;
40
- /**
41
- * Records the response id for telemetry tracking.
42
- * @param responseId The response ID
43
- */
44
- recordResponseId(responseId: string): void;
45
29
  /**
46
30
  * Records the finish reasons for telemetry tracking.
47
31
  * @param finishReasons Array of finish reasons
48
32
  */
49
33
  recordFinishReasons(finishReasons: string[]): void;
34
+ /**
35
+ * Records the input messages for telemetry tracking.
36
+ * Accepts plain strings (auto-wrapped as OTEL ChatMessage with role `user`) or a versioned InputMessages wrapper.
37
+ * @param messages Array of input message strings or an InputMessages wrapper
38
+ */
39
+ recordInputMessages(messages: InputMessagesParam): void;
40
+ /**
41
+ * Records the output messages for telemetry tracking.
42
+ * Accepts plain strings (auto-wrapped as OTEL OutputMessage with role `assistant`) or a versioned OutputMessages wrapper.
43
+ * @param messages Array of output message strings or an OutputMessages wrapper
44
+ */
45
+ recordOutputMessages(messages: OutputMessagesParam): void;
50
46
  }
51
47
  //# sourceMappingURL=InferenceScope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InferenceScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;;;;;;OASG;WACW,KAAK,CACjB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAAC,EAC7D,aAAa,CAAC,EAAE,aAAa,GAC5B,cAAc;IAIjB,OAAO;IA8BP;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpD;;;OAGG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIrD;;;OAGG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAInD;;;OAGG;IACI,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIrD;;;OAGG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMjD;;;OAGG;IACI,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;CAM1D"}
1
+ {"version":3,"file":"InferenceScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;;;;;;OASG;WACW,KAAK,CACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,GACxB,cAAc;IAIjB,OAAO;IA6CP;;;OAGG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAInD;;;OAGG;IACI,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIrD;;;OAGG;IACI,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAMzD;;;;OAIG;IACa,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIvE;;;;OAIG;IACa,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;CAG1E"}
@@ -1,6 +1,5 @@
1
- // ------------------------------------------------------------------------------
2
- // Copyright (c) Microsoft Corporation. All rights reserved.
3
- // ------------------------------------------------------------------------------
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
4
3
  import { SpanKind } from '@opentelemetry/api';
5
4
  import { OpenTelemetryScope } from './OpenTelemetryScope';
6
5
  import { OpenTelemetryConstants } from '../constants';
@@ -10,67 +9,57 @@ import { OpenTelemetryConstants } from '../constants';
10
9
  export class InferenceScope extends OpenTelemetryScope {
11
10
  /**
12
11
  * Creates and starts a new scope for inference tracing.
13
- * @param details The inference call details
14
- * @param agentDetails The agent details
15
- * @param tenantDetails The tenant details
16
- * @param conversationId Optional conversation id to tag on the span (`gen_ai.conversation.id`).
17
- * @param sourceMetadata Optional source metadata; only `name` (channel name) and `description` (channel link/URL) are used for tagging.
18
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing.
12
+ *
13
+ * @param request Request payload (channel, conversationId, content, sessionId).
14
+ * @param details The inference call details (model, provider, tokens, etc.).
15
+ * @param agentDetails The agent performing the inference. Tenant ID is derived from `agentDetails.tenantId`.
16
+ * @param userDetails Optional human caller identity.
17
+ * @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanLinks). Note: `spanKind` is ignored; InferenceScope always uses `SpanKind.CLIENT`.
19
18
  * @returns A new InferenceScope instance
20
19
  */
21
- static start(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef) {
22
- return new InferenceScope(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef);
20
+ static start(request, details, agentDetails, userDetails, spanDetails) {
21
+ return new InferenceScope(request, details, agentDetails, userDetails, spanDetails);
23
22
  }
24
- constructor(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef) {
25
- super(SpanKind.CLIENT, details.operationName.toString(), `${details.operationName} ${details.model}`, agentDetails, tenantDetails, parentSpanRef);
26
- // Set core inference information matching C# implementation
27
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY, details.operationName.toString());
23
+ constructor(request, details, agentDetails, userDetails, spanDetails) {
24
+ // Validate tenantId is present (required for telemetry)
25
+ if (!agentDetails.tenantId) {
26
+ throw new Error('InferenceScope: tenantId is required on agentDetails');
27
+ }
28
+ // spanKind for InferenceScope is always CLIENT
29
+ const resolvedSpanDetails = { ...spanDetails, spanKind: SpanKind.CLIENT };
30
+ super(details.operationName.toString(), `${details.operationName} ${details.model}`, agentDetails, resolvedSpanDetails, userDetails);
31
+ // Set core inference information
28
32
  this.setTagMaybe(OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY, details.model);
29
33
  this.setTagMaybe(OpenTelemetryConstants.GEN_AI_PROVIDER_NAME_KEY, details.providerName);
30
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, details.inputTokens?.toString());
31
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, details.outputTokens?.toString());
32
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, details.finishReasons?.join(','));
33
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY, details.responseId);
34
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, conversationId);
35
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, sourceMetadata?.name);
36
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, sourceMetadata?.description);
37
- }
38
- /**
39
- * Records the input messages for telemetry tracking.
40
- * @param messages Array of input messages
41
- */
42
- recordInputMessages(messages) {
43
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, messages.join(','));
44
- }
45
- /**
46
- * Records the output messages for telemetry tracking.
47
- * @param messages Array of output messages
48
- */
49
- recordOutputMessages(messages) {
50
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, messages.join(','));
34
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, details.inputTokens);
35
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, details.outputTokens);
36
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, details.finishReasons);
37
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_THOUGHT_PROCESS_KEY, details.thoughtProcess);
38
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, request.conversationId);
39
+ this.setTagMaybe(OpenTelemetryConstants.CHANNEL_NAME_KEY, request.channel?.name);
40
+ this.setTagMaybe(OpenTelemetryConstants.CHANNEL_LINK_KEY, request.channel?.description);
41
+ // Set endpoint information if provided
42
+ if (details.endpoint) {
43
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, details.endpoint.host);
44
+ // Only record port if it is different from 443 (default HTTPS port)
45
+ if (details.endpoint.port && details.endpoint.port !== 443) {
46
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_PORT_KEY, details.endpoint.port);
47
+ }
48
+ }
51
49
  }
52
50
  /**
53
51
  * Records the number of input tokens for telemetry tracking.
54
52
  * @param inputTokens Number of input tokens
55
53
  */
56
54
  recordInputTokens(inputTokens) {
57
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, inputTokens.toString());
55
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, inputTokens);
58
56
  }
59
57
  /**
60
58
  * Records the number of output tokens for telemetry tracking.
61
59
  * @param outputTokens Number of output tokens
62
60
  */
63
61
  recordOutputTokens(outputTokens) {
64
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, outputTokens.toString());
65
- }
66
- /**
67
- * Records the response id for telemetry tracking.
68
- * @param responseId The response ID
69
- */
70
- recordResponseId(responseId) {
71
- if (responseId && responseId.trim()) {
72
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY, responseId);
73
- }
62
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, outputTokens);
74
63
  }
75
64
  /**
76
65
  * Records the finish reasons for telemetry tracking.
@@ -78,8 +67,24 @@ export class InferenceScope extends OpenTelemetryScope {
78
67
  */
79
68
  recordFinishReasons(finishReasons) {
80
69
  if (finishReasons && finishReasons.length > 0) {
81
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, finishReasons.join(','));
70
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, finishReasons);
82
71
  }
83
72
  }
73
+ /**
74
+ * Records the input messages for telemetry tracking.
75
+ * Accepts plain strings (auto-wrapped as OTEL ChatMessage with role `user`) or a versioned InputMessages wrapper.
76
+ * @param messages Array of input message strings or an InputMessages wrapper
77
+ */
78
+ recordInputMessages(messages) {
79
+ super.recordInputMessages(messages);
80
+ }
81
+ /**
82
+ * Records the output messages for telemetry tracking.
83
+ * Accepts plain strings (auto-wrapped as OTEL OutputMessage with role `assistant`) or a versioned OutputMessages wrapper.
84
+ * @param messages Array of output message strings or an OutputMessages wrapper
85
+ */
86
+ recordOutputMessages(messages) {
87
+ super.recordOutputMessages(messages);
88
+ }
84
89
  }
85
90
  //# sourceMappingURL=InferenceScope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InferenceScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAStD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IACpD;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CACjB,OAAyB,EACzB,YAA0B,EAC1B,aAA4B,EAC5B,cAAuB,EACvB,cAA6D,EAC7D,aAA6B;QAE7B,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACjH,CAAC;IAED,YACE,OAAyB,EACzB,YAA0B,EAC1B,aAA4B,EAC5B,cAAuB,EACvB,cAA6D,EAC7D,aAA6B;QAE7B,KAAK,CACH,QAAQ,CAAC,MAAM,EACf,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAChC,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,EAC3C,YAAY,EACZ,aAAa,EACb,aAAa,CACd,CAAC;QAEF,4DAA4D;QAC5D,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,kCAAkC,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QAChG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,uCAAuC,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAChH,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,QAAkB;QAC3C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,yBAAyB,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,CAAC;IAED;;;OAGG;IACI,oBAAoB,CAAC,QAAkB;QAC5C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,WAAmB;QAC1C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjG,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,YAAoB;QAC5C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,8BAA8B,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnG,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,UAAkB;QACxC,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,aAAuB;QAChD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,kCAAkC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;CAEF"}
1
+ {"version":3,"file":"InferenceScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAWtD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IACpD;;;;;;;;;OASG;IACI,MAAM,CAAC,KAAK,CACjB,OAAgB,EAChB,OAAyB,EACzB,YAA0B,EAC1B,WAAyB,EACzB,WAAyB;QAEzB,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACtF,CAAC;IAED,YACE,OAAgB,EAChB,OAAyB,EACzB,YAA0B,EAC1B,WAAyB,EACzB,WAAyB;QAEzB,wDAAwD;QACxD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,+CAA+C;QAC/C,MAAM,mBAAmB,GAAgB,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEvF,KAAK,CACH,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAChC,GAAG,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,EAC3C,YAAY,EACZ,mBAAmB,EACnB,WAAW,CACZ,CAAC;QAEF,iCAAiC;QACjC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,wBAAwB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5F,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,8BAA8B,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9F,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,kCAAkC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACnG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAClG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,0BAA0B,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAExF,uCAAuC;QACvC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEnF,oEAAoE;YACpE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,WAAmB;QAC1C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;IACtF,CAAC;IAED;;;OAGG;IACI,kBAAkB,CAAC,YAAoB;QAC5C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAC;IACxF,CAAC;IAED;;;OAGG;IACI,mBAAmB,CAAC,aAAuB;QAChD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,kCAAkC,EAAE,aAAa,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED;;;;OAIG;IACa,mBAAmB,CAAC,QAA4B;QAC9D,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACa,oBAAoB,CAAC,QAA6B;QAChE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -1,20 +1,23 @@
1
1
  import { OpenTelemetryScope } from './OpenTelemetryScope';
2
- import { InvokeAgentDetails, TenantDetails, CallerDetails, AgentDetails } from '../contracts';
3
- import { ParentSpanRef } from '../context/parent-span-context';
2
+ import { InvokeAgentScopeDetails, CallerDetails, Request, SpanDetails, AgentDetails, InputMessagesParam, OutputMessagesParam } from '../contracts';
4
3
  /**
5
4
  * Provides OpenTelemetry tracing scope for AI agent invocation operations.
6
5
  */
7
6
  export declare class InvokeAgentScope extends OpenTelemetryScope {
8
7
  /**
9
8
  * Creates and starts a new scope for agent invocation tracing.
10
- * @param invokeAgentDetails The details of the agent invocation including endpoint, agent information, and conversation context.
11
- * @param tenantDetails The tenant details.
12
- * @param callerAgentDetails The details of the caller agent.
13
- * @param callerDetails The details of the non-agentic caller.
14
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing.
9
+ *
10
+ * @param request Request payload (channel, conversationId, content, sessionId).
11
+ * @param invokeScopeDetails Scope-level details
12
+ * @param agentDetails The agent identity. Tenant ID is derived from `agentDetails.tenantId` (required).
13
+ * @param callerDetails Optional caller information. Supports three scenarios:
14
+ * - Human caller only: `{ userDetails: { userId, userName, ... } }`
15
+ * - Agent caller only: `{ callerAgentDetails: { agentId, agentName, ... } }`
16
+ * - Both (A2A with human in chain): `{ userDetails: { ... }, callerAgentDetails: { ... } }`
17
+ * @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanKind, spanLinks).
15
18
  * @returns A new InvokeAgentScope instance.
16
19
  */
17
- static start(invokeAgentDetails: InvokeAgentDetails, tenantDetails: TenantDetails, callerAgentDetails?: AgentDetails, callerDetails?: CallerDetails, parentSpanRef?: ParentSpanRef): InvokeAgentScope;
20
+ static start(request: Request, invokeScopeDetails: InvokeAgentScopeDetails, agentDetails: AgentDetails, callerDetails?: CallerDetails, spanDetails?: SpanDetails): InvokeAgentScope;
18
21
  private constructor();
19
22
  /**
20
23
  * Records response information for telemetry tracking.
@@ -23,13 +26,15 @@ export declare class InvokeAgentScope extends OpenTelemetryScope {
23
26
  recordResponse(response: string): void;
24
27
  /**
25
28
  * Records the input messages for telemetry tracking.
26
- * @param messages Array of input messages
29
+ * Accepts a single string, an array of strings (auto-wrapped as OTEL ChatMessage with role `user`), or a versioned InputMessages wrapper.
30
+ * @param messages A string, array of strings, or an InputMessages wrapper
27
31
  */
28
- recordInputMessages(messages: string[]): void;
32
+ recordInputMessages(messages: InputMessagesParam): void;
29
33
  /**
30
34
  * Records the output messages for telemetry tracking.
31
- * @param messages Array of output messages
35
+ * Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage with role `assistant`), or a versioned OutputMessages wrapper.
36
+ * @param messages A string, array of strings, or an OutputMessages wrapper
32
37
  */
33
- recordOutputMessages(messages: string[]): void;
38
+ recordOutputMessages(messages: OutputMessagesParam): void;
34
39
  }
35
40
  //# sourceMappingURL=InvokeAgentScope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvokeAgentScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;;;OAQG;WACW,KAAK,CACjB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,kBAAkB,CAAC,EAAE,YAAY,EACjC,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,aAAa,GAC5B,gBAAgB;IAInB,OAAO;IAmEP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpD;;;OAGG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAGtD"}
1
+ {"version":3,"file":"InvokeAgentScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAGtB;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;;;;;;;OAYG;WACW,KAAK,CACjB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,uBAAuB,EAC3C,YAAY,EAAE,YAAY,EAC1B,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,WAAW,GACxB,gBAAgB;IAInB,OAAO;IAiEP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C;;;;OAIG;IACa,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIvE;;;;OAIG;IACa,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;CAG1E"}
@@ -1,6 +1,5 @@
1
- // ------------------------------------------------------------------------------
2
- // Copyright (c) Microsoft Corporation. All rights reserved.
3
- // ------------------------------------------------------------------------------
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
4
3
  import { SpanKind } from '@opentelemetry/api';
5
4
  import { OpenTelemetryScope } from './OpenTelemetryScope';
6
5
  import { OpenTelemetryConstants } from '../constants';
@@ -10,60 +9,60 @@ import { OpenTelemetryConstants } from '../constants';
10
9
  export class InvokeAgentScope extends OpenTelemetryScope {
11
10
  /**
12
11
  * Creates and starts a new scope for agent invocation tracing.
13
- * @param invokeAgentDetails The details of the agent invocation including endpoint, agent information, and conversation context.
14
- * @param tenantDetails The tenant details.
15
- * @param callerAgentDetails The details of the caller agent.
16
- * @param callerDetails The details of the non-agentic caller.
17
- * @param parentSpanRef Optional explicit parent span reference for cross-async-boundary tracing.
12
+ *
13
+ * @param request Request payload (channel, conversationId, content, sessionId).
14
+ * @param invokeScopeDetails Scope-level details
15
+ * @param agentDetails The agent identity. Tenant ID is derived from `agentDetails.tenantId` (required).
16
+ * @param callerDetails Optional caller information. Supports three scenarios:
17
+ * - Human caller only: `{ userDetails: { userId, userName, ... } }`
18
+ * - Agent caller only: `{ callerAgentDetails: { agentId, agentName, ... } }`
19
+ * - Both (A2A with human in chain): `{ userDetails: { ... }, callerAgentDetails: { ... } }`
20
+ * @param spanDetails Optional span configuration (parentContext, startTime, endTime, spanKind, spanLinks).
18
21
  * @returns A new InvokeAgentScope instance.
19
22
  */
20
- static start(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails, parentSpanRef) {
21
- return new InvokeAgentScope(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails, parentSpanRef);
23
+ static start(request, invokeScopeDetails, agentDetails, callerDetails, spanDetails) {
24
+ return new InvokeAgentScope(request, invokeScopeDetails, agentDetails, callerDetails, spanDetails);
22
25
  }
23
- constructor(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails, parentSpanRef) {
24
- super(SpanKind.CLIENT, OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, invokeAgentDetails.agentName
25
- ? `${OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME} ${invokeAgentDetails.agentName}`
26
- : OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, invokeAgentDetails, tenantDetails, parentSpanRef);
27
- // Set session ID and endpoint information
28
- this.setTagMaybe(OpenTelemetryConstants.SESSION_ID_KEY, invokeAgentDetails.sessionId);
29
- if (invokeAgentDetails.endpoint) {
30
- this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, invokeAgentDetails.endpoint.host);
26
+ constructor(request, invokeScopeDetails, agentDetails, callerDetails, spanDetails) {
27
+ // Validate tenantId is present (required for telemetry)
28
+ if (!agentDetails.tenantId) {
29
+ throw new Error('InvokeAgentScope: tenantId is required on agentDetails');
30
+ }
31
+ const resolvedSpanDetails = { ...spanDetails, spanKind: spanDetails?.spanKind ?? SpanKind.CLIENT };
32
+ super(OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, agentDetails.agentName
33
+ ? `${OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME} ${agentDetails.agentName}`
34
+ : OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, agentDetails, resolvedSpanDetails, callerDetails?.userDetails);
35
+ // Set provider name from agent details
36
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_PROVIDER_NAME_KEY, agentDetails.providerName);
37
+ // Set session ID from request
38
+ this.setTagMaybe(OpenTelemetryConstants.SESSION_ID_KEY, request.sessionId);
39
+ if (invokeScopeDetails.endpoint) {
40
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, invokeScopeDetails.endpoint.host);
31
41
  // Only record port if it is different from 443 (default HTTPS port)
32
- if (invokeAgentDetails.endpoint.port && invokeAgentDetails.endpoint.port !== 443) {
33
- this.setTagMaybe(OpenTelemetryConstants.SERVER_PORT_KEY, invokeAgentDetails.endpoint.port);
42
+ if (invokeScopeDetails.endpoint.port && invokeScopeDetails.endpoint.port !== 443) {
43
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_PORT_KEY, invokeScopeDetails.endpoint.port);
34
44
  }
35
45
  }
36
- // Set request-related tags
37
- const requestToUse = invokeAgentDetails.request;
38
- if (requestToUse) {
39
- if (requestToUse.executionType) {
40
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY, requestToUse.executionType.toString());
41
- }
42
- if (requestToUse.sourceMetadata) {
43
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_ID_KEY, requestToUse.sourceMetadata.id);
44
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, requestToUse.sourceMetadata.name);
45
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, requestToUse.sourceMetadata.description);
46
- }
46
+ // Set channel tags from request
47
+ if (request.channel) {
48
+ this.setTagMaybe(OpenTelemetryConstants.CHANNEL_NAME_KEY, request.channel.name);
49
+ this.setTagMaybe(OpenTelemetryConstants.CHANNEL_LINK_KEY, request.channel.description);
47
50
  }
48
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, invokeAgentDetails.conversationId);
49
- // Set caller details tags
50
- if (callerDetails) {
51
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_ID_KEY, callerDetails.callerId);
52
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_UPN_KEY, callerDetails.callerUpn);
53
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_NAME_KEY, callerDetails.callerName);
54
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_TENANT_ID_KEY, callerDetails.tenantId);
55
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_CLIENT_IP_KEY, callerDetails.callerClientIp);
51
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, request.conversationId);
52
+ // Record request content as input messages
53
+ if (request.content != null) {
54
+ this.recordInputMessages(request.content);
56
55
  }
57
- // Set caller agent details tags
58
- if (callerAgentDetails) {
59
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_NAME_KEY, callerAgentDetails.agentName);
60
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_ID_KEY, callerAgentDetails.agentId);
61
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY, callerAgentDetails.agentBlueprintId);
62
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_USER_ID_KEY, callerAgentDetails.agentAUID);
63
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_UPN_KEY, callerAgentDetails.agentUPN);
64
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_TENANT_ID_KEY, callerAgentDetails.tenantId);
65
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_CLIENT_IP_KEY, callerAgentDetails.agentClientIP);
66
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY, callerAgentDetails.platformId);
56
+ // Set caller agent details tags for A2A scenarios
57
+ const callerAgent = callerDetails?.callerAgentDetails;
58
+ if (callerAgent) {
59
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_NAME_KEY, callerAgent.agentName);
60
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_ID_KEY, callerAgent.agentId);
61
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY, callerAgent.agentBlueprintId);
62
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_USER_ID_KEY, callerAgent.agentAUID);
63
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_EMAIL_KEY, callerAgent.agentEmail);
64
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY, callerAgent.platformId);
65
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_VERSION_KEY, callerAgent.agentVersion);
67
66
  }
68
67
  }
69
68
  /**
@@ -71,21 +70,23 @@ export class InvokeAgentScope extends OpenTelemetryScope {
71
70
  * @param response The invocation response
72
71
  */
73
72
  recordResponse(response) {
74
- this.recordOutputMessages([response]);
73
+ this.recordOutputMessages(response);
75
74
  }
76
75
  /**
77
76
  * Records the input messages for telemetry tracking.
78
- * @param messages Array of input messages
77
+ * Accepts a single string, an array of strings (auto-wrapped as OTEL ChatMessage with role `user`), or a versioned InputMessages wrapper.
78
+ * @param messages A string, array of strings, or an InputMessages wrapper
79
79
  */
80
80
  recordInputMessages(messages) {
81
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, messages.join(','));
81
+ super.recordInputMessages(messages);
82
82
  }
83
83
  /**
84
84
  * Records the output messages for telemetry tracking.
85
- * @param messages Array of output messages
85
+ * Accepts a single string, an array of strings (auto-wrapped as OTEL OutputMessage with role `assistant`), or a versioned OutputMessages wrapper.
86
+ * @param messages A string, array of strings, or an OutputMessages wrapper
86
87
  */
87
88
  recordOutputMessages(messages) {
88
- this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, messages.join(','));
89
+ super.recordOutputMessages(messages);
89
90
  }
90
91
  }
91
92
  //# sourceMappingURL=InvokeAgentScope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvokeAgentScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InvokeAgentScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"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"}