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

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 (130) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/ObservabilityBuilder.d.ts +61 -0
  3. package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -0
  4. package/dist/cjs/ObservabilityBuilder.js +141 -0
  5. package/dist/cjs/ObservabilityBuilder.js.map +1 -0
  6. package/dist/cjs/ObservabilityManager.d.ts +29 -0
  7. package/dist/cjs/ObservabilityManager.d.ts.map +1 -0
  8. package/dist/cjs/ObservabilityManager.js +61 -0
  9. package/dist/cjs/ObservabilityManager.js.map +1 -0
  10. package/dist/cjs/index.d.ts +10 -0
  11. package/dist/cjs/index.d.ts.map +1 -0
  12. package/dist/cjs/index.js +33 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/tracing/constants.d.ts +83 -0
  15. package/dist/cjs/tracing/constants.d.ts.map +1 -0
  16. package/dist/cjs/tracing/constants.js +101 -0
  17. package/dist/cjs/tracing/constants.js.map +1 -0
  18. package/dist/cjs/tracing/contracts.d.ts +186 -0
  19. package/dist/cjs/tracing/contracts.d.ts.map +1 -0
  20. package/dist/cjs/tracing/contracts.js +44 -0
  21. package/dist/cjs/tracing/contracts.js.map +1 -0
  22. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +53 -0
  23. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  24. package/dist/cjs/tracing/exporter/Agent365Exporter.js +318 -0
  25. package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -0
  26. package/dist/cjs/tracing/exporter/utils.d.ts +38 -0
  27. package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -0
  28. package/dist/cjs/tracing/exporter/utils.js +126 -0
  29. package/dist/cjs/tracing/exporter/utils.js.map +1 -0
  30. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +182 -0
  31. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  32. package/dist/cjs/tracing/middleware/BaggageBuilder.js +297 -0
  33. package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -0
  34. package/dist/cjs/tracing/processors/SpanProcessor.d.ts +30 -0
  35. package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -0
  36. package/dist/cjs/tracing/processors/SpanProcessor.js +98 -0
  37. package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -0
  38. package/dist/cjs/tracing/processors/util.d.ts +9 -0
  39. package/dist/cjs/tracing/processors/util.d.ts.map +1 -0
  40. package/dist/cjs/tracing/processors/util.js +50 -0
  41. package/dist/cjs/tracing/processors/util.js.map +1 -0
  42. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +22 -0
  43. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  44. package/dist/cjs/tracing/scopes/ExecuteToolScope.js +51 -0
  45. package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -0
  46. package/dist/cjs/tracing/scopes/InferenceScope.d.ts +47 -0
  47. package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -0
  48. package/dist/cjs/tracing/scopes/InferenceScope.js +83 -0
  49. package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -0
  50. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +33 -0
  51. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  52. package/dist/cjs/tracing/scopes/InvokeAgentScope.js +94 -0
  53. package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -0
  54. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +57 -0
  55. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  56. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +146 -0
  57. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  58. package/dist/cjs/tracing/util.d.ts +9 -0
  59. package/dist/cjs/tracing/util.d.ts.map +1 -0
  60. package/dist/cjs/tracing/util.js +28 -0
  61. package/dist/cjs/tracing/util.js.map +1 -0
  62. package/dist/cjs/utils/logging.d.ts +11 -0
  63. package/dist/cjs/utils/logging.d.ts.map +1 -0
  64. package/dist/cjs/utils/logging.js +84 -0
  65. package/dist/cjs/utils/logging.js.map +1 -0
  66. package/dist/esm/ObservabilityBuilder.d.ts +61 -0
  67. package/dist/esm/ObservabilityBuilder.d.ts.map +1 -0
  68. package/dist/esm/ObservabilityBuilder.js +137 -0
  69. package/dist/esm/ObservabilityBuilder.js.map +1 -0
  70. package/dist/esm/ObservabilityManager.d.ts +29 -0
  71. package/dist/esm/ObservabilityManager.d.ts.map +1 -0
  72. package/dist/esm/ObservabilityManager.js +57 -0
  73. package/dist/esm/ObservabilityManager.js.map +1 -0
  74. package/dist/esm/index.d.ts +10 -0
  75. package/dist/esm/index.d.ts.map +1 -0
  76. package/dist/esm/index.js +18 -0
  77. package/dist/esm/index.js.map +1 -0
  78. package/dist/esm/tracing/constants.d.ts +83 -0
  79. package/dist/esm/tracing/constants.d.ts.map +1 -0
  80. package/dist/esm/tracing/constants.js +97 -0
  81. package/dist/esm/tracing/constants.js.map +1 -0
  82. package/dist/esm/tracing/contracts.d.ts +186 -0
  83. package/dist/esm/tracing/contracts.d.ts.map +1 -0
  84. package/dist/esm/tracing/contracts.js +41 -0
  85. package/dist/esm/tracing/contracts.js.map +1 -0
  86. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +53 -0
  87. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  88. package/dist/esm/tracing/exporter/Agent365Exporter.js +281 -0
  89. package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -0
  90. package/dist/esm/tracing/exporter/utils.d.ts +38 -0
  91. package/dist/esm/tracing/exporter/utils.d.ts.map +1 -0
  92. package/dist/esm/tracing/exporter/utils.js +113 -0
  93. package/dist/esm/tracing/exporter/utils.js.map +1 -0
  94. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +182 -0
  95. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  96. package/dist/esm/tracing/middleware/BaggageBuilder.js +292 -0
  97. package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -0
  98. package/dist/esm/tracing/processors/SpanProcessor.d.ts +30 -0
  99. package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -0
  100. package/dist/esm/tracing/processors/SpanProcessor.js +94 -0
  101. package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -0
  102. package/dist/esm/tracing/processors/util.d.ts +9 -0
  103. package/dist/esm/tracing/processors/util.d.ts.map +1 -0
  104. package/dist/esm/tracing/processors/util.js +47 -0
  105. package/dist/esm/tracing/processors/util.js.map +1 -0
  106. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +22 -0
  107. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  108. package/dist/esm/tracing/scopes/ExecuteToolScope.js +47 -0
  109. package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -0
  110. package/dist/esm/tracing/scopes/InferenceScope.d.ts +47 -0
  111. package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -0
  112. package/dist/esm/tracing/scopes/InferenceScope.js +79 -0
  113. package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -0
  114. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +33 -0
  115. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  116. package/dist/esm/tracing/scopes/InvokeAgentScope.js +90 -0
  117. package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -0
  118. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +57 -0
  119. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  120. package/dist/esm/tracing/scopes/OpenTelemetryScope.js +139 -0
  121. package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  122. package/dist/esm/tracing/util.d.ts +9 -0
  123. package/dist/esm/tracing/util.d.ts.map +1 -0
  124. package/dist/esm/tracing/util.js +23 -0
  125. package/dist/esm/tracing/util.js.map +1 -0
  126. package/dist/esm/utils/logging.d.ts +11 -0
  127. package/dist/esm/utils/logging.d.ts.map +1 -0
  128. package/dist/esm/utils/logging.js +81 -0
  129. package/dist/esm/utils/logging.js.map +1 -0
  130. package/package.json +69 -0
