@dudousxd/nestjs-telescope-ui 2.0.0 → 2.0.1

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 (263) hide show
  1. package/CHANGELOG.md +748 -0
  2. package/README.md +31 -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 +2 -1
  8. package/dist/client/index.d.ts.map +1 -1
  9. package/dist/client/index.js +3 -0
  10. package/dist/client/index.js.map +1 -1
  11. package/dist/client/telescope-client.d.ts +64 -11
  12. package/dist/client/telescope-client.d.ts.map +1 -1
  13. package/dist/client/telescope-client.js +59 -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 +2 -1
  243. package/dist/server/index.d.ts.map +1 -1
  244. package/dist/server/index.js +2 -0
  245. package/dist/server/index.js.map +1 -1
  246. package/dist/server/telescope-ui.module.d.ts +28 -1
  247. package/dist/server/telescope-ui.module.d.ts.map +1 -1
  248. package/dist/server/telescope-ui.module.js +42 -4
  249. package/dist/server/telescope-ui.module.js.map +1 -1
  250. package/dist/server/telescope-ui.options.d.ts +47 -0
  251. package/dist/server/telescope-ui.options.d.ts.map +1 -1
  252. package/dist/server/telescope-ui.options.js.map +1 -1
  253. package/dist/spa/assets/index-BPSlup7m.js +159 -0
  254. package/dist/spa/assets/index-DmsmJrlA.css +1 -0
  255. package/dist/spa/index.html +2 -2
  256. package/package.json +75 -36
  257. package/skills/telescope-ui-dashboard/SKILL.md +198 -0
  258. package/dist/react/components/type-tabs.d.ts +0 -5
  259. package/dist/react/components/type-tabs.d.ts.map +0 -1
  260. package/dist/react/components/type-tabs.js +0 -8
  261. package/dist/react/components/type-tabs.js.map +0 -1
  262. package/dist/spa/assets/index-CCzTpxj3.css +0 -1
  263. package/dist/spa/assets/index-w0XTI5OM.js +0 -135
@@ -3,4 +3,6 @@ export declare function EntryDetail({ entry, onSelect, }: {
3
3
  entry: EntryWithBatch;
4
4
  onSelect?: (id: string) => void;
5
5
  }): JSX.Element;
6
+ /** Pretty-print a dump value to JSON, falling back to String() if not serializable. */
7
+ export declare function prettyJson(value: unknown): string;
6
8
  //# sourceMappingURL=entry-detail.d.ts.map
@@ -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;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
+ {"version":3,"file":"entry-detail.d.ts","sourceRoot":"","sources":["../../../src/react/components/entry-detail.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAY5E,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,CA4F1E;AAkDD,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMjD"}
@@ -1,8 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useExplain, useMeta } from '../use-telescope-queries.js';
2
+ import { useState } from 'react';
3
+ import { useCachedDiagnosis, useDiagnose, useExplain, useMeta } from '../use-telescope-queries.js';
3
4
  import { BatchTimeline } from './batch-timeline.js';
4
5
  import { CacheBadge } from './cache-badge.js';
5
6
  import { ExportJsonToolbar } from './export-json-toolbar.js';
7
+ import { InertiaBadge } from './inertia-badge.js';
8
+ import { InertiaBody } from './inertia-body.js';
9
+ import { OfficialEventBody, isOfficialEventType } from './official-event.js';
6
10
  import { RequestTimeline } from './request-timeline.js';
7
11
  import { buildTraceHref } from './trace-link.js';
8
12
  import { buildUserActivityHref, findUserTag, userTagId } from './user-tag.js';
@@ -10,10 +14,41 @@ export function EntryDetail({ entry, onSelect, }) {
10
14
  const { data: meta } = useMeta();
11
15
  const showTimeline = entry.type === 'request' && entry.batch.length > 1;
12
16
  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 })] })] }));
17
+ 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-brand", children: [entry.type, entry.type === 'cache' ? _jsx(CacheBadge, { content: entry.content }) : null, entry.type === 'inertia' ? _jsx(InertiaBadge, { 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-muted-foreground", 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 === 'inertia' ? (_jsx(InertiaBody, { content: entry.content })) : entry.type === 'client_exception' ? (_jsxs(_Fragment, { children: [_jsx(ClientExceptionBody, { content: entry.content }), _jsx(DiagnosePanel, { entryId: entry.id, aiEnabled: meta?.ai?.enabled ?? false })] })) : entry.type === 'exception' ? (_jsxs(_Fragment, { children: [_jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: JSON.stringify(entry.content, null, 2) }), _jsx(DiagnosePanel, { entryId: entry.id, aiEnabled: meta?.ai?.enabled ?? false })] })) : entry.type === 'request' ? (_jsx(RequestBody, { content: entry.content })) : isOfficialEventType(entry.type) ? (_jsx(OfficialEventBody, { type: entry.type, 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-panel p-3 text-xs text-foreground", 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-muted-foreground", children: "User" }), _jsx("div", { className: "font-mono text-[11px] text-foreground", children: userTagId(userTag) }), _jsx("a", { href: buildUserActivityHref(userTag), className: "mt-1 inline-block text-[11px] text-brand 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-muted-foreground", children: "Trace" }), _jsx(TraceRow, { traceId: entry.traceId, spanId: entry.spanId, traceLink: meta?.traceLink ?? null })] })) : null, _jsx(RelatedLinks, { entry: entry }), _jsxs("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: ["Batch (", entry.batch.length, ")"] }), _jsx(BatchTimeline, { batch: entry.batch, currentId: entry.id, onSelect: onSelect })] })] }));
18
+ }
19
+ /**
20
+ * Quick navigation from an entry to the things it relates to — the debugging
21
+ * web the dashboard is built around. Every link uses an existing hash route and
22
+ * data already on the entry (no extra fetch):
23
+ * - `All <type> like this` — every entry sharing this familyHash (this route's
24
+ * other requests, this query's other executions, this exception's recurrences).
25
+ * - `Originating request` — for a non-request entry recorded inside a request
26
+ * batch (an exception/query/log/cache during a request), jump to that request.
27
+ * - `Open queue console` — jobs are managed on the Queues page.
28
+ */
29
+ function RelatedLinks({ entry }) {
30
+ const links = [];
31
+ if (entry.familyHash) {
32
+ links.push({
33
+ label: `All ${entry.type} like this`,
34
+ href: `#/entries/${encodeURIComponent(entry.type)}?familyHash=${encodeURIComponent(entry.familyHash)}`,
35
+ });
36
+ }
37
+ if (entry.type !== 'request') {
38
+ const request = entry.batch.find((e) => e.type === 'request' && e.id !== entry.id);
39
+ if (request) {
40
+ links.push({ label: 'Originating request', href: `#/entries/view/${request.id}` });
41
+ }
42
+ }
43
+ if (entry.type === 'job') {
44
+ links.push({ label: 'Open queue console', href: '#/queues' });
45
+ }
46
+ if (links.length === 0)
47
+ return null;
48
+ return (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: "Related" }), _jsx("div", { className: "flex flex-col gap-1", children: links.map((link) => (_jsxs("a", { href: link.href, className: "text-[11px] text-brand hover:underline", children: [link.label, " \u2192"] }, `${link.href}:${link.label}`))) })] }));
14
49
  }
