observability-toolkit 1.4.0 → 1.5.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 (36) hide show
  1. package/dist/backends/index.d.ts +93 -1
  2. package/dist/backends/index.d.ts.map +1 -1
  3. package/dist/backends/local-jsonl-boolean-search.test.d.ts +2 -0
  4. package/dist/backends/local-jsonl-boolean-search.test.d.ts.map +1 -0
  5. package/dist/backends/local-jsonl-boolean-search.test.js +154 -0
  6. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -0
  7. package/dist/backends/local-jsonl.d.ts +47 -3
  8. package/dist/backends/local-jsonl.d.ts.map +1 -1
  9. package/dist/backends/local-jsonl.js +635 -142
  10. package/dist/backends/local-jsonl.js.map +1 -1
  11. package/dist/backends/local-jsonl.test.js +2108 -133
  12. package/dist/backends/local-jsonl.test.js.map +1 -1
  13. package/dist/backends/signoz-api.d.ts +13 -1
  14. package/dist/backends/signoz-api.d.ts.map +1 -1
  15. package/dist/backends/signoz-api.js +326 -0
  16. package/dist/backends/signoz-api.js.map +1 -1
  17. package/dist/backends/signoz-api.test.js +320 -0
  18. package/dist/backends/signoz-api.test.js.map +1 -1
  19. package/dist/lib/cache.d.ts +20 -0
  20. package/dist/lib/cache.d.ts.map +1 -0
  21. package/dist/lib/cache.js +63 -0
  22. package/dist/lib/cache.js.map +1 -0
  23. package/dist/lib/indexer.d.ts +78 -0
  24. package/dist/lib/indexer.d.ts.map +1 -0
  25. package/dist/lib/indexer.js +277 -0
  26. package/dist/lib/indexer.js.map +1 -0
  27. package/dist/lib/indexer.test.d.ts +2 -0
  28. package/dist/lib/indexer.test.d.ts.map +1 -0
  29. package/dist/lib/indexer.test.js +392 -0
  30. package/dist/lib/indexer.test.js.map +1 -0
  31. package/dist/lib/otlp-export.d.ts +178 -0
  32. package/dist/lib/otlp-export.d.ts.map +1 -0
  33. package/dist/lib/otlp-export.js +382 -0
  34. package/dist/lib/otlp-export.js.map +1 -0
  35. package/dist/tools/query-logs.d.ts +4 -4
  36. package/package.json +1 -1
@@ -1,6 +1,25 @@
1
1
  /**
2
2
  * Backend interface for telemetry data sources
3
3
  */
4
+ /**
5
+ * InstrumentationScope identifies the library/module that produced the telemetry
6
+ * https://opentelemetry.io/docs/specs/otel/common/
7
+ */
8
+ export interface InstrumentationScope {
9
+ name: string;
10
+ version?: string;
11
+ schemaUrl?: string;
12
+ }
13
+ /**
14
+ * SpanLink connects a span to another span in the same or different trace.
15
+ * Used for batch processing, fan-out operations, or causal relationships.
16
+ * https://opentelemetry.io/docs/concepts/signals/traces/#span-links
17
+ */
18
+ export interface SpanLink {
19
+ traceId: string;
20
+ spanId: string;
21
+ attributes?: Record<string, unknown>;
22
+ }
4
23
  export interface TraceSpan {
5
24
  traceId: string;
6
25
  spanId: string;
@@ -22,6 +41,10 @@ export interface TraceSpan {
22
41
  timestamp: number;
23
42
  attributes?: Record<string, unknown>;
24
43
  }>;
44
+ /** SpanLinks connect this span to other spans in the same or different traces */
45
+ links?: SpanLink[];
46
+ /** InstrumentationScope identifies the library/module that produced this span */
47
+ instrumentationScope?: InstrumentationScope;
25
48
  }