@@ -0,0 +1,292 @@
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 caller ID baggage value.
96
+ * @param value The caller ID
97
+ * @returns Self for method chaining
98
+ */
99
+ callerId(value) {
100
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_ID_KEY, value);
101
+ return this;
102
+ }
103
+ /**
104
+ * Set the hiring manager ID baggage value.
105
+ * @param value The hiring manager ID
106
+ * @returns Self for method chaining
107
+ */
108
+ hiringManagerId(value) {
109
+ this.set(OpenTelemetryConstants.HIRING_MANAGER_ID_KEY, value);
110
+ return this;
111
+ }
112
+ /**
113
+ * Set the agent name baggage value.
114
+ * @param value The agent name
115
+ * @returns Self for method chaining
116
+ */
117
+ agentName(value) {
118
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY, value);
119
+ return this;
120
+ }
121
+ /**
122
+ * Set the agent description baggage value.
123
+ * @param value The agent description
124
+ * @returns Self for method chaining
125
+ */
126
+ agentDescription(value) {
127
+ this.set(OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY, value);
128
+ return this;
129
+ }
130
+ /**
131
+ * Set the caller name baggage value.
132
+ * @param value The caller name
133
+ * @returns Self for method chaining
134
+ */
135
+ callerName(value) {
136
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_NAME_KEY, value);
137
+ return this;
138
+ }
139
+ /**
140
+ * Set the caller UPN baggage value.
141
+ * @param value The caller UPN
142
+ * @returns Self for method chaining
143
+ */
144
+ callerUpn(value) {
145
+ this.set(OpenTelemetryConstants.GEN_AI_CALLER_UPN_KEY, value);
146
+ return this;
147
+ }
148
+ /**
149
+ * Set the conversation ID baggage value.
150
+ * @param value The conversation ID
151
+ * @returns Self for method chaining
152
+ */
153
+ conversationId(value) {
154
+ this.set(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, value);
155
+ return this;
156
+ }
157
+ /**
158
+ * Set the conversation item link baggage value.
159
+ * @param value The conversation item link
160
+ * @returns Self for method chaining
161
+ */
162
+ conversationItemLink(value) {
163
+ this.set(OpenTelemetryConstants.GEN_AI_CONVERSATION_ITEM_LINK_KEY, value);
164
+ return this;
165
+ }
166
+ /**
167
+ * Set the execution source metadata ID (e.g., channel ID).
168
+ * @param value The source metadata ID
169
+ * @returns Self for method chaining
170
+ */
171
+ sourceMetadataId(value) {
172
+ this.set(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_ID_KEY, value);
173
+ return this;
174
+ }
175
+ /**
176
+ * Set the execution source metadata name (e.g., channel name).
177
+ * @param value The source metadata name
178
+ * @returns Self for method chaining
179
+ */
180
+ sourceMetadataName(value) {
181
+ this.set(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, value);
182
+ return this;
183
+ }
184
+ /**
185
+ * Set the execution source metadata description (e.g., channel description).
186
+ * @param value The source metadata description
187
+ * @returns Self for method chaining
188
+ */
189
+ sourceMetadataDescription(value) {
190
+ this.set(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, value);
191
+ return this;
192
+ }
193
+ /**
194
+ * Set multiple baggage pairs from a dictionary or iterable.
195
+ * @param pairs Dictionary or iterable of key-value pairs
196
+ * @returns Self for method chaining
197
+ */
198
+ setPairs(pairs) {
199
+ if (!pairs) {
200
+ return this;
201
+ }
202
+ let entries;
203
+ if (Symbol.iterator in Object(pairs)) {
204
+ entries = pairs;
205
+ }
206
+ else {
207
+ entries = Object.entries(pairs);
208
+ }
209
+ for (const [key, value] of entries) {
210
+ if (value !== null && value !== undefined) {
211
+ this.set(key, String(value));
212
+ }
213
+ }
214
+ return this;
215
+ }
216
+ /**
217
+ * Apply the collected baggage to the current context.
218
+ * @returns A context manager that restores the previous baggage on exit
219
+ */
220
+ build() {
221
+ return new BaggageScope(this.pairs);
222
+ }
223
+ /**
224
+ * Add a baggage key/value if the value is not null or whitespace.
225
+ * @param key The baggage key
226
+ * @param value The baggage value
227
+ */
228
+ set(key, value) {
229
+ if (value !== null && value !== undefined) {
230
+ const trimmed = value.trim();
231
+ if (trimmed) {
232
+ this.pairs.set(key, trimmed);
233
+ }
234
+ }
235
+ }
236
+ /**
237
+ * Convenience method to begin a request baggage scope with common fields.
238
+ * @param tenantId The tenant ID
239
+ * @param agentId The agent ID
240
+ * @param correlationId The correlation ID
241
+ * @returns A context manager that restores the previous baggage on exit
242
+ */
243
+ static setRequestContext(tenantId, agentId, correlationId) {
244
+ return new BaggageBuilder()
245
+ .tenantId(tenantId)
246
+ .agentId(agentId)
247
+ .correlationId(correlationId)
248
+ .build();
249
+ }
250
+ }
251
+ /**
252
+ * Context manager for baggage scope.
253
+ *
254
+ * This class manages the lifecycle of baggage values, setting them on enter
255
+ * and restoring the previous context on exit.
256
+ */
257
+ export class BaggageScope {
258
+ constructor(pairs) {
259
+ // 1. Start from current active context
260
+ const currentCtx = otelContext.active();
261
+ // 2. Build merged baggage
262
+ let bag = propagation.getBaggage(currentCtx) ?? propagation.createBaggage({});
263
+ for (const [key, value] of pairs.entries()) {
264
+ if (value && value.trim()) {
265
+ bag = bag.setEntry(key, { value });
266
+ }
267
+ }
268
+ // 3. Create a new context that carries that baggage
269
+ this.contextWithBaggage = propagation.setBaggage(currentCtx, bag);
270
+ }
271
+ /**
272
+ * Execute a synchronous function under this baggage scope.
273
+ * Automatically restores previous context afterward.
274
+ */
275
+ run(fn) {
276
+ return otelContext.with(this.contextWithBaggage, fn);
277
+ }
278
+ /**
279
+ * Dispose is a no-op because OpenTelemetry JS automatically restores
280
+ * the previous context after `context.with()` completes.
281
+ */
282
+ [Symbol.dispose]() {
283
+ // Nothing to detach manually; context restoration happens automatically.
284
+ }
285
+ /**
286
+ * Manual cleanup alternative if caller isn't using `using`.
287
+ */
288
+ dispose() {
289
+ this[Symbol.dispose]();
290
+ }
291
+ }
292
+ //# 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;IAkElD;;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,94 @@
1
+ // ------------------------------------------------------------------------------
2
+ // Copyright (c) Microsoft Corporation. All rights reserved.
3
+ // ------------------------------------------------------------------------------
4
+ import { propagation } from '@opentelemetry/api';
5
+ import { OpenTelemetryConstants } 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
+ const spanRecord = span;
28
+ if (spanRecord.attributes) {
29
+ Object.keys(spanRecord.attributes).forEach(key => existingAttrs.add(key));
30
+ }
31
+ }
32
+ catch {
33
+ // Ignore errors accessing span attributes
34
+ }
35
+ // Get all baggage entries
36
+ const baggage = propagation.getBaggage(ctx);
37
+ if (!baggage) {
38
+ return;
39
+ }
40
+ const baggageMap = new Map();
41
+ baggage.getAllEntries().forEach(([key, entry]) => {
42
+ if (entry.value) {
43
+ baggageMap.set(key, entry.value);
44
+ }
45
+ });
46
+ // Determine if this is an invoke_agent operation
47
+ const operationName = baggageMap.get(OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY) ||
48
+ span.attributes?.[OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY];
49
+ const spanName = span.name || '';
50
+ const isInvokeAgent = operationName === OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME ||
51
+ spanName.startsWith(OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME);
52
+ // Build target key set
53
+ const targetKeys = new Set(GENERIC_ATTRIBUTES);
54
+ if (isInvokeAgent) {
55
+ INVOKE_AGENT_ATTRIBUTES.forEach(key => targetKeys.add(key));
56
+ }
57
+ // Copy baggage to span attributes
58
+ for (const key of targetKeys) {
59
+ // Skip if attribute already exists
60
+ if (existingAttrs.has(key)) {
61
+ continue;
62
+ }
63
+ const value = baggageMap.get(key);
64
+ if (!value) {
65
+ continue;
66
+ }
67
+ try {
68
+ span.setAttribute(key, value);
69
+ }
70
+ catch {
71
+ // Ignore errors setting attributes
72
+ }
73
+ }
74
+ }
75
+ /**
76
+ * Called when a span is ended.
77
+ */
78
+ onEnd(_span) {
79
+ // No-op for this processor
80
+ }
81
+ /**
82
+ * Shutdown the processor.
83
+ */
84
+ async shutdown() {
85
+ // No-op for this processor
86
+ }
87
+ /**
88
+ * Force flush the processor.
89
+ */
90
+ async forceFlush() {
91
+ // No-op for this processor
92
+ }
93
+ }
94
+ //# 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,EAe/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAmBpD,CAAC"}
@@ -0,0 +1,47 @@
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.GEN_AI_CONVERSATION_ID_KEY,
14
+ consts.GEN_AI_CONVERSATION_ITEM_LINK_KEY,
15
+ consts.GEN_AI_OPERATION_NAME_KEY,
16
+ consts.GEN_AI_AGENT_ID_KEY,
17
+ consts.GEN_AI_AGENT_NAME_KEY,
18
+ consts.GEN_AI_AGENT_DESCRIPTION_KEY,
19
+ consts.GEN_AI_AGENT_USER_ID_KEY,
20
+ consts.GEN_AI_AGENT_UPN_KEY,
21
+ consts.GEN_AI_AGENT_BLUEPRINT_ID_KEY,
22
+ consts.GEN_AI_AGENT_AUID_KEY,
23
+ ];
24
+ /**
25
+ * Invoke Agent-specific attributes
26
+ */
27
+ export const INVOKE_AGENT_ATTRIBUTES = [
28
+ // Caller / Invoker attributes
29
+ consts.GEN_AI_CALLER_ID_KEY,
30
+ consts.GEN_AI_CALLER_NAME_KEY,
31
+ consts.GEN_AI_CALLER_UPN_KEY,
32
+ consts.GEN_AI_CALLER_USER_ID_KEY,
33
+ consts.GEN_AI_CALLER_TENANT_ID_KEY,
34
+ // Caller Agent (A2A) attributes
35
+ consts.GEN_AI_CALLER_AGENT_ID_KEY,
36
+ consts.GEN_AI_CALLER_AGENT_NAME_KEY,
37
+ consts.GEN_AI_CALLER_AGENT_USER_ID_KEY,
38
+ consts.GEN_AI_CALLER_AGENT_UPN_KEY,
39
+ consts.GEN_AI_CALLER_AGENT_TENANT_ID_KEY,
40
+ consts.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY,
41
+ // Execution context
42
+ consts.GEN_AI_EXECUTION_TYPE_KEY,
43
+ consts.GEN_AI_EXECUTION_SOURCE_ID_KEY,
44
+ consts.GEN_AI_EXECUTION_SOURCE_NAME_KEY,
45
+ consts.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY,
46
+ ];
47
+ //# 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,0BAA0B;IACjC,MAAM,CAAC,iCAAiC;IACxC,MAAM,CAAC,yBAAyB;IAChC,MAAM,CAAC,mBAAmB;IAC1B,MAAM,CAAC,qBAAqB;IAC5B,MAAM,CAAC,4BAA4B;IACnC,MAAM,CAAC,wBAAwB;IAC/B,MAAM,CAAC,oBAAoB;IAC3B,MAAM,CAAC,6BAA6B;IACpC,MAAM,CAAC,qBAAqB;CAC7B,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,yBAAyB;IAChC,MAAM,CAAC,2BAA2B;IAClC,gCAAgC;IAChC,MAAM,CAAC,0BAA0B;IACjC,MAAM,CAAC,4BAA4B;IACnC,MAAM,CAAC,+BAA+B;IACtC,MAAM,CAAC,2BAA2B;IAClC,MAAM,CAAC,iCAAiC;IACxC,MAAM,CAAC,sCAAsC;IAC7C,oBAAoB;IACpB,MAAM,CAAC,yBAAyB;IAChC,MAAM,CAAC,8BAA8B;IACrC,MAAM,CAAC,gCAAgC;IACvC,MAAM,CAAC,uCAAuC;CAC/C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
2
+ import { ToolCallDetails, AgentDetails, TenantDetails } from '../contracts';
3
+ /**
4
+ * Provides OpenTelemetry tracing scope for AI tool execution operations.
5
+ */
6
+ export declare class ExecuteToolScope extends OpenTelemetryScope {
7
+ /**
8
+ * Creates and starts a new scope for tool execution tracing.
9
+ * @param details The tool call details
10
+ * @param agentDetails The agent details
11
+ * @param tenantDetails The tenant details
12
+ * @returns A new ExecuteToolScope instance.
13
+ */
14
+ static start(details: ToolCallDetails, agentDetails: AgentDetails, tenantDetails: TenantDetails): ExecuteToolScope;
15
+ private constructor();
16
+ /**
17
+ * Records response information for telemetry tracking.
18
+ * @param response The tool execution response
19
+ */
20
+ recordResponse(response: string): void;
21
+ }
22
+ //# 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,MAAM,cAAc,CAAC;AAG5E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;OAMG;WACW,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,GAAG,gBAAgB;IAIzH,OAAO;IA6BP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAG9C"}
@@ -0,0 +1,47 @@
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
+ * @returns A new ExecuteToolScope instance.
17
+ */
18
+ static start(details, agentDetails, tenantDetails) {
19
+ return new ExecuteToolScope(details, agentDetails, tenantDetails);
20
+ }
21
+ constructor(details, agentDetails, tenantDetails) {
22
+ super(SpanKind.INTERNAL, OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME, `${OpenTelemetryConstants.EXECUTE_TOOL_OPERATION_NAME} ${details.toolName}`, agentDetails, tenantDetails);
23
+ // Destructure the details object to match C# pattern
24
+ const { toolName, arguments: args, toolCallId, description, toolType, endpoint } = details;
25
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_NAME_KEY, toolName);
26
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_ARGS_KEY, args);
27
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_TYPE_KEY, toolType);
28
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_CALL_ID_KEY, toolCallId);
29
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_TOOL_DESCRIPTION_KEY, description);
30
+ // Set endpoint information if provided
31
+ if (endpoint) {
32
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, endpoint.host);
33
+ // Only record port if it is different from 443 (default HTTPS port)
34
+ if (endpoint.port && endpoint.port !== 443) {
35
+ this.setTagMaybe(OpenTelemetryConstants.SERVER_PORT_KEY, endpoint.port);
36
+ }
37
+ }
38
+ }
39
+ /**
40
+ * Records response information for telemetry tracking.
41
+ * @param response The tool execution response
42
+ */
43
+ recordResponse(response) {
44
+ this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EVENT_CONTENT, response);
45
+ }
46
+ }
47
+ //# 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;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IACtD;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,OAAwB,EAAE,YAA0B,EAAE,aAA4B;QACpG,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IAED,YAAoB,OAAwB,EAAE,YAA0B,EAAE,aAA4B;QACpG,KAAK,CACH,QAAQ,CAAC,QAAQ,EACjB,sBAAsB,CAAC,2BAA2B,EAClD,GAAG,sBAAsB,CAAC,2BAA2B,IAAI,OAAO,CAAC,QAAQ,EAAE,EAC3E,YAAY,EACZ,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;QAElF,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"}
@@ -0,0 +1,47 @@
1
+ import { OpenTelemetryScope } from './OpenTelemetryScope';
2
+ import { InferenceDetails, AgentDetails, TenantDetails } from '../contracts';
3
+ /**
4
+ * Provides OpenTelemetry tracing scope for generative AI inference operations.
5
+ */
6
+ export declare class InferenceScope extends OpenTelemetryScope {
7
+ /**
8
+ * Creates and starts a new scope for inference tracing.
9
+ * @param details The inference call details
10
+ * @param agentDetails The agent details
11
+ * @param tenantDetails The tenant details
12
+ * @returns A new InferenceScope instance
13
+ */
14
+ static start(details: InferenceDetails, agentDetails: AgentDetails, tenantDetails: TenantDetails): InferenceScope;
15
+ private constructor();
16
+ /**
17
+ * Records the input messages for telemetry tracking.
18
+ * @param messages Array of input messages
19
+ */
20
+ recordInputMessages(messages: string[]): void;
21
+ /**
22
+ * Records the output messages for telemetry tracking.
23
+ * @param messages Array of output messages
24
+ */
25
+ recordOutputMessages(messages: string[]): void;
26
+ /**
27
+ * Records the number of input tokens for telemetry tracking.
28
+ * @param inputTokens Number of input tokens
29
+ */
30
+ recordInputTokens(inputTokens: number): void;
31
+ /**
32
+ * Records the number of output tokens for telemetry tracking.
33
+ * @param outputTokens Number of output tokens
34
+ */
35
+ recordOutputTokens(outputTokens: number): void;
36
+ /**
37
+ * Records the response id for telemetry tracking.
38
+ * @param responseId The response ID
39
+ */
40
+ recordResponseId(responseId: string): void;
41
+ /**
42
+ * Records the finish reasons for telemetry tracking.
43
+ * @param finishReasons Array of finish reasons
44
+ */
45
+ recordFinishReasons(finishReasons: string[]): void;
46
+ }
47
+ //# sourceMappingURL=InferenceScope.d.ts.map
@@ -0,0 +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,EACd,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;;;OAMG;WACW,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,GAAG,cAAc;IAIxH,OAAO;IAmBP;;;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"}