@microsoft/agents-a365-observability 0.1.0-preview.103

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 (211) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +33 -0
  3. package/dist/cjs/ObservabilityBuilder.d.ts +101 -0
  4. package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -0
  5. package/dist/cjs/ObservabilityBuilder.js +246 -0
  6. package/dist/cjs/ObservabilityBuilder.js.map +1 -0
  7. package/dist/cjs/ObservabilityManager.d.ts +29 -0
  8. package/dist/cjs/ObservabilityManager.d.ts.map +1 -0
  9. package/dist/cjs/ObservabilityManager.js +61 -0
  10. package/dist/cjs/ObservabilityManager.js.map +1 -0
  11. package/dist/cjs/configuration/ObservabilityConfiguration.d.ts +20 -0
  12. package/dist/cjs/configuration/ObservabilityConfiguration.d.ts.map +1 -0
  13. package/dist/cjs/configuration/ObservabilityConfiguration.js +66 -0
  14. package/dist/cjs/configuration/ObservabilityConfiguration.js.map +1 -0
  15. package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts +68 -0
  16. package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
  17. package/dist/cjs/configuration/ObservabilityConfigurationOptions.js +5 -0
  18. package/dist/cjs/configuration/ObservabilityConfigurationOptions.js.map +1 -0
  19. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts +19 -0
  20. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
  21. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js +53 -0
  22. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
  23. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +55 -0
  24. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
  25. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js +5 -0
  26. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
  27. package/dist/cjs/configuration/index.d.ts +16 -0
  28. package/dist/cjs/configuration/index.d.ts.map +1 -0
  29. package/dist/cjs/configuration/index.js +35 -0
  30. package/dist/cjs/configuration/index.js.map +1 -0
  31. package/dist/cjs/index.d.ts +17 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +67 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts +41 -0
  36. package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
  37. package/dist/cjs/tracing/PerRequestSpanProcessor.js +252 -0
  38. package/dist/cjs/tracing/PerRequestSpanProcessor.js.map +1 -0
  39. package/dist/cjs/tracing/constants.d.ts +108 -0
  40. package/dist/cjs/tracing/constants.d.ts.map +1 -0
  41. package/dist/cjs/tracing/constants.js +127 -0
  42. package/dist/cjs/tracing/constants.js.map +1 -0
  43. package/dist/cjs/tracing/context/parent-span-context.d.ts +37 -0
  44. package/dist/cjs/tracing/context/parent-span-context.d.ts.map +1 -0
  45. package/dist/cjs/tracing/context/parent-span-context.js +63 -0
  46. package/dist/cjs/tracing/context/parent-span-context.js.map +1 -0
  47. package/dist/cjs/tracing/context/token-context.d.ts +11 -0
  48. package/dist/cjs/tracing/context/token-context.d.ts.map +1 -0
  49. package/dist/cjs/tracing/context/token-context.js +29 -0
  50. package/dist/cjs/tracing/context/token-context.js.map +1 -0
  51. package/dist/cjs/tracing/contracts.d.ts +190 -0
  52. package/dist/cjs/tracing/contracts.d.ts.map +1 -0
  53. package/dist/cjs/tracing/contracts.js +44 -0
  54. package/dist/cjs/tracing/contracts.js.map +1 -0
  55. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +53 -0
  56. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  57. package/dist/cjs/tracing/exporter/Agent365Exporter.js +385 -0
  58. package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -0
  59. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts +39 -0
  60. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -0
  61. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js +41 -0
  62. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js.map +1 -0
  63. package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts +19 -0
  64. package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
  65. package/dist/cjs/tracing/exporter/ExporterEventNames.js +24 -0
  66. package/dist/cjs/tracing/exporter/ExporterEventNames.js.map +1 -0
  67. package/dist/cjs/tracing/exporter/utils.d.ts +68 -0
  68. package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -0
  69. package/dist/cjs/tracing/exporter/utils.js +180 -0
  70. package/dist/cjs/tracing/exporter/utils.js.map +1 -0
  71. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +220 -0
  72. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  73. package/dist/cjs/tracing/middleware/BaggageBuilder.js +356 -0
  74. package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -0
  75. package/dist/cjs/tracing/processors/SpanProcessor.d.ts +30 -0
  76. package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -0
  77. package/dist/cjs/tracing/processors/SpanProcessor.js +107 -0
  78. package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -0
  79. package/dist/cjs/tracing/processors/util.d.ts +9 -0
  80. package/dist/cjs/tracing/processors/util.d.ts.map +1 -0
  81. package/dist/cjs/tracing/processors/util.js +57 -0
  82. package/dist/cjs/tracing/processors/util.js.map +1 -0
  83. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +26 -0
  84. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  85. package/dist/cjs/tracing/scopes/ExecuteToolScope.js +57 -0
  86. package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -0
  87. package/dist/cjs/tracing/scopes/InferenceScope.d.ts +51 -0
  88. package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -0
  89. package/dist/cjs/tracing/scopes/InferenceScope.js +89 -0
  90. package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -0
  91. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +35 -0
  92. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  93. package/dist/cjs/tracing/scopes/InvokeAgentScope.js +96 -0
  94. package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -0
  95. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +69 -0
  96. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  97. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +190 -0
  98. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  99. package/dist/cjs/tracing/util.d.ts +13 -0
  100. package/dist/cjs/tracing/util.d.ts.map +1 -0
  101. package/dist/cjs/tracing/util.js +23 -0
  102. package/dist/cjs/tracing/util.js.map +1 -0
  103. package/dist/cjs/utils/logging.d.ts +111 -0
  104. package/dist/cjs/utils/logging.d.ts.map +1 -0
  105. package/dist/cjs/utils/logging.js +163 -0
  106. package/dist/cjs/utils/logging.js.map +1 -0
  107. package/dist/esm/ObservabilityBuilder.d.ts +101 -0
  108. package/dist/esm/ObservabilityBuilder.d.ts.map +1 -0
  109. package/dist/esm/ObservabilityBuilder.js +209 -0
  110. package/dist/esm/ObservabilityBuilder.js.map +1 -0
  111. package/dist/esm/ObservabilityManager.d.ts +29 -0
  112. package/dist/esm/ObservabilityManager.d.ts.map +1 -0
  113. package/dist/esm/ObservabilityManager.js +57 -0
  114. package/dist/esm/ObservabilityManager.js.map +1 -0
  115. package/dist/esm/configuration/ObservabilityConfiguration.d.ts +20 -0
  116. package/dist/esm/configuration/ObservabilityConfiguration.d.ts.map +1 -0
  117. package/dist/esm/configuration/ObservabilityConfiguration.js +62 -0
  118. package/dist/esm/configuration/ObservabilityConfiguration.js.map +1 -0
  119. package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts +68 -0
  120. package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
  121. package/dist/esm/configuration/ObservabilityConfigurationOptions.js +4 -0
  122. package/dist/esm/configuration/ObservabilityConfigurationOptions.js.map +1 -0
  123. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts +19 -0
  124. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
  125. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js +49 -0
  126. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
  127. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +55 -0
  128. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
  129. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js +4 -0
  130. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
  131. package/dist/esm/configuration/index.d.ts +16 -0
  132. package/dist/esm/configuration/index.d.ts.map +1 -0
  133. package/dist/esm/configuration/index.js +18 -0
  134. package/dist/esm/configuration/index.js.map +1 -0
  135. package/dist/esm/index.d.ts +17 -0
  136. package/dist/esm/index.d.ts.map +1 -0
  137. package/dist/esm/index.js +27 -0
  138. package/dist/esm/index.js.map +1 -0
  139. package/dist/esm/tracing/PerRequestSpanProcessor.d.ts +41 -0
  140. package/dist/esm/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
  141. package/dist/esm/tracing/PerRequestSpanProcessor.js +245 -0
  142. package/dist/esm/tracing/PerRequestSpanProcessor.js.map +1 -0
  143. package/dist/esm/tracing/constants.d.ts +108 -0
  144. package/dist/esm/tracing/constants.d.ts.map +1 -0
  145. package/dist/esm/tracing/constants.js +123 -0
  146. package/dist/esm/tracing/constants.js.map +1 -0
  147. package/dist/esm/tracing/context/parent-span-context.d.ts +37 -0
  148. package/dist/esm/tracing/context/parent-span-context.d.ts.map +1 -0
  149. package/dist/esm/tracing/context/parent-span-context.js +56 -0
  150. package/dist/esm/tracing/context/parent-span-context.js.map +1 -0
  151. package/dist/esm/tracing/context/token-context.d.ts +11 -0
  152. package/dist/esm/tracing/context/token-context.d.ts.map +1 -0
  153. package/dist/esm/tracing/context/token-context.js +22 -0
  154. package/dist/esm/tracing/context/token-context.js.map +1 -0
  155. package/dist/esm/tracing/contracts.d.ts +190 -0
  156. package/dist/esm/tracing/contracts.d.ts.map +1 -0
  157. package/dist/esm/tracing/contracts.js +41 -0
  158. package/dist/esm/tracing/contracts.js.map +1 -0
  159. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +53 -0
  160. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  161. package/dist/esm/tracing/exporter/Agent365Exporter.js +348 -0
  162. package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -0
  163. package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts +39 -0
  164. package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -0
  165. package/dist/esm/tracing/exporter/Agent365ExporterOptions.js +37 -0
  166. package/dist/esm/tracing/exporter/Agent365ExporterOptions.js.map +1 -0
  167. package/dist/esm/tracing/exporter/ExporterEventNames.d.ts +19 -0
  168. package/dist/esm/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
  169. package/dist/esm/tracing/exporter/ExporterEventNames.js +21 -0
  170. package/dist/esm/tracing/exporter/ExporterEventNames.js.map +1 -0
  171. package/dist/esm/tracing/exporter/utils.d.ts +68 -0
  172. package/dist/esm/tracing/exporter/utils.d.ts.map +1 -0
  173. package/dist/esm/tracing/exporter/utils.js +163 -0
  174. package/dist/esm/tracing/exporter/utils.js.map +1 -0
  175. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +220 -0
  176. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  177. package/dist/esm/tracing/middleware/BaggageBuilder.js +351 -0
  178. package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -0
  179. package/dist/esm/tracing/processors/SpanProcessor.d.ts +30 -0
  180. package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -0
  181. package/dist/esm/tracing/processors/SpanProcessor.js +103 -0
  182. package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -0
  183. package/dist/esm/tracing/processors/util.d.ts +9 -0
  184. package/dist/esm/tracing/processors/util.d.ts.map +1 -0
  185. package/dist/esm/tracing/processors/util.js +54 -0
  186. package/dist/esm/tracing/processors/util.js.map +1 -0
  187. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +26 -0
  188. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  189. package/dist/esm/tracing/scopes/ExecuteToolScope.js +53 -0
  190. package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -0
  191. package/dist/esm/tracing/scopes/InferenceScope.d.ts +51 -0
  192. package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -0
  193. package/dist/esm/tracing/scopes/InferenceScope.js +85 -0
  194. package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -0
  195. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +35 -0
  196. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  197. package/dist/esm/tracing/scopes/InvokeAgentScope.js +92 -0
  198. package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -0
  199. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +69 -0
  200. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  201. package/dist/esm/tracing/scopes/OpenTelemetryScope.js +183 -0
  202. package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  203. package/dist/esm/tracing/util.d.ts +13 -0
  204. package/dist/esm/tracing/util.d.ts.map +1 -0
  205. package/dist/esm/tracing/util.js +19 -0
  206. package/dist/esm/tracing/util.js.map +1 -0
  207. package/dist/esm/utils/logging.d.ts +111 -0
  208. package/dist/esm/utils/logging.d.ts.map +1 -0
  209. package/dist/esm/utils/logging.js +155 -0
  210. package/dist/esm/utils/logging.js.map +1 -0
  211. package/package.json +71 -0
