observability-toolkit 1.6.0 → 1.8.2

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 (114) hide show
  1. package/README.md +221 -91
  2. package/dist/backends/index.d.ts +146 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +65 -1
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/local-jsonl-boolean-search.test.js +1 -23
  7. package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
  8. package/dist/backends/local-jsonl.d.ts +4 -1
  9. package/dist/backends/local-jsonl.d.ts.map +1 -1
  10. package/dist/backends/local-jsonl.js +216 -6
  11. package/dist/backends/local-jsonl.js.map +1 -1
  12. package/dist/backends/local-jsonl.test.js +715 -26
  13. package/dist/backends/local-jsonl.test.js.map +1 -1
  14. package/dist/backends/signoz-api.d.ts +32 -0
  15. package/dist/backends/signoz-api.d.ts.map +1 -1
  16. package/dist/backends/signoz-api.js +237 -33
  17. package/dist/backends/signoz-api.js.map +1 -1
  18. package/dist/backends/signoz-api.test.js +410 -63
  19. package/dist/backends/signoz-api.test.js.map +1 -1
  20. package/dist/lib/constants.d.ts +16 -0
  21. package/dist/lib/constants.d.ts.map +1 -1
  22. package/dist/lib/constants.js +121 -5
  23. package/dist/lib/constants.js.map +1 -1
  24. package/dist/lib/constants.test.js +202 -15
  25. package/dist/lib/constants.test.js.map +1 -1
  26. package/dist/lib/error-sanitizer.d.ts +57 -0
  27. package/dist/lib/error-sanitizer.d.ts.map +1 -0
  28. package/dist/lib/error-sanitizer.js +197 -0
  29. package/dist/lib/error-sanitizer.js.map +1 -0
  30. package/dist/lib/error-sanitizer.test.d.ts +8 -0
  31. package/dist/lib/error-sanitizer.test.d.ts.map +1 -0
  32. package/dist/lib/error-sanitizer.test.js +342 -0
  33. package/dist/lib/error-sanitizer.test.js.map +1 -0
  34. package/dist/lib/file-utils.d.ts +210 -0
  35. package/dist/lib/file-utils.d.ts.map +1 -1
  36. package/dist/lib/file-utils.js +529 -14
  37. package/dist/lib/file-utils.js.map +1 -1
  38. package/dist/lib/file-utils.test.js +657 -3
  39. package/dist/lib/file-utils.test.js.map +1 -1
  40. package/dist/lib/indexer.d.ts +19 -1
  41. package/dist/lib/indexer.d.ts.map +1 -1
  42. package/dist/lib/indexer.js +84 -8
  43. package/dist/lib/indexer.js.map +1 -1
  44. package/dist/lib/indexer.test.js +187 -16
  45. package/dist/lib/indexer.test.js.map +1 -1
  46. package/dist/lib/input-validator.d.ts +98 -0
  47. package/dist/lib/input-validator.d.ts.map +1 -0
  48. package/dist/lib/input-validator.js +245 -0
  49. package/dist/lib/input-validator.js.map +1 -0
  50. package/dist/lib/input-validator.test.d.ts +2 -0
  51. package/dist/lib/input-validator.test.d.ts.map +1 -0
  52. package/dist/lib/input-validator.test.js +287 -0
  53. package/dist/lib/input-validator.test.js.map +1 -0
  54. package/dist/lib/query-sanitizer.d.ts +95 -0
  55. package/dist/lib/query-sanitizer.d.ts.map +1 -0
  56. package/dist/lib/query-sanitizer.js +187 -0
  57. package/dist/lib/query-sanitizer.js.map +1 -0
  58. package/dist/lib/query-sanitizer.test.d.ts +5 -0
  59. package/dist/lib/query-sanitizer.test.d.ts.map +1 -0
  60. package/dist/lib/query-sanitizer.test.js +299 -0
  61. package/dist/lib/query-sanitizer.test.js.map +1 -0
  62. package/dist/server.d.ts +49 -1
  63. package/dist/server.d.ts.map +1 -1
  64. package/dist/server.js +97 -13
  65. package/dist/server.js.map +1 -1
  66. package/dist/server.test.js +202 -0
  67. package/dist/server.test.js.map +1 -1
  68. package/dist/test-helpers/file-utils.d.ts +26 -0
  69. package/dist/test-helpers/file-utils.d.ts.map +1 -0
  70. package/dist/test-helpers/file-utils.js +43 -0
  71. package/dist/test-helpers/file-utils.js.map +1 -0
  72. package/dist/test-helpers/mock-backends.d.ts +28 -0
  73. package/dist/test-helpers/mock-backends.d.ts.map +1 -0
  74. package/dist/test-helpers/mock-backends.js +31 -0
  75. package/dist/test-helpers/mock-backends.js.map +1 -0
  76. package/dist/tools/health-check.js +1 -1
  77. package/dist/tools/health-check.js.map +1 -1
  78. package/dist/tools/index.d.ts +1 -0
  79. package/dist/tools/index.d.ts.map +1 -1
  80. package/dist/tools/index.js +1 -0
  81. package/dist/tools/index.js.map +1 -1
  82. package/dist/tools/query-evaluations.d.ts +183 -0
  83. package/dist/tools/query-evaluations.d.ts.map +1 -0
  84. package/dist/tools/query-evaluations.js +351 -0
  85. package/dist/tools/query-evaluations.js.map +1 -0
  86. package/dist/tools/query-evaluations.test.d.ts +5 -0
  87. package/dist/tools/query-evaluations.test.d.ts.map +1 -0
  88. package/dist/tools/query-evaluations.test.js +743 -0
  89. package/dist/tools/query-evaluations.test.js.map +1 -0
  90. package/dist/tools/query-llm-events.d.ts +62 -11
  91. package/dist/tools/query-llm-events.d.ts.map +1 -1
  92. package/dist/tools/query-llm-events.js +97 -37
  93. package/dist/tools/query-llm-events.js.map +1 -1
  94. package/dist/tools/query-llm-events.test.js +253 -0
  95. package/dist/tools/query-llm-events.test.js.map +1 -1
  96. package/dist/tools/query-logs.d.ts +32 -18
  97. package/dist/tools/query-logs.d.ts.map +1 -1
  98. package/dist/tools/query-logs.js +77 -44
  99. package/dist/tools/query-logs.js.map +1 -1
  100. package/dist/tools/query-logs.test.js +226 -64
  101. package/dist/tools/query-logs.test.js.map +1 -1
  102. package/dist/tools/query-metrics.d.ts +24 -24
  103. package/dist/tools/query-metrics.d.ts.map +1 -1
  104. package/dist/tools/query-metrics.js +102 -54
  105. package/dist/tools/query-metrics.js.map +1 -1
  106. package/dist/tools/query-metrics.test.js +35 -36
  107. package/dist/tools/query-metrics.test.js.map +1 -1
  108. package/dist/tools/query-traces.d.ts +66 -22
  109. package/dist/tools/query-traces.d.ts.map +1 -1
  110. package/dist/tools/query-traces.js +86 -42
  111. package/dist/tools/query-traces.js.map +1 -1
  112. package/dist/tools/query-traces.test.js +458 -36
  113. package/dist/tools/query-traces.test.js.map +1 -1
  114. package/package.json +1 -3
