@dudousxd/nestjs-telescope-ui 2.0.0 → 3.0.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 (266) hide show
  1. package/CHANGELOG.md +771 -0
  2. package/README.md +35 -0
  3. package/dist/client/console-url.d.ts +11 -0
  4. package/dist/client/console-url.d.ts.map +1 -0
  5. package/dist/client/console-url.js +21 -0
  6. package/dist/client/console-url.js.map +1 -0
  7. package/dist/client/index.d.ts +3 -2
  8. package/dist/client/index.d.ts.map +1 -1
  9. package/dist/client/index.js +4 -1
  10. package/dist/client/index.js.map +1 -1
  11. package/dist/client/telescope-client.d.ts +82 -11
  12. package/dist/client/telescope-client.d.ts.map +1 -1
  13. package/dist/client/telescope-client.js +101 -54
  14. package/dist/client/telescope-client.js.map +1 -1
  15. package/dist/client/types.d.ts +431 -30
  16. package/dist/client/types.d.ts.map +1 -1
  17. package/dist/react/components/batch-timeline.js +2 -2
  18. package/dist/react/components/batch-timeline.js.map +1 -1
  19. package/dist/react/components/cache-badge.d.ts +14 -6
  20. package/dist/react/components/cache-badge.d.ts.map +1 -1
  21. package/dist/react/components/cache-badge.js +26 -12
  22. package/dist/react/components/cache-badge.js.map +1 -1
  23. package/dist/react/components/charts/area-chart-card.d.ts +11 -3
  24. package/dist/react/components/charts/area-chart-card.d.ts.map +1 -1
  25. package/dist/react/components/charts/area-chart-card.js +33 -6
  26. package/dist/react/components/charts/area-chart-card.js.map +1 -1
  27. package/dist/react/components/charts/bar-chart-card.d.ts +18 -7
  28. package/dist/react/components/charts/bar-chart-card.d.ts.map +1 -1
  29. package/dist/react/components/charts/bar-chart-card.js +18 -9
  30. package/dist/react/components/charts/bar-chart-card.js.map +1 -1
  31. package/dist/react/components/charts/breakdown-card.d.ts +17 -0
  32. package/dist/react/components/charts/breakdown-card.d.ts.map +1 -0
  33. package/dist/react/components/charts/breakdown-card.js +43 -0
  34. package/dist/react/components/charts/breakdown-card.js.map +1 -0
  35. package/dist/react/components/charts/chart-card.d.ts +7 -0
  36. package/dist/react/components/charts/chart-card.d.ts.map +1 -1
  37. package/dist/react/components/charts/chart-card.js +10 -3
  38. package/dist/react/components/charts/chart-card.js.map +1 -1
  39. package/dist/react/components/charts/chart-selection.d.ts +44 -0
  40. package/dist/react/components/charts/chart-selection.d.ts.map +1 -0
  41. package/dist/react/components/charts/chart-selection.js +36 -0
  42. package/dist/react/components/charts/chart-selection.js.map +1 -0
  43. package/dist/react/components/charts/chart-theme.d.ts +62 -19
  44. package/dist/react/components/charts/chart-theme.d.ts.map +1 -1
  45. package/dist/react/components/charts/chart-theme.js +72 -13
  46. package/dist/react/components/charts/chart-theme.js.map +1 -1
  47. package/dist/react/components/charts/distribution-chart-card.d.ts +17 -0
  48. package/dist/react/components/charts/distribution-chart-card.d.ts.map +1 -0
  49. package/dist/react/components/charts/distribution-chart-card.js +46 -0
  50. package/dist/react/components/charts/distribution-chart-card.js.map +1 -0
  51. package/dist/react/components/charts/gauge-card.d.ts +12 -0
  52. package/dist/react/components/charts/gauge-card.d.ts.map +1 -0
  53. package/dist/react/components/charts/gauge-card.js +17 -0
  54. package/dist/react/components/charts/gauge-card.js.map +1 -0
  55. package/dist/react/components/charts/index.d.ts +1 -0
  56. package/dist/react/components/charts/index.d.ts.map +1 -1
  57. package/dist/react/components/charts/index.js +1 -0
  58. package/dist/react/components/charts/index.js.map +1 -1
  59. package/dist/react/components/charts/stacked-area-chart-card.d.ts +17 -3
  60. package/dist/react/components/charts/stacked-area-chart-card.d.ts.map +1 -1
  61. package/dist/react/components/charts/stacked-area-chart-card.js +31 -8
  62. package/dist/react/components/charts/stacked-area-chart-card.js.map +1 -1
  63. package/dist/react/components/entries-table.d.ts.map +1 -1
  64. package/dist/react/components/entries-table.js +17 -3
  65. package/dist/react/components/entries-table.js.map +1 -1
  66. package/dist/react/components/entry-detail.d.ts +2 -0
  67. package/dist/react/components/entry-detail.d.ts.map +1 -1
  68. package/dist/react/components/entry-detail.js +186 -20
  69. package/dist/react/components/entry-detail.js.map +1 -1
  70. package/dist/react/components/entry-insights.d.ts.map +1 -1
  71. package/dist/react/components/entry-insights.js +28 -17
  72. package/dist/react/components/entry-insights.js.map +1 -1
  73. package/dist/react/components/entry-types.d.ts +29 -0
  74. package/dist/react/components/entry-types.d.ts.map +1 -1
  75. package/dist/react/components/entry-types.js +60 -0
  76. package/dist/react/components/entry-types.js.map +1 -1
  77. package/dist/react/components/export-json-toolbar.js +2 -2
  78. package/dist/react/components/export-json-toolbar.js.map +1 -1
  79. package/dist/react/components/extensions/panel-column-menu.d.ts +19 -0
  80. package/dist/react/components/extensions/panel-column-menu.d.ts.map +1 -0
  81. package/dist/react/components/extensions/panel-column-menu.js +47 -0
  82. package/dist/react/components/extensions/panel-column-menu.js.map +1 -0
  83. package/dist/react/components/extensions/panel-renderer.d.ts +46 -0
  84. package/dist/react/components/extensions/panel-renderer.d.ts.map +1 -0
  85. package/dist/react/components/extensions/panel-renderer.js +122 -0
  86. package/dist/react/components/extensions/panel-renderer.js.map +1 -0
  87. package/dist/react/components/extensions/panel-table-header.d.ts +18 -0
  88. package/dist/react/components/extensions/panel-table-header.d.ts.map +1 -0
  89. package/dist/react/components/extensions/panel-table-header.js +82 -0
  90. package/dist/react/components/extensions/panel-table-header.js.map +1 -0
  91. package/dist/react/components/extensions/panel-table.d.ts +27 -0
  92. package/dist/react/components/extensions/panel-table.d.ts.map +1 -0
  93. package/dist/react/components/extensions/panel-table.js +87 -0
  94. package/dist/react/components/extensions/panel-table.js.map +1 -0
  95. package/dist/react/components/extensions/stat-card.d.ts +18 -0
  96. package/dist/react/components/extensions/stat-card.d.ts.map +1 -0
  97. package/dist/react/components/extensions/stat-card.js +44 -0
  98. package/dist/react/components/extensions/stat-card.js.map +1 -0
  99. package/dist/react/components/extensions/table-columns.d.ts +32 -0
  100. package/dist/react/components/extensions/table-columns.d.ts.map +1 -0
  101. package/dist/react/components/extensions/table-columns.js +51 -0
  102. package/dist/react/components/extensions/table-columns.js.map +1 -0
  103. package/dist/react/components/extensions/table-features.d.ts +47 -0
  104. package/dist/react/components/extensions/table-features.d.ts.map +1 -0
  105. package/dist/react/components/extensions/table-features.js +45 -0
  106. package/dist/react/components/extensions/table-features.js.map +1 -0
  107. package/dist/react/components/extensions/table-query.d.ts +53 -0
  108. package/dist/react/components/extensions/table-query.d.ts.map +1 -0
  109. package/dist/react/components/extensions/table-query.js +51 -0
  110. package/dist/react/components/extensions/table-query.js.map +1 -0
  111. package/dist/react/components/flamegraph-view.d.ts +18 -0
  112. package/dist/react/components/flamegraph-view.d.ts.map +1 -0
  113. package/dist/react/components/flamegraph-view.js +48 -0
  114. package/dist/react/components/flamegraph-view.js.map +1 -0
  115. package/dist/react/components/flamegraph.d.ts +34 -0
  116. package/dist/react/components/flamegraph.d.ts.map +1 -0
  117. package/dist/react/components/flamegraph.js +54 -0
  118. package/dist/react/components/flamegraph.js.map +1 -0
  119. package/dist/react/components/inertia-badge.d.ts +33 -0
  120. package/dist/react/components/inertia-badge.d.ts.map +1 -0
  121. package/dist/react/components/inertia-badge.js +72 -0
  122. package/dist/react/components/inertia-badge.js.map +1 -0
  123. package/dist/react/components/inertia-body.d.ts +11 -0
  124. package/dist/react/components/inertia-body.d.ts.map +1 -0
  125. package/dist/react/components/inertia-body.js +127 -0
  126. package/dist/react/components/inertia-body.js.map +1 -0
  127. package/dist/react/components/official-event.d.ts +16 -0
  128. package/dist/react/components/official-event.d.ts.map +1 -0
  129. package/dist/react/components/official-event.js +88 -0
  130. package/dist/react/components/official-event.js.map +1 -0
  131. package/dist/react/components/pulse-panel.d.ts.map +1 -1
  132. package/dist/react/components/pulse-panel.js +6 -6
  133. package/dist/react/components/pulse-panel.js.map +1 -1
  134. package/dist/react/components/queues/EnqueueJobForm.d.ts.map +1 -1
  135. package/dist/react/components/queues/EnqueueJobForm.js +2 -1
  136. package/dist/react/components/queues/EnqueueJobForm.js.map +1 -1
  137. package/dist/react/components/queues/JobActions.d.ts.map +1 -1
  138. package/dist/react/components/queues/JobActions.js +11 -9
  139. package/dist/react/components/queues/JobActions.js.map +1 -1
  140. package/dist/react/components/queues/JobDetailDrawer.d.ts.map +1 -1
  141. package/dist/react/components/queues/JobDetailDrawer.js +8 -13
  142. package/dist/react/components/queues/JobDetailDrawer.js.map +1 -1
  143. package/dist/react/components/queues/JobTable.d.ts.map +1 -1
  144. package/dist/react/components/queues/JobTable.js +0 -0
  145. package/dist/react/components/queues/JobTable.js.map +1 -1
  146. package/dist/react/components/queues/QueueList.d.ts.map +1 -1
  147. package/dist/react/components/queues/QueueList.js +6 -6
  148. package/dist/react/components/queues/QueueList.js.map +1 -1
  149. package/dist/react/components/queues/QueueStateTabs.d.ts.map +1 -1
  150. package/dist/react/components/queues/QueueStateTabs.js +9 -7
  151. package/dist/react/components/queues/QueueStateTabs.js.map +1 -1
  152. package/dist/react/components/queues/queue-format.d.ts +5 -1
  153. package/dist/react/components/queues/queue-format.d.ts.map +1 -1
  154. package/dist/react/components/queues/queue-format.js +11 -7
  155. package/dist/react/components/queues/queue-format.js.map +1 -1
  156. package/dist/react/components/queues-panel.js +1 -1
  157. package/dist/react/components/queues-panel.js.map +1 -1
  158. package/dist/react/components/request-timeline.d.ts.map +1 -1
  159. package/dist/react/components/request-timeline.js +2 -2
  160. package/dist/react/components/request-timeline.js.map +1 -1
  161. package/dist/react/components/retention-indicator.d.ts.map +1 -1
  162. package/dist/react/components/retention-indicator.js +1 -1
  163. package/dist/react/components/retention-indicator.js.map +1 -1
  164. package/dist/react/components/sparkline.d.ts.map +1 -1
  165. package/dist/react/components/sparkline.js +1 -1
  166. package/dist/react/components/sparkline.js.map +1 -1
  167. package/dist/react/components/tag-autocomplete.d.ts +21 -4
  168. package/dist/react/components/tag-autocomplete.d.ts.map +1 -1
  169. package/dist/react/components/tag-autocomplete.js +57 -29
  170. package/dist/react/components/tag-autocomplete.js.map +1 -1
  171. package/dist/react/components/to-csv.d.ts +25 -0
  172. package/dist/react/components/to-csv.d.ts.map +1 -0
  173. package/dist/react/components/to-csv.js +78 -0
  174. package/dist/react/components/to-csv.js.map +1 -0
  175. package/dist/react/components/user-tag.d.ts +15 -0
  176. package/dist/react/components/user-tag.d.ts.map +1 -1
  177. package/dist/react/components/user-tag.js +19 -0
  178. package/dist/react/components/user-tag.js.map +1 -1
  179. package/dist/react/components/waterfall-view.d.ts +13 -0
  180. package/dist/react/components/waterfall-view.d.ts.map +1 -0
  181. package/dist/react/components/waterfall-view.js +58 -0
  182. package/dist/react/components/waterfall-view.js.map +1 -0
  183. package/dist/react/components/window-select.d.ts.map +1 -1
  184. package/dist/react/components/window-select.js +6 -2
  185. package/dist/react/components/window-select.js.map +1 -1
  186. package/dist/react/index.d.ts +7 -1
  187. package/dist/react/index.d.ts.map +1 -1
  188. package/dist/react/index.js +11 -1
  189. package/dist/react/index.js.map +1 -1
  190. package/dist/react/ui/badge.d.ts +16 -0
  191. package/dist/react/ui/badge.d.ts.map +1 -0
  192. package/dist/react/ui/badge.js +28 -0
  193. package/dist/react/ui/badge.js.map +1 -0
  194. package/dist/react/ui/button.d.ts +17 -0
  195. package/dist/react/ui/button.d.ts.map +1 -0
  196. package/dist/react/ui/button.js +35 -0
  197. package/dist/react/ui/button.js.map +1 -0
  198. package/dist/react/ui/chart.d.ts +116 -0
  199. package/dist/react/ui/chart.d.ts.map +1 -0
  200. package/dist/react/ui/chart.js +191 -0
  201. package/dist/react/ui/chart.js.map +1 -0
  202. package/dist/react/ui/cn.d.ts +8 -0
  203. package/dist/react/ui/cn.d.ts.map +1 -0
  204. package/dist/react/ui/cn.js +11 -0
  205. package/dist/react/ui/cn.js.map +1 -0
  206. package/dist/react/ui/dialog.d.ts +26 -0
  207. package/dist/react/ui/dialog.d.ts.map +1 -0
  208. package/dist/react/ui/dialog.js +40 -0
  209. package/dist/react/ui/dialog.js.map +1 -0
  210. package/dist/react/ui/index.d.ts +24 -0
  211. package/dist/react/ui/index.d.ts.map +1 -0
  212. package/dist/react/ui/index.js +24 -0
  213. package/dist/react/ui/index.js.map +1 -0
  214. package/dist/react/ui/input.d.ts +3 -0
  215. package/dist/react/ui/input.d.ts.map +1 -0
  216. package/dist/react/ui/input.js +8 -0
  217. package/dist/react/ui/input.js.map +1 -0
  218. package/dist/react/ui/select.d.ts +20 -0
  219. package/dist/react/ui/select.d.ts.map +1 -0
  220. package/dist/react/ui/select.js +27 -0
  221. package/dist/react/ui/select.js.map +1 -0
  222. package/dist/react/ui/table.d.ts +27 -0
  223. package/dist/react/ui/table.d.ts.map +1 -0
  224. package/dist/react/ui/table.js +22 -0
  225. package/dist/react/ui/table.js.map +1 -0
  226. package/dist/react/ui/tabs.d.ts +12 -0
  227. package/dist/react/ui/tabs.d.ts.map +1 -0
  228. package/dist/react/ui/tabs.js +20 -0
  229. package/dist/react/ui/tabs.js.map +1 -0
  230. package/dist/react/ui/tooltip.d.ts +10 -0
  231. package/dist/react/ui/tooltip.d.ts.map +1 -0
  232. package/dist/react/ui/tooltip.js +12 -0
  233. package/dist/react/ui/tooltip.js.map +1 -0
  234. package/dist/react/use-telescope-queries.d.ts +129 -130
  235. package/dist/react/use-telescope-queries.d.ts.map +1 -1
  236. package/dist/react/use-telescope-queries.js +146 -1
  237. package/dist/react/use-telescope-queries.js.map +1 -1
  238. package/dist/react/use-telescope-stream.d.ts +10 -0
  239. package/dist/react/use-telescope-stream.d.ts.map +1 -0
  240. package/dist/react/use-telescope-stream.js +40 -0
  241. package/dist/react/use-telescope-stream.js.map +1 -0
  242. package/dist/server/index.d.ts +3 -1
  243. package/dist/server/index.d.ts.map +1 -1
  244. package/dist/server/index.js +5 -0
  245. package/dist/server/index.js.map +1 -1
  246. package/dist/server/telescope-ui.controller.d.ts.map +1 -1
  247. package/dist/server/telescope-ui.controller.js +3 -1
  248. package/dist/server/telescope-ui.controller.js.map +1 -1
  249. package/dist/server/telescope-ui.module.d.ts +28 -1
  250. package/dist/server/telescope-ui.module.d.ts.map +1 -1
  251. package/dist/server/telescope-ui.module.js +48 -4
  252. package/dist/server/telescope-ui.module.js.map +1 -1
  253. package/dist/server/telescope-ui.options.d.ts +63 -0
  254. package/dist/server/telescope-ui.options.d.ts.map +1 -1
  255. package/dist/server/telescope-ui.options.js.map +1 -1
  256. package/dist/spa/assets/index-BfyQ_2IN.css +1 -0
  257. package/dist/spa/assets/index-EBJiTdQF.js +159 -0
  258. package/dist/spa/index.html +2 -2
  259. package/package.json +75 -36
  260. package/skills/telescope-ui-dashboard/SKILL.md +203 -0
  261. package/dist/react/components/type-tabs.d.ts +0 -5
  262. package/dist/react/components/type-tabs.d.ts.map +0 -1
  263. package/dist/react/components/type-tabs.js +0 -8
  264. package/dist/react/components/type-tabs.js.map +0 -1
  265. package/dist/spa/assets/index-CCzTpxj3.css +0 -1
  266. package/dist/spa/assets/index-w0XTI5OM.js +0 -135
