railwatch 0.3.3 → 0.3.5
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +52 -0
- data/app/channels/railwatch/environment_channel.rb +22 -1
- data/app/jobs/railwatch/prune_telemetry_job.rb +20 -1
- data/app/models/railwatch/environment.rb +17 -3
- data/app/models/railwatch/telemetry_record.rb +48 -0
- data/db/railwatch_telemetry_migrate/20260903000000_enable_incremental_vacuum.rb +62 -0
- data/docs/embedded.md +47 -1
- data/lib/railwatch/embedded.rb +0 -4
- data/lib/railwatch/version.rb +1 -1
- data/lib/tasks/railwatch_tasks.rake +161 -0
- data/public/railwatch/assets/{app-layout-yh-sPWgK.js → app-layout-CdJ5Qjms.js} +1 -1
- data/public/railwatch/assets/{app-wordmark-nbjkzxwQ.js → app-wordmark-B-0yZiDb.js} +1 -1
- data/public/railwatch/assets/{appearance-CDuRvQTB.js → appearance-CU28GBf1.js} +1 -1
- data/public/railwatch/assets/application-CwshqwM6.css +1 -0
- data/public/railwatch/assets/{arrow-up-DVtOGdVA.js → arrow-up-DY1fS0tD.js} +1 -1
- data/public/railwatch/assets/{auth-layout-TCwPpS1K.js → auth-layout-C3FKuUJz.js} +1 -1
- data/public/railwatch/assets/{badge-Daw4Hvr8.js → badge-DKvItdlb.js} +1 -1
- data/public/railwatch/assets/{braces-DhFbHPsz.js → braces-Bse5Gh3K.js} +1 -1
- data/public/railwatch/assets/{card-BX_3HXcJ.js → card-C9j_ffR9.js} +1 -1
- data/public/railwatch/assets/{chart-B14-N9g7.js → chart-Cmh6JEww.js} +1 -1
- data/public/railwatch/assets/{chart-hover-Vy52H4uD.js → chart-hover-B0SjyWFy.js} +1 -1
- data/public/railwatch/assets/{chart-panel-Cb4S_ej_.js → chart-panel-DKNxoauI.js} +1 -1
- data/public/railwatch/assets/{checkbox-D3aRSsBj.js → checkbox-BsBkRg5n.js} +1 -1
- data/public/railwatch/assets/{code-KvW8k7Jr.js → code-C879Qwgg.js} +1 -1
- data/public/railwatch/assets/{copy-block-BKFGd11J.js → copy-block-DtO_3esq.js} +1 -1
- data/public/railwatch/assets/{copy-id-Djks1fXB.js → copy-id-SeLCKsW2.js} +1 -1
- data/public/railwatch/assets/{cursor-load-more-BXV0f1D_.js → cursor-load-more-OpHbe_kE.js} +1 -1
- data/public/railwatch/assets/{data-table-iv1bdF6u.js → data-table-Bc3ZRnpb.js} +1 -1
- data/public/railwatch/assets/{edit-__9yJlO3.js → edit-BMpgcQhU.js} +1 -1
- data/public/railwatch/assets/{edit-DMKUF8Zi.js → edit-CTD1jSWh.js} +1 -1
- data/public/railwatch/assets/{edit-BZc_Iawe.js → edit-DDvf9mkq.js} +1 -1
- data/public/railwatch/assets/{empty-state-6j_0AaQQ.js → empty-state-CkPROZB0.js} +1 -1
- data/public/railwatch/assets/env-layout-aGQgTZRg.js +1 -0
- data/public/railwatch/assets/{execution-path-CzgBUi5e.js → execution-path-BX5NcXUZ.js} +1 -1
- data/public/railwatch/assets/{filter-bar-9SU5NrzX.js → filter-bar-C0O2rJVr.js} +1 -1
- data/public/railwatch/assets/{flamegraph-qcekju8V.js → flamegraph-Vj4QSAlT.js} +1 -1
- data/public/railwatch/assets/{frames-Cyu7KMxZ.js → frames-CTiGwm4E.js} +1 -1
- data/public/railwatch/assets/{google-sign-in-button-DsTSfmzY.js → google-sign-in-button-BzogBGeF.js} +1 -1
- data/public/railwatch/assets/index-B-kuWp-m.js +1 -0
- data/public/railwatch/assets/{index-1ol1-QWI.js → index-B2_QluAw.js} +1 -1
- data/public/railwatch/assets/index-B69Iad2U.js +1 -0
- data/public/railwatch/assets/index-BCLvKVhP.js +1 -0
- data/public/railwatch/assets/index-BKgAm-w2.js +1 -0
- data/public/railwatch/assets/index-BRN_bXV_.js +1 -0
- data/public/railwatch/assets/index-Ble4RoA3.js +1 -0
- data/public/railwatch/assets/index-Bvy021Vv.js +1 -0
- data/public/railwatch/assets/index-CCLMaY9k.js +1 -0
- data/public/railwatch/assets/index-CD4HIHq0.js +1 -0
- data/public/railwatch/assets/{index-Cmlwy1-V.js → index-CPQKOQxV.js} +1 -1
- data/public/railwatch/assets/{index-CeYKnapu.js → index-CY6lbwAC.js} +1 -1
- data/public/railwatch/assets/index-C__S10ze.js +1 -0
- data/public/railwatch/assets/index-ChQ1_u8u.js +1 -0
- data/public/railwatch/assets/index-CtT4T6kp.js +1 -0
- data/public/railwatch/assets/index-CxU1Jj35.js +1 -0
- data/public/railwatch/assets/index-D3Axxkk2.js +1 -0
- data/public/railwatch/assets/index-D5YVcrqR.js +1 -0
- data/public/railwatch/assets/index-D9cV-IQr.js +1 -0
- data/public/railwatch/assets/index-DbyRgbzQ.js +1 -0
- data/public/railwatch/assets/index-Dcxd_H-U.js +1 -0
- data/public/railwatch/assets/index-Dep2XomH.js +1 -0
- data/public/railwatch/assets/{index-DlumCsWY.js → index-DepurF6s.js} +2 -2
- data/public/railwatch/assets/{index-BRiq3SNR.js → index-DigUOHQ8.js} +1 -1
- data/public/railwatch/assets/index-DkgImCOg.js +1 -0
- data/public/railwatch/assets/{index-DU9F5b5d.js → index-DxuDLoTc.js} +1 -1
- data/public/railwatch/assets/{index-OqI59zPb.js → index-Dy7Wg880.js} +1 -1
- data/public/railwatch/assets/index-FgpFDA1Z.js +1 -0
- data/public/railwatch/assets/index-LaTKDe0-.js +1 -0
- data/public/railwatch/assets/index-Wb_U2_hz.js +1 -0
- data/public/railwatch/assets/index-chS28dvS.js +1 -0
- data/public/railwatch/assets/index-jSEU_Yp7.js +1 -0
- data/public/railwatch/assets/index-uuKg6Zqn.js +1 -0
- data/public/railwatch/assets/index-y2c8xKzI.js +1 -0
- data/public/railwatch/assets/index-z2YfKBJl.js +1 -0
- data/public/railwatch/assets/{inertia-TViv6kNv.js → inertia-CgBdJDaE.js} +2 -2
- data/public/railwatch/assets/{input-error-LxImUkxv.js → input-error-DfpIawjl.js} +1 -1
- data/public/railwatch/assets/{json-viewer-Ar4cjPDW.js → json-viewer-CH7nEIUs.js} +1 -1
- data/public/railwatch/assets/klass-BTg1l2AO.js +1 -0
- data/public/railwatch/assets/{label-COUKWqE_.js → label-BWgQzHCO.js} +1 -1
- data/public/railwatch/assets/{layout-DNSLAkw_.js → layout-neknbxn-.js} +1 -1
- data/public/railwatch/assets/{live-dot-ChfUtY3p.js → live-dot-Bejk0a5o.js} +1 -1
- data/public/railwatch/assets/{nav-CNnDqPlm.js → nav-C1M8941-.js} +1 -1
- data/public/railwatch/assets/{new-D4uewYC8.js → new-B8CzyoMu.js} +1 -1
- data/public/railwatch/assets/{new-Be55nmt9.js → new-BnGIYM37.js} +1 -1
- data/public/railwatch/assets/{new-Bi_xQiIb.js → new-DElC-JCS.js} +1 -1
- data/public/railwatch/assets/{new-D05SajFR.js → new-DGYPcz7w.js} +1 -1
- data/public/railwatch/assets/{new-84S8ZJq9.js → new-DLgCLBiW.js} +1 -1
- data/public/railwatch/assets/{new-BvCT8TMg.js → new-bBwawsEg.js} +1 -1
- data/public/railwatch/assets/{onboarding-CYZi5Cqc.js → onboarding-CW0jUhHT.js} +1 -1
- data/public/railwatch/assets/{origin-identity-6q1-CBts.js → origin-identity-bJMxeEHB.js} +1 -1
- data/public/railwatch/assets/{percentile-picker-gFZCXtdb.js → percentile-picker-DLAnTKY3.js} +1 -1
- data/public/railwatch/assets/{relative-time-IOOgl5n2.js → relative-time-BHbJh8HW.js} +1 -1
- data/public/railwatch/assets/release-health-2O1GRclB.js +1 -0
- data/public/railwatch/assets/route-DSw8aIZa.js +1 -0
- data/public/railwatch/assets/{segmented-h1VdDTqE.js → segmented-Dg8CES94.js} +1 -1
- data/public/railwatch/assets/{select-_AJsUa7X.js → select-CqKpvI98.js} +1 -1
- data/public/railwatch/assets/{separator-BwwTYtCF.js → separator-BOp2LHw3.js} +1 -1
- data/public/railwatch/assets/{series-chart-DaFPefku.js → series-chart-COEtj3PY.js} +1 -1
- data/public/railwatch/assets/show-B40560ZT.js +1 -0
- data/public/railwatch/assets/{show-C4Ltf5i9.js → show-B7Zqjlqc.js} +1 -1
- data/public/railwatch/assets/{show-CeTL4B37.js → show-BAxMoNvw.js} +2 -2
- data/public/railwatch/assets/show-B_QVoqKE.js +1 -0
- data/public/railwatch/assets/show-Bbs1i46N.js +1 -0
- data/public/railwatch/assets/{show-DACku6AD.js → show-C-xpDkoj.js} +3 -3
- data/public/railwatch/assets/{show-DgSIoRvA.js → show-C9Y1To9_.js} +1 -1
- data/public/railwatch/assets/show-CGv85sRo.js +1 -0
- data/public/railwatch/assets/{show-BM6X2Mpo.js → show-CPh-7VGL.js} +1 -1
- data/public/railwatch/assets/show-C_9M2nLy.js +1 -0
- data/public/railwatch/assets/{show-DIOSGcXV.js → show-DFlP1ktM.js} +2 -2
- data/public/railwatch/assets/show-DqtE0LI6.js +1 -0
- data/public/railwatch/assets/{show-C8sHalnw.js → show-DrhEDGPn.js} +1 -1
- data/public/railwatch/assets/{show-JxFtB4eK.js → show-HjjzcKRq.js} +2 -2
- data/public/railwatch/assets/show-Zr2xV4OD.js +1 -0
- data/public/railwatch/assets/show-dRDz8OVu.js +1 -0
- data/public/railwatch/assets/{show-DYteoYWW.js → show-pbkvGRER.js} +1 -1
- data/public/railwatch/assets/{sort-header-DpFzXblu.js → sort-header-DBxQ_KFX.js} +1 -1
- data/public/railwatch/assets/{sparkline-cell-C3-5vFkP.js → sparkline-cell-BbfXw3kA.js} +1 -1
- data/public/railwatch/assets/stat-Cd8QaTGw.js +1 -0
- data/public/railwatch/assets/{status-badge-8jVV-LA4.js → status-badge-Ys4b0fcG.js} +1 -1
- data/public/railwatch/assets/{tenant-path-G-6u9A-o.js → tenant-path-CQWzaNYR.js} +1 -1
- data/public/railwatch/assets/{text-link-DfsiaCcP.js → text-link-BY8FY-CJ.js} +1 -1
- data/public/railwatch/assets/{textarea-Dye72uP7.js → textarea-Bq2jjOMC.js} +1 -1
- data/public/railwatch/assets/{timeline-CD7WHnbo.js → timeline-SxStCFO2.js} +1 -1
- data/public/railwatch/assets/{transition-B_AW8rMK.js → transition-CQ9yvfPa.js} +1 -1
- data/public/railwatch/assets/{use-clipboard-ColgLyQ2.js → use-clipboard-3hTXU91g.js} +1 -1
- data/public/railwatch/assets/use-live-LwJStJvD.js +1 -0
- data/public/railwatch/manifest.json +1289 -1236
- metadata +117 -115
- data/public/railwatch/assets/application-DD4nJA5I.css +0 -1
- data/public/railwatch/assets/env-layout-DrT8rO6P.js +0 -1
- data/public/railwatch/assets/index-5jI4aFzC.js +0 -1
- data/public/railwatch/assets/index-9KTrVnrc.js +0 -1
- data/public/railwatch/assets/index-B0-8lcTp.js +0 -1
- data/public/railwatch/assets/index-B7jjfNfO.js +0 -1
- data/public/railwatch/assets/index-BBchRy0M.js +0 -1
- data/public/railwatch/assets/index-BgKj9xhr.js +0 -1
- data/public/railwatch/assets/index-BkTZqqOu.js +0 -1
- data/public/railwatch/assets/index-BprKx8QO.js +0 -1
- data/public/railwatch/assets/index-C3jzvPs3.js +0 -1
- data/public/railwatch/assets/index-Cbs6gGyQ.js +0 -1
- data/public/railwatch/assets/index-CdRZ6AWF.js +0 -1
- data/public/railwatch/assets/index-Cwx6058d.js +0 -1
- data/public/railwatch/assets/index-D4CSdbHv.js +0 -1
- data/public/railwatch/assets/index-DEFMSkdG.js +0 -1
- data/public/railwatch/assets/index-DFiHEBSh.js +0 -1
- data/public/railwatch/assets/index-DL4vWdWJ.js +0 -1
- data/public/railwatch/assets/index-DaXgPcGL.js +0 -1
- data/public/railwatch/assets/index-DbtaU-EE.js +0 -1
- data/public/railwatch/assets/index-DeOe83F4.js +0 -1
- data/public/railwatch/assets/index-DiucHN4B.js +0 -1
- data/public/railwatch/assets/index-DlnR_l9o.js +0 -1
- data/public/railwatch/assets/index-DmRd7aIG.js +0 -1
- data/public/railwatch/assets/index-DxSh2UpM.js +0 -1
- data/public/railwatch/assets/index-MIMGuFNt.js +0 -1
- data/public/railwatch/assets/index-P4rC7IlX.js +0 -1
- data/public/railwatch/assets/index-gpPOcFWq.js +0 -1
- data/public/railwatch/assets/index-oVkururr.js +0 -1
- data/public/railwatch/assets/index-p9puqVge.js +0 -1
- data/public/railwatch/assets/klass-CJ-J4INB.js +0 -1
- data/public/railwatch/assets/release-health-DC8oc7uw.js +0 -1
- data/public/railwatch/assets/route-Dv6LAWvT.js +0 -1
- data/public/railwatch/assets/show-B7NCgkEo.js +0 -1
- data/public/railwatch/assets/show-BKqyKjBK.js +0 -1
- data/public/railwatch/assets/show-BNw4tN5q.js +0 -1
- data/public/railwatch/assets/show-BO3bnG5h.js +0 -1
- data/public/railwatch/assets/show-BhrAVAEA.js +0 -1
- data/public/railwatch/assets/show-CpfgV1jP.js +0 -1
- data/public/railwatch/assets/show-DQp_1n-B.js +0 -1
- data/public/railwatch/assets/show-DVNz46RI.js +0 -1
- data/public/railwatch/assets/stat-s4RpOS9w.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as m,j as r,c as L,C as me,e as se,u as te,g as Ae,o as je,H as Te}from"./inertia-TViv6kNv.js";import{b as Oe}from"./badge-Daw4Hvr8.js";import{t as ke,v as De,w as Ee,x as $e,A as Ne}from"./app-layout-yh-sPWgK.js";import{d as ve,R as Ie,u as Me,A as Le,P as Fe,h as We,g as Ge,f as He,F as ze,e as Be,C as Ue,t as Ve,L as Je}from"./live-dot-ChfUtY3p.js";import{a as ne}from"./format-B9SDkrWj.js";import{a as ue,S as Ke}from"./segmented-h1VdDTqE.js";import{u as be,a as Ye,B as de}from"./app-wordmark-nbjkzxwQ.js";import{L as pe,I as fe}from"./label-COUKWqE_.js";import{c as qe,u as Ze,a as X,P as Se}from"./index-1ol1-QWI.js";import{P as Qe}from"./index-OqI59zPb.js";var Xe=Object.defineProperty,H=(t,e)=>Xe(t,"name",{value:e,configurable:!0}),ie="Popover",[xe,qt]=qe(ie,[ve]),re=ve(),[et,U]=xe(ie),tt=H(t=>{const{__scopePopover:e,children:n,open:o,defaultOpen:s,onOpenChange:i,modal:l=!1}=t,c=re(e),a=m.useRef(null),[d,u]=m.useState(!1),[f,h]=Ze({prop:o,defaultProp:s??!1,onChange:i,caller:ie});return r.jsx(Ie,{...c,children:r.jsx(et,{scope:e,contentId:Me(),triggerRef:a,open:f,onOpenChange:h,onOpenToggle:m.useCallback(()=>h(p=>!p),[h]),hasCustomAnchor:d,onCustomAnchorAdd:m.useCallback(()=>u(!0),[]),onCustomAnchorRemove:m.useCallback(()=>u(!1),[]),modal:l,children:n})})},"Popover"),nt="PopoverTrigger",ot=m.forwardRef(H(function(e,n){const{__scopePopover:o,...s}=e,i=U(nt,o),l=re(o),c=be(n,i.triggerRef),a=r.jsx(Qe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":ce(i.open),...s,ref:c,onClick:X(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?a:r.jsx(Le,{asChild:!0,...l,children:a})},"PopoverTrigger")),Pe="PopoverPortal",[st,it]=xe(Pe,{forceMount:void 0}),rt=H(t=>{const{__scopePopover:e,forceMount:n,children:o,container:s}=t,i=U(Pe,e);return r.jsx(st,{scope:e,forceMount:n,children:r.jsx(Se,{present:n||i.open,children:r.jsx(Fe,{asChild:!0,container:s,children:o})})})},"PopoverPortal"),K="PopoverContent",ct=m.forwardRef(H(function(e,n){const o=it(K,e.__scopePopover),{forceMount:s=o.forceMount,...i}=e,l=U(K,e.__scopePopover);return r.jsx(Se,{present:s||l.open,children:l.modal?r.jsx(lt,{...i,ref:n}):r.jsx(ut,{...i,ref:n})})},"PopoverContent")),at=Ye("PopoverContent.RemoveScroll"),lt=m.forwardRef(H(function(e,n){const o=U(K,e.__scopePopover),s=m.useRef(null),i=be(n,s),l=m.useRef(!1);return m.useEffect(()=>{const c=s.current;if(c)return We(c)},[]),r.jsx(Ge,{as:at,allowPinchZoom:!0,children:r.jsx(we,{...e,ref:i,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:X(e.onCloseAutoFocus,c=>{c.preventDefault(),l.current||o.triggerRef.current?.focus()}),onPointerDownOutside:X(e.onPointerDownOutside,c=>{const a=c.detail.originalEvent,d=a.button===0&&a.ctrlKey===!0,u=a.button===2||d;l.current=u},{checkForDefaultPrevented:!1}),onFocusOutside:X(e.onFocusOutside,c=>c.preventDefault(),{checkForDefaultPrevented:!1})})})},"PopoverContentModal")),ut=m.forwardRef(H(function(e,n){const o=U(K,e.__scopePopover),s=m.useRef(!1),i=m.useRef(!1);return r.jsx(we,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:l=>{e.onCloseAutoFocus?.(l),l.defaultPrevented||(s.current||o.triggerRef.current?.focus(),l.preventDefault()),s.current=!1,i.current=!1},onInteractOutside:l=>{e.onInteractOutside?.(l),l.defaultPrevented||(s.current=!0,l.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const c=l.target;o.triggerRef.current?.contains(c)&&l.preventDefault(),l.detail.originalEvent.type==="focusin"&&i.current&&l.preventDefault()}})},"PopoverContentNonModal")),we=m.forwardRef(H(function(e,n){const{__scopePopover:o,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:l,disableOutsidePointerEvents:c,onEscapeKeyDown:a,onPointerDownOutside:d,onFocusOutside:u,onInteractOutside:f,...h}=e,p=U(K,o),g=re(o);return He(),r.jsx(ze,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:i,onUnmountAutoFocus:l,children:r.jsx(Be,{asChild:!0,disableOutsidePointerEvents:c,onInteractOutside:f,onEscapeKeyDown:a,onPointerDownOutside:d,onFocusOutside:u,onDismiss:()=>p.onOpenChange(!1),deferPointerDownOutside:!0,children:r.jsx(Ue,{"data-state":ce(p.open),role:"dialog",id:p.contentId,...g,...h,ref:n,style:{...h.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})},"PopoverContentImpl"));function ce(t){return t?"open":"closed"}H(ce,"getState");var dt=tt,pt=ot,ft=rt,ht=ct;function gt(t){const e=L.c(4);let n;e[0]!==t?({...n}=t,e[0]=t,e[1]=n):n=e[1];let o;return e[2]!==n?(o=r.jsx(dt,{"data-slot":"popover",...n}),e[2]=n,e[3]=o):o=e[3],o}function mt(t){const e=L.c(4);let n;e[0]!==t?({...n}=t,e[0]=t,e[1]=n):n=e[1];let o;return e[2]!==n?(o=r.jsx(pt,{"data-slot":"popover-trigger",...n}),e[2]=n,e[3]=o):o=e[3],o}function vt(t){const e=L.c(12);let n,o,s,i;e[0]!==t?({className:n,align:s,sideOffset:i,...o}=t,e[0]=t,e[1]=n,e[2]=o,e[3]=s,e[4]=i):(n=e[1],o=e[2],s=e[3],i=e[4]);const l=s===void 0?"center":s,c=i===void 0?4:i;let a;e[5]!==n?(a=me("bg-popover text-popover-foreground data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",n),e[5]=n,e[6]=a):a=e[6];let d;return e[7]!==l||e[8]!==o||e[9]!==c||e[10]!==a?(d=r.jsx(ft,{children:r.jsx(ht,{"data-slot":"popover-content",align:l,sideOffset:c,className:a,...o})}),e[7]=l,e[8]=o,e[9]=c,e[10]=a,e[11]=d):d=e[11],d}var ee={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},b={log(...t){this.enabled&&(t.push(Date.now()),ee.logger.log("[ActionCable]",...t))}};const J=()=>new Date().getTime(),q=t=>(J()-t)/1e3;class ae{constructor(e){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=e,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=J(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),b.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=J(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),b.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=J()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,b.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=J(),b.log("ConnectionMonitor recorded disconnect")}startPolling(){this.stopPolling(),this.poll()}stopPolling(){clearTimeout(this.pollTimeout)}poll(){this.pollTimeout=setTimeout((()=>{this.reconnectIfStale(),this.poll()}),this.getPollInterval())}getPollInterval(){const{staleThreshold:e,reconnectionBackoffRate:n}=this.constructor,o=Math.pow(1+n,Math.min(this.reconnectAttempts,10)),i=(this.reconnectAttempts===0?1:n)*Math.random();return e*1e3*o*(1+i)}reconnectIfStale(){this.connectionIsStale()&&(b.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${q(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?b.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${q(this.disconnectedAt)} s`):(b.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return q(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&q(this.disconnectedAt)<this.constructor.staleThreshold}visibilityDidChange(){document.visibilityState==="visible"&&setTimeout((()=>{(this.connectionIsStale()||!this.connection.isOpen())&&(b.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}}ae.staleThreshold=6;ae.reconnectionBackoffRate=.15;var ye={message_types:{welcome:"welcome",disconnect:"disconnect",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]};const{message_types:V,protocols:oe}=ye,bt=oe.slice(0,oe.length-1),he=[].indexOf;class le{constructor(e){this.open=this.open.bind(this),this.consumer=e,this.subscriptions=this.consumer.subscriptions,this.monitor=new ae(this),this.disconnected=!0}send(e){return this.isOpen()?(this.webSocket.send(JSON.stringify(e)),!0):!1}open(){if(this.isActive())return b.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{const e=[...oe,...this.consumer.subprotocols||[]];return b.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${e}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new ee.WebSocket(this.consumer.url,e),this.installEventHandlers(),this.monitor.start(),!0}}close({allowReconnect:e}={allowReconnect:!0}){if(e||this.monitor.stop(),this.isOpen())return this.webSocket.close()}reopen(){if(b.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(e){b.log("Failed to reopen WebSocket",e)}finally{b.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`),setTimeout(this.open,this.constructor.reopenDelay)}else return this.open()}getProtocol(){if(this.webSocket)return this.webSocket.protocol}isOpen(){return this.isState("open")}isActive(){return this.isState("open","connecting")}triedToReconnect(){return this.monitor.reconnectAttempts>0}isProtocolSupported(){return he.call(bt,this.getProtocol())>=0}isState(...e){return he.call(e,this.getState())>=0}getState(){if(this.webSocket){for(let e in ee.WebSocket)if(ee.WebSocket[e]===this.webSocket.readyState)return e.toLowerCase()}return null}installEventHandlers(){for(let e in this.events){const n=this.events[e].bind(this);this.webSocket[`on${e}`]=n}}uninstallEventHandlers(){for(let e in this.events)this.webSocket[`on${e}`]=function(){}}}le.reopenDelay=500;le.prototype.events={message(t){if(!this.isProtocolSupported())return;const{identifier:e,message:n,reason:o,reconnect:s,type:i}=JSON.parse(t.data);switch(this.monitor.recordMessage(),i){case V.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case V.disconnect:return b.log(`Disconnecting. Reason: ${o}`),this.close({allowReconnect:s});case V.ping:return null;case V.confirmation:return this.subscriptions.confirmSubscription(e),this.reconnectAttempted?(this.reconnectAttempted=!1,this.subscriptions.notify(e,"connected",{reconnected:!0})):this.subscriptions.notify(e,"connected",{reconnected:!1});case V.rejection:return this.subscriptions.reject(e);default:return this.subscriptions.notify(e,"received",n)}},open(){if(b.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return b.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(t){if(b.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){b.log("WebSocket onerror event")}};const St=function(t,e){if(e!=null)for(let n in e){const o=e[n];t[n]=o}return t};class xt{constructor(e,n={},o){this.consumer=e,this.identifier=JSON.stringify(n),St(this,o)}perform(e,n={}){return n.action=e,this.send(n)}send(e){return this.consumer.send({command:"message",identifier:this.identifier,data:JSON.stringify(e)})}unsubscribe(){return this.consumer.subscriptions.remove(this)}}class Pt{constructor(e){this.subscriptions=e,this.pendingSubscriptions=[]}guarantee(e){this.pendingSubscriptions.indexOf(e)==-1?(b.log(`SubscriptionGuarantor guaranteeing ${e.identifier}`),this.pendingSubscriptions.push(e)):b.log(`SubscriptionGuarantor already guaranteeing ${e.identifier}`),this.startGuaranteeing()}forget(e){b.log(`SubscriptionGuarantor forgetting ${e.identifier}`),this.pendingSubscriptions=this.pendingSubscriptions.filter((n=>n!==e))}startGuaranteeing(){this.stopGuaranteeing(),this.retrySubscribing()}stopGuaranteeing(){clearTimeout(this.retryTimeout)}retrySubscribing(){this.retryTimeout=setTimeout((()=>{this.subscriptions&&typeof this.subscriptions.subscribe=="function"&&this.pendingSubscriptions.map((e=>{b.log(`SubscriptionGuarantor resubscribing ${e.identifier}`),this.subscriptions.subscribe(e)}))}),500)}}class wt{constructor(e){this.consumer=e,this.guarantor=new Pt(this),this.subscriptions=[]}create(e,n){const o=e,s=typeof o=="object"?o:{channel:o},i=new xt(this.consumer,s,n);return this.add(i)}add(e){return this.subscriptions.push(e),this.consumer.ensureActiveConnection(),this.notify(e,"initialized"),this.subscribe(e),e}remove(e){return this.forget(e),this.findAll(e.identifier).length||this.sendCommand(e,"unsubscribe"),e}reject(e){return this.findAll(e).map((n=>(this.forget(n),this.notify(n,"rejected"),n)))}forget(e){return this.guarantor.forget(e),this.subscriptions=this.subscriptions.filter((n=>n!==e)),e}findAll(e){return this.subscriptions.filter((n=>n.identifier===e))}reload(){return this.subscriptions.map((e=>this.subscribe(e)))}notifyAll(e,...n){return this.subscriptions.map((o=>this.notify(o,e,...n)))}notify(e,n,...o){let s;return typeof e=="string"?s=this.findAll(e):s=[e],s.map((i=>typeof i[n]=="function"?i[n](...o):void 0))}subscribe(e){this.sendCommand(e,"subscribe")&&this.guarantor.guarantee(e)}confirmSubscription(e){b.log(`Subscription confirmed ${e}`),this.findAll(e).map((n=>this.guarantor.forget(n)))}sendCommand(e,n){const{identifier:o}=e;return this.consumer.send({command:n,identifier:o})}}class yt{constructor(e){this._url=e,this.subscriptions=new wt(this),this.connection=new le(this),this.subprotocols=[]}get url(){return Ct(this._url)}send(e){return this.connection.send(e)}connect(){return this.connection.open()}disconnect(){return this.connection.close({allowReconnect:!1})}ensureActiveConnection(){if(!this.connection.isActive())return this.connection.open()}addSubProtocol(e){this.subprotocols=[...this.subprotocols,e]}}function Ct(t){if(typeof t=="function"&&(t=t()),t&&!/^wss?:/i.test(t)){const e=document.createElement("a");return e.href=t,e.href=e.href,e.protocol=e.protocol.replace("http","ws"),e.href}else return t}function _t(t=Rt("url")||ye.default_mount_path){return new yt(t)}function Rt(t){const e=document.head.querySelector(`meta[name='action-cable-${t}']`);if(e)return e.getAttribute("content")}let ge;function At(){return ge??=_t(),ge}const jt=5e3,Ce="railwatch:live-paused";function Tt(t,e){const n=L.c(15);let o;n[0]!==e?(o={},n[0]=e,n[1]=o):o=n[1];const{only:s,onEvent:i}=o,[l,c]=m.useState(!1),[a,d]=m.useState(null),[u,f]=m.useState(null),[h,p]=m.useState(t);h!==t&&(p(t),c(!1),d(null),f(null));const[g,S]=m.useState(Dt),v=m.useRef(s),R=m.useRef(i),A=m.useRef(g);let w;n[2]!==i||n[3]!==s||n[4]!==g?(w=()=>{v.current=s,R.current=i,A.current=g},n[2]=i,n[3]=s,n[4]=g,n[5]=w):w=n[5],m.useEffect(w);const j=m.useRef(kt);let T;n[6]===Symbol.for("react.memo_cache_sentinel")?(T=function(x){A.current=x,localStorage.setItem(Ce,x?"1":"0"),S(x),j.current()},n[6]=T):T=n[6];const I=T;let D,y;n[7]!==t?(D=()=>{let C=!1,x=!1,E=!1,O=-1/0,N,F;const B=function(){x=!1,E=!0,O=Date.now(),se.reload({only:v.current,onCancelToken:G=>{F=()=>G.cancel()},onSuccess:()=>{C||f(Date.now())},onFinish:()=>{F=void 0,E=!1,$()}})};function $(){if(clearTimeout(N),N=void 0,C||!x||E||A.current||document.visibilityState!=="visible")return;const k=jt-(Date.now()-O);k>0?N=setTimeout($,k):B()}const M=function(){$()};document.addEventListener("visibilitychange",M),j.current=$;const W=At().subscriptions.create({channel:"EnvironmentChannel",id:t},{connected:()=>{C||c(!0)},disconnected:()=>{C||c(!1)},received:k=>{C||(d(Date.now()),R.current?.(k),x=!0,$())}});return()=>{C=!0,F?.(),clearTimeout(N),j.current=Ot,document.removeEventListener("visibilitychange",M),W.unsubscribe()}},y=[t],n[7]=t,n[8]=D,n[9]=y):(D=n[8],y=n[9]),m.useEffect(D,y);let _;return n[10]!==l||n[11]!==a||n[12]!==u||n[13]!==g?(_={connected:l,lastEventAt:a,lastRefreshedAt:u,paused:g,setPaused:I},n[10]=l,n[11]=a,n[12]=u,n[13]=g,n[14]=_):_=n[14],_}function Ot(){}function kt(){}function Dt(){return typeof window>"u"?!1:localStorage.getItem(Ce)==="1"}function Et(t){const e=L.c(46),{environmentId:n}=t;Ve();const{environment:o,telemetry_freshness:s}=te().props,{connected:i,lastEventAt:l,lastRefreshedAt:c,paused:a,setPaused:d}=Tt(n);let u;e[0]!==o?.last_seen_at||e[1]!==s?.received_at||e[2]!==l?(u=l!=null?new Date(l).toISOString():s?.received_at??o?.last_seen_at??null,e[0]=o?.last_seen_at,e[1]=s?.received_at,e[2]=l,e[3]=u):u=e[3];const f=u;let h,p,g,S,v;if(e[4]!==i||e[5]!==f||e[6]!==c||e[7]!==a||e[8]!==d){const I=c!=null?new Date(c).toISOString():null;p=ke;const D=a?"Resume live updates":"Pause live updates";let y;e[14]!==a||e[15]!==d?(y=()=>d(!a),e[14]=a,e[15]=d,e[16]=y):y=e[16];let _;e[17]===Symbol.for("react.memo_cache_sentinel")?(_=me(Oe({variant:"outline"}),"hover:bg-accent h-7 cursor-pointer gap-1.5 rounded-md font-mono text-[11px] tracking-wide uppercase"),e[17]=_):_=e[17];const C=i?f:null;let x;e[18]!==C?(x=r.jsx(Je,{lastSeenAt:C,thresholdMs:1e4}),e[18]=C,e[19]=x):x=e[19];const E=a?"Paused":i?"Live":"Disconnected";e[20]!==a||e[21]!==E||e[22]!==D||e[23]!==y||e[24]!==x?(v=r.jsx(De,{asChild:!0,children:r.jsxs("button",{type:"button","aria-pressed":a,"aria-label":D,onClick:y,className:_,children:[x,E]})}),e[20]=a,e[21]=E,e[22]=D,e[23]=y,e[24]=x,e[25]=v):v=e[25],h=Ee;let O;e[26]!==f?(O=f?`Telemetry received ${ne(f)}`:"No telemetry received yet",e[26]=f,e[27]=O):O=e[27],e[28]!==O?(S=r.jsx("p",{children:O}),e[28]=O,e[29]=S):S=e[29],g=I?`Page refreshed ${ne(I)}`:"No live refresh yet",e[4]=i,e[5]=f,e[6]=c,e[7]=a,e[8]=d,e[9]=h,e[10]=p,e[11]=g,e[12]=S,e[13]=v}else h=e[9],p=e[10],g=e[11],S=e[12],v=e[13];let R;e[30]!==g?(R=r.jsx("p",{children:g}),e[30]=g,e[31]=R):R=e[31];let A;e[32]!==s?(A=s?.processing_lag_seconds!=null&&r.jsxs("p",{children:["Ingest processing pending:"," ",Math.round(s.processing_lag_seconds),"s"]}),e[32]=s,e[33]=A):A=e[33];let w;e[34]!==s?(w=s?.aggregated_at&&r.jsxs("p",{children:["Charts updated ",ne(s.aggregated_at)]}),e[34]=s,e[35]=w):w=e[35];let j;e[36]!==h||e[37]!==S||e[38]!==R||e[39]!==A||e[40]!==w?(j=r.jsxs(h,{children:[S,R,A,w]}),e[36]=h,e[37]=S,e[38]=R,e[39]=A,e[40]=w,e[41]=j):j=e[41];let T;return e[42]!==p||e[43]!==v||e[44]!==j?(T=r.jsxs(p,{children:[v,j]}),e[42]=p,e[43]=v,e[44]=j,e[45]=T):T=e[45],T}const _e=[{value:"1h",label:"1 hour"},{value:"6h",label:"6 hours"},{value:"24h",label:"24 hours"},{value:"7d",label:"7 days"},{value:"30d",label:"30 days"}];function $t(t,e){const n={month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"};return`${new Date(t).toLocaleString(void 0,n)} – ${new Date(e).toLocaleString(void 0,n)}`}function Nt(){const t=L.c(8),{window:e,range:n}=te().props,o=e===void 0?"24h":e,s=Mt,i=It;let l;t[0]!==o||t[1]!==n?(l=o==="custom"&&n?$t(n.from,n.to):_e.find(f=>f.value===o)?.label??o,t[0]=o,t[1]=n,t[2]=l):l=t[2];const c=l,a=n?.from,d=n?.to;let u;return t[3]!==o||t[4]!==c||t[5]!==a||t[6]!==d?(u={window:o,from:a,to:d,set:s,setRange:i,label:c},t[3]=o,t[4]=c,t[5]=a,t[6]=d,t[7]=u):u=t[7],u}function It(t,e){const n=new URL(globalThis.location.href);n.searchParams.set("from",t),n.searchParams.set("to",e),n.searchParams.delete("window"),se.visit(n.toString(),{preserveScroll:!0,preserveState:!0})}function Mt(t){const e=new URL(globalThis.location.href);e.searchParams.set("window",t),e.searchParams.delete("from"),e.searchParams.delete("to"),se.visit(e.toString(),{preserveScroll:!0,preserveState:!0})}function Z(t){const e=new Date(t),n=o=>String(o).padStart(2,"0");return`${e.getFullYear()}-${n(e.getMonth()+1)}-${n(e.getDate())}T${n(e.getHours())}:${n(e.getMinutes())}`}function Q(t){const e=new Date(t);return e.setHours(0,0,0,0),e}const Lt=[{label:"Today",range:()=>[Q(new Date),new Date]},{label:"Yesterday",range:()=>{const t=Q(new Date);return[Q(new Date(t.getTime()-1440*60*1e3)),t]}},{label:"This week",range:()=>{const t=Q(new Date);return t.setDate(t.getDate()-t.getDay()),[t,new Date]}}];function Ft(){const t=L.c(48),{window:e,from:n,to:o,set:s,setRange:i,label:l}=Nt(),[c,a]=m.useState(!1);let d;t[0]!==n?(d=()=>Z(n??new Date(Date.now()-864e5).toISOString()),t[0]=n,t[1]=d):d=t[1];const[u,f]=m.useState(d);let h;t[2]!==o?(h=()=>Z(o??new Date().toISOString()),t[2]=o,t[3]=h):h=t[3];const[p,g]=m.useState(h);let S;t[4]!==i?(S=(P,z)=>{f(Z(P.toISOString())),g(Z(z.toISOString())),i(P.toISOString(),z.toISOString()),a(!1)},t[4]=i,t[5]=S):S=t[5];const v=S;let R;t[6]!==v||t[7]!==u||t[8]!==p?(R=()=>{const P=new Date(u),z=new Date(p);!Number.isNaN(P.getTime())&&!Number.isNaN(z.getTime())&&v(P,z)},t[6]=v,t[7]=u,t[8]=p,t[9]=R):R=t[9];const A=R;let w;t[10]!==s||t[11]!==e?(w=_e.map(P=>r.jsx(ue,{active:e===P.value,onClick:()=>s(P.value),"aria-label":P.label,children:P.value},P.value)),t[10]=s,t[11]=e,t[12]=w):w=t[12];const j=e==="custom";let T;t[13]===Symbol.for("react.memo_cache_sentinel")?(T=()=>a(!0),t[13]=T):T=t[13];let I;t[14]===Symbol.for("react.memo_cache_sentinel")?(I=r.jsx($e,{className:"size-3"}),t[14]=I):I=t[14];const D=e==="custom"?l:"Custom";let y;t[15]!==D?(y=r.jsx("span",{className:"hidden sm:inline",children:D}),t[15]=D,t[16]=y):y=t[16];let _;t[17]!==j||t[18]!==y?(_=r.jsx(mt,{asChild:!0,children:r.jsxs(ue,{active:j,onClick:T,"aria-label":"Custom range",className:"px-2",children:[I,y]})}),t[17]=j,t[18]=y,t[19]=_):_=t[19];let C;t[20]!==v?(C=Lt.map(P=>r.jsx(de,{type:"button",variant:"outline",size:"sm",onClick:()=>{const[z,Re]=P.range();v(z,Re)},children:P.label},P.label)),t[20]=v,t[21]=C):C=t[21];let x;t[22]!==C?(x=r.jsx("div",{className:"flex flex-wrap gap-1",children:C}),t[22]=C,t[23]=x):x=t[23];let E;t[24]===Symbol.for("react.memo_cache_sentinel")?(E=r.jsx(pe,{htmlFor:"window-picker-from",className:"text-xs",children:"From"}),t[24]=E):E=t[24];let O;t[25]===Symbol.for("react.memo_cache_sentinel")?(O=P=>f(P.target.value),t[25]=O):O=t[25];let N;t[26]!==u?(N=r.jsx(fe,{id:"window-picker-from",type:"datetime-local",value:u,onChange:O}),t[26]=u,t[27]=N):N=t[27];let F;t[28]===Symbol.for("react.memo_cache_sentinel")?(F=r.jsx(pe,{htmlFor:"window-picker-to",className:"text-xs",children:"To"}),t[28]=F):F=t[28];let B;t[29]===Symbol.for("react.memo_cache_sentinel")?(B=P=>g(P.target.value),t[29]=B):B=t[29];let $;t[30]!==p?($=r.jsx(fe,{id:"window-picker-to",type:"datetime-local",value:p,onChange:B}),t[30]=p,t[31]=$):$=t[31];let M;t[32]!==N||t[33]!==$?(M=r.jsxs("div",{className:"flex flex-col gap-2",children:[E,N,F,$]}),t[32]=N,t[33]=$,t[34]=M):M=t[34];let W;t[35]!==A?(W=r.jsx(de,{type:"button",size:"sm",onClick:A,children:"Apply"}),t[35]=A,t[36]=W):W=t[36];let k;t[37]!==x||t[38]!==M||t[39]!==W?(k=r.jsx(vt,{className:"w-72",align:"end",children:r.jsxs("div",{className:"flex flex-col gap-3",children:[x,M,W]})}),t[37]=x,t[38]=M,t[39]=W,t[40]=k):k=t[40];let G;t[41]!==c||t[42]!==_||t[43]!==k?(G=r.jsxs(gt,{open:c,onOpenChange:a,children:[_,k]}),t[41]=c,t[42]=_,t[43]=k,t[44]=G):G=t[44];let Y;return t[45]!==G||t[46]!==w?(Y=r.jsxs(Ke,{children:[w,G]}),t[45]=G,t[46]=w,t[47]=Y):Y=t[47],Y}function Zt(t){const e=L.c(18),{title:n,description:o,actions:s,withWindow:i}=t,l=i===void 0?!0:i,{environment:c}=te().props;let a;e[0]!==n?(a=r.jsx("h1",{className:"truncate text-xl font-semibold tracking-tight md:text-2xl",children:n}),e[0]=n,e[1]=a):a=e[1];let d;e[2]!==o?(d=o&&r.jsx("p",{className:"text-muted-foreground mt-0.5 text-sm",children:o}),e[2]=o,e[3]=d):d=e[3];let u;e[4]!==a||e[5]!==d?(u=r.jsxs("div",{className:"min-w-0",children:[a,d]}),e[4]=a,e[5]=d,e[6]=u):u=e[6];let f;e[7]!==c?(f=c&&r.jsx(Et,{environmentId:c.id}),e[7]=c,e[8]=f):f=e[8];let h;e[9]!==l?(h=l&&r.jsx(Ft,{}),e[9]=l,e[10]=h):h=e[10];let p;e[11]!==s||e[12]!==f||e[13]!==h?(p=r.jsxs("div",{className:"flex flex-wrap items-center gap-2 md:shrink-0 md:justify-end",children:[f,s,h]}),e[11]=s,e[12]=f,e[13]=h,e[14]=p):p=e[14];let g;return e[15]!==u||e[16]!==p?(g=r.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-start md:justify-between md:gap-4",children:[u,p]}),e[15]=u,e[16]=p,e[17]=g):g=e[17],g}function Qt(t){const e=L.c(18),{title:n,children:o,crumbs:s}=t;let i;e[0]!==s?(i=s===void 0?[]:s,e[0]=s,e[1]=i):i=e[1];const l=i,{environment:c}=te().props;let a;e[2]!==c?(a=c?[{title:c.application_name,href:Ae(c.application_id)},{title:c.name,href:je(c.application_id,c.id)}]:[],e[2]=c,e[3]=a):a=e[3];const d=a;let u;e[4]!==l||e[5]!==n?(u=l.length?l:[{title:n,href:"#"}],e[4]=l,e[5]=n,e[6]=u):u=e[6];let f;e[7]!==d||e[8]!==u?(f=[...d,...u],e[7]=d,e[8]=u,e[9]=f):f=e[9];const h=f,p=c?`${n} · ${c.application_name} ${c.name}`:n;let g;e[10]!==p?(g=r.jsx(Te,{title:p}),e[10]=p,e[11]=g):g=e[11];let S;e[12]!==o?(S=r.jsx("div",{className:"flex flex-1 flex-col gap-4 p-3 md:gap-5 md:p-6",children:o}),e[12]=o,e[13]=S):S=e[13];let v;return e[14]!==h||e[15]!==g||e[16]!==S?(v=r.jsxs(Ne,{breadcrumbs:h,children:[g,S]}),e[14]=h,e[15]=g,e[16]=S,e[17]=v):v=e[17],v}export{Qt as E,Zt as P,gt as a,mt as b,vt as c,Nt as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as ee,u as re,j as r,e as X,ai as Y,L as ie}from"./inertia-TViv6kNv.js";import{D as ne}from"./chart-panel-Cb4S_ej_.js";import{D as Z}from"./data-table-iv1bdF6u.js";import{F as se}from"./filter-bar-9SU5NrzX.js";import{P as oe,E as le}from"./env-layout-DrT8rO6P.js";import{u as ae,P as ce}from"./percentile-picker-gFZCXtdb.js";import{S as F}from"./sort-header-DpFzXblu.js";import{S as de}from"./sparkline-cell-C3-5vFkP.js";import{B as me}from"./badge-Daw4Hvr8.js";import{e as ue}from"./execution-path-CzgBUi5e.js";import{m as H,c as fe,w as he}from"./format-B9SDkrWj.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./empty-state-6j_0AaQQ.js";import"./app-wordmark-nbjkzxwQ.js";import"./app-layout-yh-sPWgK.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./checkbox-D3aRSsBj.js";import"./label-COUKWqE_.js";import"./segmented-h1VdDTqE.js";import"./arrow-up-DVtOGdVA.js";function te(t){const e=ee.c(3),{kind:l}=t;if(!l)return null;const o=l==="partial"?"secondary":l==="layout"?"outline":"default";let i;return e[0]!==l||e[1]!==o?(i=r.jsx(me,{variant:o,className:"font-mono",children:l}),e[0]=l,e[1]=o,e[2]=i):i=e[2],i}function Ye(t){const e=ee.c(81),{environment:l,window:o}=re().props,{percentile:i}=ae(),a=l.application_id,c=l.id;let q;e[0]!==a||e[1]!==c||e[2]!==t.dir||e[3]!==t.q||e[4]!==t.sort||e[5]!==o?(q=s=>X.visit(Y(a,c,{window:o,sort:s,dir:t.sort===s&&t.dir==="desc"?"asc":"desc",q:t.q||void 0}),{preserveState:!0}),e[0]=a,e[1]=c,e[2]=t.dir,e[3]=t.q,e[4]=t.sort,e[5]=o,e[6]=q):q=e[6];const n=q;let M;e[7]===Symbol.for("react.memo_cache_sentinel")?(M=r.jsx(oe,{title:"View renders",description:"Every template your app rendered, grouped by identifier.",actions:r.jsx(ce,{})}),e[7]=M):M=e[7];let d;e[8]!==t.series||e[9]!==i?(d=r.jsx(ne,{label:"Duration",data:t.series,percentile:i}),e[8]=t.series,e[9]=i,e[10]=d):d=e[10];let C;e[11]===Symbol.for("react.memo_cache_sentinel")?(C=[{key:"template",label:"Template"}],e[11]=C):C=e[11];let m;e[12]!==a||e[13]!==c||e[14]!==o?(m=s=>X.visit(Y(a,c,{window:o,q:s||void 0}),{preserveState:!0}),e[12]=a,e[13]=c,e[14]=o,e[15]=m):m=e[15];let u;e[16]!==t.q||e[17]!==m?(u=r.jsx(se,{value:t.q,fields:C,onChange:m,placeholder:"template:widgets/_row"}),e[16]=t.q,e[17]=m,e[18]=u):u=e[18];let O,D,E;e[19]===Symbol.for("react.memo_cache_sentinel")?(O={key:"id",header:"Template",grow:!0,cell:Ne},D={key:"kind",hideOnMobile:!0,header:"Kind",cell:Se},E={key:"trend",hideOnMobile:!0,header:"Trend",cell:be},e[19]=O,e[20]=D,e[21]=E):(O=e[19],D=e[20],E=e[21]);const $=t.sort==="count",A=t.dir==="asc"?"asc":"desc";let f;e[22]!==n?(f=()=>n("count"),e[22]=n,e[23]=f):f=e[23];let h;e[24]!==A||e[25]!==f||e[26]!==$?(h={key:"n",header:r.jsx(F,{label:"Count",active:$,dir:A,onClick:f}),align:"right",cell:ve},e[24]=A,e[25]=f,e[26]=$,e[27]=h):h=e[27];const W=t.sort==="avg",z=t.dir==="asc"?"asc":"desc";let x;e[28]!==n?(x=()=>n("avg"),e[28]=n,e[29]=x):x=e[29];let p;e[30]!==W||e[31]!==z||e[32]!==x?(p={key:"avg",hideOnMobile:!0,header:r.jsx(F,{label:"Avg",active:W,dir:z,onClick:x}),align:"right",cell:je},e[30]=W,e[31]=z,e[32]=x,e[33]=p):p=e[33];const G=t.sort===i,J=t.dir==="asc"?"asc":"desc";let y;e[34]!==i||e[35]!==n?(y=()=>n(i),e[34]=i,e[35]=n,e[36]=y):y=e[36];let _;e[37]!==i||e[38]!==G||e[39]!==J||e[40]!==y?(_=r.jsx(F,{label:i,active:G,dir:J,onClick:y}),e[37]=i,e[38]=G,e[39]=J,e[40]=y,e[41]=_):_=e[41];let k;e[42]!==i?(k=s=>r.jsx("span",{className:"font-semibold",children:H(s[i],2)}),e[42]=i,e[43]=k):k=e[43];let g;e[44]!==i||e[45]!==_||e[46]!==k?(g={key:i,header:_,align:"right",cell:k},e[44]=i,e[45]=_,e[46]=k,e[47]=g):g=e[47];const Q=t.sort==="max",U=t.dir==="asc"?"asc":"desc";let w;e[48]!==n?(w=()=>n("max"),e[48]=n,e[49]=w):w=e[49];let j;e[50]!==Q||e[51]!==U||e[52]!==w?(j={key:"max",hideOnMobile:!0,header:r.jsx(F,{label:"Max",active:Q,dir:U,onClick:w}),align:"right",cell:we},e[50]=Q,e[51]=U,e[52]=w,e[53]=j):j=e[53];let v;e[54]!==h||e[55]!==p||e[56]!==g||e[57]!==j?(v=[O,D,E,h,p,g,j],e[54]=h,e[55]=p,e[56]=g,e[57]=j,e[58]=v):v=e[58];let b;e[59]!==t.renders||e[60]!==v?(b=r.jsx(Z,{rows:t.renders,rowKey:Pe,empty:"No view renders in this window.",columns:v}),e[59]=t.renders,e[60]=v,e[61]=b):b=e[61];let B;e[62]===Symbol.for("react.memo_cache_sentinel")?(B=r.jsx("h2",{className:"text-sm font-semibold",children:"Slowest recent renders"}),e[62]=B):B=e[62];let K,T,I,L;e[63]===Symbol.for("react.memo_cache_sentinel")?(K={key:"when",header:"When",className:"w-40",cell:ke},T={key:"id",header:"Template",grow:!0,cell:_e},I={key:"kind",hideOnMobile:!0,header:"Kind",cell:ye},L={key:"layout",hideOnMobile:!0,header:"Layout",cell:pe},e[63]=K,e[64]=T,e[65]=I,e[66]=L):(K=e[63],T=e[64],I=e[65],L=e[66]);let S;e[67]!==a||e[68]!==c?(S={key:"in",hideOnMobile:!0,header:"In",cell:s=>s.execution_id?r.jsx(ie,{className:"font-mono text-xs hover:underline",href:ue({applicationId:a,environmentId:c,source:s.execution_source,executionId:s.execution_id}),children:s.execution_preview}):r.jsx("span",{className:"text-muted-foreground text-xs",children:"–"})},e[67]=a,e[68]=c,e[69]=S):S=e[69];let R;e[70]===Symbol.for("react.memo_cache_sentinel")?(R={key:"d",header:"Duration",align:"right",cell:xe},e[70]=R):R=e[70];let N;e[71]!==S?(N=[K,T,I,L,S,R],e[71]=S,e[72]=N):N=e[72];let P;e[73]!==t.slowest||e[74]!==N?(P=r.jsx(Z,{rows:t.slowest,rowKey:ge,columns:N}),e[73]=t.slowest,e[74]=N,e[75]=P):P=e[75];let V;return e[76]!==d||e[77]!==b||e[78]!==P||e[79]!==u?(V=r.jsxs(le,{title:"View renders",children:[M,d,u,b,B,P]}),e[76]=d,e[77]=b,e[78]=P,e[79]=u,e[80]=V):V=e[80],V}function xe(t){return H(t.duration,2)}function pe(t){return r.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:t.layout??""})}function ye(t){return r.jsx(te,{kind:t.kind})}function _e(t){return r.jsx("span",{className:"font-mono text-xs",children:t.identifier})}function ke(t){return r.jsx("span",{className:"text-xs tabular-nums",children:he(t.occurred_at)})}function ge(t){return t.id}function we(t){return H(t.max,2)}function je(t){return H(t.avg,2)}function ve(t){return fe(t.count)}function be(t){return r.jsx(de,{data:t.sparkline})}function Se(t){return r.jsx(te,{kind:t.kind})}function Ne(t){return r.jsx("span",{className:"font-mono text-xs",children:t.name})}function Pe(t){return t.group_hash}export{Ye as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as _,u as x,j as r,e as k,v as b}from"./inertia-TViv6kNv.js";import{V as v}from"./chart-panel-Cb4S_ej_.js";import{D as j}from"./data-table-iv1bdF6u.js";import{E as S}from"./empty-state-6j_0AaQQ.js";import{F as C}from"./filter-bar-9SU5NrzX.js";import{P as E,E as w}from"./env-layout-DrT8rO6P.js";import{S as M}from"./sparkline-cell-C3-5vFkP.js";import{c as f,m as O}from"./format-B9SDkrWj.js";import{L as P}from"./app-layout-yh-sPWgK.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function ae(t){const e=_.c(19),{environment:y,window:h}=x().props,u=y.application_id,d=y.id;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=r.jsx(E,{title:"Cache",description:"Rails.cache reads, writes, and hit rates by key shape (ids collapsed)."}),e[0]=n):n=e[0];let i;e[1]!==t.series?(i=r.jsx(v,{legend:"cache",label:"Cache ops",seriesLabel:"Cache ops",data:t.series}),e[1]=t.series,e[2]=i):i=e[2];let l;e[3]===Symbol.for("react.memo_cache_sentinel")?(l=[{key:"store",label:"Store"}],e[3]=l):l=e[3];let s;e[4]!==u||e[5]!==d||e[6]!==h?(s=g=>k.visit(b(u,d,{window:h,q:g||void 0}),{preserveState:!0}),e[4]=u,e[5]=d,e[6]=h,e[7]=s):s=e[7];let a;e[8]!==t.q||e[9]!==s?(a=r.jsx(C,{value:t.q,fields:l,onChange:s,placeholder:"store:MemoryStore"}),e[8]=t.q,e[9]=s,e[10]=a):a=e[10];let m,c;e[11]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx(S,{icon:P,title:"No cache activity in this window",description:"Cache reads and writes instrumented by the gem appear here."}),c=[{key:"k",header:"Store · key",cell:F},{key:"trend",hideOnMobile:!0,header:"Trend",cell:D},{key:"n",header:"Ops",align:"right",cell:R},{key:"h",header:"Hits",align:"right",cell:N},{key:"m",hideOnMobile:!0,header:"Misses",align:"right",cell:H},{key:"r",hideOnMobile:!0,header:"Hit rate",align:"right",cell:L},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:q}],e[11]=m,e[12]=c):(m=e[11],c=e[12]);let o;e[13]!==t.keys?(o=r.jsx(j,{rows:t.keys,rowKey:T,empty:m,columns:c}),e[13]=t.keys,e[14]=o):o=e[14];let p;return e[15]!==i||e[16]!==a||e[17]!==o?(p=r.jsxs(w,{title:"Cache",children:[n,i,a,o]}),e[15]=i,e[16]=a,e[17]=o,e[18]=p):p=e[18],p}function q(t){return O(t.avg,3)}function L(t){return t.hit_rate==null?"–":r.jsxs("span",{className:t.hit_rate<50?"text-amber-600":"",children:[t.hit_rate,"%"]})}function H(t){return f(t.misses)}function N(t){return f(t.hits)}function R(t){return f(t.count)}function D(t){return r.jsx(M,{data:t.sparkline})}function F(t){return r.jsx("span",{className:"font-mono text-xs",children:t.key})}function T(t){return t.group_hash}export{ae as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as le,u as ae,j as r,e as oe,ab as ne,a1 as ce,L as de}from"./inertia-TViv6kNv.js";import{C as me}from"./chart-hover-Vy52H4uD.js";import{V as ue,D as fe}from"./chart-panel-Cb4S_ej_.js";import{D as he}from"./data-table-iv1bdF6u.js";import{E as xe}from"./empty-state-6j_0AaQQ.js";import{F as pe}from"./filter-bar-9SU5NrzX.js";import{P as ye,E as ge}from"./env-layout-DrT8rO6P.js";import{u as ve,P as be}from"./percentile-picker-gFZCXtdb.js";import{S as ke,H as je}from"./app-layout-yh-sPWgK.js";import{S as M}from"./sort-header-DpFzXblu.js";import{S as _e}from"./sparkline-cell-C3-5vFkP.js";import{m as re,c as $,p as qe}from"./format-B9SDkrWj.js";import"./series-chart-DaFPefku.js";import"./chart-B14-N9g7.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";import"./arrow-up-DVtOGdVA.js";function ot(t){const e=le.c(95),{environment:se,window:a}=ae().props,{percentile:o}=ve(),n=se.application_id,c=se.id;let O;e[0]!==n||e[1]!==c||e[2]!==t.dir||e[3]!==t.q||e[4]!==t.sort||e[5]!==a?(O=s=>oe.visit(ne(n,c,{window:a,sort:t.sort,dir:t.dir,q:t.q||void 0,...s}),{preserveState:!0}),e[0]=n,e[1]=c,e[2]=t.dir,e[3]=t.q,e[4]=t.sort,e[5]=a,e[6]=O):O=e[6];const d=O;let H;e[7]!==t.dir||e[8]!==t.sort||e[9]!==d?(H=s=>d({sort:s,dir:t.sort===s&&t.dir==="desc"?"asc":"desc"}),e[7]=t.dir,e[8]=t.sort,e[9]=d,e[10]=H):H=e[10];const i=H;let N;e[11]!==n||e[12]!==c||e[13]!==a?(N=s=>ce(n,c,s.group_hash,{window:a}),e[11]=n,e[12]=c,e[13]=a,e[14]=N):N=e[14];const l=N;let D;e[15]===Symbol.for("react.memo_cache_sentinel")?(D=r.jsx(ye,{title:"Requests",description:"Every route your app served, with error rates and percentiles.",actions:r.jsxs(r.Fragment,{children:[r.jsx(ke,{page:"requests"}),r.jsx(be,{})]})}),e[15]=D):D=e[15];let L;e[16]===Symbol.for("react.memo_cache_sentinel")?(L={key:"method",label:"Method",options:["GET","POST","PUT","PATCH","DELETE"]},e[16]=L):L=e[16];let A;e[17]===Symbol.for("react.memo_cache_sentinel")?(A=[L,{key:"status",label:"Status",options:["2xx","3xx","4xx","5xx"]},{key:"route",label:"Route"}],e[17]=A):A=e[17];let m;e[18]!==d?(m=s=>d({q:s||void 0}),e[18]=d,e[19]=m):m=e[19];let u;e[20]!==t.q||e[21]!==m?(u=r.jsx(pe,{value:t.q,fields:A,onChange:m,placeholder:"method:GET status:5xx route:/widgets"}),e[20]=t.q,e[21]=m,e[22]=u):u=e[22];let f;e[23]!==t.deploys||e[24]!==t.series?(f=r.jsx(ue,{label:"Requests",data:t.series,deploys:t.deploys}),e[23]=t.deploys,e[24]=t.series,e[25]=f):f=e[25];let h;e[26]!==t.deploys||e[27]!==t.series||e[28]!==o?(h=r.jsx(fe,{label:"Latency",data:t.series,deploys:t.deploys,percentile:o}),e[26]=t.deploys,e[27]=t.series,e[28]=o,e[29]=h):h=e[29];let x;e[30]!==f||e[31]!==h?(x=r.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[f,h]}),e[30]=f,e[31]=h,e[32]=x):x=e[32];let F;e[33]===Symbol.for("react.memo_cache_sentinel")?(F=r.jsx(xe,{icon:je,title:"No requests in this window",description:"HTTP requests to your app appear here as they're reported."}),e[33]=F):F=e[33];let p;e[34]!==l?(p={onOpen:(s,ie)=>ie?.newTab?globalThis.window.open(l(s),"_blank"):oe.visit(l(s))},e[34]=l,e[35]=p):p=e[35];let y;e[36]!==l?(y={key:"name",header:"Route",grow:!0,cell:s=>r.jsx(de,{className:"font-mono text-xs hover:underline",href:l(s),title:s.name,children:s.name})},e[36]=l,e[37]=y):y=e[37];let K,V,B;e[38]===Symbol.for("react.memo_cache_sentinel")?(K={key:"trend",hideOnMobile:!0,header:"Trend",cell:Me},V={key:"ok",hideOnMobile:!0,header:"2xx",align:"right",cell:Re},B={key:"4xx",hideOnMobile:!0,header:"4xx",align:"right",cell:Ce},e[38]=K,e[39]=V,e[40]=B):(K=e[38],V=e[39],B=e[40]);const z=t.sort==="errors",I=t.dir==="asc"?"asc":"desc";let g;e[41]!==i?(g=()=>i("errors"),e[41]=i,e[42]=g):g=e[42];let v;e[43]!==z||e[44]!==I||e[45]!==g?(v={key:"5xx",header:r.jsx(M,{label:"5xx",active:z,dir:I,onClick:g}),align:"right",cell:Te},e[43]=z,e[44]=I,e[45]=g,e[46]=v):v=e[46];const J=t.sort==="count",Q=t.dir==="asc"?"asc":"desc";let b;e[47]!==i?(b=()=>i("count"),e[47]=i,e[48]=b):b=e[48];let k;e[49]!==J||e[50]!==Q||e[51]!==b?(k={key:"total",header:r.jsx(M,{label:"Total",active:J,dir:Q,onClick:b}),align:"right",cell:we},e[49]=J,e[50]=Q,e[51]=b,e[52]=k):k=e[52];let G;e[53]===Symbol.for("react.memo_cache_sentinel")?(G={key:"err",hideOnMobile:!0,header:"Error %",align:"right",cell:Ee},e[53]=G):G=e[53];const W=t.sort==="avg",X=t.dir==="asc"?"asc":"desc";let j;e[54]!==i?(j=()=>i("avg"),e[54]=i,e[55]=j):j=e[55];let _;e[56]!==W||e[57]!==X||e[58]!==j?(_={key:"avg",hideOnMobile:!0,header:r.jsx(M,{label:"Avg",active:W,dir:X,onClick:j}),align:"right",cell:Se},e[56]=W,e[57]=X,e[58]=j,e[59]=_):_=e[59];const Y=t.sort===o,Z=t.dir==="asc"?"asc":"desc";let q;e[60]!==o||e[61]!==i?(q=()=>i(o),e[60]=o,e[61]=i,e[62]=q):q=e[62];let P;e[63]!==o||e[64]!==Y||e[65]!==Z||e[66]!==q?(P=r.jsx(M,{label:o,active:Y,dir:Z,onClick:q}),e[63]=o,e[64]=Y,e[65]=Z,e[66]=q,e[67]=P):P=e[67];let S;e[68]!==o?(S=s=>r.jsx("span",{className:"font-semibold",children:re(s[o])}),e[68]=o,e[69]=S):S=e[69];let E;e[70]!==o||e[71]!==P||e[72]!==S?(E={key:o,header:P,align:"right",cell:S},e[70]=o,e[71]=P,e[72]=S,e[73]=E):E=e[73];const ee=t.sort==="max",te=t.dir==="asc"?"asc":"desc";let w;e[74]!==i?(w=()=>i("max"),e[74]=i,e[75]=w):w=e[75];let T;e[76]!==ee||e[77]!==te||e[78]!==w?(T={key:"max",hideOnMobile:!0,header:r.jsx(M,{label:"Max",active:ee,dir:te,onClick:w}),align:"right",cell:Pe},e[76]=ee,e[77]=te,e[78]=w,e[79]=T):T=e[79];let C;e[80]!==y||e[81]!==v||e[82]!==k||e[83]!==_||e[84]!==E||e[85]!==T?(C=[y,K,V,B,v,k,G,_,E,T],e[80]=y,e[81]=v,e[82]=k,e[83]=_,e[84]=E,e[85]=T,e[86]=C):C=e[86];let R;e[87]!==t.routes||e[88]!==p||e[89]!==C?(R=r.jsx(he,{rows:t.routes,rowKey:He,empty:F,hoverKey:Oe,keyboardNav:p,columns:C}),e[87]=t.routes,e[88]=p,e[89]=C,e[90]=R):R=e[90];let U;return e[91]!==x||e[92]!==R||e[93]!==u?(U=r.jsx(ge,{title:"Requests",children:r.jsxs(me,{children:[D,u,x,R]})}),e[91]=x,e[92]=R,e[93]=u,e[94]=U):U=e[94],U}function Pe(t){return re(t.max)}function Se(t){return re(t.avg)}function Ee(t){return qe(t.errors,t.count)}function we(t){return $(t.count)}function Te(t){return r.jsx("span",{className:t.errors?"text-destructive":"",children:$(t.errors)})}function Ce(t){return $(t.client_errors)}function Re(t){return $(t.count-t.errors-t.client_errors)}function Me(t){return r.jsx(_e,{data:t.sparkline,hoverKey:t.group_hash})}function Oe(t){return t.group_hash}function He(t){return t.group_hash}export{ot as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,u as C,j as n,ay as D,e as R,L as H,i as K}from"./inertia-TViv6kNv.js";import{D as T}from"./data-table-iv1bdF6u.js";import{E as W}from"./empty-state-6j_0AaQQ.js";import{O as I}from"./origin-identity-6q1-CBts.js";import{P as A,E as F}from"./env-layout-DrT8rO6P.js";import{R as J}from"./relative-time-IOOgl5n2.js";import{S as Q}from"./status-badge-8jVV-LA4.js";import{B as $}from"./badge-Daw4Hvr8.js";import{m as P,a as q,w as z}from"./format-B9SDkrWj.js";import{x as G}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./tenant-path-G-6u9A-o.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./app-wordmark-nbjkzxwQ.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function Re(t){const e=B.c(42),{environment:M,range:a,window:l}=C().props,s=M.application_id,i=M.id;let k;e[0]!==s||e[1]!==i?(k=r=>D(s,i,r.execution_id),e[0]=s,e[1]=i,e[2]=k):k=e[2];const x=k;let _;e[3]===Symbol.for("react.memo_cache_sentinel")?(_=n.jsx(A,{title:"Scheduled tasks",description:"Solid Queue recurring tasks from config/recurring.yml: runs, failures, and missed schedules."}),e[3]=_):_=e[3];let o;e[4]!==t.missed?(o=t.missed.length>0&&n.jsx("div",{className:"flex flex-wrap gap-2",children:t.missed.map(de)}),e[4]=t.missed,e[5]=o):o=e[5];let y,g;e[6]===Symbol.for("react.memo_cache_sentinel")?(y=n.jsx(W,{icon:G,title:"No scheduled task has run in this window",description:"Recurring and scheduled job runs appear here as they execute."}),g=[{key:"k",header:"Task",cell:oe},{key:"s",header:"Schedule",cell:le},{key:"next",hideOnMobile:!0,header:"Next run",cell:ae},{key:"n",header:"Runs",align:"right",cell:ie},{key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:se},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:re},{key:"last",header:"Last run",align:"right",cell:ne}],e[6]=y,e[7]=g):(y=e[6],g=e[7]);let c;e[8]!==t.tasks?(c=n.jsx(T,{rows:t.tasks,rowKey:ce,empty:y,columns:g}),e[8]=t.tasks,e[9]=c):c=e[9];let j;e[10]===Symbol.for("react.memo_cache_sentinel")?(j=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent runs"}),e[10]=j):j=e[10];let d,u;e[11]!==x?(d=r=>R.visit(x(r)),u={onOpen:(r,L)=>L?.newTab?window.open(x(r),"_blank"):R.visit(x(r))},e[11]=x,e[12]=d,e[13]=u):(d=e[12],u=e[13]);let w,b,v,O;e[14]===Symbol.for("react.memo_cache_sentinel")?(O={key:"when",header:"When",cell:ee},w={key:"k",header:"Task",cell:Z},b={key:"job",hideOnMobile:!0,header:"Job",cell:Y},v={key:"o",header:"Outcome",cell:X},e[14]=w,e[15]=b,e[16]=v,e[17]=O):(w=e[14],b=e[15],v=e[16],O=e[17]);let m;e[18]!==s||e[19]!==i||e[20]!==a||e[21]!==l?(m={key:"user",hideOnMobile:!0,header:"Origin user",cell:r=>n.jsx(I,{...r,applicationId:s,environmentId:i,kind:"user",range:a,window:l})},e[18]=s,e[19]=i,e[20]=a,e[21]=l,e[22]=m):m=e[22];let h;e[23]!==s||e[24]!==i||e[25]!==a||e[26]!==l?(h={key:"tenant",hideOnMobile:!0,header:"Origin tenant",cell:r=>n.jsx(I,{...r,applicationId:s,environmentId:i,kind:"tenant",range:a,window:l})},e[23]=s,e[24]=i,e[25]=a,e[26]=l,e[27]=h):h=e[27];let S,N;e[28]===Symbol.for("react.memo_cache_sentinel")?(S={key:"d",hideOnMobile:!0,header:"Duration",align:"right",cell:V},N={key:"ex",hideOnMobile:!0,header:"Exception",cell:U},e[28]=S,e[29]=N):(S=e[28],N=e[29]);let f;e[30]!==m||e[31]!==h?(f=[O,w,b,v,m,h,S,N],e[30]=m,e[31]=h,e[32]=f):f=e[32];let p;e[33]!==t.runs||e[34]!==f||e[35]!==d||e[36]!==u?(p=n.jsx(T,{rows:t.runs,rowKey:te,onRowClick:d,keyboardNav:u,columns:f}),e[33]=t.runs,e[34]=f,e[35]=d,e[36]=u,e[37]=p):p=e[37];let E;return e[38]!==p||e[39]!==o||e[40]!==c?(E=n.jsxs(F,{title:"Scheduled tasks",children:[_,o,c,j,p]}),e[38]=p,e[39]=o,e[40]=c,e[41]=E):E=e[41],E}function U(t){return n.jsx("span",{className:"text-destructive line-clamp-1 text-xs",children:t.exception_preview??""})}function V(t){return P(t.duration)}function X(t){return n.jsx(Q,{outcome:t.outcome})}function Y(t){return n.jsx("span",{className:"font-mono text-xs",children:t.name})}function Z(t){return n.jsx("span",{className:"font-mono text-xs",children:t.task_key})}function ee(t){return n.jsx("span",{className:"text-xs",children:z(t.occurred_at)})}function te(t){return t.execution_id}function ne(t){return q(t.last_run_at)}function re(t){return P(t.avg)}function se(t){return n.jsx("span",{className:t.failed?"text-destructive":"",children:t.failed})}function ie(t){return t.runs}function ae(t){return n.jsx("span",{className:"text-muted-foreground text-xs",children:t.next_run_at?n.jsx(J,{iso:t.next_run_at}):"–"})}function le(t){return n.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:t.schedule??"–"})}function oe(t){return n.jsx("span",{className:"font-mono text-xs",children:t.task_key})}function ce(t){return t.task_key}function de(t){return n.jsx(H,{href:K(t.id),children:n.jsxs($,{variant:"destructive",children:[t.key," · ",t.title]})},t.id)}export{Re as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as D,u as P,j as i,t as L,e as A,L as B}from"./inertia-TViv6kNv.js";import{D as M}from"./data-table-iv1bdF6u.js";import{E as O}from"./empty-state-6j_0AaQQ.js";import{P as F,E as H}from"./env-layout-DrT8rO6P.js";import{c as R,m as j,w as K}from"./format-B9SDkrWj.js";import{B as S}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function fe(t){const e=D.c(26),{environment:E}=P().props,N=E.application_id,w=E.id;let c;e[0]!==N||e[1]!==w?(c=n=>n.execution_id?L(N,w,n.execution_id):null,e[0]=N,e[1]=w,e[2]=c):c=e[2];const r=c;let m;e[3]===Symbol.for("react.memo_cache_sentinel")?(m=i.jsx(F,{title:"Notifications",description:"ActionMailer/Noticed deliveries, grouped by notifier and delivery method."}),e[3]=m):m=e[3];let u,f;e[4]===Symbol.for("react.memo_cache_sentinel")?(u=i.jsx(O,{icon:S,title:"No notifications in this window",description:"Notifications delivered by your app appear here as they're sent."}),f=[{key:"n",header:"Notifier",cell:U},{key:"c",hideOnMobile:!0,header:"Count",align:"right",cell:Q},{key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:J},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:G},{key:"p95",header:"p95",align:"right",cell:z}],e[4]=u,e[5]=f):(u=e[4],f=e[5]);let o;e[6]!==t.groups?(o=i.jsx(M,{rows:t.groups,rowKey:V,empty:u,columns:f}),e[6]=t.groups,e[7]=o):o=e[7];let d;e[8]===Symbol.for("react.memo_cache_sentinel")?(d=i.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[8]=d):d=e[8];let p;e[9]===Symbol.for("react.memo_cache_sentinel")?(p=i.jsx(O,{icon:S,title:"No notifications in this window",description:"Notifications delivered by your app appear here as they're sent."}),e[9]=p):p=e[9];let l;e[10]!==r?(l={onOpen:(n,v)=>{const k=r(n);k&&(v?.newTab?window.open(k,"_blank"):A.visit(k))}},e[10]=r,e[11]=l):l=e[11];let h,y,_,x,g;e[12]===Symbol.for("react.memo_cache_sentinel")?(x={key:"when",header:"When",cell:W},g={key:"n",header:"Notifier",cell:I},h={key:"dm",hideOnMobile:!0,header:"Delivery method",cell:C},y={key:"f",hideOnMobile:!0,header:"Failed",cell:q},_={key:"d",header:"Duration",align:"right",cell:T},e[12]=h,e[13]=y,e[14]=_,e[15]=x,e[16]=g):(h=e[12],y=e[13],_=e[14],x=e[15],g=e[16]);let s;e[17]!==r?(s=[x,g,h,y,_,{key:"in",hideOnMobile:!0,header:"In",cell:n=>{const v=r(n);return v?i.jsx(B,{className:"font-mono text-xs hover:underline",href:v,children:n.execution_preview}):null}}],e[17]=r,e[18]=s):s=e[18];let a;e[19]!==t.recent||e[20]!==s||e[21]!==l?(a=i.jsx(M,{rows:t.recent,rowKey:$,empty:p,keyboardNav:l,columns:s}),e[19]=t.recent,e[20]=s,e[21]=l,e[22]=a):a=e[22];let b;return e[23]!==a||e[24]!==o?(b=i.jsxs(H,{title:"Notifications",children:[m,o,d,a]}),e[23]=a,e[24]=o,e[25]=b):b=e[25],b}function T(t){return j(t.duration,3)}function q(t){return t.failed?"yes":""}function C(t){return t.delivery_method}function I(t){return i.jsx("span",{className:"font-mono text-xs",children:t.notifier})}function W(t){return i.jsx("span",{className:"text-xs",children:K(t.occurred_at)})}function $(t){return t.id}function z(t){return j(t.p95,3)}function G(t){return j(t.avg,3)}function J(t){return R(t.errors)}function Q(t){return R(t.count)}function U(t){return i.jsx("span",{className:"font-mono text-xs",children:t.name})}function V(t){return t.group_hash}export{fe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as M,u as T,j as l,L as N,G as O}from"./inertia-TViv6kNv.js";import{D as $}from"./data-table-iv1bdF6u.js";import{E as D}from"./empty-state-6j_0AaQQ.js";import{P as F,E as H}from"./env-layout-DrT8rO6P.js";import{R as I}from"./relative-time-IOOgl5n2.js";import{S as R,a as C}from"./stat-s4RpOS9w.js";import{c as d,p as G,m as K}from"./format-B9SDkrWj.js";import{y as W}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./arrow-up-DVtOGdVA.js";import"./checkbox-D3aRSsBj.js";function ue(i){const e=M.c(40),{environment:A,window:b}=T().props,S=A.application_id,k=A.id,t=i.summary;let h;e[0]===Symbol.for("react.memo_cache_sentinel")?(h=l.jsx(F,{title:"Profiles",description:"Sampled stack profiles, grouped by the execution they profiled."}),e[0]=h):h=e[0];let o;e[1]!==t.profiles?(o=d(t.profiles),e[1]=t.profiles,e[2]=o):o=e[2];let s;e[3]!==o?(s=l.jsx(R,{label:"Profiles",value:o}),e[3]=o,e[4]=s):s=e[4];let r;e[5]!==t.executions||e[6]!==t.profiled?(r=G(t.profiled,t.executions),e[5]=t.executions,e[6]=t.profiled,e[7]=r):r=e[7];let x;e[8]!==t.profiled?(x=d(t.profiled),e[8]=t.profiled,e[9]=x):x=e[9];let _;e[10]!==t.executions?(_=d(t.executions),e[10]=t.executions,e[11]=_):_=e[11];const w=`${x} of ${_}`;let a;e[12]!==r||e[13]!==w?(a=l.jsx(R,{label:"Executions profiled",value:r,hint:w}),e[12]=r,e[13]=w,e[14]=a):a=e[14];let n;e[15]!==t.avg_samples?(n=d(t.avg_samples),e[15]=t.avg_samples,e[16]=n):n=e[16];let m;e[17]!==n?(m=l.jsx(R,{label:"Avg samples",value:n}),e[17]=n,e[18]=m):m=e[18];let p;e[19]!==s||e[20]!==a||e[21]!==m?(p=l.jsxs(C,{children:[s,a,m]}),e[19]=s,e[20]=a,e[21]=m,e[22]=p):p=e[22];let g;e[23]===Symbol.for("react.memo_cache_sentinel")?(g=l.jsx(D,{icon:W,title:"No profiles in this window",description:"Set RAILWATCH_PROFILE_SAMPLE_RATE in the app to profile slow executions."}),e[23]=g):g=e[23];let f;e[24]!==S||e[25]!==k||e[26]!==b?(f={key:"name",header:"Execution",className:"max-w-0",cell:L=>l.jsx(N,{href:O(S,k,L.profile_id,{window:b}),className:"block truncate font-mono text-xs hover:underline",children:L.name??L.group_hash})},e[24]=S,e[25]=k,e[26]=b,e[27]=f):f=e[27];let y,v,j,E;e[28]===Symbol.for("react.memo_cache_sentinel")?(y={key:"n",header:"Profiles",align:"right",cell:J},v={key:"avg",header:"Avg duration",align:"right",cell:B},j={key:"samples",hideOnMobile:!0,header:"Max samples",align:"right",cell:z},E={key:"last",hideOnMobile:!0,header:"Last seen",align:"right",cell:q},e[28]=y,e[29]=v,e[30]=j,e[31]=E):(y=e[28],v=e[29],j=e[30],E=e[31]);let c;e[32]!==f?(c=[f,y,v,j,E],e[32]=f,e[33]=c):c=e[33];let u;e[34]!==i.profiles||e[35]!==c?(u=l.jsx($,{rows:i.profiles,rowKey:Q,empty:g,columns:c}),e[34]=i.profiles,e[35]=c,e[36]=u):u=e[36];let P;return e[37]!==p||e[38]!==u?(P=l.jsxs(H,{title:"Profiles",children:[h,p,u]}),e[37]=p,e[38]=u,e[39]=P):P=e[39],P}function q(i){return l.jsx(I,{iso:i.last_seen_at})}function z(i){return d(i.max_samples)}function B(i){return K(i.avg_duration)}function J(i){return d(i.count)}function Q(i){return i.group_hash}export{ue 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-TViv6kNv.js";import{V as se,D as ne}from"./chart-panel-Cb4S_ej_.js";import{D as ee}from"./data-table-iv1bdF6u.js";import{E as ie}from"./empty-state-6j_0AaQQ.js";import{F as _e}from"./filter-bar-9SU5NrzX.js";import{P as ke,E as je}from"./env-layout-DrT8rO6P.js";import{S as ce}from"./sparkline-cell-C3-5vFkP.js";import{S as ye}from"./status-badge-8jVV-LA4.js";import{c as f,u as de,p as te,m as q,w as be}from"./format-B9SDkrWj.js";import{p as me,C as Ne,a as we}from"./app-layout-yh-sPWgK.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.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(qe)]}),[["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 qe(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 Tt(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:"request",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:"request",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 D;e[34]===Symbol.for("react.memo_cache_sentinel")?(D=[{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]=D):D=e[34];let w;e[35]!==t.models?(w=l.jsx(ee,{rows:t.models,rowKey:ct,empty:oe,columns:D}),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 E;e[39]===Symbol.for("react.memo_cache_sentinel")?(E=l.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[39]=E):E=e[39];let P,R;e[40]===Symbol.for("react.memo_cache_sentinel")?(P={key:"model",label:"Model"},R={key:"provider",label:"Provider"},e[40]=P,e[41]=R):(P=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=[P,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",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:Pe},G={key:"cost",header:"Cost",align:"right",cell:Ee},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:De},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,E,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 De(t){return l.jsx(Fe,{call:t})}function Ee(t){return t.cost===null&&t.operation!=="tool"?l.jsx("span",{className:"text-muted-foreground",title:"No registry pricing",children:"unpriced"}):de(t.cost)}function Pe(t){return q(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 q(t.max)}function Ve(t){return l.jsx("span",{className:"font-semibold",children:q(t.p95)})}function He(t){return q(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 q(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{Tt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as U,u as V,j as o,e as X,ah as Y,L as Z}from"./inertia-TViv6kNv.js";import{D as ee}from"./chart-panel-Cb4S_ej_.js";import{D as Q}from"./data-table-iv1bdF6u.js";import{P as te,E as ne}from"./env-layout-DrT8rO6P.js";import{u as oe,P as re}from"./percentile-picker-gFZCXtdb.js";import{S as L}from"./sort-header-DpFzXblu.js";import{S as se}from"./sparkline-cell-C3-5vFkP.js";import{B as ie}from"./badge-Daw4Hvr8.js";import{e as ce}from"./execution-path-CzgBUi5e.js";import{m as G,c as J,w as ae}from"./format-B9SDkrWj.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./empty-state-6j_0AaQQ.js";import"./app-layout-yh-sPWgK.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./checkbox-D3aRSsBj.js";import"./label-COUKWqE_.js";import"./segmented-h1VdDTqE.js";import"./arrow-up-DVtOGdVA.js";function le(t){const e=U.c(3),{outcome:c}=t,a=c==="rollback"?"destructive":c==="restart"?"secondary":c==="commit"?"outline":"secondary",n=c||"open";let s;return e[0]!==n||e[1]!==a?(s=o.jsx(ie,{variant:a,className:"font-mono",children:n}),e[0]=n,e[1]=a,e[2]=s):s=e[2],s}function Fe(t){const e=U.c(70),{environment:c,window:a}=V().props,{percentile:n}=oe(),s=c.application_id,l=c.id;let N;e[0]!==s||e[1]!==l||e[2]!==t.dir||e[3]!==t.sort||e[4]!==a?(N=i=>X.visit(Y(s,l,{window:a,sort:i,dir:t.sort===i&&t.dir==="desc"?"asc":"desc"}),{preserveState:!0}),e[0]=s,e[1]=l,e[2]=t.dir,e[3]=t.sort,e[4]=a,e[5]=N):N=e[5];const r=N;let P;e[6]===Symbol.for("react.memo_cache_sentinel")?(P=o.jsx(te,{title:"Transactions",description:"ActiveRecord transactions, grouped by connection and outcome.",actions:o.jsx(re,{})}),e[6]=P):P=e[6];let m;e[7]!==t.series||e[8]!==n?(m=o.jsx(ee,{label:"Duration",data:t.series,percentile:n}),e[7]=t.series,e[8]=n,e[9]=m):m=e[9];let C,O;e[10]===Symbol.for("react.memo_cache_sentinel")?(C={key:"name",header:"Connection · outcome",cell:be},O={key:"trend",hideOnMobile:!0,header:"Trend",cell:ge},e[10]=C,e[11]=O):(C=e[10],O=e[11]);const A=t.sort==="count",H=t.dir==="asc"?"asc":"desc";let u;e[12]!==r?(u=()=>r("count"),e[12]=r,e[13]=u):u=e[13];let d;e[14]!==A||e[15]!==H||e[16]!==u?(d={key:"n",header:o.jsx(L,{label:"Count",active:A,dir:H,onClick:u}),align:"right",cell:ye},e[14]=A,e[15]=H,e[16]=u,e[17]=d):d=e[17];const K=t.sort==="errors",$=t.dir==="asc"?"asc":"desc";let f;e[18]!==r?(f=()=>r("errors"),e[18]=r,e[19]=f):f=e[19];let h;e[20]!==$||e[21]!==f||e[22]!==K?(h={key:"errors",hideOnMobile:!0,header:o.jsx(L,{label:"Rollbacks",active:K,dir:$,onClick:f}),align:"right",cell:_e},e[20]=$,e[21]=f,e[22]=K,e[23]=h):h=e[23];const W=t.sort==="avg",q=t.dir==="asc"?"asc":"desc";let x;e[24]!==r?(x=()=>r("avg"),e[24]=r,e[25]=x):x=e[25];let p;e[26]!==W||e[27]!==q||e[28]!==x?(p={key:"avg",hideOnMobile:!0,header:o.jsx(L,{label:"Avg",active:W,dir:q,onClick:x}),align:"right",cell:pe},e[26]=W,e[27]=q,e[28]=x,e[29]=p):p=e[29];const z=t.sort===n,F=t.dir==="asc"?"asc":"desc";let _;e[30]!==n||e[31]!==r?(_=()=>r(n),e[30]=n,e[31]=r,e[32]=_):_=e[32];let y;e[33]!==n||e[34]!==z||e[35]!==F||e[36]!==_?(y=o.jsx(L,{label:n,active:z,dir:F,onClick:_}),e[33]=n,e[34]=z,e[35]=F,e[36]=_,e[37]=y):y=e[37];let g;e[38]!==n?(g=i=>o.jsx("span",{className:"font-semibold",children:G(i[n],2)}),e[38]=n,e[39]=g):g=e[39];let b;e[40]!==n||e[41]!==y||e[42]!==g?(b={key:n,header:y,align:"right",cell:g},e[40]=n,e[41]=y,e[42]=g,e[43]=b):b=e[43];let j;e[44]!==h||e[45]!==p||e[46]!==b||e[47]!==d?(j=[C,O,d,h,p,b],e[44]=h,e[45]=p,e[46]=b,e[47]=d,e[48]=j):j=e[48];let k;e[49]!==t.transactions||e[50]!==j?(k=o.jsx(Q,{rows:t.transactions,rowKey:je,empty:"No transactions in this window.",columns:j}),e[49]=t.transactions,e[50]=j,e[51]=k):k=e[51];let D;e[52]===Symbol.for("react.memo_cache_sentinel")?(D=o.jsx("h2",{className:"text-sm font-semibold",children:"Recent transactions"}),e[52]=D):D=e[52];let M,T,E,R;e[53]===Symbol.for("react.memo_cache_sentinel")?(M={key:"when",header:"When",className:"w-40",cell:he},T={key:"conn",hideOnMobile:!0,header:"Connection",cell:fe},E={key:"outcome",header:"Outcome",cell:de},R={key:"statements",hideOnMobile:!0,header:"Statements",align:"right",cell:ue},e[53]=M,e[54]=T,e[55]=E,e[56]=R):(M=e[53],T=e[54],E=e[55],R=e[56]);let v;e[57]!==s||e[58]!==l?(v={key:"in",hideOnMobile:!0,header:"In",cell:i=>i.execution_id?o.jsx(Z,{className:"font-mono text-xs hover:underline",href:ce({applicationId:s,environmentId:l,source:i.execution_source,executionId:i.execution_id}),children:i.execution_preview}):o.jsx("span",{className:"text-muted-foreground text-xs",children:"–"})},e[57]=s,e[58]=l,e[59]=v):v=e[59];let B;e[60]===Symbol.for("react.memo_cache_sentinel")?(B={key:"d",header:"Duration",align:"right",cell:me},e[60]=B):B=e[60];let w;e[61]!==v?(w=[M,T,E,R,v,B],e[61]=v,e[62]=w):w=e[62];let S;e[63]!==t.recent||e[64]!==w?(S=o.jsx(Q,{rows:t.recent,rowKey:xe,columns:w}),e[63]=t.recent,e[64]=w,e[65]=S):S=e[65];let I;return e[66]!==m||e[67]!==k||e[68]!==S?(I=o.jsxs(ne,{title:"Transactions",children:[P,m,k,D,S]}),e[66]=m,e[67]=k,e[68]=S,e[69]=I):I=e[69],I}function me(t){return G(t.duration,2)}function ue(t){return t.statement_count===null?"—":J(t.statement_count)}function de(t){return o.jsx(le,{outcome:t.outcome})}function fe(t){return o.jsx("span",{className:"font-mono text-xs",children:t.connection??""})}function he(t){return o.jsx("span",{className:"text-xs tabular-nums",children:ae(t.occurred_at)})}function xe(t){return t.id}function pe(t){return G(t.avg,2)}function _e(t){return J(t.errors)}function ye(t){return J(t.count)}function ge(t){return o.jsx(se,{data:t.sparkline})}function be(t){return o.jsx("span",{className:"font-mono text-xs",children:t.name})}function je(t){return t.group_hash}export{Fe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as x,u as _,j as o,y as b,e as h}from"./inertia-TViv6kNv.js";import{D as k}from"./data-table-iv1bdF6u.js";import{E as w}from"./empty-state-6j_0AaQQ.js";import{E as j,P as v}from"./env-layout-DrT8rO6P.js";import{w as N,c as R}from"./format-B9SDkrWj.js";import{R as D}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function V(t){const e=x.c(13),{environment:y}=_().props,d=y.application_id,f=y.id;let s;e[0]!==d||e[1]!==f?(s=i=>b(d,f,i.id),e[0]=d,e[1]=f,e[2]=s):s=e[2];const l=s;let a;e[3]===Symbol.for("react.memo_cache_sentinel")?(a=o.jsx(v,{withWindow:!1,title:"Deploys",description:"Recorded by bin/rails railwatch:deploy or the Kamal post-deploy hook. Click one to compare the hour before and after."}),e[3]=a):a=e[3];let c;e[4]===Symbol.for("react.memo_cache_sentinel")?(c=o.jsx(w,{icon:D,title:"No deploys recorded",description:"Run bin/rails railwatch:deploy or install the Kamal hook to track deploys."}),e[4]=c):c=e[4];let r,n;e[5]!==l?(r=i=>h.visit(l(i)),n={onOpen:(i,u)=>u?.newTab?window.open(l(i),"_blank"):h.visit(l(i))},e[5]=l,e[6]=r,e[7]=n):(r=e[6],n=e[7]);let m;e[8]===Symbol.for("react.memo_cache_sentinel")?(m=[{key:"when",header:"When",cell:C},{key:"d",header:"Deploy",cell:P},{key:"r",hideOnMobile:!0,header:"Ref",cell:M},{key:"n",hideOnMobile:!0,header:"Name",cell:g},{key:"by",hideOnMobile:!0,header:"By",cell:S},{key:"c",hideOnMobile:!0,header:"Commits",align:"right",cell:O},{key:"s",header:"Server",cell:E}],e[8]=m):m=e[8];let p;return e[9]!==t.deploys||e[10]!==r||e[11]!==n?(p=o.jsxs(j,{title:"Deploys",children:[a,o.jsx(k,{rows:t.deploys,rowKey:K,empty:c,onRowClick:r,keyboardNav:n,columns:m})]}),e[9]=t.deploys,e[10]=r,e[11]=n,e[12]=p):p=e[12],p}function E(t){return o.jsx("span",{className:"font-mono text-xs",children:t.server})}function O(t){return R(t.commits_count)}function S(t){return o.jsx("span",{className:"text-xs",children:t.performer})}function g(t){return t.name}function M(t){return o.jsx("span",{className:"font-mono text-xs",children:t.ref})}function P(t){return o.jsx("span",{className:"font-mono text-xs",children:t.deploy})}function C(t){return o.jsx("span",{className:"text-xs",children:N(t.deployed_at)})}function K(t){return t.id}export{V as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as Je,u as Ce,j as l,X as je,K as Me,Y as Ee,e as fe,L as Ae}from"./inertia-TViv6kNv.js";import{C as Te}from"./chart-hover-Vy52H4uD.js";import{V as Ie}from"./chart-panel-Cb4S_ej_.js";import{C as Fe}from"./cursor-load-more-BXV0f1D_.js";import{D as xe}from"./data-table-iv1bdF6u.js";import{E as ke}from"./empty-state-6j_0AaQQ.js";import{F as Ke}from"./filter-bar-9SU5NrzX.js";import{O as ve}from"./origin-identity-6q1-CBts.js";import{P as He,E as Le}from"./env-layout-DrT8rO6P.js";import{u as De,P as Re}from"./percentile-picker-gFZCXtdb.js";import{S as Be,W as we}from"./app-layout-yh-sPWgK.js";import{S as Qe}from"./sparkline-cell-C3-5vFkP.js";import{S as ge}from"./status-badge-8jVV-LA4.js";import{C as Se,a as qe,b as Oe,c as Ne}from"./card-BX_3HXcJ.js";import{m as he,c as Pe,w as Ve,p as We}from"./format-B9SDkrWj.js";import"./series-chart-DaFPefku.js";import"./chart-B14-N9g7.js";import"./app-wordmark-nbjkzxwQ.js";import"./badge-Daw4Hvr8.js";import"./tenant-path-G-6u9A-o.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function Kt(t){const e=Je.c(114),{environment:_e,window:s,range:n}=Ce().props,{percentile:c}=De(),r=_e.application_id,i=_e.id;let C;e[0]!==n?.from||e[1]!==n?.to||e[2]!==s?(C=s==="custom"?{from:n?.from,to:n?.to}:{window:s},e[0]=n?.from,e[1]=n?.to,e[2]=s,e[3]=C):C=e[3];const a=C;let M;e[4]!==n||e[5]!==a?(M=n?{from:n.from,to:n.to}:a,e[4]=n,e[5]=a,e[6]=M):M=e[6];const pe=M;let E;e[7]!==r||e[8]!==pe||e[9]!==i||e[10]!==t.pagination.limit||e[11]!==t.q?(E=o=>je(r,i,{...pe,q:t.q||void 0,cursor:o,limit:t.pagination.limit}),e[7]=r,e[8]=pe,e[9]=i,e[10]=t.pagination.limit,e[11]=t.q,e[12]=E):E=e[12];const be=E;let A;e[13]!==r||e[14]!==i?(A=o=>Me(r,i,o.execution_id),e[13]=r,e[14]=i,e[15]=A):A=e[15];const J=A;let T;e[16]!==r||e[17]!==i||e[18]!==t.q||e[19]!==a?(T=o=>Ee(r,i,o.group_hash,{...a,q:t.q||void 0}),e[16]=r,e[17]=i,e[18]=t.q,e[19]=a,e[20]=T):T=e[20];const m=T;let I;e[21]===Symbol.for("react.memo_cache_sentinel")?(I=l.jsx(He,{title:"Jobs",description:"Active Job attempts by class and queue, with queue latency and failures.",actions:l.jsxs(l.Fragment,{children:[l.jsx(Be,{page:"jobs"}),l.jsx(Re,{})]})}),e[21]=I):I=e[21];let u;e[22]!==t.deploys||e[23]!==t.series?(u=l.jsx(Ie,{legend:"job",label:"Job attempts",seriesLabel:"Attempts",data:t.series,deploys:t.deploys}),e[22]=t.deploys,e[23]=t.series,e[24]=u):u=e[24];let F;e[25]===Symbol.for("react.memo_cache_sentinel")?(F=l.jsx(Oe,{children:l.jsx(Ne,{children:"Queues"})}),e[25]=F):F=e[25];let K;e[26]===Symbol.for("react.memo_cache_sentinel")?(K=[{key:"q",header:"Queue",cell:mt},{key:"n",header:"Attempts",align:"right",cell:ct},{key:"lat",hideOnMobile:!0,header:"Avg wait",align:"right",cell:at},{key:"f",header:"Failed",align:"right",cell:st}],e[26]=K):K=e[26];let d;e[27]!==t.queues?(d=l.jsxs(Se,{className:"lg:col-span-1",children:[F,l.jsx(qe,{children:l.jsx(xe,{rows:t.queues,rowKey:ut,columns:K})})]}),e[27]=t.queues,e[28]=d):d=e[28];let H;e[29]===Symbol.for("react.memo_cache_sentinel")?(H=l.jsx(Oe,{children:l.jsx(Ne,{children:"Recent runs"})}),e[29]=H):H=e[29];let L,D,R,B,Q;e[30]===Symbol.for("react.memo_cache_sentinel")?(L={key:"after",label:"After"},D={key:"before",label:"Before"},R={key:"user",label:"User"},B={key:"tenant",label:"Tenant"},Q={key:"deploy",label:"Deploy"},e[30]=L,e[31]=D,e[32]=R,e[33]=B,e[34]=Q):(L=e[30],D=e[31],R=e[32],B=e[33],Q=e[34]);let V,W,U,X;e[35]===Symbol.for("react.memo_cache_sentinel")?(V={key:"kind",label:"Execution kind",options:["job"]},W={key:"queue",label:"Queue"},U={key:"class",label:"Job class"},X={key:"job_id",label:"Job ID"},e[35]=V,e[36]=W,e[37]=U,e[38]=X):(V=e[35],W=e[36],U=e[37],X=e[38]);let Y;e[39]===Symbol.for("react.memo_cache_sentinel")?(Y=[L,D,R,B,Q,V,W,U,X,{key:"outcome",label:"Outcome",options:["processed","failed"]}],e[39]=Y):Y=e[39];let f;e[40]!==r||e[41]!==i||e[42]!==a?(f=o=>fe.visit(je(r,i,{...a,q:o||void 0}),{only:["recent","pagination","q"],preserveState:!0,reset:["recent"]}),e[40]=r,e[41]=i,e[42]=a,e[43]=f):f=e[43];let h;e[44]!==t.q||e[45]!==f?(h=l.jsx(Ke,{value:t.q,fields:Y,onChange:f,placeholder:"queue:default outcome:failed"}),e[44]=t.q,e[45]=f,e[46]=h):h=e[46];let $;e[47]===Symbol.for("react.memo_cache_sentinel")?($=l.jsx(ke,{icon:we,title:"No job runs in this window",description:"Job classes appear here once Active Job executions are reported."}),e[47]=$):$=e[47];let p,b;e[48]!==J?(p=o=>fe.visit(J(o)),b={onOpen:(o,ye)=>ye?.newTab?globalThis.window.open(J(o),"_blank"):fe.visit(J(o))},e[48]=J,e[49]=p,e[50]=b):(p=e[49],b=e[50]);let z,G,Z,ee;e[51]===Symbol.for("react.memo_cache_sentinel")?(z={key:"when",header:"When",cell:it},G={key:"name",header:"Job",grow:!0,cell:rt},Z={key:"st",header:"Outcome",cell:ot},ee={key:"att",hideOnMobile:!0,header:"Attempt",align:"right",cell:lt},e[51]=z,e[52]=G,e[53]=Z,e[54]=ee):(z=e[51],G=e[52],Z=e[53],ee=e[54]);let y;e[55]!==r||e[56]!==i||e[57]!==n||e[58]!==s?(y={key:"user",hideOnMobile:!0,header:"Origin user",cell:o=>l.jsx(ve,{...o,applicationId:r,environmentId:i,kind:"user",range:n,window:s})},e[55]=r,e[56]=i,e[57]=n,e[58]=s,e[59]=y):y=e[59];let x;e[60]!==r||e[61]!==i||e[62]!==n||e[63]!==s?(x={key:"tenant",hideOnMobile:!0,header:"Origin tenant",cell:o=>l.jsx(ve,{...o,applicationId:r,environmentId:i,kind:"tenant",range:n,window:s})},e[60]=r,e[61]=i,e[62]=n,e[63]=s,e[64]=x):x=e[64];let te;e[65]===Symbol.for("react.memo_cache_sentinel")?(te={key:"ex",hideOnMobile:!0,header:"Exception",cell:tt},e[65]=te):te=e[65];let g;e[66]!==y||e[67]!==x?(g=[z,G,Z,ee,y,x,te],e[66]=y,e[67]=x,e[68]=g):g=e[68];let _;e[69]!==t.recent||e[70]!==p||e[71]!==b||e[72]!==g?(_=l.jsx(xe,{rows:t.recent,rowKey:nt,empty:$,onRowClick:p,keyboardNav:b,columns:g}),e[69]=t.recent,e[70]=p,e[71]=b,e[72]=g,e[73]=_):_=e[73];let le;e[74]===Symbol.for("react.memo_cache_sentinel")?(le=["recent","pagination"],e[74]=le):le=e[74];let j;e[75]!==t.pagination||e[76]!==be?(j=l.jsx(Fe,{meta:t.pagination,href:be,only:le}),e[75]=t.pagination,e[76]=be,e[77]=j):j=e[77];let k;e[78]!==h||e[79]!==_||e[80]!==j?(k=l.jsxs(Se,{className:"lg:col-span-2",children:[H,l.jsxs(qe,{className:"space-y-3",children:[h,_,j]})]}),e[78]=h,e[79]=_,e[80]=j,e[81]=k):k=e[81];let v;e[82]!==k||e[83]!==d?(v=l.jsxs("div",{className:"grid gap-4 lg:grid-cols-3",children:[d,k]}),e[82]=k,e[83]=d,e[84]=v):v=e[84];let oe;e[85]===Symbol.for("react.memo_cache_sentinel")?(oe=l.jsx(ke,{icon:we,title:"No job attempts in this window",description:"Individual job executions appear here as they run."}),e[85]=oe):oe=e[85];let w;e[86]!==m?(w={onOpen:(o,ye)=>ye?.newTab?globalThis.window.open(m(o),"_blank"):fe.visit(m(o))},e[86]=m,e[87]=w):w=e[87];let S;e[88]!==m?(S={key:"name",header:"Job",grow:!0,cell:o=>l.jsx(Ae,{className:"font-mono text-xs hover:underline",href:m(o),children:o.name})},e[88]=m,e[89]=S):S=e[89];let re,ie,ne,se,ae;e[90]===Symbol.for("react.memo_cache_sentinel")?(re={key:"trend",hideOnMobile:!0,header:"Trend",cell:Ge},ie={key:"n",header:"Attempts",align:"right",cell:ze},ne={key:"f",header:"Failed",align:"right",cell:$e},se={key:"fr",hideOnMobile:!0,header:"Failure %",align:"right",cell:Ye},ae={key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:Xe},e[90]=re,e[91]=ie,e[92]=ne,e[93]=se,e[94]=ae):(re=e[90],ie=e[91],ne=e[92],se=e[93],ae=e[94]);let q;e[95]!==c?(q=o=>l.jsx("span",{className:"font-semibold",children:he(o[c])}),e[95]=c,e[96]=q):q=e[96];let O;e[97]!==c||e[98]!==q?(O={key:c,header:c,align:"right",cell:q},e[97]=c,e[98]=q,e[99]=O):O=e[99];let ce;e[100]===Symbol.for("react.memo_cache_sentinel")?(ce={key:"max",hideOnMobile:!0,header:"Max",align:"right",cell:Ue},e[100]=ce):ce=e[100];let N;e[101]!==S||e[102]!==O?(N=[S,re,ie,ne,se,ae,O,ce],e[101]=S,e[102]=O,e[103]=N):N=e[103];let P;e[104]!==t.classes||e[105]!==w||e[106]!==N?(P=l.jsx(xe,{rows:t.classes,rowKey:et,empty:oe,hoverKey:Ze,keyboardNav:w,columns:N}),e[104]=t.classes,e[105]=w,e[106]=N,e[107]=P):P=e[107];let me;e[108]===Symbol.for("react.memo_cache_sentinel")?(me=l.jsx(ge,{outcome:"processed"}),e[108]=me):me=e[108];let ue;e[109]===Symbol.for("react.memo_cache_sentinel")?(ue=l.jsxs("p",{className:"text-muted-foreground text-xs",children:[me," processed ·"," ",l.jsx(ge,{outcome:"failed"})," failed"]}),e[109]=ue):ue=e[109];let de;return e[110]!==v||e[111]!==P||e[112]!==u?(de=l.jsx(Le,{title:"Jobs",children:l.jsxs(Te,{children:[I,u,v,P,ue]})}),e[110]=v,e[111]=P,e[112]=u,e[113]=de):de=e[113],de}function Ue(t){return he(t.max)}function Xe(t){return he(t.avg)}function Ye(t){return We(t.errors,t.count)}function $e(t){return l.jsx("span",{className:t.errors?"text-destructive":"",children:t.errors})}function ze(t){return Pe(t.count)}function Ge(t){return l.jsx(Qe,{data:t.sparkline,hoverKey:t.group_hash})}function Ze(t){return t.group_hash}function et(t){return t.group_hash}function tt(t){return l.jsx("span",{className:"text-destructive line-clamp-1 text-xs",children:t.exception_preview})}function lt(t){return t.attempt}function ot(t){return l.jsx(ge,{outcome:t.outcome})}function rt(t){return l.jsx("span",{className:"font-mono text-xs",children:t.name})}function it(t){return l.jsx("span",{className:"text-xs",children:Ve(t.occurred_at)})}function nt(t){return t.execution_id}function st(t){return t.failed}function at(t){return he(t.avg_latency)}function ct(t){return Pe(t.count)}function mt(t){return l.jsx("span",{className:"font-mono text-xs",children:t.queue})}function ut(t){return t.queue??"-"}export{Kt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as O,j as s,C as R,aa as H}from"./inertia-TViv6kNv.js";import{C as w}from"./chart-panel-Cb4S_ej_.js";import{D as C}from"./data-table-iv1bdF6u.js";import{E as q}from"./empty-state-6j_0AaQQ.js";import{C as U,X as G,Y as I,a as W,b as X,c as Y}from"./chart-B14-N9g7.js";import{A as J,a as V}from"./series-chart-DaFPefku.js";import{E as Z,P as ee}from"./env-layout-DrT8rO6P.js";import{a as te,S as _}from"./stat-s4RpOS9w.js";import{C as A,b as L,c as P,a as $}from"./card-BX_3HXcJ.js";import{c as j,m as T,b as se,a as K,w as Q}from"./format-B9SDkrWj.js";import{r as B}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./arrow-up-DVtOGdVA.js";import"./checkbox-D3aRSsBj.js";const E={fontSize:10,fontFamily:"var(--font-mono)"};function re(t){return new Date(t).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})}function D(t){return new Date(t).toLocaleString(void 0,{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}function N(t){const e=O.c(24),{label:a,data:r,format:o,color:p,className:l}=t,c=p===void 0?"var(--primary)":p,x=l===void 0?"h-32":l;let m;e[0]!==c||e[1]!==a?(m={value:{label:a,color:c}},e[0]=c,e[1]=a,e[2]=m):m=e[2];const b=m,h=`${x} w-full`;let n,u;e[3]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(U,{vertical:!1,strokeDasharray:"2 4"}),u=s.jsx(G,{dataKey:"t",tickFormatter:re,tickLine:!1,axisLine:!1,minTickGap:40,tick:E}),e[3]=n,e[4]=u):(n=e[3],u=e[4]);let i;e[5]!==o?(i=s.jsx(I,{width:44,tickLine:!1,axisLine:!1,tick:E,tickFormatter:S=>o(Number(S))}),e[5]=o,e[6]=i):i=e[6];let d;e[7]!==o||e[8]!==a?(d=s.jsx(W,{content:s.jsx(X,{labelFormatter:ae,formatter:S=>[o(Number(S)),a]})}),e[7]=o,e[8]=a,e[9]=d):d=e[9];let g;e[10]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx(J,{dataKey:"value",stroke:"var(--color-value)",fill:"var(--color-value)",fillOpacity:.15,strokeWidth:1.75,isAnimationActive:!1}),e[10]=g):g=e[10];let f;e[11]!==r||e[12]!==i||e[13]!==d?(f=s.jsxs(V,{data:r,children:[n,u,i,d,g]}),e[11]=r,e[12]=i,e[13]=d,e[14]=f):f=e[14];let v;e[15]!==b||e[16]!==f||e[17]!==h?(v=s.jsx(Y,{config:b,className:h,children:f}),e[15]=b,e[16]=f,e[17]=h,e[18]=v):v=e[18];let y;e[19]!==r?(y=r.length>0&&s.jsxs("div",{className:"text-muted-foreground mt-1 flex justify-between font-mono text-[10px]",children:[s.jsx("span",{children:D(r[0].t)}),s.jsx("span",{children:D(r[r.length-1].t)})]}),e[19]=r,e[20]=y):y=e[20];let k;return e[21]!==v||e[22]!==y?(k=s.jsxs("div",{children:[v,y]}),e[21]=v,e[22]=y,e[23]=k):k=e[23],k}function ae(t){return D(String(t))}function z(t){const e=O.c(21),{busy:a,max:r,className:o}=t;if(!r){let f;return e[0]===Symbol.for("react.memo_cache_sentinel")?(f=s.jsx("span",{className:"text-muted-foreground",children:"–"}),e[0]=f):f=e[0],f}const p=Math.min(1,(a??0)/r);let l;e[1]!==o?(l=R("flex items-center gap-1.5",o),e[1]=o,e[2]=l):l=e[2];const c=a??0,x=p>=.9?"bg-danger":p>=.7?"bg-warning":"bg-live";let m;e[3]!==x?(m=R("absolute inset-y-0 left-0 rounded-full",x),e[3]=x,e[4]=m):m=e[4];const b=`${Math.max(4,p*100)}%`;let h;e[5]!==b?(h={width:b},e[5]=b,e[6]=h):h=e[6];let n;e[7]!==m||e[8]!==h?(n=s.jsx("span",{className:m,style:h}),e[7]=m,e[8]=h,e[9]=n):n=e[9];let u;e[10]!==r||e[11]!==c||e[12]!==n?(u=s.jsx("span",{role:"meter","aria-label":"Utilisation","aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":r,className:"bg-muted-foreground/25 relative h-1.5 w-10 shrink-0 overflow-hidden rounded-full",children:n}),e[10]=r,e[11]=c,e[12]=n,e[13]=u):u=e[13];const i=a??0;let d;e[14]!==r||e[15]!==i?(d=s.jsxs("span",{className:"font-mono tabular-nums",children:[i,"/",r]}),e[14]=r,e[15]=i,e[16]=d):d=e[16];let g;return e[17]!==l||e[18]!==d||e[19]!==u?(g=s.jsxs("span",{className:l,children:[u,d]}),e[17]=l,e[18]=d,e[19]=u,e[20]=g):g=e[20],g}const M=t=>`${t.toFixed(0)}%`;function le(t){return t.reduce((e,a)=>e+(a??0),0)}function F(t){return t.reduce((e,a)=>Math.max(e,a??0),0)}function at(t){const e=O.c(27);let a;if(e[0]!==t.samples){const i=t.samples.flatMap(Pe);a=i.length?i.reduce(Le,0)/i.length:0,e[0]=t.samples,e[1]=a}else a=e[1];const r=a;let o,p,l,c,x;if(e[2]!==t.queues||e[3]!==t.samples||e[4]!==t.series||e[5]!==t.silent_servers||e[6]!==r){const i=le(t.samples.map(Ae)),d=F(t.samples.map(Re)),g=F(t.samples.map(Oe)),f=t.samples.length>0||t.series.length>0;o=Z,p="Processes",e[12]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsx(ee,{title:"Processes",description:"What every web and worker process is doing right now: thread pools, socket backlog, queue depth, and the boots behind them."}),e[12]=l):l=e[12],e[13]!==t.silent_servers?(c=t.silent_servers.length>0&&s.jsxs(A,{className:"border-warning/40",children:[s.jsx(L,{children:s.jsxs(P,{className:"flex items-center gap-2",children:[s.jsx(H,{className:"text-warning size-4"}),t.silent_servers.length===1?"1 expected host is silent":`${t.silent_servers.length} expected hosts are silent`]})}),s.jsxs($,{className:"space-y-2",children:[s.jsx("div",{className:"flex flex-wrap gap-1.5",children:t.silent_servers.map(De)}),s.jsx("p",{className:"text-muted-foreground text-xs",children:"No health sample or execution from these hosts in the last 10 minutes. Expected hosts come from your Kamal post-deploy hook, or from the environment settings if you set them by hand."})]})]}),e[13]=t.silent_servers,e[14]=c):c=e[14],x=f?s.jsxs(s.Fragment,{children:[s.jsxs(te,{children:[s.jsx(_,{label:"Live processes",value:t.samples.length}),s.jsx(_,{label:"Thread utilisation",value:M(r),tone:r>=90?"destructive":r>=70?"warning":void 0,hint:"averaged across live processes"}),s.jsx(_,{label:"Backlog",value:j(i)}),s.jsx(_,{label:"Queue depth",value:j(d)}),s.jsx(_,{label:"Oldest job",value:T(g)})]}),s.jsx(C,{rows:t.samples,rowKey:Te,empty:s.jsx(q,{title:"No process reported in the last 10 minutes",description:"Health samples are older than the live window."}),columns:[{key:"server",header:"Server",cell:Me},{key:"role",header:"Role",cell:qe},{key:"pid",hideOnMobile:!0,header:"PID",align:"right",cell:Ce},{key:"threads",header:"Threads",cell:Se},{key:"pool",hideOnMobile:!0,header:"DB pool",cell:Ne},{key:"mem",hideOnMobile:!0,header:"Memory",align:"right",cell:we},{key:"seen",header:"Last sample",align:"right",cell:ke}]}),t.queues.length>0&&s.jsxs(A,{children:[s.jsx(L,{children:s.jsx(P,{children:"Queue depth"})}),s.jsx($,{children:s.jsx(C,{rows:t.queues,rowKey:_e,columns:[{key:"q",header:"Queue",cell:ye},{key:"d",header:"Ready jobs",align:"right",cell:ve}]})})]}),s.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[s.jsx(w,{label:"Thread utilisation",value:M(r),children:s.jsx(N,{label:"Utilisation",format:M,data:t.series.map(je)})}),s.jsx(w,{label:"Backlog",value:j(i),children:s.jsx(N,{label:"Backlog",color:"var(--warning)",format:j,data:t.series.map(ge)})}),s.jsx(w,{label:"Queue depth",value:j(d),children:s.jsx(N,{label:"Ready jobs",format:j,data:t.series.map(be)})}),s.jsx(w,{label:"Oldest job",value:T(g),children:s.jsx(N,{label:"Oldest job",color:"var(--danger)",format:xe,data:t.series.map(fe)})})]})]}):s.jsx(q,{icon:B,title:"No health samples yet",description:"The gem reports thread pool, backlog and queue health every 15s from each web and worker process."}),e[2]=t.queues,e[3]=t.samples,e[4]=t.series,e[5]=t.silent_servers,e[6]=r,e[7]=o,e[8]=p,e[9]=l,e[10]=c,e[11]=x}else o=e[7],p=e[8],l=e[9],c=e[10],x=e[11];let m;e[15]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("h2",{className:"text-sm font-semibold",children:"Process boots"}),e[15]=m):m=e[15];let b,h;e[16]===Symbol.for("react.memo_cache_sentinel")?(b=s.jsx(q,{icon:B,title:"No process has booted with Railwatch yet",description:"Server processes report here once they boot with the gem installed."}),h=[{key:"b",header:"Booted",cell:he},{key:"s",header:"Server",cell:de},{key:"r",header:"Role",cell:ue},{key:"pid",hideOnMobile:!0,header:"PID",align:"right",cell:me},{key:"d",header:"Deploy",cell:ce},{key:"v",hideOnMobile:!0,header:"Ruby / Rails / Railwatch",cell:ie},{key:"ad",hideOnMobile:!0,header:"DB / queue / cache",cell:oe},{key:"boot",hideOnMobile:!0,header:"Boot",align:"right",cell:ne}],e[16]=b,e[17]=h):(b=e[16],h=e[17]);let n;e[18]!==t.processes?(n=s.jsx(C,{rows:t.processes,rowKey:pe,empty:b,columns:h}),e[18]=t.processes,e[19]=n):n=e[19];let u;return e[20]!==o||e[21]!==p||e[22]!==l||e[23]!==c||e[24]!==x||e[25]!==n?(u=s.jsxs(o,{title:p,children:[l,c,x,m,n]}),e[20]=o,e[21]=p,e[22]=l,e[23]=c,e[24]=x,e[25]=n,e[26]=u):u=e[26],u}function ne(t){return t.boot_seconds?`${t.boot_seconds.toFixed(1)}s`:"–"}function oe(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.detail.database_adapter," / ",t.detail.queue_adapter," /"," ",t.detail.cache_store?.replace("ActiveSupport::Cache::","")]})}function ie(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.ruby_version," / ",t.rails_version," / ",t.railwatch_version]})}function ce(t){return s.jsx("span",{className:"font-mono text-xs",children:t.deploy?.slice(0,12)})}function me(t){return t.pid}function ue(t){return t.role}function de(t){return s.jsx("span",{className:"font-mono text-xs",children:t.server})}function he(t){return s.jsx("span",{className:"text-xs",title:Q(t.booted_at),children:K(t.booted_at)})}function pe(t){return t.id}function fe(t){return{t:t.t,value:t.queue_latency}}function xe(t){return T(t)}function be(t){return{t:t.t,value:t.queue_depth}}function ge(t){return{t:t.t,value:t.backlog}}function je(t){return{t:t.t,value:t.utilisation}}function ve(t){return j(t.depth)}function ye(t){return t.queue}function _e(t){return t.queue}function ke(t){return s.jsx("span",{title:Q(t.sampled_at),children:K(t.sampled_at)})}function we(t){return se(t.memory)}function Ne(t){return s.jsx(z,{busy:t.pool_busy,max:t.pool_size})}function Se(t){return s.jsx(z,{busy:t.threads_busy,max:t.threads_max})}function Ce(t){return t.pid}function qe(t){return t.role}function Me(t){return s.jsx("span",{className:"font-mono text-xs",children:t.server})}function Te(t){return t.id}function De(t){return s.jsx("span",{className:"border-warning/40 bg-warning/10 text-warning rounded-sm border px-1.5 font-mono text-[11px]",children:t},t)}function Oe(t){return t.queue_latency}function Re(t){return t.queue_depth}function Ae(t){return t.backlog}function Le(t,e){return t+e}function Pe(t){return t.threads_max?[(t.threads_busy??0)/t.threads_max*100]:[]}export{at 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-TViv6kNv.js";import{D as S}from"./data-table-iv1bdF6u.js";import{E as B}from"./empty-state-6j_0AaQQ.js";import{P as $,E as D}from"./env-layout-DrT8rO6P.js";import{B as L}from"./badge-Daw4Hvr8.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-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./app-wordmark-nbjkzxwQ.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function pe(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 a=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 i;e[6]!==t.streams?(i=n.jsx(S,{rows:t.streams,rowKey:Y,empty:d,columns:u}),e[6]=t.streams,e[7]=i):i=e[7];let h;e[8]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[8]=h):h=e[8];let p;e[9]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsx(B,{icon:E,title:"No broadcasts in this window",description:"Action Cable broadcasts appear here as your app sends them."}),e[9]=p):p=e[9];let s;e[10]!==a?(s={onOpen:(r,g)=>{const v=a(r);v&&(g?.newTab?window.open(v,"_blank"):P.visit(v))}},e[10]=a,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]!==a?(o=[y,_,f,b,x,{key:"in",hideOnMobile:!0,header:"In",cell:r=>{const g=a(r);return g?n.jsx(R,{className:"font-mono text-xs hover:underline",href:g,children:r.execution_preview}):null}}],e[17]=a,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:p,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]!==i?(k=n.jsxs(D,{title:"Broadcasts",children:[m,i,h,l]}),e[23]=l,e[24]=i,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{pe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as C,u as S,r as F,j as s,L as z,i as A,b as R,d as B,e as w,f as L}from"./inertia-TViv6kNv.js";import{E as J}from"./empty-state-6j_0AaQQ.js";import{p as O,F as D,s as H}from"./filter-bar-9SU5NrzX.js";import{J as I}from"./json-viewer-Ar4cjPDW.js";import{P as T,E as V}from"./env-layout-DrT8rO6P.js";import{R as W}from"./relative-time-IOOgl5n2.js";import{B as $}from"./badge-Daw4Hvr8.js";import{B as b}from"./app-wordmark-nbjkzxwQ.js";import{C as G,a as K}from"./app-layout-yh-sPWgK.js";import"./use-clipboard-ColgLyQ2.js";import"./index-1ol1-QWI.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./format-B9SDkrWj.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function fe(i){const e=C.c(30),{environment:m}=S().props,[y,E]=F.useState(null);let f;e[0]!==m?(f=t=>{const u=m?R(m.application_id,m.id,{q:t||void 0}):B({q:t||void 0});w.visit(u,{preserveState:!0,preserveScroll:!0})},e[0]=m,e[1]=f):f=e[1];const l=f,P=Q;let x;e[2]!==i.q?(x=O(i.q),e[2]=i.q,e[3]=x):x=e[3];const r=x,p=r.fields.status==="failed";let h;e[4]!==p||e[5]!==r.fields||e[6]!==r.text||e[7]!==l?(h=()=>{const t={...r.fields};p?delete t.status:t.status="failed",l(H({text:r.text,fields:t}))},e[4]=p,e[5]=r.fields,e[6]=r.text,e[7]=l,e[8]=h):h=e[8];const _=h;let v,j;e[9]===Symbol.for("react.memo_cache_sentinel")?(v=[{title:"Alerts",href:"#"}],j=s.jsx(T,{withWindow:!1,title:"Alerts",description:"Fired alerts across your integrations, newest first."}),e[9]=v,e[10]=j):(v=e[9],j=e[10]);let g;e[11]===Symbol.for("react.memo_cache_sentinel")?(g={key:"event",label:"Event",options:["new_issue","regressed_issue","threshold","quota"]},e[11]=g):g=e[11];let a;e[12]!==i.statuses?(a=[g,{key:"status",label:"Status",options:i.statuses}],e[12]=i.statuses,e[13]=a):a=e[13];let o;e[14]!==i.q||e[15]!==a||e[16]!==l?(o=s.jsx(D,{value:i.q,fields:a,onChange:l,placeholder:"event:new_issue status:failed"}),e[14]=i.q,e[15]=a,e[16]=l,e[17]=o):o=e[17];const k=p?"default":"outline";let n;e[18]!==k||e[19]!==_?(n=s.jsx(b,{size:"sm",variant:k,className:"h-8",onClick:_,children:"Failed only"}),e[18]=k,e[19]=_,e[20]=n):n=e[20];let d;e[21]!==o||e[22]!==n?(d=s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o,n]}),e[21]=o,e[22]=n,e[23]=d):d=e[23];let c;e[24]!==y||e[25]!==i.alerts?(c=i.alerts.length===0?s.jsx(J,{title:"No alerts have fired."}):s.jsx("div",{className:"divide-y rounded-md border",children:i.alerts.map(t=>{const u=y===t.id;return s.jsxs("div",{className:"p-3",children:[s.jsxs("button",{type:"button",className:"flex w-full flex-wrap items-center gap-3 text-left text-sm",onClick:()=>E(u?null:t.id),children:[u?s.jsx(G,{className:"text-muted-foreground size-4 shrink-0"}):s.jsx(K,{className:"text-muted-foreground size-4 shrink-0"}),s.jsx("span",{className:"font-mono text-xs",children:t.event}),s.jsxs("span",{className:"text-muted-foreground text-xs",children:[t.integration.name," (",t.integration.kind,")"]}),t.issue&&s.jsxs(z,{href:A(t.issue.id),onClick:M,className:"text-xs hover:underline",children:[s.jsx("span",{className:"font-mono font-semibold",children:t.issue.key})," ",s.jsx("span",{className:"text-muted-foreground",children:t.issue.title})]}),s.jsxs("span",{className:"ml-auto flex items-center gap-2",children:[s.jsx($,{variant:t.status==="failed"?"destructive":"outline",className:"capitalize",title:t.error??void 0,children:t.status}),s.jsx(W,{iso:t.sent_at??t.created_at,className:"text-muted-foreground text-xs"}),t.status==="failed"&&s.jsx(b,{size:"sm",variant:"outline",onClick:q=>{q.stopPropagation(),P(t.id)},children:"Retry"})]})]}),u&&s.jsxs("div",{className:"mt-3 space-y-2 pl-7",children:[t.error&&s.jsx("p",{className:"text-destructive text-xs",children:t.error}),s.jsx(I,{data:t.payload})]})]},t.id)})}),e[24]=y,e[25]=i.alerts,e[26]=c):c=e[26];let N;return e[27]!==d||e[28]!==c?(N=s.jsxs(V,{title:"Alerts",crumbs:v,children:[j,d,c]}),e[27]=d,e[28]=c,e[29]=N):N=e[29],N}function M(i){return i.stopPropagation()}function Q(i){return w.post(L(i),{},{preserveScroll:!0})}export{fe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as z,u as G,j as i,t as J,e as V,$ as Q,L as U}from"./inertia-TViv6kNv.js";import{V as X}from"./chart-panel-Cb4S_ej_.js";import{D as H}from"./data-table-iv1bdF6u.js";import{E as W}from"./empty-state-6j_0AaQQ.js";import{F as Y}from"./filter-bar-9SU5NrzX.js";import{P as Z,E as ee}from"./env-layout-DrT8rO6P.js";import{u as te,P as ie}from"./percentile-picker-gFZCXtdb.js";import{S as re}from"./sparkline-cell-C3-5vFkP.js";import{B as le}from"./badge-Daw4Hvr8.js";import{m as F,c as ne,w as ae}from"./format-B9SDkrWj.js";import{M as I}from"./app-layout-yh-sPWgK.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function He(t){const e=z.c(51),{environment:K,window:L}=G().props,{percentile:l}=te(),n=K.application_id,a=K.id;let y;e[0]!==n||e[1]!==a?(y=r=>r.execution_id?J(n,a,r.execution_id):null,e[0]=n,e[1]=a,e[2]=y):y=e[2];const s=y;let _;e[3]===Symbol.for("react.memo_cache_sentinel")?(_=i.jsx(Z,{title:"Mail",description:"Action Mailer deliveries: recipients, delivery method, render and send time.",actions:i.jsx(ie,{})}),e[3]=_):_=e[3];let o;e[4]!==t.series?(o=i.jsx(X,{legend:"outcome",label:"Deliveries",seriesLabel:"Deliveries",data:t.series}),e[4]=t.series,e[5]=o):o=e[5];let b,g,k,v,j,M;e[6]===Symbol.for("react.memo_cache_sentinel")?(b=i.jsx(W,{icon:I,title:"No mail sent in this window",description:"ActionMailer deliveries appear here as your app sends them."}),g={key:"m",header:"Mailer",cell:ge},k={key:"trend",hideOnMobile:!0,header:"Trend",cell:be},v={key:"n",header:"Sent",align:"right",cell:_e},j={key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:ye},M={key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:xe},e[6]=b,e[7]=g,e[8]=k,e[9]=v,e[10]=j,e[11]=M):(b=e[6],g=e[7],k=e[8],v=e[9],j=e[10],M=e[11]);let c;e[12]!==l?(c=r=>i.jsx("span",{className:"font-semibold",children:F(r[l])}),e[12]=l,e[13]=c):c=e[13];let m;e[14]!==l||e[15]!==c?(m=[g,k,v,j,M,{key:l,header:l,align:"right",cell:c}],e[14]=l,e[15]=c,e[16]=m):m=e[16];let d;e[17]!==t.mailers||e[18]!==m?(d=i.jsx(H,{rows:t.mailers,rowKey:ke,empty:b,columns:m}),e[17]=t.mailers,e[18]=m,e[19]=d):d=e[19];let w;e[20]===Symbol.for("react.memo_cache_sentinel")?(w=i.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[20]=w):w=e[20];let S;e[21]===Symbol.for("react.memo_cache_sentinel")?(S=[{key:"mailer",label:"Mailer"},{key:"kind",label:"Kind"}],e[21]=S):S=e[21];let u;e[22]!==n||e[23]!==a||e[24]!==L?(u=r=>V.visit(Q(n,a,{window:L,q:r||void 0}),{preserveState:!0}),e[22]=n,e[23]=a,e[24]=L,e[25]=u):u=e[25];let h;e[26]!==t.q||e[27]!==u?(h=i.jsx(Y,{value:t.q,fields:S,onChange:u,placeholder:"mailer:WidgetMailer kind:smtp"}),e[26]=t.q,e[27]=u,e[28]=h):h=e[28];let N;e[29]===Symbol.for("react.memo_cache_sentinel")?(N=i.jsx(W,{icon:I,title:"No mail sent in this window",description:"ActionMailer deliveries appear here as your app sends them."}),e[29]=N):N=e[29];let p;e[30]!==s?(p={onOpen:(r,B)=>{const R=s(r);R&&(B?.newTab?globalThis.window.open(R,"_blank"):V.visit(R))}},e[30]=s,e[31]=p):p=e[31];let P,O,E,C,q,A,D,T;e[32]===Symbol.for("react.memo_cache_sentinel")?(P={key:"when",header:"When",cell:pe},O={key:"m",header:"Mailer",cell:he},E={key:"s",header:"Subject",cell:ue},C={key:"to",hideOnMobile:!0,header:"To/CC/BCC",align:"right",cell:de},q={key:"att",hideOnMobile:!0,header:"Att.",align:"right",cell:me},A={key:"dm",hideOnMobile:!0,header:"Via",cell:ce},D={key:"st",header:"",cell:oe},T={key:"d",hideOnMobile:!0,header:"Duration",align:"right",cell:se},e[32]=P,e[33]=O,e[34]=E,e[35]=C,e[36]=q,e[37]=A,e[38]=D,e[39]=T):(P=e[32],O=e[33],E=e[34],C=e[35],q=e[36],A=e[37],D=e[38],T=e[39]);let f;e[40]!==s?(f=[P,O,E,C,q,A,D,T,{key:"in",hideOnMobile:!0,header:"In",cell:r=>{const B=s(r);return B?i.jsx(U,{className:"font-mono text-xs hover:underline",href:B,children:r.execution_preview}):null}}],e[40]=s,e[41]=f):f=e[41];let x;e[42]!==t.recent||e[43]!==p||e[44]!==f?(x=i.jsx(H,{rows:t.recent,rowKey:fe,empty:N,keyboardNav:p,columns:f}),e[42]=t.recent,e[43]=p,e[44]=f,e[45]=x):x=e[45];let $;return e[46]!==d||e[47]!==h||e[48]!==o||e[49]!==x?($=i.jsxs(ee,{title:"Mail",children:[_,o,d,w,h,x]}),e[46]=d,e[47]=h,e[48]=o,e[49]=x,e[50]=$):$=e[50],$}function se(t){return F(t.duration)}function oe(t){return t.failed?i.jsx(le,{variant:"destructive",children:"failed"}):null}function ce(t){return t.delivery_method}function me(t){return t.attachments}function de(t){return`${t.to}/${t.cc}/${t.bcc}`}function ue(t){return i.jsx("span",{className:"line-clamp-1 text-xs",children:t.subject})}function he(t){return i.jsx("span",{className:"font-mono text-xs",children:t.mailer})}function pe(t){return i.jsx("span",{className:"text-xs",children:ae(t.occurred_at)})}function fe(t){return t.id}function xe(t){return F(t.avg)}function ye(t){return t.errors}function _e(t){return ne(t.count)}function be(t){return i.jsx(re,{data:t.sparkline})}function ge(t){return i.jsx("span",{className:"font-mono text-xs",children:t.name})}function ke(t){return t.group_hash}export{He 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-TViv6kNv.js";import{V as re,D as ne}from"./chart-panel-Cb4S_ej_.js";import{D as J}from"./data-table-iv1bdF6u.js";import{E as Q}from"./empty-state-6j_0AaQQ.js";import{F as le}from"./filter-bar-9SU5NrzX.js";import{P as ie,E as ae}from"./env-layout-DrT8rO6P.js";import{u as ce,P as me}from"./percentile-picker-gFZCXtdb.js";import{S as ue}from"./sparkline-cell-C3-5vFkP.js";import{S as de}from"./status-badge-8jVV-LA4.js";import{u as fe,C as pe}from"./use-clipboard-ColgLyQ2.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-yh-sPWgK.js";import{C as _e}from"./index-1ol1-QWI.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.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 lt(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{lt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as M,u as H,ar as $,j as s,a_ as O,F as V,e as C,a$ as G,b0 as B}from"./inertia-TViv6kNv.js";import{I as b}from"./input-error-LxImUkxv.js";import{D as L}from"./data-table-iv1bdF6u.js";import{E as D}from"./empty-state-6j_0AaQQ.js";import{P as J,E as Q}from"./env-layout-DrT8rO6P.js";import{R as U}from"./relative-time-IOOgl5n2.js";import{B as y}from"./app-wordmark-nbjkzxwQ.js";import{b as I,c as K,C as W,a as q}from"./card-BX_3HXcJ.js";import{L as n,I as l}from"./label-COUKWqE_.js";import{B as z}from"./live-dot-ChfUtY3p.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-layout-yh-sPWgK.js";import"./index-1ol1-QWI.js";import"./index-OqI59zPb.js";import"./checkbox-D3aRSsBj.js";import"./format-B9SDkrWj.js";import"./segmented-h1VdDTqE.js";function Fe(t){const e=M.c(46),{environment:P}=H().props,a=P.application_id,r=P.id;let _;e[0]===Symbol.for("react.memo_cache_sentinel")?(_=s.jsx(J,{withWindow:!1,title:"Thresholds",description:"Performance rules. When a route, job, or query crosses one, Railwatch opens a performance issue and alerts the rules subscribed to thresholds."}),e[0]=_):_=e[0];let v;e[1]===Symbol.for("react.memo_cache_sentinel")?(v=s.jsx(I,{children:s.jsx(K,{children:"Add a threshold"})}),e[1]=v):v=e[1];let o;e[2]!==a||e[3]!==r?(o=$(a,r),e[2]=a,e[3]=r,e[4]=o):o=e[4];let d;e[5]!==t.jobs||e[6]!==t.kinds||e[7]!==t.metrics||e[8]!==t.routes?(d=i=>{const{errors:f,processing:A}=i;return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"target_kind",children:"Kind"}),s.jsx("select",{id:"target_kind",name:"target_kind",className:"border-input h-9 rounded-md border bg-transparent px-2 text-sm",children:t.kinds.map(le)})]}),s.jsxs("div",{className:"grid gap-1 md:col-span-2",children:[s.jsx(n,{htmlFor:"target",children:"Target"}),s.jsx(l,{id:"target",name:"target",defaultValue:"*",list:"targets",placeholder:"* for all, or a route / job name"}),s.jsxs("datalist",{id:"targets",children:[s.jsx("option",{value:"*"}),s.jsx("option",{value:"unmatched"}),t.routes.map(ie),t.jobs.map(ne)]}),s.jsx(b,{messages:f.target})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"metric",children:"Metric"}),s.jsx("select",{id:"metric",name:"metric",className:"border-input h-9 rounded-md border bg-transparent px-2 text-sm",children:t.metrics.map(re)})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"limit",children:"Limit (ms or %)"}),s.jsx(l,{id:"limit",name:"limit",type:"number",step:"any",defaultValue:2e3}),s.jsx(b,{messages:f.limit})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"window_minutes",children:"Window (min)"}),s.jsx(l,{id:"window_minutes",name:"window_minutes",type:"number",defaultValue:5})]}),s.jsx("div",{className:"md:col-span-6",children:s.jsx(y,{disabled:A,children:"Add threshold"})})]})},e[5]=t.jobs,e[6]=t.kinds,e[7]=t.metrics,e[8]=t.routes,e[9]=d):d=e[9];let m;e[10]!==o||e[11]!==d?(m=s.jsxs(W,{children:[v,s.jsx(q,{children:s.jsx(V,{method:"post",action:o,className:"grid gap-3 md:grid-cols-6",children:d})})]}),e[10]=o,e[11]=d,e[12]=m):m=e[12];let N,w;e[13]===Symbol.for("react.memo_cache_sentinel")?(N=s.jsx(D,{icon:z,title:"No thresholds yet",description:"Start with requests * p95 2000ms to get alerted on regressions."}),w={key:"d",header:"Rule",cell:te},e[13]=N,e[14]=w):(N=e[13],w=e[14]);let c;e[15]!==a||e[16]!==r?(c=[w,{key:"x",header:"",align:"right",cell:i=>s.jsx(y,{size:"sm",variant:"ghost",onClick:()=>C.delete(G(a,r,i.id)),children:"Remove"})}],e[15]=a,e[16]=r,e[17]=c):c=e[17];let h;e[18]!==t.thresholds||e[19]!==c?(h=s.jsx(L,{rows:t.thresholds,rowKey:ae,empty:N,columns:c}),e[18]=t.thresholds,e[19]=c,e[20]=h):h=e[20];let k;e[21]===Symbol.for("react.memo_cache_sentinel")?(k=s.jsxs("div",{children:[s.jsx("h2",{className:"text-base font-semibold",children:"Anomaly rules"}),s.jsx("p",{className:"text-muted-foreground text-sm",children:"A threshold needs a number you already know. An anomaly rule learns one: it compares the last few minutes against the same clock window on each of the previous days and opens an issue when today sits more than the given number of standard deviations above that baseline."})]}),e[21]=k):k=e[21];let F;e[22]===Symbol.for("react.memo_cache_sentinel")?(F=s.jsx(I,{children:s.jsx(K,{children:"Add an anomaly rule"})}),e[22]=F):F=e[22];let u;e[23]!==a||e[24]!==r?(u=O(a,r),e[23]=a,e[24]=r,e[25]=u):u=e[25];let x;e[26]!==t.anomaly_metrics||e[27]!==t.anomaly_target_kinds?(x=i=>{const{errors:f,processing:A}=i;return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"anomaly_target_kind",children:"Kind"}),s.jsx("select",{id:"anomaly_target_kind",name:"target_kind",className:"border-input h-9 rounded-md border bg-transparent px-2 text-sm",children:t.anomaly_target_kinds.map(se)})]}),s.jsxs("div",{className:"grid gap-1 md:col-span-2",children:[s.jsx(n,{htmlFor:"anomaly_target",children:"Target"}),s.jsx(l,{id:"anomaly_target",name:"target",defaultValue:"*",list:"targets",placeholder:"* for all, or a route / job name"}),s.jsx(b,{messages:f.target})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"anomaly_metric",children:"Metric"}),s.jsx("select",{id:"anomaly_metric",name:"metric",className:"border-input h-9 rounded-md border bg-transparent px-2 text-sm",children:t.anomaly_metrics.map(ee)})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"deviation",children:"Deviation (σ)"}),s.jsx(l,{id:"deviation",name:"deviation",type:"number",step:"0.5",min:"0.5",defaultValue:3}),s.jsx(b,{messages:f.deviation})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"anomaly_window_minutes",children:"Window (min)"}),s.jsx(l,{id:"anomaly_window_minutes",name:"window_minutes",type:"number",defaultValue:15})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"baseline_days",children:"Baseline (days)"}),s.jsx(l,{id:"baseline_days",name:"baseline_days",type:"number",defaultValue:7}),s.jsx(b,{messages:f.baseline_days})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(n,{htmlFor:"enabled",children:"Status"}),s.jsxs("select",{id:"enabled",name:"enabled",className:"border-input h-9 rounded-md border bg-transparent px-2 text-sm",children:[s.jsx("option",{value:"true",children:"enabled"}),s.jsx("option",{value:"false",children:"disabled"})]})]}),s.jsx("div",{className:"md:col-span-6",children:s.jsx(y,{disabled:A,children:"Add anomaly rule"})})]})},e[26]=t.anomaly_metrics,e[27]=t.anomaly_target_kinds,e[28]=x):x=e[28];let p;e[29]!==u||e[30]!==x?(p=s.jsxs(W,{children:[F,s.jsx(q,{children:s.jsx(V,{method:"post",action:u,className:"grid gap-3 md:grid-cols-6",children:x})})]}),e[29]=u,e[30]=x,e[31]=p):p=e[31];let E,R,S;e[32]===Symbol.for("react.memo_cache_sentinel")?(E=s.jsx(D,{icon:z,title:"No anomaly rules yet",description:"Start with requests * p95 at 3σ over a 7-day baseline."}),R={key:"d",header:"Rule",cell:Y},S={key:"f",header:"Last fired",hideOnMobile:!0,cell:X},e[32]=E,e[33]=R,e[34]=S):(E=e[32],R=e[33],S=e[34]);let j;e[35]!==a||e[36]!==r?(j=[R,S,{key:"x",header:"",align:"right",cell:i=>s.jsxs("span",{className:"flex justify-end gap-1",children:[s.jsx(y,{size:"sm",variant:"ghost",onClick:()=>C.patch(B(a,r,i.id),{enabled:!i.enabled}),children:i.enabled?"Disable":"Enable"}),s.jsx(y,{size:"sm",variant:"ghost",className:"text-destructive",onClick:()=>C.delete(B(a,r,i.id)),children:"Remove"})]})}],e[35]=a,e[36]=r,e[37]=j):j=e[37];let g;e[38]!==t.anomaly_rules||e[39]!==j?(g=s.jsx(L,{rows:t.anomaly_rules,rowKey:Z,empty:E,columns:j}),e[38]=t.anomaly_rules,e[39]=j,e[40]=g):g=e[40];let T;return e[41]!==p||e[42]!==g||e[43]!==m||e[44]!==h?(T=s.jsxs(Q,{title:"Thresholds",children:[_,m,h,k,p,g]}),e[41]=p,e[42]=g,e[43]=m,e[44]=h,e[45]=T):T=e[45],T}function X(t){return s.jsx(U,{iso:t.last_fired_at,className:"text-muted-foreground font-mono text-xs"})}function Y(t){return s.jsxs("span",{className:"text-sm",children:[t.description,t.enabled?null:s.jsx("span",{className:"text-muted-foreground label-caps ml-2",children:"disabled"})]})}function Z(t){return t.id}function ee(t){return s.jsx("option",{value:t,children:t},t)}function se(t){return s.jsx("option",{value:t,children:t},t)}function te(t){return s.jsx("span",{className:"text-sm",children:t.description})}function ae(t){return t.id}function re(t){return s.jsx("option",{value:t,children:t},t)}function ne(t){return s.jsx("option",{value:t},t)}function ie(t){return s.jsx("option",{value:t},t)}function le(t){return s.jsx("option",{value:t,children:t},t)}export{Fe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as ye,u as Se,j as s,e as ve,af as ge,aZ as je,L as _e}from"./inertia-TViv6kNv.js";import{V as ke,D as we}from"./chart-panel-Cb4S_ej_.js";import{D as Pe}from"./data-table-iv1bdF6u.js";import{E as Ce}from"./empty-state-6j_0AaQQ.js";import{F as qe}from"./filter-bar-9SU5NrzX.js";import{P as Ee,E as Ne}from"./env-layout-DrT8rO6P.js";import{u as De,P as Me}from"./percentile-picker-gFZCXtdb.js";import{S as V}from"./sort-header-DpFzXblu.js";import{S as Be}from"./sparkline-cell-C3-5vFkP.js";import{S as X,a as Fe}from"./stat-s4RpOS9w.js";import{c as Y,m as H}from"./format-B9SDkrWj.js";import{B as Le}from"./braces-DhFbHPsz.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./app-layout-yh-sPWgK.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./checkbox-D3aRSsBj.js";import"./label-COUKWqE_.js";import"./segmented-h1VdDTqE.js";import"./arrow-up-DVtOGdVA.js";function ht(t){const e=ye.c(115),{environment:be,window:a}=Se().props,{percentile:c}=De(),l=be.application_id,n=be.id,o=t.summary.current;let $;e[0]!==l||e[1]!==n||e[2]!==t.dir||e[3]!==t.q||e[4]!==t.sort||e[5]!==a?($=i=>ve.visit(ge(l,n,{window:a,q:t.q||void 0,sort:i,dir:t.sort===i&&t.dir==="desc"?"asc":"desc"}),{preserveState:!0}),e[0]=l,e[1]=n,e[2]=t.dir,e[3]=t.q,e[4]=t.sort,e[5]=a,e[6]=$):$=e[6];const r=$;let W;e[7]!==l||e[8]!==n||e[9]!==a?(W=i=>je(l,n,i,{window:a}),e[7]=l,e[8]=n,e[9]=a,e[10]=W):W=e[10];const m=W;let Z;e[11]!==m?(Z=(i,xe)=>xe?.newTab?globalThis.window.open(m(i),"_blank"):ve.visit(m(i)),e[11]=m,e[12]=Z):Z=e[12];const ee=Z;let z;e[13]===Symbol.for("react.memo_cache_sentinel")?(z=s.jsx(Ee,{title:"Spans",description:"Custom spans your app recorded with Railwatch.span, grouped by name.",actions:s.jsx(Me,{})}),e[13]=z):z=e[13];let d;e[14]!==o.count?(d=Y(o.count),e[14]=o.count,e[15]=d):d=e[15];let u;e[16]!==o.count||e[17]!==t.summary.previous.count?(u={current:o.count,previous:t.summary.previous.count,goodDirection:"up"},e[16]=o.count,e[17]=t.summary.previous.count,e[18]=u):u=e[18];let f;e[19]!==d||e[20]!==u?(f=s.jsx(X,{label:"Spans",value:d,delta:u,deltaCaption:"vs previous period"}),e[19]=d,e[20]=u,e[21]=f):f=e[21];let p;e[22]!==o.errors?(p=Y(o.errors),e[22]=o.errors,e[23]=p):p=e[23];const te=o.errors?"destructive":void 0;let h;e[24]!==p||e[25]!==te?(h=s.jsx(X,{label:"Failed",value:p,tone:te}),e[24]=p,e[25]=te,e[26]=h):h=e[26];const se=o[c]/1e3;let x;e[27]!==se?(x=H(se,2),e[27]=se,e[28]=x):x=e[28];const re=o.avg/1e3;let A;e[29]!==re?(A=H(re,2),e[29]=re,e[30]=A):A=e[30];const ie=`avg ${A}`;let v;e[31]!==c||e[32]!==x||e[33]!==ie?(v=s.jsx(X,{label:c,value:x,hint:ie}),e[31]=c,e[32]=x,e[33]=ie,e[34]=v):v=e[34];const oe=o.max/1e3;let b;e[35]!==oe?(b=H(oe,2),e[35]=oe,e[36]=b):b=e[36];let g;e[37]!==b?(g=s.jsx(X,{label:"Max",value:b}),e[37]=b,e[38]=g):g=e[38];let y;e[39]!==v||e[40]!==g||e[41]!==f||e[42]!==h?(y=s.jsxs(Fe,{children:[f,h,v,g]}),e[39]=v,e[40]=g,e[41]=f,e[42]=h,e[43]=y):y=e[43];let S;e[44]!==t.series?(S=s.jsx(ke,{legend:"outcome",label:"Spans",seriesLabel:"Spans",data:t.series}),e[44]=t.series,e[45]=S):S=e[45];let j;e[46]!==t.series||e[47]!==c?(j=s.jsx(we,{label:"Duration",data:t.series,percentile:c}),e[46]=t.series,e[47]=c,e[48]=j):j=e[48];let _;e[49]!==S||e[50]!==j?(_=s.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[S,j]}),e[49]=S,e[50]=j,e[51]=_):_=e[51];let G;e[52]===Symbol.for("react.memo_cache_sentinel")?(G={key:"name",label:"Name"},e[52]=G):G=e[52];let I;e[53]===Symbol.for("react.memo_cache_sentinel")?(I=[G,{key:"status",label:"Status",options:["failed"]}],e[53]=I):I=e[53];let k;e[54]!==l||e[55]!==n||e[56]!==t.dir||e[57]!==t.sort||e[58]!==a?(k=i=>ve.visit(ge(l,n,{window:a,q:i||void 0,sort:t.sort,dir:t.dir}),{preserveState:!0}),e[54]=l,e[55]=n,e[56]=t.dir,e[57]=t.sort,e[58]=a,e[59]=k):k=e[59];let w;e[60]!==t.q||e[61]!==k?(w=s.jsx(qe,{value:t.q,fields:I,onChange:k,placeholder:"name:geocode status:failed"}),e[60]=t.q,e[61]=k,e[62]=w):w=e[62];let J;e[63]===Symbol.for("react.memo_cache_sentinel")?(J=s.jsx(Ce,{icon:Le,title:"No spans in this window",description:"Wrap any code in Railwatch.span('name') { } and it shows up here."}),e[63]=J):J=e[63];let P;e[64]!==ee?(P={onOpen:(i,xe)=>ee(i.group_hash,xe)},e[64]=ee,e[65]=P):P=e[65];let C;e[66]!==m?(C={key:"name",header:"Span",grow:!0,cell:i=>s.jsx(_e,{href:m(i.group_hash),className:"truncate font-mono text-xs hover:underline",children:i.name})},e[66]=m,e[67]=C):C=e[67];let Q;e[68]===Symbol.for("react.memo_cache_sentinel")?(Q={key:"trend",hideOnMobile:!0,header:"Trend",cell:Ve},e[68]=Q):Q=e[68];const ae=t.sort==="count",le=t.dir==="asc"?"asc":"desc";let q;e[69]!==r?(q=()=>r("count"),e[69]=r,e[70]=q):q=e[70];let E;e[71]!==ae||e[72]!==le||e[73]!==q?(E={key:"n",header:s.jsx(V,{label:"Count",active:ae,dir:le,onClick:q}),align:"right",cell:He},e[71]=ae,e[72]=le,e[73]=q,e[74]=E):E=e[74];const ne=t.sort==="errors",ce=t.dir==="asc"?"asc":"desc";let N;e[75]!==r?(N=()=>r("errors"),e[75]=r,e[76]=N):N=e[76];let D;e[77]!==ne||e[78]!==ce||e[79]!==N?(D={key:"failed",header:s.jsx(V,{label:"Failed",active:ne,dir:ce,onClick:N}),align:"right",cell:Ke},e[77]=ne,e[78]=ce,e[79]=N,e[80]=D):D=e[80];const me=t.sort==="p50",de=t.dir==="asc"?"asc":"desc";let M;e[81]!==r?(M=()=>r("p50"),e[81]=r,e[82]=M):M=e[82];let B;e[83]!==me||e[84]!==de||e[85]!==M?(B={key:"p50",hideOnMobile:!0,header:s.jsx(V,{label:"p50",active:me,dir:de,onClick:M}),align:"right",cell:Te},e[83]=me,e[84]=de,e[85]=M,e[86]=B):B=e[86];const ue=t.sort==="p95",fe=t.dir==="asc"?"asc":"desc";let F;e[87]!==r?(F=()=>r("p95"),e[87]=r,e[88]=F):F=e[88];let L;e[89]!==ue||e[90]!==fe||e[91]!==F?(L={key:"p95",header:s.jsx(V,{label:"p95",active:ue,dir:fe,onClick:F}),align:"right",cell:Re},e[89]=ue,e[90]=fe,e[91]=F,e[92]=L):L=e[92];const pe=t.sort==="max",he=t.dir==="asc"?"asc":"desc";let O;e[93]!==r?(O=()=>r("max"),e[93]=r,e[94]=O):O=e[94];let R;e[95]!==pe||e[96]!==he||e[97]!==O?(R={key:"max",hideOnMobile:!0,header:s.jsx(V,{label:"Max",active:pe,dir:he,onClick:O}),align:"right",cell:Oe},e[95]=pe,e[96]=he,e[97]=O,e[98]=R):R=e[98];let T;e[99]!==C||e[100]!==E||e[101]!==D||e[102]!==B||e[103]!==L||e[104]!==R?(T=[C,Q,E,D,B,L,R],e[99]=C,e[100]=E,e[101]=D,e[102]=B,e[103]=L,e[104]=R,e[105]=T):T=e[105];let K;e[106]!==t.spans||e[107]!==P||e[108]!==T?(K=s.jsx(Pe,{rows:t.spans,rowKey:We,empty:J,hoverKey:$e,keyboardNav:P,columns:T}),e[106]=t.spans,e[107]=P,e[108]=T,e[109]=K):K=e[109];let U;return e[110]!==y||e[111]!==_||e[112]!==w||e[113]!==K?(U=s.jsxs(Ne,{title:"Spans",children:[z,y,_,w,K]}),e[110]=y,e[111]=_,e[112]=w,e[113]=K,e[114]=U):U=e[114],U}function Oe(t){return H(t.max,2)}function Re(t){return s.jsx("span",{className:"font-semibold",children:H(t.p95,2)})}function Te(t){return H(t.p50,2)}function Ke(t){return s.jsx("span",{className:t.errors?"text-danger font-semibold":"",children:Y(t.errors)})}function He(t){return Y(t.count)}function Ve(t){return s.jsx(Be,{data:t.sparkline,hoverKey:t.group_hash})}function $e(t){return t.group_hash}function We(t){return t.group_hash}export{ht as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as F,r as D,j as s,L as w,J as O,e as S,t as T,ae as Q,c as L}from"./inertia-TViv6kNv.js";import{S as _}from"./code-KvW8k7Jr.js";import{C as R}from"./cursor-load-more-BXV0f1D_.js";import{D as q}from"./data-table-iv1bdF6u.js";import{E as z}from"./empty-state-6j_0AaQQ.js";import{F as B}from"./filter-bar-9SU5NrzX.js";import{u as K,E as $,P as A}from"./env-layout-DrT8rO6P.js";import{u as H,P as I}from"./percentile-picker-gFZCXtdb.js";import{S as k}from"./sort-header-DpFzXblu.js";import{S as J}from"./sparkline-cell-C3-5vFkP.js";import{a as U,S as C}from"./stat-s4RpOS9w.js";import{B as W}from"./app-wordmark-nbjkzxwQ.js";import{C as G,b as V,c as X,a as Y}from"./card-BX_3HXcJ.js";import{u as Z,C as ee}from"./use-clipboard-ColgLyQ2.js";import{c as E,m as f}from"./format-B9SDkrWj.js";import{C as se,a as oe,D as re}from"./app-layout-yh-sPWgK.js";import{C as te}from"./index-1ol1-QWI.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./arrow-up-DVtOGdVA.js";import"./series-chart-DaFPefku.js";import"./chart-B14-N9g7.js";import"./checkbox-D3aRSsBj.js";const ae=1500;function ie(r){const o=L.c(20),{suggestion:a}=r,[,d]=Z(),[u,v]=D.useState(!1);let m;o[0]!==d||o[1]!==a.code?(m=()=>{d(a.code).then(g=>{g&&(v(!0),window.setTimeout(()=>v(!1),ae))})},o[0]=d,o[1]=a.code,o[2]=m):m=o[2];const y=m;let n;o[3]!==a.code?(n=s.jsx("pre",{className:"overflow-x-auto font-mono text-xs whitespace-pre-wrap",children:a.code}),o[3]=a.code,o[4]=n):n=o[4];let l;o[5]!==y?(l=g=>{g.stopPropagation(),y()},o[5]=y,o[6]=l):l=o[6];let c;o[7]!==u?(c=u?s.jsx(te,{className:"size-3 text-emerald-500"}):s.jsx(ee,{className:"size-3 opacity-60"}),o[7]=u,o[8]=c):c=o[8];let h;o[9]!==l||o[10]!==c?(h=s.jsxs(W,{type:"button",variant:"ghost",size:"sm",className:"h-6 shrink-0 gap-1 px-1.5 text-xs",onClick:l,children:[c,"Copy"]}),o[9]=l,o[10]=c,o[11]=h):h=o[11];let p;o[12]!==n||o[13]!==h?(p=s.jsxs("div",{className:"flex items-start justify-between gap-2",children:[n,h]}),o[12]=n,o[13]=h,o[14]=p):p=o[14];let t;o[15]!==a.explanation?(t=s.jsx("p",{className:"text-muted-foreground text-xs whitespace-normal",children:a.explanation}),o[15]=a.explanation,o[16]=t):t=o[16];let x;return o[17]!==p||o[18]!==t?(x=s.jsxs("div",{className:"border-warning/40 bg-muted/40 mt-2 space-y-2 rounded-lg border p-2",children:[p,t]}),o[17]=p,o[18]=t,o[19]=x):x=o[19],x}function Me(r){const{environment:o,window:a,range:d}=F().props,{percentile:u}=H(),{label:v}=K(),[m,y]=D.useState(null),n=o.application_id,l=o.id,c=a==="custom"?{from:d?.from,to:d?.to}:{window:a},h=d?{from:d.from,to:d.to}:c,p=(e,i=r.q)=>Q(n,l,{...e?h:c,q:i||void 0,cursor:e,limit:r.pagination.limit,sort:r.sort,dir:r.dir}),t=r.summary.current,x=r.summary.previous,g=a==="custom"?"vs previous period":`vs previous ${v}`,M=r.n_plus_ones.filter(e=>e.suggestion).length,P=e=>{e.suggestion&&y(i=>i===e.group_hash?null:e.group_hash)},b=e=>S.visit(Q(n,l,{...c,q:r.q||void 0,sort:e,dir:r.sort===e&&r.dir==="desc"?"asc":"desc"}),{preserveState:!0}),j=e=>O(n,l,e,c),N=(e,i)=>i?.newTab?globalThis.window.open(j(e),"_blank"):S.visit(j(e));return s.jsxs($,{title:"Queries",children:[s.jsx(A,{title:"Queries",description:"Every SQL shape your app ran, grouped by normalized statement.",actions:s.jsx(I,{})}),s.jsxs(U,{children:[s.jsx(C,{label:"Queries",value:E(t.count),delta:{current:t.count,previous:x.count,goodDirection:"down"},deltaCaption:g}),s.jsx(C,{label:"N+1 groups",value:E(r.n_plus_ones.length),tone:r.n_plus_ones.length>0?"warning":void 0,hint:r.n_plus_ones.length>0?`${M} with a suggested fix`:void 0}),s.jsx(C,{label:"Avg",value:f(t.avg/1e3,2),delta:{current:t.avg,previous:x.avg,goodDirection:"down"},deltaCaption:g}),s.jsx(C,{label:"p95",value:f(t.p95/1e3,2),hint:`p99 ${f(t.p99/1e3,2)}`,delta:{current:t.p95,previous:x.p95,goodDirection:"down"},deltaCaption:g})]}),r.n_plus_ones.length>0&&s.jsxs(G,{className:"border-amber-500/40",children:[s.jsx(V,{children:s.jsx(X,{children:"N+1 queries detected"})}),s.jsx(Y,{children:s.jsx(q,{rows:r.n_plus_ones,rowKey:e=>e.group_hash,onRowClick:P,keyboardNav:{onOpen:(e,i)=>N(e.group_hash,i)},columns:[{key:"sql",header:"Query shape",grow:!0,cell:e=>s.jsxs(s.Fragment,{children:[s.jsx(w,{href:O(n,l,e.group_hash),children:s.jsx(_,{className:"hover:underline",children:e.sql})}),m===e.group_hash&&e.suggestion&&s.jsx(ie,{suggestion:e.suggestion})]})},{key:"fix",header:"Fix",cell:e=>e.suggestion?s.jsxs("button",{type:"button","aria-expanded":m===e.group_hash,"aria-label":`Suggested fix: ${e.suggestion.code}`,onClick:i=>{i.stopPropagation(),P(e)},className:"border-warning/50 text-warning hover:bg-warning/10 inline-flex items-center gap-0.5 rounded-md border py-0.5 pr-1.5 pl-0.5 font-mono text-[11px] uppercase",children:[m===e.group_hash?s.jsx(se,{className:"size-3"}):s.jsx(oe,{className:"size-3"}),"Fix"]}):null},{key:"src",hideOnMobile:!0,header:"Source",cell:e=>s.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:e.source??""})},{key:"occ",header:"Executions affected",align:"right",cell:e=>e.occurrences},{key:"mx",hideOnMobile:!0,header:"Max repeats",align:"right",cell:e=>e.max_count}]})})]}),s.jsx(q,{rows:r.queries,rowKey:e=>e.group_hash,empty:s.jsx(z,{icon:re,title:"No queries in this window",description:"SQL queries executed by your app appear here as they're reported."}),hoverKey:e=>e.group_hash,keyboardNav:{onOpen:(e,i)=>N(e.group_hash,i)},columns:[{key:"sql",header:"Query",grow:!0,cell:e=>s.jsx(w,{href:j(e.group_hash),children:s.jsx(_,{className:"hover:underline",children:e.name})})},{key:"trend",hideOnMobile:!0,header:"Trend",cell:e=>s.jsx(J,{data:e.sparkline,hoverKey:e.group_hash})},{key:"n",header:s.jsx(k,{label:"Count",active:r.sort==="count",dir:r.dir==="asc"?"asc":"desc",onClick:()=>b("count")}),align:"right",cell:e=>E(e.count)},{key:"avg",hideOnMobile:!0,header:s.jsx(k,{label:"Avg",active:r.sort==="avg",dir:r.dir==="asc"?"asc":"desc",onClick:()=>b("avg")}),align:"right",cell:e=>f(e.avg,2)},{key:u,header:s.jsx(k,{label:u,active:r.sort===u,dir:r.dir==="asc"?"asc":"desc",onClick:()=>b(u)}),align:"right",cell:e=>s.jsx("span",{className:"font-semibold",children:f(e[u],2)})},{key:"max",hideOnMobile:!0,header:s.jsx(k,{label:"Max",active:r.sort==="max",dir:r.dir==="asc"?"asc":"desc",onClick:()=>b("max")}),align:"right",cell:e=>f(e.max,2)}]}),s.jsx("h2",{className:"text-sm font-semibold",children:"Slowest individual queries"}),s.jsx(B,{value:r.q,fields:[{key:"after",label:"After"},{key:"before",label:"Before"},{key:"user",label:"User"},{key:"tenant",label:"Tenant"},{key:"deploy",label:"Deploy"},{key:"source",label:"Source"},{key:"kind",label:"Execution kind",options:["request","job","scheduled_task","command"]},{key:"connection",label:"Connection"},{key:"role",label:"Role"},{key:"adapter",label:"Adapter"}],onChange:e=>S.visit(p(void 0,e),{only:["slowest","pagination","q"],preserveState:!0,reset:["slowest"]}),placeholder:"connection:primary role:reading source:app/models"}),s.jsx(q,{rows:r.slowest,rowKey:e=>e.id,keyboardNav:{onOpen:(e,i)=>N(e.group_hash,i)},columns:[{key:"sql",header:"SQL",grow:!0,cell:e=>s.jsx(w,{href:j(e.group_hash),children:s.jsx(_,{className:"hover:underline",children:e.sql})})},{key:"exe",hideOnMobile:!0,header:"In",cell:e=>e.execution_id?s.jsx(w,{className:"font-mono text-xs hover:underline",href:T(n,l,e.execution_id),children:e.execution_preview}):s.jsx("span",{className:"text-muted-foreground text-xs",children:"–"})},{key:"src",hideOnMobile:!0,header:"Source",cell:e=>s.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:e.source??""})},{key:"d",header:"Duration",align:"right",cell:e=>f(e.duration,2)}]}),s.jsx(R,{meta:r.pagination,href:p,only:["slowest","pagination"]})]})}export{Me as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as j,u as v,j as n,w as E,e as b}from"./inertia-TViv6kNv.js";import{D as k}from"./data-table-iv1bdF6u.js";import{E as N}from"./empty-state-6j_0AaQQ.js";import{P as S,E as C}from"./env-layout-DrT8rO6P.js";import{S as M}from"./status-badge-8jVV-LA4.js";import{c as O,m as y,w as R}from"./format-B9SDkrWj.js";import{T as P}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function me(t){const e=j.c(20),{environment:g}=v().props,f=g.application_id,_=g.id;let l;e[0]!==f||e[1]!==_?(l=a=>E(f,_,a.execution_id),e[0]=f,e[1]=_,e[2]=l):l=e[2];const m=l;let c;e[3]===Symbol.for("react.memo_cache_sentinel")?(c=n.jsx(S,{title:"Commands",description:"Rake tasks and rails runner executions."}),e[3]=c):c=e[3];let u,d;e[4]===Symbol.for("react.memo_cache_sentinel")?(u=n.jsx(N,{icon:P,title:"No commands ran in this window",description:"rails runner and console executions reported by the gem appear here."}),d=[{key:"n",header:"Command",cell:F},{key:"c",header:"Runs",align:"right",cell:q},{key:"f",hideOnMobile:!0,header:"Non-zero exit",align:"right",cell:$},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:W},{key:"max",hideOnMobile:!0,header:"Max",align:"right",cell:L}],e[4]=u,e[5]=d):(u=e[4],d=e[5]);let r;e[6]!==t.commands?(r=n.jsx(k,{rows:t.commands,rowKey:G,empty:u,columns:d}),e[6]=t.commands,e[7]=r):r=e[7];let p;e[8]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent runs"}),e[8]=p):p=e[8];let o,i;e[9]!==m?(o=a=>b.visit(m(a)),i={onOpen:(a,w)=>w?.newTab?window.open(m(a),"_blank"):b.visit(m(a))},e[9]=m,e[10]=o,e[11]=i):(o=e[10],i=e[11]);let h;e[12]===Symbol.for("react.memo_cache_sentinel")?(h=[{key:"when",header:"When",cell:A},{key:"n",header:"Command",cell:z},{key:"x",hideOnMobile:!0,header:"Exit",cell:K},{key:"d",header:"Duration",align:"right",cell:H},{key:"s",hideOnMobile:!0,header:"Server",cell:D},{key:"ex",hideOnMobile:!0,header:"Exception",cell:T}],e[12]=h):h=e[12];let s;e[13]!==t.runs||e[14]!==o||e[15]!==i?(s=n.jsx(k,{rows:t.runs,rowKey:B,onRowClick:o,keyboardNav:i,columns:h}),e[13]=t.runs,e[14]=o,e[15]=i,e[16]=s):s=e[16];let x;return e[17]!==r||e[18]!==s?(x=n.jsxs(C,{title:"Commands",children:[c,r,p,s]}),e[17]=r,e[18]=s,e[19]=x):x=e[19],x}function T(t){return n.jsx("span",{className:"text-destructive line-clamp-1 text-xs",children:t.exception_preview??""})}function D(t){return n.jsx("span",{className:"font-mono text-xs",children:t.server})}function H(t){return y(t.duration)}function K(t){return n.jsx(M,{label:String(t.exit_code??"?"),outcome:t.exit_code?"failed":"processed"})}function z(t){return n.jsx("span",{className:"font-mono text-xs",children:t.name})}function A(t){return n.jsx("span",{className:"text-xs",children:R(t.occurred_at)})}function B(t){return t.execution_id}function L(t){return y(t.max)}function W(t){return y(t.avg)}function $(t){return t.errors}function q(t){return O(t.count)}function F(t){return n.jsx("span",{className:"font-mono text-xs",children:t.name})}function G(t){return t.group_hash}export{me as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as x,u as g,j as r,az as j,e as h}from"./inertia-TViv6kNv.js";import{D as _}from"./data-table-iv1bdF6u.js";import{E as w}from"./empty-state-6j_0AaQQ.js";import{E as b,P as v}from"./env-layout-DrT8rO6P.js";import{c as k,a as E}from"./format-B9SDkrWj.js";import{U as N}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function J(t){const e=x.c(13),{environment:f}=g().props,u=f.application_id,d=f.id;let a;e[0]!==u||e[1]!==d?(a=i=>j(u,d,i.ref),e[0]=u,e[1]=d,e[2]=a):a=e[2];const o=a;let l;e[3]===Symbol.for("react.memo_cache_sentinel")?(l=r.jsx(v,{title:"Users",description:"Your application's users as seen in telemetry, with their activity and errors."}),e[3]=l):l=e[3];let m;e[4]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx(w,{icon:N,title:"No authenticated activity in this window",description:"People appear here once requests are tagged with an authenticated user."}),e[4]=m):m=e[4];let s,n;e[5]!==o?(s=i=>h.visit(o(i)),n={onOpen:(i,y)=>y?.newTab?window.open(o(i),"_blank"):h.visit(o(i))},e[5]=o,e[6]=s,e[7]=n):(s=e[6],n=e[7]);let c;e[8]===Symbol.for("react.memo_cache_sentinel")?(c=[{key:"n",header:"User",cell:q},{key:"t",hideOnMobile:!0,header:"Tenant",cell:S},{key:"r",header:"Requests",align:"right",cell:R},{key:"e",hideOnMobile:!0,header:"Errors",align:"right",cell:U},{key:"l",header:"Last seen",align:"right",cell:P}],e[8]=c):c=e[8];let p;return e[9]!==t.people||e[10]!==s||e[11]!==n?(p=r.jsxs(b,{title:"Users",children:[l,r.jsx(_,{rows:t.people,rowKey:O,empty:m,onRowClick:s,keyboardNav:n,columns:c})]}),e[9]=t.people,e[10]=s,e[11]=n,e[12]=p):p=e[12],p}function P(t){return E(t.last_seen_at)}function U(t){return r.jsx("span",{className:t.errors?"text-destructive":"",children:t.errors})}function R(t){return k(t.requests)}function S(t){return r.jsx("span",{className:"font-mono text-xs",children:t.tenant??""})}function q(t){return r.jsxs("span",{className:"text-xs",children:[r.jsx("span",{className:"font-medium",children:t.name??t.ref}),t.email&&r.jsxs("span",{className:"text-muted-foreground",children:[" · ",t.email]})]})}function O(t){return t.ref}export{J as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as N,j as s,r as v,C as z,L as ae,M as ue,N as pe,u as fe,H as xe}from"./inertia-TViv6kNv.js";import{C as oe,a as ie,b as ge}from"./card-BX_3HXcJ.js";import{D as be,a as je,b as ye,c as we,L as ve,B as Ne}from"./live-dot-ChfUtY3p.js";import{R as _e,M as Se,a as ke}from"./nav-CNnDqPlm.js";import{B as ne}from"./app-wordmark-nbjkzxwQ.js";import{H as Ce,a as Ee,b as $e}from"./copy-DaQMJWoT.js";import{S as Ae}from"./empty-state-6j_0AaQQ.js";import{S as J,a as Re}from"./stat-s4RpOS9w.js";import{I as Te}from"./status-badge-8jVV-LA4.js";import{T as Ie}from"./timeline-CD7WHnbo.js";import{C as Le}from"./index-1ol1-QWI.js";import"./index-OqI59zPb.js";import"./arrow-up-DVtOGdVA.js";import"./badge-Daw4Hvr8.js";import"./format-B9SDkrWj.js";const Me='claude mcp add railwatch --transport http https://railwatch.rebulk.com/mcp --header "Authorization: Bearer $RAILWATCH_MCP_TOKEN"';function Pe(){const e=N.c(4);let t,o,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx("p",{className:"text-primary mb-2 font-mono text-[11px] tracking-[0.2em] uppercase",children:"MCP"}),o=s.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"Works with your AI assistant"}),n=s.jsx("p",{className:"text-muted-foreground mt-2",children:"Railwatch speaks MCP, so Claude Code, Cursor, VS Code, and Zed can read your production data directly — issues, slow routes, query plans, stack profiles, logs, deploys. It ships prompts too: point one at an issue key and it pulls the occurrence, the timeline around it, and the deploy it started after. Writes are attributed to you, so a comment or a status change an assistant makes is signed in the issue's activity feed."}),e[0]=t,e[1]=o,e[2]=n):(t=e[0],o=e[1],n=e[2]);let a;return e[3]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsxs("section",{className:"mx-auto max-w-2xl px-6 pb-16 text-center",children:[t,o,n,s.jsx(oe,{className:"mt-6 text-left",children:s.jsxs(ie,{children:[s.jsx("p",{className:"text-muted-foreground font-mono text-sm",children:"# one line, then ask it what broke today"}),s.jsx("p",{className:"mt-1 font-mono text-sm break-all",children:Me})]})})]}),e[3]=a):a=e[3],a}const De=[{title:"Requests",description:"Every route's throughput, latency percentiles, and status codes, down to a single request's waterfall.",image:"requests",alt:"The Requests page: throughput and latency charts over a table of every route with its 2xx, 4xx, 5xx counts, error rate, and p95"},{title:"Jobs & scheduled tasks",description:"Queue depth, retries, and run history for Active Job and your recurring tasks.",image:"jobs",alt:"The Jobs page: attempts per hour split into processed and failed, a queue table with average wait, and the most recent runs"},{title:"Queries & N+1s",description:"Slow queries and N+1 patterns grouped by source location, not buried in a log line.",image:"queries",alt:"The Queries page: two N+1 patterns with a suggested fix and the source line, above every SQL shape ranked by count and p95"},{title:"Exceptions → Issues",description:"Exceptions are grouped into Issues that track occurrences, assignees, and status over time.",image:"issues",alt:"An issue page: a resolved NoMethodError with the raising line of source highlighted, its breadcrumbs, and the alerts it sent"},{title:"Inertia visits",description:"Page-by-page render and payload size, so a slow visit is obvious before support tickets show up.",image:"visits",alt:"The Inertia visits page: p75 web vitals, visits per hour, and a table of components with visit count, LCP, INP, and p95"},{title:"Deploy comparison",description:"Every chart is annotated with deploys, so a regression points straight at the change that caused it.",image:"deploys",alt:"A deploy page: the commits it shipped, its crash-free rate, and request p95, error rate, and job failures for the hour before and after"},{title:"Alerts",description:"Threshold and issue alerts delivered where your team already works.",image:"alerts",alt:"The Alerts page: new, resolved, and threshold alerts delivered to Slack and email, newest first"},{title:"MCP / API",description:"A JSON-RPC MCP endpoint and a token-authenticated API, so your AI assistant can query production directly.",image:"mcp",alt:"A request page with its Copy as Markdown button: the same timeline an assistant reads over MCP"}];function Oe(){const e=N.c(9),[t,o]=v.useState(null);let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4",children:De.map(l=>{const{title:m,description:f,image:h,alt:g}=l;return s.jsxs("div",{className:"bg-card flex flex-col overflow-hidden rounded-lg border",children:[s.jsx("button",{type:"button",onClick:()=>o(l),className:"group relative aspect-[4/3] w-full cursor-zoom-in overflow-hidden border-b bg-[#020618] text-left","aria-label":`Open a full screenshot of ${m}`,children:s.jsx("img",{src:`/marketing/${h}.webp`,alt:g,loading:"lazy",width:1200,height:900,className:"h-full w-full object-cover object-top transition-transform duration-500 ease-out group-hover:scale-[1.03] motion-reduce:transition-none"})}),s.jsxs("div",{className:"space-y-1 px-4 py-3",children:[s.jsx("h3",{className:"text-sm font-semibold",children:m}),s.jsx("p",{className:"text-muted-foreground text-[13px] leading-snug",children:f})]})]},m)})}),e[0]=n):n=e[0];const a=t!==null;let c;e[1]===Symbol.for("react.memo_cache_sentinel")?(c=l=>!l&&o(null),e[1]=c):c=e[1];let i;e[2]!==t?(i=t&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"border-b px-5 py-3",children:[s.jsx(be,{className:"text-base",children:t.title}),s.jsx(je,{children:t.description})]}),s.jsx("img",{src:`/marketing/${t.image}-full.webp`,alt:t.alt,width:1920,height:1200,className:"block max-h-[calc(92vh-4.5rem)] w-full object-contain object-top"})]}),e[2]=t,e[3]=i):i=e[3];let d;e[4]!==i?(d=s.jsx(ye,{className:"bg-background max-h-[92vh] w-[min(96vw,1400px)] gap-0 overflow-hidden p-0 sm:max-w-none",children:i}),e[4]=i,e[5]=d):d=e[5];let r;return e[6]!==a||e[7]!==d?(r=s.jsxs("section",{className:"mx-auto max-w-5xl px-6 pb-16",children:[n,s.jsx(we,{open:a,onOpenChange:c,children:d})]}),e[6]=a,e[7]=d,e[8]=r):r=e[8],r}const de=v.createContext("departed"),me=()=>v.useContext(de),qe=[["approaching",100],["braking",2300],["held",3300],["caution",6400],["clear",7200],["departed",8300]],ze=3200,Fe=1800,He={arriving:"clear",approaching:"clear",braking:"clear",held:"stop",caution:"caution",clear:"clear",departed:"clear"};function he(){const[e]=v.useState(Be);return e}function Be(){return typeof window<"u"&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches}function We(){const e=he(),[t,o]=v.useState(e?"arriving":"departed");return v.useEffect(()=>{if(!e)return;const n=qe.map(([a,c])=>setTimeout(()=>o(a),c));return()=>n.forEach(clearTimeout)},[]),{stage:t,animated:e}}const Ge=72,le=13.5,re=112,Ue=14;function Je(e,t,o,n){let a=0,[c,i]=e;for(let d=1;d<=64;d++){const r=d/64,l=1-r,m=l*l*l*e[0]+3*l*l*r*t[0]+3*l*r*r*o[0]+r*r*r*n[0],f=l*l*l*e[1]+3*l*l*r*t[1]+3*l*r*r*o[1]+r*r*r*n[1];a+=Math.hypot(m-c,f-i),c=m,i=f}return a}function Qe(e){const t=e.querySelector("h1"),o=e.querySelector("[data-hero-strip]");if(!t||!o)return null;const n=e.getBoundingClientRect(),a=t.getBoundingClientRect(),c=o.getBoundingClientRect(),i=n.width,d=n.height,r=i<768,l=i/2,m=r?10:Math.max(16,l-520),f=c.top-n.top+60,h=Ge,g=l+(r?120:220),u=[l-(r?30:60),a.top-n.top+a.height+4],b=[m,f-h],x=b[1]-u[1],y=[u[0]-x*.55,u[1]+x*.32],p=[m,b[1]-x*.42],w=Je(u,y,p,b),j=Math.PI*h/2,_=g-Ue-re/2,S=w+j+(_-(m+h)),C=w+j+(i+re+40-(m+h));return{w:i,h:d,p0:u,c1:y,c2:p,p3:b,xL:m,yL:f,r:h,cx:l,xSignal:g,yFadeTop:u[1],yFadeFull:u[1]+x*.7,stop:S,total:C}}function Q(e,t){const[o,n]=e.p0,a=e.r+t,c=t;return[`M ${o+c*.5} ${n-c*.85}`,`C ${e.c1[0]+c*.5} ${e.c1[1]-c*.85}, ${e.c2[0]-t} ${e.c2[1]}, ${e.p3[0]-t} ${e.p3[1]}`,`A ${a} ${a} 0 0 0 ${e.xL+e.r} ${e.yL+t}`,`L ${e.w+re+40} ${e.yL+t}`].join(" ")}const K=[{at:-41,w:30},{at:-4,w:34},{at:37,w:38}],Ke=K.length-1,Ve=1;function Xe(e){const t=N.c(14),{index:o,held:n,style:a}=e,c=K[o],i=-c.w/2;let d;t[0]!==c.w||t[1]!==i?(d=s.jsx("rect",{x:i,y:"-7",width:c.w,height:"14",rx:"3",fill:"currentColor"}),t[0]=c.w,t[1]=i,t[2]=d):d=t[2];let r;t[3]!==c.w||t[4]!==o?(r=o===Ke&&s.jsx("rect",{x:c.w/2-6,y:"-4",width:"4",height:"8",rx:"1",className:"text-primary",fill:"currentColor"}),t[3]=c.w,t[4]=o,t[5]=r):r=t[5];let l;t[6]!==n||t[7]!==o?(l=o===Ve&&s.jsx("rect",{x:"-5",y:"-25",width:"10",height:"10",transform:"rotate(45 0 -20)",className:z("transition-opacity duration-300",n?"opacity-100":"opacity-0"),fill:"rgb(239 68 68)"}),t[6]=n,t[7]=o,t[8]=l):l=t[8];let m;return t[9]!==a||t[10]!==d||t[11]!==r||t[12]!==l?(m=s.jsxs("g",{className:"text-foreground/85",style:a,children:[d,r,l]}),t[9]=a,t[10]=d,t[11]=r,t[12]=l,t[13]=m):m=t[13],m}function Ye(e){const t=N.c(3),{children:o}=e,{stage:n}=We();let a;return t[0]!==o||t[1]!==n?(a=s.jsx(de.Provider,{value:n,children:o}),t[0]=o,t[1]=n,t[2]=a):a=t[2],a}function Ze(e){const t=N.c(21),{children:o}=e,n=v.useRef(null),[a,c]=v.useState(null),i=me(),d=he(),r=v.useId();let l,m;t[0]===Symbol.for("react.memo_cache_sentinel")?(l=()=>{const p=n.current;if(!p)return;const w=()=>c(Qe(p));w();const j=new ResizeObserver(w);return j.observe(p),()=>j.disconnect()},m=[],t[0]=l,t[1]=m):(l=t[0],m=t[1]),v.useEffect(l,m);const f=i==="held";let h,g,u;if(t[2]!==d||t[3]!==f||t[4]!==a||t[5]!==r||t[6]!==i){let p;if(a)e:switch(i){case"arriving":{p={distance:0};break e}case"approaching":case"braking":case"held":case"caution":{p={distance:a.stop,transition:`offset-distance ${ze}ms cubic-bezier(.45,.05,.25,1)`};break e}case"clear":{p={distance:a.stop+120,transition:"offset-distance 900ms ease-in-out"};break e}case"departed":p={distance:a.total,transition:`offset-distance ${Fe}ms cubic-bezier(.4,0,.8,.6)`}}const w=j=>a&&p?{offsetPath:`path("${Q(a,0)}")`,offsetRotate:"auto",offsetDistance:`${p.distance+K[j].at}px`,transition:p.transition}:void 0;h=n,g="relative overflow-hidden",u=a&&s.jsxs("svg",{"aria-hidden":!0,className:"text-foreground/30 pointer-events-none absolute inset-0 z-0 h-full w-full [mask-image:linear-gradient(to_right,black_86%,transparent)]",width:a.w,height:a.h,viewBox:`0 0 ${a.w} ${a.h}`,children:[s.jsxs("defs",{children:[s.jsxs("linearGradient",{id:`${r}-fade`,gradientUnits:"userSpaceOnUse",x1:"0",y1:a.yFadeTop,x2:"0",y2:a.yFadeFull,children:[s.jsx("stop",{offset:"0",stopColor:"white",stopOpacity:"0"}),s.jsx("stop",{offset:"1",stopColor:"white",stopOpacity:"1"})]}),s.jsx("mask",{id:r,maskUnits:"userSpaceOnUse",x:"0",y:"0",width:a.w,height:a.h,children:s.jsx("rect",{width:a.w,height:a.h,fill:`url(#${r}-fade)`})})]}),s.jsxs("g",{mask:`url(#${r})`,children:[s.jsx("path",{d:Q(a,0),fill:"none",stroke:"currentColor",strokeWidth:"30",strokeDasharray:"4 18"}),s.jsx("path",{d:Q(a,le/2),fill:"none",stroke:"currentColor",strokeWidth:"2.5"}),s.jsx("path",{d:Q(a,-le/2),fill:"none",stroke:"currentColor",strokeWidth:"2.5"}),d&&K.map((j,_)=>s.jsx(Xe,{index:_,held:f,style:w(_)},_))]})]}),t[2]=d,t[3]=f,t[4]=a,t[5]=r,t[6]=i,t[7]=h,t[8]=g,t[9]=u}else h=t[7],g=t[8],u=t[9];let b;t[10]!==o?(b=s.jsx("div",{className:"relative z-10",children:o}),t[10]=o,t[11]=b):b=t[11];let x;t[12]!==a||t[13]!==i?(x=a&&s.jsx(s.Fragment,{children:s.jsx("div",{className:"pointer-events-none absolute z-10 h-0 w-0",style:{left:a.xSignal,top:a.yL},"aria-hidden":!0,children:s.jsx(Ae,{aspect:He[i],className:"left-0 md:left-0"})})}),t[12]=a,t[13]=i,t[14]=x):x=t[14];let y;return t[15]!==h||t[16]!==g||t[17]!==u||t[18]!==b||t[19]!==x?(y=s.jsxs("div",{ref:h,className:g,children:[u,b,x]}),t[15]=h,t[16]=g,t[17]=u,t[18]=b,t[19]=x,t[20]=y):y=t[20],y}function et(e){const t=N.c(11),{signedIn:o}=e;let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsxs("p",{className:"text-primary mb-5 flex items-baseline justify-center gap-3 font-mono text-[11px] tracking-[0.2em] uppercase",children:["Built by",s.jsx("a",{href:"https://rebulk.com",className:"text-foreground hover:text-primary transition-colors",children:s.jsx(_e,{className:"h-2.5 w-auto"})})]}),t[0]=n):n=t[0];let a,c;t[1]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsxs("h1",{className:"text-5xl font-black tracking-tight text-balance sm:text-6xl",children:[Ce,s.jsx("span",{className:"text-primary",children:Ee})]}),c=s.jsx("p",{className:"text-muted-foreground mx-auto mt-5 max-w-xl text-lg text-balance",children:$e}),t[1]=a,t[2]=c):(a=t[1],c=t[2]);let i;t[3]!==o?(i=o?s.jsx(ne,{asChild:!0,size:"lg",children:s.jsx(ae,{href:"/dashboard",children:"Open dashboard"})}):s.jsx(ne,{asChild:!0,size:"lg",children:s.jsx(ae,{href:ue(),children:"Get started"})}),t[3]=o,t[4]=i):i=t[4];let d;t[5]===Symbol.for("react.memo_cache_sentinel")?(d=s.jsx(ne,{asChild:!0,variant:"outline",size:"lg",children:s.jsx(ae,{href:pe(),children:"Read the docs"})}),t[5]=d):d=t[5];let r;t[6]!==i?(r=s.jsxs("div",{className:"mt-8 flex items-center justify-center gap-3",children:[i,d]}),t[6]=i,t[7]=r):r=t[7];let l;t[8]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsx("div",{className:"mt-6 h-32","data-hero-strip":!0}),t[8]=l):l=t[8];let m;return t[9]!==r?(m=s.jsx(Ze,{children:s.jsxs("section",{className:"relative mx-auto max-w-3xl px-6 pt-14 pb-0 text-center",children:[n,a,c,r,l]})}),t[9]=r,t[10]=m):m=t[10],m}const tt=[{comment:"# 1. add the gem",lines:["bundle add railwatch"]},{comment:"# 2. initializer, routes, Kamal hook, browser client, matchers",lines:["bin/rails generate railwatch:install --token=rw_… --kamal-secrets"]},{comment:"# 3. check every piece is wired up",lines:["bin/rails railwatch:doctor"]},{comment:"# 4. connect your editor's assistant",lines:["bin/rails railwatch:mcp"]}];function st(){const e=N.c(4);let t,o,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx("p",{className:"text-primary mb-2 font-mono text-[11px] tracking-[0.2em] uppercase",children:"Install"}),o=s.jsx("h2",{className:"text-2xl font-bold tracking-tight",children:"Five-minute install"}),n=s.jsx("p",{className:"text-muted-foreground mt-2",children:"One gem, one generator, no dashboard to build. The generator finishes by running the doctor, so you see a ✓ or a ✗ per check before you deploy."}),e[0]=t,e[1]=o,e[2]=n):(t=e[0],o=e[1],n=e[2]);let a;return e[3]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsxs("section",{className:"mx-auto max-w-2xl px-6 pb-16 text-center",children:[t,o,n,s.jsx(oe,{className:"mt-6 text-left",children:s.jsx(ie,{className:"space-y-1 font-mono text-sm",children:tt.map(at)})})]}),e[3]=a):a=e[3],a}function at(e,t){return s.jsxs("div",{className:t>0?"pt-3":void 0,children:[s.jsx("p",{className:"text-muted-foreground",children:e.comment}),e.lines.map(nt)]},e.comment)}function nt(e){return s.jsx("p",{className:"break-all",children:e},e)}const ce=[{type:"query",id:1,offset:2,duration:4.2,label:"SELECT users",stage:"action",sql:'SELECT "users".* FROM "users" WHERE "users"."id" = ?'},{type:"cache_event",id:2,offset:8,duration:.4,label:"read widgets/42",stage:"action",detail:{op:"read",key:"widgets/42"}},{type:"query",id:3,offset:11,duration:12.8,label:"SELECT widgets",stage:"action",sql:'SELECT "widgets".* FROM "widgets" WHERE "widgets"."account_id" = ?'},{type:"outgoing_request",id:4,offset:26,duration:40.1,label:"GET api.stripe.com",stage:"action",detail:{method:"GET",url:"https://api.stripe.com/v1/charges",status:200}},{type:"view_render",id:5,offset:68,duration:6.5,label:"widgets/index.html.erb",stage:"render"},{type:"enqueued_job",id:6,offset:70,duration:null,label:"WidgetSyncJob",stage:"render"}],rt={type:"exception",id:7,offset:66.4,duration:null,label:"NoMethodError: undefined method `total' for nil",stage:"action",source:"app/controllers/widgets_controller.rb:31"};function ot(){const e=N.c(68),t=me(),o=t==="braking"||t==="held",n=t==="held";let a;e[0]!==n?(a=n?[...ce,rt]:ce,e[0]=n,e[1]=a):a=e[1];const c=a,i=t==="held"?"new":t==="caution"||t==="clear"?"resolved":null;let d;e[2]===Symbol.for("react.memo_cache_sentinel")?(d=new Date().toISOString(),e[2]=d):d=e[2];let r;e[3]!==o?(r=s.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[s.jsx(ve,{lastSeenAt:d,erroring:o}),"storefront · production"]}),e[3]=o,e[4]=r):r=e[4];const l=n?"bg-danger/15 text-danger":"bg-live/15 text-live";let m;e[5]!==l?(m=z("rounded px-1.5 py-0.5 font-semibold transition-colors duration-500",l),e[5]=l,e[6]=m):m=e[6];const f=n?"500":"200";let h;e[7]!==m||e[8]!==f?(h=s.jsxs("span",{className:"text-muted-foreground flex items-center gap-2 font-mono text-xs",children:["GET /widgets",s.jsx("span",{className:m,children:f})]}),e[7]=m,e[8]=f,e[9]=h):h=e[9];const g=i?"translate-x-0":"translate-x-[calc(100%+2px)]";let u;e[10]!==g?(u=z("bg-popover absolute right-0 flex items-center gap-2 border-l px-3 text-xs shadow-[-12px_0_16px_-8px_rgba(0,0,0,.5)] transition-transform duration-500 ease-out motion-reduce:transition-none","max-md:bottom-2.5 max-md:gap-1.5 max-md:rounded-l-md max-md:border-y max-md:px-2.5 max-md:py-1.5 max-md:text-[11px] md:inset-y-0",g),e[10]=g,e[11]=u):u=e[11];const b=i==="resolved"?"bg-live/15 text-live":"bg-danger/15 text-danger";let x;e[12]!==b?(x=z("flex size-6 shrink-0 items-center justify-center rounded-full",b),e[12]=b,e[13]=x):x=e[13];let y;e[14]!==i?(y=i==="resolved"?s.jsx(Le,{className:"size-3.5"}):s.jsx(Ne,{className:"size-3.5"}),e[14]=i,e[15]=y):y=e[15];let p;e[16]!==x||e[17]!==y?(p=s.jsx("span",{className:x,children:y}),e[16]=x,e[17]=y,e[18]=p):p=e[18];const w=i==="resolved"?"SF-142 resolved":"New issue SF-142";let j;e[19]!==w?(j=s.jsx("span",{className:"block leading-tight font-medium",children:w}),e[19]=w,e[20]=j):j=e[20];const _=i==="resolved"?"Slack #storefront-alerts · just now":"Sent to Slack #storefront-alerts";let S;e[21]!==_?(S=s.jsx("span",{className:"max-md:hidden",children:_}),e[21]=_,e[22]=S):S=e[22];let C;e[23]===Symbol.for("react.memo_cache_sentinel")?(C=s.jsx("span",{className:"md:hidden",children:"Slack #storefront-alerts"}),e[23]=C):C=e[23];let E;e[24]!==S?(E=s.jsxs("span",{className:"text-muted-foreground block leading-tight",children:[S,C]}),e[24]=S,e[25]=E):E=e[25];let $;e[26]!==j||e[27]!==E?($=s.jsxs("span",{className:"min-w-0",children:[j,E]}),e[26]=j,e[27]=E,e[28]=$):$=e[28];let A;e[29]!==p||e[30]!==$||e[31]!==u?(A=s.jsxs("div",{"aria-live":"polite",className:u,children:[p,$]}),e[29]=p,e[30]=$,e[31]=u,e[32]=A):A=e[32];let R;e[33]!==r||e[34]!==A||e[35]!==h?(R=s.jsxs(ge,{className:"relative flex-row items-center justify-between overflow-hidden border-b pb-6 max-md:flex-wrap max-md:gap-y-3",children:[r,h,A]}),e[33]=r,e[34]=A,e[35]=h,e[36]=R):R=e[36];let F;e[37]===Symbol.for("react.memo_cache_sentinel")?(F=s.jsx(J,{label:"p50 latency",value:"42ms",hint:"last 24h"}),e[37]=F):F=e[37];const V=n?"2.1%":"0.4%",X=n?"destructive":"success",Y=n?"3 of 143 requests":"last 24h";let T;e[38]!==V||e[39]!==X||e[40]!==Y?(T=s.jsx(J,{label:"error rate",value:V,tone:X,hint:Y}),e[38]=V,e[39]=X,e[40]=Y,e[41]=T):T=e[41];let H;e[42]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(J,{label:"requests/min",value:"1.2k"}),e[42]=H):H=e[42];const Z=n?"1":"0",ee=n?"destructive":"success";let I;e[43]!==Z||e[44]!==ee?(I=s.jsx(J,{label:"open issues",value:Z,tone:ee}),e[43]=Z,e[44]=ee,e[45]=I):I=e[45];let L;e[46]!==T||e[47]!==I?(L=s.jsxs(Re,{children:[F,T,H,I]}),e[46]=T,e[47]=I,e[48]=L):L=e[48];const te=n?"border-danger/40 bg-danger/5":"bg-muted/30";let M;e[49]!==te?(M=z("flex items-center justify-between gap-3 rounded-md border px-3 py-2 text-xs transition-colors duration-500",te),e[49]=te,e[50]=M):M=e[50];let B;e[51]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsxs("div",{className:"flex min-w-0 items-center gap-3",children:[s.jsx("span",{className:"shrink-0 font-mono font-semibold",children:"SF-142"}),s.jsx("span",{className:"truncate",children:"NoMethodError in WidgetsController#index"})]}),e[51]=B):B=e[51];let W;e[52]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx("span",{className:"hidden sm:inline",children:"3 events"}),e[52]=W):W=e[52];const se=n?"open":"resolved";let P;e[53]!==se?(P=s.jsxs("div",{className:"text-muted-foreground flex shrink-0 items-center gap-3 font-mono",children:[W,s.jsx(Te,{status:se})]}),e[53]=se,e[54]=P):P=e[54];let D;e[55]!==M||e[56]!==P?(D=s.jsxs("div",{className:M,children:[B,P]}),e[55]=M,e[56]=P,e[57]=D):D=e[57];let G;e[58]===Symbol.for("react.memo_cache_sentinel")?(G={action:66,render:24},e[58]=G):G=e[58];let O;e[59]!==c?(O=s.jsx(Ie,{entries:c,total:90,stages:G}),e[59]=c,e[60]=O):O=e[60];let q;e[61]!==L||e[62]!==D||e[63]!==O?(q=s.jsxs(ie,{className:"grid gap-6",children:[L,D,O]}),e[61]=L,e[62]=D,e[63]=O,e[64]=q):q=e[64];let U;return e[65]!==R||e[66]!==q?(U=s.jsx("section",{className:"relative z-20 mx-auto -mt-8 max-w-5xl px-6 pb-16 md:-mt-4",children:s.jsxs(oe,{className:"overflow-hidden",children:[R,q]})}),e[65]=R,e[66]=q,e[67]=U):U=e[67],U}const it=110;function k(e){const t=N.c(8),{step:o,className:n,children:a}=e,c=o===void 0?0:o;let i;t[0]!==n?(i=z("motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-bottom-2 motion-safe:fill-mode-both motion-safe:duration-700 motion-safe:ease-out",n),t[0]=n,t[1]=i):i=t[1];const d=`${c*it}ms`;let r;t[2]!==d?(r={animationDelay:d},t[2]=d,t[3]=r):r=t[3];let l;return t[4]!==a||t[5]!==i||t[6]!==r?(l=s.jsx("div",{className:i,style:r,children:a}),t[4]=a,t[5]=i,t[6]=r,t[7]=l):l=t[7],l}function Nt(){const e=N.c(15),{auth:t}=fe().props,o=!!t.user;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(xe,{title:"Railwatch — monitoring for Rails apps"}),e[0]=n):n=e[0];let a;e[1]!==o?(a=s.jsx(k,{step:0,children:s.jsx(Se,{signedIn:o})}),e[1]=o,e[2]=a):a=e[2];let c;e[3]!==o?(c=s.jsx(k,{step:1,children:s.jsx(et,{signedIn:o})}),e[3]=o,e[4]=c):c=e[4];let i;e[5]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsx(k,{step:2,children:s.jsx(ot,{})}),e[5]=i):i=e[5];let d;e[6]!==c?(d=s.jsxs(Ye,{children:[c,i]}),e[6]=c,e[7]=d):d=e[7];let r;e[8]===Symbol.for("react.memo_cache_sentinel")?(r=s.jsx(k,{step:3,children:s.jsx(Oe,{})}),e[8]=r):r=e[8];let l;e[9]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsx(k,{step:4,children:s.jsx(Pe,{})}),e[9]=l):l=e[9];let m;e[10]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx(k,{step:4,children:s.jsx(st,{})}),e[10]=m):m=e[10];let f;e[11]===Symbol.for("react.memo_cache_sentinel")?(f=s.jsx(k,{step:5,children:s.jsx(ke,{})}),e[11]=f):f=e[11];let h;return e[12]!==a||e[13]!==d?(h=s.jsxs(s.Fragment,{children:[n,s.jsxs("div",{className:"dark bg-background text-foreground min-h-screen",children:[a,d,r,l,m,f]})]}),e[12]=a,e[13]=d,e[14]=h):h=e[14],h}export{Nt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,u as F,j as t,e as I,A as R,r as A,L as $}from"./inertia-TViv6kNv.js";import{E as G}from"./empty-state-6j_0AaQQ.js";import{F as H}from"./filter-bar-9SU5NrzX.js";import{P as O,E as T}from"./env-layout-DrT8rO6P.js";import{S as J}from"./series-chart-DaFPefku.js";import{S as q}from"./stat-s4RpOS9w.js";import{B as L}from"./badge-Daw4Hvr8.js";import{C as K,a as M}from"./card-BX_3HXcJ.js";import{e as Q}from"./execution-path-CzgBUi5e.js";import{c as P,w as z}from"./format-B9SDkrWj.js";import"./app-wordmark-nbjkzxwQ.js";import"./app-layout-yh-sPWgK.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./checkbox-D3aRSsBj.js";import"./label-COUKWqE_.js";import"./segmented-h1VdDTqE.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./arrow-up-DVtOGdVA.js";function U(i){const e=B.c(51),{d:s,a:g,e:j}=i,[_,w]=A.useState(!1);let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f=()=>w(V),e[0]=f):f=e[0];let l;e[1]!==s.gem_name?(l=s.gem_name&&t.jsx(L,{variant:"secondary",className:"font-mono",children:s.gem_name}),e[1]=s.gem_name,e[2]=l):l=e[2];let r;e[3]!==s.horizon?(r=s.horizon&&t.jsxs(L,{variant:"outline",className:"font-mono",children:["removed in ",s.horizon]}),e[3]=s.horizon,e[4]=r):r=e[4];let a;e[5]!==l||e[6]!==r?(a=t.jsxs("div",{className:"flex items-center gap-2",children:[l,r]}),e[5]=l,e[6]=r,e[7]=a):a=e[7];let n;e[8]!==s.message?(n=t.jsx("p",{className:"mt-1 font-mono text-xs whitespace-pre-wrap",children:s.message}),e[8]=s.message,e[9]=n):n=e[9];let o;e[10]!==s.source?(o=s.source&&t.jsx("p",{className:"text-muted-foreground mt-1 font-mono text-xs",children:s.source}),e[10]=s.source,e[11]=o):o=e[11];let c;e[12]!==a||e[13]!==n||e[14]!==o?(c=t.jsxs("div",{className:"min-w-0 flex-1",children:[a,n,o]}),e[12]=a,e[13]=n,e[14]=o,e[15]=c):c=e[15];let x;e[16]!==s.sparkline?(x=t.jsx(J,{data:s.sparkline,className:"h-10 w-32"}),e[16]=s.sparkline,e[17]=x):x=e[17];let m;e[18]!==s.count?(m=P(s.count),e[18]=s.count,e[19]=m):m=e[19];let d;e[20]!==m?(d=t.jsx("div",{className:"text-lg font-semibold tabular-nums",children:m}),e[20]=m,e[21]=d):d=e[21];let p;e[22]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("div",{className:"text-muted-foreground text-xs",children:"occurrences"}),e[22]=p):p=e[22];let u;e[23]!==d?(u=t.jsxs("div",{className:"text-right",children:[d,p]}),e[23]=d,e[24]=u):u=e[24];let h;e[25]!==u||e[26]!==x?(h=t.jsxs("div",{className:"flex shrink-0 items-center gap-4",children:[x,u]}),e[25]=u,e[26]=x,e[27]=h):h=e[27];let v;e[28]!==h||e[29]!==c?(v=t.jsxs("button",{type:"button",onClick:f,className:"flex flex-wrap items-start justify-between gap-4 text-left",children:[c,h]}),e[28]=h,e[29]=c,e[30]=v):v=e[30];let N;e[31]!==s.first_seen_at?(N=z(s.first_seen_at),e[31]=s.first_seen_at,e[32]=N):N=e[32];let b;e[33]!==N?(b=t.jsxs("span",{children:["First seen ",N]}),e[33]=N,e[34]=b):b=e[34];let y;e[35]!==s.last_seen_at?(y=z(s.last_seen_at),e[35]=s.last_seen_at,e[36]=y):y=e[36];let S;e[37]!==y?(S=t.jsxs("span",{children:["Last seen ",y]}),e[37]=y,e[38]=S):S=e[38];let k;e[39]!==b||e[40]!==S?(k=t.jsxs("div",{className:"text-muted-foreground flex gap-4 text-xs",children:[b,S]}),e[39]=b,e[40]=S,e[41]=k):k=e[41];let E;e[42]!==g||e[43]!==s.occurrences||e[44]!==j||e[45]!==_?(E=_&&t.jsx("div",{className:"mt-2 overflow-hidden rounded-lg border",children:t.jsx("table",{className:"w-full text-xs",children:t.jsx("tbody",{children:s.occurrences.map(D=>t.jsxs("tr",{className:"border-t first:border-t-0",children:[t.jsx("td",{className:"px-3 py-1.5 tabular-nums",children:z(D.occurred_at)}),t.jsx("td",{className:"px-3 py-1.5",children:D.execution_id?t.jsx($,{className:"font-mono hover:underline",href:Q({applicationId:g,environmentId:j,source:D.execution_source,executionId:D.execution_id}),children:D.execution_preview}):t.jsx("span",{className:"text-muted-foreground",children:"–"})})]},D.id))})})}),e[42]=g,e[43]=s.occurrences,e[44]=j,e[45]=_,e[46]=E):E=e[46];let C;return e[47]!==v||e[48]!==k||e[49]!==E?(C=t.jsx(K,{children:t.jsxs(M,{className:"flex flex-col gap-2 pt-4",children:[v,k,E]})}),e[47]=v,e[48]=k,e[49]=E,e[50]=C):C=e[50],C}function V(i){return!i}function je(i){const e=B.c(33),{environment:s,window:g}=F().props,j=s.application_id,_=s.id;let w;e[0]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx(O,{title:"Deprecations",description:"ActiveSupport::Deprecation warnings, grouped by gem and message."}),e[0]=w):w=e[0];let f;e[1]!==i.distinct?(f=P(i.distinct),e[1]=i.distinct,e[2]=f):f=e[2];let l;e[3]!==f?(l=t.jsx(q,{label:"Distinct deprecations",value:f}),e[3]=f,e[4]=l):l=e[4];let r;e[5]!==i.total_occurrences?(r=P(i.total_occurrences),e[5]=i.total_occurrences,e[6]=r):r=e[6];let a;e[7]!==r?(a=t.jsx(q,{label:"Total occurrences",value:r}),e[7]=r,e[8]=a):a=e[8];let n;e[9]!==i.new_this_window?(n=P(i.new_this_window),e[9]=i.new_this_window,e[10]=n):n=e[10];let o;e[11]!==n?(o=t.jsx(q,{label:"New this window",value:n}),e[11]=n,e[12]=o):o=e[12];let c;e[13]!==l||e[14]!==a||e[15]!==o?(c=t.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[l,a,o]}),e[13]=l,e[14]=a,e[15]=o,e[16]=c):c=e[16];let x;e[17]===Symbol.for("react.memo_cache_sentinel")?(x=[{key:"gem",label:"Gem"}],e[17]=x):x=e[17];let m;e[18]!==j||e[19]!==_||e[20]!==g?(m=h=>I.visit(R(j,_,{window:g,q:h||void 0}),{preserveState:!0}),e[18]=j,e[19]=_,e[20]=g,e[21]=m):m=e[21];let d;e[22]!==i.q||e[23]!==m?(d=t.jsx(H,{value:i.q,fields:x,onChange:m,placeholder:"gem:rails deprecated method"}),e[22]=i.q,e[23]=m,e[24]=d):d=e[24];let p;e[25]!==j||e[26]!==_||e[27]!==i.deprecations?(p=i.deprecations.length===0?t.jsx(G,{title:"No deprecations in this window."}):t.jsx("div",{className:"flex flex-col gap-3",children:i.deprecations.map(h=>t.jsx(U,{d:h,a:j,e:_},h.group_hash))}),e[25]=j,e[26]=_,e[27]=i.deprecations,e[28]=p):p=e[28];let u;return e[29]!==d||e[30]!==p||e[31]!==c?(u=t.jsxs(T,{title:"Deprecations",children:[w,c,d,p]}),e[29]=d,e[30]=p,e[31]=c,e[32]=u):u=e[32],u}export{je as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as te,u as se,j as s,e as X,am as Y}from"./inertia-TViv6kNv.js";import{V as re,D as ie}from"./chart-panel-Cb4S_ej_.js";import{D as Z}from"./data-table-iv1bdF6u.js";import{E as le}from"./empty-state-6j_0AaQQ.js";import{F as ne}from"./filter-bar-9SU5NrzX.js";import{E as oe,P as ae}from"./env-layout-DrT8rO6P.js";import{u as ce,P as me}from"./percentile-picker-gFZCXtdb.js";import{S as J}from"./sort-header-DpFzXblu.js";import{S as ue}from"./sparkline-cell-C3-5vFkP.js";import{a as de,S as pe}from"./stat-s4RpOS9w.js";import{S as fe}from"./status-badge-8jVV-LA4.js";import{c as ee,m as o,p as he,w as xe,b as ge}from"./format-B9SDkrWj.js";import{E as be}from"./app-layout-yh-sPWgK.js";import"./series-chart-DaFPefku.js";import"./chart-hover-Vy52H4uD.js";import"./chart-B14-N9g7.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./arrow-up-DVtOGdVA.js";import"./checkbox-D3aRSsBj.js";const ye=["lcp","cls","inp","ttfb"],je={lcp:"LCP",cls:"CLS",inp:"INP",ttfb:"TTFB"},ve={good:"success","needs-improvement":"warning",poor:"destructive"},_e=(t,e)=>t==="cls"?e.toFixed(2):o(e),Se=t=>[t.lcp===null?null:`LCP ${o(t.lcp)}`,t.inp===null?null:`INP ${o(t.inp)}`,t.cls===null?null:`CLS ${t.cls.toFixed(2)}`].filter(e=>e!==null).join(" · ");function ut(t){const e=te.c(80),{environment:Q,window:a}=se().props,{percentile:r}=ce(),c=Q.application_id,m=Q.id;let L;e[0]!==c||e[1]!==m||e[2]!==t.dir||e[3]!==t.sort||e[4]!==a?(L=l=>X.visit(Y(c,m,{window:a,sort:l,dir:t.sort===l&&t.dir==="desc"?"asc":"desc"}),{preserveState:!0}),e[0]=c,e[1]=m,e[2]=t.dir,e[3]=t.sort,e[4]=a,e[5]=L):L=e[5];const i=L;let u,d,n,p;if(e[6]!==t.vitals){const l=ye.filter(E=>t.vitals[E]);u=oe,d="Visits",e[11]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(ae,{title:"Inertia visits",description:"Page-load timing measured in the browser: from router start to finish, per component, with prop payload size.",actions:s.jsx(me,{})}),e[11]=n):n=e[11],p=l.length>0?s.jsx(de,{children:l.map(E=>{const K=t.vitals[E];return s.jsx(pe,{label:je[E],value:_e(E,K.value),tone:ve[K.rating],hint:`${K.rating} · p75 of ${ee(K.samples)}`},E)})}):s.jsxs("p",{className:"text-muted-foreground text-xs",children:["Web vitals are reported by the browser client from the initial page load; update app/frontend/lib/railwatch.ts from"," ",s.jsx("span",{className:"font-mono",children:"bin/rails generate railwatch:install"}),"."]}),e[6]=t.vitals,e[7]=u,e[8]=d,e[9]=n,e[10]=p}else u=e[7],d=e[8],n=e[9],p=e[10];let f;e[12]!==t.series?(f=s.jsx(re,{legend:"outcome",label:"Visits",seriesLabel:"Visits",data:t.series}),e[12]=t.series,e[13]=f):f=e[13];let h;e[14]!==t.series||e[15]!==r?(h=s.jsx(ie,{label:"Duration",data:t.series,percentile:r}),e[14]=t.series,e[15]=r,e[16]=h):h=e[16];let x;e[17]!==f||e[18]!==h?(x=s.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[f,h]}),e[17]=f,e[18]=h,e[19]=x):x=e[19];let M,O,D;e[20]===Symbol.for("react.memo_cache_sentinel")?(M=s.jsx(le,{icon:be,title:"No visits yet",description:"Call startRailwatch() from your Inertia entrypoint to track page visits."}),O={key:"c",header:"Component",cell:Ie},D={key:"trend",hideOnMobile:!0,header:"Trend",cell:Fe},e[20]=M,e[21]=O,e[22]=D):(M=e[20],O=e[21],D=e[22]);const W=t.sort==="count",H=t.dir==="asc"?"asc":"desc";let g;e[23]!==i?(g=()=>i("count"),e[23]=i,e[24]=g):g=e[24];let b;e[25]!==W||e[26]!==H||e[27]!==g?(b={key:"n",header:s.jsx(J,{label:"Visits",active:W,dir:H,onClick:g}),align:"right",cell:$e},e[25]=W,e[26]=H,e[27]=g,e[28]=b):b=e[28];let T;e[29]===Symbol.for("react.memo_cache_sentinel")?(T={key:"e",hideOnMobile:!0,header:"Errors",align:"right",cell:Te},e[29]=T):T=e[29];const U=t.sort==="avg",z=t.dir==="asc"?"asc":"desc";let y;e[30]!==i?(y=()=>i("avg"),e[30]=i,e[31]=y):y=e[31];let j;e[32]!==U||e[33]!==z||e[34]!==y?(j={key:"avg",hideOnMobile:!0,header:s.jsx(J,{label:"Avg",active:U,dir:z,onClick:y}),align:"right",cell:De},e[32]=U,e[33]=z,e[34]=y,e[35]=j):j=e[35];let $,F;e[36]===Symbol.for("react.memo_cache_sentinel")?($={key:"lcp",hideOnMobile:!0,header:"LCP",align:"right",cell:Oe},F={key:"inp",hideOnMobile:!0,header:"INP",align:"right",cell:Me},e[36]=$,e[37]=F):($=e[36],F=e[37]);const A=t.sort===r,G=t.dir==="asc"?"asc":"desc";let v;e[38]!==r||e[39]!==i?(v=()=>i(r),e[38]=r,e[39]=i,e[40]=v):v=e[40];let _;e[41]!==r||e[42]!==A||e[43]!==G||e[44]!==v?(_=s.jsx(J,{label:r,active:A,dir:G,onClick:v}),e[41]=r,e[42]=A,e[43]=G,e[44]=v,e[45]=_):_=e[45];let S;e[46]!==r?(S=l=>s.jsx("span",{className:"font-semibold",children:o(l[r])}),e[46]=r,e[47]=S):S=e[47];let k;e[48]!==r||e[49]!==_||e[50]!==S?(k={key:r,header:_,align:"right",cell:S},e[48]=r,e[49]=_,e[50]=S,e[51]=k):k=e[51];let P;e[52]!==b||e[53]!==j||e[54]!==k?(P=[O,D,b,T,j,$,F,k],e[52]=b,e[53]=j,e[54]=k,e[55]=P):P=e[55];let w;e[56]!==t.components||e[57]!==P?(w=s.jsx(Z,{rows:t.components,rowKey:Re,empty:M,columns:P}),e[56]=t.components,e[57]=P,e[58]=w):w=e[58];let I;e[59]===Symbol.for("react.memo_cache_sentinel")?(I=s.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[59]=I):I=e[59];let R;e[60]===Symbol.for("react.memo_cache_sentinel")?(R=[{key:"component",label:"Component"}],e[60]=R):R=e[60];let C;e[61]!==c||e[62]!==m||e[63]!==a?(C=l=>X.visit(Y(c,m,{window:a,q:l||void 0}),{preserveState:!0}),e[61]=c,e[62]=m,e[63]=a,e[64]=C):C=e[64];let N;e[65]!==t.q||e[66]!==C?(N=s.jsx(ne,{value:t.q,fields:R,onChange:C,placeholder:"component:Widgets/Show"}),e[65]=t.q,e[66]=C,e[67]=N):N=e[67];let q;e[68]===Symbol.for("react.memo_cache_sentinel")?(q=[{key:"when",header:"When",cell:Ee},{key:"st",header:"",cell:Ve},{key:"c",header:"Component",cell:Ne},{key:"u",hideOnMobile:!0,header:"URL",cell:Ce},{key:"v",hideOnMobile:!0,header:"Vitals",cell:we},{key:"b",hideOnMobile:!0,header:"Props",align:"right",cell:Pe},{key:"d",header:"Duration",align:"right",cell:ke}],e[68]=q):q=e[68];let V;e[69]!==t.recent?(V=s.jsx(Z,{rows:t.recent,rowKey:Le,columns:q}),e[69]=t.recent,e[70]=V):V=e[70];let B;return e[71]!==u||e[72]!==d||e[73]!==n||e[74]!==w||e[75]!==p||e[76]!==N||e[77]!==V||e[78]!==x?(B=s.jsxs(u,{title:d,children:[n,p,x,w,I,N,V]}),e[71]=u,e[72]=d,e[73]=n,e[74]=w,e[75]=p,e[76]=N,e[77]=V,e[78]=x,e[79]=B):B=e[79],B}function ke(t){return o(t.duration)}function Pe(t){return ge(t.props_bytes)}function we(t){return s.jsx("span",{className:"text-muted-foreground font-mono text-[11px] tabular-nums",children:Se(t)})}function Ce(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.method.toUpperCase()," ",t.url]})}function Ne(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.component,t.partial&&s.jsxs("span",{className:"text-muted-foreground",children:[" ","(partial: ",t.only.join(", "),")"]})]})}function Ve(t){return s.jsx(fe,{label:t.status,outcome:t.status==="error"?"failed":t.status==="success"?"processed":void 0})}function Ee(t){return s.jsx("span",{className:"text-xs",children:xe(t.occurred_at)})}function Le(t){return t.id}function Me(t){return o(t.inp)}function Oe(t){return o(t.lcp)}function De(t){return o(t.avg)}function Te(t){return he(t.errors,t.count)}function $e(t){return ee(t.count)}function Fe(t){return s.jsx(ue,{data:t.sparkline})}function Ie(t){return s.jsx("span",{className:"font-mono text-xs",children:t.name})}function Re(t){return t.group_hash}export{ut as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as M,u as R,j as n,t as A,e as D,L}from"./inertia-TViv6kNv.js";import{D as N}from"./data-table-iv1bdF6u.js";import{E as O}from"./empty-state-6j_0AaQQ.js";import{P,E as H}from"./env-layout-DrT8rO6P.js";import{c as K,m as j,w as $}from"./format-B9SDkrWj.js";import{J as E}from"./app-layout-yh-sPWgK.js";import"./chart-hover-Vy52H4uD.js";import"./badge-Daw4Hvr8.js";import"./app-wordmark-nbjkzxwQ.js";import"./live-dot-ChfUtY3p.js";import"./index-OqI59zPb.js";import"./index-1ol1-QWI.js";import"./segmented-h1VdDTqE.js";import"./label-COUKWqE_.js";import"./checkbox-D3aRSsBj.js";function me(t){const e=M.c(25),{environment:S}=R().props,w=S.application_id,b=S.id;let c;e[0]!==w||e[1]!==b?(c=r=>r.execution_id?A(w,b,r.execution_id):null,e[0]=w,e[1]=b,e[2]=c):c=e[2];const o=c;let m;e[3]===Symbol.for("react.memo_cache_sentinel")?(m=n.jsx(P,{title:"Storage",description:"Active Storage service operations: uploads, downloads, deletes, URL generation, analysis, and transforms."}),e[3]=m):m=e[3];let p,u;e[4]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsx(O,{icon:E,title:"No storage operations in this window",description:"Active Storage reads and writes instrumented by the gem appear here."}),u=[{key:"s",header:"Service",cell:F},{key:"o",header:"Operation",cell:B},{key:"n",header:"Count",align:"right",cell:z},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:W},{key:"max",hideOnMobile:!0,header:"Max",align:"right",cell:U}],e[4]=p,e[5]=u):(p=e[4],u=e[5]);let i;e[6]!==t.ops?(i=n.jsx(N,{rows:t.ops,rowKey:G,empty:p,columns:u}),e[6]=t.ops,e[7]=i):i=e[7];let d;e[8]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[8]=d):d=e[8];let f;e[9]===Symbol.for("react.memo_cache_sentinel")?(f=n.jsx(O,{icon:E,title:"No storage operations in this window",description:"Active Storage reads and writes instrumented by the gem appear here."}),e[9]=f):f=e[9];let s;e[10]!==o?(s={onOpen:(r,v)=>{const k=o(r);k&&(v?.newTab?window.open(k,"_blank"):D.visit(k))}},e[10]=o,e[11]=s):s=e[11];let h,x,y,_;e[12]===Symbol.for("react.memo_cache_sentinel")?(y={key:"when",header:"When",cell:I},_={key:"o",header:"Op",cell:C},h={key:"k",hideOnMobile:!0,header:"Key",cell:q},x={key:"d",header:"Duration",align:"right",cell:T},e[12]=h,e[13]=x,e[14]=y,e[15]=_):(h=e[12],x=e[13],y=e[14],_=e[15]);let a;e[16]!==o?(a=[y,_,h,x,{key:"in",hideOnMobile:!0,header:"In",cell:r=>{const v=o(r);return v?n.jsx(L,{className:"font-mono text-xs hover:underline",href:v,children:r.execution_preview}):null}}],e[16]=o,e[17]=a):a=e[17];let l;e[18]!==t.recent||e[19]!==a||e[20]!==s?(l=n.jsx(N,{rows:t.recent,rowKey:J,empty:f,keyboardNav:s,columns:a}),e[18]=t.recent,e[19]=a,e[20]=s,e[21]=l):l=e[21];let g;return e[22]!==l||e[23]!==i?(g=n.jsxs(H,{title:"Storage",children:[m,i,d,l]}),e[22]=l,e[23]=i,e[24]=g):g=e[24],g}function T(t){return j(t.duration)}function q(t){return n.jsx("span",{className:"font-mono text-xs",children:t.key})}function C(t){return n.jsxs("span",{className:"font-mono text-xs",children:[t.service," ",t.op]})}function I(t){return n.jsx("span",{className:"text-xs",children:$(t.occurred_at)})}function J(t){return t.id}function U(t){return j(t.max)}function W(t){return j(t.avg)}function z(t){return K(t.count)}function B(t){return n.jsx("span",{className:"font-mono text-xs",children:t.op})}function F(t){return t.service}function G(t){return`${t.service}-${t.op}`}export{me as default};
|