@rudderjs/telescope 13.0.1 → 13.1.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 (54) hide show
  1. package/README.md +13 -1
  2. package/dist/collectors/event.d.ts.map +1 -1
  3. package/dist/collectors/event.js +8 -3
  4. package/dist/collectors/event.js.map +1 -1
  5. package/dist/collectors/exception.d.ts +13 -0
  6. package/dist/collectors/exception.d.ts.map +1 -1
  7. package/dist/collectors/exception.js +13 -0
  8. package/dist/collectors/exception.js.map +1 -1
  9. package/dist/collectors/request.d.ts.map +1 -1
  10. package/dist/collectors/request.js +15 -4
  11. package/dist/collectors/request.js.map +1 -1
  12. package/dist/index.d.ts +18 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +24 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/routes.d.ts +8 -0
  17. package/dist/routes.d.ts.map +1 -1
  18. package/dist/routes.js +20 -6
  19. package/dist/routes.js.map +1 -1
  20. package/dist/storage.d.ts +26 -0
  21. package/dist/storage.d.ts.map +1 -1
  22. package/dist/storage.js +34 -6
  23. package/dist/storage.js.map +1 -1
  24. package/dist/stream.d.ts +23 -0
  25. package/dist/stream.d.ts.map +1 -0
  26. package/dist/stream.js +96 -0
  27. package/dist/stream.js.map +1 -0
  28. package/dist/types.d.ts +29 -0
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/types.js +22 -0
  31. package/dist/types.js.map +1 -1
  32. package/dist/views/vanilla/EntryList.d.ts +8 -0
  33. package/dist/views/vanilla/EntryList.d.ts.map +1 -1
  34. package/dist/views/vanilla/EntryList.js +62 -11
  35. package/dist/views/vanilla/EntryList.js.map +1 -1
  36. package/dist/views/vanilla/Layout.d.ts.map +1 -1
  37. package/dist/views/vanilla/Layout.js +6 -1
  38. package/dist/views/vanilla/Layout.js.map +1 -1
  39. package/dist/views/vanilla/details/ai-views.d.ts +16 -0
  40. package/dist/views/vanilla/details/ai-views.d.ts.map +1 -0
  41. package/dist/views/vanilla/details/ai-views.js +136 -0
  42. package/dist/views/vanilla/details/ai-views.js.map +1 -0
  43. package/dist/views/vanilla/details/format.d.ts +16 -0
  44. package/dist/views/vanilla/details/format.d.ts.map +1 -0
  45. package/dist/views/vanilla/details/format.js +45 -0
  46. package/dist/views/vanilla/details/format.js.map +1 -0
  47. package/dist/views/vanilla/details/request-views.d.ts +15 -0
  48. package/dist/views/vanilla/details/request-views.d.ts.map +1 -0
  49. package/dist/views/vanilla/details/request-views.js +135 -0
  50. package/dist/views/vanilla/details/request-views.js.map +1 -0
  51. package/dist/views/vanilla/details/views.d.ts.map +1 -1
  52. package/dist/views/vanilla/details/views.js +3 -295
  53. package/dist/views/vanilla/details/views.js.map +1 -1
  54. package/package.json +26 -26
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { TelescopeEntry, EntryType } from './types.js';
2
+ /**
3
+ * Fan-out a recorded entry to every connected dashboard. Called from
4
+ * `Telescope.record()` after the recording-toggle check and before the
5
+ * storage write — dashboard latency tracks the in-process emit, not
6
+ * however long persistence takes.
7
+ *
8
+ * Slow or broken subscribers are silently dropped (the SSE response's
9
+ * `cancel()` handler also unregisters them when the client disconnects).
10
+ */
11
+ export declare function notifySubscribers(entry: TelescopeEntry): void;
12
+ /** @internal — used by tests to inspect subscriber count. */
13
+ export declare function subscriberCount(): number;
14
+ /** @internal — used by tests to reset between cases. */
15
+ export declare function _resetSubscribers(): void;
16
+ /**
17
+ * Build the SSE streaming `Response` for `GET <path>/api/stream`. Optionally
18
+ * filter the firehose to a single `EntryType` via `?type=request` — matches
19
+ * the per-page dashboard URL so each list view subscribes only to what it
20
+ * renders.
21
+ */
22
+ export declare function createStreamResponse(typeFilter: EntryType | null): Response;
23
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAoC3D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAU7D;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,CAiD3E"}
package/dist/stream.js ADDED
@@ -0,0 +1,96 @@
1
+ const _g = globalThis;
2
+ const _subKey = '__rudderjs_telescope_subscribers__';
3
+ function subscribers() {
4
+ let s = _g[_subKey];
5
+ if (!s) {
6
+ s = new Set();
7
+ _g[_subKey] = s;
8
+ }
9
+ return s;
10
+ }
11
+ /**
12
+ * Fan-out a recorded entry to every connected dashboard. Called from
13
+ * `Telescope.record()` after the recording-toggle check and before the
14
+ * storage write — dashboard latency tracks the in-process emit, not
15
+ * however long persistence takes.
16
+ *
17
+ * Slow or broken subscribers are silently dropped (the SSE response's
18
+ * `cancel()` handler also unregisters them when the client disconnects).
19
+ */
20
+ export function notifySubscribers(entry) {
21
+ const subs = subscribers();
22
+ for (const sub of subs) {
23
+ if (sub.type && sub.type !== entry.type)
24
+ continue;
25
+ try {
26
+ sub.write(entry);
27
+ }
28
+ catch {
29
+ subs.delete(sub);
30
+ }
31
+ }
32
+ }
33
+ /** @internal — used by tests to inspect subscriber count. */
34
+ export function subscriberCount() {
35
+ return subscribers().size;
36
+ }
37
+ /** @internal — used by tests to reset between cases. */
38
+ export function _resetSubscribers() {
39
+ subscribers().clear();
40
+ }
41
+ /**
42
+ * Build the SSE streaming `Response` for `GET <path>/api/stream`. Optionally
43
+ * filter the firehose to a single `EntryType` via `?type=request` — matches
44
+ * the per-page dashboard URL so each list view subscribes only to what it
45
+ * renders.
46
+ */
47
+ export function createStreamResponse(typeFilter) {
48
+ const encoder = new TextEncoder();
49
+ let sub = null;
50
+ let heartbeat = null;
51
+ const stream = new ReadableStream({
52
+ start(controller) {
53
+ sub = {
54
+ type: typeFilter,
55
+ write(entry) {
56
+ // Throws if the controller is closed — caught by notifySubscribers
57
+ // which removes us from the registry.
58
+ controller.enqueue(encoder.encode(`event: entry\ndata: ${JSON.stringify(entry)}\n\n`));
59
+ },
60
+ };
61
+ subscribers().add(sub);
62
+ // Immediate open frame so the client's `onopen` fires without waiting
63
+ // for the first real entry.
64
+ controller.enqueue(encoder.encode(': open\n\n'));
65
+ // Keepalive every 30s — below the common 60s proxy idle timeout, above
66
+ // a wasteful sub-10s cadence. SSE clients silently ignore `:` comments.
67
+ heartbeat = setInterval(() => {
68
+ try {
69
+ controller.enqueue(encoder.encode(': keepalive\n\n'));
70
+ }
71
+ catch {
72
+ if (heartbeat)
73
+ clearInterval(heartbeat);
74
+ }
75
+ }, 30_000);
76
+ heartbeat.unref?.();
77
+ },
78
+ cancel() {
79
+ if (sub)
80
+ subscribers().delete(sub);
81
+ if (heartbeat)
82
+ clearInterval(heartbeat);
83
+ },
84
+ });
85
+ return new Response(stream, {
86
+ headers: {
87
+ 'Content-Type': 'text/event-stream',
88
+ 'Cache-Control': 'no-cache, no-transform',
89
+ 'Connection': 'keep-alive',
90
+ // Disable nginx proxy buffering — without this, entries pile up
91
+ // server-side until the buffer fills and dashboards look frozen.
92
+ 'X-Accel-Buffering': 'no',
93
+ },
94
+ });
95
+ }
96
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,16 @@
1
1
  export type EntryType = 'request' | 'query' | 'job' | 'exception' | 'log' | 'mail' | 'notification' | 'event' | 'cache' | 'schedule' | 'model' | 'command' | 'broadcast' | 'sync' | 'http' | 'gate' | 'dump' | 'ai' | 'mcp' | 'view';
