@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,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
+ }