@sweny-ai/providers 0.2.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 (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +260 -0
  3. package/dist/access/allow-all.d.ts +3 -0
  4. package/dist/access/allow-all.d.ts.map +1 -0
  5. package/dist/access/allow-all.js +19 -0
  6. package/dist/access/allow-all.js.map +1 -0
  7. package/dist/access/index.d.ts +5 -0
  8. package/dist/access/index.d.ts.map +1 -0
  9. package/dist/access/index.js +4 -0
  10. package/dist/access/index.js.map +1 -0
  11. package/dist/access/role-based.d.ts +8 -0
  12. package/dist/access/role-based.d.ts.map +1 -0
  13. package/dist/access/role-based.js +42 -0
  14. package/dist/access/role-based.js.map +1 -0
  15. package/dist/access/types.d.ts +41 -0
  16. package/dist/access/types.d.ts.map +1 -0
  17. package/dist/access/types.js +20 -0
  18. package/dist/access/types.js.map +1 -0
  19. package/dist/agent-tool/factory.d.ts +4 -0
  20. package/dist/agent-tool/factory.d.ts.map +1 -0
  21. package/dist/agent-tool/factory.js +4 -0
  22. package/dist/agent-tool/factory.js.map +1 -0
  23. package/dist/agent-tool/index.d.ts +3 -0
  24. package/dist/agent-tool/index.d.ts.map +1 -0
  25. package/dist/agent-tool/index.js +2 -0
  26. package/dist/agent-tool/index.js.map +1 -0
  27. package/dist/agent-tool/types.d.ts +15 -0
  28. package/dist/agent-tool/types.d.ts.map +1 -0
  29. package/dist/agent-tool/types.js +2 -0
  30. package/dist/agent-tool/types.js.map +1 -0
  31. package/dist/auth/api-key.d.ts +6 -0
  32. package/dist/auth/api-key.d.ts.map +1 -0
  33. package/dist/auth/api-key.js +36 -0
  34. package/dist/auth/api-key.js.map +1 -0
  35. package/dist/auth/index.d.ts +4 -0
  36. package/dist/auth/index.d.ts.map +1 -0
  37. package/dist/auth/index.js +3 -0
  38. package/dist/auth/index.js.map +1 -0
  39. package/dist/auth/no-auth.d.ts +3 -0
  40. package/dist/auth/no-auth.d.ts.map +1 -0
  41. package/dist/auth/no-auth.js +21 -0
  42. package/dist/auth/no-auth.js.map +1 -0
  43. package/dist/auth/types.d.ts +58 -0
  44. package/dist/auth/types.d.ts.map +1 -0
  45. package/dist/auth/types.js +2 -0
  46. package/dist/auth/types.js.map +1 -0
  47. package/dist/coding-agent/claude-code.d.ts +10 -0
  48. package/dist/coding-agent/claude-code.d.ts.map +1 -0
  49. package/dist/coding-agent/claude-code.js +38 -0
  50. package/dist/coding-agent/claude-code.js.map +1 -0
  51. package/dist/coding-agent/google-gemini.d.ts +10 -0
  52. package/dist/coding-agent/google-gemini.d.ts.map +1 -0
  53. package/dist/coding-agent/google-gemini.js +29 -0
  54. package/dist/coding-agent/google-gemini.js.map +1 -0
  55. package/dist/coding-agent/index.d.ts +8 -0
  56. package/dist/coding-agent/index.d.ts.map +1 -0
  57. package/dist/coding-agent/index.js +4 -0
  58. package/dist/coding-agent/index.js.map +1 -0
  59. package/dist/coding-agent/openai-codex.d.ts +10 -0
  60. package/dist/coding-agent/openai-codex.d.ts.map +1 -0
  61. package/dist/coding-agent/openai-codex.js +29 -0
  62. package/dist/coding-agent/openai-codex.js.map +1 -0
  63. package/dist/coding-agent/shared.d.ts +10 -0
  64. package/dist/coding-agent/shared.d.ts.map +1 -0
  65. package/dist/coding-agent/shared.js +44 -0
  66. package/dist/coding-agent/shared.js.map +1 -0
  67. package/dist/coding-agent/types.d.ts +10 -0
  68. package/dist/coding-agent/types.d.ts.map +1 -0
  69. package/dist/coding-agent/types.js +2 -0
  70. package/dist/coding-agent/types.js.map +1 -0
  71. package/dist/credential-vault/aws-secrets-manager.d.ts +19 -0
  72. package/dist/credential-vault/aws-secrets-manager.d.ts.map +1 -0
  73. package/dist/credential-vault/aws-secrets-manager.js +96 -0
  74. package/dist/credential-vault/aws-secrets-manager.js.map +1 -0
  75. package/dist/credential-vault/env-vault.d.ts +15 -0
  76. package/dist/credential-vault/env-vault.d.ts.map +1 -0
  77. package/dist/credential-vault/env-vault.js +25 -0
  78. package/dist/credential-vault/env-vault.js.map +1 -0
  79. package/dist/credential-vault/index.d.ts +6 -0
  80. package/dist/credential-vault/index.d.ts.map +1 -0
  81. package/dist/credential-vault/index.js +3 -0
  82. package/dist/credential-vault/index.js.map +1 -0
  83. package/dist/credential-vault/types.d.ts +30 -0
  84. package/dist/credential-vault/types.d.ts.map +1 -0
  85. package/dist/credential-vault/types.js +2 -0
  86. package/dist/credential-vault/types.js.map +1 -0
  87. package/dist/errors.d.ts +18 -0
  88. package/dist/errors.d.ts.map +1 -0
  89. package/dist/errors.js +35 -0
  90. package/dist/errors.js.map +1 -0
  91. package/dist/incident/index.d.ts +4 -0
  92. package/dist/incident/index.d.ts.map +1 -0
  93. package/dist/incident/index.js +3 -0
  94. package/dist/incident/index.js.map +1 -0
  95. package/dist/incident/opsgenie.d.ts +19 -0
  96. package/dist/incident/opsgenie.d.ts.map +1 -0
  97. package/dist/incident/opsgenie.js +104 -0
  98. package/dist/incident/opsgenie.js.map +1 -0
  99. package/dist/incident/pagerduty.d.ts +19 -0
  100. package/dist/incident/pagerduty.d.ts.map +1 -0
  101. package/dist/incident/pagerduty.js +115 -0
  102. package/dist/incident/pagerduty.js.map +1 -0
  103. package/dist/incident/types.d.ts +67 -0
  104. package/dist/incident/types.d.ts.map +1 -0
  105. package/dist/incident/types.js +2 -0
  106. package/dist/incident/types.js.map +1 -0
  107. package/dist/index.d.ts +28 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +16 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/issue-tracking/github-issues.d.ts +22 -0
  112. package/dist/issue-tracking/github-issues.d.ts.map +1 -0
  113. package/dist/issue-tracking/github-issues.js +136 -0
  114. package/dist/issue-tracking/github-issues.js.map +1 -0
  115. package/dist/issue-tracking/index.d.ts +6 -0
  116. package/dist/issue-tracking/index.d.ts.map +1 -0
  117. package/dist/issue-tracking/index.js +5 -0
  118. package/dist/issue-tracking/index.js.map +1 -0
  119. package/dist/issue-tracking/jira.d.ts +22 -0
  120. package/dist/issue-tracking/jira.d.ts.map +1 -0
  121. package/dist/issue-tracking/jira.js +225 -0
  122. package/dist/issue-tracking/jira.js.map +1 -0
  123. package/dist/issue-tracking/linear.d.ts +16 -0
  124. package/dist/issue-tracking/linear.d.ts.map +1 -0
  125. package/dist/issue-tracking/linear.js +311 -0
  126. package/dist/issue-tracking/linear.js.map +1 -0
  127. package/dist/issue-tracking/types.d.ts +163 -0
  128. package/dist/issue-tracking/types.d.ts.map +1 -0
  129. package/dist/issue-tracking/types.js +28 -0
  130. package/dist/issue-tracking/types.js.map +1 -0
  131. package/dist/logger.d.ts +8 -0
  132. package/dist/logger.d.ts.map +1 -0
  133. package/dist/logger.js +7 -0
  134. package/dist/logger.js.map +1 -0
  135. package/dist/messaging/index.d.ts +6 -0
  136. package/dist/messaging/index.d.ts.map +1 -0
  137. package/dist/messaging/index.js +3 -0
  138. package/dist/messaging/index.js.map +1 -0
  139. package/dist/messaging/slack.d.ts +16 -0
  140. package/dist/messaging/slack.d.ts.map +1 -0
  141. package/dist/messaging/slack.js +41 -0
  142. package/dist/messaging/slack.js.map +1 -0
  143. package/dist/messaging/teams.d.ts +22 -0
  144. package/dist/messaging/teams.d.ts.map +1 -0
  145. package/dist/messaging/teams.js +125 -0
  146. package/dist/messaging/teams.js.map +1 -0
  147. package/dist/messaging/types.d.ts +30 -0
  148. package/dist/messaging/types.d.ts.map +1 -0
  149. package/dist/messaging/types.js +2 -0
  150. package/dist/messaging/types.js.map +1 -0
  151. package/dist/notification/discord-webhook.d.ts +16 -0
  152. package/dist/notification/discord-webhook.d.ts.map +1 -0
  153. package/dist/notification/discord-webhook.js +104 -0
  154. package/dist/notification/discord-webhook.js.map +1 -0
  155. package/dist/notification/email.d.ts +22 -0
  156. package/dist/notification/email.d.ts.map +1 -0
  157. package/dist/notification/email.js +127 -0
  158. package/dist/notification/email.js.map +1 -0
  159. package/dist/notification/github-summary.d.ts +13 -0
  160. package/dist/notification/github-summary.d.ts.map +1 -0
  161. package/dist/notification/github-summary.js +67 -0
  162. package/dist/notification/github-summary.js.map +1 -0
  163. package/dist/notification/index.d.ts +8 -0
  164. package/dist/notification/index.d.ts.map +1 -0
  165. package/dist/notification/index.js +7 -0
  166. package/dist/notification/index.js.map +1 -0
  167. package/dist/notification/slack-webhook.d.ts +16 -0
  168. package/dist/notification/slack-webhook.d.ts.map +1 -0
  169. package/dist/notification/slack-webhook.js +123 -0
  170. package/dist/notification/slack-webhook.js.map +1 -0
  171. package/dist/notification/teams-webhook.d.ts +16 -0
  172. package/dist/notification/teams-webhook.d.ts.map +1 -0
  173. package/dist/notification/teams-webhook.js +125 -0
  174. package/dist/notification/teams-webhook.js.map +1 -0
  175. package/dist/notification/types.d.ts +47 -0
  176. package/dist/notification/types.d.ts.map +1 -0
  177. package/dist/notification/types.js +2 -0
  178. package/dist/notification/types.js.map +1 -0
  179. package/dist/notification/webhook.d.ts +28 -0
  180. package/dist/notification/webhook.d.ts.map +1 -0
  181. package/dist/notification/webhook.js +64 -0
  182. package/dist/notification/webhook.js.map +1 -0
  183. package/dist/observability/cloudwatch.d.ts +19 -0
  184. package/dist/observability/cloudwatch.d.ts.map +1 -0
  185. package/dist/observability/cloudwatch.js +182 -0
  186. package/dist/observability/cloudwatch.js.map +1 -0
  187. package/dist/observability/datadog.d.ts +22 -0
  188. package/dist/observability/datadog.d.ts.map +1 -0
  189. package/dist/observability/datadog.js +139 -0
  190. package/dist/observability/datadog.js.map +1 -0
  191. package/dist/observability/elastic.d.ts +42 -0
  192. package/dist/observability/elastic.d.ts.map +1 -0
  193. package/dist/observability/elastic.js +244 -0
  194. package/dist/observability/elastic.js.map +1 -0
  195. package/dist/observability/file.d.ts +16 -0
  196. package/dist/observability/file.d.ts.map +1 -0
  197. package/dist/observability/file.js +92 -0
  198. package/dist/observability/file.js.map +1 -0
  199. package/dist/observability/index.d.ts +10 -0
  200. package/dist/observability/index.d.ts.map +1 -0
  201. package/dist/observability/index.js +9 -0
  202. package/dist/observability/index.js.map +1 -0
  203. package/dist/observability/loki.d.ts +22 -0
  204. package/dist/observability/loki.d.ts.map +1 -0
  205. package/dist/observability/loki.js +206 -0
  206. package/dist/observability/loki.js.map +1 -0
  207. package/dist/observability/newrelic.d.ts +22 -0
  208. package/dist/observability/newrelic.d.ts.map +1 -0
  209. package/dist/observability/newrelic.js +147 -0
  210. package/dist/observability/newrelic.js.map +1 -0
  211. package/dist/observability/sentry.d.ts +25 -0
  212. package/dist/observability/sentry.d.ts.map +1 -0
  213. package/dist/observability/sentry.js +151 -0
  214. package/dist/observability/sentry.js.map +1 -0
  215. package/dist/observability/splunk.d.ts +22 -0
  216. package/dist/observability/splunk.d.ts.map +1 -0
  217. package/dist/observability/splunk.js +178 -0
  218. package/dist/observability/splunk.js.map +1 -0
  219. package/dist/observability/types.d.ts +54 -0
  220. package/dist/observability/types.d.ts.map +1 -0
  221. package/dist/observability/types.js +2 -0
  222. package/dist/observability/types.js.map +1 -0
  223. package/dist/source-control/github.d.ts +11 -0
  224. package/dist/source-control/github.d.ts.map +1 -0
  225. package/dist/source-control/github.js +162 -0
  226. package/dist/source-control/github.js.map +1 -0
  227. package/dist/source-control/gitlab.d.ts +25 -0
  228. package/dist/source-control/gitlab.d.ts.map +1 -0
  229. package/dist/source-control/gitlab.js +224 -0
  230. package/dist/source-control/gitlab.js.map +1 -0
  231. package/dist/source-control/index.d.ts +6 -0
  232. package/dist/source-control/index.d.ts.map +1 -0
  233. package/dist/source-control/index.js +3 -0
  234. package/dist/source-control/index.js.map +1 -0
  235. package/dist/source-control/types.d.ts +115 -0
  236. package/dist/source-control/types.d.ts.map +1 -0
  237. package/dist/source-control/types.js +2 -0
  238. package/dist/source-control/types.js.map +1 -0
  239. package/dist/storage/csi.d.ts +36 -0
  240. package/dist/storage/csi.d.ts.map +1 -0
  241. package/dist/storage/csi.js +39 -0
  242. package/dist/storage/csi.js.map +1 -0
  243. package/dist/storage/fs.d.ts +5 -0
  244. package/dist/storage/fs.d.ts.map +1 -0
  245. package/dist/storage/fs.js +11 -0
  246. package/dist/storage/fs.js.map +1 -0
  247. package/dist/storage/index.d.ts +13 -0
  248. package/dist/storage/index.d.ts.map +1 -0
  249. package/dist/storage/index.js +14 -0
  250. package/dist/storage/index.js.map +1 -0
  251. package/dist/storage/memory/fs.d.ts +15 -0
  252. package/dist/storage/memory/fs.d.ts.map +1 -0
  253. package/dist/storage/memory/fs.js +65 -0
  254. package/dist/storage/memory/fs.js.map +1 -0
  255. package/dist/storage/memory/s3.d.ts +17 -0
  256. package/dist/storage/memory/s3.d.ts.map +1 -0
  257. package/dist/storage/memory/s3.js +77 -0
  258. package/dist/storage/memory/s3.js.map +1 -0
  259. package/dist/storage/s3.d.ts +7 -0
  260. package/dist/storage/s3.d.ts.map +1 -0
  261. package/dist/storage/s3.js +12 -0
  262. package/dist/storage/s3.js.map +1 -0
  263. package/dist/storage/session/fs.d.ts +16 -0
  264. package/dist/storage/session/fs.d.ts.map +1 -0
  265. package/dist/storage/session/fs.js +81 -0
  266. package/dist/storage/session/fs.js.map +1 -0
  267. package/dist/storage/session/s3.d.ts +18 -0
  268. package/dist/storage/session/s3.d.ts.map +1 -0
  269. package/dist/storage/session/s3.js +121 -0
  270. package/dist/storage/session/s3.js.map +1 -0
  271. package/dist/storage/types.d.ts +206 -0
  272. package/dist/storage/types.d.ts.map +1 -0
  273. package/dist/storage/types.js +10 -0
  274. package/dist/storage/types.js.map +1 -0
  275. package/dist/storage/workspace/fs.d.ts +18 -0
  276. package/dist/storage/workspace/fs.d.ts.map +1 -0
  277. package/dist/storage/workspace/fs.js +153 -0
  278. package/dist/storage/workspace/fs.js.map +1 -0
  279. package/dist/storage/workspace/s3.d.ts +20 -0
  280. package/dist/storage/workspace/s3.d.ts.map +1 -0
  281. package/dist/storage/workspace/s3.js +180 -0
  282. package/dist/storage/workspace/s3.js.map +1 -0
  283. package/package.json +137 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../src/observability/elastic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ import type { Logger } from "../logger.js";
3
+ import type { ObservabilityProvider } from "./types.js";
4
+ export declare const fileConfigSchema: z.ZodObject<{
5
+ path: z.ZodString;
6
+ logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ path: string;
9
+ logger?: Logger | undefined;
10
+ }, {
11
+ path: string;
12
+ logger?: Logger | undefined;
13
+ }>;
14
+ export type FileConfig = z.infer<typeof fileConfigSchema>;
15
+ export declare function file(config: FileConfig): ObservabilityProvider;
16
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/observability/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,YAAY,CAAC;AAEpG,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAG9D"}
@@ -0,0 +1,92 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { z } from "zod";
3
+ import { consoleLogger } from "../logger.js";
4
+ export const fileConfigSchema = z.object({
5
+ path: z.string().min(1, "Log file path is required"),
6
+ logger: z.custom().optional(),
7
+ });
8
+ export function file(config) {
9
+ const parsed = fileConfigSchema.parse(config);
10
+ return new FileProvider(parsed);
11
+ }
12
+ class FileProvider {
13
+ path;
14
+ log;
15
+ entries = null;
16
+ constructor(config) {
17
+ this.path = config.path;
18
+ this.log = config.logger ?? consoleLogger;
19
+ }
20
+ load() {
21
+ if (this.entries)
22
+ return this.entries;
23
+ this.log.info(`Loading logs from ${this.path}`);
24
+ const raw = readFileSync(this.path, "utf-8");
25
+ const parsed = JSON.parse(raw);
26
+ // Support both array of entries and { logs: [...] } wrapper
27
+ const entries = Array.isArray(parsed) ? parsed : parsed.logs;
28
+ if (!Array.isArray(entries)) {
29
+ throw new Error(`Invalid log file format: expected array or { logs: [...] }`);
30
+ }
31
+ this.entries = entries.map((e) => {
32
+ const entry = e;
33
+ return {
34
+ timestamp: String(entry.timestamp ?? new Date().toISOString()),
35
+ service: String(entry.service ?? "unknown"),
36
+ level: String(entry.level ?? entry.status ?? "error"),
37
+ message: String(entry.message ?? ""),
38
+ attributes: entry.attributes ?? {},
39
+ };
40
+ });
41
+ this.log.info(`Loaded ${this.entries.length} log entries`);
42
+ return this.entries;
43
+ }
44
+ filter(entries, opts) {
45
+ return entries.filter((e) => {
46
+ if (opts.serviceFilter && opts.serviceFilter !== "*" && e.service !== opts.serviceFilter)
47
+ return false;
48
+ if (opts.severity && e.level !== opts.severity)
49
+ return false;
50
+ return true;
51
+ });
52
+ }
53
+ async verifyAccess() {
54
+ this.load();
55
+ this.log.info("File provider access verified");
56
+ }
57
+ async queryLogs(opts) {
58
+ const all = this.load();
59
+ const filtered = this.filter(all, { serviceFilter: opts.serviceFilter, severity: opts.severity });
60
+ this.log.info(`Found ${filtered.length} ${opts.severity} logs for ${opts.serviceFilter}`);
61
+ return filtered;
62
+ }
63
+ async aggregate(opts) {
64
+ const all = this.load();
65
+ const filtered = this.filter(all, { serviceFilter: opts.serviceFilter });
66
+ const counts = new Map();
67
+ for (const entry of filtered) {
68
+ counts.set(entry.service, (counts.get(entry.service) ?? 0) + 1);
69
+ }
70
+ const results = Array.from(counts.entries())
71
+ .map(([service, count]) => ({ service, count }))
72
+ .sort((a, b) => b.count - a.count);
73
+ this.log.info(`Aggregated ${results.length} service groups from file`);
74
+ return results;
75
+ }
76
+ getAgentEnv() {
77
+ return { SWENY_LOG_FILE: this.path };
78
+ }
79
+ getPromptInstructions() {
80
+ return `### Local Log File
81
+ Logs are loaded from a local JSON file at: ${this.path}
82
+
83
+ The file contains pre-collected log entries. You do NOT need to make any API calls.
84
+ All log data has already been provided to the engine via the file provider.
85
+
86
+ To inspect the raw file:
87
+ \`\`\`bash
88
+ cat ${this.path} | jq '.[:5]'
89
+ \`\`\``;
90
+ }
91
+ }
92
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/observability/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type { ObservabilityProvider, LogEntry, AggregateResult, LogQueryOptions } from "./types.js";
2
+ export { datadog, datadogConfigSchema, type DatadogConfig } from "./datadog.js";
3
+ export { sentry, sentryConfigSchema, type SentryConfig } from "./sentry.js";
4
+ export { cloudwatch, cloudwatchConfigSchema, type CloudWatchConfig } from "./cloudwatch.js";
5
+ export { splunk, splunkConfigSchema, type SplunkConfig } from "./splunk.js";
6
+ export { elastic, elasticConfigSchema, type ElasticConfig } from "./elastic.js";
7
+ export { newrelic, newrelicConfigSchema, type NewRelicConfig } from "./newrelic.js";
8
+ export { loki, lokiConfigSchema, type LokiConfig } from "./loki.js";
9
+ export { file, fileConfigSchema, type FileConfig } from "./file.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpG,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { datadog, datadogConfigSchema } from "./datadog.js";
2
+ export { sentry, sentryConfigSchema } from "./sentry.js";
3
+ export { cloudwatch, cloudwatchConfigSchema } from "./cloudwatch.js";
4
+ export { splunk, splunkConfigSchema } from "./splunk.js";
5
+ export { elastic, elasticConfigSchema } from "./elastic.js";
6
+ export { newrelic, newrelicConfigSchema } from "./newrelic.js";
7
+ export { loki, lokiConfigSchema } from "./loki.js";
8
+ export { file, fileConfigSchema } from "./file.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAyB,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAuB,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import type { Logger } from "../logger.js";
3
+ import type { ObservabilityProvider } from "./types.js";
4
+ export declare const lokiConfigSchema: z.ZodObject<{
5
+ baseUrl: z.ZodString;
6
+ apiKey: z.ZodOptional<z.ZodString>;
7
+ orgId: z.ZodOptional<z.ZodString>;
8
+ logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ baseUrl: string;
11
+ apiKey?: string | undefined;
12
+ logger?: Logger | undefined;
13
+ orgId?: string | undefined;
14
+ }, {
15
+ baseUrl: string;
16
+ apiKey?: string | undefined;
17
+ logger?: Logger | undefined;
18
+ orgId?: string | undefined;
19
+ }>;
20
+ export type LokiConfig = z.infer<typeof lokiConfigSchema>;
21
+ export declare function loki(config: LokiConfig): ObservabilityProvider;
22
+ //# sourceMappingURL=loki.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loki.d.ts","sourceRoot":"","sources":["../../src/observability/loki.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,YAAY,CAAC;AAEpG,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;EAK3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAM1D,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,CAG9D"}
@@ -0,0 +1,206 @@
1
+ import { z } from "zod";
2
+ import { consoleLogger } from "../logger.js";
3
+ import { ProviderApiError } from "../errors.js";
4
+ export const lokiConfigSchema = z.object({
5
+ baseUrl: z.string().min(1, "Loki base URL is required"),
6
+ apiKey: z.string().optional(),
7
+ orgId: z.string().optional(),
8
+ logger: z.custom().optional(),
9
+ });
10
+ function escapeRegex(value) {
11
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
12
+ }
13
+ export function loki(config) {
14
+ const parsed = lokiConfigSchema.parse(config);
15
+ return new LokiProvider(parsed);
16
+ }
17
+ class LokiProvider {
18
+ baseUrl;
19
+ apiKey;
20
+ orgId;
21
+ log;
22
+ constructor(config) {
23
+ this.baseUrl = config.baseUrl.replace(/\/+$/, "");
24
+ this.apiKey = config.apiKey;
25
+ this.orgId = config.orgId;
26
+ this.log = config.logger ?? consoleLogger;
27
+ }
28
+ buildHeaders() {
29
+ const headers = {};
30
+ if (this.apiKey) {
31
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
32
+ }
33
+ if (this.orgId) {
34
+ headers["X-Scope-OrgID"] = this.orgId;
35
+ }
36
+ return headers;
37
+ }
38
+ async request(path, params) {
39
+ const url = new URL(path, this.baseUrl);
40
+ if (params) {
41
+ for (const [k, v] of Object.entries(params)) {
42
+ url.searchParams.set(k, v);
43
+ }
44
+ }
45
+ const response = await fetch(url.toString(), {
46
+ headers: this.buildHeaders(),
47
+ });
48
+ if (!response.ok) {
49
+ const body = await response.text().catch(() => "");
50
+ throw new ProviderApiError("Loki", response.status, response.statusText, body);
51
+ }
52
+ return (await response.json());
53
+ }
54
+ /**
55
+ * Parse a human-readable time range string (e.g. "1h", "24h", "7d") into
56
+ * a { start, end } pair of Unix timestamps in nanoseconds (strings), which
57
+ * is the format the Loki HTTP API expects.
58
+ */
59
+ parseTimeRange(timeRange) {
60
+ const now = Date.now();
61
+ const match = timeRange.match(/^(\d+)([smhdw])$/);
62
+ if (!match) {
63
+ // Fallback: treat as 1h
64
+ const start = (now - 3600 * 1000) * 1_000_000;
65
+ return { start: start.toString(), end: (now * 1_000_000).toString() };
66
+ }
67
+ const value = parseInt(match[1], 10);
68
+ const unit = match[2];
69
+ const multipliers = {
70
+ s: 1000,
71
+ m: 60 * 1000,
72
+ h: 3600 * 1000,
73
+ d: 86400 * 1000,
74
+ w: 7 * 86400 * 1000,
75
+ };
76
+ const durationMs = value * (multipliers[unit] || 3600 * 1000);
77
+ const startNs = (now - durationMs) * 1_000_000;
78
+ const endNs = now * 1_000_000;
79
+ return { start: startNs.toString(), end: endNs.toString() };
80
+ }
81
+ async verifyAccess() {
82
+ this.log.info(`Verifying Loki access (${this.baseUrl})`);
83
+ // Try /ready first; fall back to /loki/api/v1/labels
84
+ try {
85
+ const url = new URL("/ready", this.baseUrl);
86
+ const response = await fetch(url.toString(), {
87
+ headers: this.buildHeaders(),
88
+ });
89
+ if (!response.ok) {
90
+ const body = await response.text().catch(() => "");
91
+ throw new ProviderApiError("Loki", response.status, response.statusText, body);
92
+ }
93
+ }
94
+ catch {
95
+ // Fall back to labels endpoint
96
+ await this.request("/loki/api/v1/labels");
97
+ }
98
+ this.log.info("Loki API access verified");
99
+ }
100
+ async queryLogs(opts) {
101
+ const { start, end } = this.parseTimeRange(opts.timeRange);
102
+ const serviceFilter = opts.serviceFilter && opts.serviceFilter !== "*" ? escapeRegex(opts.serviceFilter) : ".*";
103
+ const query = `{job=~".*${serviceFilter}.*"} |= \`${opts.severity}\``;
104
+ this.log.info(`Querying Loki logs: ${query} (range: ${opts.timeRange})`);
105
+ const result = await this.request("/loki/api/v1/query_range", {
106
+ query,
107
+ start,
108
+ end,
109
+ limit: "100",
110
+ });
111
+ const logs = [];
112
+ for (const stream of result.data?.result || []) {
113
+ const job = stream.stream?.job || stream.stream?.service || "unknown";
114
+ const level = stream.stream?.level || opts.severity;
115
+ for (const [tsNano, line] of stream.values) {
116
+ // Convert nanosecond timestamp to ISO string
117
+ const tsMs = Math.floor(parseInt(tsNano, 10) / 1_000_000);
118
+ logs.push({
119
+ timestamp: new Date(tsMs).toISOString(),
120
+ service: job,
121
+ level,
122
+ message: line,
123
+ attributes: { ...stream.stream },
124
+ });
125
+ }
126
+ }
127
+ this.log.info(`Found ${logs.length} ${opts.severity} logs for ${opts.serviceFilter} in last ${opts.timeRange}`);
128
+ return logs;
129
+ }
130
+ async aggregate(opts) {
131
+ const serviceFilter = opts.serviceFilter && opts.serviceFilter !== "*" ? escapeRegex(opts.serviceFilter) : ".*";
132
+ const query = `sum by (job) (count_over_time({job=~".*${serviceFilter}.*"} |= "error" [${opts.timeRange}]))`;
133
+ this.log.info(`Aggregating Loki errors: ${query}`);
134
+ const result = await this.request("/loki/api/v1/query", {
135
+ query,
136
+ });
137
+ const groups = (result.data?.result || []).map((entry) => ({
138
+ service: entry.metric?.job || "unknown",
139
+ count: parseInt(entry.value?.[1] || "0", 10),
140
+ }));
141
+ this.log.info(`Aggregated ${groups.length} service groups`);
142
+ return groups;
143
+ }
144
+ getAgentEnv() {
145
+ const env = {
146
+ LOKI_URL: this.baseUrl,
147
+ };
148
+ if (this.apiKey) {
149
+ env.LOKI_API_KEY = this.apiKey;
150
+ }
151
+ if (this.orgId) {
152
+ env.LOKI_ORG_ID = this.orgId;
153
+ }
154
+ return env;
155
+ }
156
+ getPromptInstructions() {
157
+ const authHeader = this.apiKey ? ` -H "Authorization: Bearer \${LOKI_API_KEY}" \\` : "";
158
+ const orgHeader = this.orgId ? ` -H "X-Scope-OrgID: \${LOKI_ORG_ID}" \\` : "";
159
+ const extraHeaders = [authHeader, orgHeader].filter(Boolean).join("\n");
160
+ const curlHeaders = extraHeaders ? `\n${extraHeaders}` : "";
161
+ return `### Grafana Loki API
162
+ - \`LOKI_URL\` - Loki base URL (${this.baseUrl})${this.apiKey ? `\n- \`LOKI_API_KEY\` - Bearer token for authentication` : ""}${this.orgId ? `\n- \`LOKI_ORG_ID\` - Tenant/org ID for multi-tenant Loki (${this.orgId})` : ""}
163
+
164
+ **DO NOT make up data** - only use real data from APIs. If no data, report that honestly.
165
+
166
+ Investigate logs from Loki across **BOTH production AND staging environments** to find bugs and issues.
167
+ You have DIRECT ACCESS to Loki's HTTP API via curl commands.
168
+
169
+ **Key Insight**: Catching issues in staging BEFORE they hit production is extremely valuable!
170
+ - Issues in staging only \u2192 Fix before users are affected
171
+ - Issues in both environments \u2192 Critical, affects users now
172
+ - Issues in production only \u2192 May be load/scale related
173
+
174
+ Use LogQL query language. Key patterns:
175
+ - Stream selectors: \`{job="myservice"}\`, \`{job=~".*pattern.*"}\`
176
+ - Line filters: \`|= "error"\`, \`|~ "(?i)error"\`, \`!= "debug"\`
177
+ - Label filters: \`| level="error"\`
178
+ - Metric queries: \`count_over_time({job="myservice"}[1h])\`
179
+
180
+ #### Example: Query recent error logs
181
+ \`\`\`bash
182
+ curl -s "\${LOKI_URL}/loki/api/v1/query_range" \\${curlHeaders}
183
+ --data-urlencode 'query={job=~".*"} |= "error"' \\
184
+ --data-urlencode "start=$(date -d '1 hour ago' +%s)000000000" \\
185
+ --data-urlencode "end=$(date +%s)000000000" \\
186
+ --data-urlencode "limit=100"
187
+ \`\`\`
188
+
189
+ #### Example: Count errors by job over a time range
190
+ \`\`\`bash
191
+ curl -s "\${LOKI_URL}/loki/api/v1/query" \\${curlHeaders}
192
+ --data-urlencode 'query=sum by (job) (count_over_time({job=~".*"} |= "error" [1h]))'
193
+ \`\`\`
194
+
195
+ #### Example: Get available labels
196
+ \`\`\`bash
197
+ curl -s "\${LOKI_URL}/loki/api/v1/labels" \\${curlHeaders}
198
+ \`\`\`
199
+
200
+ #### Example: Get label values for a specific label
201
+ \`\`\`bash
202
+ curl -s "\${LOKI_URL}/loki/api/v1/label/job/values" \\${curlHeaders}
203
+ \`\`\``;
204
+ }
205
+ }
206
+ //# sourceMappingURL=loki.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loki.js","sourceRoot":"","sources":["../../src/observability/loki.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ import type { Logger } from "../logger.js";
3
+ import type { ObservabilityProvider } from "./types.js";
4
+ export declare const newrelicConfigSchema: z.ZodObject<{
5
+ apiKey: z.ZodString;
6
+ accountId: z.ZodString;
7
+ region: z.ZodDefault<z.ZodEnum<["us", "eu"]>>;
8
+ logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ apiKey: string;
11
+ region: "us" | "eu";
12
+ accountId: string;
13
+ logger?: Logger | undefined;
14
+ }, {
15
+ apiKey: string;
16
+ accountId: string;
17
+ logger?: Logger | undefined;
18
+ region?: "us" | "eu" | undefined;
19
+ }>;
20
+ export type NewRelicConfig = z.infer<typeof newrelicConfigSchema>;
21
+ export declare function newrelic(config: NewRelicConfig): ObservabilityProvider;
22
+ //# sourceMappingURL=newrelic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newrelic.d.ts","sourceRoot":"","sources":["../../src/observability/newrelic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,YAAY,CAAC;AAEpG,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB,CAGtE"}
@@ -0,0 +1,147 @@
1
+ import { z } from "zod";
2
+ import { consoleLogger } from "../logger.js";
3
+ import { ProviderApiError } from "../errors.js";
4
+ export const newrelicConfigSchema = z.object({
5
+ apiKey: z.string().min(1, "New Relic User API key is required"),
6
+ accountId: z.string().min(1, "New Relic account ID is required"),
7
+ region: z.enum(["us", "eu"]).default("us"),
8
+ logger: z.custom().optional(),
9
+ });
10
+ function escapeNrql(value) {
11
+ return value.replace(/'/g, "''").replace(/\\/g, "\\\\");
12
+ }
13
+ export function newrelic(config) {
14
+ const parsed = newrelicConfigSchema.parse(config);
15
+ return new NewRelicProvider(parsed);
16
+ }
17
+ class NewRelicProvider {
18
+ apiKey;
19
+ accountId;
20
+ region;
21
+ log;
22
+ constructor(config) {
23
+ this.apiKey = config.apiKey;
24
+ this.accountId = config.accountId;
25
+ this.region = config.region;
26
+ this.log = config.logger ?? consoleLogger;
27
+ }
28
+ get endpoint() {
29
+ return this.region === "eu" ? "https://api.eu.newrelic.com/graphql" : "https://api.newrelic.com/graphql";
30
+ }
31
+ async nerdgraph(query) {
32
+ const response = await fetch(this.endpoint, {
33
+ method: "POST",
34
+ headers: {
35
+ "Content-Type": "application/json",
36
+ "API-Key": this.apiKey,
37
+ },
38
+ body: JSON.stringify({ query }),
39
+ });
40
+ if (!response.ok) {
41
+ const body = await response.text().catch(() => "");
42
+ throw new ProviderApiError("NewRelic", response.status, response.statusText, body);
43
+ }
44
+ const json = (await response.json());
45
+ if (json.errors && json.errors.length > 0) {
46
+ throw new ProviderApiError("NewRelic", response.status, response.statusText, JSON.stringify(json.errors));
47
+ }
48
+ return json.data;
49
+ }
50
+ nrql(nrqlQuery) {
51
+ const graphql = `{ actor { account(id: ${this.accountId}) { nrql(query: "${nrqlQuery}") { results } } } }`;
52
+ return this.nerdgraph(graphql);
53
+ }
54
+ async verifyAccess() {
55
+ this.log.info(`Verifying New Relic access (account: ${this.accountId}, region: ${this.region})`);
56
+ const query = `{ actor { account(id: ${this.accountId}) { name } } }`;
57
+ const result = await this.nerdgraph(query);
58
+ const name = result.actor?.account?.name;
59
+ if (!name) {
60
+ throw new Error("New Relic access verification failed: could not retrieve account name");
61
+ }
62
+ this.log.info(`New Relic API access verified (account: ${name})`);
63
+ }
64
+ async queryLogs(opts) {
65
+ const nrqlQuery = `SELECT timestamp, service, level, message FROM Log WHERE level = '${escapeNrql(opts.severity)}' AND service LIKE '%${escapeNrql(opts.serviceFilter)}%' SINCE ${opts.timeRange} ago LIMIT 100`;
66
+ this.log.info(`Querying New Relic logs: ${nrqlQuery}`);
67
+ const result = await this.nrql(nrqlQuery);
68
+ const rawResults = result.actor?.account?.nrql?.results || [];
69
+ const logs = rawResults.map((row) => {
70
+ const { timestamp, service, level, message, ...rest } = row;
71
+ return {
72
+ timestamp: typeof timestamp === "number" ? new Date(timestamp).toISOString() : String(timestamp || ""),
73
+ service: service || "unknown",
74
+ level: level || opts.severity,
75
+ message: message || "",
76
+ attributes: rest,
77
+ };
78
+ });
79
+ this.log.info(`Found ${logs.length} ${opts.severity} logs for ${opts.serviceFilter} in last ${opts.timeRange}`);
80
+ return logs;
81
+ }
82
+ async aggregate(opts) {
83
+ const nrqlQuery = `SELECT count(*) FROM Log WHERE level = 'error' AND service LIKE '%${escapeNrql(opts.serviceFilter)}%' SINCE ${opts.timeRange} ago FACET service LIMIT 20`;
84
+ this.log.info(`Aggregating New Relic errors: ${nrqlQuery}`);
85
+ const result = await this.nrql(nrqlQuery);
86
+ const rawResults = result.actor?.account?.nrql?.results || [];
87
+ const groups = rawResults.map((row) => ({
88
+ service: row.service || "unknown",
89
+ count: row.count || 0,
90
+ }));
91
+ this.log.info(`Aggregated ${groups.length} service groups`);
92
+ return groups;
93
+ }
94
+ getAgentEnv() {
95
+ return {
96
+ NR_API_KEY: this.apiKey,
97
+ NR_ACCOUNT_ID: this.accountId,
98
+ NR_REGION: this.region,
99
+ };
100
+ }
101
+ getPromptInstructions() {
102
+ return `### New Relic NerdGraph API (NRQL)
103
+ - \`NR_API_KEY\` - User API key (use in API-Key header)
104
+ - \`NR_ACCOUNT_ID\` - New Relic account ID (${this.accountId})
105
+ - \`NR_REGION\` - Region: ${this.region} (endpoint: ${this.endpoint})
106
+
107
+ **DO NOT make up data** - only use real data from APIs. If no data, report that honestly.
108
+
109
+ Investigate logs from New Relic across **BOTH production AND staging environments** to find bugs and issues.
110
+ You have DIRECT ACCESS to New Relic's NerdGraph (GraphQL) API via curl commands.
111
+
112
+ **Key Insight**: Catching issues in staging BEFORE they hit production is extremely valuable!
113
+ - Issues in staging only → Fix before users are affected
114
+ - Issues in both environments → Critical, affects users now
115
+ - Issues in production only → May be load/scale related
116
+
117
+ Use these environment variables in your curl commands:
118
+ - \`NR_API_KEY\` - User API key (use in API-Key header)
119
+ - \`NR_ACCOUNT_ID\` - New Relic account ID (${this.accountId})
120
+ - \`NR_REGION\` - Region: ${this.region}
121
+
122
+ #### Example: Get error counts by service
123
+ \`\`\`bash
124
+ curl -s -X POST "${this.endpoint}" \\
125
+ -H "Content-Type: application/json" \\
126
+ -H "API-Key: \${NR_API_KEY}" \\
127
+ -d '{"query":"{ actor { account(id: '\${NR_ACCOUNT_ID}') { nrql(query: \\"SELECT count(*) FROM Log WHERE level = '"'"'error'"'"' SINCE 1 hour ago FACET service LIMIT 20\\") { results } } } }"}'
128
+ \`\`\`
129
+
130
+ #### Example: Get recent error logs
131
+ \`\`\`bash
132
+ curl -s -X POST "${this.endpoint}" \\
133
+ -H "Content-Type: application/json" \\
134
+ -H "API-Key: \${NR_API_KEY}" \\
135
+ -d '{"query":"{ actor { account(id: '\${NR_ACCOUNT_ID}') { nrql(query: \\"SELECT timestamp, service, level, message FROM Log WHERE level = '"'"'error'"'"' SINCE 1 hour ago LIMIT 100\\") { results } } } }"}'
136
+ \`\`\`
137
+
138
+ #### Example: Verify access (get account name)
139
+ \`\`\`bash
140
+ curl -s -X POST "${this.endpoint}" \\
141
+ -H "Content-Type: application/json" \\
142
+ -H "API-Key: \${NR_API_KEY}" \\
143
+ -d '{"query":"{ actor { account(id: '\${NR_ACCOUNT_ID}') { name } } }"}'
144
+ \`\`\``;
145
+ }
146
+ }
147
+ //# sourceMappingURL=newrelic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newrelic.js","sourceRoot":"","sources":["../../src/observability/newrelic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ import type { Logger } from "../logger.js";
3
+ import type { ObservabilityProvider } from "./types.js";
4
+ export declare const sentryConfigSchema: z.ZodObject<{
5
+ authToken: z.ZodString;
6
+ organization: z.ZodString;
7
+ project: z.ZodString;
8
+ baseUrl: z.ZodDefault<z.ZodString>;
9
+ logger: z.ZodOptional<z.ZodType<Logger, z.ZodTypeDef, Logger>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ authToken: string;
12
+ organization: string;
13
+ project: string;
14
+ baseUrl: string;
15
+ logger?: Logger | undefined;
16
+ }, {
17
+ authToken: string;
18
+ organization: string;
19
+ project: string;
20
+ logger?: Logger | undefined;
21
+ baseUrl?: string | undefined;
22
+ }>;
23
+ export type SentryConfig = z.infer<typeof sentryConfigSchema>;
24
+ export declare function sentry(config: SentryConfig): ObservabilityProvider;
25
+ //# sourceMappingURL=sentry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../src/observability/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,qBAAqB,EAA8C,MAAM,YAAY,CAAC;AAEpG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,wBAAgB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,qBAAqB,CAGlE"}