@dudousxd/nestjs-telescope-ui 1.0.0 → 1.2.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 (43) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/dist/client/telescope-client.d.ts +21 -1
  3. package/dist/client/telescope-client.d.ts.map +1 -1
  4. package/dist/client/telescope-client.js +98 -0
  5. package/dist/client/telescope-client.js.map +1 -1
  6. package/dist/client/types.d.ts +69 -0
  7. package/dist/client/types.d.ts.map +1 -1
  8. package/dist/react/components/entries-table.d.ts.map +1 -1
  9. package/dist/react/components/entries-table.js +9 -4
  10. package/dist/react/components/entries-table.js.map +1 -1
  11. package/dist/react/components/entry-detail.d.ts.map +1 -1
  12. package/dist/react/components/entry-detail.js +22 -3
  13. package/dist/react/components/entry-detail.js.map +1 -1
  14. package/dist/react/components/entry-types.d.ts +17 -0
  15. package/dist/react/components/entry-types.d.ts.map +1 -1
  16. package/dist/react/components/entry-types.js +41 -0
  17. package/dist/react/components/entry-types.js.map +1 -1
  18. package/dist/react/components/tag-autocomplete.d.ts +13 -1
  19. package/dist/react/components/tag-autocomplete.d.ts.map +1 -1
  20. package/dist/react/components/tag-autocomplete.js +18 -8
  21. package/dist/react/components/tag-autocomplete.js.map +1 -1
  22. package/dist/react/components/user-tag.d.ts +29 -0
  23. package/dist/react/components/user-tag.d.ts.map +1 -0
  24. package/dist/react/components/user-tag.js +44 -0
  25. package/dist/react/components/user-tag.js.map +1 -0
  26. package/dist/react/index.d.ts +1 -1
  27. package/dist/react/index.d.ts.map +1 -1
  28. package/dist/react/index.js +1 -1
  29. package/dist/react/index.js.map +1 -1
  30. package/dist/react/use-telescope-queries.d.ts +14 -0
  31. package/dist/react/use-telescope-queries.d.ts.map +1 -1
  32. package/dist/react/use-telescope-queries.js +28 -0
  33. package/dist/react/use-telescope-queries.js.map +1 -1
  34. package/dist/spa/assets/index-CobiGysS.js +135 -0
  35. package/dist/spa/assets/index-CvJxP8dR.css +1 -0
  36. package/dist/spa/index.html +2 -2
  37. package/package.json +3 -3
  38. package/dist/react/components/type-tabs.d.ts +0 -5
  39. package/dist/react/components/type-tabs.d.ts.map +0 -1
  40. package/dist/react/components/type-tabs.js +0 -8
  41. package/dist/react/components/type-tabs.js.map +0 -1
  42. package/dist/spa/assets/index-BHS361H_.js +0 -135
  43. package/dist/spa/assets/index-DsBEgxHC.css +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,106 @@