15
50
  /** Pretty-print a dump value to JSON, falling back to String() if not serializable. */
16
- function prettyJson(value) {
51
+ export function prettyJson(value) {
17
52
  try {
18
53
  return JSON.stringify(value, null, 2) ?? String(value);
19
54
  }
@@ -24,39 +59,39 @@ function prettyJson(value) {
24
59
  function DumpBody({ content }) {
25
60
  const record = typeof content === 'object' && content !== null ? content : {};
26
61
  const label = typeof record.label === 'string' ? record.label : null;
27
- return (_jsxs("div", { children: [label ? _jsx("h3", { className: "mb-2 font-mono text-sm text-fuchsia-400", children: label }) : null, _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.value) })] }));
62
+ return (_jsxs("div", { children: [label ? _jsx("h3", { className: "mb-2 font-mono text-sm text-fuchsia-400", children: label }) : null, _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.value) })] }));
28
63
  }
29
64
  /** Tailwind text color for a log level badge. */
30
65
  function logLevelColor(level) {
31
66
  switch (level) {
32
67
  case 'error':
33
- return 'text-red-400';
68
+ return 'text-bad';
34
69
  case 'warn':
35
- return 'text-amber-400';
70
+ return 'text-warn';
36
71
  case 'debug':
37
72
  case 'verbose':
38
- return 'text-zinc-500';
73
+ return 'text-muted-foreground';
39
74
  default:
40
- return 'text-zinc-300';
75
+ return 'text-foreground';
41
76
  }
42
77
  }
43
78
  function EventBody({ content }) {
44
79
  const record = typeof content === 'object' && content !== null ? content : {};
45
80
  const name = typeof record.name === 'string' ? record.name : String(record.name ?? '');
46
81
  const listenerCount = typeof record.listenerCount === 'number' ? record.listenerCount : null;
47
- return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 font-mono text-sm text-indigo-400", children: [name, listenerCount !== null ? (_jsxs("span", { className: "rounded bg-zinc-900 px-1.5 py-0.5 text-[10px] text-zinc-500", children: [listenerCount, " listener", listenerCount === 1 ? '' : 's'] })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.payload) })] }));
82
+ return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 font-mono text-sm text-indigo-400", children: [name, listenerCount !== null ? (_jsxs("span", { className: "rounded bg-panel px-1.5 py-0.5 text-[10px] text-muted-foreground", children: [listenerCount, " listener", listenerCount === 1 ? '' : 's'] })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.payload) })] }));
48
83
  }
49
84
  /** Tailwind text color for a model action badge. */
50
85
  function modelActionColor(action) {
51
86
  switch (action) {
52
87
  case 'create':
53
- return 'text-emerald-400';
88
+ return 'text-brand';
54
89
  case 'update':
55
- return 'text-amber-400';
90
+ return 'text-warn';
56
91
  case 'delete':
57
- return 'text-red-400';
92
+ return 'text-bad';
58
93
  default:
59
- return 'text-zinc-300';
94
+ return 'text-foreground';
60
95
  }
61
96
  }
