railwatch 0.6.1 → 0.7.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 (345) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/app/frontend/components/app-content.tsx +26 -0
  4. data/app/frontend/components/app-logo-icon.tsx +23 -0
  5. data/app/frontend/components/app-logo.tsx +14 -0
  6. data/app/frontend/components/app-shell.tsx +38 -0
  7. data/app/frontend/components/app-sidebar-header.tsx +54 -0
  8. data/app/frontend/components/app-sidebar.tsx +94 -0
  9. data/app/frontend/components/app-wordmark.tsx +29 -0
  10. data/app/frontend/components/breadcrumbs.tsx +46 -0
  11. data/app/frontend/components/icon.tsx +16 -0
  12. data/app/frontend/components/input-error.tsx +18 -0
  13. data/app/frontend/components/nav-footer.tsx +46 -0
  14. data/app/frontend/components/nav-main.tsx +41 -0
  15. data/app/frontend/components/nav-user.tsx +50 -0
  16. data/app/frontend/components/railwatch/chart-hover.tsx +34 -0
  17. data/app/frontend/components/railwatch/chart-panel.tsx +170 -0
  18. data/app/frontend/components/railwatch/code.tsx +28 -0
  19. data/app/frontend/components/railwatch/command-palette.tsx +132 -0
  20. data/app/frontend/components/railwatch/copy-block.tsx +52 -0
  21. data/app/frontend/components/railwatch/copy-id.tsx +49 -0
  22. data/app/frontend/components/railwatch/cursor-load-more.tsx +39 -0
  23. data/app/frontend/components/railwatch/data-table.tsx +195 -0
  24. data/app/frontend/components/railwatch/digit-roll.tsx +312 -0
  25. data/app/frontend/components/railwatch/empty-state.tsx +159 -0
  26. data/app/frontend/components/railwatch/env-nav.tsx +130 -0
  27. data/app/frontend/components/railwatch/env-switcher.tsx +145 -0
  28. data/app/frontend/components/railwatch/filter-bar.tsx +153 -0
  29. data/app/frontend/components/railwatch/flamegraph.tsx +324 -0
  30. data/app/frontend/components/railwatch/frames.tsx +295 -0
  31. data/app/frontend/components/railwatch/json-viewer.tsx +159 -0
  32. data/app/frontend/components/railwatch/live-dot.tsx +78 -0
  33. data/app/frontend/components/railwatch/live-toggle.tsx +76 -0
  34. data/app/frontend/components/railwatch/metric-chart.tsx +112 -0
  35. data/app/frontend/components/railwatch/mobile-page-switcher.tsx +89 -0
  36. data/app/frontend/components/railwatch/onboarding.tsx +91 -0
  37. data/app/frontend/components/railwatch/origin-identity.tsx +84 -0
  38. data/app/frontend/components/railwatch/page-header.tsx +42 -0
  39. data/app/frontend/components/railwatch/percentile-picker.tsx +18 -0
  40. data/app/frontend/components/railwatch/relative-time.tsx +18 -0
  41. data/app/frontend/components/railwatch/saved-views.tsx +232 -0
  42. data/app/frontend/components/railwatch/segmented.tsx +64 -0
  43. data/app/frontend/components/railwatch/series-chart.tsx +400 -0
  44. data/app/frontend/components/railwatch/shortcuts-dialog.tsx +89 -0
  45. data/app/frontend/components/railwatch/signal-toast.tsx +121 -0
  46. data/app/frontend/components/railwatch/sort-header.tsx +37 -0
  47. data/app/frontend/components/railwatch/source-link.tsx +57 -0
  48. data/app/frontend/components/railwatch/sparkline-cell.tsx +14 -0
  49. data/app/frontend/components/railwatch/sql-block.tsx +116 -0
  50. data/app/frontend/components/railwatch/stat.tsx +173 -0
  51. data/app/frontend/components/railwatch/status-badge.tsx +79 -0
  52. data/app/frontend/components/railwatch/step-picker.tsx +57 -0
  53. data/app/frontend/components/railwatch/timeline.tsx +405 -0
  54. data/app/frontend/components/railwatch/utilisation-bar.tsx +44 -0
  55. data/app/frontend/components/railwatch/window-picker.tsx +147 -0
  56. data/app/frontend/components/ui/avatar.tsx +51 -0
  57. data/app/frontend/components/ui/badge.tsx +46 -0
  58. data/app/frontend/components/ui/breadcrumb.tsx +109 -0
  59. data/app/frontend/components/ui/button.tsx +60 -0
  60. data/app/frontend/components/ui/card.tsx +92 -0
  61. data/app/frontend/components/ui/chart.tsx +374 -0
  62. data/app/frontend/components/ui/checkbox.tsx +32 -0
  63. data/app/frontend/components/ui/collapsible.tsx +31 -0
  64. data/app/frontend/components/ui/command.tsx +182 -0
  65. data/app/frontend/components/ui/dialog.tsx +158 -0
  66. data/app/frontend/components/ui/dropdown-menu.tsx +255 -0
  67. data/app/frontend/components/ui/hover-card.tsx +42 -0
  68. data/app/frontend/components/ui/input.tsx +21 -0
  69. data/app/frontend/components/ui/label.tsx +24 -0
  70. data/app/frontend/components/ui/popover.tsx +87 -0
  71. data/app/frontend/components/ui/select.tsx +185 -0
  72. data/app/frontend/components/ui/separator.tsx +28 -0
  73. data/app/frontend/components/ui/sheet.tsx +137 -0
  74. data/app/frontend/components/ui/sidebar.tsx +726 -0
  75. data/app/frontend/components/ui/skeleton.tsx +13 -0
  76. data/app/frontend/components/ui/sonner.tsx +41 -0
  77. data/app/frontend/components/ui/table.tsx +114 -0
  78. data/app/frontend/components/ui/tabs.tsx +91 -0
  79. data/app/frontend/components/ui/textarea.tsx +18 -0
  80. data/app/frontend/components/ui/tooltip.tsx +61 -0
  81. data/app/frontend/components/user-info.tsx +32 -0
  82. data/app/frontend/components/user-menu-content.tsx +94 -0
  83. data/app/frontend/entrypoints/application.css +244 -0
  84. data/app/frontend/entrypoints/inertia.tsx +95 -0
  85. data/app/frontend/fonts/CommitMono-Bold.woff2 +0 -0
  86. data/app/frontend/fonts/CommitMono-Regular.woff2 +0 -0
  87. data/app/frontend/fonts/Roboto-Black.woff2 +0 -0
  88. data/app/frontend/fonts/Roboto-Bold.woff2 +0 -0
  89. data/app/frontend/fonts/Roboto-Medium.woff2 +0 -0
  90. data/app/frontend/fonts/Roboto-Regular.woff2 +0 -0
  91. data/app/frontend/hooks/use-appearance.tsx +67 -0
  92. data/app/frontend/hooks/use-clipboard.ts +32 -0
  93. data/app/frontend/hooks/use-flash.tsx +23 -0
  94. data/app/frontend/hooks/use-hotkeys.ts +63 -0
  95. data/app/frontend/hooks/use-initials.tsx +15 -0
  96. data/app/frontend/hooks/use-live.ts +179 -0
  97. data/app/frontend/hooks/use-mobile-navigation.ts +8 -0
  98. data/app/frontend/hooks/use-mobile.ts +21 -0
  99. data/app/frontend/hooks/use-percentile.ts +24 -0
  100. data/app/frontend/hooks/use-reduced-motion.ts +25 -0
  101. data/app/frontend/hooks/use-row-nav.ts +106 -0
  102. data/app/frontend/hooks/use-step.ts +27 -0
  103. data/app/frontend/hooks/use-ticker.ts +12 -0
  104. data/app/frontend/hooks/use-window.ts +58 -0
  105. data/app/frontend/layouts/app/app-sidebar-layout.tsx +107 -0
  106. data/app/frontend/layouts/app-layout.tsx +21 -0
  107. data/app/frontend/layouts/env-layout.tsx +53 -0
  108. data/app/frontend/layouts/persistent-layout.tsx +18 -0
  109. data/app/frontend/lib/cable.ts +10 -0
  110. data/app/frontend/lib/env-pages.ts +236 -0
  111. data/app/frontend/lib/execution-path.ts +55 -0
  112. data/app/frontend/lib/explain.ts +50 -0
  113. data/app/frontend/lib/filter.ts +25 -0
  114. data/app/frontend/lib/flamegraph.ts +155 -0
  115. data/app/frontend/lib/format.ts +71 -0
  116. data/app/frontend/lib/keyboard.ts +18 -0
  117. data/app/frontend/lib/source-link.ts +217 -0
  118. data/app/frontend/lib/utils.ts +6 -0
  119. data/app/frontend/pages/alerts/index.tsx +171 -0
  120. data/app/frontend/pages/broadcasts/index.tsx +171 -0
  121. data/app/frontend/pages/cache_events/index.tsx +127 -0
  122. data/app/frontend/pages/commands/index.tsx +143 -0
  123. data/app/frontend/pages/deploys/index.tsx +94 -0
  124. data/app/frontend/pages/deploys/show.tsx +309 -0
  125. data/app/frontend/pages/deprecations/index.tsx +176 -0
  126. data/app/frontend/pages/exceptions/index.tsx +271 -0
  127. data/app/frontend/pages/executions/show.tsx +821 -0
  128. data/app/frontend/pages/issues/index.tsx +399 -0
  129. data/app/frontend/pages/issues/show.tsx +1367 -0
  130. data/app/frontend/pages/jobs/index.tsx +381 -0
  131. data/app/frontend/pages/jobs/klass.tsx +215 -0
  132. data/app/frontend/pages/llm_calls/index.tsx +664 -0
  133. data/app/frontend/pages/logs/index.tsx +303 -0
  134. data/app/frontend/pages/mails/index.tsx +218 -0
  135. data/app/frontend/pages/notifications/index.tsx +161 -0
  136. data/app/frontend/pages/outgoing_requests/index.tsx +309 -0
  137. data/app/frontend/pages/overview/show.tsx +333 -0
  138. data/app/frontend/pages/people/index.tsx +102 -0
  139. data/app/frontend/pages/people/show.tsx +149 -0
  140. data/app/frontend/pages/processes/index.tsx +335 -0
  141. data/app/frontend/pages/profiles/index.tsx +110 -0
  142. data/app/frontend/pages/profiles/show.tsx +105 -0
  143. data/app/frontend/pages/queries/index.tsx +492 -0
  144. data/app/frontend/pages/queries/show.tsx +276 -0
  145. data/app/frontend/pages/releases/index.tsx +190 -0
  146. data/app/frontend/pages/releases/release-health.tsx +68 -0
  147. data/app/frontend/pages/releases/release-path.ts +25 -0
  148. data/app/frontend/pages/releases/show.tsx +262 -0
  149. data/app/frontend/pages/requests/index.tsx +235 -0
  150. data/app/frontend/pages/requests/route.tsx +159 -0
  151. data/app/frontend/pages/scheduled_tasks/index.tsx +220 -0
  152. data/app/frontend/pages/spans/index.tsx +229 -0
  153. data/app/frontend/pages/spans/show.tsx +220 -0
  154. data/app/frontend/pages/storage_ops/index.tsx +150 -0
  155. data/app/frontend/pages/tenants/index.tsx +236 -0
  156. data/app/frontend/pages/tenants/show.tsx +477 -0
  157. data/app/frontend/pages/tenants/tenant-path.ts +26 -0
  158. data/app/frontend/pages/thresholds/index.tsx +414 -0
  159. data/app/frontend/pages/traces/show.tsx +208 -0
  160. data/app/frontend/pages/transactions/index.tsx +220 -0
  161. data/app/frontend/pages/view_renders/index.tsx +241 -0
  162. data/app/frontend/pages/visits/index.tsx +321 -0
  163. data/app/frontend/public/icon.png +0 -0
  164. data/app/frontend/public/icon.svg +5 -0
  165. data/app/frontend/routes/index.d.ts +2136 -0
  166. data/app/frontend/routes/index.js +2112 -0
  167. data/app/frontend/types/globals.d.ts +9 -0
  168. data/app/frontend/types/index.ts +288 -0
  169. data/app/frontend/types/vite-env.d.ts +9 -0
  170. data/lib/railwatch/version.rb +1 -1
  171. data/lib/railwatch.rb +8 -3
  172. data/public/railwatch/assets/app-layout-LvxN9xSS.js +41 -0
  173. data/public/railwatch/assets/application-Cc5v_Vk9.css +1 -0
  174. data/public/railwatch/assets/{arrow-up-CLQ-7heQ.js → arrow-up-DG01k9AL.js} +1 -1
  175. data/public/railwatch/assets/{braces-rSYydpLY.js → braces-C3w7pfxS.js} +1 -1
  176. data/public/railwatch/assets/{card-DPjFKfen.js → card-Dpwlr0uY.js} +1 -1
  177. data/public/railwatch/assets/{chart-DWh7l8yM.js → chart-DJHv3R7W.js} +1 -1
  178. data/public/railwatch/assets/{chart-hover-CfoZUY4J.js → chart-hover-CEH-DtXO.js} +1 -1
  179. data/public/railwatch/assets/{chart-panel-CC49WTQL.js → chart-panel-CUdIzJvk.js} +1 -1
  180. data/public/railwatch/assets/code-BRZprwun.js +1 -0
  181. data/public/railwatch/assets/copy-id-CwhGGiwF.js +1 -0
  182. data/public/railwatch/assets/cursor-load-more-uF1_955Q.js +1 -0
  183. data/public/railwatch/assets/data-table-DYi-N0hm.js +1 -0
  184. data/public/railwatch/assets/env-layout-HdcOaPPX.js +1 -0
  185. data/public/railwatch/assets/{execution-path-FAuIzOXB.js → execution-path-CElXXFO_.js} +1 -1
  186. data/public/railwatch/assets/filter-bar-DEv0G_34.js +1 -0
  187. data/public/railwatch/assets/{flamegraph-EaGkP2NT.js → flamegraph-SKD9yxW9.js} +2 -2
  188. data/public/railwatch/assets/frames-CUpyJQDy.js +1 -0
  189. data/public/railwatch/assets/index-2W-ppwap.js +1 -0
  190. data/public/railwatch/assets/index-74ocuU5d.js +1 -0
  191. data/public/railwatch/assets/{index-C8Cggnbw.js → index-B8NA62Lz.js} +2 -2
  192. data/public/railwatch/assets/index-BBCEkLqp.js +1 -0
  193. data/public/railwatch/assets/index-BDcglJzX.js +1 -0
  194. data/public/railwatch/assets/index-B_KFb9LS.js +1 -0
  195. data/public/railwatch/assets/index-BqK_VKom.js +1 -0
  196. data/public/railwatch/assets/index-BxCXBHP2.js +1 -0
  197. data/public/railwatch/assets/index-C1jc1OoH.js +1 -0
  198. data/public/railwatch/assets/index-C7zREldp.js +1 -0
  199. data/public/railwatch/assets/index-CEetm4oC.js +1 -0
  200. data/public/railwatch/assets/index-CIaZkokF.js +1 -0
  201. data/public/railwatch/assets/index-CNH85TZp.js +1 -0
  202. data/public/railwatch/assets/index-Ce4SB5AB.js +1 -0
  203. data/public/railwatch/assets/index-CiRMSYMn.js +1 -0
  204. data/public/railwatch/assets/index-CjxXgOs-.js +1 -0
  205. data/public/railwatch/assets/index-ClL-PYEV.js +1 -0
  206. data/public/railwatch/assets/index-CteZ6fop.js +1 -0
  207. data/public/railwatch/assets/index-CvqfEExO.js +1 -0
  208. data/public/railwatch/assets/index-CxTLT-Qh.js +1 -0
  209. data/public/railwatch/assets/index-DJd3OUSd.js +1 -0
  210. data/public/railwatch/assets/index-DPD-rLp6.js +1 -0
  211. data/public/railwatch/assets/index-DYK_dps4.js +1 -0
  212. data/public/railwatch/assets/index-DrayARrI.js +1 -0
  213. data/public/railwatch/assets/index-HRXGir-0.js +1 -0
  214. data/public/railwatch/assets/index-UJOUALr_.js +1 -0
  215. data/public/railwatch/assets/index-d-3J7gQ5.js +1 -0
  216. data/public/railwatch/assets/index-oQrvBpOm.js +1 -0
  217. data/public/railwatch/assets/inertia-FoqYZAk8.js +97 -0
  218. data/public/railwatch/assets/json-viewer-CxqMojEm.js +1 -0
  219. data/public/railwatch/assets/klass-DEF-Vat5.js +1 -0
  220. data/public/railwatch/assets/origin-identity-Y6gvfQVR.js +1 -0
  221. data/public/railwatch/assets/{percentile-picker-CeQgllxD.js → percentile-picker-E2aUdLxx.js} +1 -1
  222. data/public/railwatch/assets/relative-time-DcJbkKlN.js +1 -0
  223. data/public/railwatch/assets/{release-health-uP-GF3_V.js → release-health-C8WSCDKD.js} +1 -1
  224. data/public/railwatch/assets/route-qO5vX1p-.js +1 -0
  225. data/public/railwatch/assets/{segmented-BeIe4uqk.js → segmented-BWee8uc9.js} +1 -1
  226. data/public/railwatch/assets/select-G7rNBzv0.js +1 -0
  227. data/public/railwatch/assets/series-chart-C5nXIUc5.js +1 -0
  228. data/public/railwatch/assets/show-BEWisLQw.js +1 -0
  229. data/public/railwatch/assets/show-BEa9PGu1.js +2 -0
  230. data/public/railwatch/assets/{show-YsNpqbcI.js → show-BiT_Aloc.js} +3 -3
  231. data/public/railwatch/assets/show-BpCO49d3.js +1 -0
  232. data/public/railwatch/assets/show-CH7yxt7R.js +1 -0
  233. data/public/railwatch/assets/show-CTO8Lvd2.js +1 -0
  234. data/public/railwatch/assets/show-DnYsDMUt.js +2 -0
  235. data/public/railwatch/assets/show-DyzHM527.js +1 -0
  236. data/public/railwatch/assets/show-Nfpxs8su.js +1 -0
  237. data/public/railwatch/assets/show-ddjUMo9G.js +1 -0
  238. data/public/railwatch/assets/show-ksjbSzDH.js +1 -0
  239. data/public/railwatch/assets/{sort-header-mEJUM3Av.js → sort-header-uOq5VlrB.js} +1 -1
  240. data/public/railwatch/assets/{sparkline-cell-Dwg7awwh.js → sparkline-cell-DgGij0cu.js} +1 -1
  241. data/public/railwatch/assets/stat-BTzNKTm2.js +1 -0
  242. data/public/railwatch/assets/status-badge-BDkOXa-C.js +1 -0
  243. data/public/railwatch/assets/{tenant-path-CQoP-BeF.js → tenant-path-DU0ezKSU.js} +1 -1
  244. data/public/railwatch/assets/{use-clipboard-DNefo-ky.js → use-clipboard-DoENmlWY.js} +1 -1
  245. data/public/railwatch/assets/{use-live-DMTuhKfB.js → use-live-CE_fN5_6.js} +1 -1
  246. data/public/railwatch/manifest.json +612 -1591
  247. metadata +242 -117
  248. data/public/railwatch/assets/app-layout-Zc0v-hYh.js +0 -1
  249. data/public/railwatch/assets/app-wordmark-BA_60AVb.js +0 -1
  250. data/public/railwatch/assets/appearance-CcfP9tZ7.js +0 -1
  251. data/public/railwatch/assets/application-BrN3Sz94.css +0 -1
  252. data/public/railwatch/assets/auth-layout-C05gEBIQ.js +0 -1
  253. data/public/railwatch/assets/badge-DRae8XwK.js +0 -1
  254. data/public/railwatch/assets/checkbox-DPkLUiwM.js +0 -1
  255. data/public/railwatch/assets/code-CLmYS6FU.js +0 -1
  256. data/public/railwatch/assets/copy-DaQMJWoT.js +0 -1
  257. data/public/railwatch/assets/copy-block-CGcXxp8J.js +0 -1
  258. data/public/railwatch/assets/copy-id-vBYHQwxg.js +0 -1
  259. data/public/railwatch/assets/cursor-load-more-Ddwxe5dZ.js +0 -1
  260. data/public/railwatch/assets/data-table-CzKTEE-O.js +0 -1
  261. data/public/railwatch/assets/edit-B1kmWkzd.js +0 -8
  262. data/public/railwatch/assets/edit-D9cx4pbG.js +0 -1
  263. data/public/railwatch/assets/edit-yv6j9p-V.js +0 -1
  264. data/public/railwatch/assets/empty-state-CW4wclK_.js +0 -1
  265. data/public/railwatch/assets/env-layout-Kz7wks1x.js +0 -1
  266. data/public/railwatch/assets/filter-bar-CJDjWFib.js +0 -1
  267. data/public/railwatch/assets/frames-zZuIaNH9.js +0 -1
  268. data/public/railwatch/assets/google-sign-in-button-2_zgbgVy.js +0 -1
  269. data/public/railwatch/assets/index-B49SWz7K.js +0 -1
  270. data/public/railwatch/assets/index-BHlY4wKe.js +0 -1
  271. data/public/railwatch/assets/index-BZpPtyFY.js +0 -1
  272. data/public/railwatch/assets/index-BeVK6jCL.js +0 -1
  273. data/public/railwatch/assets/index-BfbSo01U.js +0 -1
  274. data/public/railwatch/assets/index-BfgncAv6.js +0 -1
  275. data/public/railwatch/assets/index-BhNszK1k.js +0 -1
  276. data/public/railwatch/assets/index-Bu01uWvw.js +0 -1
  277. data/public/railwatch/assets/index-C1s_hK3p.js +0 -1
  278. data/public/railwatch/assets/index-CBip6V4z.js +0 -1
  279. data/public/railwatch/assets/index-CMJGss5R.js +0 -1
  280. data/public/railwatch/assets/index-CRo3yK20.js +0 -1
  281. data/public/railwatch/assets/index-CWB_p2J8.js +0 -1
  282. data/public/railwatch/assets/index-CWHpndGc.js +0 -1
  283. data/public/railwatch/assets/index-Ca_S4Sc3.js +0 -1
  284. data/public/railwatch/assets/index-CanPDDOa.js +0 -1
  285. data/public/railwatch/assets/index-Cie90Yat.js +0 -1
  286. data/public/railwatch/assets/index-CiepQ_pR.js +0 -1
  287. data/public/railwatch/assets/index-Cm1uCIGN.js +0 -1
  288. data/public/railwatch/assets/index-CzitnnSC.js +0 -1
  289. data/public/railwatch/assets/index-DEUfClv3.js +0 -1
  290. data/public/railwatch/assets/index-DJKwo-mI.js +0 -1
  291. data/public/railwatch/assets/index-DK6y0YHp.js +0 -1
  292. data/public/railwatch/assets/index-DMNPpLH9.js +0 -1
  293. data/public/railwatch/assets/index-DZO1mSfX.js +0 -1
  294. data/public/railwatch/assets/index-Db5wj3M5.js +0 -1
  295. data/public/railwatch/assets/index-Dcy5WktB.js +0 -1
  296. data/public/railwatch/assets/index-DvG0-7Lx.js +0 -1
  297. data/public/railwatch/assets/index-Dvj1wuka.js +0 -1
  298. data/public/railwatch/assets/index-KyZX46qX.js +0 -1
  299. data/public/railwatch/assets/index-Ze-KP-sl.js +0 -1
  300. data/public/railwatch/assets/index-mhRbWLBM.js +0 -1
  301. data/public/railwatch/assets/index-x099JL5f.js +0 -1
  302. data/public/railwatch/assets/index-x28zb_nf.js +0 -1
  303. data/public/railwatch/assets/inertia-Cuyz2ZHO.js +0 -97
  304. data/public/railwatch/assets/input-error-hog6gGxg.js +0 -1
  305. data/public/railwatch/assets/json-viewer-DH2W9HXf.js +0 -1
  306. data/public/railwatch/assets/klass-DHbDelLk.js +0 -1
  307. data/public/railwatch/assets/label-DdCBgiUn.js +0 -1
  308. data/public/railwatch/assets/layout-Cueyl7c5.js +0 -1
  309. data/public/railwatch/assets/live-dot-BZgYTYdt.js +0 -41
  310. data/public/railwatch/assets/nav-BSSGObDZ.js +0 -1
  311. data/public/railwatch/assets/new-B8FSb8Bl.js +0 -1
  312. data/public/railwatch/assets/new-C39_v2Ll.js +0 -1
  313. data/public/railwatch/assets/new-DVOPwaC5.js +0 -1
  314. data/public/railwatch/assets/new-Dd40nvJR.js +0 -1
  315. data/public/railwatch/assets/new-SxnYe1SE.js +0 -1
  316. data/public/railwatch/assets/new-eP5vKD3Y.js +0 -1
  317. data/public/railwatch/assets/onboarding-CUpZl5KB.js +0 -1
  318. data/public/railwatch/assets/origin-identity-BYt2uiuo.js +0 -1
  319. data/public/railwatch/assets/relative-time-D5UbF4oO.js +0 -1
  320. data/public/railwatch/assets/route-DQAY8JEr.js +0 -1
  321. data/public/railwatch/assets/select-2R16457Z.js +0 -1
  322. data/public/railwatch/assets/separator-D5I0UCB5.js +0 -1
  323. data/public/railwatch/assets/series-chart-gnrzhmM6.js +0 -1
  324. data/public/railwatch/assets/show-2BkeNRUC.js +0 -2
  325. data/public/railwatch/assets/show-B0X1hRQH.js +0 -1
  326. data/public/railwatch/assets/show-BKUV5l5q.js +0 -1
  327. data/public/railwatch/assets/show-BQJD_CsF.js +0 -6
  328. data/public/railwatch/assets/show-BhmD6Sxp.js +0 -1
  329. data/public/railwatch/assets/show-C3KcnVo2.js +0 -1
  330. data/public/railwatch/assets/show-C95cHd06.js +0 -2
  331. data/public/railwatch/assets/show-CdB4uVQS.js +0 -1
  332. data/public/railwatch/assets/show-CoCqcVIp.js +0 -1
  333. data/public/railwatch/assets/show-D2LqjEsU.js +0 -1
  334. data/public/railwatch/assets/show-DNpnKyTh.js +0 -1
  335. data/public/railwatch/assets/show-DOlTxbig.js +0 -1
  336. data/public/railwatch/assets/show-DQCkttL8.js +0 -1
  337. data/public/railwatch/assets/show-DcxesipC.js +0 -1
  338. data/public/railwatch/assets/show-IGJoc_X0.js +0 -1
  339. data/public/railwatch/assets/show-qNV6H8SH.js +0 -2
  340. data/public/railwatch/assets/stat-ZtxGU8lE.js +0 -1
  341. data/public/railwatch/assets/status-badge-CH5P-Xkj.js +0 -1
  342. data/public/railwatch/assets/text-link-DHJ8BXx5.js +0 -1
  343. data/public/railwatch/assets/textarea-BeQtQyl5.js +0 -1
  344. data/public/railwatch/assets/timeline-CaKQVu48.js +0 -1
  345. data/public/railwatch/assets/transition-ksDpqhKJ.js +0 -5