package/README.md CHANGED
@@ -18,134 +18,266 @@ claude mcp add observability-toolkit -- node ~/.claude/mcp-servers/observability
18
18
 
19
19
  | Tool | Description |
20
20
  |------|-------------|
21
- | `obs_query_traces` | Query traces from local JSONL or SigNoz |
22
- | `obs_query_metrics` | Query metrics with aggregation support |
23
- | `obs_query_logs` | Query logs by severity, search text, trace ID |
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_query_evaluations` | Query evaluation events with aggregations and groupBy |
26
+ | `obs_health_check` | Check telemetry system health with cache statistics |
26
27
  | `obs_context_stats` | Get context window utilization stats |
27
28
  | `obs_get_trace_url` | Get SigNoz trace viewer URL (requires SigNoz) |
28
- | `obs_setup_claudeignore` | Add entries to .claudeignore (telemetry, test files, coverage) |
29
+ | `obs_setup_claudeignore` | Add entries to .claudeignore |
29
30
 
30
31
  ## Configuration
31
32
 
32
- | Variable | Description | Required |
33
- |----------|-------------|----------|
34
- | `TELEMETRY_DIR` | Local telemetry directory | No (default: `~/.claude/telemetry`) |
35
- | `SIGNOZ_URL` | SigNoz instance URL | No (enables SigNoz integration) |
36
- | `SIGNOZ_API_KEY` | SigNoz API key | No (required if using SigNoz) |
37
-
38
- The server works standalone with local JSONL files. SigNoz integration is optional.
33
+ | Variable | Description | Default |
34
+ |----------|-------------|---------|
35
+ | `TELEMETRY_DIR` | Local telemetry directory | `~/.claude/telemetry` |
36
+ | `SIGNOZ_URL` | SigNoz instance URL | - |
37
+ | `SIGNOZ_API_KEY` | SigNoz API key | - |
38
+ | `CACHE_TTL_MS` | Query cache TTL in milliseconds | `60000` |
39
+ | `RETENTION_DAYS` | Days to retain telemetry files | `7` |
39
40
 
40
41
  ## Usage Examples
41
42
 
42
- ### Query traces
43
+ ### Query Traces
43
44
 
44
- ```
45
- obs_query_traces({ backend: "local", limit: 10 })
46
- obs_query_traces({ traceId: "abc123..." })
47
- obs_query_traces({ serviceName: "claude-code", minDurationMs: 100 })
48
- obs_query_traces({ attributeFilter: { "agent.source_type": "lazy" } })
49
- ```
45
+ ```javascript
46
+ // Basic query
47
+ obs_query_traces({ limit: 10 })
50
48
 