62
97
  function ModelBody({ content }) {
@@ -64,13 +99,39 @@ function ModelBody({ content }) {
64
99
  const action = typeof record.action === 'string' ? record.action : 'update';
65
100
  const entity = typeof record.entity === 'string' ? record.entity : String(record.entity ?? '');
66
101
  const id = record.id === null || record.id === undefined ? null : String(record.id);
67
- return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 font-mono text-sm text-lime-400", children: [_jsx("span", { className: `rounded bg-zinc-900 px-1.5 py-0.5 text-[10px] uppercase ${modelActionColor(action)}`, children: action }), _jsx("span", { children: entity }), id !== null ? _jsxs("span", { className: "text-zinc-500", children: ["#", id] }) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.changes) })] }));
102
+ return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 font-mono text-sm text-lime-400", children: [_jsx("span", { className: `rounded bg-panel px-1.5 py-0.5 text-[10px] uppercase ${modelActionColor(action)}`, children: action }), _jsx("span", { children: entity }), id !== null ? _jsxs("span", { className: "text-muted-foreground", children: ["#", id] }) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.changes) })] }));
68
103
  }
69
104
  function RedisBody({ content }) {
70
105
  const record = typeof content === 'object' && content !== null ? content : {};
71
106
  const command = typeof record.command === 'string' ? record.command : String(record.command ?? '');
72
107
  const durationMs = typeof record.durationMs === 'number' ? record.durationMs : null;
73
- return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 font-mono text-sm text-rose-400", children: [command, durationMs !== null ? (_jsxs("span", { className: "rounded bg-zinc-900 px-1.5 py-0.5 text-[10px] text-zinc-500", children: [durationMs, " ms"] })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: prettyJson(record.args) })] }));
108
+ return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 font-mono text-sm text-bad", children: [command, durationMs !== null ? (_jsxs("span", { className: "rounded bg-panel px-1.5 py-0.5 text-[10px] text-muted-foreground", children: [durationMs, " ms"] })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.args) })] }));
109
+ }
110
+ /**
111
+ * A labelled monospace block for a stack / component-stack string. Rendered only
112
+ * when there's something to show, so an error without a stack doesn't leave an
113
+ * empty fence. The orange accent matches the `client_exception` type dot.
114
+ */
115
+ function StackBlock({ label, value }) {
116
+ return (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: label }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs leading-relaxed text-foreground", children: value })] }));
117
+ }
118
+ /**
119
+ * Renders a browser-reported `client_exception`: the name + message header,
120
+ * page URL and user-agent, then the JS stack and (when present) the React
121
+ * component stack, followed by any host-supplied `extra` debugging context.
122
+ * Reads every field defensively — the content originated from an UNTRUSTED
123
+ * browser, so nothing is assumed beyond `message`.
124
+ */
125
+ function ClientExceptionBody({ content }) {
126
+ const record = typeof content === 'object' && content !== null ? content : {};
127
+ const name = typeof record.name === 'string' ? record.name : null;
128
+ const message = typeof record.message === 'string' ? record.message : String(record.message ?? '');
129
+ const url = typeof record.url === 'string' ? record.url : null;
130
+ const userAgent = typeof record.userAgent === 'string' ? record.userAgent : null;
131
+ const release = typeof record.release === 'string' ? record.release : null;
132
+ const stack = typeof record.stack === 'string' ? record.stack : null;
133
+ const componentStack = typeof record.componentStack === 'string' ? record.componentStack : null;
134
+ return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-3 flex flex-wrap items-center gap-2 font-mono text-sm text-orange-400", children: [name ? (_jsx("span", { className: "rounded bg-panel px-1.5 py-0.5 text-[10px] uppercase", children: name })) : null, _jsx("span", { className: "text-foreground", children: message }), release ? _jsx("span", { className: "text-[10px] text-muted-foreground", children: release }) : null] }), url ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: "URL" }), _jsx("div", { className: "break-all font-mono text-xs text-foreground", children: url })] })) : null, userAgent ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: "User agent" }), _jsx("div", { className: "break-all font-mono text-[11px] text-muted-foreground", children: userAgent })] })) : null, stack ? _jsx(StackBlock, { label: "Stack", value: stack }) : null, componentStack ? _jsx(StackBlock, { label: "Component stack", value: componentStack }) : null, hasContent(record.extra) ? (_jsxs("div", { className: "mb-4", children: [_jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: "Extra" }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.extra) })] })) : null] }));
74
135
  }
75
136
  /** True when a value is a non-null object or non-empty array (worth rendering). */
76
137
  function hasContent(value) {
@@ -84,7 +145,7 @@ function hasContent(value) {
84
145
  }
85
146
  function RequestHeaders({ headers }) {
86
147
  const entries = Object.entries(headers);
87
- return (_jsxs("details", { className: "mb-4", children: [_jsxs("summary", { className: "cursor-pointer text-xs uppercase tracking-wide text-zinc-500", children: ["Headers (", entries.length, ")"] }), _jsx("dl", { className: "mt-2 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 rounded bg-zinc-900 p-3 text-xs", children: entries.map(([key, value]) => (_jsxs("div", { className: "contents", children: [_jsx("dt", { className: "font-mono text-zinc-500", children: key }), _jsx("dd", { className: "break-all font-mono text-zinc-300", children: typeof value === 'string' ? value : prettyJson(value) })] }, key))) })] }));
148
+ return (_jsxs("details", { className: "mb-4", children: [_jsxs("summary", { className: "cursor-pointer text-xs uppercase tracking-wide text-muted-foreground", children: ["Headers (", entries.length, ")"] }), _jsx("dl", { className: "mt-2 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 rounded bg-panel p-3 text-xs", children: entries.map(([key, value]) => (_jsxs("div", { className: "contents", children: [_jsx("dt", { className: "font-mono text-muted-foreground", children: key }), _jsx("dd", { className: "break-all font-mono text-foreground", children: typeof value === 'string' ? value : prettyJson(value) })] }, key))) })] }));
88
149
  }
89
150
  function RequestBody({ content }) {
90
151
  const record = typeof content === 'object' && content !== null ? content : {};
@@ -96,7 +157,7 @@ function RequestBody({ content }) {
96
157
  const statusCode = typeof record.statusCode === 'number' ? record.statusCode : null;
97
158
  const ip = typeof record.ip === 'string' ? record.ip : null;
98
159
  const hasUser = 'user' in record && record.user !== null && record.user !== undefined;
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" }))] }));
160
+ return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-3 flex items-center gap-2 font-mono text-sm text-brand", children: [_jsx("span", { className: "rounded bg-panel px-1.5 py-0.5 text-[10px] uppercase", children: method }), _jsx("span", { className: "text-foreground", children: uri }), statusCode !== null ? (_jsx("span", { className: "rounded bg-panel px-1.5 py-0.5 text-[10px] text-muted-foreground", children: statusCode })) : null, ip ? _jsx("span", { className: "text-[10px] text-muted-foreground", children: ip }) : null] }), _jsx(RequestHeaders, { headers: headers }), _jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: "Payload" }), hasContent(record.payload) ? (_jsx("pre", { className: "mb-4 overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.payload) })) : (_jsx("p", { className: "mb-4 text-xs text-muted-foreground", children: "No payload" })), _jsx("h3", { className: "mb-2 text-xs uppercase tracking-wide text-muted-foreground", children: "User" }), hasUser ? (_jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.user) })) : (_jsx("p", { className: "text-xs text-muted-foreground", children: "anonymous" }))] }));
100
161
  }
101
162
  function QueryBody({ entryId, content, explainEnabled, }) {
102
163
  const record = typeof content === 'object' && content !== null ? content : {};
@@ -113,17 +174,122 @@ function QueryBody({ entryId, content, explainEnabled, }) {
113
174
  // expected 404/503 outcomes into a non-throwing `{ ok: false }` result.
114
175
  }
115
176
  }
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 }))] }));
177
+ 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-panel px-1.5 py-0.5 text-[10px] text-warn", children: "slow" })) : null] }), explainEnabled ? (_jsx("button", { type: "button", onClick: onExplain, disabled: explain.isPending, className: "rounded border border-line px-2 py-1 text-[11px] text-foreground hover:border-brand hover:text-brand disabled:cursor-not-allowed disabled:opacity-50", children: explain.isPending ? 'Explaining…' : 'Explain' })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", 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-muted-foreground", children: "Bindings" }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(record.bindings) })] })) : null, explain.isPending ? (_jsx("p", { className: "mt-3 text-xs text-muted-foreground", 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-muted-foreground", children: "Query plan" }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: prettyJson(result.plan) })] })) : (_jsx("p", { className: "mt-3 rounded bg-panel p-3 text-xs text-bad", children: result.message }))] }));
117
178
  }