@@ -0,0 +1,351 @@
1
+ // ------------------------------------------------------------------------------
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // ------------------------------------------------------------------------------
4
+ import { propagation, context as otelContext } from '@opentelemetry/api';
5
+ import { OpenTelemetryConstants } from '../constants';
6
+ /**
7
+ * Per request baggage builder for OpenTelemetry context propagation.
8
+ *
9
+ * This class provides a fluent API for setting baggage values that will be
10
+ * propagated in the OpenTelemetry context.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const scope = new BaggageBuilder()
15
+ * .tenantId("tenant-123")
16
+ * .agentId("agent-456")
17
+ * .correlationId("corr-789")
18
+ * .build();
19
+ *
20
+ * scope.enter();
21
+ * // Baggage is set in this context
22
+ * // ... do work ...
23
+ * scope.exit();
24
+ * // Baggage is restored after exiting the context
25
+ * ```
26
+ */
27
+ export class BaggageBuilder {
28
+ constructor() {
29
+ this.pairs = new Map();
30
+ }
31
+ /**
32
+ * Set the operation source baggage value.
33
+ * @param value The operation source value
34
+ * @returns Self for method chaining
35
+ */
36
+ operationSource(value) {
37
+ this.set(OpenTelemetryConstants.OPERATION_SOURCE_KEY, value);
38
+ return this;
39
+ }
40
+ /**
41
+ * Set the tenant ID baggage value.
42
+ * @param value The tenant ID
43
+ * @returns Self for method chaining
44
+ */
45
+ tenantId(value) {
46
+ this.set(OpenTelemetryConstants.TENANT_ID_KEY, value);
47
+ return this;
48
+ }
49
+ /**
50
+ * Set the agent ID baggage value.
51
+ * @param value The agent ID
52
+ * @returns Self for method chaining
53
+ */
54
+ agentId(value) {
55
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY, value);
56
+ return this;
57
+ }
58
+ /**
59
+ * Set the agent AUID baggage value.
60
+ * @param value The agent AUID
61
+ * @returns Self for method chaining
62
+ */
63
+ agentAuid(value) {
64
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_AUID_KEY, value);
65
+ return this;
66
+ }
67
+ /**
68
+ * Set the agent UPN baggage value.
69
+ * @param value The agent UPN
70
+ * @returns Self for method chaining
71
+ */
72
+ agentUpn(value) {
73
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_UPN_KEY, value);
74
+ return this;
75
+ }
76
+ /**
77
+ * Set the agent blueprint ID baggage value.
78
+ * @param value The agent blueprint ID
79
+ * @returns Self for method chaining
80
+ */
81
+ agentBlueprintId(value) {
82
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_BLUEPRINT_ID_KEY, value);
83
+ return this;
84
+ }
85
+ /**
86
+ * Set the correlation ID baggage value.
87
+ * @param value The correlation ID
88
+ * @returns Self for method chaining
89
+ */
90
+ correlationId(value) {
91
+ this.set(OpenTelemetryConstants.CORRELATION_ID_KEY, value);
92
+ return this;
93
+ }
94
+ /**
95
+ * Set the session ID baggage value.
96
+ * @param value The session ID
97
+ * @returns Self for method chaining
98
+ */
99
+ sessionId(value) {
100
+ this.set(OpenTelemetryConstants.SESSION_ID_KEY, value);
101
+ return this;
102
+ }
103
+ /**
104
+ * Set the caller ID baggage value.
105
+ * @param value The caller ID
106
+ * @returns Self for method chaining
107
+ */
108
+ callerId(value) {
109
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_ID_KEY, value);
110
+ return this;
111
+ }
112
+ /**
113
+ * Set the hiring manager ID baggage value.
114
+ * @param value The hiring manager ID
115
+ * @returns Self for method chaining
116
+ */
117
+ hiringManagerId(value) {
118
+ this.set(OpenTelemetryConstants.HIRING_MANAGER_ID_KEY, value);
119
+ return this;
120
+ }
121
+ /**
122
+ * Set the agent name baggage value.
123
+ * @param value The agent name
124
+ * @returns Self for method chaining
125
+ */
126
+ agentName(value) {
127
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY, value);
128
+ return this;
129
+ }
130
+ /**
131
+ * Set the agent type baggage value.
132
+ * @param value The agent type
133
+ * @returns Self for method chaining
134
+ */
135
+ agentType(value) {
136
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_TYPE_KEY, value);
137
+ return this;
138
+ }
139
+ /**
140
+ * Set the agent description baggage value.
141
+ * @param value The agent description
142
+ * @returns Self for method chaining
143
+ */
144
+ agentDescription(value) {
145
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY, value);
146
+ return this;
147
+ }
148
+ /**
149
+ * Set the agent platform ID baggage value.
150
+ * @param value The agent platform ID
151
+ * @returns Self for method chaining
152
+ */
153
+ agentPlatformId(value) {
154
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_PLATFORM_ID_KEY, value);
155
+ return this;
156
+ }
157
+ /**
158
+ * Set the session description baggage value.
159
+ * @param value The session description
160
+ * @returns Self for method chaining
161
+ */
162
+ sessionDescription(value) {
163
+ this.set(OpenTelemetryConstants.SESSION_DESCRIPTION_KEY, value);
164
+ return this;
165
+ }
166
+ /**
167
+ * Set the caller name baggage value.
168
+ * @param value The caller name
169
+ * @returns Self for method chaining
170
+ */
171
+ callerName(value) {
172
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_NAME_KEY, value);
173
+ return this;
174
+ }
175
+ /**
176
+ * Set the caller UPN baggage value.
177
+ * @param value The caller UPN
178
+ * @returns Self for method chaining
179
+ */
180
+ callerUpn(value) {
181
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_UPN_KEY, value);
182
+ return this;
183
+ }
184
+ /**
185
+ * Set the caller client IP baggage value.
186
+ * Used to capture the originating client IP for the request
187
+ * so it can be propagated via OpenTelemetry baggage.
188
+ * @param value The caller client IP address
189
+ * @returns Self for method chaining
190
+ */
191
+ callerClientIp(value) {
192
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_CLIENT_IP_KEY, value);
193
+ return this;
194
+ }
195
+ /**
196
+ * Set the caller agent platform ID baggage value.
197
+ * @param value The caller agent platform identifier
198
+ * @returns Self for method chaining
199
+ */
200
+ callerAgentPlatformId(value) {
201
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY, value);
202
+ return this;
203
+ }
204
+ /**
205
+ * Set the conversation ID baggage value.
206
+ * @param value The conversation ID
207
+ * @returns Self for method chaining
208
+ */
209
+ conversationId(value) {
210
+ this.set(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, value);
211
+ return this;
212
+ }
213
+ /**
214
+ * Set the conversation item link baggage value.
215
+ * @param value The conversation item link
216
+ * @returns Self for method chaining
217
+ */
218
+ conversationItemLink(value) {
219
+ this.set(OpenTelemetryConstants.GEN_AI_CONVERSATION_ITEM_LINK_KEY, value);
220
+ return this;
221
+ }
222
+ /**
223
+ * Set the execution source metadata ID (e.g., channel ID).
224
+ * @param value The source metadata ID
225
+ * @returns Self for method chaining
226
+ */
227
+ sourceMetadataId(value) {
228
+ this.set(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_ID_KEY, value);
229
+ return this;
230
+ }
231
+ /**
232
+ * Set the execution source metadata name (e.g., channel name).
233
+ * @param value The source metadata name
234
+ * @returns Self for method chaining
235
+ */
236
+ sourceMetadataName(value) {
237
+ this.set(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, value);
238
+ return this;
239
+ }
240
+ /**
241
+ * Set the execution source metadata description (e.g., channel description).
242
+ * @param value The source metadata description
243
+ * @returns Self for method chaining
244
+ */
245
+ sourceMetadataDescription(value) {
246
+ this.set(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, value);
247
+ return this;
248
+ }
249
+ /**
250
+ * Set multiple baggage pairs from a dictionary or iterable.
251
+ * @param pairs Dictionary or iterable of key-value pairs
252
+ * @returns Self for method chaining
253
+ */
254
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
255
+ setPairs(pairs) {
256
+ if (!pairs) {
257
+ return this;
258
+ }
259
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
+ let entries;
261
+ if (Symbol.iterator in Object(pairs)) {
262
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
263
+ entries = pairs;
264
+ }
265
+ else {
266
+ entries = Object.entries(pairs);
267
+ }
268
+ for (const [key, value] of entries) {
269
+ if (value !== null && value !== undefined) {
270
+ this.set(key, String(value));
271
+ }
272
+ }
273
+ return this;
274
+ }
275
+ /**
276
+ * Apply the collected baggage to the current context.
277
+ * @returns A context manager that restores the previous baggage on exit
278
+ */
279
+ build() {
280
+ return new BaggageScope(this.pairs);
281
+ }
282
+ /**
283
+ * Add a baggage key/value if the value is not null or whitespace.
284
+ * @param key The baggage key
285
+ * @param value The baggage value
286
+ */
287
+ set(key, value) {
288
+ if (value !== null && value !== undefined) {
289
+ const trimmed = value.trim();
290
+ if (trimmed) {
291
+ this.pairs.set(key, trimmed);
292
+ }
293
+ }
294
+ }
295
+ /**
296
+ * Convenience method to begin a request baggage scope with common fields.
297
+ * @param tenantId The tenant ID
298
+ * @param agentId The agent ID
299
+ * @param correlationId The correlation ID
300
+ * @returns A context manager that restores the previous baggage on exit
301
+ */
302
+ static setRequestContext(tenantId, agentId, correlationId) {
303
+ return new BaggageBuilder()
304
+ .tenantId(tenantId)
305
+ .agentId(agentId)
306
+ .correlationId(correlationId)
307
+ .build();
308
+ }
309
+ }
310
+ /**
311
+ * Context manager for baggage scope.
312
+ *
313
+ * This class manages the lifecycle of baggage values, setting them on enter
314
+ * and restoring the previous context on exit.
315
+ */
316
+ export class BaggageScope {
317
+ constructor(pairs) {
318
+ // 1. Start from current active context
319
+ const currentCtx = otelContext.active();
320
+ // 2. Build merged baggage
321
+ let bag = propagation.getBaggage(currentCtx) ?? propagation.createBaggage({});
322
+ for (const [key, value] of pairs.entries()) {
323
+ if (value && value.trim()) {
324
+ bag = bag.setEntry(key, { value });
325
+ }
326
+ }
327
+ // 3. Create a new context that carries that baggage
328
+ this.contextWithBaggage = propagation.setBaggage(currentCtx, bag);
329
+ }
330
+ /**
331
+ * Execute a synchronous function under this baggage scope.
332
+ * Automatically restores previous context afterward.
333
+ */
334
+ run(fn) {
335
+ return otelContext.with(this.contextWithBaggage, fn);
336
+ }
337
+ /**
338
+ * Dispose is a no-op because OpenTelemetry JS automatically restores
339
+ * the previous context after `context.with()` completes.
340
+ */
341
+ [Symbol.dispose]() {
342
+ // Nothing to detach manually; context restoration happens automatically.
343
+ }
344
+ /**
345
+ * Manual cleanup alternative if caller isn't using `using`.
346
+ */
347
+ dispose() {
348
+ this[Symbol.dispose]();
349
+ }
350
+ }
351
+ //# sourceMappingURL=BaggageBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaggageBuilder.js","sourceRoot":"","sources":["../../../../src/tracing/middleware/BaggageBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Context, Span } from '@opentelemetry/api';
2
+ import { SpanProcessor as BaseSpanProcessor } from '@opentelemetry/sdk-trace-base';
3
+ import { ReadableSpan } from '@opentelemetry/sdk-trace-base';
4
+ /**
5
+ * Span processor that propagates baggage key/value pairs to span attributes.
6
+ *
7
+ * This processor copies baggage entries onto spans based on the operation type.
8
+ * For invoke_agent operations, it applies both generic and invoke-agent-specific attributes.
9
+ * For other operations, it applies only generic attributes.
10
+ */
11
+ export declare class SpanProcessor implements BaseSpanProcessor {
12
+ /**
13
+ * Called when a span is started.
14
+ * Copies relevant baggage entries to span attributes.
15
+ */
16
+ onStart(span: Span, parentContext?: Context): void;
17
+ /**
18
+ * Called when a span is ended.
19
+ */
20
+ onEnd(_span: ReadableSpan): void;
21
+ /**
22
+ * Shutdown the processor.
23
+ */
24
+ shutdown(): Promise<void>;
25
+ /**
26
+ * Force flush the processor.
27
+ */
28
+ forceFlush(): Promise<void>;
29
+ }
30
+ //# sourceMappingURL=SpanProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanProcessor.d.ts","sourceRoot":"","sources":["../../../../src/tracing/processors/SpanProcessor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAe,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,iBAAiB;IACrD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IA6ElD;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAIhC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,103 @@
1
+ // ------------------------------------------------------------------------------
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // ------------------------------------------------------------------------------
4
+ import { propagation } from '@opentelemetry/api';
5
+ import { OpenTelemetryConstants, OperationSource } from '../constants';
6
+ import { GENERIC_ATTRIBUTES, INVOKE_AGENT_ATTRIBUTES } from './util';
7
+ /**
8
+ * Span processor that propagates baggage key/value pairs to span attributes.
9
+ *
10
+ * This processor copies baggage entries onto spans based on the operation type.
11
+ * For invoke_agent operations, it applies both generic and invoke-agent-specific attributes.
12
+ * For other operations, it applies only generic attributes.
13
+ */
14
+ export class SpanProcessor {
15
+ /**
16
+ * Called when a span is started.
17
+ * Copies relevant baggage entries to span attributes.
18
+ */
19
+ onStart(span, parentContext) {
20
+ const ctx = parentContext;
21
+ if (!ctx) {
22
+ return;
23
+ }
24
+ // Get existing span attributes
25
+ const existingAttrs = new Set();
26
+ try {
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ const spanRecord = span;
29
+ if (spanRecord.attributes) {
30
+ Object.keys(spanRecord.attributes).forEach(key => existingAttrs.add(key));
31
+ }
32
+ }
33
+ catch {
34
+ // Ignore errors accessing span attributes
35
+ }
36
+ // Get all baggage entries
37
+ const baggage = propagation.getBaggage(ctx);
38
+ if (!baggage) {
39
+ return;
40
+ }
41
+ const baggageMap = new Map();
42
+ baggage.getAllEntries().forEach(([key, entry]) => {
43
+ if (entry.value) {
44
+ baggageMap.set(key, entry.value);
45
+ }
46
+ });
47
+ // Determine if this is an invoke_agent operation
48
+ const operationName = baggageMap.get(OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY) ||
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ span.attributes?.[OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY];
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
+ const spanName = span.name || '';
53
+ const isInvokeAgent = operationName === OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME ||
54
+ spanName.startsWith(OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME);
55
+ // Build target key set
56
+ const targetKeys = new Set(GENERIC_ATTRIBUTES);
57
+ if (isInvokeAgent) {
58
+ INVOKE_AGENT_ATTRIBUTES.forEach(key => targetKeys.add(key));
59
+ }
60
+ // Set operation source - coalesce baggage value with SDK default
61
+ if (!existingAttrs.has(OpenTelemetryConstants.OPERATION_SOURCE_KEY)) {
62
+ const operationSource = baggageMap.get(OpenTelemetryConstants.OPERATION_SOURCE_KEY) ||
63
+ OperationSource.SDK;
64
+ span.setAttribute(OpenTelemetryConstants.OPERATION_SOURCE_KEY, operationSource);
65
+ }
66
+ // Copy baggage to span attributes
67
+ for (const key of targetKeys) {
68
+ // Skip if attribute already exists
69
+ if (existingAttrs.has(key)) {
70
+ continue;
71
+ }
72
+ const value = baggageMap.get(key);
73
+ if (!value) {
74
+ continue;
75
+ }
76
+ try {
77
+ span.setAttribute(key, value);
78
+ }
79
+ catch {
80
+ // Ignore errors setting attributes
81
+ }
82
+ }
83
+ }
84
+ /**
85
+ * Called when a span is ended.
86
+ */
87
+ onEnd(_span) {
88
+ // No-op for this processor
89
+ }
90
+ /**
91
+ * Shutdown the processor.
92
+ */
93
+ async shutdown() {
94
+ // No-op for this processor
95
+ }
96
+ /**
97
+ * Force flush the processor.
98
+ */
99
+ async forceFlush() {
100
+ // No-op for this processor
101
+ }
102
+ }
103
+ //# sourceMappingURL=SpanProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanProcessor.js","sourceRoot":"","sources":["../../../../src/tracing/processors/SpanProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Generic / common tracing attributes applied to all spans
3
+ */
4
+ export declare const GENERIC_ATTRIBUTES: readonly string[];
5
+ /**
6
+ * Invoke Agent-specific attributes
7
+ */
8
+ export declare const INVOKE_AGENT_ATTRIBUTES: readonly string[];
9
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/tracing/processors/util.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAmB/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAsBpD,CAAC"}
@@ -0,0 +1,54 @@
1
+ // ------------------------------------------------------------------------------
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // ------------------------------------------------------------------------------
4
+ import { OpenTelemetryConstants as consts } from '../constants';
5
+ /**
6
+ * Generic / common tracing attributes applied to all spans
7
+ */
8
+ export const GENERIC_ATTRIBUTES = [
9
+ consts.TENANT_ID_KEY,
10
+ consts.CUSTOM_PARENT_SPAN_ID_KEY,
11
+ consts.CUSTOM_SPAN_NAME_KEY,
12
+ consts.CORRELATION_ID_KEY,
13
+ consts.SESSION_ID_KEY,
14
+ consts.GEN_AI_CONVERSATION_ID_KEY,
15
+ consts.GEN_AI_CONVERSATION_ITEM_LINK_KEY,
16
+ consts.GEN_AI_OPERATION_NAME_KEY,
17
+ consts.GEN_AI_AGENT_ID_KEY,
18
+ consts.GEN_AI_AGENT_NAME_KEY,
19
+ consts.GEN_AI_AGENT_TYPE_KEY,
20
+ consts.GEN_AI_AGENT_DESCRIPTION_KEY,
21
+ consts.SESSION_DESCRIPTION_KEY,
22
+ consts.GEN_AI_AGENT_USER_ID_KEY,
23
+ consts.GEN_AI_AGENT_UPN_KEY,
24
+ consts.GEN_AI_AGENT_BLUEPRINT_ID_KEY,
25
+ consts.GEN_AI_AGENT_AUID_KEY,
26
+ consts.GEN_AI_AGENT_PLATFORM_ID_KEY,
27
+ ];
28
+ /**
29
+ * Invoke Agent-specific attributes
30
+ */
31
+ export const INVOKE_AGENT_ATTRIBUTES = [
32
+ // Caller / Invoker attributes
33
+ consts.GEN_AI_CALLER_ID_KEY,
34
+ consts.GEN_AI_CALLER_NAME_KEY,
35
+ consts.GEN_AI_CALLER_UPN_KEY,
36
+ consts.GEN_AI_CALLER_TENANT_ID_KEY,
37
+ consts.GEN_AI_CALLER_CLIENT_IP_KEY,
38
+ // Caller Agent (A2A) attributes
39
+ consts.GEN_AI_CALLER_AGENT_ID_KEY,
40
+ consts.GEN_AI_CALLER_AGENT_NAME_KEY,
41
+ consts.GEN_AI_CALLER_AGENT_TYPE_KEY,
42
+ consts.GEN_AI_CALLER_AGENT_USER_ID_KEY,
43
+ consts.GEN_AI_CALLER_AGENT_UPN_KEY,
44
+ consts.GEN_AI_CALLER_AGENT_TENANT_ID_KEY,
45
+ consts.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY,
46
+ consts.GEN_AI_CALLER_AGENT_CLIENT_IP_KEY,
47
+ consts.GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY,
48
+ // Execution context
49
+ consts.GEN_AI_EXECUTION_TYPE_KEY,
50
+ consts.GEN_AI_EXECUTION_SOURCE_ID_KEY,
51
+ consts.GEN_AI_EXECUTION_SOURCE_NAME_KEY,
52
+ consts.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY,
53
+ ];
54
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/tracing/processors/util.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF,OAAO,EAAE,sBAAsB,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAEhE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,MAAM,CAAC,aAAa;IACpB,MAAM,CAAC,yBAAyB;IAChC,MAAM,CAAC,oBAAoB;IAC3B,MAAM,CAAC,kBAAkB;IACzB,MAAM,CAAC,cAAc;IACrB,MAAM,CAAC,0BAA0B;IACjC,MAAM,CAAC,iCAAiC;IACxC,MAAM,CAAC,yBAAyB;IAChC,MAAM,CAAC,mBAAmB;IAC1B,MAAM,CAAC,qBAAqB;IAC5B,MAAM,CAAC,qBAAqB;IAC5B,MAAM,CAAC,4BAA4B;IACnC,MAAM,CAAC,uBAAuB;IAC9B,MAAM,CAAC,wBAAwB;IAC/B,MAAM,CAAC,oBAAoB;IAC3B,MAAM,CAAC,6BAA6B;IACpC,MAAM,CAAC,qBAAqB;IAC5B,MAAM,CAAC,4BAA4B;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,8BAA8B;IAC9B,MAAM,CAAC,oBAAoB;IAC3B,MAAM,CAAC,sBAAsB;IAC7B,MAAM,CAAC,qBAAqB;IAC5B,MAAM,CAAC,2BAA2B;IAClC,MAAM,CAAC,2BAA2B;IAClC,gCAAgC;IAChC,MAAM,CAAC,0BAA0B;IACjC,MAAM,CAAC,4BAA4B;IACnC,MAAM,CAAC,4BAA4B;IACnC,MAAM,CAAC,+BAA+B;IACtC,MAAM,CAAC,2BAA2B;IAClC,MAAM,CAAC,iCAAiC;IACxC,MAAM,CAAC,sCAAsC;IAC7C,MAAM,CAAC,iCAAiC;IACxC,MAAM,CAAC,mCAAmC;IAC1C,oBAAoB;IACpB,MAAM,CAAC,yBAAyB;IAChC,MAAM,CAAC,8BAA8B;IACrC,MAAM,CAAC,gCAAgC;IACvC,MAAM,CAAC,uCAAuC;CAC/C,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
2
+ import { ToolCallDetails, AgentDetails, TenantDetails, SourceMetadata } from '../contracts';
3
+ import { ParentSpanRef } from '../context/parent-span-context';
4
+ /**
5
+ * Provides OpenTelemetry tracing scope for AI tool execution operations.
6
+ */
7
+ export declare class ExecuteToolScope extends OpenTelemetryScope {
8
+ /**
9
+ * Creates and starts a new scope for tool execution tracing.
10
+ * @param details The tool 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.
16
+ * @returns A new ExecuteToolScope instance.
17
+ */
18
+ static start(details: ToolCallDetails, agentDetails: AgentDetails, tenantDetails: TenantDetails, conversationId?: string, sourceMetadata?: Pick<SourceMetadata, "name" | "description">, parentSpanRef?: ParentSpanRef): ExecuteToolScope;
19
+ private constructor();
20
+ /**
21
+ * Records response information for telemetry tracking.
22
+ * @param response The tool execution response
23
+ */
24
+ recordResponse(response: string): void;
25
+ }
26
+ //# sourceMappingURL=ExecuteToolScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecuteToolScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/ExecuteToolScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;;;;OASG;WACW,KAAK,CACjB,OAAO,EAAE,eAAe,EACxB,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,gBAAgB;IAInB,OAAO;IAyCP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAG9C"}
@@ -0,0 +1,53 @@
1
+ // ------------------------------------------------------------------------------
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // ------------------------------------------------------------------------------
4
+ import { SpanKind } from '@opentelemetry/api';
5
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
6
+ import { OpenTelemetryConstants } from '../constants';
7
+ /**
8
+ * Provides OpenTelemetry tracing scope for AI tool execution operations.
9
+ */
10
+ export class ExecuteToolScope extends OpenTelemetryScope {
11
+ /**
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.
19
+ * @returns A new ExecuteToolScope instance.
20
+ */
21
+ static start(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef) {
22
+ return new ExecuteToolScope(details, agentDetails, tenantDetails, conversationId, sourceMetadata, parentSpanRef);
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
27
+ const { toolName, arguments: args, toolCallId, description, toolType, endpoint } = details;
28
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_NAME_KEY, toolName);
29
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY, args);
30
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_TYPE_KEY, toolType);
31
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_CALL_ID_KEY, toolCallId);
32
+ 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);
36
+ // Set endpoint information if provided
37
+ if (endpoint) {
38
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, endpoint.host);
39
+ // Only record port if it is different from 443 (default HTTPS port)
40
+ if (endpoint.port && endpoint.port !== 443) {
41
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_PORT_KEY, endpoint.port);
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Records response information for telemetry tracking.
47
+ * @param response The tool execution response
48
+ */
49
+ recordResponse(response) {
50
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EVENT_CONTENT, response);
51
+ }
52
+ }
53
+ //# sourceMappingURL=ExecuteToolScope.js.map
@@ -0,0 +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"}