51
- ### Filterable Attributes
49
+ // Filter by trace ID
50
+ obs_query_traces({ traceId: "abc123..." })
52
51
 
53
- Use `attributeFilter` to query by span attributes:
52
+ // Filter by service and duration
53
+ obs_query_traces({ serviceName: "claude-code", minDurationMs: 100 })
54
54
 
55
- | Attribute | Values | Description |
56
- |-----------|--------|-------------|
57
- | `agent.type` | string | Agent name (e.g., "Explore", "auto-error-resolver") |
58
- | `agent.source_type` | `active`, `lazy`, `builtin`, `settings` | Where agent is defined |
59
- | `agent.category` | string | Agent category (e.g., "error-handling", "code") |
60
- | `plugin.name` | string | Skill/plugin name |
61
- | `plugin.source_type` | `active`, `lazy`, `settings` | Where skill is defined |
62
- | `plugin.category` | string | Skill category |
63
- | `mcp.server` | string | MCP server name |
64
- | `mcp.tool` | string | MCP tool name |
65
- | `builtin.tool` | string | Built-in tool name (Read, Write, Bash, etc.) |
66
- | `hook.type` | `agent`, `plugin`, `mcp`, `builtin` | Hook handler type |
55
+ // Regex pattern matching
56
+ obs_query_traces({ spanNameRegex: "^http\\..*" })
57
+
58
+ // Numeric attribute filtering
59
+ obs_query_traces({
60
+ numericFilter: [
61
+ { attribute: "http.status_code", operator: "gte", value: 400 }
62
+ ]
63
+ })
64
+
65
+ // Existence checks
66
+ obs_query_traces({
67
+ attributeExists: ["error.message"],
68
+ attributeNotExists: ["http.response.body"]
69
+ })
70
+
71
+ // OTel GenAI agent/tool filters
72
+ obs_query_traces({ agentName: "Explore", toolName: "Read" })
73
+ obs_query_traces({ operationName: "execute_tool", toolCallId: "toolu_123" })
74
+ ```
67
75
 
68
- ### Query logs
76
+ ### Query Logs
69
77
 
70
- ```
78
+ ```javascript
79
+ // Basic severity filter
71
80
  obs_query_logs({ severity: "ERROR", limit: 20 })
72
- obs_query_logs({ search: "timeout", startDate: "2026-01-28" })
73
- obs_query_logs({ traceId: "abc123..." })
81
+
82
+ // Boolean search (AND)
83
+ obs_query_logs({
84
+ searchTerms: ["timeout", "connection"],
85
+ searchOperator: "AND"
86
+ })
87
+
88
+ // Boolean search (OR)
89
+ obs_query_logs({
90
+ searchTerms: ["error", "warning", "critical"],
91
+ searchOperator: "OR"
92
+ })
93
+
94
+ // Field extraction from JSON logs
95
+ obs_query_logs({
96
+ extractFields: ["user.id", "request.method", "response.status"]
97
+ })
98
+
99
+ // Exclude patterns
100
+ obs_query_logs({
101
+ search: "error",
102
+ excludeSearch: "health-check"
103
+ })
74
104
  ```
75
105
 
76
- ### Query metrics
106
+ ### Query Metrics
77
107
 
