@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,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents different types of agent invocations
|
|
3
|
+
*/
|
|
4
|
+
export declare enum ExecutionType {
|
|
5
|
+
/** Direct human-to-agent invocation (e.g., through UI, API call) */
|
|
6
|
+
HumanToAgent = "HumanToAgent",
|
|
7
|
+
/** Agent-to-agent invocation (e.g., one agent calling another) */
|
|
8
|
+
Agent2Agent = "Agent2Agent",
|
|
9
|
+
/** Event-driven agent invocation (e.g., scheduled, webhook, message queue) */
|
|
10
|
+
EventToAgent = "EventToAgent",
|
|
11
|
+
/** Unknown or unspecified invocation type */
|
|
12
|
+
Unknown = "Unknown"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Represents different roles that can invoke an agent
|
|
16
|
+
*/
|
|
17
|
+
export declare enum InvocationRole {
|
|
18
|
+
/** Human user invoking the agent */
|
|
19
|
+
Human = "Human",
|
|
20
|
+
/** Another agent invoking this agent */
|
|
21
|
+
Agent = "Agent",
|
|
22
|
+
/** Event-driven invocation (e.g., scheduled, webhook, message queue) */
|
|
23
|
+
Event = "Event",
|
|
24
|
+
/** Unknown or unspecified role */
|
|
25
|
+
Unknown = "Unknown"
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Represents different operation for types for model inference
|
|
29
|
+
*/
|
|
30
|
+
export declare enum InferenceOperationType {
|
|
31
|
+
CHAT = "Chat",
|
|
32
|
+
TEXT_COMPLETION = "TextCompletion",
|
|
33
|
+
GENERATE_CONTENT = "GenerateContent"
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Represents metadata about the source of an invocation
|
|
37
|
+
*/
|
|
38
|
+
export interface SourceMetadata {
|
|
39
|
+
/** Unique identifier for the source (e.g., agent ID, user ID, system component ID) */
|
|
40
|
+
id?: string;
|
|
41
|
+
/** Human-readable name of the source */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** Optional icon identifier or URL for visual representation of the source */
|
|
44
|
+
iconUri?: string;
|
|
45
|
+
/** The role of the source invoking the agent */
|
|
46
|
+
role?: InvocationRole;
|
|
47
|
+
/** Optional description providing additional context about the source */
|
|
48
|
+
description?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Represents a request to an agent with telemetry context
|
|
52
|
+
*/
|
|
53
|
+
export interface AgentRequest {
|
|
54
|
+
/** The content of the request */
|
|
55
|
+
content: string;
|
|
56
|
+
/** The type of invocation (how the agent was called) */
|
|
57
|
+
executionType?: ExecutionType;
|
|
58
|
+
/** Optional session identifier for grouping related requests */
|
|
59
|
+
sessionId?: string;
|
|
60
|
+
/** Optional metadata about the source of the invocation */
|
|
61
|
+
sourceMetadata?: SourceMetadata;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Details about a tenant
|
|
65
|
+
*/
|
|
66
|
+
export interface TenantDetails {
|
|
67
|
+
/** The unique identifier for the tenant */
|
|
68
|
+
tenantId: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Details about an AI agent
|
|
72
|
+
*/
|
|
73
|
+
export interface AgentDetails {
|
|
74
|
+
/** The unique identifier for the AI agent */
|
|
75
|
+
agentId: string;
|
|
76
|
+
/** The identifier for the conversation or session */
|
|
77
|
+
conversationId?: string;
|
|
78
|
+
/** The human-readable name of the AI agent */
|
|
79
|
+
agentName?: string;
|
|
80
|
+
/** A description of the AI agent's purpose or capabilities */
|
|
81
|
+
agentDescription?: string;
|
|
82
|
+
/** Optional icon identifier or URL for visual representation of the agent */
|
|
83
|
+
iconUri?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Details of a tool call made by an agent
|
|
87
|
+
*/
|
|
88
|
+
export interface ToolCallDetails {
|
|
89
|
+
/** The name of the tool being executed */
|
|
90
|
+
toolName: string;
|
|
91
|
+
/** Tool arguments/parameters */
|
|
92
|
+
arguments?: string;
|
|
93
|
+
/** The unique identifier for the tool call */
|
|
94
|
+
toolCallId?: string;
|
|
95
|
+
/** Optional description of the tool or its purpose */
|
|
96
|
+
description?: string;
|
|
97
|
+
/** The type of the tool being executed */
|
|
98
|
+
toolType?: string;
|
|
99
|
+
/** The endpoint for the tool execution */
|
|
100
|
+
endpoint?: ServiceEndpoint;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Details about a caller
|
|
104
|
+
*/
|
|
105
|
+
export interface CallerDetails {
|
|
106
|
+
/** The unique identifier for the caller */
|
|
107
|
+
callerId?: string;
|
|
108
|
+
/** The user principal name (UPN) of the caller */
|
|
109
|
+
callerUpn?: string;
|
|
110
|
+
/** The display name of the caller */
|
|
111
|
+
callerName?: string;
|
|
112
|
+
/** The user ID of the caller */
|
|
113
|
+
callerUserId?: string;
|
|
114
|
+
/** The tenant ID of the caller */
|
|
115
|
+
tenantId?: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Enhanced agent details with additional properties
|
|
119
|
+
*/
|
|
120
|
+
export interface EnhancedAgentDetails extends AgentDetails {
|
|
121
|
+
/** The agent user ID (AUID) */
|
|
122
|
+
agentAUID?: string;
|
|
123
|
+
/** The agent user principal name (UPN) */
|
|
124
|
+
agentUPN?: string;
|
|
125
|
+
/** The agent blueprint/application ID */
|
|
126
|
+
agentBlueprintId?: string;
|
|
127
|
+
/** The tenant ID for the agent */
|
|
128
|
+
tenantId?: string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Represents an endpoint for agent invocation
|
|
132
|
+
*/
|
|
133
|
+
export interface ServiceEndpoint {
|
|
134
|
+
/** The host address */
|
|
135
|
+
host: string;
|
|
136
|
+
/** The port number */
|
|
137
|
+
port?: number;
|
|
138
|
+
/** The protocol (e.g., http, https) */
|
|
139
|
+
protocol?: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Details for invoking another agent
|
|
143
|
+
*/
|
|
144
|
+
export interface InvokeAgentDetails extends EnhancedAgentDetails {
|
|
145
|
+
/** The request payload for the agent invocation */
|
|
146
|
+
request?: AgentRequest;
|
|
147
|
+
/** The endpoint for the agent invocation */
|
|
148
|
+
endpoint?: ServiceEndpoint;
|
|
149
|
+
/** Session ID for the invocation */
|
|
150
|
+
sessionId?: string;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Details for an inference call matching C# implementation
|
|
154
|
+
*/
|
|
155
|
+
export interface InferenceDetails {
|
|
156
|
+
/** The operation name/type for the inference */
|
|
157
|
+
operationName: InferenceOperationType;
|
|
158
|
+
/** The model name/identifier */
|
|
159
|
+
model: string;
|
|
160
|
+
/** The provider name (e.g., openai, azure, anthropic) */
|
|
161
|
+
providerName?: string;
|
|
162
|
+
/** Number of input tokens used */
|
|
163
|
+
inputTokens?: number;
|
|
164
|
+
/** Number of output tokens generated */
|
|
165
|
+
outputTokens?: number;
|
|
166
|
+
/** Array of finish reasons */
|
|
167
|
+
finishReasons?: string[];
|
|
168
|
+
/** Response ID from the model provider */
|
|
169
|
+
responseId?: string;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Details for recording the response from an inference call
|
|
173
|
+
*/
|
|
174
|
+
export interface InferenceResponse {
|
|
175
|
+
/** The generated response content */
|
|
176
|
+
content: string;
|
|
177
|
+
/** Response ID from the model provider */
|
|
178
|
+
responseId?: string;
|
|
179
|
+
/** Finish reason (e.g., stop, length, content_filter) */
|
|
180
|
+
finishReason?: string;
|
|
181
|
+
/** Number of input tokens used */
|
|
182
|
+
inputTokens?: number;
|
|
183
|
+
/** Number of output tokens generated */
|
|
184
|
+
outputTokens?: number;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/tracing/contracts.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,oBAAY,aAAa;IACvB,oEAAoE;IACpE,YAAY,iBAAiB;IAE7B,kEAAkE;IAClE,WAAW,gBAAgB;IAE3B,8EAA8E;IAC9E,YAAY,iBAAiB;IAE7B,6CAA6C;IAC7C,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,oCAAoC;IACpC,KAAK,UAAU;IAEf,wCAAwC;IACxC,KAAK,UAAU;IAEf,wEAAwE;IACxE,KAAK,UAAU;IAEf,kCAAkC;IAClC,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAC9B,IAAI,SAAS;IACb,eAAe,mBAAoB;IACnC,gBAAgB,oBAAqB;CACxC;AAGD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sFAAsF;IACtF,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAEhB,wDAAwD;IACxD,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAEhB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IAEb,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAEnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D,mDAAmD;IACnD,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,aAAa,EAAE,sBAAsB,CAAC;IAEtC,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;CAEvB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ------------------------------------------------------------------------------
|
|
3
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
// ------------------------------------------------------------------------------
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.InferenceOperationType = exports.InvocationRole = exports.ExecutionType = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Represents different types of agent invocations
|
|
9
|
+
*/
|
|
10
|
+
var ExecutionType;
|
|
11
|
+
(function (ExecutionType) {
|
|
12
|
+
/** Direct human-to-agent invocation (e.g., through UI, API call) */
|
|
13
|
+
ExecutionType["HumanToAgent"] = "HumanToAgent";
|
|
14
|
+
/** Agent-to-agent invocation (e.g., one agent calling another) */
|
|
15
|
+
ExecutionType["Agent2Agent"] = "Agent2Agent";
|
|
16
|
+
/** Event-driven agent invocation (e.g., scheduled, webhook, message queue) */
|
|
17
|
+
ExecutionType["EventToAgent"] = "EventToAgent";
|
|
18
|
+
/** Unknown or unspecified invocation type */
|
|
19
|
+
ExecutionType["Unknown"] = "Unknown";
|
|
20
|
+
})(ExecutionType || (exports.ExecutionType = ExecutionType = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Represents different roles that can invoke an agent
|
|
23
|
+
*/
|
|
24
|
+
var InvocationRole;
|
|
25
|
+
(function (InvocationRole) {
|
|
26
|
+
/** Human user invoking the agent */
|
|
27
|
+
InvocationRole["Human"] = "Human";
|
|
28
|
+
/** Another agent invoking this agent */
|
|
29
|
+
InvocationRole["Agent"] = "Agent";
|
|
30
|
+
/** Event-driven invocation (e.g., scheduled, webhook, message queue) */
|
|
31
|
+
InvocationRole["Event"] = "Event";
|
|
32
|
+
/** Unknown or unspecified role */
|
|
33
|
+
InvocationRole["Unknown"] = "Unknown";
|
|
34
|
+
})(InvocationRole || (exports.InvocationRole = InvocationRole = {}));
|
|
35
|
+
/**
|
|
36
|
+
* Represents different operation for types for model inference
|
|
37
|
+
*/
|
|
38
|
+
var InferenceOperationType;
|
|
39
|
+
(function (InferenceOperationType) {
|
|
40
|
+
InferenceOperationType["CHAT"] = "Chat";
|
|
41
|
+
InferenceOperationType["TEXT_COMPLETION"] = "TextCompletion";
|
|
42
|
+
InferenceOperationType["GENERATE_CONTENT"] = "GenerateContent";
|
|
43
|
+
})(InferenceOperationType || (exports.InferenceOperationType = InferenceOperationType = {}));
|
|
44
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/tracing/contracts.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;;;AAEjF;;GAEG;AACH,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,oEAAoE;IACpE,8CAA6B,CAAA;IAE7B,kEAAkE;IAClE,4CAA2B,CAAA;IAE3B,8EAA8E;IAC9E,8CAA6B,CAAA;IAE7B,6CAA6C;IAC7C,oCAAmB,CAAA;AACrB,CAAC,EAZW,aAAa,6BAAb,aAAa,QAYxB;AAED;;GAEG;AACH,IAAY,cAYX;AAZD,WAAY,cAAc;IACxB,oCAAoC;IACpC,iCAAe,CAAA;IAEf,wCAAwC;IACxC,iCAAe,CAAA;IAEf,wEAAwE;IACxE,iCAAe,CAAA;IAEf,kCAAkC;IAClC,qCAAmB,CAAA;AACrB,CAAC,EAZW,cAAc,8BAAd,cAAc,QAYzB;AAED;;GAEG;AACH,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAC9B,uCAAa,CAAA;IACb,4DAAmC,CAAA;IACnC,8DAAqC,CAAA;AACzC,CAAC,EAJW,sBAAsB,sCAAtB,sBAAsB,QAIjC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
3
|
+
import { ClusterCategory } from '@microsoft/agents-a365-runtime';
|
|
4
|
+
/**
|
|
5
|
+
* Token resolver function type - supports both sync and async implementations
|
|
6
|
+
*/
|
|
7
|
+
export type TokenResolver = (agentId: string, tenantId: string) => string | null | Promise<string | null>;
|
|
8
|
+
/**
|
|
9
|
+
* Observability span exporter for Agent365:
|
|
10
|
+
* - Partitions spans by (tenantId, agentId)
|
|
11
|
+
* - Builds OTLP-like JSON: resourceSpans -> scopeSpans -> spans
|
|
12
|
+
* - POSTs per group to https://{endpoint}/maven/agent365/agents/{agentId}/traces?api-version=1
|
|
13
|
+
* - Adds Bearer token via token_resolver(agentId, tenantId)
|
|
14
|
+
*/
|
|
15
|
+
export declare class Agent365Exporter implements SpanExporter {
|
|
16
|
+
private readonly tokenResolver;
|
|
17
|
+
private readonly clusterCategory;
|
|
18
|
+
private closed;
|
|
19
|
+
constructor(tokenResolver: TokenResolver, clusterCategory?: ClusterCategory);
|
|
20
|
+
/**
|
|
21
|
+
* Export spans to Agent365 service
|
|
22
|
+
*/
|
|
23
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Export a group of spans for a specific identity
|
|
26
|
+
*/
|
|
27
|
+
private exportGroup;
|
|
28
|
+
/**
|
|
29
|
+
* HTTP POST with retry logic
|
|
30
|
+
*/
|
|
31
|
+
private postWithRetries;
|
|
32
|
+
/**
|
|
33
|
+
* Sleep for specified milliseconds
|
|
34
|
+
*/
|
|
35
|
+
private sleep;
|
|
36
|
+
/**
|
|
37
|
+
* Build OTLP export request payload
|
|
38
|
+
*/
|
|
39
|
+
private buildExportRequest;
|
|
40
|
+
/**
|
|
41
|
+
* Map a ReadableSpan to OTLP span format
|
|
42
|
+
*/
|
|
43
|
+
private mapSpan;
|
|
44
|
+
/**
|
|
45
|
+
* Shutdown the exporter
|
|
46
|
+
*/
|
|
47
|
+
shutdown(): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Force flush any pending spans
|
|
50
|
+
*/
|
|
51
|
+
forceFlush(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=Agent365Exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Agent365Exporter.d.ts","sourceRoot":"","sources":["../../../../src/tracing/exporter/Agent365Exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAA6B,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAyD5F;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE1G;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,MAAM,CAAS;gBAGrB,aAAa,EAAE,aAAa,EAC5B,eAAe,GAAE,eAAwB;IAU3C;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuClG;;OAEG;YACW,WAAW;IAoCzB;;OAEG;YACW,eAAe;IA4C7B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4C1B;;OAEG;IACH,OAAO,CAAC,OAAO;IAqFf;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIlC"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Agent365Exporter = void 0;
|
|
37
|
+
const core_1 = require("@opentelemetry/core");
|
|
38
|
+
const agents_a365_runtime_1 = require("@microsoft/agents-a365-runtime");
|
|
39
|
+
const utils_1 = require("./utils");
|
|
40
|
+
const logging_1 = __importStar(require("../../utils/logging"));
|
|
41
|
+
const DEFAULT_HTTP_TIMEOUT_SECONDS = 30000; // 30 seconds in ms
|
|
42
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
43
|
+
/**
|
|
44
|
+
* Observability span exporter for Agent365:
|
|
45
|
+
* - Partitions spans by (tenantId, agentId)
|
|
46
|
+
* - Builds OTLP-like JSON: resourceSpans -> scopeSpans -> spans
|
|
47
|
+
* - POSTs per group to https://{endpoint}/maven/agent365/agents/{agentId}/traces?api-version=1
|
|
48
|
+
* - Adds Bearer token via token_resolver(agentId, tenantId)
|
|
49
|
+
*/
|
|
50
|
+
class Agent365Exporter {
|
|
51
|
+
constructor(tokenResolver, clusterCategory = 'prod') {
|
|
52
|
+
this.closed = false;
|
|
53
|
+
if (!tokenResolver) {
|
|
54
|
+
logging_1.default.error('[Agent365Exporter] token_resolver is not provided');
|
|
55
|
+
throw new Error('token_resolver must be provided.');
|
|
56
|
+
}
|
|
57
|
+
this.tokenResolver = tokenResolver;
|
|
58
|
+
this.clusterCategory = clusterCategory;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Export spans to Agent365 service
|
|
62
|
+
*/
|
|
63
|
+
async export(spans, resultCallback) {
|
|
64
|
+
if (this.closed) {
|
|
65
|
+
resultCallback({ code: core_1.ExportResultCode.FAILED });
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
logging_1.default.info(`[Agent365Exporter] Exporting ${spans.length} spans`);
|
|
70
|
+
const groups = (0, utils_1.partitionByIdentity)(spans);
|
|
71
|
+
if (groups.size === 0) {
|
|
72
|
+
logging_1.default.info('[Agent365Exporter] No groups to export');
|
|
73
|
+
resultCallback({ code: core_1.ExportResultCode.SUCCESS });
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
logging_1.default.info(`[Agent365Exporter] Exporting ${groups.size} identity groups`);
|
|
77
|
+
let anyFailure = false;
|
|
78
|
+
const promises = [];
|
|
79
|
+
for (const [identityKey, activities] of groups) {
|
|
80
|
+
const promise = this.exportGroup(identityKey, activities).catch(() => {
|
|
81
|
+
anyFailure = true;
|
|
82
|
+
});
|
|
83
|
+
promises.push(promise);
|
|
84
|
+
}
|
|
85
|
+
await Promise.all(promises);
|
|
86
|
+
logging_1.default.info(`[Agent365Exporter] Export completed. Success: ${!anyFailure}`);
|
|
87
|
+
resultCallback({
|
|
88
|
+
code: anyFailure ? core_1.ExportResultCode.FAILED : core_1.ExportResultCode.SUCCESS
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// Exporters should not raise; signal failure
|
|
93
|
+
resultCallback({ code: core_1.ExportResultCode.FAILED });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Export a group of spans for a specific identity
|
|
98
|
+
*/
|
|
99
|
+
async exportGroup(identityKey, spans) {
|
|
100
|
+
const { tenantId, agentId } = (0, utils_1.parseIdentityKey)(identityKey);
|
|
101
|
+
logging_1.default.info(`[Agent365Exporter] Exporting ${spans.length} spans for tenantId: ${tenantId}, agentId: ${agentId}`);
|
|
102
|
+
const payload = this.buildExportRequest(spans);
|
|
103
|
+
const body = JSON.stringify(payload);
|
|
104
|
+
// Resolve endpoint + token based on cluster category (defaults to 'prod')
|
|
105
|
+
const discovery = new agents_a365_runtime_1.PowerPlatformApiDiscovery(this.clusterCategory);
|
|
106
|
+
const endpoint = discovery.getTenantIslandClusterEndpoint(tenantId);
|
|
107
|
+
const url = `https://${endpoint}/maven/agent365/agents/${agentId}/traces?api-version=1`;
|
|
108
|
+
logging_1.default.info(`[Agent365Exporter] Resolved endpoint: ${endpoint}`);
|
|
109
|
+
const headers = {
|
|
110
|
+
'content-type': 'application/json'
|
|
111
|
+
};
|
|
112
|
+
const tokenResult = this.tokenResolver(agentId, tenantId);
|
|
113
|
+
const token = tokenResult instanceof Promise ? await tokenResult : tokenResult;
|
|
114
|
+
if (token) {
|
|
115
|
+
headers['authorization'] = `Bearer ${token}`;
|
|
116
|
+
logging_1.default.info('[Agent365Exporter] Token resolved successfully');
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
logging_1.default.error('[Agent365Exporter] No token resolved');
|
|
120
|
+
}
|
|
121
|
+
// Basic retry loop
|
|
122
|
+
const ok = await this.postWithRetries(url, body, headers);
|
|
123
|
+
if (!ok) {
|
|
124
|
+
logging_1.default.error('[Agent365Exporter] Failed to export spans');
|
|
125
|
+
throw new Error('Failed to export spans');
|
|
126
|
+
}
|
|
127
|
+
logging_1.default.info('[Agent365Exporter] Successfully exported spans');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* HTTP POST with retry logic
|
|
131
|
+
*/
|
|
132
|
+
async postWithRetries(url, body, headers) {
|
|
133
|
+
for (let attempt = 0; attempt <= DEFAULT_MAX_RETRIES; attempt++) {
|
|
134
|
+
let correlationId;
|
|
135
|
+
try {
|
|
136
|
+
logging_1.default.info(`[Agent365Exporter] Posting OTLP export request - Attempt ${attempt + 1}`);
|
|
137
|
+
const response = await fetch(url, {
|
|
138
|
+
method: 'POST',
|
|
139
|
+
headers,
|
|
140
|
+
body,
|
|
141
|
+
signal: AbortSignal.timeout(DEFAULT_HTTP_TIMEOUT_SECONDS)
|
|
142
|
+
});
|
|
143
|
+
correlationId = response?.headers?.get('x-ms-correlation-id') || response?.headers?.get('x-correlation-id') || 'unknown';
|
|
144
|
+
// 2xx => success
|
|
145
|
+
if (response.status >= 200 && response.status < 300) {
|
|
146
|
+
logging_1.default.info(`[Agent365Exporter] Success with status ${response.status}, correlation ID: ${correlationId}`);
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
// Retry transient errors
|
|
150
|
+
if ([408, 429].includes(response.status) || (response.status >= 500 && response.status < 600)) {
|
|
151
|
+
if (attempt < DEFAULT_MAX_RETRIES) {
|
|
152
|
+
const sleepMs = 200 * (attempt + 1);
|
|
153
|
+
logging_1.default.warn(`[Agent365Exporter] Transient error ${response.status}, correlation ID: ${correlationId}, retrying after ${sleepMs}ms`);
|
|
154
|
+
await this.sleep(sleepMs);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
logging_1.default.error(`[Agent365Exporter] Failed with status ${response.status}, correlation ID: ${correlationId}`);
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
logging_1.default.error('[Agent365Exporter] Request error:', (0, logging_1.formatError)(error));
|
|
163
|
+
if (attempt < DEFAULT_MAX_RETRIES) {
|
|
164
|
+
const sleepMs = 200 * (attempt + 1);
|
|
165
|
+
logging_1.default.info(`[Agent365Exporter] Retrying after ${sleepMs}ms`);
|
|
166
|
+
await this.sleep(sleepMs);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Sleep for specified milliseconds
|
|
176
|
+
*/
|
|
177
|
+
sleep(ms) {
|
|
178
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Build OTLP export request payload
|
|
182
|
+
*/
|
|
183
|
+
buildExportRequest(spans) {
|
|
184
|
+
// Group by instrumentation scope (name, version)
|
|
185
|
+
const scopeMap = new Map();
|
|
186
|
+
logging_1.default.info('[Agent365Exporter] Building OTLP export request payload');
|
|
187
|
+
for (const sp of spans) {
|
|
188
|
+
const scope = sp.instrumentationScope || sp.instrumentationLibrary;
|
|
189
|
+
const scopeKey = `${scope?.name || 'unknown'}:${scope?.version || ''}`;
|
|
190
|
+
const existing = scopeMap.get(scopeKey) || [];
|
|
191
|
+
existing.push(this.mapSpan(sp));
|
|
192
|
+
scopeMap.set(scopeKey, existing);
|
|
193
|
+
}
|
|
194
|
+
const scopeSpans = [];
|
|
195
|
+
for (const [scopeKey, mappedSpans] of scopeMap) {
|
|
196
|
+
const [name, version] = scopeKey.split(':');
|
|
197
|
+
scopeSpans.push({
|
|
198
|
+
scope: {
|
|
199
|
+
name,
|
|
200
|
+
version: version || undefined,
|
|
201
|
+
},
|
|
202
|
+
spans: mappedSpans,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
// Resource attributes (from the first span - all spans in a batch usually share resource)
|
|
206
|
+
let resourceAttrs = {};
|
|
207
|
+
if (spans.length > 0) {
|
|
208
|
+
const firstSpanResource = spans[0].resource?.attributes;
|
|
209
|
+
if (firstSpanResource) {
|
|
210
|
+
resourceAttrs = { ...firstSpanResource };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
resourceSpans: [
|
|
215
|
+
{
|
|
216
|
+
resource: { attributes: Object.keys(resourceAttrs).length > 0 ? resourceAttrs : null },
|
|
217
|
+
scopeSpans,
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Map a ReadableSpan to OTLP span format
|
|
224
|
+
*/
|
|
225
|
+
mapSpan(sp) {
|
|
226
|
+
const spanContext = sp.spanContext();
|
|
227
|
+
// Extract parent span ID - check multiple possible sources
|
|
228
|
+
let parentSpanIdHex = undefined;
|
|
229
|
+
const parentContext = sp.parentSpanContext;
|
|
230
|
+
if (parentContext?.spanId && parentContext.spanId !== '0000000000000000') {
|
|
231
|
+
parentSpanIdHex = (0, utils_1.hexSpanId)(parentContext.spanId);
|
|
232
|
+
}
|
|
233
|
+
// attributes
|
|
234
|
+
const attrs = sp.attributes ? { ...sp.attributes } : {};
|
|
235
|
+
// events
|
|
236
|
+
const events = [];
|
|
237
|
+
for (const ev of sp.events || []) {
|
|
238
|
+
// Handle both hrtime arrays and direct nanosecond timestamps
|
|
239
|
+
let timeNs;
|
|
240
|
+
if (Array.isArray(ev.time)) {
|
|
241
|
+
timeNs = ev.time[0] * 1000000000 + ev.time[1];
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
timeNs = ev.time;
|
|
245
|
+
}
|
|
246
|
+
const evAttrs = ev.attributes && Object.keys(ev.attributes).length > 0 ? { ...ev.attributes } : null;
|
|
247
|
+
events.push({
|
|
248
|
+
timeUnixNano: timeNs,
|
|
249
|
+
name: ev.name,
|
|
250
|
+
attributes: evAttrs,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
// links
|
|
254
|
+
const links = [];
|
|
255
|
+
for (const ln of sp.links || []) {
|
|
256
|
+
const lnAttrs = ln.attributes && Object.keys(ln.attributes).length > 0 ? { ...ln.attributes } : null;
|
|
257
|
+
links.push({
|
|
258
|
+
traceId: (0, utils_1.hexTraceId)(ln.context.traceId),
|
|
259
|
+
spanId: (0, utils_1.hexSpanId)(ln.context.spanId),
|
|
260
|
+
attributes: lnAttrs,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
// status
|
|
264
|
+
const statusCode = sp.status?.code ?? 0; // Default to UNSET (0) if no status
|
|
265
|
+
const status = {
|
|
266
|
+
code: (0, utils_1.statusName)(statusCode),
|
|
267
|
+
message: sp.status?.message || '',
|
|
268
|
+
};
|
|
269
|
+
// Convert hrtime to nanoseconds - handle both hrtime arrays and direct nanosecond values
|
|
270
|
+
let startTimeNs;
|
|
271
|
+
let endTimeNs;
|
|
272
|
+
if (Array.isArray(sp.startTime)) {
|
|
273
|
+
// hrtime format [seconds, nanoseconds]
|
|
274
|
+
startTimeNs = sp.startTime[0] * 1000000000 + sp.startTime[1];
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Direct nanosecond value
|
|
278
|
+
startTimeNs = sp.startTime;
|
|
279
|
+
}
|
|
280
|
+
if (Array.isArray(sp.endTime)) {
|
|
281
|
+
// hrtime format [seconds, nanoseconds]
|
|
282
|
+
endTimeNs = sp.endTime[0] * 1000000000 + sp.endTime[1];
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Direct nanosecond value
|
|
286
|
+
endTimeNs = sp.endTime;
|
|
287
|
+
}
|
|
288
|
+
return {
|
|
289
|
+
traceId: (0, utils_1.hexTraceId)(spanContext.traceId),
|
|
290
|
+
spanId: (0, utils_1.hexSpanId)(spanContext.spanId),
|
|
291
|
+
parentSpanId: parentSpanIdHex,
|
|
292
|
+
name: sp.name,
|
|
293
|
+
kind: (0, utils_1.kindName)(sp.kind),
|
|
294
|
+
startTimeUnixNano: startTimeNs,
|
|
295
|
+
endTimeUnixNano: endTimeNs,
|
|
296
|
+
attributes: Object.keys(attrs).length > 0 ? attrs : null,
|
|
297
|
+
events: events.length > 0 ? events : null,
|
|
298
|
+
links: links.length > 0 ? links : null,
|
|
299
|
+
status,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Shutdown the exporter
|
|
304
|
+
*/
|
|
305
|
+
async shutdown() {
|
|
306
|
+
logging_1.default.info('[Agent365Exporter] Shutting down exporter');
|
|
307
|
+
this.closed = true;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Force flush any pending spans
|
|
311
|
+
*/
|
|
312
|
+
async forceFlush() {
|
|
313
|
+
// No-op for this implementation
|
|
314
|
+
return Promise.resolve();
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
exports.Agent365Exporter = Agent365Exporter;
|
|
318
|
+
//# sourceMappingURL=Agent365Exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Agent365Exporter.js","sourceRoot":"","sources":["../../../../src/tracing/exporter/Agent365Exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAoE;AAGpE,wEAA4F;AAC5F,mCAA6G;AAC7G,+DAAwD;AAExD,MAAM,4BAA4B,GAAG,KAAK,CAAC,CAAC,mBAAmB;AAC/D,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAyD9B;;;;;;GAMG;AACH,MAAa,gBAAgB;IAK3B,YACE,aAA4B,EAC5B,kBAAmC,MAAM;QAJnC,WAAM,GAAG,KAAK,CAAC;QAMrB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,iBAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAqB,EAAE,cAA8C;QAChF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,iBAAM,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;YAE1C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,iBAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACtD,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,iBAAM,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,IAAI,kBAAkB,CAAC,CAAC;YAC3E,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,QAAQ,GAAoB,EAAE,CAAC;YAErC,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBACnE,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5B,iBAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5E,cAAc,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,uBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAgB,CAAC,OAAO;aACtE,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;YAC7C,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,WAAmB,EAAE,KAAqB;QAClE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;QAC5D,iBAAM,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAC,MAAM,wBAAwB,QAAQ,cAAc,OAAO,EAAE,CAAC,CAAC;QAEjH,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAErC,0EAA0E;QAC1E,MAAM,SAAS,GAAG,IAAI,+CAAyB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,WAAW,QAAQ,0BAA0B,OAAO,uBAAuB,CAAC;QACxF,iBAAM,CAAC,IAAI,CAAC,yCAAyC,QAAQ,EAAE,CAAC,CAAC;QAEjE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,WAAW,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/E,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;YAC7C,iBAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,iBAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACvD,CAAC;QAGD,mBAAmB;QACnB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,iBAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,iBAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,IAAY,EAAE,OAA+B;QACtF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,aAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,iBAAM,CAAC,IAAI,CAAC,4DAA4D,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,MAAM,EAAE,MAAM;oBACd,OAAO;oBACP,IAAI;oBACJ,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,4BAA4B,CAAC;iBAC1D,CAAC,CAAC;gBAEH,aAAa,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC,IAAI,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;gBACzH,iBAAiB;gBACjB,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACpD,iBAAM,CAAC,IAAI,CAAC,0CAA0C,QAAQ,CAAC,MAAM,qBAAqB,aAAa,EAAE,CAAC,CAAC;oBAC3G,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,yBAAyB;gBACzB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;oBAC9F,IAAI,OAAO,GAAG,mBAAmB,EAAE,CAAC;wBAClC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;wBACpC,iBAAM,CAAC,IAAI,CAAC,sCAAsC,QAAQ,CAAC,MAAM,qBAAqB,aAAa,oBAAoB,OAAO,IAAI,CAAC,CAAC;wBACpI,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC1B,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,iBAAM,CAAC,KAAK,CAAC,yCAAyC,QAAQ,CAAC,MAAM,qBAAqB,aAAa,EAAE,CAAC,CAAC;gBAC3G,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iBAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,IAAA,qBAAW,EAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,OAAO,GAAG,mBAAmB,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;oBACpC,iBAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,IAAI,CAAC,CAAC;oBAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,KAAqB;QAC9C,iDAAiD;QACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC/C,iBAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACvE,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,EAAE,CAAC,oBAAoB,IAAK,EAAsF,CAAC,sBAAsB,CAAC;YACxJ,MAAM,QAAQ,GAAG,GAAG,KAAK,EAAE,IAAI,IAAI,SAAS,IAAI,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;YAEvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,UAAU,GAAgB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE;oBACL,IAAI;oBACJ,OAAO,EAAE,OAAO,IAAI,SAAS;iBAC9B;gBACD,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC;QAED,0FAA0F;QAC1F,IAAI,aAAa,GAA4B,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC;YACxD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,aAAa,GAAG,EAAE,GAAG,iBAAiB,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE;gBACb;oBACE,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;oBACtF,UAAU;iBACX;aACF;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,EAAgB;QAC9B,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,2DAA2D;QAC3D,IAAI,eAAe,GAAuB,SAAS,CAAC;QACpD,MAAM,aAAa,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAC3C,IAAI,aAAa,EAAE,MAAM,IAAI,aAAa,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACzE,eAAe,GAAG,IAAA,iBAAS,EAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,aAAa;QACb,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAExD,SAAS;QACT,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACjC,6DAA6D;YAC7D,IAAI,MAAc,CAAC;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,EAAE,CAAC,IAAc,CAAC;YAC7B,CAAC;YAED,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrG,MAAM,CAAC,IAAI,CAAC;gBACV,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,UAAU,EAAE,OAAO;aACpB,CAAC,CAAC;QACL,CAAC;QAED,QAAQ;QACR,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrG,KAAK,CAAC,IAAI,CAAC;gBACT,OAAO,EAAE,IAAA,kBAAU,EAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,IAAA,iBAAS,EAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpC,UAAU,EAAE,OAAO;aACpB,CAAC,CAAC;QACL,CAAC;QAED,SAAS;QACT,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,oCAAoC;QAC7E,MAAM,MAAM,GAAe;YACzB,IAAI,EAAE,IAAA,kBAAU,EAAC,UAAU,CAAC;YAC5B,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;SAClC,CAAC;QAEF,yFAAyF;QACzF,IAAI,WAAmB,CAAC;QACxB,IAAI,SAAiB,CAAC;QAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,uCAAuC;YACvC,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,WAAW,GAAG,EAAE,CAAC,SAAmB,CAAC;QACvC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,uCAAuC;YACvC,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,SAAS,GAAG,EAAE,CAAC,OAAiB,CAAC;QACnC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAA,kBAAU,EAAC,WAAW,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,IAAA,iBAAS,EAAC,WAAW,CAAC,MAAM,CAAC;YACrC,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI,EAAE,IAAA,gBAAQ,EAAC,EAAE,CAAC,IAAI,CAAC;YACvB,iBAAiB,EAAE,WAAW;YAC9B,eAAe,EAAE,SAAS;YAC1B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACxD,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YACzC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACtC,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,iBAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,gCAAgC;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AA9SD,4CA8SC"}
|
|
@@ -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
|