26
49
  export interface LogRecord {
27
50
  timestamp: string;
@@ -31,24 +54,77 @@ export interface LogRecord {
31
54
  traceId?: string;
32
55
  spanId?: string;
33
56
  attributes?: Record<string, unknown>;
57
+ /** InstrumentationScope identifies the library/module that produced this log */
58
+ instrumentationScope?: InstrumentationScope;
59
+ /** Extracted field values from JSON log body */
60
+ extractedFields?: Record<string, unknown>;
61
+ }
62
+ export interface HistogramBucket {
63
+ le: number;
64
+ count: number;
34
65
  }
66
+ export interface HistogramData {
67
+ buckets: HistogramBucket[];
68
+ sum: number;
69
+ count: number;
70
+ }
71
+ /**
72
+ * Exemplar links a metric data point to a specific trace span.
73
+ * Useful for debugging high latency, errors, or other notable measurements.
74
+ * https://opentelemetry.io/docs/specs/otel/metrics/data-model/#exemplars
75
+ */
76
+ export interface Exemplar {
77
+ timestamp: string;
78
+ value: number;
79
+ traceId?: string;
80
+ spanId?: string;
81
+ attributes?: Record<string, unknown>;
82
+ }
83
+ /**
84
+ * Aggregation temporality for metrics
85
+ * https://opentelemetry.io/docs/specs/otel/metrics/data-model/#temporality
86
+ *
87
+ * - UNSPECIFIED: Temporality is unknown or not applicable
88
+ * - DELTA: Values represent change since last report (e.g., requests in the last minute)
89
+ * - CUMULATIVE: Values represent total since start (e.g., total requests since process start)
90
+ */
91
+ export type AggregationTemporality = 'UNSPECIFIED' | 'DELTA' | 'CUMULATIVE';
35
92
  export interface MetricDataPoint {
36
93
  timestamp: string;
37
94
  name: string;
38
95
  value: number;
39
96
  unit?: string;
40
97
  attributes?: Record<string, unknown>;
98
+ histogram?: HistogramData;
99
+ exemplars?: Exemplar[];
100
+ aggregationTemporality?: AggregationTemporality;
41
101
  }
42
102
  export interface QueryOptions {
43
103
  startDate?: string;
44
104
  endDate?: string;
45
105
  limit?: number;
46
106
  offset?: number;
107
+ cursor?: string;
108
+ }
109
+ /**
110
+ * Paginated result wrapper for cursor-based pagination
111
+ */
112
+ export interface PaginatedResult<T> {
113
+ data: T[];
114
+ nextCursor?: string;
115
+ hasMore: boolean;
116
+ }
117
+ export interface NumericFilterCondition {
118
+ attribute: string;
119
+ operator: 'gt' | 'gte' | 'lt' | 'lte' | 'eq';
120
+ value: number;
47
121
  }
48
122
  export interface TraceQueryOptions extends QueryOptions {
49
123
  traceId?: string;
50
124
  serviceName?: string;
51
125
  spanName?: string;
126
+ /** Filter spans by name using regex pattern */
127
+ spanNameRegex?: string;
52
128
  minDurationMs?: number;
53
129
  maxDurationMs?: number;
54
130
  attributeFilter?: Record<string, string | number | boolean>;
@@ -58,6 +134,8 @@ export interface TraceQueryOptions extends QueryOptions {
58
134
  attributeExists?: string[];
59
135
  /** Exclude spans where these attributes exist */
60
136
  attributeNotExists?: string[];
137
+ /** Numeric comparison filters for attributes */
138
+ numericFilter?: NumericFilterCondition[];
61
139
  }
62
140
  export interface LogQueryOptions extends QueryOptions {
63
141
  severity?: string;
@@ -69,11 +147,21 @@ export interface LogQueryOptions extends QueryOptions {
69
147
  attributeExists?: string[];
70
148
  /** Exclude logs where these attributes exist */
71
149
  attributeNotExists?: string[];
150
+ /** Numeric comparison filters for attributes */
151
+ numericFilter?: NumericFilterCondition[];
152
+ /** Multiple search terms for boolean search */
153
+ searchTerms?: string[];
154
+ /** Boolean operator for searchTerms: 'AND' (all must match) or 'OR' (any can match). Defaults to 'AND' */
155
+ searchOperator?: 'AND' | 'OR';
156
+ /** JSON paths to extract from log body (e.g., ['user.id', 'request.method']) */
157
+ extractFields?: string[];
72
158
  }
73
159
  export interface MetricQueryOptions extends QueryOptions {
74
160
  metricName?: string;
75
- aggregation?: 'sum' | 'avg' | 'min' | 'max' | 'count';
161
+ aggregation?: 'sum' | 'avg' | 'min' | 'max' | 'count' | 'p50' | 'p95' | 'p99' | 'rate';
76
162
  groupBy?: string[];
163
+ /** Time bucket size for grouping (e.g., '1m', '5m', '1h', '1d') */
164
+ timeBucket?: string;
77
165
  }
78
166
  export interface LLMEvent {
79
167
  timestamp: string;
@@ -86,6 +174,7 @@ export interface LLMEventQueryOptions extends QueryOptions {
86
174
  provider?: string;
87
175
  search?: string;
88
176
  }
177
+ export type { OTLPTraceExport, OTLPLogExport, OTLPMetricExport, } from '../lib/otlp-export.js';
89
178
  export interface TelemetryBackend {
90
179
  name: string;
91
180
  queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
@@ -96,5 +185,8 @@ export interface TelemetryBackend {
96
185
  status: 'ok' | 'error';
97
186
  message?: string;
98
187
  }>;
188
+ exportTracesOTLP?(options: TraceQueryOptions): Promise<import('../lib/otlp-export.js').OTLPTraceExport>;
189
+ exportLogsOTLP?(options: LogQueryOptions): Promise<import('../lib/otlp-export.js').OTLPLogExport>;
190
+ exportMetricsOTLP?(options: MetricQueryOptions): Promise<import('../lib/otlp-export.js').OTLPMetricExport>;
99
191
  }
100
192
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=local-jsonl-boolean-search.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-jsonl-boolean-search.test.d.ts","sourceRoot":"","sources":["../../src/backends/local-jsonl-boolean-search.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ import { describe, it, beforeEach, afterEach } from 'node:test';
2
+ import * as assert from 'node:assert';
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import * as os from 'os';
6
+ import { LocalJsonlBackend } from './local-jsonl.js';
7
+ /**
8
+ * Test utilities for creating temp test fixtures
9
+ */
10
+ function createTempDir() {
11
+ return fs.mkdtempSync(path.join(os.tmpdir(), 'local-jsonl-boolean-test-'));
12
+ }
13
+ function removeTempDir(dir) {
14
+ try {
15
+ fs.rmSync(dir, { recursive: true, force: true });
16
+ }
17
+ catch {
18
+ // Ignore cleanup errors
19
+ }
20
+ }
21
+ function writeJsonlFile(filePath, data) {
22
+ const content = data.map(item => JSON.stringify(item)).join('\n');
23
+ fs.writeFileSync(filePath, content, 'utf-8');
24
+ }
25
+ function getTestDate() {
26
+ return new Date().toISOString().split('T')[0];
27
+ }
28
+ describe('LocalJsonlBackend Boolean Search', () => {
29
+ let tempDir;
30
+ let backend;
31
+ beforeEach(() => {
32
+ tempDir = createTempDir();
33
+ backend = new LocalJsonlBackend(tempDir);
34
+ });
35
+ afterEach(() => {
36
+ removeTempDir(tempDir);
37
+ });
38
+ describe('queryLogs with searchTerms', () => {
39
+ it('should filter logs with searchTerms AND operator (all terms must match)', async () => {
40
+ const today = getTestDate();
41
+ const mockLogs = [
42
+ { timestamp: '2026-01-28T10:00:00Z', body: 'Connection timeout error' },
43
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Database query failed' },
44
+ { timestamp: '2026-01-28T10:02:00Z', body: 'Connection reset by peer' },
45
+ { timestamp: '2026-01-28T10:03:00Z', body: 'Timeout occurred during connection' },
46
+ ];
47
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
48
+ const results = await backend.queryLogs({
49
+ searchTerms: ['connection', 'timeout'],
50
+ searchOperator: 'AND',
51
+ });
52
+ assert.strictEqual(results.length, 2);
53
+ assert.ok(results.every(l => l.body.toLowerCase().includes('connection') &&
54
+ l.body.toLowerCase().includes('timeout')));
55
+ });
56
+ it('should filter logs with searchTerms OR operator (any term can match)', async () => {
57
+ const today = getTestDate();
58
+ const mockLogs = [
59
+ { timestamp: '2026-01-28T10:00:00Z', body: 'Connection timeout error' },
60
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Database query failed' },
61
+ { timestamp: '2026-01-28T10:02:00Z', body: 'Authentication error' },
62
+ { timestamp: '2026-01-28T10:03:00Z', body: 'Timeout occurred' },
63
+ ];
64
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
65
+ const results = await backend.queryLogs({
66
+ searchTerms: ['connection', 'timeout'],
67
+ searchOperator: 'OR',
68
+ });
69
+ assert.strictEqual(results.length, 2);
70
+ assert.ok(results.every(l => l.body.toLowerCase().includes('connection') ||
71
+ l.body.toLowerCase().includes('timeout')));
72
+ });
73
+ it('should default to AND operator when searchOperator is not specified', async () => {
74
+ const today = getTestDate();
75
+ const mockLogs = [
76
+ { timestamp: '2026-01-28T10:00:00Z', body: 'Error during database connection' },
77
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Error occurred' },
78
+ { timestamp: '2026-01-28T10:02:00Z', body: 'Database query successful' },
79
+ { timestamp: '2026-01-28T10:03:00Z', body: 'Connection error in database' },
80
+ ];
81
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
82
+ // searchOperator defaults to 'AND'
83
+ const results = await backend.queryLogs({
84
+ searchTerms: ['error', 'database'],
85
+ });
86
+ assert.strictEqual(results.length, 2);
87
+ assert.ok(results.every(l => l.body.toLowerCase().includes('error') &&
88
+ l.body.toLowerCase().includes('database')));
89
+ });
90
+ it('should handle searchTerms with case-insensitive matching', async () => {
91
+ const today = getTestDate();
92
+ const mockLogs = [
93
+ { timestamp: '2026-01-28T10:00:00Z', body: 'ERROR: Connection FAILED' },
94
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Warning: Process started' },
95
+ { timestamp: '2026-01-28T10:02:00Z', body: 'connection failed with error' },
96
+ ];
97
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
98
+ const results = await backend.queryLogs({
99
+ searchTerms: ['ERROR', 'FAILED'],
100
+ searchOperator: 'AND',
101
+ });
102
+ assert.strictEqual(results.length, 2);
103
+ });
104
+ it('should handle empty searchTerms array', async () => {
105
+ const today = getTestDate();
106
+ const mockLogs = [
107
+ { timestamp: '2026-01-28T10:00:00Z', body: 'Log message 1' },
108
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Log message 2' },
109
+ ];
110
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
111
+ // Empty array should not filter anything
112
+ const results = await backend.queryLogs({
113
+ searchTerms: [],
114
+ });
115
+ assert.strictEqual(results.length, 2);
116
+ });
117
+ it('should combine search and searchTerms filters', async () => {
118
+ const today = getTestDate();
119
+ const mockLogs = [
120
+ { timestamp: '2026-01-28T10:00:00Z', body: 'Connection error timeout' },
121
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Connection timeout' },
122
+ { timestamp: '2026-01-28T10:02:00Z', body: 'Database error timeout' },
123
+ { timestamp: '2026-01-28T10:03:00Z', body: 'Connection established' },
124
+ ];
125
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
126
+ // Both single search and searchTerms should apply
127
+ const results = await backend.queryLogs({
128
+ search: 'connection',
129
+ searchTerms: ['error', 'timeout'],
130
+ searchOperator: 'OR',
131
+ });
132
+ // Must contain 'connection' AND (contain 'error' OR 'timeout')
133
+ assert.strictEqual(results.length, 2);
134
+ assert.ok(results.every(l => l.body.toLowerCase().includes('connection') &&
135
+ (l.body.toLowerCase().includes('error') || l.body.toLowerCase().includes('timeout'))));
136
+ });
137
+ it('should handle single searchTerm as AND operator', async () => {
138
+ const today = getTestDate();
139
+ const mockLogs = [
140
+ { timestamp: '2026-01-28T10:00:00Z', body: 'Error occurred' },
141
+ { timestamp: '2026-01-28T10:01:00Z', body: 'Warning: Process started' },
142
+ { timestamp: '2026-01-28T10:02:00Z', body: 'Error: Connection failed' },
143
+ ];
144
+ writeJsonlFile(path.join(tempDir, `logs-${today}.jsonl`), mockLogs);
145
+ const results = await backend.queryLogs({
146
+ searchTerms: ['error'],
147
+ searchOperator: 'AND',
148
+ });
149
+ assert.strictEqual(results.length, 2);
150
+ assert.ok(results.every(l => l.body.toLowerCase().includes('error')));
151
+ });
152
+ });
153
+ });
154
+ //# sourceMappingURL=local-jsonl-boolean-search.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-jsonl-boolean-search.test.js","sourceRoot":"","sources":["../../src/backends/local-jsonl-boolean-search.test.ts"],"names":[],"mappings":"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"}
@@ -4,20 +4,52 @@
4
4
  * The local telemetry files use a flat JSONL format where each line is a complete
5
5
  * span or log record, not the batched OpenTelemetry export format.
6
6
  */
7
- import { TelemetryBackend, TraceSpan, LogRecord, MetricDataPoint, LLMEvent, TraceQueryOptions, LogQueryOptions, MetricQueryOptions, LLMEventQueryOptions } from './index.js';
7
+ import { TelemetryBackend, TraceSpan, LogRecord, MetricDataPoint, LLMEvent, TraceQueryOptions, LogQueryOptions, MetricQueryOptions, LLMEventQueryOptions, OTLPTraceExport, OTLPLogExport, OTLPMetricExport } from './index.js';
8
8
  export declare class LocalJsonlBackend implements TelemetryBackend {
9
9
  name: string;
10
10
  private telemetryDir;
11
- constructor(telemetryDir?: string);
11
+ private traceCache;
12
+ private logCache;
13
+ private metricCache;
14
+ private llmEventCache;
15
+ private useIndexes;
16
+ constructor(telemetryDir?: string, useIndexes?: boolean);
17
+ /**
18
+ * Clear all query caches
19
+ */
20
+ clearCache(): void;
21
+ /**
22
+ * Try to use an index for a file, returning matching line numbers or null if full scan needed
23
+ */
24
+ private tryUseIndex;
12
25
  queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
13
26
  queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
14
27
  queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
15
28
  private aggregate;
29
+ private calculatePercentile;
30
+ /**
31
+ * Calculate rate of change per second.
32
+ * Rate = (last_value - first_value) / duration_in_seconds
33
+ * Edge cases: single value returns 0, same timestamp returns 0
34
+ */
35
+ private calculateRate;
16
36
  queryLLMEvents(options: LLMEventQueryOptions): Promise<LLMEvent[]>;
17
37
  healthCheck(): Promise<{
18
38
  status: 'ok' | 'error';
19
39
  message?: string;
20
40
  }>;
41
+ /**
42
+ * Export traces in OTLP JSON format
43
+ */
44
+ exportTracesOTLP(options: TraceQueryOptions): Promise<OTLPTraceExport>;
45
+ /**
46
+ * Export logs in OTLP JSON format
47
+ */
48
+ exportLogsOTLP(options: LogQueryOptions): Promise<OTLPLogExport>;
49
+ /**
50
+ * Export metrics in OTLP JSON format
51
+ */
52
+ exportMetricsOTLP(options: MetricQueryOptions): Promise<OTLPMetricExport>;
21
53
  }
22
54
  /**
23
55
  * Multi-directory backend that queries all telemetry directories
@@ -27,7 +59,7 @@ export declare class MultiDirectoryBackend implements TelemetryBackend {
27
59
  name: string;
28
60
  private backends;
29
61
  private directories;
30
- constructor(cwd?: string);
62
+ constructor(cwd?: string, useIndexes?: boolean);
31
63
  getDirectories(): Array<{
32
64
  path: string;
33
65
  source: 'global' | 'local';
@@ -45,5 +77,17 @@ export declare class MultiDirectoryBackend implements TelemetryBackend {
45
77
  status: string;
46
78
  }>;
47
79
  }>;
80
+ /**
81
+ * Export traces in OTLP JSON format
82
+ */
83
+ exportTracesOTLP(options: TraceQueryOptions): Promise<OTLPTraceExport>;
84
+ /**
85
+ * Export logs in OTLP JSON format
86
+ */
87
+ exportLogsOTLP(options: LogQueryOptions): Promise<OTLPLogExport>;
88
+ /**
89
+ * Export metrics in OTLP JSON format
90
+ */
91
+ exportMetricsOTLP(options: MetricQueryOptions): Promise<OTLPMetricExport>;
48
92
  }
49
93
  //# sourceMappingURL=local-jsonl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-jsonl.d.ts","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAsOpB,qBAAa,iBAAkB,YAAW,gBAAgB;IACxD,IAAI,SAAiB;IACrB,OAAO,CAAC,YAAY,CAAS;gBAEjB,YAAY,CAAC,EAAE,MAAM;IAI3B,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyE7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyDzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqC3E,OAAO,CAAC,SAAS;IAyDX,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgDlE,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CA6B3E;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,IAAI,SAAqB;IACzB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,WAAW,CAAsD;gBAE7D,GAAG,CAAC,EAAE,MAAM;IAKxB,cAAc,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC;IAI/D,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwB7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwBzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAarE,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwBlE,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAwBlJ"}
1
+ {"version":3,"file":"local-jsonl.d.ts","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}