78
- ```
108
+ ```javascript
109
+ // Basic query
79
110
  obs_query_metrics({ metricName: "session.context.size" })
80
- obs_query_metrics({ metricName: "gen_ai.client.token.usage", aggregation: "sum" })
81
- ```
82
111
 
83
- ### Query LLM events
84
-
85
- ```
86
- obs_query_llm_events({})
87
- obs_query_llm_events({ model: "claude-opus-4-5", limit: 10 })
88
- obs_query_llm_events({ provider: "anthropic", startDate: "2026-01-28" })
112
+ // Aggregations
113
+ obs_query_metrics({ metricName: "http.duration", aggregation: "avg" })
114
+ obs_query_metrics({ metricName: "http.duration", aggregation: "p95" })
115
+ obs_query_metrics({ metricName: "requests.count", aggregation: "rate" })
116
+
117
+ // Time bucket grouping
118
+ obs_query_metrics({
119
+ metricName: "token.usage",
120
+ aggregation: "sum",
121
+ timeBucket: "1h",
122
+ groupBy: ["model"]
123
+ })
124
+
125
+ // Percentiles
126
+ obs_query_metrics({ metricName: "latency", aggregation: "p99" })
89
127
  ```
90
128
 
91
- ### Health check
129
+ ### Query LLM Events
92
130
 
93
- ```
94
- obs_health_check({ verbose: true })
95
- ```
131
+ ```javascript
132
+ // Basic query
133
+ obs_query_llm_events({ limit: 20 })
96
134
 
97
- ### Context stats
135
+ // Filter by model and provider
136
+ obs_query_llm_events({ model: "claude-3-opus", provider: "anthropic" })
98
137
 
99
- ```
100
- obs_context_stats({})
101
- obs_context_stats({ sessionId: "abc123...", includeCost: true })
102
- ```
138
+ // OTel GenAI operation types
139
+ obs_query_llm_events({ operationName: "chat" })
140
+ obs_query_llm_events({ operationName: "invoke_agent" })
103
141
 
104
- ### Get trace URL
142
+ // Filter by conversation
143
+ obs_query_llm_events({ conversationId: "conv-abc123" })
105
144
 
106
- ```
107
- obs_get_trace_url({ traceId: "abc123..." })
145
+ // Combine filters
146
+ obs_query_llm_events({
147
+ operationName: "chat",
148
+ provider: "anthropic",
149
+ conversationId: "conv-abc123"
150
+ })
108
151
  ```
109
152
 
110
- ### Setup .claudeignore
153
+ ### Health Check with Cache Stats
111
154
 