118
179
  function LogBody({ content }) {
119
180
  const record = typeof content === 'object' && content !== null ? content : {};
120
181
  const level = typeof record.level === 'string' ? record.level : 'log';
121
182
  const message = typeof record.message === 'string' ? record.message : String(record.message ?? '');
122
183
  const context = typeof record.context === 'string' ? record.context : null;
123
- return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 text-sm", children: [_jsx("span", { className: `rounded bg-zinc-900 px-1.5 py-0.5 font-mono text-[10px] uppercase ${logLevelColor(level)}`, children: level }), context ? _jsx("span", { className: "font-mono text-xs text-zinc-500", children: context }) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-zinc-900 p-3 text-xs text-zinc-300", children: message })] }));
184
+ return (_jsxs("div", { children: [_jsxs("h3", { className: "mb-2 flex items-center gap-2 text-sm", children: [_jsx("span", { className: `rounded bg-panel px-1.5 py-0.5 font-mono text-[10px] uppercase ${logLevelColor(level)}`, children: level }), context ? (_jsx("span", { className: "font-mono text-xs text-muted-foreground", children: context })) : null] }), _jsx("pre", { className: "overflow-auto rounded bg-panel p-3 text-xs text-foreground", children: message })] }));
124
185
  }
125
186
  function TraceRow({ traceId, spanId, traceLink, }) {
126
187
  const href = buildTraceHref(traceLink, traceId, spanId ?? '');
127
- return (_jsxs("div", { children: [href ? (_jsx("a", { href: href, target: "_blank", rel: "noreferrer", className: "font-mono text-[11px] text-emerald-400 hover:underline", children: traceId })) : (_jsx("div", { className: "font-mono text-[11px] text-zinc-300", children: traceId })), spanId ? _jsx("div", { className: "font-mono text-[10px] text-zinc-500", children: spanId }) : null, _jsx("a", { href: `#/traces/${traceId}`, className: "mt-1 inline-block text-[11px] text-emerald-400 hover:underline", children: "View all in this trace" })] }));
188
+ return (_jsxs("div", { children: [href ? (_jsx("a", { href: href, target: "_blank", rel: "noreferrer", className: "font-mono text-[11px] text-brand hover:underline", children: traceId })) : (_jsx("div", { className: "font-mono text-[11px] text-foreground", children: traceId })), spanId ? _jsx("div", { className: "font-mono text-[10px] text-muted-foreground", children: spanId }) : null, _jsx("a", { href: `#/traces/${traceId}`, className: "mt-1 inline-block text-[11px] text-brand hover:underline", children: "View all in this trace" })] }));
189
+ }
190
+ /**
191
+ * "AI diagnosis" panel for exception / client_exception details. Visible only
192
+ * when `meta.ai.enabled` (the host configured a diagnoser).
193
+ *
194
+ * On mount it READS any already-cached diagnosis via the side-effect-free
195
+ * `GET /exceptions/:id/diagnosis` (`useCachedDiagnosis`, gated on `aiEnabled`).
196
+ * This is what makes an AUTO-MODE diagnosis — computed and cached at first-seen,
197
+ * and possibly already sent to Slack — appear immediately on open instead of a
198
+ * bare "Diagnose with AI" button. If nothing is cached, the button is shown so an
199
+ * operator can diagnose on demand; once a diagnosis exists (cached or freshly
200
+ * run) a "Re-run" (force) action replaces it and a "cached" badge is shown.
201
+ *
202
+ * The on-demand `diagnose` mutation rejects only on transport errors — the client
203
+ * maps the expected 404/502 outcomes into a non-throwing `{ ok: false }` result —
204
+ * so the click handler swallows the rejection and renders the outcome. A freshly
205
+ * run result (`result`) takes precedence over the mount-fetched cached one.
206
+ *
207
+ * Loading is kept subtle: while the GET is in flight we show a quiet "Checking…"
208
+ * line rather than flashing the button and then swapping it for a result.
209
+ */
210
+ function DiagnosePanel({ entryId, aiEnabled, }) {
211
+ const diagnose = useDiagnose();
212
+ // Gated on `aiEnabled`: when AI is off we never fetch (the panel also returns
213
+ // null below, but the hook must be called unconditionally to respect the
214
+ // rules-of-hooks, hence the `enabled` flag rather than an early-return guard).
215
+ const cachedQuery = useCachedDiagnosis(entryId, aiEnabled);
216
+ const [result, setResult] = useState(null);
217
+ if (!aiEnabled)
218
+ return null;
219
+ async function run(force) {
220
+ try {
221
+ const next = await diagnose.mutateAsync({ entryId, force });
222
+ setResult(next);
223
+ }
224
+ catch {
225
+ // Transport-level failure; the client maps API 404/502 to { ok: false }.
226
+ setResult({ ok: false, message: 'Diagnosis request failed.' });
227
+ }
228
+ }
229
+ // A freshly run result wins; otherwise fall back to the mount-fetched cache.
230
+ const cachedHit = cachedQuery.data ?? null;
231
+ const ranResult = result;
232
+ const isCached = ranResult !== null ? ranResult.ok === true && ranResult.cached : cachedHit !== null;
233
+ const hasResult = ranResult !== null ? ranResult.ok === true : cachedHit !== null;
234
+ // Subtle initial-load state: still resolving the cache lookup and the user
235
+ // hasn't clicked yet. Avoids flashing the button before a cached result lands.
236
+ const checkingCache = ranResult === null && cachedQuery.isLoading;
237
+ return (_jsxs("div", { className: "mt-4 rounded border border-line p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "flex items-center gap-2 text-xs uppercase tracking-wide text-muted-foreground", children: ["AI diagnosis", isCached ? (_jsx("span", { className: "rounded bg-panel px-1.5 py-0.5 text-[10px] normal-case text-warn", children: "cached" })) : null] }), _jsx("div", { className: "flex items-center gap-2", children: checkingCache ? null : hasResult ? (_jsx("button", { type: "button", onClick: () => run(true), disabled: diagnose.isPending, className: "rounded border border-line px-2 py-1 text-[11px] text-foreground hover:border-brand hover:text-brand disabled:cursor-not-allowed disabled:opacity-50", children: diagnose.isPending ? 'Re-running…' : 'Re-run' })) : (_jsx("button", { type: "button", onClick: () => run(false), disabled: diagnose.isPending, className: "rounded border border-line px-2 py-1 text-[11px] text-brand hover:border-brand disabled:cursor-not-allowed disabled:opacity-50", children: diagnose.isPending ? 'Diagnosing…' : 'Diagnose with AI' })) })] }), diagnose.isPending ? (_jsx("p", { className: "text-xs text-muted-foreground", children: "Asking the model\u2026" })) : checkingCache ? (_jsx("p", { className: "text-xs text-muted-foreground", children: "Checking for an existing diagnosis\u2026" })) : ranResult !== null ? (ranResult.ok ? (_jsx(Markdown, { source: ranResult.markdown })) : (_jsx("p", { className: "rounded bg-panel p-3 text-xs text-bad", children: ranResult.message }))) : cachedHit !== null ? (_jsx(Markdown, { source: cachedHit.markdown })) : (_jsx("p", { className: "text-xs text-muted-foreground", children: "Get an AI-generated probable cause, where to look, and a suggested fix." }))] }));
238
+ }
239
+ /** Parse the (small, fixed-shape) markdown into a typed block list with stable
240
+ * keys, so rendering never relies on array indices as React keys. */
241
+ function parseMarkdownBlocks(source) {
242
+ const blocks = [];
243
+ let paragraph = [];
244
+ let bullets = [];
245
+ let counter = 0;
246
+ const nextId = () => `block-${counter++}`;
247
+ function flushParagraph() {
248
+ if (paragraph.length === 0)
249
+ return;
250
+ blocks.push({ id: nextId(), kind: 'paragraph', text: paragraph.join('\n') });
251
+ paragraph = [];
252
+ }
253
+ function flushBullets() {
254
+ if (bullets.length === 0)
255
+ return;
256
+ blocks.push({ id: nextId(), kind: 'bullets', items: bullets });
257
+ bullets = [];
258
+ }
259
+ for (const rawLine of source.split('\n')) {
260
+ const line = rawLine.trimEnd();
261
+ if (/^#{1,6}\s+/.test(line)) {
262
+ flushParagraph();
263
+ flushBullets();
264
+ blocks.push({ id: nextId(), kind: 'heading', text: line.replace(/^#{1,6}\s+/, '') });
265
+ }
266
+ else if (/^[-*]\s+/.test(line)) {
267
+ flushParagraph();
268
+ bullets.push({ id: nextId(), text: line.replace(/^[-*]\s+/, '') });
269
+ }
270
+ else if (line.trim() === '') {
271
+ flushParagraph();
272
+ flushBullets();
273
+ }
274
+ else {
275
+ flushBullets();
276
+ paragraph.push(line);
277
+ }
278
+ }
279
+ flushParagraph();
280
+ flushBullets();
281
+ return blocks;
282
+ }
283
+ function Markdown({ source }) {
284
+ const blocks = parseMarkdownBlocks(source);
285
+ return (_jsx("div", { className: "rounded bg-panel p-3", children: blocks.map((block) => {
286
+ if (block.kind === 'heading') {
287
+ return (_jsx("h4", { className: "mt-3 mb-1 text-xs font-semibold text-brand", children: block.text }, block.id));
288
+ }
289
+ if (block.kind === 'bullets') {
290
+ return (_jsx("ul", { className: "ml-4 list-disc text-xs leading-relaxed text-foreground", children: block.items.map((item) => (_jsx("li", { children: item.text }, item.id))) }, block.id));
291
+ }
292
+ return (_jsx("p", { className: "whitespace-pre-wrap text-xs leading-relaxed text-foreground", children: block.text }, block.id));
293
+ }) }));
128
294
  }
129
295
  //# sourceMappingURL=entry-detail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-detail.js","sourceRoot":"","sources":["../../../src/react/components/entry-detail.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9E,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,GACmD;IAC3D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACrC,mBAAS,SAAS,EAAC,YAAY,aAC7B,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAI,SAAS,EAAC,kDAAkD,aAC7D,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,IACpE,EACL,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,KAAK,CAAC,EAAE,OAAO,GAAI,IAC7E,EACL,YAAY,CAAC,CAAC,CAAC,CACd,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,oDAAoD,yBAAc,EAChF,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAI,IAC5E,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACrC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC3B,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACtC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CACzB,KAAC,OAAO,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACpC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC3B,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACtC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC3B,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACtC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC7B,KAAC,WAAW,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACxC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC3B,KAAC,SAAS,IACR,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,KAAK,GAC7C,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,6DAA6D,YACzE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GACnC,CACP,IACO,EACV,4BACG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAClB,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,oDAAoD,qBAAU,EAC5E,cAAK,SAAS,EAAC,qCAAqC,YAAE,SAAS,CAAC,OAAO,CAAC,GAAO,EAC/E,YACE,IAAI,EAAE,qBAAqB,CAAC,OAAO,CAAC,EACpC,SAAS,EAAC,gEAAgE,gDAGxE,IACA,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,oDAAoD,sBAAW,EAC7E,KAAC,QAAQ,IACP,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,GAClC,IACE,CACP,CAAC,CAAC,CAAC,IAAI,EACR,cAAI,SAAS,EAAC,oDAAoD,wBACxD,KAAK,CAAC,KAAK,CAAC,MAAM,SACvB,EACL,KAAC,aAAa,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAI,IACxE,IACJ,CACP,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,OAAO,EAAwB;IACjD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,OAAO,CACL,0BACG,KAAK,CAAC,CAAC,CAAC,aAAI,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAM,CAAC,CAAC,CAAC,IAAI,EACpF,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GACrB,IACF,CACP,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,SAAS,aAAa,CAAC,KAAa;IAClC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;QAC1B,KAAK,OAAO,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC;QACzB;YACE,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,OAAO,EAAwB;IAClD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,OAAO,CACL,0BACE,cAAI,SAAS,EAAC,gEAAgE,aAC3E,IAAI,EACJ,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,CACxB,gBAAM,SAAS,EAAC,6DAA6D,aAC1E,aAAa,eAAW,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAClD,CACR,CAAC,CAAC,CAAC,IAAI,IACL,EACL,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GACvB,IACF,CACP,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,MAAc;IACtC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,OAAO,EAAwB;IAClD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/F,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,CACL,0BACE,cAAI,SAAS,EAAC,8DAA8D,aAC1E,eACE,SAAS,EAAE,2DAA2D,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAE/F,MAAM,GACF,EACP,yBAAO,MAAM,GAAQ,EACpB,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAM,SAAS,EAAC,eAAe,kBAAG,EAAE,IAAQ,CAAC,CAAC,CAAC,IAAI,IAC/D,EACL,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GACvB,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,OAAO,EAAwB;IAClD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,OAAO,CACL,0BACE,cAAI,SAAS,EAAC,8DAA8D,aACzE,OAAO,EACP,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACrB,gBAAM,SAAS,EAAC,6DAA6D,aAC1E,UAAU,WACN,CACR,CAAC,CAAC,CAAC,IAAI,IACL,EACL,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GACpB,IACF,CACP,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,OAAO,EAAwC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,CACL,mBAAS,SAAS,EAAC,MAAM,aACvB,mBAAS,SAAS,EAAC,8DAA8D,0BACrE,OAAO,CAAC,MAAM,SAChB,EACV,aAAI,SAAS,EAAC,uFAAuF,YAClG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAC7B,eAAe,SAAS,EAAC,UAAU,aACjC,aAAI,SAAS,EAAC,yBAAyB,YAAE,GAAG,GAAM,EAClD,aAAI,SAAS,EAAC,mCAAmC,YAC9C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GACnD,KAJG,GAAG,CAKP,CACP,CAAC,GACC,IACG,CACX,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,OAAO,EAAwB;IACpD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAC3D,CAAC,CAAE,MAAM,CAAC,OAAmC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC/F,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;IACtF,OAAO,CACL,0BACE,cAAI,SAAS,EAAC,iEAAiE,aAC7E,eAAM,SAAS,EAAC,yDAAyD,YAAE,MAAM,GAAQ,EACzF,eAAM,SAAS,EAAC,eAAe,YAAE,GAAG,GAAQ,EAC3C,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACrB,eAAM,SAAS,EAAC,6DAA6D,YAC1E,UAAU,GACN,CACR,CAAC,CAAC,CAAC,IAAI,EACP,EAAE,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,2BAA2B,YAAE,EAAE,GAAQ,CAAC,CAAC,CAAC,IAAI,IACjE,EACL,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,GAAI,EACpC,aAAI,SAAS,EAAC,oDAAoD,wBAAa,EAC9E,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC5B,cAAK,SAAS,EAAC,kEAAkE,YAC9E,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GACvB,CACP,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,4BAA4B,2BAAe,CACzD,EACD,aAAI,SAAS,EAAC,oDAAoD,qBAAU,EAC3E,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GACpB,CACP,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,uBAAuB,0BAAc,CACnD,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EACjB,OAAO,EACP,OAAO,EACP,cAAc,GACiD;IAC/D,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5B,KAAK,UAAU,SAAS;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,wEAAwE;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,CACL,0BACE,eAAK,SAAS,EAAC,8CAA8C,aAC3D,cAAI,SAAS,EAAC,wDAAwD,sBAEnE,IAAI,CAAC,CAAC,CAAC,CACN,eAAM,SAAS,EAAC,8DAA8D,qBAEvE,CACR,CAAC,CAAC,CAAC,IAAI,IACL,EACJ,cAAc,CAAC,CAAC,CAAC,CAChB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,OAAO,CAAC,SAAS,EAC3B,SAAS,EAAC,oKAAoK,YAE7K,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,GACvC,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,cAAK,SAAS,EAAC,6DAA6D,YAAE,GAAG,GAAO,EACvF,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9D,8BACE,aAAI,SAAS,EAAC,yDAAyD,yBAAc,EACrF,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,GACxB,IACL,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CACnB,YAAG,SAAS,EAAC,4BAA4B,sCAAqB,CAC/D,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAC5C,8BACE,aAAI,SAAS,EAAC,yDAAyD,2BAAgB,EACvF,cAAK,SAAS,EAAC,6DAA6D,YACzE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GACpB,IACL,CACJ,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,mDAAmD,YAAE,MAAM,CAAC,OAAO,GAAK,CACtF,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,OAAO,EAAwB;IAChD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,OAAO,CACL,0BACE,cAAI,SAAS,EAAC,sCAAsC,aAClD,eACE,SAAS,EAAE,qEAAqE,aAAa,CAAC,KAAK,CAAC,EAAE,YAErG,KAAK,GACD,EACN,OAAO,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,iCAAiC,YAAE,OAAO,GAAQ,CAAC,CAAC,CAAC,IAAI,IACjF,EACL,cAAK,SAAS,EAAC,6DAA6D,YAAE,OAAO,GAAO,IACxF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAChB,OAAO,EACP,MAAM,EACN,SAAS,GAC4D;IACrE,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CACL,0BACG,IAAI,CAAC,CAAC,CAAC,CACN,YACE,IAAI,EAAE,IAAI,EACV,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,SAAS,EAAC,wDAAwD,YAEjE,OAAO,GACN,CACL,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,qCAAqC,YAAE,OAAO,GAAO,CACrE,EACA,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,qCAAqC,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,EACpF,YACE,IAAI,EAAE,YAAY,OAAO,EAAE,EAC3B,SAAS,EAAC,gEAAgE,uCAGxE,IACA,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"entry-detail.js","sourceRoot":"","sources":["../../../src/react/components/entry-detail.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-insights.d.ts","sourceRoot":"","sources":["../../../src/react/components/entry-insights.tsx"],"names":[],"mappings":"AA4RA,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAa5E"}
1
+ {"version":3,"file":"entry-insights.d.ts","sourceRoot":"","sources":["../../../src/react/components/entry-insights.tsx"],"names":[],"mappings":"AAmTA,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAa5E"}
@@ -16,8 +16,8 @@ function toAreaSeries(report) {
16
16
  value: bucket.total,
17
17
  }));
18
18
  }
19
- function StatCard({ label, value, accent = 'text-zinc-100', }) {
20
- return (_jsxs("div", { className: "rounded-lg border border-zinc-800 bg-zinc-900/40 px-4 py-3", children: [_jsx("p", { className: "text-[10px] uppercase tracking-wide text-zinc-500", children: label }), _jsx("p", { className: `mt-1 text-2xl font-semibold tabular-nums ${accent}`, children: value })] }));
19
+ function StatCard({ label, value, accent = 'text-foreground', }) {
20
+ return (_jsxs("div", { className: "rounded-lg border border-line bg-panel/40 px-4 py-3", children: [_jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: label }), _jsx("p", { className: `mt-1 text-2xl font-semibold tabular-nums ${accent}`, children: value })] }));
21
21
  }
22
22
  function StatRow({ children }) {
23
23
  return _jsx("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-4", children: children });
@@ -34,11 +34,11 @@ function familyBars(families) {
34
34
  }
35
35
  function statusBars(status) {
36
36
  return [
37
- { label: '2xx', value: status['2xx'], color: '#34d399' },
37
+ { label: '2xx', value: status['2xx'], color: 'var(--good)' },
38
38
  { label: '3xx', value: status['3xx'], color: '#38bdf8' },
39
- { label: '4xx', value: status['4xx'], color: '#fbbf24' },
40
- { label: '5xx', value: status['5xx'], color: '#f87171' },
41
- { label: 'other', value: status.other, color: '#71717a' },
39
+ { label: '4xx', value: status['4xx'], color: 'var(--warn)' },
40
+ { label: '5xx', value: status['5xx'], color: 'var(--bad)' },
41
+ { label: 'other', value: status.other, color: 'var(--muted)' },
42
42
  ];
43
43
  }
44
44
  function cacheKeyBars(cache) {
@@ -47,40 +47,51 @@ function cacheKeyBars(cache) {
47
47
  function QueryInsights({ stats }) {
48
48
  const latency = stats.latency;
49
49
  const navigate = useNavigate();
50
- return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }), _jsx(StatCard, { label: "p50 ms", value: latency ? latency.p50.toLocaleString() : '—' }), _jsx(StatCard, { label: "p99 ms", value: latency ? latency.p99.toLocaleString() : '—', accent: "text-sky-400" }), _jsx(StatCard, { label: "Slow", value: latency ? latency.slow.toLocaleString() : '—', accent: latency && latency.slow > 0 ? 'text-amber-400' : 'text-zinc-100' })] }), _jsxs(ChartRow, { children: [stats.families ? (_jsx(BarChartCard, { title: "Slowest query shapes (p99)", valueLabel: "p99 ms", data: familyBars(stats.families), horizontal: true, truncateLabel: 40, onBarClick: (datum) => {
50
+ return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }), _jsx(StatCard, { label: "p50 ms", value: latency ? latency.p50.toLocaleString() : '—' }), _jsx(StatCard, { label: "p99 ms", value: latency ? latency.p99.toLocaleString() : '—', accent: "text-sky-400" }), _jsx(StatCard, { label: "Slow", value: latency ? latency.slow.toLocaleString() : '—', accent: latency && latency.slow > 0 ? 'text-warn' : 'text-foreground' })] }), _jsxs(ChartRow, { children: [stats.families ? (_jsx(BarChartCard, { title: "Slowest query shapes (p99)", valueLabel: "p99 ms", data: familyBars(stats.families), horizontal: true, truncateLabel: 40, onBarClick: (datum) => {
51
51
  if (datum.id !== undefined) {
52
52
  navigate(`/entries/query?familyHash=${encodeURIComponent(datum.id)}`);
53
53
  }
54
54
  } })) : null, _jsx(AreaChartCard, { title: "Queries over time", valueLabel: "queries", data: toAreaSeries(stats.overTime) })] })] }));
