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.
Files changed (81) hide show
  1. package/README.md +52 -3
  2. package/dist/backends/index.d.ts +15 -0
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/local-jsonl.d.ts +27 -0
  5. package/dist/backends/local-jsonl.d.ts.map +1 -1
  6. package/dist/backends/local-jsonl.js +202 -30
  7. package/dist/backends/local-jsonl.js.map +1 -1
  8. package/dist/backends/local-jsonl.test.js +1081 -1
  9. package/dist/backends/local-jsonl.test.js.map +1 -1
  10. package/dist/backends/signoz-api.d.ts.map +1 -1
  11. package/dist/backends/signoz-api.integration.test.d.ts +8 -0
  12. package/dist/backends/signoz-api.integration.test.d.ts.map +1 -0
  13. package/dist/backends/signoz-api.integration.test.js +137 -0
  14. package/dist/backends/signoz-api.integration.test.js.map +1 -0
  15. package/dist/backends/signoz-api.js +58 -42
  16. package/dist/backends/signoz-api.js.map +1 -1
  17. package/dist/backends/signoz-api.test.js +504 -328
  18. package/dist/backends/signoz-api.test.js.map +1 -1
  19. package/dist/lib/constants.d.ts +27 -0
  20. package/dist/lib/constants.d.ts.map +1 -1
  21. package/dist/lib/constants.js +70 -0
  22. package/dist/lib/constants.js.map +1 -1
  23. package/dist/lib/constants.test.js +183 -1
  24. package/dist/lib/constants.test.js.map +1 -1
  25. package/dist/lib/file-utils.d.ts +53 -1
  26. package/dist/lib/file-utils.d.ts.map +1 -1
  27. package/dist/lib/file-utils.js +142 -3
  28. package/dist/lib/file-utils.js.map +1 -1
  29. package/dist/lib/file-utils.test.js +228 -1
  30. package/dist/lib/file-utils.test.js.map +1 -1
  31. package/dist/server.js +48 -65
  32. package/dist/server.js.map +1 -1
  33. package/dist/server.test.d.ts +5 -0
  34. package/dist/server.test.d.ts.map +1 -0
  35. package/dist/server.test.js +547 -0
  36. package/dist/server.test.js.map +1 -0
  37. package/dist/tools/context-stats.test.js +126 -0
  38. package/dist/tools/context-stats.test.js.map +1 -1
  39. package/dist/tools/get-trace-url.d.ts.map +1 -1
  40. package/dist/tools/get-trace-url.js +5 -1
  41. package/dist/tools/get-trace-url.js.map +1 -1
  42. package/dist/tools/get-trace-url.test.js +12 -6
  43. package/dist/tools/get-trace-url.test.js.map +1 -1
  44. package/dist/tools/health-check.d.ts +9 -2
  45. package/dist/tools/health-check.d.ts.map +1 -1
  46. package/dist/tools/health-check.js +66 -27
  47. package/dist/tools/health-check.js.map +1 -1
  48. package/dist/tools/health-check.test.js +89 -96
  49. package/dist/tools/health-check.test.js.map +1 -1
  50. package/dist/tools/query-llm-events.d.ts +2 -2
  51. package/dist/tools/query-llm-events.js +3 -3
  52. package/dist/tools/query-llm-events.js.map +1 -1
  53. package/dist/tools/query-logs.d.ts +8 -6
  54. package/dist/tools/query-logs.d.ts.map +1 -1
  55. package/dist/tools/query-logs.js +5 -5
  56. package/dist/tools/query-logs.js.map +1 -1
  57. package/dist/tools/query-logs.test.js +22 -2
  58. package/dist/tools/query-logs.test.js.map +1 -1
  59. package/dist/tools/query-metrics.d.ts +12 -14
  60. package/dist/tools/query-metrics.d.ts.map +1 -1
  61. package/dist/tools/query-metrics.js +11 -13
  62. package/dist/tools/query-metrics.js.map +1 -1
  63. package/dist/tools/query-metrics.test.js +134 -96
  64. package/dist/tools/query-metrics.test.js.map +1 -1
  65. package/dist/tools/query-traces.d.ts +16 -17
  66. package/dist/tools/query-traces.d.ts.map +1 -1
  67. package/dist/tools/query-traces.js +11 -14
  68. package/dist/tools/query-traces.js.map +1 -1
  69. package/dist/tools/query-traces.test.js +144 -48
  70. package/dist/tools/query-traces.test.js.map +1 -1
  71. package/dist/tools/setup-claudeignore.d.ts +36 -10
  72. package/dist/tools/setup-claudeignore.d.ts.map +1 -1
  73. package/dist/tools/setup-claudeignore.js +193 -33
  74. package/dist/tools/setup-claudeignore.js.map +1 -1
  75. package/dist/tools/setup-claudeignore.test.js +286 -41
  76. package/dist/tools/setup-claudeignore.test.js.map +1 -1
  77. package/dist/tools/signoz.integration.test.d.ts +8 -0
  78. package/dist/tools/signoz.integration.test.d.ts.map +1 -0
  79. package/dist/tools/signoz.integration.test.js +141 -0
  80. package/dist/tools/signoz.integration.test.js.map +1 -0
  81. 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 telemetry/ to .claudeignore |
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({ entry: "telemetry/", path: "/path/to/.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
- Reads telemetry data from `~/.claude/telemetry/`:
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
 
@@ -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;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"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"}
@@ -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;AA8KpB,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;IAoD7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAoCzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyC3E,OAAO,CAAC,SAAS;IAyDX,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiDlE,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CA6B3E"}
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, readJsonlSync, parseDateFromFilename, getDateString, } from '../lib/file-utils.js';
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 !== undefined ? ['INTERNAL', 'SERVER', 'CLIENT', 'PRODUCER', 'CONSUMER'][raw.kind] : undefined,
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: raw.severityText || raw.severity || 'INFO',
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
- // Read flat span records (one per line)
132
- const spans = readJsonlSync(file);
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 >= offset + limit) {
165
- return results.slice(offset, offset + limit);
233
+ if (hasReachedLimit(results.length, offset, limit)) {
234
+ return paginateResults(results, offset, limit);
166
235
  }
167
236
  }