1
1
  # @dudousxd/nestjs-telescope-ui
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`0ba0c24`](https://github.com/DavideCarvalho/nestjs-telescope/commit/0ba0c24ac68c34ad75fe51775dc7089e308c3126) - Three dashboard improvements:
8
+
9
+ - **Criticality-first Overview.** The Overview is reorganized so operational triage sits above the fold: a focused stat row (Requests, **Error rate** = exceptions ÷ requests over the window — red above 5%, Failed jobs, and **Slow requests** = routes over their p99 budget), then Recent failures, a newly-mounted **N+1 query hotspots** card, Slowest, and a **Queues needing attention** card that lists only queues with failed jobs or a large pending backlog (and says "All queues healthy" when clean). Trends and Telescope self-health (throughput, by-type, server, health, retention) move below. All figures derive from data already served by `/pulse` and `/queues` — no new endpoints.
10
+ - **Watcher-driven navigation.** The sidebar Watchers list renders only types whose watcher is registered (from `meta.watchers`); `request` and `exception` always show, direct URLs to hidden types still work, and everything shows while `meta` is loading (no flash of hidden nav).
11
+ - **Dedicated User filter.** The entries filter bar gains a User combobox over the `user:` tag namespace (bare ids + counts); selecting one applies the `tag=user:<id>` filter but renders as a `User: <id>` chip, and a `user:` tag arriving via `?tag=` (the entries-table pivot links) is recognized and shown in the User control instead of the generic tag chip.
12
+
13
+ ## 1.1.0
14
+
15
+ ### Minor Changes
16
+
17
+ - [`8d91d59`](https://github.com/DavideCarvalho/nestjs-telescope/commit/8d91d59563d731e9125bef65a38651c96ec06e0b) - Gate the dashboard SPA behind `dashboardAuth` when the host enables it.
18
+
19
+ On boot the SPA calls `GET /auth/me` and branches three ways:
20
+
21
+ - **disabled** (auth not configured → `404`): renders the dashboard exactly as
22
+ before, with no auth UI.
23
+ - **authenticated** (`200`): renders the dashboard plus a **Sign out** button in
24
+ the header (next to the theme/live-tail toggles).
25
+ - **unauthenticated** (`401`): renders an **AuthScreen** chosen from the modes in
26
+ the `401` body — a username/password **Sign in** form (`login` mode, inline
27
+ "Invalid credentials" on failure) or an "Open Telescope from your application"
28
+ instruction card with a **Retry** button (`session`-only mode).
29
+
30
+ A `401` from any API call mid-session (expired cookie) flips the app back to the
31
+ AuthScreen automatically. The client gains `auth.me()`/`auth.login()`/
32
+ `auth.logout()`; cookies ride along on the existing same-origin `fetch`, so
33
+ there are no transport changes. With `dashboardAuth` unset, behavior is
34
+ unchanged.
35
+
36
+ - [`4ceb884`](https://github.com/DavideCarvalho/nestjs-telescope/commit/4ceb8846b7307cf522d841c909d7eaf7fcb1aa4e) - Add retention/prune controls and query EXPLAIN.
37
+
38
+ **Retention / prune.** A new `GET /api/retention` reports the configured retention
39
+ window (`entryCount`/`oldestCreatedAt` stay `null` — the storage SPI exposes no
40
+ cheap count/oldest, and Telescope never scans to derive them). `POST /api/retention/prune`
41
+ runs an on-demand prune behind the existing default-deny mutation gate
42
+ (`authorizeAction`); it 403s when mutations are disabled and 400s when no `prune`
43
+ window is configured. The Overview page gains a Retention card with a confirm-gated
44
+ "Prune now" button, shown only when `meta.pruneEnabled` (prune window AND mutations).
45
+
46
+ **Query EXPLAIN.** A new host hook
47
+ `explainQuery?: (sql, bindings) => Promise<unknown>` lets the host run an
48
+ engine `EXPLAIN` (it brings its own connection/dialect — e.g. MySQL
49
+ `EXPLAIN FORMAT=JSON`). `POST /api/queries/explain` loads the query entry and
50
+ returns `{ plan }`; a hook throw surfaces as a clean `{ message }`. The query
51
+ entry detail gains an "Explain" button (only when `meta.explainEnabled`) that
52
+ renders the plan JSON with loading/error states.
53
+
54
+ `TelescopeMeta` gains `pruneEnabled` and `explainEnabled`.
55
+
56
+ - [`15e3e90`](https://github.com/DavideCarvalho/nestjs-telescope/commit/15e3e903d82616966342feeb966fbd44ad6a2631) - Add user drill-down: pivot from any request entry to all of a user's activity.
57
+
58
+ A new built-in **`userTagger`** (in `BUILTIN_TAGGERS`) tags request entries with
59
+ the authenticated user's identity as `user:<id>`. It reads `content.user`,
60
+ preferring `id`, then `_id` (Mongo), then `email` — cheap property reads gated to
61
+ request entries, never throwing on odd content shapes. Whatever `resolveUser`
62
+ returns becomes a filterable tag.
63
+
64
+ The dashboard turns that tag into a one-click pivot, reusing the existing
65
+ indexed-tag filter (no new query dimension): user-tagged rows show a `user:<id>`
66
+ chip in the entries table, and the entry detail view offers **"View all activity
67
+ for this user"**. Both navigate to the all-types entries list pre-filtered by the
68
+ tag (`#/entries?tag=user:<id>`), which the entries page now seeds from the `?tag=`
69
+ query string — the same deep-link mechanism as `?familyHash=`.
70
+
71
+ ### Patch Changes
72
+
73
+ - [`d200d15`](https://github.com/DavideCarvalho/nestjs-telescope/commit/d200d158f927e6a67396e594b32bfd0a0b3424e4) - Bound memory by design at capture time, fixing a production OOM incident.
74
+
75
+ A host hit a GC death spiral at its container limit. There was no unbounded leak:
76
+ the heap was a retained _working set_ — `prune.after × ingest rate × bytes per
77
+ entry` — amplified by `redact()` deep-cloning fat enumerable object graphs (a
78
+ host's `req.user` ORM entity → tens-of-KB..MB clones per entry), high-cardinality
79
+ cache capture volume, and the Recorder ring never nulling drained slots (stale fat
80
+ entries lingered up to capacity). The synchronous `redact()` detach is
81
+ load-bearing and must stay synchronous, so the fix bounds the clone instead of
82
+ deferring it.
83
+
84
+ - **Bounded redaction (on by default).** `redact()` now applies hard, overridable
85
+ bounds: `maxDepth` (8), `maxStringLength` (8_192), `maxArrayLength` (200), and a
86
+ per-call `maxNodes, maxContentBytes (16KB serialized-byte budget — the deterministic bytes-per-entry cap)` (5_000) node budget that caps a mega-graph regardless of its
87
+ shape. Defaults are generous — a normal request / query / cache entry is cloned
88
+ byte-identically; bounds only bite on pathological content. Key/path masking,
89
+ cycle-safety, sync-and-never-throwing behavior, and the public `redact()`
90
+ signature are unchanged. A new sibling `redactBounded()` also returns whether
91
+ truncation happened.
92
+ - **Recorder hardening.** `drain()` nulls drained ring slots so flushed fat
93
+ entries aren't retained afterward. A new `truncatedCount` self-metric counts
94
+ entries whose content hit a bound; it surfaces automatically in
95
+ `GET /telescope/api/health`, and the dashboard Overview adds a _Truncated_ stat
96
+ card (ui patch).
97
+ - **High-volume guidance.** When `prune` is set but `sampling` is empty, boot logs
98
+ a one-line INFO pointing at per-type sampling (e.g. `sampling: { cache: 0.1 }`)
99
+ to bound store volume on high-cardinality streams.
100
+
101
+ - Updated dependencies [[`c2423f3`](https://github.com/DavideCarvalho/nestjs-telescope/commit/c2423f330be3f9b92c0dbf2348220bf8740dab86), [`d8173d4`](https://github.com/DavideCarvalho/nestjs-telescope/commit/d8173d4c5d362814aa0fcdb0bfb35fd353b3d1a8), [`d200d15`](https://github.com/DavideCarvalho/nestjs-telescope/commit/d200d158f927e6a67396e594b32bfd0a0b3424e4), [`953ae12`](https://github.com/DavideCarvalho/nestjs-telescope/commit/953ae12fd35e42df3b806d6bbec6b49e3e3c71fb), [`4ceb884`](https://github.com/DavideCarvalho/nestjs-telescope/commit/4ceb8846b7307cf522d841c909d7eaf7fcb1aa4e), [`15e3e90`](https://github.com/DavideCarvalho/nestjs-telescope/commit/15e3e903d82616966342feeb966fbd44ad6a2631)]:
102
+ - @dudousxd/nestjs-telescope@2.0.0
103
+
3
104
  ## 1.0.0
4
105
 
5
106
  ### Minor Changes
@@ -1,4 +1,4 @@
1
- import type { EntriesQuery, Entry, EntryWithBatch, JobPage, Page, PulseReport, QueueCapabilities, QueueCounts, QueueJobDetail, QueueMetricsReport, QueueState, QueueSummary, ScheduledTask, ServerStats, StatsResult, TagCount, TelescopeHealth, TelescopeMeta, TimeseriesQuery, TimeseriesReport, TracesResult } from './types.js';
1
+ import type { AuthMeResult, EntriesQuery, Entry, EntryWithBatch, ExplainResult, JobPage, LoginResult, Page, PulseReport, QueueCapabilities, QueueCounts, QueueJobDetail, QueueMetricsReport, QueueState, QueueSummary, RetentionInfo, ScheduledTask, ServerStats, StatsResult, TagCount, TelescopeHealth, TelescopeMeta, TimeseriesQuery, TimeseriesReport, TracesResult } from './types.js';
2
2
  declare global {
3
3
  interface Window {
4
4
  /**
@@ -30,6 +30,17 @@ export interface TelescopeClient {
30
30
  meta(): Promise<TelescopeMeta>;
31
31
  serverStats(): Promise<ServerStats>;
32
32
  health(): Promise<TelescopeHealth>;
33
+ /** Retention/prune status for the Overview retention card. */
34
+ retention(): Promise<RetentionInfo>;
35
+ /** Runs on-demand prune (gated server-side by the default-deny mutation guard). */
36
+ prune(): Promise<{
37
+ pruned: number;
38
+ }>;
39
+ /**
40
+ * Explains a captured query entry. 404 (no hook / bad entry) and 503 (hook
41
+ * threw) are EXPECTED outcomes surfaced as `{ ok: false }`, not thrown.
42
+ */
43
+ explain(entryId: string): Promise<ExplainResult>;
33
44
  liveQueues(): Promise<{
34
45
  queues: QueueSummary[];
35
46
  capabilities: QueueCapabilities;
@@ -58,6 +69,15 @@ export interface TelescopeClient {
58
69
  }): Promise<{
59
70
  id: string | null;
60
71
  }>;
72
+ /** Dashboard auth: cookie-backed session, gated behind `dashboardAuth`. */
73
+ auth: {
74
+ /** `GET /auth/me`: 200 user / 401-with-modes / 404 (auth disabled). */
75
+ me(): Promise<AuthMeResult>;
76
+ /** `POST /auth/login`: 204 ok / 401 invalid credentials. */
77
+ login(username: string, password: string): Promise<LoginResult>;
78
+ /** `POST /auth/logout`: clears the session cookie. */
79
+ logout(): Promise<void>;
80
+ };
61
81
  }
62
82
  export declare function createTelescopeClient(options?: TelescopeClientOptions): TelescopeClient;
63
83
  //# sourceMappingURL=telescope-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-client.d.ts","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telescope-client.d.ts","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ function isAuthMode(value) {
2
+ return value === 'session' || value === 'login';
3
+ }
1
4
  /** Derives the API base from the server-injected mount base, falling back to the default. */
2
5
  function defaultBaseUrl() {
3
6
  const base = (typeof window !== 'undefined' && window.__TELESCOPE_BASE__) || '/telescope';
@@ -44,6 +47,93 @@ export function createTelescopeClient(options = {}) {
44
47
  throw new Error(`Telescope API ${path} failed: ${response.status}`);
45
48
  return (await response.json());
46
49
  }
50
+ // Status-aware variants for the auth endpoints, where 401/404 are expected
51
+ // outcomes (which AuthScreen to show / auth disabled) rather than errors —
52
+ // so they must NOT throw the way `get`/`post` do.
53
+ async function rawGet(path) {
54
+ return doFetch(`${baseUrl}${path}`);
55
+ }
56
+ async function rawPost(path, body) {
57
+ return doFetch(`${baseUrl}${path}`, {
58
+ method: 'POST',
59
+ headers: { 'Content-Type': 'application/json' },
60
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
61
+ });
62
+ }
63
+ async function authMe() {
64
+ const response = await rawGet('/auth/me');
65
+ if (response.ok) {
66
+ const body = (await response.json());
67
+ return { status: 'authenticated', user: body.user };
68
+ }
69
+ // 404 => dashboardAuth not configured: proceed as today (no auth screens).
70
+ if (response.status === 404)
71
+ return { status: 'disabled' };
72
+ // 401 (or anything else) => unauthenticated; read the offered modes.
73
+ const body = await readModesBody(response);
74
+ return { status: 'unauthenticated', modes: body };
75
+ }
76
+ async function readModesBody(response) {
77
+ const parsed = await response
78
+ .json()
79
+ .then((value) => value)
80
+ .catch(() => null);
81
+ if (parsed !== null &&
82
+ typeof parsed === 'object' &&
83
+ 'auth' in parsed &&
84
+ parsed.auth !== null &&
85
+ typeof parsed.auth === 'object' &&
86
+ 'modes' in parsed.auth &&
87
+ Array.isArray(parsed.auth.modes)) {
88
+ return parsed.auth.modes.filter(isAuthMode);
89
+ }
90
+ return [];
91
+ }
92
+ async function authLogin(username, password) {
93
+ const response = await rawPost('/auth/login', { username, password });
94
+ if (response.ok)
95
+ return { ok: true };
96
+ const message = await readLoginMessage(response);
97
+ return { ok: false, message };
98
+ }
99
+ async function readLoginMessage(response) {
100
+ const parsed = await response
101
+ .json()
102
+ .then((value) => value)
103
+ .catch(() => null);
104
+ if (parsed !== null &&
105
+ typeof parsed === 'object' &&
106
+ 'message' in parsed &&
107
+ typeof parsed.message === 'string') {
108
+ return parsed.message;
109
+ }
110
+ return 'Invalid credentials';
111
+ }
112
+ async function authLogout() {
113
+ await rawPost('/auth/logout');
114
+ }
115
+ async function explain(entryId) {
116
+ const response = await rawPost('/queries/explain', { entryId });
117
+ if (response.ok) {
118
+ const body = (await response.json());
119
+ return { ok: true, plan: body.plan };
120
+ }
121
+ const message = await readExplainMessage(response);
122
+ return { ok: false, message };
123
+ }
124
+ async function readExplainMessage(response) {
125
+ const parsed = await response
126
+ .json()
127
+ .then((value) => value)
128
+ .catch(() => null);
129
+ if (parsed !== null &&
130
+ typeof parsed === 'object' &&
131
+ 'message' in parsed &&
132
+ typeof parsed.message === 'string') {
133
+ return parsed.message;
134
+ }
135
+ return `EXPLAIN failed (${response.status})`;
136
+ }
47
137
  return {
48
138
  entries: (query = {}) => get('/entries', {
49
139
  type: query.type,
@@ -70,6 +160,9 @@ export function createTelescopeClient(options = {}) {
70
160
  meta: () => get('/meta'),
71
161
  serverStats: () => get('/server-stats'),
72
162
  health: () => get('/health'),
163
+ retention: () => get('/retention'),
164
+ prune: () => post('/retention/prune'),
165
+ explain,
73
166
  liveQueues: () => get('/queues/live'),
74
167
  schedulesLive: () => get('/schedules/live'),
75
168
  queueCounts: (driver, queue) => get(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/counts`),
@@ -82,6 +175,11 @@ export function createTelescopeClient(options = {}) {
82
175
  queueJobAction: (driver, queue, id, action) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/jobs/${encodeURIComponent(id)}/${encodeURIComponent(action)}`),
83
176
  queueAction: (driver, queue, action, opts = {}) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/actions/${encodeURIComponent(action)}`, { state: opts.state }),
84
177
  queueEnqueue: (driver, queue, body) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/enqueue`, undefined, body),
178
+ auth: {
179
+ me: authMe,
180
+ login: authLogin,
181
+ logout: authLogout,
182
+ },
85
183
  };
86
184
  }
87
185
  //# sourceMappingURL=telescope-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-client.js","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telescope-client.js","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,39 @@ export interface TagCount {
43
43
  tag: string;
44
44
  count: number;
45
45
  }
46
+ /** Which AuthScreen the unauthenticated SPA should render. */
47
+ export type AuthMode = 'session' | 'login';
48
+ /** The authenticated dashboard user, as returned by `GET /auth/me`. */
49
+ export interface AuthUser {
50
+ id: string;
51
+ name?: string;
52
+ roles?: string[];
53
+ }
54
+ /**
55
+ * Outcome of `GET /auth/me`, modeled as a discriminated union so the boot gate
56
+ * can branch exhaustively:
57
+ * - `authenticated`: a valid session cookie was present (200 + user).
58
+ * - `unauthenticated`: no/invalid cookie (401); `modes` tells the SPA which
59
+ * AuthScreen to show.
60
+ * - `disabled`: `dashboardAuth` is not configured on the host (404) — the SPA
61
+ * proceeds exactly as it does without auth.
62
+ */
63
+ export type AuthMeResult = {
64
+ status: 'authenticated';
65
+ user: AuthUser;
66
+ } | {
67
+ status: 'unauthenticated';
68
+ modes: AuthMode[];
69
+ } | {
70
+ status: 'disabled';
71
+ };
72
+ /** Outcome of `POST /auth/login`. */
73
+ export type LoginResult = {
74
+ ok: true;
75
+ } | {
76
+ ok: false;
77
+ message: string;
78
+ };
46
79
  export interface TelescopeMeta {
47
80
  enabled: boolean;
48
81
  droppedCount: number;
@@ -53,9 +86,43 @@ export interface TelescopeMeta {
53
86
  afterMs: number;
54
87
  keepLast: number | null;
55
88
  } | null;
89
+ /** Whether on-demand pruning is available (prune window AND mutations enabled). */
90
+ pruneEnabled: boolean;
91
+ /** Whether query EXPLAIN is available (host configured an `explainQuery` hook). */
92
+ explainEnabled: boolean;
56
93
  /** Resolved per-type sample rates (0..1). Empty when no sampling configured. */
57
94
  sampling: Record<string, number>;
95
+ /**
96
+ * Dashboard auth state for the AUTHENTICATED SPA (e.g. show the logout button
97
+ * when enabled). The unauthenticated SPA learns the modes from `/auth/me`.
98
+ */
99
+ auth: {
100
+ enabled: boolean;
101
+ modes: AuthMode[];
102
+ };
103
+ }
104
+ /**
105
+ * Retention/prune status returned by `GET /retention`. `entryCount` and
106
+ * `oldestCreatedAt` are `null` unless the storage SPI can expose them cheaply
107
+ * (it currently can't, so Telescope never scans to derive them).
108
+ */
109
+ export interface RetentionInfo {
110
+ retention: {
111
+ afterMs: number;
112
+ keepLast: number | null;
113
+ } | null;
114
+ entryCount: number | null;
115
+ oldestCreatedAt: string | null;
116
+ pruneSupported: true;
58
117
  }
118
+ /** Outcome of `POST /queries/explain`: the plan, or a clean error message. */
119
+ export type ExplainResult = {
120
+ ok: true;
121
+ plan: unknown;
122
+ } | {
123
+ ok: false;
124
+ message: string;
125
+ };
59
126
  export interface DurationStats {
60
127
  avg: number;
61
128
  p50: number;
@@ -136,6 +203,8 @@ export interface TelescopeHealth {
136
203
  storeFailedDropped: number;
137
204
  /** Total entries dropped (overflow + store failures). */
138
205
  droppedCount: number;
206
+ /** Entries whose content was clipped by a redaction bound (depth/string/array/node). */
207
+ truncatedCount: number;
139
208
  /** Mean nanoseconds per capture, from an on-demand micro-benchmark. */
140
209
  captureCostNanos: number;
141
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entries-table.d.ts","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAkC/C;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASvD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,GACT,EAAE;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAuDrE"}
1
+ {"version":3,"file":"entries-table.d.ts","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAkC/C;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASvD;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,GACT,EAAE;IAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAqErE"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CacheBadge } from './cache-badge.js';
3
+ import { buildUserActivityHref, findUserTag, userTagId } from './user-tag.js';
3
4
  export function entryLabel(entry) {
4
5
  const content = entry.content;
5
6
  if (typeof content === 'object' && content !== null) {
@@ -60,9 +61,13 @@ export function dumpValuePreview(value) {
60
61
  return text.length > 80 ? `${text.slice(0, 80)}…` : text;
61
62
  }
62
63
  export function EntriesTable({ entries, onSelect, }) {
63
- return (_jsxs("table", { className: "w-full text-left text-xs", children: [_jsx("thead", { className: "text-zinc-500", children: _jsxs("tr", { children: [_jsx("th", { className: "py-2 font-normal", children: "Time" }), _jsx("th", { className: "font-normal", children: "Type" }), _jsx("th", { className: "font-normal", children: "Summary" }), _jsx("th", { className: "font-normal", children: "Duration" }), _jsx("th", { className: "font-normal", children: "Tags" })] }) }), _jsx("tbody", { children: entries.map((entry) => (_jsxs("tr", { onClick: () => onSelect?.(entry.id), onKeyDown: (event) => {
64
- if (event.key === 'Enter' || event.key === ' ')
65
- onSelect?.(entry.id);
66
- }, className: "cursor-pointer border-t border-zinc-900 hover:bg-zinc-900", children: [_jsx("td", { className: "py-1.5 text-zinc-500", children: new Date(entry.createdAt).toLocaleTimeString() }), _jsx("td", { className: "text-emerald-400", children: entry.type }), _jsx("td", { className: "max-w-md truncate text-zinc-300", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [entry.type === 'cache' ? _jsx(CacheBadge, { content: entry.content }) : null, _jsx("span", { className: "truncate", children: entryLabel(entry) })] }) }), _jsx("td", { className: "text-zinc-400", children: entry.durationMs != null ? `${entry.durationMs}ms` : '—' }), _jsx("td", { className: "text-zinc-600", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [entry.traceId !== null && (_jsxs("a", { href: `#/traces/${entry.traceId}`, title: `View trace ${entry.traceId}`, onClick: (event) => event.stopPropagation(), className: "rounded bg-zinc-900 px-1.5 py-0.5 font-mono text-[10px] text-sky-400 hover:bg-zinc-800", children: ["trace:", entry.traceId.slice(0, 6)] })), entry.tags.length > 0 && _jsx("span", { children: entry.tags.join(' ') })] }) })] }, entry.id))) })] }));
64
+ return (_jsxs("table", { className: "w-full text-left text-xs", children: [_jsx("thead", { className: "text-zinc-500", children: _jsxs("tr", { children: [_jsx("th", { className: "py-2 font-normal", children: "Time" }), _jsx("th", { className: "font-normal", children: "Type" }), _jsx("th", { className: "font-normal", children: "Summary" }), _jsx("th", { className: "font-normal", children: "Duration" }), _jsx("th", { className: "font-normal", children: "Tags" })] }) }), _jsx("tbody", { children: entries.map((entry) => {
65
+ const userTag = findUserTag(entry.tags);
66
+ const otherTags = entry.tags.filter((tag) => tag !== userTag);
67
+ return (_jsxs("tr", { onClick: () => onSelect?.(entry.id), onKeyDown: (event) => {
68
+ if (event.key === 'Enter' || event.key === ' ')
69
+ onSelect?.(entry.id);
70
+ }, className: "cursor-pointer border-t border-zinc-900 hover:bg-zinc-900", children: [_jsx("td", { className: "py-1.5 text-zinc-500", children: new Date(entry.createdAt).toLocaleTimeString() }), _jsx("td", { className: "text-emerald-400", children: entry.type }), _jsx("td", { className: "max-w-md truncate text-zinc-300", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [entry.type === 'cache' ? _jsx(CacheBadge, { content: entry.content }) : null, _jsx("span", { className: "truncate", children: entryLabel(entry) })] }) }), _jsx("td", { className: "text-zinc-400", children: entry.durationMs != null ? `${entry.durationMs}ms` : '—' }), _jsx("td", { className: "text-zinc-600", children: _jsxs("span", { className: "inline-flex items-center gap-1.5", children: [entry.traceId !== null && (_jsxs("a", { href: `#/traces/${entry.traceId}`, title: `View trace ${entry.traceId}`, onClick: (event) => event.stopPropagation(), className: "rounded bg-zinc-900 px-1.5 py-0.5 font-mono text-[10px] text-sky-400 hover:bg-zinc-800", children: ["trace:", entry.traceId.slice(0, 6)] })), userTag !== null && (_jsx("a", { href: buildUserActivityHref(userTag), title: `View all activity for user ${userTagId(userTag)}`, onClick: (event) => event.stopPropagation(), className: "rounded bg-zinc-900 px-1.5 py-0.5 font-mono text-[10px] text-emerald-400 hover:bg-zinc-800", children: userTag })), otherTags.length > 0 && _jsx("span", { children: otherTags.join(' ') })] }) })] }, entry.id));
71
+ }) })] }));
67
72
  }
68
73
  //# sourceMappingURL=entries-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entries-table.js","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entries-table.js","sourceRoot":"","sources":["../../../src/react/components/entries-table.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-detail.d.ts","sourceRoot":"","sources":["../../../src/react/components/entry-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,GACT,EAAE;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAuD1E"}
1
+ {"version":3,"file":"entry-detail.d.ts","sourceRoot":"","sources":["../../../src/react/components/entry-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS5D,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,GACT,EAAE;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA0E1E"}
@@ -1,14 +1,16 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMeta } from '../use-telescope-queries.js';
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useExplain, useMeta } from '../use-telescope-queries.js';
3
3
  import { BatchTimeline } from './batch-timeline.js';
4
4
  import { CacheBadge } from './cache-badge.js';
5
5
  import { ExportJsonToolbar } from './export-json-toolbar.js';
6
6
  import { RequestTimeline } from './request-timeline.js';
7
7
  import { buildTraceHref } from './trace-link.js';
8
+ import { buildUserActivityHref, findUserTag, userTagId } from './user-tag.js';
8
9
  export function EntryDetail({ entry, onSelect, }) {
9
10
  const { data: meta } = useMeta();
10
11
  const showTimeline = entry.type === 'request' && entry.batch.length > 1;
11
- return (_jsxs("div", { className: "grid grid-cols-3 gap-6", children: [_jsxs("section", { className: "col-span-2", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("h2", { className: "flex items-center gap-2 text-sm text-emerald-400", children: [entry.type, entry.type === 'cache' ? _jsx(CacheBadge, { content: entry.content }) : null] }), _jsx(ExportJsonToolbar, { value: entry, filename: `telescope-entry-${entry.id}.json` })] }), showTimeline ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Timeline" }), _jsx(RequestTimeline, { batch: entry.batch, requestId: entry.id, onSelect: onSelect })] })) : null, entry.type === 'dump' ? (_jsx(DumpBody, { content: entry.content })) : entry.type === 'event' ? (_jsx(EventBody, { content: entry.content })) : entry.type === 'log' ? (_jsx(LogBody, { content: entry.content })) : entry.type === 'model' ? (_jsx(ModelBody, { content: entry.content })) : entry.type === 'redis' ? (_jsx(RedisBody, { content: entry.content })) : entry.type === 'request' ? (_jsx(RequestBody, { content: entry.content })) : (_jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: JSON.stringify(entry.content, null, 2) }))] }), _jsxs("aside", { children: [entry.traceId ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Trace" }), _jsx(TraceRow, { traceId: entry.traceId, spanId: entry.spanId, traceLink: meta?.traceLink ?? null })] })) : null, _jsxs("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: ["Batch (", entry.batch.length, ")"] }), _jsx(BatchTimeline, { batch: entry.batch, currentId: entry.id, onSelect: onSelect })] })] }));
12
+ const userTag = findUserTag(entry.tags);
13
+ return (_jsxs("div", { className: "grid grid-cols-3 gap-6", children: [_jsxs("section", { className: "col-span-2", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("h2", { className: "flex items-center gap-2 text-sm text-emerald-400", children: [entry.type, entry.type === 'cache' ? _jsx(CacheBadge, { content: entry.content }) : null] }), _jsx(ExportJsonToolbar, { value: entry, filename: `telescope-entry-${entry.id}.json` })] }), showTimeline ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Timeline" }), _jsx(RequestTimeline, { batch: entry.batch, requestId: entry.id, onSelect: onSelect })] })) : null, entry.type === 'dump' ? (_jsx(DumpBody, { content: entry.content })) : entry.type === 'event' ? (_jsx(EventBody, { content: entry.content })) : entry.type === 'log' ? (_jsx(LogBody, { content: entry.content })) : entry.type === 'model' ? (_jsx(ModelBody, { content: entry.content })) : entry.type === 'redis' ? (_jsx(RedisBody, { content: entry.content })) : entry.type === 'request' ? (_jsx(RequestBody, { content: entry.content })) : entry.type === 'query' ? (_jsx(QueryBody, { entryId: entry.id, content: entry.content, explainEnabled: meta?.explainEnabled ?? false })) : (_jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: JSON.stringify(entry.content, null, 2) }))] }), _jsxs("aside", { children: [userTag !== null ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "User" }), _jsx("div", { className: "font-mono text-[11px] text-zinc-300", children: userTagId(userTag) }), _jsx("a", { href: buildUserActivityHref(userTag), className: "mt-1 inline-block text-[11px] text-emerald-400 hover:underline", children: "View all activity for this user" })] })) : null, entry.traceId ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Trace" }), _jsx(TraceRow, { traceId: entry.traceId, spanId: entry.spanId, traceLink: meta?.traceLink ?? null })] })) : null, _jsxs("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: ["Batch (", entry.batch.length, ")"] }), _jsx(BatchTimeline, { batch: entry.batch, currentId: entry.id, onSelect: onSelect })] })] }));
12
14
  }
13
15
  /** Pretty-print a dump value to JSON, falling back to String() if not serializable. */
14
16
  function prettyJson(value) {
@@ -96,6 +98,23 @@ function RequestBody({ content }) {
96
98
  const hasUser = 'user' in record && record.user !== null && record.user !== undefined;
97
99
  return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-3 flex items-center gap-2 font-mono text-sm text-emerald-400", children: [_jsx("span", { className: "rounded bg-zinc-900 px-1.5 py-0.5 text-[10px] uppercase", children: method }), _jsx("span", { className: "text-zinc-300", children: uri }), statusCode !== null ? (_jsx("span", { className: "rounded bg-zinc-900 px-1.5 py-0.5 text-[10px] text-zinc-500", children: statusCode })) : null, ip ? _jsx("span", { className: "text-[10px] text-zinc-500", children: ip }) : null] }), _jsx(RequestHeaders, { headers: headers }), _jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Payload" }), hasContent(record.payload) ? (_jsx("pre", { className: "mb-4 overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.payload) })) : (_jsx("p", { className: "mb-4 text-xs text-zinc-600", children: "No payload" })), _jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "User" }), hasUser ? (_jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.user) })) : (_jsx("p", { className: "text-xs text-zinc-600", children: "anonymous" }))] }));
98
100
  }
101
+ function QueryBody({ entryId, content, explainEnabled, }) {
102
+ const record = typeof content === 'object' && content !== null ? content : {};
103
+ const sql = typeof record.sql === 'string' ? record.sql : String(record.sql ?? '');
104
+ const slow = record.slow === true;
105
+ const explain = useExplain();
106
+ const result = explain.data;
107
+ async function onExplain() {
108
+ try {
109
+ await explain.mutateAsync(entryId);
110
+ }
111
+ catch {
112
+ // mutateAsync rejects only on transport errors; the client maps the
113
+ // expected 404/503 outcomes into a non-throwing `{ ok: false }` result.
114
+ }
115
+ }
116
+ return (_jsxs("div", { children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "flex items-center gap-2 font-mono text-sm text-sky-400", children: ["query", slow ? (_jsx("span", { className: "rounded bg-zinc-900 px-1.5 py-0.5 text-[10px] text-amber-400", children: "slow" })) : null] }), explainEnabled ? (_jsx("button", { type: "button", onClick: onExplain, disabled: explain.isPending, className: "rounded border border-zinc-700 px-2 py-1 text-[11px] text-zinc-300 hover:border-emerald-500 hover:text-emerald-400 disabled:cursor-not-allowed disabled:opacity-50", children: explain.isPending ? 'Explaining…' : 'Explain' })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: sql }), Array.isArray(record.bindings) && record.bindings.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("h3", { className: "mt-3 mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Bindings" }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.bindings) })] })) : null, explain.isPending ? (_jsx("p", { className: "mt-3 text-xs text-zinc-600", children: "Running EXPLAIN\u2026" })) : result === undefined ? null : result.ok ? (_jsxs(_Fragment, { children: [_jsx("h3", { className: "mt-3 mb-2 text-xs uppercase tracking-wide text-zinc-500", children: "Query plan" }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(result.plan) })] })) : (_jsx("p", { className: "mt-3 rounded bg-zinc-900 p-3 text-xs text-red-400", children: result.message }))] }));
117
+ }
99
118
  function LogBody({ content }) {
100
119
  const record = typeof content === 'object' && content !== null ? content : {};
101
120
  const level = typeof record.level === 'string' ? record.level : 'log';