55
55
  }
56
+ /** One bar per cache tier (e.g. l1/l2), value = hits — only for layered caches. */
57
+ function tierHitBars(byTier) {
58
+ return Object.entries(byTier)
59
+ .map(([tier, c]) => ({ label: tier, value: c.hits }))
60
+ .sort((a, b) => a.label.localeCompare(b.label));
61
+ }
56
62
  function CacheInsights({ stats }) {
57
63
  const cache = stats.cache;
58
- return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Hit ratio", value: cache ? `${Math.round(cache.hitRatio * 100)}%` : '—', accent: "text-emerald-400" }), _jsx(StatCard, { label: "Hits", value: cache ? cache.hits.toLocaleString() : '—' }), _jsx(StatCard, { label: "Misses", value: cache ? cache.misses.toLocaleString() : '—' }), _jsx(StatCard, { label: "Sets", value: cache ? cache.sets.toLocaleString() : '—' })] }), _jsxs(ChartRow, { children: [cache ? (_jsx(BarChartCard, { title: "Hits vs misses", valueLabel: "count", data: [
59
- { label: 'hits', value: cache.hits, color: '#34d399' },
60
- { label: 'misses', value: cache.misses, color: '#f87171' },
61
- ] })) : null, _jsx(AreaChartCard, { title: "Cache over time", valueLabel: "ops", data: toAreaSeries(stats.overTime) })] }), cache ? (_jsx(BarChartCard, { title: "Top keys", valueLabel: "count", data: cacheKeyBars(cache) })) : null] }));
64
+ // `byTier`/`staleHits`/`deletes` are optional (older servers omit them); guard.
65
+ const byTier = cache?.byTier ?? {};
66
+ const tiers = Object.keys(byTier);
67
+ const staleHits = cache?.staleHits ?? 0;
68
+ const deletes = cache?.deletes ?? 0;
69
+ return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Hit ratio", value: cache ? `${Math.round(cache.hitRatio * 100)}%` : '—', accent: "text-brand" }), _jsx(StatCard, { label: "Hits", value: cache ? cache.hits.toLocaleString() : '—' }), _jsx(StatCard, { label: "Misses", value: cache ? cache.misses.toLocaleString() : '—' }), _jsx(StatCard, { label: "Sets", value: cache ? cache.sets.toLocaleString() : '—' }), deletes > 0 ? _jsx(StatCard, { label: "Deletes", value: deletes.toLocaleString() }) : null, staleHits > 0 ? (_jsx(StatCard, { label: "Stale hits", value: staleHits.toLocaleString(), accent: "text-warn" })) : null] }), _jsxs(ChartRow, { children: [cache ? (_jsx(BarChartCard, { title: "Hits vs misses", valueLabel: "count", data: [
70
+ { label: 'hits', value: cache.hits, color: 'var(--good)' },
71
+ { label: 'misses', value: cache.misses, color: 'var(--bad)' },
72
+ ] })) : null, tiers.length > 0 ? (_jsx(BarChartCard, { title: "Hits by tier", valueLabel: "hits", data: tierHitBars(byTier) })) : null, _jsx(AreaChartCard, { title: "Cache over time", valueLabel: "ops", data: toAreaSeries(stats.overTime) })] }), cache ? (_jsx(BarChartCard, { title: "Top keys", valueLabel: "count", data: cacheKeyBars(cache) })) : null] }));
62
73
  }
