observability-toolkit 1.4.0 → 1.6.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.
- package/dist/backends/index.d.ts +94 -1
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/local-jsonl-boolean-search.test.d.ts +2 -0
- package/dist/backends/local-jsonl-boolean-search.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-boolean-search.test.js +154 -0
- package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -0
- package/dist/backends/local-jsonl.d.ts +55 -3
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +733 -142
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.js +2177 -122
- package/dist/backends/local-jsonl.test.js.map +1 -1
- package/dist/backends/signoz-api.d.ts +13 -1
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.js +367 -1
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.js +417 -0
- package/dist/backends/signoz-api.test.js.map +1 -1
- package/dist/lib/cache.d.ts +31 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +82 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/cache.test.d.ts +5 -0
- package/dist/lib/cache.test.d.ts.map +1 -0
- package/dist/lib/cache.test.js +105 -0
- package/dist/lib/cache.test.js.map +1 -0
- package/dist/lib/indexer.d.ts +78 -0
- package/dist/lib/indexer.d.ts.map +1 -0
- package/dist/lib/indexer.js +277 -0
- package/dist/lib/indexer.js.map +1 -0
- package/dist/lib/indexer.test.d.ts +2 -0
- package/dist/lib/indexer.test.d.ts.map +1 -0
- package/dist/lib/indexer.test.js +392 -0
- package/dist/lib/indexer.test.js.map +1 -0
- package/dist/lib/otlp-export.d.ts +178 -0
- package/dist/lib/otlp-export.d.ts.map +1 -0
- package/dist/lib/otlp-export.js +382 -0
- package/dist/lib/otlp-export.js.map +1 -0
- package/dist/tools/health-check.d.ts +2 -0
- package/dist/tools/health-check.d.ts.map +1 -1
- package/dist/tools/health-check.js +2 -0
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/health-check.test.js +36 -0
- package/dist/tools/health-check.test.js.map +1 -1
- package/dist/tools/query-logs.d.ts +4 -4
- package/package.json +1 -1
package/dist/backends/index.d.ts
CHANGED
|
@@ -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,9 @@ export interface TelemetryBackend {
|
|
|
96
185
|
status: 'ok' | 'error';
|
|
97
186
|
message?: string;
|
|
98
187
|
}>;
|
|
188
|
+
getCacheStats?(): Record<string, import('../lib/cache.js').CacheStats>;
|
|
189
|
+
exportTracesOTLP?(options: TraceQueryOptions): Promise<import('../lib/otlp-export.js').OTLPTraceExport>;
|
|
190
|
+
exportLogsOTLP?(options: LogQueryOptions): Promise<import('../lib/otlp-export.js').OTLPLogExport>;
|
|
191
|
+
exportMetricsOTLP?(options: MetricQueryOptions): Promise<import('../lib/otlp-export.js').OTLPMetricExport>;
|
|
99
192
|
}
|
|
100
193
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,SAAS,aAAa;IACpB,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,IAAe;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,OAAe,CAAC;IACpB,IAAI,OAA0B,CAAC;IAE/B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,aAAa,EAAE,CAAC;QAC1B,OAAO,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACvF,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,uBAAuB,EAAE;gBACpE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,oCAAoC,EAAE;aAClF,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;gBACtC,cAAc,EAAE,KAAK;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,uBAAuB,EAAE;gBACpE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,sBAAsB,EAAE;gBACnE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,kBAAkB,EAAE;aAChE,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;gBACtC,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,kCAAkC,EAAE;gBAC/E,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB,EAAE;gBAC7D,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,2BAA2B,EAAE;gBACxE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,8BAA8B,EAAE;aAC5E,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,mCAAmC;YACnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;aACnC,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,8BAA8B,EAAE;aAC5E,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAChC,cAAc,EAAE,KAAK;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE;gBAC5D,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE;aAC7D,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,yCAAyC;YACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,oBAAoB,EAAE;gBACjE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,wBAAwB,EAAE;gBACrE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,wBAAwB,EAAE;aACtE,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,kDAAkD;YAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,MAAM,EAAE,YAAY;gBACpB,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;gBACjC,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,+DAA+D;YAC/D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC3C,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CACrF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG;gBACf,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB,EAAE;gBAC7D,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBACvE,EAAE,SAAS,EAAE,sBAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE;aACxE,CAAC;YAEF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACtC,WAAW,EAAE,CAAC,OAAO,CAAC;gBACtB,cAAc,EAAE,KAAK;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -4,20 +4,56 @@
|
|
|
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
|
-
|
|
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
|
+
* Get cache statistics for all query caches
|
|
23
|
+
*/
|
|
24
|
+
getCacheStats(): Record<string, import('../lib/cache.js').CacheStats>;
|
|
25
|
+
/**
|
|
26
|
+
* Try to use an index for a file, returning matching line numbers or null if full scan needed
|
|
27
|
+
*/
|
|
28
|
+
private tryUseIndex;
|
|
12
29
|
queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
|
|
13
30
|
queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
|
|
14
31
|
queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
|
|
15
32
|
private aggregate;
|
|
33
|
+
private calculatePercentile;
|
|
34
|
+
/**
|
|
35
|
+
* Calculate rate of change per second.
|
|
36
|
+
* Rate = (last_value - first_value) / duration_in_seconds
|
|
37
|
+
* Edge cases: single value returns 0, same timestamp returns 0
|
|
38
|
+
*/
|
|
39
|
+
private calculateRate;
|
|
16
40
|
queryLLMEvents(options: LLMEventQueryOptions): Promise<LLMEvent[]>;
|
|
17
41
|
healthCheck(): Promise<{
|
|
18
42
|
status: 'ok' | 'error';
|
|
19
43
|
message?: string;
|
|
20
44
|
}>;
|
|
45
|
+
/**
|
|
46
|
+
* Export traces in OTLP JSON format
|
|
47
|
+
*/
|
|
48
|
+
exportTracesOTLP(options: TraceQueryOptions): Promise<OTLPTraceExport>;
|
|
49
|
+
/**
|
|
50
|
+
* Export logs in OTLP JSON format
|
|
51
|
+
*/
|
|
52
|
+
exportLogsOTLP(options: LogQueryOptions): Promise<OTLPLogExport>;
|
|
53
|
+
/**
|
|
54
|
+
* Export metrics in OTLP JSON format
|
|
55
|
+
*/
|
|
56
|
+
exportMetricsOTLP(options: MetricQueryOptions): Promise<OTLPMetricExport>;
|
|
21
57
|
}
|
|
22
58
|
/**
|
|
23
59
|
* Multi-directory backend that queries all telemetry directories
|
|
@@ -27,7 +63,7 @@ export declare class MultiDirectoryBackend implements TelemetryBackend {
|
|
|
27
63
|
name: string;
|
|
28
64
|
private backends;
|
|
29
65
|
private directories;
|
|
30
|
-
constructor(cwd?: string);
|
|
66
|
+
constructor(cwd?: string, useIndexes?: boolean);
|
|
31
67
|
getDirectories(): Array<{
|
|
32
68
|
path: string;
|
|
33
69
|
source: 'global' | 'local';
|
|
@@ -45,5 +81,21 @@ export declare class MultiDirectoryBackend implements TelemetryBackend {
|
|
|
45
81
|
status: string;
|
|
46
82
|
}>;
|
|
47
83
|
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Get aggregated cache statistics from all backends
|
|
86
|
+
*/
|
|
87
|
+
getCacheStats(): Record<string, import('../lib/cache.js').CacheStats>;
|
|
88
|
+
/**
|
|
89
|
+
* Export traces in OTLP JSON format
|
|
90
|
+
*/
|
|
91
|
+
exportTracesOTLP(options: TraceQueryOptions): Promise<OTLPTraceExport>;
|
|
92
|
+
/**
|
|
93
|
+
* Export logs in OTLP JSON format
|
|
94
|
+
*/
|
|
95
|
+
exportLogsOTLP(options: LogQueryOptions): Promise<OTLPLogExport>;
|
|
96
|
+
/**
|
|
97
|
+
* Export metrics in OTLP JSON format
|
|
98
|
+
*/
|
|
99
|
+
exportMetricsOTLP(options: MetricQueryOptions): Promise<OTLPMetricExport>;
|
|
48
100
|
}
|
|
49
101
|
//# 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,
|
|
1
|
+
{"version":3,"file":"local-jsonl.d.ts","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}
|