@microsoft/opentelemetry 0.1.0-alpha.3 → 0.1.0-alpha.5

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 (232) hide show
  1. package/README.md +164 -7
  2. package/dist/commonjs/a365/configuration/A365Configuration.d.ts +12 -9
  3. package/dist/commonjs/a365/configuration/A365Configuration.d.ts.map +1 -1
  4. package/dist/commonjs/a365/configuration/A365Configuration.js +12 -33
  5. package/dist/commonjs/a365/configuration/A365Configuration.js.map +1 -1
  6. package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts +14 -8
  7. package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
  8. package/dist/commonjs/a365/configuration/index.d.ts +1 -0
  9. package/dist/commonjs/a365/configuration/index.d.ts.map +1 -1
  10. package/dist/commonjs/a365/constants.d.ts +17 -1
  11. package/dist/commonjs/a365/constants.d.ts.map +1 -1
  12. package/dist/commonjs/a365/constants.js +21 -1
  13. package/dist/commonjs/a365/constants.js.map +1 -1
  14. package/dist/commonjs/a365/context/tokenContext.js +6 -6
  15. package/dist/commonjs/a365/context/tokenContext.js.map +1 -1
  16. package/dist/commonjs/a365/context.js +2 -2
  17. package/dist/commonjs/a365/context.js.map +1 -1
  18. package/dist/commonjs/a365/exporter/Agent365Exporter.d.ts.map +1 -1
  19. package/dist/commonjs/a365/exporter/Agent365Exporter.js +5 -6
  20. package/dist/commonjs/a365/exporter/Agent365Exporter.js.map +1 -1
  21. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.d.ts +4 -1
  22. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.d.ts.map +1 -1
  23. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.js +2 -0
  24. package/dist/commonjs/a365/exporter/Agent365ExporterOptions.js.map +1 -1
  25. package/dist/commonjs/a365/hosting/baggageBuilderUtils.d.ts +22 -0
  26. package/dist/commonjs/a365/hosting/baggageBuilderUtils.d.ts.map +1 -0
  27. package/dist/commonjs/a365/hosting/baggageBuilderUtils.js +47 -0
  28. package/dist/commonjs/a365/hosting/baggageBuilderUtils.js.map +1 -0
  29. package/dist/commonjs/a365/hosting/baggageMiddleware.d.ts +9 -0
  30. package/dist/commonjs/a365/hosting/baggageMiddleware.d.ts.map +1 -0
  31. package/dist/commonjs/a365/hosting/baggageMiddleware.js +38 -0
  32. package/dist/commonjs/a365/hosting/baggageMiddleware.js.map +1 -0
  33. package/dist/commonjs/a365/hosting/index.d.ts +9 -0
  34. package/dist/commonjs/a365/hosting/index.d.ts.map +1 -0
  35. package/dist/commonjs/a365/hosting/index.js +25 -0
  36. package/dist/commonjs/a365/hosting/index.js.map +1 -0
  37. package/dist/commonjs/a365/hosting/observabilityHostingManager.d.ts +30 -0
  38. package/dist/commonjs/a365/hosting/observabilityHostingManager.d.ts.map +1 -0
  39. package/dist/commonjs/a365/hosting/observabilityHostingManager.js +49 -0
  40. package/dist/commonjs/a365/hosting/observabilityHostingManager.js.map +1 -0
  41. package/dist/commonjs/a365/hosting/outputLoggingMiddleware.d.ts +24 -0
  42. package/dist/commonjs/a365/hosting/outputLoggingMiddleware.d.ts.map +1 -0
  43. package/dist/commonjs/a365/hosting/outputLoggingMiddleware.js +82 -0
  44. package/dist/commonjs/a365/hosting/outputLoggingMiddleware.js.map +1 -0
  45. package/dist/commonjs/a365/hosting/scopeUtils.d.ts +56 -0
  46. package/dist/commonjs/a365/hosting/scopeUtils.d.ts.map +1 -0
  47. package/dist/commonjs/a365/hosting/scopeUtils.js +161 -0
  48. package/dist/commonjs/a365/hosting/scopeUtils.js.map +1 -0
  49. package/dist/commonjs/a365/hosting/turnContextUtils.d.ts +32 -0
  50. package/dist/commonjs/a365/hosting/turnContextUtils.d.ts.map +1 -0
  51. package/dist/commonjs/a365/hosting/turnContextUtils.js +141 -0
  52. package/dist/commonjs/a365/hosting/turnContextUtils.js.map +1 -0
  53. package/dist/commonjs/a365/hosting/types.d.ts +52 -0
  54. package/dist/commonjs/a365/hosting/types.d.ts.map +1 -0
  55. package/dist/commonjs/a365/hosting/types.js +5 -0
  56. package/dist/commonjs/a365/hosting/types.js.map +1 -0
  57. package/dist/commonjs/a365/index.d.ts +5 -3
  58. package/dist/commonjs/a365/index.d.ts.map +1 -1
  59. package/dist/commonjs/a365/index.js +19 -2
  60. package/dist/commonjs/a365/index.js.map +1 -1
  61. package/dist/commonjs/a365/logging.d.ts +16 -0
  62. package/dist/commonjs/a365/logging.d.ts.map +1 -0
  63. package/dist/commonjs/a365/logging.js +81 -0
  64. package/dist/commonjs/a365/logging.js.map +1 -0
  65. package/dist/commonjs/a365/middleware/BaggageBuilder.js +0 -1
  66. package/dist/commonjs/a365/middleware/BaggageBuilder.js.map +1 -1
  67. package/dist/commonjs/a365/processors/index.d.ts +0 -2
  68. package/dist/commonjs/a365/processors/index.d.ts.map +1 -1
  69. package/dist/commonjs/a365/processors/index.js +1 -3
  70. package/dist/commonjs/a365/processors/index.js.map +1 -1
  71. package/dist/commonjs/a365/scopes/OpenTelemetryScope.d.ts +11 -1
  72. package/dist/commonjs/a365/scopes/OpenTelemetryScope.d.ts.map +1 -1
  73. package/dist/commonjs/a365/scopes/OpenTelemetryScope.js +14 -2
  74. package/dist/commonjs/a365/scopes/OpenTelemetryScope.js.map +1 -1
  75. package/dist/commonjs/azureMonitor/index.d.ts +14 -0
  76. package/dist/commonjs/azureMonitor/index.d.ts.map +1 -1
  77. package/dist/commonjs/azureMonitor/index.js +29 -0
  78. package/dist/commonjs/azureMonitor/index.js.map +1 -1
  79. package/dist/commonjs/azureMonitor/metrics/handler.js +2 -2
  80. package/dist/commonjs/azureMonitor/metrics/handler.js.map +1 -1
  81. package/dist/commonjs/azureMonitor/traces/handler.d.ts +0 -3
  82. package/dist/commonjs/azureMonitor/traces/handler.d.ts.map +1 -1
  83. package/dist/commonjs/azureMonitor/traces/handler.js +0 -27
  84. package/dist/commonjs/azureMonitor/traces/handler.js.map +1 -1
  85. package/dist/commonjs/distro/distro.d.ts +3 -1
  86. package/dist/commonjs/distro/distro.d.ts.map +1 -1
  87. package/dist/commonjs/distro/distro.js +141 -16
  88. package/dist/commonjs/distro/distro.js.map +1 -1
  89. package/dist/commonjs/distro/instrumentations.d.ts +31 -0
  90. package/dist/commonjs/distro/instrumentations.d.ts.map +1 -0
  91. package/dist/commonjs/distro/instrumentations.js +127 -0
  92. package/dist/commonjs/distro/instrumentations.js.map +1 -0
  93. package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.d.ts +1 -17
  94. package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.d.ts.map +1 -1
  95. package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.js +1 -1
  96. package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.js.map +1 -1
  97. package/dist/commonjs/index.d.ts +6 -14
  98. package/dist/commonjs/index.d.ts.map +1 -1
  99. package/dist/commonjs/index.js +45 -48
  100. package/dist/commonjs/index.js.map +1 -1
  101. package/dist/commonjs/shared/config.d.ts +0 -1
  102. package/dist/commonjs/shared/config.d.ts.map +1 -1
  103. package/dist/commonjs/shared/config.js +2 -39
  104. package/dist/commonjs/shared/config.js.map +1 -1
  105. package/dist/commonjs/types.d.ts +11 -11
  106. package/dist/commonjs/types.d.ts.map +1 -1
  107. package/dist/commonjs/types.js +1 -1
  108. package/dist/commonjs/types.js.map +1 -1
  109. package/dist/esm/a365/configuration/A365Configuration.d.ts +12 -9
  110. package/dist/esm/a365/configuration/A365Configuration.d.ts.map +1 -1
  111. package/dist/esm/a365/configuration/A365Configuration.js +12 -33
  112. package/dist/esm/a365/configuration/A365Configuration.js.map +1 -1
  113. package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts +14 -8
  114. package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
  115. package/dist/esm/a365/configuration/index.d.ts +1 -0
  116. package/dist/esm/a365/configuration/index.d.ts.map +1 -1
  117. package/dist/esm/a365/constants.d.ts +17 -1
  118. package/dist/esm/a365/constants.d.ts.map +1 -1
  119. package/dist/esm/a365/constants.js +21 -1
  120. package/dist/esm/a365/constants.js.map +1 -1
  121. package/dist/esm/a365/context/tokenContext.js +6 -6
  122. package/dist/esm/a365/context/tokenContext.js.map +1 -1
  123. package/dist/esm/a365/context.js +2 -2
  124. package/dist/esm/a365/context.js.map +1 -1
  125. package/dist/esm/a365/exporter/Agent365Exporter.d.ts.map +1 -1
  126. package/dist/esm/a365/exporter/Agent365Exporter.js +5 -6
  127. package/dist/esm/a365/exporter/Agent365Exporter.js.map +1 -1
  128. package/dist/esm/a365/exporter/Agent365ExporterOptions.d.ts +4 -1
  129. package/dist/esm/a365/exporter/Agent365ExporterOptions.d.ts.map +1 -1
  130. package/dist/esm/a365/exporter/Agent365ExporterOptions.js +2 -0
  131. package/dist/esm/a365/exporter/Agent365ExporterOptions.js.map +1 -1
  132. package/dist/esm/a365/hosting/baggageBuilderUtils.d.ts +22 -0
  133. package/dist/esm/a365/hosting/baggageBuilderUtils.d.ts.map +1 -0
  134. package/dist/esm/a365/hosting/baggageBuilderUtils.js +43 -0
  135. package/dist/esm/a365/hosting/baggageBuilderUtils.js.map +1 -0
  136. package/dist/esm/a365/hosting/baggageMiddleware.d.ts +9 -0
  137. package/dist/esm/a365/hosting/baggageMiddleware.d.ts.map +1 -0
  138. package/dist/esm/a365/hosting/baggageMiddleware.js +34 -0
  139. package/dist/esm/a365/hosting/baggageMiddleware.js.map +1 -0
  140. package/dist/esm/a365/hosting/index.d.ts +9 -0
  141. package/dist/esm/a365/hosting/index.d.ts.map +1 -0
  142. package/dist/esm/a365/hosting/index.js +9 -0
  143. package/dist/esm/a365/hosting/index.js.map +1 -0
  144. package/dist/esm/a365/hosting/observabilityHostingManager.d.ts +30 -0
  145. package/dist/esm/a365/hosting/observabilityHostingManager.d.ts.map +1 -0
  146. package/dist/esm/a365/hosting/observabilityHostingManager.js +45 -0
  147. package/dist/esm/a365/hosting/observabilityHostingManager.js.map +1 -0
  148. package/dist/esm/a365/hosting/outputLoggingMiddleware.d.ts +24 -0
  149. package/dist/esm/a365/hosting/outputLoggingMiddleware.d.ts.map +1 -0
  150. package/dist/esm/a365/hosting/outputLoggingMiddleware.js +78 -0
  151. package/dist/esm/a365/hosting/outputLoggingMiddleware.js.map +1 -0
  152. package/dist/esm/a365/hosting/scopeUtils.d.ts +56 -0
  153. package/dist/esm/a365/hosting/scopeUtils.d.ts.map +1 -0
  154. package/dist/esm/a365/hosting/scopeUtils.js +157 -0
  155. package/dist/esm/a365/hosting/scopeUtils.js.map +1 -0
  156. package/dist/esm/a365/hosting/turnContextUtils.d.ts +32 -0
  157. package/dist/esm/a365/hosting/turnContextUtils.d.ts.map +1 -0
  158. package/dist/esm/a365/hosting/turnContextUtils.js +133 -0
  159. package/dist/esm/a365/hosting/turnContextUtils.js.map +1 -0
  160. package/dist/esm/a365/hosting/types.d.ts +52 -0
  161. package/dist/esm/a365/hosting/types.d.ts.map +1 -0
  162. package/dist/esm/a365/hosting/types.js +4 -0
  163. package/dist/esm/a365/hosting/types.js.map +1 -0
  164. package/dist/esm/a365/index.d.ts +5 -3
  165. package/dist/esm/a365/index.d.ts.map +1 -1
  166. package/dist/esm/a365/index.js +4 -1
  167. package/dist/esm/a365/index.js.map +1 -1
  168. package/dist/esm/a365/logging.d.ts +16 -0
  169. package/dist/esm/a365/logging.d.ts.map +1 -0
  170. package/dist/esm/a365/logging.js +76 -0
  171. package/dist/esm/a365/logging.js.map +1 -0
  172. package/dist/esm/a365/middleware/BaggageBuilder.js +0 -1
  173. package/dist/esm/a365/middleware/BaggageBuilder.js.map +1 -1
  174. package/dist/esm/a365/processors/index.d.ts +0 -2
  175. package/dist/esm/a365/processors/index.d.ts.map +1 -1
  176. package/dist/esm/a365/processors/index.js +0 -1
  177. package/dist/esm/a365/processors/index.js.map +1 -1
  178. package/dist/esm/a365/scopes/OpenTelemetryScope.d.ts +11 -1
  179. package/dist/esm/a365/scopes/OpenTelemetryScope.d.ts.map +1 -1
  180. package/dist/esm/a365/scopes/OpenTelemetryScope.js +14 -2
  181. package/dist/esm/a365/scopes/OpenTelemetryScope.js.map +1 -1
  182. package/dist/esm/azureMonitor/index.d.ts +14 -0
  183. package/dist/esm/azureMonitor/index.d.ts.map +1 -1
  184. package/dist/esm/azureMonitor/index.js +27 -0
  185. package/dist/esm/azureMonitor/index.js.map +1 -1
  186. package/dist/esm/azureMonitor/metrics/handler.js +2 -2
  187. package/dist/esm/azureMonitor/metrics/handler.js.map +1 -1
  188. package/dist/esm/azureMonitor/traces/handler.d.ts +0 -3
  189. package/dist/esm/azureMonitor/traces/handler.d.ts.map +1 -1
  190. package/dist/esm/azureMonitor/traces/handler.js +1 -26
  191. package/dist/esm/azureMonitor/traces/handler.js.map +1 -1
  192. package/dist/esm/distro/distro.d.ts +3 -1
  193. package/dist/esm/distro/distro.d.ts.map +1 -1
  194. package/dist/esm/distro/distro.js +111 -19
  195. package/dist/esm/distro/distro.js.map +1 -1
  196. package/dist/esm/distro/instrumentations.d.ts +31 -0
  197. package/dist/esm/distro/instrumentations.d.ts.map +1 -0
  198. package/dist/esm/distro/instrumentations.js +122 -0
  199. package/dist/esm/distro/instrumentations.js.map +1 -0
  200. package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.d.ts +1 -17
  201. package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.d.ts.map +1 -1
  202. package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.js +1 -1
  203. package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceInstrumentor.js.map +1 -1
  204. package/dist/esm/index.d.ts +6 -14
  205. package/dist/esm/index.d.ts.map +1 -1
  206. package/dist/esm/index.js +4 -18
  207. package/dist/esm/index.js.map +1 -1
  208. package/dist/esm/shared/config.d.ts +0 -1
  209. package/dist/esm/shared/config.d.ts.map +1 -1
  210. package/dist/esm/shared/config.js +2 -39
  211. package/dist/esm/shared/config.js.map +1 -1
  212. package/dist/esm/types.d.ts +11 -11
  213. package/dist/esm/types.d.ts.map +1 -1
  214. package/dist/esm/types.js +1 -1
  215. package/dist/esm/types.js.map +1 -1
  216. package/package.json +8 -6
  217. package/dist/commonjs/a365/processors/PerRequestSpanProcessor.d.ts +0 -44
  218. package/dist/commonjs/a365/processors/PerRequestSpanProcessor.d.ts.map +0 -1
  219. package/dist/commonjs/a365/processors/PerRequestSpanProcessor.js +0 -260
  220. package/dist/commonjs/a365/processors/PerRequestSpanProcessor.js.map +0 -1
  221. package/dist/commonjs/shared/jsonConfig.d.ts +0 -35
  222. package/dist/commonjs/shared/jsonConfig.d.ts.map +0 -1
  223. package/dist/commonjs/shared/jsonConfig.js +0 -122
  224. package/dist/commonjs/shared/jsonConfig.js.map +0 -1
  225. package/dist/esm/a365/processors/PerRequestSpanProcessor.d.ts +0 -44
  226. package/dist/esm/a365/processors/PerRequestSpanProcessor.d.ts.map +0 -1
  227. package/dist/esm/a365/processors/PerRequestSpanProcessor.js +0 -256
  228. package/dist/esm/a365/processors/PerRequestSpanProcessor.js.map +0 -1
  229. package/dist/esm/shared/jsonConfig.d.ts +0 -35
  230. package/dist/esm/shared/jsonConfig.d.ts.map +0 -1
  231. package/dist/esm/shared/jsonConfig.js +0 -115
  232. package/dist/esm/shared/jsonConfig.js.map +0 -1