63
74
  function RequestInsights({ stats }) {
64
75
  const latency = stats.latency;
65
76
  const status = stats.status;
66
77
  const errors = status ? status['4xx'] + status['5xx'] : 0;
67
78
  const errorPct = stats.total > 0 ? Math.round((errors / stats.total) * 100) : 0;
68
- return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }), _jsx(StatCard, { label: "p99 ms", value: latency ? latency.p99.toLocaleString() : '—', accent: "text-sky-400" }), _jsx(StatCard, { label: "Error %", value: `${errorPct}%`, accent: errors > 0 ? 'text-red-400' : 'text-zinc-100' })] }), _jsxs(ChartRow, { children: [status ? (_jsx(BarChartCard, { title: "Status codes", valueLabel: "count", data: statusBars(status) })) : null, _jsx(AreaChartCard, { title: "Throughput", valueLabel: "requests", data: toAreaSeries(stats.overTime) })] })] }));
79
+ return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }), _jsx(StatCard, { label: "p99 ms", value: latency ? latency.p99.toLocaleString() : '—', accent: "text-sky-400" }), _jsx(StatCard, { label: "Error %", value: `${errorPct}%`, accent: errors > 0 ? 'text-bad' : 'text-foreground' })] }), _jsxs(ChartRow, { children: [status ? (_jsx(BarChartCard, { title: "Status codes", valueLabel: "count", data: statusBars(status) })) : null, _jsx(AreaChartCard, { title: "Throughput", valueLabel: "requests", data: toAreaSeries(stats.overTime) })] })] }));
69
80
  }