168
237
  }
169
- return results.slice(offset, offset + limit);
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
- // Read flat log records (one per line)
178
- const logs = readJsonlSync(file);
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 >= offset + limit) {
192
- return results.slice(offset, offset + limit);
285
+ if (hasReachedLimit(results.length, offset, limit)) {
286
+ return paginateResults(results, offset, limit);
193
287
  }
194
288
  }
195
289
  }
196
- return results.slice(offset, offset + limit);
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
- // Read flat metric records (one per line)
205
- const metrics = readJsonlSync(file);
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 >= offset + limit) {
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.slice(offset, offset + limit);
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
- const events = readJsonlSync(file);
282
- for (const event of events) {
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 >= offset + limit) {
310
- return results.slice(offset, offset + limit);
400
+ if (hasReachedLimit(results.length, offset, limit)) {
401
+ return paginateResults(results, offset, limit);
311
402
  }
312
403
  }
313
404
  }
314
- return results.slice(offset, offset + limit);
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAY5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AA6ChC;;GAEG;AACH,SAAS,aAAa,CAAC,GAAa;IAClC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAE1D,gDAAgD;IAChD,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS;QACrC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO;QACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,SAAS,CAAC;IAEd,2BAA2B;IAC3B,IAAI,UAA8B,CAAC;IACnC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,UAAU,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,eAAe,EAAE,CAAC;QAC3B,UAAU,GAAG,CAAC,eAAe,GAAG,iBAAiB,CAAC,GAAG,SAAS,CAAC;IACjE,CAAC;IAED,wDAAwD;IACxD,MAAM,UAAU,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IACzC,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC9B,UAAU,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;IACxD,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;QACjC,UAAU,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7G,iBAAiB;QACjB,eAAe;QACf,UAAU;QACV,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;QAC3G,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,GAAY;IAChC,MAAM,UAAU,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IACzC,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC9B,UAAU,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;IACxD,CAAC;IAED,sEAAsE;IACtE,IAAI,SAAiB,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAC9E,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,SAAS;QACT,QAAQ,EAAE,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,IAAI,MAAM;QACpD,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAe;IACtC,MAAM,UAAU,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IACzC,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC9B,UAAU,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;IACxD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,GAAW,EACX,OAAe,EACf,SAAkB,EAClB,OAAgB;IAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,wBAAwB;QACxB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACtB,MAAM,IAAI,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,IAAI,KAAK,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACtB,MAAM,IAAI,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,SAAS,IAAI,IAAI,GAAG,SAAS;YAAE,OAAO,KAAK,CAAC;QAChD,IAAI,OAAO,IAAI,IAAI,GAAG,OAAO;YAAE,OAAO,KAAK,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,iBAAiB;IAC5B,IAAI,GAAG,aAAa,CAAC;IACb,YAAY,CAAS;IAE7B,YAAY,YAAqB;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,aAAa,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA0B;QAC1C,MAAM,KAAK,GAAG,eAAe,CAC3B,IAAI,CAAC,YAAY,EACjB,kCAAkC,EAClC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,wCAAwC;YACxC,MAAM,KAAK,GAAG,aAAa,CAAW,IAAI,CAAC,CAAC;YAE5C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAEpB,gBAAgB;gBAChB,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;oBAAE,SAAS;gBAClE,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBACxE,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa;oBAAE,SAAS;gBACtF,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa;oBAAE,SAAS;gBAC7F,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC;oBAC9C,IAAI,GAAG,KAAK,OAAO,CAAC,WAAW;wBAAE,SAAS;gBAC5C,CAAC;gBACD,yBAAyB;gBACzB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC5B,IAAI,OAAO,GAAG,IAAI,CAAC;oBACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;wBACnE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;4BACrC,OAAO,GAAG,KAAK,CAAC;4BAChB,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,OAAO;wBAAE,SAAS;gBACzB,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEnB,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;oBACrC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAwB;QACtC,MAAM,KAAK,GAAG,eAAe,CAC3B,IAAI,CAAC,YAAY,EACjB,gCAAgC,EAChC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,uCAAuC;YACvC,MAAM,IAAI,GAAG,aAAa,CAAU,IAAI,CAAC,CAAC;YAE1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG;oBAAE,SAAS;gBAEnB,gBAAgB;gBAChB,IAAI,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;oBAAE,SAAS;gBAChG,IAAI,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;oBAAE,SAAS;gBACjE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;gBAE/F,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAElB,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;oBACrC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA2B;QAC5C,MAAM,KAAK,GAAG,eAAe,CAC3B,IAAI,CAAC,YAAY,EACjB,mCAAmC,EACnC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,0CAA0C;YAC1C,MAAM,OAAO,GAAG,aAAa,CAAa,IAAI,CAAC,CAAC;YAEhD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBAErB,gBAAgB;gBAChB,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,SAAS;gBAE7E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEpB,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;oBACrC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK;gBAAE,MAAM;QAC9C,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEO,SAAS,CACf,MAAyB,EACzB,WAAoD,EACpD,OAAkB;QAElB,+CAA+C;QAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QAEpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;oBACrC,IAAI,GAAG,KAAK,SAAS;wBAAE,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,uBAAuB;QACvB,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAa,CAAC;YAElB,QAAQ,WAAW,EAAE,CAAC;gBACpB,KAAK,KAAK;oBACR,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC1D,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,KAAK;oBACR,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;oBACtB,MAAM;YACV,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS;gBAC5C,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnB,KAAK;gBACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBACnB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;aAChC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA6B;QAChD,MAAM,KAAK,GAAG,eAAe,CAC3B,IAAI,CAAC,YAAY,EACjB,sCAAsC,EACtC,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,aAAa,CAAe,IAAI,CAAC,CAAC;YAEjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,SAAS;gBAE9C,gBAAgB;gBAChB,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAC3E,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;oBACxF,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK;wBAAE,SAAS;gBACxC,CAAC;gBACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;oBACvF,IAAI,QAAQ,KAAK,OAAO,CAAC,QAAQ;wBAAE,SAAS;gBAC9C,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBACjD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAAE,SAAS;gBAClG,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC;oBACX,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC7B,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;oBACrC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7F,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC;QAE3E,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG;YACZ,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACrB,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;SACjC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,KAAK,GAAG,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,UAAU,KAAK,QAAQ,KAAK,EAAE;SACxC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"local-jsonl.js","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}