@guckdev/core 0.1.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 (62) hide show
  1. package/dist/config.d.ts +19 -0
  2. package/dist/config.d.ts.map +1 -0
  3. package/dist/config.js +178 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/index.d.ts +7 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +7 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/redact.d.ts +3 -0
  10. package/dist/redact.d.ts.map +1 -0
  11. package/dist/redact.js +68 -0
  12. package/dist/redact.js.map +1 -0
  13. package/dist/schema.d.ts +113 -0
  14. package/dist/schema.d.ts.map +1 -0
  15. package/dist/schema.js +2 -0
  16. package/dist/schema.js.map +1 -0
  17. package/dist/store/backends/cloudwatch.d.ts +4 -0
  18. package/dist/store/backends/cloudwatch.d.ts.map +1 -0
  19. package/dist/store/backends/cloudwatch.js +302 -0
  20. package/dist/store/backends/cloudwatch.js.map +1 -0
  21. package/dist/store/backends/k8s.d.ts +4 -0
  22. package/dist/store/backends/k8s.d.ts.map +1 -0
  23. package/dist/store/backends/k8s.js +307 -0
  24. package/dist/store/backends/k8s.js.map +1 -0
  25. package/dist/store/backends/local.d.ts +10 -0
  26. package/dist/store/backends/local.d.ts.map +1 -0
  27. package/dist/store/backends/local.js +31 -0
  28. package/dist/store/backends/local.js.map +1 -0
  29. package/dist/store/backends/types.d.ts +25 -0
  30. package/dist/store/backends/types.d.ts.map +1 -0
  31. package/dist/store/backends/types.js +2 -0
  32. package/dist/store/backends/types.js.map +1 -0
  33. package/dist/store/file-store.d.ts +21 -0
  34. package/dist/store/file-store.d.ts.map +1 -0
  35. package/dist/store/file-store.js +169 -0
  36. package/dist/store/file-store.js.map +1 -0
  37. package/dist/store/filters.d.ts +4 -0
  38. package/dist/store/filters.d.ts.map +1 -0
  39. package/dist/store/filters.js +73 -0
  40. package/dist/store/filters.js.map +1 -0
  41. package/dist/store/read-store.d.ts +35 -0
  42. package/dist/store/read-store.d.ts.map +1 -0
  43. package/dist/store/read-store.js +256 -0
  44. package/dist/store/read-store.js.map +1 -0
  45. package/dist/store/time.d.ts +4 -0
  46. package/dist/store/time.d.ts.map +1 -0
  47. package/dist/store/time.js +47 -0
  48. package/dist/store/time.js.map +1 -0
  49. package/package.json +38 -0
  50. package/src/config.ts +210 -0
  51. package/src/index.ts +6 -0
  52. package/src/redact.ts +83 -0
  53. package/src/schema.ts +130 -0
  54. package/src/store/backends/cloudwatch.ts +373 -0
  55. package/src/store/backends/k8s.ts +400 -0
  56. package/src/store/backends/local.ts +47 -0
  57. package/src/store/backends/types.ts +18 -0
  58. package/src/store/file-store.ts +217 -0
  59. package/src/store/filters.ts +83 -0
  60. package/src/store/read-store.ts +340 -0
  61. package/src/store/time.ts +54 -0
  62. package/tsconfig.json +19 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-store.js","sourceRoot":"","sources":["../../src/store/read-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const parseTimeInput: (value?: string) => number | undefined;