70
81
  /** A tiny inline bar chart of per-bucket counts — no axes, no recharts. */
71
82
  function Sparkline({ values }) {
72
83
  if (values.length === 0)
73
84
  return null;
74
85
  const max = Math.max(1, ...values);
75
- return (_jsx("div", { className: "flex h-6 items-end gap-px", "aria-hidden": "true", children: values.map((value, index) => (_jsx("div", { className: "w-1 rounded-sm bg-amber-500/60", style: { height: `${Math.max(2, Math.round((value / max) * 100))}%` } }, index))) }));
86
+ return (_jsx("div", { className: "flex h-6 items-end gap-px", "aria-hidden": "true", children: values.map((value, index) => (_jsx("div", { className: "w-1 rounded-sm bg-warn", style: { height: `${Math.max(2, Math.round((value / max) * 100))}%` } }, index))) }));
76
87
  }
77
88
  function ExceptionGroupRow({ group }) {
78
89
  const lastAtMs = new Date(group.lastAt).getTime();
79
- return (_jsxs(Link, { to: `/entries/exception?familyHash=${encodeURIComponent(group.key)}`, className: "flex items-center gap-3 rounded-lg border border-zinc-800 bg-zinc-900/40 px-4 py-3 transition hover:border-zinc-700 hover:bg-zinc-900/70", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate font-mono text-sm font-semibold text-red-300", children: group.class }), _jsx("p", { className: "truncate text-xs text-zinc-400", children: group.message })] }), _jsx(Sparkline, { values: group.overTime }), _jsxs("div", { className: "shrink-0 text-right", children: [_jsx("p", { className: "text-sm font-semibold tabular-nums text-zinc-100", children: group.count.toLocaleString() }), _jsx("p", { className: "text-[10px] text-zinc-500", children: relativeTime(Number.isNaN(lastAtMs) ? null : lastAtMs) })] })] }));
90
+ return (_jsxs(Link, { to: `/entries/exception?familyHash=${encodeURIComponent(group.key)}`, className: "flex items-center gap-3 rounded-lg border border-line bg-panel/40 px-4 py-3 transition hover:border-line hover:bg-panel/70", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate font-mono text-sm font-semibold text-bad", children: group.class }), _jsx("p", { className: "truncate text-xs text-muted-foreground", children: group.message })] }), _jsx(Sparkline, { values: group.overTime }), _jsxs("div", { className: "shrink-0 text-right", children: [_jsx("p", { className: "text-sm font-semibold tabular-nums text-foreground", children: group.count.toLocaleString() }), _jsx("p", { className: "text-[10px] text-muted-foreground", children: relativeTime(Number.isNaN(lastAtMs) ? null : lastAtMs) })] })] }));
80
91
  }
81
92
  function ExceptionInsights({ stats }) {
82
93
  const groups = stats.exceptions ?? [];
83
- return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }), _jsx(StatCard, { label: "Groups", value: groups.length.toLocaleString(), accent: groups.length > 0 ? 'text-amber-400' : 'text-zinc-100' })] }), groups.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-wide text-zinc-500", children: "Exception groups" }), groups.map((group) => (_jsx(ExceptionGroupRow, { group: group }, group.key)))] })) : null, _jsx(AreaChartCard, { title: "Exceptions over time", valueLabel: "exceptions", data: toAreaSeries(stats.overTime) })] }));
94
+ return (_jsxs(_Fragment, { children: [_jsxs(StatRow, { children: [_jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }), _jsx(StatCard, { label: "Groups", value: groups.length.toLocaleString(), accent: groups.length > 0 ? 'text-warn' : 'text-foreground' })] }), groups.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: "Exception groups" }), groups.map((group) => (_jsx(ExceptionGroupRow, { group: group }, group.key)))] })) : null, _jsx(AreaChartCard, { title: "Exceptions over time", valueLabel: "exceptions", data: toAreaSeries(stats.overTime) })] }));
84
95
  }
