observability-toolkit 1.8.5 → 2.0.0

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 (237) hide show
  1. package/README.md +126 -5
  2. package/dist/backends/index.d.ts +163 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +57 -0
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/index.test.js +55 -1
  7. package/dist/backends/index.test.js.map +1 -1
  8. package/dist/backends/local-jsonl.d.ts +30 -0
  9. package/dist/backends/local-jsonl.d.ts.map +1 -1
  10. package/dist/backends/local-jsonl.js +912 -550
  11. package/dist/backends/local-jsonl.js.map +1 -1
  12. package/dist/backends/signoz-api-rate-limiter.test.js +2 -1
  13. package/dist/backends/signoz-api-rate-limiter.test.js.map +1 -1
  14. package/dist/backends/signoz-api.d.ts +16 -2
  15. package/dist/backends/signoz-api.d.ts.map +1 -1
  16. package/dist/backends/signoz-api.js +650 -534
  17. package/dist/backends/signoz-api.js.map +1 -1
  18. package/dist/backends/signoz-api.test.js +6 -5
  19. package/dist/backends/signoz-api.test.js.map +1 -1
  20. package/dist/lib/agent-as-judge.d.ts +388 -0
  21. package/dist/lib/agent-as-judge.d.ts.map +1 -0
  22. package/dist/lib/agent-as-judge.js +740 -0
  23. package/dist/lib/agent-as-judge.js.map +1 -0
  24. package/dist/lib/agent-as-judge.test.d.ts +5 -0
  25. package/dist/lib/agent-as-judge.test.d.ts.map +1 -0
  26. package/dist/lib/agent-as-judge.test.js +816 -0
  27. package/dist/lib/agent-as-judge.test.js.map +1 -0
  28. package/dist/lib/cache.d.ts +15 -2
  29. package/dist/lib/cache.d.ts.map +1 -1
  30. package/dist/lib/cache.js +16 -2
  31. package/dist/lib/cache.js.map +1 -1
  32. package/dist/lib/circuit-breaker.d.ts +18 -0
  33. package/dist/lib/circuit-breaker.d.ts.map +1 -1
  34. package/dist/lib/circuit-breaker.js +41 -8
  35. package/dist/lib/circuit-breaker.js.map +1 -1
  36. package/dist/lib/confident-export.d.ts +101 -0
  37. package/dist/lib/confident-export.d.ts.map +1 -0
  38. package/dist/lib/confident-export.js +393 -0
  39. package/dist/lib/confident-export.js.map +1 -0
  40. package/dist/lib/confident-export.test.d.ts +7 -0
  41. package/dist/lib/confident-export.test.d.ts.map +1 -0
  42. package/dist/lib/confident-export.test.js +835 -0
  43. package/dist/lib/confident-export.test.js.map +1 -0
  44. package/dist/lib/constants.d.ts +75 -0
  45. package/dist/lib/constants.d.ts.map +1 -1
  46. package/dist/lib/constants.js +104 -1
  47. package/dist/lib/constants.js.map +1 -1
  48. package/dist/lib/datadog-export.d.ts +156 -0
  49. package/dist/lib/datadog-export.d.ts.map +1 -0
  50. package/dist/lib/datadog-export.js +464 -0
  51. package/dist/lib/datadog-export.js.map +1 -0
  52. package/dist/lib/datadog-export.test.d.ts +14 -0
  53. package/dist/lib/datadog-export.test.d.ts.map +1 -0
  54. package/dist/lib/datadog-export.test.js +890 -0
  55. package/dist/lib/datadog-export.test.js.map +1 -0
  56. package/dist/lib/evaluation-hooks.d.ts +49 -0
  57. package/dist/lib/evaluation-hooks.d.ts.map +1 -0
  58. package/dist/lib/evaluation-hooks.js +488 -0
  59. package/dist/lib/evaluation-hooks.js.map +1 -0
  60. package/dist/lib/evaluation-hooks.test.d.ts +8 -0
  61. package/dist/lib/evaluation-hooks.test.d.ts.map +1 -0
  62. package/dist/lib/evaluation-hooks.test.js +624 -0
  63. package/dist/lib/evaluation-hooks.test.js.map +1 -0
  64. package/dist/lib/export-utils.d.ts +99 -0
  65. package/dist/lib/export-utils.d.ts.map +1 -0
  66. package/dist/lib/export-utils.js +238 -0
  67. package/dist/lib/export-utils.js.map +1 -0
  68. package/dist/lib/export-utils.test.d.ts +5 -0
  69. package/dist/lib/export-utils.test.d.ts.map +1 -0
  70. package/dist/lib/export-utils.test.js +193 -0
  71. package/dist/lib/export-utils.test.js.map +1 -0
  72. package/dist/lib/file-utils.d.ts +17 -2
  73. package/dist/lib/file-utils.d.ts.map +1 -1
  74. package/dist/lib/file-utils.js +24 -5
  75. package/dist/lib/file-utils.js.map +1 -1
  76. package/dist/lib/file-utils.test.js +30 -0
  77. package/dist/lib/file-utils.test.js.map +1 -1
  78. package/dist/lib/histogram.d.ts +119 -0
  79. package/dist/lib/histogram.d.ts.map +1 -0
  80. package/dist/lib/histogram.js +202 -0
  81. package/dist/lib/histogram.js.map +1 -0
  82. package/dist/lib/histogram.test.d.ts +5 -0
  83. package/dist/lib/histogram.test.d.ts.map +1 -0
  84. package/dist/lib/histogram.test.js +381 -0
  85. package/dist/lib/histogram.test.js.map +1 -0
  86. package/dist/lib/instrumentation.d.ts +153 -0
  87. package/dist/lib/instrumentation.d.ts.map +1 -0
  88. package/dist/lib/instrumentation.integration.test.d.ts +2 -0
  89. package/dist/lib/instrumentation.integration.test.d.ts.map +1 -0
  90. package/dist/lib/instrumentation.integration.test.js +589 -0
  91. package/dist/lib/instrumentation.integration.test.js.map +1 -0
  92. package/dist/lib/instrumentation.js +520 -0
  93. package/dist/lib/instrumentation.js.map +1 -0
  94. package/dist/lib/instrumentation.test.d.ts +2 -0
  95. package/dist/lib/instrumentation.test.d.ts.map +1 -0
  96. package/dist/lib/instrumentation.test.js +821 -0
  97. package/dist/lib/instrumentation.test.js.map +1 -0
  98. package/dist/lib/langfuse-export.d.ts +125 -0
  99. package/dist/lib/langfuse-export.d.ts.map +1 -0
  100. package/dist/lib/langfuse-export.js +367 -0
  101. package/dist/lib/langfuse-export.js.map +1 -0
  102. package/dist/lib/langfuse-export.test.d.ts +7 -0
  103. package/dist/lib/langfuse-export.test.d.ts.map +1 -0
  104. package/dist/lib/langfuse-export.test.js +1007 -0
  105. package/dist/lib/langfuse-export.test.js.map +1 -0
  106. package/dist/lib/llm-as-judge.d.ts +657 -0
  107. package/dist/lib/llm-as-judge.d.ts.map +1 -0
  108. package/dist/lib/llm-as-judge.js +1397 -0
  109. package/dist/lib/llm-as-judge.js.map +1 -0
  110. package/dist/lib/llm-as-judge.test.d.ts +2 -0
  111. package/dist/lib/llm-as-judge.test.d.ts.map +1 -0
  112. package/dist/lib/llm-as-judge.test.js +2409 -0
  113. package/dist/lib/llm-as-judge.test.js.map +1 -0
  114. package/dist/lib/logger.d.ts +1 -1
  115. package/dist/lib/logger.d.ts.map +1 -1
  116. package/dist/lib/logger.js.map +1 -1
  117. package/dist/lib/metrics.d.ts +62 -0
  118. package/dist/lib/metrics.d.ts.map +1 -0
  119. package/dist/lib/metrics.js +166 -0
  120. package/dist/lib/metrics.js.map +1 -0
  121. package/dist/lib/metrics.test.d.ts +5 -0
  122. package/dist/lib/metrics.test.d.ts.map +1 -0
  123. package/dist/lib/metrics.test.js +189 -0
  124. package/dist/lib/metrics.test.js.map +1 -0
  125. package/dist/lib/parse-stats.d.ts +119 -0
  126. package/dist/lib/parse-stats.d.ts.map +1 -0
  127. package/dist/lib/parse-stats.js +206 -0
  128. package/dist/lib/parse-stats.js.map +1 -0
  129. package/dist/lib/parse-stats.test.d.ts +5 -0
  130. package/dist/lib/parse-stats.test.d.ts.map +1 -0
  131. package/dist/lib/parse-stats.test.js +283 -0
  132. package/dist/lib/parse-stats.test.js.map +1 -0
  133. package/dist/lib/phoenix-export.d.ts +109 -0
  134. package/dist/lib/phoenix-export.d.ts.map +1 -0
  135. package/dist/lib/phoenix-export.js +429 -0
  136. package/dist/lib/phoenix-export.js.map +1 -0
  137. package/dist/lib/phoenix-export.test.d.ts +11 -0
  138. package/dist/lib/phoenix-export.test.d.ts.map +1 -0
  139. package/dist/lib/phoenix-export.test.js +725 -0
  140. package/dist/lib/phoenix-export.test.js.map +1 -0
  141. package/dist/lib/server-utils.d.ts +6 -1
  142. package/dist/lib/server-utils.d.ts.map +1 -1
  143. package/dist/lib/server-utils.js +9 -1
  144. package/dist/lib/server-utils.js.map +1 -1
  145. package/dist/lib/shared-schemas.d.ts +6 -0
  146. package/dist/lib/shared-schemas.d.ts.map +1 -1
  147. package/dist/lib/shared-schemas.js +11 -4
  148. package/dist/lib/shared-schemas.js.map +1 -1
  149. package/dist/lib/verification-events.d.ts +100 -0
  150. package/dist/lib/verification-events.d.ts.map +1 -0
  151. package/dist/lib/verification-events.js +162 -0
  152. package/dist/lib/verification-events.js.map +1 -0
  153. package/dist/lib/verification-events.test.d.ts +5 -0
  154. package/dist/lib/verification-events.test.d.ts.map +1 -0
  155. package/dist/lib/verification-events.test.js +193 -0
  156. package/dist/lib/verification-events.test.js.map +1 -0
  157. package/dist/server.d.ts +5 -0
  158. package/dist/server.d.ts.map +1 -1
  159. package/dist/server.js +77 -21
  160. package/dist/server.js.map +1 -1
  161. package/dist/tools/context-stats.d.ts.map +1 -1
  162. package/dist/tools/context-stats.js +6 -8
  163. package/dist/tools/context-stats.js.map +1 -1
  164. package/dist/tools/export-confident.d.ts +145 -0
  165. package/dist/tools/export-confident.d.ts.map +1 -0
  166. package/dist/tools/export-confident.js +134 -0
  167. package/dist/tools/export-confident.js.map +1 -0
  168. package/dist/tools/export-confident.test.d.ts +7 -0
  169. package/dist/tools/export-confident.test.d.ts.map +1 -0
  170. package/dist/tools/export-confident.test.js +332 -0
  171. package/dist/tools/export-confident.test.js.map +1 -0
  172. package/dist/tools/export-datadog.d.ts +160 -0
  173. package/dist/tools/export-datadog.d.ts.map +1 -0
  174. package/dist/tools/export-datadog.js +160 -0
  175. package/dist/tools/export-datadog.js.map +1 -0
  176. package/dist/tools/export-datadog.test.d.ts +8 -0
  177. package/dist/tools/export-datadog.test.d.ts.map +1 -0
  178. package/dist/tools/export-datadog.test.js +419 -0
  179. package/dist/tools/export-datadog.test.js.map +1 -0
  180. package/dist/tools/export-langfuse.d.ts +137 -0
  181. package/dist/tools/export-langfuse.d.ts.map +1 -0
  182. package/dist/tools/export-langfuse.js +131 -0
  183. package/dist/tools/export-langfuse.js.map +1 -0
  184. package/dist/tools/export-langfuse.test.d.ts +7 -0
  185. package/dist/tools/export-langfuse.test.d.ts.map +1 -0
  186. package/dist/tools/export-langfuse.test.js +303 -0
  187. package/dist/tools/export-langfuse.test.js.map +1 -0
  188. package/dist/tools/export-phoenix.d.ts +145 -0
  189. package/dist/tools/export-phoenix.d.ts.map +1 -0
  190. package/dist/tools/export-phoenix.js +135 -0
  191. package/dist/tools/export-phoenix.js.map +1 -0
  192. package/dist/tools/export-phoenix.test.d.ts +7 -0
  193. package/dist/tools/export-phoenix.test.d.ts.map +1 -0
  194. package/dist/tools/export-phoenix.test.js +316 -0
  195. package/dist/tools/export-phoenix.test.js.map +1 -0
  196. package/dist/tools/health-check.d.ts +26 -0
  197. package/dist/tools/health-check.d.ts.map +1 -1
  198. package/dist/tools/health-check.js +36 -7
  199. package/dist/tools/health-check.js.map +1 -1
  200. package/dist/tools/index.d.ts +6 -0
  201. package/dist/tools/index.d.ts.map +1 -1
  202. package/dist/tools/index.js +6 -0
  203. package/dist/tools/index.js.map +1 -1
  204. package/dist/tools/inject-evaluations.d.ts +1315 -0
  205. package/dist/tools/inject-evaluations.d.ts.map +1 -0
  206. package/dist/tools/inject-evaluations.js +121 -0
  207. package/dist/tools/inject-evaluations.js.map +1 -0
  208. package/dist/tools/inject-evaluations.test.d.ts +5 -0
  209. package/dist/tools/inject-evaluations.test.d.ts.map +1 -0
  210. package/dist/tools/inject-evaluations.test.js +359 -0
  211. package/dist/tools/inject-evaluations.test.js.map +1 -0
  212. package/dist/tools/query-evaluations.d.ts +25 -4
  213. package/dist/tools/query-evaluations.d.ts.map +1 -1
  214. package/dist/tools/query-evaluations.js +10 -0
  215. package/dist/tools/query-evaluations.js.map +1 -1
  216. package/dist/tools/query-llm-events.js +2 -2
  217. package/dist/tools/query-llm-events.js.map +1 -1
  218. package/dist/tools/query-logs.d.ts +8 -8
  219. package/dist/tools/query-logs.js +3 -3
  220. package/dist/tools/query-logs.js.map +1 -1
  221. package/dist/tools/query-metrics.d.ts +4 -4
  222. package/dist/tools/query-metrics.js +2 -2
  223. package/dist/tools/query-metrics.js.map +1 -1
  224. package/dist/tools/query-traces.d.ts +8 -8
  225. package/dist/tools/query-verifications.d.ts +111 -0
  226. package/dist/tools/query-verifications.d.ts.map +1 -0
  227. package/dist/tools/query-verifications.js +101 -0
  228. package/dist/tools/query-verifications.js.map +1 -0
  229. package/dist/tools/query-verifications.test.d.ts +5 -0
  230. package/dist/tools/query-verifications.test.d.ts.map +1 -0
  231. package/dist/tools/query-verifications.test.js +156 -0
  232. package/dist/tools/query-verifications.test.js.map +1 -0
  233. package/dist/types/evaluation-hooks.d.ts +176 -0
  234. package/dist/types/evaluation-hooks.d.ts.map +1 -0
  235. package/dist/types/evaluation-hooks.js +49 -0
  236. package/dist/types/evaluation-hooks.js.map +1 -0
  237. package/package.json +10 -2
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Export evaluations to Datadog LLM Observability via HTTP API
3
+ *
4
+ * MCP tool for exporting gen_ai.evaluation.result events to Datadog
5
+ * using two-phase export (spans + eval metrics).
6
+ */
7
+ import { z } from 'zod';
8
+ import { type DatadogConfig } from '../lib/datadog-export.js';
9
+ import type { TelemetryBackend } from '../backends/index.js';
10
+ export declare const exportDatadogSchema: z.ZodObject<{
11
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
12
+ batchSize: z.ZodOptional<z.ZodNumber>;
13
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
14
+ mlApp: z.ZodOptional<z.ZodString>;
15
+ site: z.ZodOptional<z.ZodEnum<["datadoghq.com", "us3.datadoghq.com", "us5.datadoghq.com", "datadoghq.eu", "ap1.datadoghq.com"]>>;
16
+ exportSpans: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ exportEvals: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
18
+ metricType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["categorical", "score", "boolean", "auto"]>>>;
19
+ apiKey: z.ZodOptional<z.ZodString>;
20
+ startDate: z.ZodOptional<z.ZodString>;
21
+ endDate: z.ZodOptional<z.ZodString>;
22
+ sessionId: z.ZodOptional<z.ZodString>;
23
+ traceId: z.ZodOptional<z.ZodString>;
24
+ evaluationName: z.ZodOptional<z.ZodString>;
25
+ scoreMin: z.ZodOptional<z.ZodNumber>;
26
+ scoreMax: z.ZodOptional<z.ZodNumber>;
27
+ scoreLabel: z.ZodOptional<z.ZodString>;
28
+ evaluatorType: z.ZodOptional<z.ZodEnum<["llm", "human", "rule", "classifier"]>>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ limit: number;
31
+ dryRun: boolean;
32
+ exportSpans: boolean;
33
+ exportEvals: boolean;
34
+ metricType: "boolean" | "auto" | "score" | "categorical";
35
+ traceId?: string | undefined;
36
+ sessionId?: string | undefined;
37
+ evaluationName?: string | undefined;
38
+ scoreLabel?: string | undefined;
39
+ scoreMin?: number | undefined;
40
+ scoreMax?: number | undefined;
41
+ evaluatorType?: "llm" | "human" | "rule" | "classifier" | undefined;
42
+ endDate?: string | undefined;
43
+ startDate?: string | undefined;
44
+ batchSize?: number | undefined;
45
+ apiKey?: string | undefined;
46
+ site?: "datadoghq.com" | "us3.datadoghq.com" | "us5.datadoghq.com" | "datadoghq.eu" | "ap1.datadoghq.com" | undefined;
47
+ mlApp?: string | undefined;
48
+ }, {
49
+ limit?: number | undefined;
50
+ traceId?: string | undefined;
51
+ sessionId?: string | undefined;
52
+ evaluationName?: string | undefined;
53
+ scoreLabel?: string | undefined;
54
+ scoreMin?: number | undefined;
55
+ scoreMax?: number | undefined;
56
+ evaluatorType?: "llm" | "human" | "rule" | "classifier" | undefined;
57
+ endDate?: string | undefined;
58
+ startDate?: string | undefined;
59
+ dryRun?: boolean | undefined;
60
+ batchSize?: number | undefined;
61
+ apiKey?: string | undefined;
62
+ site?: "datadoghq.com" | "us3.datadoghq.com" | "us5.datadoghq.com" | "datadoghq.eu" | "ap1.datadoghq.com" | undefined;
63
+ mlApp?: string | undefined;
64
+ exportSpans?: boolean | undefined;
65
+ exportEvals?: boolean | undefined;
66
+ metricType?: "boolean" | "auto" | "score" | "categorical" | undefined;
67
+ }>;
68
+ export type ExportDatadogInput = z.input<typeof exportDatadogSchema>;
69
+ /** Response from export operation */
70
+ export interface ExportDatadogResponse {
71
+ success: boolean;
72
+ dryRun: boolean;
73
+ evaluationsFound: number;
74
+ evaluationsExported: number;
75
+ /** Spans exported (Phase 1) */
76
+ spansExported: number;
77
+ /** Eval metrics exported (Phase 2) */
78
+ evalMetricsExported: number;
79
+ batches: number;
80
+ failed: number;
81
+ durationMs: number;
82
+ errors?: string[];
83
+ preview?: Array<{
84
+ traceId?: string;
85
+ evaluationName: string;
86
+ scoreValue?: number;
87
+ scoreLabel?: string;
88
+ metricType: string;
89
+ }>;
90
+ }
91
+ export interface ExportDatadogOptions {
92
+ localBackend?: TelemetryBackend;
93
+ configOverrides?: Partial<DatadogConfig>;
94
+ skipExport?: boolean;
95
+ }
96
+ export declare function exportDatadog(rawInput: ExportDatadogInput, options?: ExportDatadogOptions): Promise<ExportDatadogResponse>;
97
+ export declare const exportDatadogTool: {
98
+ name: string;
99
+ description: string;
100
+ inputSchema: z.ZodObject<{
101
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
102
+ batchSize: z.ZodOptional<z.ZodNumber>;
103
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
104
+ mlApp: z.ZodOptional<z.ZodString>;
105
+ site: z.ZodOptional<z.ZodEnum<["datadoghq.com", "us3.datadoghq.com", "us5.datadoghq.com", "datadoghq.eu", "ap1.datadoghq.com"]>>;
106
+ exportSpans: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
107
+ exportEvals: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
108
+ metricType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["categorical", "score", "boolean", "auto"]>>>;
109
+ apiKey: z.ZodOptional<z.ZodString>;
110
+ startDate: z.ZodOptional<z.ZodString>;
111
+ endDate: z.ZodOptional<z.ZodString>;
112
+ sessionId: z.ZodOptional<z.ZodString>;
113
+ traceId: z.ZodOptional<z.ZodString>;
114
+ evaluationName: z.ZodOptional<z.ZodString>;
115
+ scoreMin: z.ZodOptional<z.ZodNumber>;
116
+ scoreMax: z.ZodOptional<z.ZodNumber>;
117
+ scoreLabel: z.ZodOptional<z.ZodString>;
118
+ evaluatorType: z.ZodOptional<z.ZodEnum<["llm", "human", "rule", "classifier"]>>;
119
+ }, "strip", z.ZodTypeAny, {
120
+ limit: number;
121
+ dryRun: boolean;
122
+ exportSpans: boolean;
123
+ exportEvals: boolean;
124
+ metricType: "boolean" | "auto" | "score" | "categorical";
125
+ traceId?: string | undefined;
126
+ sessionId?: string | undefined;
127
+ evaluationName?: string | undefined;
128
+ scoreLabel?: string | undefined;
129
+ scoreMin?: number | undefined;
130
+ scoreMax?: number | undefined;
131
+ evaluatorType?: "llm" | "human" | "rule" | "classifier" | undefined;
132
+ endDate?: string | undefined;
133
+ startDate?: string | undefined;
134
+ batchSize?: number | undefined;
135
+ apiKey?: string | undefined;
136
+ site?: "datadoghq.com" | "us3.datadoghq.com" | "us5.datadoghq.com" | "datadoghq.eu" | "ap1.datadoghq.com" | undefined;
137
+ mlApp?: string | undefined;
138
+ }, {
139
+ limit?: number | undefined;
140
+ traceId?: string | undefined;
141
+ sessionId?: string | undefined;
142
+ evaluationName?: string | undefined;
143
+ scoreLabel?: string | undefined;
144
+ scoreMin?: number | undefined;
145
+ scoreMax?: number | undefined;
146
+ evaluatorType?: "llm" | "human" | "rule" | "classifier" | undefined;
147
+ endDate?: string | undefined;
148
+ startDate?: string | undefined;
149
+ dryRun?: boolean | undefined;
150
+ batchSize?: number | undefined;
151
+ apiKey?: string | undefined;
152
+ site?: "datadoghq.com" | "us3.datadoghq.com" | "us5.datadoghq.com" | "datadoghq.eu" | "ap1.datadoghq.com" | undefined;
153
+ mlApp?: string | undefined;
154
+ exportSpans?: boolean | undefined;
155
+ exportEvals?: boolean | undefined;
156
+ metricType?: "boolean" | "auto" | "score" | "categorical" | undefined;
157
+ }>;
158
+ handler: typeof exportDatadog;
159
+ };
160
+ //# sourceMappingURL=export-datadog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-datadog.d.ts","sourceRoot":"","sources":["../../src/tools/export-datadog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAIL,KAAK,aAAa,EAGnB,MAAM,0BAA0B,CAAC;AAWlC,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAY5E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,qCAAqC;AACrC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAGD,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAkHhC;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK7B,CAAC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Export evaluations to Datadog LLM Observability via HTTP API
3
+ *
4
+ * MCP tool for exporting gen_ai.evaluation.result events to Datadog
5
+ * using two-phase export (spans + eval metrics).
6
+ */
7
+ import { z } from 'zod';
8
+ import { MultiDirectoryBackend } from '../backends/local-jsonl.js';
9
+ import { validateDatadogConfig, exportToDatadog, inferMetricType, } from '../lib/datadog-export.js';
10
+ import { validateLimit, validateDateRange, InputValidationError, } from '../lib/input-validator.js';
11
+ import { sessionSchema, traceIdSchema, dateRangeSchema, } from '../lib/shared-schemas.js';
12
+ import { MAX_EXPORT_LIMIT, EXPORT_PREVIEW_LIMIT } from '../lib/constants.js';
13
+ /** Valid Datadog sites */
14
+ const DATADOG_SITES = [
15
+ 'datadoghq.com',
16
+ 'us3.datadoghq.com',
17
+ 'us5.datadoghq.com',
18
+ 'datadoghq.eu',
19
+ 'ap1.datadoghq.com',
20
+ ];
21
+ export const exportDatadogSchema = z.object({
22
+ // Filters (consistent with other export tools)
23
+ evaluationName: z.string().optional().describe('Evaluation name (substring)'),
24
+ scoreMin: z.number().optional().describe('Min score threshold'),
25
+ scoreMax: z.number().optional().describe('Max score threshold'),
26
+ scoreLabel: z.string().optional().describe('Score label (exact)'),
27
+ evaluatorType: z.enum(['llm', 'human', 'rule', 'classifier']).optional().describe('Evaluator type'),
28
+ ...traceIdSchema,
29
+ ...sessionSchema,
30
+ ...dateRangeSchema,
31
+ // Export options (consistent with other export tools)
32
+ limit: z.number().max(MAX_EXPORT_LIMIT).optional().default(1000).describe('Max evaluations to export (max 10000)'),
33
+ batchSize: z.number().min(1).max(1000).optional().describe('Batch size for export (default 100)'),
34
+ dryRun: z.boolean().optional().default(false).describe('Preview export without sending'),
35
+ // Datadog specific
36
+ mlApp: z.string()
37
+ .max(256)
38
+ .regex(/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/, 'Invalid application name format (alphanumeric, _, ., - allowed)')
39
+ .optional()
40
+ .describe('LLM application name (DD_LLMOBS_ML_APP)'),
41
+ site: z.enum(DATADOG_SITES).optional().describe('Datadog site (DD_SITE)'),
42
+ exportSpans: z.boolean().optional().default(true).describe('Export as spans'),
43
+ exportEvals: z.boolean().optional().default(true).describe('Export as eval metrics'),
44
+ metricType: z.enum(['categorical', 'score', 'boolean', 'auto']).optional().default('auto')
45
+ .describe('Force metric type (default: auto-detect)'),
46
+ // Config overrides
47
+ apiKey: z.string().optional().describe('Override DD_API_KEY'),
48
+ });
49
+ export async function exportDatadog(rawInput, options) {
50
+ try {
51
+ const input = exportDatadogSchema.parse(rawInput);
52
+ // Validate inputs
53
+ const validatedLimit = Math.min(validateLimit(input.limit), MAX_EXPORT_LIMIT);
54
+ // Validate date range if provided
55
+ if (input.startDate || input.endDate) {
56
+ validateDateRange(input.startDate, input.endDate);
57
+ }
58
+ // Validate score range
59
+ if (input.scoreMin !== undefined && input.scoreMax !== undefined) {
60
+ if (input.scoreMin > input.scoreMax) {
61
+ throw new Error(`Invalid score range: scoreMin (${input.scoreMin}) cannot exceed scoreMax (${input.scoreMax})`);
62
+ }
63
+ }
64
+ // Build query options
65
+ const queryOptions = {
66
+ evaluationName: input.evaluationName,
67
+ scoreMin: input.scoreMin,
68
+ scoreMax: input.scoreMax,
69
+ scoreLabel: input.scoreLabel,
70
+ evaluatorType: input.evaluatorType,
71
+ traceId: input.traceId,
72
+ sessionId: input.sessionId,
73
+ startDate: input.startDate,
74
+ endDate: input.endDate,
75
+ limit: validatedLimit,
76
+ };
77
+ // Query evaluations from local backend
78
+ const local = options?.localBackend ?? new MultiDirectoryBackend();
79
+ const evaluations = await local.queryEvaluations(queryOptions);
80
+ // Handle dry run
81
+ if (input.dryRun) {
82
+ return {
83
+ success: true,
84
+ dryRun: true,
85
+ evaluationsFound: evaluations.length,
86
+ evaluationsExported: 0,
87
+ spansExported: 0,
88
+ evalMetricsExported: 0,
89
+ batches: 0,
90
+ failed: 0,
91
+ durationMs: 0,
92
+ preview: evaluations.slice(0, EXPORT_PREVIEW_LIMIT).map(e => ({
93
+ traceId: e.traceId,
94
+ evaluationName: e.evaluationName,
95
+ scoreValue: e.scoreValue,
96
+ scoreLabel: e.scoreLabel,
97
+ metricType: input.metricType === 'auto' ? inferMetricType(e) : input.metricType,
98
+ })),
99
+ };
100
+ }
101
+ // Validate Datadog config (will throw if invalid)
102
+ // Optimize batch size - don't use larger batch than evaluation count
103
+ const optimalBatchSize = input.batchSize
104
+ ? Math.min(input.batchSize, evaluations.length || 1)
105
+ : undefined;
106
+ const config = validateDatadogConfig({
107
+ apiKey: input.apiKey,
108
+ site: input.site,
109
+ mlApp: input.mlApp,
110
+ batchSize: optimalBatchSize,
111
+ exportSpans: input.exportSpans,
112
+ exportEvals: input.exportEvals,
113
+ metricType: input.metricType,
114
+ ...options?.configOverrides,
115
+ });
116
+ // Skip actual export if requested (for testing)
117
+ if (options?.skipExport) {
118
+ const expectedSpans = config.exportSpans ? evaluations.length : 0;
119
+ const expectedEvals = config.exportEvals ? evaluations.length : 0;
120
+ return {
121
+ success: true,
122
+ dryRun: false,
123
+ evaluationsFound: evaluations.length,
124
+ evaluationsExported: Math.max(expectedSpans, expectedEvals),
125
+ spansExported: expectedSpans,
126
+ evalMetricsExported: expectedEvals,
127
+ batches: Math.ceil(evaluations.length / config.batchSize),
128
+ failed: 0,
129
+ durationMs: 0,
130
+ };
131
+ }
132
+ // Export to Datadog
133
+ const result = await exportToDatadog(evaluations, config);
134
+ return {
135
+ success: result.success,
136
+ dryRun: false,
137
+ evaluationsFound: evaluations.length,
138
+ evaluationsExported: result.evaluationsExported,
139
+ spansExported: result.spansExported,
140
+ evalMetricsExported: result.evalMetricsExported,
141
+ batches: result.batches,
142
+ failed: result.failed,
143
+ durationMs: result.durationMs,
144
+ ...(result.errors && { errors: result.errors }),
145
+ };
146
+ }
147
+ catch (error) {
148
+ if (error instanceof InputValidationError) {
149
+ throw new Error(`Validation error (${error.field}): ${error.message}`);
150
+ }
151
+ throw error;
152
+ }
153
+ }
154
+ export const exportDatadogTool = {
155
+ name: 'obs_export_datadog',
156
+ description: 'Export evaluation results to Datadog LLM Observability via HTTP API with two-phase export (spans + eval metrics).',
157
+ inputSchema: exportDatadogSchema,
158
+ handler: exportDatadog,
159
+ };
160
+ //# sourceMappingURL=export-datadog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-datadog.js","sourceRoot":"","sources":["../../src/tools/export-datadog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,GAIhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,0BAA0B;AAC1B,MAAM,aAAa,GAAG;IACpB,eAAe;IACf,mBAAmB;IACnB,mBAAmB;IACnB,cAAc;IACd,mBAAmB;CACX,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,+CAA+C;IAC/C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACjE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACnG,GAAG,aAAa;IAChB,GAAG,aAAa;IAChB,GAAG,eAAe;IAElB,sDAAsD;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAClH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjG,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAExF,mBAAmB;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACd,GAAG,CAAC,GAAG,CAAC;SACR,KAAK,CAAC,8BAA8B,EAAE,iEAAiE,CAAC;SACxG,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7E,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACpF,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACvF,QAAQ,CAAC,0CAA0C,CAAC;IAEvD,mBAAmB;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC9D,CAAC,CAAC;AAkCH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA4B,EAC5B,OAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAElD,kBAAkB;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAE9E,kCAAkC;QAClC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QAED,uBAAuB;QACvB,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjE,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,QAAQ,6BAA6B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG;YACnB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,aAAa,EAAE,KAAK,CAAC,aAA0C;YAC/D,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,cAAc;SACtB,CAAC;QAEF,uCAAuC;QACvC,MAAM,KAAK,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,gBAAiB,CAAC,YAAY,CAAC,CAAC;QAEhE,iBAAiB;QACjB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;gBACZ,gBAAgB,EAAE,WAAW,CAAC,MAAM;gBACpC,mBAAmB,EAAE,CAAC;gBACtB,aAAa,EAAE,CAAC;gBAChB,mBAAmB,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5D,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU;iBAChF,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,qEAAqE;QACrE,MAAM,gBAAgB,GAAG,KAAK,CAAC,SAAS;YACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;YACpD,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAA+B;YAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,gBAAgB;YAC3B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAoD;YACtE,GAAG,OAAO,EAAE,eAAe;SAC5B,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,KAAK;gBACb,gBAAgB,EAAE,WAAW,CAAC,MAAM;gBACpC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC;gBAC3D,aAAa,EAAE,aAAa;gBAC5B,mBAAmB,EAAE,aAAa;gBAClC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;gBACzD,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAE1D,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,WAAW,CAAC,MAAM;YACpC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,mHAAmH;IAChI,WAAW,EAAE,mBAAmB;IAChC,OAAO,EAAE,aAAa;CACvB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tests for export-datadog.ts MCP tool
3
+ *
4
+ * Covers schema validation, handler execution, dry run mode,
5
+ * dependency injection, and error handling.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=export-datadog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-datadog.test.d.ts","sourceRoot":"","sources":["../../src/tools/export-datadog.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}