@microsoft/agents-a365-observability 0.1.0-preview.103

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 (211) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +33 -0
  3. package/dist/cjs/ObservabilityBuilder.d.ts +101 -0
  4. package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -0
  5. package/dist/cjs/ObservabilityBuilder.js +246 -0
  6. package/dist/cjs/ObservabilityBuilder.js.map +1 -0
  7. package/dist/cjs/ObservabilityManager.d.ts +29 -0
  8. package/dist/cjs/ObservabilityManager.d.ts.map +1 -0
  9. package/dist/cjs/ObservabilityManager.js +61 -0
  10. package/dist/cjs/ObservabilityManager.js.map +1 -0
  11. package/dist/cjs/configuration/ObservabilityConfiguration.d.ts +20 -0
  12. package/dist/cjs/configuration/ObservabilityConfiguration.d.ts.map +1 -0
  13. package/dist/cjs/configuration/ObservabilityConfiguration.js +66 -0
  14. package/dist/cjs/configuration/ObservabilityConfiguration.js.map +1 -0
  15. package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts +68 -0
  16. package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
  17. package/dist/cjs/configuration/ObservabilityConfigurationOptions.js +5 -0
  18. package/dist/cjs/configuration/ObservabilityConfigurationOptions.js.map +1 -0
  19. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts +19 -0
  20. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
  21. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js +53 -0
  22. package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
  23. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +55 -0
  24. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
  25. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js +5 -0
  26. package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
  27. package/dist/cjs/configuration/index.d.ts +16 -0
  28. package/dist/cjs/configuration/index.d.ts.map +1 -0
  29. package/dist/cjs/configuration/index.js +35 -0
  30. package/dist/cjs/configuration/index.js.map +1 -0
  31. package/dist/cjs/index.d.ts +17 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +67 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts +41 -0
  36. package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
  37. package/dist/cjs/tracing/PerRequestSpanProcessor.js +252 -0
  38. package/dist/cjs/tracing/PerRequestSpanProcessor.js.map +1 -0
  39. package/dist/cjs/tracing/constants.d.ts +108 -0
  40. package/dist/cjs/tracing/constants.d.ts.map +1 -0
  41. package/dist/cjs/tracing/constants.js +127 -0
  42. package/dist/cjs/tracing/constants.js.map +1 -0
  43. package/dist/cjs/tracing/context/parent-span-context.d.ts +37 -0
  44. package/dist/cjs/tracing/context/parent-span-context.d.ts.map +1 -0
  45. package/dist/cjs/tracing/context/parent-span-context.js +63 -0
  46. package/dist/cjs/tracing/context/parent-span-context.js.map +1 -0
  47. package/dist/cjs/tracing/context/token-context.d.ts +11 -0
  48. package/dist/cjs/tracing/context/token-context.d.ts.map +1 -0
  49. package/dist/cjs/tracing/context/token-context.js +29 -0
  50. package/dist/cjs/tracing/context/token-context.js.map +1 -0
  51. package/dist/cjs/tracing/contracts.d.ts +190 -0
  52. package/dist/cjs/tracing/contracts.d.ts.map +1 -0
  53. package/dist/cjs/tracing/contracts.js +44 -0
  54. package/dist/cjs/tracing/contracts.js.map +1 -0
  55. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +53 -0
  56. package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  57. package/dist/cjs/tracing/exporter/Agent365Exporter.js +385 -0
  58. package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -0
  59. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts +39 -0
  60. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -0
  61. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js +41 -0
  62. package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js.map +1 -0
  63. package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts +19 -0
  64. package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
  65. package/dist/cjs/tracing/exporter/ExporterEventNames.js +24 -0
  66. package/dist/cjs/tracing/exporter/ExporterEventNames.js.map +1 -0
  67. package/dist/cjs/tracing/exporter/utils.d.ts +68 -0
  68. package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -0
  69. package/dist/cjs/tracing/exporter/utils.js +180 -0
  70. package/dist/cjs/tracing/exporter/utils.js.map +1 -0
  71. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +220 -0
  72. package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  73. package/dist/cjs/tracing/middleware/BaggageBuilder.js +356 -0
  74. package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -0
  75. package/dist/cjs/tracing/processors/SpanProcessor.d.ts +30 -0
  76. package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -0
  77. package/dist/cjs/tracing/processors/SpanProcessor.js +107 -0
  78. package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -0
  79. package/dist/cjs/tracing/processors/util.d.ts +9 -0
  80. package/dist/cjs/tracing/processors/util.d.ts.map +1 -0
  81. package/dist/cjs/tracing/processors/util.js +57 -0
  82. package/dist/cjs/tracing/processors/util.js.map +1 -0
  83. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +26 -0
  84. package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  85. package/dist/cjs/tracing/scopes/ExecuteToolScope.js +57 -0
  86. package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -0
  87. package/dist/cjs/tracing/scopes/InferenceScope.d.ts +51 -0
  88. package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -0
  89. package/dist/cjs/tracing/scopes/InferenceScope.js +89 -0
  90. package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -0
  91. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +35 -0
  92. package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  93. package/dist/cjs/tracing/scopes/InvokeAgentScope.js +96 -0
  94. package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -0
  95. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +69 -0
  96. package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  97. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +190 -0
  98. package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  99. package/dist/cjs/tracing/util.d.ts +13 -0
  100. package/dist/cjs/tracing/util.d.ts.map +1 -0
  101. package/dist/cjs/tracing/util.js +23 -0
  102. package/dist/cjs/tracing/util.js.map +1 -0
  103. package/dist/cjs/utils/logging.d.ts +111 -0
  104. package/dist/cjs/utils/logging.d.ts.map +1 -0
  105. package/dist/cjs/utils/logging.js +163 -0
  106. package/dist/cjs/utils/logging.js.map +1 -0
  107. package/dist/esm/ObservabilityBuilder.d.ts +101 -0
  108. package/dist/esm/ObservabilityBuilder.d.ts.map +1 -0
  109. package/dist/esm/ObservabilityBuilder.js +209 -0
  110. package/dist/esm/ObservabilityBuilder.js.map +1 -0
  111. package/dist/esm/ObservabilityManager.d.ts +29 -0
  112. package/dist/esm/ObservabilityManager.d.ts.map +1 -0
  113. package/dist/esm/ObservabilityManager.js +57 -0
  114. package/dist/esm/ObservabilityManager.js.map +1 -0
  115. package/dist/esm/configuration/ObservabilityConfiguration.d.ts +20 -0
  116. package/dist/esm/configuration/ObservabilityConfiguration.d.ts.map +1 -0
  117. package/dist/esm/configuration/ObservabilityConfiguration.js +62 -0
  118. package/dist/esm/configuration/ObservabilityConfiguration.js.map +1 -0
  119. package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts +68 -0
  120. package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
  121. package/dist/esm/configuration/ObservabilityConfigurationOptions.js +4 -0
  122. package/dist/esm/configuration/ObservabilityConfigurationOptions.js.map +1 -0
  123. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts +19 -0
  124. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
  125. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js +49 -0
  126. package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
  127. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +55 -0
  128. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
  129. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js +4 -0
  130. package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
  131. package/dist/esm/configuration/index.d.ts +16 -0
  132. package/dist/esm/configuration/index.d.ts.map +1 -0
  133. package/dist/esm/configuration/index.js +18 -0
  134. package/dist/esm/configuration/index.js.map +1 -0
  135. package/dist/esm/index.d.ts +17 -0
  136. package/dist/esm/index.d.ts.map +1 -0
  137. package/dist/esm/index.js +27 -0
  138. package/dist/esm/index.js.map +1 -0
  139. package/dist/esm/tracing/PerRequestSpanProcessor.d.ts +41 -0
  140. package/dist/esm/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
  141. package/dist/esm/tracing/PerRequestSpanProcessor.js +245 -0
  142. package/dist/esm/tracing/PerRequestSpanProcessor.js.map +1 -0
  143. package/dist/esm/tracing/constants.d.ts +108 -0
  144. package/dist/esm/tracing/constants.d.ts.map +1 -0
  145. package/dist/esm/tracing/constants.js +123 -0
  146. package/dist/esm/tracing/constants.js.map +1 -0
  147. package/dist/esm/tracing/context/parent-span-context.d.ts +37 -0
  148. package/dist/esm/tracing/context/parent-span-context.d.ts.map +1 -0
  149. package/dist/esm/tracing/context/parent-span-context.js +56 -0
  150. package/dist/esm/tracing/context/parent-span-context.js.map +1 -0
  151. package/dist/esm/tracing/context/token-context.d.ts +11 -0
  152. package/dist/esm/tracing/context/token-context.d.ts.map +1 -0
  153. package/dist/esm/tracing/context/token-context.js +22 -0
  154. package/dist/esm/tracing/context/token-context.js.map +1 -0
  155. package/dist/esm/tracing/contracts.d.ts +190 -0
  156. package/dist/esm/tracing/contracts.d.ts.map +1 -0
  157. package/dist/esm/tracing/contracts.js +41 -0
  158. package/dist/esm/tracing/contracts.js.map +1 -0
  159. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +53 -0
  160. package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
  161. package/dist/esm/tracing/exporter/Agent365Exporter.js +348 -0
  162. package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -0
  163. package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts +39 -0
  164. package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -0
  165. package/dist/esm/tracing/exporter/Agent365ExporterOptions.js +37 -0
  166. package/dist/esm/tracing/exporter/Agent365ExporterOptions.js.map +1 -0
  167. package/dist/esm/tracing/exporter/ExporterEventNames.d.ts +19 -0
  168. package/dist/esm/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
  169. package/dist/esm/tracing/exporter/ExporterEventNames.js +21 -0
  170. package/dist/esm/tracing/exporter/ExporterEventNames.js.map +1 -0
  171. package/dist/esm/tracing/exporter/utils.d.ts +68 -0
  172. package/dist/esm/tracing/exporter/utils.d.ts.map +1 -0
  173. package/dist/esm/tracing/exporter/utils.js +163 -0
  174. package/dist/esm/tracing/exporter/utils.js.map +1 -0
  175. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +220 -0
  176. package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
  177. package/dist/esm/tracing/middleware/BaggageBuilder.js +351 -0
  178. package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -0
  179. package/dist/esm/tracing/processors/SpanProcessor.d.ts +30 -0
  180. package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -0
  181. package/dist/esm/tracing/processors/SpanProcessor.js +103 -0
  182. package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -0
  183. package/dist/esm/tracing/processors/util.d.ts +9 -0
  184. package/dist/esm/tracing/processors/util.d.ts.map +1 -0
  185. package/dist/esm/tracing/processors/util.js +54 -0
  186. package/dist/esm/tracing/processors/util.js.map +1 -0
  187. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +26 -0
  188. package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
  189. package/dist/esm/tracing/scopes/ExecuteToolScope.js +53 -0
  190. package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -0
  191. package/dist/esm/tracing/scopes/InferenceScope.d.ts +51 -0
  192. package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -0
  193. package/dist/esm/tracing/scopes/InferenceScope.js +85 -0
  194. package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -0
  195. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +35 -0
  196. package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
  197. package/dist/esm/tracing/scopes/InvokeAgentScope.js +92 -0
  198. package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -0
  199. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +69 -0
  200. package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
  201. package/dist/esm/tracing/scopes/OpenTelemetryScope.js +183 -0
  202. package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -0
  203. package/dist/esm/tracing/util.d.ts +13 -0
  204. package/dist/esm/tracing/util.d.ts.map +1 -0
  205. package/dist/esm/tracing/util.js +19 -0
  206. package/dist/esm/tracing/util.js.map +1 -0
  207. package/dist/esm/utils/logging.d.ts +111 -0
  208. package/dist/esm/utils/logging.d.ts.map +1 -0
  209. package/dist/esm/utils/logging.js +155 -0
  210. package/dist/esm/utils/logging.js.map +1 -0
  211. package/package.json +71 -0
