@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,79 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
// ------------------------------------------------------------------------------
|
|
4
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
5
|
+
import { OpenTelemetryScope } from './OpenTelemetryScope';
|
|
6
|
+
import { OpenTelemetryConstants } from '../constants';
|
|
7
|
+
/**
|
|
8
|
+
* Provides OpenTelemetry tracing scope for generative AI inference operations.
|
|
9
|
+
*/
|
|
10
|
+
export class InferenceScope extends OpenTelemetryScope {
|
|
11
|
+
/**
|
|
12
|
+
* Creates and starts a new scope for inference tracing.
|
|
13
|
+
* @param details The inference call details
|
|
14
|
+
* @param agentDetails The agent details
|
|
15
|
+
* @param tenantDetails The tenant details
|
|
16
|
+
* @returns A new InferenceScope instance
|
|
17
|
+
*/
|
|
18
|
+
static start(details, agentDetails, tenantDetails) {
|
|
19
|
+
return new InferenceScope(details, agentDetails, tenantDetails);
|
|
20
|
+
}
|
|
21
|
+
constructor(details, agentDetails, tenantDetails) {
|
|
22
|
+
super(SpanKind.CLIENT, details.operationName.toString(), `${details.operationName} ${details.model}`, agentDetails, tenantDetails);
|
|
23
|
+
// Set core inference information matching C# implementation
|
|
24
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY, details.operationName.toString());
|
|
25
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_REQUEST_MODEL_KEY, details.model);
|
|
26
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_PROVIDER_NAME_KEY, details.providerName);
|
|
27
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, details.inputTokens?.toString());
|
|
28
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, details.outputTokens?.toString());
|
|
29
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, details.finishReasons?.join(','));
|
|
30
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY, details.responseId);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Records the input messages for telemetry tracking.
|
|
34
|
+
* @param messages Array of input messages
|
|
35
|
+
*/
|
|
36
|
+
recordInputMessages(messages) {
|
|
37
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, messages.join(','));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Records the output messages for telemetry tracking.
|
|
41
|
+
* @param messages Array of output messages
|
|
42
|
+
*/
|
|
43
|
+
recordOutputMessages(messages) {
|
|
44
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, messages.join(','));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Records the number of input tokens for telemetry tracking.
|
|
48
|
+
* @param inputTokens Number of input tokens
|
|
49
|
+
*/
|
|
50
|
+
recordInputTokens(inputTokens) {
|
|
51
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_INPUT_TOKENS_KEY, inputTokens.toString());
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Records the number of output tokens for telemetry tracking.
|
|
55
|
+
* @param outputTokens Number of output tokens
|
|
56
|
+
*/
|
|
57
|
+
recordOutputTokens(outputTokens) {
|
|
58
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_USAGE_OUTPUT_TOKENS_KEY, outputTokens.toString());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Records the response id for telemetry tracking.
|
|
62
|
+
* @param responseId The response ID
|
|
63
|
+
*/
|
|
64
|
+
recordResponseId(responseId) {
|
|
65
|
+
if (responseId && responseId.trim()) {
|
|
66
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_ID_KEY, responseId);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Records the finish reasons for telemetry tracking.
|
|
71
|
+
* @param finishReasons Array of finish reasons
|
|
72
|
+
*/
|
|
73
|
+
recordFinishReasons(finishReasons) {
|
|
74
|
+
if (finishReasons && finishReasons.length > 0) {
|
|
75
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_RESPONSE_FINISH_REASONS_KEY, finishReasons.join(','));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=InferenceScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InferenceScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InferenceScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { OpenTelemetryScope } from './OpenTelemetryScope';
|
|
2
|
+
import { InvokeAgentDetails, TenantDetails, CallerDetails, EnhancedAgentDetails } from '../contracts';
|
|
3
|
+
/**
|
|
4
|
+
* Provides OpenTelemetry tracing scope for AI agent invocation operations.
|
|
5
|
+
*/
|
|
6
|
+
export declare class InvokeAgentScope extends OpenTelemetryScope {
|
|
7
|
+
/**
|
|
8
|
+
* Creates and starts a new scope for agent invocation tracing.
|
|
9
|
+
* @param invokeAgentDetails The details of the agent invocation including endpoint, agent information, and conversation context.
|
|
10
|
+
* @param tenantDetails The tenant details.
|
|
11
|
+
* @param callerAgentDetails The details of the caller agent.
|
|
12
|
+
* @param callerDetails The details of the non-agentic caller.
|
|
13
|
+
* @returns A new InvokeAgentScope instance.
|
|
14
|
+
*/
|
|
15
|
+
static start(invokeAgentDetails: InvokeAgentDetails, tenantDetails: TenantDetails, callerAgentDetails?: EnhancedAgentDetails, callerDetails?: CallerDetails): InvokeAgentScope;
|
|
16
|
+
private constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Records response information for telemetry tracking.
|
|
19
|
+
* @param response The invocation response
|
|
20
|
+
*/
|
|
21
|
+
recordResponse(response: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Records the input messages for telemetry tracking.
|
|
24
|
+
* @param messages Array of input messages
|
|
25
|
+
*/
|
|
26
|
+
recordInputMessages(messages: string[]): void;
|
|
27
|
+
/**
|
|
28
|
+
* Records the output messages for telemetry tracking.
|
|
29
|
+
* @param messages Array of output messages
|
|
30
|
+
*/
|
|
31
|
+
recordOutputMessages(messages: string[]): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=InvokeAgentScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvokeAgentScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAGtB;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB;IAEtD;;;;;;;OAOG;WACW,KAAK,CACjB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,kBAAkB,CAAC,EAAE,oBAAoB,EACzC,aAAa,CAAC,EAAE,aAAa,GAC5B,gBAAgB;IAInB,OAAO;IA8DP;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C;;;OAGG;IACI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAMpD;;;OAGG;IACI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAKtD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
// ------------------------------------------------------------------------------
|
|
4
|
+
import { SpanKind } from '@opentelemetry/api';
|
|
5
|
+
import { OpenTelemetryScope } from './OpenTelemetryScope';
|
|
6
|
+
import { OpenTelemetryConstants } from '../constants';
|
|
7
|
+
/**
|
|
8
|
+
* Provides OpenTelemetry tracing scope for AI agent invocation operations.
|
|
9
|
+
*/
|
|
10
|
+
export class InvokeAgentScope extends OpenTelemetryScope {
|
|
11
|
+
/**
|
|
12
|
+
* Creates and starts a new scope for agent invocation tracing.
|
|
13
|
+
* @param invokeAgentDetails The details of the agent invocation including endpoint, agent information, and conversation context.
|
|
14
|
+
* @param tenantDetails The tenant details.
|
|
15
|
+
* @param callerAgentDetails The details of the caller agent.
|
|
16
|
+
* @param callerDetails The details of the non-agentic caller.
|
|
17
|
+
* @returns A new InvokeAgentScope instance.
|
|
18
|
+
*/
|
|
19
|
+
static start(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails) {
|
|
20
|
+
return new InvokeAgentScope(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails);
|
|
21
|
+
}
|
|
22
|
+
constructor(invokeAgentDetails, tenantDetails, callerAgentDetails, callerDetails) {
|
|
23
|
+
super(SpanKind.CLIENT, OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, invokeAgentDetails.agentName
|
|
24
|
+
? `${OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME} ${invokeAgentDetails.agentName}`
|
|
25
|
+
: OpenTelemetryConstants.INVOKE_AGENT_OPERATION_NAME, invokeAgentDetails, tenantDetails);
|
|
26
|
+
// Set session ID and endpoint information
|
|
27
|
+
this.setTagMaybe(OpenTelemetryConstants.SESSION_ID_KEY, invokeAgentDetails.sessionId);
|
|
28
|
+
if (invokeAgentDetails.endpoint) {
|
|
29
|
+
this.setTagMaybe(OpenTelemetryConstants.SERVER_ADDRESS_KEY, invokeAgentDetails.endpoint.host);
|
|
30
|
+
// Only record port if it is different from 443 (default HTTPS port)
|
|
31
|
+
if (invokeAgentDetails.endpoint.port && invokeAgentDetails.endpoint.port !== 443) {
|
|
32
|
+
this.setTagMaybe(OpenTelemetryConstants.SERVER_PORT_KEY, invokeAgentDetails.endpoint.port);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Set request-related tags
|
|
36
|
+
const requestToUse = invokeAgentDetails.request;
|
|
37
|
+
if (requestToUse) {
|
|
38
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_TYPE_KEY, requestToUse.executionType?.toString());
|
|
39
|
+
if (requestToUse.sourceMetadata) {
|
|
40
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_ID_KEY, requestToUse.sourceMetadata.id);
|
|
41
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_NAME_KEY, requestToUse.sourceMetadata.name);
|
|
42
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY, requestToUse.sourceMetadata.description);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, invokeAgentDetails.conversationId);
|
|
46
|
+
// Set caller details tags
|
|
47
|
+
if (callerDetails) {
|
|
48
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_ID_KEY, callerDetails.callerId);
|
|
49
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_UPN_KEY, callerDetails.callerUpn);
|
|
50
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_NAME_KEY, callerDetails.callerName);
|
|
51
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_USER_ID_KEY, callerDetails.callerUserId);
|
|
52
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_TENANT_ID_KEY, callerDetails.tenantId);
|
|
53
|
+
}
|
|
54
|
+
// Set caller agent details tags
|
|
55
|
+
if (callerAgentDetails) {
|
|
56
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_NAME_KEY, callerAgentDetails.agentName);
|
|
57
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_ID_KEY, callerAgentDetails.agentId);
|
|
58
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY, callerAgentDetails.agentBlueprintId);
|
|
59
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_USER_ID_KEY, callerAgentDetails.agentAUID);
|
|
60
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_UPN_KEY, callerAgentDetails.agentUPN);
|
|
61
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CALLER_AGENT_TENANT_ID_KEY, callerAgentDetails.tenantId);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Records response information for telemetry tracking.
|
|
66
|
+
* @param response The invocation response
|
|
67
|
+
*/
|
|
68
|
+
recordResponse(response) {
|
|
69
|
+
this.recordOutputMessages([response]);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Records the input messages for telemetry tracking.
|
|
73
|
+
* @param messages Array of input messages
|
|
74
|
+
*/
|
|
75
|
+
recordInputMessages(messages) {
|
|
76
|
+
if (InvokeAgentScope.enableTelemetry) {
|
|
77
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_INPUT_MESSAGES_KEY, messages.join(','));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Records the output messages for telemetry tracking.
|
|
82
|
+
* @param messages Array of output messages
|
|
83
|
+
*/
|
|
84
|
+
recordOutputMessages(messages) {
|
|
85
|
+
if (InvokeAgentScope.enableTelemetry) {
|
|
86
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_OUTPUT_MESSAGES_KEY, messages.join(','));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=InvokeAgentScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvokeAgentScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/InvokeAgentScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { SpanKind, Span } from '@opentelemetry/api';
|
|
2
|
+
import { EnhancedAgentDetails, TenantDetails } from '../contracts';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for OpenTelemetry tracing scopes
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class OpenTelemetryScope implements Disposable {
|
|
7
|
+
private static readonly tracer;
|
|
8
|
+
protected readonly span: Span;
|
|
9
|
+
private readonly startTime;
|
|
10
|
+
protected static enableTelemetry: boolean;
|
|
11
|
+
private errorType?;
|
|
12
|
+
private exception?;
|
|
13
|
+
private hasEnded;
|
|
14
|
+
/**
|
|
15
|
+
* Initializes a new instance of the OpenTelemetryScope class
|
|
16
|
+
* @param kind The kind of span (CLIENT, SERVER, INTERNAL, etc.)
|
|
17
|
+
* @param operationName The name of the operation being traced
|
|
18
|
+
* @param spanName The name of the span for display purposes
|
|
19
|
+
* @param agentDetails Optional agent details
|
|
20
|
+
* @param tenantDetails Optional tenant details
|
|
21
|
+
*/
|
|
22
|
+
protected constructor(kind: SpanKind, operationName: string, spanName: string, agentDetails?: EnhancedAgentDetails, tenantDetails?: TenantDetails);
|
|
23
|
+
/**
|
|
24
|
+
* Makes this span active for the duration of the async callback execution
|
|
25
|
+
*/
|
|
26
|
+
withActiveSpanAsync<T>(callback: () => Promise<T>): Promise<T>;
|
|
27
|
+
/**
|
|
28
|
+
* Records an error that occurred during the operation
|
|
29
|
+
* @param error The error that occurred
|
|
30
|
+
*/
|
|
31
|
+
recordError(error: Error): void;
|
|
32
|
+
/**
|
|
33
|
+
* Sets a tag on the span if telemetry is enabled
|
|
34
|
+
* @param name The tag name
|
|
35
|
+
* @param value The tag value
|
|
36
|
+
*/
|
|
37
|
+
protected setTagMaybe<T extends string | number | boolean>(name: string, value: T | null | undefined): void;
|
|
38
|
+
/**
|
|
39
|
+
* Add baggage to the current context
|
|
40
|
+
* @param key The baggage key
|
|
41
|
+
* @param value The baggage value
|
|
42
|
+
*/
|
|
43
|
+
protected addBaggage(key: string, value: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Finalizes the scope and records metrics
|
|
46
|
+
*/
|
|
47
|
+
private end;
|
|
48
|
+
/**
|
|
49
|
+
* Disposes the scope and finalizes telemetry data collection
|
|
50
|
+
*/
|
|
51
|
+
[Symbol.dispose](): void;
|
|
52
|
+
/**
|
|
53
|
+
* Legacy dispose method for compatibility
|
|
54
|
+
*/
|
|
55
|
+
dispose(): void;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=OpenTelemetryScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenTelemetryScope.d.ts","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,QAAQ,EAAE,IAAI,EAAuC,MAAM,oBAAoB,CAAC;AAGhG,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnE;;GAEG;AACH,8BAAsB,kBAAmB,YAAW,UAAU;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAuD;IAErF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,SAAS,CAAC,MAAM,CAAC,eAAe,UAAgC;IAEhE,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;OAOG;IACH,SAAS,aACP,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,oBAAoB,EACnC,aAAa,CAAC,EAAE,aAAa;IAoC/B;;OAEG;IACI,mBAAmB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKrE;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAoBtC;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAM3G;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,OAAO,CAAC,GAAG;IAsBX;;OAEG;IACI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAO/B;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
// ------------------------------------------------------------------------------
|
|
4
|
+
import { trace, SpanStatusCode, context } from '@opentelemetry/api';
|
|
5
|
+
import { OpenTelemetryConstants } from '../constants';
|
|
6
|
+
import { isAgent365TelemetryEnabled } from '../util';
|
|
7
|
+
import logger from '../../utils/logging';
|
|
8
|
+
/**
|
|
9
|
+
* Base class for OpenTelemetry tracing scopes
|
|
10
|
+
*/
|
|
11
|
+
export class OpenTelemetryScope {
|
|
12
|
+
/**
|
|
13
|
+
* Initializes a new instance of the OpenTelemetryScope class
|
|
14
|
+
* @param kind The kind of span (CLIENT, SERVER, INTERNAL, etc.)
|
|
15
|
+
* @param operationName The name of the operation being traced
|
|
16
|
+
* @param spanName The name of the span for display purposes
|
|
17
|
+
* @param agentDetails Optional agent details
|
|
18
|
+
* @param tenantDetails Optional tenant details
|
|
19
|
+
*/
|
|
20
|
+
constructor(kind, operationName, spanName, agentDetails, tenantDetails) {
|
|
21
|
+
this.hasEnded = false;
|
|
22
|
+
const currentContext = context.active();
|
|
23
|
+
logger.info(`[A365Observability] Starting span: ${spanName}, operation: ${operationName} for tenantId: ${tenantDetails?.tenantId || 'unknown'}, agentId: ${agentDetails?.agentId || 'unknown'}`);
|
|
24
|
+
// Start span with current context to establish parent-child relationship
|
|
25
|
+
this.span = OpenTelemetryScope.tracer.startSpan(spanName, {
|
|
26
|
+
kind,
|
|
27
|
+
attributes: {
|
|
28
|
+
[OpenTelemetryConstants.GEN_AI_SYSTEM_KEY]: OpenTelemetryConstants.GEN_AI_SYSTEM_VALUE,
|
|
29
|
+
[OpenTelemetryConstants.GEN_AI_OPERATION_NAME_KEY]: operationName,
|
|
30
|
+
},
|
|
31
|
+
}, currentContext);
|
|
32
|
+
logger.info(`[A365Observability] Span[${this.span.spanContext().spanId}] ${spanName}, operation: ${operationName} started successfully`);
|
|
33
|
+
this.startTime = Date.now();
|
|
34
|
+
// Set agent details if provided
|
|
35
|
+
if (agentDetails) {
|
|
36
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_ID_KEY, agentDetails.agentId);
|
|
37
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_NAME_KEY, agentDetails.agentName);
|
|
38
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_DESCRIPTION_KEY, agentDetails.agentDescription);
|
|
39
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_CONVERSATION_ID_KEY, agentDetails.conversationId);
|
|
40
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_ICON_URI_KEY, agentDetails.iconUri);
|
|
41
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_AUID_KEY, agentDetails.agentAUID);
|
|
42
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_UPN_KEY, agentDetails.agentUPN);
|
|
43
|
+
this.setTagMaybe(OpenTelemetryConstants.GEN_AI_AGENT_BLUEPRINT_ID_KEY, agentDetails.agentBlueprintId);
|
|
44
|
+
}
|
|
45
|
+
// Set tenant details if provided
|
|
46
|
+
if (tenantDetails) {
|
|
47
|
+
this.setTagMaybe(OpenTelemetryConstants.TENANT_ID_KEY, tenantDetails.tenantId);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Makes this span active for the duration of the async callback execution
|
|
52
|
+
*/
|
|
53
|
+
withActiveSpanAsync(callback) {
|
|
54
|
+
const newContext = trace.setSpan(context.active(), this.span);
|
|
55
|
+
return context.with(newContext, callback);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Records an error that occurred during the operation
|
|
59
|
+
* @param error The error that occurred
|
|
60
|
+
*/
|
|
61
|
+
recordError(error) {
|
|
62
|
+
if (OpenTelemetryScope.enableTelemetry) {
|
|
63
|
+
logger.error(`[A365Observability] Records an error that occurred during the operation span[${this.span.spanContext().spanId}]: ${error.message}`);
|
|
64
|
+
// Check if it's an HTTP error with status code
|
|
65
|
+
if ('status' in error && typeof error.status === 'number') {
|
|
66
|
+
this.errorType = error.status.toString();
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.errorType = error.constructor.name;
|
|
70
|
+
}
|
|
71
|
+
this.exception = error;
|
|
72
|
+
this.span.setStatus({
|
|
73
|
+
code: SpanStatusCode.ERROR,
|
|
74
|
+
message: error.message
|
|
75
|
+
});
|
|
76
|
+
this.span.recordException(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sets a tag on the span if telemetry is enabled
|
|
81
|
+
* @param name The tag name
|
|
82
|
+
* @param value The tag value
|
|
83
|
+
*/
|
|
84
|
+
setTagMaybe(name, value) {
|
|
85
|
+
if (OpenTelemetryScope.enableTelemetry && value != null) {
|
|
86
|
+
this.span.setAttributes({ [name]: value });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Add baggage to the current context
|
|
91
|
+
* @param key The baggage key
|
|
92
|
+
* @param value The baggage value
|
|
93
|
+
*/
|
|
94
|
+
addBaggage(key, value) {
|
|
95
|
+
if (OpenTelemetryScope.enableTelemetry) {
|
|
96
|
+
// Note: OpenTelemetry JS doesn't have direct baggage API in span
|
|
97
|
+
// This would typically be handled through the baggage API
|
|
98
|
+
this.span.setAttributes({ [`baggage.${key}`]: value });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Finalizes the scope and records metrics
|
|
103
|
+
*/
|
|
104
|
+
end() {
|
|
105
|
+
if (this.hasEnded) {
|
|
106
|
+
logger.info(`[A365Observability] Span already ended for span[${this.span.spanContext().spanId}]`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const duration = (Date.now() - this.startTime) / 1000; // Convert to seconds
|
|
110
|
+
const finalTags = {};
|
|
111
|
+
if (this.errorType) {
|
|
112
|
+
finalTags[OpenTelemetryConstants.ERROR_TYPE_KEY] = this.errorType;
|
|
113
|
+
this.span.setAttributes({ [OpenTelemetryConstants.ERROR_TYPE_KEY]: this.errorType });
|
|
114
|
+
}
|
|
115
|
+
// Record duration metric (would typically use a meter here)
|
|
116
|
+
// For now, we'll add it as a span attribute
|
|
117
|
+
this.span.setAttributes({ 'operation.duration': duration });
|
|
118
|
+
this.hasEnded = true;
|
|
119
|
+
logger.info(`[A365Observability] Ending span[${this.span.spanContext().spanId}], duration: ${duration}s`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Disposes the scope and finalizes telemetry data collection
|
|
123
|
+
*/
|
|
124
|
+
[Symbol.dispose]() {
|
|
125
|
+
if (!this.hasEnded) {
|
|
126
|
+
this.end();
|
|
127
|
+
this.span.end();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Legacy dispose method for compatibility
|
|
132
|
+
*/
|
|
133
|
+
dispose() {
|
|
134
|
+
this[Symbol.dispose]();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
OpenTelemetryScope.tracer = trace.getTracer(OpenTelemetryConstants.SOURCE_NAME);
|
|
138
|
+
OpenTelemetryScope.enableTelemetry = isAgent365TelemetryEnabled();
|
|
139
|
+
//# sourceMappingURL=OpenTelemetryScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenTelemetryScope.js","sourceRoot":"","sources":["../../../../src/tracing/scopes/OpenTelemetryScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if exporter is enabled via environment variables
|
|
3
|
+
*/
|
|
4
|
+
export declare const isAgent365ExporterEnabled: () => boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Gets the enable telemetry configuration value
|
|
7
|
+
*/
|
|
8
|
+
export declare const isAgent365TelemetryEnabled: () => boolean;
|
|
9
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,OAS7C,CAAC;AAEF;;KAEK;AACL,eAAO,MAAM,0BAA0B,EAAE,MAAM,OAU9C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OpenTelemetryConstants } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* Check if exporter is enabled via environment variables
|
|
4
|
+
*/
|
|
5
|
+
export const isAgent365ExporterEnabled = () => {
|
|
6
|
+
const enableA365Exporter = process.env[OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY_EXPORTER]?.toLowerCase();
|
|
7
|
+
return (enableA365Exporter === 'true' ||
|
|
8
|
+
enableA365Exporter === '1' ||
|
|
9
|
+
enableA365Exporter === 'yes' ||
|
|
10
|
+
enableA365Exporter === 'on');
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Gets the enable telemetry configuration value
|
|
14
|
+
*/
|
|
15
|
+
export const isAgent365TelemetryEnabled = () => {
|
|
16
|
+
const enableObservability = process.env[OpenTelemetryConstants.ENABLE_OBSERVABILITY]?.toLowerCase();
|
|
17
|
+
const enableA365 = process.env[OpenTelemetryConstants.ENABLE_A365_OBSERVABILITY]?.toLowerCase();
|
|
18
|
+
return (enableObservability === 'true' ||
|
|
19
|
+
enableObservability === '1' ||
|
|
20
|
+
enableA365 === 'true' ||
|
|
21
|
+
enableA365 === '1');
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tracing/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAkB,GAAY,EAAE;IACpE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,kCAAkC,CAAC,EAAE,WAAW,EAAE,CAAC;IAEjH,OAAO,CACL,kBAAkB,KAAK,MAAM;QAC7B,kBAAkB,KAAK,GAAG;QAC1B,kBAAkB,KAAK,KAAK;QAC5B,kBAAkB,KAAK,IAAI,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;KAEK;AACL,MAAM,CAAC,MAAM,0BAA0B,GAAkB,GAAY,EAAE;IACrE,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACpG,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,EAAE,WAAW,EAAE,CAAC;IAEhG,OAAO,CACL,mBAAmB,KAAK,MAAM;QAC9B,mBAAmB,KAAK,GAAG;QAC3B,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,GAAG,CACnB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format error object for logging with message and stack trace
|
|
3
|
+
*/
|
|
4
|
+
export declare function formatError(error: unknown): string;
|
|
5
|
+
declare const logger: {
|
|
6
|
+
info: (message: string, ...args: unknown[]) => void;
|
|
7
|
+
warn: (message: string, ...args: unknown[]) => void;
|
|
8
|
+
error: (message: string, ...args: unknown[]) => void;
|
|
9
|
+
};
|
|
10
|
+
export default logger;
|
|
11
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlD;AA2DD,QAAA,MAAM,MAAM;oBACM,MAAM,WAAW,OAAO,EAAE;oBAO1B,MAAM,WAAW,OAAO,EAAE;qBAOzB,MAAM,WAAW,OAAO,EAAE;CAM5C,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// ------------------------------------------------------------------------------
|
|
2
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
// ------------------------------------------------------------------------------
|
|
4
|
+
/**
|
|
5
|
+
* Format error object for logging with message and stack trace
|
|
6
|
+
*/
|
|
7
|
+
export function formatError(error) {
|
|
8
|
+
if (error instanceof Error) {
|
|
9
|
+
return `${error.message}\nStack: ${error.stack || 'No stack trace'}`;
|
|
10
|
+
}
|
|
11
|
+
return String(error);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Simple logger for Agent 365 observability
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* import logger from './logging';
|
|
18
|
+
* logger.info('Info message'); // Shows when A365ObservabilityLogLevel includes 'info'
|
|
19
|
+
* logger.warn('Warning'); // Shows when A365ObservabilityLogLevel includes 'warn'
|
|
20
|
+
* logger.error('Error'); // Shows when A365ObservabilityLogLevel includes 'error'
|
|
21
|
+
*
|
|
22
|
+
* Environment Variable:
|
|
23
|
+
* A365ObservabilityLogLevel=none|info|warn|error|info|warn|info|error (default: none)
|
|
24
|
+
*
|
|
25
|
+
* Single values:
|
|
26
|
+
* none = no logging (default)
|
|
27
|
+
* info = info messages only
|
|
28
|
+
* warn = warn messages only
|
|
29
|
+
* error = error messages only
|
|
30
|
+
*
|
|
31
|
+
* Multiple values (pipe-separated):
|
|
32
|
+
* info|warn = info and warn messages
|
|
33
|
+
* warn|error = warn and error messages
|
|
34
|
+
* info|warn|error = all message types
|
|
35
|
+
*/
|
|
36
|
+
const LOG_LEVELS = {
|
|
37
|
+
none: 0,
|
|
38
|
+
info: 1,
|
|
39
|
+
warn: 2,
|
|
40
|
+
error: 3
|
|
41
|
+
};
|
|
42
|
+
function parseLogLevel(level) {
|
|
43
|
+
const levels = new Set();
|
|
44
|
+
// Split by | to support multiple levels like "info|warn|error"
|
|
45
|
+
const levelStrings = level.toLowerCase().trim().split('|');
|
|
46
|
+
for (const levelString of levelStrings) {
|
|
47
|
+
const normalizedLevel = levelString.trim();
|
|
48
|
+
const levelValue = LOG_LEVELS[normalizedLevel];
|
|
49
|
+
if (levelValue !== undefined) {
|
|
50
|
+
levels.add(levelValue);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// If no valid levels found, default to none
|
|
54
|
+
if (levels.size === 0) {
|
|
55
|
+
levels.add(LOG_LEVELS.none);
|
|
56
|
+
}
|
|
57
|
+
return levels;
|
|
58
|
+
}
|
|
59
|
+
const enabledLogLevels = parseLogLevel(process.env.A365_OBSERVABILITY_LOG_LEVEL || 'none');
|
|
60
|
+
const logger = {
|
|
61
|
+
info: (message, ...args) => {
|
|
62
|
+
if (enabledLogLevels.has(LOG_LEVELS.info)) {
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
64
|
+
console.log('[INFO]', message, ...args);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
warn: (message, ...args) => {
|
|
68
|
+
if (enabledLogLevels.has(LOG_LEVELS.warn)) {
|
|
69
|
+
// eslint-disable-next-line no-console
|
|
70
|
+
console.warn('[WARN]', message, ...args);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
error: (message, ...args) => {
|
|
74
|
+
if (enabledLogLevels.has(LOG_LEVELS.error)) {
|
|
75
|
+
// eslint-disable-next-line no-console
|
|
76
|
+
console.error('[ERROR]', message, ...args);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
export default logger;
|
|
81
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AAEjF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,GAAG,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,KAAK,IAAI,gBAAgB,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACA,CAAC;AAIX,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,+DAA+D;IAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,EAAc,CAAC;QACvD,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,MAAM,CAAC,CAAC;AAE3F,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@microsoft/agents-a365-observability",
|
|
3
|
+
"version": "0.1.0-preview.30",
|
|
4
|
+
"description": "OpenTelemetry tracing and monitoring SDK for AI agents built with TypeScript/Node.js",
|
|
5
|
+
"main": "dist/cjs/index.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/esm/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build:cjs": "npx tsc --project tsconfig.cjs.json",
|
|
10
|
+
"build:esm": "npx tsc --project tsconfig.esm.json",
|
|
11
|
+
"build": "npm run build:cjs && npm run build:esm",
|
|
12
|
+
"build:watch": "npx tsc --watch",
|
|
13
|
+
"clean": "npx rimraf dist",
|
|
14
|
+
"test": "jest --passWithNoTests",
|
|
15
|
+
"test:watch": "jest --watch",
|
|
16
|
+
"lint": "eslint src/**/*.ts",
|
|
17
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
18
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
19
|
+
"ci": "npm ci",
|
|
20
|
+
"pack": "npm pack --pack-destination=../"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"Agent365",
|
|
24
|
+
"opentelemetry",
|
|
25
|
+
"tracing",
|
|
26
|
+
"monitoring",
|
|
27
|
+
"ai",
|
|
28
|
+
"agents",
|
|
29
|
+
"azure",
|
|
30
|
+
"typescript"
|
|
31
|
+
],
|
|
32
|
+
"author": "Microsoft Corporation",
|
|
33
|
+
"license": "See license file",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/microsoft/Agent365-nodejs.git",
|
|
37
|
+
"directory": "packages/agents-a365-observability"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@azure/monitor-opentelemetry-exporter": "*",
|
|
41
|
+
"@microsoft/agents-a365-runtime": "0.1.0-preview.30",
|
|
42
|
+
"@opentelemetry/api": "*",
|
|
43
|
+
"@opentelemetry/exporter-trace-otlp-http": "*",
|
|
44
|
+
"@opentelemetry/instrumentation": "*",
|
|
45
|
+
"@opentelemetry/resources": "*",
|
|
46
|
+
"@opentelemetry/sdk-node": "*",
|
|
47
|
+
"@opentelemetry/sdk-trace-base": "*",
|
|
48
|
+
"@opentelemetry/semantic-conventions": "*"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/jest": "^29.5.14",
|
|
52
|
+
"@types/node": "^20.0.0",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
54
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
55
|
+
"eslint": "^8.0.0",
|
|
56
|
+
"jest": "^29.0.0",
|
|
57
|
+
"rimraf": "^5.0.0",
|
|
58
|
+
"ts-jest": "^29.0.0",
|
|
59
|
+
"typescript": "^5.0.0"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": ">=18.0.0"
|
|
63
|
+
},
|
|
64
|
+
"files": [
|
|
65
|
+
"dist/**/*",
|
|
66
|
+
"README.md",
|
|
67
|
+
"CHANGELOG.md"
|
|
68
|
+
]
|
|
69
|
+
}
|