@@ -0,0 +1,30 @@
1
+ import type { MiddlewareLike } from "./types.js";
2
+ /**
3
+ * Configuration options for the hosting observability layer.
4
+ */
5
+ export interface ObservabilityHostingOptions {
6
+ /** Enable baggage propagation middleware. Defaults to false. */
7
+ enableBaggage?: boolean;
8
+ /** Enable output logging middleware for tracing outgoing messages. Defaults to false. */
9
+ enableOutputLogging?: boolean;
10
+ }
11
+ /**
12
+ * Manager for configuring hosting-layer observability middleware.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const manager = new ObservabilityHostingManager();
17
+ * manager.configure(adapter, { enableOutputLogging: true });
18
+ * ```
19
+ */
20
+ export declare class ObservabilityHostingManager {
21
+ private _configured;
22
+ /**
23
+ * Registers observability middleware on the adapter.
24
+ * Subsequent calls are ignored.
25
+ */
26
+ configure(adapter: {
27
+ use(...middlewares: Array<MiddlewareLike>): void;
28
+ }, options: ObservabilityHostingOptions): void;
29
+ }
30
+ //# sourceMappingURL=observabilityHostingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observabilityHostingManager.d.ts","sourceRoot":"","sources":["../../../../src/a365/hosting/observabilityHostingManager.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,WAAW,CAAS;IAE5B;;;OAGG;IACH,SAAS,CACP,OAAO,EAAE;QAAE,GAAG,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAA;KAAE,EAC7D,OAAO,EAAE,2BAA2B,GACnC,IAAI;CA2BR"}
@@ -0,0 +1,45 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * Manager for configuring hosting-layer observability middleware.
5
+ *
6
+ * Adapted from microsoft/Agent365-nodejs agents-a365-observability-hosting/src/middleware/ObservabilityHostingManager.ts
7
+ */
8
+ import { Logger } from "../../shared/logging/index.js";
9
+ import { BaggageMiddleware } from "./baggageMiddleware.js";
10
+ import { OutputLoggingMiddleware } from "./outputLoggingMiddleware.js";
11
+ /**
12
+ * Manager for configuring hosting-layer observability middleware.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const manager = new ObservabilityHostingManager();
17
+ * manager.configure(adapter, { enableOutputLogging: true });
18
+ * ```
19
+ */
20
+ export class ObservabilityHostingManager {
21
+ _configured = false;
22
+ /**
23
+ * Registers observability middleware on the adapter.
24
+ * Subsequent calls are ignored.
25
+ */
26
+ configure(adapter, options) {
27
+ if (this._configured) {
28
+ Logger.getInstance().warn("[ObservabilityHostingManager] Already configured. Subsequent configure() calls are ignored.");
29
+ return;
30
+ }
31
+ const enableBaggage = options.enableBaggage === true;
32
+ const enableOutputLogging = options.enableOutputLogging === true;
33
+ if (enableBaggage) {
34
+ adapter.use(new BaggageMiddleware());
35
+ Logger.getInstance().info("[ObservabilityHostingManager] BaggageMiddleware registered.");
36
+ }
37
+ if (enableOutputLogging) {
38
+ adapter.use(new OutputLoggingMiddleware());
39
+ Logger.getInstance().info("[ObservabilityHostingManager] OutputLoggingMiddleware registered.");
40
+ }
41
+ Logger.getInstance().info(`[ObservabilityHostingManager] Configured. Baggage: ${enableBaggage}, OutputLogging: ${enableOutputLogging}.`);
42
+ this._configured = true;
43
+ }
44
+ }
45
+ //# sourceMappingURL=observabilityHostingManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observabilityHostingManager.js","sourceRoot":"","sources":["../../../../src/a365/hosting/observabilityHostingManager.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAcvE;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IAC9B,WAAW,GAAG,KAAK,CAAC;IAE5B;;;OAGG;IACH,SAAS,CACP,OAA6D,EAC7D,OAAoC;QAEpC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CACvB,6FAA6F,CAC9F,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC;QACrD,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC;QAEjE,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CACvB,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CACvB,sDAAsD,aAAa,oBAAoB,mBAAmB,GAAG,CAC9G,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { TurnContextLike, MiddlewareLike } from "./types.js";
2
+ /**
3
+ * TurnState key for the parent span reference.
4
+ * Set this in `turnState` to link OutputScope spans as children of an InvokeAgentScope.
5
+ */
6
+ export declare const A365_PARENT_SPAN_KEY = "A365ParentSpanId";
7
+ /**
8
+ * TurnState key for the auth token.
9
+ * Set this in `turnState` so middleware can resolve the agent blueprint ID
10
+ * from token claims (used for embodied/agentic requests).
11
+ */
12
+ export declare const A365_AUTH_TOKEN_KEY = "A365AuthToken";
13
+ /**
14
+ * Middleware that creates {@link OutputScope} spans for outgoing messages.
15
+ * Links to a parent span when {@link A365_PARENT_SPAN_KEY} is set in turnState.
16
+ *
17
+ * **Privacy note:** Outgoing message content is captured verbatim
18
+ * as span attributes and exported to the configured telemetry backend.
19
+ */
20
+ export declare class OutputLoggingMiddleware implements MiddlewareLike {
21
+ onTurn(context: TurnContextLike, next: () => Promise<void>): Promise<void>;
22
+ private _createSendHandler;
23
+ }
24
+ //# sourceMappingURL=outputLoggingMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputLoggingMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/a365/hosting/outputLoggingMiddleware.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAGf,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IACtD,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhF,OAAO,CAAC,kBAAkB;CAmD3B"}
@@ -0,0 +1,78 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * Middleware that creates OutputScope spans for outgoing messages.
5
+ *
6
+ * Adapted from microsoft/Agent365-nodejs agents-a365-observability-hosting/src/middleware/OutputLoggingMiddleware.ts
7
+ */
8
+ import { OutputScope } from "../scopes/index.js";
9
+ import { ScopeUtils } from "./scopeUtils.js";
10
+ import { Logger } from "../../shared/logging/index.js";
11
+ /**
12
+ * TurnState key for the parent span reference.
13
+ * Set this in `turnState` to link OutputScope spans as children of an InvokeAgentScope.
14
+ */
15
+ export const A365_PARENT_SPAN_KEY = "A365ParentSpanId";
16
+ /**
17
+ * TurnState key for the auth token.
18
+ * Set this in `turnState` so middleware can resolve the agent blueprint ID
19
+ * from token claims (used for embodied/agentic requests).
20
+ */
21
+ export const A365_AUTH_TOKEN_KEY = "A365AuthToken";
22
+ /**
23
+ * Middleware that creates {@link OutputScope} spans for outgoing messages.
24
+ * Links to a parent span when {@link A365_PARENT_SPAN_KEY} is set in turnState.
25
+ *
26
+ * **Privacy note:** Outgoing message content is captured verbatim
27
+ * as span attributes and exported to the configured telemetry backend.
28
+ */
29
+ export class OutputLoggingMiddleware {
30
+ async onTurn(context, next) {
31
+ const authToken = context.turnState.get(A365_AUTH_TOKEN_KEY) ?? "";
32
+ const agentDetails = ScopeUtils.deriveAgentDetails(context, authToken);
33
+ if (!agentDetails || !agentDetails.tenantId) {
34
+ await next();
35
+ return;
36
+ }
37
+ const userDetails = ScopeUtils.deriveCallerDetails(context);
38
+ const conversationId = ScopeUtils.deriveConversationId(context);
39
+ const channel = ScopeUtils.deriveChannelObject(context);
40
+ const request = {
41
+ conversationId,
42
+ channel,
43
+ };
44
+ if (context.onSendActivities) {
45
+ context.onSendActivities(this._createSendHandler(context, agentDetails, userDetails, request));
46
+ }
47
+ await next();
48
+ }
49
+ _createSendHandler(turnContext, agentDetails, userDetails, request) {
50
+ return async (_ctx, activities, sendNext) => {
51
+ const messages = activities.filter((a) => a.type === "message" && a.text).map((a) => a.text);
52
+ if (messages.length === 0) {
53
+ return await sendNext();
54
+ }
55
+ const parentSpanRef = turnContext.turnState.get(A365_PARENT_SPAN_KEY);
56
+ if (!parentSpanRef) {
57
+ Logger.getInstance().warn(`[OutputLoggingMiddleware] No parent span ref in turnState under '${A365_PARENT_SPAN_KEY}'. OutputScope will not be linked to a parent.`);
58
+ }
59
+ const spanDetails = parentSpanRef
60
+ ? { parentContext: parentSpanRef }
61
+ : undefined;
62
+ const outputScope = OutputScope.start(request ?? {}, { messages }, agentDetails, userDetails, spanDetails);
63
+ try {
64
+ return await sendNext();
65
+ }
66
+ catch (error) {
67
+ outputScope.recordError(error instanceof Error
68
+ ? error
69
+ : new Error(typeof error === "string" ? error : JSON.stringify(error)));
70
+ throw error;
71
+ }
72
+ finally {
73
+ outputScope.dispose();
74
+ }
75
+ };
76
+ }
77
+ }
78
+ //# sourceMappingURL=outputLoggingMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputLoggingMiddleware.js","sourceRoot":"","sources":["../../../../src/a365/hosting/outputLoggingMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Utilities to populate scope parameters from a TurnContext.
3
+ *
4
+ * Adapted from microsoft/Agent365-nodejs agents-a365-observability-hosting/src/utils/ScopeUtils.ts
5
+ */
6
+ import type { SpanKind, TimeInput } from "@opentelemetry/api";
7
+ import type { TurnContextLike } from "./types.js";
8
+ import { InvokeAgentScope, InferenceScope, ExecuteToolScope } from "../scopes/index.js";
9
+ import type { AgentDetails, UserDetails, InvokeAgentScopeDetails, ToolCallDetails, InferenceDetails } from "../contracts.js";
10
+ /**
11
+ * Unified utilities to populate scope tags from a TurnContext.
12
+ */
13
+ export declare class ScopeUtils {
14
+ /**
15
+ * Derive target agent details from the activity recipient.
16
+ */
17
+ static deriveAgentDetails(turnContext: TurnContextLike, authToken: string): AgentDetails | undefined;
18
+ /**
19
+ * Derive caller agent details from the activity from.
20
+ */
21
+ static deriveCallerAgent(turnContext: TurnContextLike): AgentDetails | undefined;
22
+ /**
23
+ * Derive caller identity details (id, email, name, tenant) from the activity from.
24
+ */
25
+ static deriveCallerDetails(turnContext: TurnContextLike): UserDetails | undefined;
26
+ /**
27
+ * Derive conversation id from the TurnContext.
28
+ */
29
+ static deriveConversationId(turnContext: TurnContextLike): string | undefined;
30
+ /**
31
+ * Derive channel (name and description) from the TurnContext.
32
+ */
33
+ static deriveChannelObject(turnContext: TurnContextLike): {
34
+ name?: string;
35
+ description?: string;
36
+ };
37
+ private static setInputMessageTags;
38
+ /**
39
+ * Create an `InferenceScope` enriched with values from the TurnContext.
40
+ */
41
+ static populateInferenceScopeFromTurnContext(details: InferenceDetails, turnContext: TurnContextLike, authToken: string, startTime?: TimeInput, endTime?: TimeInput): InferenceScope;
42
+ /**
43
+ * Create an `InvokeAgentScope` enriched with values from the TurnContext.
44
+ */
45
+ static populateInvokeAgentScopeFromTurnContext(details: AgentDetails, scopeDetails: InvokeAgentScopeDetails, turnContext: TurnContextLike, authToken: string, startTime?: TimeInput, endTime?: TimeInput, spanKind?: SpanKind): InvokeAgentScope;
46
+ /**
47
+ * Build agent details by merging provided details with TurnContext.
48
+ */
49
+ static buildInvokeAgentDetails(details: AgentDetails, turnContext: TurnContextLike, authToken: string): AgentDetails;
50
+ private static buildInvokeAgentDetailsCore;
51
+ /**
52
+ * Create an `ExecuteToolScope` enriched with values from the TurnContext.
53
+ */
54
+ static populateExecuteToolScopeFromTurnContext(details: ToolCallDetails, turnContext: TurnContextLike, authToken: string, startTime?: TimeInput, endTime?: TimeInput, spanKind?: SpanKind): ExecuteToolScope;
55
+ }
56
+ //# sourceMappingURL=scopeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeUtils.d.ts","sourceRoot":"","sources":["../../../../src/a365/hosting/scopeUtils.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAIX,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,qBAAa,UAAU;IAGrB;;OAEG;WACW,kBAAkB,CAC9B,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,MAAM,GAChB,YAAY,GAAG,SAAS;IAe3B;;OAEG;WACW,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,YAAY,GAAG,SAAS;IAcvF;;OAEG;WACW,mBAAmB,CAAC,WAAW,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;IAWxF;;OAEG;WACW,oBAAoB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS;IAIpF;;OAEG;WACW,mBAAmB,CAAC,WAAW,EAAE,eAAe,GAAG;QAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IASD,OAAO,CAAC,MAAM,CAAC,mBAAmB;IASlC;;OAEG;IACH,MAAM,CAAC,qCAAqC,CAC1C,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,GAClB,cAAc;IA0BjB;;OAEG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,YAAY,EACrB,YAAY,EAAE,uBAAuB,EACrC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,EACnB,QAAQ,CAAC,EAAE,QAAQ,GAClB,gBAAgB;IAiCnB;;OAEG;WACW,uBAAuB,CACnC,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,MAAM,GAChB,YAAY;IAIf,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAY1C;;OAEG;IACH,MAAM,CAAC,uCAAuC,CAC5C,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,SAAS,EACnB,QAAQ,CAAC,EAAE,QAAQ,GAClB,gBAAgB;CAuBpB"}
@@ -0,0 +1,157 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { resolveEmbodiedAgentIds } from "./turnContextUtils.js";
4
+ import { InvokeAgentScope, InferenceScope, ExecuteToolScope } from "../scopes/index.js";
5
+ /**
6
+ * Unified utilities to populate scope tags from a TurnContext.
7
+ */
8
+ export class ScopeUtils {
9
+ // ── Context-derived helpers ─────────────────────────────────────
10
+ /**
11
+ * Derive target agent details from the activity recipient.
12
+ */
13
+ static deriveAgentDetails(turnContext, authToken) {
14
+ const recipient = turnContext?.activity?.recipient;
15
+ if (!recipient)
16
+ return undefined;
17
+ const { agentId, agentBlueprintId } = resolveEmbodiedAgentIds(turnContext, authToken);
18
+ return {
19
+ agentId,
20
+ agentName: recipient.name,
21
+ agentAUID: recipient.aadObjectId,
22
+ agentBlueprintId,
23
+ agentEmail: turnContext?.activity?.getAgenticUser?.(),
24
+ agentDescription: recipient.role,
25
+ tenantId: turnContext?.activity?.getAgenticTenantId?.(),
26
+ };
27
+ }
28
+ /**
29
+ * Derive caller agent details from the activity from.
30
+ */
31
+ static deriveCallerAgent(turnContext) {
32
+ const from = turnContext?.activity?.from;
33
+ if (!from)
34
+ return undefined;
35
+ return {
36
+ agentBlueprintId: from.agenticAppBlueprintId,
37
+ agentName: from.name,
38
+ agentAUID: from.aadObjectId,
39
+ agentDescription: from.role,
40
+ tenantId: from.tenantId,
41
+ agentId: from.agenticAppId,
42
+ agentEmail: from.agenticUserId,
43
+ };
44
+ }
45
+ /**
46
+ * Derive caller identity details (id, email, name, tenant) from the activity from.
47
+ */
48
+ static deriveCallerDetails(turnContext) {
49
+ const from = turnContext?.activity?.from;
50
+ if (!from)
51
+ return undefined;
52
+ return {
53
+ userId: from.aadObjectId,
54
+ userEmail: from.agenticUserId,
55
+ userName: from.name,
56
+ tenantId: from.tenantId,
57
+ };
58
+ }
59
+ /**
60
+ * Derive conversation id from the TurnContext.
61
+ */
62
+ static deriveConversationId(turnContext) {
63
+ return turnContext?.activity?.conversation?.id;
64
+ }
65
+ /**
66
+ * Derive channel (name and description) from the TurnContext.
67
+ */
68
+ static deriveChannelObject(turnContext) {
69
+ return {
70
+ name: turnContext?.activity?.channelId,
71
+ description: turnContext?.activity?.channelIdSubChannel,
72
+ };
73
+ }
74
+ // ── Scope factory helpers ───────────────────────────────────────
75
+ static setInputMessageTags(scope, turnContext) {
76
+ if (turnContext?.activity?.text) {
77
+ scope.recordInputMessages([turnContext.activity.text]);
78
+ }
79
+ }
80
+ /**
81
+ * Create an `InferenceScope` enriched with values from the TurnContext.
82
+ */
83
+ static populateInferenceScopeFromTurnContext(details, turnContext, authToken, startTime, endTime) {
84
+ const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
85
+ const caller = ScopeUtils.deriveCallerDetails(turnContext);
86
+ const conversationId = ScopeUtils.deriveConversationId(turnContext);
87
+ const channel = ScopeUtils.deriveChannelObject(turnContext);
88
+ if (!agent) {
89
+ throw new Error("populateInferenceScopeFromTurnContext: Missing agent details on TurnContext (recipient)");
90
+ }
91
+ const hasChannel = channel.name !== undefined || channel.description !== undefined;
92
+ const request = {
93
+ conversationId,
94
+ ...(hasChannel ? { channel: { name: channel.name, description: channel.description } } : {}),
95
+ };
96
+ const spanDetails = startTime || endTime ? { startTime, endTime } : undefined;
97
+ const scope = InferenceScope.start(request, details, agent, caller, spanDetails);
98
+ this.setInputMessageTags(scope, turnContext);
99
+ return scope;
100
+ }
101
+ /**
102
+ * Create an `InvokeAgentScope` enriched with values from the TurnContext.
103
+ */
104
+ static populateInvokeAgentScopeFromTurnContext(details, scopeDetails, turnContext, authToken, startTime, endTime, spanKind) {
105
+ const callerAgent = ScopeUtils.deriveCallerAgent(turnContext);
106
+ const caller = ScopeUtils.deriveCallerDetails(turnContext);
107
+ const conversationId = ScopeUtils.deriveConversationId(turnContext);
108
+ const channel = ScopeUtils.deriveChannelObject(turnContext);
109
+ const agentDetails = ScopeUtils.buildInvokeAgentDetailsCore(details, turnContext, authToken);
110
+ const hasChannel = channel.name !== undefined || channel.description !== undefined;
111
+ const request = {
112
+ conversationId,
113
+ ...(hasChannel ? { channel: { name: channel.name, description: channel.description } } : {}),
114
+ };
115
+ const callerDetails = {
116
+ userDetails: caller,
117
+ callerAgentDetails: callerAgent,
118
+ };
119
+ const spanDetailsObj = startTime || endTime || spanKind ? { startTime, endTime, spanKind } : undefined;
120
+ const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, callerDetails, spanDetailsObj);
121
+ this.setInputMessageTags(scope, turnContext);
122
+ return scope;
123
+ }
124
+ /**
125
+ * Build agent details by merging provided details with TurnContext.
126
+ */
127
+ static buildInvokeAgentDetails(details, turnContext, authToken) {
128
+ return ScopeUtils.buildInvokeAgentDetailsCore(details, turnContext, authToken);
129
+ }
130
+ static buildInvokeAgentDetailsCore(details, turnContext, authToken) {
131
+ const derivedAgentDetails = ScopeUtils.deriveAgentDetails(turnContext, authToken);
132
+ return {
133
+ ...details,
134
+ ...(derivedAgentDetails ?? {}),
135
+ };
136
+ }
137
+ /**
138
+ * Create an `ExecuteToolScope` enriched with values from the TurnContext.
139
+ */
140
+ static populateExecuteToolScopeFromTurnContext(details, turnContext, authToken, startTime, endTime, spanKind) {
141
+ const agent = ScopeUtils.deriveAgentDetails(turnContext, authToken);
142
+ const caller = ScopeUtils.deriveCallerDetails(turnContext);
143
+ const conversationId = ScopeUtils.deriveConversationId(turnContext);
144
+ const channel = ScopeUtils.deriveChannelObject(turnContext);
145
+ if (!agent) {
146
+ throw new Error("populateExecuteToolScopeFromTurnContext: Missing agent details on TurnContext (recipient)");
147
+ }
148
+ const hasChannel = channel.name !== undefined || channel.description !== undefined;
149
+ const request = {
150
+ conversationId,
151
+ ...(hasChannel ? { channel: { name: channel.name, description: channel.description } } : {}),
152
+ };
153
+ const spanDetailsObj = startTime || endTime || spanKind ? { startTime, endTime, spanKind } : undefined;
154
+ return ExecuteToolScope.start(request, details, agent, caller, spanDetailsObj);
155
+ }
156
+ }
157
+ //# sourceMappingURL=scopeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeUtils.js","sourceRoot":"","sources":["../../../../src/a365/hosting/scopeUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { TurnContextLike } from "./types.js";
2
+ /**
3
+ * Extracts caller-related OpenTelemetry baggage pairs from the TurnContext.
4
+ */
5
+ export declare function getCallerBaggagePairs(turnContext: TurnContextLike): Array<[string, string]>;
6
+ /**
7
+ * Resolves the agent instance ID and blueprint ID for embodied (agentic) agents.
8
+ * For non-embodied agents, both fields are undefined.
9
+ * @param turnContext Activity context
10
+ * @param authToken Auth token for resolving blueprint ID from token claims.
11
+ */
12
+ export declare function resolveEmbodiedAgentIds(turnContext: TurnContextLike, authToken: string): {
13
+ agentId: string | undefined;
14
+ agentBlueprintId: string | undefined;
15
+ };
16
+ /**
17
+ * Extracts agent/recipient-related OpenTelemetry baggage pairs from the TurnContext.
18
+ */
19
+ export declare function getTargetAgentBaggagePairs(turnContext: TurnContextLike, authToken?: string): Array<[string, string]>;
20
+ /**
21
+ * Extracts the tenant ID baggage key-value pair.
22
+ */
23
+ export declare function getTenantIdPair(turnContext: TurnContextLike): Array<[string, string]>;
24
+ /**
25
+ * Extracts channel baggage pairs from the TurnContext.
26
+ */
27
+ export declare function getChannelBaggagePairs(turnContext: TurnContextLike): Array<[string, string]>;
28
+ /**
29
+ * Extracts conversation ID and item link baggage pairs.
30
+ */
31
+ export declare function getConversationIdAndItemLinkPairs(turnContext: TurnContextLike): Array<[string, string]>;
32
+ //# sourceMappingURL=turnContextUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turnContextUtils.d.ts","sourceRoot":"","sources":["../../../../src/a365/hosting/turnContextUtils.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQlD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,eAAe,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY3F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAQvE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmBzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,eAAe,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAGrF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,eAAe,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY5F;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,eAAe,GAC3B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWzB"}
@@ -0,0 +1,133 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * TurnContext utility methods for extracting OpenTelemetry baggage pairs.
5
+ *
6
+ * Adapted from microsoft/Agent365-nodejs agents-a365-observability-hosting/src/utils/TurnContextUtils.ts
7
+ */
8
+ import { OpenTelemetryConstants } from "../constants.js";
9
+ function normalizePairs(pairs) {
10
+ return pairs
11
+ .filter(([, v]) => v != null && String(v).trim() !== "")
12
+ .map(([k, v]) => [k, String(v)]);
13
+ }
14
+ /**
15
+ * Extracts caller-related OpenTelemetry baggage pairs from the TurnContext.
16
+ */
17
+ export function getCallerBaggagePairs(turnContext) {
18
+ if (!turnContext?.activity?.from) {
19
+ return [];
20
+ }
21
+ const from = turnContext.activity.from;
22
+ const pairs = [
23
+ [OpenTelemetryConstants.USER_ID_KEY, from.aadObjectId],
24
+ [OpenTelemetryConstants.USER_NAME_KEY, from.name],
25
+ [OpenTelemetryConstants.USER_EMAIL_KEY, from.agenticUserId],
26
+ [OpenTelemetryConstants.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY, from.agenticAppBlueprintId],
27
+ ];
28
+ return normalizePairs(pairs);
29
+ }
30
+ /**
31
+ * Resolves the agent instance ID and blueprint ID for embodied (agentic) agents.
32
+ * For non-embodied agents, both fields are undefined.
33
+ * @param turnContext Activity context
34
+ * @param authToken Auth token for resolving blueprint ID from token claims.
35
+ */
36
+ export function resolveEmbodiedAgentIds(turnContext, authToken) {
37
+ const isAgentic = turnContext?.activity?.isAgenticRequest?.();
38
+ const rawAgentId = isAgentic ? turnContext.activity.getAgenticInstanceId?.() : undefined;
39
+ const rawBlueprintId = isAgentic ? getAgentIdFromToken(authToken) : undefined;
40
+ return {
41
+ agentId: rawAgentId || undefined,
42
+ agentBlueprintId: rawBlueprintId || undefined,
43
+ };
44
+ }
45
+ /**
46
+ * Extracts agent/recipient-related OpenTelemetry baggage pairs from the TurnContext.
47
+ */
48
+ export function getTargetAgentBaggagePairs(turnContext, authToken) {
49
+ if (!turnContext?.activity?.recipient) {
50
+ return [];
51
+ }
52
+ const recipient = turnContext.activity.recipient;
53
+ const { agentId } = authToken
54
+ ? resolveEmbodiedAgentIds(turnContext, authToken)
55
+ : {
56
+ agentId: turnContext.activity?.isAgenticRequest?.()
57
+ ? turnContext.activity.getAgenticInstanceId?.()
58
+ : undefined,
59
+ };
60
+ const pairs = [
61
+ [OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY, agentId],
62
+ [OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY, recipient.name],
63
+ [OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY, recipient.role],
64
+ [OpenTelemetryConstants.GEN_AI_AGENT_AUID_KEY, recipient.aadObjectId],
65
+ ];
66
+ return normalizePairs(pairs);
67
+ }
68
+ /**
69
+ * Extracts the tenant ID baggage key-value pair.
70
+ */
71
+ export function getTenantIdPair(turnContext) {
72
+ const tenantId = turnContext.activity?.getAgenticTenantId?.();
73
+ return tenantId ? [[OpenTelemetryConstants.TENANT_ID_KEY, tenantId]] : [];
74
+ }
75
+ /**
76
+ * Extracts channel baggage pairs from the TurnContext.
77
+ */
78
+ export function getChannelBaggagePairs(turnContext) {
79
+ if (!turnContext) {
80
+ return [];
81
+ }
82
+ const pairs = [
83
+ [OpenTelemetryConstants.CHANNEL_NAME_KEY, turnContext.activity?.channelId],
84
+ [
85
+ OpenTelemetryConstants.CHANNEL_LINK_KEY,
86
+ turnContext.activity?.channelIdSubChannel,
87
+ ],
88
+ ];
89
+ return normalizePairs(pairs);
90
+ }
91
+ /**
92
+ * Extracts conversation ID and item link baggage pairs.
93
+ */
94
+ export function getConversationIdAndItemLinkPairs(turnContext) {
95
+ if (!turnContext) {
96
+ return [];
97
+ }
98
+ const conversationId = turnContext.activity?.conversation?.id;
99
+ const itemLink = turnContext.activity?.serviceUrl;
100
+ const pairs = [
101
+ [OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, conversationId],
102
+ [OpenTelemetryConstants.GEN_AI_CONVERSATION_ITEM_LINK_KEY, itemLink],
103
+ ];
104
+ return normalizePairs(pairs);
105
+ }
106
+ // ---------------------------------------------------------------------------
107
+ // Inline token decode (replaces @microsoft/agents-a365-runtime Utility)
108
+ // ---------------------------------------------------------------------------
109
+ /**
110
+ * Decode the JWT and return the best available agent identifier.
111
+ * Priority: xms_par_app_azp > appid > azp.
112
+ *
113
+ * WARNING: NO SIGNATURE VERIFICATION — suitable only for logging/diagnostics.
114
+ */
115
+ function getAgentIdFromToken(token) {
116
+ if (!token || token.trim() === "")
117
+ return "";
118
+ try {
119
+ const parts = token.split(".");
120
+ if (parts.length < 2)
121
+ return "";
122
+ const padded = parts[1] + "=".repeat((4 - (parts[1].length % 4)) % 4);
123
+ const decoded = JSON.parse(Buffer.from(padded, "base64").toString("utf8"));
124
+ return (decoded["xms_par_app_azp"] ||
125
+ decoded["appid"] ||
126
+ decoded["azp"] ||
127
+ "");
128
+ }
129
+ catch {
130
+ return "";
131
+ }
132
+ }
133
+ //# sourceMappingURL=turnContextUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turnContextUtils.js","sourceRoot":"","sources":["../../../../src/a365/hosting/turnContextUtils.ts"],"names":[],"mappings":"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"}