2
+ /**
3
+ * Map an `EntryType` to the URL slug used by the dashboard list API.
4
+ *
5
+ * Shared between the server (`routes.ts` registers `${apiPrefix}/${slug}`)
6
+ * and the client (`EntryList.ts` fetches `${apiPrefix}/${slug}?...`). A
7
+ * drift between the two sites silently 404s the listing API and the table
8
+ * renders empty — historically a recurring footgun.
9
+ *
10
+ * Both sites must call this helper rather than inlining the slug logic.
11
+ * Adding a new `EntryType` means updating this function in lockstep.
12
+ */
13
+ export declare function toApiSlug(type: EntryType): string;
2
14
  export interface TelescopeEntry {
3
15
  id: string;
4
16
  batchId: string | null;
@@ -91,6 +103,23 @@ export interface TelescopeConfig {
91
103
  */
92
104
  hideRequestFields?: string[] | undefined;
93
105
  auth?: null | ((req: unknown) => boolean | Promise<boolean>) | undefined;
106
+ /**
107
+ * How the dashboard receives new entries.
108
+ *
109
+ * - `'polling'` (default): the entry list re-fetches every `pollInterval` ms
110
+ * when "Live" is toggled on. Works through any HTTP proxy, no extra wire
111
+ * protocol.
112
+ * - `'stream'`: the dashboard subscribes to a Server-Sent Events endpoint
113
+ * (`<path>/api/stream`) and the server pushes new entries as they're
114
+ * recorded. Lower latency, no spinning request count. Half-duplex —
115
+ * one connection per dashboard tab.
116
+ *
117
+ * Stream mode is pure HTTP (no peer deps); the recording toggle and auth
118
+ * gate still apply.
119
+ */
120
+ updates?: 'polling' | 'stream' | undefined;
121
+ /** Poll interval in ms when `updates === 'polling'`. Default `2000`. Ignored in stream mode. */
122
+ pollInterval?: number | undefined;
94
123
  }
95
124
  export declare const defaultConfig: Required<Omit<TelescopeConfig, 'auth' | 'sqlitePath'>> & {
96
125
  auth: TelescopeConfig['auth'];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,4 +1,24 @@
1
1
  // ─── Entry Types ───────────────────────────────────────────
2
+ /**
3
+ * Map an `EntryType` to the URL slug used by the dashboard list API.
4
+ *
5
+ * Shared between the server (`routes.ts` registers `${apiPrefix}/${slug}`)
6
+ * and the client (`EntryList.ts` fetches `${apiPrefix}/${slug}?...`). A
7
+ * drift between the two sites silently 404s the listing API and the table
8
+ * renders empty — historically a recurring footgun.
9
+ *
10
+ * Both sites must call this helper rather than inlining the slug logic.
11
+ * Adding a new `EntryType` means updating this function in lockstep.
12
+ */
13
+ export function toApiSlug(type) {
14
+ if (type === 'query')
15
+ return 'queries';
16
+ if (type === 'view')
17
+ return 'views';
18
+ if (type === 'http' || type === 'ai' || type === 'mcp')
19
+ return type;
20
+ return `${type}s`;
21
+ }
2
22
  export const defaultConfig = {
3
23
  enabled: true,
4
24
  path: 'telescope',
@@ -34,5 +54,7 @@ export const defaultConfig = {
34
54
  hideRequestHeaders: ['authorization', 'cookie', 'set-cookie', 'x-csrf-token', 'x-api-key', 'x-real-ip'],
35
55
  hideRequestFields: ['password', 'password_confirmation', 'token', 'secret'],
36
56
  auth: null,
57
+ updates: 'polling',
58
+ pollInterval: 2000,
37
59
  };
38
60
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAiI9D,MAAM,CAAC,MAAM,aAAa,GAAmH;IAC3I,OAAO,EAAe,IAAI;IAC1B,IAAI,EAAkB,WAAW;IACjC,OAAO,EAAe,QAAQ;IAC9B,UAAU,EAAY,eAAe;IACrC,UAAU,EAAY,IAAI;IAC1B,eAAe,EAAO,EAAE;IACxB,cAAc,EAAQ,IAAI;IAC1B,aAAa,EAAS,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,gBAAgB,EAAM,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,mBAAmB,EAAG,IAAI;IAC1B,YAAY,EAAU,IAAI;IAC1B,WAAW,EAAW,IAAI;IAC1B,cAAc,EAAQ,IAAI;IAC1B,YAAY,EAAU,IAAI;IAC1B,cAAc,EAAQ,IAAI;IAC1B,gBAAgB,EAAM,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,WAAW,EAAW,IAAI;IAC1B,QAAQ,EAAc,IAAI;IAC1B,SAAS,EAAa,IAAI;IAC1B,WAAW,EAAW,IAAI;IAC1B,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAChD,kBAAkB,EAAI,GAAG;IACzB,eAAe,EAAO,IAAI;IAC1B,gBAAgB,EAAM,IAAI;IAC1B,kBAAkB,EAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC;IACzG,iBAAiB,EAAK,CAAC,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC9E,IAAI,EAAkB,IAAI;CAC3B,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAwB9D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IACtC,IAAI,IAAI,KAAK,MAAM;QAAG,OAAO,OAAO,CAAA;IACpC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IACnE,OAAO,GAAG,IAAI,GAAG,CAAA;AACnB,CAAC;AA4HD,MAAM,CAAC,MAAM,aAAa,GAAmH;IAC3I,OAAO,EAAe,IAAI;IAC1B,IAAI,EAAkB,WAAW;IACjC,OAAO,EAAe,QAAQ;IAC9B,UAAU,EAAY,eAAe;IACrC,UAAU,EAAY,IAAI;IAC1B,eAAe,EAAO,EAAE;IACxB,cAAc,EAAQ,IAAI;IAC1B,aAAa,EAAS,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,gBAAgB,EAAM,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,mBAAmB,EAAG,IAAI;IAC1B,YAAY,EAAU,IAAI;IAC1B,WAAW,EAAW,IAAI;IAC1B,cAAc,EAAQ,IAAI;IAC1B,YAAY,EAAU,IAAI;IAC1B,cAAc,EAAQ,IAAI;IAC1B,gBAAgB,EAAM,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,UAAU,EAAY,IAAI;IAC1B,WAAW,EAAW,IAAI;IAC1B,QAAQ,EAAc,IAAI;IAC1B,SAAS,EAAa,IAAI;IAC1B,WAAW,EAAW,IAAI;IAC1B,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAChD,kBAAkB,EAAI,GAAG;IACzB,eAAe,EAAO,IAAI;IAC1B,gBAAgB,EAAM,IAAI;IAC1B,kBAAkB,EAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC;IACzG,iBAAiB,EAAK,CAAC,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC9E,IAAI,EAAkB,IAAI;IAC1B,OAAO,EAAe,SAAS;IAC/B,YAAY,EAAU,IAAI;CAC3B,CAAA"}
@@ -15,6 +15,14 @@ export interface EntryListProps {
15
15
  pageKey: string;
16
16
  title: string;
17
17
  columns: Column[];
18
+ /**
19
+ * Live-update transport. `'polling'` re-fetches the list endpoint every
20
+ * `pollInterval` ms; `'stream'` opens an SSE connection to
21
+ * `<apiPrefix>/stream?type=<type>` and prepends entries as they arrive.
22
+ */
23
+ updates: 'polling' | 'stream';
24
+ /** Poll cadence in ms when `updates === 'polling'`. */
25
+ pollInterval: number;
18
26
  }
19
27
  /**
20
28
  * Generic master/list page for any watcher type. Renders a table with
@@ -1 +1 @@
1
- {"version":3,"file":"EntryList.d.ts","sourceRoot":"","sources":["../../../src/views/vanilla/EntryList.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAO,MAAM,CAAA;IAClB,sEAAsE;IACtE,GAAG,EAAS,MAAM,CAAA;IAClB,KAAK,CAAC,EAAM,OAAO,CAAA;IACnB,IAAI,CAAC,EAAO,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAG,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,IAAI,EAAO,MAAM,CAAA;IACjB,uFAAuF;IACvF,OAAO,EAAI,MAAM,CAAA;IACjB,KAAK,EAAM,MAAM,CAAA;IACjB,OAAO,EAAI,MAAM,EAAE,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAqLvD"}
1
+ {"version":3,"file":"EntryList.d.ts","sourceRoot":"","sources":["../../../src/views/vanilla/EntryList.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAO,MAAM,CAAA;IAClB,sEAAsE;IACtE,GAAG,EAAS,MAAM,CAAA;IAClB,KAAK,CAAC,EAAM,OAAO,CAAA;IACnB,IAAI,CAAC,EAAO,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAG,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,IAAI,EAAO,MAAM,CAAA;IACjB,uFAAuF;IACvF,OAAO,EAAI,MAAM,CAAA;IACjB,KAAK,EAAM,MAAM,CAAA;IACjB,OAAO,EAAI,MAAM,EAAE,CAAA;IACnB;;;;OAIG;IACH,OAAO,EAAO,SAAS,GAAG,QAAQ,CAAA;IAClC,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAuOvD"}
@@ -1,4 +1,5 @@
1
1
  import { Layout } from './Layout.js';
2
+ import { toApiSlug } from '../../types.js';
2
3
  /**
3
4
  * Generic master/list page for any watcher type. Renders a table with
4
5
  * search + tag filter + pagination. Each row links to the detail page
@@ -9,7 +10,7 @@ import { Layout } from './Layout.js';
9
10
  * Phase 2b added the `?tag=` filter and tag pill column.
10
11
  */
11
12
  export function EntryList(props) {
12
- const { basePath, apiPrefix, type, pageKey, title, columns } = props;
13
+ const { basePath, apiPrefix, type, pageKey, title, columns, updates, pollInterval } = props;
13
14
  const colHeaders = columns.map(c => {
14
15
  const align = c.className?.includes('text-right') ? 'text-right' : 'text-left';
15
16
  return `<th class="px-4 py-3 ${align} text-xs uppercase font-medium text-gray-500 dark:text-gray-400">${c.label}</th>`;
@@ -24,21 +25,19 @@ export function EntryList(props) {
24
25
  return `<td class="px-4 py-3 ${c.className ?? ''}" x-text="${c.key}"></td>`;
25
26
  }).join('\n ');
26
27
  const activePath = `/${pageKey}`;
27
- // Must match the slug logic in routes.ts:apiPath
28
- const apiPath = type === 'query' ? 'queries'
29
- : type === 'http' || type === 'ai' || type === 'mcp' ? type
30
- : type === 'view' ? 'views'
31
- : `${type}s`;
28
+ // Slug mapping is shared with routes.ts via `toApiSlug` (see types.ts).
29
+ // The resolved string is inlined into the rendered Alpine script below.
30
+ const apiPath = toApiSlug(type);
32
31
  const body = `
33
32
  <div x-data="entryList()" x-init="load()" x-cloak>
34
33
  <div class="flex items-center justify-between mb-6 gap-4 flex-wrap">
35
34
  <h2 class="text-xl font-bold">${title}</h2>
36
35
  <div class="flex gap-2 items-center">
37
- <button @click="toggleAutoRefresh()" :title="autoRefresh ? 'Auto-refresh on (click to disable)' : 'Auto-refresh off (click to enable)'"
36
+ <button @click="toggleAutoRefresh()" :title="autoRefresh ? (transport === 'stream' ? 'Streaming (click to disable)' : 'Polling (click to disable)') : 'Live off (click to enable)'"
38
37
  class="text-xs border rounded-lg px-3 py-1.5 transition flex items-center gap-1.5"
39
38
  :class="autoRefresh ? 'border-green-300 dark:border-green-700 bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-400' : 'border-gray-300 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800'">
40
39
  <span class="w-2 h-2 rounded-full" :class="autoRefresh ? 'bg-green-500 animate-pulse' : 'bg-gray-400'"></span>
41
- <span x-text="autoRefresh ? 'Live' : 'Live'"></span>
40
+ <span x-text="autoRefresh ? (transport === 'stream' ? 'Live · stream' : 'Live') : 'Live'"></span>
42
41
  </button>
43
42
  <input type="text" x-model="search" @input.debounce.300ms="load()"
44
43
  placeholder="Search..." class="text-sm border border-gray-300 dark:border-gray-700 rounded-lg px-3 py-1.5 bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 placeholder-gray-400 dark:placeholder-gray-500 focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 outline-none">
@@ -107,14 +106,17 @@ export function EntryList(props) {
107
106
  search: '',
108
107
  tag: new URLSearchParams(window.location.search).get('tag') || '',
109
108
  autoRefresh: localStorage.getItem('telescope.autoRefresh') === 'true',
109
+ transport: '${updates}',
110
110
  _refreshTimer: null,
111
+ _eventSource: null,
112
+ _perPage: 50,
111
113
 
112
114
  init() {
113
115
  if (this.autoRefresh) this.startAutoRefresh()
114
116
  },
115
117
 
116
118
  async load() {
117
- const params = new URLSearchParams({ page: this.page, per_page: 50 })
119
+ const params = new URLSearchParams({ page: this.page, per_page: this._perPage })
118
120
  if (this.search) params.set('search', this.search)
119
121
  if (this.tag) params.set('tag', this.tag)
120
122
  const data = await fetch('${apiPrefix}/${apiPath}?' + params).then(r => r.json())
@@ -130,17 +132,66 @@ export function EntryList(props) {
130
132
  },
131
133
 
132
134
  startAutoRefresh() {
133
- if (this._refreshTimer) return
134
- this._refreshTimer = setInterval(() => this.load(), 2000)
135
+ if (this.transport === 'stream') this.startStream()
136
+ else this.startPolling()
135
137
  },
136
138
 
137
139
  stopAutoRefresh() {
140
+ this.stopStream()
141
+ this.stopPolling()
142
+ },
143
+
144
+ startPolling() {
145
+ if (this._refreshTimer) return
146
+ this._refreshTimer = setInterval(() => this.load(), ${pollInterval})
147
+ },
148
+
149
+ stopPolling() {
138
150
  if (this._refreshTimer) {
139
151
  clearInterval(this._refreshTimer)
140
152
  this._refreshTimer = null
141
153
  }
142
154
  },
143
155
 
156
+ startStream() {
157
+ if (this._eventSource) return
158
+ const url = '${apiPrefix}/stream' + (${JSON.stringify(type)} ? '?type=' + ${JSON.stringify(type)} : '')
159
+ const es = new EventSource(url)
160
+ es.addEventListener('entry', (e) => this.onStreamEntry(e))
161
+ this._eventSource = es
162
+ },
163
+
164
+ stopStream() {
165
+ if (this._eventSource) {
166
+ this._eventSource.close()
167
+ this._eventSource = null
168
+ }
169
+ },
170
+
171
+ onStreamEntry(e) {
172
+ // New entries belong on page 1. While the user is paginating
173
+ // through history, suppress live prepends so their position
174
+ // doesn't shift under them.
175
+ if (this.page > 1) return
176
+
177
+ let entry
178
+ try { entry = JSON.parse(e.data) } catch { return }
179
+
180
+ // Client-side filter parity with the polling endpoint's server
181
+ // filters: search matches any string field in tags; tag filter
182
+ // matches exactly.
183
+ if (this.tag && !(entry.tags || []).includes(this.tag)) return
184
+ if (this.search) {
185
+ const hay = JSON.stringify(entry).toLowerCase()
186
+ if (!hay.includes(this.search.toLowerCase())) return
187
+ }
188
+
189
+ this.entries.unshift(entry)
190
+ if (this.entries.length > this._perPage) this.entries.pop()
191
+ this.meta.total = (this.meta.total || 0) + 1
192
+ this.meta.last_page = Math.max(1, Math.ceil(this.meta.total / this._perPage))
193
+ },
194
+
144
195
  goTo(id) {
145
196
  window.dispatchEvent(new CustomEvent('telescope:navigate', { detail: '${basePath}/${pageKey}/' + id }))
146
197
  },
@@ -1 +1 @@
1
- {"version":3,"file":"EntryList.js","sourceRoot":"","sources":["../../../src/views/vanilla/EntryList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAsBpC;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAEpE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAA;QAC9E,OAAO,wBAAwB,KAAK,oEAAoE,CAAC,CAAC,KAAK,OAAO,CAAA;IACxH,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC/B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,2HAA2H,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,gBAAgB,CAAA;QAC5K,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,0CAA0C,CAAC,CAAC,SAAS,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAA;QAC/F,CAAC;QACD,OAAO,wBAAwB,CAAC,CAAC,SAAS,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAA;IAC7E,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAE7B,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE,CAAA;IAChC,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS;QAC1C,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI;YAC3D,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO;gBAC3B,CAAC,CAAC,GAAG,IAAI,GAAG,CAAA;IAEd,MAAM,IAAI,GAAG;;;wCAGyB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;gBA0B7B,UAAU;;;;;;;;kBAQR,QAAQ;;;;;;;;;;;;;6BAaG,OAAO,CAAC,MAAM,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAsCP,SAAS,IAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;oFAyBwB,QAAQ,IAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCzF,CAAA;IAEZ,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;AACtD,CAAC"}
1
+ {"version":3,"file":"EntryList.js","sourceRoot":"","sources":["../../../src/views/vanilla/EntryList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAA;AA8B1D;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;IAE3F,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAA;QAC9E,OAAO,wBAAwB,KAAK,oEAAoE,CAAC,CAAC,KAAK,OAAO,CAAA;IACxH,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC/B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,2HAA2H,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,gBAAgB,CAAA;QAC5K,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,0CAA0C,CAAC,CAAC,SAAS,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAA;QAC/F,CAAC;QACD,OAAO,wBAAwB,CAAC,CAAC,SAAS,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,SAAS,CAAA;IAC7E,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAE7B,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE,CAAA;IAChC,wEAAwE;IACxE,wEAAwE;IACxE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAiB,CAAC,CAAA;IAE5C,MAAM,IAAI,GAAG;;;wCAGyB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;gBA0B7B,UAAU;;;;;;;;kBAQR,QAAQ;;;;;;;;;;;;;6BAaG,OAAO,CAAC,MAAM,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4BvB,OAAO;;;;;;;;;;;;;wCAaS,SAAS,IAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;kEAwBM,YAAY;;;;;;;;;;;;2BAYnD,SAAS,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oFAsCxB,QAAQ,IAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCzF,CAAA;IAEZ,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;AACtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../src/views/vanilla/Layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAG,MAAM,CAAA;IACb,IAAI,EAAG,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAO,MAAM,CAAA;IAClB,IAAI,EAAQ,MAAM,CAAA;IAClB,QAAQ,EAAI,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAuNjD"}
1
+ {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../src/views/vanilla/Layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAG,MAAM,CAAA;IACb,IAAI,EAAG,MAAM,CAAA;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAO,MAAM,CAAA;IAClB,IAAI,EAAQ,MAAM,CAAA;IAClB,QAAQ,EAAI,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA4NjD"}
@@ -202,7 +202,8 @@ export function Layout(props) {
202
202
  _isPopState: false,
203
203
 
204
204
  stopPageTimers() {
205
- // Clear any auto-refresh intervals from EntryList pages
205
+ // Tear down any per-page auto-refresh timers and open SSE
206
+ // connections from the previous EntryList before swapping <main>.
206
207
  const mainEl = document.getElementById('telescope-main')
207
208
  if (mainEl) {
208
209
  mainEl.querySelectorAll('[x-data]').forEach(el => {
@@ -212,6 +213,10 @@ export function Layout(props) {
212
213
  clearInterval(data._refreshTimer)
213
214
  data._refreshTimer = null
214
215
  }
216
+ if (data._eventSource) {
217
+ data._eventSource.close()
218
+ data._eventSource = null
219
+ }
215
220
  }
216
221
  }
217
222
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/views/vanilla/Layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/views/vanilla/Layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type SafeString } from '../_html.js';
2
+ import type { TelescopeEntry } from '../../../types.js';
3
+ /**
4
+ * Detail view for the `ai` watcher — one entry per agent run, with
5
+ * conversation tabs (input/output), token-usage card, and an execution
6
+ * tab group that drills into tool calls and per-step iterations.
7
+ *
8
+ * The two `render*` helpers below are AI-specific (they unpack the
9
+ * provider-agnostic shapes telescope's AI collector records) so they
10
+ * live with this view rather than in `sections.ts`. If a future watcher
11
+ * needs the same shape, promote them — but don't pre-emptively.
12
+ */
13
+ type ViewFn = (entry: TelescopeEntry) => SafeString;
14
+ export declare const AiView: ViewFn;
15
+ export {};
16
+ //# sourceMappingURL=ai-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-views.d.ts","sourceRoot":"","sources":["../../../../src/views/vanilla/details/ai-views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;;;;;;;;GASG;AAEH,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,UAAU,CAAA;AAmEnD,eAAO,MAAM,MAAM,EAAE,MA2EpB,CAAA"}