112
- ```
113
- obs_setup_claudeignore({})
114
- obs_setup_claudeignore({ dryRun: true })
115
- obs_setup_claudeignore({ includeDefaults: false, entry: "custom/" })
116
- obs_setup_claudeignore({ entries: ["logs/", "tmp/", "*.bak"] })
155
+ ```javascript
156
+ obs_health_check({ verbose: true })
157
+
158
+ // Returns:
159
+ {
160
+ "status": "ok",
161
+ "backends": { ... },
162
+ "cache": {
163
+ "traces": { "hits": 10, "misses": 5, "hitRate": 0.67, "size": 15, "evictions": 0 },
164
+ "logs": { "hits": 8, "misses": 12, "hitRate": 0.4, "size": 20, "evictions": 2 },
165
+ "metrics": { "hits": 0, "misses": 0, "hitRate": 0, "size": 0, "evictions": 0 },
166
+ "llmEvents": { "hits": 0, "misses": 0, "hitRate": 0, "size": 0, "evictions": 0 }
167
+ }
168
+ }
117
169
  ```
118
170
 
119
- Default entries added when `includeDefaults: true` (default):
120
- - `telemetry/` - telemetry data
121
- - `*.test.ts` - TypeScript test files
122
- - `*.test.js` - JavaScript test files
123
- - `coverage/` - coverage reports
171
+ ## Features
172
+
173
+ ### Query Capabilities
174
+
175
+ | Feature | Description |
176
+ |---------|-------------|
177
+ | Percentile Aggregations | p50, p95, p99 for metrics |
178
+ | Time Bucket Grouping | 1m, 5m, 1h, 1d buckets for trend analysis |
179
+ | Rate Calculations | Per-second rate of change |
180
+ | Numeric Operators | gt, gte, lt, lte, eq for attribute filtering |
181
+ | Regex Patterns | Advanced span name filtering |
182
+ | Boolean Search | AND/OR operators for log queries |
183
+ | Field Extraction | Extract JSON paths from structured logs |
184
+ | Negation Filters | Exclude matching spans/logs |
185
+ | Existence Checks | Filter by attribute presence |
186
+
187
+ ### OTel Compliance
188
+
189
+ | Feature | Description |
190
+ |---------|-------------|
191
+ | severityNumber | Standard OTel severity levels |
192
+ | statusCode | UNSET, OK, ERROR for spans |
193
+ | Histogram Buckets | Full histogram distribution support |
194
+ | InstrumentationScope | Library/module metadata |
195
+ | Span Links | Cross-trace relationships |
196
+ | Exemplars | Metric-to-trace correlation |
197
+ | Aggregation Temporality | DELTA, CUMULATIVE support |
198
+
199
+ ### OTel GenAI Semantic Conventions (10/10 compliance)
200
+
201
+ | Feature | Description |
202
+ |---------|-------------|
203
+ | `gen_ai.operation.name` | Filter by chat, embeddings, invoke_agent, execute_tool |
204
+ | `gen_ai.provider.name` | Provider fallback: gen_ai.provider.name → gen_ai.system → provider |
205
+ | `gen_ai.conversation.id` | Filter LLM events by conversation ID |
206
+ | `gen_ai.agent.id/name` | Filter traces by agent attributes |
207
+ | `gen_ai.tool.name/call.id` | Filter traces by tool attributes |
208
+ | `gen_ai.response.model` | Actual model that responded |
209
+ | `gen_ai.response.finish_reasons` | Why generation stopped |
210
+ | `gen_ai.request.temperature` | Sampling temperature |
211
+ | `gen_ai.request.max_tokens` | Maximum output tokens |
212
+ | Percentiles | p50, p95, p99, rate aggregations |
213
+
214
+ ### Performance
215
+
216
+ | Feature | Description |
217
+ |---------|-------------|
218
+ | Query Caching | LRU cache with configurable TTL |
219
+ | File Indexing | .idx sidecars for fast lookups |
220
+ | Gzip Support | Transparent decompression of .jsonl.gz files |
221
+ | BatchWriter | Buffered writes to reduce I/O |
222
+ | Streaming | Early termination for large files |
223
+ | Parallel Queries | Concurrent multi-directory queries |
224
+ | Cursor Pagination | Efficient large result set handling |
225
+
226
+ ### Internal Observability
227
+
228
+ | Feature | Description |
229
+ |---------|-------------|
230
+ | Cache Metrics | Hit/miss/eviction tracking |
231
+ | Query Timing | Slow query warnings (>500ms) |
232
+ | Circuit Breaker Logging | State transition visibility |
233
+ | Health Check Stats | Cache statistics in health output |
234
+
235
+ ### Security
236
+
237
+ | Feature | Description |
238
+ |---------|-------------|
239
+ | Query Escaping | ClickHouse-specific escaping, 22-pattern blocklist |
240
+ | Memory Limits | MAX_RESULTS_IN_MEMORY=10000, streaming aggregation |
241
+ | Input Validation | limit≤1000, date range≤365 days, regex limits |
242
+ | Type Safety | NaN/Infinity rejection, explicit type assertions |
243
+
244
+ See [docs/security.md](docs/security.md) for details.
124
245
 
125
246
  ## Data Sources
126
247
 
127
248
  ### Local JSONL (Default)
128
249
 
129
- Automatically scans multiple telemetry directories:
250
+ Scans multiple telemetry directories:
130
251
  - **Global**: `~/.claude/telemetry/` (always checked)
131
- - **Project-local**: `.claude/telemetry/`, `telemetry/`, `.telemetry/` (checked if they exist in cwd)
132
-
133
- This allows querying both global Claude Code telemetry and project-specific telemetry.
252
+ - **Project-local**: `.claude/telemetry/`, `telemetry/`, `.telemetry/`
134
253
 
135
- File patterns:
136
- - `traces-YYYY-MM-DD.jsonl` - Trace spans
137
- - `logs-YYYY-MM-DD.jsonl` - Log records
138
- - `metrics-YYYY-MM-DD.jsonl` - Metric data points
139
- - `llm-events-YYYY-MM-DD.jsonl` - LLM events
254
+ File patterns (supports gzip compression):
255
+ - `traces-YYYY-MM-DD.jsonl` / `.jsonl.gz`
256
+ - `logs-YYYY-MM-DD.jsonl` / `.jsonl.gz`
257
+ - `metrics-YYYY-MM-DD.jsonl` / `.jsonl.gz`
258
+ - `llm-events-YYYY-MM-DD.jsonl` / `.jsonl.gz`
140
259
 
141
260
  ### SigNoz Cloud (Optional)
142
261
 
143
- When `SIGNOZ_URL` and `SIGNOZ_API_KEY` are configured, queries SigNoz Cloud API:
144
- - Traces: `/api/v3/traces`
145
- - Logs: `/api/v3/logs`
146
- - Metrics: `/api/v3/query_range`
262
+ When configured, queries SigNoz Cloud API with:
263
+ - Circuit breaker protection
264
+ - Cursor-based pagination
265
+ - Response time tracking
147
266
 
148
- Use `backend: "signoz"` in queries to explicitly use SigNoz, or `backend: "auto"` to try both.
267
+ ## OTLP Export
268
+
269
+ Export data in OpenTelemetry format:
270
+
271
+ ```javascript
272
+ // Export traces
273
+ const otlpTraces = await backend.exportTracesOTLP({ startDate: "2026-01-28" });
274
+
275
+ // Export logs
276
+ const otlpLogs = await backend.exportLogsOTLP({ severity: "ERROR" });
277
+
278
+ // Export metrics
279
+ const otlpMetrics = await backend.exportMetricsOTLP({ metricName: "http.duration" });
280
+ ```
149
281
 
150
282
  ## Development
151
283
 
@@ -153,15 +285,13 @@ Use `backend: "signoz"` in queries to explicitly use SigNoz, or `backend: "auto"
153
285
  cd ~/.claude/mcp-servers/observability-toolkit