85
96
  function GenericInsights({ stats }) {
86
97
  return (_jsxs(_Fragment, { children: [_jsx(StatRow, { children: _jsx(StatCard, { label: "Total", value: stats.total.toLocaleString() }) }), _jsx(AreaChartCard, { title: "Over time", valueLabel: "entries", data: toAreaSeries(stats.overTime) })] }));
@@ -100,8 +111,8 @@ function InsightsBody({ stats }) {
100
111
  export function EntryInsights({ type }) {
101
112
  const { data } = useStats(type, DEFAULT_WINDOW);
102
113
  if (!data) {
103
- return (_jsx("div", { className: "mb-4 h-24 animate-pulse rounded-lg border border-zinc-800 bg-zinc-900/20" }));
114
+ return _jsx("div", { className: "mb-4 h-24 animate-pulse rounded-lg border border-line bg-panel/20" });
104
115
  }
105
- return (_jsxs("div", { className: "mb-4 space-y-4", children: [_jsx(InsightsBody, { stats: data }), data.truncated ? _jsx("p", { className: "text-[10px] text-zinc-600", children: "sampled (window capped)" }) : null] }));
116
+ return (_jsxs("div", { className: "mb-4 space-y-4", children: [_jsx(InsightsBody, { stats: data }), data.truncated ? (_jsx("p", { className: "text-[10px] text-muted-foreground", children: "sampled (window capped)" })) : null] }));
106
117
  }
107
118
  //# sourceMappingURL=entry-insights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-insights.js","sourceRoot":"","sources":["../../../src/react/components/entry-insights.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-insights.js","sourceRoot":"","sources":["../../../src/react/components/entry-insights.tsx"],"names":[],"mappings":"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"}