@@ -0,0 +1,111 @@
1
+ import { IConfigurationProvider } from '@microsoft/agents-a365-runtime';
2
+ import { ObservabilityConfiguration } from '../configuration';
3
+ /**
4
+ * Custom logger interface for Agent 365 observability
5
+ * Implement this interface to support logging backends
6
+ */
7
+ export interface ILogger {
8
+ /**
9
+ * Log an informational message
10
+ * @param message The log message
11
+ * @param args Optional arguments to include in the log
12
+ */
13
+ info(message: string, ...args: unknown[]): void;
14
+ /**
15
+ * Log a warning message
16
+ * @param message The log message
17
+ * @param args Optional arguments to include in the log
18
+ */
19
+ warn(message: string, ...args: unknown[]): void;
20
+ /**
21
+ * Log an error message
22
+ * @param message The log message
23
+ * @param args Optional arguments to include in the log
24
+ */
25
+ error(message: string, ...args: unknown[]): void;
26
+ /**
27
+ * Log an event with standardized parameters
28
+ * @param eventType Standardized event name/category (e.g., ExporterEventNames.EXPORT)
29
+ * @param isSuccess Whether the operation/event succeeded
30
+ * @param durationMs Duration of the operation/event in milliseconds
31
+ * @param message Optional message or additional details about the event, especially useful for errors or failures
32
+ * @param correlationId Optional correlation identifier to connect events/logs across components
33
+
34
+ */
35
+ event(eventType: string, isSuccess: boolean, durationMs: number, message?: string, correlationId?: string): void;
36
+ }
37
+ /**
38
+ * Format error object for logging with message and stack trace
39
+ */
40
+ export declare function formatError(error: unknown): string;
41
+ /**
42
+ * Default console-based logger implementation with configuration provider support.
43
+ *
44
+ * Environment Variable:
45
+ * A365_OBSERVABILITY_LOG_LEVEL=none|info|warn|error (default: none)
46
+ *
47
+ * Single values:
48
+ * none = no logging (default)
49
+ * info = info messages only
50
+ * warn = warn messages only
51
+ * error = error messages only
52
+ *
53
+ * Multiple values (pipe-separated):
54
+ * info|warn = info and warn messages
55
+ * warn|error = warn and error messages
56
+ * info|warn|error = all message types
57
+ */
58
+ export declare class DefaultLogger implements ILogger {
59
+ private readonly configProvider;
60
+ constructor(configProvider?: IConfigurationProvider<ObservabilityConfiguration>);
61
+ private getEnabledLogLevels;
62
+ info(message: string, ...args: unknown[]): void;
63
+ warn(message: string, ...args: unknown[]): void;
64
+ error(message: string, ...args: unknown[]): void;
65
+ event(eventType: string, isSuccess: boolean, durationMs: number, message?: string, correlationId?: string): void;
66
+ }
67
+ /**
68
+ * Set a custom logger implementation for the observability SDK
69
+ *
70
+ * Example with Winston:
71
+ * ```typescript
72
+ * import * as winston from 'winston';
73
+ * import { setLogger } from '@microsoft/agents-a365-observability';
74
+ *
75
+ * const winstonLogger = winston.createLogger({
76
+ * level: 'info',
77
+ * format: winston.format.json(),
78
+ * transports: [
79
+ * new winston.transports.File({ filename: 'error.log', level: 'error' }),
80
+ * new winston.transports.File({ filename: 'combined.log' })
81
+ * ]
82
+ * });
83
+ *
84
+ * setLogger({
85
+ * info: (msg, ...args) => winstonLogger.info(msg, ...args),
86
+ * warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
87
+ * error: (msg, ...args) => winstonLogger.error(msg, ...args),
88
+ * event: (eventType, isSuccess, durationMs, message, correlationId) => {
89
+ * winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, correlationId });
90
+ * }
91
+ * });
92
+ * ```
93
+ *
94
+ * @param customLogger The custom logger implementation
95
+ */
96
+ export declare function setLogger(customLogger: ILogger): void;
97
+ /**
98
+ * Get the current logger instance
99
+ */
100
+ export declare function getLogger(): ILogger;
101
+ /**
102
+ * Reset to the default console logger (mainly for testing)
103
+ */
104
+ export declare function resetLogger(): void;
105
+ /**
106
+ * Default logger instance for backward compatibility.
107
+ * Delegates to the global logger which can be replaced via setLogger().
108
+ */
109
+ export declare const logger: ILogger;
110
+ export default logger;
111
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAEL,0BAA0B,EAC3B,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEjD;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClH;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlD;AAkCD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,YAAW,OAAO;IAEzC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,GAAE,sBAAsB,CAAC,0BAA0B,CAA6C;IAGjI,OAAO,CAAC,mBAAmB;IAI3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CAUjH;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAWrD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAMpB,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,155 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { defaultObservabilityConfigurationProvider } from '../configuration';
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
+ const LOG_LEVELS = {
14
+ none: 0,
15
+ info: 1,
16
+ warn: 2,
17
+ error: 3
18
+ };
19
+ /**
20
+ * Parse log level string into a set of enabled log levels.
21
+ * Supports pipe-separated values like "info|warn|error".
22
+ */
23
+ function parseLogLevel(level) {
24
+ const levels = new Set();
25
+ const levelStrings = level.toLowerCase().trim().split('|');
26
+ for (const levelString of levelStrings) {
27
+ const normalizedLevel = levelString.trim();
28
+ const levelValue = LOG_LEVELS[normalizedLevel];
29
+ if (levelValue !== undefined) {
30
+ levels.add(levelValue);
31
+ }
32
+ }
33
+ // If no valid levels found, default to none
34
+ if (levels.size === 0) {
35
+ levels.add(LOG_LEVELS.none);
36
+ }
37
+ return levels;
38
+ }
39
+ /**
40
+ * Default console-based logger implementation with configuration provider support.
41
+ *
42
+ * Environment Variable:
43
+ * A365_OBSERVABILITY_LOG_LEVEL=none|info|warn|error (default: none)
44
+ *
45
+ * Single values:
46
+ * none = no logging (default)
47
+ * info = info messages only
48
+ * warn = warn messages only
49
+ * error = error messages only
50
+ *
51
+ * Multiple values (pipe-separated):
52
+ * info|warn = info and warn messages
53
+ * warn|error = warn and error messages
54
+ * info|warn|error = all message types
55
+ */
56
+ export class DefaultLogger {
57
+ constructor(configProvider = defaultObservabilityConfigurationProvider) {
58
+ this.configProvider = configProvider;
59
+ }
60
+ getEnabledLogLevels() {
61
+ return parseLogLevel(this.configProvider.getConfiguration().observabilityLogLevel);
62
+ }
63
+ info(message, ...args) {
64
+ if (this.getEnabledLogLevels().has(LOG_LEVELS.info)) {
65
+ console.log('[INFO]', message, ...args);
66
+ }
67
+ }
68
+ warn(message, ...args) {
69
+ if (this.getEnabledLogLevels().has(LOG_LEVELS.warn)) {
70
+ console.warn('[WARN]', message, ...args);
71
+ }
72
+ }
73
+ error(message, ...args) {
74
+ if (this.getEnabledLogLevels().has(LOG_LEVELS.error)) {
75
+ console.error('[ERROR]', message, ...args);
76
+ }
77
+ }
78
+ event(eventType, isSuccess, durationMs, message, correlationId) {
79
+ const status = isSuccess ? 'succeeded' : 'failed';
80
+ const logLevelNeeded = isSuccess ? 1 : 3;
81
+ if (this.getEnabledLogLevels().has(logLevelNeeded)) {
82
+ const logFn = isSuccess ? console.log : console.error;
83
+ const messageInfo = message ? ` - ${message}` : '';
84
+ const correlationInfo = correlationId ? ` [${correlationId}]` : '';
85
+ logFn(`[EVENT]: ${eventType} ${status} in ${durationMs}ms${messageInfo}${correlationInfo}`);
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Global logger instance - can be replaced with a custom logger via setLogger()
91
+ */
92
+ let globalLogger = new DefaultLogger();
93
+ /**
94
+ * Set a custom logger implementation for the observability SDK
95
+ *
96
+ * Example with Winston:
97
+ * ```typescript
98
+ * import * as winston from 'winston';
99
+ * import { setLogger } from '@microsoft/agents-a365-observability';
100
+ *
101
+ * const winstonLogger = winston.createLogger({
102
+ * level: 'info',
103
+ * format: winston.format.json(),
104
+ * transports: [
105
+ * new winston.transports.File({ filename: 'error.log', level: 'error' }),
106
+ * new winston.transports.File({ filename: 'combined.log' })
107
+ * ]
108
+ * });
109
+ *
110
+ * setLogger({
111
+ * info: (msg, ...args) => winstonLogger.info(msg, ...args),
112
+ * warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
113
+ * error: (msg, ...args) => winstonLogger.error(msg, ...args),
114
+ * event: (eventType, isSuccess, durationMs, message, correlationId) => {
115
+ * winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, correlationId });
116
+ * }
117
+ * });
118
+ * ```
119
+ *
120
+ * @param customLogger The custom logger implementation
121
+ */
122
+ export function setLogger(customLogger) {
123
+ if (!customLogger ||
124
+ typeof customLogger.info !== 'function' ||
125
+ typeof customLogger.warn !== 'function' ||
126
+ typeof customLogger.error !== 'function' ||
127
+ typeof customLogger.event !== 'function') {
128
+ throw new Error('Custom logger must implement ILogger interface with all methods: info, warn, error, and event');
129
+ }
130
+ globalLogger = customLogger;
131
+ }
132
+ /**
133
+ * Get the current logger instance
134
+ */
135
+ export function getLogger() {
136
+ return globalLogger;
137
+ }
138
+ /**
139
+ * Reset to the default console logger (mainly for testing)
140
+ */
141
+ export function resetLogger() {
142
+ globalLogger = new DefaultLogger();
143
+ }
144
+ /**
145
+ * Default logger instance for backward compatibility.
146
+ * Delegates to the global logger which can be replaced via setLogger().
147
+ */
148
+ export const logger = {
149
+ info: (message, ...args) => globalLogger.info(message, ...args),
150
+ warn: (message, ...args) => globalLogger.warn(message, ...args),
151
+ error: (message, ...args) => globalLogger.error(message, ...args),
152
+ event: (eventType, isSuccess, durationMs, message, correlationId) => globalLogger.event(eventType, isSuccess, durationMs, message, correlationId)
153
+ };
154
+ export default logger;
155
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@microsoft/agents-a365-observability",
3
+ "version": "0.1.0-preview.103",
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
+ "keywords": [
9
+ "Agent365",
10
+ "opentelemetry",
11
+ "tracing",
12
+ "monitoring",
13
+ "ai",
14
+ "agents",
15
+ "azure",
16
+ "typescript"
17
+ ],
18
+ "author": "Microsoft Corporation",
19
+ "license": "MIT",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/microsoft/Agent365-nodejs.git",
23
+ "directory": "packages/agents-a365-observability"
24
+ },
25
+ "dependencies": {
26
+ "@azure/monitor-opentelemetry-exporter": "^1.0.0-beta.32",
27
+ "@microsoft/agents-a365-runtime": "0.1.0-preview.103",
28
+ "@opentelemetry/api": "^1.9.0",
29
+ "@opentelemetry/exporter-trace-otlp-http": "^0.205.0",
30
+ "@opentelemetry/instrumentation": "^0.204.0",
31
+ "@opentelemetry/resources": "^2.1.0",
32
+ "@opentelemetry/sdk-node": "^0.204.0",
33
+ "@opentelemetry/sdk-trace-base": "^2.1.0",
34
+ "@opentelemetry/semantic-conventions": "^1.37.0"
35
+ },
36
+ "devDependencies": {
37
+ "@eslint/js": "^9.39.1",
38
+ "@types/jest": "^30.0.0",
39
+ "@types/node": "^20.17.0",
40
+ "@typescript-eslint/eslint-plugin": "^8.47.0",
41
+ "@typescript-eslint/parser": "^8.47.0",
42
+ "eslint": "^9.39.1",
43
+ "jest": "^30.2.0",
44
+ "rimraf": "^6.0.0",
45
+ "ts-jest": "^29.4.5",
46
+ "typescript": "^5.9.3",
47
+ "typescript-eslint": "^8.47.0"
48
+ },
49
+ "engines": {
50
+ "node": ">=18.0.0"
51
+ },
52
+ "files": [
53
+ "dist/**/*",
54
+ "README.md",
55
+ "CHANGELOG.md",
56
+ "LICENSE.md"
57
+ ],
58
+ "scripts": {
59
+ "build:cjs": "npx tsc --project tsconfig.cjs.json",
60
+ "build:esm": "npx tsc --project tsconfig.esm.json",
61
+ "build": "npm run build:cjs && npm run build:esm",
62
+ "build:watch": "npx tsc --watch",
63
+ "clean": "npx rimraf dist",
64
+ "test": "jest --passWithNoTests",
65
+ "test:watch": "jest --watch",
66
+ "lint": "eslint src",
67
+ "lint:fix": "eslint src --fix",
68
+ "ci": "npm ci",
69
+ "pack": "node ../../copyFiles.js . && pnpm pack --pack-destination=../"
70
+ }
71
+ }