observability-toolkit 1.3.0 → 1.4.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 +52 -3
- package/dist/backends/index.d.ts +15 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/local-jsonl.d.ts +27 -0
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +202 -30
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.js +1081 -1
- 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.integration.test.d.ts +8 -0
- package/dist/backends/signoz-api.integration.test.d.ts.map +1 -0
- package/dist/backends/signoz-api.integration.test.js +137 -0
- package/dist/backends/signoz-api.integration.test.js.map +1 -0
- package/dist/backends/signoz-api.js +58 -42
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.js +504 -328
- package/dist/backends/signoz-api.test.js.map +1 -1
- package/dist/lib/constants.d.ts +27 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +70 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/constants.test.js +183 -1
- package/dist/lib/constants.test.js.map +1 -1
- package/dist/lib/file-utils.d.ts +53 -1
- package/dist/lib/file-utils.d.ts.map +1 -1
- package/dist/lib/file-utils.js +142 -3
- package/dist/lib/file-utils.js.map +1 -1
- package/dist/lib/file-utils.test.js +228 -1
- package/dist/lib/file-utils.test.js.map +1 -1
- package/dist/server.js +48 -65
- package/dist/server.js.map +1 -1
- package/dist/server.test.d.ts +5 -0
- package/dist/server.test.d.ts.map +1 -0
- package/dist/server.test.js +547 -0
- package/dist/server.test.js.map +1 -0
- package/dist/tools/context-stats.test.js +126 -0
- package/dist/tools/context-stats.test.js.map +1 -1
- package/dist/tools/get-trace-url.d.ts.map +1 -1
- package/dist/tools/get-trace-url.js +5 -1
- package/dist/tools/get-trace-url.js.map +1 -1
- package/dist/tools/get-trace-url.test.js +12 -6
- package/dist/tools/get-trace-url.test.js.map +1 -1
- package/dist/tools/health-check.d.ts +9 -2
- package/dist/tools/health-check.d.ts.map +1 -1
- package/dist/tools/health-check.js +66 -27
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/health-check.test.js +89 -96
- package/dist/tools/health-check.test.js.map +1 -1
- package/dist/tools/query-llm-events.d.ts +2 -2
- package/dist/tools/query-llm-events.js +3 -3
- package/dist/tools/query-llm-events.js.map +1 -1
- package/dist/tools/query-logs.d.ts +8 -6
- package/dist/tools/query-logs.d.ts.map +1 -1
- package/dist/tools/query-logs.js +5 -5
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-logs.test.js +22 -2
- package/dist/tools/query-logs.test.js.map +1 -1
- package/dist/tools/query-metrics.d.ts +12 -14
- package/dist/tools/query-metrics.d.ts.map +1 -1
- package/dist/tools/query-metrics.js +11 -13
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-metrics.test.js +134 -96
- package/dist/tools/query-metrics.test.js.map +1 -1
- package/dist/tools/query-traces.d.ts +16 -17
- package/dist/tools/query-traces.d.ts.map +1 -1
- package/dist/tools/query-traces.js +11 -14
- package/dist/tools/query-traces.js.map +1 -1
- package/dist/tools/query-traces.test.js +144 -48
- package/dist/tools/query-traces.test.js.map +1 -1
- package/dist/tools/setup-claudeignore.d.ts +36 -10
- package/dist/tools/setup-claudeignore.d.ts.map +1 -1
- package/dist/tools/setup-claudeignore.js +193 -33
- package/dist/tools/setup-claudeignore.js.map +1 -1
- package/dist/tools/setup-claudeignore.test.js +286 -41
- package/dist/tools/setup-claudeignore.test.js.map +1 -1
- package/dist/tools/signoz.integration.test.d.ts +8 -0
- package/dist/tools/signoz.integration.test.d.ts.map +1 -0
- package/dist/tools/signoz.integration.test.js +141 -0
- package/dist/tools/signoz.integration.test.js.map +1 -0
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -21,10 +21,11 @@ claude mcp add observability-toolkit -- node ~/.claude/mcp-servers/observability
|
|
|
21
21
|
| `obs_query_traces` | Query traces from local JSONL or SigNoz |
|
|
22
22
|
| `obs_query_metrics` | Query metrics with aggregation support |
|
|
23
23
|
| `obs_query_logs` | Query logs by severity, search text, trace ID |
|
|
24
|
+
| `obs_query_llm_events` | Query LLM events with token usage and duration metrics |
|
|
24
25
|
| `obs_health_check` | Check telemetry system health |
|
|
25
26
|
| `obs_context_stats` | Get context window utilization stats |
|
|
26
27
|
| `obs_get_trace_url` | Get SigNoz trace viewer URL (requires SigNoz) |
|
|
27
|
-
| `obs_setup_claudeignore` | Add
|
|
28
|
+
| `obs_setup_claudeignore` | Add entries to .claudeignore (telemetry, test files, coverage) |
|
|
28
29
|
|
|
29
30
|
## Configuration
|
|
30
31
|
|
|
@@ -44,8 +45,26 @@ The server works standalone with local JSONL files. SigNoz integration is option
|
|
|
44
45
|
obs_query_traces({ backend: "local", limit: 10 })
|
|
45
46
|
obs_query_traces({ traceId: "abc123..." })
|
|
46
47
|
obs_query_traces({ serviceName: "claude-code", minDurationMs: 100 })
|
|
48
|
+
obs_query_traces({ attributeFilter: { "agent.source_type": "lazy" } })
|
|
47
49
|
```
|
|
48
50
|
|
|
51
|
+
### Filterable Attributes
|
|
52
|
+
|
|
53
|
+
Use `attributeFilter` to query by span attributes:
|
|
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 |
|
|
67
|
+
|
|
49
68
|
### Query logs
|
|
50
69
|
|
|
51
70
|
```
|
|
@@ -61,6 +80,14 @@ obs_query_metrics({ metricName: "session.context.size" })
|
|
|
61
80
|
obs_query_metrics({ metricName: "gen_ai.client.token.usage", aggregation: "sum" })
|
|
62
81
|
```
|
|
63
82
|
|
|
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" })
|
|
89
|
+
```
|
|
90
|
+
|
|
64
91
|
### Health check
|
|
65
92
|
|
|
66
93
|
```
|
|
@@ -85,17 +112,31 @@ obs_get_trace_url({ traceId: "abc123..." })
|
|
|
85
112
|
```
|
|
86
113
|
obs_setup_claudeignore({})
|
|
87
114
|
obs_setup_claudeignore({ dryRun: true })
|
|
88
|
-
obs_setup_claudeignore({
|
|
115
|
+
obs_setup_claudeignore({ includeDefaults: false, entry: "custom/" })
|
|
116
|
+
obs_setup_claudeignore({ entries: ["logs/", "tmp/", "*.bak"] })
|
|
89
117
|
```
|
|
90
118
|
|
|
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
|
|
124
|
+
|
|
91
125
|
## Data Sources
|
|
92
126
|
|
|
93
127
|
### Local JSONL (Default)
|
|
94
128
|
|
|
95
|
-
|
|
129
|
+
Automatically scans multiple telemetry directories:
|
|
130
|
+
- **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.
|
|
134
|
+
|
|
135
|
+
File patterns:
|
|
96
136
|
- `traces-YYYY-MM-DD.jsonl` - Trace spans
|
|
97
137
|
- `logs-YYYY-MM-DD.jsonl` - Log records
|
|
98
138
|
- `metrics-YYYY-MM-DD.jsonl` - Metric data points
|
|
139
|
+
- `llm-events-YYYY-MM-DD.jsonl` - LLM events
|
|
99
140
|
|
|
100
141
|
### SigNoz Cloud (Optional)
|
|
101
142
|
|
|
@@ -112,7 +153,15 @@ Use `backend: "signoz"` in queries to explicitly use SigNoz, or `backend: "auto"
|
|
|
112
153
|
cd ~/.claude/mcp-servers/observability-toolkit
|
|
113
154
|
npm install
|
|
114
155
|
npm run build
|
|
156
|
+
npm test # 617 tests
|
|
115
157
|
npm run start
|
|
116
158
|
```
|
|
117
159
|
|
|
160
|
+
## Documentation
|
|
161
|
+
|
|
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
|
+
|
|
118
167
|
|
package/dist/backends/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface TraceSpan {
|
|
|
14
14
|
code: number;
|
|
15
15
|
message?: string;
|
|
16
16
|
};
|
|
17
|
+
/** Human-readable status code: 'UNSET' (0), 'OK' (1), 'ERROR' (2) */
|
|
18
|
+
statusCode?: 'UNSET' | 'OK' | 'ERROR';
|
|
17
19
|
attributes?: Record<string, unknown>;
|
|
18
20
|
events?: Array<{
|
|
19
21
|
name: string;
|
|
@@ -24,6 +26,7 @@ export interface TraceSpan {
|
|
|
24
26
|
export interface LogRecord {
|
|
25
27
|
timestamp: string;
|
|
26
28
|
severity: string;
|
|
29
|
+
severityNumber?: number;
|
|
27
30
|
body: string;
|
|
28
31
|
traceId?: string;
|
|
29
32
|
spanId?: string;
|
|
@@ -49,11 +52,23 @@ export interface TraceQueryOptions extends QueryOptions {
|
|
|
49
52
|
minDurationMs?: number;
|
|
50
53
|
maxDurationMs?: number;
|
|
51
54
|
attributeFilter?: Record<string, string | number | boolean>;
|
|
55
|
+
/** Exclude spans matching this name (substring match) */
|
|
56
|
+
excludeSpanName?: string;
|
|
57
|
+
/** Only include spans where these attributes exist */
|
|
58
|
+
attributeExists?: string[];
|
|
59
|
+
/** Exclude spans where these attributes exist */
|
|
60
|
+
attributeNotExists?: string[];
|
|
52
61
|
}
|
|
53
62
|
export interface LogQueryOptions extends QueryOptions {
|
|
54
63
|
severity?: string;
|
|
55
64
|
search?: string;
|
|
56
65
|
traceId?: string;
|
|
66
|
+
/** Exclude logs containing this text (case-insensitive) */
|
|
67
|
+
excludeSearch?: string;
|
|
68
|
+
/** Only include logs where these attributes exist */
|
|
69
|
+
attributeExists?: string[];
|
|
70
|
+
/** Exclude logs where these attributes exist */
|
|
71
|
+
attributeNotExists?: string[];
|
|
57
72
|
}
|
|
58
73
|
export interface MetricQueryOptions extends QueryOptions {
|
|
59
74
|
metricName?: string;
|
|
@@ -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,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;CAC3F;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
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;CAC3F;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAC5D,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1D,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtE,cAAc,CAAC,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE"}
|
|
@@ -19,4 +19,31 @@ export declare class LocalJsonlBackend implements TelemetryBackend {
|
|
|
19
19
|
message?: string;
|
|
20
20
|
}>;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Multi-directory backend that queries all telemetry directories
|
|
24
|
+
* (global ~/.claude/telemetry + local project directories)
|
|
25
|
+
*/
|
|
26
|
+
export declare class MultiDirectoryBackend implements TelemetryBackend {
|
|
27
|
+
name: string;
|
|
28
|
+
private backends;
|
|
29
|
+
private directories;
|
|
30
|
+
constructor(cwd?: string);
|
|
31
|
+
getDirectories(): Array<{
|
|
32
|
+
path: string;
|
|
33
|
+
source: 'global' | 'local';
|
|
34
|
+
}>;
|
|
35
|
+
queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
|
|
36
|
+
queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
|
|
37
|
+
queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
|
|
38
|
+
queryLLMEvents(options: LLMEventQueryOptions): Promise<LLMEvent[]>;
|
|
39
|
+
healthCheck(): Promise<{
|
|
40
|
+
status: 'ok' | 'error';
|
|
41
|
+
message?: string;
|
|
42
|
+
directories?: Array<{
|
|
43
|
+
path: string;
|
|
44
|
+
source: string;
|
|
45
|
+
status: string;
|
|
46
|
+
}>;
|
|
47
|
+
}>;
|
|
48
|
+
}
|
|
22
49
|
//# 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;
|
|
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"}
|
|
@@ -5,9 +5,49 @@
|
|
|
5
5
|
* span or log record, not the batched OpenTelemetry export format.
|
|
6
6
|
*/
|
|
7
7
|
import { join } from 'path';
|
|
8
|
-
import { TELEMETRY_DIR } from '../lib/constants.js';
|
|
9
|
-
import { listFiles,
|
|
8
|
+
import { TELEMETRY_DIR, getTelemetryDirectories, getSpanKind, getStatusCodeName } from '../lib/constants.js';
|
|
9
|
+
import { listFiles, streamJsonl, parseDateFromFilename, getDateString, paginateResults, hasReachedLimit, } from '../lib/file-utils.js';
|
|
10
10
|
import { existsSync } from 'fs';
|
|
11
|
+
/**
|
|
12
|
+
* Insert item into a sorted array, maintaining sort order and max size.
|
|
13
|
+
* More efficient than sort+slice for top-K selection (O(n) vs O(n log n)).
|
|
14
|
+
*/
|
|
15
|
+
function insertSortedBounded(arr, item, maxSize, compareFn) {
|
|
16
|
+
// Find insertion point using binary search
|
|
17
|
+
let low = 0;
|
|
18
|
+
let high = arr.length;
|
|
19
|
+
while (low < high) {
|
|
20
|
+
const mid = (low + high) >>> 1;
|
|
21
|
+
if (compareFn(arr[mid], item) <= 0) {
|
|
22
|
+
low = mid + 1;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
high = mid;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// If array is full and item would go at end, skip it
|
|
29
|
+
if (arr.length >= maxSize && low >= maxSize) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Insert at the correct position
|
|
33
|
+
arr.splice(low, 0, item);
|
|
34
|
+
// Remove excess element if over max size
|
|
35
|
+
if (arr.length > maxSize) {
|
|
36
|
+
arr.pop();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* OTel-compliant severity number mapping
|
|
41
|
+
* https://opentelemetry.io/docs/specs/otel/logs/data-model/#field-severitynumber
|
|
42
|
+
*/
|
|
43
|
+
const SEVERITY_MAP = {
|
|
44
|
+
TRACE: 1,
|
|
45
|
+
DEBUG: 5,
|
|
46
|
+
INFO: 9,
|
|
47
|
+
WARN: 13,
|
|
48
|
+
ERROR: 17,
|
|
49
|
+
FATAL: 21,
|
|
50
|
+
};
|
|
11
51
|
/**
|
|
12
52
|
* Convert flat span to normalized TraceSpan
|
|
13
53
|
*/
|
|
@@ -42,11 +82,12 @@ function normalizeSpan(raw) {
|
|
|
42
82
|
spanId: raw.spanId,
|
|
43
83
|
parentSpanId: raw.parentSpanId,
|
|
44
84
|
name: raw.name,
|
|
45
|
-
kind: raw.kind
|
|
85
|
+
kind: getSpanKind(raw.kind),
|
|
46
86
|
startTimeUnixNano,
|
|
47
87
|
endTimeUnixNano,
|
|
48
88
|
durationMs,
|
|
49
89
|
status: raw.status?.code !== undefined ? { code: raw.status.code, message: raw.status.message } : undefined,
|
|
90
|
+
statusCode: getStatusCodeName(raw.status?.code),
|
|
50
91
|
attributes,
|
|
51
92
|
};
|
|
52
93
|
}
|
|
@@ -67,9 +108,12 @@ function normalizeLog(raw) {
|
|
|
67
108
|
else {
|
|
68
109
|
timestamp = raw.timestamp;
|
|
69
110
|
}
|
|
111
|
+
const severity = raw.severityText || raw.severity || 'INFO';
|
|
112
|
+
const severityNumber = SEVERITY_MAP[severity.toUpperCase()];
|
|
70
113
|
return {
|
|
71
114
|
timestamp,
|
|
72
|
-
severity
|
|
115
|
+
severity,
|
|
116
|
+
severityNumber,
|
|
73
117
|
body: raw.body || '',
|
|
74
118
|
traceId: raw.traceId,
|
|
75
119
|
spanId: raw.spanId,
|
|
@@ -128,9 +172,8 @@ export class LocalJsonlBackend {
|
|
|
128
172
|
const limit = options.limit || 100;
|
|
129
173
|
const offset = options.offset || 0;
|
|
130
174
|
for (const file of files) {
|
|
131
|
-
//
|
|
132
|
-
const
|
|
133
|
-
for (const raw of spans) {
|
|
175
|
+
// Stream flat span records (one per line) to avoid loading entire file into memory
|
|
176
|
+
for await (const raw of streamJsonl(file)) {
|
|
134
177
|
const span = normalizeSpan(raw);
|
|
135
178
|
if (!span)
|
|
136
179
|
continue;
|
|
@@ -139,6 +182,8 @@ export class LocalJsonlBackend {
|
|
|
139
182
|
continue;
|
|
140
183
|
if (options.spanName && !span.name.includes(options.spanName))
|
|
141
184
|
continue;
|
|
185
|
+
if (options.excludeSpanName && span.name.includes(options.excludeSpanName))
|
|
186
|
+
continue;
|
|
142
187
|
if (options.minDurationMs && (span.durationMs || 0) < options.minDurationMs)
|
|
143
188
|
continue;
|
|
144
189
|
if (options.maxDurationMs && (span.durationMs || Infinity) > options.maxDurationMs)
|
|
@@ -160,13 +205,37 @@ export class LocalJsonlBackend {
|
|
|
160
205
|
if (!matches)
|
|
161
206
|
continue;
|
|
162
207
|
}
|
|
208
|
+
// Apply attributeExists filter - all specified attributes must exist
|
|
209
|
+
if (options.attributeExists) {
|
|
210
|
+
let allExist = true;
|
|
211
|
+
for (const key of options.attributeExists) {
|
|
212
|
+
if (span.attributes?.[key] === undefined) {
|
|
213
|
+
allExist = false;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (!allExist)
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
// Apply attributeNotExists filter - exclude if any specified attribute exists
|
|
221
|
+
if (options.attributeNotExists) {
|
|
222
|
+
let anyExist = false;
|
|
223
|
+
for (const key of options.attributeNotExists) {
|
|
224
|
+
if (span.attributes?.[key] !== undefined) {
|
|
225
|
+
anyExist = true;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (anyExist)
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
163
232
|
results.push(span);
|
|
164
|
-
if (results.length
|
|
165
|
-
return results
|
|
233
|
+
if (hasReachedLimit(results.length, offset, limit)) {
|
|
234
|
+
return paginateResults(results, offset, limit);
|
|
166
235
|
}
|
|
167
236
|
}
|
|
168
237
|
}
|
|
169
|
-
return results
|
|
238
|
+
return paginateResults(results, offset, limit);
|
|
170
239
|
}
|
|
171
240
|
async queryLogs(options) {
|
|
172
241
|
const files = getFilesInRange(this.telemetryDir, /logs-\d{4}-\d{2}-\d{2}\.jsonl$/, options.startDate, options.endDate);
|
|
@@ -174,9 +243,8 @@ export class LocalJsonlBackend {
|
|
|
174
243
|
const limit = options.limit || 100;
|
|
175
244
|
const offset = options.offset || 0;
|
|
176
245
|
for (const file of files) {
|
|
177
|
-
//
|
|
178
|
-
const
|
|
179
|
-
for (const raw of logs) {
|
|
246
|
+
// Stream flat log records (one per line) to avoid loading entire file into memory
|
|
247
|
+
for await (const raw of streamJsonl(file)) {
|
|
180
248
|
const log = normalizeLog(raw);
|
|
181
249
|
if (!log)
|
|
182
250
|
continue;
|
|
@@ -187,23 +255,48 @@ export class LocalJsonlBackend {
|
|
|
187
255
|
continue;
|
|
188
256
|
if (options.search && !log.body.toLowerCase().includes(options.search.toLowerCase()))
|
|
189
257
|
continue;
|
|
258
|
+
if (options.excludeSearch && log.body.toLowerCase().includes(options.excludeSearch.toLowerCase()))
|
|
259
|
+
continue;
|
|
260
|
+
// Apply attributeExists filter - all specified attributes must exist
|
|
261
|
+
if (options.attributeExists) {
|
|
262
|
+
let allExist = true;
|
|
263
|
+
for (const key of options.attributeExists) {
|
|
264
|
+
if (log.attributes?.[key] === undefined) {
|
|
265
|
+
allExist = false;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (!allExist)
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
// Apply attributeNotExists filter - exclude if any specified attribute exists
|
|
273
|
+
if (options.attributeNotExists) {
|
|
274
|
+
let anyExist = false;
|
|
275
|
+
for (const key of options.attributeNotExists) {
|
|
276
|
+
if (log.attributes?.[key] !== undefined) {
|
|
277
|
+
anyExist = true;
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (anyExist)
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
190
284
|
results.push(log);
|
|
191
|
-
if (results.length
|
|
192
|
-
return results
|
|
285
|
+
if (hasReachedLimit(results.length, offset, limit)) {
|
|
286
|
+
return paginateResults(results, offset, limit);
|
|
193
287
|
}
|
|
194
288
|
}
|
|
195
289
|
}
|
|
196
|
-
return results
|
|
290
|
+
return paginateResults(results, offset, limit);
|
|
197
291
|
}
|
|
198
292
|
async queryMetrics(options) {
|
|
199
293
|
const files = getFilesInRange(this.telemetryDir, /metrics-\d{4}-\d{2}-\d{2}\.jsonl$/, options.startDate, options.endDate);
|
|
200
294
|
const results = [];
|
|
201
295
|
const limit = options.limit || 100;
|
|
202
296
|
const offset = options.offset || 0;
|
|
203
|
-
for (const file of files) {
|
|
204
|
-
//
|
|
205
|
-
const
|
|
206
|
-
for (const raw of metrics) {
|
|
297
|
+
outer: for (const file of files) {
|
|
298
|
+
// Stream flat metric records (one per line) to avoid loading entire file into memory
|
|
299
|
+
for await (const raw of streamJsonl(file)) {
|
|
207
300
|
const point = normalizeMetric(raw);
|
|
208
301
|
if (!point)
|
|
209
302
|
continue;
|
|
@@ -211,18 +304,16 @@ export class LocalJsonlBackend {
|
|
|
211
304
|
if (options.metricName && !point.name.includes(options.metricName))
|
|
212
305
|
continue;
|
|
213
306
|
results.push(point);
|
|
214
|
-
if (results.length
|
|
215
|
-
break;
|
|
307
|
+
if (hasReachedLimit(results.length, offset, limit)) {
|
|
308
|
+
break outer;
|
|
216
309
|
}
|
|
217
310
|
}
|
|
218
|
-
if (results.length >= offset + limit)
|
|
219
|
-
break;
|
|
220
311
|
}
|
|
221
312
|
// Apply aggregation if requested
|
|
222
313
|
if (options.aggregation && results.length > 0) {
|
|
223
314
|
return this.aggregate(results, options.aggregation, options.groupBy);
|
|
224
315
|
}
|
|
225
|
-
return results
|
|
316
|
+
return paginateResults(results, offset, limit);
|
|
226
317
|
}
|
|
227
318
|
aggregate(points, aggregation, groupBy) {
|
|
228
319
|
// Group by metric name and optional attributes
|
|
@@ -278,8 +369,8 @@ export class LocalJsonlBackend {
|
|
|
278
369
|
const limit = options.limit || 100;
|
|
279
370
|
const offset = options.offset || 0;
|
|
280
371
|
for (const file of files) {
|
|
281
|
-
|
|
282
|
-
for (const event of
|
|
372
|
+
// Stream LLM event records (one per line) to avoid loading entire file into memory
|
|
373
|
+
for await (const event of streamJsonl(file)) {
|
|
283
374
|
if (!event.timestamp || !event.name)
|
|
284
375
|
continue;
|
|
285
376
|
// Apply filters
|
|
@@ -306,12 +397,12 @@ export class LocalJsonlBackend {
|
|
|
306
397
|
name: event.name,
|
|
307
398
|
attributes: event.attributes,
|
|
308
399
|
});
|
|
309
|
-
if (results.length
|
|
310
|
-
return results
|
|
400
|
+
if (hasReachedLimit(results.length, offset, limit)) {
|
|
401
|
+
return paginateResults(results, offset, limit);
|
|
311
402
|
}
|
|
312
403
|
}
|
|
313
404
|
}
|
|
314
|
-
return results
|
|
405
|
+
return paginateResults(results, offset, limit);
|
|
315
406
|
}
|
|
316
407
|
async healthCheck() {
|
|
317
408
|
if (!existsSync(this.telemetryDir)) {
|
|
@@ -338,4 +429,85 @@ export class LocalJsonlBackend {
|
|
|
338
429
|
};
|
|
339
430
|
}
|
|
340
431
|
}
|
|
432
|
+
/**
|
|
433
|
+
* Multi-directory backend that queries all telemetry directories
|
|
434
|
+
* (global ~/.claude/telemetry + local project directories)
|
|
435
|
+
*/
|
|
436
|
+
export class MultiDirectoryBackend {
|
|
437
|
+
name = 'multi-directory';
|
|
438
|
+
backends;
|
|
439
|
+
directories;
|
|
440
|
+
constructor(cwd) {
|
|
441
|
+
this.directories = getTelemetryDirectories(cwd);
|
|
442
|
+
this.backends = this.directories.map(d => new LocalJsonlBackend(d.path));
|
|
443
|
+
}
|
|
444
|
+
getDirectories() {
|
|
445
|
+
return this.directories;
|
|
446
|
+
}
|
|
447
|
+
async queryTraces(options) {
|
|
448
|
+
const limit = options.limit || 100;
|
|
449
|
+
// Query all backends in parallel
|
|
450
|
+
const allBackendResults = await Promise.all(this.backends.map(b => b.queryTraces({ ...options, limit })));
|
|
451
|
+
// Merge results using bounded insertion for efficient top-K selection
|
|
452
|
+
const topResults = [];
|
|
453
|
+
for (const results of allBackendResults) {
|
|
454
|
+
for (const span of results) {
|
|
455
|
+
insertSortedBounded(topResults, span, limit, (a, b) => (b.startTimeUnixNano || 0) - (a.startTimeUnixNano || 0));
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
return topResults;
|
|
459
|
+
}
|
|
460
|
+
async queryLogs(options) {
|
|
461
|
+
const limit = options.limit || 100;
|
|
462
|
+
// Query all backends in parallel
|
|
463
|
+
const allBackendResults = await Promise.all(this.backends.map(b => b.queryLogs({ ...options, limit })));
|
|
464
|
+
// Merge results using bounded insertion for efficient top-K selection
|
|
465
|
+
const topResults = [];
|
|
466
|
+
for (const results of allBackendResults) {
|
|
467
|
+
for (const log of results) {
|
|
468
|
+
insertSortedBounded(topResults, log, limit, (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return topResults;
|
|
472
|
+
}
|
|
473
|
+
async queryMetrics(options) {
|
|
474
|
+
const limit = options.limit || 100;
|
|
475
|
+
// Query all backends in parallel
|
|
476
|
+
const allBackendResults = await Promise.all(this.backends.map(b => b.queryMetrics({ ...options, limit })));
|
|
477
|
+
// Flatten and limit results
|
|
478
|
+
const allResults = allBackendResults.flat();
|
|
479
|
+
return allResults.slice(0, limit);
|
|
480
|
+
}
|
|
481
|
+
async queryLLMEvents(options) {
|
|
482
|
+
const limit = options.limit || 100;
|
|
483
|
+
// Query all backends in parallel
|
|
484
|
+
const allBackendResults = await Promise.all(this.backends.map(b => b.queryLLMEvents({ ...options, limit })));
|
|
485
|
+
// Merge results using bounded insertion for efficient top-K selection
|
|
486
|
+
const topResults = [];
|
|
487
|
+
for (const results of allBackendResults) {
|
|
488
|
+
for (const event of results) {
|
|
489
|
+
insertSortedBounded(topResults, event, limit, (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
return topResults;
|
|
493
|
+
}
|
|
494
|
+
async healthCheck() {
|
|
495
|
+
if (this.backends.length === 0) {
|
|
496
|
+
return { status: 'error', message: 'No telemetry directories found' };
|
|
497
|
+
}
|
|
498
|
+
// Check all backends in parallel
|
|
499
|
+
const healthResults = await Promise.all(this.backends.map(b => b.healthCheck()));
|
|
500
|
+
const dirStatuses = healthResults.map((result, i) => ({
|
|
501
|
+
path: this.directories[i].path,
|
|
502
|
+
source: this.directories[i].source,
|
|
503
|
+
status: result.message || result.status,
|
|
504
|
+
}));
|
|
505
|
+
const hasOk = healthResults.some(r => r.status === 'ok');
|
|
506
|
+
return {
|
|
507
|
+
status: hasOk ? 'ok' : 'error',
|
|
508
|
+
message: `Found ${this.directories.length} telemetry director${this.directories.length === 1 ? 'y' : 'ies'}`,
|
|
509
|
+
directories: dirStatuses,
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
}
|
|
341
513
|
//# sourceMappingURL=local-jsonl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-jsonl.js","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local-jsonl.js","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}
|