package/README.md CHANGED
@@ -22,6 +22,41 @@ Open `/telescope`. The dashboard polls `/telescope/api/*` and shows captured
22
22
  entries (type tabs + live polling) and, on an entry, the correlated batch — the
23
23
  request and everything it caused.
24
24
 
25
+ ### Protecting the page
26
+
27
+ `authorize` decides who may open the page, the same option (and usually the
28
+ same value) as on `TelescopeModule`:
29
+
30
+ ```ts
31
+ TelescopeUiModule.forRoot({
32
+ authorize: (ctx) => ctx.switchToHttp().getRequest().user?.isAdmin === true,
33
+ });
34
+
35
+ // or mount it yourself: routes: false + your own subclass. List
36
+ // @UseConsoleAuthorize() ABOVE your auth guard so the guard runs first;
37
+ // with no argument it runs TelescopeModule.forRoot({ authorize }).
38
+ @Controller('ops/telescope')
39
+ @UseConsoleAuthorize()
40
+ @UseGuards(AuthGuard)
41
+ class ConsolePage extends TelescopeUiController {}
42
+ // imports: [TelescopeUiModule.forRoot({ path: 'ops/telescope', routes: false })]
43
+ ```
44
+
45
+ A denied navigation gets an "Access denied" page (403), a "Sign in required"
46
+ page (401), or a 302 when the check returns `{ redirectTo: '/login' }`. A full-page navigation carries your cookies,
47
+ not an `Authorization` header, so check a session here. In the running
48
+ dashboard, a 401 with `redirectTo` from the API is followed and a 403 shows an
49
+ access-denied screen. Set `path` to the mount: the page rebases its asset URLs
50
+ on it.
51
+
52
+ Without `authorize` the page is open outside production; with
53
+ `NODE_ENV === 'production'` it answers 403 and one warning is logged at boot.
54
+ `decorators` (e.g. `[UseGuards(AuthenticationGuard)]`) still run first. See
55
+ [Protecting the routes](../../README.md#protecting-the-routes).
56
+
57
+ To link to the console from your app, `telescopeConsoleUrl(basePath)` (from
58
+ `@dudousxd/nestjs-telescope-ui/client`) gives its URL.
59
+
25
60
  ## Build your own (composable)
26
61
 
27
62
  The same pieces are exported so you can drop them into your own admin:
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Where the console SPA is served, for a link from YOUR app (e.g. an admin
3
+ * page's "Open Telescope" anchor).
4
+ *
5
+ * Telescope's mount is configured as `path` (no leading slash, e.g. `'telescope'`); this accepts either
6
+ * form and normalizes it. Access is whatever your `decorators` (or your own controllers) decide:
7
+ * a plain navigation carries your app's cookies, so a cookie-session authentication strategy covers it.
8
+ */
9
+ /** Where the console SPA itself is served. */
10
+ export declare function telescopeConsoleUrl(basePath?: string): string;
11
+ //# sourceMappingURL=console-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-url.d.ts","sourceRoot":"","sources":["../../src/client/console-url.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAEhF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Where the console SPA is served, for a link from YOUR app (e.g. an admin
3
+ * page's "Open Telescope" anchor).
4
+ *
5
+ * Telescope's mount is configured as `path` (no leading slash, e.g. `'telescope'`); this accepts either
6
+ * form and normalizes it. Access is whatever your `decorators` (or your own controllers) decide:
7
+ * a plain navigation carries your app's cookies, so a cookie-session authentication strategy covers it.
8
+ */
9
+ /** The mount default; matches `TelescopeUiModule.forRoot()`'s own default. */
10
+ const DEFAULT_BASE_PATH = '/telescope';
11
+ function normalizeBasePath(basePath) {
12
+ const trimmed = basePath.trim().replace(/\/+$/, '');
13
+ if (trimmed === '')
14
+ return '';
15
+ return trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
16
+ }
17
+ /** Where the console SPA itself is served. */
18
+ export function telescopeConsoleUrl(basePath = DEFAULT_BASE_PATH) {
19
+ return normalizeBasePath(basePath) || '/';
20
+ }
21
+ //# sourceMappingURL=console-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-url.js","sourceRoot":"","sources":["../../src/client/console-url.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,mBAAmB,CAAC,WAAmB,iBAAiB;IACtE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;AAC5C,CAAC"}
@@ -1,4 +1,5 @@
1
- export { createTelescopeClient } from './telescope-client.js';
2
- export type { BulkActionName, JobActionName, TelescopeClient, TelescopeClientOptions, } from './telescope-client.js';
1
+ export { telescopeConsoleUrl } from './console-url.js';
2
+ export { TELESCOPE_ACCESS_DENIED_EVENT, createTelescopeClient, readAccessDenial, } from './telescope-client.js';
3
+ export type { BulkActionName, JobActionName, TagPageOptions, TelescopeAccessDenial, TelescopeClient, TelescopeClientOptions, } from './telescope-client.js';
3
4
  export type * from './types.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,mBAAmB,YAAY,CAAC"}
@@ -1,2 +1,5 @@
1
- export { createTelescopeClient } from './telescope-client.js';
1
+ // The console's URL for a link from the host app. Re-exported here because `./client` resolves to
2
+ // this file — see the package's `exports` map.
3
+ export { telescopeConsoleUrl } from './console-url.js';
4
+ export { TELESCOPE_ACCESS_DENIED_EVENT, createTelescopeClient, readAccessDenial, } from './telescope-client.js';
2
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,+CAA+C;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC"}
@@ -1,4 +1,4 @@
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';
1
+ import type { AiUsageReport, CachedDiagnosis, CpuProfileContent, DiagnoseResult, EntriesQuery, Entry, EntryWithBatch, ExplainResult, JobPage, Page, ProfilerStatus, PrunesInfo, PulseReport, QueueCapabilities, QueueCounts, QueueJobDetail, QueueMetricsReport, QueueState, QueueSummary, RetentionInfo, ScheduledTask, ServerStats, ServerStatsHistory, StatsResult, TagCount, TelescopeHealth, TelescopeMeta, TimeseriesQuery, TimeseriesReport, TracesResult, Waterfall } from './types.js';
2
2
  declare global {
3
3
  interface Window {
4
4
  /**
@@ -15,23 +15,74 @@ export interface TelescopeClientOptions {
15
15
  baseUrl?: string;
16
16
  /** Fetch implementation (injectable for tests). Default global fetch. */
17
17
  fetch?: typeof globalThis.fetch;
18
+ /**
19
+ * Called when the console's `authorize` refuses a call (a 401/403 whose body
20
+ * is `{ error: 'unauthenticated' | 'forbidden' }`). Default: follow
21
+ * `redirectTo` with a full navigation, otherwise dispatch
22
+ * {@link TELESCOPE_ACCESS_DENIED_EVENT} on `window` (the dashboard shows its
23
+ * access-denied screen).
24
+ */
25
+ onAccessDenied?: (denial: TelescopeAccessDenial) => void;
26
+ }
27
+ /** A refusal from the console's `authorize`. */
28
+ export interface TelescopeAccessDenial {
29
+ status: 401 | 403;
30
+ reason: 'unauthenticated' | 'forbidden';
31
+ redirectTo?: string;
18
32
  }
33
+ /** The `window` event the default {@link TelescopeClientOptions.onAccessDenied} dispatches. */
34
+ export declare const TELESCOPE_ACCESS_DENIED_EVENT = "telescope:access-denied";
35
+ /** Reads the guard's denial body (`{ error, redirectTo? }`) from a 401/403, if it is one. */
36
+ export declare function readAccessDenial(response: Response): Promise<TelescopeAccessDenial | null>;
19
37
  export type JobActionName = 'retry' | 'remove' | 'promote';
20
38
  export type BulkActionName = 'retry-all' | 'redrive';
39
+ /** One page of a tag picker's list. See {@link TelescopeClient.tags}. */
40
+ export interface TagPageOptions {
41
+ search?: string;
42
+ limit?: number;
43
+ offset?: number;
44
+ }
21
45
  export interface TelescopeClient {
46
+ /** The resolved API base URL (e.g. `/telescope/api`). Used by hooks that need to construct URLs directly (e.g. SSE EventSource). */
47
+ readonly baseUrl: string;
22
48
  entries(query?: EntriesQuery): Promise<Page<Entry>>;
23
49
  entry(id: string): Promise<EntryWithBatch>;
24
50
  pulse(window?: string): Promise<PulseReport>;
25
51
  queues(window?: string): Promise<QueueMetricsReport>;
26
52
  timeseries(query?: TimeseriesQuery): Promise<TimeseriesReport>;
27
53
  traces(window?: string, limit?: number): Promise<TracesResult>;
54
+ /** Nested span waterfall for one trace (`GET traces/:traceId/waterfall`). */
55
+ waterfall(traceId: string): Promise<Waterfall>;
28
56
  stats(type: string, window: string): Promise<StatsResult>;
29
- tags(prefix?: string): Promise<TagCount[]>;
57
+ /** The AI screen: spend, agent runs and unpriced calls over a window (`GET ai`). */
58
+ ai(window?: string, opts?: {
59
+ buckets?: number;
60
+ top?: number;
61
+ limit?: number;
62
+ }): Promise<AiUsageReport>;
63
+ /**
64
+ * Tag counts, most-used first. `prefix` is the control's fixed scope (`user:`); `search` is what
65
+ * was typed into it and matches anywhere in the tag. Both the search and the page happen on the
66
+ * SERVER — a picker that narrowed its own fetched page could only ever find what the bound
67
+ * already let through.
68
+ */
69
+ tags(prefix?: string, opts?: TagPageOptions): Promise<TagCount[]>;
30
70
  meta(): Promise<TelescopeMeta>;
71
+ /**
72
+ * Fetches data for an extension dashboard panel from a registered provider:
73
+ * `GET ext/:ext/data/:provider`. The optional `query` is serialized to the
74
+ * query string (panel `data.query`). Returns the raw provider payload as
75
+ * `unknown` — the panel renderer (Task 8) narrows it per panel `kind`.
76
+ */
77
+ extData(ext: string, provider: string, query?: Record<string, unknown>): Promise<unknown>;
31
78
  serverStats(): Promise<ServerStats>;
79
+ /** CPU/mem history ring buffer for the resource-history card. */
80
+ serverStatsHistory(): Promise<ServerStatsHistory>;
32
81
  health(): Promise<TelescopeHealth>;
33
82
  /** Retention/prune status for the Overview retention card. */
34
83
  retention(): Promise<RetentionInfo>;
84
+ /** Prune-run activity + retention config for the Prunes screen (`GET /prunes`). */
85
+ prunes(): Promise<PrunesInfo>;
35
86
  /** Runs on-demand prune (gated server-side by the default-deny mutation guard). */
36
87
  prune(): Promise<{
37
88
  pruned: number;
@@ -41,6 +92,35 @@ export interface TelescopeClient {
41
92
  * threw) are EXPECTED outcomes surfaced as `{ ok: false }`, not thrown.
42
93
  */
43
94
  explain(entryId: string): Promise<ExplainResult>;
95
+ /**
96
+ * Diagnoses a captured exception (or client_exception) entry with AI. 404 (AI
97
+ * off / bad entry) and 502 (diagnoser failed) are EXPECTED outcomes surfaced as
98
+ * `{ ok: false }`, not thrown. `force` bypasses the per-family cache.
99
+ */
100
+ diagnose(entryId: string, force?: boolean): Promise<DiagnoseResult>;
101
+ /**
102
+ * Reads the ALREADY-cached AI diagnosis for an exception entry's family, if any
103
+ * (the read-only `GET /exceptions/:id/diagnosis`). NEVER triggers a diagnosis —
104
+ * a cache miss (204) or 404 (AI off / bad entry) both resolve to `null`, so the
105
+ * detail page can show an auto-mode result on open without paying for a model
106
+ * call. Never throws on those expected outcomes.
107
+ */
108
+ cachedDiagnosis(entryId: string): Promise<CachedDiagnosis>;
109
+ /** CPU profiler runtime status (`GET /profiles/status`). */
110
+ profilerStatus(): Promise<ProfilerStatus>;
111
+ /** List captured CPU profiles, newest-first, WITHOUT their frame trees (`GET /profiles`). */
112
+ profiles(limit?: number): Promise<Page<Entry>>;
113
+ /** Fetch one profile's full frame tree (`GET /profiles/:id`). */
114
+ profile(id: string): Promise<Entry & {
115
+ content: CpuProfileContent;
116
+ }>;
117
+ /**
118
+ * Arm an on-demand capture of the next `count` requests (optionally only those
119
+ * matching `label`). Gated server-side by the default-deny mutation guard.
120
+ */
121
+ armProfile(count: number, label?: string): Promise<{
122
+ pendingManual: number;
123
+ }>;
44
124
  liveQueues(): Promise<{
45
125
  queues: QueueSummary[];
46
126
  capabilities: QueueCapabilities;
@@ -69,15 +149,6 @@ export interface TelescopeClient {
69
149
  }): Promise<{
70
150
  id: string | null;
71
151
  }>;
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
- };
81
152
  }
82
153
  export declare function createTelescopeClient(options?: TelescopeClientOptions): TelescopeClient;
83
154
  //# 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,5 +1,34 @@
1
- function isAuthMode(value) {
2
- return value === 'session' || value === 'login';
1
+ /** The `window` event the default {@link TelescopeClientOptions.onAccessDenied} dispatches. */
2
+ export const TELESCOPE_ACCESS_DENIED_EVENT = 'telescope:access-denied';
3
+ /** Reads the guard's denial body (`{ error, redirectTo? }`) from a 401/403, if it is one. */
4
+ export async function readAccessDenial(response) {
5
+ if (response.status !== 401 && response.status !== 403)
6
+ return null;
7
+ // Read a copy so the caller can still read the body.
8
+ const copy = typeof response.clone === 'function' ? response.clone() : response;
9
+ const body = await Promise.resolve()
10
+ .then(() => copy.json())
11
+ .catch(() => null);
12
+ if (body === null || typeof body !== 'object' || !('error' in body))
13
+ return null;
14
+ const { error } = body;
15
+ if (error !== 'unauthenticated' && error !== 'forbidden')
16
+ return null;
17
+ const redirectTo = body.redirectTo;
18
+ return {
19
+ status: response.status,
20
+ reason: error,
21
+ ...(typeof redirectTo === 'string' ? { redirectTo } : {}),
22
+ };
23
+ }
24
+ function defaultOnAccessDenied(denial) {
25
+ if (typeof window === 'undefined')
26
+ return;
27
+ if (denial.redirectTo !== undefined) {
28
+ window.location.assign(denial.redirectTo);
29
+ return;
30
+ }
31
+ window.dispatchEvent(new CustomEvent(TELESCOPE_ACCESS_DENIED_EVENT, { detail: denial }));
3
32
  }
4
33
  /** Derives the API base from the server-injected mount base, falling back to the default. */
5
34
  function defaultBaseUrl() {
@@ -8,7 +37,17 @@ function defaultBaseUrl() {
8
37
  }
9
38
  export function createTelescopeClient(options = {}) {
10
39
  const baseUrl = (options.baseUrl ?? defaultBaseUrl()).replace(/\/$/, '');
11
- const doFetch = options.fetch ?? globalThis.fetch;
40
+ const rawFetch = options.fetch ?? globalThis.fetch;
41
+ const onAccessDenied = options.onAccessDenied ?? defaultOnAccessDenied;
42
+ // Every call goes through here, so a refusal from the console's `authorize`
43
+ // reaches `onAccessDenied` whichever endpoint hit it.
44
+ const doFetch = async (input, init) => {
45
+ const response = await rawFetch(input, init);
46
+ const denial = await readAccessDenial(response);
47
+ if (denial)
48
+ onAccessDenied(denial);
49
+ return response;
50
+ };
12
51
  async function get(path, params) {
13
52
  let url = `${baseUrl}${path}`;
14
53
  if (params) {
@@ -47,9 +86,9 @@ export function createTelescopeClient(options = {}) {
47
86
  throw new Error(`Telescope API ${path} failed: ${response.status}`);
48
87
  return (await response.json());
49
88
  }
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.
89
+ // Status-aware variants for endpoints whose error statuses are expected
90
+ // outcomes (e.g. explain's 404 = feature off) rather than errors — so they
91
+ // must NOT throw the way `get`/`post` do.
53
92
  async function rawGet(path) {
54
93
  return doFetch(`${baseUrl}${path}`);
55
94
  }
@@ -60,43 +99,16 @@ export function createTelescopeClient(options = {}) {
60
99
  ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
61
100
  });
62
101
  }
63
- async function authMe() {
64
- const response = await rawGet('/auth/me');
102
+ async function explain(entryId) {
103
+ const response = await rawPost('/queries/explain', { entryId });
65
104
  if (response.ok) {
66
105
  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);
106
+ return { ok: true, plan: body.plan };
89
107
  }
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);
108
+ const message = await readExplainMessage(response);
97
109
  return { ok: false, message };
98
110
  }
99
- async function readLoginMessage(response) {
111
+ async function readExplainMessage(response) {
100
112
  const parsed = await response
101
113
  .json()
102
114
  .then((value) => value)
@@ -107,21 +119,31 @@ export function createTelescopeClient(options = {}) {
107
119
  typeof parsed.message === 'string') {
108
120
  return parsed.message;
109
121
  }
110
- return 'Invalid credentials';
111
- }
112
- async function authLogout() {
113
- await rawPost('/auth/logout');
122
+ return `EXPLAIN failed (${response.status})`;
114
123
  }
115
- async function explain(entryId) {
116
- const response = await rawPost('/queries/explain', { entryId });
124
+ async function diagnose(entryId, force = false) {
125
+ const query = force ? '?force=true' : '';
126
+ const response = await rawPost(`/exceptions/${encodeURIComponent(entryId)}/diagnose${query}`);
117
127
  if (response.ok) {
118
128
  const body = (await response.json());
119
- return { ok: true, plan: body.plan };
129
+ return { ok: true, markdown: body.markdown, cached: body.cached };
120
130
  }
121
- const message = await readExplainMessage(response);
131
+ const message = await readDiagnoseMessage(response);
122
132
  return { ok: false, message };
123
133
  }
124
- async function readExplainMessage(response) {
134
+ async function cachedDiagnosis(entryId) {
135
+ const response = await rawGet(`/exceptions/${encodeURIComponent(entryId)}/diagnosis`);
136
+ // 204 (nothing cached) and 404 (AI off / bad entry) are EXPECTED "nothing to
137
+ // show" outcomes — resolve to null rather than throwing. A 204 has no JSON
138
+ // body, so guard on status before parsing.
139
+ if (response.status === 204 || response.status === 404)
140
+ return null;
141
+ if (!response.ok)
142
+ return null;
143
+ const body = (await response.json());
144
+ return { markdown: body.markdown, cached: true };
145
+ }
146
+ async function readDiagnoseMessage(response) {
125
147
  const parsed = await response
126
148
  .json()
127
149
  .then((value) => value)
@@ -132,9 +154,10 @@ export function createTelescopeClient(options = {}) {
132
154
  typeof parsed.message === 'string') {
133
155
  return parsed.message;
134
156
  }
135
- return `EXPLAIN failed (${response.status})`;
157
+ return `Diagnosis failed (${response.status})`;
136
158
  }
137
159
  return {
160
+ baseUrl,
138
161
  entries: (query = {}) => get('/entries', {
139
162
  type: query.type,
140
163
  tag: query.tag,
@@ -155,14 +178,43 @@ export function createTelescopeClient(options = {}) {
155
178
  tag: query.tag,
156
179
  }),
157
180
  traces: (window, limit) => get('/traces', { window, limit }),
181
+ waterfall: (traceId) => get(`/traces/${encodeURIComponent(traceId)}/waterfall`),
158
182
  stats: (type, window) => get('/stats', { type, window }),
159
- tags: (prefix) => get('/tags', { prefix }),
183
+ ai: (window, opts) => get('/ai', {
184
+ window,
185
+ buckets: opts?.buckets,
186
+ top: opts?.top,
187
+ limit: opts?.limit,
188
+ }),
189
+ tags: (prefix, opts) => get('/tags', {
190
+ prefix,
191
+ search: opts?.search?.trim() || undefined,
192
+ limit: opts?.limit,
193
+ offset: opts?.offset,
194
+ }),
160
195
  meta: () => get('/meta'),
196
+ extData: (ext, provider, query) => {
197
+ const qs = query && Object.keys(query).length
198
+ ? `?${new URLSearchParams(query).toString()}`
199
+ : '';
200
+ return get(`/ext/${encodeURIComponent(ext)}/data/${encodeURIComponent(provider)}${qs}`);
201
+ },
161
202
  serverStats: () => get('/server-stats'),
203
+ serverStatsHistory: () => get('/server-stats/history'),
162
204
  health: () => get('/health'),
163
205
  retention: () => get('/retention'),
206
+ prunes: () => get('/prunes'),
164
207
  prune: () => post('/retention/prune'),
165
208
  explain,
209
+ diagnose,
210
+ cachedDiagnosis,
211
+ profilerStatus: () => get('/profiles/status'),
212
+ profiles: (limit) => get('/profiles', { limit }),
213
+ profile: (id) => get(`/profiles/${encodeURIComponent(id)}`),
214
+ armProfile: (count, label) => post('/profiles/arm', undefined, {
215
+ count,
216
+ ...(label ? { label } : {}),
217
+ }),
166
218
  liveQueues: () => get('/queues/live'),
167
219
  schedulesLive: () => get('/schedules/live'),
168
220
  queueCounts: (driver, queue) => get(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/counts`),
@@ -175,11 +227,6 @@ export function createTelescopeClient(options = {}) {
175
227
  queueJobAction: (driver, queue, id, action) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/jobs/${encodeURIComponent(id)}/${encodeURIComponent(action)}`),
176
228
  queueAction: (driver, queue, action, opts = {}) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/actions/${encodeURIComponent(action)}`, { state: opts.state }),
177
229
  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
- },
183
230
  };
184
231
  }
185
232
  //# 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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"}