154
286
  npm install
155
287
  npm run build
156
- npm test # 617 tests
288
+ npm test # 1152 tests
157
289
  npm run start
158
290
  ```
159
291
 
160
292
  ## Documentation
161
293
 
162
- - [ROADMAP.md](docs/ROADMAP.md) - Improvement roadmap with priorities
163
- - [code-review.md](docs/code-review.md) - Code review findings
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
-
294
+ - [CHANGELOG.md](CHANGELOG.md) - Version history and changes
295
+ - [docs/security.md](docs/security.md) - Security controls and hardening
296
+ - [docs/ROADMAP.md](docs/ROADMAP.md) - Feature roadmap
297
+ - [docs/SESSION_HISTORY.md](docs/SESSION_HISTORY.md) - Development session logs
@@ -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,95 @@ 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;
246
+ }
247
+ /**
248
+ * OTel GenAI evaluation attribute names
249
+ * https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/
250
+ */
251
+ export declare const GENAI_EVALUATION_ATTRIBUTES: {
252
+ readonly NAME: "gen_ai.evaluation.name";
253
+ readonly SCORE_VALUE: "gen_ai.evaluation.score.value";
254
+ readonly SCORE_LABEL: "gen_ai.evaluation.score.label";
255
+ readonly EXPLANATION: "gen_ai.evaluation.explanation";
256
+ /** Custom extension: Score unit/scale (e.g., "ratio_0_1", "percentage") */
257
+ readonly SCORE_UNIT: "gen_ai.evaluation.score.unit";
258
+ /** Custom extension: Identity of the evaluator (model, human, system) */
259
+ readonly EVALUATOR: "gen_ai.evaluation.evaluator";
260
+ /** Custom extension: Type of evaluator */
261
+ readonly EVALUATOR_TYPE: "gen_ai.evaluation.evaluator.type";
262
+ };
263
+ /** Evaluator types for LLM quality evaluation */
264
+ export type EvaluatorType = 'llm' | 'human' | 'rule' | 'classifier';
265
+ /**
266
+ * Normalized evaluation result from gen_ai.evaluation.result events
267
+ */
268
+ export interface EvaluationResult {
269
+ /** ISO timestamp of the evaluation */
270
+ timestamp: string;
271
+ /** Evaluation metric name (gen_ai.evaluation.name) - required */
272
+ evaluationName: string;
273
+ /** Numeric score (gen_ai.evaluation.score.value) */
274
+ scoreValue?: number;
275
+ /** Human-readable score label (gen_ai.evaluation.score.label) */
276
+ scoreLabel?: string;
277
+ /** Score unit/scale (e.g., "ratio_0_1", "percentage") */
278
+ scoreUnit?: string;
279
+ /** Free-form explanation (gen_ai.evaluation.explanation) */
280
+ explanation?: string;
281
+ /** Identity of the evaluator - model name, human ID, or system name */
282
+ evaluator?: string;
283
+ /** Type of evaluator (llm, human, rule, classifier) */
284
+ evaluatorType?: EvaluatorType;
285
+ /** Response ID for correlation (gen_ai.response.id) */
286
+ responseId?: string;
287
+ /** Trace ID for correlation */
288
+ traceId?: string;
289
+ /** Span ID for correlation */
290
+ spanId?: string;
291
+ /** Session ID for session-scoped queries */
292
+ sessionId?: string;
293
+ }
294
+ /** Aggregation functions for evaluation scores */
295
+ export type EvaluationAggregation = 'avg' | 'min' | 'max' | 'count' | 'p50' | 'p95' | 'p99';
296
+ /** Fields that can be used for groupBy in evaluation queries */
297
+ export type EvaluationGroupByField = 'evaluationName' | 'scoreLabel' | 'evaluator';
298
+ export interface EvaluationQueryOptions extends QueryOptions {
299
+ /** Filter by evaluation metric name (gen_ai.evaluation.name) */
300
+ evaluationName?: string;
301
+ /** Minimum score threshold */
302
+ scoreMin?: number;
303
+ /** Maximum score threshold */
304
+ scoreMax?: number;
305
+ /** Filter by score label (e.g., "pass", "fail", "relevant") */
306
+ scoreLabel?: string;
307
+ /** Filter by evaluator identity (exact match, e.g., "gpt-4-as-judge") */
308
+ evaluator?: string;
309
+ /** Filter by evaluator type (llm, human, rule, classifier) */
310
+ evaluatorType?: EvaluatorType;
311
+ /** Filter by response ID for correlation */
312
+ responseId?: string;
313
+ /** Filter by trace ID */
314
+ traceId?: string;
315
+ /** Filter by session ID */
316
+ sessionId?: string;
317
+ /** Aggregation function for scores */
318
+ aggregation?: EvaluationAggregation;
319
+ /** Group aggregations by these fields */
320
+ groupBy?: EvaluationGroupByField[];
176
321
  }
177
322
  export type { OTLPTraceExport, OTLPLogExport, OTLPMetricExport, } from '../lib/otlp-export.js';
178
323
  export interface TelemetryBackend {
@@ -181,6 +326,7 @@ export interface TelemetryBackend {
181
326
  queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
182
327
  queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
183
328
  queryLLMEvents?(options: LLMEventQueryOptions): Promise<LLMEvent[]>;
329
+ queryEvaluations?(options: EvaluationQueryOptions): Promise<EvaluationResult[]>;
184
330
  healthCheck(): Promise<{
185
331
  status: 'ok' | 'error';
186
332
  message?: string;
@@ -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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"}
@@ -1,5 +1,69 @@
1
1
  /**
2
2
  * Backend interface for telemetry data sources
3
3
  */
4
- export {};
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
+ };
53
+ /**
54
+ * OTel GenAI evaluation attribute names
55
+ * https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-events/
56
+ */
57
+ export const GENAI_EVALUATION_ATTRIBUTES = {
58
+ NAME: 'gen_ai.evaluation.name',
59
+ SCORE_VALUE: 'gen_ai.evaluation.score.value',
60
+ SCORE_LABEL: 'gen_ai.evaluation.score.label',
61
+ EXPLANATION: 'gen_ai.evaluation.explanation',
62
+ /** Custom extension: Score unit/scale (e.g., "ratio_0_1", "percentage") */
63
+ SCORE_UNIT: 'gen_ai.evaluation.score.unit',
64
+ /** Custom extension: Identity of the evaluator (model, human, system) */
65
+ EVALUATOR: 'gen_ai.evaluation.evaluator',
66
+ /** Custom extension: Type of evaluator */
67
+ EVALUATOR_TYPE: 'gen_ai.evaluation.evaluator.type',
68
+ };
5
69
  //# 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;AAqFX;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,+BAA+B;IAC5C,2EAA2E;IAC3E,UAAU,EAAE,8BAA8B;IAC1C,yEAAyE;IACzE,SAAS,EAAE,6BAA6B;IACxC,0CAA0C;IAC1C,cAAc,EAAE,kCAAkC;CAC1C,CAAC"}