@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.
- package/README.md +33 -0
- package/dist/cjs/ObservabilityBuilder.d.ts +61 -0
- package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -0
- package/dist/cjs/ObservabilityBuilder.js +141 -0
- package/dist/cjs/ObservabilityBuilder.js.map +1 -0
- package/dist/cjs/ObservabilityManager.d.ts +29 -0
- package/dist/cjs/ObservabilityManager.d.ts.map +1 -0
- package/dist/cjs/ObservabilityManager.js +61 -0
- package/dist/cjs/ObservabilityManager.js.map +1 -0
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +33 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/tracing/constants.d.ts +83 -0
- package/dist/cjs/tracing/constants.d.ts.map +1 -0
- package/dist/cjs/tracing/constants.js +101 -0
- package/dist/cjs/tracing/constants.js.map +1 -0
- package/dist/cjs/tracing/contracts.d.ts +186 -0
- package/dist/cjs/tracing/contracts.d.ts.map +1 -0
- package/dist/cjs/tracing/contracts.js +44 -0
- package/dist/cjs/tracing/contracts.js.map +1 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +53 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.js +318 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -0
- package/dist/cjs/tracing/exporter/utils.d.ts +38 -0
- package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/utils.js +126 -0
- package/dist/cjs/tracing/exporter/utils.js.map +1 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +182 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.js +297 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -0
- package/dist/cjs/tracing/processors/SpanProcessor.d.ts +30 -0
- package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -0
- package/dist/cjs/tracing/processors/SpanProcessor.js +98 -0
- package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -0
- package/dist/cjs/tracing/processors/util.d.ts +9 -0
- package/dist/cjs/tracing/processors/util.d.ts.map +1 -0
- package/dist/cjs/tracing/processors/util.js +50 -0
- package/dist/cjs/tracing/processors/util.js.map +1 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +22 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.js +51 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -0
- package/dist/cjs/tracing/scopes/InferenceScope.d.ts +47 -0
- package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/InferenceScope.js +83 -0
- package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +33 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js +94 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +57 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +146 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -0
- package/dist/cjs/tracing/util.d.ts +9 -0
- package/dist/cjs/tracing/util.d.ts.map +1 -0
- package/dist/cjs/tracing/util.js +28 -0
- package/dist/cjs/tracing/util.js.map +1 -0
- package/dist/cjs/utils/logging.d.ts +11 -0
- package/dist/cjs/utils/logging.d.ts.map +1 -0
- package/dist/cjs/utils/logging.js +84 -0
- package/dist/cjs/utils/logging.js.map +1 -0
- package/dist/esm/ObservabilityBuilder.d.ts +61 -0
- package/dist/esm/ObservabilityBuilder.d.ts.map +1 -0
- package/dist/esm/ObservabilityBuilder.js +137 -0
- package/dist/esm/ObservabilityBuilder.js.map +1 -0
- package/dist/esm/ObservabilityManager.d.ts +29 -0
- package/dist/esm/ObservabilityManager.d.ts.map +1 -0
- package/dist/esm/ObservabilityManager.js +57 -0
- package/dist/esm/ObservabilityManager.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/tracing/constants.d.ts +83 -0
- package/dist/esm/tracing/constants.d.ts.map +1 -0
- package/dist/esm/tracing/constants.js +97 -0
- package/dist/esm/tracing/constants.js.map +1 -0
- package/dist/esm/tracing/contracts.d.ts +186 -0
- package/dist/esm/tracing/contracts.d.ts.map +1 -0
- package/dist/esm/tracing/contracts.js +41 -0
- package/dist/esm/tracing/contracts.js.map +1 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +53 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.js +281 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -0
- package/dist/esm/tracing/exporter/utils.d.ts +38 -0
- package/dist/esm/tracing/exporter/utils.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/utils.js +113 -0
- package/dist/esm/tracing/exporter/utils.js.map +1 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +182 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.js +292 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -0
- package/dist/esm/tracing/processors/SpanProcessor.d.ts +30 -0
- package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -0
- package/dist/esm/tracing/processors/SpanProcessor.js +94 -0
- package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -0
- package/dist/esm/tracing/processors/util.d.ts +9 -0
- package/dist/esm/tracing/processors/util.d.ts.map +1 -0
- package/dist/esm/tracing/processors/util.js +47 -0
- package/dist/esm/tracing/processors/util.js.map +1 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +22 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.js +47 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -0
- package/dist/esm/tracing/scopes/InferenceScope.d.ts +47 -0
- package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/InferenceScope.js +79 -0
- package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +33 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.js +90 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +57 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js +139 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -0
- package/dist/esm/tracing/util.d.ts +9 -0
- package/dist/esm/tracing/util.d.ts.map +1 -0
- package/dist/esm/tracing/util.js +23 -0
- package/dist/esm/tracing/util.js.map +1 -0
- package/dist/esm/utils/logging.d.ts +11 -0
- package/dist/esm/utils/logging.d.ts.map +1 -0
- package/dist/esm/utils/logging.js +81 -0
- package/dist/esm/utils/logging.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { ExportResultCode } from '@opentelemetry/core';
|
|
2
|
+
import { PowerPlatformApiDiscovery } from '@microsoft/agents-a365-runtime';
|
|
3
|
+
import { partitionByIdentity, parseIdentityKey, hexTraceId, hexSpanId, kindName, statusName } from './utils';
|
|
4
|
+
import logger, { formatError } from '../../utils/logging';
|
|
5
|
+
const DEFAULT_HTTP_TIMEOUT_SECONDS = 30000; // 30 seconds in ms
|
|
6
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
7
|
+
/**
|
|
8
|
+
* Observability span exporter for Agent365:
|
|
9
|
+
* - Partitions spans by (tenantId, agentId)
|
|
10
|
+
* - Builds OTLP-like JSON: resourceSpans -> scopeSpans -> spans
|
|
11
|
+
* - POSTs per group to https://{endpoint}/maven/agent365/agents/{agentId}/traces?api-version=1
|
|
12
|
+
* - Adds Bearer token via token_resolver(agentId, tenantId)
|
|
13
|
+
*/
|
|
14
|
+
export class Agent365Exporter {
|
|
15
|
+
constructor(tokenResolver, clusterCategory = 'prod') {
|
|
16
|
+
this.closed = false;
|
|
17
|
+
if (!tokenResolver) {
|
|
18
|
+
logger.error('[Agent365Exporter] token_resolver is not provided');
|
|
19
|
+
throw new Error('token_resolver must be provided.');
|
|
20
|
+
}
|
|
21
|
+
this.tokenResolver = tokenResolver;
|
|
22
|
+
this.clusterCategory = clusterCategory;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Export spans to Agent365 service
|
|
26
|
+
*/
|
|
27
|
+
async export(spans, resultCallback) {
|
|
28
|
+
if (this.closed) {
|
|
29
|
+
resultCallback({ code: ExportResultCode.FAILED });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
logger.info(`[Agent365Exporter] Exporting ${spans.length} spans`);
|
|
34
|
+
const groups = partitionByIdentity(spans);
|
|
35
|
+
if (groups.size === 0) {
|
|
36
|
+
logger.info('[Agent365Exporter] No groups to export');
|
|
37
|
+
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
logger.info(`[Agent365Exporter] Exporting ${groups.size} identity groups`);
|
|
41
|
+
let anyFailure = false;
|
|
42
|
+
const promises = [];
|
|
43
|
+
for (const [identityKey, activities] of groups) {
|
|
44
|
+
const promise = this.exportGroup(identityKey, activities).catch(() => {
|
|
45
|
+
anyFailure = true;
|
|
46
|
+
});
|
|
47
|
+
promises.push(promise);
|
|
48
|
+
}
|
|
49
|
+
await Promise.all(promises);
|
|
50
|
+
logger.info(`[Agent365Exporter] Export completed. Success: ${!anyFailure}`);
|
|
51
|
+
resultCallback({
|
|
52
|
+
code: anyFailure ? ExportResultCode.FAILED : ExportResultCode.SUCCESS
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// Exporters should not raise; signal failure
|
|
57
|
+
resultCallback({ code: ExportResultCode.FAILED });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Export a group of spans for a specific identity
|
|
62
|
+
*/
|
|
63
|
+
async exportGroup(identityKey, spans) {
|
|
64
|
+
const { tenantId, agentId } = parseIdentityKey(identityKey);
|
|
65
|
+
logger.info(`[Agent365Exporter] Exporting ${spans.length} spans for tenantId: ${tenantId}, agentId: ${agentId}`);
|
|
66
|
+
const payload = this.buildExportRequest(spans);
|
|
67
|
+
const body = JSON.stringify(payload);
|
|
68
|
+
// Resolve endpoint + token based on cluster category (defaults to 'prod')
|
|
69
|
+
const discovery = new PowerPlatformApiDiscovery(this.clusterCategory);
|
|
70
|
+
const endpoint = discovery.getTenantIslandClusterEndpoint(tenantId);
|
|
71
|
+
const url = `https://${endpoint}/maven/agent365/agents/${agentId}/traces?api-version=1`;
|
|
72
|
+
logger.info(`[Agent365Exporter] Resolved endpoint: ${endpoint}`);
|
|
73
|
+
const headers = {
|
|
74
|
+
'content-type': 'application/json'
|
|
75
|
+
};
|
|
76
|
+
const tokenResult = this.tokenResolver(agentId, tenantId);
|
|
77
|
+
const token = tokenResult instanceof Promise ? await tokenResult : tokenResult;
|
|
78
|
+
if (token) {
|
|
79
|
+
headers['authorization'] = `Bearer ${token}`;
|
|
80
|
+
logger.info('[Agent365Exporter] Token resolved successfully');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
logger.error('[Agent365Exporter] No token resolved');
|
|
84
|
+
}
|
|
85
|
+
// Basic retry loop
|
|
86
|
+
const ok = await this.postWithRetries(url, body, headers);
|
|
87
|
+
if (!ok) {
|
|
88
|
+
logger.error('[Agent365Exporter] Failed to export spans');
|
|
89
|
+
throw new Error('Failed to export spans');
|
|
90
|
+
}
|
|
91
|
+
logger.info('[Agent365Exporter] Successfully exported spans');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* HTTP POST with retry logic
|
|
95
|
+
*/
|
|
96
|
+
async postWithRetries(url, body, headers) {
|
|
97
|
+
for (let attempt = 0; attempt <= DEFAULT_MAX_RETRIES; attempt++) {
|
|
98
|
+
let correlationId;
|
|
99
|
+
try {
|
|
100
|
+
logger.info(`[Agent365Exporter] Posting OTLP export request - Attempt ${attempt + 1}`);
|
|
101
|
+
const response = await fetch(url, {
|
|
102
|
+
method: 'POST',
|
|
103
|
+
headers,
|
|
104
|
+
body,
|
|
105
|
+
signal: AbortSignal.timeout(DEFAULT_HTTP_TIMEOUT_SECONDS)
|
|
106
|
+
});
|
|
107
|
+
correlationId = response?.headers?.get('x-ms-correlation-id') || response?.headers?.get('x-correlation-id') || 'unknown';
|
|
108
|
+
// 2xx => success
|
|
109
|
+
if (response.status >= 200 && response.status < 300) {
|
|
110
|
+
logger.info(`[Agent365Exporter] Success with status ${response.status}, correlation ID: ${correlationId}`);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
// Retry transient errors
|
|
114
|
+
if ([408, 429].includes(response.status) || (response.status >= 500 && response.status < 600)) {
|
|
115
|
+
if (attempt < DEFAULT_MAX_RETRIES) {
|
|
116
|
+
const sleepMs = 200 * (attempt + 1);
|
|
117
|
+
logger.warn(`[Agent365Exporter] Transient error ${response.status}, correlation ID: ${correlationId}, retrying after ${sleepMs}ms`);
|
|
118
|
+
await this.sleep(sleepMs);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
logger.error(`[Agent365Exporter] Failed with status ${response.status}, correlation ID: ${correlationId}`);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
logger.error('[Agent365Exporter] Request error:', formatError(error));
|
|
127
|
+
if (attempt < DEFAULT_MAX_RETRIES) {
|
|
128
|
+
const sleepMs = 200 * (attempt + 1);
|
|
129
|
+
logger.info(`[Agent365Exporter] Retrying after ${sleepMs}ms`);
|
|
130
|
+
await this.sleep(sleepMs);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Sleep for specified milliseconds
|
|
140
|
+
*/
|
|
141
|
+
sleep(ms) {
|
|
142
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Build OTLP export request payload
|
|
146
|
+
*/
|
|
147
|
+
buildExportRequest(spans) {
|
|
148
|
+
// Group by instrumentation scope (name, version)
|
|
149
|
+
const scopeMap = new Map();
|
|
150
|
+
logger.info('[Agent365Exporter] Building OTLP export request payload');
|
|
151
|
+
for (const sp of spans) {
|
|
152
|
+
const scope = sp.instrumentationScope || sp.instrumentationLibrary;
|
|
153
|
+
const scopeKey = `${scope?.name || 'unknown'}:${scope?.version || ''}`;
|
|
154
|
+
const existing = scopeMap.get(scopeKey) || [];
|
|
155
|
+
existing.push(this.mapSpan(sp));
|
|
156
|
+
scopeMap.set(scopeKey, existing);
|
|
157
|
+
}
|
|
158
|
+
const scopeSpans = [];
|
|
159
|
+
for (const [scopeKey, mappedSpans] of scopeMap) {
|
|
160
|
+
const [name, version] = scopeKey.split(':');
|
|
161
|
+
scopeSpans.push({
|
|
162
|
+
scope: {
|
|
163
|
+
name,
|
|
164
|
+
version: version || undefined,
|
|
165
|
+
},
|
|
166
|
+
spans: mappedSpans,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
// Resource attributes (from the first span - all spans in a batch usually share resource)
|
|
170
|
+
let resourceAttrs = {};
|
|
171
|
+
if (spans.length > 0) {
|
|
172
|
+
const firstSpanResource = spans[0].resource?.attributes;
|
|
173
|
+
if (firstSpanResource) {
|
|
174
|
+
resourceAttrs = { ...firstSpanResource };
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
resourceSpans: [
|
|
179
|
+
{
|
|
180
|
+
resource: { attributes: Object.keys(resourceAttrs).length > 0 ? resourceAttrs : null },
|
|
181
|
+
scopeSpans,
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Map a ReadableSpan to OTLP span format
|
|
188
|
+
*/
|
|
189
|
+
mapSpan(sp) {
|
|
190
|
+
const spanContext = sp.spanContext();
|
|
191
|
+
// Extract parent span ID - check multiple possible sources
|
|
192
|
+
let parentSpanIdHex = undefined;
|
|
193
|
+
const parentContext = sp.parentSpanContext;
|
|
194
|
+
if (parentContext?.spanId && parentContext.spanId !== '0000000000000000') {
|
|
195
|
+
parentSpanIdHex = hexSpanId(parentContext.spanId);
|
|
196
|
+
}
|
|
197
|
+
// attributes
|
|
198
|
+
const attrs = sp.attributes ? { ...sp.attributes } : {};
|
|
199
|
+
// events
|
|
200
|
+
const events = [];
|
|
201
|
+
for (const ev of sp.events || []) {
|
|
202
|
+
// Handle both hrtime arrays and direct nanosecond timestamps
|
|
203
|
+
let timeNs;
|
|
204
|
+
if (Array.isArray(ev.time)) {
|
|
205
|
+
timeNs = ev.time[0] * 1000000000 + ev.time[1];
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
timeNs = ev.time;
|
|
209
|
+
}
|
|
210
|
+
const evAttrs = ev.attributes && Object.keys(ev.attributes).length > 0 ? { ...ev.attributes } : null;
|
|
211
|
+
events.push({
|
|
212
|
+
timeUnixNano: timeNs,
|
|
213
|
+
name: ev.name,
|
|
214
|
+
attributes: evAttrs,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// links
|
|
218
|
+
const links = [];
|
|
219
|
+
for (const ln of sp.links || []) {
|
|
220
|
+
const lnAttrs = ln.attributes && Object.keys(ln.attributes).length > 0 ? { ...ln.attributes } : null;
|
|
221
|
+
links.push({
|
|
222
|
+
traceId: hexTraceId(ln.context.traceId),
|
|
223
|
+
spanId: hexSpanId(ln.context.spanId),
|
|
224
|
+
attributes: lnAttrs,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
// status
|
|
228
|
+
const statusCode = sp.status?.code ?? 0; // Default to UNSET (0) if no status
|
|
229
|
+
const status = {
|
|
230
|
+
code: statusName(statusCode),
|
|
231
|
+
message: sp.status?.message || '',
|
|
232
|
+
};
|
|
233
|
+
// Convert hrtime to nanoseconds - handle both hrtime arrays and direct nanosecond values
|
|
234
|
+
let startTimeNs;
|
|
235
|
+
let endTimeNs;
|
|
236
|
+
if (Array.isArray(sp.startTime)) {
|
|
237
|
+
// hrtime format [seconds, nanoseconds]
|
|
238
|
+
startTimeNs = sp.startTime[0] * 1000000000 + sp.startTime[1];
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
// Direct nanosecond value
|
|
242
|
+
startTimeNs = sp.startTime;
|
|
243
|
+
}
|
|
244
|
+
if (Array.isArray(sp.endTime)) {
|
|
245
|
+
// hrtime format [seconds, nanoseconds]
|
|
246
|
+
endTimeNs = sp.endTime[0] * 1000000000 + sp.endTime[1];
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
// Direct nanosecond value
|
|
250
|
+
endTimeNs = sp.endTime;
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
traceId: hexTraceId(spanContext.traceId),
|
|
254
|
+
spanId: hexSpanId(spanContext.spanId),
|
|
255
|
+
parentSpanId: parentSpanIdHex,
|
|
256
|
+
name: sp.name,
|
|
257
|
+
kind: kindName(sp.kind),
|
|
258
|
+
startTimeUnixNano: startTimeNs,
|
|
259
|
+
endTimeUnixNano: endTimeNs,
|
|
260
|
+
attributes: Object.keys(attrs).length > 0 ? attrs : null,
|
|
261
|
+
events: events.length > 0 ? events : null,
|
|
262
|
+
links: links.length > 0 ? links : null,
|
|
263
|
+
status,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Shutdown the exporter
|
|
268
|
+
*/
|
|
269
|
+
async shutdown() {
|
|
270
|
+
logger.info('[Agent365Exporter] Shutting down exporter');
|
|
271
|
+
this.closed = true;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Force flush any pending spans
|
|
275
|
+
*/
|
|
276
|
+
async forceFlush() {
|
|
277
|
+
// No-op for this implementation
|
|
278
|
+
return Promise.resolve();
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=Agent365Exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Agent365Exporter.js","sourceRoot":"","sources":["../../../../src/tracing/exporter/Agent365Exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import { SpanKind, SpanStatusCode } from '@opentelemetry/api';
|
|
3
|
+
/**
|
|
4
|
+
* Convert trace ID to hex string format
|
|
5
|
+
*/
|
|
6
|
+
export declare function hexTraceId(value: string | number): string;
|
|
7
|
+
/**
|
|
8
|
+
* Convert span ID to hex string format
|
|
9
|
+
*/
|
|
10
|
+
export declare function hexSpanId(value: string | number): string;
|
|
11
|
+
/**
|
|
12
|
+
* Convert any value to string, handling null/undefined
|
|
13
|
+
*/
|
|
14
|
+
export declare function asStr(v: unknown): string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Get span kind name from SpanKind enum
|
|
17
|
+
*/
|
|
18
|
+
export declare function kindName(kind: SpanKind): string;
|
|
19
|
+
/**
|
|
20
|
+
* Get status name from SpanStatusCode enum
|
|
21
|
+
*/
|
|
22
|
+
export declare function statusName(code: SpanStatusCode): string;
|
|
23
|
+
/**
|
|
24
|
+
* Partition spans by (tenantId, agentId) identity pairs
|
|
25
|
+
*/
|
|
26
|
+
export declare function partitionByIdentity(spans: ReadableSpan[]): Map<string, ReadableSpan[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Check if Agent 365 exporter is enabled via environment variable
|
|
29
|
+
*/
|
|
30
|
+
export declare function isAgent365ExporterEnabled(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Parse identity key back to tenant and agent IDs
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseIdentityKey(key: string): {
|
|
35
|
+
tenantId: string;
|
|
36
|
+
agentId: string;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/tracing/exporter/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI9D;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAOxD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAe/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAWvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EAAE,GACpB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAuB7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAMnD;AAGD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGnF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
// ------------------------------------------------------------------------------
|
|
4
|
+
import { SpanKind, SpanStatusCode } from '@opentelemetry/api';
|
|
5
|
+
import { OpenTelemetryConstants } from '../constants';
|
|
6
|
+
import logger from '../../utils/logging';
|
|
7
|
+
/**
|
|
8
|
+
* Convert trace ID to hex string format
|
|
9
|
+
*/
|
|
10
|
+
export function hexTraceId(value) {
|
|
11
|
+
if (typeof value === 'number') {
|
|
12
|
+
// Convert integer to 32 hex chars (128-bit)
|
|
13
|
+
return value.toString(16).padStart(32, '0');
|
|
14
|
+
}
|
|
15
|
+
// Handle hex string input - ensure it's 32 hex characters
|
|
16
|
+
return value.replace(/^0x/, '').padStart(32, '0');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Convert span ID to hex string format
|
|
20
|
+
*/
|
|
21
|
+
export function hexSpanId(value) {
|
|
22
|
+
if (typeof value === 'number') {
|
|
23
|
+
// Convert integer to 16 hex chars (64-bit)
|
|
24
|
+
return value.toString(16).padStart(16, '0');
|
|
25
|
+
}
|
|
26
|
+
// Handle hex string input - ensure it's 16 hex characters
|
|
27
|
+
return value.replace(/^0x/, '').padStart(16, '0');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Convert any value to string, handling null/undefined
|
|
31
|
+
*/
|
|
32
|
+
export function asStr(v) {
|
|
33
|
+
if (v === null || v === undefined) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const s = String(v);
|
|
37
|
+
return s.trim() ? s : undefined;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get span kind name from SpanKind enum
|
|
41
|
+
*/
|
|
42
|
+
export function kindName(kind) {
|
|
43
|
+
switch (kind) {
|
|
44
|
+
case SpanKind.INTERNAL:
|
|
45
|
+
return 'INTERNAL';
|
|
46
|
+
case SpanKind.SERVER:
|
|
47
|
+
return 'SERVER';
|
|
48
|
+
case SpanKind.CLIENT:
|
|
49
|
+
return 'CLIENT';
|
|
50
|
+
case SpanKind.PRODUCER:
|
|
51
|
+
return 'PRODUCER';
|
|
52
|
+
case SpanKind.CONSUMER:
|
|
53
|
+
return 'CONSUMER';
|
|
54
|
+
default:
|
|
55
|
+
return 'UNSPECIFIED';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get status name from SpanStatusCode enum
|
|
60
|
+
*/
|
|
61
|
+
export function statusName(code) {
|
|
62
|
+
switch (code) {
|
|
63
|
+
case SpanStatusCode.UNSET:
|
|
64
|
+
return 'UNSET';
|
|
65
|
+
case SpanStatusCode.OK:
|
|
66
|
+
return 'OK';
|
|
67
|
+
case SpanStatusCode.ERROR:
|
|
68
|
+
return 'ERROR';
|
|
69
|
+
default:
|
|
70
|
+
return 'UNSET';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Partition spans by (tenantId, agentId) identity pairs
|
|
75
|
+
*/
|
|
76
|
+
export function partitionByIdentity(spans) {
|
|
77
|
+
const groups = new Map();
|
|
78
|
+
let skippedCount = 0;
|
|
79
|
+
for (const span of spans) {
|
|
80
|
+
const attrs = span.attributes || {};
|
|
81
|
+
const tenant = asStr(attrs[OpenTelemetryConstants.TENANT_ID_KEY]);
|
|
82
|
+
const agent = asStr(attrs[OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY]);
|
|
83
|
+
if (!tenant || !agent) {
|
|
84
|
+
skippedCount++;
|
|
85
|
+
logger.warn(`[Agent365Exporter] Skipping span without tenant or agent ID. Span name: ${span.name}`);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const key = `${tenant}:${agent}`;
|
|
89
|
+
const existing = groups.get(key) || [];
|
|
90
|
+
existing.push(span);
|
|
91
|
+
groups.set(key, existing);
|
|
92
|
+
}
|
|
93
|
+
logger.info(`[Agent365Exporter] Partitioned into ${groups.size} identity groups (${skippedCount} spans skipped)`);
|
|
94
|
+
return groups;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if Agent 365 exporter is enabled via environment variable
|
|
98
|
+
*/
|
|
99
|
+
export function isAgent365ExporterEnabled() {
|
|
100
|
+
const a365Env = process.env[OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY_EXPORTER]?.toLowerCase() || '';
|
|
101
|
+
const validValues = ['true', '1', 'yes', 'on'];
|
|
102
|
+
const enabled = validValues.includes(a365Env);
|
|
103
|
+
logger.info(`[Agent365Exporter] Agent 365 exporter enabled: ${enabled}`);
|
|
104
|
+
return enabled;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parse identity key back to tenant and agent IDs
|
|
108
|
+
*/
|
|
109
|
+
export function parseIdentityKey(key) {
|
|
110
|
+
const [tenantId, agentId] = key.split(':');
|
|
111
|
+
return { tenantId, agentId };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/tracing/exporter/utils.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAGjF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,4CAA4C;QAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,0DAA0D;IAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAsB;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,2CAA2C;QAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,0DAA0D;IAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,CAAU;IAC9B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAc;IACrC,QAAQ,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,UAAU,CAAC;QACpB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,UAAU,CAAC;QACpB,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAoB;IAC7C,QAAQ,IAAI,EAAE,CAAC;QACf,KAAK,cAAc,CAAC,KAAK;YACvB,OAAO,OAAO,CAAC;QACjB,KAAK,cAAc,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,KAAK,cAAc,CAAC,KAAK;YACvB,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEjD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACtB,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,2EAA2E,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpG,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,MAAM,CAAC,IAAI,qBAAqB,YAAY,iBAAiB,CAAC,CAAC;IAClH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,kCAAkC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC5G,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAY,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC;AACjB,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per request baggage builder for OpenTelemetry context propagation.
|
|
3
|
+
*
|
|
4
|
+
* This class provides a fluent API for setting baggage values that will be
|
|
5
|
+
* propagated in the OpenTelemetry context.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const scope = new BaggageBuilder()
|
|
10
|
+
* .tenantId("tenant-123")
|
|
11
|
+
* .agentId("agent-456")
|
|
12
|
+
* .correlationId("corr-789")
|
|
13
|
+
* .build();
|
|
14
|
+
*
|
|
15
|
+
* scope.enter();
|
|
16
|
+
* // Baggage is set in this context
|
|
17
|
+
* // ... do work ...
|
|
18
|
+
* scope.exit();
|
|
19
|
+
* // Baggage is restored after exiting the context
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class BaggageBuilder {
|
|
23
|
+
private pairs;
|
|
24
|
+
/**
|
|
25
|
+
* Set the operation source baggage value.
|
|
26
|
+
* @param value The operation source value
|
|
27
|
+
* @returns Self for method chaining
|
|
28
|
+
*/
|
|
29
|
+
operationSource(value: string | null | undefined): BaggageBuilder;
|
|
30
|
+
/**
|
|
31
|
+
* Set the tenant ID baggage value.
|
|
32
|
+
* @param value The tenant ID
|
|
33
|
+
* @returns Self for method chaining
|
|
34
|
+
*/
|
|
35
|
+
tenantId(value: string | null | undefined): BaggageBuilder;
|
|
36
|
+
/**
|
|
37
|
+
* Set the agent ID baggage value.
|
|
38
|
+
* @param value The agent ID
|
|
39
|
+
* @returns Self for method chaining
|
|
40
|
+
*/
|
|
41
|
+
agentId(value: string | null | undefined): BaggageBuilder;
|
|
42
|
+
/**
|
|
43
|
+
* Set the agent AUID baggage value.
|
|
44
|
+
* @param value The agent AUID
|
|
45
|
+
* @returns Self for method chaining
|
|
46
|
+
*/
|
|
47
|
+
agentAuid(value: string | null | undefined): BaggageBuilder;
|
|
48
|
+
/**
|
|
49
|
+
* Set the agent UPN baggage value.
|
|
50
|
+
* @param value The agent UPN
|
|
51
|
+
* @returns Self for method chaining
|
|
52
|
+
*/
|
|
53
|
+
agentUpn(value: string | null | undefined): BaggageBuilder;
|
|
54
|
+
/**
|
|
55
|
+
* Set the agent blueprint ID baggage value.
|
|
56
|
+
* @param value The agent blueprint ID
|
|
57
|
+
* @returns Self for method chaining
|
|
58
|
+
*/
|
|
59
|
+
agentBlueprintId(value: string | null | undefined): BaggageBuilder;
|
|
60
|
+
/**
|
|
61
|
+
* Set the correlation ID baggage value.
|
|
62
|
+
* @param value The correlation ID
|
|
63
|
+
* @returns Self for method chaining
|
|
64
|
+
*/
|
|
65
|
+
correlationId(value: string | null | undefined): BaggageBuilder;
|
|
66
|
+
/**
|
|
67
|
+
* Set the caller ID baggage value.
|
|
68
|
+
* @param value The caller ID
|
|
69
|
+
* @returns Self for method chaining
|
|
70
|
+
*/
|
|
71
|
+
callerId(value: string | null | undefined): BaggageBuilder;
|
|
72
|
+
/**
|
|
73
|
+
* Set the hiring manager ID baggage value.
|
|
74
|
+
* @param value The hiring manager ID
|
|
75
|
+
* @returns Self for method chaining
|
|
76
|
+
*/
|
|
77
|
+
hiringManagerId(value: string | null | undefined): BaggageBuilder;
|
|
78
|
+
/**
|
|
79
|
+
* Set the agent name baggage value.
|
|
80
|
+
* @param value The agent name
|
|
81
|
+
* @returns Self for method chaining
|
|
82
|
+
*/
|
|
83
|
+
agentName(value: string | null | undefined): BaggageBuilder;
|
|
84
|
+
/**
|
|
85
|
+
* Set the agent description baggage value.
|
|
86
|
+
* @param value The agent description
|
|
87
|
+
* @returns Self for method chaining
|
|
88
|
+
*/
|
|
89
|
+
agentDescription(value: string | null | undefined): BaggageBuilder;
|
|
90
|
+
/**
|
|
91
|
+
* Set the caller name baggage value.
|
|
92
|
+
* @param value The caller name
|
|
93
|
+
* @returns Self for method chaining
|
|
94
|
+
*/
|
|
95
|
+
callerName(value: string | null | undefined): BaggageBuilder;
|
|
96
|
+
/**
|
|
97
|
+
* Set the caller UPN baggage value.
|
|
98
|
+
* @param value The caller UPN
|
|
99
|
+
* @returns Self for method chaining
|
|
100
|
+
*/
|
|
101
|
+
callerUpn(value: string | null | undefined): BaggageBuilder;
|
|
102
|
+
/**
|
|
103
|
+
* Set the conversation ID baggage value.
|
|
104
|
+
* @param value The conversation ID
|
|
105
|
+
* @returns Self for method chaining
|
|
106
|
+
*/
|
|
107
|
+
conversationId(value: string | null | undefined): BaggageBuilder;
|
|
108
|
+
/**
|
|
109
|
+
* Set the conversation item link baggage value.
|
|
110
|
+
* @param value The conversation item link
|
|
111
|
+
* @returns Self for method chaining
|
|
112
|
+
*/
|
|
113
|
+
conversationItemLink(value: string | null | undefined): BaggageBuilder;
|
|
114
|
+
/**
|
|
115
|
+
* Set the execution source metadata ID (e.g., channel ID).
|
|
116
|
+
* @param value The source metadata ID
|
|
117
|
+
* @returns Self for method chaining
|
|
118
|
+
*/
|
|
119
|
+
sourceMetadataId(value: string | null | undefined): BaggageBuilder;
|
|
120
|
+
/**
|
|
121
|
+
* Set the execution source metadata name (e.g., channel name).
|
|
122
|
+
* @param value The source metadata name
|
|
123
|
+
* @returns Self for method chaining
|
|
124
|
+
*/
|
|
125
|
+
sourceMetadataName(value: string | null | undefined): BaggageBuilder;
|
|
126
|
+
/**
|
|
127
|
+
* Set the execution source metadata description (e.g., channel description).
|
|
128
|
+
* @param value The source metadata description
|
|
129
|
+
* @returns Self for method chaining
|
|
130
|
+
*/
|
|
131
|
+
sourceMetadataDescription(value: string | null | undefined): BaggageBuilder;
|
|
132
|
+
/**
|
|
133
|
+
* Set multiple baggage pairs from a dictionary or iterable.
|
|
134
|
+
* @param pairs Dictionary or iterable of key-value pairs
|
|
135
|
+
* @returns Self for method chaining
|
|
136
|
+
*/
|
|
137
|
+
setPairs(pairs: Record<string, any> | Iterable<[string, any]> | null | undefined): BaggageBuilder;
|
|
138
|
+
/**
|
|
139
|
+
* Apply the collected baggage to the current context.
|
|
140
|
+
* @returns A context manager that restores the previous baggage on exit
|
|
141
|
+
*/
|
|
142
|
+
build(): BaggageScope;
|
|
143
|
+
/**
|
|
144
|
+
* Add a baggage key/value if the value is not null or whitespace.
|
|
145
|
+
* @param key The baggage key
|
|
146
|
+
* @param value The baggage value
|
|
147
|
+
*/
|
|
148
|
+
private set;
|
|
149
|
+
/**
|
|
150
|
+
* Convenience method to begin a request baggage scope with common fields.
|
|
151
|
+
* @param tenantId The tenant ID
|
|
152
|
+
* @param agentId The agent ID
|
|
153
|
+
* @param correlationId The correlation ID
|
|
154
|
+
* @returns A context manager that restores the previous baggage on exit
|
|
155
|
+
*/
|
|
156
|
+
static setRequestContext(tenantId?: string | null, agentId?: string | null, correlationId?: string | null): BaggageScope;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Context manager for baggage scope.
|
|
160
|
+
*
|
|
161
|
+
* This class manages the lifecycle of baggage values, setting them on enter
|
|
162
|
+
* and restoring the previous context on exit.
|
|
163
|
+
*/
|
|
164
|
+
export declare class BaggageScope implements Disposable {
|
|
165
|
+
private readonly contextWithBaggage;
|
|
166
|
+
constructor(pairs: Map<string, string>);
|
|
167
|
+
/**
|
|
168
|
+
* Execute a synchronous function under this baggage scope.
|
|
169
|
+
* Automatically restores previous context afterward.
|
|
170
|
+
*/
|
|
171
|
+
run<T>(fn: () => T): T;
|
|
172
|
+
/**
|
|
173
|
+
* Dispose is a no-op because OpenTelemetry JS automatically restores
|
|
174
|
+
* the previous context after `context.with()` completes.
|
|
175
|
+
*/
|
|
176
|
+
[Symbol.dispose](): void;
|
|
177
|
+
/**
|
|
178
|
+
* Manual cleanup alternative if caller isn't using `using`.
|
|
179
|
+
*/
|
|
180
|
+
dispose(): void;
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=BaggageBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaggageBuilder.d.ts","sourceRoot":"","sources":["../../../../src/tracing/middleware/BaggageBuilder.ts"],"names":[],"mappings":"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"}
|