@@ -1 +0,0 @@
1
- import{c as D,x as L,j as t,H as O,L as S,g as q,e as k,m as B,o as R,i as z,h as H}from"./inertia-Cuyz2ZHO.js";import{D as M}from"./data-table-CzKTEE-O.js";import{E as T}from"./empty-state-CW4wclK_.js";import{L as $}from"./live-dot-BZgYTYdt.js";import{S as I}from"./sparkline-cell-Dwg7awwh.js";import{S as b,a as F}from"./stat-ZtxGU8lE.js";import{B as C}from"./badge-DRae8XwK.js";import{B as E}from"./app-wordmark-BA_60AVb.js";import{C as y,a as N,b as A,c as K}from"./card-DPjFKfen.js";import{O as U,A as W,P as G}from"./app-layout-Zc0v-hYh.js";import{c as w,a as P}from"./format-B9SDkrWj.js";import"./chart-hover-CfoZUY4J.js";import"./index-CBip6V4z.js";import"./index-BfbSo01U.js";import"./series-chart-gnrzhmM6.js";import"./chart-DWh7l8yM.js";import"./use-live-DMTuhKfB.js";import"./arrow-up-CLQ-7heQ.js";import"./checkbox-DPkLUiwM.js";import"./label-DdCBgiUn.js";function Ne(s){const e=D.c(32);let d,u;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=[{title:"Dashboard",href:L()}],u=t.jsx(O,{title:"Dashboard"}),e[0]=d,e[1]=u):(d=e[0],u=e[1]);let i;e[2]!==s.overview_apps.length?(i=t.jsx(b,{label:"Applications",value:s.overview_apps.length}),e[2]=s.overview_apps.length,e[3]=i):i=e[3];const g=s.recent_issues.length?"destructive":"success";let a;e[4]!==s.recent_issues.length||e[5]!==g?(a=t.jsx(b,{label:"Open issues",value:s.recent_issues.length,tone:g}),e[4]=s.recent_issues.length,e[5]=g,e[6]=a):a=e[6];let r;e[7]!==s.usage.events_this_month?(r=w(s.usage.events_this_month),e[7]=s.usage.events_this_month,e[8]=r):r=e[8];let h;e[9]!==s.usage.quota?(h=w(s.usage.quota),e[9]=s.usage.quota,e[10]=h):h=e[10];const v=`of ${h} on ${s.usage.plan}`;let n;e[11]!==r||e[12]!==v?(n=t.jsx(b,{label:"Events this month",value:r,hint:v}),e[11]=r,e[12]=v,e[13]=n):n=e[13];let l;e[14]!==i||e[15]!==a||e[16]!==n?(l=t.jsxs(F,{children:[i,a,n]}),e[14]=i,e[15]=a,e[16]=n,e[17]=l):l=e[17];let o;e[18]!==s.overview_apps?(o=s.overview_apps.map(te),e[18]=s.overview_apps,e[19]=o):o=e[19];let x;e[20]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsx(y,{className:"border-dashed",children:t.jsx(N,{className:"flex h-full items-center justify-center pt-6",children:t.jsx(E,{variant:"outline",onClick:se,children:"Add application"})})}),e[20]=x):x=e[20];let c;e[21]!==o?(c=t.jsxs("div",{className:"grid gap-4 md:grid-cols-2 xl:grid-cols-3",children:[o,x]}),e[21]=o,e[22]=c):c=e[22];let f;e[23]===Symbol.for("react.memo_cache_sentinel")?(f=t.jsx(A,{children:t.jsx(K,{children:"Recent open issues"})}),e[23]=f):f=e[23];let p;e[24]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx(T,{icon:U,title:"No open issues",description:"Issues are opened when a request, job, or exception starts repeating."}),e[24]=p):p=e[24];let _;e[25]===Symbol.for("react.memo_cache_sentinel")?(_=[{key:"k",header:"Issue",cell:Y},{key:"t",header:"Title",cell:X},{key:"w",hideOnMobile:!0,header:"Where",cell:V},{key:"n",hideOnMobile:!0,header:"Events",align:"right",cell:Q},{key:"l",header:"Last",align:"right",cell:J}],e[25]=_):_=e[25];let m;e[26]!==s.recent_issues?(m=t.jsxs(y,{children:[f,t.jsx(N,{children:t.jsx(M,{rows:s.recent_issues,rowKey:ee,empty:p,onRowClick:Z,columns:_})})]}),e[26]=s.recent_issues,e[27]=m):m=e[27];let j;return e[28]!==c||e[29]!==m||e[30]!==l?(j=t.jsxs(W,{breadcrumbs:d,children:[u,t.jsxs("div",{className:"flex flex-1 flex-col gap-4 p-3 md:gap-5 md:px-6 md:pt-2 md:pb-6",children:[l,c,m]})]}),e[28]=c,e[29]=m,e[30]=l,e[31]=j):j=e[31],j}function J(s){return P(s.last_seen_at)}function Q(s){return w(s.occurrences)}function V(s){return t.jsxs("span",{className:"text-xs",children:[s.application," · ",s.environment]})}function X(s){return t.jsx("span",{className:"line-clamp-1 text-xs",children:s.title})}function Y(s){return t.jsx("span",{className:"font-mono text-xs font-semibold",children:s.key})}function Z(s){return k.visit(z(s.id))}function ee(s){return s.id}function se(){return k.visit(H())}function te(s){return t.jsxs(y,{children:[t.jsxs(A,{className:"flex-row items-center justify-between",children:[t.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t.jsx("span",{className:"bg-muted flex size-8 shrink-0 items-center justify-center rounded-md font-mono text-xs font-semibold",children:s.name.slice(0,2).toUpperCase()}),t.jsxs("div",{className:"min-w-0",children:[t.jsx(S,{className:"block truncate text-sm font-semibold hover:underline",href:q(s.id),children:s.name}),t.jsx("div",{className:"label-caps",children:s.issue_prefix})]})]}),t.jsxs(E,{size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>k.visit(B(s.id)),children:[t.jsx(G,{className:"size-3"}),"Environment"]})]}),t.jsx(N,{className:"space-y-2",children:s.environments.map(e=>t.jsxs(S,{href:R(s.id,e.id),className:"hover:bg-muted flex items-center justify-between rounded-md border px-3 py-2 text-sm",children:[t.jsxs("span",{className:"flex flex-1 items-center gap-2",children:[t.jsx($,{lastSeenAt:e.paused?null:e.last_seen_at,thresholdMs:6e5}),e.name]}),t.jsx(I,{data:e.request_sparkline}),t.jsxs("span",{className:"text-muted-foreground flex items-center gap-2 text-xs",children:[e.error_rate>0&&t.jsxs(C,{variant:"destructive",children:[(e.error_rate*100).toFixed(1),"% err"]}),e.open_issues>0&&t.jsx(C,{variant:"destructive",children:e.open_issues}),e.last_seen_at?P(e.last_seen_at):"no data"]})]},e.id))})]},s.id)}export{Ne as default};
@@ -1 +0,0 @@
1
- import{B as ae,c as F,u as he,j as l,t as fe,e as le,Z as pe,L as xe,C as ge,r as re}from"./inertia-Cuyz2ZHO.js";import{V as se,D as ne}from"./chart-panel-CC49WTQL.js";import{D as ee}from"./data-table-CzKTEE-O.js";import{E as ie}from"./empty-state-CW4wclK_.js";import{F as _e}from"./filter-bar-CJDjWFib.js";import{P as ke,E as je}from"./env-layout-Kz7wks1x.js";import{S as ce}from"./sparkline-cell-Dwg7awwh.js";import{S as ye}from"./status-badge-CH5P-Xkj.js";import{c as f,u as de,p as te,m as D,w as be}from"./format-B9SDkrWj.js";import{p as me,C as Ne,a as we}from"./app-layout-Zc0v-hYh.js";import"./series-chart-gnrzhmM6.js";import"./chart-hover-CfoZUY4J.js";import"./chart-DWh7l8yM.js";import"./badge-DRae8XwK.js";import"./app-wordmark-BA_60AVb.js";import"./use-live-DMTuhKfB.js";import"./live-dot-BZgYTYdt.js";import"./index-CBip6V4z.js";import"./index-BfbSo01U.js";import"./segmented-BeIe4uqk.js";import"./label-DdCBgiUn.js";import"./checkbox-DPkLUiwM.js";const ve=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],Me=ae("paperclip",ve);const Se=[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]],Oe=ae("scissors",Se),oe=l.jsx(ie,{icon:me,title:"No model calls in this window",description:"Chats, embeddings, and other model calls your app makes through RubyLLM appear here, with the request or job that made them."}),Ce=l.jsx(ie,{icon:me,title:"No tool calls in this window",description:"Tools your models invoke appear here, timed separately from the calls that asked for them."});function Le(t){const e=F.c(7),{reason:s}=t;if(!s||s==="stop"||s==="tool_calls")return null;const a=s==="max_tokens"||s==="content_filter"?"text-destructive":"text-muted-foreground";let n;e[0]!==a?(n=ge("ml-2 inline-flex items-center gap-1 text-xs",a),e[0]=a,e[1]=n):n=e[1];const r=s==="max_tokens"?"The answer was cut off at the output token limit":`Model stopped: ${s}`;let i;e[2]===Symbol.for("react.memo_cache_sentinel")?(i=l.jsx(Oe,{className:"size-3"}),e[2]=i):i=e[2];let c;return e[3]!==s||e[4]!==n||e[5]!==r?(c=l.jsxs("span",{className:n,title:r,children:[i,s]}),e[3]=s,e[4]=n,e[5]=r,e[6]=c):c=e[6],c}function Te(t){const e=F.c(4),{call:s}=t;if(!s.attachments)return null;const o=s.attachment_names??`${s.attachments} file(s): ${s.attachment_types}`;let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=l.jsx(Me,{className:"size-3"}),e[0]=a):a=e[0];const n=s.attachment_types??s.attachments;let r;return e[1]!==o||e[2]!==n?(r=l.jsxs("span",{className:"text-muted-foreground ml-2 inline-flex items-center gap-1 text-xs",title:o,children:[a,n]}),e[1]=o,e[2]=n,e[3]=r):r=e[3],r}function Fe(t){const e=F.c(19),{call:s}=t,[o,a]=re.useState(!1),{prompt:n,completion:r,params:i,provider_request_id:c,tools:p}=s;if(!(n!==null||r!==null||c!==null||p!==null||i!==null&&Object.keys(i).length>0)){let g;return e[0]===Symbol.for("react.memo_cache_sentinel")?(g=l.jsx("span",{className:"text-muted-foreground",children:"–"}),e[0]=g):g=e[0],g}const _=o?Ne:we;let d;e[1]!==o?(d=()=>a(!o),e[1]=o,e[2]=d):d=e[2];let m;e[3]!==_?(m=l.jsx(_,{className:"size-3"}),e[3]=_,e[4]=m):m=e[4];let u;e[5]!==o||e[6]!==d||e[7]!==m?(u=l.jsxs("button",{type:"button",onClick:d,"aria-expanded":o,className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1",children:[m,"Detail"]}),e[5]=o,e[6]=d,e[7]=m,e[8]=u):u=e[8];let h;e[9]!==r||e[10]!==o||e[11]!==i||e[12]!==n||e[13]!==c||e[14]!==p?(h=o&&l.jsxs("div",{className:"w-[70vw] max-w-[36rem] space-y-2 text-left",children:[l.jsxs("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 font-mono text-[10px]",children:[c&&l.jsxs(l.Fragment,{children:[l.jsx("dt",{className:"text-muted-foreground",children:"provider id"}),l.jsx("dd",{className:"break-all",children:c})]}),p&&l.jsxs(l.Fragment,{children:[l.jsx("dt",{className:"text-muted-foreground",children:"tools"}),l.jsx("dd",{className:"break-all",children:p})]}),i&&Object.entries(i).map(De)]}),[["Prompt",n],["Completion",r]].map($e)]}),e[9]=r,e[10]=o,e[11]=i,e[12]=n,e[13]=c,e[14]=p,e[15]=h):h=e[15];let x;return e[16]!==u||e[17]!==h?(x=l.jsxs("div",{className:"flex flex-col items-end gap-1",children:[u,h]}),e[16]=u,e[17]=h,e[18]=x):x=e[18],x}function $e(t){const[e,s]=t;return s?l.jsxs("div",{children:[l.jsx("div",{className:"text-muted-foreground text-[10px] tracking-wide uppercase",children:e}),l.jsx("pre",{className:"bg-muted max-h-64 overflow-auto rounded p-2 font-mono text-[10px] break-all whitespace-pre-wrap",children:s})]},e):null}function De(t){const[e,s]=t;return l.jsxs(re.Fragment,{children:[l.jsx("dt",{className:"text-muted-foreground",children:e}),l.jsx("dd",{className:"break-all",children:typeof s=="string"||typeof s=="number"?s:JSON.stringify(s)})]},e)}function ue(t){const e=F.c(9),{cost:s,unpriced:o}=t;if(s===null){let i;return e[0]!==o?(i=o>0?l.jsx("span",{className:"text-muted-foreground",title:"No registry pricing",children:"unpriced"}):l.jsx("span",{className:"text-muted-foreground",title:"Nothing here has a price",children:"–"}),e[0]=o,e[1]=i):i=e[1],i}let a;e[2]!==s?(a=de(s),e[2]=s,e[3]=a):a=e[3];let n;e[4]!==o?(n=o>0&&l.jsxs("span",{className:"text-muted-foreground ml-1 text-xs font-normal",title:`${o} call${o===1?"":"s"} had no registry pricing and are not in this total`,children:["+",f(o)," unpriced"]}),e[4]=o,e[5]=n):n=e[5];let r;return e[6]!==a||e[7]!==n?(r=l.jsxs("span",{className:"font-semibold",children:[a,n]}),e[6]=a,e[7]=n,e[8]=r):r=e[8],r}function $(t){const e=F.c(7),{label:s,children:o}=t;let a;e[0]!==s?(a=l.jsx("div",{className:"text-muted-foreground text-xs",children:s}),e[0]=s,e[1]=a):a=e[1];let n;e[2]!==o?(n=l.jsx("div",{className:"truncate text-lg",children:o}),e[2]=o,e[3]=n):n=e[3];let r;return e[4]!==a||e[5]!==n?(r=l.jsxs("div",{className:"min-w-0",children:[a,n]}),e[4]=a,e[5]=n,e[6]=r):r=e[6],r}function Ft(t){const e=F.c(79),{environment:s,window:o}=he().props,a=s.application_id,n=s.id;let r;e[0]!==a||e[1]!==n?(r=k=>k.execution_id?fe(a,n,k.execution_id):null,e[0]=a,e[1]=n,e[2]=r):r=e[2];const i=r;let c;e[3]===Symbol.for("react.memo_cache_sentinel")?(c=l.jsx(ke,{title:"LLM",description:"Model calls and tool invocations through RubyLLM, by model and by the request or job that made them."}),e[3]=c):c=e[3];let p;e[4]!==t.totals.count?(p=f(t.totals.count),e[4]=t.totals.count,e[5]=p):p=e[5];let j;e[6]!==p?(j=l.jsx($,{label:"Model calls",children:p}),e[6]=p,e[7]=j):j=e[7];let _;e[8]!==t.totals.tool_count?(_=f(t.totals.tool_count),e[8]=t.totals.tool_count,e[9]=_):_=e[9];let d;e[10]!==_?(d=l.jsx($,{label:"Tool calls",children:_}),e[10]=_,e[11]=d):d=e[11];let m;e[12]!==t.totals.cost||e[13]!==t.totals.unpriced?(m=l.jsx($,{label:"Spend",children:l.jsx(ue,{cost:t.totals.cost,unpriced:t.totals.unpriced})}),e[12]=t.totals.cost,e[13]=t.totals.unpriced,e[14]=m):m=e[14];let u;e[15]!==t.totals.input_tokens?(u=f(t.totals.input_tokens),e[15]=t.totals.input_tokens,e[16]=u):u=e[16];let h;e[17]!==u?(h=l.jsx($,{label:"Tokens in",children:u}),e[17]=u,e[18]=h):h=e[18];let x;e[19]!==t.totals.output_tokens?(x=f(t.totals.output_tokens),e[19]=t.totals.output_tokens,e[20]=x):x=e[20];let g;e[21]!==x?(g=l.jsx($,{label:"Tokens out",children:x}),e[21]=x,e[22]=g):g=e[22];let y;e[23]!==g||e[24]!==j||e[25]!==d||e[26]!==m||e[27]!==h?(y=l.jsxs("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-5",children:[j,d,m,h,g]}),e[23]=g,e[24]=j,e[25]=d,e[26]=m,e[27]=h,e[28]=y):y=e[28];let b;e[29]!==t.series?(b=l.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[l.jsx(se,{legend:"outcome",label:"Model calls",seriesLabel:"Calls",data:t.series}),l.jsx(ne,{label:"Model latency",data:t.series,percentile:"p95"})]}),e[29]=t.series,e[30]=b):b=e[30];let N;e[31]!==t.tool_series||e[32]!==t.totals.tool_count?(N=t.totals.tool_count>0&&l.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[l.jsx(se,{legend:"outcome",label:"Tool calls",seriesLabel:"Calls",data:t.tool_series}),l.jsx(ne,{label:"Tool latency",data:t.tool_series,percentile:"p95"})]}),e[31]=t.tool_series,e[32]=t.totals.tool_count,e[33]=N):N=e[33];let E;e[34]===Symbol.for("react.memo_cache_sentinel")?(E=[{key:"m",header:"Model",cell:it},{key:"trend",hideOnMobile:!0,header:"Trend",cell:rt},{key:"n",header:"Calls",align:"right",cell:at},{key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:ot},{key:"cut",hideOnMobile:!0,header:"Cut off",align:"right",cell:nt},{key:"att",hideOnMobile:!0,header:"With files",align:"right",cell:st},{key:"in",hideOnMobile:!0,header:"Tokens in",align:"right",cell:lt},{key:"out",hideOnMobile:!0,header:"Tokens out",align:"right",cell:tt},{key:"cached",hideOnMobile:!0,header:"Cached",align:"right",cell:et},{key:"p95",hideOnMobile:!0,header:"p95",align:"right",cell:Ye},{key:"cost",header:"Spend",align:"right",cell:Xe}],e[34]=E):E=e[34];let w;e[35]!==t.models?(w=l.jsx(ee,{rows:t.models,rowKey:ct,empty:oe,columns:E}),e[35]=t.models,e[36]=w):w=e[36];let v;e[37]!==t.tools?(v=t.tools.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("h2",{className:"text-sm font-semibold",children:"Tools"}),l.jsx(ee,{rows:t.tools,rowKey:Ue,empty:Ce,columns:[{key:"t",header:"Tool",cell:Qe},{key:"trend",hideOnMobile:!0,header:"Trend",cell:Ge},{key:"n",header:"Calls",align:"right",cell:Ze},{key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:Je},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:He},{key:"p95",header:"p95",align:"right",cell:Ve},{key:"max",hideOnMobile:!0,header:"Max",align:"right",cell:Ie}]})]}),e[37]=t.tools,e[38]=v):v=e[38];let P;e[39]===Symbol.for("react.memo_cache_sentinel")?(P=l.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[39]=P):P=e[39];let q,R;e[40]===Symbol.for("react.memo_cache_sentinel")?(q={key:"model",label:"Model"},R={key:"provider",label:"Provider"},e[40]=q,e[41]=R):(q=e[40],R=e[41]);let W,z;e[42]===Symbol.for("react.memo_cache_sentinel")?(W={key:"operation",label:"Operation",options:["chat","tool","embedding","image","speech","transcription","moderation","rerank","ocr"]},z={key:"workflow",label:"Workflow"},e[42]=W,e[43]=z):(W=e[42],z=e[43]);let A;e[44]===Symbol.for("react.memo_cache_sentinel")?(A={key:"finish",label:"Finish",options:["stop","max_tokens","tool_calls","content_filter"]},e[44]=A):A=e[44];let B;e[45]===Symbol.for("react.memo_cache_sentinel")?(B=[q,R,W,z,A,{key:"attachments",label:"Files",options:["any","image","pdf","audio","video"]}],e[45]=B):B=e[45];let M;e[46]!==a||e[47]!==n||e[48]!==o?(M=k=>le.visit(pe(a,n,{window:o,q:k||void 0}),{preserveState:!0}),e[46]=a,e[47]=n,e[48]=o,e[49]=M):M=e[49];let S;e[50]!==t.q||e[51]!==M?(S=l.jsx(_e,{value:t.q,fields:B,onChange:M,placeholder:"model:claude-opus-5 operation:chat"}),e[50]=t.q,e[51]=M,e[52]=S):S=e[52];let O;e[53]!==i?(O={onOpen:(k,X)=>{const Y=i(k);Y&&(X?.newTab?globalThis.window.open(Y,"_blank"):le.visit(Y))}},e[53]=i,e[54]=O):O=e[54];let K,I,V,H,J,Z,G;e[55]===Symbol.for("react.memo_cache_sentinel")?(K={key:"when",header:"When",cell:Be},I={key:"st",header:"Status",cell:Ae},V={key:"what",header:"Call",grow:!0,cell:ze},H={key:"wf",hideOnMobile:!0,header:"Workflow",cell:We},J={key:"tok",hideOnMobile:!0,header:"Tokens",align:"right",cell:Re},Z={key:"d",header:"Duration",align:"right",cell:qe},G={key:"cost",header:"Cost",align:"right",cell:Pe},e[55]=K,e[56]=I,e[57]=V,e[58]=H,e[59]=J,e[60]=Z,e[61]=G):(K=e[55],I=e[56],V=e[57],H=e[58],J=e[59],Z=e[60],G=e[61]);let C;e[62]!==i?(C={key:"in",hideOnMobile:!0,header:"In",cell:k=>{const X=i(k);return X?l.jsx(xe,{className:"font-mono text-xs hover:underline",href:X,children:k.execution_preview}):null}},e[62]=i,e[63]=C):C=e[63];let Q;e[64]===Symbol.for("react.memo_cache_sentinel")?(Q={key:"content",header:"Detail",align:"right",cell:Ee},e[64]=Q):Q=e[64];let L;e[65]!==C?(L=[K,I,V,H,J,Z,G,C,Q],e[65]=C,e[66]=L):L=e[66];let T;e[67]!==t.recent||e[68]!==O||e[69]!==L?(T=l.jsx(ee,{rows:t.recent,rowKey:Ke,empty:oe,keyboardNav:O,columns:L}),e[67]=t.recent,e[68]=O,e[69]=L,e[70]=T):T=e[70];let U;return e[71]!==y||e[72]!==b||e[73]!==N||e[74]!==w||e[75]!==v||e[76]!==S||e[77]!==T?(U=l.jsxs(je,{title:"LLM",children:[c,y,b,N,w,v,P,S,T]}),e[71]=y,e[72]=b,e[73]=N,e[74]=w,e[75]=v,e[76]=S,e[77]=T,e[78]=U):U=e[78],U}function Ee(t){return l.jsx(Fe,{call:t})}function Pe(t){return t.cost===null&&t.operation!=="tool"&&t.status!=="failed"?l.jsx("span",{className:"text-muted-foreground",title:"No registry pricing",children:"unpriced"}):de(t.cost)}function qe(t){return D(t.duration)}function Re(t){return t.input_tokens===null&&t.output_tokens===null?l.jsx("span",{className:"text-muted-foreground",children:"–"}):l.jsxs("span",{className:"font-mono text-xs",children:[f(t.input_tokens??0)," / ",f(t.output_tokens??0)]})}function We(t){return t.workflow_name?l.jsxs("span",{className:"text-xs",children:[t.workflow_name,t.workflow_step_name&&l.jsxs("span",{className:"text-muted-foreground",children:[" · ",t.workflow_step_name]})]}):null}function ze(t){return l.jsxs("span",{className:"font-mono text-xs",children:[t.operation==="tool"?t.tool_name:l.jsxs(l.Fragment,{children:[l.jsxs("span",{className:"text-muted-foreground",children:[t.provider,"/"]}),l.jsx("span",{className:"font-semibold",children:t.model})]}),t.error&&l.jsx("span",{className:"text-destructive ml-2",children:t.error}),l.jsx(Le,{reason:t.finish_reason}),l.jsx(Te,{call:t})]})}function Ae(t){return l.jsx(ye,{status:null,label:t.status==="failed"?"error":t.operation,outcome:t.status==="failed"?"failed":void 0})}function Be(t){return l.jsx("span",{className:"text-xs",children:be(t.occurred_at)})}function Ke(t){return t.id}function Ie(t){return D(t.max)}function Ve(t){return l.jsx("span",{className:"font-semibold",children:D(t.p95)})}function He(t){return D(t.avg)}function Je(t){return l.jsx("span",{className:t.errors?"text-destructive":"",children:te(t.errors,t.count)})}function Ze(t){return f(t.count)}function Ge(t){return l.jsx(ce,{data:t.sparkline})}function Qe(t){return l.jsx("span",{className:"font-mono text-xs",children:t.name})}function Ue(t){return t.group_hash}function Xe(t){return l.jsx(ue,{cost:t.cost,unpriced:t.unpriced})}function Ye(t){return D(t.p95)}function et(t){return f(t.cache_read_tokens)}function tt(t){return f(t.output_tokens)}function lt(t){return f(t.input_tokens)}function st(t){return t.with_attachments?f(t.with_attachments):l.jsx("span",{className:"text-muted-foreground",children:"–"})}function nt(t){return t.truncated?l.jsx("span",{className:"text-destructive",title:"Answers stopped at the output token limit",children:te(t.truncated,t.count)}):l.jsx("span",{className:"text-muted-foreground",children:"–"})}function ot(t){return l.jsx("span",{className:t.errors?"text-destructive":"",children:te(t.errors,t.count)})}function at(t){return f(t.count)}function rt(t){return l.jsx(ce,{data:t.sparkline})}function it(t){return l.jsx("span",{className:"font-mono text-xs",children:t.name})}function ct(t){return t.group_hash}export{Ft as default};
@@ -1 +0,0 @@
1
- import{c as le,u as ce,j as s,e as ie,ao as me,L as de}from"./inertia-Cuyz2ZHO.js";import{C as ue}from"./chart-hover-CfoZUY4J.js";import{D as fe}from"./data-table-CzKTEE-O.js";import{E as he}from"./empty-state-CW4wclK_.js";import{F as ye}from"./filter-bar-CJDjWFib.js";import{P as ge,E as pe}from"./env-layout-Kz7wks1x.js";import{S as W}from"./sort-header-mEJUM3Av.js";import{S as xe}from"./sparkline-cell-Dwg7awwh.js";import{S as Y,a as _e}from"./stat-ZtxGU8lE.js";import{c as a,m as ve,a as be}from"./format-B9SDkrWj.js";import{t as je}from"./tenant-path-CQoP-BeF.js";import{$ as ke}from"./app-layout-Zc0v-hYh.js";import"./badge-DRae8XwK.js";import"./app-wordmark-BA_60AVb.js";import"./use-live-DMTuhKfB.js";import"./live-dot-BZgYTYdt.js";import"./index-CBip6V4z.js";import"./index-BfbSo01U.js";import"./segmented-BeIe4uqk.js";import"./label-DdCBgiUn.js";import"./arrow-up-CLQ-7heQ.js";import"./series-chart-gnrzhmM6.js";import"./chart-DWh7l8yM.js";import"./checkbox-DPkLUiwM.js";function it(t){const e=le.c(91),{environment:ae,window:o}=ce().props,l=ae.application_id,c=ae.id;let P;e[0]!==l||e[1]!==c||e[2]!==t.dir||e[3]!==t.q||e[4]!==t.sort||e[5]!==o?(P=r=>ie.visit(me(l,c,{window:o,sort:t.sort,dir:t.dir,q:t.q||void 0,...r}),{preserveState:!0}),e[0]=l,e[1]=c,e[2]=t.dir,e[3]=t.q,e[4]=t.sort,e[5]=o,e[6]=P):P=e[6];const m=P;let M;e[7]!==t.dir||e[8]!==t.sort||e[9]!==m?(M=r=>m({sort:r,dir:t.sort===r&&t.dir==="desc"?"asc":"desc"}),e[7]=t.dir,e[8]=t.sort,e[9]=m,e[10]=M):M=e[10];const n=M;let F;e[11]!==l||e[12]!==c||e[13]!==o?(F=r=>je(l,c,r.tenant,{window:o}),e[11]=l,e[12]=c,e[13]=o,e[14]=F):F=e[14];const i=F;let L;e[15]===Symbol.for("react.memo_cache_sentinel")?(L=s.jsx(ge,{title:"Tenants",description:"Your application's own tenants, aggregated from the tenant tag on every record."}),e[15]=L):L=e[15];let d;e[16]!==t.summary.tenants?(d=a(t.summary.tenants),e[16]=t.summary.tenants,e[17]=d):d=e[17];let u;e[18]!==d?(u=s.jsx(Y,{label:"Tenants active",value:d}),e[18]=d,e[19]=u):u=e[19];const z=`${t.summary.top_share}%`,G=t.summary.top_tenant??"none";let f;e[20]!==z||e[21]!==G?(f=s.jsx(Y,{label:"Top tenant",value:z,hint:G}),e[20]=z,e[21]=G,e[22]=f):f=e[22];let h;e[23]!==t.summary.with_errors?(h=a(t.summary.with_errors),e[23]=t.summary.with_errors,e[24]=h):h=e[24];const I=t.summary.with_errors?"destructive":"success";let y;e[25]!==I||e[26]!==h?(y=s.jsx(Y,{label:"With 5xx",value:h,tone:I}),e[25]=I,e[26]=h,e[27]=y):y=e[27];const Q=`${t.summary.untagged_share}%`;let g;e[28]!==Q?(g=s.jsx(Y,{label:"Untagged",value:Q,hint:"requests with no tenant"}),e[28]=Q,e[29]=g):g=e[29];let p;e[30]!==y||e[31]!==g||e[32]!==u||e[33]!==f?(p=s.jsxs(_e,{children:[u,f,y,g]}),e[30]=y,e[31]=g,e[32]=u,e[33]=f,e[34]=p):p=e[34];let $;e[35]===Symbol.for("react.memo_cache_sentinel")?($=[],e[35]=$):$=e[35];let x;e[36]!==m?(x=r=>m({q:r||void 0}),e[36]=m,e[37]=x):x=e[37];let _;e[38]!==t.q||e[39]!==x?(_=s.jsx(ye,{value:t.q,fields:$,onChange:x,placeholder:"Filter tenants"}),e[38]=t.q,e[39]=x,e[40]=_):_=e[40];let B;e[41]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx(he,{icon:ke,title:"No tenant-tagged records in this window",description:"Records carry the tenant from ActiveRecord::Tenanted / TenantRecord.current_tenant, or call Railwatch.context(tenant: org.slug)"}),e[41]=B):B=e[41];let v,b;e[42]!==i?(v=r=>ie.visit(i(r)),b={onOpen:(r,oe)=>oe?.newTab?globalThis.window.open(i(r),"_blank"):ie.visit(i(r))},e[42]=i,e[43]=v,e[44]=b):(v=e[43],b=e[44]);let j;e[45]!==i?(j={key:"tenant",header:"Tenant",cell:r=>s.jsx(de,{className:"font-mono text-xs hover:underline",href:i(r),children:r.tenant})},e[45]=i,e[46]=j):j=e[46];let H;e[47]===Symbol.for("react.memo_cache_sentinel")?(H={key:"trend",hideOnMobile:!0,header:"Trend",cell:Oe},e[47]=H):H=e[47];const V=t.sort==="requests",X=t.dir==="asc"?"asc":"desc";let k;e[48]!==n?(k=()=>n("requests"),e[48]=n,e[49]=k):k=e[49];let w;e[50]!==V||e[51]!==X||e[52]!==k?(w={key:"requests",header:s.jsx(W,{label:"Requests",active:V,dir:X,onClick:k}),align:"right",cell:Ne},e[50]=V,e[51]=X,e[52]=k,e[53]=w):w=e[53];const Z=t.sort==="errors",ee=t.dir==="asc"?"asc":"desc";let S;e[54]!==n?(S=()=>n("errors"),e[54]=n,e[55]=S):S=e[55];let q;e[56]!==Z||e[57]!==ee||e[58]!==S?(q={key:"5xx",header:s.jsx(W,{label:"5xx",active:Z,dir:ee,onClick:S}),align:"right",cell:Re},e[56]=Z,e[57]=ee,e[58]=S,e[59]=q):q=e[59];const te=t.sort==="p95",se=t.dir==="asc"?"asc":"desc";let T;e[60]!==n?(T=()=>n("p95"),e[60]=n,e[61]=T):T=e[61];let C;e[62]!==te||e[63]!==se||e[64]!==T?(C={key:"p95",header:s.jsx(W,{label:"p95",active:te,dir:se,onClick:T}),align:"right",cell:Ee},e[62]=te,e[63]=se,e[64]=T,e[65]=C):C=e[65];let K,D,U;e[66]===Symbol.for("react.memo_cache_sentinel")?(K={key:"jobs",hideOnMobile:!0,header:"Jobs",align:"right",cell:Ce},D={key:"failed",hideOnMobile:!0,header:"Failed",align:"right",cell:Te},U={key:"exceptions",hideOnMobile:!0,header:"Exceptions",align:"right",cell:qe},e[66]=K,e[67]=D,e[68]=U):(K=e[66],D=e[67],U=e[68]);const re=t.sort==="users",ne=t.dir==="asc"?"asc":"desc";let E;e[69]!==n?(E=()=>n("users"),e[69]=n,e[70]=E):E=e[70];let R;e[71]!==re||e[72]!==ne||e[73]!==E?(R={key:"users",hideOnMobile:!0,header:s.jsx(W,{label:"Users",active:re,dir:ne,onClick:E}),align:"right",cell:Se},e[71]=re,e[72]=ne,e[73]=E,e[74]=R):R=e[74];let A;e[75]===Symbol.for("react.memo_cache_sentinel")?(A={key:"seen",header:"Last seen",align:"right",cell:we},e[75]=A):A=e[75];let N;e[76]!==j||e[77]!==w||e[78]!==q||e[79]!==C||e[80]!==R?(N=[j,H,w,q,C,K,D,U,R,A],e[76]=j,e[77]=w,e[78]=q,e[79]=C,e[80]=R,e[81]=N):N=e[81];let O;e[82]!==t.tenants||e[83]!==v||e[84]!==b||e[85]!==N?(O=s.jsx(fe,{rows:t.tenants,rowKey:Me,empty:B,hoverKey:Pe,onRowClick:v,keyboardNav:b,columns:N}),e[82]=t.tenants,e[83]=v,e[84]=b,e[85]=N,e[86]=O):O=e[86];let J;return e[87]!==p||e[88]!==_||e[89]!==O?(J=s.jsx(pe,{title:"Tenants",children:s.jsxs(ue,{children:[L,p,_,O]})}),e[87]=p,e[88]=_,e[89]=O,e[90]=J):J=e[90],J}function we(t){return be(t.last_seen_at)}function Se(t){return a(t.users)}function qe(t){return a(t.exceptions)}function Te(t){return s.jsx("span",{className:t.failed_jobs?"text-destructive":"",children:a(t.failed_jobs)})}function Ce(t){return a(t.jobs)}function Ee(t){return s.jsx("span",{className:"font-semibold",children:ve(t.p95)})}function Re(t){return s.jsx("span",{className:t.errors?"text-destructive":"",children:a(t.errors)})}function Ne(t){return a(t.requests)}function Oe(t){return s.jsx(xe,{data:t.sparkline,hoverKey:t.tenant})}function Pe(t){return t.tenant}function Me(t){return t.tenant}export{it as default};
@@ -1 +0,0 @@
1
- import{aC as te,c as ae,u as le,j as r,e as re,L as ie}from"./inertia-Cuyz2ZHO.js";import{C as oe}from"./chart-panel-CC49WTQL.js";import{D as ne}from"./data-table-CzKTEE-O.js";import{E as me}from"./empty-state-CW4wclK_.js";import{E as ue,P as ce}from"./env-layout-Kz7wks1x.js";import{b as fe}from"./series-chart-gnrzhmM6.js";import{S as Y,a as he}from"./stat-ZtxGU8lE.js";import{c as a,w as de,m as ye}from"./format-B9SDkrWj.js";import{rate as Z,crashFreeTone as se}from"./release-health-uP-GF3_V.js";import{X as _e}from"./app-layout-Zc0v-hYh.js";import"./chart-hover-CfoZUY4J.js";import"./badge-DRae8XwK.js";import"./app-wordmark-BA_60AVb.js";import"./use-live-DMTuhKfB.js";import"./live-dot-BZgYTYdt.js";import"./index-CBip6V4z.js";import"./index-BfbSo01U.js";import"./segmented-BeIe4uqk.js";import"./label-DdCBgiUn.js";import"./chart-DWh7l8yM.js";import"./arrow-up-CLQ-7heQ.js";import"./checkbox-DPkLUiwM.js";function pe(s,e,K,q){const F=String(te(s,e,K,q)),[H,u]=F.split("?");return`${H.replace(/\./g,"%2E")}${u?`?${u}`:""}`}function Ue(s){const e=ae.c(98),{environment:K,window:q}=le().props,F=K.application_id,H=K.id;let u;e[0]!==F||e[1]!==H||e[2]!==q?(u=t=>pe(F,H,t.deploy,{window:q}),e[0]=F,e[1]=H,e[2]=q,e[3]=u):u=e[3];const l=u;let c,f,h,i,d,y,_,p,x,o,k,n;if(e[4]!==s.series||e[5]!==s.summary.crash_free_sessions||e[6]!==s.summary.crash_free_users||e[7]!==s.summary.releases||e[8]!==s.summary.sessions||e[9]!==s.summary.users){const t=s.series.reduce(Ce,{ok:0,errored:0,crashed:0});f=ue,k="Releases",e[22]===Symbol.for("react.memo_cache_sentinel")?(n=r.jsx(ce,{title:"Releases",description:"Sessions per deploy, and how many of them ended without a crash. A release is the deploy stamped on every record the gem ships."}),e[22]=n):n=e[22];let m;e[23]!==s.summary.crash_free_sessions?(m=Z(s.summary.crash_free_sessions),e[23]=s.summary.crash_free_sessions,e[24]=m):m=e[24];let N;e[25]!==s.summary.crash_free_sessions?(N=se(s.summary.crash_free_sessions),e[25]=s.summary.crash_free_sessions,e[26]=N):N=e[26];let P;e[27]!==m||e[28]!==N?(P=r.jsx(Y,{label:"Crash-free sessions",value:m,tone:N}),e[27]=m,e[28]=N,e[29]=P):P=e[29];let T;e[30]!==s.summary.crash_free_users?(T=Z(s.summary.crash_free_users),e[30]=s.summary.crash_free_users,e[31]=T):T=e[31];let $;e[32]!==s.summary.crash_free_users?($=se(s.summary.crash_free_users),e[32]=s.summary.crash_free_users,e[33]=$):$=e[33];let A;e[34]!==T||e[35]!==$?(A=r.jsx(Y,{label:"Crash-free users",value:T,tone:$}),e[34]=T,e[35]=$,e[36]=A):A=e[36];let D;e[37]!==s.summary.sessions?(D=a(s.summary.sessions),e[37]=s.summary.sessions,e[38]=D):D=e[38];let W;e[39]!==s.summary.users?(W=a(s.summary.users),e[39]=s.summary.users,e[40]=W):W=e[40];const ee=`${W} users`;let O;e[41]!==D||e[42]!==ee?(O=r.jsx(Y,{label:"Sessions",value:D,hint:ee}),e[41]=D,e[42]=ee,e[43]=O):O=e[43];let L;e[44]!==s.summary.releases?(L=a(s.summary.releases),e[44]=s.summary.releases,e[45]=L):L=e[45];let M;e[46]!==L?(M=r.jsx(Y,{label:"Active releases",value:L}),e[46]=L,e[47]=M):M=e[47],e[48]!==P||e[49]!==A||e[50]!==O||e[51]!==M?(i=r.jsxs(he,{children:[P,A,O,M]}),e[48]=P,e[49]=A,e[50]=O,e[51]=M,e[52]=i):i=e[52],c=oe,x="Sessions by status",e[53]!==s.summary.sessions?(o=a(s.summary.sessions),e[53]=s.summary.sessions,e[54]=o):o=e[54],_={key:"ok",label:"ok",value:a(t.ok),color:"var(--ok)"},p={key:"errored",label:"errored",value:a(t.errored),color:"var(--warning)"},h="crashed",d="crashed",y=a(t.crashed),e[4]=s.series,e[5]=s.summary.crash_free_sessions,e[6]=s.summary.crash_free_users,e[7]=s.summary.releases,e[8]=s.summary.sessions,e[9]=s.summary.users,e[10]=c,e[11]=f,e[12]=h,e[13]=i,e[14]=d,e[15]=y,e[16]=_,e[17]=p,e[18]=x,e[19]=o,e[20]=k,e[21]=n}else c=e[10],f=e[11],h=e[12],i=e[13],d=e[14],y=e[15],_=e[16],p=e[17],x=e[18],o=e[19],k=e[20],n=e[21];let v;e[55]!==h||e[56]!==d||e[57]!==y?(v={key:h,label:d,value:y,color:"var(--danger)"},e[55]=h,e[56]=d,e[57]=y,e[58]=v):v=e[58];let b;e[59]!==v||e[60]!==_||e[61]!==p?(b=[_,p,v],e[59]=v,e[60]=_,e[61]=p,e[62]=b):b=e[62];let g;e[63]!==s.series?(g=r.jsx(fe,{data:s.series}),e[63]=s.series,e[64]=g):g=e[64];let w;e[65]!==c||e[66]!==b||e[67]!==g||e[68]!==x||e[69]!==o?(w=r.jsx(c,{label:x,value:o,legend:b,children:g}),e[65]=c,e[66]=b,e[67]=g,e[68]=x,e[69]=o,e[70]=w):w=e[70];let X;e[71]===Symbol.for("react.memo_cache_sentinel")?(X=r.jsx(me,{icon:_e,title:"No releases in this window",description:"A release appears once a deploy is recorded and the app reports sessions for it."}),e[71]=X):X=e[71];let j,S;e[72]!==l?(j=t=>re.visit(l(t)),S={onOpen:(t,m)=>m?.newTab?globalThis.window.open(l(t),"_blank"):re.visit(l(t))},e[72]=l,e[73]=j,e[74]=S):(j=e[73],S=e[74]);let C;e[75]!==l?(C={key:"ref",header:"Release",cell:t=>r.jsx(ie,{className:"font-mono text-xs hover:underline",href:l(t),children:t.ref})},e[75]=l,e[76]=C):C=e[76];let z,B,G,I,J,Q,U;e[77]===Symbol.for("react.memo_cache_sentinel")?(z={key:"at",header:"Deployed",cell:je},B={key:"adoption",header:"Adoption",align:"right",cell:we},G={key:"sessions",header:"Sessions",align:"right",cell:ge},I={key:"cfs",header:"Crash-free sessions",align:"right",cell:be},J={key:"cfu",hideOnMobile:!0,header:"Crash-free users",align:"right",cell:ve},Q={key:"issues",hideOnMobile:!0,header:"New issues",align:"right",cell:ke},U={key:"duration",hideOnMobile:!0,header:"Duration",align:"right",cell:xe},e[77]=z,e[78]=B,e[79]=G,e[80]=I,e[81]=J,e[82]=Q,e[83]=U):(z=e[77],B=e[78],G=e[79],I=e[80],J=e[81],Q=e[82],U=e[83]);let E;e[84]!==C?(E=[C,z,B,G,I,J,Q,U],e[84]=C,e[85]=E):E=e[85];let R;e[86]!==s.releases||e[87]!==j||e[88]!==S||e[89]!==E?(R=r.jsx(ne,{rows:s.releases,rowKey:Se,empty:X,onRowClick:j,keyboardNav:S,columns:E}),e[86]=s.releases,e[87]=j,e[88]=S,e[89]=E,e[90]=R):R=e[90];let V;return e[91]!==f||e[92]!==i||e[93]!==w||e[94]!==R||e[95]!==k||e[96]!==n?(V=r.jsxs(f,{title:k,children:[n,i,w,R]}),e[91]=f,e[92]=i,e[93]=w,e[94]=R,e[95]=k,e[96]=n,e[97]=V):V=e[97],V}function xe(s){return ye(s.avg_duration_ms)}function ke(s){return r.jsx("span",{className:s.new_issues?"text-destructive":"",children:a(s.new_issues)})}function ve(s){return Z(s.crash_free_users)}function be(s){return r.jsx("span",{className:se(s.crash_free_sessions)==="destructive"?"text-destructive font-semibold":"font-semibold",children:Z(s.crash_free_sessions)})}function ge(s){return a(s.sessions)}function we(s){return`${s.adoption}%`}function je(s){return r.jsx("span",{className:"text-xs",children:de(s.deployed_at)})}function Se(s){return s.deploy}function Ce(s,e){return{ok:s.ok+e.ok,errored:s.errored+e.errored,crashed:s.crashed+e.crashed}}export{Ue as default};
@@ -1 +0,0 @@
1
- import{c as M,u as A,j as n,t as K,e as P,L as R}from"./inertia-Cuyz2ZHO.js";import{D as S}from"./data-table-CzKTEE-O.js";import{E as B}from"./empty-state-CW4wclK_.js";import{P as $,E as D}from"./env-layout-Kz7wks1x.js";import{B as L}from"./badge-DRae8XwK.js";import{c as T,b as O,m as C,w as H}from"./format-B9SDkrWj.js";import{b as E}from"./app-layout-Zc0v-hYh.js";import"./chart-hover-CfoZUY4J.js";import"./use-live-DMTuhKfB.js";import"./live-dot-BZgYTYdt.js";import"./index-CBip6V4z.js";import"./app-wordmark-BA_60AVb.js";import"./index-BfbSo01U.js";import"./segmented-BeIe4uqk.js";import"./label-DdCBgiUn.js";import"./checkbox-DPkLUiwM.js";function fe(t){const e=M.c(26),{environment:N}=A().props,j=N.application_id,w=N.id;let c;e[0]!==j||e[1]!==w?(c=r=>r.execution_id?K(j,w,r.execution_id):null,e[0]=j,e[1]=w,e[2]=c):c=e[2];const i=c;let m;e[3]===Symbol.for("react.memo_cache_sentinel")?(m=n.jsx($,{title:"Broadcasts",description:"Action Cable broadcasts, transmits, and channel actions (covers inertia_cable and Turbo Streams)."}),e[3]=m):m=e[3];let d,u;e[4]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx(B,{icon:E,title:"No broadcasts in this window",description:"Action Cable broadcasts appear here as your app sends them."}),u=[{key:"k",header:"Kind",cell:X},{key:"n",header:"Stream / channel",cell:V},{key:"c",hideOnMobile:!0,header:"Count",align:"right",cell:U},{key:"b",hideOnMobile:!0,header:"Bytes",align:"right",cell:Q},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:J}],e[4]=d,e[5]=u):(d=e[4],u=e[5]);let a;e[6]!==t.streams?(a=n.jsx(S,{rows:t.streams,rowKey:Y,empty:d,columns:u}),e[6]=t.streams,e[7]=a):a=e[7];let p;e[8]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[8]=p):p=e[8];let h;e[9]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx(B,{icon:E,title:"No broadcasts in this window",description:"Action Cable broadcasts appear here as your app sends them."}),e[9]=h):h=e[9];let s;e[10]!==i?(s={onOpen:(r,g)=>{const v=i(r);v&&(g?.newTab?window.open(v,"_blank"):P.visit(v))}},e[10]=i,e[11]=s):s=e[11];let f,b,x,y,_;e[12]===Symbol.for("react.memo_cache_sentinel")?(y={key:"when",header:"When",cell:F},_={key:"k",header:"Kind",cell:z},f={key:"s",header:"Stream / channel",cell:W},b={key:"b",hideOnMobile:!0,header:"Bytes",align:"right",cell:I},x={key:"d",header:"Duration",align:"right",cell:q},e[12]=f,e[13]=b,e[14]=x,e[15]=y,e[16]=_):(f=e[12],b=e[13],x=e[14],y=e[15],_=e[16]);let o;e[17]!==i?(o=[y,_,f,b,x,{key:"in",hideOnMobile:!0,header:"In",cell:r=>{const g=i(r);return g?n.jsx(R,{className:"font-mono text-xs hover:underline",href:g,children:r.execution_preview}):null}}],e[17]=i,e[18]=o):o=e[18];let l;e[19]!==t.recent||e[20]!==o||e[21]!==s?(l=n.jsx(S,{rows:t.recent,rowKey:G,empty:h,keyboardNav:s,columns:o}),e[19]=t.recent,e[20]=o,e[21]=s,e[22]=l):l=e[22];let k;return e[23]!==l||e[24]!==a?(k=n.jsxs(D,{title:"Broadcasts",children:[m,a,p,l]}),e[23]=l,e[24]=a,e[25]=k):k=e[25],k}function q(t){return C(t.duration,3)}function I(t){return O(t.bytes)}function W(t){return n.jsxs("span",{className:"font-mono text-xs",children:[t.stream??t.channel,t.action?`#${t.action}`:""]})}function z(t){return t.failed?n.jsxs("span",{className:"flex items-center gap-1.5",children:[t.kind,n.jsx(L,{variant:"destructive",children:"failed"})]}):t.kind}function F(t){return n.jsx("span",{className:"text-xs",children:H(t.occurred_at)})}function G(t){return t.id}function J(t){return C(t.avg,3)}function Q(t){return O(t.bytes)}function U(t){return T(t.count)}function V(t){return n.jsx("span",{className:"font-mono text-xs",children:t.name})}function X(t){return t.kind}function Y(t){return`${t.group_hash}-${t.kind}`}export{fe as default};
@@ -1 +0,0 @@
1
- import{c as Z,u as ee,j as s,t as te,e as W,a0 as se,L as oe,r as G}from"./inertia-Cuyz2ZHO.js";import{V as re,D as ne}from"./chart-panel-CC49WTQL.js";import{D as J}from"./data-table-CzKTEE-O.js";import{E as Q}from"./empty-state-CW4wclK_.js";import{F as le}from"./filter-bar-CJDjWFib.js";import{P as ie,E as ae}from"./env-layout-Kz7wks1x.js";import{u as ce,P as me}from"./percentile-picker-CeQgllxD.js";import{S as ue}from"./sparkline-cell-Dwg7awwh.js";import{S as de}from"./status-badge-CH5P-Xkj.js";import{u as fe,C as pe}from"./use-clipboard-DNefo-ky.js";import{m as V,c as he,p as xe,w as ge,b as X}from"./format-B9SDkrWj.js";import{q as Y,C as ye,a as be}from"./app-layout-Zc0v-hYh.js";import{C as _e}from"./index-BfbSo01U.js";import"./series-chart-gnrzhmM6.js";import"./chart-hover-CfoZUY4J.js";import"./chart-DWh7l8yM.js";import"./badge-DRae8XwK.js";import"./app-wordmark-BA_60AVb.js";import"./use-live-DMTuhKfB.js";import"./live-dot-BZgYTYdt.js";import"./index-CBip6V4z.js";import"./segmented-BeIe4uqk.js";import"./label-DdCBgiUn.js";import"./checkbox-DPkLUiwM.js";function je(t){const e=Z.c(16),{body:p}=t,[o,i]=G.useState(!1),[,m]=fe(),[u,h]=G.useState(!1),d=o?ye:be;let a;e[0]!==o?(a=()=>i(!o),e[0]=o,e[1]=a):a=e[1];let r;e[2]!==d?(r=s.jsx(d,{className:"size-3"}),e[2]=d,e[3]=r):r=e[3];let n;e[4]!==o||e[5]!==a||e[6]!==r?(n=s.jsxs("button",{type:"button",onClick:a,"aria-expanded":o,className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1",children:[r,"Body"]}),e[4]=o,e[5]=a,e[6]=r,e[7]=n):n=e[7];let l;e[8]!==p||e[9]!==u||e[10]!==m||e[11]!==o?(l=o&&s.jsxs("div",{className:"w-[70vw] max-w-[36rem] space-y-1 text-left",children:[s.jsxs("button",{type:"button",onClick:()=>{(async()=>await m(p)&&(h(!0),setTimeout(()=>h(!1),1200)))()},className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1",children:[u?s.jsx(_e,{className:"size-3"}):s.jsx(pe,{className:"size-3"}),"Copy"]}),s.jsx("pre",{className:"bg-muted max-h-64 overflow-auto rounded p-2 font-mono text-[10px] break-all whitespace-pre-wrap",children:p})]}),e[8]=p,e[9]=u,e[10]=m,e[11]=o,e[12]=l):l=e[12];let f;return e[13]!==n||e[14]!==l?(f=s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[n,l]}),e[13]=n,e[14]=l,e[15]=f):f=e[15],f}function it(t){const e=Z.c(62),{environment:p,window:o}=ee().props,{percentile:i}=ce(),m=p.application_id,u=p.id;let h;e[0]!==m||e[1]!==u?(h=c=>c.execution_id?te(m,u,c.execution_id):null,e[0]=m,e[1]=u,e[2]=h):h=e[2];const d=h;let a;e[3]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx(ie,{title:"Outgoing requests",description:"HTTP calls your app makes to other services, by host and method.",actions:s.jsx(me,{})}),e[3]=a):a=e[3];let r;e[4]!==t.series?(r=s.jsx(re,{legend:"request",label:"Outgoing requests",seriesLabel:"Calls",data:t.series}),e[4]=t.series,e[5]=r):r=e[5];let n;e[6]!==t.series||e[7]!==i?(n=s.jsx(ne,{label:"Latency",data:t.series,percentile:i}),e[6]=t.series,e[7]=i,e[8]=n):n=e[8];let l;e[9]!==r||e[10]!==n?(l=s.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[r,n]}),e[9]=r,e[10]=n,e[11]=l):l=e[11];let f,S,C,q,O,P;e[12]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Q,{icon:Y,title:"No outgoing requests in this window",description:"HTTP calls your app makes to other services appear here."}),C={key:"h",header:"Host",cell:He},q={key:"trend",hideOnMobile:!0,header:"Trend",cell:Me},O={key:"n",header:"Calls",align:"right",cell:Ee},P={key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:Te},f={key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:Re},e[12]=f,e[13]=S,e[14]=C,e[15]=q,e[16]=O,e[17]=P):(f=e[12],S=e[13],C=e[14],q=e[15],O=e[16],P=e[17]);let x;e[18]!==i?(x=c=>s.jsx("span",{className:"font-semibold",children:V(c[i])}),e[18]=i,e[19]=x):x=e[19];let g;e[20]!==i||e[21]!==x?(g={key:i,header:i,align:"right",cell:x},e[20]=i,e[21]=x,e[22]=g):g=e[22];let R;e[23]===Symbol.for("react.memo_cache_sentinel")?(R={key:"max",hideOnMobile:!0,header:"Max",align:"right",cell:Pe},e[23]=R):R=e[23];let y;e[24]!==g?(y=[C,q,O,P,f,g,R],e[24]=g,e[25]=y):y=e[25];let b;e[26]!==t.hosts||e[27]!==y?(b=s.jsx(J,{rows:t.hosts,rowKey:ze,empty:S,columns:y}),e[26]=t.hosts,e[27]=y,e[28]=b):b=e[28];let T;e[29]===Symbol.for("react.memo_cache_sentinel")?(T=s.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[29]=T):T=e[29];let E;e[30]===Symbol.for("react.memo_cache_sentinel")?(E={key:"host",label:"Host"},e[30]=E):E=e[30];let M;e[31]===Symbol.for("react.memo_cache_sentinel")?(M=[E,{key:"status",label:"Status",options:["2xx","3xx","4xx","5xx"]}],e[31]=M):M=e[31];let _;e[32]!==m||e[33]!==u||e[34]!==o?(_=c=>W.visit(se(m,u,{window:o,q:c||void 0}),{preserveState:!0}),e[32]=m,e[33]=u,e[34]=o,e[35]=_):_=e[35];let j;e[36]!==t.q||e[37]!==_?(j=s.jsx(le,{value:t.q,fields:M,onChange:_,placeholder:"host:api.test status:5xx"}),e[36]=t.q,e[37]=_,e[38]=j):j=e[38];let H;e[39]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(Q,{icon:Y,title:"No outgoing requests in this window",description:"HTTP calls your app makes to other services appear here."}),e[39]=H):H=e[39];let k;e[40]!==d?(k={onOpen:(c,K)=>{const U=d(c);U&&(K?.newTab?globalThis.window.open(U,"_blank"):W.visit(U))}},e[40]=d,e[41]=k):k=e[41];let z,D,L,B,$,F;e[42]===Symbol.for("react.memo_cache_sentinel")?(z={key:"when",header:"When",cell:qe},D={key:"st",header:"Status",cell:Ce},L={key:"u",hideOnMobile:!0,header:"Request",cell:Se},B={key:"sz",hideOnMobile:!0,header:"In/out",align:"right",cell:Ne},$={key:"d",header:"Duration",align:"right",cell:we},F={key:"src",hideOnMobile:!0,header:"Source",cell:ve},e[42]=z,e[43]=D,e[44]=L,e[45]=B,e[46]=$,e[47]=F):(z=e[42],D=e[43],L=e[44],B=e[45],$=e[46],F=e[47]);let v;e[48]!==d?(v={key:"in",hideOnMobile:!0,header:"In",cell:c=>{const K=d(c);return K?s.jsx(oe,{className:"font-mono text-xs hover:underline",href:K,children:c.execution_preview}):null}},e[48]=d,e[49]=v):v=e[49];let A;e[50]===Symbol.for("react.memo_cache_sentinel")?(A={key:"body",header:"Response",align:"right",cell:ke},e[50]=A):A=e[50];let w;e[51]!==v?(w=[z,D,L,B,$,F,v,A],e[51]=v,e[52]=w):w=e[52];let N;e[53]!==t.recent||e[54]!==k||e[55]!==w?(N=s.jsx(J,{rows:t.recent,rowKey:Oe,empty:H,keyboardNav:k,columns:w}),e[53]=t.recent,e[54]=k,e[55]=w,e[56]=N):N=e[56];let I;return e[57]!==b||e[58]!==j||e[59]!==N||e[60]!==l?(I=s.jsxs(ae,{title:"Outgoing requests",children:[a,l,b,T,j,N]}),e[57]=b,e[58]=j,e[59]=N,e[60]=l,e[61]=I):I=e[61],I}function ke(t){return t.response_body?s.jsx(je,{body:t.response_body}):s.jsx("span",{className:"text-muted-foreground",children:"–"})}function ve(t){return s.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:t.source??""})}function we(t){return V(t.duration)}function Ne(t){return`${X(t.request_size)} / ${X(t.response_size)}`}function Se(t){return s.jsxs("span",{className:"font-mono text-xs",children:[s.jsx("span",{className:"font-semibold",children:t.method})," ",t.url]})}function Ce(t){return s.jsx(de,{status:t.status_code,label:t.error?"error":void 0,outcome:t.error?"failed":void 0})}function qe(t){return s.jsx("span",{className:"text-xs",children:ge(t.occurred_at)})}function Oe(t){return t.id}function Pe(t){return V(t.max)}function Re(t){return V(t.avg)}function Te(t){return s.jsx("span",{className:t.errors?"text-destructive":"",children:xe(t.errors,t.count)})}function Ee(t){return he(t.count)}function Me(t){return s.jsx(ue,{data:t.sparkline})}function He(t){return s.jsx("span",{className:"font-mono text-xs",children:t.name})}function ze(t){return t.group_hash}export{it as default};
@@ -1 +0,0 @@
1
- import{c as Ie,u as Oe,r as re,S as fe,j as s,e as I,T as ze,H as Ee,L as Pe,i as ye}from"./inertia-Cuyz2ZHO.js";import{D as Me,i as Ae}from"./data-table-CzKTEE-O.js";import{E as Le}from"./empty-state-CW4wclK_.js";import{S as he,a as xe}from"./segmented-BeIe4uqk.js";import{I as Se}from"./status-badge-CH5P-Xkj.js";import{B as _e}from"./badge-DRae8XwK.js";import{B as me}from"./app-wordmark-BA_60AVb.js";import{C as pe}from"./checkbox-DPkLUiwM.js";import{S as ge,a as ke,b as be,c as je,d as ue}from"./select-2R16457Z.js";import{e as Re,O as Be,A as De}from"./app-layout-Zc0v-hYh.js";import{c as de,a as Te}from"./format-B9SDkrWj.js";import"./chart-hover-CfoZUY4J.js";import"./index-BfbSo01U.js";import"./index-CBip6V4z.js";import"./live-dot-BZgYTYdt.js";import"./label-DdCBgiUn.js";const He=["low","normal","high","urgent"];function bt(t){const e=Ie.c(82),{applications:O}=Oe().props,[m,ve]=re.useState(t.filters.q??""),[c,we]=re.useState(null);let z;e[0]===Symbol.for("react.memo_cache_sentinel")?(z=new Set,e[0]=z):z=e[0];const[a,E]=re.useState(z),ae=t.filters.status??"open";let P;e[1]!==t.filters?(P=n=>I.visit(fe({...t.filters,...n}),{preserveState:!0}),e[1]=t.filters,e[2]=P):P=e[2];const r=P,M=st;let A;e[3]===Symbol.for("react.memo_cache_sentinel")?(A={onOpen:(n,i)=>i?.newTab?window.open(M(n),"_blank"):I.visit(M(n)),onHighlightChange:n=>we(n?.id??null)},e[3]=A):A=e[3];const Ne=A;let L,R;e[4]!==c||e[5]!==t.issues?(L=()=>{const n=function(l){if(Ae(l)||l.key!=="r"&&l.key!=="i"&&l.key!=="a")return;const o=t.issues.findIndex(ce=>ce.id===c);if(o<0)return;l.preventDefault();const C=l.key==="r"?"resolve":l.key==="i"?"ignore":"assign_me";I.patch(ye(t.issues[o].id),{action_name:C},{preserveScroll:!0})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},R=[c,t.issues],e[4]=c,e[5]=t.issues,e[6]=L,e[7]=R):(L=e[6],R=e[7]),re.useEffect(L,R);let B;e[8]===Symbol.for("react.memo_cache_sentinel")?(B=function(i){E(l=>{const o=new Set(l);return o.has(i)?o.delete(i):o.add(i),o})},e[8]=B):B=e[8];const Ce=B;let D;e[9]!==a?(D=function(i,l){I.post(ze(),{ids:[...a],action_name:i,value:l},{preserveScroll:!0,onSuccess:()=>E(new Set)})},e[9]=a,e[10]=D):D=e[10];const N=D;let T,H;e[11]===Symbol.for("react.memo_cache_sentinel")?(T=[{title:"Issues",href:fe()}],H=s.jsx(Ee,{title:"Issues"}),e[11]=T,e[12]=H):(T=e[11],H=e[12]);let K;e[13]===Symbol.for("react.memo_cache_sentinel")?(K=[["exception","Exceptions"],["performance","Performance"],["anomaly","Anomalies"]],e[13]=K):K=e[13];let d;e[14]!==r||e[15]!==t.filters.kind||e[16]!==t.kindCounts?(d=s.jsx(he,{children:K.map(n=>{const[i,l]=n;return s.jsxs(xe,{mono:!1,active:(t.filters.kind??"")===i,onClick:()=>r({kind:t.filters.kind===i?void 0:i}),className:"gap-2 px-3",children:[l,s.jsx("span",{className:"bg-muted text-muted-foreground rounded px-1.5 font-mono text-[10px]",children:de(t.kindCounts?.[i]??0)})]},i)})}),e[14]=r,e[15]=t.filters.kind,e[16]=t.kindCounts,e[17]=d):d=e[17];let u;e[18]!==r||e[19]!==m?(u=n=>{n.preventDefault(),r({q:m})},e[18]=r,e[19]=m,e[20]=u):u=e[20];let q;e[21]===Symbol.for("react.memo_cache_sentinel")?(q=s.jsx(Re,{className:"text-muted-foreground size-3.5 shrink-0"}),e[21]=q):q=e[21];let V;e[22]===Symbol.for("react.memo_cache_sentinel")?(V=n=>ve(n.target.value),e[22]=V):V=e[22];let f;e[23]!==m?(f=s.jsx("input",{value:m,onChange:V,placeholder:"Search or source:browser",className:"placeholder:text-muted-foreground min-w-0 flex-1 bg-transparent text-sm outline-none"}),e[23]=m,e[24]=f):f=e[24];let h;e[25]!==u||e[26]!==f?(h=s.jsxs("form",{className:"bg-card flex h-8 min-w-0 flex-1 items-center gap-1.5 rounded-md border px-2 md:max-w-xs",onSubmit:u,children:[q,f]}),e[25]=u,e[26]=f,e[27]=h):h=e[27];let U;e[28]===Symbol.for("react.memo_cache_sentinel")?(U=["open","Open",{}],e[28]=U):U=e[28];let $;e[29]===Symbol.for("react.memo_cache_sentinel")?($=["mine","Mine",{mine:"1"}],e[29]=$):$=e[29];let Q;e[30]===Symbol.for("react.memo_cache_sentinel")?(Q=["resolved","Resolved",{}],e[30]=Q):Q=e[30];let W;e[31]===Symbol.for("react.memo_cache_sentinel")?(W=[U,$,Q,["ignored","Ignored",{}]],e[31]=W):W=e[31];let x;e[32]!==r||e[33]!==t.counts||e[34]!==t.filters.mine||e[35]!==ae?(x=s.jsx("div",{className:"-mx-3 [scrollbar-width:none] overflow-x-auto px-3 md:mx-0 md:ml-auto md:overflow-visible md:px-0 [&::-webkit-scrollbar]:hidden",children:s.jsx(he,{children:W.map(n=>{const[i,l,o]=n,C=i==="mine",ce=C?t.filters.mine==="1":ae===i&&t.filters.mine!=="1";return s.jsxs(xe,{mono:!1,active:ce,onClick:()=>r(C?{mine:"1",status:"open"}:{status:i,mine:void 0,...o}),className:"px-3",children:[l,!C&&s.jsx("span",{className:"text-muted-foreground font-mono text-[10px]",children:de(t.counts[i]??0)})]},i)})})}),e[32]=r,e[33]=t.counts,e[34]=t.filters.mine,e[35]=ae,e[36]=x):x=e[36];let p;e[37]!==O||e[38]!==r||e[39]!==t.filters.application_id?(p=O.length>1&&s.jsxs(ge,{value:t.filters.application_id??"all",onValueChange:n=>r({application_id:n==="all"?void 0:n,environment_id:void 0}),children:[s.jsx(ke,{className:"h-8 w-44 text-xs",children:s.jsx(be,{placeholder:"Application"})}),s.jsxs(je,{children:[s.jsx(ue,{value:"all",children:"All applications"}),O.map(tt)]})]}),e[37]=O,e[38]=r,e[39]=t.filters.application_id,e[40]=p):p=e[40];let g;e[41]!==d||e[42]!==h||e[43]!==x||e[44]!==p?(g=s.jsxs("div",{className:"flex flex-col gap-2 md:flex-row md:flex-wrap md:items-center",children:[d,h,x,p]}),e[41]=d,e[42]=h,e[43]=x,e[44]=p,e[45]=g):g=e[45];let F,G;e[46]===Symbol.for("react.memo_cache_sentinel")?(F=s.jsx(Le,{icon:Be,title:"No issues match",signal:"caution",description:"Issues are grouped from repeated request, job, and exception errors."}),G=n=>I.visit(M(n)),e[46]=F,e[47]=G):(F=e[46],G=e[47]);const oe=t.issues.length>0&&a.size===t.issues.length;let k;e[48]!==t.issues?(k=n=>E(n?new Set(t.issues.map(Ze)):new Set),e[48]=t.issues,e[49]=k):k=e[49];let b;e[50]!==oe||e[51]!==k?(b=s.jsx(pe,{checked:oe,onCheckedChange:k,"aria-label":"Select all",onClick:Ye}),e[50]=oe,e[51]=k,e[52]=b):b=e[52];let j;e[53]!==a?(j=n=>s.jsx(pe,{checked:a.has(n.id),onCheckedChange:()=>Ce(n.id),"aria-label":`Select ${n.key}`,onClick:Xe}),e[53]=a,e[54]=j):j=e[54];let y;e[55]!==b||e[56]!==j?(y={key:"sel",hideOnMobile:!0,header:b,cell:j},e[55]=b,e[56]=j,e[57]=y):y=e[57];let S;e[58]!==c?(S={key:"k",header:"Issue",cell:n=>s.jsxs("div",{className:"flex items-center gap-1",children:[n.id===c&&s.jsx("span",{className:"text-primary","aria-hidden":!0,children:"›"}),s.jsx(Pe,{className:"font-mono text-xs font-semibold hover:underline",href:M(n),children:n.key})]})},e[58]=c,e[59]=S):S=e[59];let J,X,Y,Z,ee,te,se,ne,ie;e[60]===Symbol.for("react.memo_cache_sentinel")?(J={key:"t",header:"Title",grow:!0,cell:Je},X={key:"env",hideOnMobile:!0,header:"Where",cell:Ge},Y={key:"kind",hideOnMobile:!0,header:"Kind",cell:Fe},Z={key:"s",hideOnMobile:!0,header:"Status",cell:We},ee={key:"p",hideOnMobile:!0,header:"Priority",cell:Qe},te={key:"a",hideOnMobile:!0,header:"Assignee",cell:$e},se={key:"n",header:"Events",align:"right",cell:Ue},ne={key:"u",hideOnMobile:!0,header:"Users",align:"right",cell:Ve},ie={key:"l",hideOnMobile:!0,header:"Last seen",align:"right",cell:qe},e[60]=J,e[61]=X,e[62]=Y,e[63]=Z,e[64]=ee,e[65]=te,e[66]=se,e[67]=ne,e[68]=ie):(J=e[60],X=e[61],Y=e[62],Z=e[63],ee=e[64],te=e[65],se=e[66],ne=e[67],ie=e[68]);let _;e[69]!==y||e[70]!==S?(_=[y,S,J,X,Y,Z,ee,te,se,ne,ie],e[69]=y,e[70]=S,e[71]=_):_=e[71];let v;e[72]!==t.issues||e[73]!==_?(v=s.jsx(Me,{rows:t.issues,rowKey:et,empty:F,onRowClick:G,keyboardNav:Ne,columns:_}),e[72]=t.issues,e[73]=_,e[74]=v):v=e[74];let w;e[75]!==N||e[76]!==a.size?(w=a.size>0&&s.jsxs("div",{className:"bg-background sticky bottom-4 z-10 flex w-fit items-center gap-2 self-start rounded-lg border p-2 shadow-md",children:[s.jsxs("span",{className:"px-1 text-sm",children:[a.size," selected"]}),s.jsx(me,{size:"sm",variant:"outline",onClick:()=>N("resolve"),children:"Resolve"}),s.jsx(me,{size:"sm",variant:"outline",onClick:()=>N("ignore"),children:"Ignore"}),s.jsxs(ge,{onValueChange:n=>N("priority",n),children:[s.jsx(ke,{className:"h-8 w-32",children:s.jsx(be,{placeholder:"Priority"})}),s.jsx(je,{children:He.map(Ke)})]}),s.jsx(me,{size:"sm",variant:"ghost",onClick:()=>E(new Set),children:"Clear"})]}),e[75]=N,e[76]=a.size,e[77]=w):w=e[77];let le;return e[78]!==g||e[79]!==v||e[80]!==w?(le=s.jsxs(De,{breadcrumbs:T,children:[H,s.jsxs("div",{className:"flex flex-1 flex-col gap-4 p-3 md:gap-5 md:px-6 md:pt-2 md:pb-6",children:[g,v,w]})]}),e[78]=g,e[79]=v,e[80]=w,e[81]=le):le=e[81],le}function Ke(t){return s.jsx(ue,{value:t,className:"capitalize",children:t},t)}function qe(t){return s.jsx("span",{title:t.last_seen_at,children:Te(t.last_seen_at)})}function Ve(t){return t.affected_users}function Ue(t){return de(t.occurrences)}function $e(t){return t.assignee?.name??s.jsx("span",{className:"text-muted-foreground",children:"–"})}function Qe(t){return s.jsx("span",{className:t.priority==="urgent"?"text-destructive font-semibold":t.priority==="high"?"text-amber-600":"text-muted-foreground",children:t.priority})}function We(t){return s.jsx(Se,{status:t.status})}function Fe(t){return s.jsx(_e,{variant:"outline",children:t.kind})}function Ge(t){return s.jsxs("span",{className:"text-xs",children:[t.application?.name," · ",t.environment?.name]})}function Je(t){return s.jsxs("div",{className:"text-xs",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"line-clamp-1 font-medium",children:t.title}),t.fingerprint_source&&t.fingerprint_source!=="default"&&s.jsxs(_e,{variant:"secondary",className:"shrink-0",children:["grouped by ",t.fingerprint_source]}),s.jsx("span",{className:"md:hidden",children:s.jsx(Se,{status:t.status})})]}),s.jsx("div",{className:"text-muted-foreground font-mono",children:t.culprit})]})}function Xe(t){return t.stopPropagation()}function Ye(t){return t.stopPropagation()}function Ze(t){return t.id}function et(t){return t.id}function tt(t){return s.jsx(ue,{value:String(t.id),children:t.name},t.id)}function st(t){return ye(t.id)}export{bt as default};