2
+ export declare const normalizeTimestamp: (value: unknown) => number | undefined;
3
+ export declare const formatDateSegment: (date: Date) => string;
4
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/store/time.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,WAAY,MAAM,KAAG,MAAM,GAAG,SAiCxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,MAAM,GAAG,SAS5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,SAAU,IAAI,KAAG,MAK9C,CAAC"}
@@ -0,0 +1,47 @@
1
+ const DURATION_RE = /^(\d+)(ms|s|m|h|d)$/i;
2
+ export const parseTimeInput = (value) => {
3
+ if (!value) {
4
+ return undefined;
5
+ }
6
+ const trimmed = value.trim();
7
+ if (!trimmed) {
8
+ return undefined;
9
+ }
10
+ const durationMatch = trimmed.match(DURATION_RE);
11
+ if (durationMatch) {
12
+ const amount = Number(durationMatch[1]);
13
+ const unit = durationMatch[2]?.toLowerCase() ?? "";
14
+ const unitMs = unit === "ms"
15
+ ? 1
16
+ : unit === "s"
17
+ ? 1000
18
+ : unit === "m"
19
+ ? 60_000
20
+ : unit === "h"
21
+ ? 3_600_000
22
+ : 86_400_000;
23
+ return Date.now() - amount * unitMs;
24
+ }
25
+ const parsed = Date.parse(trimmed);
26
+ if (!Number.isNaN(parsed)) {
27
+ return parsed;
28
+ }
29
+ return undefined;
30
+ };
31
+ export const normalizeTimestamp = (value) => {
32
+ if (typeof value === "number") {
33
+ return Number.isFinite(value) ? value : undefined;
34
+ }
35
+ if (typeof value === "string") {
36
+ const parsed = Date.parse(value);
37
+ return Number.isNaN(parsed) ? undefined : parsed;
38
+ }
39
+ return undefined;
40
+ };
41
+ export const formatDateSegment = (date) => {
42
+ const year = date.getUTCFullYear();
43
+ const month = String(date.getUTCMonth() + 1).padStart(2, "0");
44
+ const day = String(date.getUTCDate()).padStart(2, "0");
45
+ return `${year}-${month}-${day}`;
46
+ };
47
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/store/time.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAsB,EAAE;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACnD,MAAM,MAAM,GACV,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,KAAK,GAAG;gBACZ,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,KAAK,GAAG;oBACZ,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI,KAAK,GAAG;wBACZ,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,UAAU,CAAC;QACvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAsB,EAAE;IACvE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAAU,EAAE;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACnC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@guckdev/core",
3
+ "version": "0.1.0",
4
+ "description": "Core utilities and types for Guck telemetry",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "src",
16
+ "tsconfig.json"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "scripts": {
22
+ "build": "tsc -p tsconfig.json",
23
+ "build:watch": "tsc -p tsconfig.json --watch",
24
+ "prepare": "pnpm run build",
25
+ "test": "pnpm run build"
26
+ },
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "optionalDependencies": {
31
+ "@aws-sdk/client-cloudwatch-logs": "3.985.0",
32
+ "@aws-sdk/credential-providers": "3.985.0",
33
+ "@kubernetes/client-node": "1.4.0"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "25.2.2"
37
+ }
38
+ }
package/src/config.ts ADDED
@@ -0,0 +1,210 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { GuckConfig } from "./schema.js";
4
+
5
+ const DEFAULT_CONFIG: GuckConfig = {
6
+ version: 1,
7
+ enabled: true,
8
+ store_dir: "logs/guck",
9
+ default_service: "guck",
10
+ sdk: {
11
+ enabled: true,
12
+ capture_stdout: true,
13
+ capture_stderr: true,
14
+ },
15
+ read: {
16
+ backend: "local",
17
+ },
18
+ redaction: {
19
+ enabled: true,
20
+ keys: ["authorization", "api_key", "token", "secret", "password"],
21
+ patterns: ["sk-[A-Za-z0-9]{20,}", "Bearer\\s+[A-Za-z0-9._-]+"],
22
+ },
23
+ mcp: {
24
+ max_results: 200,
25
+ default_lookback_ms: 300000,
26
+ },
27
+ };
28
+
29
+ export type LoadedConfig = {
30
+ rootDir: string;
31
+ configPath?: string;
32
+ localConfigPath?: string;
33
+ config: GuckConfig;
34
+ };
35
+
36
+ const readJsonFile = (filePath: string): unknown | null => {
37
+ try {
38
+ const raw = fs.readFileSync(filePath, "utf8");
39
+ return JSON.parse(raw);
40
+ } catch {
41
+ return null;
42
+ }
43
+ };
44
+
45
+ const isDirectory = (filePath: string): boolean => {
46
+ try {
47
+ return fs.statSync(filePath).isDirectory();
48
+ } catch {
49
+ return false;
50
+ }
51
+ };
52
+
53
+ const isDirOrFile = (filePath: string): boolean => {
54
+ try {
55
+ fs.accessSync(filePath);
56
+ return true;
57
+ } catch {
58
+ return false;
59
+ }
60
+ };
61
+
62
+ export const findRepoRoot = (startDir: string): string => {
63
+ let current = path.resolve(startDir);
64
+ while (true) {
65
+ if (isDirOrFile(path.join(current, ".git"))) {
66
+ return current;
67
+ }
68
+ const parent = path.dirname(current);
69
+ if (parent === current) {
70
+ return startDir;
71
+ }
72
+ current = parent;
73
+ }
74
+ };
75
+
76
+ const mergeSdkConfig = (
77
+ base: GuckConfig["sdk"],
78
+ override?: Partial<GuckConfig["sdk"]>,
79
+ ): GuckConfig["sdk"] => {
80
+ return {
81
+ ...base,
82
+ ...(override ?? {}),
83
+ };
84
+ };
85
+
86
+ const mergeConfig = (base: GuckConfig, override: Partial<GuckConfig>): GuckConfig => {
87
+ return {
88
+ ...base,
89
+ ...override,
90
+ sdk: mergeSdkConfig(base.sdk, override.sdk),
91
+ read: {
92
+ ...(base.read ?? { backend: "local" }),
93
+ ...(override.read ?? {}),
94
+ backends: override.read?.backends ?? base.read?.backends,
95
+ },
96
+ redaction: {
97
+ ...base.redaction,
98
+ ...(override.redaction ?? {}),
99
+ },
100
+ mcp: {
101
+ ...base.mcp,
102
+ ...(override.mcp ?? {}),
103
+ },
104
+ };
105
+ };
106
+
107
+ const parseBool = (value: string | undefined): boolean | undefined => {
108
+ if (value === undefined) {
109
+ return undefined;
110
+ }
111
+ const normalized = value.trim().toLowerCase();
112
+ if (normalized === "true") {
113
+ return true;
114
+ }
115
+ if (normalized === "false") {
116
+ return false;
117
+ }
118
+ return undefined;
119
+ };
120
+
121
+ type LoadConfigOptions = {
122
+ cwd?: string;
123
+ configPath?: string;
124
+ };
125
+
126
+ export const loadConfig = (options: LoadConfigOptions = {}): LoadedConfig => {
127
+ const cwd =
128
+ options.cwd ??
129
+ process.env.GUCK_CWD ??
130
+ process.env.INIT_CWD ??
131
+ process.cwd();
132
+ const explicitConfig =
133
+ options.configPath ?? process.env.GUCK_CONFIG ?? process.env.GUCK_CONFIG_PATH;
134
+ let rootDir = findRepoRoot(cwd);
135
+ let configPath = path.join(rootDir, ".guck.json");
136
+
137
+ if (explicitConfig) {
138
+ const resolvedConfig = path.isAbsolute(explicitConfig)
139
+ ? explicitConfig
140
+ : path.resolve(cwd, explicitConfig);
141
+ if (isDirectory(resolvedConfig)) {
142
+ rootDir = resolvedConfig;
143
+ configPath = path.join(rootDir, ".guck.json");
144
+ } else {
145
+ rootDir = path.dirname(resolvedConfig);
146
+ configPath = resolvedConfig;
147
+ }
148
+ }
149
+ const configExists = isDirOrFile(configPath);
150
+ const configJson = configExists ? readJsonFile(configPath) : null;
151
+
152
+ let config = DEFAULT_CONFIG;
153
+
154
+ if (configJson && typeof configJson === "object") {
155
+ config = mergeConfig(config, configJson as Partial<GuckConfig>);
156
+ }
157
+
158
+ const envEnabled = parseBool(process.env.GUCK_ENABLED);
159
+ if (envEnabled !== undefined) {
160
+ config = { ...config, enabled: envEnabled };
161
+ }
162
+
163
+ if (process.env.GUCK_DIR) {
164
+ config = { ...config, store_dir: process.env.GUCK_DIR };
165
+ }
166
+
167
+ if (process.env.GUCK_SERVICE) {
168
+ config = { ...config, default_service: process.env.GUCK_SERVICE };
169
+ }
170
+
171
+ return {
172
+ rootDir,
173
+ configPath: configExists ? configPath : undefined,
174
+ localConfigPath: undefined,
175
+ config,
176
+ };
177
+ };
178
+
179
+ export const resolveStoreDir = (config: GuckConfig, rootDir: string): string => {
180
+ if (path.isAbsolute(config.store_dir)) {
181
+ return config.store_dir;
182
+ }
183
+ return path.join(rootDir, config.store_dir);
184
+ };
185
+
186
+ export const resolveCheckpointPath = (storeDir: string): string => {
187
+ return path.join(storeDir, ".guck-checkpoint");
188
+ };
189
+
190
+ export const readCheckpoint = (storeDir: string): number | undefined => {
191
+ const checkpointPath = resolveCheckpointPath(storeDir);
192
+ if (!isDirOrFile(checkpointPath)) {
193
+ return undefined;
194
+ }
195
+ try {
196
+ const raw = fs.readFileSync(checkpointPath, "utf8").trim();
197
+ if (!raw) {
198
+ return undefined;
199
+ }
200
+ const parsed = Number(raw);
201
+ if (Number.isNaN(parsed)) {
202
+ return undefined;
203
+ }
204
+ return parsed;
205
+ } catch {
206
+ return undefined;
207
+ }
208
+ };
209
+
210
+ export const getDefaultConfig = (): GuckConfig => DEFAULT_CONFIG;
package/src/index.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./config.js";
2
+ export * from "./redact.js";
3
+ export * from "./schema.js";
4
+ export * from "./store/file-store.js";
5
+ export * from "./store/read-store.js";
6
+ export * from "./store/time.js";
package/src/redact.ts ADDED
@@ -0,0 +1,83 @@
1
+ import { GuckConfig, GuckEvent } from "./schema.js";
2
+
3
+ const REDACTED_VALUE = "[REDACTED]";
4
+
5
+ const normalizeKeySet = (keys: string[]): Set<string> => {
6
+ return new Set(keys.map((key) => key.trim().toLowerCase()).filter(Boolean));
7
+ };
8
+
9
+ const compilePatterns = (patterns: string[]): RegExp[] => {
10
+ return patterns
11
+ .map((pattern) => {
12
+ try {
13
+ return new RegExp(pattern, "gi");
14
+ } catch {
15
+ return null;
16
+ }
17
+ })
18
+ .filter((pattern): pattern is RegExp => Boolean(pattern));
19
+ };
20
+
21
+ const redactString = (value: string, patterns: RegExp[]): string => {
22
+ let next = value;
23
+ for (const pattern of patterns) {
24
+ next = next.replace(pattern, REDACTED_VALUE);
25
+ }
26
+ return next;
27
+ };
28
+
29
+ const redactValue = (
30
+ value: unknown,
31
+ keySet: Set<string>,
32
+ patterns: RegExp[],
33
+ ): unknown => {
34
+ if (value === null || value === undefined) {
35
+ return value;
36
+ }
37
+
38
+ if (typeof value === "string") {
39
+ return redactString(value, patterns);
40
+ }
41
+
42
+ if (typeof value === "number" || typeof value === "boolean") {
43
+ return value;
44
+ }
45
+
46
+ if (Array.isArray(value)) {
47
+ return value.map((entry) => redactValue(entry, keySet, patterns));
48
+ }
49
+
50
+ if (typeof value === "object") {
51
+ const next: Record<string, unknown> = {};
52
+ for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {
53
+ if (keySet.has(key.toLowerCase())) {
54
+ next[key] = REDACTED_VALUE;
55
+ } else {
56
+ next[key] = redactValue(entry, keySet, patterns);
57
+ }
58
+ }
59
+ return next;
60
+ }
61
+
62
+ return value;
63
+ };
64
+
65
+ export const redactEvent = (config: GuckConfig, event: GuckEvent): GuckEvent => {
66
+ if (!config.redaction.enabled) {
67
+ return event;
68
+ }
69
+
70
+ const keySet = normalizeKeySet(config.redaction.keys);
71
+ const patterns = compilePatterns(config.redaction.patterns);
72
+
73
+ return {
74
+ ...event,
75
+ message: event.message ? redactString(event.message, patterns) : event.message,
76
+ data: event.data
77
+ ? (redactValue(event.data, keySet, patterns) as Record<string, unknown>)
78
+ : event.data,
79
+ tags: event.tags
80
+ ? (redactValue(event.tags, keySet, patterns) as Record<string, string>)
81
+ : event.tags,
82
+ };
83
+ };
package/src/schema.ts ADDED
@@ -0,0 +1,130 @@
1
+ export type GuckLevel = "trace" | "debug" | "info" | "warn" | "error" | "fatal";
2
+
3
+ export type GuckSourceKind = "sdk" | "stdout" | "stderr" | "mcp";
4
+
5
+ export type GuckSource = {
6
+ kind: GuckSourceKind;
7
+ file?: string;
8
+ line?: number;
9
+ backend?: string;
10
+ backend_id?: string;
11
+ };
12
+
13
+ export type GuckSdkConfig = {
14
+ enabled: boolean;
15
+ capture_stdout: boolean;
16
+ capture_stderr: boolean;
17
+ };
18
+
19
+ export type GuckEvent = {
20
+ id: string;
21
+ ts: string;
22
+ level: GuckLevel;
23
+ type: string;
24
+ service: string;
25
+ run_id: string;
26
+ session_id?: string;
27
+ message?: string;
28
+ data?: Record<string, unknown>;
29
+ tags?: Record<string, string>;
30
+ trace_id?: string;
31
+ span_id?: string;
32
+ source?: GuckSource;
33
+ };
34
+
35
+ export type GuckConfig = {
36
+ version: 1;
37
+ enabled: boolean;
38
+ store_dir: string;
39
+ default_service: string;
40
+ sdk: GuckSdkConfig;
41
+ read?: GuckReadConfig;
42
+ redaction: {
43
+ enabled: boolean;
44
+ keys: string[];
45
+ patterns: string[];
46
+ };
47
+ mcp: {
48
+ max_results: number;
49
+ default_lookback_ms: number;
50
+ };
51
+ };
52
+
53
+ export type GuckReadBackendType = "local" | "cloudwatch" | "k8s";
54
+
55
+ export type GuckLocalReadBackendConfig = {
56
+ type: "local";
57
+ id?: string;
58
+ dir?: string;
59
+ };
60
+
61
+ export type GuckCloudWatchReadBackendConfig = {
62
+ type: "cloudwatch";
63
+ id?: string;
64
+ logGroup: string;
65
+ region: string;
66
+ profile?: string;
67
+ service?: string;
68
+ };
69
+
70
+ export type GuckK8sReadBackendConfig = {
71
+ type: "k8s";
72
+ id?: string;
73
+ namespace: string;
74
+ selector: string;
75
+ context?: string;
76
+ container?: string;
77
+ service?: string;
78
+ };
79
+
80
+ export type GuckReadBackendConfig =
81
+ | GuckLocalReadBackendConfig
82
+ | GuckCloudWatchReadBackendConfig
83
+ | GuckK8sReadBackendConfig;
84
+
85
+ export type GuckReadConfig = {
86
+ backend: "local" | "multi";
87
+ backends?: GuckReadBackendConfig[];
88
+ };
89
+
90
+ export type GuckSearchParams = {
91
+ service?: string;
92
+ session_id?: string;
93
+ run_id?: string;
94
+ types?: string[];
95
+ levels?: GuckLevel[];
96
+ contains?: string;
97
+ since?: string;
98
+ until?: string;
99
+ limit?: number;
100
+ backends?: string[];
101
+ config_path?: string;
102
+ };
103
+
104
+ export type GuckStatsParams = {
105
+ service?: string;
106
+ session_id?: string;
107
+ since?: string;
108
+ until?: string;
109
+ group_by: "type" | "level" | "stage";
110
+ limit?: number;
111
+ backends?: string[];
112
+ config_path?: string;
113
+ };
114
+
115
+ export type GuckSessionsParams = {
116
+ service?: string;
117
+ since?: string;
118
+ limit?: number;
119
+ backends?: string[];
120
+ config_path?: string;
121
+ };
122
+
123
+ export type GuckTailParams = {
124
+ service?: string;
125
+ session_id?: string;
126
+ run_id?: string;
127
+ limit?: number;
128
+ backends?: string[];
129
+ config_path?: string;
130
+ };