observability-toolkit 1.6.0 → 1.8.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/README.md +203 -91
- package/dist/backends/index.d.ts +70 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +49 -1
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +31 -5
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.js +281 -0
- package/dist/backends/local-jsonl.test.js.map +1 -1
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.js +6 -0
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/lib/file-utils.d.ts +76 -0
- package/dist/lib/file-utils.d.ts.map +1 -1
- package/dist/lib/file-utils.js +135 -6
- package/dist/lib/file-utils.js.map +1 -1
- package/dist/lib/file-utils.test.js +214 -1
- package/dist/lib/file-utils.test.js.map +1 -1
- package/dist/lib/indexer.d.ts +10 -0
- package/dist/lib/indexer.d.ts.map +1 -1
- package/dist/lib/indexer.js +34 -7
- package/dist/lib/indexer.js.map +1 -1
- package/dist/lib/indexer.test.js +186 -0
- package/dist/lib/indexer.test.js.map +1 -1
- package/dist/tools/health-check.js +1 -1
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/query-llm-events.d.ts +53 -4
- package/dist/tools/query-llm-events.d.ts.map +1 -1
- package/dist/tools/query-llm-events.js +39 -6
- package/dist/tools/query-llm-events.js.map +1 -1
- package/dist/tools/query-llm-events.test.js +253 -0
- package/dist/tools/query-llm-events.test.js.map +1 -1
- package/dist/tools/query-logs.d.ts +6 -0
- package/dist/tools/query-logs.d.ts.map +1 -1
- package/dist/tools/query-logs.js +11 -2
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-logs.test.js +180 -0
- package/dist/tools/query-logs.test.js.map +1 -1
- package/dist/tools/query-metrics.d.ts +6 -6
- package/dist/tools/query-metrics.js +1 -1
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-metrics.test.js +21 -0
- package/dist/tools/query-metrics.test.js.map +1 -1
- package/dist/tools/query-traces.d.ts +42 -0
- package/dist/tools/query-traces.d.ts.map +1 -1
- package/dist/tools/query-traces.js +20 -1
- package/dist/tools/query-traces.js.map +1 -1
- package/dist/tools/query-traces.test.js +222 -0
- package/dist/tools/query-traces.test.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,134 +18,250 @@ claude mcp add observability-toolkit -- node ~/.claude/mcp-servers/observability
|
|
|
18
18
|
|
|
19
19
|
| Tool | Description |
|
|
20
20
|
|------|-------------|
|
|
21
|
-
| `obs_query_traces` | Query traces
|
|
22
|
-
| `obs_query_metrics` | Query metrics with
|
|
23
|
-
| `obs_query_logs` | Query logs
|
|
21
|
+
| `obs_query_traces` | Query traces with filtering, regex, numeric operators |
|
|
22
|
+
| `obs_query_metrics` | Query metrics with aggregations (sum, avg, p50, p95, p99, rate) |
|
|
23
|
+
| `obs_query_logs` | Query logs with boolean search, field extraction |
|
|
24
24
|
| `obs_query_llm_events` | Query LLM events with token usage and duration metrics |
|
|
25
|
-
| `obs_health_check` | Check telemetry system health |
|
|
25
|
+
| `obs_health_check` | Check telemetry system health with cache statistics |
|
|
26
26
|
| `obs_context_stats` | Get context window utilization stats |
|
|
27
27
|
| `obs_get_trace_url` | Get SigNoz trace viewer URL (requires SigNoz) |
|
|
28
|
-
| `obs_setup_claudeignore` | Add entries to .claudeignore
|
|
28
|
+
| `obs_setup_claudeignore` | Add entries to .claudeignore |
|
|
29
29
|
|
|
30
30
|
## Configuration
|
|
31
31
|
|
|
32
|
-
| Variable | Description |
|
|
33
|
-
|
|
34
|
-
| `TELEMETRY_DIR` | Local telemetry directory |
|
|
35
|
-
| `SIGNOZ_URL` | SigNoz instance URL |
|
|
36
|
-
| `SIGNOZ_API_KEY` | SigNoz API key |
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
| Variable | Description | Default |
|
|
33
|
+
|----------|-------------|---------|
|
|
34
|
+
| `TELEMETRY_DIR` | Local telemetry directory | `~/.claude/telemetry` |
|
|
35
|
+
| `SIGNOZ_URL` | SigNoz instance URL | - |
|
|
36
|
+
| `SIGNOZ_API_KEY` | SigNoz API key | - |
|
|
37
|
+
| `CACHE_TTL_MS` | Query cache TTL in milliseconds | `60000` |
|
|
38
|
+
| `RETENTION_DAYS` | Days to retain telemetry files | `7` |
|
|
39
39
|
|
|
40
40
|
## Usage Examples
|
|
41
41
|
|
|
42
|
-
### Query
|
|
42
|
+
### Query Traces
|
|
43
43
|
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
obs_query_traces({
|
|
47
|
-
obs_query_traces({ serviceName: "claude-code", minDurationMs: 100 })
|
|
48
|
-
obs_query_traces({ attributeFilter: { "agent.source_type": "lazy" } })
|
|
49
|
-
```
|
|
44
|
+
```javascript
|
|
45
|
+
// Basic query
|
|
46
|
+
obs_query_traces({ limit: 10 })
|
|
50
47
|
|
|
51
|
-
|
|
48
|
+
// Filter by trace ID
|
|
49
|
+
obs_query_traces({ traceId: "abc123..." })
|
|
52
50
|
|
|
53
|
-
|
|
51
|
+
// Filter by service and duration
|
|
52
|
+
obs_query_traces({ serviceName: "claude-code", minDurationMs: 100 })
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
// Regex pattern matching
|
|
55
|
+
obs_query_traces({ spanNameRegex: "^http\\..*" })
|
|
56
|
+
|
|
57
|
+
// Numeric attribute filtering
|
|
58
|
+
obs_query_traces({
|
|
59
|
+
numericFilter: [
|
|
60
|
+
{ attribute: "http.status_code", operator: "gte", value: 400 }
|
|
61
|
+
]
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
// Existence checks
|
|
65
|
+
obs_query_traces({
|
|
66
|
+
attributeExists: ["error.message"],
|
|
67
|
+
attributeNotExists: ["http.response.body"]
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
// OTel GenAI agent/tool filters
|
|
71
|
+
obs_query_traces({ agentName: "Explore", toolName: "Read" })
|
|
72
|
+
obs_query_traces({ operationName: "execute_tool", toolCallId: "toolu_123" })
|
|
73
|
+
```
|
|
67
74
|
|
|
68
|
-
### Query
|
|
75
|
+
### Query Logs
|
|
69
76
|
|
|
70
|
-
```
|
|
77
|
+
```javascript
|
|
78
|
+
// Basic severity filter
|
|
71
79
|
obs_query_logs({ severity: "ERROR", limit: 20 })
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
|
|
81
|
+
// Boolean search (AND)
|
|
82
|
+
obs_query_logs({
|
|
83
|
+
searchTerms: ["timeout", "connection"],
|
|
84
|
+
searchOperator: "AND"
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
// Boolean search (OR)
|
|
88
|
+
obs_query_logs({
|
|
89
|
+
searchTerms: ["error", "warning", "critical"],
|
|
90
|
+
searchOperator: "OR"
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
// Field extraction from JSON logs
|
|
94
|
+
obs_query_logs({
|
|
95
|
+
extractFields: ["user.id", "request.method", "response.status"]
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
// Exclude patterns
|
|
99
|
+
obs_query_logs({
|
|
100
|
+
search: "error",
|
|
101
|
+
excludeSearch: "health-check"
|
|
102
|
+
})
|
|
74
103
|
```
|
|
75
104
|
|
|
76
|
-
### Query
|
|
105
|
+
### Query Metrics
|
|
77
106
|
|
|
78
|
-
```
|
|
107
|
+
```javascript
|
|
108
|
+
// Basic query
|
|
79
109
|
obs_query_metrics({ metricName: "session.context.size" })
|
|
80
|
-
obs_query_metrics({ metricName: "gen_ai.client.token.usage", aggregation: "sum" })
|
|
81
|
-
```
|
|
82
110
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
111
|
+
// Aggregations
|
|
112
|
+
obs_query_metrics({ metricName: "http.duration", aggregation: "avg" })
|
|
113
|
+
obs_query_metrics({ metricName: "http.duration", aggregation: "p95" })
|
|
114
|
+
obs_query_metrics({ metricName: "requests.count", aggregation: "rate" })
|
|
115
|
+
|
|
116
|
+
// Time bucket grouping
|
|
117
|
+
obs_query_metrics({
|
|
118
|
+
metricName: "token.usage",
|
|
119
|
+
aggregation: "sum",
|
|
120
|
+
timeBucket: "1h",
|
|
121
|
+
groupBy: ["model"]
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
// Percentiles
|
|
125
|
+
obs_query_metrics({ metricName: "latency", aggregation: "p99" })
|
|
89
126
|
```
|
|
90
127
|
|
|
91
|
-
###
|
|
128
|
+
### Query LLM Events
|
|
92
129
|
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
|
|
130
|
+
```javascript
|
|
131
|
+
// Basic query
|
|
132
|
+
obs_query_llm_events({ limit: 20 })
|
|
96
133
|
|
|
97
|
-
|
|
134
|
+
// Filter by model and provider
|
|
135
|
+
obs_query_llm_events({ model: "claude-3-opus", provider: "anthropic" })
|
|
98
136
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
```
|
|
137
|
+
// OTel GenAI operation types
|
|
138
|
+
obs_query_llm_events({ operationName: "chat" })
|
|
139
|
+
obs_query_llm_events({ operationName: "invoke_agent" })
|
|
103
140
|
|
|
104
|
-
|
|
141
|
+
// Filter by conversation
|
|
142
|
+
obs_query_llm_events({ conversationId: "conv-abc123" })
|
|
105
143
|
|
|
106
|
-
|
|
107
|
-
|
|
144
|
+
// Combine filters
|
|
145
|
+
obs_query_llm_events({
|
|
146
|
+
operationName: "chat",
|
|
147
|
+
provider: "anthropic",
|
|
148
|
+
conversationId: "conv-abc123"
|
|
149
|
+
})
|
|
108
150
|
```
|
|
109
151
|
|
|
110
|
-
###
|
|
152
|
+
### Health Check with Cache Stats
|
|
111
153
|
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
154
|
+
```javascript
|
|
155
|
+
obs_health_check({ verbose: true })
|
|
156
|
+
|
|
157
|
+
// Returns:
|
|
158
|
+
{
|
|
159
|
+
"status": "ok",
|
|
160
|
+
"backends": { ... },
|
|
161
|
+
"cache": {
|
|
162
|
+
"traces": { "hits": 10, "misses": 5, "hitRate": 0.67, "size": 15, "evictions": 0 },
|
|
163
|
+
"logs": { "hits": 8, "misses": 12, "hitRate": 0.4, "size": 20, "evictions": 2 },
|
|
164
|
+
"metrics": { "hits": 0, "misses": 0, "hitRate": 0, "size": 0, "evictions": 0 },
|
|
165
|
+
"llmEvents": { "hits": 0, "misses": 0, "hitRate": 0, "size": 0, "evictions": 0 }
|
|
166
|
+
}
|
|
167
|
+
}
|
|
117
168
|
```
|
|
118
169
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
170
|
+
## Features
|
|
171
|
+
|
|
172
|
+
### Query Capabilities
|
|
173
|
+
|
|
174
|
+
| Feature | Description |
|
|
175
|
+
|---------|-------------|
|
|
176
|
+
| Percentile Aggregations | p50, p95, p99 for metrics |
|
|
177
|
+
| Time Bucket Grouping | 1m, 5m, 1h, 1d buckets for trend analysis |
|
|
178
|
+
| Rate Calculations | Per-second rate of change |
|
|
179
|
+
| Numeric Operators | gt, gte, lt, lte, eq for attribute filtering |
|
|
180
|
+
| Regex Patterns | Advanced span name filtering |
|
|
181
|
+
| Boolean Search | AND/OR operators for log queries |
|
|
182
|
+
| Field Extraction | Extract JSON paths from structured logs |
|
|
183
|
+
| Negation Filters | Exclude matching spans/logs |
|
|
184
|
+
| Existence Checks | Filter by attribute presence |
|
|
185
|
+
|
|
186
|
+
### OTel Compliance
|
|
187
|
+
|
|
188
|
+
| Feature | Description |
|
|
189
|
+
|---------|-------------|
|
|
190
|
+
| severityNumber | Standard OTel severity levels |
|
|
191
|
+
| statusCode | UNSET, OK, ERROR for spans |
|
|
192
|
+
| Histogram Buckets | Full histogram distribution support |
|
|
193
|
+
| InstrumentationScope | Library/module metadata |
|
|
194
|
+
| Span Links | Cross-trace relationships |
|
|
195
|
+
| Exemplars | Metric-to-trace correlation |
|
|
196
|
+
| Aggregation Temporality | DELTA, CUMULATIVE support |
|
|
197
|
+
|
|
198
|
+
### OTel GenAI Semantic Conventions (8/10 compliance)
|
|
199
|
+
|
|
200
|
+
| Feature | Description |
|
|
201
|
+
|---------|-------------|
|
|
202
|
+
| `gen_ai.operation.name` | Filter by chat, embeddings, invoke_agent, execute_tool |
|
|
203
|
+
| `gen_ai.provider.name` | Provider fallback: gen_ai.provider.name → gen_ai.system → provider |
|
|
204
|
+
| `gen_ai.conversation.id` | Filter LLM events by conversation ID |
|
|
205
|
+
| `gen_ai.agent.id/name` | Filter traces by agent attributes |
|
|
206
|
+
| `gen_ai.tool.name/call.id` | Filter traces by tool attributes |
|
|
207
|
+
| Percentiles | p50, p95, p99, rate aggregations |
|
|
208
|
+
|
|
209
|
+
### Performance
|
|
210
|
+
|
|
211
|
+
| Feature | Description |
|
|
212
|
+
|---------|-------------|
|
|
213
|
+
| Query Caching | LRU cache with configurable TTL |
|
|
214
|
+
| File Indexing | .idx sidecars for fast lookups |
|
|
215
|
+
| Gzip Support | Transparent decompression of .jsonl.gz files |
|
|
216
|
+
| BatchWriter | Buffered writes to reduce I/O |
|
|
217
|
+
| Streaming | Early termination for large files |
|
|
218
|
+
| Parallel Queries | Concurrent multi-directory queries |
|
|
219
|
+
| Cursor Pagination | Efficient large result set handling |
|
|
220
|
+
|
|
221
|
+
### Internal Observability
|
|
222
|
+
|
|
223
|
+
| Feature | Description |
|
|
224
|
+
|---------|-------------|
|
|
225
|
+
| Cache Metrics | Hit/miss/eviction tracking |
|
|
226
|
+
| Query Timing | Slow query warnings (>500ms) |
|
|
227
|
+
| Circuit Breaker Logging | State transition visibility |
|
|
228
|
+
| Health Check Stats | Cache statistics in health output |
|
|
124
229
|
|
|
125
230
|
## Data Sources
|
|
126
231
|
|
|
127
232
|
### Local JSONL (Default)
|
|
128
233
|
|
|
129
|
-
|
|
234
|
+
Scans multiple telemetry directories:
|
|
130
235
|
- **Global**: `~/.claude/telemetry/` (always checked)
|
|
131
|
-
- **Project-local**: `.claude/telemetry/`, `telemetry/`, `.telemetry/`
|
|
132
|
-
|
|
133
|
-
This allows querying both global Claude Code telemetry and project-specific telemetry.
|
|
236
|
+
- **Project-local**: `.claude/telemetry/`, `telemetry/`, `.telemetry/`
|
|
134
237
|
|
|
135
|
-
File patterns:
|
|
136
|
-
- `traces-YYYY-MM-DD.jsonl`
|
|
137
|
-
- `logs-YYYY-MM-DD.jsonl`
|
|
138
|
-
- `metrics-YYYY-MM-DD.jsonl`
|
|
139
|
-
- `llm-events-YYYY-MM-DD.jsonl`
|
|
238
|
+
File patterns (supports gzip compression):
|
|
239
|
+
- `traces-YYYY-MM-DD.jsonl` / `.jsonl.gz`
|
|
240
|
+
- `logs-YYYY-MM-DD.jsonl` / `.jsonl.gz`
|
|
241
|
+
- `metrics-YYYY-MM-DD.jsonl` / `.jsonl.gz`
|
|
242
|
+
- `llm-events-YYYY-MM-DD.jsonl` / `.jsonl.gz`
|
|
140
243
|
|
|
141
244
|
### SigNoz Cloud (Optional)
|
|
142
245
|
|
|
143
|
-
When
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
246
|
+
When configured, queries SigNoz Cloud API with:
|
|
247
|
+
- Circuit breaker protection
|
|
248
|
+
- Cursor-based pagination
|
|
249
|
+
- Response time tracking
|
|
147
250
|
|
|
148
|
-
|
|
251
|
+
## OTLP Export
|
|
252
|
+
|
|
253
|
+
Export data in OpenTelemetry format:
|
|
254
|
+
|
|
255
|
+
```javascript
|
|
256
|
+
// Export traces
|
|
257
|
+
const otlpTraces = await backend.exportTracesOTLP({ startDate: "2026-01-28" });
|
|
258
|
+
|
|
259
|
+
// Export logs
|
|
260
|
+
const otlpLogs = await backend.exportLogsOTLP({ severity: "ERROR" });
|
|
261
|
+
|
|
262
|
+
// Export metrics
|
|
263
|
+
const otlpMetrics = await backend.exportMetricsOTLP({ metricName: "http.duration" });
|
|
264
|
+
```
|
|
149
265
|
|
|
150
266
|
## Development
|
|
151
267
|
|
|
@@ -153,15 +269,11 @@ Use `backend: "signoz"` in queries to explicitly use SigNoz, or `backend: "auto"
|
|
|
153
269
|
cd ~/.claude/mcp-servers/observability-toolkit
|
|
154
270
|
npm install
|
|
155
271
|
npm run build
|
|
156
|
-
npm test #
|
|
272
|
+
npm test # 911 tests
|
|
157
273
|
npm run start
|
|
158
274
|
```
|
|
159
275
|
|
|
160
276
|
## Documentation
|
|
161
277
|
|
|
162
|
-
- [
|
|
163
|
-
- [
|
|
164
|
-
- [security-audit.md](docs/security-audit.md) - Security audit report
|
|
165
|
-
- [observability-audit.md](docs/observability-audit.md) - Observability best practices audit
|
|
166
|
-
|
|
167
|
-
|
|
278
|
+
- [CHANGELOG.md](CHANGELOG.md) - Version history and changes
|
|
279
|
+
- [docs/ROADMAP.md](docs/ROADMAP.md) - Feature roadmap (all items complete)
|
package/dist/backends/index.d.ts
CHANGED
|
@@ -119,6 +119,55 @@ export interface NumericFilterCondition {
|
|
|
119
119
|
operator: 'gt' | 'gte' | 'lt' | 'lte' | 'eq';
|
|
120
120
|
value: number;
|
|
121
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* OTel GenAI agent and tool attribute names
|
|
124
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
125
|
+
*/
|
|
126
|
+
export declare const GENAI_AGENT_ATTRIBUTES: {
|
|
127
|
+
readonly AGENT_ID: "gen_ai.agent.id";
|
|
128
|
+
readonly AGENT_NAME: "gen_ai.agent.name";
|
|
129
|
+
readonly AGENT_DESCRIPTION: "gen_ai.agent.description";
|
|
130
|
+
};
|
|
131
|
+
export declare const GENAI_TOOL_ATTRIBUTES: {
|
|
132
|
+
readonly TOOL_NAME: "gen_ai.tool.name";
|
|
133
|
+
readonly TOOL_CALL_ID: "gen_ai.tool.call.id";
|
|
134
|
+
readonly TOOL_TYPE: "gen_ai.tool.type";
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* OTel GenAI request attribute names
|
|
138
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
139
|
+
*/
|
|
140
|
+
export declare const GENAI_REQUEST_ATTRIBUTES: {
|
|
141
|
+
readonly MODEL: "gen_ai.request.model";
|
|
142
|
+
readonly TEMPERATURE: "gen_ai.request.temperature";
|
|
143
|
+
readonly MAX_TOKENS: "gen_ai.request.max_tokens";
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* OTel GenAI response attribute names
|
|
147
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
148
|
+
*/
|
|
149
|
+
export declare const GENAI_RESPONSE_ATTRIBUTES: {
|
|
150
|
+
readonly MODEL: "gen_ai.response.model";
|
|
151
|
+
readonly FINISH_REASONS: "gen_ai.response.finish_reasons";
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* OTel GenAI usage attribute names
|
|
155
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
156
|
+
*/
|
|
157
|
+
export declare const GENAI_USAGE_ATTRIBUTES: {
|
|
158
|
+
readonly INPUT_TOKENS: "gen_ai.usage.input_tokens";
|
|
159
|
+
readonly OUTPUT_TOKENS: "gen_ai.usage.output_tokens";
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* OTel GenAI core attribute names
|
|
163
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
164
|
+
*/
|
|
165
|
+
export declare const GENAI_CORE_ATTRIBUTES: {
|
|
166
|
+
readonly OPERATION_NAME: "gen_ai.operation.name";
|
|
167
|
+
readonly PROVIDER_NAME: "gen_ai.provider.name";
|
|
168
|
+
readonly SYSTEM: "gen_ai.system";
|
|
169
|
+
readonly CONVERSATION_ID: "gen_ai.conversation.id";
|
|
170
|
+
};
|
|
122
171
|
export interface TraceQueryOptions extends QueryOptions {
|
|
123
172
|
traceId?: string;
|
|
124
173
|
serviceName?: string;
|
|
@@ -136,6 +185,18 @@ export interface TraceQueryOptions extends QueryOptions {
|
|
|
136
185
|
attributeNotExists?: string[];
|
|
137
186
|
/** Numeric comparison filters for attributes */
|
|
138
187
|
numericFilter?: NumericFilterCondition[];
|
|
188
|
+
/** Filter by agent ID (gen_ai.agent.id) */
|
|
189
|
+
agentId?: string;
|
|
190
|
+
/** Filter by agent name (gen_ai.agent.name) */
|
|
191
|
+
agentName?: string;
|
|
192
|
+
/** Filter by tool name (gen_ai.tool.name) */
|
|
193
|
+
toolName?: string;
|
|
194
|
+
/** Filter by tool call ID (gen_ai.tool.call.id) */
|
|
195
|
+
toolCallId?: string;
|
|
196
|
+
/** Filter by tool type (gen_ai.tool.type) */
|
|
197
|
+
toolType?: string;
|
|
198
|
+
/** Filter by operation name (gen_ai.operation.name) */
|
|
199
|
+
operationName?: GenAIOperationName;
|
|
139
200
|
}
|
|
140
201
|
export interface LogQueryOptions extends QueryOptions {
|
|
141
202
|
severity?: string;
|
|
@@ -168,11 +229,20 @@ export interface LLMEvent {
|
|
|
168
229
|
name: string;
|
|
169
230
|
attributes: Record<string, unknown>;
|
|
170
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* OTel GenAI operation types
|
|
234
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
235
|
+
*/
|
|
236
|
+
export type GenAIOperationName = 'chat' | 'embeddings' | 'invoke_agent' | 'execute_tool';
|
|
171
237
|
export interface LLMEventQueryOptions extends QueryOptions {
|
|
172
238
|
eventName?: string;
|
|
173
239
|
model?: string;
|
|
174
240
|
provider?: string;
|
|
175
241
|
search?: string;
|
|
242
|
+
/** Filter by OTel GenAI operation name (chat, embeddings, invoke_agent, execute_tool) */
|
|
243
|
+
operationName?: GenAIOperationName;
|
|
244
|
+
/** Filter by conversation/session ID (gen_ai.conversation.id) */
|
|
245
|
+
conversationId?: string;
|
|
176
246
|
}
|
|
177
247
|
export type { OTLPTraceExport, OTLPLogExport, OTLPMetricExport, } from '../lib/otlp-export.js';
|
|
178
248
|
export interface TelemetryBackend {
|
|
@@ -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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"}
|
package/dist/backends/index.js
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Backend interface for telemetry data sources
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* OTel GenAI agent and tool attribute names
|
|
6
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
7
|
+
*/
|
|
8
|
+
export const GENAI_AGENT_ATTRIBUTES = {
|
|
9
|
+
AGENT_ID: 'gen_ai.agent.id',
|
|
10
|
+
AGENT_NAME: 'gen_ai.agent.name',
|
|
11
|
+
AGENT_DESCRIPTION: 'gen_ai.agent.description',
|
|
12
|
+
};
|
|
13
|
+
export const GENAI_TOOL_ATTRIBUTES = {
|
|
14
|
+
TOOL_NAME: 'gen_ai.tool.name',
|
|
15
|
+
TOOL_CALL_ID: 'gen_ai.tool.call.id',
|
|
16
|
+
TOOL_TYPE: 'gen_ai.tool.type',
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* OTel GenAI request attribute names
|
|
20
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
21
|
+
*/
|
|
22
|
+
export const GENAI_REQUEST_ATTRIBUTES = {
|
|
23
|
+
MODEL: 'gen_ai.request.model',
|
|
24
|
+
TEMPERATURE: 'gen_ai.request.temperature',
|
|
25
|
+
MAX_TOKENS: 'gen_ai.request.max_tokens',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* OTel GenAI response attribute names
|
|
29
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
30
|
+
*/
|
|
31
|
+
export const GENAI_RESPONSE_ATTRIBUTES = {
|
|
32
|
+
MODEL: 'gen_ai.response.model',
|
|
33
|
+
FINISH_REASONS: 'gen_ai.response.finish_reasons',
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* OTel GenAI usage attribute names
|
|
37
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
38
|
+
*/
|
|
39
|
+
export const GENAI_USAGE_ATTRIBUTES = {
|
|
40
|
+
INPUT_TOKENS: 'gen_ai.usage.input_tokens',
|
|
41
|
+
OUTPUT_TOKENS: 'gen_ai.usage.output_tokens',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* OTel GenAI core attribute names
|
|
45
|
+
* https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
|
|
46
|
+
*/
|
|
47
|
+
export const GENAI_CORE_ATTRIBUTES = {
|
|
48
|
+
OPERATION_NAME: 'gen_ai.operation.name',
|
|
49
|
+
PROVIDER_NAME: 'gen_ai.provider.name',
|
|
50
|
+
SYSTEM: 'gen_ai.system',
|
|
51
|
+
CONVERSATION_ID: 'gen_ai.conversation.id',
|
|
52
|
+
};
|
|
5
53
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgIH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,mBAAmB;IAC/B,iBAAiB,EAAE,0BAA0B;CACrC,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS,EAAE,kBAAkB;IAC7B,YAAY,EAAE,qBAAqB;IACnC,SAAS,EAAE,kBAAkB;CACrB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,4BAA4B;IACzC,UAAU,EAAE,2BAA2B;CAC/B,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,KAAK,EAAE,uBAAuB;IAC9B,cAAc,EAAE,gCAAgC;CACxC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY,EAAE,2BAA2B;IACzC,aAAa,EAAE,4BAA4B;CACnC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc,EAAE,uBAAuB;IACvC,aAAa,EAAE,sBAAsB;IACrC,MAAM,EAAE,eAAe;IACvB,eAAe,EAAE,wBAAwB;CACjC,CAAC"}
|
|
@@ -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,EAOpB,eAAe,EACf,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAufpB,qBAAa,iBAAkB,YAAW,gBAAgB;IACxD,IAAI,SAAiB;IACrB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,UAAU,CAAU;gBAEhB,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc;IAK7D;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,iBAAiB,EAAE,UAAU,CAAC;IASrE;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBb,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"local-jsonl.d.ts","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}
|
|
@@ -424,7 +424,7 @@ export class LocalJsonlBackend {
|
|
|
424
424
|
logTiming();
|
|
425
425
|
return cached;
|
|
426
426
|
}
|
|
427
|
-
const files = getFilesInRange(this.telemetryDir, /traces-\d{4}-\d{2}-\d{2}\.jsonl
|
|
427
|
+
const files = getFilesInRange(this.telemetryDir, /traces-\d{4}-\d{2}-\d{2}\.jsonl(\.gz)?$/, options.startDate, options.endDate);
|
|
428
428
|
const results = [];
|
|
429
429
|
const limit = options.limit || 100;
|
|
430
430
|
const offset = options.offset || 0;
|
|
@@ -481,6 +481,19 @@ export class LocalJsonlBackend {
|
|
|
481
481
|
if (!applyNumericFilters(span.attributes, options.numericFilter))
|
|
482
482
|
return false;
|
|
483
483
|
}
|
|
484
|
+
// OTel GenAI agent/tool filters
|
|
485
|
+
if (options.agentId && span.attributes?.['gen_ai.agent.id'] !== options.agentId)
|
|
486
|
+
return false;
|
|
487
|
+
if (options.agentName && span.attributes?.['gen_ai.agent.name'] !== options.agentName)
|
|
488
|
+
return false;
|
|
489
|
+
if (options.toolName && span.attributes?.['gen_ai.tool.name'] !== options.toolName)
|
|
490
|
+
return false;
|
|
491
|
+
if (options.toolCallId && span.attributes?.['gen_ai.tool.call.id'] !== options.toolCallId)
|
|
492
|
+
return false;
|
|
493
|
+
if (options.toolType && span.attributes?.['gen_ai.tool.type'] !== options.toolType)
|
|
494
|
+
return false;
|
|
495
|
+
if (options.operationName && span.attributes?.['gen_ai.operation.name'] !== options.operationName)
|
|
496
|
+
return false;
|
|
484
497
|
return true;
|
|
485
498
|
};
|
|
486
499
|
for (const file of files) {
|
|
@@ -552,7 +565,7 @@ export class LocalJsonlBackend {
|
|
|
552
565
|
logTiming();
|
|
553
566
|
return cached;
|
|
554
567
|
}
|
|
555
|
-
const files = getFilesInRange(this.telemetryDir, /logs-\d{4}-\d{2}-\d{2}\.jsonl
|
|
568
|
+
const files = getFilesInRange(this.telemetryDir, /logs-\d{4}-\d{2}-\d{2}\.jsonl(\.gz)?$/, options.startDate, options.endDate);
|
|
556
569
|
const results = [];
|
|
557
570
|
const limit = options.limit || 100;
|
|
558
571
|
const offset = options.offset || 0;
|
|
@@ -667,7 +680,7 @@ export class LocalJsonlBackend {
|
|
|
667
680
|
logTiming();
|
|
668
681
|
return cached;
|
|
669
682
|
}
|
|
670
|
-
const files = getFilesInRange(this.telemetryDir, /metrics-\d{4}-\d{2}-\d{2}\.jsonl
|
|
683
|
+
const files = getFilesInRange(this.telemetryDir, /metrics-\d{4}-\d{2}-\d{2}\.jsonl(\.gz)?$/, options.startDate, options.endDate);
|
|
671
684
|
const results = [];
|
|
672
685
|
const limit = options.limit || 100;
|
|
673
686
|
const offset = options.offset || 0;
|
|
@@ -839,7 +852,7 @@ export class LocalJsonlBackend {
|
|
|
839
852
|
logTiming();
|
|
840
853
|
return cached;
|
|
841
854
|
}
|
|
842
|
-
const files = getFilesInRange(this.telemetryDir, /llm-events-\d{4}-\d{2}-\d{2}\.jsonl
|
|
855
|
+
const files = getFilesInRange(this.telemetryDir, /llm-events-\d{4}-\d{2}-\d{2}\.jsonl(\.gz)?$/, options.startDate, options.endDate);
|
|
843
856
|
const results = [];
|
|
844
857
|
const limit = options.limit || 100;
|
|
845
858
|
const offset = options.offset || 0;
|
|
@@ -855,10 +868,23 @@ export class LocalJsonlBackend {
|
|
|
855
868
|
return false;
|
|
856
869
|
}
|
|
857
870
|
if (options.provider) {
|
|
858
|
-
|
|
871
|
+
// OTel GenAI compliant: gen_ai.provider.name -> gen_ai.system -> provider
|
|
872
|
+
const provider = event.attributes?.['gen_ai.provider.name'] ||
|
|
873
|
+
event.attributes?.['gen_ai.system'] ||
|
|
874
|
+
event.attributes?.['provider'];
|
|
859
875
|
if (provider !== options.provider)
|
|
860
876
|
return false;
|
|
861
877
|
}
|
|
878
|
+
if (options.operationName) {
|
|
879
|
+
const opName = event.attributes?.['gen_ai.operation.name'];
|
|
880
|
+
if (opName !== options.operationName)
|
|
881
|
+
return false;
|
|
882
|
+
}
|
|
883
|
+
if (options.conversationId) {
|
|
884
|
+
const convId = event.attributes?.['gen_ai.conversation.id'];
|
|
885
|
+
if (convId !== options.conversationId)
|
|
886
|
+
return false;
|
|
887
|
+
}
|
|
862
888
|
if (options.search) {
|
|
863
889
|
const searchLower = options.search.toLowerCase();
|
|
864
890
|
const attrStr = JSON.stringify(event.attributes).toLowerCase();
|