@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,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":"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"}
@@ -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":"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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