@billyvg/sentry-tui-app 0.13.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/app.mjs +14 -14
- package/app/app.mjs.map +1 -194
- package/app/manifest.json +2 -2
- package/package.json +1 -1
package/app/app.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
+
!function(){try{var e=globalThis,n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0fd5b9e8-ffda-5533-6475-6e2164756e21")}catch(e){}}();
|
|
1
2
|
// @bun
|
|
2
|
-
var
|
|
3
|
+
var __require=import.meta.require;var HOST_API_VERSION=2,HOST_DEPENDENCIES=["h:0__","h:1______________","h:2__________________","h:3__________","h:4___________","h:5_______________________","h:6___________________________","h:7___________________________________","h:8________________________________","h:9________________________________"],HOST_MODULE_SPECIFIERS=Object.fromEntries(HOST_DEPENDENCIES.map((dependency,index)=>[dependency,`h:${index}`.padEnd(dependency.length,"_")]));var app="0.16.0";var APP_VERSION=app,APP_VERSION_LABEL=`v${APP_VERSION}`;import{useCallback as useCallback42,useEffect as useEffect50,useMemo as useMemo34,useRef as useRef35,useState as useState35}from"h:0__";import{useKeyboard as useKeyboard8,useTerminalDimensions as useTerminalDimensions5}from"h:4___________";import{writeConfig}from"h:8________________________________";var jsonBodySerializer={bodySerializer:(body)=>JSON.stringify(body,(_key,value)=>typeof value==="bigint"?value.toString():value)},extraPrefixesMap={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},extraPrefixes=Object.entries(extraPrefixesMap),createSseClient=({onRequest,onSseError,onSseEvent,responseTransformer,responseValidator,sseDefaultRetryDelay,sseMaxRetryAttempts,sseMaxRetryDelay,sseSleepFn,url,...options})=>{let lastEventId,sleep=sseSleepFn??((ms)=>new Promise((resolve)=>setTimeout(resolve,ms)));return{stream:async function*(){let retryDelay=sseDefaultRetryDelay??3000,attempt=0,signal=options.signal??new AbortController().signal;while(!0){if(signal.aborted)break;attempt++;let headers=options.headers instanceof Headers?options.headers:new Headers(options.headers);if(lastEventId!==void 0)headers.set("Last-Event-ID",lastEventId);try{let requestInit={redirect:"follow",...options,body:options.serializedBody,headers,signal},request=new Request(url,requestInit);if(onRequest)request=await onRequest(url,requestInit);let response=await(options.fetch??globalThis.fetch)(request);if(!response.ok)throw Error(`SSE failed: ${response.status} ${response.statusText}`);if(!response.body)throw Error("No body in SSE response");let reader=response.body.pipeThrough(new TextDecoderStream).getReader(),buffer="",abortHandler=()=>{try{reader.cancel()}catch{}};signal.addEventListener("abort",abortHandler);try{while(!0){let{done,value}=await reader.read();if(done)break;buffer+=value,buffer=buffer.replace(/\r\n/g,`
|
|
3
4
|
`).replace(/\r/g,`
|
|
4
|
-
`);let
|
|
5
|
+
`);let chunks=buffer.split(`
|
|
5
6
|
|
|
6
|
-
`);
|
|
7
|
-
`),
|
|
8
|
-
`);try{F=JSON.parse(U),j=!0}catch{F=U}}if(j){if(n)await n(F);if(H)F=await H(F)}if(r?.({data:F,event:N,id:A,retry:g}),P.length)yield F}}}finally{O.removeEventListener("abort",w),h.releaseLock()}break}catch(L){if(t?.(L),s!==void 0&&p>=s)break;let f=Math.min(g*2**(p-1),i??30000);await u(f)}}}()}},ch=(e)=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},lh=(e)=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},Ah=(e)=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},_c=({allowReserved:e,explode:t,name:r,style:H,value:n})=>{if(!t){let i=(e?n:n.map((a)=>encodeURIComponent(a))).join(lh(H));switch(H){case"label":return`.${i}`;case"matrix":return`;${r}=${i}`;case"simple":return i;default:return`${r}=${i}`}}let o=ch(H),s=n.map((i)=>{if(H==="label"||H==="simple")return e?i:encodeURIComponent(i);return fn({allowReserved:e,name:r,value:i})}).join(o);return H==="label"||H==="matrix"?o+s:s},fn=({allowReserved:e,name:t,value:r})=>{if(r===void 0||r===null)return"";if(typeof r==="object")throw Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${t}=${e?r:encodeURIComponent(r)}`},kc=({allowReserved:e,explode:t,name:r,style:H,value:n,valueOnly:o})=>{if(n instanceof Date)return o?n.toISOString():`${r}=${n.toISOString()}`;if(H!=="deepObject"&&!t){let a=[];Object.entries(n).forEach(([c,A])=>{a=[...a,c,e?A:encodeURIComponent(A)]});let l=a.join(",");switch(H){case"form":return`${r}=${l}`;case"label":return`.${l}`;case"matrix":return`;${r}=${l}`;default:return l}}let s=Ah(H),i=Object.entries(n).map(([a,l])=>fn({allowReserved:e,name:H==="deepObject"?`${r}[${a}]`:a,value:l})).join(s);return H==="label"||H==="matrix"?s+i:i},uh=/\{[^{}]+\}/g,dh=({path:e,url:t})=>{let r=t,H=t.match(uh);if(H)for(let n of H){let o=!1,s=n.substring(1,n.length-1),i="simple";if(s.endsWith("*"))o=!0,s=s.substring(0,s.length-1);if(s.startsWith("."))s=s.substring(1),i="label";else if(s.startsWith(";"))s=s.substring(1),i="matrix";let a=e[s];if(a===void 0||a===null)continue;if(Array.isArray(a)){r=r.replace(n,_c({explode:o,name:s,style:i,value:a}));continue}if(typeof a==="object"){r=r.replace(n,kc({explode:o,name:s,style:i,value:a,valueOnly:!0}));continue}if(i==="matrix"){r=r.replace(n,`;${fn({name:s,value:a})}`);continue}let l=encodeURIComponent(i==="label"?`.${a}`:a);r=r.replace(n,l)}return r},ph=({baseUrl:e,path:t,query:r,querySerializer:H,url:n})=>{let o=n.startsWith("/")?n:`/${n}`,s=(e??"")+o;if(t)s=dh({path:t,url:s});let i=r?H(r):"";if(i.startsWith("?"))i=i.substring(1);if(i)s+=`?${i}`;return s};function yc(e){let t=e.body!==void 0;if(t&&e.bodySerializer){if("serializedBody"in e)return e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null;return e.body!==""?e.body:null}if(t)return e.body;return}var mh=async(e,t)=>{let r=typeof t==="function"?await t(e):t;if(!r)return;if(e.scheme==="bearer")return`Bearer ${r}`;if(e.scheme==="basic")return`Basic ${btoa(r)}`;return r},hc=({parameters:e={},...t}={})=>(H)=>{let n=[];if(H&&typeof H==="object")for(let o in H){let s=H[o];if(s===void 0||s===null)continue;let i=e[o]||t;if(Array.isArray(s)){let a=_c({allowReserved:i.allowReserved,explode:!0,name:o,style:"form",value:s,...i.array});if(a)n.push(a)}else if(typeof s==="object"){let a=kc({allowReserved:i.allowReserved,explode:!0,name:o,style:"deepObject",value:s,...i.object});if(a)n.push(a)}else{let a=fn({allowReserved:i.allowReserved,name:o,value:s});if(a)n.push(a)}}return n.join("&")},gh=(e)=>{if(!e)return"stream";let t=e.split(";")[0]?.trim();if(!t)return;if(t.startsWith("application/json")||t.endsWith("+json"))return"json";if(t==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some((r)=>t.startsWith(r)))return"blob";if(t.startsWith("text/"))return"text";return},Oh=(e,t)=>{if(!t)return!1;if(e.headers.has(t)||e.query?.[t]||e.headers.get("Cookie")?.includes(`${t}=`))return!0;return!1},yh=async({security:e,...t})=>{for(let r of e){if(Oh(t,r.name))continue;let H=await mh(r,t.auth);if(!H)continue;let n=r.name??"Authorization";switch(r.in){case"query":if(!t.query)t.query={};t.query[n]=H;break;case"cookie":t.headers.append("Cookie",`${n}=${H}`);break;case"header":default:t.headers.set(n,H);break}}},fc=(e)=>ph({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer==="function"?e.querySerializer:hc(e.querySerializer),url:e.url}),Sc=(e,t)=>{let r={...e,...t};if(r.baseUrl?.endsWith("/"))r.baseUrl=r.baseUrl.substring(0,r.baseUrl.length-1);return r.headers=Lc(e.headers,t.headers),r},fh=(e)=>{let t=[];return e.forEach((r,H)=>{t.push([H,r])}),t},Lc=(...e)=>{let t=new Headers;for(let r of e){if(!r)continue;let H=r instanceof Headers?fh(r):Object.entries(r);for(let[n,o]of H)if(o===null)t.delete(n);else if(Array.isArray(o))for(let s of o)t.append(n,s);else if(o!==void 0)t.set(n,typeof o==="object"?JSON.stringify(o):o)}return t};class yn{fns=[];clear(){this.fns=[]}eject(e){let t=this.getInterceptorIndex(e);if(this.fns[t])this.fns[t]=null}exists(e){let t=this.getInterceptorIndex(e);return Boolean(this.fns[t])}getInterceptorIndex(e){if(typeof e==="number")return this.fns[e]?e:-1;return this.fns.indexOf(e)}update(e,t){let r=this.getInterceptorIndex(e);if(this.fns[r])return this.fns[r]=t,e;return!1}use(e){return this.fns.push(e),this.fns.length-1}}var Sh=()=>({error:new yn,request:new yn,response:new yn}),_h=hc({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),kh={"Content-Type":"application/json"},Ic=(e={})=>({...sh,headers:kh,parseAs:"auto",querySerializer:_h,...e}),hh=(e={})=>{let t=Sc(Ic(),e),r=()=>({...t}),H=(l)=>(t=Sc(t,l),r()),n=Sh(),o=async(l)=>{let c={...t,...l,fetch:l.fetch??t.fetch??globalThis.fetch,headers:Lc(t.headers,l.headers),serializedBody:void 0};if(c.security)await yh({...c,security:c.security});if(c.requestValidator)await c.requestValidator(c);if(c.body!==void 0&&c.bodySerializer)c.serializedBody=c.bodySerializer(c.body);if(c.body===void 0||c.serializedBody==="")c.headers.delete("Content-Type");let A=fc(c);return{opts:c,url:A}},s=async(l)=>{let{opts:c,url:A}=await o(l),u={redirect:"follow",...c,body:yc(c)},d=new Request(A,u);for(let k of n.request.fns)if(k)d=await k(d,c);let m=c.fetch,g;try{g=await m(d)}catch(k){let I=k;for(let h of n.error.fns)if(h)I=await h(k,void 0,d,c);if(I=I||{},c.throwOnError)throw I;return c.responseStyle==="data"?void 0:{error:I,request:d,response:void 0}}for(let k of n.response.fns)if(k)g=await k(g,d,c);let p={request:d,response:g};if(g.ok){let k=(c.parseAs==="auto"?gh(g.headers.get("Content-Type")):c.parseAs)??"json";if(g.status===204||g.headers.get("Content-Length")==="0"){let h;switch(k){case"arrayBuffer":case"blob":case"text":h=await g[k]();break;case"formData":h=new FormData;break;case"stream":h=g.body;break;case"json":default:h={};break}return c.responseStyle==="data"?h:{data:h,...p}}let I;switch(k){case"arrayBuffer":case"blob":case"formData":case"text":I=await g[k]();break;case"json":{let h=await g.text();I=h?JSON.parse(h):{};break}case"stream":return c.responseStyle==="data"?g.body:{data:g.body,...p}}if(k==="json"){if(c.responseValidator)await c.responseValidator(I);if(c.responseTransformer)I=await c.responseTransformer(I)}return c.responseStyle==="data"?I:{data:I,...p}}let O=await g.text(),y;try{y=JSON.parse(O)}catch{}let L=y??O,f=L;for(let k of n.error.fns)if(k)f=await k(L,g,d,c);if(f=f||{},c.throwOnError)throw f;return c.responseStyle==="data"?void 0:{error:f,...p}},i=(l)=>(c)=>s({...c,method:l}),a=(l)=>async(c)=>{let{opts:A,url:u}=await o(c);return ah({...A,body:A.body,headers:A.headers,method:l,onRequest:async(d,m)=>{let g=new Request(d,m);for(let p of n.request.fns)if(p)g=await p(g,A);return g},serializedBody:yc(A),url:u})};return{buildUrl:fc,connect:i("CONNECT"),delete:i("DELETE"),get:i("GET"),getConfig:r,head:i("HEAD"),interceptors:n,options:i("OPTIONS"),patch:i("PATCH"),post:i("POST"),put:i("PUT"),request:s,setConfig:H,sse:{connect:a("CONNECT"),delete:a("DELETE"),get:a("GET"),head:a("HEAD"),options:a("OPTIONS"),patch:a("PATCH"),post:a("POST"),put:a("PUT"),trace:a("TRACE")},trace:i("TRACE")}},Ft=hh(Ic()),bc=(e)=>(e?.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/",...e}),wc=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/",...e});var Lh=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/dashboards/",...e});var Ih=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/detectors/",...e});var xc=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/environments/",...e});var bh=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/events/",...e});var bs=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/projects/",...e});var wh=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/replays/",...e}),Tc=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/replays/{replay_id}/",...e});var Pc=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/trace-items/attributes/",...e});var xh=(e)=>(e.client??Ft).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/workflows/",...e});class qc extends Error{status;body;response;documented;constructor(e,t,r,H,n=e===void 0?"Sentry API request failed before receiving a response":`Sentry API request failed with status ${e}`){super(n);this.name="SentryApiError",this.status=e,this.body=t,this.response=r,this.documented=H}}var Th=(e)=>{if(!e)return{};let t=e.split(","),r,H;for(let o of t){let s=o.trim().split(";").map((c)=>c.trim()),i,a,l;for(let c of s){let A=c.match(/^rel="([^"]*)"$/);if(A){i=A[1];continue}let u=c.match(/^results="([^"]*)"$/);if(u){a=u[1];continue}let d=c.match(/^cursor="([^"]*)"$/);if(d){l=d[1];continue}}if(a!=="true"||!l)continue;if(i==="next")r=l;else if(i==="previous")H=l}let n={};if(r!==void 0)n.nextCursor=r;if(H!==void 0)n.prevCursor=H;return n},TH=(e,t)=>{if(e.query===void 0&&t===void 0)return e;return{...e,query:{...e.query,...t!==void 0?{cursor:t}:void 0}}},Ph=(e,t)=>{if(e.error!==void 0){let r=e.response?.status;throw new qc(r,e.error,e.response,!1,r===void 0?`${t}: API request failed before receiving a response: ${String(e.error)}`:`${t}: API request failed with status ${r}: ${JSON.stringify(e.error)}`)}return{data:e.data,response:e.response}},qh=(e,t)=>{let{data:r,response:H}=Ph(e,t),n=H.headers.get("link"),{nextCursor:o,prevCursor:s}=Th(n),i={data:r};if(o!==void 0)i.nextCursor=o;if(s!==void 0)i.prevCursor=s;return i},PH=async(e,t,r)=>{let H=await e(r);return qh(H,t)};var Mc=(e,t)=>PH((r)=>Lh(TH(e,r)),"listOrganizationDashboards",t);var ws=(e,t)=>PH((r)=>Ih(TH(e,r)),"listOrganizationDetectors",t);var Cc=(e,t)=>PH((r)=>bh(TH(e,r)),"listOrganizationEvents",t);var Qc=(e,t)=>PH((r)=>wh(TH(e,r)),"listOrganizationReplays",t);var Nc=(e,t)=>PH((r)=>xh(TH(e,r)),"listOrganizationWorkflows",t);function Fe(e){return e&&e.length>0?[...e]:["-1"]}var Ts="is:unresolved issue.priority:[high, medium]",xt="14d",Mh="24h",Ps=25,qs=[{value:"recommended",label:"Recommended"},{value:"date",label:"Last Seen"},{value:"new",label:"Age"},{value:"trends",label:"Trends"},{value:"freq",label:"Events"},{value:"user",label:"Users"},{value:"inbox",label:"Date Added"},{value:"progress",label:"Progress"}],Sn="date";function jc(e){return qs.some((t)=>t.value===e)?e:Sn}async function Dc(e,{org:t,query:r=Ts,sort:H=Sn,statsPeriod:n=xt,project:o,environment:s,cursor:i,limit:a=Ps,signal:l}){return e.request(`/organizations/${t}/issues/`,{query:{query:r,sort:H,statsPeriod:n,limit:a,shortIdLookup:1,cursor:i,project:Fe(o),environment:s,expand:["owners","inbox"],collapse:["stats","unhandled"]},signal:l})}async function Rc(e,{org:t,groups:r,statsPeriod:H=xt,groupStatsPeriod:n=Mh,project:o,signal:s}){if(r.length===0)return{};let i=await e.request(`/organizations/${t}/issues-stats/`,{query:{groups:r,statsPeriod:H,groupStatsPeriod:n,project:Fe(o)},signal:s}),a=Array.isArray(i.data)?i.data:[];return Object.fromEntries(a.map((l)=>[l.id,l]))}async function vc(e,{org:t,issueId:r,signal:H}){return(await e.request(`/organizations/${t}/issues/${r}/`,{signal:H})).data}async function Gc(e,{org:t,issueId:r,eventId:H="latest",signal:n}){return(await e.request(`/organizations/${t}/issues/${r}/events/${H}/`,{signal:n})).data}async function Ec(e,{org:t,issueId:r,update:H,signal:n}){return(await e.request(`/organizations/${t}/issues/${r}/`,{method:"PUT",body:H,signal:n})).data}async function Kc(e,{org:t,signal:r}){let{data:H}=await wc({...e.generatedOptions(r),path:{organization_id_or_slug:t}});return Vc(H)}async function Xc(e,t){let r=await e.request("/users/me/",{signal:t}),H=r.data&&typeof r.data==="object"?r.data:{};return{...typeof H.id==="string"?{id:H.id}:{},...typeof H.name==="string"?{name:H.name}:{},...typeof H.email==="string"?{email:H.email}:{}}}async function Bc(e,t){let{data:r}=await bc(e.generatedOptions(t));return r.map(Vc)}async function Wc(e,{org:t,signal:r}){return(await e.request(`/organizations/${t}/users/`,{signal:r})).data}var xs=100,Fc=["latestDeploys","unusedFeatures"];async function Uc(e,{org:t,query:r,perPage:H=xs,signal:n}){let o={query:r?.trim()||void 0,per_page:H,collapse:Fc},{data:s}=await bs({...e.generatedOptions(n),path:{organization_id_or_slug:t},query:o});return Ch(s)}async function Yc(e,{org:t,ids:r,signal:H}){let n=[...new Set(r)].filter((s)=>/^\d+$/.test(s)),o=[];for(let s=0;s<n.length;s+=xs){let i=n.slice(s,s+xs),a={query:i.map((c)=>`id:${c}`).join(" "),per_page:i.length,collapse:Fc},{data:l}=await bs({...e.generatedOptions(H),path:{organization_id_or_slug:t},query:a});o.push(...l.map(({id:c,slug:A})=>({id:c,slug:A})))}return o}function Ch(e){return e.map(({id:t,slug:r,name:H,platform:n})=>({id:t,slug:r,name:H,platform:n}))}async function $c(e,{org:t,signal:r}){let{data:H}=await xc({...e.generatedOptions(r),path:{organization_id_or_slug:t}});return H}function Vc(e){let t=e.avatar;return{id:e.id,slug:e.slug,name:e.name,features:e.features,...t?.avatarType?{avatar:{avatarType:t.avatarType,avatarUuid:t.avatarUuid??null,avatarUrl:t.avatarUrl}}:{}}}var Ut=[{id:"issues",label:"Issues",glyph:"I",sections:[{items:["Feed","Inbox"]},{items:["Errors & Outages","Breached Metrics","Warnings","Configuration","User Feedback"]},{title:"Autofix",items:["Recently Run"]},{items:["All Views"]}]},{id:"explore",label:"Explore",glyph:"E",sections:[{items:["Traces","Logs","Metrics","Errors","Discover","Profiles","Replays","Releases","Conversations"]},{items:["All Queries"]}]},{id:"dashboards",label:"Dashboards",glyph:"D",sections:[{items:["All Dashboards","Sentry Built"]}]},{id:"seer",label:"Seer",glyph:"S",sections:[{items:["Ask Seer"]}]},{id:"monitors",label:"Monitors",glyph:"M",sections:[{items:["All Monitors","My Monitors"]},{title:"By Monitor Type",items:["Error","Metric","Cron","Uptime","Mobile Build"]},{items:["Alerts"]}]}];function yt(e){let t=Ut.find((r)=>r.id===e);if(!t)throw Error(`Unknown nav group: ${e}`);return t}function Qh(e){return e.sections.flatMap((t)=>t.items)}function Ms(e){let t=Qh(e);return t.length===1?t[0]:void 0}var qH=[{id:"sentry.app.quit",title:"Quit",category:"app",defaultKeys:["q"],palette:"always"},{id:"sentry.app.help",title:"Help",category:"app",defaultKeys:["?"],description:"Toggle this help overlay",palette:"always"},{id:"sentry.app.commandPalette",title:"Command palette",category:"app",defaultKeys:["ctrl+k","meta+k"],description:"Search every command and destination"},{id:"sentry.app.refresh",title:"Refresh",category:"app",defaultKeys:["ctrl+r","R"],description:"Reload the current view from the API",palette:"always"},{id:"sentry.app.update",title:"Restart into the update",category:"app",defaultKeys:["U"],description:"Restart into the downloaded update",palette:"update"},{id:"sentry.app.switchOrg",title:"Switch organization",category:"app",defaultKeys:["o"],description:"Open the organization picker",palette:"always"},{id:"sentry.app.openUrl",title:"Open Sentry URL\u2026",category:"app",defaultKeys:["ctrl+o"],description:"Open a copied Sentry URL",palette:"always"},{id:"sentry.app.openInBrowser",title:"Open current view in Sentry",category:"app",defaultKeys:["W"],description:"Continue this view on sentry.io",palette:"always"},{id:"sentry.app.focusNext",title:"Next pane",category:"app",defaultKeys:["tab"]},{id:"sentry.app.focusPrev",title:"Previous pane",category:"app",defaultKeys:["shift+tab"]},{id:"sentry.nav.down",title:"Move down",category:"nav",defaultKeys:["j","down"]},{id:"sentry.nav.up",title:"Move up",category:"nav",defaultKeys:["k","up"]},{id:"sentry.nav.top",title:"Jump to top",category:"nav",defaultKeys:["g","home"]},{id:"sentry.nav.bottom",title:"Jump to bottom",category:"nav",defaultKeys:["G","end"]},{id:"sentry.nav.pageDown",title:"Page down",category:"nav",defaultKeys:["pagedown","ctrl+d"]},{id:"sentry.nav.pageUp",title:"Page up",category:"nav",defaultKeys:["pageup","ctrl+u"]},{id:"sentry.nav.open",title:"Open",category:"nav",defaultKeys:["return"]},{id:"sentry.nav.back",title:"Back",category:"nav",defaultKeys:["escape"]},{id:"sentry.nav.goto",title:"Navigate",category:"nav",defaultKeys:["n"],description:"Jump to a nav item by its printed key"},{id:"sentry.nav.search",title:"Search",category:"nav",defaultKeys:["/"],description:"Focus the search box for this list",palette:"stream"},{id:"sentry.issue.resolve",title:"Resolve",category:"issue",defaultKeys:["r"],palette:"issue"},{id:"sentry.issue.archive",title:"Archive",category:"issue",defaultKeys:["a"],description:"Archive until the issue escalates",palette:"issue"},{id:"sentry.issue.unresolve",title:"Unresolve",category:"issue",defaultKeys:["u"],palette:"issue"},{id:"sentry.issue.bookmark",title:"Bookmark",category:"issue",defaultKeys:["b"],palette:"issue"},{id:"sentry.issue.markReviewed",title:"Mark reviewed",category:"issue",defaultKeys:["m"],palette:"issue"},{id:"sentry.issue.actions",title:"More issue actions",category:"issue",defaultKeys:["A"],description:"Open more issue actions"},{id:"sentry.seer.compose",title:"Ask Seer",category:"seer",defaultKeys:["i"],description:"Focus the Seer composer"},{id:"sentry.seer.newChat",title:"New chat",category:"seer",defaultKeys:["N"],description:"Start a fresh Seer conversation"},{id:"sentry.seer.interrupt",title:"Interrupt Seer",category:"seer",defaultKeys:["x"],description:"Ask Seer to stop the current turn"},{id:"sentry.seer.history",title:"Conversation history",category:"seer",defaultKeys:["H"],description:"Open recent Seer conversations"},{id:"sentry.seer.pushChanges",title:"Create or update pull requests",category:"seer",defaultKeys:["p"],description:"Push accepted Seer Code Mode changes"},{id:"sentry.view.filterProject",title:"Filter by project",category:"view",defaultKeys:["P"],description:"Open the project selector",palette:"stream"},{id:"sentry.view.filterEnv",title:"Filter by environment",category:"view",defaultKeys:["E"],description:"Open the environment selector",palette:"stream"},{id:"sentry.view.filterDate",title:"Filter by date",category:"view",defaultKeys:["D"],description:"Open the date range selector",palette:"stream"},{id:"sentry.view.sort",title:"Sort by",category:"view",defaultKeys:["S"],description:"Choose sort order"},{id:"sentry.explore.visualize",title:"Visualize",category:"view",defaultKeys:["V"],description:"Choose the aggregate to plot"},{id:"sentry.explore.visualizeField",title:"Visualize field",category:"view",defaultKeys:["F"],description:"Choose what the aggregate reads"},{id:"sentry.explore.groupBy",title:"Group by",category:"view",defaultKeys:["B"],description:"Group results by an attribute"},{id:"sentry.explore.sortDirection",title:"Sort direction",category:"view",defaultKeys:["O"],description:"Flip between ascending and descending"},{id:"sentry.explore.interval",title:"Chart interval",category:"view",defaultKeys:["I"],description:"Choose the chart bucket width"},{id:"sentry.view.toggleSection",title:"Fold section",category:"view",defaultKeys:["1","2","3","4","5","6"],description:"Fold the numbered section"},{id:"sentry.view.toggleAllSections",title:"Fold all sections",category:"view",defaultKeys:["z"],description:"Fold or unfold every section at once"}],Nh=new Map(qH.map((e)=>[e.id,e]));function Zc(e){return Nh.get(e)}function we(e){return Zc(e)?.defaultKeys[0]??""}var jh={return:"enter",escape:"esc",pagedown:"pgdn",pageup:"pgup",down:"\u2193",up:"\u2191"},Dh={meta:"cmd"};function ve(e){let t=e.split("+"),r=t.pop();return[...t.map((n)=>Dh[n]??n),jh[r]??r].join("+")}function Q(e,t){let r=Zc(e);if(!r)return!1;return r.defaultKeys.some((H)=>Rh(H,t))}function Rh(e,t){let r=e.split("+"),H=r[r.length-1],n=r.includes("ctrl"),o=r.includes("shift"),s=r.includes("meta");if(Boolean(t.ctrl)!==n)return!1;if(Boolean(t.meta)!==s)return!1;if(H.length===1&&/[a-zA-Z]/.test(H)){let a=o||H===H.toUpperCase();return t.name.toLowerCase()===H.toLowerCase()&&Boolean(t.shift)===a}if(Boolean(t.shift)!==o)return!1;return t.name===H}function zc(e){if(e>=97&&e<=122)return 0;if(e>=65&&e<=90)return 1;if(e>=48&&e<=57)return 2;return 3}function Cs(e){let t=e.charCodeAt(0);return t>=65&&t<=90?String.fromCharCode(t+32):e}function Jr(e,t){if(t.length===0)return{score:0,positions:[]};let r=0,H=-1,n=-1;for(let a=0;a<e.length;a++){if(Cs(e[a])!==t[r])continue;if(H<0)H=a;if(r++,r===t.length){n=a+1;break}}if(n===-1)return null;r=t.length-1;for(let a=n-1;a>=H;a--){if(Cs(e[a])!==t[r])continue;if(r--,r<0){H=a;break}}let{score:o,positions:s}=Gh(e,t,H,n);return{score:H===0&&n===e.length&&e.length===t.length?o+16:o,positions:s}}function vh(e,t){if(e===3&&t!==3)return 8;if(e===0&&t===1||e!==2&&t===2)return 7;if(t===3)return 8;return 0}function Gh(e,t,r,H){let n=0,o=0,s=!1,i=0,a=0,l=r>0?zc(e.charCodeAt(r-1)):3,c=[];for(let A=r;A<H;A++){let u=Cs(e[A]),d=zc(u.charCodeAt(0));if(u===t[n]){c.push(A),o+=16;let m=vh(l,d);if(a===0)i=m;else{if(m===8)i=m;m=Math.max(m,i,4)}o+=n===0?m*2:m,s=!1,a++,n++}else o+=s?-1:-3,s=!0,a=0,i=0;l=d}return{score:o,positions:c}}var Jc=["Go to","Issue","Commands"],tl=6;function Eh(e,t){switch(e){case"always":return!0;case"stream":return t.streamView;case"issue":return t.hasIssue;case"update":return t.updateReady}}function rl(e,t=Ut){let r=[];for(let H of t)for(let n of H.sections)for(let o of n.items)r.push({id:`nav:${H.id}:${o}`,section:"Go to",label:o,detail:H.label,keywords:n.title?[H.label,n.title]:[H.label],target:{kind:"nav",group:H.id,item:o}});for(let H of qH){if(!H.palette||!Eh(H.palette,e))continue;let n=we(H.id);r.push({id:`command:${H.id}`,section:H.category==="issue"?"Issue":"Commands",label:H.title,detail:n?ve(n):void 0,keywords:H.description?[H.description]:void 0,target:{kind:"command",commandId:H.id}})}return r}function Hl(e,t){let r=t.trim().toLowerCase();if(!r)return e.map((n)=>({action:n,score:0,positions:[]}));let H=[];for(let n of e){let o=Jr(n.label,r),s=o?.score??-1/0;for(let i of n.keywords??[]){let a=Jr(i,r);if(a&&a.score>s)s=a.score}if(s===-1/0)continue;H.push({action:n,score:s,positions:o?.positions??[]})}return H.sort((n,o)=>o.score-n.score)}function nl(e,t){let r=new Map;for(let H of e){let n=r.get(H.action.section);if(n)n.push(H);else r.set(H.action.section,[H])}return Array.from(r,([H,n])=>({section:H,results:t===void 0?n:n.slice(0,t),hidden:t===void 0?0:Math.max(0,n.length-t)})).sort((H,n)=>el(n.results)-el(H.results)||Jc.indexOf(H.section)-Jc.indexOf(n.section))}function el(e){return e.length>0?Math.max(...e.map((t)=>t.score)):0}function ol(e){let t=[],r=0;for(let H of e){t.push({kind:"heading",section:H.section});for(let n of H.results)t.push({kind:"result",result:n,index:r}),r++;if(H.hidden>0)t.push({kind:"more",section:H.section,count:H.hidden})}return t}function sl(e,t){return e.findIndex((r)=>r.kind==="result"&&r.index===t)}var Kh=[[43200,"3h"],[20160,"1h"],[5760,"30m"],[2880,"10m"],[720,"5m"],[360,"1m"],[0,"1m"]];var il=["1m","2m","5m","10m","15m","20m","30m","1h","2h","3h","4h","6h","12h","1d","2d","1w"],Xh=[[43200,"12h"],[20160,"6h"],[5760,"3h"],[2880,"1h"],[720,"30m"],[360,"10m"],[60,"5m"],[5,"5m"],[0,"1m"]],Bh=[{value:"1m",label:"1 minute"},{value:"5m",label:"5 minutes"},{value:"10m",label:"10 minutes"},{value:"30m",label:"30 minutes"},{value:"1h",label:"1 hour"},{value:"3h",label:"3 hours"},{value:"6h",label:"6 hours"},{value:"12h",label:"12 hours"}],Wh={s:0.016666666666666666,m:1,h:60,d:1440,w:10080};function Yt(e){if(!e)return;let t=/^(\d+)([smhdw]?)$/.exec(e.trim());if(!t)return;let r=Number(t[1]);if(!Number.isFinite(r))return;return r*Wh[t[2]||"s"]}function qr(e){let t=Yt(e);if(t===void 0||t<0)return;return Kh.find(([r])=>t>=r)[1]}function al(e,t,r){if(r)return"1d";let H=Yt(t),n=qr(e),o=H===void 0||H<=0?n:t,s=Yt(o),i=Yt(e);if(s===void 0||i===void 0)return o;let a=i/66;if(s>=a)return o;return il.find((l)=>Yt(l)>=a)??il.at(-1)}function cl(e){let t=Yt(e);if(t===void 0||t<0)return[];let r=Yt(qr(e)),H=Yt(Xh.find(([o])=>t>=o)[1]),n=Bh.filter(({value:o})=>{let s=Yt(o);return s>=r&&s<=H});return t>=20160?[...n,{value:"1d",label:"1 day"}]:n}var Fh=50,Uh=new Set(["errors","logs","spans","tracemetrics"]);async function Tt(e,{org:t,dataset:r,fields:H,sort:n,query:o="",statsPeriod:s,project:i,environment:a,cursor:l,limit:c=Fh,referrer:A,signal:u}){if(Yh(r)){let m=await Cc({...e.generatedOptions(u),path:{organization_id_or_slug:t},query:{dataset:r,field:[...H],sort:n,query:o||void 0,statsPeriod:s,per_page:c,project:Fe(i),environment:a,referrer:A}},l);return{rows:ll(m.data),nextCursor:m.nextCursor??null}}let d=await e.request(`/organizations/${t}/events/`,{query:{dataset:r,field:[...H],sort:n,query:o||void 0,statsPeriod:s,per_page:c,cursor:l,project:Fe(i),environment:a,referrer:A},signal:u});return{rows:ll(d.data),nextCursor:d.nextCursor}}function Yh(e){return Uh.has(e)}async function Qs(e,{org:t,dataset:r,yAxis:H="count()",query:n="",statsPeriod:o,interval:s=qr(o),project:i,environment:a,referrer:l,signal:c}){let A=await e.request(`/organizations/${t}/events-stats/`,{query:{dataset:r,yAxis:H,query:n||void 0,statsPeriod:o,interval:s,project:Fe(i),environment:a,referrer:l},signal:c});return $h(A.data)}async function ul(e,{org:t,dataset:r,yAxis:H="count()",query:n="",statsPeriod:o,interval:s=qr(o),project:i,environment:a,referrer:l,signal:c,groupBy:A,sort:u,topEvents:d}){let m=await e.request(`/organizations/${t}/events-timeseries/`,{query:{dataset:r,yAxis:H,query:n||void 0,statsPeriod:o,interval:s,project:Fe(i),environment:a,referrer:l,partial:1,excludeOther:0,sampling:"NORMAL",groupBy:A?[...A]:void 0,sort:u,topEvents:d},signal:c}),g=Array.isArray(m.data?.timeSeries)?m.data.timeSeries:[],p=new Map;for(let O of g.flatMap((y)=>Array.isArray(y?.values)?y.values:[])){if(!O||!Number.isFinite(O.timestamp))continue;let y=O.value===null?0:Number(O.value);if(!Number.isFinite(y))continue;let L=p.get(O.timestamp);p.set(O.timestamp,{count:(L?.count??0)+y,incomplete:Boolean(L?.incomplete||O.incomplete)})}return[...p.entries()].sort(([O],[y])=>O-y).map(([O,y])=>[O/1000,[{count:y.count}],{incomplete:y.incomplete||void 0}])}function ll(e){if(Array.isArray(e))return e.filter(Al);let t=e?.data;return Array.isArray(t)?t.filter(Al):[]}function Al(e){return typeof e==="object"&&e!==null}function $h(e){let t=Array.isArray(e)?e:e?.data;return Array.isArray(t)?t.filter(Vh):[]}function Vh(e){return Array.isArray(e)&&e.length>=2&&typeof e[0]==="number"}function Ge(e,t){let r=e[t];if(r===void 0||r===null||r==="")return;return String(r)}function kt(e,t){let r=Number(e[t]);return Number.isFinite(r)?r:void 0}var dl="1h";function Cr(e,t){return`${e}\x00${t}`}var Zh=20,Ns="14d",zh="24h",pl=[{value:"date",label:"Date Created"},{value:"sessions",label:"Total Sessions"},{value:"sessions_24h",label:"Active Sessions"},{value:"users_24h",label:"Active Users"},{value:"crash_free_sessions",label:"Crash-Free Sessions"},{value:"crash_free_users",label:"Crash-Free Users"},{value:"build",label:"Build Number"},{value:"semver",label:"Semantic Version"},{value:"adoption",label:"Date Adopted"}],yl="date",Jh=new Set(["sessions","sessions_24h","users_24h","crash_free_sessions","crash_free_users"]);function js(e){return e.length===1?pl:pl.filter((t)=>t.value!=="adoption")}function fl(e,t){return js(t).some((r)=>r.value===e)?e:yl}async function Sl(e,t){let r=await e.request(`/organizations/${t.org}/releases/`,hl(t));return{data:eH(r.data).map(eL),nextCursor:r.nextCursor}}async function _l(e,t){let r=hl(t),H=await e.request(`/organizations/${t.org}/releases/`,{...r,query:{...r.query,health:"1",healthStat:"sessions",healthStatsPeriod:zh}}),n=new Map;for(let o of eH(H.data)){let s=jt(o.version);if(!s)continue;for(let i of eH(o.projects)){let a=$t(i.id),l=rL(i.healthData);if(a===void 0||!l)continue;n.set(Cr(s,a),l)}}return n}async function kl(e,{org:t,releases:r,project:H,environment:n,signal:o}){if(r.length===0)return new Map;let s=[...new Set(r.map((A)=>A.version).filter(Boolean))];if(s.length===0)return new Map;let i={field:["sum(session)"],interval:"1h",statsPeriod:"24h",project:H,environment:n},a=s.map((A)=>`release:${nL(A)}`).join(" OR "),[l,c]=await Promise.all([e.request(`/organizations/${t}/sessions/`,{query:{...i,query:a,groupBy:["project","release"]},signal:o}),e.request(`/organizations/${t}/sessions/`,{query:{...i,groupBy:["project"]},signal:o})]);return HL(r,l.data,c.data)}function hl({query:e,statsPeriod:t=Ns,project:r,environment:H,sort:n=yl,cursor:o,limit:s=Zh,signal:i}){let a=Jh.has(n);return{query:{query:e||void 0,statsPeriod:t,project:r,environment:H,cursor:o,per_page:s,status:"open",sort:n,flatten:a?"1":void 0,summaryStatsPeriod:t},signal:i}}function eL(e){let t=jt(e.version)??"",r=Mr(e.versionInfo),H=Mr(e.lastDeploy),n=H&&jt(H.dateFinished);return{version:t,shortVersion:jt(e.shortVersion)??t,package:r?jt(r.package):void 0,dateCreated:jt(e.dateCreated)??"",dateReleased:jt(e.dateReleased),lastDeploy:n?{environment:jt(H.environment)??"",dateFinished:n}:void 0,commitCount:$t(e.commitCount)??0,authorCount:eH(e.authors).length,projects:eH(e.projects).map(tL)}}function tL(e){let t=jt(e.slug)??"";return{id:$t(e.id)??-1,slug:t,name:jt(e.name)??t,platform:jt(e.platform),newGroups:$t(e.newGroups)??0}}function rL(e){let t=Mr(e);if(!t)return;return{adoption:$t(t.sessionsAdoption),crashFreeSessions:$t(t.crashFreeSessions),crashFreeUsers:$t(t.crashFreeUsers),sessionsCrashed:$t(t.sessionsCrashed),totalSessions24h:$t(t.totalSessions24h)}}function HL(e,t,r){let H=ml(t,!0),n=ml(r,!1),o=Math.max(gl(t),gl(r)),s=new Map;for(let i of e)for(let a of i.projects){let l=H.get(Cr(i.version,a.id)),c=n.get(String(a.id));if(!l&&!c)continue;let A=Math.max(o,l?.length??0,c?.length??0);s.set(Cr(i.version,a.id),{release:Ol(l,A),project:Ol(c,A)})}return s}function ml(e,t){let r=Mr(e),H=new Map;for(let n of eH(r?.groups)){let o=Mr(n.by),s=$t(o?.project),i=jt(o?.release),a=Mr(n.series)?.["sum(session)"];if(s===void 0||!Array.isArray(a))continue;if(t&&!i)continue;let l=t?Cr(i,s):String(s);H.set(l,a.map((c)=>$t(c)??0))}return H}function gl(e){let t=Mr(e)?.intervals;return Array.isArray(t)?t.length:0}function Ol(e,t){return Array.from({length:t},(r,H)=>e?.[H]??0)}function nL(e){return`"${e.replaceAll("\\","\\\\").replaceAll('"',"\\\"")}"`}function eH(e){return Array.isArray(e)?e.filter(Ll):[]}function Ll(e){return typeof e==="object"&&e!==null}function Mr(e){return Ll(e)?e:void 0}function jt(e){if(e===void 0||e===null||e==="")return;return String(e)}function $t(e){if(e===void 0||e===null||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}import{beginRequest as Pj,log as qj,reportError as Mj}from"h:7___________________________________";var Il="https://sentry.io/api/0";class pr extends Error{status;retryable;retryAfterSeconds;constructor(e,{status:t,retryable:r,retryAfterSeconds:H}){super(e);this.name="ApiError",this.status=t,this.retryable=r,this.retryAfterSeconds=H}}var oL=50,rH="14d",Rs=[{value:"-started_at",label:"Newest"},{value:"started_at",label:"Oldest"},{value:"-activity",label:"Activity (high-low)"},{value:"activity",label:"Activity (low-high)"},{value:"-duration",label:"Longest duration"},{value:"duration",label:"Shortest duration"},{value:"-count_errors",label:"Most errors"},{value:"count_errors",label:"Fewest errors"},{value:"-count_dead_clicks",label:"Most dead clicks"},{value:"count_dead_clicks",label:"Fewest dead clicks"},{value:"-count_rage_clicks",label:"Most rage clicks"},{value:"count_rage_clicks",label:"Fewest rage clicks"},{value:"browser.name",label:"Browser (A-Z)"},{value:"-browser.name",label:"Browser (Z-A)"},{value:"os.name",label:"OS (A-Z)"},{value:"-os.name",label:"OS (Z-A)"}],bl="-started_at";function wl(e){return Rs.some((t)=>t.value===e)?e:bl}var sL=["activity","browser","count_dead_clicks","count_errors","count_infos","count_rage_clicks","count_segments","count_urls","count_warnings","device","dist","duration","environment","error_ids","finished_at","has_viewed","id","info_ids","is_archived","os","platform","project_id","releases","sdk","started_at","tags","trace_ids","urls","user","warning_ids"],iL=["id","title","issue","level","project.name","timestamp"],aL=Il.replace(/\/api\/0\/?$/,"");async function xl(e,{org:t,query:r="",statsPeriod:H=rH,project:n,environment:o,sort:s=bl,cursor:i,limit:a=oL,signal:l}){let c=await Qc({...e.generatedOptions(l),path:{organization_id_or_slug:t},query:{field:[...sL],sort:s,query:r||void 0,statsPeriod:H,per_page:a,project:Fe(n),environment:o,queryReferrer:"replayList"}},i);return{data:cL(c.data).map(Ml),nextCursor:c.nextCursor??null}}async function Tl(e,{org:t,replayId:r,signal:H}){let{data:n}=await Tc({...e.generatedOptions(H),path:{organization_id_or_slug:t,replay_id:r}}),o=n.data;if(!tH(o))throw Error(`Replay ${r} was not found.`);return Ml(o,0)}async function Pl(e,{org:t,replayId:r,statsPeriod:H=rH,environment:n,signal:o}){let s=await Tt(e,{org:t,dataset:"errors",fields:iL,sort:"timestamp",query:`replayId:[${r}]`,statsPeriod:H,project:Fe(),environment:n,referrer:"sentry-tui.replay-details",signal:o});return{data:s.rows.map(lL),nextCursor:s.nextCursor}}function ql(e,t){return`${aL}/organizations/${e}/explore/replays/${t}/`}function cL(e){let t=Array.isArray(e)?e:tH(e)?e.data:void 0;return Array.isArray(t)?t.filter(tH):[]}function tH(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Ml(e,t){return{id:at(e.id)??String(t),projectId:at(e.project_id),isArchived:e.is_archived===!0,hasViewed:e.has_viewed===!0,user:uL(e.user),startedAt:at(e.started_at)??"",finishedAt:at(e.finished_at)??"",durationSec:Qr(e.duration),os:Ds(e.os),browser:Ds(e.browser),device:AL(e.device),sdk:Ds(e.sdk),platform:at(e.platform),environment:at(e.environment),releases:_n(e.releases),activity:Qr(e.activity),countErrors:Qr(e.count_errors),countDeadClicks:Qr(e.count_dead_clicks),countRageClicks:Qr(e.count_rage_clicks),countUrls:Qr(e.count_urls),countSegments:Qr(e.count_segments),errorIds:_n(e.error_ids),traceIds:_n(e.trace_ids),urls:_n(e.urls)}}function lL(e,t){return{id:Ge(e,"id")??String(t),title:Ge(e,"title")??"",issue:Ge(e,"issue"),level:Ge(e,"level"),projectName:Ge(e,"project.name"),timestamp:Ge(e,"timestamp")??""}}function at(e){if(e===void 0||e===null||e==="")return;return String(e)}function Qr(e){if(e===void 0||e===null||e==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}function _n(e){if(!Array.isArray(e))return[];return e.map(at).filter((t)=>t!==void 0)}function Ds(e){if(!tH(e))return{};return{name:at(e.name),version:at(e.version)}}function AL(e){if(!tH(e))return{};return{name:at(e.name),version:at(e.model_id),brand:at(e.brand),family:at(e.family)}}function uL(e){if(!tH(e))return{};return{displayName:at(e.display_name),email:at(e.email),id:at(e.id),ip:at(e.ip),username:at(e.username)}}function vs(e){if(e===void 0||e<0)return"\u2014";let t=Math.round(e),r=t%60,H=Math.floor(t/60)%60,n=Math.floor(t/3600),o=String(H).padStart(2,"0"),s=String(r).padStart(2,"0");return n>0?`${n}:${o}:${s}`:`${H}:${s}`}function MH(e){if(!e.name)return"\u2014";let t=e.version;if(!t||!/^\d/.test(t))return e.name;return`${e.name} ${t.split(".")[0]}`}function CH(e){return e.slice(0,8)}var Cl="All Views";function kn(e){return`is:unresolved issue.category:[${e.join(",")}]`}var hn=[{label:"Feed",query:Ts,description:"High and medium priority issues across your projects."},{label:"Inbox",query:"is:unresolved issue.progress:[fix_proposed,diagnosed,assigned,identified,fix_applied] assigned_or_suggested:me issue.category:[error,mobile,frontend,db_query,http_client,configuration]",sort:"progress",description:"Issues assigned or suggested to you that Seer has moved along."},{label:"Errors & Outages",query:kn(["error","outage"]),description:"Issues that break functionality such as application errors, failed jobs, or downtime incidents."},{label:"Breached Metrics",query:kn(["metric"]),description:"Issues that indicate degraded system behavior such as endpoint latency regressions or metric threshold violations."},{label:"Warnings",query:kn(["db_query","http_client","frontend","mobile"]),description:"Issues in your code or configuration that may not break functionality but can degrade performance or user experience."},{label:"Configuration",query:kn(["configuration"]),description:"Issues detected from SDK or tooling configuration problems that degrade your ability to debug telemetry using Sentry."},{label:"User Feedback",query:"issue.category:feedback status:unresolved",description:"Feedback submitted by your users."},{label:"Recently Run",query:"is:unresolved has:issue.seer_last_run",description:"Issues where Seer has identified a root cause."}],dL=new Map(hn.map((e)=>[e.label,e]));function Ql(e){return dL.get(e)}var Gj=hn[0];var Dl={"issues.feed":{pathname:"/issues/"},"issues.inbox":{pathname:"/issues/inbox/"},"issues.errors-outages":{pathname:"/issues/errors-outages/"},"issues.breached-metrics":{pathname:"/issues/breached-metrics/"},"issues.warnings":{pathname:"/issues/warnings/"},"issues.configuration":{pathname:"/issues/sentry-configuration/"},"issues.user-feedback":{pathname:"/issues/feedback/"},"issues.recently-run":{pathname:"/issues/autofix/recent/"},"issues.all-views":{pathname:"/issues/views/"},"explore.traces":{pathname:"/explore/traces/"},"explore.logs":{pathname:"/explore/logs/"},"explore.metrics":{pathname:"/explore/metrics/"},"explore.errors":{pathname:"/explore/errors-v2/"},"explore.discover":{pathname:"/explore/discover/homepage/"},"explore.profiles":{pathname:"/explore/profiles/"},"explore.replays":{pathname:"/explore/replays/"},"explore.releases":{pathname:"/explore/releases/"},"explore.conversations":{pathname:"/explore/agents/"},"explore.all-queries":{pathname:"/explore/saved-queries/"},"dashboards.all":{pathname:"/dashboards/"},"dashboards.sentry-built":{pathname:"/dashboards/",query:{filter:"onlyPrebuilt",sort:"mostPopular"}},"monitors.all":{pathname:"/monitors/"},"monitors.mine":{pathname:"/monitors/my-monitors/"},"monitors.error":{pathname:"/monitors/errors/"},"monitors.metric":{pathname:"/monitors/metrics/"},"monitors.cron":{pathname:"/monitors/crons/"},"monitors.uptime":{pathname:"/monitors/uptime/"},"monitors.mobile-build":{pathname:"/monitors/mobile-builds/"},"monitors.alerts":{pathname:"/monitors/alerts/"},"seer.ask":{pathname:"/issues/autofix/"}},Gs="explore.events",Nr="monitors.detectors",Es="issues.saved-view",Ks="explore.replay-detail",Nl="dashboards.list",Rl="dashboards.detail",Xs={query:"",statsPeriod:dl},pL={query:"",statsPeriod:rH},jl={Feed:"issues.feed",Inbox:"issues.inbox","Errors & Outages":"issues.errors-outages","Breached Metrics":"issues.breached-metrics",Warnings:"issues.warnings",Configuration:"issues.configuration","User Feedback":"issues.user-feedback","Recently Run":"issues.recently-run"},mL=[...hn.map((e)=>({id:jl[e.label],group:"issues",item:e.label,kind:"table",production:Dl[jl[e.label]],defaults:{query:e.query,sort:e.sort,statsPeriod:xt}})),tt("issues.all-views","issues",Cl,"table")],Bs=[...mL,Ln("explore.traces","Traces"),gL(),Ln("explore.metrics","Metrics"),Ln("explore.errors","Errors"),OL(),yL(),tt("explore.replays","explore","Replays","table",void 0,pL),Ln("explore.conversations","Conversations"),tt("explore.discover","explore","Discover","table"),tt("explore.all-queries","explore","All Queries","table"),tt("dashboards.all","dashboards","All Dashboards","table",Nl),tt("dashboards.sentry-built","dashboards","Sentry Built","table",Nl),tt("monitors.all","monitors","All Monitors","table",Nr),tt("monitors.mine","monitors","My Monitors","table",Nr),tt("monitors.error","monitors","Error","table",Nr),tt("monitors.metric","monitors","Metric","table",Nr),tt("monitors.cron","monitors","Cron","table",Nr),tt("monitors.uptime","monitors","Uptime","table",Nr),tt("monitors.mobile-build","monitors","Mobile Build","table",Nr),tt("monitors.alerts","monitors","Alerts","table"),tt("seer.ask","seer","Ask Seer","chat")];function gL(){return{...tt("explore.logs","explore","Logs","table",Gs,Xs),openLabel:"details"}}function OL(){return{...tt("explore.profiles","explore","Profiles","table",Gs,Xs),openLabel:"details"}}function yL(){return{...tt("explore.releases","explore","Releases","cards",void 0,{query:"",statsPeriod:Ns}),openLabel:"expand"}}function Ln(e,t){return{...tt(e,"explore",t,"table",Gs,Xs),openLabel:"details"}}function tt(e,t,r,H,n,o){return{id:e,group:t,item:r,kind:H,production:Dl[e],stateKey:n,defaults:o}}var fL=new Map(Bs.map((e)=>[vl(e.group,e.item),e])),SL=new Map(Bs.map((e)=>[e.id,e]));function vl(e,t){return`${e}::${t}`}function Gl(e,t){return fL.get(vl(e,t))}function hr(e){let t=SL.get(e);if(!t)throw Error(`Unknown screen id: ${e}`);return t}function jr(e){return e.stateKey??e.id}function El(e){return Bs.find((t)=>jr(t)===e)?.defaults??{}}import{countMetric as Kl}from"h:7___________________________________";var _L=/^[a-z0-9][a-z0-9_-]*$/i,Xl=/^\d+$/,kL=new Set(["www","us","eu"]),hL={inbox:"issues.inbox","errors-outages":"issues.errors-outages","breached-metrics":"issues.breached-metrics",warnings:"issues.warnings","sentry-configuration":"issues.configuration",feedback:"issues.user-feedback","user-feedback":"issues.user-feedback",alerts:"monitors.alerts"},LL={traces:"explore.traces",logs:"explore.logs",metrics:"explore.metrics",errors:"explore.errors","errors-v2":"explore.errors",profiles:"explore.profiles",profiling:"explore.profiles",replays:"explore.replays",releases:"explore.releases",agents:"explore.conversations",conversations:"explore.conversations","saved-queries":"explore.all-queries"},IL={"my-monitors":"monitors.mine",errors:"monitors.error",metrics:"monitors.metric",crons:"monitors.cron",uptime:"monitors.uptime","mobile-builds":"monitors.mobile-build",alerts:"monitors.alerts"};function In(e){let t=e.trim();if(!t)return Dr("empty","Enter a full Sentry production URL.");let r;try{r=new URL(t)}catch{return Dr("malformed","That is not a valid URL.")}if(r.protocol!=="https:")return Dr("protocol","Sentry production URLs must use https.");if(!bL(r.hostname))return Dr("host","That URL is not hosted on sentry.io.");let H;try{H=r.pathname.split("/").filter(Boolean).map(decodeURIComponent)}catch{return Dr("malformed","The URL path contains invalid escaping.")}let n;if(H[0]==="organizations")n=H[1],H=H.slice(2);let o=wL(r.hostname);if(n&&o&&n!==o)return Dr("organization_mismatch","The organizations in the Sentry hostname and URL path do not match.");let s=xL(H,r.searchParams);if(s.kind==="unsupported")return s;let i=n??o;if(!i||!_L.test(i))return Dr("organization","The URL does not identify a Sentry organization.");let a=DL(r.searchParams);return{kind:"location",location:{org:i,...s.location,...a===void 0?{}:{screen:"seer.ask"},state:jL(r.searchParams),...a===void 0?{}:{seerRunId:a}}}}function bn(e){let t=new URL(`https://${e.org}.sentry.io`),r=RL(e);t.pathname=r.pathname,vL(t.searchParams,e.state);for(let[H,n]of Object.entries(r.query??{}))t.searchParams.set(H,n);if(e.seerRunId!==void 0)t.pathname="/issues/",t.searchParams.set("explorerRunId",String(e.seerRunId));return t.toString()}function Bl(e,t){if(e.kind==="invalid")Kl("nav.url.invalid",{surface:t,reason:e.reason});else Kl("nav.url.unsupported",{surface:t,family:e.family})}function bL(e){return e==="sentry.io"||e.endsWith(".sentry.io")}function wL(e){if(!e.endsWith(".sentry.io"))return;let r=e.slice(0,-10);if(!r||r.includes(".")||kL.has(r))return;return r}function xL(e,t){let[r,...H]=e;if(r==="issues")return TL(H);if(r==="explore")return PL(H,t);if(r==="dashboard"||r==="dashboards")return CL(r,H,t);if(r==="monitors")return QL(H);if(r==="traces")return QH("explore.traces",H,"explore");if(r==="logs")return QH("explore.logs",H,"explore");if(r==="profiling")return QH("explore.profiles",H,"explore");if(r==="replays")return NL(H);if(r==="releases")return QH("explore.releases",H,"explore");if(r==="discover")return qL(H,t);if(r==="errors-v2")return QH("explore.errors",H,"explore");if(r==="feedback"&&H.length===0)return Qe("issues.user-feedback");return Dt(r==="settings"?"settings":r==="projects"?"projects":"other")}function TL(e){if(e.length===0)return Qe("issues.feed");let t=hL[e[0]];if(t&&e.length===1)return Qe(t);if(e[0]==="views"&&e.length===1)return Qe("issues.all-views");if(e[0]==="views"&&e[1]&&e.length===2)return Qe("issues.all-views",{kind:"issue_view",viewId:e[1]});if(e[0]==="autofix"&&e.length===1)return Qe("seer.ask");if(e[0]==="autofix"&&e[1]==="recent"&&e.length===2)return Qe("issues.recently-run");let r=e[0];if(r&&Xl.test(r)){if(e.length===1)return Qe("issues.feed",{kind:"issue",issueId:r});if(e[1]==="events"&&e[2]&&e.length===3)return Qe("issues.feed",{kind:"issue",issueId:r,eventId:e[2]})}return Dt("issues")}function PL(e,t){let r=e[0];if(!r)return Dt("explore");if(r==="replays"){if(e.length===1)return Qe("explore.replays");if(e.length===2&&e[1])return Qe("explore.replays",{kind:"replay",replayId:e[1]});return Dt("explore")}if(r==="discover"){if(e.length===1||e.length===2&&["homepage","queries"].includes(e[1]))return Qe("explore.discover");if(e.length===2&&e[1]==="results"){let o=ML(t.get("dataset"));return o?Qe(o):Dt("explore")}return Dt("explore")}let H=LL[r];if(!H||e.length!==1)return Dt("explore");let n=t.get("id");return n?Qe(H,{kind:"saved_query",queryId:n,source:"explore",resultScreen:H,dataset:t.get("dataset")??void 0,title:t.get("title")??void 0}):Qe(H)}function qL(e,t){if(e.length===0)return Qe("explore.discover");if(e.length!==1||e[0]!=="results")return Dt("explore");let r=t.get("id");return r?Qe("explore.discover",{kind:"saved_query",queryId:r,source:"discover",resultScreen:"explore.discover",dataset:t.get("dataset")??void 0,title:t.get("title")??void 0}):Qe("explore.discover")}function ML(e){switch(e?.toLowerCase()){case"spans":return"explore.traces";case"logs":return"explore.logs";case"metrics":case"tracemetrics":return"explore.metrics";case"errors":case"issueplatform":return"explore.errors";default:return}}function CL(e,t,r){if(e==="dashboards"&&t.length===0)return Qe(r.get("filter")==="onlyPrebuilt"?"dashboards.sentry-built":"dashboards.all");if(t.length===1&&t[0])return Qe("dashboards.all",{kind:"dashboard",dashboardId:t[0]});return Dt("dashboards")}function QL(e){if(e.length===0)return Qe("monitors.all");let t=IL[e[0]];if(t&&e.length===1)return Qe(t);if(e.length===1&&e[0]&&Xl.test(e[0]))return Qe("monitors.all",{kind:"monitor",detectorId:e[0]});return Dt("monitors")}function NL(e){if(e.length===0)return Qe("explore.replays");if(e.length===1&&e[0])return Qe("explore.replays",{kind:"replay",replayId:e[0]});return Dt("explore")}function QH(e,t,r){return t.length===0?Qe(e):Dt(r)}function Qe(e,t){return{kind:"matched",location:{screen:e,detail:t}}}function jL(e){let t={},r=e.get("query"),H=e.get("statsPeriod"),n=e.get("sort"),o=e.getAll("project").filter(Boolean),s=e.getAll("environment").filter(Boolean),i=e.getAll("field").filter(Boolean);if(r!==null)t.query=r;if(H)t.statsPeriod=H;if(n)t.sort=n;if(o.length>0)t.selectedProjects=o;if(s.length>0)t.selectedEnvs=s;if(i.length>0)t.fields=i;return Object.keys(t).length>0?t:void 0}function DL(e){let t=e.get("explorerRunId");if(!t)return;return/^\d+$/.test(t)?Number(t):t}function RL(e){let t=e.detail;if(!t)return hr(e.screen).production;switch(t.kind){case"issue":return{pathname:t.eventId?`/issues/${encodeURIComponent(t.issueId)}/events/${encodeURIComponent(t.eventId)}/`:`/issues/${encodeURIComponent(t.issueId)}/`};case"dashboard":return{pathname:`/dashboard/${encodeURIComponent(t.dashboardId)}/`};case"replay":return{pathname:`/explore/replays/${encodeURIComponent(t.replayId)}/`};case"monitor":return{pathname:`/monitors/${encodeURIComponent(t.detectorId)}/`};case"issue_view":return{pathname:`/issues/views/${encodeURIComponent(t.viewId)}/`};case"saved_query":return{...t.source==="discover"?{pathname:"/discover/results/"}:hr(t.resultScreen).production,query:{id:t.queryId,...t.dataset?{dataset:t.dataset}:{},...t.title?{title:t.title}:{}}}}}function vL(e,t){if(!t)return;if(t.query!==void 0)e.set("query",t.query);if(t.statsPeriod)e.set("statsPeriod",t.statsPeriod);if(t.sort)e.set("sort",t.sort);for(let r of t.selectedProjects??[])e.append("project",r);for(let r of t.selectedEnvs??[])e.append("environment",r);for(let r of t.fields??[])e.append("field",r)}function Dr(e,t){return{kind:"invalid",reason:e,message:t}}function Dt(e){return{kind:"unsupported",family:e,message:"That Sentry page is not implemented in sentry-tui yet."}}var Fs="sentry-tui.session",Us=1;function Ul(e){return{kind:Fs,version:Us,...e}}function Yl(e){if(!Rr(e)||e.kind!==Fs)return;switch(e.version){case Us:return GL(e);default:return}}function GL(e){let t=$l(e.org),r=EL(e.navigation),H=BL(e.projectsByOrg),n=WL(e.seerCodeModeByOrg),o=Fl(e.seerBashModeByOrg),s=Fl(e.seerShowThinkingByOrg),i=FL(e.seerRunId);if(!t||!r||!H||!n||!o||!s||i===null)return;let a=Wl(r.location,t);if(!a)return;let l=[];for(let A of r.viewStack){let u=Wl(A,t);if(!u?.detail)return;l.push(u)}return{snapshot:{kind:Fs,version:Us,org:t,navigation:r,projectsByOrg:H,seerCodeModeByOrg:n,seerBashModeByOrg:o,seerShowThinkingByOrg:s,...i===void 0?{}:{seerRunId:i}},location:a,viewStack:l}}function EL(e){if(!Rr(e)||typeof e.location!=="string")return;if(!Array.isArray(e.viewStack)||e.viewStack.length>32||!e.viewStack.every((r)=>typeof r==="string"))return;let t=KL(e.screens);if(!t)return;return{location:e.location,viewStack:[...e.viewStack],screens:t}}function KL(e){if(!Rr(e))return;let t=Object.entries(e);if(t.length>256)return;let r=Object.create(null);for(let[H,n]of t){let o=XL(n);if(!H||!o)return;r[H]=o}return r}function XL(e){if(!Rr(e))return;let t=e.source===null?null:$l(e.source),r=e.selected,H=Ws(e.selectedProjects),n=Ws(e.selectedEnvs);if(t===void 0&&e.source!==null||!Number.isSafeInteger(r)||r<0||typeof e.query!=="string"||typeof e.sort!=="string"||typeof e.statsPeriod!=="string"||!H||!n||typeof e.detailOpen!=="boolean")return;return{source:t??null,selected:r,query:e.query,sort:e.sort,statsPeriod:e.statsPeriod,selectedProjects:H,selectedEnvs:n,detailOpen:e.detailOpen}}function Wl(e,t){let r=In(e);return r.kind==="location"&&r.location.org===t?r.location:void 0}function BL(e){if(!Rr(e))return;let t=Object.create(null);for(let[r,H]of Object.entries(e)){let n=Ws(H);if(!r||!n)return;t[r]=n}return t}function Fl(e){if(!Rr(e))return;let t=Object.create(null);for(let[r,H]of Object.entries(e)){if(!r||typeof H!=="boolean")return;t[r]=H}return t}function WL(e){if(!Rr(e))return;let t=Object.create(null);for(let[r,H]of Object.entries(e)){if(!r||H!=="off"&&H!=="on"&&H!=="only")return;t[r]=H}return t}function Ws(e){return Array.isArray(e)&&e.every((t)=>typeof t==="string")?[...e]:void 0}function FL(e){if(e===void 0)return;if(typeof e==="string"&&e.length>0)return e;if(typeof e==="number"&&Number.isFinite(e))return e;return null}function $l(e){return typeof e==="string"&&e.length>0?e:void 0}function Rr(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}import{createContext as YL,useContext as $L,useEffect as VL,useState as ZL}from"h:0__";var Ys={mode:"dark",bg:"#0D0A10",panel:"#1B1821",panelAlt:"#24202B",chip:{surface:"#2D2835",rim:"#46404F",rimShadow:"#393442"},selected:"#26212E",border:"#393442",borderFocused:"#7553FF",text:"#E7E5EA",muted:"#A49EAE",subText:"#958E9F",accent:"#7553FF",danger:"#F6938C",warning:"#FFCE00",success:"#5ECE73",highlight:"#FF45A8",hotkey:"#FF45A8",syntax:{keyword:"#F6938C",string:"#5ECE73",number:"#FF9838",comment:"#A49EAE",function:"#9A94F1",type:"#FFCE00",variable:"#E7E5EA",constant:"#FF9838",operator:"#A49EAE",punctuation:"#A49EAE"},level:{fatal:"#C10000",error:"#FF9838",warning:"#FFCE00",info:"#7553FF",sample:"#7553FF",unknown:"#958E9F"},status:{resolved:"#5ECE73",regressed:"#9A94F1",escalating:"#F6938C",new:"#FFCE00",ongoing:"#A49EAE",archived:"#A49EAE"}},UL={mode:"light",bg:"#FFFFFF",panel:"#F8F8F9",panelAlt:"#EEEEF0",chip:{surface:"#E8E8EB",rim:"#CDCCD2",rimShadow:"#B1AFB8"},selected:"#E8E8EB",border:"#C0BEC6",borderFocused:"#5827D6",text:"#302E36",muted:"#5B5864",subText:"#6A6772",accent:"#5827D6",danger:"#C10000",warning:"#813100",success:"#007800",highlight:"#9F005F",hotkey:"#9F005F",syntax:{keyword:"#C10000",string:"#007800",number:"#934100",comment:"#5B5864",function:"#5533B2",type:"#813100",variable:"#302E36",constant:"#C10000",operator:"#5B5864",punctuation:"#5B5864"},level:{fatal:"#780000",error:"#C10000",warning:"#813100",info:"#5827D6",sample:"#5827D6",unknown:"#5B5864"},status:{resolved:"#007800",regressed:"#5533B2",escalating:"#C10000",new:"#813100",ongoing:"#5B5864",archived:"#5B5864"}};function Zl(e){return e==="light"?UL:Ys}var Vl=new Map;async function zl(e){let t=Vl.get(e.mode);if(t)return t;let{SyntaxStyle:r}=await import("h:3__________"),H=r.fromStyles({default:{fg:e.text},keyword:{fg:e.syntax.keyword},string:{fg:e.syntax.string},number:{fg:e.syntax.number},comment:{fg:e.syntax.comment,italic:!0},function:{fg:e.syntax.function},type:{fg:e.syntax.type},variable:{fg:e.syntax.variable},constant:{fg:e.syntax.constant},operator:{fg:e.syntax.operator},punctuation:{fg:e.syntax.punctuation}});return Vl.set(e.mode,H),H}import{jsxDEV as zL}from"h:6___________________________";var Jl=YL(Ys);function S(){return $L(Jl)}function eA({source:e,initialMode:t,fixed:r,children:H}){let[n,o]=ZL(t);return VL(()=>{if(r)return;let s=(i)=>o(i);if(e.on("theme_mode",s),e.themeMode)o(e.themeMode);return()=>{e.off("theme_mode",s)}},[r,e]),zL(Jl.Provider,{value:Zl(n),children:H},void 0,!1,void 0,this)}var Vt={RESOLVED:"resolved",UNRESOLVED:"unresolved",IGNORED:"ignored",REPROCESSING:"reprocessing"},tA={ARCHIVED_UNTIL_ESCALATING:"archived_until_escalating",ARCHIVED_UNTIL_CONDITION_MET:"archived_until_condition_met",ARCHIVED_FOREVER:"archived_forever",ESCALATING:"escalating",ONGOING:"ongoing",REGRESSED:"regressed",NEW:"new"};function HH(e,t){if(!Array.isArray(e))return;return e.find((r)=>r.type===t)}function rA(e,t){let r={...e};if(t.status!==void 0)r.status=t.status;if(t.substatus!==void 0)r.substatus=t.substatus;if(t.isBookmarked!==void 0)r.isBookmarked=t.isBookmarked;if(t.isSubscribed!==void 0)r.isSubscribed=t.isSubscribed;if(t.hasSeen!==void 0)r.hasSeen=t.hasSeen;if(t.priority!==void 0)r.priority=t.priority;if(t.inbox===!1)r.hasSeen=!0;return r}var $s=[{commandId:"sentry.issue.resolve",pastTense:"resolved",update:(e)=>e.status===Vt.RESOLVED?null:{status:Vt.RESOLVED}},{commandId:"sentry.issue.archive",pastTense:"archived",update:(e)=>e.status===Vt.IGNORED?{status:Vt.UNRESOLVED}:{status:Vt.IGNORED,substatus:tA.ARCHIVED_UNTIL_ESCALATING}},{commandId:"sentry.issue.unresolve",pastTense:"unresolved",update:(e)=>e.status===Vt.UNRESOLVED?null:{status:Vt.UNRESOLVED}},{commandId:"sentry.issue.bookmark",pastTense:"bookmarked",update:(e)=>({isBookmarked:!e.isBookmarked})},{commandId:"sentry.issue.markReviewed",pastTense:"marked reviewed",update:(e)=>e.hasSeen?null:{inbox:!1,hasSeen:!0}}];function wn(e){return $s.find((t)=>t.commandId===e)}function HA(e){switch(e){case"sentry.issue.resolve":return"already resolved";case"sentry.issue.unresolve":return"already unresolved";case"sentry.issue.markReviewed":return"already reviewed";default:return"nothing to do"}}import{breadcrumb as z9,identify as J9,log as ej}from"h:7___________________________________";import{useEffect as bI,useMemo as wI,useState as hA}from"h:0__";import{useKeyboard as xI,useTerminalDimensions as TI}from"h:4___________";function Vs({onlyFirst:e=!1}={}){return new RegExp("(?:\\u001B\\][^\\u0007\\u001B\\u009C]*(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",e?void 0:"g")}var JL=Vs();function Zs(e){if(typeof e!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(JL,"")}var nA=161,oA=1114109,sA=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],iA=12288,aA=65510,cA=[12288,12288,65281,65376,65504,65510];var lA=4352,AA=262141,zs=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141];var xn=(e,t)=>{let r=0,H=Math.floor(e.length/2)-1;while(r<=H){let n=Math.floor((r+H)/2),o=n*2;if(t<e[o])H=n-1;else if(t>e[o+1])r=n+1;else return!0}return!1};var uA=19968,[eI,tI]=rI(zs);function rI(e){let t=e[0],r=e[1];for(let H=0;H<e.length;H+=2){let n=e[H],o=e[H+1];if(uA>=n&&uA<=o)return[n,o];if(o-n>r-t)t=n,r=o}return[t,r]}var dA=(e)=>{if(e<nA||e>oA)return!1;return xn(sA,e)},pA=(e)=>{if(e<iA||e>aA)return!1;return xn(cA,e)};var mA=(e)=>{if(e>=eI&&e<=tI)return!0;if(e<lA||e>AA)return!1;return xn(zs,e)};function HI(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function NH(e,{ambiguousAsWide:t=!1}={}){if(HI(e),pA(e)||mA(e)||t&&dA(e))return 2;return 1}var nI=new Intl.Segmenter,gA=/^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Format}|\p{Nonspacing_Mark}|\p{Enclosing_Mark}|\p{Surrogate})+$/v,oI=/^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Nonspacing_Mark}\p{Enclosing_Mark}\p{Surrogate}]+/v,sI=/\p{Spacing_Mark}/v,iI=/^\p{RGI_Emoji}$/v,aI=/^[\d#*]\u20E3$/,cI=/\p{Extended_Pictographic}/gu;function lI(e){if(e.length>50)return!1;if(aI.test(e))return!0;if(e.includes("\u200D")){let t=e.match(cI);return t!==null&&t.length>=2}return!1}function AI(e){return e.replace(oI,"")}function uI(e){return gA.test(e)}function OA(e){return e>=4352&&e<=4447||e>=43360&&e<=43388}function yA(e){return e>=4448&&e<=4519||e>=55216&&e<=55238}function fA(e){return e>=4520&&e<=4607||e>=55243&&e<=55291}function dI(e){return OA(e)||yA(e)||fA(e)}function pI(e,t){let r=[];for(let n of e){if(gA.test(n))continue;r.push(n.codePointAt(0))}if(r.length===0)return;let H=0;for(let n=0;n<r.length;n++){let o=r[n];if(!dI(o)){if(H===0)return;for(let s=n;s<r.length;s++)H+=NH(r[s],t);return H}if(OA(o)&&yA(r[n+1])){H+=2,n+=fA(r[n+2])?2:1;continue}H+=NH(o,t)}return H}function mI(e,t){let r=0,H=!0;for(let n of e){if(H){H=!1;continue}if(sI.test(n)||n>="\uFF00"&&n<="\uFFEF")r+=NH(n.codePointAt(0),t)}return r}function Js(e,t={}){if(typeof e!=="string"||e.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:H=!1}=t,n=e;if(!H&&(n.includes("\x1B")||n.includes("\x9B")))n=Zs(n);if(n.length===0)return 0;if(/^[\u0020-\u007E]*$/.test(n))return n.length;let o=0,s={ambiguousAsWide:!r};for(let{segment:i}of nI.segment(n)){if(uI(i))continue;if(iI.test(i)||lI(i)){o+=2;continue}let a=AI(i),l=pI(a,s);if(l!==void 0){o+=l;continue}let c=a.codePointAt(0);o+=NH(c,s),o+=mI(a,s)}return o}function ce(e){return Js(e)}var gI=/\u001b\][\s\S]*?(?:\u0007|\u001b\\)/g,OI=/\u001b(?:\[[0-9;?]*[ -/]*[@-~]|[@-Z\\-_])/g,yI=/[\n\r\t\v\f\u0085\u2028\u2029]+/g,fI=/[\u0000-\u0009\u000b-\u001f\u007f-\u009f\u2028\u2029]/g,SI=/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/g;function SA(e){return e.replace(gI,"").replace(OI,"")}function _I(e){if(!/[\u0000-\u0009\u000b-\u001f\u007f-\u009f\u2028\u2029]/.test(e))return e;return SA(e).replace(fI,"")}function _A(e){if(!/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/.test(e))return e;return SA(e).replace(yI," ").replace(SI,"")}function R(e,t,r="\u2026"){if(t<=0)return"";let H=_A(e);if(ce(H)<=t)return H;let n=ce(r);if(t<=n)return r.slice(0,t);let o=t-n,s="",i=0;for(let a of H){let l=ce(a);if(i+l>o)break;s+=a,i+=l}return s+r}function vr(e,t){if(t<=0)return[];let r=[];for(let H of _I(e).split(`
|
|
9
|
-
`)){if(H===""){r.push("");continue}let n="";for(let o of H.split(" ")){let s=n===""?o:`${n} ${o}`;if(ce(s)<=t){n=s;continue}if(n!=="")r.push(n),n="";let i=o;while(ce(i)>t){let a="",l=0;for(let c of i){let A=ce(c);if(l+A>t)break;a+=c,l+=A}r.push(a),i=i.slice(a.length)}n=i}r.push(n)}return r}function _(e,t,r="left"){let H=R(e,t),n=Math.max(0,t-ce(H));if(r==="center"){let s=Math.floor(n/2);return" ".repeat(s)+H+" ".repeat(n-s)}let o=" ".repeat(n);return r==="left"?H+o:o+H}function ei(e,t,r="\u2026"){if(t<=0)return"";let H=_A(e);if(ce(H)<=t)return H;let n=ce(r);if(t<=n)return r.slice(0,t);let o=t-n,s=Math.ceil(o/2),i=o-s,a=[...H],l="",c=0;for(let u of a){let d=ce(u);if(c+d>s)break;l+=u,c+=d}let A="";c=0;for(let u=a.length-1;u>=0;u--){let d=a[u],m=ce(d);if(c+m>i)break;A=d+A,c+=m}return l+r+A}import{jsxDEV as kA}from"h:6___________________________";function Tn({text:e,positions:t,width:r,fg:H}){let n=S(),o=R(e,r),s=o===e?o.length:Math.max(0,o.length-1),i=new Set(t),a=[],l="",c=!1,A=()=>{if(!l)return;a.push(kA("span",{fg:c?n.accent:H,children:l},a.length,!1,void 0,this)),l=""};for(let u=0;u<o.length;u++){let d=u<s&&i.has(u);if(d!==c)A(),c=d;l+=o[u]}return A(),kA("text",{children:a},void 0,!1,void 0,this)}import{useTerminalDimensions as kI}from"h:4___________";function nH({width:e,height:t,terminalWidth:r,terminalHeight:H,margin:n=2}){let o=Math.max(1,Math.min(e,r-n*2)),s=Math.max(1,Math.min(t,H-n*2));return{width:o,height:s,left:Math.max(0,Math.floor((r-o)/2)),top:Math.max(0,Math.floor((H-s)/2))}}function Pn(e,t,r){if(t<=r)return 0;let H=e-Math.floor(r/2);return Math.min(Math.max(H,0),t-r)}import{jsxDEV as ti,Fragment as II}from"h:6___________________________";var hI=55,LI=60;function ar({title:e,width:t,height:r,onClose:H,children:n}){let o=S(),{width:s,height:i}=kI(),a=nH({width:t,height:r,terminalWidth:s,terminalHeight:i});return ti(II,{children:[ti("box",{style:{position:"absolute",top:0,left:0,width:s,height:i,zIndex:hI},onMouseUp:H},void 0,!1,void 0,this),ti("box",{title:e,style:{position:"absolute",top:a.top,left:a.left,width:a.width,height:a.height,zIndex:LI,border:!0,borderColor:o.accent,backgroundColor:o.panel,flexDirection:"column",paddingTop:1,paddingRight:1,paddingBottom:0,paddingLeft:1},onMouseUp:(l)=>l.stopPropagation(),children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function qn(e){return e.name==="down"||e.name==="n"&&Boolean(e.ctrl)}function Mn(e){return e.name==="up"||e.name==="p"&&Boolean(e.ctrl)}function je(e){e.preventDefault(),e.stopPropagation()}function Rt(e,t,r=je){for(let H of e){let n=H(t);if(n==="notMine")continue;if(n==="mine")r(t);return!0}return!1}import{jsxDEV as ct}from"h:6___________________________";var LA=68,IA=24,PI=7,qI=2,bA=2,MI="\u2191\u2193 move \xB7 enter select \xB7 esc close";function wA({actions:e,onRun:t,onClose:r}){let H=S(),{width:n,height:o}=TI(),[s,i]=hA(""),[a,l]=hA(0),{results:c,rows:A}=wI(()=>{let p=Hl(e,s),O=nl(p,s.trim()?tl:void 0);return{results:O.flatMap((L)=>L.results),rows:ol(O)}},[e,s]);bI(()=>l(0),[s]),xI((p)=>{Rt([()=>{if(Q("sentry.nav.back",p))return r(),"mine";if(Q("sentry.app.commandPalette",p))return r(),"mine";if(Q("sentry.nav.open",p)){let O=c[a]?.action;if(O)t(O);return"mine"}if(qn(p))return l((O)=>Math.min(O+1,c.length-1)),"mine";if(Mn(p))return l((O)=>Math.max(O-1,0)),"mine";return"notMine"}],p,je)});let u=nH({width:LA,height:IA,terminalWidth:n,terminalHeight:o}),d=Math.max(1,u.width-4),m=Math.max(1,u.height-PI),g=Pn(Math.max(0,sl(A,a)),A.length,m);return ct(ar,{title:" Command palette ",width:LA,height:IA,onClose:r,children:[ct("box",{style:{flexDirection:"row",flexShrink:0},children:[ct("text",{fg:H.accent,children:"\u276F "},void 0,!1,void 0,this),ct("input",{value:s,placeholder:"Search commands and destinations\u2026",focused:!0,onInput:i,style:{flexGrow:1,textColor:H.text,backgroundColor:H.panel,focusedTextColor:H.text,focusedBackgroundColor:H.panel,placeholderColor:H.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ct("box",{style:{flexGrow:1,flexDirection:"column",marginTop:1},children:A.length===0?ct("text",{fg:H.muted,children:R(`No matches for "${s}"`,d)},void 0,!1,void 0,this):A.slice(g,g+m).map((p)=>{if(p.kind==="heading")return ct("text",{fg:H.accent,children:p.section},`heading:${p.section}`,!1,void 0,this);if(p.kind==="more")return ct("text",{fg:H.subText,children:` +${p.count} more \u2014 keep typing`},`more:${p.section}`,!1,void 0,this);return ct(CI,{row:p,selected:p.index===a,width:d,onPress:()=>t(p.result.action)},p.result.action.id,!1,void 0,this)})},void 0,!1,void 0,this),ct("box",{style:{flexDirection:"row",flexShrink:0,marginTop:1},children:[ct("text",{fg:H.muted,children:R(MI,Math.max(0,d-Is.length-bA))},void 0,!1,void 0,this),ct("box",{style:{flexGrow:1}},void 0,!1,void 0,this),ct("text",{fg:H.subText,children:Is},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function CI({row:e,selected:t,width:r,onPress:H}){let n=S(),{action:o,positions:s}=e.result,i=o.detail??"",a=Math.max(1,r-qI-(i?i.length+bA:0));return ct("box",{style:{flexDirection:"row",flexShrink:0,backgroundColor:t?n.selected:void 0},onMouseUp:H,children:[ct("text",{fg:n.accent,children:t?"\u25B8 ":" "},void 0,!1,void 0,this),ct(Tn,{text:o.label,positions:s,width:a,fg:t?n.text:n.muted},void 0,!1,void 0,this),ct("box",{style:{flexGrow:1}},void 0,!1,void 0,this),i?ct("text",{fg:n.subText,children:i},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{TextAttributes as jH}from"h:3__________";var X=jH.BOLD,mr=jH.ITALIC,rt=jH.DIM,oH=jH.UNDERLINE,sH=jH.NONE;import{jsxDEV as QI}from"h:6___________________________";function Pt({command:e,emphasised:t=!1}){let r=S(),H=we(e);if(!H)return null;return QI("text",{fg:r.hotkey,attributes:t?X|oH:oH,children:ve(H)},void 0,!1,void 0,this)}import{jsxDEV as ri}from"h:6___________________________";var NI=10,xA=2,Hi="sentry.nav.back";function TA(e){let t=we(e);return t?ce(ve(t)):0}function PA(e,t){let r=Math.floor(t/2)-xA-TA(Hi);return R(`back to ${e} `,Math.max(0,r))}function ni(e,t){let r=PA(e,t);return r?xA+ce(r)+TA(Hi):0}function qA({parent:e,top:t,right:r,paneWidth:H}){let n=S(),o=PA(e,H);if(!o)return null;let s=ni(e,H);return ri("box",{style:{position:"absolute",top:t,left:Math.max(0,r-s),width:s,height:1,zIndex:NI,flexDirection:"row",backgroundColor:n.bg,paddingLeft:1,paddingRight:1},children:[ri("text",{fg:n.muted,children:o},void 0,!1,void 0,this),ri(Pt,{command:Hi},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as pi,useEffect as mi,useMemo as Kn,useState as zm}from"h:0__";import{jsxDEV as DH}from"h:6___________________________";function iH({label:e,hotkey:t,fg:r,bold:H=!1}){let n=S(),o=H?X:sH;if(!t)return DH("text",{fg:r,attributes:o,children:e},void 0,!1,void 0,this);let s=[...e],i=t.index>=0,a=i?s.slice(0,t.index).join(""):`${e} `,l=i?s.slice(t.index+1).join(""):"",c=H?X|oH:oH;return DH("text",{attributes:o,children:[a?DH("span",{fg:r,children:a},void 0,!1,void 0,this):null,DH("span",{fg:n.hotkey,attributes:c,children:t.key},void 0,!1,void 0,this),l?DH("span",{fg:r,children:l},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as ze,Fragment as GI}from"h:6___________________________";var Lr=1,ft=3,jI="\u2590",DI="\u258C",CA=2,RI="\u2581",vI="\u2594";function vt({command:e,label:t,inlineHotkey:r=!1,caret:H=!1}){let n=ve(we(e)),o=QA(e,t,r),s=n&&!o?ce(n)+1:0,i=o?.index===-1?ce(o.key)+1:0;return CA+1+s+ce(t)+i+(H?2:0)+1}function QA(e,t,r){if(!r)return;let H=ve(we(e));if(!H)return;let o=[...H].length===1?[...t].findIndex((s)=>s.toLowerCase()===H.toLowerCase()):-1;return{key:H,index:o}}function Cn(e){let t=[],r=0;for(let H of e)t.push(r),r+=vt(H)+Lr;return t}function Gr({command:e,label:t,inlineHotkey:r=!1,caret:H=!1,active:n=!1,onPress:o}){let s=S(),i=ve(we(e)),a=QA(e,t,r),l=n?s.accent:s.text,c=vt({command:e,label:t,inlineHotkey:r,caret:H})-CA;return ze("box",{style:{flexDirection:"column",flexShrink:0},onMouseDown:o,children:[ze(MA,{glyph:RI,width:c,color:s.chip.rim},void 0,!1,void 0,this),ze("box",{style:{flexDirection:"row"},children:[ze("text",{fg:s.chip.rim,children:jI},void 0,!1,void 0,this),ze("box",{style:{flexDirection:"row",backgroundColor:s.chip.surface},children:[ze("text",{children:" "},void 0,!1,void 0,this),i&&!a?ze(GI,{children:[ze(Pt,{command:e,emphasised:!0},void 0,!1,void 0,this),ze("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,a?ze(iH,{label:t,hotkey:a,fg:l},void 0,!1,void 0,this):ze("text",{fg:l,children:t},void 0,!1,void 0,this),H?ze("text",{fg:n?s.accent:s.muted,children:" \u25BE"},void 0,!1,void 0,this):null,ze("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ze("text",{fg:s.chip.rim,children:DI},void 0,!1,void 0,this)]},void 0,!0,void 0,this),ze(MA,{glyph:vI,width:c,color:s.chip.rimShadow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function MA({glyph:e,width:t,color:r}){return ze("text",{fg:r,children:` ${e.repeat(Math.max(0,t))} `},void 0,!1,void 0,this)}function Qn({chips:e,activeIndex:t,onPress:r}){return ze("box",{style:{flexDirection:"row",flexShrink:0},children:e.map((H,n)=>ze("box",{style:{flexDirection:"row"},children:[n>0?ze("text",{children:" ".repeat(Lr)},void 0,!1,void 0,this):null,ze(Gr,{...H,active:n===t,onPress:()=>r?.(H,n)},void 0,!1,void 0,this)]},H.command,!0,void 0,this))},void 0,!1,void 0,this)}import{useCallback as Wm,useEffect as Fm,useMemo as ai,useRef as $x,useState as ci}from"h:0__";import{useKeyboard as Vx,useTerminalDimensions as Zx}from"h:4___________";import{readFileSync as EI}from"fs";var NA=new Map;function Nn(e){let t=NA.get(e);if(!t)t=EI(e),NA.set(e,t);return t}var jA="./assets/activeadmin-p8zytf80.png";var DA="./assets/actix-tt2a8ysg.png";var RA="./assets/aiohttp-gmt10x6m.png";var vA="./assets/alpinejs-wqnxn6y1.png";var GA="./assets/amazon-p185z4ev.png";var EA="./assets/amd-p8c25cfe.png";var KA="./assets/analogjs-cna1hg98.png";var XA="./assets/android-xjr1314k.png";var BA="./assets/android-phone-mjzxta39.png";var WA="./assets/android-tablet-mjzxta39.png";var FA="./assets/angularjs-7h46ejvd.png";var UA="./assets/anthropic-rrcv6ejq.png";var YA="./assets/anthropic-claude-4n50evr8.png";var $A="./assets/apache-airflow-w7c50371.png";var VA="./assets/apache-beam-2q3zbaks.png";var ZA="./assets/apache-spark-a680t00k.png";var zA="./assets/app-engine-ghexy1y6.png";var JA="./assets/apple-fh3mfwj2.png";var eu="./assets/apple-ipad-dfky3d0g.png";var tu="./assets/apple-iphone-dfky3d0g.png";var ru="./assets/apple-tv-dfky3d0g.png";var Hu="./assets/apple-watch-dfky3d0g.png";var nu="./assets/ariadne-p2xx19an.png";var ou="./assets/arm-5rs1ketc.png";var su="./assets/astro-nbngj53v.png";var iu="./assets/aws-7vzr54cj.png";var au="./assets/awslambda-qzxqvkkb.png";var cu="./assets/azure-functions-bst1wkws.png";var lu="./assets/backbone-7cg22pv4.png";var Au="./assets/bazzite-ybxzg5vm.png";var uu="./assets/blazor-hxv5b1jm.png";var du="./assets/bottle-fgvkq9ed.png";var pu="./assets/bun-qzcj59r5.png";var mu="./assets/capacitor-a3m2sqp1.png";var gu="./assets/celery-gd1erc4d.png";var Ou="./assets/chalice-xmacx55d.png";var yu="./assets/chrome-xdd75zcv.png";var fu="./assets/chromium-s43136bv.png";var Su="./assets/clickhouse-eg3e8wwt.png";var _u="./assets/clojure-kvpja977.png";var ku="./assets/cloudflare-pxsb5f3n.png";var hu="./assets/cloudflare-pages-0nwgb0by.png";var Lu="./assets/cloudflare-workers-x0py78jv.png";var Iu="./assets/cohere-sp0b9n61.png";var bu="./assets/connect-7r7dc91q.png";var wu="./assets/convex-az2pt1fc.png";var xu="./assets/cordova-7wzvfz77.png";var Tu="./assets/cpp-n8ke0smy.png";var Pu="./assets/cryengine-c186nv57.png";var qu="./assets/crystal-zwaetd1f.png";var Mu="./assets/csharp-4cgxa8dg.png";var Cu="./assets/css-g8jdrx8v.png";var Qu="./assets/dart-g38t75be.png";var Nu="./assets/deepseek-7r4457fz.png";var ju="./assets/default-mqvk902r.png";var Du="./assets/deno-815kzqz1.png";var Ru="./assets/django-qq1crz4g.png";var vu="./assets/dotnet-5gqvv1yc.png";var Gu="./assets/dotnetcore-n03w6x5h.png";var Eu="./assets/dotnetframework-brnpeeq7.png";var Ku="./assets/dotnetfx-7vm66a84.png";var Xu="./assets/dramatiq-b0c46xrk.png";var Bu="./assets/echo-7va69gxg.png";var Wu="./assets/edge-4qt9t9s2.png";var Fu="./assets/edge-legacy-sqwdg70h.png";var Uu="./assets/effect-sqx9ndtk.png";var Yu="./assets/electron-2n9s8mts.png";var $u="./assets/elixir-mckzq1sq.png";var Vu="./assets/ember-a65qyfxw.png";var Zu="./assets/expo-24k68r06.png";var zu="./assets/express-bagm4hrp.png";var Ju="./assets/falcon-y3g2pkw1.png";var ed="./assets/fastapi-y61f6fkc.png";var td="./assets/fasthttp-dg3jpzzs.png";var rd="./assets/fastify-6kqs83vt.png";var Hd="./assets/fastmcp-z39yqz67.png";var nd="./assets/fiber-4hk7w77j.png";var od="./assets/firebase-cxe03y85.png";var sd="./assets/firefox-bg5zmx5g.png";var id="./assets/flask-cen3cnk3.png";var ad="./assets/flutter-yg7vv7v2.png";var cd="./assets/font-gm2xc8k1.png";var ld="./assets/fsharp-rdvgykvd.png";var Ad="./assets/gatsby-1cbrkhen.png";var ud="./assets/gcp-functions-f9fr7ptc.png";var dd="./assets/gemini-kkn8pkkz.png";var pd="./assets/gin-50chx0th.png";var md="./assets/git-2wwbsash.png";var gd="./assets/gnu-sza5z2m0.png";var Od="./assets/go-fe31mx1h.png";var yd="./assets/godot-5pyt3hf3.png";var fd="./assets/google-h9hjmbaw.png";var Sd="./assets/grape-z45yjx7n.png";var _d="./assets/graphene-wdrmh5wg.png";var kd="./assets/graphql-jfg31yab.png";var hd="./assets/grok-tek8dkt5.png";var Ld="./assets/groq-3w8j5sz6.png";var Id="./assets/grpc-41ce8e5w.png";var bd="./assets/hanami-h1ha69g0.png";var wd="./assets/hapi-xjkhg9xk.png";var xd="./assets/hono-ydv0kfra.png";var Td="./assets/httpx-72gb9ze8.png";var Pd="./assets/huey-a53cr7qy.png";var qd="./assets/huggingface-yceen1hy.png";var Md="./assets/hydrogen-wremh7ah.png";var Cd="./assets/internet-explorer-mc34535p.png";var Qd="./assets/ionic-9x7e24b2.png";var Nd="./assets/iris-nvn6jx31.png";var jd="./assets/java-xd88qxr3.png";var Dd="./assets/javascript-fkw36jr6.png";var Rd="./assets/koa-xeggzpx7.png";var vd="./assets/kotlin-kttwkzk0.png";var Gd="./assets/langchain-dsrcgqtg.png";var Ed="./assets/langgraph-0gbzq3bw.png";var Kd="./assets/laravel-8vdwspz3.png";var Xd="./assets/launchdarkly-8nrxg4j1.png";var Bd="./assets/linux-mbda8m22.png";var Wd="./assets/lit-yy9gb2z5.png";var Fd="./assets/litellm-mn7mn3p5.png";var Ud="./assets/litestar-qgaq765e.png";var Yd="./assets/livewire-dhq1zp6k.png";var $d="./assets/logback-qdan81zj.png";var Vd="./assets/loguru-1qkw3dj3.png";var Zd="./assets/magento-mbmqx6pj.png";var zd="./assets/martini-0ynefktw.png";var Jd="./assets/mastra-bkzx6z2t.png";var ep="./assets/maui-k0v6671h.png";var tp="./assets/mcp-3a0e0d7f.png";var rp="./assets/meteor-pfjeajd9.png";var Hp="./assets/million-hqa7qjzr.png";var np="./assets/mistral-c8k352td.png";var op="./assets/mongodb-8zfpdrvw.png";var sp="./assets/mono-2jgc1h36.png";var ip="./assets/motorola-se1nxnrc.png";var ap="./assets/nativec-8hc1qqqq.png";var cp="./assets/nestjs-pdtzc08t.png";var lp="./assets/nextjs-1h4ss2x7.png";var Ap="./assets/nintendo-b121b9tx.png";var up="./assets/nintendo-switch-10fwf0z8.png";var dp="./assets/nintendo-switch-2-c30gwjdr.png";var pp="./assets/nitro-0m2zry4j.png";var mp="./assets/nodejs-4440bt1m.png";var gp="./assets/nuxt-9az5kp86.png";var Op="./assets/nvidia-sx95qpxr.png";var yp="./assets/openai-30efemfr.png";var fp="./assets/openfeature-7d7994hd.png";var Sp="./assets/opennext-qwtbtf69.png";var _p="./assets/opera-vm5934z4.png";var kp="./assets/padrino-h1r8j27p.png";var hp="./assets/perforce-m3brdm35.png";var Lp="./assets/perl-rtt66y1c.png";var Ip="./assets/perplexity-hppwdxr6.png";var bp="./assets/php-epsnnhgx.png";var wp="./assets/playstation-hdnq37vd.png";var xp="./assets/postgresql-460mxqat.png";var Tp="./assets/powershell-4fhvrc1v.png";var Pp="./assets/pydantic-ai-fktc46py.png";var qp="./assets/pyramid-68tybq4d.png";var Mp="./assets/python-0nvac8nw.png";var Cp="./assets/qq-vr99tzv0.png";var Qp="./assets/qt-k87rvs14.png";var Np="./assets/quart-r5ngms2j.png";var jp="./assets/qwik-bz2wcfjr.png";var Dp="./assets/rails-4pkdasvb.png";var Rp="./assets/ray-gmyxm5cx.png";var vp="./assets/react-8r99y108.png";var Gp="./assets/react-native-wmddwz2w.png";var Ep="./assets/react-router-v69yad6z.png";var Kp="./assets/redis-q94fh9hd.png";var Xp="./assets/remix-53wdkf82.png";var Bp="./assets/ruby-kcaxbrv4.png";var Wp="./assets/rust-v7er9616.png";var Fp="./assets/safari-pcf00dtn.png";var Up="./assets/samsung-cm92184f.png";var Yp="./assets/sanic-7z0zpwya.png";var $p="./assets/scala-9aq9kgns.png";var Vp="./assets/serverless-5293xmwf.png";var Zp="./assets/sidekiq-rnhzcwdj.png";var zp="./assets/sinatra-c03nt3xg.png";var Jp="./assets/solid-c96n8hcv.png";var em="./assets/solidstart-rb5kh1an.png";var tm="./assets/spring-nq4z52xr.png";var rm="./assets/springboot-n0jkm57m.png";var Hm="./assets/sql-hax5xfdd.png";var nm="./assets/sqlalchemy-rkmzzb4z.png";var om="./assets/sqlserver-xy5xks5j.png";var sm="./assets/starlette-j4s3ckgz.png";var im="./assets/steamos-esnc2vf1.png";var am="./assets/strawberry-gvtdbrv2.png";var cm="./assets/stride3d-na06nbdk.png";var lm="./assets/supabase-b8xn5ya6.png";var Am="./assets/svelte-99kpn61e.png";var um="./assets/swift-rz9jd9bd.png";var dm="./assets/symfony-5g12vm0z.png";var pm="./assets/tanstack-803fcdrr.png";var mm="./assets/tauri-s27nrazn.png";var gm="./assets/tokio-2qsmkbdt.png";var Om="./assets/tornado-jr9hafty.png";var ym="./assets/tower-m2b3e55m.png";var fm="./assets/tracing-sf8fezjm.png";var Sm="./assets/trailblazer-tts0mg9m.png";var _m="./assets/tryton-agrkpqzp.png";var km="./assets/typer-4ax7g9nv.png";var hm="./assets/ubuntu-2485bsgg.png";var Lm="./assets/unity-dh3f2d41.png";var Im="./assets/unleash-3n7nzk6v.png";var bm="./assets/uno-f3aqa0pr.png";var wm="./assets/unreal-66wfngpk.png";var xm="./assets/vercel-5tsw5vx4.png";var Tm="./assets/visual-basic-mv5kd4ph.png";var Pm="./assets/vscode-ht1kf4d5.png";var qm="./assets/vue-s1y5fsg1.png";var Mm="./assets/wasm-zc2sdxtz.png";var Cm="./assets/windows-m96vxbh1.png";var Qm="./assets/xamarin-13pfqd8y.png";var Nm="./assets/xbox-j22pmsf0.png";var oi={activeadmin:jA,actix:DA,aiohttp:RA,alpinejs:vA,amazon:GA,amd:EA,analogjs:KA,android:XA,"android-phone":BA,"android-tablet":WA,angularjs:FA,anthropic:UA,"anthropic-claude":YA,"apache-airflow":$A,"apache-beam":VA,"apache-spark":ZA,"app-engine":zA,apple:JA,"apple-ipad":eu,"apple-iphone":tu,"apple-tv":ru,"apple-watch":Hu,ariadne:nu,arm:ou,astro:su,aws:iu,awslambda:au,"azure-functions":cu,backbone:lu,bazzite:Au,blazor:uu,bottle:du,bun:pu,capacitor:mu,celery:gu,chalice:Ou,chrome:yu,chromium:fu,clickhouse:Su,clojure:_u,cloudflare:ku,"cloudflare-pages":hu,"cloudflare-workers":Lu,cohere:Iu,connect:bu,convex:wu,cordova:xu,cpp:Tu,cryengine:Pu,crystal:qu,csharp:Mu,css:Cu,dart:Qu,deepseek:Nu,default:ju,deno:Du,django:Ru,dotnet:vu,dotnetcore:Gu,dotnetframework:Eu,dotnetfx:Ku,dramatiq:Xu,echo:Bu,edge:Wu,"edge-legacy":Fu,effect:Uu,electron:Yu,elixir:$u,ember:Vu,expo:Zu,express:zu,falcon:Ju,fastapi:ed,fasthttp:td,fastify:rd,fastmcp:Hd,fiber:nd,firebase:od,firefox:sd,flask:id,flutter:ad,font:cd,fsharp:ld,gatsby:Ad,"gcp-functions":ud,gemini:dd,gin:pd,git:md,gnu:gd,go:Od,godot:yd,google:fd,grape:Sd,graphene:_d,graphql:kd,grok:hd,groq:Ld,grpc:Id,hanami:bd,hapi:wd,hono:xd,httpx:Td,huey:Pd,huggingface:qd,hydrogen:Md,"internet-explorer":Cd,ionic:Qd,iris:Nd,java:jd,javascript:Dd,koa:Rd,kotlin:vd,langchain:Gd,langgraph:Ed,laravel:Kd,launchdarkly:Xd,linux:Bd,lit:Wd,litellm:Fd,litestar:Ud,livewire:Yd,logback:$d,loguru:Vd,magento:Zd,martini:zd,mastra:Jd,maui:ep,mcp:tp,meteor:rp,million:Hp,mistral:np,mongodb:op,mono:sp,motorola:ip,nativec:ap,nestjs:cp,nextjs:lp,nintendo:Ap,"nintendo-switch":up,"nintendo-switch-2":dp,nitro:pp,nodejs:mp,nuxt:gp,nvidia:Op,openai:yp,openfeature:fp,opennext:Sp,opera:_p,padrino:kp,perforce:hp,perl:Lp,perplexity:Ip,php:bp,playstation:wp,postgresql:xp,powershell:Tp,"pydantic-ai":Pp,pyramid:qp,python:Mp,qq:Cp,qt:Qp,quart:Np,qwik:jp,rails:Dp,ray:Rp,react:vp,"react-native":Gp,"react-router":Ep,redis:Kp,remix:Xp,ruby:Bp,rust:Wp,safari:Fp,samsung:Up,sanic:Yp,scala:$p,serverless:Vp,sidekiq:Zp,sinatra:zp,solid:Jp,solidstart:em,spring:tm,springboot:rm,sql:Hm,sqlalchemy:nm,sqlserver:om,starlette:sm,steamos:im,strawberry:am,stride3d:cm,supabase:lm,svelte:Am,swift:um,symfony:dm,tanstack:pm,tauri:mm,tokio:gm,tornado:Om,tower:ym,tracing:fm,trailblazer:Sm,tryton:_m,typer:km,ubuntu:hm,unity:Lm,unleash:Im,uno:bm,unreal:wm,vercel:xm,"visual-basic":Tm,vscode:Pm,vue:qm,wasm:Mm,windows:Cm,xamarin:Qm,xbox:Nm};var TK=Object.keys(oi);function jm(e){let t=oi[e];return t===void 0?void 0:Nn(t)}var Dm={amazon:"amazon",amd:"amd",android:"android","android-phone":"android-phone","android-tablet":"android-tablet",anthropic:"anthropic","anthropic-claude":"anthropic-claude",apple:"apple","apple-ipad":"apple-ipad","apple-iphone":"apple-iphone","apple-tv":"apple-tv","apple-watch":"apple-watch",arm:"arm",bazzite:"bazzite",bun:"bun",capacitor:"capacitor",chrome:"chrome",chromium:"chromium",clojure:"clojure",cloudflare:"cloudflare",cocoa:"apple","cocoa-objc":"apple","cocoa-swift":"swift",cohere:"cohere",convex:"convex",cordova:"cordova",cpp:"cpp",cryengine:"cryengine",crystal:"crystal",csharp:"csharp","csharp-aspnetcore":"csharp",css:"css",dart:"dart",deepseek:"deepseek",default:"default",deno:"deno",dotnet:"dotnet","dotnet-aspnet":"dotnet","dotnet-aspnetcore":"dotnet","dotnet-awslambda":"awslambda","dotnet-blazor":"blazor","dotnet-csharp":"csharp","dotnet-gcpfunctions":"gcp-functions","dotnet-maui":"maui","dotnet-uno":"uno","dotnet-xamarin":"xamarin",dotnetcore:"dotnetcore",dotnetframework:"dotnetframework",dotnetfx:"dotnetfx",edge:"edge","edge-legacy":"edge-legacy",electron:"electron",elixir:"elixir",expo:"expo",fastmcp:"fastmcp",firebase:"firebase",firefox:"firefox",flutter:"flutter",font:"font",fsharp:"fsharp",gemini:"gemini",git:"git",go:"go","go-echo":"echo","go-fasthttp":"fasthttp","go-fiber":"fiber","go-gin":"gin","go-iris":"iris","go-martini":"martini","go-negroni":"go",godot:"godot",google:"google",grok:"grok",groq:"groq",huggingface:"huggingface","internet-explorer":"internet-explorer",ionic:"ionic",java:"java","java-android":"android","java-appengine":"app-engine","java-log4j":"java","java-log4j2":"java","java-logback":"logback","java-logging":"java","java-ray":"ray","java-spring":"spring","java-spring-boot":"springboot",javascript:"javascript","javascript-alpinejs":"alpinejs","javascript-analogjs":"analogjs","javascript-angular":"angularjs","javascript-angularjs":"angularjs","javascript-astro":"astro","javascript-awslambda":"awslambda","javascript-azurefunctions":"azure-functions","javascript-backbone":"backbone","javascript-browser":"javascript","javascript-capacitor":"capacitor","javascript-cloudflare-pages":"cloudflare-pages","javascript-cloudflare-workers":"cloudflare-workers","javascript-connect":"connect","javascript-cordova":"cordova","javascript-effect":"effect","javascript-electron":"electron","javascript-ember":"ember","javascript-expo":"expo","javascript-express":"express","javascript-fastify":"fastify","javascript-firebase":"firebase","javascript-gatsby":"gatsby","javascript-gcpfunctions":"gcp-functions","javascript-hapi":"hapi","javascript-hono":"hono","javascript-hydrogen":"hydrogen","javascript-ionic":"ionic","javascript-koa":"koa","javascript-lit":"lit","javascript-meteor":"meteor","javascript-million":"million","javascript-nestjs":"nestjs","javascript-nextjs":"nextjs","javascript-nitro":"nitro","javascript-node":"nodejs","javascript-nuxt":"nuxt","javascript-opennext":"opennext","javascript-qwik":"qwik","javascript-react":"h:0__","javascript-react-router":"react-router","javascript-remix":"remix","javascript-serverlesscloud":"serverless","javascript-solid":"solid","javascript-solidstart":"solidstart","javascript-svelte":"svelte","javascript-sveltekit":"svelte","javascript-tanstackstart-react":"tanstack","javascript-vue":"vue","javascript-wasm":"wasm",kotlin:"kotlin","kotlin-android":"android",langchain:"langchain",langgraph:"langgraph",launchdarkly:"launchdarkly",linux:"linux",litellm:"litellm",mastra:"mastra",mcp:"mcp",mistral:"mistral",mono:"mono",motorola:"motorola",native:"nativec","native-qt":"qt",nintendo:"nintendo","nintendo-switch":"nintendo-switch","nintendo-switch-2":"nintendo-switch-2",node:"nodejs",nvidia:"nvidia",openai:"openai",openfeature:"openfeature",opera:"opera",perforce:"perforce",perl:"perl",perplexity:"perplexity",php:"php","php-laravel":"laravel","php-livewire":"livewire","php-magento":"magento","php-monolog":"php","php-symfony":"symfony","php-symfony2":"symfony",playstation:"playstation",powershell:"powershell","pydantic-ai":"pydantic-ai",python:"python","python-aiohttp":"aiohttp","python-airflow":"apache-airflow","python-ariadne":"ariadne","python-asyncpg":"postgresql","python-awslambda":"awslambda","python-azurefunctions":"azure-functions","python-beam":"apache-beam","python-boto3":"aws","python-bottle":"bottle","python-celery":"celery","python-chalice":"chalice","python-clickhouse-driver":"clickhouse","python-django":"django","python-dramatiq":"dramatiq","python-falcon":"falcon","python-fastapi":"fastapi","python-flask":"flask","python-gcpfunctions":"gcp-functions","python-gnu_backtrace":"gnu","python-gql":"graphql","python-graphene":"graphene","python-grpc":"grpc","python-httpx":"httpx","python-huey":"huey","python-litestar":"litestar","python-loguru":"loguru","python-pylons":"python","python-pymongo":"mongodb","python-pyramid":"pyramid","python-pythonawslambda":"awslambda","python-quart":"quart","python-ray":"ray","python-redis":"redis","python-rq":"redis","python-sanic":"sanic","python-serverless":"serverless","python-spark":"apache-spark","python-sqlalchemy":"sqlalchemy","python-starlette":"starlette","python-strawberry":"strawberry","python-tornado":"tornado","python-tryton":"tryton","python-typer":"typer",qq:"qq",qt:"qt","react-native":"react-native",ruby:"ruby","ruby-activeadmin":"activeadmin","ruby-grape":"grape","ruby-hanami":"hanami","ruby-padrino":"padrino","ruby-rack":"ruby","ruby-rails":"rails","ruby-sidekiq":"sidekiq","ruby-sinatra":"sinatra","ruby-trailblazer":"trailblazer",rust:"rust","rust-actix":"actix","rust-axum":"tokio","rust-tower":"tower","rust-tracing":"tracing",safari:"safari",samsung:"samsung",scala:"scala",sql:"sql",sqlserver:"sqlserver",steamos:"steamos",stride3d:"stride3d",supabase:"supabase",swift:"swift",tauri:"tauri",ubuntu:"ubuntu",ue4:"unreal",unity:"unity",unleash:"unleash",unreal:"unreal",unrealengine:"unreal",uwp:"windows",vercel:"vercel",visualbasic:"visual-basic",vscode:"vscode",windows:"windows",xbox:"xbox"};var Rm="default";function vm(e){if(!e)return Rm;let t=e.split("-");for(let r=t.length;r>0;r--){let H=Dm[t.slice(0,r).join("-")];if(H)return H}return Rm}import{useCallback as Gm,useSyncExternalStore as Kx}from"h:0__";import{useRenderer as Xx}from"h:4___________";var Bx=!!(process.env.HERDR_ENV||process.env.TMUX||process.env.STY),Wx={supported:!1,supportsHighRes:!1},Em=new WeakMap;function si(e){let t=Em.get(e);if(!t)t={value:Wx,listeners:new Set,handler:null},Em.set(e,t);return t}function Km(e){let t=e.capabilities;if(!t)return;let r={supported:!0,supportsHighRes:!Bx&&(t.kitty_graphics||t.sixel)},H=si(e);if(H.value.supported===r.supported&&H.value.supportsHighRes===r.supportsHighRes)return;H.value=r;for(let n of H.listeners)n()}function Zt(){let e=Xx(),t=Gm((H)=>{let n=si(e);if(n.listeners.add(H),!n.handler)n.handler=()=>Km(e),e.on("capabilities",n.handler);return Km(e),()=>{if(n.listeners.delete(H),n.listeners.size===0&&n.handler)e.off("capabilities",n.handler),n.handler=null}},[e]),r=Gm(()=>si(e).value,[e]);return Kx(t,r)}import{jsxDEV as Ux}from"h:6___________________________";var Xm=2,Fx=1;function jn(){let{supportsHighRes:e}=Zt();return e?Xm+1:0}function aH({platform:e}){let{supportsHighRes:t}=Zt();if(!t)return null;let r=jm(vm(e));if(!r)return null;return Ux("image",{source:r,fit:"fit",style:{width:Xm,height:Fx,flexShrink:0,marginRight:1}},void 0,!1,void 0,this)}import{jsxDEV as ii,Fragment as Yx}from"h:6___________________________";function Gt(){return ii(Yx,{children:[ii(Pt,{command:"sentry.nav.search"},void 0,!1,void 0,this),ii("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Dn(e,t){let r=t.trim().toLowerCase();if(!r)return e.map((n)=>({item:n,positions:[]}));let H=[];for(let n of e){let o=Jr(n.label,r);if(!o)continue;H.push({item:n,positions:o.positions,score:o.score})}return H.sort((n,o)=>o.score-n.score),H.map(({item:n,positions:o})=>({item:n,positions:o}))}function Bm(e,t){let r=t.trim().toLowerCase();if(!r)return e.map((H)=>({item:H,positions:[]}));return e.map((H)=>({item:H,positions:Jr(H.label,r)?.positions??[]}))}import{jsxDEV as qt,Fragment as rT}from"h:6___________________________";var Um=50,zx=2,Jx=12,eT=20,tT=32,li=0;function Ai(){return li>0}function lt({title:e,items:t,selected:r,anchorLeft:H,anchorTop:n,availableWidth:o,showAll:s=!0,multiple:i=!1,showSelection:a=!0,filterable:l=!1,onQueryChange:c,remoteFilter:A=!1,loading:u=!1,maxWidth:d,placeholder:m,onSelect:g,onClose:p}){let O=S(),{width:y,height:L}=Zx(),f=jn(),[k,I]=ci(""),h=Wm((re)=>{I(re),c?.(re)},[c]),[b,w]=ci(!1),T=$x(!1),q=ai(()=>s&&!(A&&k.trim())?[{label:"All",value:"__all__"},...t]:[...t],[s,t,A,k]),E=ai(()=>A?Bm(q,k):Dn(q,k),[q,k,A]),D=ai(()=>{if(r.length===0)return 0;let re=q.findIndex((ue)=>ue.value===r[0]);return re>=0?re:0},[q,r]),[x,P]=ci(D);Fm(()=>{if(k.trim())P(0);else if(!i||!T.current)P(D)},[D,i,k]),Fm(()=>(li+=1,()=>{li-=1}),[]);let N=Wm((re)=>{let ue=E[re]?.item;if(!ue)return;if(T.current=!0,ue.value==="__all__")g([]);else if(i)g(r.includes(ue.value)?r.filter((Ae)=>Ae!==ue.value):[...r,ue.value]);else g([ue.value]);if(!i)p()},[E,i,r,g,p]);Vx((re)=>{Rt([()=>{if(Q("sentry.nav.open",re))return N(x),"mine";if(qn(re))return P((ue)=>Math.min(ue+1,E.length-1)),"mine";if(Mn(re))return P((ue)=>Math.max(ue-1,0)),"mine";if(b){if(Q("sentry.nav.back",re))return h(""),w(!1),"mine";return"focused"}if(Q("sentry.nav.back",re))return p(),"mine";if(l&&Q("sentry.nav.search",re))return w(!0),"mine";if(Q("sentry.nav.down",re))return P((ue)=>Math.min(ue+1,E.length-1)),"mine";if(Q("sentry.nav.up",re))return P((ue)=>Math.max(ue-1,0)),"mine";if(Q("sentry.nav.top",re))return P(0),"mine";if(Q("sentry.nav.bottom",re))return P(E.length-1),"mine";return"mine"}],re,je)});let F=q.some((re)=>("platform"in re))?f:0,j=E.length>0?void 0:u?"Searching\u2026":q.length>0||A&&k.trim()?`No match for "${k.trim()}"`:m,U=j?1:E.length,z=a?zx:1,oe=z+F+2,ie=l?1:0,G=Math.max(l?tT:eT,...q.map((re)=>re.label.length+oe),j?j.length+oe:0),Y=Math.min(y,o??y),ee=Math.min(G,d??1/0,Y-2),C=Math.max(1,Math.min(U,Jx,L-n-3-ie)),v=C+ie+2,pe=Pn(x,E.length,C),Me=Math.max(0,Math.min(H,Y-ee-1)),de=Math.min(n,L-v-1);return qt(rT,{children:[qt("box",{style:{position:"absolute",top:0,left:0,width:y,height:L,zIndex:Um-1},onMouseDown:p},void 0,!1,void 0,this),qt("box",{title:` ${e} `,style:{position:"absolute",top:de,left:Me,width:ee,height:v,zIndex:Um,border:!0,borderColor:O.accent,backgroundColor:O.panel,flexDirection:"column"},onMouseUp:(re)=>re.stopPropagation(),children:[l?qt("box",{style:{flexDirection:"row",flexShrink:0},onMouseUp:()=>w(!0),children:[qt(Gt,{},void 0,!1,void 0,this),qt("input",{value:k,placeholder:"filter\u2026",focused:b,onInput:h,style:{flexGrow:1,textColor:O.text,backgroundColor:O.panel,focusedTextColor:O.text,focusedBackgroundColor:O.panel,placeholderColor:O.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,j?qt("text",{fg:O.muted,children:` ${R(j,ee-3)}`},void 0,!1,void 0,this):null,E.slice(pe,pe+C).map(({item:re,positions:ue},Ae)=>{let Ce=pe+Ae===x,fe=re.value==="__all__"?r.length===0:r.includes(re.value),Te=Ce?O.text:fe?O.accent:O.muted,Sr=ee-2-F-z;return qt("box",{style:{flexDirection:"row",alignSelf:"flex-start",backgroundColor:Ce?O.selected:void 0},children:[a?qt("text",{fg:Te,children:fe?"\u25CF ":" "},void 0,!1,void 0,this):qt("text",{children:" "},void 0,!1,void 0,this),F>0?"platform"in re?qt(aH,{platform:re.platform},void 0,!1,void 0,this):qt("box",{style:{width:F,flexShrink:0}},void 0,!1,void 0,this):null,qt(Tn,{text:re.label,positions:ue,width:Sr,fg:Te},void 0,!1,void 0,this)]},re.value,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useEffect as HT}from"h:0__";import{jsxDEV as $m}from"h:6___________________________";var RH="sentry.view.sort",ui=0;function Ym(){return ui>0}function vH(e,t){return e.find((r)=>r.value===t)?.label??t}function Rn(e){return e.flatMap((t)=>[{value:`-${t}`,label:`${t} (desc)`},{value:t,label:`${t} (asc)`}])}function vn({value:e,items:t,open:r,onOpen:H}){return HT(()=>(ui+=1,()=>{ui-=1}),[]),$m(Gr,{command:RH,label:vH(t,e),caret:!0,active:r,onPress:H},void 0,!1,void 0,this)}function Gn({value:e,items:t,anchorLeft:r,anchorTop:H,availableWidth:n,onChange:o,onClose:s}){return $m(lt,{title:"Sort By",items:t,selected:[e],anchorLeft:r,anchorTop:H,availableWidth:n,showAll:!1,onSelect:(i)=>{let a=i[0];if(a)o(a);s()},onClose:s},void 0,!1,void 0,this)}import{useEffect as di,useMemo as nT,useRef as oT,useState as En}from"h:0__";var Vm=new WeakMap,sT=new Map;async function iT(e,t,r){let H=Vm.get(e);if(!H)H=new Map,Vm.set(e,H);let n=H.get(t);if(!n)n=new Map,H.set(t,n);let o=r.filter((i)=>!n.has(i));if(o.length>0){let i=Yc(e,{org:t,ids:o}).then((a)=>new Map(a.map((l)=>[l.id,l.slug])));for(let a of o){let l=i.then((c)=>c.get(a));n.set(a,l),l.catch(()=>{if(n.get(a)===l)n.delete(a)})}}let s=await Promise.all(r.map(async(i)=>{let a=await n.get(i);return a===void 0?void 0:[i,a]}));return new Map(s.filter((i)=>i!==void 0))}function cH(e,t,r,H=!0){let n=[...new Set(r.filter((i)=>/^\d+$/.test(i)))].sort().join(","),[o,s]=En(null);return di(()=>{if(!e||!H||n==="")return;let i=!0;return iT(e,t,n.split(",")).then((a)=>{if(i)s({client:e,org:t,key:n,slugs:a})}).catch(()=>{}),()=>{i=!1}},[e,t,n,H]),o?.client===e&&o.org===t&&o.key===n?o.slugs:sT}var aT=200;function Zm(e,t,r){let[H,n]=En([]),[o,s]=En(null),[i,a]=En(!1),l=oT(new Map),c=r.trim();return di(()=>{l.current.clear(),n([]),s(null)},[e,t]),di(()=>{if(!e)return;let u=l.current.get(c);if(u){s({query:c,projects:u}),a(!1);return}let d=new AbortController,m=!1;a(!0);let g=setTimeout(()=>{Uc(e,{org:t,query:c,signal:d.signal}).then((p)=>{if(m)return;l.current.set(c,p),n((O)=>cT(O,p)),s({query:c,projects:p}),a(!1)}).catch(()=>{if(!m)a(!1)})},c?aT:0);return()=>{m=!0,d.abort(),clearTimeout(g)}},[e,t,c]),{projects:nT(()=>{let u=o?.query===c?o.projects:[];if(!c)return u.length>0?u:H;let d=Dn(H.map((g)=>({label:g.slug,project:g})),c).map((g)=>g.item.project),m=new Set(d.map((g)=>g.id));return[...d,...u.filter((g)=>!m.has(g.id))]},[H,o,c]),loading:i}}function cT(e,t){let r=new Set(e.map((n)=>n.id)),H=t.filter((n)=>!r.has(n.id));return H.length>0?[...e,...H]:e}import{jsxDEV as zt,Fragment as uT}from"h:6___________________________";var Le=3,lT=[{label:"1 hour",value:"1h"},{label:"24 hours",value:"24h"},{label:"7 days",value:"7d"},{label:"14 days",value:"14d"},{label:"30 days",value:"30d"},{label:"90 days",value:"90d"}],gi=["project","env","date"];function AT(e,t,r){let H=Math.max(0,Math.floor(r)),n=ce(e),o=ce(t),s=Math.min(n,Math.ceil(H/2)),i=Math.min(o,Math.floor(H/2)),a=H-s-i;if(s===n)i+=Math.min(a,o-i);else if(i===o)s+=Math.min(a,n-s);return[s,i]}var Xn={project:0,env:0,date:0};function Bn(e){if(e)return Xn[e]>0;return gi.some((t)=>Xn[t]>0)}function Ve({client:e,org:t,openDropdown:r,selectedProjects:H,selectedEnvs:n,statsPeriod:o,filters:s=gi,sort:i,width:a,anchorTop:l,onProjectChange:c,onEnvChange:A,onPeriodChange:u,onDropdownClose:d,onDropdownOpen:m}){let g=s.join(","),p=Kn(()=>new Set(s),[g]),[O,y]=zm(""),{projects:L,loading:f}=Zm(p.has("project")?e:null,t,O),[k,I]=zm([]);mi(()=>{for(let He of p)Xn[He]+=1;return()=>{for(let He of p)Xn[He]-=1}},[p]),mi(()=>{if(r!=="project")y("")},[r]),mi(()=>{if(!e||!p.has("env"))return;let He=new AbortController;return $c(e,{org:t,signal:He.signal}).then((Ce)=>I(Ce)).catch(()=>{}),()=>He.abort()},[e,t,p]);let h=Kn(()=>{let He=L.map((Te)=>({label:Te.slug,value:Te.slug,platform:Te.platform??null})),Ce=new Set(He.map((Te)=>Te.value));return[...O.trim()?[]:H.filter((Te)=>!Ce.has(Te)).map((Te)=>({label:Te,value:Te,platform:null})),...He]},[L,H,O]),b=Kn(()=>k.map((He)=>({label:He.name,value:He.name})),[k]),w=Kn(()=>{let He=new Map(L.map((Ce)=>[Ce.id,Ce.slug]));return H.map((Ce)=>He.get(Ce)??Ce)},[L,H]),T=w.length===0?"all projects":w.join(", "),q=n.length===0?"all envs":n.join(", "),E={command:"sentry.view.filterProject",label:T,caret:!0},D={command:"sentry.view.filterEnv",label:q,caret:!0},x={command:"sentry.view.filterDate",label:o,caret:!0},P=i?{command:RH,label:vH(i.items,i.value),caret:!0}:void 0,N=gi.filter((He)=>p.has(He)),F=N.length+(P?1:0),j=(p.has("project")?vt({...E,label:""}):0)+(p.has("env")?vt({...D,label:""}):0)+(p.has("date")?vt(x):0)+(P?vt(P):0)+Lr*Math.max(0,F-1),U=a-j,[z,oe]=p.has("project")&&p.has("env")?AT(T,q,U):p.has("project")?[Math.max(0,U),0]:[0,Math.max(0,U)],ie={project:{...E,label:R(T,z)},env:{...D,label:R(q,oe)},date:x},G=N.map((He)=>ie[He]),Y=Cn(G),ee=new Map(N.map((He,Ce)=>[He,Y[Ce]??0])),C=ee.get("project")??0,v=ee.get("env")??0,pe=ee.get("date")??0,Me=P?Math.max(0,a-vt(P)):0,de=l+ft,re=pi((He)=>{c(He)},[c]),ue=pi((He)=>{A(He)},[A]),Ae=pi((He)=>{u(He[0]??"14d"),d()},[u,d]);return zt(uT,{children:[zt("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:ft,overflow:"hidden"},children:[zt(Qn,{chips:G,activeIndex:r&&r!=="sort"?N.indexOf(r):void 0,onPress:(He,Ce)=>m?.(N[Ce]??null)},void 0,!1,void 0,this),zt("box",{style:{flexGrow:1}},void 0,!1,void 0,this),i&&P?zt("box",{style:{flexDirection:"row",flexShrink:0},children:[zt("text",{children:" ".repeat(Lr)},void 0,!1,void 0,this),zt(vn,{value:i.value,items:i.items,open:r==="sort",onOpen:()=>m?.("sort")},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),r==="project"&&p.has("project")?zt(lt,{title:"Project",items:h,selected:w,anchorLeft:C,anchorTop:de,availableWidth:a,filterable:!0,remoteFilter:!0,multiple:!0,loading:f,onQueryChange:y,placeholder:"No projects",onSelect:re,onClose:d},void 0,!1,void 0,this):null,r==="env"&&p.has("env")?zt(lt,{title:"Environment",items:b,selected:n,anchorLeft:v,anchorTop:de,availableWidth:a,multiple:!0,onSelect:ue,onClose:d},void 0,!1,void 0,this):null,r==="date"&&p.has("date")?zt(lt,{title:"Date Range",items:lT,selected:[o],anchorLeft:pe,anchorTop:de,availableWidth:a,showAll:!1,onSelect:Ae,onClose:d},void 0,!1,void 0,this):null,r==="sort"&&i?zt(Gn,{value:i.value,items:i.items,anchorLeft:Me,anchorTop:de,availableWidth:a,onChange:i.onChange,onClose:d},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as Er}from"h:6___________________________";var Jm=[{category:"nav",title:"Navigation"},{category:"issue",title:"Issue actions"},{category:"seer",title:"Seer"},{category:"view",title:"View / Filters"},{category:"app",title:"Application"}],dT=4,pT=60,mT=17;function eg({onClose:e}){let t=S(),r=Jm.flatMap(({category:o,title:s})=>{let i=qH.filter((a)=>a.category===o&&a.defaultKeys.length>0);return i.length?[{heading:s},...i]:[]}),H=Math.max(0,Jm.length-1),n=r.length+H+dT+1;return Er(ar,{title:" Keyboard shortcuts ",width:pT,height:n,onClose:e,children:[Er("scrollbox",{style:{flexGrow:1},children:r.map((o,s)=>{if("heading"in o)return Er("text",{fg:t.accent,children:[s===0?"":`
|
|
10
|
-
`,o.heading]},`h-${o.heading}`,!0,void 0,this);let i=o.defaultKeys.map(ve).join(", ");return Er("text",{children:[Er("span",{fg:t.text,children:_(i,mT)},void 0,!1,void 0,this),Er("span",{fg:t.muted,children:o.description??o.title},void 0,!1,void 0,this)]},o.id,!0,void 0,this)})},void 0,!1,void 0,this),Er("text",{fg:t.muted,style:{marginTop:1},children:"esc to close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as PP,useEffect as qP,useRef as sO,useState as MP}from"h:0__";import{useKeyboard as CP,useTerminalDimensions as QP}from"h:4___________";function Kr(e){return e.metadata?.type||e.metadata?.function||e.title}function Wn(e){let t=e.metadata?.value;if(t)return tg(t);let r=e.culprit??"";return r===Kr(e)?"":tg(r)}function tg(e){return e.replace(/\s+/g," ").trim()}import{useCallback as er,useContext as wP,useEffect as Mi,useMemo as nO,useReducer as xP}from"h:0__";var Un=["Which of my open issues are getting worse, not better?","What are my slowest DB queries?","Walk me through what's on my screen and what I can focus on next."],Oi=["Looking around\u2026","One sec\u2026","Following breadcrumbs\u2026","Hold tight\u2026","Gathering threads\u2026","Tracing the answer\u2026","Stacking ideas\u2026","Profiling your project\u2026","Span by span\u2026","Rolling logs\u2026","Replaying prod\u2026","Scanning the error-waves\u2026"],rg={loading:"\u25D0",content:"\u2022",pending:"?",success:"\u2713",failure:"\u2717",mixed:"!"};function Hg(e,{hasRun:t,hasCodeChanges:r=!1}){let H=[{id:"new",title:"/new",description:"Start a new session"},{id:"history",title:"/history",description:"Open recent Seer sessions"}];if(r)H.push({id:"create-pr",title:"/create-pr",description:"Create or update PRs for accepted changes"});if(e.employee&&e.codeMode)H.push({id:"code-mode-off",title:"/code-mode-off",description:"Disable Code Mode tools"},{id:"code-mode-on",title:"/code-mode-on",description:"Use Code Mode alongside standard tools"},{id:"code-mode-only",title:"/code-mode-only",description:"Use only Code Mode tools"});if(e.employee&&e.bashMode)H.push({id:"bash-mode-off",title:"/bash-mode-off",description:"Disable bash tools"},{id:"bash-mode-on",title:"/bash-mode-on",description:"Enable bash tools"});if(e.thinking)H.push({id:"thinking-off",title:"/thinking-off",description:"Hide Seer's reasoning"},{id:"thinking-on",title:"/thinking-on",description:"Show Seer's reasoning"});if(e.employee&&t)H.push({id:"conversations",title:"/conversations",description:"Open the Sentry AI conversations view"});return H}function ng(e){if(e==="only")return"Code Mode only";if(e==="on")return"Code Mode + standard";return"standard tools"}function og(e){if(e.loading)return"loading";if(!e.message.tool_calls?.length)return"content";let t=(e.tool_links??[]).filter((H)=>H!=null);if(t.some((H)=>H.params?.pending_approval||H.params?.pending_question))return"pending";if(t.length===0)return"success";let r=t.filter((H)=>H.params?.is_error===!0).length;if(r===0)return"success";if(r===t.length)return"failure";return"mixed"}function gT(e){if(!e.args)return{};try{let t=JSON.parse(e.args);return t&&typeof t==="object"?t:{}}catch{return{}}}function De(e,t){let r=e[t];return typeof r==="string"&&r!==""?r:void 0}function Ir(e){return e?e.slice(0,8):""}function Fn(e){let t=De(e,"repo_name")??De(e,"repo");if(!t)return"the codebase";let r=t.lastIndexOf("/");return r===-1?t:t.slice(r+1)}function OT(e,t){let r=gT(e),[H,n]=yT(e.function,r);return t?`${H}\u2026`:n}function yT(e,t){switch(e){case"telemetry_index_list_nodes":{let r=De(t,"keyword")??"your services";return[`Scanning for ${r}`,`Scanned for ${r}`]}case"telemetry_index_dependencies":{let r=De(t,"title")??"your services";return[`Tracing the flow of ${r}`,`Traced the flow of ${r}`]}case"google_search":{let r=De(t,"question")??De(t,"query")??"";return[`Googling '${r}'`,`Googled '${r}'`]}case"telemetry_live_search":{let r=De(t,"question")??"",H=De(t,"dataset"),n=H==="issues"?"issues":H==="errors"?"errors":H==="logs"?"logs":H==="metrics"?"metrics":"spans";return[`Searching ${n}: '${r}'`,`Searched ${n}: '${r}'`]}case"get_trace_waterfall":{let r=De(t,"span_id");if(r)return[`Digging into span ${Ir(r)}`,`Dug into span ${Ir(r)}`];let H=Ir(De(t,"trace_id"));return[`Viewing waterfall for trace ${H}`,`Viewed waterfall for trace ${H}`]}case"get_issue_details":{let r=De(t,"issue_id")??De(t,"short_id")??"";return[`Inspecting issue ${r}`,`Inspected issue ${r}`]}case"get_event_details":{let r=Ir(De(t,"event_id"));return[`Analyzing event ${r}`,`Analyzed event ${r}`]}case"code_search":{let r=Fn(t),H=De(t,"mode");if(H==="read_file"){let n=De(t,"path")??"a file";return[`Reading ${n} from ${r}`,`Read ${n} from ${r}`]}if(H==="find_files"){let n=De(t,"pattern")??"";return[`Finding files matching '${n}' in ${r}`,`Found files matching '${n}' in ${r}`]}if(H==="search_content"){let n=De(t,"pattern")??"";return[`Searching for '${n}' in ${r}`,`Searched for '${n}' in ${r}`]}return[`Searching code in ${r}`,`Searched code in ${r}`]}case"git_search":{let r=Fn(t),H=De(t,"sha")??De(t,"commit_sha");if(H)return[`Digging up commit ${Ir(H)} from ${r}`,`Dug up commit ${Ir(H)} from ${r}`];let n=De(t,"file_path")??"";return[`Excavating commits affecting '${n}' in ${r}`,`Excavated commits affecting '${n}' in ${r}`]}case"get_replay_details":{let r=Ir(De(t,"replay_id"));return[`Watching replay ${r}`,`Watched replay ${r}`]}case"get_profile_flamegraph":{let r=Ir(De(t,"profile_id"));return[`Sampling profile ${r}`,`Sampled profile ${r}`]}case"code_file_edit":{let r=De(t,"path")??"a file",H=Fn(t);return[`Editing ${r} in ${H}`,`Edited ${r} in ${H}`]}case"code_file_write":{let r=De(t,"path")??"a file",H=Fn(t);return[`Writing ${r} in ${H}`,`Wrote ${r} in ${H}`]}case"search_sentry_docs":{let r=De(t,"question")??"";return[`Scouring Sentry docs: '${r}'`,`Scoured Sentry docs: '${r}'`]}case"todo_write":return["Updating todos","Updated todos"];case"ask_user_question":return["Asking a question","Asked a question"];default:{if(e.startsWith("artifact_write_")){let r=e.replace("artifact_write_","").replace(/_/g," ");return[`Submitting ${r} artifact`,`Submitted ${r} artifact`]}return[`Using ${e} tool`,`Used ${e} tool`]}}}function sg(e){return(e.message.tool_calls??[]).map((r)=>OT(r,Boolean(e.loading)))}function ig(e,t){if(e.error||e.status!==void 0&&e.status>=400)return"failure";if(e.status!==void 0)return"success";return t?"success":"loading"}function ag(e){let t=e.title?.trim();if(t)return t;if(e.kind!=="lib"||!e.name)return null;let r=e.name.replace(/^sentry_/,"").replace(/_/g," ");return r?r[0].toUpperCase()+r.slice(1):null}function cg(e){if(e.kind!=="api"||!e.method)return[];let t=e.resolved_path??e.path;if(!t)return[];let r=[`${e.method} ${t}`];if(e.body)r.push(e.body,...e.body_truncated?["\u2026"]:[]);return r}function lg(e){let t=new Set(e.flatMap((n)=>n.parent===null||n.parent===void 0?[]:[n.parent])),r=new Set(["get_span_details"]),H=new Set(e.filter((n)=>n.kind==="lib"&&Boolean(n.name&&r.has(n.name))&&t.has(n.id)).map((n)=>n.id));return e.filter((n)=>{if(n.parent!==null&&n.parent!==void 0&&H.has(n.parent))return!1;if(n.kind!=="lib"||!t.has(n.id))return!0;return Boolean(n.name&&r.has(n.name))})}function Ag(e){let t=null;for(let r of e){if(r.todos?.length)t={blockId:r.id,todos:r.todos};for(let H of r.tool_results??[]){let n=H?.structuredContent?.todos;if(n?.length)t={blockId:r.id,todos:n}}}return t}function ug(e,t){let r=new Map,H=new Map;for(let o of e){let s=new Set;for(let i of o.merged_file_patches??[])r.set(`${i.repo_name}:${i.patch.path}`,i),s.add(i.repo_name);for(let i of s)H.set(i,o.pr_commit_shas?.[i])}let n=new Map;for(let o of r.values()){let s=n.get(o.repo_name)??{added:0,files:[],prNumber:null,prUrl:null,removed:0,repoName:o.repo_name,status:"needs_push"};s.added+=o.patch.added,s.removed+=o.patch.removed,s.files.push({added:o.patch.added,path:o.patch.path,removed:o.patch.removed}),n.set(o.repo_name,s)}for(let o of n.values()){let s=t[o.repoName];if(o.prNumber=s?.pr_number??null,o.prUrl=s?.pr_url??null,s?.pr_creation_status==="creating")o.status="creating";else if(s?.pr_creation_status==="error")o.status="error";else if(!s?.pr_number||!s.pr_url)o.status="needs_push";else if(s.commit_sha&&H.get(o.repoName)!==s.commit_sha)o.status="needs_push";else o.status="pushed"}return[...n.values()]}import{createContext as hT,useCallback as Jt,useEffect as xg,useMemo as fi,useReducer as LT,useRef as $n,useState as IT}from"h:0__";var dg=500,yi=2500;function fT(e){return e.sentry_run_id??e.run_id}var pg=(e)=>`/organizations/${e}/seer/explorer-chat/`,mg=(e,t)=>`${pg(e)}${encodeURIComponent(String(t))}/`;async function gg(e,{org:t,query:r,insertIndex:H,runId:n,pageName:o,sentAt:s,codeMode:i,bashMode:a,signal:l}){let c=await e.request(n==null?pg(t):mg(t,n),{method:"POST",body:{query:r,insert_index:H,page_name:o,sent_at:s,override_code_mode_enable:i,override_bash_mode_enabled:a},signal:l});return fT(c.data)}async function Og(e,{org:t,signal:r,limit:H=20}){return(await e.request(`/organizations/${t}/seer/runs/`,{query:{per_page:H,query:"is:mine type:explorer"},signal:r})).data}async function yg(e,{org:t,runId:r,signal:H}){return(await e.request(mg(t,r),{signal:H})).data?.session??null}async function fg(e,{org:t,runId:r,signal:H}){await e.request(`/organizations/${t}/seer/explorer-update/${encodeURIComponent(String(r))}/`,{method:"POST",body:{payload:{type:"interrupt"}},signal:H})}async function Sg(e,{org:t,runId:r,inputId:H,responseData:n,signal:o}){await e.request(`/organizations/${t}/seer/explorer-update/${encodeURIComponent(String(r))}/`,{method:"POST",body:{payload:{type:"user_input_response",input_id:H,response_data:n}},signal:o})}async function _g(e,{org:t,runId:r,repoName:H,signal:n}){await e.request(`/organizations/${t}/seer/explorer-update/${encodeURIComponent(String(r))}/`,{method:"POST",body:{payload:{type:"create_pr",repo_name:H}},signal:n})}async function kg(e,{org:t,sessionId:r,scopes:H,signal:n}){return(await e.request(`/organizations/${t}/agent/approve/`,{method:"POST",body:{sessionId:r,scopes:H},signal:n})).data.scopes}function hg(e){if(!e)return!1;if(e.status==="processing")return!1;return!e.blocks.some((t)=>t.loading)}function ST(e){let t=/(?:Z|[+-]\d{2}:?\d{2})$/.test(e);return Date.parse(t?e:`${e}Z`)}function Lg(e,t){if(!e)return!1;let r=ST(e.updated_at);if(Number.isNaN(r))return!1;return t-r>=120000}import{reportError as _T}from"h:7___________________________________";function Ne(e){if(e instanceof pr)return{message:e.message,retryable:e.retryable,retryAfterSeconds:e.retryAfterSeconds};if(!kT(e))_T(e,{source:"api.response.unreadable"});return{message:e instanceof Error?e.message:String(e),retryable:!0}}function kT(e){if(!(e instanceof Error))return!1;return e.name==="AbortError"||e.name==="TimeoutError"}var me=()=>({state:"idle"});function _e(e,t){return{state:"loading",since:t,previous:B(e)}}function ge(e,t){return{state:"ready",value:e,fetchedAt:t}}function Oe(e,t){return{state:"error",error:t,previous:B(e)}}function B(e){if(!e)return;switch(e.state){case"ready":return e.value;case"loading":case"error":return e.previous;case"idle":return}}function dt(e,t){switch(e.state){case"idle":return e;case"loading":return e.previous===void 0?{state:"loading",since:e.since}:{state:"loading",since:e.since,previous:t(e.previous)};case"ready":return{state:"ready",value:t(e.value),fetchedAt:e.fetchedAt};case"error":return e.previous===void 0?{state:"error",error:e.error}:{state:"error",error:e.error,previous:t(e.previous)}}}function Ig(e){return e?.state==="loading"}function ke(e){return e?.state==="loading"&&e.previous===void 0}function se(e){return e?.state==="error"?e.error:void 0}function Je(e){return e?.state==="loading"?e.since:void 0}function Yn(e=null){return{session:me(),runId:e,optimistic:null,timedOut:!1,interrupting:!1,pollToken:0}}function bg(e,t){let r=B(e);return r?ge({...r,status:"processing",updated_at:new Date(t).toISOString()},t):e}function wg(e,t){switch(t.type){case"orgChanged":case"reset":return Yn();case"sendStarted":return{...e,session:_e(e.session,t.now),optimistic:t.optimistic,timedOut:!1,interrupting:!1};case"sendSucceeded":return{...e,runId:t.runId,pollToken:e.pollToken+1};case"sendFailed":return{...e,session:Oe(e.session,t.error),optimistic:null};case"pollProgressed":return{...e,session:ge(t.session,t.now)};case"pollSettled":return{...e,session:ge(t.session,t.now),optimistic:null,interrupting:!1};case"pollStale":return{...e,session:ge(t.session,t.now),optimistic:null,timedOut:!0};case"pollFailed":return{...e,session:Oe(e.session,t.error),optimistic:null};case"interruptStarted":return{...e,interrupting:!0};case"interruptFailed":return{...e,interrupting:!1};case"respondStarted":return{...e,session:bg(e.session,t.now),timedOut:!1,interrupting:!1};case"respondSucceeded":return{...e,pollToken:e.pollToken+1};case"respondFailed":case"approveWriteFailed":return{...e,session:Oe(e.session,t.error)};case"createPRStarted":return{...e,session:bg(e.session,t.now)};case"createPRSucceeded":return{...e,pollToken:e.pollToken+1};case"createPRFailed":return{...e,session:Oe(e.session,t.error)};case"switchRun":if(t.runId===e.runId)return e;return{...Yn(),runId:t.runId,pollToken:e.pollToken+1}}}var bT=Math.ceil(60000/yi);function lH(e){if(e instanceof pr)return{message:e.message,retryable:e.retryable,retryAfterSeconds:e.retryAfterSeconds};return{message:e instanceof Error?e.message:String(e),retryable:!0}}function Xr(e,t){return e?.includes(t)===!0}function Tg(e,t,r={}){let[H,n]=LT(wg,r.initialRunId??null,Yn),[o,s]=IT(me),i=$n(H);i.current=H;let a=$n(o);a.current=o;let l=$n(0),c=$n(t);xg(()=>{if(c.current===t)return;c.current=t,n({type:"orgChanged"}),s(me)},[t]);let A=fi(()=>({available:r.features===void 0||Xr(r.features,"seer-explorer"),bashMode:Xr(r.features,"seer-explorer-allow-bash-mode"),codeMode:Xr(r.features,"seer-explorer-code-mode-tools"),embeds:Xr(r.features,"seer-explorer-embeds"),employee:r.isEmployee===!0,infraTelemetry:Xr(r.features,"seer-infra-telemetry"),streaming:Xr(r.features,"seer-explorer-stream"),thinking:Xr(r.features,"seer-explorer-thinking-blocks")}),[r.features,r.isEmployee]),u=r.codeMode??"only",d=r.bashMode??!1,m=A.thinking&&(r.showThinking??!1);xg(()=>{if(!e||!t||H.runId==null)return;let j=H.runId,U=new AbortController,z=!1,oe,ie=0,G=async()=>{try{let Y=await yg(e,{org:t,runId:j,signal:U.signal});if(z)return;if(ie=0,Y){let ee=Date.now();if(hg(Y)){n({type:"pollSettled",session:Y,now:ee});return}if(Lg(Y,ee)){n({type:"pollStale",session:Y,now:ee});return}n({type:"pollProgressed",session:Y,now:ee})}oe=setTimeout(()=>void G(),dg)}catch(Y){if(z||U.signal.aborted)return;if(ie+=1,ie>bT){n({type:"pollFailed",error:lH(Y)});return}oe=setTimeout(()=>void G(),yi)}};return G(),()=>{z=!0,U.abort(),clearTimeout(oe)}},[e,t,H.runId,H.pollToken]);let g=Jt((j)=>{let U=j.trim();if(!e||!t||U===""||!A.available)return;let z=B(i.current.session)?.blocks??[],oe=l.current++,ie=new Date().toISOString(),G=Oi[oe%Oi.length]??"Thinking\u2026",Y=[...z,{id:`optimistic-user-${oe}`,message:{role:"user",content:U},timestamp:ie},{id:`optimistic-assistant-${oe}`,message:{role:"assistant",content:G},timestamp:ie,loading:!0}];n({type:"sendStarted",optimistic:Y,now:Date.now()});let ee=i.current.runId,C=new Date;gg(e,{org:t,query:U,runId:ee,insertIndex:z.length,pageName:r.pageName,sentAt:[C.toString(),C.toISOString()],codeMode:A.codeMode?u:void 0,bashMode:A.employee&&A.bashMode?d:void 0}).then((v)=>{n({type:"sendSucceeded",runId:v})}).catch((v)=>{n({type:"sendFailed",error:lH(v)})})},[e,t,A.available,A.codeMode,A.employee,A.bashMode,r.pageName,u,d]),p=Jt(()=>{let j=i.current.runId;if(!e||!t||j==null)return;n({type:"interruptStarted"}),fg(e,{org:t,runId:j}).catch(()=>{n({type:"interruptFailed"})})},[e,t]),O=Jt((j,U)=>{let z=i.current.runId;if(!e||!t||z==null)return;n({type:"respondStarted",now:Date.now()}),Sg(e,{org:t,runId:z,inputId:j,responseData:U}).then(()=>n({type:"respondSucceeded"})).catch((oe)=>{n({type:"respondFailed",error:lH(oe)})})},[e,t]),y=Jt((j,U,z)=>{if(!e||!t||z.length===0)return;kg(e,{org:t,sessionId:U,scopes:z}).then((oe)=>{let ie=z.every((G)=>oe.includes(G));O(j,{decision:ie?"approve":"reject",...ie?{}:{reason:"insufficient_scope"}})}).catch((oe)=>{n({type:"approveWriteFailed",error:lH(oe)})})},[e,t,O]),L=Jt((j)=>{let U=i.current.runId;if(!e||!t||U==null||!j)return;n({type:"createPRStarted",now:Date.now()}),_g(e,{org:t,runId:U,repoName:j}).then(()=>n({type:"createPRSucceeded"})).catch((z)=>{n({type:"createPRFailed",error:lH(z)})})},[e,t]),f=Jt((j)=>{n({type:"switchRun",runId:j})},[]),k=Jt(()=>{if(!e||!t||!A.available)return;let j=new AbortController;s(_e(a.current,Date.now())),Og(e,{org:t,signal:j.signal}).then((U)=>s(ge(U,Date.now()))).catch((U)=>{if(!j.signal.aborted)s(Oe(a.current,lH(U)))})},[e,t,A.available]),I=Jt(()=>{n({type:"reset"})},[]),h=B(H.session)?.blocks??[],b=fi(()=>{if(!H.optimistic)return h;return h.length>=H.optimistic.length?h:H.optimistic},[h,H.optimistic]),w=B(H.session)?.status,T=!H.timedOut&&(H.optimistic!==null||w==="processing"||b.some((j)=>j.loading)),q=B(H.session)?.owner_user_id,E=q!==null&&q!==void 0&&String(q)!==r.userId,D=B(H.session)?.repo_pr_states??{},x=fi(()=>ug(b,D),[b,D]),P=Jt((j)=>r.onCodeModeChange?.(j),[r.onCodeModeChange]),N=Jt((j)=>r.onBashModeChange?.(j),[r.onBashModeChange]),F=Jt((j)=>r.onShowThinkingChange?.(j),[r.onShowThinkingChange]);return{blocks:b,thinking:T,timedOut:H.timedOut,interrupting:H.interrupting,error:se(H.session),started:H.runId!==null||b.length>0,runId:H.runId,readOnly:E,pendingInput:B(H.session)?.pending_user_input??null,repoPRStates:D,codeChanges:x,capabilities:A,codeMode:u,bashMode:d,showThinking:m,runs:o,send:g,interrupt:p,reset:I,switchRun:f,loadRuns:k,respond:O,approveWrite:y,createPR:L,setCodeMode:P,setBashMode:N,setShowThinking:F}}var Vn=hT(null);import{useCallback as uP,useMemo as Jg,useRef as dP}from"h:0__";import{RenderableEvents as oo}from"h:3__________";var gr=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],Pg=["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u2588"];function Zn(e,t,{floor:r=!1}={}){if(t<=0)return"";if(!e||e.length===0)return"\u254C".repeat(t);let H=e.map(([,a])=>a),n=qg(H,t),o=Math.max(...n),s=r?gr[0]:" ";if(o===0)return gr[0].repeat(n.length).padStart(t);return n.map((a)=>{if(a===0)return s;let l=Math.ceil(a/o*gr.length)-1;return gr[Math.max(0,Math.min(gr.length-1,l))]}).join("").padStart(t)}function zn(e,t,r,{floor:H=!1}={}){if(r<=0)return[];if(t<=0)return Array.from({length:r},()=>"");if(!e||e.length===0)return Array.from({length:r},()=>"\u254C".repeat(t));let n=qg(e.map(([,i])=>i),t),o=Math.max(...n),s=" ".repeat(Math.max(0,t-n.length));return Array.from({length:r},(i,a)=>{let l=a===r-1,c=r-1-a,A=l&&(H||o===0)?gr[0]:" ",u=n.map((d)=>{let m=o===0?0:d/o*r,g=Math.min(1,m-c);if(g<=0)return A;let p=Math.ceil(g*gr.length)-1;return gr[Math.max(0,Math.min(gr.length-1,p))]}).join("");return s+u})}function Si(e,t){if(t<=0)return"";let r=Number.isFinite(e)?Math.max(0,Math.min(1,e)):0,H=Math.round(r*t*8);if(H===0)return(r>0?Pg[0]:" ").padEnd(t);let n=Math.min(t,Math.floor(H/8)),o=H%8,s=o>0&&n<t?Pg[o-1]:"";return("\u2588".repeat(n)+s).padEnd(t)}function AH(e,t){if(e.length===0||e.length>=t)return[...e];return Array.from({length:t},(r,H)=>e[Math.min(e.length-1,Math.floor(H*e.length/t))])}function qg(e,t){if(e.length<=t)return e;let r=e.length/t,H=[];for(let n=0;n<t;n++){let o=Math.floor(n*r),s=Math.min(e.length,Math.floor((n+1)*r)),i=0;for(let a=o;a<s;a++)i+=e[a];H.push(s>o?i/(s-o):0)}return H}function Pe(e){if(e===void 0)return"\xB7\xB7";let t=typeof e==="string"?Number(e):e;if(!Number.isFinite(t))return"0";let r=t<0?"-":"",H=Math.abs(t),n=[{divisor:1,suffix:""},{divisor:1000,suffix:"k"},{divisor:1e6,suffix:"m"},{divisor:1e9,suffix:"b"},{divisor:1000000000000,suffix:"t"}],o=0;while(o+1<n.length&&H>=n[o+1].divisor)o++;while(o+1<n.length){let l=H/n[o].divisor,c=o===0?2:l<10?1:0;if(Number(l.toFixed(c))<1000)break;o++}let s=n[o],i=H/s.divisor,a=o===0?2:i<10?1:0;return`${r}${Number(i.toFixed(a))}${s.suffix}`}function uH(e,t){let r=typeof e==="string"?Number(e):e;return`${Pe(e)} ${r===1?t:`${t}s`}`}function he(e,t=Date.now()){if(!e)return"";let r=Date.parse(e);if(Number.isNaN(r))return"";let H=Math.max(0,Math.floor((t-r)/1000));if(H<60)return`${H}s`;let n=Math.floor(H/60);if(n<60)return`${n}m`;let o=Math.floor(n/60);if(o<24)return`${o}h`;let s=Math.floor(o/24);if(s<7)return`${s}d`;let i=Math.floor(s/7);if(i<52)return`${i}w`;return`${Math.floor(s/365)}y`}import{useEffect as wT,useState as xT}from"h:0__";import{jsxDEV as PT}from"h:6___________________________";var Mg=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],TT=80;function _i(e=!0){let[t,r]=xT(0);return wT(()=>{if(!e)return;let H=setInterval(()=>r((n)=>(n+1)%Mg.length),TT);return()=>clearInterval(H)},[e]),Mg[t]}function dH(){let e=_i();return PT("span",{children:e},void 0,!1,void 0,this)}import{Fragment as eP}from"h:0__";var qT=new Set(["upload","gravatar"]);function MT(e){if(!e?.avatar||!qT.has(e.avatar.avatarType))return;return e.avatar.avatarUrl??e.avatarUrl??void 0}function Qg(e){let t=new Map;for(let r of e){let H=MT(r.user);if(H&&r.user)t.set(r.user.id,H)}return t}function Ng(e,t){if(e?.type!=="user")return;return t.get(e.id)}var Cg="\xB7";function jg(e){let t=e?.name;if(!t)return Cg;return t.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map((n)=>n[0].toUpperCase()).join("")||Cg}import{jsxDEV as CT}from"h:6___________________________";function pH({text:e,fallback:t,width:r,fg:H,attributes:n=sH}){let o=S(),s=!e||e.trim().length===0;return CT("text",{fg:s?o.subText:H??o.text,attributes:s?mr:n,style:{flexShrink:0},children:_(s?t:e,r)},void 0,!1,void 0,this)}function br(e,t,{gap:r=1,minFlex:H=8}={}){let n=Math.max(0,Math.floor(t)),o=[...e],s=(m)=>m.reduce((g,p)=>g+(p.width==="flex"?H:p.width),0)+r*Math.max(0,m.length-1);while(o.length>0&&s(o)>n){let m=QT(o);if(m<0)break;o.splice(m,1)}while(o.length>1&&s(o)>n)o.pop();if(o.length===0)return[];let i=r*(o.length-1),a=o.reduce((m,g)=>m+(g.width==="flex"?0:g.width),0),l=o.filter((m)=>m.width==="flex").length,c=o.map((m)=>m.width==="flex"?0:m.width);if(l>0){let m=Math.max(0,n-i-a),g=Math.floor(m/l),p=m-g*l;o.forEach((O,y)=>{if(O.width!=="flex")return;if(c[y]=g+(p>0?1:0),p>0)p--})}let A=c.reduce((m,g)=>m+g,0)+i;for(let m=c.length-1;m>=0&&A>n;m--){let g=Math.min(c[m]-1,A-n);if(g<=0)continue;c[m]=c[m]-g,A-=g}let u=[],d=0;return o.forEach((m,g)=>{let p=Math.max(0,c[g]);u.push({column:m,width:p,offset:d}),d+=p+r}),u}function QT(e){let t=-1,r=1/0;return e.forEach((H,n)=>{if(H.priority===void 0)return;if(H.priority<=r)t=n,r=H.priority}),t}import{jsxDEV as J,Fragment as Eg}from"h:6___________________________";var Et={lastSeen:10,age:6,sparkline:12,events:7,users:7,priority:6,assignee:5},hi=Et.sparkline-3,Dg=2,NT=1,Rg={lastSeen:"Last Seen",age:"Age",sparkline:"Trend",events:"Events",users:"Users",priority:"Prio",assignee:"Asgn"},jT=["lastSeen","age","sparkline","events","users","priority","assignee"],ki=16,Li=3,DT=[{key:"marker",width:Li},{key:"title",width:"flex"},{key:"lastSeen",width:Et.lastSeen,priority:6},{key:"age",width:Et.age,priority:3},{key:"sparkline",width:Et.sparkline,priority:5},{key:"events",width:Et.events},{key:"users",width:Et.users,priority:4},{key:"priority",width:Et.priority,priority:2},{key:"assignee",width:Et.assignee,priority:1}],Br=1,Ii=4;function bi(e){let t=Math.max(ki+Li,e-Br*2),r=br(DT,t,{gap:0,minFlex:ki}),H=r.find(({column:s})=>s.key==="title")?.width??ki,n=new Set(r.map(({column:s})=>s.key)),o=jT.filter((s)=>n.has(s));return{content:t,title:H,columns:o}}var RT={high:"high",medium:"med",low:"low"};function Gg({width:e,selectionAbove:t=!1,selectionBelow:r=!1}){let H=S(),n=t?"\u2580":r?"\u2584":"\u2500",o=t||r?H.selected:H.border;return J("text",{fg:o,children:n.repeat(Math.max(0,e))},void 0,!1,void 0,this)}function wi({content:e,fg:t,rules:r=!0}){let H=S(),n=r?"\u2502":" ";return J(Eg,{children:[J("text",{children:" "},void 0,!1,void 0,this),J("text",{fg:H.border,children:n},void 0,!1,void 0,this),J("text",{fg:t,children:e},void 0,!1,void 0,this),J("text",{fg:H.border,children:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Jn({width:e,selectionBelow:t=!1}){let r=S(),H=bi(e);return J("box",{style:{flexDirection:"column",width:e,flexShrink:0},children:[J("box",{style:{flexDirection:"row",paddingLeft:Br,paddingRight:Br},children:[J("text",{fg:r.muted,children:_("Issue",Li+H.title)},void 0,!1,void 0,this),H.columns.map((n)=>n==="sparkline"?J(wi,{content:_(Rg[n],hi,"center"),fg:r.muted,rules:!1},n,!1,void 0,this):J("text",{fg:r.muted,children:_(Rg[n],Et[n],"right")},n,!1,void 0,this))]},void 0,!0,void 0,this),J(Gg,{width:e,selectionBelow:t},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eo({group:e,selected:t,width:r,pending:H=!1,selectionBelow:n=!1,assigneeAvatarUrl:o,onClick:s}){let i=S(),a=bi(r),l=t?i.selected:void 0,c=Kr(e),A=Wn(e),u=jn(),d=ET(e,Math.max(0,a.content-5),A,u);return J("box",{style:{flexDirection:"column",width:r,flexShrink:0},onMouseDown:s,children:[J("box",{style:{flexDirection:"column",paddingLeft:Br,paddingRight:Br,backgroundColor:l},children:[J("box",{style:{flexDirection:"row"},children:[J("text",{fg:t?i.accent:i.muted,children:t?"\u25B8":" "},void 0,!1,void 0,this),J("text",{fg:i.accent,children:H?"\u27F3":e.hasSeen?" ":"\u25CF"},void 0,!1,void 0,this),J("text",{children:" "},void 0,!1,void 0,this),J(pH,{text:c,fallback:"(no title)",width:a.title,fg:i.text,attributes:X},void 0,!1,void 0,this),a.columns.map((m)=>J(GT,{column:m,group:e,avatarUrl:o},m,!1,void 0,this))]},void 0,!0,void 0,this),J("box",{style:{flexDirection:"row"},children:[J("text",{children:" "},void 0,!1,void 0,this),J("text",{fg:i.level[e.level]??i.level.unknown,children:"\u2503"},void 0,!1,void 0,this),J("text",{children:" "},void 0,!1,void 0,this),J(pH,{text:A,fallback:"(no error message)",width:Math.max(0,a.content-5),fg:i.muted},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J("box",{style:{flexDirection:"row"},children:[J("text",{children:" "},void 0,!1,void 0,this),J("text",{fg:i.muted,children:d.lead},void 0,!1,void 0,this),d.showIcon?J(aH,{platform:e.project?.platform},void 0,!1,void 0,this):null,J("text",{fg:i.muted,children:d.rest},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),J(Gg,{width:r,selectionAbove:t,selectionBelow:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vT({group:e,avatarUrl:t}){let r=S(),H=Et.assignee,{supportsHighRes:n}=Zt();if(!t||!n)return J("text",{fg:r.muted,children:_(jg(e.assignedTo),H,"right")},void 0,!1,void 0,this);return J(Eg,{children:[J("text",{children:" ".repeat(Math.max(0,H-Dg))},void 0,!1,void 0,this),J("image",{source:t,fit:"fit",style:{width:Dg,height:NT,flexShrink:0}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function GT({column:e,group:t,avatarUrl:r}){let H=S(),n=Et[e];switch(e){case"sparkline":return J(wi,{content:Zn(t.stats?.["24h"],hi),fg:H.muted},void 0,!1,void 0,this);case"events":return J("text",{fg:H.text,children:_(Pe(t.count),n,"right")},void 0,!1,void 0,this);case"users":return J("text",{fg:H.text,children:_(Pe(t.userCount),n,"right")},void 0,!1,void 0,this);case"lastSeen":return J("text",{fg:H.muted,children:_(vg(t.lastSeen,!0),n,"right")},void 0,!1,void 0,this);case"age":return J("text",{fg:H.muted,children:_(vg(t.firstSeen),n,"right")},void 0,!1,void 0,this);case"priority":return J("text",{fg:H.muted,children:_(t.priority?RT[t.priority]:"",n,"right")},void 0,!1,void 0,this);case"assignee":return J(vT,{group:t,avatarUrl:r},void 0,!1,void 0,this)}}function vg(e,t=!1){if(!e)return"\xB7\xB7";let r=he(e);return t&&r?`${r} ago`:r}function ET(e,t,r,H){let n=e.project?.slug,o=[e.shortId].filter((A)=>Boolean(A)),s=[n,e.isUnhandled?"Unhandled":null,e.culprit===r?null:e.culprit,e.numComments>0?`\uD83D\uDCAC ${e.numComments}`:null,e.logger].filter((A)=>Boolean(A)),i=Boolean(n)&&H>0,a=Math.max(0,t-(i?H:0)),l=o.length>0?R(`${o.join(" \u2502 ")} \u2502 `,a):"",c=R(s.join(" \u2502 "),Math.max(0,a-ce(l)));return{lead:l,rest:c,showIcon:i}}function to({width:e,seed:t}){let r=S(),H=bi(e),n=Math.floor(H.title*(0.45+t*17%40/100)),o=Math.floor((H.content-4)*(0.5+t*29%35/100)),s=Math.floor((H.content-4)*(0.3+t*23%25/100));return J("box",{style:{flexDirection:"column",width:e,paddingLeft:Br,paddingRight:Br,border:["bottom"],borderColor:r.border,flexShrink:0},children:[J("box",{style:{flexDirection:"row"},children:[J("text",{children:" "},void 0,!1,void 0,this),J("text",{fg:r.panelAlt,children:_("\u2500".repeat(n),H.title)},void 0,!1,void 0,this),H.columns.map((i)=>i==="sparkline"?J(wi,{content:"\u254C".repeat(hi),fg:r.panelAlt},i,!1,void 0,this):J("text",{fg:r.panelAlt,children:_("\xB7\xB7",Et[i],"right")},i,!1,void 0,this))]},void 0,!0,void 0,this),J("box",{style:{flexDirection:"row"},children:[J("text",{children:" "},void 0,!1,void 0,this),J("text",{fg:r.border,children:"\u2503"},void 0,!1,void 0,this),J("text",{fg:r.panelAlt,children:` ${"\u2500".repeat(o)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J("box",{style:{flexDirection:"row"},children:[J("text",{children:" "},void 0,!1,void 0,this),J("text",{fg:r.panelAlt,children:"\u2500".repeat(s)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as xi,useEffect as Kg,useRef as mH,useState as GH}from"h:0__";function ro(e,{org:t,query:r,sort:H,statsPeriod:n,limit:o,project:s,environment:i,reloadToken:a=0}){let[l,c]=GH(me),[A,u]=GH(!1),[d,m]=GH(null),[g,p]=GH(null),[O,y]=GH(1),L=mH(l);L.current=l;let f=mH(void 0),k=mH(1),I=mH(null),h=mH(0),b=xi((E,D)=>{if(!e)return!1;I.current?.abort();let x=new AbortController;I.current=x;let{signal:P}=x,N=++h.current;return c(_e(L.current,Date.now())),u(!1),(async()=>{try{let F=await Dc(e,{org:t,query:r,sort:H,statsPeriod:n,limit:o,project:s,environment:i,cursor:E,signal:P});if(P.aborted||N!==h.current)return;if(f.current=E,k.current=D,y(D),m(F.nextCursor),p(F.prevCursor),c(ge(F.data,Date.now())),F.data.length===0)return;u(!0);try{let j=await Rc(e,{org:t,groups:F.data.map((U)=>U.id),statsPeriod:n,project:s,signal:P});if(P.aborted||N!==h.current)return;c((U)=>U.state==="ready"?ge(KT(U.value,j),U.fetchedAt):U)}finally{if(!P.aborted&&N===h.current)u(!1)}}catch(F){if(P.aborted||N!==h.current)return;c((j)=>Oe(j,Ne(F)))}})(),!0},[e,t,r,H,n,o,s,i]),w=mH(null),T=xi(()=>d===null||L.current.state==="loading"?!1:b(d,k.current+1),[d,b]),q=xi(()=>k.current<=1||g===null||L.current.state==="loading"?!1:b(g,Math.max(1,k.current-1)),[g,b]);return Kg(()=>{if(!e){h.current++,I.current?.abort();return}let E=w.current!==b;if(w.current=b,E)f.current=void 0,k.current=1,y(1),m(null),p(null);b(f.current,k.current)},[e,b,a]),Kg(()=>()=>{h.current++,I.current?.abort()},[]),{issues:l,statsLoading:A,nextCursor:d,prevCursor:g,page:O,nextPage:T,previousPage:q}}function KT(e,t){return e.map((r)=>{let H=t[r.id];if(!H)return r;return{...r,count:H.count??r.count,userCount:H.userCount??r.userCount,firstSeen:H.firstSeen??r.firstSeen,lastSeen:H.lastSeen??r.lastSeen,isUnhandled:H.isUnhandled??r.isUnhandled,stats:{...r.stats,...H.stats}}})}import{jsxDEV as cr}from"h:6___________________________";var Ti=25;function Pi({client:e,org:t,ids:r,width:H}){let n=S(),o=[...new Set(r.filter(Boolean))].slice(0,Ti),s=o.length===1?`issue:${o[0]}`:`issue:[${o.join(",")}]`,i=ro(o.length>0?e:null,{org:t,query:s,sort:"date",statsPeriod:xt,limit:Math.max(1,o.length)}),a=B(i.issues)??[],l=se(i.issues),c=Math.max(24,H-2),A=o.length>1;if(o.length===0)return cr("text",{fg:n.muted,children:"No issues referenced."},void 0,!1,void 0,this);return cr("box",{style:{flexDirection:"column",width:H,border:!0,borderColor:l?n.danger:n.border,flexShrink:0},children:[A?cr(Jn,{width:c},void 0,!1,void 0,this):null,i.issues.state==="idle"||ke(i.issues)?cr(to,{width:c,seed:0},void 0,!1,void 0,this):null,l&&a.length===0?cr("box",{style:{flexDirection:"column",paddingLeft:1,paddingRight:1},children:[cr("text",{fg:n.danger,attributes:X,children:["Could not load ",A?"issues":o[0]]},void 0,!0,void 0,this),cr("text",{fg:n.muted,children:l.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,!l&&i.issues.state==="ready"&&a.length===0?cr("text",{fg:n.muted,children:` No matching ${A?"issues":`issue ${o[0]}`} found.`},void 0,!1,void 0,this):null,a.map((u)=>cr(eo,{group:u,selected:!1,width:c},u.id,!1,void 0,this)),r.length>Ti?cr("text",{fg:n.muted,children:` Showing the first ${Ti} issues.`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useEffect as zT,useState as JT}from"h:0__";import{addDefaultParsers as ZT}from"h:3__________";var Xg="./assets/highlights-9wx8m64k.scm";var Bg="./assets/tree-sitter-go-dve313fn.wasm";var Wg="./assets/highlights-bds7v5h1.scm";var Fg="./assets/tree-sitter-php-only-jk6j4gjt.wasm";var Ug="./assets/highlights-k2cbtg72.scm";var Yg="./assets/tree-sitter-python-d56ewc8c.wasm";var $g="./assets/highlights-3ybh5bp2.scm";var Vg="./assets/tree-sitter-ruby-kmdgpnz0.wasm";function Zg(){ZT([{filetype:"python",wasm:Yg,queries:{highlights:[Ug]}},{filetype:"ruby",wasm:Vg,queries:{highlights:[$g]}},{filetype:"php",wasm:Fg,queries:{highlights:[Wg]}},{filetype:"go",wasm:Bg,queries:{highlights:[Xg]}}])}Zg();function Ho(){let e=S(),[t,r]=JT();return zT(()=>{let H=!1;return r(void 0),zl(e).then((n)=>{if(!H)r(n)}).catch(()=>{if(!H)r(void 0)}),()=>{H=!0}},[e]),t}import{jsxDEV as Ee}from"h:6___________________________";var tP=new Set(["dsn","issues","chart","autofix","agentWriteApproval"]),rP=new Set(["timestamp","docs","dsn","user","issue","issues","chart","autofix","agentWriteApproval"]),HP=new Set(["agentWriteApproval"]),nP=/\{%\s*([A-Za-z][\w]*)([^%]*?)\s*(?:\/%\}|%\}([\s\S]*?)\{%\s*\/\1\s*%\})/g;function oP(e,t,r=null){let H=[],n="",o=0,s=()=>{if(n)H.push({kind:"markdown",content:n});n=""};for(let i of e.matchAll(nP)){let a=i.index??o;n+=e.slice(o,a);let l=i[0],c=i[1],A=sP(i[2]),u=iP(i[3]),d=c?aP(r?.[c]):null,m=c&&HP.has(c)?d:u??(Object.keys(A).length>0?A:d);o=a+l.length;let g=e.slice(e.lastIndexOf(`
|
|
11
|
-
`,
|
|
12
|
-
`,o),O=e.slice(o,p===-1?e.length:p).trim(),y=c==="issue"&&g===""&&O==="";if(!c||!rP.has(c)){n+=l;continue}let L=m??{};if(!t||!tP.has(c)&&!y){n+=zg(c,L);continue}s(),H.push({kind:"embed",name:c,data:L})}return n+=e.slice(o),s(),H}function sP(e){let t={};if(!e)return t;let r=/([A-Za-z_][\w-]*)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s]+))/g;for(let H of e.matchAll(r)){let n=H[1],o=H[2]??H[3]??H[4];if(n&&o!==void 0)t[n]=o}return t}function iP(e){if(!e||e.length>1e5)return null;try{let t=JSON.parse(e.trim());return t&&typeof t==="object"&&!Array.isArray(t)?t:null}catch{return null}}function aP(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:null}function zg(e,t){if(e==="timestamp"){let r=Ht(t.value);if(!r)return"";if(t.format==="relative")return cP(r);let H=Date.parse(r);return Number.isNaN(H)?r:new Date(H).toLocaleString()}if(e==="docs"){let r=Ht(t.title),H=Ht(t.href);return r&&H?`[${r}](${H})`:r??H??""}if(e==="user")return`@${Ht(t.name)??"user"}`;if(e==="issue")return`**${Ht(t.id)??"issue"}**`;if(e==="issues"){let r=qi(t.ids);return r.length?r.map((H)=>`**${H}**`).join(", "):"Issues"}if(e==="dsn")return`\`${Ht(t.value)??"DSN"}\``;if(e==="autofix")return Ht(t.result)??"Autofix result";if(e==="chart")return Ht(t.title)??"Chart";if(e==="agentWriteApproval")return"Seer requested permission to make changes.";return""}function cP(e){let t=Date.parse(e);if(Number.isNaN(t))return e;let r=Math.round((t-Date.now())/1000),H=Math.abs(r),[n,o]=H<60?[H,"second"]:H<3600?[Math.round(H/60),"minute"]:H<86400?[Math.round(H/3600),"hour"]:[Math.round(H/86400),"day"];return`${n} ${o}${n===1?"":"s"} ${r<0?"ago":"from now"}`}function no({content:e,width:t,client:r=null,org:H="",streaming:n=!1,embedsEnabled:o=!1,structuredContent:s=null}){let i=S(),a=Ho(),l=oP(e,o,s);return Ee("box",{style:{flexDirection:"column",width:t},children:l.map((c,A)=>{if(c.kind==="embed"&&c.name&&c.data)return Ee(lP,{name:c.name,data:c.data,width:t,client:r,org:H},`embed-${A}`,!1,void 0,this);let u=c.content??"";if(!a)return Ee(eP,{children:vr(u,Math.max(1,t)).map((d,m)=>Ee("text",{fg:i.text,children:d},m,!1,void 0,this))},`markdown-${A}`,!1,void 0,this);return Ee("markdown",{content:u,syntaxStyle:a,streaming:!0,fg:i.text,conceal:!0,internalBlockMode:"top-level",tableOptions:{style:"columns",widthMode:"full",wrapMode:"word",borderColor:i.border},style:{width:t}},`markdown-${A}-${n?"stream":"static"}`,!1,void 0,this)})},void 0,!1,void 0,this)}function lP({name:e,data:t,width:r,client:H,org:n}){let o=S(),s=Math.max(8,r-2);if(e==="issue"){let i=Ht(t.id)??"Unknown issue";return Ee(Pi,{client:H,org:n,ids:[i],width:s},void 0,!1,void 0,this)}if(e==="dsn")return Ee("box",{style:{width:s,border:!0,borderColor:o.border,paddingLeft:1},children:Ee("text",{fg:o.accent,children:Ht(t.value)??"DSN unavailable"},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(e==="issues"){let i=qi(t.ids);return Ee(Pi,{client:H,org:n,ids:i,width:s},void 0,!1,void 0,this)}if(e==="chart")return Ee(AP,{data:t,width:s},void 0,!1,void 0,this);if(e==="autofix"){let i=(Ht(t.step)??"result").replace(/_/g," "),a=Ht(t.result)??"No result returned.";return Ee("box",{style:{flexDirection:"column",width:s,border:!0,borderColor:o.accent,paddingLeft:1},children:[Ee("text",{fg:o.accent,attributes:X,children:`Autofix \xB7 ${i}`},void 0,!1,void 0,this),Ee("text",{fg:o.muted,children:Ht(t.shortId)??""},void 0,!1,void 0,this),vr(a,Math.max(1,s-3)).map((l,c)=>Ee("text",{fg:o.text,children:l},c,!1,void 0,this))]},void 0,!0,void 0,this)}if(e==="agentWriteApproval"){let i=Ht(t.status)??"pending",a=qi(t.requiredScopes);return Ee("box",{style:{flexDirection:"column",width:s,border:!0,borderColor:o.warning,paddingLeft:1},children:[Ee("text",{fg:i==="approved"?o.success:i==="rejected"?o.danger:o.warning,attributes:X,children:i==="pending"?"Allow Seer to make changes?":`Access ${i}`},void 0,!1,void 0,this),a.map((l)=>Ee("text",{fg:o.muted,children:` ${l}`},l,!1,void 0,this))]},void 0,!0,void 0,this)}return Ee("text",{fg:o.muted,children:zg(e,t)},void 0,!1,void 0,this)}function AP({data:e,width:t}){let r=S(),H=Array.isArray(e.series)?e.series.slice(0,5):[],n=Math.max(8,Math.min(50,t-4));return Ee("box",{style:{flexDirection:"column",width:t,border:!0,borderColor:r.border,paddingLeft:1},children:[Ee("text",{fg:r.text,attributes:X,children:Ht(e.title)??"Chart"},void 0,!1,void 0,this),Ht(e.subtitle)?Ee("text",{fg:r.muted,children:Ht(e.subtitle)},void 0,!1,void 0,this):null,H.map((o,s)=>{let i=o&&typeof o==="object"?o:{},a=Array.isArray(i.data)?i.data.flatMap((c,A)=>{if(!c||typeof c!=="object")return[];let u=Number(c.y);return Number.isFinite(u)?[[A,u]]:[]}):[],l=Ht(i.label)??Ht(i.name)??`Series ${s+1}`;return Ee("box",{style:{flexDirection:"column"},children:[Ee("text",{fg:s===0?r.accent:r.muted,children:Zn(a,n,{floor:!0})},void 0,!1,void 0,this),Ee("text",{fg:r.muted,attributes:rt,children:l},void 0,!1,void 0,this)]},`${l}-${s}`,!0,void 0,this)})]},void 0,!0,void 0,this)}function Ht(e){return typeof e==="string"&&e!==""?e:void 0}function qi(e){return Array.isArray(e)?e.filter((t)=>typeof t==="string"):[]}import{jsxDEV as M}from"h:6___________________________";var eO=3;function tO({chat:e,client:t,org:r,width:H,height:n,focused:o,value:s,onInput:i,inputFocused:a,onInputFocus:l,onInputBlur:c,slashCommands:A,slashSelected:u,showHistory:d,historySelected:m,pendingState:g,placeholderOverride:p}){let O=S(),y=Math.max(10,H-2),L=A.length>0?A.length+2:0,f=Math.max(1,n-1-eO-L),k=Jg(()=>Ag(e.blocks),[e.blocks]),I=Jg(()=>e.blocks.some((T)=>(T.tool_results??[]).some((q)=>q?.structuredContent?.agentWriteApproval!==void 0||q?.content.includes("agentWriteApproval"))),[e.blocks]),h=dP(null),b=uP((T)=>{let q=h.current;if(q)q.removeAllListeners(oo.FOCUSED),q.removeAllListeners(oo.BLURRED);if(h.current=T,T)T.on(oo.FOCUSED,()=>l?.()),T.on(oo.BLURRED,()=>c?.())},[l,c]),w=p??(e.timedOut?"Response timed out. Please try again.":e.interrupting?"Interrupted. What should Seer do instead?":e.pendingInput?"Respond using the controls above":"Ask Seer a question, or press / for commands.");return M("box",{style:{flexDirection:"column",width:H,height:n},children:[M("box",{style:{flexDirection:"row",width:H,height:1,flexShrink:0,paddingLeft:1,paddingRight:1,backgroundColor:O.panelAlt},children:[M("text",{fg:O.text,attributes:X,children:["Seer Agent"," "]},void 0,!0,void 0,this),M("text",{fg:O.accent,children:"\u03B2"},void 0,!1,void 0,this),M("box",{style:{flexGrow:1}},void 0,!1,void 0,this),e.capabilities.codeMode?M("text",{fg:O.muted,children:`${ng(e.codeMode)} \xB7 `},void 0,!1,void 0,this):null,e.codeChanges.length>0?M("text",{fg:O.muted,children:`+${e.codeChanges.reduce((T,q)=>T+q.added,0)} -${e.codeChanges.reduce((T,q)=>T+q.removed,0)} \xB7 `},void 0,!1,void 0,this):null,M("text",{fg:O.muted,children:`${ve(we("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),d?M(gP,{chat:e,selected:m,width:y,height:f},void 0,!1,void 0,this):M("scrollbox",{focused:o&&!a,stickyScroll:!0,stickyStart:"bottom",style:{flexGrow:1,width:H,height:f},children:[e.blocks.length===0?M(IP,{width:y},void 0,!1,void 0,this):e.blocks.map((T)=>M(OP,{block:T,width:y,chat:e,client:t,org:r,showTodos:k?.blockId===T.id?k.todos:[]},T.id,!1,void 0,this)),e.codeChanges.length>0?M(pP,{chat:e,width:y},void 0,!1,void 0,this):null,e.pendingInput&&(e.pendingInput.input_type!=="reauth_monitoring_provider"||e.capabilities.infraTelemetry)&&(e.pendingInput.input_type!=="agent_write_approval"||!I)?M(hP,{pending:e.pendingInput,state:g,width:y},void 0,!1,void 0,this):null,e.error?M("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[M("text",{fg:O.danger,children:"Seer request failed"},void 0,!1,void 0,this),M("text",{fg:O.muted,children:e.error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,e.timedOut?M("box",{style:{paddingLeft:1,paddingTop:1},children:M("text",{fg:O.warning,children:"Seer stopped responding. Send another message to retry."},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),A.length>0?M(mP,{commands:A,selected:u,width:H},void 0,!1,void 0,this):null,M("box",{style:{flexDirection:"row",width:H,flexShrink:0,height:eO,border:!0,borderStyle:"rounded",borderColor:a?O.accent:O.border,backgroundColor:O.panel,paddingLeft:1,paddingRight:1},children:[e.thinking?M("text",{fg:O.accent,children:[M(dH,{},void 0,!1,void 0,this)," "]},void 0,!0,void 0,this):M("text",{fg:O.subText,children:"\u203A "},void 0,!1,void 0,this),M("input",{ref:b,value:s,placeholder:w,focused:a,onInput:i,style:{flexGrow:1,textColor:O.text,backgroundColor:O.panel,focusedTextColor:O.text,focusedBackgroundColor:O.panel,placeholderColor:e.timedOut||e.interrupting||e.pendingInput?O.warning:O.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function pP({chat:e,width:t}){let r=S(),H=e.codeChanges.some((n)=>n.status==="needs_push"||n.status==="error");return M("box",{style:{flexDirection:"column",width:Math.max(8,t-2),marginTop:1,border:!0,borderColor:r.border,paddingLeft:1},children:[M("text",{fg:r.text,attributes:X,children:"Code changes"},void 0,!1,void 0,this),e.codeChanges.map((n)=>M("box",{style:{flexDirection:"column"},children:[M("text",{fg:r.accent,attributes:X,children:`${n.repoName} +${n.added} -${n.removed}`},void 0,!1,void 0,this),n.files.map((o)=>M("text",{fg:r.muted,children:` +${o.added} -${o.removed} ${o.path}`},o.path,!1,void 0,this)),M("text",{fg:n.status==="pushed"?r.success:n.status==="error"?r.danger:n.status==="creating"?r.warning:r.muted,children:n.status==="creating"?" Creating or updating PR\u2026":n.status==="error"?" PR update failed \u2014 retry available":n.status==="pushed"?` Pushed${n.prNumber?` \xB7 PR #${n.prNumber}`:""}${n.prUrl?` \xB7 ${n.prUrl}`:""}`:` ${n.prNumber?`PR #${n.prNumber} has unpushed changes`:"No PR yet"}`},void 0,!1,void 0,this)]},n.repoName,!0,void 0,this)),H&&!e.readOnly?M("text",{fg:r.accent,children:`[${ve(we("sentry.seer.pushChanges"))}] create/update PRs \xB7 /create-pr`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function mP({commands:e,selected:t,width:r}){let H=S();return M("box",{style:{flexDirection:"column",width:r,flexShrink:0,border:!0,borderColor:H.border,backgroundColor:H.panel,paddingLeft:1},children:e.map((n,o)=>M("box",{style:{flexDirection:"row",width:Math.max(1,r-4),backgroundColor:o===t?H.selected:void 0},children:[M("text",{fg:o===t?H.accent:H.text,attributes:X,children:n.title.padEnd(19)},void 0,!1,void 0,this),M("text",{fg:H.muted,children:R(n.description,Math.max(1,r-25))},void 0,!1,void 0,this)]},n.id,!0,void 0,this))},void 0,!1,void 0,this)}function gP({chat:e,selected:t,width:r,height:H}){let n=S(),o=B(e.runs)??[],s=se(e.runs);return M("scrollbox",{focused:!0,style:{flexGrow:1,width:r+2,height:H},children:M("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[M("text",{fg:n.text,attributes:X,children:"Recent conversations"},void 0,!1,void 0,this),M("text",{fg:n.muted,children:"j/k select \xB7 enter open \xB7 esc close"},void 0,!1,void 0,this),ke(e.runs)?M("text",{fg:n.muted,children:"Loading conversations\u2026"},void 0,!1,void 0,this):null,s?M("text",{fg:n.danger,children:s.message},void 0,!1,void 0,this):null,!ke(e.runs)&&!s&&o.length===0?M("text",{fg:n.muted,children:"No recent conversations."},void 0,!1,void 0,this):null,o.map((i,a)=>M("box",{style:{flexDirection:"row",width:r,backgroundColor:a===t?n.selected:void 0},children:[M("text",{fg:a===t?n.accent:n.muted,children:a===t?"\u276F ":" "},void 0,!1,void 0,this),M("text",{fg:n.text,children:R(i.title??"Untitled chat",Math.max(4,r-10))},void 0,!1,void 0,this),M("box",{style:{flexGrow:1}},void 0,!1,void 0,this),M("text",{fg:n.muted,children:he(i.lastTriggeredAt)},void 0,!1,void 0,this)]},i.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function OP({block:e,width:t,chat:r,client:H,org:n,showTodos:o}){if(e.message.role==="user")return M(yP,{block:e,width:t},void 0,!1,void 0,this);if(e.message.role==="tool_use")return M(SP,{block:e,width:t,chat:r,client:H,org:n,showTodos:o},void 0,!1,void 0,this);return M(fP,{block:e,width:t,chat:r,client:H,org:n},void 0,!1,void 0,this)}function yP({block:e,width:t}){let r=S(),H=vr(e.message.content??"",Math.max(1,t-3));return M("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:H.map((n,o)=>M("text",{fg:r.text,attributes:X,children:o===0?`\u203A ${n}`:` ${n}`},o,!1,void 0,this))},void 0,!1,void 0,this)}function fP({block:e,width:t,chat:r,client:H,org:n}){let o=S(),s=e.message.content??"";if(e.loading&&s.trim()==="")return M("text",{fg:o.muted,children:[" ",M(dH,{},void 0,!1,void 0,this)," Thinking\u2026"]},void 0,!0,void 0,this);if(e.loading&&e.id.startsWith("optimistic-assistant-"))return M("box",{style:{paddingLeft:1,paddingTop:1,flexDirection:"row"},children:M("text",{fg:o.muted,children:[" ",M(dH,{},void 0,!1,void 0,this),` ${s}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(!s.trim())return null;return M("box",{style:{flexDirection:"column",paddingLeft:3,paddingTop:1,width:t},children:M(no,{content:s,width:Math.max(1,t-3),streaming:e.loading&&r.capabilities.streaming,embedsEnabled:r.capabilities.embeds,client:H,org:n},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function SP({block:e,width:t,chat:r,client:H,org:n,showTodos:o}){let s=S(),i=og(e),a=i==="failure"?s.danger:i==="mixed"||i==="pending"?s.warning:s.muted,l=sg(e),c=e.message.tool_calls??[];return M("box",{style:{flexDirection:"column",paddingLeft:1,width:t},children:[r.showThinking&&e.message.thinking_content?.trim()?M("box",{style:{flexDirection:"column",paddingLeft:2,width:Math.max(1,t-2)},children:[M("text",{fg:s.muted,attributes:X,children:"Thinking"},void 0,!1,void 0,this),M(no,{content:e.message.thinking_content,width:Math.max(1,t-4),embedsEnabled:r.capabilities.embeds,client:H,org:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,c.flatMap((A,u)=>{let d=e.tool_results?.find((f)=>f?.tool_call_id===A.id),m=A.function==="sentry_api_execute"||A.function==="sentry_api_search",g=d?.structuredContent?.calls?.length?d.structuredContent.calls:c.length===1?e.live_calls??[]:[],p=lg(g).flatMap((f)=>{let k=ag(f);return k?[{record:f,label:k}]:[]}),O=d?.structuredContent?.links??[],y=d?.structuredContent?.artifacts??[],L=d?.structuredContent&&d.content.trimStart().startsWith("{%")?d.content:null;return[...p.length?p.map(({record:f,label:k})=>M(_P,{record:f,label:k,settled:Boolean(d)},`${A.id??u}-${f.id}`,!1,void 0,this)):!m?[i==="loading"?M("text",{fg:a,attributes:mr,children:[" ",M(dH,{},void 0,!1,void 0,this),` ${l[u]??A.function}`]},`${A.id??u}-classic`,!0,void 0,this):M("text",{fg:a,attributes:mr,children:` ${rg[i]} ${l[u]??A.function}`},`${A.id??u}-classic`,!1,void 0,this)]:[],...O.filter((f)=>f.params?.is_error!==!0).map((f,k)=>M("text",{fg:s.accent,children:` \u2197 ${kP(f.kind,f.params)}`},`${A.id??u}-link-${k}`,!1,void 0,this)),...y.map((f,k)=>M("text",{fg:s.accent,children:` \u25C7 ${f.reason||f.key}`},`${A.id??u}-artifact-${k}`,!1,void 0,this)),...L?[M(no,{content:L,width:Math.max(1,t-3),embedsEnabled:r.capabilities.embeds,structuredContent:d?.structuredContent??null,client:H,org:n},`${A.id??u}-markdown`,!1,void 0,this)]:[]]}),o.map((A,u)=>M("text",{fg:A.status==="completed"?s.success:s.muted,attributes:A.status==="completed"?rt:sH,children:` ${A.status==="completed"?"[x]":A.status==="in_progress"?"[~]":"[ ]"} ${A.content}`},`todo-${u}`,!1,void 0,this))]},void 0,!0,void 0,this)}function _P({record:e,label:t,settled:r}){let H=S(),n=ig(e,r),o=n==="failure"?H.danger:H.muted,s=cg(e),i=e.error?` \u2014 ${e.error}`:e.status!==void 0&&e.status>=400?` \u2014 HTTP ${e.status}`:"";return M("box",{style:{flexDirection:"column"},children:[n==="loading"?M("text",{fg:o,attributes:mr,children:[" ",M(dH,{},void 0,!1,void 0,this),` ${t}${i}`]},void 0,!0,void 0,this):M("text",{fg:o,attributes:mr,children:` ${n==="failure"?"\u2717":"\u2713"} ${t}${i}`},void 0,!1,void 0,this),s.map((a,l)=>M("text",{fg:H.subText,children:` ${a}`},l,!1,void 0,this))]},void 0,!0,void 0,this)}function kP(e,t){let r=t?.summary;if(typeof r==="string"&&r.trim())return r;return`View ${e.replace(/^get_/,"").replace(/_/g," ")}`}function hP({pending:e,state:t,width:r}){let H=S(),n={flexDirection:"column",width:Math.max(8,r-2),border:!0,borderColor:H.warning,paddingLeft:1,marginTop:1};if(e.input_type==="file_change_approval"){let o=Array.isArray(e.data.patches)?e.data.patches:[],s=o[t.fileApprovalIndex],i=s&&typeof s==="object"?s:{},a=i.patch&&typeof i.patch==="object"?i.patch:i,l=String(a.path??a.file_path??"proposed file change"),c=String(a.diff??i.diff??"");return M("box",{style:n,children:[M("text",{fg:H.warning,attributes:X,children:`Make this change? (${t.fileApprovalIndex+1} of ${o.length})`},void 0,!1,void 0,this),M("text",{fg:H.text,children:l},void 0,!1,void 0,this),vr(c,Math.max(1,r-5)).slice(0,10).map((A,u)=>M("text",{fg:A.startsWith("+")?H.success:A.startsWith("-")?H.danger:H.muted,children:A},u,!1,void 0,this)),M("text",{fg:H.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(e.input_type==="agent_write_approval"){let o=Array.isArray(e.data.required_scopes)?e.data.required_scopes.filter((s)=>typeof s==="string"):[];return M("box",{style:n,children:[M("text",{fg:H.warning,attributes:X,children:"Allow Seer to make changes?"},void 0,!1,void 0,this),M("text",{fg:H.muted,children:"Requested scopes:"},void 0,!1,void 0,this),o.map((s)=>M("text",{fg:H.text,children:` ${s}`},s,!1,void 0,this)),M("text",{fg:H.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(e.input_type==="ask_user_question"){let s=(Array.isArray(e.data.questions)?e.data.questions:[])[t.questionIndex],i=s&&typeof s==="object"?s:{},a=Array.isArray(i.options)?i.options:[];return M("box",{style:n,children:[M("text",{fg:H.text,attributes:X,children:String(i.question??"Seer has a question")},void 0,!1,void 0,this),a.map((l,c)=>{let A=l&&typeof l==="object"?l:{};return M("box",{style:{flexDirection:"column",backgroundColor:c===t.questionSelected?H.selected:void 0},children:[M("text",{fg:c===t.questionSelected?H.accent:H.text,children:`${c+1}. ${String(A.label??"Option")}`},void 0,!1,void 0,this),A.description?M("text",{fg:H.muted,children:` ${String(A.description)}`},void 0,!1,void 0,this):null]},c,!0,void 0,this)}),M("text",{fg:t.questionSelected===a.length?H.accent:H.muted,children:"o. Other \u2014 type your own answer"},void 0,!1,void 0,this),M("text",{fg:H.muted,children:"j/k select \xB7 enter confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return M("box",{style:n,children:[M("text",{fg:H.warning,attributes:X,children:"Reconnect your monitoring provider in Sentry"},void 0,!1,void 0,this),M("text",{fg:H.muted,children:"This run will resume after the connection is restored."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var LP=[" \u2584\u2584\u2584 "," \u2584\u2588\u2588\u2588\u2588\u2588\u2584 ","\u2588\u2588\u2588 \u25CF \u2588\u2588\u2588"," \u2580\u2588\u2588\u2588\u2588\u2588\u2580 "," \u2580\u2580\u2580\u2580\u2580 "];function IP({width:e}){let t=S();return M("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[LP.map((r,H)=>M("text",{fg:t.accent,children:` ${r}`},H,!1,void 0,this)),M("text",{fg:t.text,attributes:X,children:`
|
|
13
|
-
Ask Seer anything about your application.`},void 0,!1,void 0,this),
|
|
14
|
-
${ve(we("sentry.seer.compose"))} to type, ${ve(we("sentry.nav.open"))} to send, ${ve(we("sentry.seer.newChat"))} new, ${ve(we("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function rO(){return{mode:"conversation",inputFocused:!0,slashSelected:0}}function bP(e){switch(e.input_type){case"file_change_approval":return{mode:"fileApproval",pendingId:e.id,index:0,decisions:[]};case"ask_user_question":return{mode:"question",pendingId:e.id,index:0,answers:[],selected:0,inputFocused:!1};case"agent_write_approval":case"reauth_monitoring_provider":return{mode:"blockingInput",pendingId:e.id}}}function HO(e,t){switch(t.type){case"pendingChanged":if(t.pending)return bP(t.pending);return"pendingId"in e?{mode:"conversation",inputFocused:!1,slashSelected:0}:e;case"inputChanged":return e.mode==="conversation"&&e.slashSelected!==0?{...e,slashSelected:0}:e;case"focusInput":if(e.mode==="conversation")return{...e,inputFocused:!0};if(e.mode==="question"&&t.allowQuestion)return{...e,inputFocused:!0};return e;case"blurInput":if(e.mode==="conversation"||e.mode==="question")return{...e,inputFocused:!1};return e;case"moveSlashSelection":if(e.mode!=="conversation"||t.count===0)return e;return{...e,slashSelected:(e.slashSelected+t.direction+t.count)%t.count};case"openHistory":return e.mode==="conversation"?{mode:"history",selected:0}:e;case"closeHistory":return e.mode==="history"?{mode:"conversation",inputFocused:!0,slashSelected:0}:e;case"startNewChat":return{mode:"conversation",inputFocused:!0,slashSelected:0};case"moveHistorySelection":{if(e.mode!=="history")return e;let r=Math.max(0,Math.min(e.selected+t.direction,Math.max(0,t.count-1)));return r===e.selected?e:{...e,selected:r}}case"moveQuestionSelection":if(e.mode!=="question")return e;return{...e,selected:(e.selected+t.direction+t.optionCount+1)%(t.optionCount+1),inputFocused:!1};case"selectQuestionOption":return e.mode==="question"?{...e,selected:t.index,inputFocused:!1}:e;case"selectOtherAnswer":return e.mode==="question"?{...e,selected:t.optionCount,inputFocused:!0}:e;case"commitQuestionAnswer":if(e.mode!=="question")return e;return t.final?{...e,inputFocused:!1}:{...e,index:e.index+1,answers:[...e.answers,t.answer],selected:0,inputFocused:!1};case"recordFileDecision":if(e.mode!=="fileApproval"||t.final)return e;return{...e,index:e.index+1,decisions:[...e.decisions,t.approved]}}}import{jsxDEV as so}from"h:6___________________________";function TP(e){let t=e?.questions;if(!Array.isArray(t))return[];return t.flatMap((r)=>{if(!r||typeof r!=="object")return[];let H=r;if(typeof H.question!=="string"||!Array.isArray(H.options))return[];let n=H.options.flatMap((o)=>{if(!o||typeof o!=="object")return[];let s=o;return typeof s.label==="string"?[{label:s.label,description:String(s.description??"")}]:[]});return[{question:H.question,options:n}]})}function oO({client:e,org:t,state:r,width:H,height:n,focused:o,registerActions:s,navigateToScreen:i,notify:a}){let l=wP(Vn),c=r.searchQuery,A=er((u)=>r.dispatch({type:"setSearchQuery",payload:u}),[r.dispatch]);return so(Ci,{chat:l,client:e,org:t,width:H,height:n,focused:o,value:c,setValue:A,registerActions:s,navigateToScreen:i,notify:a},void 0,!1,void 0,this)}function Ci({chat:e,client:t,org:r,width:H,height:n,focused:o,value:s,setValue:i,registerActions:a,navigateToScreen:l,notify:c}){let A=S(),[u,d]=xP(HO,void 0,rO),m=e?.pendingInput?.id,g=e?.pendingInput?.input_type,p=u.mode==="history",O=u.mode==="history"?u.selected:0,y=u.mode==="conversation"?u.slashSelected:0,L=u.mode==="fileApproval"?u.index:0,f=u.mode==="fileApproval"?u.decisions:[],k=u.mode==="question"?u.index:0,I=u.mode==="question"?u.answers:[],h=u.mode==="question"?u.selected:0,b=nO(()=>e?Hg(e.capabilities,{hasRun:e.started,hasCodeChanges:e.codeChanges.length>0}):[],[e]),w=nO(()=>{if(!s.startsWith("/")||s.includes(" "))return[];let C=s.toLowerCase();return b.filter((v)=>v.title.startsWith(C))},[b,s]);Mi(()=>d({type:"inputChanged"}),[s]),Mi(()=>{d({type:"pendingChanged",pending:m&&g?{id:m,input_type:g}:null})},[m,g]);let T=er(()=>{if(!e)return;e.loadRuns(),d({type:"openHistory"})},[e]),q=er(()=>{if(!e||e.readOnly||e.thinking)return;let C=e.codeChanges.filter((v)=>v.status==="needs_push"||v.status==="error");for(let v of C)e.createPR(v.repoName);if(C.length>0)c({kind:"info",text:`${C.some((v)=>v.prNumber)?"Updating":"Creating"} ${C.length===1?"pull request":"pull requests"}\u2026`})},[e,c]),E=er((C)=>{if(!e)return;switch(i(""),C.id){case"new":e.reset(),d({type:"startNewChat"});return;case"history":T();return;case"create-pr":q();return;case"conversations":if(e.runId!==null)l("explore.conversations",{query:`gen_ai.conversation.id:${JSON.stringify(String(e.runId))}`});return;case"code-mode-off":case"code-mode-on":case"code-mode-only":{let v=C.id.replace("code-mode-","");e.setCodeMode(v),c({kind:"info",text:`Seer ${C.title.slice(1)}`});return}case"bash-mode-off":case"bash-mode-on":{let v=C.id.endsWith("-on");e.setBashMode(v),c({kind:"info",text:`Seer bash mode ${v?"on":"off"}`});return}case"thinking-off":case"thinking-on":e.setShowThinking(C.id.endsWith("-on"));return}},[e,l,c,T,q,i]),D=TP(e?.pendingInput?.data),x=D[k],P=Boolean(x&&h===x.options.length),N=er((C)=>{if(!e?.pendingInput||!x)return;let v=[...I,C],pe=k+1>=D.length;if(d({type:"commitQuestionAnswer",answer:C,final:pe}),pe){e.respond(e.pendingInput.id,{answers:v}),i("");return}i("")},[e,x,I,k,D.length,i]),F=er(()=>{if(!e)return!1;if(e.pendingInput?.input_type==="ask_user_question"&&P){let v=s.trim();if(v)N(v);return!0}let C=w[y]??b.find((v)=>v.title===s.trim().toLowerCase());if(C)return E(C),!0;if(e.thinking||e.readOnly||e.pendingInput||s.trim()==="")return!0;return e.send(s),i(""),!0},[e,b,N,E,P,i,y,s,w]),j=er((C)=>{if(e?.pendingInput?.input_type!=="file_change_approval")return;let v=Array.isArray(e.pendingInput.data.patches)?e.pendingInput.data.patches:[],pe=[...f,C],Me=L+1>=v.length;if(d({type:"recordFileDecision",approved:C,final:Me}),Me)e.respond(e.pendingInput.id,{decisions:pe})},[e,f,L]),U=er((C)=>{let v=e?.pendingInput;if(!v)return!1;if(v.input_type==="file_change_approval"){if(C.name.toLowerCase()==="y")j(!0);else if(C.name.toLowerCase()==="x")j(!1);else return!1;return!0}if(v.input_type==="agent_write_approval"){if(C.name.toLowerCase()==="x")return e.respond(v.id,{decision:"reject"}),!0;if(C.name.toLowerCase()!=="y")return!1;let Me=v.data.session_id,de=v.data.required_scopes,re=Array.isArray(de)?de.filter((ue)=>typeof ue==="string"):[];if(typeof Me==="string")e.approveWrite(v.id,Me,re);return!0}if(v.input_type!=="ask_user_question"||!x)return!1;if(Q("sentry.nav.up",C)||C.name.toLowerCase()==="up")return d({type:"moveQuestionSelection",direction:-1,optionCount:x.options.length}),!0;if(Q("sentry.nav.down",C)||C.name.toLowerCase()==="down")return d({type:"moveQuestionSelection",direction:1,optionCount:x.options.length}),!0;if(C.name.toLowerCase()==="o")return d({type:"selectOtherAnswer",optionCount:x.options.length}),!0;let pe=Number(C.name)-1;if(pe>=0&&pe<x.options.length)return d({type:"selectQuestionOption",index:pe}),!0;if(Q("sentry.nav.open",C)&&!P){let Me=x.options[h];if(Me)N(Me.label);return!0}return!1},[e,N,x,P,h,j]),z=er((C)=>{if(w.length===0)return!1;let v=C.name.toLowerCase();if(v==="up")return d({type:"moveSlashSelection",direction:-1,count:w.length}),!0;if(v==="down")return d({type:"moveSlashSelection",direction:1,count:w.length}),!0;return!1},[w.length]),oe=er((C)=>{if(!e)return!1;if(e.pendingInput&&U(C))return!0;if(p){let v=e.runs.state==="ready"?e.runs.value.length:0;if(Q("sentry.nav.down",C))return d({type:"moveHistorySelection",direction:1,count:v}),!0;if(Q("sentry.nav.up",C))return d({type:"moveHistorySelection",direction:-1,count:v}),!0;if(Q("sentry.nav.open",C)&&e.runs.state==="ready"){let pe=e.runs.value[O];if(pe)e.switchRun(pe.id),d({type:"closeHistory"});return!0}return!1}if(Q("sentry.seer.compose",C)||Q("sentry.nav.open",C))return d({type:"focusInput",allowQuestion:P}),!0;if(Q("sentry.seer.newChat",C))return e.reset(),i(""),d({type:"startNewChat"}),!0;if(Q("sentry.seer.history",C))return T(),!0;if(Q("sentry.seer.pushChanges",C)&&e.codeChanges.length>0)return q(),!0;if(Q("sentry.seer.interrupt",C)){if(e.thinking)e.interrupt();return!0}if(e.blocks.length===0&&!C.ctrl&&!C.meta){let v=Un[Number(C.name)-1];if(v!==void 0)return e.send(v),!0}return!1},[e,U,O,T,q,i,p]),ie=er(()=>{if(!p)return!1;return d({type:"closeHistory"}),!0},[p]),G=u.mode==="conversation"||u.mode==="question"?u.inputFocused:!1,Y=o&&G&&!p&&!e?.readOnly&&(!e?.pendingInput||e.pendingInput.input_type==="ask_user_question"&&P);if(Mi(()=>(a({inputFocused:()=>Y,submitInput:F,blurInput:()=>d({type:"blurInput"}),handleInputKey:z,handleKey:oe,back:ie}),()=>a(null)),[ie,Y,z,oe,a,F]),!e)return so("text",{fg:A.muted,children:"Seer is unavailable."},void 0,!1,void 0,this);if(!e.capabilities.available)return so("text",{fg:A.muted,children:"Seer Agent is not enabled for this organization."},void 0,!1,void 0,this);let ee=P?"Type your own answer\u2026":e.readOnly?"This conversation is owned by another user and is read-only":void 0;return so(tO,{chat:e,client:t,org:r,width:H,height:n,focused:o,value:s,onInput:i,inputFocused:Y,onInputFocus:()=>d({type:"focusInput",allowQuestion:P}),onInputBlur:()=>d({type:"blurInput"}),slashCommands:w,slashSelected:y,showHistory:p,historySelected:O,pendingState:{fileApprovalIndex:L,questionIndex:k,questionSelected:h},placeholderOverride:ee},void 0,!1,void 0,this)}import{jsxDEV as iO}from"h:6___________________________";function NP(e){return`Please try to root cause and propose a fix for issue ${e.shortId}: ${Kr(e)} (${e.permalink})`}function aO({issue:e,chat:t,client:r,org:H,navigateToScreen:n,notify:o,onClose:s}){let i=QP(),[a,l]=MP(""),c=sO(null),A=sO(!1),u=Math.min(100,Math.max(40,i.width-8)),d=Math.min(40,Math.max(18,i.height-6)),m=nH({width:u,height:d,terminalWidth:i.width,terminalHeight:i.height}),g=PP((p)=>{c.current=p},[]);return qP(()=>{if(A.current)return;A.current=!0,t.send(NP(e))},[t.send,e]),CP((p)=>{let O=c.current;if(O?.inputFocused?.()){if(Q("sentry.nav.back",p)){O.blurInput?.(),je(p);return}if(Q("sentry.nav.open",p)){O.submitInput?.(),je(p);return}if(O.handleInputKey?.(p))je(p);return}if(Q("sentry.nav.back",p)){if(!O?.back?.())s();je(p);return}if(O?.handleKey?.(p)){je(p);return}je(p)}),iO(ar,{title:` Autofix \xB7 ${e.shortId} `,width:u,height:d,onClose:s,children:iO(Ci,{chat:t,client:r,org:H,width:Math.max(10,m.width-4),height:Math.max(8,m.height-3),focused:!0,value:a,setValue:l,registerActions:g,navigateToScreen:(p,O)=>{s(),n(p,O)},notify:o},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useState as cO}from"h:0__";import{useKeyboard as jP}from"h:4___________";import{jsxDEV as EH}from"h:6___________________________";var DP=76,RP=8;function lO({onSubmit:e,onClose:t}){let r=S(),[H,n]=cO(""),[o,s]=cO();jP((a)=>{Rt([()=>{if(Q("sentry.nav.back",a))return t(),"mine";if(Q("sentry.nav.open",a))return s(e(H)),"mine";return"notMine"}],a,je)});let i=o?.kind==="unsupported"?"Not implemented":"Invalid URL";return EH(ar,{title:" Open Sentry URL ",width:DP,height:RP,onClose:t,children:[EH("text",{fg:r.muted,children:"Paste a sentry.io URL"},void 0,!1,void 0,this),EH("input",{value:H,placeholder:"https://acme.sentry.io/issues/\u2026",focused:!0,onInput:(a)=>{n(a),s(void 0)},style:{marginTop:1,textColor:r.text,backgroundColor:r.panel,focusedTextColor:r.text,focusedBackgroundColor:r.panel,placeholderColor:r.subText}},void 0,!1,void 0,this),o?EH("text",{fg:o.kind==="invalid"?r.danger:r.warning,children:`${i}: ${o.message}`},void 0,!1,void 0,this):EH("text",{fg:r.subText,children:"enter open \xB7 esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var AO="./assets/compass_active-mcnd0q22.png";var uO="./assets/compass_inactive-ddbmyj5v.png";var dO="./assets/compass_active_light-v08f7cvf.png";var pO="./assets/compass_inactive_light-wwd8x0j5.png";var mO="./assets/dashboard_active-3k2ysmyr.png";var gO="./assets/dashboard_inactive-a3pdwyw3.png";var OO="./assets/dashboard_active_light-j060573s.png";var yO="./assets/dashboard_inactive_light-47zscdjm.png";var fO="./assets/issues_active-k2k0e07f.png";var SO="./assets/issues_inactive-5jhnttk9.png";var _O="./assets/issues_active_light-ppxjynwp.png";var kO="./assets/issues_inactive_light-efzr1ggk.png";var hO="./assets/monitors_active-ypv5rjbw.png";var LO="./assets/monitors_inactive-vncjn4xh.png";var IO="./assets/monitors_active_light-7en9bsxt.png";var bO="./assets/monitors_inactive_light-3p8t6ysq.png";var wO="./assets/seer_active-s87c2fsc.png";var xO="./assets/seer_inactive-vnbwgb8m.png";var TO="./assets/seer_active_light-qr5zb8g1.png";var PO="./assets/seer_inactive_light-g6ryga4y.png";var qO="./assets/sentry-a94jrdn1.png";var MO="./assets/sentry_light-xph1a1zb.png";var CO={compass_active:AO,compass_inactive:uO,dashboard_active:mO,dashboard_inactive:gO,issues_active:fO,issues_inactive:SO,monitors_active:hO,monitors_inactive:LO,seer_active:wO,seer_inactive:xO,sentry:qO},i5={dark:CO,light:{compass_active:dO,compass_inactive:pO,dashboard_active:OO,dashboard_inactive:yO,issues_active:_O,issues_inactive:kO,monitors_active:IO,monitors_inactive:bO,seer_active:TO,seer_inactive:PO,sentry:MO}};function Qi(e,t="dark"){return Nn(i5[t][e])}var jF=Object.keys(CO);import{jsxDEV as DO}from"h:6___________________________";var a5={issues:"issues",explore:"compass",dashboards:"dashboard",seer:"seer",monitors:"monitors"},QO=1,KH=2;function NO({groupId:e,active:t}){let r=S(),H=t?"active":"inactive";return DO("image",{source:Qi(`${a5[e]}_${H}`,r.mode),fit:"fit",style:{width:KH,height:QO}},void 0,!1,void 0,this)}function jO(){let e=S();return DO("image",{source:Qi("sentry",e.mode),fit:"fit",style:{width:KH,height:QO}},void 0,!1,void 0,this)}import{jsxDEV as ht}from"h:6___________________________";var RO="sentry.app.switchOrg",io=2,ao=1,c5=1,l5=1,vO=1,Ni=4,GO=Math.max(...Ut.map((e)=>ce(e.label))),EO=(()=>{let e=ve(we(RO));return e?1+ce(e):0})(),A5=KH+vO+GO,u5=io+1+GO+EO,ji=Ni+Math.max(A5,u5),Di=Ni+KH,KO=1,d5=2,XO=1,BO=1+KO+ao;function WO({active:e,expanded:t,focused:r,hotkeys:H,avatarUrl:n,orgSlug:o,onSelect:s,onExpand:i,onOrgPress:a,groups:l=Ut}){let c=S(),A=t?ji:Di,u=A-Ni,{supportsHighRes:d}=Zt(),m=t?u-(d&&n?io+1:0)-EO:0;return ht("box",{style:{width:A,flexShrink:0,flexDirection:"column",border:!0,borderColor:r?c.borderFocused:c.border,paddingLeft:1,paddingRight:1},onMouseDown:t?void 0:i,children:[o||d&&n?ht("box",{style:{height:d?ao:1,flexDirection:"column",alignItems:t?"stretch":"center",marginTop:KO,marginBottom:d5},onMouseDown:t?a:void 0,children:t?ht("box",{style:{flexDirection:"row",alignItems:"center",gap:1},children:[d&&n?ht("image",{source:n,fit:"fit",style:{width:io,height:ao}},void 0,!1,void 0,this):null,o?ht("text",{fg:c.text,attributes:1,children:R(o,m)},void 0,!1,void 0,this):null,ht("box",{style:{flexDirection:"row"},children:ht(Pt,{command:RO},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):d&&n?ht("image",{source:n,fit:"fit",style:{width:io,height:ao}},void 0,!1,void 0,this):o?ht("text",{fg:c.text,attributes:1,children:Array.from(o)[0]?.toUpperCase()},void 0,!1,void 0,this):null},void 0,!1,void 0,this):null,ht("box",{style:{flexDirection:"column",gap:d?l5:0},children:l.map((g)=>{let p=g.id===e;return ht("box",{style:{flexDirection:"row",alignItems:"center",gap:d?vO:0,height:c5},onMouseDown:t?()=>s?.(g.id):void 0,children:[d?ht(NO,{groupId:g.id,active:p},void 0,!1,void 0,this):null,t?ht(iH,{label:g.label,hotkey:H?.get(g.id),fg:p?c.accent:c.muted,bold:p},void 0,!1,void 0,this):d?null:ht("text",{fg:p?c.accent:c.muted,attributes:p?1:0,children:g.glyph},void 0,!1,void 0,this)]},g.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as p5,useEffect as m5,useMemo as g5,useState as Ri}from"h:0__";import{jsxDEV as O5}from"h:6___________________________";function FO({client:e,currentOrg:t,anchorLeft:r,anchorTop:H,onSelect:n,onClose:o}){let[s,i]=Ri([]),[a,l]=Ri(null),[c,A]=Ri(e!==null);m5(()=>{if(!e)return;let m=new AbortController;return A(!0),Bc(e,m.signal).then((g)=>{if(m.signal.aborted)return;i(g),l(null)}).catch((g)=>{if(m.signal.aborted)return;l(g instanceof Error?g.message:String(g))}).finally(()=>{if(!m.signal.aborted)A(!1)}),()=>m.abort()},[e]);let u=g5(()=>s.map((m)=>({label:m.slug,value:m.slug})),[s]),d=p5((m)=>{let g=m[0];if(g)n(g)},[n]);return O5(lt,{title:"Organization",items:u,selected:t?[t]:[],anchorLeft:r,anchorTop:H,showAll:!1,filterable:!0,placeholder:c?"Loading organizations\u2026":a??"No organizations",onSelect:d,onClose:o},void 0,!1,void 0,this)}var wr={sections:[]};function vi(e,t=wr){return[...yt(e).sections.map((H)=>({title:H.title,items:H.items.map((n)=>({label:n}))})),...t.sections]}function Gi(e,t=wr){return vi(e,t).flatMap((r)=>r.items)}function UO(e,t){return t.target??{group:e,item:t.label}}import{jsxDEV as Wr}from"h:6___________________________";var co=22,YO=co-4;function $O({group:e,activeItem:t,focused:r,extras:H=wr,hotkeys:n,onSelect:o}){let s=S(),i=yt(e),a=vi(e,H);return Wr("box",{style:{width:co,flexShrink:0,flexDirection:"column",overflow:"hidden",border:!0,borderColor:r?s.borderFocused:s.border,paddingTop:1,paddingLeft:1,paddingRight:1},children:[Wr("text",{fg:s.text,attributes:1,children:i.label},void 0,!1,void 0,this),a.map((l,c)=>Wr("box",{style:{flexDirection:"column",flexShrink:0},children:[Wr("text",{fg:s.border,children:"\u2500".repeat(YO)},void 0,!1,void 0,this),l.title?Wr("text",{fg:s.muted,children:l.title},void 0,!1,void 0,this):null,l.items.map((A,u)=>{let d=A.label===t;return Wr("box",{style:{flexDirection:"row",height:1,flexShrink:0},onMouseDown:()=>o?.(A),children:Wr(iH,{label:R(A.label,YO),hotkey:n?.get(A.label),fg:d?s.accent:s.muted,bold:d},void 0,!1,void 0,this)},`${c}:${u}:${A.label}`,!1,void 0,this)})]},c,!0,void 0,this))]},void 0,!0,void 0,this)}import{jsxDEV as pt,Fragment as k5}from"h:6___________________________";function y5(e,t){return e==="error"?t.danger:t.highlight}function f5({commandId:e,label:t}){let r=S();if(!we(e))return null;return pt(k5,{children:[pt(Pt,{command:e},void 0,!1,void 0,this),pt("text",{children:" "},void 0,!1,void 0,this),t?pt("text",{fg:r.muted,children:t},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function S5({onPress:e}){let t=S();return pt("box",{style:{flexDirection:"row",flexShrink:0},onMouseDown:e,children:[pt("text",{fg:t.highlight,attributes:X,children:"Update"},void 0,!1,void 0,this),pt("text",{fg:t.subText,children:" \xB7 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function VO({notice:e,hints:t,since:r,onUpdate:H}){let n=S(),o=e.kind==="loading",s=_i(o),i=e.text;if(o){let a=r===void 0?void 0:Date.now()-r,l=a!==void 0&&a>=2000?` ${(a/1000).toFixed(1)}s`:"";i=`${s} ${e.text}${l}`}return pt("box",{style:{height:1,flexShrink:0,flexDirection:"row",backgroundColor:n.panel,paddingLeft:1,paddingRight:1},children:[H?pt(S5,{onPress:H},void 0,!1,void 0,this):null,pt("text",{fg:y5(e.kind,n),children:i},void 0,!1,void 0,this),pt("box",{style:{flexGrow:1}},void 0,!1,void 0,this),t.map(({command:a,label:l},c)=>{if(!we(a))return null;return pt("box",{style:{flexDirection:"row"},children:[c>0?pt("text",{fg:n.subText,children:" \xB7 "},void 0,!1,void 0,this):null,pt(f5,{commandId:a,label:l},void 0,!1,void 0,this)]},a,!0,void 0,this)}),pt(_5,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function _5(){let{supportsHighRes:e}=Zt();if(!e)return null;return pt("box",{style:{marginLeft:1},children:pt(jO,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useKeyboard as h5}from"h:4___________";import{jsxDEV as lo}from"h:6___________________________";var L5=84,I5=12;function ZO({url:e,onClose:t}){let r=S();return h5((H)=>{Rt([()=>{if(!Q("sentry.nav.back",H))return"notMine";return t(),"mine"}],H,je)}),lo(ar,{title:" Open in Sentry ",width:L5,height:I5,onClose:t,children:[lo("text",{fg:r.warning,children:"Could not launch a browser. Open this production URL:"},void 0,!1,void 0,this),lo("text",{fg:r.text,style:{wrapMode:"char"},children:e},void 0,!1,void 0,this),lo("text",{fg:r.subText,children:"esc close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as b5,useMemo as w5,useRef as x5,useState as T5}from"h:0__";function zO(e,t){let[r,H]=T5(t??e[0]),n=x5(r);n.current=r;let o=b5((s)=>{let a=(e.indexOf(n.current)+s+e.length)%e.length;H(e[a])},[e]);return w5(()=>({focused:r,focusedRef:n,isFocused:(s)=>r===s,focus:H,next:()=>o(1),prev:()=>o(-1)}),[r,o])}import{useCallback as or,useMemo as An,useReducer as g9,useState as O9}from"h:0__";var JO=/[a-z0-9]/i;function P5(e){let t=[...e],r=[],H=[];return t.forEach((n,o)=>{if(!JO.test(n))return;let s=t[o-1];if(s===void 0||!JO.test(s))r.push(o);else H.push(o)}),[...r,...H]}function ey(e,t=[]){let r=new Set;for(let H of t)r.add(H.toLowerCase());return e.map((H)=>{let n=[...H];for(let s of P5(H)){let i=n[s].toLowerCase();if(r.has(i))continue;return r.add(i),{key:i,index:s}}let o=[..."abcdefghijklmnopqrstuvwxyz0123456789"].find((s)=>!r.has(s));if(!o)return;return r.add(o),{key:o,index:-1}})}var q5=[we("sentry.nav.goto"),we("sentry.app.switchOrg")].filter(Boolean);function ty(e,t=Ut){let r=yt(e).sections.flatMap((i)=>i.items),H=ey([...t.map((i)=>i.label),...r],q5),n=new Map,o=new Map,s=new Map;return t.forEach((i,a)=>{let l=H[a];if(!l)return;n.set(i.id,l),s.set(l.key,{kind:"group",group:i.id})}),r.forEach((i,a)=>{let l=H[t.length+a];if(!l)return;o.set(i,l),s.set(l.key,{kind:"item",item:i})}),{groups:n,items:o,byKey:s}}var ry=" \u203A ",M5="\u2026";function Hy(e,t){let r=e.filter((n)=>Boolean(n&&n.trim()));if(r.length===0||t<=0)return"";let H=r.join(ry);if(ce(H)<=t)return H;for(let n=1;n<r.length;n++){let o=[M5,...r.slice(n)].join(ry);if(ce(o)<=t)return o}return R(r[r.length-1],t)}import{useCallback as Fr,useMemo as Ei,useReducer as C5,useRef as ny}from"h:0__";function tr(e){if(e.entriesSource!==null&&e.entriesSource!==e.source)throw Error(`Screen "${e.source}" cannot read rows written by "${e.entriesSource}" from shared state "${e.key}"`);return e.entries}var oy="__unregistered__";function XH(e,t=[]){let r=El(e),H=r.query??"";return{entries:[],entriesSource:null,selected:0,status:{loading:!1},openDropdown:null,selectedProjects:[...t],selectedEnvs:[],statsPeriod:r.statsPeriod??xt,sort:r.sort??Sn,detailOpen:!1,searchQuery:H,committedQuery:H,searchFocused:!1,queryBeforeEdit:H}}function Q5(e,t){return{...XH(e,t.selectedProjects),entriesSource:t.source,selected:t.selected,selectedProjects:[...t.selectedProjects],selectedEnvs:[...t.selectedEnvs],statsPeriod:t.statsPeriod,sort:t.sort,detailOpen:t.detailOpen,searchQuery:t.query,committedQuery:t.query,queryBeforeEdit:t.query}}function N5(e,t,r,H){let n=new Map;for(let[o,s]of Object.entries(H??{}))n.set(o,Q5(o,s));if(r&&!n.has(e))n.set(e,Ao(XH(e,t),{type:"seed",payload:r}));return n}function j5(e,t){return e.loading===t.loading&&e.since===t.since&&e.error===t.error&&e.noun===t.noun}function Ao(e,t,r){switch(t.type){case"setEntries":{if(!r)throw Error("setEntries requires a screen source");let H=e.entriesSource===r?e.entries:[],n=typeof t.payload==="function"?t.payload(H):t.payload;if(n===e.entries&&e.entriesSource===r)return e;let o=Math.min(e.entriesSource===r?e.selected:0,Math.max(0,n.length-1));return{...e,entries:n,entriesSource:r,selected:o}}case"setSelected":{let H=r===void 0||e.entriesSource===r,n=H?e.selected:0,o=typeof t.payload==="function"?t.payload(n):t.payload,s=H?e.entries.length:0,i=Math.max(0,Math.min(o,Math.max(0,s-1)));return i===e.selected?e:{...e,selected:i}}case"setStatus":return j5(e.status,t.payload)?e:{...e,status:t.payload};case"setOpenDropdown":return e.openDropdown===t.payload?e:{...e,openDropdown:t.payload};case"setSelectedProjects":return{...e,selectedProjects:t.payload};case"setSelectedEnvs":return{...e,selectedEnvs:t.payload};case"setStatsPeriod":return e.statsPeriod===t.payload?e:{...e,statsPeriod:t.payload};case"setSort":return e.sort===t.payload?e:{...e,sort:t.payload};case"setDetailOpen":{let H=typeof t.payload==="function"?t.payload(e.detailOpen):t.payload;return H===e.detailOpen?e:{...e,detailOpen:H}}case"setSearchQuery":return e.searchQuery===t.payload?e:{...e,searchQuery:t.payload};case"focusSearch":return{...e,queryBeforeEdit:e.committedQuery,searchFocused:!0};case"submitSearch":return{...e,committedQuery:e.searchQuery,searchFocused:!1};case"cancelSearch":case"handleSearchBlur":return{...e,searchQuery:e.queryBeforeEdit,searchFocused:!1};case"resetOrgScoped":return{...e,entries:[],entriesSource:null,selected:0,status:{loading:!1},openDropdown:null,selectedProjects:[...t.payload.projects],selectedEnvs:[],detailOpen:!1,searchFocused:!1};case"seed":{let H=t.payload.query??e.searchQuery;return{...e,searchQuery:H,committedQuery:H,queryBeforeEdit:H,sort:t.payload.sort??e.sort,statsPeriod:t.payload.statsPeriod??e.statsPeriod,selectedProjects:t.payload.selectedProjects??e.selectedProjects,selectedEnvs:t.payload.selectedEnvs??e.selectedEnvs}}}}function D5(e,t){if(t.type==="resetOrgScoped"){let o=new Map;for(let[s,i]of e)o.set(s,Ao(i,{type:"resetOrgScoped",payload:{projects:t.projects}}));return o}let r=new Map(e);if(t.type==="seed")return r.set(t.key,Ao(XH(t.key),{type:"seed",payload:t.values})),r;let H=e.get(t.key)??t.fallback,n=Ao(H,t.action,t.source);if(n===H&&e.has(t.key))return e;return r.set(t.key,n),r}function sy(e,t,r=[],H,n){let o=e??oy,[s,i]=C5(D5,void 0,()=>N5(o,r,H,n)),a=ny(r);a.current=r;let l=ny(!1),c=Fr((f)=>{i({type:"dispatch",key:o,source:t,action:f,fallback:XH(o,a.current)})},[o,t]),A=Fr(()=>c({type:"focusSearch"}),[c]),u=Fr(()=>{l.current=!0,c({type:"submitSearch"})},[c]),d=Fr(()=>{l.current=!0,c({type:"cancelSearch"})},[c]),m=Fr(()=>{if(l.current){l.current=!1;return}c({type:"handleSearchBlur"})},[c]),g=Ei(()=>s.get(o)??XH(o,r),[s,o,r]),p=Ei(()=>({...g,entries:g.entriesSource===null||g.entriesSource===t?g.entries:[],selected:g.entriesSource===null||g.entriesSource===t?g.selected:0,key:o,source:t,dispatch:c,focusSearch:A,submitSearch:u,cancelSearch:d,handleSearchBlur:m}),[g,o,t,c,A,u,d,m]),O=Fr((f=[])=>{i({type:"resetOrgScoped",projects:[...f]})},[]),y=Fr((f,k)=>{i({type:"seed",key:f,values:k})},[]),L=Ei(()=>{let f={};for(let[k,I]of s){if(k===oy)continue;f[k]={source:I.entriesSource,selected:I.selected,query:I.committedQuery,sort:I.sort,statsPeriod:I.statsPeriod,selectedProjects:[...I.selectedProjects],selectedEnvs:[...I.selectedEnvs],detailOpen:I.detailOpen}}return f},[s]);return{active:p,resetOrgScoped:O,seed:y,snapshots:L}}import{useMemo as Cq}from"h:0__";var Ki=20;var R5=[{value:"mostStarred",label:"Most Starred"},{value:"recentlyViewed",label:"Recently Viewed"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-dateAdded",label:"Created (Newest)"},{value:"dateAdded",label:"Created (Oldest)"}],v5=[{value:"myqueries",label:"My Queries"},{value:"-dateUpdated",label:"Recently Edited"},{value:"name",label:"Name (A-Z)"},{value:"-dateCreated",label:"Created (Newest)"},{value:"dateCreated",label:"Created (Oldest)"},{value:"dateUpdated",label:"Most Outdated"},{value:"mostPopular",label:"Most Popular"},{value:"recentlyViewed",label:"Recently Viewed"}];function Xi(e){return e==="explore"?R5:v5}function iy(e,t){if(Xi(t).some((H)=>H.value===e))return e;return t==="explore"?"mostStarred":"myqueries"}var ay={logs:"Logs",spans:"Traces",segment_spans:"Traces",metrics:"Metrics",replays:"Replays",ai_conversations:"Conversations"},G5={logs:"logs",spans:"spans",segment_spans:"spans",metrics:"tracemetrics",replays:"replays",ai_conversations:"spans"};async function E5(e,{org:t,starred:r,search:H,sort:n="recentlyViewed",limit:o=50,cursor:s,signal:i}){let a=await e.request(`/organizations/${t}/explore/saved/`,{query:{sortBy:["starred",n],per_page:o,starred:r?1:void 0,query:H||void 0,cursor:s},signal:i});return{...a,data:py(a.data).map(cy).filter(dy)}}function cy(e,t){let r=X5(e.dataset),H=K5(e.query);return{id:mt(e.id)??String(t),source:"explore",name:mt(e.name)??"Untitled query",datasetLabel:ay[r],dataset:G5[r],query:mt(H?.query)??"",fields:uo(H?.fields),sort:mt(H?.orderby),projects:my(e.projects),environment:uo(e.environment),statsPeriod:mt(e.range),lastVisited:mt(e.lastVisited),dateUpdated:mt(e.dateUpdated),starred:e.starred===!0,createdBy:e.isPrebuilt===!0?void 0:gy(e.createdBy),isPrebuilt:e.isPrebuilt===!0}}function K5(e){if(!Array.isArray(e))return;let t=e[0];return typeof t==="object"&&t!==null?t:void 0}function X5(e){let t=String(e??"spans");return t in ay?t:"spans"}var B5={"error-events":"Errors","transaction-like":"Transactions",discover:"Discover"},W5={"error-events":"errors","transaction-like":"transactions",discover:"discover"};async function F5(e,{org:t,search:r,sort:H="myqueries",limit:n=50,cursor:o,signal:s}){let i=r?.trim(),a=await e.request(`/organizations/${t}/discover/saved/`,{query:{query:i?`version:2 name:"${i}"`:"version:2",sortBy:H,per_page:n,cursor:o},signal:s});return{...a,data:py(a.data).map(ly).filter(dy)}}function ly(e,t){let r=mt(e.queryDataset)??"discover";return{id:mt(e.id)??String(t),source:"discover",name:mt(e.name)??"Untitled query",datasetLabel:B5[r]??"Discover",dataset:W5[r]??"discover",query:mt(e.query)??"",fields:uo(e.fields),sort:Array.isArray(e.orderby)?mt(e.orderby[0]):mt(e.orderby),projects:my(e.projects),environment:uo(e.environment),statsPeriod:mt(e.range),dateUpdated:mt(e.dateUpdated),starred:!1,createdBy:gy(e.createdBy),isPrebuilt:!1}}async function Ay(e,{org:t,source:r,queryId:H,signal:n}){if(r==="explore"){let s=await e.request(`/organizations/${t}/explore/saved/${H}/`,{signal:n});return cy(s.data,0)}let o=await e.request(`/organizations/${t}/discover/saved/${H}/`,{signal:n});return ly(o.data,0)}function uy(e,t,r){return t==="explore"?E5(e,r):F5(e,r)}function dy(e){return e.fields.length>0}function py(e){return Array.isArray(e)?e.filter((t)=>typeof t==="object"&&t!==null):[]}function mt(e){if(e===void 0||e===null||e==="")return;return String(e)}function uo(e){return Array.isArray(e)?e.map((t)=>String(t)).filter(Boolean):[]}function my(e){if(!Array.isArray(e))return[];return e.map((t)=>Number(t)).filter((t)=>Number.isFinite(t))}function gy(e){if(!e)return;return mt(e.name)??mt(e.email)}import{useCallback as z5,useEffect as J5,useMemo as eq,useState as tq}from"h:0__";var Oy=[{value:"mydashboards",label:"My Dashboards"},{value:"title",label:"Name (A-Z)"},{value:"-title",label:"Name (Z-A)"},{value:"-dateCreated",label:"Newest Created"},{value:"dateCreated",label:"Oldest Created"},{value:"mostPopular",label:"Most Popular"},{value:"recentlyViewed",label:"Recently Viewed"}];function Bi(e){return e?Oy.filter((t)=>t.value!=="mydashboards"):Oy}function yy(e,t,r){return Bi(r).some((H)=>H.value===e)?e:t}var U5=50,Y5=20;async function fy(e,{org:t,filter:r,query:H,sort:n,limit:o=U5,cursor:s,signal:i}){let a=await Mc({...e.generatedOptions(i),path:{organization_id_or_slug:t},query:{filter:r?[r]:void 0,query:H||void 0,sort:n,pin:"favorites",per_page:o}},s);return e.generatedPage(a)}async function Sy(e,{org:t,limit:r=Y5,signal:H}){let n=await e.request(`/organizations/${t}/dashboards/starred/`,{query:{per_page:r},signal:H});return Array.isArray(n.data)?n.data:[]}async function _y(e,{org:t,id:r,signal:H}){let o=(await e.request(`/organizations/${t}/dashboards/${r}/`,{signal:H})).data;return{...o,widgets:Array.isArray(o?.widgets)?o.widgets:[]}}var ky={source:{repository:"https://github.com/getsentry/sentry",revision:"c8c670f927d1bae633f44289e43a49db8cfc294f",path:"static/app/views/dashboards/utils/prebuiltConfigs.tsx"},dashboards:{"1":{title:"Frontend Session Health",description:"Monitor browser session health by user and session.",widgets:[{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"issues",title:"Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"",columns:["issue","project","title"],aggregates:[],orderby:"",fields:["issue","project","title"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"unhealthy-sessions",title:"Unhealthy Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["unhealthy_rate(session)"],orderby:"",fields:["unhealthy_rate(session)"]}],interval:"5m",layout:{x:0,y:2,w:3,h:3,minH:2}},{id:"user-health",title:"User Health",displayType:"area",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["abnormal_rate(user)","crash_rate(user)","errored_rate(user)","unhandled_rate(user)"],orderby:"",fields:["abnormal_rate(user)","crash_rate(user)","errored_rate(user)","unhandled_rate(user)"]}],interval:"5m",layout:{x:3,y:2,w:3,h:3,minH:2}},{id:"session-health",title:"Session Health",displayType:"area",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["abnormal_rate(session)","crash_rate(session)","errored_rate(session)","unhandled_rate(session)"],orderby:"",fields:["abnormal_rate(session)","crash_rate(session)","errored_rate(session)","unhandled_rate(session)"]}],interval:"5m",layout:{x:0,y:5,w:2,h:3,minH:2}},{id:"session-counts",title:"Session Counts",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["session.status"],aggregates:["sum(session)"],orderby:"",fields:["session.status","sum(session)"]}],interval:"5m",layout:{x:2,y:5,w:2,h:3,minH:2}},{id:"user-counts",title:"User Counts",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["session.status"],aggregates:["count_unique(user)"],orderby:"",fields:["session.status","count_unique(user)"]}],interval:"5m",layout:{x:4,y:5,w:2,h:3,minH:2}}]},"2":{title:"Queries",description:"Track database query throughput and duration, with per-query drill-downs.",widgets:[{id:"throughput",title:"Queries Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{y:0,w:3,h:2,x:0,minH:2}},{id:"duration",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{y:0,w:3,h:2,x:3,minH:2}},{id:"queries-table",title:"Queries List",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["epm()","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","epm()","avg(span.duration)","sum(span.duration)"],fieldAliases:["Query Description","Queries Per Minute","Avg Duration","Time Spent"]}],interval:"5m",layout:{y:2,w:6,h:6,x:0,minH:2}}]},"3":{title:"Query Details",description:"",widgets:[{id:"metrics-throughput",title:"Queries Per Minute",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"",fields:["epm()"]}],interval:"1h",layout:{y:0,x:2,h:1,w:2,minH:1}},{id:"metrics-duration",title:"Average Duration",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"",fields:["avg(span.duration)"]}],interval:"1h",layout:{y:0,x:0,h:1,w:2,minH:1}},{id:"metrics-time-spent",title:"Time Spent",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["sum(span.duration)"],orderby:"",fields:["sum(span.duration)"]}],interval:"1h",layout:{y:0,x:4,h:1,w:2,minH:1}},{id:"example-query",title:"Example Query",description:"",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["id","span.op","span.group","span.description","span.category"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category"],fieldAliases:[]}],interval:"1h",limit:1,layout:{y:1,x:0,h:2,w:6,minH:2}},{id:"transactions-with-query",title:"Transactions with Query",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["transaction"],aggregates:["epm()","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","epm()","sum(span.duration)"],fieldAliases:["Found In","Queries Per Minute","Time Spent"]}],interval:"1h",layout:{y:5,x:0,h:2,w:6,minH:2}},{id:"metrics-throughput-line",title:"Queries Per Minute",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"],fieldAliases:[]}],interval:"1h",layout:{y:3,x:0,h:2,w:3,minH:2}},{id:"metrics-duration-line",title:"Average Duration",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{y:3,x:3,h:2,w:3,minH:2}}]},"4":{title:"Outbound API Requests",description:"Track HTTP client request performance.",widgets:[{id:"throughput-chart",title:"Requests Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"duration-chart",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"response-codes-chart",title:"Response Codes (3XX, 4XX, 5XX)",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"domain-table",title:"Domains",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["span.domain","project"],aggregates:["epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["span.domain","project","epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],fieldAliases:["Domain","Project","Requests Per Minute","3XXs","4XXs","5XXs","Avg Duration","Time Spent"]}],interval:"5m",layout:{x:0,y:2,minH:2,h:4,w:6}}]},"5":{title:"Domain Details",description:"",widgets:[{id:"domain-widget",title:"Domain",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["id","span.op","span.group","span.description","span.category"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,minH:1,h:1,w:6}},{id:"throughput-big-number",title:"Requests Per Minute",displayType:"big_number",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:1,w:1,h:1,minH:1}},{id:"duration-big-number",title:"Average Duration",displayType:"big_number",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:1,y:1,w:1,h:1,minH:1}},{id:"3xx-percentage-big-number",title:"3XX",displayType:"big_number",widgetType:"spans",queries:[{name:"3XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)"]}],interval:"5m",layout:{x:2,y:1,w:1,h:1,minH:1}},{id:"4xx-percentage-big-number",title:"4XX",displayType:"big_number",widgetType:"spans",queries:[{name:"4XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,400,499) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,400,499) / count(span.duration)",fields:["equation|count_if(span.status_code,between,400,499) / count(span.duration)"]}],interval:"5m",layout:{x:3,y:1,w:1,h:1,minH:1}},{id:"5xx-percentage-big-number",title:"5XX",displayType:"big_number",widgetType:"spans",queries:[{name:"5XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,500,599) / count(span.duration)",fields:["equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:1,w:1,h:1,minH:1}},{id:"time-spent-big-number",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"Time Spent",conditions:"span.op:http.client",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:1,w:1,h:1,minH:1}},{id:"throughput-chart",title:"Requests Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:2,w:2,h:2,minH:2}},{id:"duration-chart",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:2,w:2,h:2,minH:2}},{id:"response-codes-chart",title:"Response Codes (3XX, 4XX, 5XX)",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:2,w:2,h:2,minH:2}},{id:"transactions-table",title:"Transactions Making Requests to This Domain",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["transaction"],aggregates:["epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],fieldAliases:["Found In","Requests Per Minute","3XXs","4XXs","5XXs","Avg Duration","Time Spent"]}],interval:"5m",layout:{x:0,y:4,minH:2,h:5,w:6}}]},"6":{title:"Web Vitals",description:"Track real-user Web Vitals, ranked by improvement opportunity.",widgets:[{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{y:0,w:2,h:2,x:0,minH:2}},{id:"score-breakdown-chart",title:"Score Breakdown",description:"Each Web Vital score contributes a different amount to the total score. Refer to the Performance Score wheel for total contribution.",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:4,h:2,x:2,minH:2}},{id:"lcp-p75-meter",title:"P75 Largest Contentful Paint",description:"Time to render the largest item in the viewport. Bad LCP frustrates users because the website feels slow to load.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.lcp.value)"],orderby:"",fields:["p75(browser.web_vital.lcp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:0,minH:1}},{id:"inp-p75-meter",title:"P75 Interaction to Next Paint",description:"Latency between user input and visual response. Bad INP makes users feel like the site is laggy, outdated, and unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.inp.value)"],orderby:"",fields:["p75(browser.web_vital.inp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:1,minH:1}},{id:"cls-p75-meter",title:"P75 Cumulative Layout Shift",description:"Measures content 'shifting' during load. Bad CLS indicates a janky website, degrading UX and trust.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.cls.value)"],orderby:"",fields:["p75(browser.web_vital.cls.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:0,minH:1}},{id:"ttfb-p75-meter",title:"P75 Time to First Byte",description:"Time until first byte is delivered to the client. Bad TTFB makes the server feel unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.ttfb.value)"],orderby:"",fields:["p75(browser.web_vital.ttfb.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:1,minH:1}},{id:"issues-table",title:"Web Vital Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"issue.type:[web_vitals,performance_render_blocking_asset_span,performance_uncompressed_assets,performance_http_overhead,performance_consecutive_http,performance_n_plus_one_api_calls,performance_large_http_payload,performance_p95_endpoint_regression]",columns:["issue","assignee","title"],aggregates:[],orderby:"date",fields:["issue","assignee","title"]}],interval:"5m",layout:{y:2,w:4,h:2,x:2,minH:2}},{id:"pages-table",title:"Pages",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["transaction","project","count()","p75(browser.web_vital.lcp.value)","p75(browser.web_vital.fcp.value)","p75(browser.web_vital.cls.value)","p75(browser.web_vital.ttfb.value)","p75(browser.web_vital.inp.value)","performance_score(measurements.score.total)","opportunity_score(measurements.score.total)"],aggregates:[],orderby:"-opportunity_score(measurements.score.total)",fields:["transaction","project","count()","p75(browser.web_vital.lcp.value)","p75(browser.web_vital.fcp.value)","p75(browser.web_vital.cls.value)","p75(browser.web_vital.ttfb.value)","p75(browser.web_vital.inp.value)","performance_score(measurements.score.total)","opportunity_score(measurements.score.total)"],fieldAliases:["Pages","Project","Pageloads","LCP","FCP","CLS","TTFB","INP","Perf Score","Opportunity"]}],interval:"5m",layout:{y:4,w:6,h:6,x:0,minH:2}}]},"7":{title:"Web Vitals Page Summary",description:"",widgets:[{id:"score-breakdown-chart",title:"Score Breakdown",description:"Each Web Vital score contributes a different amount to the total score. Refer to the Performance Score wheel for total contribution.",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:5,h:2,x:0,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"The overall performance rating of this page.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:1,h:2,x:5,minH:2}},{id:"lcp-p75-meter",title:"P75 Largest Contentful Paint",description:"Time to render the largest item in the viewport. Bad LCP frustrates users because the website feels slow to load.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.lcp.value)"],orderby:"",fields:["p75(browser.web_vital.lcp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:0,minH:1}},{id:"inp-p75-meter",title:"P75 Interaction to Next Paint",description:"Latency between user input and visual response. Bad INP makes users feel like the site is laggy, outdated, and unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.inp.value)"],orderby:"",fields:["p75(browser.web_vital.inp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:1,minH:1}},{id:"cls-p75-meter",title:"P75 Cumulative Layout Shift",description:"Measures content 'shifting' during load. Bad CLS indicates a janky website, degrading UX and trust.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.cls.value)"],orderby:"",fields:["p75(browser.web_vital.cls.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:0,minH:1}},{id:"ttfb-p75-meter",title:"P75 Time to First Byte",description:"Time until first byte is delivered to the client. Bad TTFB makes the server feel unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.ttfb.value)"],orderby:"",fields:["p75(browser.web_vital.ttfb.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:1,minH:1}},{id:"issues-table",title:"Web Vital Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"issue.type:[web_vitals,performance_render_blocking_asset_span,performance_uncompressed_assets,performance_http_overhead,performance_consecutive_http,performance_n_plus_one_api_calls,performance_large_http_payload,performance_p95_endpoint_regression]",columns:["issue","assignee","title"],aggregates:[],orderby:"date",fields:["issue","assignee","title"]}],interval:"5m",layout:{y:2,w:3,h:2,x:2,minH:2}},{id:"lcp-samples-table",title:"LCP Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.lcp.value",columns:["project","trace","browser.web_vital.lcp.element","browser.web_vital.lcp.value","profile.id","replay.id","measurements.score.ratio.lcp","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.lcp.element","browser.web_vital.lcp.value","profile.id","replay.id","measurements.score.ratio.lcp","timestamp"]}],interval:"5m",layout:{y:6,w:5,h:2,x:0,minH:2}},{id:"inp-samples-table",title:"INP Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.inp.value",columns:["project","trace","browser.web_vital.inp.value","profile.id","replay.id","measurements.score.ratio.inp","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.inp.value","profile.id","replay.id","measurements.score.ratio.inp","timestamp"]}],interval:"5m",layout:{y:8,w:5,h:2,x:0,minH:2}},{id:"cls-samples-table",title:"CLS Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.cls.value",columns:["project","trace","browser.web_vital.cls.value","profile.id","replay.id","measurements.score.ratio.cls","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.cls.value","profile.id","replay.id","measurements.score.ratio.cls","timestamp"]}],interval:"5m",layout:{y:10,w:5,h:2,x:0,minH:2}},{id:"pageloads-chart",title:"Pageloads",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:pageload",columns:[],aggregates:["count()"],orderby:"",fields:["count()"]}],interval:"5m",layout:{y:2,w:1,h:2,x:5,minH:2}},{id:"interactions-chart",title:"Interactions",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press]",columns:[],aggregates:["count()"],orderby:"",fields:["count()"]}],interval:"5m",layout:{y:4,w:1,h:2,x:5,minH:2}}]},"8":{title:"Mobile Vitals",description:"Track key mobile performance metrics, including Time-to-Initial-Display.",widgets:[{id:"cold-start-big-number",title:"Average Cold App Start",description:"Average cold app start duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.cold.value OR span.op:app.start.cold has:app.vitals.start.cold.value)",columns:[],aggregates:["avg(app.vitals.start.cold.value)"],orderby:"",fields:["avg(app.vitals.start.cold.value)"]}],interval:"1h",layout:{h:1,x:0,y:0,w:1,minH:1}},{id:"warm-start-big-number",title:"Average Warm App Start",description:"Average warm app start duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.warm.value OR span.op:app.start.warm has:app.vitals.start.warm.value)",columns:[],aggregates:["avg(app.vitals.start.warm.value)"],orderby:"",fields:["avg(app.vitals.start.warm.value)"]}],interval:"1h",layout:{h:1,x:1,y:0,w:1,minH:1}},{id:"avg-ttid-big-number",title:"Average TTID",description:"Average time to initial display",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"",fields:["avg(app.vitals.ttid.value)"]}],interval:"1h",layout:{h:1,x:2,y:0,w:1,minH:1}},{id:"avg-ttfd-big-number",title:"Average TTFD",description:"Average time to full display",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"",fields:["avg(app.vitals.ttfd.value)"]}],interval:"1h",layout:{h:1,x:3,y:0,w:1,minH:1}},{id:"slow-frame-rate-big-number",title:"Slow Frame Rate",description:"Percentage of slow frames across screen load transactions, calculated as total slow frames divided by total frames.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["sum(app.vitals.frames.slow.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.slow.count) / sum(app.vitals.frames.total.count)"],orderby:"",fields:["sum(app.vitals.frames.slow.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.slow.count) / sum(app.vitals.frames.total.count)"],selectedAggregate:2}],interval:"1h",layout:{h:1,x:0,y:1,w:1,minH:1}},{id:"frozen-frame-rate-big-number",title:"Frozen Frame Rate",description:"Percentage of frozen frames across screen load transactions, calculated as total frozen frames divided by total frames.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["sum(app.vitals.frames.frozen.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count) / sum(app.vitals.frames.total.count)"],orderby:"",fields:["sum(app.vitals.frames.frozen.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count) / sum(app.vitals.frames.total.count)"],selectedAggregate:2}],interval:"1h",layout:{h:1,x:1,y:1,w:1,minH:1}},{id:"avg-frame-delay-big-number",title:"Average Frame Delay",description:"Average frame delay",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["avg(app.vitals.frames.delay.value)"],orderby:"",fields:["avg(app.vitals.frames.delay.value)"]}],interval:"1h",layout:{h:1,x:2,y:1,w:1,minH:1}},{id:"crash-free-session-rate-big-number",title:"Crash Free Session Rate",description:"Percentage of sessions that did not crash. Based on session data, so span filters do not apply.",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"1h",layout:{h:1,x:3,y:1,w:1,minH:1}},{id:"about-this-page-text",title:"About this page",description:`Top-level metrics show your app's health. When one looks off, use the tables below to find the screens responsible, then drill in to investigate.
|
|
7
|
+
`);buffer=chunks.pop()??"";for(let chunk of chunks){let lines=chunk.split(`
|
|
8
|
+
`),dataLines=[],eventName;for(let line of lines)if(line.startsWith("data:"))dataLines.push(line.replace(/^data:\s*/,""));else if(line.startsWith("event:"))eventName=line.replace(/^event:\s*/,"");else if(line.startsWith("id:"))lastEventId=line.replace(/^id:\s*/,"");else if(line.startsWith("retry:")){let parsed=Number.parseInt(line.replace(/^retry:\s*/,""),10);if(!Number.isNaN(parsed))retryDelay=parsed}let data,parsedJson=!1;if(dataLines.length){let rawData=dataLines.join(`
|
|
9
|
+
`);try{data=JSON.parse(rawData),parsedJson=!0}catch{data=rawData}}if(parsedJson){if(responseValidator)await responseValidator(data);if(responseTransformer)data=await responseTransformer(data)}if(onSseEvent?.({data,event:eventName,id:lastEventId,retry:retryDelay}),dataLines.length)yield data}}}finally{signal.removeEventListener("abort",abortHandler),reader.releaseLock()}break}catch(error){if(onSseError?.(error),sseMaxRetryAttempts!==void 0&&attempt>=sseMaxRetryAttempts)break;let backoff=Math.min(retryDelay*2**(attempt-1),sseMaxRetryDelay??30000);await sleep(backoff)}}}()}},separatorArrayExplode=(style)=>{switch(style){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},separatorArrayNoExplode=(style)=>{switch(style){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},separatorObjectExplode=(style)=>{switch(style){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},serializeArrayParam=({allowReserved,explode,name,style,value})=>{if(!explode){let joinedValues2=(allowReserved?value:value.map((v)=>encodeURIComponent(v))).join(separatorArrayNoExplode(style));switch(style){case"label":return`.${joinedValues2}`;case"matrix":return`;${name}=${joinedValues2}`;case"simple":return joinedValues2;default:return`${name}=${joinedValues2}`}}let separator=separatorArrayExplode(style),joinedValues=value.map((v)=>{if(style==="label"||style==="simple")return allowReserved?v:encodeURIComponent(v);return serializePrimitiveParam({allowReserved,name,value:v})}).join(separator);return style==="label"||style==="matrix"?separator+joinedValues:joinedValues},serializePrimitiveParam=({allowReserved,name,value})=>{if(value===void 0||value===null)return"";if(typeof value==="object")throw Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${name}=${allowReserved?value:encodeURIComponent(value)}`},serializeObjectParam=({allowReserved,explode,name,style,value,valueOnly})=>{if(value instanceof Date)return valueOnly?value.toISOString():`${name}=${value.toISOString()}`;if(style!=="deepObject"&&!explode){let values=[];Object.entries(value).forEach(([key,v])=>{values=[...values,key,allowReserved?v:encodeURIComponent(v)]});let joinedValues2=values.join(",");switch(style){case"form":return`${name}=${joinedValues2}`;case"label":return`.${joinedValues2}`;case"matrix":return`;${name}=${joinedValues2}`;default:return joinedValues2}}let separator=separatorObjectExplode(style),joinedValues=Object.entries(value).map(([key,v])=>serializePrimitiveParam({allowReserved,name:style==="deepObject"?`${name}[${key}]`:key,value:v})).join(separator);return style==="label"||style==="matrix"?separator+joinedValues:joinedValues},PATH_PARAM_RE=/\{[^{}]+\}/g,defaultPathSerializer=({path,url:_url})=>{let url=_url,matches=_url.match(PATH_PARAM_RE);if(matches)for(let match of matches){let explode=!1,name=match.substring(1,match.length-1),style="simple";if(name.endsWith("*"))explode=!0,name=name.substring(0,name.length-1);if(name.startsWith("."))name=name.substring(1),style="label";else if(name.startsWith(";"))name=name.substring(1),style="matrix";let value=path[name];if(value===void 0||value===null)continue;if(Array.isArray(value)){url=url.replace(match,serializeArrayParam({explode,name,style,value}));continue}if(typeof value==="object"){url=url.replace(match,serializeObjectParam({explode,name,style,value,valueOnly:!0}));continue}if(style==="matrix"){url=url.replace(match,`;${serializePrimitiveParam({name,value})}`);continue}let replaceValue=encodeURIComponent(style==="label"?`.${value}`:value);url=url.replace(match,replaceValue)}return url},getUrl=({baseUrl,path,query,querySerializer,url:_url})=>{let pathUrl=_url.startsWith("/")?_url:`/${_url}`,url=(baseUrl??"")+pathUrl;if(path)url=defaultPathSerializer({path,url});let search=query?querySerializer(query):"";if(search.startsWith("?"))search=search.substring(1);if(search)url+=`?${search}`;return url};function getValidRequestBody(options){let hasBody=options.body!==void 0;if(hasBody&&options.bodySerializer){if("serializedBody"in options)return options.serializedBody!==void 0&&options.serializedBody!==""?options.serializedBody:null;return options.body!==""?options.body:null}if(hasBody)return options.body;return}var getAuthToken=async(auth,callback)=>{let token=typeof callback==="function"?await callback(auth):callback;if(!token)return;if(auth.scheme==="bearer")return`Bearer ${token}`;if(auth.scheme==="basic")return`Basic ${btoa(token)}`;return token},createQuerySerializer=({parameters={},...args}={})=>(queryParams)=>{let search=[];if(queryParams&&typeof queryParams==="object")for(let name in queryParams){let value=queryParams[name];if(value===void 0||value===null)continue;let options=parameters[name]||args;if(Array.isArray(value)){let serializedArray=serializeArrayParam({allowReserved:options.allowReserved,explode:!0,name,style:"form",value,...options.array});if(serializedArray)search.push(serializedArray)}else if(typeof value==="object"){let serializedObject=serializeObjectParam({allowReserved:options.allowReserved,explode:!0,name,style:"deepObject",value,...options.object});if(serializedObject)search.push(serializedObject)}else{let serializedPrimitive=serializePrimitiveParam({allowReserved:options.allowReserved,name,value});if(serializedPrimitive)search.push(serializedPrimitive)}}return search.join("&")},getParseAs=(contentType)=>{if(!contentType)return"stream";let cleanContent=contentType.split(";")[0]?.trim();if(!cleanContent)return;if(cleanContent.startsWith("application/json")||cleanContent.endsWith("+json"))return"json";if(cleanContent==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some((type)=>cleanContent.startsWith(type)))return"blob";if(cleanContent.startsWith("text/"))return"text";return},checkForExistence=(options,name)=>{if(!name)return!1;if(options.headers.has(name)||options.query?.[name]||options.headers.get("Cookie")?.includes(`${name}=`))return!0;return!1},setAuthParams=async({security,...options})=>{for(let auth of security){if(checkForExistence(options,auth.name))continue;let token=await getAuthToken(auth,options.auth);if(!token)continue;let name=auth.name??"Authorization";switch(auth.in){case"query":if(!options.query)options.query={};options.query[name]=token;break;case"cookie":options.headers.append("Cookie",`${name}=${token}`);break;case"header":default:options.headers.set(name,token);break}}},buildUrl=(options)=>getUrl({baseUrl:options.baseUrl,path:options.path,query:options.query,querySerializer:typeof options.querySerializer==="function"?options.querySerializer:createQuerySerializer(options.querySerializer),url:options.url}),mergeConfigs=(a,b)=>{let config={...a,...b};if(config.baseUrl?.endsWith("/"))config.baseUrl=config.baseUrl.substring(0,config.baseUrl.length-1);return config.headers=mergeHeaders(a.headers,b.headers),config},headersEntries=(headers)=>{let entries=[];return headers.forEach((value,key)=>{entries.push([key,value])}),entries},mergeHeaders=(...headers)=>{let mergedHeaders=new Headers;for(let header of headers){if(!header)continue;let iterator=header instanceof Headers?headersEntries(header):Object.entries(header);for(let[key,value]of iterator)if(value===null)mergedHeaders.delete(key);else if(Array.isArray(value))for(let v of value)mergedHeaders.append(key,v);else if(value!==void 0)mergedHeaders.set(key,typeof value==="object"?JSON.stringify(value):value)}return mergedHeaders};class Interceptors{fns=[];clear(){this.fns=[]}eject(id){let index=this.getInterceptorIndex(id);if(this.fns[index])this.fns[index]=null}exists(id){let index=this.getInterceptorIndex(id);return Boolean(this.fns[index])}getInterceptorIndex(id){if(typeof id==="number")return this.fns[id]?id:-1;return this.fns.indexOf(id)}update(id,fn){let index=this.getInterceptorIndex(id);if(this.fns[index])return this.fns[index]=fn,id;return!1}use(fn){return this.fns.push(fn),this.fns.length-1}}var createInterceptors=()=>({error:new Interceptors,request:new Interceptors,response:new Interceptors}),defaultQuerySerializer=createQuerySerializer({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),defaultHeaders={"Content-Type":"application/json"},createConfig=(override={})=>({...jsonBodySerializer,headers:defaultHeaders,parseAs:"auto",querySerializer:defaultQuerySerializer,...override}),createClient=(config={})=>{let _config=mergeConfigs(createConfig(),config),getConfig=()=>({..._config}),setConfig=(config2)=>(_config=mergeConfigs(_config,config2),getConfig()),interceptors=createInterceptors(),beforeRequest=async(options)=>{let opts={..._config,...options,fetch:options.fetch??_config.fetch??globalThis.fetch,headers:mergeHeaders(_config.headers,options.headers),serializedBody:void 0};if(opts.security)await setAuthParams({...opts,security:opts.security});if(opts.requestValidator)await opts.requestValidator(opts);if(opts.body!==void 0&&opts.bodySerializer)opts.serializedBody=opts.bodySerializer(opts.body);if(opts.body===void 0||opts.serializedBody==="")opts.headers.delete("Content-Type");let url=buildUrl(opts);return{opts,url}},request=async(options)=>{let{opts,url}=await beforeRequest(options),requestInit={redirect:"follow",...opts,body:getValidRequestBody(opts)},request2=new Request(url,requestInit);for(let fn of interceptors.request.fns)if(fn)request2=await fn(request2,opts);let _fetch=opts.fetch,response;try{response=await _fetch(request2)}catch(error2){let finalError2=error2;for(let fn of interceptors.error.fns)if(fn)finalError2=await fn(error2,void 0,request2,opts);if(finalError2=finalError2||{},opts.throwOnError)throw finalError2;return opts.responseStyle==="data"?void 0:{error:finalError2,request:request2,response:void 0}}for(let fn of interceptors.response.fns)if(fn)response=await fn(response,request2,opts);let result={request:request2,response};if(response.ok){let parseAs=(opts.parseAs==="auto"?getParseAs(response.headers.get("Content-Type")):opts.parseAs)??"json";if(response.status===204||response.headers.get("Content-Length")==="0"){let emptyData;switch(parseAs){case"arrayBuffer":case"blob":case"text":emptyData=await response[parseAs]();break;case"formData":emptyData=new FormData;break;case"stream":emptyData=response.body;break;case"json":default:emptyData={};break}return opts.responseStyle==="data"?emptyData:{data:emptyData,...result}}let data;switch(parseAs){case"arrayBuffer":case"blob":case"formData":case"text":data=await response[parseAs]();break;case"json":{let text=await response.text();data=text?JSON.parse(text):{};break}case"stream":return opts.responseStyle==="data"?response.body:{data:response.body,...result}}if(parseAs==="json"){if(opts.responseValidator)await opts.responseValidator(data);if(opts.responseTransformer)data=await opts.responseTransformer(data)}return opts.responseStyle==="data"?data:{data,...result}}let textError=await response.text(),jsonError;try{jsonError=JSON.parse(textError)}catch{}let error=jsonError??textError,finalError=error;for(let fn of interceptors.error.fns)if(fn)finalError=await fn(error,response,request2,opts);if(finalError=finalError||{},opts.throwOnError)throw finalError;return opts.responseStyle==="data"?void 0:{error:finalError,...result}},makeMethodFn=(method)=>(options)=>request({...options,method}),makeSseFn=(method)=>async(options)=>{let{opts,url}=await beforeRequest(options);return createSseClient({...opts,body:opts.body,headers:opts.headers,method,onRequest:async(url2,init)=>{let request2=new Request(url2,init);for(let fn of interceptors.request.fns)if(fn)request2=await fn(request2,opts);return request2},serializedBody:getValidRequestBody(opts),url})};return{buildUrl,connect:makeMethodFn("CONNECT"),delete:makeMethodFn("DELETE"),get:makeMethodFn("GET"),getConfig,head:makeMethodFn("HEAD"),interceptors,options:makeMethodFn("OPTIONS"),patch:makeMethodFn("PATCH"),post:makeMethodFn("POST"),put:makeMethodFn("PUT"),request,setConfig,sse:{connect:makeSseFn("CONNECT"),delete:makeSseFn("DELETE"),get:makeSseFn("GET"),head:makeSseFn("HEAD"),options:makeSseFn("OPTIONS"),patch:makeSseFn("PATCH"),post:makeSseFn("POST"),put:makeSseFn("PUT"),trace:makeSseFn("TRACE")},trace:makeMethodFn("TRACE")}},client=createClient(createConfig()),listOrganizations=(options)=>(options?.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/",...options}),getOrganization=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/",...options});var listOrganizationDashboards=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/dashboards/",...options});var listOrganizationDetectors=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/detectors/",...options});var listOrganizationEnvironments=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/environments/",...options});var listOrganizationEvents=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/events/",...options});var listOrganizationProjects=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/projects/",...options});var listOrganizationReplays=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/replays/",...options}),getOrganizationReplay=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/replays/{replay_id}/",...options});var listOrganizationTraceItemAttributes=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/trace-items/attributes/",...options});var listOrganizationWorkflows=(options)=>(options.client??client).get({security:[{scheme:"bearer",type:"http"}],url:"/api/0/organizations/{organization_id_or_slug}/workflows/",...options});class SentryApiError extends Error{status;body;response;documented;constructor(status,body,response,documented,message=status===void 0?"Sentry API request failed before receiving a response":`Sentry API request failed with status ${status}`){super(message);this.name="SentryApiError",this.status=status,this.body=body,this.response=response,this.documented=documented}}var parseSentryLinkHeader=(header)=>{if(!header)return{};let segments=header.split(","),nextCursor,prevCursor;for(let segment of segments){let parts=segment.trim().split(";").map((s)=>s.trim()),rel,results,cursor;for(let part of parts){let relMatch=part.match(/^rel="([^"]*)"$/);if(relMatch){rel=relMatch[1];continue}let resultsMatch=part.match(/^results="([^"]*)"$/);if(resultsMatch){results=resultsMatch[1];continue}let cursorMatch=part.match(/^cursor="([^"]*)"$/);if(cursorMatch){cursor=cursorMatch[1];continue}}if(results!=="true"||!cursor)continue;if(rel==="next")nextCursor=cursor;else if(rel==="previous")prevCursor=cursor}let out={};if(nextCursor!==void 0)out.nextCursor=nextCursor;if(prevCursor!==void 0)out.prevCursor=prevCursor;return out},_withCursor=(options,cursor)=>{if(options.query===void 0&&cursor===void 0)return options;return{...options,query:{...options.query,...cursor!==void 0?{cursor}:void 0}}},unwrapResult=(result,context)=>{if(result.error!==void 0){let status=result.response?.status;throw new SentryApiError(status,result.error,result.response,!1,status===void 0?`${context}: API request failed before receiving a response: ${String(result.error)}`:`${context}: API request failed with status ${status}: ${JSON.stringify(result.error)}`)}return{data:result.data,response:result.response}},unwrapPaginatedResult=(result,context)=>{let{data,response}=unwrapResult(result,context),linkHeader=response.headers.get("link"),{nextCursor,prevCursor}=parseSentryLinkHeader(linkHeader),out={data};if(nextCursor!==void 0)out.nextCursor=nextCursor;if(prevCursor!==void 0)out.prevCursor=prevCursor;return out},fetchPage=async(fetcher,context,cursor)=>{let result=await fetcher(cursor);return unwrapPaginatedResult(result,context)};var fetchPage_listOrganizationDashboards=(options,cursor)=>fetchPage((c)=>listOrganizationDashboards(_withCursor(options,c)),"listOrganizationDashboards",cursor);var fetchPage_listOrganizationDetectors=(options,cursor)=>fetchPage((c)=>listOrganizationDetectors(_withCursor(options,c)),"listOrganizationDetectors",cursor);var fetchPage_listOrganizationEvents=(options,cursor)=>fetchPage((c)=>listOrganizationEvents(_withCursor(options,c)),"listOrganizationEvents",cursor);var fetchPage_listOrganizationReplays=(options,cursor)=>fetchPage((c)=>listOrganizationReplays(_withCursor(options,c)),"listOrganizationReplays",cursor);var fetchPage_listOrganizationWorkflows=(options,cursor)=>fetchPage((c)=>listOrganizationWorkflows(_withCursor(options,c)),"listOrganizationWorkflows",cursor);function projectParams(projects){return projects&&projects.length>0?[...projects]:["-1"]}var DEFAULT_QUERY="is:unresolved issue.priority:[high, medium]",DEFAULT_STATS_PERIOD="14d",DEFAULT_GRAPH_STATS_PERIOD="24h",PAGE_SIZE=25,SORT_OPTIONS=[{value:"recommended",label:"Recommended"},{value:"date",label:"Last Seen"},{value:"new",label:"Age"},{value:"trends",label:"Trends"},{value:"freq",label:"Events"},{value:"user",label:"Users"},{value:"inbox",label:"Date Added"},{value:"progress",label:"Progress"}],DEFAULT_SORT="date";function issueSort(value){return SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_SORT}async function listIssues(client2,{org,query=DEFAULT_QUERY,sort=DEFAULT_SORT,statsPeriod=DEFAULT_STATS_PERIOD,project,environment,cursor,limit=PAGE_SIZE,signal}){return client2.request(`/organizations/${org}/issues/`,{query:{query,sort,statsPeriod,limit,shortIdLookup:1,cursor,project:projectParams(project),environment,expand:["owners","inbox"],collapse:["stats","unhandled"]},signal})}async function fetchIssueStats(client2,{org,groups,statsPeriod=DEFAULT_STATS_PERIOD,groupStatsPeriod=DEFAULT_GRAPH_STATS_PERIOD,project,signal}){if(groups.length===0)return{};let page=await client2.request(`/organizations/${org}/issues-stats/`,{query:{groups,statsPeriod,groupStatsPeriod,project:projectParams(project)},signal}),entries=Array.isArray(page.data)?page.data:[];return Object.fromEntries(entries.map((entry)=>[entry.id,entry]))}async function fetchIssue(client2,{org,issueId,signal}){return(await client2.request(`/organizations/${org}/issues/${issueId}/`,{signal})).data}async function fetchIssueEvent(client2,{org,issueId,eventId="latest",signal}){return(await client2.request(`/organizations/${org}/issues/${issueId}/events/${eventId}/`,{signal})).data}async function updateIssue(client2,{org,issueId,update,signal}){return(await client2.request(`/organizations/${org}/issues/${issueId}/`,{method:"PUT",body:update,signal})).data}async function getOrganization2(client2,{org,signal}){let{data}=await getOrganization({...client2.generatedOptions(signal),path:{organization_id_or_slug:org}});return organizationFromResponse(data)}async function getCurrentUser(client2,signal){let page=await client2.request("/users/me/",{signal}),value=page.data&&typeof page.data==="object"?page.data:{};return{...typeof value.id==="string"?{id:value.id}:{},...typeof value.name==="string"?{name:value.name}:{},...typeof value.email==="string"?{email:value.email}:{}}}async function listOrganizations2(client2,signal){let{data}=await listOrganizations(client2.generatedOptions(signal));return data.map(organizationFromResponse)}async function listOrganizationMembers(client2,{org,signal}){return(await client2.request(`/organizations/${org}/users/`,{signal})).data}var PROJECTS_PER_PAGE=100,LIGHTWEIGHT_PROJECT_COLLAPSE=["latestDeploys","unusedFeatures"];async function listProjects(client2,{org,query,perPage=PROJECTS_PER_PAGE,signal}){let projectQuery={query:query?.trim()||void 0,per_page:perPage,collapse:LIGHTWEIGHT_PROJECT_COLLAPSE},{data}=await listOrganizationProjects({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:projectQuery});return projectsFromResponse(data)}async function listProjectReferences(client2,{org,ids,signal}){let uniqueIds=[...new Set(ids)].filter((id)=>/^\d+$/.test(id)),projects=[];for(let offset=0;offset<uniqueIds.length;offset+=PROJECTS_PER_PAGE){let batch=uniqueIds.slice(offset,offset+PROJECTS_PER_PAGE),projectQuery={query:batch.map((id)=>`id:${id}`).join(" "),per_page:batch.length,collapse:LIGHTWEIGHT_PROJECT_COLLAPSE},{data}=await listOrganizationProjects({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:projectQuery});projects.push(...data.map(({id,slug})=>({id,slug})))}return projects}function projectsFromResponse(data){return data.map(({id,slug,name,platform})=>({id,slug,name,platform}))}async function listEnvironments(client2,{org,signal}){let{data}=await listOrganizationEnvironments({...client2.generatedOptions(signal),path:{organization_id_or_slug:org}});return data}function organizationFromResponse(value){let avatar=value.avatar;return{id:value.id,slug:value.slug,name:value.name,features:value.features,...avatar?.avatarType?{avatar:{avatarType:avatar.avatarType,avatarUuid:avatar.avatarUuid??null,avatarUrl:avatar.avatarUrl}}:{}}}var NAV_GROUPS=[{id:"issues",label:"Issues",glyph:"I",sections:[{items:["Feed","Inbox"]},{items:["Errors & Outages","Breached Metrics","Warnings","Configuration","User Feedback"]},{title:"Autofix",items:["Recently Run"]},{items:["All Views"]}]},{id:"explore",label:"Explore",glyph:"E",sections:[{items:["Traces","Logs","Metrics","Errors","Discover","Profiles","Replays","Releases","Conversations"]},{items:["All Queries"]}]},{id:"dashboards",label:"Dashboards",glyph:"D",sections:[{items:["All Dashboards","Sentry Built"]}]},{id:"seer",label:"Seer",glyph:"S",sections:[{items:["Ask Seer"]}]},{id:"monitors",label:"Monitors",glyph:"M",sections:[{items:["All Monitors","My Monitors"]},{title:"By Monitor Type",items:["Error","Metric","Cron","Uptime","Mobile Build"]},{items:["Alerts"]}]}];function getNavGroup(id){let group=NAV_GROUPS.find((g)=>g.id===id);if(!group)throw Error(`Unknown nav group: ${id}`);return group}function navItems(group){return group.sections.flatMap((s)=>s.items)}function soleNavItem(group){let items=navItems(group);return items.length===1?items[0]:void 0}var COMMANDS=[{id:"sentry.app.quit",title:"Quit",category:"app",defaultKeys:["q"],palette:"always"},{id:"sentry.app.help",title:"Help",category:"app",defaultKeys:["?"],description:"Toggle this help overlay",palette:"always"},{id:"sentry.app.commandPalette",title:"Command palette",category:"app",defaultKeys:["ctrl+k","meta+k"],description:"Search every command and destination"},{id:"sentry.app.refresh",title:"Refresh",category:"app",defaultKeys:["ctrl+r","R"],description:"Reload the current view from the API",palette:"always"},{id:"sentry.app.checkForUpdates",title:"Check for updates",category:"app",defaultKeys:[],description:"Download a newer release",palette:"always"},{id:"sentry.app.update",title:"Restart into the update",category:"app",defaultKeys:["U"],description:"Restart into the downloaded update",palette:"update"},{id:"sentry.app.switchOrg",title:"Switch organization",category:"app",defaultKeys:["o"],description:"Open the organization picker",palette:"always"},{id:"sentry.app.openUrl",title:"Open Sentry URL\u2026",category:"app",defaultKeys:["ctrl+o"],description:"Open a copied Sentry URL",palette:"always"},{id:"sentry.app.openInBrowser",title:"Open current view in Sentry",category:"app",defaultKeys:["W"],description:"Continue this view on sentry.io",palette:"always"},{id:"sentry.app.focusNext",title:"Next pane",category:"app",defaultKeys:["tab"]},{id:"sentry.app.focusPrev",title:"Previous pane",category:"app",defaultKeys:["shift+tab"]},{id:"sentry.nav.down",title:"Move down",category:"nav",defaultKeys:["j","down"]},{id:"sentry.nav.up",title:"Move up",category:"nav",defaultKeys:["k","up"]},{id:"sentry.nav.top",title:"Jump to top",category:"nav",defaultKeys:["g","home"]},{id:"sentry.nav.bottom",title:"Jump to bottom",category:"nav",defaultKeys:["G","end"]},{id:"sentry.nav.pageDown",title:"Page down",category:"nav",defaultKeys:["pagedown","ctrl+d"]},{id:"sentry.nav.pageUp",title:"Page up",category:"nav",defaultKeys:["pageup","ctrl+u"]},{id:"sentry.nav.open",title:"Open",category:"nav",defaultKeys:["return"]},{id:"sentry.nav.back",title:"Back",category:"nav",defaultKeys:["escape"]},{id:"sentry.nav.goto",title:"Navigate",category:"nav",defaultKeys:["n"],description:"Jump to a nav item by its printed key"},{id:"sentry.nav.search",title:"Search",category:"nav",defaultKeys:["/"],description:"Focus the search box for this list",palette:"stream"},{id:"sentry.issue.resolve",title:"Resolve",category:"issue",defaultKeys:["r"],palette:"issue"},{id:"sentry.issue.archive",title:"Archive",category:"issue",defaultKeys:["a"],description:"Archive until the issue escalates",palette:"issue"},{id:"sentry.issue.unresolve",title:"Unresolve",category:"issue",defaultKeys:["u"],palette:"issue"},{id:"sentry.issue.bookmark",title:"Bookmark",category:"issue",defaultKeys:["b"],palette:"issue"},{id:"sentry.issue.markReviewed",title:"Mark reviewed",category:"issue",defaultKeys:["m"],palette:"issue"},{id:"sentry.issue.actions",title:"More issue actions",category:"issue",defaultKeys:["A"],description:"Open more issue actions"},{id:"sentry.seer.compose",title:"Ask Seer",category:"seer",defaultKeys:["i"],description:"Focus the Seer composer"},{id:"sentry.seer.newChat",title:"New chat",category:"seer",defaultKeys:["N"],description:"Start a fresh Seer conversation"},{id:"sentry.seer.interrupt",title:"Interrupt Seer",category:"seer",defaultKeys:["x"],description:"Ask Seer to stop the current turn"},{id:"sentry.seer.history",title:"Conversation history",category:"seer",defaultKeys:["H"],description:"Open recent Seer conversations"},{id:"sentry.seer.pushChanges",title:"Create or update pull requests",category:"seer",defaultKeys:["p"],description:"Push accepted Seer Code Mode changes"},{id:"sentry.view.filterProject",title:"Filter by project",category:"view",defaultKeys:["P"],description:"Open the project selector",palette:"stream"},{id:"sentry.view.filterEnv",title:"Filter by environment",category:"view",defaultKeys:["E"],description:"Open the environment selector",palette:"stream"},{id:"sentry.view.filterDate",title:"Filter by date",category:"view",defaultKeys:["D"],description:"Open the date range selector",palette:"stream"},{id:"sentry.view.sort",title:"Sort by",category:"view",defaultKeys:["S"],description:"Choose sort order"},{id:"sentry.explore.visualize",title:"Visualize",category:"view",defaultKeys:["V"],description:"Choose the aggregate to plot"},{id:"sentry.explore.visualizeField",title:"Visualize field",category:"view",defaultKeys:["F"],description:"Choose what the aggregate reads"},{id:"sentry.explore.groupBy",title:"Group by",category:"view",defaultKeys:["B"],description:"Group results by an attribute"},{id:"sentry.explore.sortDirection",title:"Sort direction",category:"view",defaultKeys:["O"],description:"Flip between ascending and descending"},{id:"sentry.explore.interval",title:"Chart interval",category:"view",defaultKeys:["I"],description:"Choose the chart bucket width"},{id:"sentry.view.toggleSection",title:"Fold section",category:"view",defaultKeys:["1","2","3","4","5","6"],description:"Fold the numbered section"},{id:"sentry.view.toggleAllSections",title:"Fold all sections",category:"view",defaultKeys:["z"],description:"Fold or unfold every section at once"}],BY_ID=new Map(COMMANDS.map((c)=>[c.id,c]));function getCommand(id){return BY_ID.get(id)}function primaryKey(id){return getCommand(id)?.defaultKeys[0]??""}var KEY_LABELS={return:"enter",escape:"esc",pagedown:"pgdn",pageup:"pgup",down:"\u2193",up:"\u2191"},MODIFIER_LABELS={meta:"cmd"};function formatKey(chord){let parts=chord.split("+"),name=parts.pop();return[...parts.map((part)=>MODIFIER_LABELS[part]??part),KEY_LABELS[name]??name].join("+")}function matchesCommand(id,key){let command=getCommand(id);if(!command)return!1;return command.defaultKeys.some((chord)=>matchesChord(chord,key))}function matchesChord(chord,key){let parts=chord.split("+"),name=parts[parts.length-1],wantCtrl=parts.includes("ctrl"),wantShift=parts.includes("shift"),wantMeta=parts.includes("meta");if(Boolean(key.ctrl)!==wantCtrl)return!1;if(Boolean(key.meta)!==wantMeta)return!1;if(name.length===1&&/[a-zA-Z]/.test(name)){let needsShift=wantShift||name===name.toUpperCase();return key.name.toLowerCase()===name.toLowerCase()&&Boolean(key.shift)===needsShift}if(Boolean(key.shift)!==wantShift)return!1;return key.name===name}function charClassOf(code){if(code>=97&&code<=122)return 0;if(code>=65&&code<=90)return 1;if(code>=48&&code<=57)return 2;return 3}function lower(char){let code=char.charCodeAt(0);return code>=65&&code<=90?String.fromCharCode(code+32):char}function fuzzyMatch(text,query){if(query.length===0)return{score:0,positions:[]};let pidx=0,start=-1,end=-1;for(let i=0;i<text.length;i++){if(lower(text[i])!==query[pidx])continue;if(start<0)start=i;if(pidx++,pidx===query.length){end=i+1;break}}if(end===-1)return null;pidx=query.length-1;for(let i=end-1;i>=start;i--){if(lower(text[i])!==query[pidx])continue;if(pidx--,pidx<0){start=i;break}}let{score,positions}=scoreWindow(text,query,start,end);return{score:start===0&&end===text.length&&text.length===query.length?score+16:score,positions}}function bonusFor(previous,current){if(previous===3&¤t!==3)return 8;if(previous===0&¤t===1||previous!==2&¤t===2)return 7;if(current===3)return 8;return 0}function scoreWindow(text,query,start,end){let pidx=0,score=0,inGap=!1,firstBonus=0,consecutive=0,previousClass=start>0?charClassOf(text.charCodeAt(start-1)):3,positions=[];for(let i=start;i<end;i++){let char=lower(text[i]),currentClass=charClassOf(char.charCodeAt(0));if(char===query[pidx]){positions.push(i),score+=16;let bonus=bonusFor(previousClass,currentClass);if(consecutive===0)firstBonus=bonus;else{if(bonus===8)firstBonus=bonus;bonus=Math.max(bonus,firstBonus,4)}score+=pidx===0?bonus*2:bonus,inGap=!1,consecutive++,pidx++}else score+=inGap?-1:-3,inGap=!0,consecutive=0,firstBonus=0;previousClass=currentClass}return{score,positions}}var PALETTE_SECTIONS=["Go to","Issue","Commands"],SECTION_LIMIT=6;function isInScope(scope,context){switch(scope){case"always":return!0;case"stream":return context.streamView;case"issue":return context.hasIssue;case"update":return context.updateReady}}function buildPaletteActions(context,navGroups=NAV_GROUPS){let actions=[];for(let group of navGroups)for(let section of group.sections)for(let item of section.items)actions.push({id:`nav:${group.id}:${item}`,section:"Go to",label:item,detail:group.label,keywords:section.title?[group.label,section.title]:[group.label],target:{kind:"nav",group:group.id,item}});for(let command of COMMANDS){if(!command.palette||!isInScope(command.palette,context))continue;let chord=primaryKey(command.id);actions.push({id:`command:${command.id}`,section:command.category==="issue"?"Issue":"Commands",label:command.title,detail:chord?formatKey(chord):void 0,keywords:command.description?[command.description]:void 0,target:{kind:"command",commandId:command.id}})}return actions}function filterPaletteActions(actions,query){let needle=query.trim().toLowerCase();if(!needle)return actions.map((action)=>({action,score:0,positions:[]}));let results=[];for(let action of actions){let onLabel=fuzzyMatch(action.label,needle),best=onLabel?.score??-1/0;for(let keyword of action.keywords??[]){let match=fuzzyMatch(keyword,needle);if(match&&match.score>best)best=match.score}if(best===-1/0)continue;results.push({action,score:best,positions:onLabel?.positions??[]})}return results.sort((a,b)=>b.score-a.score)}function groupPaletteResults(results,limit){let bySection=new Map;for(let result of results){let bucket=bySection.get(result.action.section);if(bucket)bucket.push(result);else bySection.set(result.action.section,[result])}return Array.from(bySection,([section,sectionResults])=>({section,results:limit===void 0?sectionResults:sectionResults.slice(0,limit),hidden:limit===void 0?0:Math.max(0,sectionResults.length-limit)})).sort((a,b)=>bestScore(b.results)-bestScore(a.results)||PALETTE_SECTIONS.indexOf(a.section)-PALETTE_SECTIONS.indexOf(b.section))}function bestScore(results){return results.length>0?Math.max(...results.map((r)=>r.score)):0}function flattenPaletteRows(groups){let rows=[],index=0;for(let group of groups){rows.push({kind:"heading",section:group.section});for(let result of group.results)rows.push({kind:"result",result,index}),index++;if(group.hidden>0)rows.push({kind:"more",section:group.section,count:group.hidden})}return rows}function rowIndexOfResult(rows,cursor){return rows.findIndex((row)=>row.kind==="result"&&row.index===cursor)}var CHART_LADDER=[[43200,"3h"],[20160,"1h"],[5760,"30m"],[2880,"10m"],[720,"5m"],[360,"1m"],[0,"1m"]];var DASHBOARD_INTERVALS=["1m","2m","5m","10m","15m","20m","30m","1h","2h","3h","4h","6h","12h","1d","2d","1w"],MAXIMUM_INTERVAL=[[43200,"12h"],[20160,"6h"],[5760,"3h"],[2880,"1h"],[720,"30m"],[360,"10m"],[60,"5m"],[5,"5m"],[0,"1m"]],INTERVAL_OPTIONS=[{value:"1m",label:"1 minute"},{value:"5m",label:"5 minutes"},{value:"10m",label:"10 minutes"},{value:"30m",label:"30 minutes"},{value:"1h",label:"1 hour"},{value:"3h",label:"3 hours"},{value:"6h",label:"6 hours"},{value:"12h",label:"12 hours"}],UNIT_MINUTES={s:0.016666666666666666,m:1,h:60,d:1440,w:10080};function statsPeriodMinutes(period){if(!period)return;let match=/^(\d+)([smhdw]?)$/.exec(period.trim());if(!match)return;let value=Number(match[1]);if(!Number.isFinite(value))return;return value*UNIT_MINUTES[match[2]||"s"]}function chartInterval(statsPeriod){let minutes=statsPeriodMinutes(statsPeriod);if(minutes===void 0||minutes<0)return;return CHART_LADDER.find(([threshold])=>minutes>=threshold)[1]}function dashboardChartInterval(statsPeriod,savedInterval,bar){if(bar)return"1d";let savedMinutes=statsPeriodMinutes(savedInterval),fallback=chartInterval(statsPeriod),desired=savedMinutes===void 0||savedMinutes<=0?fallback:savedInterval,desiredMinutes=statsPeriodMinutes(desired),rangeMinutes=statsPeriodMinutes(statsPeriod);if(desiredMinutes===void 0||rangeMinutes===void 0)return desired;let minimumMinutes=rangeMinutes/66;if(desiredMinutes>=minimumMinutes)return desired;return DASHBOARD_INTERVALS.find((interval)=>statsPeriodMinutes(interval)>=minimumMinutes)??DASHBOARD_INTERVALS.at(-1)}function chartIntervalOptions(statsPeriod){let minutes=statsPeriodMinutes(statsPeriod);if(minutes===void 0||minutes<0)return[];let minimum=statsPeriodMinutes(chartInterval(statsPeriod)),maximum=statsPeriodMinutes(MAXIMUM_INTERVAL.find(([threshold])=>minutes>=threshold)[1]),options=INTERVAL_OPTIONS.filter(({value})=>{let option=statsPeriodMinutes(value);return option>=minimum&&option<=maximum});return minutes>=20160?[...options,{value:"1d",label:"1 day"}]:options}var DISCOVER_PAGE_SIZE=50,GENERATED_DISCOVER_DATASETS=new Set(["errors","logs","spans","tracemetrics"]);async function queryDiscover(client2,{org,dataset,fields,sort,query="",statsPeriod,project,environment,cursor,limit=DISCOVER_PAGE_SIZE,referrer,signal}){if(isGeneratedDiscoverDataset(dataset)){let page2=await fetchPage_listOrganizationEvents({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{dataset,field:[...fields],sort,query:query||void 0,statsPeriod,per_page:limit,project:projectParams(project),environment,referrer}},cursor);return{rows:unwrapRows(page2.data),nextCursor:page2.nextCursor??null}}let page=await client2.request(`/organizations/${org}/events/`,{query:{dataset,field:[...fields],sort,query:query||void 0,statsPeriod,per_page:limit,cursor,project:projectParams(project),environment,referrer},signal});return{rows:unwrapRows(page.data),nextCursor:page.nextCursor}}function isGeneratedDiscoverDataset(dataset){return GENERATED_DISCOVER_DATASETS.has(dataset)}async function queryDiscoverTimeseries(client2,{org,dataset,yAxis="count()",query="",statsPeriod,interval=chartInterval(statsPeriod),project,environment,referrer,signal}){let page=await client2.request(`/organizations/${org}/events-stats/`,{query:{dataset,yAxis,query:query||void 0,statsPeriod,interval,project:projectParams(project),environment,referrer},signal});return unwrapBuckets(page.data)}async function queryExploreTimeseries(client2,{org,dataset,yAxis="count()",query="",statsPeriod,interval=chartInterval(statsPeriod),project,environment,referrer,signal,groupBy,sort,topEvents}){let page=await client2.request(`/organizations/${org}/events-timeseries/`,{query:{dataset,yAxis,query:query||void 0,statsPeriod,interval,project:projectParams(project),environment,referrer,partial:1,excludeOther:0,sampling:"NORMAL",groupBy:groupBy?[...groupBy]:void 0,sort,topEvents},signal}),series=Array.isArray(page.data?.timeSeries)?page.data.timeSeries:[],combined=new Map;for(let item of series.flatMap((entry)=>Array.isArray(entry?.values)?entry.values:[])){if(!item||!Number.isFinite(item.timestamp))continue;let value=item.value===null?0:Number(item.value);if(!Number.isFinite(value))continue;let current=combined.get(item.timestamp);combined.set(item.timestamp,{count:(current?.count??0)+value,incomplete:Boolean(current?.incomplete||item.incomplete)})}return[...combined.entries()].sort(([a],[b])=>a-b).map(([timestamp,value])=>[timestamp/1000,[{count:value.count}],{incomplete:value.incomplete||void 0}])}function unwrapRows(body){if(Array.isArray(body))return body.filter(isRow);let rows=body?.data;return Array.isArray(rows)?rows.filter(isRow):[]}function isRow(value){return typeof value==="object"&&value!==null}function unwrapBuckets(body){let buckets=Array.isArray(body)?body:body?.data;return Array.isArray(buckets)?buckets.filter(isBucket):[]}function isBucket(value){return Array.isArray(value)&&value.length>=2&&typeof value[0]==="number"}function rowString(row,field){let value=row[field];if(value===void 0||value===null||value==="")return;return String(value)}function rowNumber(row,field){let value=Number(row[field]);return Number.isFinite(value)?value:void 0}var DEFAULT_LOG_PERIOD="1h";function healthKey(version,projectId){return`${version}\x00${projectId}`}var RELEASE_PAGE_SIZE=20,DEFAULT_RELEASE_PERIOD="14d",HEALTH_STATS_PERIOD="24h",RELEASE_SORT_OPTIONS=[{value:"date",label:"Date Created"},{value:"sessions",label:"Total Sessions"},{value:"sessions_24h",label:"Active Sessions"},{value:"users_24h",label:"Active Users"},{value:"crash_free_sessions",label:"Crash-Free Sessions"},{value:"crash_free_users",label:"Crash-Free Users"},{value:"build",label:"Build Number"},{value:"semver",label:"Semantic Version"},{value:"adoption",label:"Date Adopted"}],DEFAULT_RELEASE_SORT="date",SESSION_SORTS=new Set(["sessions","sessions_24h","users_24h","crash_free_sessions","crash_free_users"]);function releaseSortOptions(environments){return environments.length===1?RELEASE_SORT_OPTIONS:RELEASE_SORT_OPTIONS.filter((option)=>option.value!=="adoption")}function releaseSort(value,environments){return releaseSortOptions(environments).some((option)=>option.value===value)?value:DEFAULT_RELEASE_SORT}async function listReleases(client2,params){let page=await client2.request(`/organizations/${params.org}/releases/`,releaseRequest(params));return{data:asArray(page.data).map(normaliseRelease),nextCursor:page.nextCursor}}async function listReleaseHealth(client2,params){let options=releaseRequest(params),page=await client2.request(`/organizations/${params.org}/releases/`,{...options,query:{...options.query,health:"1",healthStat:"sessions",healthStatsPeriod:HEALTH_STATS_PERIOD}}),index=new Map;for(let raw of asArray(page.data)){let version=str(raw.version);if(!version)continue;for(let project of asArray(raw.projects)){let id=num(project.id),health=normaliseHealth(project.healthData);if(id===void 0||!health)continue;index.set(healthKey(version,id),health)}}return index}async function listReleaseAdoption(client2,{org,releases,project,environment,signal}){if(releases.length===0)return new Map;let versions=[...new Set(releases.map((release)=>release.version).filter(Boolean))];if(versions.length===0)return new Map;let common={field:["sum(session)"],interval:"1h",statsPeriod:"24h",project,environment},releaseQuery=versions.map((version)=>`release:${quoteSearchValue(version)}`).join(" OR "),[byReleasePage,byProjectPage]=await Promise.all([client2.request(`/organizations/${org}/sessions/`,{query:{...common,query:releaseQuery,groupBy:["project","release"]},signal}),client2.request(`/organizations/${org}/sessions/`,{query:{...common,groupBy:["project"]},signal})]);return normaliseAdoption(releases,byReleasePage.data,byProjectPage.data)}function releaseRequest({query,statsPeriod=DEFAULT_RELEASE_PERIOD,project,environment,sort=DEFAULT_RELEASE_SORT,cursor,limit=RELEASE_PAGE_SIZE,signal}){let flattened=SESSION_SORTS.has(sort);return{query:{query:query||void 0,statsPeriod,project,environment,cursor,per_page:limit,status:"open",sort,flatten:flattened?"1":void 0,summaryStatsPeriod:statsPeriod},signal}}function normaliseRelease(raw){let version=str(raw.version)??"",versionInfo=record(raw.versionInfo),lastDeploy=record(raw.lastDeploy),dateFinished=lastDeploy&&str(lastDeploy.dateFinished);return{version,shortVersion:str(raw.shortVersion)??version,package:versionInfo?str(versionInfo.package):void 0,dateCreated:str(raw.dateCreated)??"",dateReleased:str(raw.dateReleased),lastDeploy:dateFinished?{environment:str(lastDeploy.environment)??"",dateFinished}:void 0,commitCount:num(raw.commitCount)??0,authorCount:asArray(raw.authors).length,projects:asArray(raw.projects).map(normaliseProject)}}function normaliseProject(raw){let slug=str(raw.slug)??"";return{id:num(raw.id)??-1,slug,name:str(raw.name)??slug,platform:str(raw.platform),newGroups:num(raw.newGroups)??0}}function normaliseHealth(value){let raw=record(value);if(!raw)return;return{adoption:num(raw.sessionsAdoption),crashFreeSessions:num(raw.crashFreeSessions),crashFreeUsers:num(raw.crashFreeUsers),sessionsCrashed:num(raw.sessionsCrashed),totalSessions24h:num(raw.totalSessions24h)}}function normaliseAdoption(releases,byReleaseValue,byProjectValue){let byRelease=sessionSeries(byReleaseValue,!0),byProject=sessionSeries(byProjectValue,!1),intervalCount=Math.max(responseIntervals(byReleaseValue),responseIntervals(byProjectValue)),index=new Map;for(let release of releases)for(let project of release.projects){let releaseSeries=byRelease.get(healthKey(release.version,project.id)),projectSeries=byProject.get(String(project.id));if(!releaseSeries&&!projectSeries)continue;let length=Math.max(intervalCount,releaseSeries?.length??0,projectSeries?.length??0);index.set(healthKey(release.version,project.id),{release:fitSeries(releaseSeries,length),project:fitSeries(projectSeries,length)})}return index}function sessionSeries(value,groupedByRelease){let response=record(value),result=new Map;for(let group of asArray(response?.groups)){let by=record(group.by),project=num(by?.project),release=str(by?.release),series=record(group.series)?.["sum(session)"];if(project===void 0||!Array.isArray(series))continue;if(groupedByRelease&&!release)continue;let key=groupedByRelease?healthKey(release,project):String(project);result.set(key,series.map((entry)=>num(entry)??0))}return result}function responseIntervals(value){let intervals=record(value)?.intervals;return Array.isArray(intervals)?intervals.length:0}function fitSeries(series,length){return Array.from({length},(_,index)=>series?.[index]??0)}function quoteSearchValue(value){return`"${value.replaceAll("\\","\\\\").replaceAll('"',"\\\"")}"`}function asArray(value){return Array.isArray(value)?value.filter(isRecord):[]}function isRecord(value){return typeof value==="object"&&value!==null}function record(value){return isRecord(value)?value:void 0}function str(value){if(value===void 0||value===null||value==="")return;return String(value)}function num(value){if(value===void 0||value===null||value==="")return;let parsed=Number(value);return Number.isFinite(parsed)?parsed:void 0}import{beginRequest,countMetric,log,reportError}from"h:7___________________________________";var DEFAULT_BASE_URL="https://sentry.io/api/0";class ApiError extends Error{status;retryable;retryAfterSeconds;constructor(message,{status,retryable,retryAfterSeconds}){super(message);this.name="ApiError",this.status=status,this.retryable=retryable,this.retryAfterSeconds=retryAfterSeconds}}var REPLAY_PAGE_SIZE=50,DEFAULT_REPLAY_PERIOD="14d",REPLAY_SORT_OPTIONS=[{value:"-started_at",label:"Newest"},{value:"started_at",label:"Oldest"},{value:"-activity",label:"Activity (high-low)"},{value:"activity",label:"Activity (low-high)"},{value:"-duration",label:"Longest duration"},{value:"duration",label:"Shortest duration"},{value:"-count_errors",label:"Most errors"},{value:"count_errors",label:"Fewest errors"},{value:"-count_dead_clicks",label:"Most dead clicks"},{value:"count_dead_clicks",label:"Fewest dead clicks"},{value:"-count_rage_clicks",label:"Most rage clicks"},{value:"count_rage_clicks",label:"Fewest rage clicks"},{value:"browser.name",label:"Browser (A-Z)"},{value:"-browser.name",label:"Browser (Z-A)"},{value:"os.name",label:"OS (A-Z)"},{value:"-os.name",label:"OS (Z-A)"}],DEFAULT_REPLAY_SORT="-started_at";function replaySort(value){return REPLAY_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_REPLAY_SORT}var REPLAY_FIELDS=["activity","browser","count_dead_clicks","count_errors","count_infos","count_rage_clicks","count_segments","count_urls","count_warnings","device","dist","duration","environment","error_ids","finished_at","has_viewed","id","info_ids","is_archived","os","platform","project_id","releases","sdk","started_at","tags","trace_ids","urls","user","warning_ids"],REPLAY_ERROR_FIELDS=["id","title","issue","level","project.name","timestamp"],WEB_BASE_URL=DEFAULT_BASE_URL.replace(/\/api\/0\/?$/,"");async function listReplays(client2,{org,query="",statsPeriod=DEFAULT_REPLAY_PERIOD,project,environment,sort=DEFAULT_REPLAY_SORT,cursor,limit=REPLAY_PAGE_SIZE,signal}){let page=await fetchPage_listOrganizationReplays({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{field:[...REPLAY_FIELDS],sort,query:query||void 0,statsPeriod,per_page:limit,project:projectParams(project),environment,queryReferrer:"replayList"}},cursor);return{data:unwrapReplays(page.data).map(normalise),nextCursor:page.nextCursor??null}}async function fetchReplay(client2,{org,replayId,signal}){let{data}=await getOrganizationReplay({...client2.generatedOptions(signal),path:{organization_id_or_slug:org,replay_id:replayId}}),raw=data.data;if(!isObject(raw))throw Error(`Replay ${replayId} was not found.`);return normalise(raw,0)}async function listReplayErrors(client2,{org,replayId,statsPeriod=DEFAULT_REPLAY_PERIOD,environment,signal}){let page=await queryDiscover(client2,{org,dataset:"errors",fields:REPLAY_ERROR_FIELDS,sort:"timestamp",query:`replayId:[${replayId}]`,statsPeriod,project:projectParams(),environment,referrer:"sentry-tui.replay-details",signal});return{data:page.rows.map(normaliseError),nextCursor:page.nextCursor}}function replayUrl(org,replayId){return`${WEB_BASE_URL}/organizations/${org}/explore/replays/${replayId}/`}function unwrapReplays(body){let rows=Array.isArray(body)?body:isObject(body)?body.data:void 0;return Array.isArray(rows)?rows.filter(isObject):[]}function isObject(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function normalise(raw,index){return{id:str2(raw.id)??String(index),projectId:str2(raw.project_id),isArchived:raw.is_archived===!0,hasViewed:raw.has_viewed===!0,user:user(raw.user),startedAt:str2(raw.started_at)??"",finishedAt:str2(raw.finished_at)??"",durationSec:num2(raw.duration),os:agent(raw.os),browser:agent(raw.browser),device:device(raw.device),sdk:agent(raw.sdk),platform:str2(raw.platform),environment:str2(raw.environment),releases:strings(raw.releases),activity:num2(raw.activity),countErrors:num2(raw.count_errors),countDeadClicks:num2(raw.count_dead_clicks),countRageClicks:num2(raw.count_rage_clicks),countUrls:num2(raw.count_urls),countSegments:num2(raw.count_segments),errorIds:strings(raw.error_ids),traceIds:strings(raw.trace_ids),urls:strings(raw.urls)}}function normaliseError(row,index){return{id:rowString(row,"id")??String(index),title:rowString(row,"title")??"",issue:rowString(row,"issue"),level:rowString(row,"level"),projectName:rowString(row,"project.name"),timestamp:rowString(row,"timestamp")??""}}function str2(value){if(value===void 0||value===null||value==="")return;return String(value)}function num2(value){if(value===void 0||value===null||value==="")return;let parsed=Number(value);return Number.isFinite(parsed)?parsed:void 0}function strings(value){if(!Array.isArray(value))return[];return value.map(str2).filter((entry)=>entry!==void 0)}function agent(value){if(!isObject(value))return{};return{name:str2(value.name),version:str2(value.version)}}function device(value){if(!isObject(value))return{};return{name:str2(value.name),version:str2(value.model_id),brand:str2(value.brand),family:str2(value.family)}}function user(value){if(!isObject(value))return{};return{displayName:str2(value.display_name),email:str2(value.email),id:str2(value.id),ip:str2(value.ip),username:str2(value.username)}}function formatReplayDuration(seconds){if(seconds===void 0||seconds<0)return"\u2014";let total=Math.round(seconds),secs=total%60,minutes=Math.floor(total/60)%60,hours=Math.floor(total/3600),mm=String(minutes).padStart(2,"0"),ss=String(secs).padStart(2,"0");return hours>0?`${hours}:${mm}:${ss}`:`${minutes}:${ss}`}function formatAgent(value){if(!value.name)return"\u2014";let version=value.version;if(!version||!/^\d/.test(version))return value.name;return`${value.name} ${version.split(".")[0]}`}function shortReplayId(id){return id.slice(0,8)}var ALL_VIEWS_LABEL="All Views";function categoryQuery(categories){return`is:unresolved issue.category:[${categories.join(",")}]`}var ISSUE_VIEWS=[{label:"Feed",query:DEFAULT_QUERY,description:"High and medium priority issues across your projects."},{label:"Inbox",query:"is:unresolved issue.progress:[fix_proposed,diagnosed,assigned,identified,fix_applied] assigned_or_suggested:me issue.category:[error,mobile,frontend,db_query,http_client,configuration]",sort:"progress",description:"Issues assigned or suggested to you that Seer has moved along."},{label:"Errors & Outages",query:categoryQuery(["error","outage"]),description:"Issues that break functionality such as application errors, failed jobs, or downtime incidents."},{label:"Breached Metrics",query:categoryQuery(["metric"]),description:"Issues that indicate degraded system behavior such as endpoint latency regressions or metric threshold violations."},{label:"Warnings",query:categoryQuery(["db_query","http_client","frontend","mobile"]),description:"Issues in your code or configuration that may not break functionality but can degrade performance or user experience."},{label:"Configuration",query:categoryQuery(["configuration"]),description:"Issues detected from SDK or tooling configuration problems that degrade your ability to debug telemetry using Sentry."},{label:"User Feedback",query:"issue.category:feedback status:unresolved",description:"Feedback submitted by your users."},{label:"Recently Run",query:"is:unresolved has:issue.seer_last_run",description:"Issues where Seer has identified a root cause."}],BY_LABEL=new Map(ISSUE_VIEWS.map((view)=>[view.label,view]));function getIssueView(label){return BY_LABEL.get(label)}var DEFAULT_ISSUE_VIEW=ISSUE_VIEWS[0];var SCREEN_PRODUCTION_LOCATIONS={"issues.feed":{pathname:"/issues/"},"issues.inbox":{pathname:"/issues/inbox/"},"issues.errors-outages":{pathname:"/issues/errors-outages/"},"issues.breached-metrics":{pathname:"/issues/breached-metrics/"},"issues.warnings":{pathname:"/issues/warnings/"},"issues.configuration":{pathname:"/issues/sentry-configuration/"},"issues.user-feedback":{pathname:"/issues/feedback/"},"issues.recently-run":{pathname:"/issues/autofix/recent/"},"issues.all-views":{pathname:"/issues/views/"},"explore.traces":{pathname:"/explore/traces/"},"explore.logs":{pathname:"/explore/logs/"},"explore.metrics":{pathname:"/explore/metrics/"},"explore.errors":{pathname:"/explore/errors-v2/"},"explore.discover":{pathname:"/explore/discover/homepage/"},"explore.profiles":{pathname:"/explore/profiles/"},"explore.replays":{pathname:"/explore/replays/"},"explore.releases":{pathname:"/explore/releases/"},"explore.conversations":{pathname:"/explore/agents/"},"explore.all-queries":{pathname:"/explore/saved-queries/"},"dashboards.all":{pathname:"/dashboards/"},"dashboards.sentry-built":{pathname:"/dashboards/",query:{filter:"onlyPrebuilt",sort:"mostPopular"}},"monitors.all":{pathname:"/monitors/"},"monitors.mine":{pathname:"/monitors/my-monitors/"},"monitors.error":{pathname:"/monitors/errors/"},"monitors.metric":{pathname:"/monitors/metrics/"},"monitors.cron":{pathname:"/monitors/crons/"},"monitors.uptime":{pathname:"/monitors/uptime/"},"monitors.mobile-build":{pathname:"/monitors/mobile-builds/"},"monitors.alerts":{pathname:"/monitors/alerts/"},"seer.ask":{pathname:"/issues/autofix/"}},EXPLORE_DISCOVER="explore.events",MONITOR_DETECTORS="monitors.detectors",SAVED_VIEW_STATE_KEY="issues.saved-view",REPLAY_DETAIL_STATE_KEY="explore.replay-detail",DASHBOARD_LIST="dashboards.list",DASHBOARD_DETAIL_STATE_KEY="dashboards.detail",DISCOVER_DEFAULTS={query:"",statsPeriod:DEFAULT_LOG_PERIOD},REPLAY_DEFAULTS={query:"",statsPeriod:DEFAULT_REPLAY_PERIOD},ISSUE_VIEW_IDS={Feed:"issues.feed",Inbox:"issues.inbox","Errors & Outages":"issues.errors-outages","Breached Metrics":"issues.breached-metrics",Warnings:"issues.warnings",Configuration:"issues.configuration","User Feedback":"issues.user-feedback","Recently Run":"issues.recently-run"},ISSUE_SCREENS=[...ISSUE_VIEWS.map((view)=>({id:ISSUE_VIEW_IDS[view.label],group:"issues",item:view.label,kind:"table",production:SCREEN_PRODUCTION_LOCATIONS[ISSUE_VIEW_IDS[view.label]],defaults:{query:view.query,sort:view.sort,statsPeriod:DEFAULT_STATS_PERIOD}})),s("issues.all-views","issues",ALL_VIEWS_LABEL,"table")],SCREENS=[...ISSUE_SCREENS,exploreTable("explore.traces","Traces"),logsScreen(),exploreTable("explore.metrics","Metrics"),exploreTable("explore.errors","Errors"),profilesScreen(),releasesScreen(),s("explore.replays","explore","Replays","table",void 0,REPLAY_DEFAULTS),exploreTable("explore.conversations","Conversations"),s("explore.discover","explore","Discover","table"),s("explore.all-queries","explore","All Queries","table"),s("dashboards.all","dashboards","All Dashboards","table",DASHBOARD_LIST),s("dashboards.sentry-built","dashboards","Sentry Built","table",DASHBOARD_LIST),s("monitors.all","monitors","All Monitors","table",MONITOR_DETECTORS),s("monitors.mine","monitors","My Monitors","table",MONITOR_DETECTORS),s("monitors.error","monitors","Error","table",MONITOR_DETECTORS),s("monitors.metric","monitors","Metric","table",MONITOR_DETECTORS),s("monitors.cron","monitors","Cron","table",MONITOR_DETECTORS),s("monitors.uptime","monitors","Uptime","table",MONITOR_DETECTORS),s("monitors.mobile-build","monitors","Mobile Build","table",MONITOR_DETECTORS),s("monitors.alerts","monitors","Alerts","table"),s("seer.ask","seer","Ask Seer","chat")];function logsScreen(){return{...s("explore.logs","explore","Logs","table",EXPLORE_DISCOVER,DISCOVER_DEFAULTS),openLabel:"details"}}function profilesScreen(){return{...s("explore.profiles","explore","Profiles","table",EXPLORE_DISCOVER,DISCOVER_DEFAULTS),openLabel:"details"}}function releasesScreen(){return{...s("explore.releases","explore","Releases","cards",void 0,{query:"",statsPeriod:DEFAULT_RELEASE_PERIOD}),openLabel:"expand"}}function exploreTable(id,item){return{...s(id,"explore",item,"table",EXPLORE_DISCOVER,DISCOVER_DEFAULTS),openLabel:"details"}}function s(id,group,item,kind,stateKey,defaults){return{id,group,item,kind,production:SCREEN_PRODUCTION_LOCATIONS[id],stateKey,defaults}}var BY_ROUTE=new Map(SCREENS.map((screen)=>[routeKey(screen.group,screen.item),screen])),BY_ID2=new Map(SCREENS.map((screen)=>[screen.id,screen]));function routeKey(group,item){return`${group}::${item}`}function findScreen(group,item){return BY_ROUTE.get(routeKey(group,item))}function getScreen(id){let screen=BY_ID2.get(id);if(!screen)throw Error(`Unknown screen id: ${id}`);return screen}function stateKeyOf(screen){return screen.stateKey??screen.id}function defaultsForStateKey(key){return SCREENS.find((screen)=>stateKeyOf(screen)===key)?.defaults??{}}import{countMetric as countMetric2}from"h:7___________________________________";var ORG_SLUG=/^[a-z0-9][a-z0-9_-]*$/i,NUMERIC_ID=/^\d+$/,NON_ORG_SUBDOMAINS=new Set(["www","us","eu"]),ISSUE_SCREENS2={inbox:"issues.inbox","errors-outages":"issues.errors-outages","breached-metrics":"issues.breached-metrics",warnings:"issues.warnings","sentry-configuration":"issues.configuration",feedback:"issues.user-feedback","user-feedback":"issues.user-feedback",alerts:"monitors.alerts"},EXPLORE_SCREENS={traces:"explore.traces",logs:"explore.logs",metrics:"explore.metrics",errors:"explore.errors","errors-v2":"explore.errors",profiles:"explore.profiles",profiling:"explore.profiles",replays:"explore.replays",releases:"explore.releases",agents:"explore.conversations",conversations:"explore.conversations","saved-queries":"explore.all-queries"},MONITOR_SCREENS={"my-monitors":"monitors.mine",errors:"monitors.error",metrics:"monitors.metric",crons:"monitors.cron",uptime:"monitors.uptime","mobile-builds":"monitors.mobile-build",alerts:"monitors.alerts"};function parseSentryUrl(input){let raw=input.trim();if(!raw)return invalid("empty","Enter a full Sentry production URL.");let url;try{url=new URL(raw)}catch{return invalid("malformed","That is not a valid URL.")}if(url.protocol!=="https:")return invalid("protocol","Sentry production URLs must use https.");if(!isProductionHost(url.hostname))return invalid("host","That URL is not hosted on sentry.io.");let segments;try{segments=url.pathname.split("/").filter(Boolean).map(decodeURIComponent)}catch{return invalid("malformed","The URL path contains invalid escaping.")}let pathOrg;if(segments[0]==="organizations")pathOrg=segments[1],segments=segments.slice(2);let hostOrg=organizationFromHost(url.hostname);if(pathOrg&&hostOrg&&pathOrg!==hostOrg)return invalid("organization_mismatch","The organizations in the Sentry hostname and URL path do not match.");let matched=matchRoute(segments,url.searchParams);if(matched.kind==="unsupported")return matched;let org=pathOrg??hostOrg;if(!org||!ORG_SLUG.test(org))return invalid("organization","The URL does not identify a Sentry organization.");let seerRunId=seerRunIdFrom(url.searchParams);return{kind:"location",location:{org,...matched.location,...seerRunId===void 0?{}:{screen:"seer.ask"},state:stateFrom(url.searchParams),...seerRunId===void 0?{}:{seerRunId}}}}function buildSentryUrl(location){let url=new URL(`https://${location.org}.sentry.io`),target=targetFor(location);url.pathname=target.pathname,applyState(url.searchParams,location.state);for(let[key,value]of Object.entries(target.query??{}))url.searchParams.set(key,value);if(location.seerRunId!==void 0)url.pathname="/issues/",url.searchParams.set("explorerRunId",String(location.seerRunId));return url.toString()}function recordSentryUrlFailure(failure,surface){if(failure.kind==="invalid")countMetric2("nav.url.invalid",{surface,reason:failure.reason});else countMetric2("nav.url.unsupported",{surface,family:failure.family})}function isProductionHost(hostname){return hostname==="sentry.io"||hostname.endsWith(".sentry.io")}function organizationFromHost(hostname){if(!hostname.endsWith(".sentry.io"))return;let prefix=hostname.slice(0,-10);if(!prefix||prefix.includes(".")||NON_ORG_SUBDOMAINS.has(prefix))return;return prefix}function matchRoute(segments,query){let[root,...rest]=segments;if(root==="issues")return matchIssues(rest);if(root==="explore")return matchExplore(rest,query);if(root==="dashboard"||root==="dashboards")return matchDashboards(root,rest,query);if(root==="monitors")return matchMonitors(rest);if(root==="traces")return topLevel("explore.traces",rest,"explore");if(root==="logs")return topLevel("explore.logs",rest,"explore");if(root==="profiling")return topLevel("explore.profiles",rest,"explore");if(root==="replays")return matchReplayAlias(rest);if(root==="releases")return topLevel("explore.releases",rest,"explore");if(root==="discover")return matchLegacyDiscover(rest,query);if(root==="errors-v2")return topLevel("explore.errors",rest,"explore");if(root==="feedback"&&rest.length===0)return matched("issues.user-feedback");return unsupported(root==="settings"?"settings":root==="projects"?"projects":"other")}function matchIssues(rest){if(rest.length===0)return matched("issues.feed");let screen=ISSUE_SCREENS2[rest[0]];if(screen&&rest.length===1)return matched(screen);if(rest[0]==="views"&&rest.length===1)return matched("issues.all-views");if(rest[0]==="views"&&rest[1]&&rest.length===2)return matched("issues.all-views",{kind:"issue_view",viewId:rest[1]});if(rest[0]==="autofix"&&rest.length===1)return matched("seer.ask");if(rest[0]==="autofix"&&rest[1]==="recent"&&rest.length===2)return matched("issues.recently-run");let issueId=rest[0];if(issueId&&NUMERIC_ID.test(issueId)){if(rest.length===1)return matched("issues.feed",{kind:"issue",issueId});if(rest[1]==="events"&&rest[2]&&rest.length===3)return matched("issues.feed",{kind:"issue",issueId,eventId:rest[2]})}return unsupported("issues")}function matchExplore(rest,query){let product=rest[0];if(!product)return unsupported("explore");if(product==="replays"){if(rest.length===1)return matched("explore.replays");if(rest.length===2&&rest[1])return matched("explore.replays",{kind:"replay",replayId:rest[1]});return unsupported("explore")}if(product==="discover"){if(rest.length===1||rest.length===2&&["homepage","queries"].includes(rest[1]))return matched("explore.discover");if(rest.length===2&&rest[1]==="results"){let screen2=discoverScreen(query.get("dataset"));return screen2?matched(screen2):unsupported("explore")}return unsupported("explore")}let screen=EXPLORE_SCREENS[product];if(!screen||rest.length!==1)return unsupported("explore");let queryId=query.get("id");return queryId?matched(screen,{kind:"saved_query",queryId,source:"explore",resultScreen:screen,dataset:query.get("dataset")??void 0,title:query.get("title")??void 0}):matched(screen)}function matchLegacyDiscover(rest,query){if(rest.length===0)return matched("explore.discover");if(rest.length!==1||rest[0]!=="results")return unsupported("explore");let queryId=query.get("id");return queryId?matched("explore.discover",{kind:"saved_query",queryId,source:"discover",resultScreen:"explore.discover",dataset:query.get("dataset")??void 0,title:query.get("title")??void 0}):matched("explore.discover")}function discoverScreen(dataset){switch(dataset?.toLowerCase()){case"spans":return"explore.traces";case"logs":return"explore.logs";case"metrics":case"tracemetrics":return"explore.metrics";case"errors":case"issueplatform":return"explore.errors";default:return}}function matchDashboards(root,rest,query){if(root==="dashboards"&&rest.length===0)return matched(query.get("filter")==="onlyPrebuilt"?"dashboards.sentry-built":"dashboards.all");if(rest.length===1&&rest[0])return matched("dashboards.all",{kind:"dashboard",dashboardId:rest[0]});return unsupported("dashboards")}function matchMonitors(rest){if(rest.length===0)return matched("monitors.all");let screen=MONITOR_SCREENS[rest[0]];if(screen&&rest.length===1)return matched(screen);if(rest.length===1&&rest[0]&&NUMERIC_ID.test(rest[0]))return matched("monitors.all",{kind:"monitor",detectorId:rest[0]});return unsupported("monitors")}function matchReplayAlias(rest){if(rest.length===0)return matched("explore.replays");if(rest.length===1&&rest[0])return matched("explore.replays",{kind:"replay",replayId:rest[0]});return unsupported("explore")}function topLevel(screen,rest,family){return rest.length===0?matched(screen):unsupported(family)}function matched(screen,detail){return{kind:"matched",location:{screen,detail}}}function stateFrom(query){let value={},search=query.get("query"),statsPeriod=query.get("statsPeriod"),sort=query.get("sort"),projects=query.getAll("project").filter(Boolean),environments=query.getAll("environment").filter(Boolean),fields=query.getAll("field").filter(Boolean);if(search!==null)value.query=search;if(statsPeriod)value.statsPeriod=statsPeriod;if(sort)value.sort=sort;if(projects.length>0)value.selectedProjects=projects;if(environments.length>0)value.selectedEnvs=environments;if(fields.length>0)value.fields=fields;return Object.keys(value).length>0?value:void 0}function seerRunIdFrom(query){let value=query.get("explorerRunId");if(!value)return;return/^\d+$/.test(value)?Number(value):value}function targetFor(location){let detail=location.detail;if(!detail)return getScreen(location.screen).production;switch(detail.kind){case"issue":return{pathname:detail.eventId?`/issues/${encodeURIComponent(detail.issueId)}/events/${encodeURIComponent(detail.eventId)}/`:`/issues/${encodeURIComponent(detail.issueId)}/`};case"dashboard":return{pathname:`/dashboard/${encodeURIComponent(detail.dashboardId)}/`};case"replay":return{pathname:`/explore/replays/${encodeURIComponent(detail.replayId)}/`};case"monitor":return{pathname:`/monitors/${encodeURIComponent(detail.detectorId)}/`};case"issue_view":return{pathname:`/issues/views/${encodeURIComponent(detail.viewId)}/`};case"saved_query":return{...detail.source==="discover"?{pathname:"/discover/results/"}:getScreen(detail.resultScreen).production,query:{id:detail.queryId,...detail.dataset?{dataset:detail.dataset}:{},...detail.title?{title:detail.title}:{}}}}}function applyState(query,state){if(!state)return;if(state.query!==void 0)query.set("query",state.query);if(state.statsPeriod)query.set("statsPeriod",state.statsPeriod);if(state.sort)query.set("sort",state.sort);for(let project of state.selectedProjects??[])query.append("project",project);for(let environment of state.selectedEnvs??[])query.append("environment",environment);for(let field of state.fields??[])query.append("field",field)}function invalid(reason,message){return{kind:"invalid",reason,message}}function unsupported(family){return{kind:"unsupported",family,message:"That Sentry page is not implemented in sentry-tui yet."}}var APP_SESSION_SNAPSHOT_KIND="sentry-tui.session",APP_SESSION_SNAPSHOT_VERSION=1;function createAppSessionSnapshot(value){return{kind:APP_SESSION_SNAPSHOT_KIND,version:APP_SESSION_SNAPSHOT_VERSION,...value}}function restoreAppSessionSnapshot(value){if(!isRecord2(value)||value.kind!==APP_SESSION_SNAPSHOT_KIND)return;switch(value.version){case APP_SESSION_SNAPSHOT_VERSION:return restoreV1(value);default:return}}function restoreV1(value){let org=nonEmptyString(value.org),navigation=navigationSnapshot(value.navigation),projectsByOrg=stringArrayRecord(value.projectsByOrg),seerCodeModeByOrg=codeModeRecord(value.seerCodeModeByOrg),seerBashModeByOrg=booleanRecord(value.seerBashModeByOrg),seerShowThinkingByOrg=booleanRecord(value.seerShowThinkingByOrg),seerRunId=runId(value.seerRunId);if(!org||!navigation||!projectsByOrg||!seerCodeModeByOrg||!seerBashModeByOrg||!seerShowThinkingByOrg||seerRunId===null)return;let location=parsedLocation(navigation.location,org);if(!location)return;let viewStack=[];for(let url of navigation.viewStack){let view=parsedLocation(url,org);if(!view?.detail)return;viewStack.push(view)}return{snapshot:{kind:APP_SESSION_SNAPSHOT_KIND,version:APP_SESSION_SNAPSHOT_VERSION,org,navigation,projectsByOrg,seerCodeModeByOrg,seerBashModeByOrg,seerShowThinkingByOrg,...seerRunId===void 0?{}:{seerRunId}},location,viewStack}}function navigationSnapshot(value){if(!isRecord2(value)||typeof value.location!=="string")return;if(!Array.isArray(value.viewStack)||value.viewStack.length>32||!value.viewStack.every((url)=>typeof url==="string"))return;let screens=screenSnapshotRecord(value.screens);if(!screens)return;return{location:value.location,viewStack:[...value.viewStack],screens}}function screenSnapshotRecord(value){if(!isRecord2(value))return;let entries=Object.entries(value);if(entries.length>256)return;let screens=Object.create(null);for(let[key,raw]of entries){let screen=screenSnapshot(raw);if(!key||!screen)return;screens[key]=screen}return screens}function screenSnapshot(value){if(!isRecord2(value))return;let source=value.source===null?null:nonEmptyString(value.source),selected=value.selected,selectedProjects=stringArray(value.selectedProjects),selectedEnvs=stringArray(value.selectedEnvs);if(source===void 0&&value.source!==null||!Number.isSafeInteger(selected)||selected<0||typeof value.query!=="string"||typeof value.sort!=="string"||typeof value.statsPeriod!=="string"||!selectedProjects||!selectedEnvs||typeof value.detailOpen!=="boolean")return;return{source:source??null,selected,query:value.query,sort:value.sort,statsPeriod:value.statsPeriod,selectedProjects,selectedEnvs,detailOpen:value.detailOpen}}function parsedLocation(url,org){let result=parseSentryUrl(url);return result.kind==="location"&&result.location.org===org?result.location:void 0}function stringArrayRecord(value){if(!isRecord2(value))return;let result=Object.create(null);for(let[key,raw]of Object.entries(value)){let values=stringArray(raw);if(!key||!values)return;result[key]=values}return result}function booleanRecord(value){if(!isRecord2(value))return;let result=Object.create(null);for(let[key,raw]of Object.entries(value)){if(!key||typeof raw!=="boolean")return;result[key]=raw}return result}function codeModeRecord(value){if(!isRecord2(value))return;let result=Object.create(null);for(let[key,raw]of Object.entries(value)){if(!key||raw!=="off"&&raw!=="on"&&raw!=="only")return;result[key]=raw}return result}function stringArray(value){return Array.isArray(value)&&value.every((item)=>typeof item==="string")?[...value]:void 0}function runId(value){if(value===void 0)return;if(typeof value==="string"&&value.length>0)return value;if(typeof value==="number"&&Number.isFinite(value))return value;return null}function nonEmptyString(value){return typeof value==="string"&&value.length>0?value:void 0}function isRecord2(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}import{createContext,useContext,useEffect,useState}from"h:0__";var darkTheme={mode:"dark",bg:"#0D0A10",panel:"#1B1821",panelAlt:"#24202B",chip:{surface:"#2D2835",rim:"#46404F",rimShadow:"#393442"},selected:"#26212E",border:"#393442",borderFocused:"#7553FF",text:"#E7E5EA",muted:"#A49EAE",subText:"#958E9F",accent:"#7553FF",danger:"#F6938C",warning:"#FFCE00",success:"#5ECE73",highlight:"#FF45A8",hotkey:"#FF45A8",syntax:{keyword:"#F6938C",string:"#5ECE73",number:"#FF9838",comment:"#A49EAE",function:"#9A94F1",type:"#FFCE00",variable:"#E7E5EA",constant:"#FF9838",operator:"#A49EAE",punctuation:"#A49EAE"},level:{fatal:"#C10000",error:"#FF9838",warning:"#FFCE00",info:"#7553FF",sample:"#7553FF",unknown:"#958E9F"},status:{resolved:"#5ECE73",regressed:"#9A94F1",escalating:"#F6938C",new:"#FFCE00",ongoing:"#A49EAE",archived:"#A49EAE"}},lightTheme={mode:"light",bg:"#FFFFFF",panel:"#F8F8F9",panelAlt:"#EEEEF0",chip:{surface:"#E8E8EB",rim:"#CDCCD2",rimShadow:"#B1AFB8"},selected:"#E8E8EB",border:"#C0BEC6",borderFocused:"#5827D6",text:"#302E36",muted:"#5B5864",subText:"#6A6772",accent:"#5827D6",danger:"#C10000",warning:"#813100",success:"#007800",highlight:"#9F005F",hotkey:"#9F005F",syntax:{keyword:"#C10000",string:"#007800",number:"#934100",comment:"#5B5864",function:"#5533B2",type:"#813100",variable:"#302E36",constant:"#C10000",operator:"#5B5864",punctuation:"#5B5864"},level:{fatal:"#780000",error:"#C10000",warning:"#813100",info:"#5827D6",sample:"#5827D6",unknown:"#5B5864"},status:{resolved:"#007800",regressed:"#5533B2",escalating:"#C10000",new:"#813100",ongoing:"#5B5864",archived:"#5B5864"}};function themeFor(mode){return mode==="light"?lightTheme:darkTheme}var syntaxStyles=new Map;async function getSyntaxStyle(selectedTheme){let cached=syntaxStyles.get(selectedTheme.mode);if(cached)return cached;let{SyntaxStyle}=await import("h:3__________"),style=SyntaxStyle.fromStyles({default:{fg:selectedTheme.text},keyword:{fg:selectedTheme.syntax.keyword},string:{fg:selectedTheme.syntax.string},number:{fg:selectedTheme.syntax.number},comment:{fg:selectedTheme.syntax.comment,italic:!0},function:{fg:selectedTheme.syntax.function},type:{fg:selectedTheme.syntax.type},variable:{fg:selectedTheme.syntax.variable},constant:{fg:selectedTheme.syntax.constant},operator:{fg:selectedTheme.syntax.operator},punctuation:{fg:selectedTheme.syntax.punctuation}});return syntaxStyles.set(selectedTheme.mode,style),style}import{jsxDEV}from"h:6___________________________";var ThemeContext=createContext(darkTheme);function useTheme(){return useContext(ThemeContext)}function ThemeProvider({source,initialMode,fixed,children}){let[mode,setMode]=useState(initialMode);return useEffect(()=>{if(fixed)return;let updateMode=(nextMode)=>setMode(nextMode);if(source.on("theme_mode",updateMode),source.themeMode)setMode(source.themeMode);return()=>{source.off("theme_mode",updateMode)}},[fixed,source]),jsxDEV(ThemeContext.Provider,{value:themeFor(mode),children},void 0,!1,void 0,this)}var GroupStatus={RESOLVED:"resolved",UNRESOLVED:"unresolved",IGNORED:"ignored",REPROCESSING:"reprocessing"},GroupSubstatus={ARCHIVED_UNTIL_ESCALATING:"archived_until_escalating",ARCHIVED_UNTIL_CONDITION_MET:"archived_until_condition_met",ARCHIVED_FOREVER:"archived_forever",ESCALATING:"escalating",ONGOING:"ongoing",REGRESSED:"regressed",NEW:"new"};function findEntry(entries,type){if(!Array.isArray(entries))return;return entries.find((e)=>e.type===type)}function applyUpdate(group,update){let next={...group};if(update.status!==void 0)next.status=update.status;if(update.substatus!==void 0)next.substatus=update.substatus;if(update.isBookmarked!==void 0)next.isBookmarked=update.isBookmarked;if(update.isSubscribed!==void 0)next.isSubscribed=update.isSubscribed;if(update.hasSeen!==void 0)next.hasSeen=update.hasSeen;if(update.priority!==void 0)next.priority=update.priority;if(update.inbox===!1)next.hasSeen=!0;return next}var TRIAGE_ACTIONS=[{commandId:"sentry.issue.resolve",pastTense:"resolved",update:(group)=>group.status===GroupStatus.RESOLVED?null:{status:GroupStatus.RESOLVED}},{commandId:"sentry.issue.archive",pastTense:"archived",update:(group)=>group.status===GroupStatus.IGNORED?{status:GroupStatus.UNRESOLVED}:{status:GroupStatus.IGNORED,substatus:GroupSubstatus.ARCHIVED_UNTIL_ESCALATING}},{commandId:"sentry.issue.unresolve",pastTense:"unresolved",update:(group)=>group.status===GroupStatus.UNRESOLVED?null:{status:GroupStatus.UNRESOLVED}},{commandId:"sentry.issue.bookmark",pastTense:"bookmarked",update:(group)=>({isBookmarked:!group.isBookmarked})},{commandId:"sentry.issue.markReviewed",pastTense:"marked reviewed",update:(group)=>group.hasSeen?null:{inbox:!1,hasSeen:!0}}];function findTriageAction(commandId){return TRIAGE_ACTIONS.find((action)=>action.commandId===commandId)}function noOpNotice(commandId){switch(commandId){case"sentry.issue.resolve":return"already resolved";case"sentry.issue.unresolve":return"already unresolved";case"sentry.issue.markReviewed":return"already reviewed";default:return"nothing to do"}}import{breadcrumb as leaveCrumb,identify,log as log2,reportError as reportError3}from"h:7___________________________________";import{useEffect as useEffect2,useMemo,useState as useState2}from"h:0__";import{useKeyboard,useTerminalDimensions as useTerminalDimensions2}from"h:4___________";function ansiRegex({onlyFirst=!1}={}){return new RegExp("(?:\\u001B\\][^\\u0007\\u001B\\u009C]*(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",onlyFirst?void 0:"g")}var regex=ansiRegex();function stripAnsi(string){if(typeof string!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof string}\``);return string.replace(regex,"")}var ambiguousMinimalCodePoint=161,ambiguousMaximumCodePoint=1114109,ambiguousRanges=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],fullwidthMinimalCodePoint=12288,fullwidthMaximumCodePoint=65510,fullwidthRanges=[12288,12288,65281,65376,65504,65510];var wideMinimalCodePoint=4352,wideMaximumCodePoint=262141,wideRanges=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141];var isInRange=(ranges,codePoint)=>{let low=0,high=Math.floor(ranges.length/2)-1;while(low<=high){let mid=Math.floor((low+high)/2),i=mid*2;if(codePoint<ranges[i])high=mid-1;else if(codePoint>ranges[i+1])low=mid+1;else return!0}return!1};var commonCjkCodePoint=19968,[wideFastPathStart,wideFastPathEnd]=findWideFastPathRange(wideRanges);function findWideFastPathRange(ranges){let fastPathStart=ranges[0],fastPathEnd=ranges[1];for(let index=0;index<ranges.length;index+=2){let start=ranges[index],end=ranges[index+1];if(commonCjkCodePoint>=start&&commonCjkCodePoint<=end)return[start,end];if(end-start>fastPathEnd-fastPathStart)fastPathStart=start,fastPathEnd=end}return[fastPathStart,fastPathEnd]}var isAmbiguous=(codePoint)=>{if(codePoint<ambiguousMinimalCodePoint||codePoint>ambiguousMaximumCodePoint)return!1;return isInRange(ambiguousRanges,codePoint)},isFullWidth=(codePoint)=>{if(codePoint<fullwidthMinimalCodePoint||codePoint>fullwidthMaximumCodePoint)return!1;return isInRange(fullwidthRanges,codePoint)};var isWide=(codePoint)=>{if(codePoint>=wideFastPathStart&&codePoint<=wideFastPathEnd)return!0;if(codePoint<wideMinimalCodePoint||codePoint>wideMaximumCodePoint)return!1;return isInRange(wideRanges,codePoint)};function validate(codePoint){if(!Number.isSafeInteger(codePoint))throw TypeError(`Expected a code point, got \`${typeof codePoint}\`.`)}function eastAsianWidth(codePoint,{ambiguousAsWide=!1}={}){if(validate(codePoint),isFullWidth(codePoint)||isWide(codePoint)||ambiguousAsWide&&isAmbiguous(codePoint))return 2;return 1}var segmenter=new Intl.Segmenter,zeroWidthClusterRegex=/^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Format}|\p{Nonspacing_Mark}|\p{Enclosing_Mark}|\p{Surrogate})+$/v,leadingNonPrintingRegex=/^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Nonspacing_Mark}\p{Enclosing_Mark}\p{Surrogate}]+/v,spacingMarkRegex=/\p{Spacing_Mark}/v,rgiEmojiRegex=/^\p{RGI_Emoji}$/v,unqualifiedKeycapRegex=/^[\d#*]\u20E3$/,extendedPictographicRegex=/\p{Extended_Pictographic}/gu;function isDoubleWidthNonRgiEmojiSequence(segment){if(segment.length>50)return!1;if(unqualifiedKeycapRegex.test(segment))return!0;if(segment.includes("\u200D")){let pictographics=segment.match(extendedPictographicRegex);return pictographics!==null&&pictographics.length>=2}return!1}function baseVisible(segment){return segment.replace(leadingNonPrintingRegex,"")}function isZeroWidthCluster(segment){return zeroWidthClusterRegex.test(segment)}function isHangulLeadingJamo(codePoint){return codePoint>=4352&&codePoint<=4447||codePoint>=43360&&codePoint<=43388}function isHangulVowelJamo(codePoint){return codePoint>=4448&&codePoint<=4519||codePoint>=55216&&codePoint<=55238}function isHangulTrailingJamo(codePoint){return codePoint>=4520&&codePoint<=4607||codePoint>=55243&&codePoint<=55291}function isHangulJamo(codePoint){return isHangulLeadingJamo(codePoint)||isHangulVowelJamo(codePoint)||isHangulTrailingJamo(codePoint)}function hangulClusterWidth(visibleSegment,eastAsianWidthOptions){let codePoints=[];for(let character of visibleSegment){if(zeroWidthClusterRegex.test(character))continue;codePoints.push(character.codePointAt(0))}if(codePoints.length===0)return;let width=0;for(let index=0;index<codePoints.length;index++){let codePoint=codePoints[index];if(!isHangulJamo(codePoint)){if(width===0)return;for(let remaining=index;remaining<codePoints.length;remaining++)width+=eastAsianWidth(codePoints[remaining],eastAsianWidthOptions);return width}if(isHangulLeadingJamo(codePoint)&&isHangulVowelJamo(codePoints[index+1])){width+=2,index+=isHangulTrailingJamo(codePoints[index+2])?2:1;continue}width+=eastAsianWidth(codePoint,eastAsianWidthOptions)}return width}function trailingWidth(visibleSegment,eastAsianWidthOptions){let extra=0,first=!0;for(let character of visibleSegment){if(first){first=!1;continue}if(spacingMarkRegex.test(character)||character>="\uFF00"&&character<="\uFFEF")extra+=eastAsianWidth(character.codePointAt(0),eastAsianWidthOptions)}return extra}function stringWidth(input,options={}){if(typeof input!=="string"||input.length===0)return 0;let{ambiguousIsNarrow=!0,countAnsiEscapeCodes=!1}=options,string=input;if(!countAnsiEscapeCodes&&(string.includes("\x1B")||string.includes("\x9B")))string=stripAnsi(string);if(string.length===0)return 0;if(/^[\u0020-\u007E]*$/.test(string))return string.length;let width=0,eastAsianWidthOptions={ambiguousAsWide:!ambiguousIsNarrow};for(let{segment}of segmenter.segment(string)){if(isZeroWidthCluster(segment))continue;if(rgiEmojiRegex.test(segment)||isDoubleWidthNonRgiEmojiSequence(segment)){width+=2;continue}let visibleSegment=baseVisible(segment),hangulWidth=hangulClusterWidth(visibleSegment,eastAsianWidthOptions);if(hangulWidth!==void 0){width+=hangulWidth;continue}let codePoint=visibleSegment.codePointAt(0);width+=eastAsianWidth(codePoint,eastAsianWidthOptions),width+=trailingWidth(visibleSegment,eastAsianWidthOptions)}return width}function measureTextWidth(text){return stringWidth(text)}var OSC_SEQUENCE=/\u001b\][\s\S]*?(?:\u0007|\u001b\\)/g,ESCAPE_SEQUENCE=/\u001b(?:\[[0-9;?]*[ -/]*[@-~]|[@-Z\\-_])/g,LINE_BREAK=/[\n\r\t\v\f\u0085\u2028\u2029]+/g,NON_NEWLINE_CONTROL=/[\u0000-\u0009\u000b-\u001f\u007f-\u009f\u2028\u2029]/g,CONTROL=/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/g;function stripEscapeSequences(text){return text.replace(OSC_SEQUENCE,"").replace(ESCAPE_SEQUENCE,"")}function sanitizeText(text){if(!/[\u0000-\u0009\u000b-\u001f\u007f-\u009f\u2028\u2029]/.test(text))return text;return stripEscapeSequences(text).replace(NON_NEWLINE_CONTROL,"")}function sanitizeLine(text){if(!/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/.test(text))return text;return stripEscapeSequences(text).replace(LINE_BREAK," ").replace(CONTROL,"")}function fitText(input,width,ellipsis="\u2026"){if(width<=0)return"";let text=sanitizeLine(input);if(measureTextWidth(text)<=width)return text;let ellipsisWidth=measureTextWidth(ellipsis);if(width<=ellipsisWidth)return ellipsis.slice(0,width);let budget=width-ellipsisWidth,out="",used=0;for(let char of text){let w=measureTextWidth(char);if(used+w>budget)break;out+=char,used+=w}return out+ellipsis}function wrapText(text,width){if(width<=0)return[];let lines=[];for(let paragraph of sanitizeText(text).split(`
|
|
10
|
+
`)){if(paragraph===""){lines.push("");continue}let current="";for(let word of paragraph.split(" ")){let candidate=current===""?word:`${current} ${word}`;if(measureTextWidth(candidate)<=width){current=candidate;continue}if(current!=="")lines.push(current),current="";let rest=word;while(measureTextWidth(rest)>width){let chunk="",used=0;for(let char of rest){let w=measureTextWidth(char);if(used+w>width)break;chunk+=char,used+=w}lines.push(chunk),rest=rest.slice(chunk.length)}current=rest}lines.push(current)}return lines}function padText(text,width,align="left"){let fitted=fitText(text,width),slack=Math.max(0,width-measureTextWidth(fitted));if(align==="center"){let left=Math.floor(slack/2);return" ".repeat(left)+fitted+" ".repeat(slack-left)}let pad=" ".repeat(slack);return align==="left"?fitted+pad:pad+fitted}function middleEllipsis(input,width,ellipsis="\u2026"){if(width<=0)return"";let text=sanitizeLine(input);if(measureTextWidth(text)<=width)return text;let ellipsisWidth=measureTextWidth(ellipsis);if(width<=ellipsisWidth)return ellipsis.slice(0,width);let budget=width-ellipsisWidth,headBudget=Math.ceil(budget/2),tailBudget=budget-headBudget,characters=[...text],head="",used=0;for(let character of characters){let w=measureTextWidth(character);if(used+w>headBudget)break;head+=character,used+=w}let tail="";used=0;for(let i=characters.length-1;i>=0;i--){let character=characters[i],w=measureTextWidth(character);if(used+w>tailBudget)break;tail=character+tail,used+=w}return head+ellipsis+tail}import{jsxDEV as jsxDEV2}from"h:6___________________________";function HighlightedLabel({text,positions,width,fg}){let theme=useTheme(),fitted=fitText(text,width),visible=fitted===text?fitted.length:Math.max(0,fitted.length-1),matched2=new Set(positions),spans=[],buffer="",bufferMatched=!1,flush=()=>{if(!buffer)return;spans.push(jsxDEV2("span",{fg:bufferMatched?theme.accent:fg,children:buffer},spans.length,!1,void 0,this)),buffer=""};for(let i=0;i<fitted.length;i++){let isMatch=i<visible&&matched2.has(i);if(isMatch!==bufferMatched)flush(),bufferMatched=isMatch;buffer+=fitted[i]}return flush(),jsxDEV2("text",{children:spans},void 0,!1,void 0,this)}import{useTerminalDimensions}from"h:4___________";function resolveModalGeometry({width,height,terminalWidth,terminalHeight,margin=2}){let clampedWidth=Math.max(1,Math.min(width,terminalWidth-margin*2)),clampedHeight=Math.max(1,Math.min(height,terminalHeight-margin*2));return{width:clampedWidth,height:clampedHeight,left:Math.max(0,Math.floor((terminalWidth-clampedWidth)/2)),top:Math.max(0,Math.floor((terminalHeight-clampedHeight)/2))}}function listWindowStart(selectedIndex,rowCount,visibleRows){if(rowCount<=visibleRows)return 0;let centered=selectedIndex-Math.floor(visibleRows/2);return Math.min(Math.max(centered,0),rowCount-visibleRows)}import{jsxDEV as jsxDEV3,Fragment}from"h:6___________________________";var SCRIM_Z=55,FRAME_Z=60;function ModalFrame({title,width,height,onClose,children}){let theme=useTheme(),{width:termWidth,height:termHeight}=useTerminalDimensions(),geo=resolveModalGeometry({width,height,terminalWidth:termWidth,terminalHeight:termHeight});return jsxDEV3(Fragment,{children:[jsxDEV3("box",{style:{position:"absolute",top:0,left:0,width:termWidth,height:termHeight,zIndex:SCRIM_Z},onMouseUp:onClose},void 0,!1,void 0,this),jsxDEV3("box",{title,style:{position:"absolute",top:geo.top,left:geo.left,width:geo.width,height:geo.height,zIndex:FRAME_Z,border:!0,borderColor:theme.accent,backgroundColor:theme.panel,flexDirection:"column",paddingTop:1,paddingRight:1,paddingBottom:0,paddingLeft:1},onMouseUp:(event)=>event.stopPropagation(),children},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function isTypingSafeDown(key){return key.name==="down"||key.name==="n"&&Boolean(key.ctrl)}function isTypingSafeUp(key){return key.name==="up"||key.name==="p"&&Boolean(key.ctrl)}function consumeKey(key){key.preventDefault(),key.stopPropagation()}function routeKeyOwnership(handlers,key,consume=consumeKey){for(let handle of handlers){let owner=handle(key);if(owner==="notMine")continue;if(owner==="mine")consume(key);return!0}return!1}import{jsxDEV as jsxDEV4}from"h:6___________________________";var PALETTE_WIDTH=68,PALETTE_HEIGHT=24,PALETTE_CHROME=7,CURSOR_WIDTH=2,DETAIL_GAP=2,PALETTE_HINT="\u2191\u2193 move \xB7 enter select \xB7 esc close";function CommandPalette({actions,onRun,onClose}){let theme=useTheme(),{width:termWidth,height:termHeight}=useTerminalDimensions2(),[query,setQuery]=useState2(""),[cursor,setCursor]=useState2(0),{results,rows}=useMemo(()=>{let filtered=filterPaletteActions(actions,query),groups=groupPaletteResults(filtered,query.trim()?SECTION_LIMIT:void 0);return{results:groups.flatMap((group)=>group.results),rows:flattenPaletteRows(groups)}},[actions,query]);useEffect2(()=>setCursor(0),[query]),useKeyboard((key)=>{routeKeyOwnership([()=>{if(matchesCommand("sentry.nav.back",key))return onClose(),"mine";if(matchesCommand("sentry.app.commandPalette",key))return onClose(),"mine";if(matchesCommand("sentry.nav.open",key)){let action=results[cursor]?.action;if(action)onRun(action);return"mine"}if(isTypingSafeDown(key))return setCursor((c)=>Math.min(c+1,results.length-1)),"mine";if(isTypingSafeUp(key))return setCursor((c)=>Math.max(c-1,0)),"mine";return"notMine"}],key,consumeKey)});let geo=resolveModalGeometry({width:PALETTE_WIDTH,height:PALETTE_HEIGHT,terminalWidth:termWidth,terminalHeight:termHeight}),contentWidth=Math.max(1,geo.width-4),visibleRows=Math.max(1,geo.height-PALETTE_CHROME),windowStart=listWindowStart(Math.max(0,rowIndexOfResult(rows,cursor)),rows.length,visibleRows);return jsxDEV4(ModalFrame,{title:" Command palette ",width:PALETTE_WIDTH,height:PALETTE_HEIGHT,onClose,children:[jsxDEV4("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV4("text",{fg:theme.accent,children:"\u276F "},void 0,!1,void 0,this),jsxDEV4("input",{value:query,placeholder:"Search commands and destinations\u2026",focused:!0,onInput:setQuery,style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV4("box",{style:{flexGrow:1,flexDirection:"column",marginTop:1},children:rows.length===0?jsxDEV4("text",{fg:theme.muted,children:fitText(`No matches for "${query}"`,contentWidth)},void 0,!1,void 0,this):rows.slice(windowStart,windowStart+visibleRows).map((row)=>{if(row.kind==="heading")return jsxDEV4("text",{fg:theme.accent,children:row.section},`heading:${row.section}`,!1,void 0,this);if(row.kind==="more")return jsxDEV4("text",{fg:theme.subText,children:` +${row.count} more \u2014 keep typing`},`more:${row.section}`,!1,void 0,this);return jsxDEV4(PaletteRowView,{row,selected:row.index===cursor,width:contentWidth,onPress:()=>onRun(row.result.action)},row.result.action.id,!1,void 0,this)})},void 0,!1,void 0,this),jsxDEV4("box",{style:{flexDirection:"row",flexShrink:0,marginTop:1},children:[jsxDEV4("text",{fg:theme.muted,children:fitText(PALETTE_HINT,Math.max(0,contentWidth-APP_VERSION_LABEL.length-DETAIL_GAP))},void 0,!1,void 0,this),jsxDEV4("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV4("text",{fg:theme.subText,children:APP_VERSION_LABEL},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function PaletteRowView({row,selected,width,onPress}){let theme=useTheme(),{action,positions}=row.result,detail=action.detail??"",labelWidth=Math.max(1,width-CURSOR_WIDTH-(detail?detail.length+DETAIL_GAP:0));return jsxDEV4("box",{style:{flexDirection:"row",flexShrink:0,backgroundColor:selected?theme.selected:void 0},onMouseUp:onPress,children:[jsxDEV4("text",{fg:theme.accent,children:selected?"\u25B8 ":" "},void 0,!1,void 0,this),jsxDEV4(HighlightedLabel,{text:action.label,positions,width:labelWidth,fg:selected?theme.text:theme.muted},void 0,!1,void 0,this),jsxDEV4("box",{style:{flexGrow:1}},void 0,!1,void 0,this),detail?jsxDEV4("text",{fg:theme.subText,children:detail},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{TextAttributes}from"h:3__________";var BOLD=TextAttributes.BOLD,ITALIC=TextAttributes.ITALIC,DIM=TextAttributes.DIM,UNDERLINE=TextAttributes.UNDERLINE,NONE=TextAttributes.NONE;import{jsxDEV as jsxDEV5}from"h:6___________________________";function KeyHint({command,emphasised=!1}){let theme=useTheme(),key=primaryKey(command);if(!key)return null;return jsxDEV5("text",{fg:theme.hotkey,attributes:emphasised?BOLD|UNDERLINE:UNDERLINE,children:formatKey(key)},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV6}from"h:6___________________________";var BORDER_OVERLAY_Z=10,OVERLAY_PADDING=2,BACK_COMMAND="sentry.nav.back";function keyHintWidth(command){let key=primaryKey(command);return key?measureTextWidth(formatKey(key)):0}function backLabel(parent,paneWidth){let budget=Math.floor(paneWidth/2)-OVERLAY_PADDING-keyHintWidth(BACK_COMMAND);return fitText(`back to ${parent} `,Math.max(0,budget))}function detailBackWidth(parent,paneWidth){let label=backLabel(parent,paneWidth);return label?OVERLAY_PADDING+measureTextWidth(label)+keyHintWidth(BACK_COMMAND):0}function DetailBackRow({parent,top,right,paneWidth}){let theme=useTheme(),label=backLabel(parent,paneWidth);if(!label)return null;let boxWidth=detailBackWidth(parent,paneWidth);return jsxDEV6("box",{style:{position:"absolute",top,left:Math.max(0,right-boxWidth),width:boxWidth,height:1,zIndex:BORDER_OVERLAY_Z,flexDirection:"row",backgroundColor:theme.bg,paddingLeft:1,paddingRight:1},children:[jsxDEV6("text",{fg:theme.muted,children:label},void 0,!1,void 0,this),jsxDEV6(KeyHint,{command:BACK_COMMAND},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback3,useEffect as useEffect6,useMemo as useMemo4,useState as useState5}from"h:0__";import{jsxDEV as jsxDEV7}from"h:6___________________________";function NavHotkeyLabel({label,hotkey,fg,bold=!1}){let theme=useTheme(),attributes=bold?BOLD:NONE;if(!hotkey)return jsxDEV7("text",{fg,attributes,children:label},void 0,!1,void 0,this);let chars=[...label],inline=hotkey.index>=0,before=inline?chars.slice(0,hotkey.index).join(""):`${label} `,after=inline?chars.slice(hotkey.index+1).join(""):"",keyAttributes=bold?BOLD|UNDERLINE:UNDERLINE;return jsxDEV7("text",{attributes,children:[before?jsxDEV7("span",{fg,children:before},void 0,!1,void 0,this):null,jsxDEV7("span",{fg:theme.hotkey,attributes:keyAttributes,children:hotkey.key},void 0,!1,void 0,this),after?jsxDEV7("span",{fg,children:after},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV8,Fragment as Fragment2}from"h:6___________________________";var CHIP_GAP=1,CHIP_HEIGHT=3,CAP_LEFT="\u2590",CAP_RIGHT="\u258C",CHIP_CAPS=2,CHIP_EDGE_TOP="\u2581",CHIP_EDGE_BOTTOM="\u2594";function chipWidth({command,label,inlineHotkey=!1,caret=!1}){let key=formatKey(primaryKey(command)),labelHotkey=inlineHotkeyFor(command,label,inlineHotkey),keyPart=key&&!labelHotkey?measureTextWidth(key)+1:0,appendedKey=labelHotkey?.index===-1?measureTextWidth(labelHotkey.key)+1:0;return CHIP_CAPS+1+keyPart+measureTextWidth(label)+appendedKey+(caret?2:0)+1}function inlineHotkeyFor(command,label,inline){if(!inline)return;let key=formatKey(primaryKey(command));if(!key)return;let index=[...key].length===1?[...label].findIndex((character)=>character.toLowerCase()===key.toLowerCase()):-1;return{key,index}}function chipOffsets(chips){let offsets=[],left=0;for(let chip of chips)offsets.push(left),left+=chipWidth(chip)+CHIP_GAP;return offsets}function Chip({command,label,inlineHotkey=!1,caret=!1,active=!1,onPress}){let theme=useTheme(),key=formatKey(primaryKey(command)),labelHotkey=inlineHotkeyFor(command,label,inlineHotkey),labelFg=active?theme.accent:theme.text,edgeWidth=chipWidth({command,label,inlineHotkey,caret})-CHIP_CAPS;return jsxDEV8("box",{style:{flexDirection:"column",flexShrink:0},onMouseDown:onPress,children:[jsxDEV8(ChipEdge,{glyph:CHIP_EDGE_TOP,width:edgeWidth,color:theme.chip.rim},void 0,!1,void 0,this),jsxDEV8("box",{style:{flexDirection:"row"},children:[jsxDEV8("text",{fg:theme.chip.rim,children:CAP_LEFT},void 0,!1,void 0,this),jsxDEV8("box",{style:{flexDirection:"row",backgroundColor:theme.chip.surface},children:[jsxDEV8("text",{children:" "},void 0,!1,void 0,this),key&&!labelHotkey?jsxDEV8(Fragment2,{children:[jsxDEV8(KeyHint,{command,emphasised:!0},void 0,!1,void 0,this),jsxDEV8("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,labelHotkey?jsxDEV8(NavHotkeyLabel,{label,hotkey:labelHotkey,fg:labelFg},void 0,!1,void 0,this):jsxDEV8("text",{fg:labelFg,children:label},void 0,!1,void 0,this),caret?jsxDEV8("text",{fg:active?theme.accent:theme.muted,children:" \u25BE"},void 0,!1,void 0,this):null,jsxDEV8("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV8("text",{fg:theme.chip.rim,children:CAP_RIGHT},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV8(ChipEdge,{glyph:CHIP_EDGE_BOTTOM,width:edgeWidth,color:theme.chip.rimShadow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ChipEdge({glyph,width,color}){return jsxDEV8("text",{fg:color,children:` ${glyph.repeat(Math.max(0,width))} `},void 0,!1,void 0,this)}function ChipRow({chips,activeIndex,onPress}){return jsxDEV8("box",{style:{flexDirection:"row",flexShrink:0},children:chips.map((chip,i)=>jsxDEV8("box",{style:{flexDirection:"row"},children:[i>0?jsxDEV8("text",{children:" ".repeat(CHIP_GAP)},void 0,!1,void 0,this):null,jsxDEV8(Chip,{...chip,active:i===activeIndex,onPress:()=>onPress?.(chip,i)},void 0,!1,void 0,this)]},chip.command,!0,void 0,this))},void 0,!1,void 0,this)}import{useCallback as useCallback2,useEffect as useEffect3,useMemo as useMemo2,useRef,useState as useState3}from"h:0__";import{useKeyboard as useKeyboard2,useTerminalDimensions as useTerminalDimensions3}from"h:4___________";import{readFileSync}from"fs";var cache=new Map;function imageBytes(path){let bytes=cache.get(path);if(!bytes)bytes=readFileSync(path),cache.set(path,bytes);return bytes}var activeadmin_default="./assets/activeadmin-p8zytf80.png";var actix_default="./assets/actix-tt2a8ysg.png";var aiohttp_default="./assets/aiohttp-gmt10x6m.png";var alpinejs_default="./assets/alpinejs-wqnxn6y1.png";var amazon_default="./assets/amazon-p185z4ev.png";var amd_default="./assets/amd-p8c25cfe.png";var analogjs_default="./assets/analogjs-cna1hg98.png";var android_default="./assets/android-xjr1314k.png";var android_phone_default="./assets/android-phone-mjzxta39.png";var android_tablet_default="./assets/android-tablet-mjzxta39.png";var angularjs_default="./assets/angularjs-7h46ejvd.png";var anthropic_default="./assets/anthropic-rrcv6ejq.png";var anthropic_claude_default="./assets/anthropic-claude-4n50evr8.png";var apache_airflow_default="./assets/apache-airflow-w7c50371.png";var apache_beam_default="./assets/apache-beam-2q3zbaks.png";var apache_spark_default="./assets/apache-spark-a680t00k.png";var app_engine_default="./assets/app-engine-ghexy1y6.png";var apple_default="./assets/apple-fh3mfwj2.png";var apple_ipad_default="./assets/apple-ipad-dfky3d0g.png";var apple_iphone_default="./assets/apple-iphone-dfky3d0g.png";var apple_tv_default="./assets/apple-tv-dfky3d0g.png";var apple_watch_default="./assets/apple-watch-dfky3d0g.png";var ariadne_default="./assets/ariadne-p2xx19an.png";var arm_default="./assets/arm-5rs1ketc.png";var astro_default="./assets/astro-nbngj53v.png";var aws_default="./assets/aws-7vzr54cj.png";var awslambda_default="./assets/awslambda-qzxqvkkb.png";var azure_functions_default="./assets/azure-functions-bst1wkws.png";var backbone_default="./assets/backbone-7cg22pv4.png";var bazzite_default="./assets/bazzite-ybxzg5vm.png";var blazor_default="./assets/blazor-hxv5b1jm.png";var bottle_default="./assets/bottle-fgvkq9ed.png";var bun_default="./assets/bun-qzcj59r5.png";var capacitor_default="./assets/capacitor-a3m2sqp1.png";var celery_default="./assets/celery-gd1erc4d.png";var chalice_default="./assets/chalice-xmacx55d.png";var chrome_default="./assets/chrome-xdd75zcv.png";var chromium_default="./assets/chromium-s43136bv.png";var clickhouse_default="./assets/clickhouse-eg3e8wwt.png";var clojure_default="./assets/clojure-kvpja977.png";var cloudflare_default="./assets/cloudflare-pxsb5f3n.png";var cloudflare_pages_default="./assets/cloudflare-pages-0nwgb0by.png";var cloudflare_workers_default="./assets/cloudflare-workers-x0py78jv.png";var cohere_default="./assets/cohere-sp0b9n61.png";var connect_default="./assets/connect-7r7dc91q.png";var convex_default="./assets/convex-az2pt1fc.png";var cordova_default="./assets/cordova-7wzvfz77.png";var cpp_default="./assets/cpp-n8ke0smy.png";var cryengine_default="./assets/cryengine-c186nv57.png";var crystal_default="./assets/crystal-zwaetd1f.png";var csharp_default="./assets/csharp-4cgxa8dg.png";var css_default="./assets/css-g8jdrx8v.png";var dart_default="./assets/dart-g38t75be.png";var deepseek_default="./assets/deepseek-7r4457fz.png";var default_default="./assets/default-mqvk902r.png";var deno_default="./assets/deno-815kzqz1.png";var django_default="./assets/django-qq1crz4g.png";var dotnet_default="./assets/dotnet-5gqvv1yc.png";var dotnetcore_default="./assets/dotnetcore-n03w6x5h.png";var dotnetframework_default="./assets/dotnetframework-brnpeeq7.png";var dotnetfx_default="./assets/dotnetfx-7vm66a84.png";var dramatiq_default="./assets/dramatiq-b0c46xrk.png";var echo_default="./assets/echo-7va69gxg.png";var edge_default="./assets/edge-4qt9t9s2.png";var edge_legacy_default="./assets/edge-legacy-sqwdg70h.png";var effect_default="./assets/effect-sqx9ndtk.png";var electron_default="./assets/electron-2n9s8mts.png";var elixir_default="./assets/elixir-mckzq1sq.png";var ember_default="./assets/ember-a65qyfxw.png";var expo_default="./assets/expo-24k68r06.png";var express_default="./assets/express-bagm4hrp.png";var falcon_default="./assets/falcon-y3g2pkw1.png";var fastapi_default="./assets/fastapi-y61f6fkc.png";var fasthttp_default="./assets/fasthttp-dg3jpzzs.png";var fastify_default="./assets/fastify-6kqs83vt.png";var fastmcp_default="./assets/fastmcp-z39yqz67.png";var fiber_default="./assets/fiber-4hk7w77j.png";var firebase_default="./assets/firebase-cxe03y85.png";var firefox_default="./assets/firefox-bg5zmx5g.png";var flask_default="./assets/flask-cen3cnk3.png";var flutter_default="./assets/flutter-yg7vv7v2.png";var font_default="./assets/font-gm2xc8k1.png";var fsharp_default="./assets/fsharp-rdvgykvd.png";var gatsby_default="./assets/gatsby-1cbrkhen.png";var gcp_functions_default="./assets/gcp-functions-f9fr7ptc.png";var gemini_default="./assets/gemini-kkn8pkkz.png";var gin_default="./assets/gin-50chx0th.png";var git_default="./assets/git-2wwbsash.png";var gnu_default="./assets/gnu-sza5z2m0.png";var go_default="./assets/go-fe31mx1h.png";var godot_default="./assets/godot-5pyt3hf3.png";var google_default="./assets/google-h9hjmbaw.png";var grape_default="./assets/grape-z45yjx7n.png";var graphene_default="./assets/graphene-wdrmh5wg.png";var graphql_default="./assets/graphql-jfg31yab.png";var grok_default="./assets/grok-tek8dkt5.png";var groq_default="./assets/groq-3w8j5sz6.png";var grpc_default="./assets/grpc-41ce8e5w.png";var hanami_default="./assets/hanami-h1ha69g0.png";var hapi_default="./assets/hapi-xjkhg9xk.png";var hono_default="./assets/hono-ydv0kfra.png";var httpx_default="./assets/httpx-72gb9ze8.png";var huey_default="./assets/huey-a53cr7qy.png";var huggingface_default="./assets/huggingface-yceen1hy.png";var hydrogen_default="./assets/hydrogen-wremh7ah.png";var internet_explorer_default="./assets/internet-explorer-mc34535p.png";var ionic_default="./assets/ionic-9x7e24b2.png";var iris_default="./assets/iris-nvn6jx31.png";var java_default="./assets/java-xd88qxr3.png";var javascript_default="./assets/javascript-fkw36jr6.png";var koa_default="./assets/koa-xeggzpx7.png";var kotlin_default="./assets/kotlin-kttwkzk0.png";var langchain_default="./assets/langchain-dsrcgqtg.png";var langgraph_default="./assets/langgraph-0gbzq3bw.png";var laravel_default="./assets/laravel-8vdwspz3.png";var launchdarkly_default="./assets/launchdarkly-8nrxg4j1.png";var linux_default="./assets/linux-mbda8m22.png";var lit_default="./assets/lit-yy9gb2z5.png";var litellm_default="./assets/litellm-mn7mn3p5.png";var litestar_default="./assets/litestar-qgaq765e.png";var livewire_default="./assets/livewire-dhq1zp6k.png";var logback_default="./assets/logback-qdan81zj.png";var loguru_default="./assets/loguru-1qkw3dj3.png";var magento_default="./assets/magento-mbmqx6pj.png";var martini_default="./assets/martini-0ynefktw.png";var mastra_default="./assets/mastra-bkzx6z2t.png";var maui_default="./assets/maui-k0v6671h.png";var mcp_default="./assets/mcp-3a0e0d7f.png";var meteor_default="./assets/meteor-pfjeajd9.png";var million_default="./assets/million-hqa7qjzr.png";var mistral_default="./assets/mistral-c8k352td.png";var mongodb_default="./assets/mongodb-8zfpdrvw.png";var mono_default="./assets/mono-2jgc1h36.png";var motorola_default="./assets/motorola-se1nxnrc.png";var nativec_default="./assets/nativec-8hc1qqqq.png";var nestjs_default="./assets/nestjs-pdtzc08t.png";var nextjs_default="./assets/nextjs-1h4ss2x7.png";var nintendo_default="./assets/nintendo-b121b9tx.png";var nintendo_switch_default="./assets/nintendo-switch-10fwf0z8.png";var nintendo_switch_2_default="./assets/nintendo-switch-2-c30gwjdr.png";var nitro_default="./assets/nitro-0m2zry4j.png";var nodejs_default="./assets/nodejs-4440bt1m.png";var nuxt_default="./assets/nuxt-9az5kp86.png";var nvidia_default="./assets/nvidia-sx95qpxr.png";var openai_default="./assets/openai-30efemfr.png";var openfeature_default="./assets/openfeature-7d7994hd.png";var opennext_default="./assets/opennext-qwtbtf69.png";var opera_default="./assets/opera-vm5934z4.png";var padrino_default="./assets/padrino-h1r8j27p.png";var perforce_default="./assets/perforce-m3brdm35.png";var perl_default="./assets/perl-rtt66y1c.png";var perplexity_default="./assets/perplexity-hppwdxr6.png";var php_default="./assets/php-epsnnhgx.png";var playstation_default="./assets/playstation-hdnq37vd.png";var postgresql_default="./assets/postgresql-460mxqat.png";var powershell_default="./assets/powershell-4fhvrc1v.png";var pydantic_ai_default="./assets/pydantic-ai-fktc46py.png";var pyramid_default="./assets/pyramid-68tybq4d.png";var python_default="./assets/python-0nvac8nw.png";var qq_default="./assets/qq-vr99tzv0.png";var qt_default="./assets/qt-k87rvs14.png";var quart_default="./assets/quart-r5ngms2j.png";var qwik_default="./assets/qwik-bz2wcfjr.png";var rails_default="./assets/rails-4pkdasvb.png";var ray_default="./assets/ray-gmyxm5cx.png";var react_default="./assets/react-8r99y108.png";var react_native_default="./assets/react-native-wmddwz2w.png";var react_router_default="./assets/react-router-v69yad6z.png";var redis_default="./assets/redis-q94fh9hd.png";var remix_default="./assets/remix-53wdkf82.png";var ruby_default="./assets/ruby-kcaxbrv4.png";var rust_default="./assets/rust-v7er9616.png";var safari_default="./assets/safari-pcf00dtn.png";var samsung_default="./assets/samsung-cm92184f.png";var sanic_default="./assets/sanic-7z0zpwya.png";var scala_default="./assets/scala-9aq9kgns.png";var serverless_default="./assets/serverless-5293xmwf.png";var sidekiq_default="./assets/sidekiq-rnhzcwdj.png";var sinatra_default="./assets/sinatra-c03nt3xg.png";var solid_default="./assets/solid-c96n8hcv.png";var solidstart_default="./assets/solidstart-rb5kh1an.png";var spring_default="./assets/spring-nq4z52xr.png";var springboot_default="./assets/springboot-n0jkm57m.png";var sql_default="./assets/sql-hax5xfdd.png";var sqlalchemy_default="./assets/sqlalchemy-rkmzzb4z.png";var sqlserver_default="./assets/sqlserver-xy5xks5j.png";var starlette_default="./assets/starlette-j4s3ckgz.png";var steamos_default="./assets/steamos-esnc2vf1.png";var strawberry_default="./assets/strawberry-gvtdbrv2.png";var stride3d_default="./assets/stride3d-na06nbdk.png";var supabase_default="./assets/supabase-b8xn5ya6.png";var svelte_default="./assets/svelte-99kpn61e.png";var swift_default="./assets/swift-rz9jd9bd.png";var symfony_default="./assets/symfony-5g12vm0z.png";var tanstack_default="./assets/tanstack-803fcdrr.png";var tauri_default="./assets/tauri-s27nrazn.png";var tokio_default="./assets/tokio-2qsmkbdt.png";var tornado_default="./assets/tornado-jr9hafty.png";var tower_default="./assets/tower-m2b3e55m.png";var tracing_default="./assets/tracing-sf8fezjm.png";var trailblazer_default="./assets/trailblazer-tts0mg9m.png";var tryton_default="./assets/tryton-agrkpqzp.png";var typer_default="./assets/typer-4ax7g9nv.png";var ubuntu_default="./assets/ubuntu-2485bsgg.png";var unity_default="./assets/unity-dh3f2d41.png";var unleash_default="./assets/unleash-3n7nzk6v.png";var uno_default="./assets/uno-f3aqa0pr.png";var unreal_default="./assets/unreal-66wfngpk.png";var vercel_default="./assets/vercel-5tsw5vx4.png";var visual_basic_default="./assets/visual-basic-mv5kd4ph.png";var vscode_default="./assets/vscode-ht1kf4d5.png";var vue_default="./assets/vue-s1y5fsg1.png";var wasm_default="./assets/wasm-zc2sdxtz.png";var windows_default="./assets/windows-m96vxbh1.png";var xamarin_default="./assets/xamarin-13pfqd8y.png";var xbox_default="./assets/xbox-j22pmsf0.png";var PLATFORM_ICON_PATHS={activeadmin:activeadmin_default,actix:actix_default,aiohttp:aiohttp_default,alpinejs:alpinejs_default,amazon:amazon_default,amd:amd_default,analogjs:analogjs_default,android:android_default,"android-phone":android_phone_default,"android-tablet":android_tablet_default,angularjs:angularjs_default,anthropic:anthropic_default,"anthropic-claude":anthropic_claude_default,"apache-airflow":apache_airflow_default,"apache-beam":apache_beam_default,"apache-spark":apache_spark_default,"app-engine":app_engine_default,apple:apple_default,"apple-ipad":apple_ipad_default,"apple-iphone":apple_iphone_default,"apple-tv":apple_tv_default,"apple-watch":apple_watch_default,ariadne:ariadne_default,arm:arm_default,astro:astro_default,aws:aws_default,awslambda:awslambda_default,"azure-functions":azure_functions_default,backbone:backbone_default,bazzite:bazzite_default,blazor:blazor_default,bottle:bottle_default,bun:bun_default,capacitor:capacitor_default,celery:celery_default,chalice:chalice_default,chrome:chrome_default,chromium:chromium_default,clickhouse:clickhouse_default,clojure:clojure_default,cloudflare:cloudflare_default,"cloudflare-pages":cloudflare_pages_default,"cloudflare-workers":cloudflare_workers_default,cohere:cohere_default,connect:connect_default,convex:convex_default,cordova:cordova_default,cpp:cpp_default,cryengine:cryengine_default,crystal:crystal_default,csharp:csharp_default,css:css_default,dart:dart_default,deepseek:deepseek_default,default:default_default,deno:deno_default,django:django_default,dotnet:dotnet_default,dotnetcore:dotnetcore_default,dotnetframework:dotnetframework_default,dotnetfx:dotnetfx_default,dramatiq:dramatiq_default,echo:echo_default,edge:edge_default,"edge-legacy":edge_legacy_default,effect:effect_default,electron:electron_default,elixir:elixir_default,ember:ember_default,expo:expo_default,express:express_default,falcon:falcon_default,fastapi:fastapi_default,fasthttp:fasthttp_default,fastify:fastify_default,fastmcp:fastmcp_default,fiber:fiber_default,firebase:firebase_default,firefox:firefox_default,flask:flask_default,flutter:flutter_default,font:font_default,fsharp:fsharp_default,gatsby:gatsby_default,"gcp-functions":gcp_functions_default,gemini:gemini_default,gin:gin_default,git:git_default,gnu:gnu_default,go:go_default,godot:godot_default,google:google_default,grape:grape_default,graphene:graphene_default,graphql:graphql_default,grok:grok_default,groq:groq_default,grpc:grpc_default,hanami:hanami_default,hapi:hapi_default,hono:hono_default,httpx:httpx_default,huey:huey_default,huggingface:huggingface_default,hydrogen:hydrogen_default,"internet-explorer":internet_explorer_default,ionic:ionic_default,iris:iris_default,java:java_default,javascript:javascript_default,koa:koa_default,kotlin:kotlin_default,langchain:langchain_default,langgraph:langgraph_default,laravel:laravel_default,launchdarkly:launchdarkly_default,linux:linux_default,lit:lit_default,litellm:litellm_default,litestar:litestar_default,livewire:livewire_default,logback:logback_default,loguru:loguru_default,magento:magento_default,martini:martini_default,mastra:mastra_default,maui:maui_default,mcp:mcp_default,meteor:meteor_default,million:million_default,mistral:mistral_default,mongodb:mongodb_default,mono:mono_default,motorola:motorola_default,nativec:nativec_default,nestjs:nestjs_default,nextjs:nextjs_default,nintendo:nintendo_default,"nintendo-switch":nintendo_switch_default,"nintendo-switch-2":nintendo_switch_2_default,nitro:nitro_default,nodejs:nodejs_default,nuxt:nuxt_default,nvidia:nvidia_default,openai:openai_default,openfeature:openfeature_default,opennext:opennext_default,opera:opera_default,padrino:padrino_default,perforce:perforce_default,perl:perl_default,perplexity:perplexity_default,php:php_default,playstation:playstation_default,postgresql:postgresql_default,powershell:powershell_default,"pydantic-ai":pydantic_ai_default,pyramid:pyramid_default,python:python_default,qq:qq_default,qt:qt_default,quart:quart_default,qwik:qwik_default,rails:rails_default,ray:ray_default,react:react_default,"react-native":react_native_default,"react-router":react_router_default,redis:redis_default,remix:remix_default,ruby:ruby_default,rust:rust_default,safari:safari_default,samsung:samsung_default,sanic:sanic_default,scala:scala_default,serverless:serverless_default,sidekiq:sidekiq_default,sinatra:sinatra_default,solid:solid_default,solidstart:solidstart_default,spring:spring_default,springboot:springboot_default,sql:sql_default,sqlalchemy:sqlalchemy_default,sqlserver:sqlserver_default,starlette:starlette_default,steamos:steamos_default,strawberry:strawberry_default,stride3d:stride3d_default,supabase:supabase_default,svelte:svelte_default,swift:swift_default,symfony:symfony_default,tanstack:tanstack_default,tauri:tauri_default,tokio:tokio_default,tornado:tornado_default,tower:tower_default,tracing:tracing_default,trailblazer:trailblazer_default,tryton:tryton_default,typer:typer_default,ubuntu:ubuntu_default,unity:unity_default,unleash:unleash_default,uno:uno_default,unreal:unreal_default,vercel:vercel_default,"visual-basic":visual_basic_default,vscode:vscode_default,vue:vue_default,wasm:wasm_default,windows:windows_default,xamarin:xamarin_default,xbox:xbox_default};var PLATFORM_ICON_NAMES=Object.keys(PLATFORM_ICON_PATHS);function platformIconBytes(icon){let path=PLATFORM_ICON_PATHS[icon];return path===void 0?void 0:imageBytes(path)}var PLATFORM_TO_ICON={amazon:"amazon",amd:"amd",android:"android","android-phone":"android-phone","android-tablet":"android-tablet",anthropic:"anthropic","anthropic-claude":"anthropic-claude",apple:"apple","apple-ipad":"apple-ipad","apple-iphone":"apple-iphone","apple-tv":"apple-tv","apple-watch":"apple-watch",arm:"arm",bazzite:"bazzite",bun:"bun",capacitor:"capacitor",chrome:"chrome",chromium:"chromium",clojure:"clojure",cloudflare:"cloudflare",cocoa:"apple","cocoa-objc":"apple","cocoa-swift":"swift",cohere:"cohere",convex:"convex",cordova:"cordova",cpp:"cpp",cryengine:"cryengine",crystal:"crystal",csharp:"csharp","csharp-aspnetcore":"csharp",css:"css",dart:"dart",deepseek:"deepseek",default:"default",deno:"deno",dotnet:"dotnet","dotnet-aspnet":"dotnet","dotnet-aspnetcore":"dotnet","dotnet-awslambda":"awslambda","dotnet-blazor":"blazor","dotnet-csharp":"csharp","dotnet-gcpfunctions":"gcp-functions","dotnet-maui":"maui","dotnet-uno":"uno","dotnet-xamarin":"xamarin",dotnetcore:"dotnetcore",dotnetframework:"dotnetframework",dotnetfx:"dotnetfx",edge:"edge","edge-legacy":"edge-legacy",electron:"electron",elixir:"elixir",expo:"expo",fastmcp:"fastmcp",firebase:"firebase",firefox:"firefox",flutter:"flutter",font:"font",fsharp:"fsharp",gemini:"gemini",git:"git",go:"go","go-echo":"echo","go-fasthttp":"fasthttp","go-fiber":"fiber","go-gin":"gin","go-iris":"iris","go-martini":"martini","go-negroni":"go",godot:"godot",google:"google",grok:"grok",groq:"groq",huggingface:"huggingface","internet-explorer":"internet-explorer",ionic:"ionic",java:"java","java-android":"android","java-appengine":"app-engine","java-log4j":"java","java-log4j2":"java","java-logback":"logback","java-logging":"java","java-ray":"ray","java-spring":"spring","java-spring-boot":"springboot",javascript:"javascript","javascript-alpinejs":"alpinejs","javascript-analogjs":"analogjs","javascript-angular":"angularjs","javascript-angularjs":"angularjs","javascript-astro":"astro","javascript-awslambda":"awslambda","javascript-azurefunctions":"azure-functions","javascript-backbone":"backbone","javascript-browser":"javascript","javascript-capacitor":"capacitor","javascript-cloudflare-pages":"cloudflare-pages","javascript-cloudflare-workers":"cloudflare-workers","javascript-connect":"connect","javascript-cordova":"cordova","javascript-effect":"effect","javascript-electron":"electron","javascript-ember":"ember","javascript-expo":"expo","javascript-express":"express","javascript-fastify":"fastify","javascript-firebase":"firebase","javascript-gatsby":"gatsby","javascript-gcpfunctions":"gcp-functions","javascript-hapi":"hapi","javascript-hono":"hono","javascript-hydrogen":"hydrogen","javascript-ionic":"ionic","javascript-koa":"koa","javascript-lit":"lit","javascript-meteor":"meteor","javascript-million":"million","javascript-nestjs":"nestjs","javascript-nextjs":"nextjs","javascript-nitro":"nitro","javascript-node":"nodejs","javascript-nuxt":"nuxt","javascript-opennext":"opennext","javascript-qwik":"qwik","javascript-react":"h:0__","javascript-react-router":"react-router","javascript-remix":"remix","javascript-serverlesscloud":"serverless","javascript-solid":"solid","javascript-solidstart":"solidstart","javascript-svelte":"svelte","javascript-sveltekit":"svelte","javascript-tanstackstart-react":"tanstack","javascript-vue":"vue","javascript-wasm":"wasm",kotlin:"kotlin","kotlin-android":"android",langchain:"langchain",langgraph:"langgraph",launchdarkly:"launchdarkly",linux:"linux",litellm:"litellm",mastra:"mastra",mcp:"mcp",mistral:"mistral",mono:"mono",motorola:"motorola",native:"nativec","native-qt":"qt",nintendo:"nintendo","nintendo-switch":"nintendo-switch","nintendo-switch-2":"nintendo-switch-2",node:"nodejs",nvidia:"nvidia",openai:"openai",openfeature:"openfeature",opera:"opera",perforce:"perforce",perl:"perl",perplexity:"perplexity",php:"php","php-laravel":"laravel","php-livewire":"livewire","php-magento":"magento","php-monolog":"php","php-symfony":"symfony","php-symfony2":"symfony",playstation:"playstation",powershell:"powershell","pydantic-ai":"pydantic-ai",python:"python","python-aiohttp":"aiohttp","python-airflow":"apache-airflow","python-ariadne":"ariadne","python-asyncpg":"postgresql","python-awslambda":"awslambda","python-azurefunctions":"azure-functions","python-beam":"apache-beam","python-boto3":"aws","python-bottle":"bottle","python-celery":"celery","python-chalice":"chalice","python-clickhouse-driver":"clickhouse","python-django":"django","python-dramatiq":"dramatiq","python-falcon":"falcon","python-fastapi":"fastapi","python-flask":"flask","python-gcpfunctions":"gcp-functions","python-gnu_backtrace":"gnu","python-gql":"graphql","python-graphene":"graphene","python-grpc":"grpc","python-httpx":"httpx","python-huey":"huey","python-litestar":"litestar","python-loguru":"loguru","python-pylons":"python","python-pymongo":"mongodb","python-pyramid":"pyramid","python-pythonawslambda":"awslambda","python-quart":"quart","python-ray":"ray","python-redis":"redis","python-rq":"redis","python-sanic":"sanic","python-serverless":"serverless","python-spark":"apache-spark","python-sqlalchemy":"sqlalchemy","python-starlette":"starlette","python-strawberry":"strawberry","python-tornado":"tornado","python-tryton":"tryton","python-typer":"typer",qq:"qq",qt:"qt","react-native":"react-native",ruby:"ruby","ruby-activeadmin":"activeadmin","ruby-grape":"grape","ruby-hanami":"hanami","ruby-padrino":"padrino","ruby-rack":"ruby","ruby-rails":"rails","ruby-sidekiq":"sidekiq","ruby-sinatra":"sinatra","ruby-trailblazer":"trailblazer",rust:"rust","rust-actix":"actix","rust-axum":"tokio","rust-tower":"tower","rust-tracing":"tracing",safari:"safari",samsung:"samsung",scala:"scala",sql:"sql",sqlserver:"sqlserver",steamos:"steamos",stride3d:"stride3d",supabase:"supabase",swift:"swift",tauri:"tauri",ubuntu:"ubuntu",ue4:"unreal",unity:"unity",unleash:"unleash",unreal:"unreal",unrealengine:"unreal",uwp:"windows",vercel:"vercel",visualbasic:"visual-basic",vscode:"vscode",windows:"windows",xbox:"xbox"};var DEFAULT_PLATFORM_ICON="default";function resolvePlatformIcon(platform){if(!platform)return DEFAULT_PLATFORM_ICON;let segments=platform.split("-");for(let end=segments.length;end>0;end--){let icon=PLATFORM_TO_ICON[segments.slice(0,end).join("-")];if(icon)return icon}return DEFAULT_PLATFORM_ICON}import{useCallback,useSyncExternalStore}from"h:0__";import{useRenderer}from"h:4___________";var INSIDE_MUX=!!(process.env.TMUX||process.env.STY),UNSUPPORTED={supported:!1,supportsHighRes:!1},stores=new WeakMap;function storeFor(renderer){let store=stores.get(renderer);if(!store)store={value:UNSUPPORTED,listeners:new Set,handler:null},stores.set(renderer,store);return store}function refresh(renderer){let caps=renderer.capabilities;if(!caps)return;let next={supported:!0,supportsHighRes:!INSIDE_MUX&&(caps.kitty_graphics||caps.sixel)},store=storeFor(renderer);if(store.value.supported===next.supported&&store.value.supportsHighRes===next.supportsHighRes)return;store.value=next;for(let listener of store.listeners)listener()}function useImageSupport(){let renderer=useRenderer(),subscribe=useCallback((onStoreChange)=>{let store=storeFor(renderer);if(store.listeners.add(onStoreChange),!store.handler)store.handler=()=>refresh(renderer),renderer.on("capabilities",store.handler);return refresh(renderer),()=>{if(store.listeners.delete(onStoreChange),store.listeners.size===0&&store.handler)renderer.off("capabilities",store.handler),store.handler=null}},[renderer]),getSnapshot=useCallback(()=>storeFor(renderer).value,[renderer]);return useSyncExternalStore(subscribe,getSnapshot)}import{jsxDEV as jsxDEV9}from"h:6___________________________";var PLATFORM_ICON_WIDTH=2,PLATFORM_ICON_HEIGHT=1;function usePlatformIconWidth(){let{supportsHighRes}=useImageSupport();return supportsHighRes?PLATFORM_ICON_WIDTH+1:0}function PlatformIcon({platform}){let{supportsHighRes}=useImageSupport();if(!supportsHighRes)return null;let source=platformIconBytes(resolvePlatformIcon(platform));if(!source)return null;return jsxDEV9("image",{source,fit:"fit",style:{width:PLATFORM_ICON_WIDTH,height:PLATFORM_ICON_HEIGHT,flexShrink:0,marginRight:1}},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV10,Fragment as Fragment3}from"h:6___________________________";function SearchInputHint(){return jsxDEV10(Fragment3,{children:[jsxDEV10(KeyHint,{command:"sentry.nav.search"},void 0,!1,void 0,this),jsxDEV10("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function filterByLabel(items,query){let needle=query.trim().toLowerCase();if(!needle)return items.map((item)=>({item,positions:[]}));let scored=[];for(let item of items){let match=fuzzyMatch(item.label,needle);if(!match)continue;scored.push({item,positions:match.positions,score:match.score})}return scored.sort((a,b)=>b.score-a.score),scored.map(({item,positions})=>({item,positions}))}function highlightByLabel(items,query){let needle=query.trim().toLowerCase();if(!needle)return items.map((item)=>({item,positions:[]}));return items.map((item)=>({item,positions:fuzzyMatch(item.label,needle)?.positions??[]}))}import{jsxDEV as jsxDEV11,Fragment as Fragment4}from"h:6___________________________";var DROPDOWN_Z=50,PREFIX_WIDTH=2,MAX_VISIBLE=12,MIN_WIDTH=20,MIN_FILTERABLE_WIDTH=32,mountedDropdowns=0;function isDropdownMounted(){return mountedDropdowns>0}function Dropdown({title,items,selected,anchorLeft,anchorTop,availableWidth,showAll=!0,multiple=!1,showSelection=!0,filterable=!1,onQueryChange,remoteFilter=!1,loading=!1,maxWidth,placeholder,onSelect,onClose}){let theme=useTheme(),{width:termWidth,height:termHeight}=useTerminalDimensions3(),platformIconWidth=usePlatformIconWidth(),[query,setQuery]=useState3(""),updateQuery=useCallback2((next)=>{setQuery(next),onQueryChange?.(next)},[onQueryChange]),[filterFocused,setFilterFocused]=useState3(!1),hasSelected=useRef(!1),allItems=useMemo2(()=>showAll&&!(remoteFilter&&query.trim())?[{label:"All",value:"__all__"},...items]:[...items],[showAll,items,remoteFilter,query]),visibleItems=useMemo2(()=>remoteFilter?highlightByLabel(allItems,query):filterByLabel(allItems,query),[allItems,query,remoteFilter]),initialIndex=useMemo2(()=>{if(selected.length===0)return 0;let idx=allItems.findIndex((item)=>item.value===selected[0]);return idx>=0?idx:0},[allItems,selected]),[cursor,setCursor]=useState3(initialIndex);useEffect3(()=>{if(query.trim())setCursor(0);else if(!multiple||!hasSelected.current)setCursor(initialIndex)},[initialIndex,multiple,query]),useEffect3(()=>(mountedDropdowns+=1,()=>{mountedDropdowns-=1}),[]);let handleSelect=useCallback2((index)=>{let item=visibleItems[index]?.item;if(!item)return;if(hasSelected.current=!0,item.value==="__all__")onSelect([]);else if(multiple)onSelect(selected.includes(item.value)?selected.filter((value)=>value!==item.value):[...selected,item.value]);else onSelect([item.value]);if(!multiple)onClose()},[visibleItems,multiple,selected,onSelect,onClose]);useKeyboard2((key)=>{routeKeyOwnership([()=>{if(matchesCommand("sentry.nav.open",key))return handleSelect(cursor),"mine";if(isTypingSafeDown(key))return setCursor((c)=>Math.min(c+1,visibleItems.length-1)),"mine";if(isTypingSafeUp(key))return setCursor((c)=>Math.max(c-1,0)),"mine";if(filterFocused){if(matchesCommand("sentry.nav.back",key))return updateQuery(""),setFilterFocused(!1),"mine";return"focused"}if(matchesCommand("sentry.nav.back",key))return onClose(),"mine";if(filterable&&matchesCommand("sentry.nav.search",key))return setFilterFocused(!0),"mine";if(matchesCommand("sentry.nav.down",key))return setCursor((c)=>Math.min(c+1,visibleItems.length-1)),"mine";if(matchesCommand("sentry.nav.up",key))return setCursor((c)=>Math.max(c-1,0)),"mine";if(matchesCommand("sentry.nav.top",key))return setCursor(0),"mine";if(matchesCommand("sentry.nav.bottom",key))return setCursor(visibleItems.length-1),"mine";return"mine"}],key,consumeKey)});let iconSlot=allItems.some((item)=>("platform"in item))?platformIconWidth:0,placeholderRow=visibleItems.length>0?void 0:loading?"Searching\u2026":allItems.length>0||remoteFilter&&query.trim()?`No match for "${query.trim()}"`:placeholder,rowCount=placeholderRow?1:visibleItems.length,prefixWidth=showSelection?PREFIX_WIDTH:1,rowChrome=prefixWidth+iconSlot+2,filterRows=filterable?1:0,maxLabelWidth=Math.max(filterable?MIN_FILTERABLE_WIDTH:MIN_WIDTH,...allItems.map((i)=>i.label.length+rowChrome),placeholderRow?placeholderRow.length+rowChrome:0),horizontalLimit=Math.min(termWidth,availableWidth??termWidth),dropdownWidth=Math.min(maxLabelWidth,maxWidth??1/0,horizontalLimit-2),visibleRows=Math.max(1,Math.min(rowCount,MAX_VISIBLE,termHeight-anchorTop-3-filterRows)),dropdownHeight=visibleRows+filterRows+2,windowStart=listWindowStart(cursor,visibleItems.length,visibleRows),left=Math.max(0,Math.min(anchorLeft,horizontalLimit-dropdownWidth-1)),top=Math.min(anchorTop,termHeight-dropdownHeight-1);return jsxDEV11(Fragment4,{children:[jsxDEV11("box",{style:{position:"absolute",top:0,left:0,width:termWidth,height:termHeight,zIndex:DROPDOWN_Z-1},onMouseDown:onClose},void 0,!1,void 0,this),jsxDEV11("box",{title:` ${title} `,style:{position:"absolute",top,left,width:dropdownWidth,height:dropdownHeight,zIndex:DROPDOWN_Z,border:!0,borderColor:theme.accent,backgroundColor:theme.panel,flexDirection:"column"},onMouseUp:(event)=>event.stopPropagation(),children:[filterable?jsxDEV11("box",{style:{flexDirection:"row",flexShrink:0},onMouseUp:()=>setFilterFocused(!0),children:[jsxDEV11(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV11("input",{value:query,placeholder:"filter\u2026",focused:filterFocused,onInput:updateQuery,style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,placeholderRow?jsxDEV11("text",{fg:theme.muted,children:` ${fitText(placeholderRow,dropdownWidth-3)}`},void 0,!1,void 0,this):null,visibleItems.slice(windowStart,windowStart+visibleRows).map(({item,positions},i)=>{let isCursor=windowStart+i===cursor,isActive=item.value==="__all__"?selected.length===0:selected.includes(item.value),fg=isCursor?theme.text:isActive?theme.accent:theme.muted,labelWidth=dropdownWidth-2-iconSlot-prefixWidth;return jsxDEV11("box",{style:{flexDirection:"row",alignSelf:"flex-start",backgroundColor:isCursor?theme.selected:void 0},children:[showSelection?jsxDEV11("text",{fg,children:isActive?"\u25CF ":" "},void 0,!1,void 0,this):jsxDEV11("text",{children:" "},void 0,!1,void 0,this),iconSlot>0?"platform"in item?jsxDEV11(PlatformIcon,{platform:item.platform},void 0,!1,void 0,this):jsxDEV11("box",{style:{width:iconSlot,flexShrink:0}},void 0,!1,void 0,this):null,jsxDEV11(HighlightedLabel,{text:item.label,positions,width:labelWidth,fg},void 0,!1,void 0,this)]},item.value,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useEffect as useEffect4}from"h:0__";import{jsxDEV as jsxDEV12}from"h:6___________________________";var SORT_COMMAND="sentry.view.sort",mountedSortSelectors=0;function isSortSelectorMounted(){return mountedSortSelectors>0}function sortLabel(items,value){return items.find((item)=>item.value===value)?.label??value}function fieldSortItems(fields){return fields.flatMap((field)=>[{value:`-${field}`,label:`${field} (desc)`},{value:field,label:`${field} (asc)`}])}function SortSelector({value,items,open,onOpen}){return useEffect4(()=>(mountedSortSelectors+=1,()=>{mountedSortSelectors-=1}),[]),jsxDEV12(Chip,{command:SORT_COMMAND,label:sortLabel(items,value),caret:!0,active:open,onPress:onOpen},void 0,!1,void 0,this)}function SortDropdown({value,items,anchorLeft,anchorTop,availableWidth,onChange,onClose}){return jsxDEV12(Dropdown,{title:"Sort By",items,selected:[value],anchorLeft,anchorTop,availableWidth,showAll:!1,onSelect:(values)=>{let selected=values[0];if(selected)onChange(selected);onClose()},onClose},void 0,!1,void 0,this)}import{useEffect as useEffect5,useMemo as useMemo3,useRef as useRef2,useState as useState4}from"h:0__";var projectSlugs=new WeakMap,NO_PROJECT_SLUGS=new Map;async function loadProjectSlugs(client2,org,ids){let byOrg=projectSlugs.get(client2);if(!byOrg)byOrg=new Map,projectSlugs.set(client2,byOrg);let cache2=byOrg.get(org);if(!cache2)cache2=new Map,byOrg.set(org,cache2);let missing=ids.filter((id)=>!cache2.has(id));if(missing.length>0){let batch=listProjectReferences(client2,{org,ids:missing}).then((projects)=>new Map(projects.map((project)=>[project.id,project.slug])));for(let id of missing){let entry=batch.then((slugs)=>slugs.get(id));cache2.set(id,entry),entry.catch(()=>{if(cache2.get(id)===entry)cache2.delete(id)})}}let entries=await Promise.all(ids.map(async(id)=>{let slug=await cache2.get(id);return slug===void 0?void 0:[id,slug]}));return new Map(entries.filter((entry)=>entry!==void 0))}function useProjectSlugs(client2,org,ids,enabled=!0){let key=[...new Set(ids.filter((id)=>/^\d+$/.test(id)))].sort().join(","),[answer,setAnswer]=useState4(null);return useEffect5(()=>{if(!client2||!enabled||key==="")return;let mounted=!0;return loadProjectSlugs(client2,org,key.split(",")).then((slugs)=>{if(mounted)setAnswer({client:client2,org,key,slugs})}).catch(()=>{}),()=>{mounted=!1}},[client2,org,key,enabled]),answer?.client===client2&&answer.org===org&&answer.key===key?answer.slugs:NO_PROJECT_SLUGS}var SEARCH_DEBOUNCE_MS=200;function useProjectSearch(client2,org,query){let[pool,setPool]=useState4([]),[answer,setAnswer]=useState4(null),[loading,setLoading]=useState4(!1),answered=useRef2(new Map),needle=query.trim();return useEffect5(()=>{answered.current.clear(),setPool([]),setAnswer(null)},[client2,org]),useEffect5(()=>{if(!client2)return;let held=answered.current.get(needle);if(held){setAnswer({query:needle,projects:held}),setLoading(!1);return}let controller=new AbortController,cancelled=!1;setLoading(!0);let timer=setTimeout(()=>{listProjects(client2,{org,query:needle,signal:controller.signal}).then((found)=>{if(cancelled)return;answered.current.set(needle,found),setPool((current)=>mergePool(current,found)),setAnswer({query:needle,projects:found}),setLoading(!1)}).catch(()=>{if(!cancelled)setLoading(!1)})},needle?SEARCH_DEBOUNCE_MS:0);return()=>{cancelled=!0,controller.abort(),clearTimeout(timer)}},[client2,org,needle]),{projects:useMemo3(()=>{let matched2=answer?.query===needle?answer.projects:[];if(!needle)return matched2.length>0?matched2:pool;let local=filterByLabel(pool.map((project)=>({label:project.slug,project})),needle).map((row)=>row.item.project),seen=new Set(local.map((project)=>project.id));return[...local,...matched2.filter((project)=>!seen.has(project.id))]},[pool,answer,needle]),loading}}function mergePool(current,found){let known=new Set(current.map((project)=>project.id)),added=found.filter((project)=>!known.has(project.id));return added.length>0?[...current,...added]:current}import{jsxDEV as jsxDEV13,Fragment as Fragment5}from"h:6___________________________";var SEARCH_ROWS=3,DATE_OPTIONS=[{label:"1 hour",value:"1h"},{label:"24 hours",value:"24h"},{label:"7 days",value:"7d"},{label:"14 days",value:"14d"},{label:"30 days",value:"30d"},{label:"90 days",value:"90d"}],CHIP_ORDER=["project","env","date"];function filterLabelWidths(projectLabel,envLabel,budget){let available=Math.max(0,Math.floor(budget)),projectWanted=measureTextWidth(projectLabel),envWanted=measureTextWidth(envLabel),project=Math.min(projectWanted,Math.ceil(available/2)),environment=Math.min(envWanted,Math.floor(available/2)),spare=available-project-environment;if(project===projectWanted)environment+=Math.min(spare,envWanted-environment);else if(environment===envWanted)project+=Math.min(spare,projectWanted-project);return[project,environment]}var mountedFilters={project:0,env:0,date:0};function isFilterBarMounted(filter){if(filter)return mountedFilters[filter]>0;return CHIP_ORDER.some((kind)=>mountedFilters[kind]>0)}function FilterBar({client:client2,org,openDropdown,selectedProjects,selectedEnvs,statsPeriod,filters=CHIP_ORDER,sort,width,anchorTop,onProjectChange,onEnvChange,onPeriodChange,onDropdownClose,onDropdownOpen}){let filterKey=filters.join(","),shownFilters=useMemo4(()=>new Set(filters),[filterKey]),[projectQuery,setProjectQuery]=useState5(""),{projects,loading:projectsLoading}=useProjectSearch(shownFilters.has("project")?client2:null,org,projectQuery),[environments,setEnvironments]=useState5([]);useEffect6(()=>{for(let filter of shownFilters)mountedFilters[filter]+=1;return()=>{for(let filter of shownFilters)mountedFilters[filter]-=1}},[shownFilters]),useEffect6(()=>{if(openDropdown!=="project")setProjectQuery("")},[openDropdown]),useEffect6(()=>{if(!client2||!shownFilters.has("env"))return;let controller=new AbortController;return listEnvironments(client2,{org,signal:controller.signal}).then((data)=>setEnvironments(data)).catch(()=>{}),()=>controller.abort()},[client2,org,shownFilters]);let projectItems=useMemo4(()=>{let items=projects.map((p)=>({label:p.slug,value:p.slug,platform:p.platform??null})),listed=new Set(items.map((item)=>item.value));return[...projectQuery.trim()?[]:selectedProjects.filter((slug)=>!listed.has(slug)).map((slug)=>({label:slug,value:slug,platform:null})),...items]},[projects,selectedProjects,projectQuery]),envItems=useMemo4(()=>environments.map((e)=>({label:e.name,value:e.name})),[environments]),selectedSlugs=useMemo4(()=>{let slugById=new Map(projects.map((p)=>[p.id,p.slug]));return selectedProjects.map((ref)=>slugById.get(ref)??ref)},[projects,selectedProjects]),fullProjectLabel=selectedSlugs.length===0?"all projects":selectedSlugs.join(", "),fullEnvLabel=selectedEnvs.length===0?"all envs":selectedEnvs.join(", "),projectChip={command:"sentry.view.filterProject",label:fullProjectLabel,caret:!0},envChip={command:"sentry.view.filterEnv",label:fullEnvLabel,caret:!0},dateChip={command:"sentry.view.filterDate",label:statsPeriod,caret:!0},sortChip=sort?{command:SORT_COMMAND,label:sortLabel(sort.items,sort.value),caret:!0}:void 0,shownOrder=CHIP_ORDER.filter((filter)=>shownFilters.has(filter)),chipCount=shownOrder.length+(sortChip?1:0),fixedWidth=(shownFilters.has("project")?chipWidth({...projectChip,label:""}):0)+(shownFilters.has("env")?chipWidth({...envChip,label:""}):0)+(shownFilters.has("date")?chipWidth(dateChip):0)+(sortChip?chipWidth(sortChip):0)+CHIP_GAP*Math.max(0,chipCount-1),labelBudget=width-fixedWidth,[projectLabelWidth,envLabelWidth]=shownFilters.has("project")&&shownFilters.has("env")?filterLabelWidths(fullProjectLabel,fullEnvLabel,labelBudget):shownFilters.has("project")?[Math.max(0,labelBudget),0]:[0,Math.max(0,labelBudget)],chipByFilter={project:{...projectChip,label:fitText(fullProjectLabel,projectLabelWidth)},env:{...envChip,label:fitText(fullEnvLabel,envLabelWidth)},date:dateChip},chips=shownOrder.map((filter)=>chipByFilter[filter]),offsets=chipOffsets(chips),anchorByFilter=new Map(shownOrder.map((filter,index)=>[filter,offsets[index]??0])),projectAnchorLeft=anchorByFilter.get("project")??0,envAnchorLeft=anchorByFilter.get("env")??0,dateAnchorLeft=anchorByFilter.get("date")??0,sortAnchorLeft=sortChip?Math.max(0,width-chipWidth(sortChip)):0,dropdownTop=anchorTop+CHIP_HEIGHT,handleProjectSelect=useCallback3((values)=>{onProjectChange(values)},[onProjectChange]),handleEnvSelect=useCallback3((values)=>{onEnvChange(values)},[onEnvChange]),handleDateSelect=useCallback3((values)=>{onPeriodChange(values[0]??"14d"),onDropdownClose()},[onPeriodChange,onDropdownClose]);return jsxDEV13(Fragment5,{children:[jsxDEV13("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV13(ChipRow,{chips,activeIndex:openDropdown&&openDropdown!=="sort"?shownOrder.indexOf(openDropdown):void 0,onPress:(_chip,index)=>onDropdownOpen?.(shownOrder[index]??null)},void 0,!1,void 0,this),jsxDEV13("box",{style:{flexGrow:1}},void 0,!1,void 0,this),sort&&sortChip?jsxDEV13("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV13("text",{children:" ".repeat(CHIP_GAP)},void 0,!1,void 0,this),jsxDEV13(SortSelector,{value:sort.value,items:sort.items,open:openDropdown==="sort",onOpen:()=>onDropdownOpen?.("sort")},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),openDropdown==="project"&&shownFilters.has("project")?jsxDEV13(Dropdown,{title:"Project",items:projectItems,selected:selectedSlugs,anchorLeft:projectAnchorLeft,anchorTop:dropdownTop,availableWidth:width,filterable:!0,remoteFilter:!0,multiple:!0,loading:projectsLoading,onQueryChange:setProjectQuery,placeholder:"No projects",onSelect:handleProjectSelect,onClose:onDropdownClose},void 0,!1,void 0,this):null,openDropdown==="env"&&shownFilters.has("env")?jsxDEV13(Dropdown,{title:"Environment",items:envItems,selected:selectedEnvs,anchorLeft:envAnchorLeft,anchorTop:dropdownTop,availableWidth:width,multiple:!0,onSelect:handleEnvSelect,onClose:onDropdownClose},void 0,!1,void 0,this):null,openDropdown==="date"&&shownFilters.has("date")?jsxDEV13(Dropdown,{title:"Date Range",items:DATE_OPTIONS,selected:[statsPeriod],anchorLeft:dateAnchorLeft,anchorTop:dropdownTop,availableWidth:width,showAll:!1,onSelect:handleDateSelect,onClose:onDropdownClose},void 0,!1,void 0,this):null,openDropdown==="sort"&&sort?jsxDEV13(SortDropdown,{value:sort.value,items:sort.items,anchorLeft:sortAnchorLeft,anchorTop:dropdownTop,availableWidth:width,onChange:sort.onChange,onClose:onDropdownClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV14}from"h:6___________________________";var SECTIONS=[{category:"nav",title:"Navigation"},{category:"issue",title:"Issue actions"},{category:"seer",title:"Seer"},{category:"view",title:"View / Filters"},{category:"app",title:"Application"}],HELP_CHROME=4,HELP_WIDTH=60,HELP_KEY_COLUMN=17;function HelpDialog({onClose}){let theme=useTheme(),rows=SECTIONS.flatMap(({category,title})=>{let commands=COMMANDS.filter((c)=>c.category===category&&c.defaultKeys.length>0);return commands.length?[{heading:title},...commands]:[]}),spacers=Math.max(0,SECTIONS.length-1),height=rows.length+spacers+HELP_CHROME+1;return jsxDEV14(ModalFrame,{title:" Keyboard shortcuts ",width:HELP_WIDTH,height,onClose,children:[jsxDEV14("scrollbox",{style:{flexGrow:1},children:rows.map((row,i)=>{if("heading"in row)return jsxDEV14("text",{fg:theme.accent,children:[i===0?"":`
|
|
11
|
+
`,row.heading]},`h-${row.heading}`,!0,void 0,this);let keys=row.defaultKeys.map(formatKey).join(", ");return jsxDEV14("text",{children:[jsxDEV14("span",{fg:theme.text,children:padText(keys,HELP_KEY_COLUMN)},void 0,!1,void 0,this),jsxDEV14("span",{fg:theme.muted,children:row.description??row.title},void 0,!1,void 0,this)]},row.id,!0,void 0,this)})},void 0,!1,void 0,this),jsxDEV14("text",{fg:theme.muted,style:{marginTop:1},children:"esc to close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback14,useEffect as useEffect17,useRef as useRef11,useState as useState16}from"h:0__";import{useKeyboard as useKeyboard4,useTerminalDimensions as useTerminalDimensions4}from"h:4___________";function issueTitle(group){return group.metadata?.type||group.metadata?.function||group.title}function issueMessage(group){let value=group.metadata?.value;if(value)return collapseWhitespace(value);let culprit=group.culprit??"";return culprit===issueTitle(group)?"":collapseWhitespace(culprit)}function collapseWhitespace(text){return text.replace(/\s+/g," ").trim()}import{useCallback as useCallback13,useContext as useContext2,useEffect as useEffect16,useMemo as useMemo8,useReducer as useReducer2}from"h:0__";var SEER_SUGGESTED_QUESTIONS=["Which of my open issues are getting worse, not better?","What are my slowest DB queries?","Walk me through what's on my screen and what I can focus on next."],SEER_THINKING_PLACEHOLDERS=["Looking around\u2026","One sec\u2026","Following breadcrumbs\u2026","Hold tight\u2026","Gathering threads\u2026","Tracing the answer\u2026","Stacking ideas\u2026","Profiling your project\u2026","Span by span\u2026","Rolling logs\u2026","Replaying prod\u2026","Scanning the error-waves\u2026"],SEER_STATUS_GLYPH={loading:"\u25D0",content:"\u2022",pending:"?",success:"\u2713",failure:"\u2717",mixed:"!"};function seerSlashCommands(capabilities,{hasRun,hasCodeChanges=!1}){let commands=[{id:"new",title:"/new",description:"Start a new session"},{id:"history",title:"/history",description:"Open recent Seer sessions"}];if(hasCodeChanges)commands.push({id:"create-pr",title:"/create-pr",description:"Create or update PRs for accepted changes"});if(capabilities.employee&&capabilities.codeMode)commands.push({id:"code-mode-off",title:"/code-mode-off",description:"Disable Code Mode tools"},{id:"code-mode-on",title:"/code-mode-on",description:"Use Code Mode alongside standard tools"},{id:"code-mode-only",title:"/code-mode-only",description:"Use only Code Mode tools"});if(capabilities.employee&&capabilities.bashMode)commands.push({id:"bash-mode-off",title:"/bash-mode-off",description:"Disable bash tools"},{id:"bash-mode-on",title:"/bash-mode-on",description:"Enable bash tools"});if(capabilities.thinking)commands.push({id:"thinking-off",title:"/thinking-off",description:"Hide Seer's reasoning"},{id:"thinking-on",title:"/thinking-on",description:"Show Seer's reasoning"});if(capabilities.employee&&hasRun)commands.push({id:"conversations",title:"/conversations",description:"Open the Sentry AI conversations view"});return commands}function codeModeLabel(mode){if(mode==="only")return"Code Mode only";if(mode==="on")return"Code Mode + standard";return"standard tools"}function getBlockStatus(block){if(block.loading)return"loading";if(!block.message.tool_calls?.length)return"content";let links=(block.tool_links??[]).filter((link)=>link!=null);if(links.some((link)=>link.params?.pending_approval||link.params?.pending_question))return"pending";if(links.length===0)return"success";let failures=links.filter((link)=>link.params?.is_error===!0).length;if(failures===0)return"success";if(failures===links.length)return"failure";return"mixed"}function parseArgs(tool){if(!tool.args)return{};try{let parsed=JSON.parse(tool.args);return parsed&&typeof parsed==="object"?parsed:{}}catch{return{}}}function str3(args,key){let value=args[key];return typeof value==="string"&&value!==""?value:void 0}function shortId(value){return value?value.slice(0,8):""}function repoName(args){let repo=str3(args,"repo_name")??str3(args,"repo");if(!repo)return"the codebase";let slash=repo.lastIndexOf("/");return slash===-1?repo:repo.slice(slash+1)}function describeTool(tool,loading){let args=parseArgs(tool),[now,done]=phrasesFor(tool.function,args);return loading?`${now}\u2026`:done}function phrasesFor(fn,args){switch(fn){case"telemetry_index_list_nodes":{let keyword=str3(args,"keyword")??"your services";return[`Scanning for ${keyword}`,`Scanned for ${keyword}`]}case"telemetry_index_dependencies":{let title=str3(args,"title")??"your services";return[`Tracing the flow of ${title}`,`Traced the flow of ${title}`]}case"google_search":{let question=str3(args,"question")??str3(args,"query")??"";return[`Googling '${question}'`,`Googled '${question}'`]}case"telemetry_live_search":{let question=str3(args,"question")??"",dataset=str3(args,"dataset"),noun=dataset==="issues"?"issues":dataset==="errors"?"errors":dataset==="logs"?"logs":dataset==="metrics"?"metrics":"spans";return[`Searching ${noun}: '${question}'`,`Searched ${noun}: '${question}'`]}case"get_trace_waterfall":{let spanId=str3(args,"span_id");if(spanId)return[`Digging into span ${shortId(spanId)}`,`Dug into span ${shortId(spanId)}`];let traceId=shortId(str3(args,"trace_id"));return[`Viewing waterfall for trace ${traceId}`,`Viewed waterfall for trace ${traceId}`]}case"get_issue_details":{let issue=str3(args,"issue_id")??str3(args,"short_id")??"";return[`Inspecting issue ${issue}`,`Inspected issue ${issue}`]}case"get_event_details":{let event=shortId(str3(args,"event_id"));return[`Analyzing event ${event}`,`Analyzed event ${event}`]}case"code_search":{let repo=repoName(args),mode=str3(args,"mode");if(mode==="read_file"){let path=str3(args,"path")??"a file";return[`Reading ${path} from ${repo}`,`Read ${path} from ${repo}`]}if(mode==="find_files"){let pattern=str3(args,"pattern")??"";return[`Finding files matching '${pattern}' in ${repo}`,`Found files matching '${pattern}' in ${repo}`]}if(mode==="search_content"){let pattern=str3(args,"pattern")??"";return[`Searching for '${pattern}' in ${repo}`,`Searched for '${pattern}' in ${repo}`]}return[`Searching code in ${repo}`,`Searched code in ${repo}`]}case"git_search":{let repo=repoName(args),sha=str3(args,"sha")??str3(args,"commit_sha");if(sha)return[`Digging up commit ${shortId(sha)} from ${repo}`,`Dug up commit ${shortId(sha)} from ${repo}`];let path=str3(args,"file_path")??"";return[`Excavating commits affecting '${path}' in ${repo}`,`Excavated commits affecting '${path}' in ${repo}`]}case"get_replay_details":{let replay=shortId(str3(args,"replay_id"));return[`Watching replay ${replay}`,`Watched replay ${replay}`]}case"get_profile_flamegraph":{let profile=shortId(str3(args,"profile_id"));return[`Sampling profile ${profile}`,`Sampled profile ${profile}`]}case"code_file_edit":{let path=str3(args,"path")??"a file",repo=repoName(args);return[`Editing ${path} in ${repo}`,`Edited ${path} in ${repo}`]}case"code_file_write":{let path=str3(args,"path")??"a file",repo=repoName(args);return[`Writing ${path} in ${repo}`,`Wrote ${path} in ${repo}`]}case"search_sentry_docs":{let question=str3(args,"question")??"";return[`Scouring Sentry docs: '${question}'`,`Scoured Sentry docs: '${question}'`]}case"todo_write":return["Updating todos","Updated todos"];case"ask_user_question":return["Asking a question","Asked a question"];default:{if(fn.startsWith("artifact_write_")){let artifact=fn.replace("artifact_write_","").replace(/_/g," ");return[`Submitting ${artifact} artifact`,`Submitted ${artifact} artifact`]}return[`Using ${fn} tool`,`Used ${fn} tool`]}}}function describeToolCalls(block){return(block.message.tool_calls??[]).map((tool)=>describeTool(tool,Boolean(block.loading)))}function getCallRecordStatus(record2,settled){if(record2.error||record2.status!==void 0&&record2.status>=400)return"failure";if(record2.status!==void 0)return"success";return settled?"success":"loading"}function describeCallRecord(record2){let title=record2.title?.trim();if(title)return title;if(record2.kind!=="lib"||!record2.name)return null;let subject=record2.name.replace(/^sentry_/,"").replace(/_/g," ");return subject?subject[0].toUpperCase()+subject.slice(1):null}function describeCallRecordDetail(record2){if(record2.kind!=="api"||!record2.method)return[];let path=record2.resolved_path??record2.path;if(!path)return[];let lines=[`${record2.method} ${path}`];if(record2.body)lines.push(record2.body,...record2.body_truncated?["\u2026"]:[]);return lines}function visibleCallRecords(records){let hasChildren=new Set(records.flatMap((record2)=>record2.parent===null||record2.parent===void 0?[]:[record2.parent])),preferLib=new Set(["get_span_details"]),hideChildrenOf=new Set(records.filter((record2)=>record2.kind==="lib"&&Boolean(record2.name&&preferLib.has(record2.name))&&hasChildren.has(record2.id)).map((record2)=>record2.id));return records.filter((record2)=>{if(record2.parent!==null&&record2.parent!==void 0&&hideChildrenOf.has(record2.parent))return!1;if(record2.kind!=="lib"||!hasChildren.has(record2.id))return!0;return Boolean(record2.name&&preferLib.has(record2.name))})}function latestSeerTodos(blocks){let latest=null;for(let block of blocks){if(block.todos?.length)latest={blockId:block.id,todos:block.todos};for(let result of block.tool_results??[]){let todos=result?.structuredContent?.todos;if(todos?.length)latest={blockId:block.id,todos}}}return latest}function summarizeSeerCodeChanges(blocks,repoPRStates){let patches=new Map,latestCommit=new Map;for(let block of blocks){let changedRepos=new Set;for(let patch of block.merged_file_patches??[])patches.set(`${patch.repo_name}:${patch.patch.path}`,patch),changedRepos.add(patch.repo_name);for(let repoName2 of changedRepos)latestCommit.set(repoName2,block.pr_commit_shas?.[repoName2])}let byRepo=new Map;for(let patch of patches.values()){let current=byRepo.get(patch.repo_name)??{added:0,files:[],prNumber:null,prUrl:null,removed:0,repoName:patch.repo_name,status:"needs_push"};current.added+=patch.patch.added,current.removed+=patch.patch.removed,current.files.push({added:patch.patch.added,path:patch.patch.path,removed:patch.patch.removed}),byRepo.set(patch.repo_name,current)}for(let change of byRepo.values()){let state=repoPRStates[change.repoName];if(change.prNumber=state?.pr_number??null,change.prUrl=state?.pr_url??null,state?.pr_creation_status==="creating")change.status="creating";else if(state?.pr_creation_status==="error")change.status="error";else if(!state?.pr_number||!state.pr_url)change.status="needs_push";else if(state.commit_sha&&latestCommit.get(change.repoName)!==state.commit_sha)change.status="needs_push";else change.status="pushed"}return[...byRepo.values()]}import{createContext as createContext2,useCallback as useCallback4,useEffect as useEffect7,useMemo as useMemo5,useReducer,useRef as useRef3,useState as useState6}from"h:0__";var SEER_POLL_INTERVAL_MS=500,SEER_ERROR_POLL_INTERVAL_MS=2500;function pickRunId(response){return response.sentry_run_id??response.run_id}var basePath=(org)=>`/organizations/${org}/seer/explorer-chat/`,runPath=(org,runId2)=>`${basePath(org)}${encodeURIComponent(String(runId2))}/`;async function sendSeerMessage(client2,{org,query,insertIndex,runId:runId2,pageName,sentAt,codeMode,bashMode,signal}){let page=await client2.request(runId2==null?basePath(org):runPath(org,runId2),{method:"POST",body:{query,insert_index:insertIndex,page_name:pageName,sent_at:sentAt,override_code_mode_enable:codeMode,override_bash_mode_enabled:bashMode},signal});return pickRunId(page.data)}async function listSeerRuns(client2,{org,signal,limit=20}){return(await client2.request(`/organizations/${org}/seer/runs/`,{query:{per_page:limit,query:"is:mine type:explorer"},signal})).data}async function getSeerSession(client2,{org,runId:runId2,signal}){return(await client2.request(runPath(org,runId2),{signal})).data?.session??null}async function interruptSeerRun(client2,{org,runId:runId2,signal}){await client2.request(`/organizations/${org}/seer/explorer-update/${encodeURIComponent(String(runId2))}/`,{method:"POST",body:{payload:{type:"interrupt"}},signal})}async function respondToSeerInput(client2,{org,runId:runId2,inputId,responseData,signal}){await client2.request(`/organizations/${org}/seer/explorer-update/${encodeURIComponent(String(runId2))}/`,{method:"POST",body:{payload:{type:"user_input_response",input_id:inputId,response_data:responseData}},signal})}async function createSeerPR(client2,{org,runId:runId2,repoName:repoName2,signal}){await client2.request(`/organizations/${org}/seer/explorer-update/${encodeURIComponent(String(runId2))}/`,{method:"POST",body:{payload:{type:"create_pr",repo_name:repoName2}},signal})}async function approveSeerWrite(client2,{org,sessionId,scopes,signal}){return(await client2.request(`/organizations/${org}/agent/approve/`,{method:"POST",body:{sessionId,scopes},signal})).data.scopes}function isSessionSettled(session){if(!session)return!1;if(session.status==="processing")return!1;return!session.blocks.some((block)=>block.loading)}function parseTimestamp(value){let hasZone=/(?:Z|[+-]\d{2}:?\d{2})$/.test(value);return Date.parse(hasZone?value:`${value}Z`)}function isSessionStale(session,now){if(!session)return!1;let updatedAt=parseTimestamp(session.updated_at);if(Number.isNaN(updatedAt))return!1;return now-updatedAt>=120000}import{reportError as reportError2}from"h:7___________________________________";function toAsyncError(error){if(error instanceof ApiError)return{message:error.message,retryable:error.retryable,retryAfterSeconds:error.retryAfterSeconds};if(!isAbort(error))reportError2(error,{source:"api.response.unreadable"});return{message:error instanceof Error?error.message:String(error),retryable:!0}}function isAbort(error){if(!(error instanceof Error))return!1;return error.name==="AbortError"||error.name==="TimeoutError"}var idle=()=>({state:"idle"});function startLoading(current,now){return{state:"loading",since:now,previous:valueOf(current)}}function resolved(value,now){return{state:"ready",value,fetchedAt:now}}function rejected(current,error){return{state:"error",error,previous:valueOf(current)}}function valueOf(status){if(!status)return;switch(status.state){case"ready":return status.value;case"loading":case"error":return status.previous;case"idle":return}}function mapAsyncStatus(status,map){switch(status.state){case"idle":return status;case"loading":return status.previous===void 0?{state:"loading",since:status.since}:{state:"loading",since:status.since,previous:map(status.previous)};case"ready":return{state:"ready",value:map(status.value),fetchedAt:status.fetchedAt};case"error":return status.previous===void 0?{state:"error",error:status.error}:{state:"error",error:status.error,previous:map(status.previous)}}}function isLoading(status){return status?.state==="loading"}function isInitialLoad(status){return status?.state==="loading"&&status.previous===void 0}function errorOf(status){return status?.state==="error"?status.error:void 0}function loadingSince(status){return status?.state==="loading"?status.since:void 0}function initialSeerConversationState(runId2=null){return{session:idle(),runId:runId2,optimistic:null,timedOut:!1,interrupting:!1,pollToken:0}}function resumeSession(session,now){let current=valueOf(session);return current?resolved({...current,status:"processing",updated_at:new Date(now).toISOString()},now):session}function seerConversationReducer(state,action){switch(action.type){case"orgChanged":case"reset":return initialSeerConversationState();case"sendStarted":return{...state,session:startLoading(state.session,action.now),optimistic:action.optimistic,timedOut:!1,interrupting:!1};case"sendSucceeded":return{...state,runId:action.runId,pollToken:state.pollToken+1};case"sendFailed":return{...state,session:rejected(state.session,action.error),optimistic:null};case"pollProgressed":return{...state,session:resolved(action.session,action.now)};case"pollSettled":return{...state,session:resolved(action.session,action.now),optimistic:null,interrupting:!1};case"pollStale":return{...state,session:resolved(action.session,action.now),optimistic:null,timedOut:!0};case"pollFailed":return{...state,session:rejected(state.session,action.error),optimistic:null};case"interruptStarted":return{...state,interrupting:!0};case"interruptFailed":return{...state,interrupting:!1};case"respondStarted":return{...state,session:resumeSession(state.session,action.now),timedOut:!1,interrupting:!1};case"respondSucceeded":return{...state,pollToken:state.pollToken+1};case"respondFailed":case"approveWriteFailed":return{...state,session:rejected(state.session,action.error)};case"createPRStarted":return{...state,session:resumeSession(state.session,action.now)};case"createPRSucceeded":return{...state,pollToken:state.pollToken+1};case"createPRFailed":return{...state,session:rejected(state.session,action.error)};case"switchRun":if(action.runId===state.runId)return state;return{...initialSeerConversationState(),runId:action.runId,pollToken:state.pollToken+1}}}var MAX_ERROR_POLLS=Math.ceil(60000/SEER_ERROR_POLL_INTERVAL_MS);function toAsyncError2(error){if(error instanceof ApiError)return{message:error.message,retryable:error.retryable,retryAfterSeconds:error.retryAfterSeconds};return{message:error instanceof Error?error.message:String(error),retryable:!0}}function hasFeature(features,name){return features?.includes(name)===!0}function useSeerChat(client2,org,options={}){let[conversation,dispatch]=useReducer(seerConversationReducer,options.initialRunId??null,initialSeerConversationState),[runs,setRuns]=useState6(idle),conversationRef=useRef3(conversation);conversationRef.current=conversation;let runsRef=useRef3(runs);runsRef.current=runs;let turnCount=useRef3(0),previousOrg=useRef3(org);useEffect7(()=>{if(previousOrg.current===org)return;previousOrg.current=org,dispatch({type:"orgChanged"}),setRuns(idle)},[org]);let capabilities=useMemo5(()=>({available:options.features===void 0||hasFeature(options.features,"seer-explorer"),bashMode:hasFeature(options.features,"seer-explorer-allow-bash-mode"),codeMode:hasFeature(options.features,"seer-explorer-code-mode-tools"),embeds:hasFeature(options.features,"seer-explorer-embeds"),employee:options.isEmployee===!0,infraTelemetry:hasFeature(options.features,"seer-infra-telemetry"),streaming:hasFeature(options.features,"seer-explorer-stream"),thinking:hasFeature(options.features,"seer-explorer-thinking-blocks")}),[options.features,options.isEmployee]),codeMode=options.codeMode??"only",bashMode=options.bashMode??!1,showThinking=capabilities.thinking&&(options.showThinking??!1);useEffect7(()=>{if(!client2||!org||conversation.runId==null)return;let runId2=conversation.runId,controller=new AbortController,cancelled=!1,timer,errorPolls=0,tick=async()=>{try{let next=await getSeerSession(client2,{org,runId:runId2,signal:controller.signal});if(cancelled)return;if(errorPolls=0,next){let now=Date.now();if(isSessionSettled(next)){dispatch({type:"pollSettled",session:next,now});return}if(isSessionStale(next,now)){dispatch({type:"pollStale",session:next,now});return}dispatch({type:"pollProgressed",session:next,now})}timer=setTimeout(()=>void tick(),SEER_POLL_INTERVAL_MS)}catch(error){if(cancelled||controller.signal.aborted)return;if(errorPolls+=1,errorPolls>MAX_ERROR_POLLS){dispatch({type:"pollFailed",error:toAsyncError2(error)});return}timer=setTimeout(()=>void tick(),SEER_ERROR_POLL_INTERVAL_MS)}};return tick(),()=>{cancelled=!0,controller.abort(),clearTimeout(timer)}},[client2,org,conversation.runId,conversation.pollToken]);let send=useCallback4((query)=>{let trimmed=query.trim();if(!client2||!org||trimmed===""||!capabilities.available)return;let base=valueOf(conversationRef.current.session)?.blocks??[],turn=turnCount.current++,now=new Date().toISOString(),placeholder=SEER_THINKING_PLACEHOLDERS[turn%SEER_THINKING_PLACEHOLDERS.length]??"Thinking\u2026",optimistic=[...base,{id:`optimistic-user-${turn}`,message:{role:"user",content:trimmed},timestamp:now},{id:`optimistic-assistant-${turn}`,message:{role:"assistant",content:placeholder},timestamp:now,loading:!0}];dispatch({type:"sendStarted",optimistic,now:Date.now()});let currentRun=conversationRef.current.runId,sent=new Date;sendSeerMessage(client2,{org,query:trimmed,runId:currentRun,insertIndex:base.length,pageName:options.pageName,sentAt:[sent.toString(),sent.toISOString()],codeMode:capabilities.codeMode?codeMode:void 0,bashMode:capabilities.employee&&capabilities.bashMode?bashMode:void 0}).then((id)=>{dispatch({type:"sendSucceeded",runId:id})}).catch((error)=>{dispatch({type:"sendFailed",error:toAsyncError2(error)})})},[client2,org,capabilities.available,capabilities.codeMode,capabilities.employee,capabilities.bashMode,options.pageName,codeMode,bashMode]),interrupt=useCallback4(()=>{let currentRun=conversationRef.current.runId;if(!client2||!org||currentRun==null)return;dispatch({type:"interruptStarted"}),interruptSeerRun(client2,{org,runId:currentRun}).catch(()=>{dispatch({type:"interruptFailed"})})},[client2,org]),respond=useCallback4((inputId,responseData)=>{let currentRun=conversationRef.current.runId;if(!client2||!org||currentRun==null)return;dispatch({type:"respondStarted",now:Date.now()}),respondToSeerInput(client2,{org,runId:currentRun,inputId,responseData}).then(()=>dispatch({type:"respondSucceeded"})).catch((error)=>{dispatch({type:"respondFailed",error:toAsyncError2(error)})})},[client2,org]),approveWrite=useCallback4((inputId,sessionId,scopes)=>{if(!client2||!org||scopes.length===0)return;approveSeerWrite(client2,{org,sessionId,scopes}).then((granted)=>{let approved=scopes.every((scope)=>granted.includes(scope));respond(inputId,{decision:approved?"approve":"reject",...approved?{}:{reason:"insufficient_scope"}})}).catch((error)=>{dispatch({type:"approveWriteFailed",error:toAsyncError2(error)})})},[client2,org,respond]),createPR=useCallback4((repoName2)=>{let currentRun=conversationRef.current.runId;if(!client2||!org||currentRun==null||!repoName2)return;dispatch({type:"createPRStarted",now:Date.now()}),createSeerPR(client2,{org,runId:currentRun,repoName:repoName2}).then(()=>dispatch({type:"createPRSucceeded"})).catch((error)=>{dispatch({type:"createPRFailed",error:toAsyncError2(error)})})},[client2,org]),switchRun=useCallback4((nextRunId)=>{dispatch({type:"switchRun",runId:nextRunId})},[]),loadRuns=useCallback4(()=>{if(!client2||!org||!capabilities.available)return;let controller=new AbortController;setRuns(startLoading(runsRef.current,Date.now())),listSeerRuns(client2,{org,signal:controller.signal}).then((next)=>setRuns(resolved(next,Date.now()))).catch((error)=>{if(!controller.signal.aborted)setRuns(rejected(runsRef.current,toAsyncError2(error)))})},[client2,org,capabilities.available]),reset=useCallback4(()=>{dispatch({type:"reset"})},[]),serverBlocks=valueOf(conversation.session)?.blocks??[],blocks=useMemo5(()=>{if(!conversation.optimistic)return serverBlocks;return serverBlocks.length>=conversation.optimistic.length?serverBlocks:conversation.optimistic},[serverBlocks,conversation.optimistic]),status=valueOf(conversation.session)?.status,thinking=!conversation.timedOut&&(conversation.optimistic!==null||status==="processing"||blocks.some((block)=>block.loading)),ownerId=valueOf(conversation.session)?.owner_user_id,readOnly=ownerId!==null&&ownerId!==void 0&&String(ownerId)!==options.userId,repoPRStates=valueOf(conversation.session)?.repo_pr_states??{},codeChanges=useMemo5(()=>summarizeSeerCodeChanges(blocks,repoPRStates),[blocks,repoPRStates]),setCodeMode=useCallback4((mode)=>options.onCodeModeChange?.(mode),[options.onCodeModeChange]),setBashMode=useCallback4((enabled)=>options.onBashModeChange?.(enabled),[options.onBashModeChange]),setShowThinking=useCallback4((enabled)=>options.onShowThinkingChange?.(enabled),[options.onShowThinkingChange]);return{blocks,thinking,timedOut:conversation.timedOut,interrupting:conversation.interrupting,error:errorOf(conversation.session),started:conversation.runId!==null||blocks.length>0,runId:conversation.runId,readOnly,pendingInput:valueOf(conversation.session)?.pending_user_input??null,repoPRStates,codeChanges,capabilities,codeMode,bashMode,showThinking,runs,send,interrupt,reset,switchRun,loadRuns,respond,approveWrite,createPR,setCodeMode,setBashMode,setShowThinking}}var SeerChatContext=createContext2(null);import{useCallback as useCallback12,useMemo as useMemo7,useRef as useRef10}from"h:0__";import{RenderableEvents}from"h:3__________";var BLOCKS=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],HORIZONTAL_BLOCKS=["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u2588"];function sparkline(series,width,{floor=!1}={}){if(width<=0)return"";if(!series||series.length===0)return"\u254C".repeat(width);let counts=series.map(([,count])=>count),buckets=downsample(counts,width),max=Math.max(...buckets),empty=floor?BLOCKS[0]:" ";if(max===0)return BLOCKS[0].repeat(buckets.length).padStart(width);return buckets.map((value)=>{if(value===0)return empty;let scaled=Math.ceil(value/max*BLOCKS.length)-1;return BLOCKS[Math.max(0,Math.min(BLOCKS.length-1,scaled))]}).join("").padStart(width)}function sparklineBlock(series,width,rows,{floor=!1}={}){if(rows<=0)return[];if(width<=0)return Array.from({length:rows},()=>"");if(!series||series.length===0)return Array.from({length:rows},()=>"\u254C".repeat(width));let buckets=downsample(series.map(([,count])=>count),width),max=Math.max(...buckets),pad=" ".repeat(Math.max(0,width-buckets.length));return Array.from({length:rows},(_,row)=>{let isBottom=row===rows-1,below=rows-1-row,blank=isBottom&&(floor||max===0)?BLOCKS[0]:" ",glyphs=buckets.map((value)=>{let filled=max===0?0:value/max*rows,fill=Math.min(1,filled-below);if(fill<=0)return blank;let level=Math.ceil(fill*BLOCKS.length)-1;return BLOCKS[Math.max(0,Math.min(BLOCKS.length-1,level))]}).join("");return pad+glyphs})}function proportionalBar(fraction,width){if(width<=0)return"";let clamped=Number.isFinite(fraction)?Math.max(0,Math.min(1,fraction)):0,eighths=Math.round(clamped*width*8);if(eighths===0)return(clamped>0?HORIZONTAL_BLOCKS[0]:" ").padEnd(width);let full=Math.min(width,Math.floor(eighths/8)),rest=eighths%8,partial=rest>0&&full<width?HORIZONTAL_BLOCKS[rest-1]:"";return("\u2588".repeat(full)+partial).padEnd(width)}function stretch(points,width){if(points.length===0||points.length>=width)return[...points];return Array.from({length:width},(_,cell)=>points[Math.min(points.length-1,Math.floor(cell*points.length/width))])}function downsample(values,width){if(values.length<=width)return values;let bucketSize=values.length/width,out=[];for(let i=0;i<width;i++){let start=Math.floor(i*bucketSize),end=Math.min(values.length,Math.floor((i+1)*bucketSize)),sum=0;for(let j=start;j<end;j++)sum+=values[j];out.push(end>start?sum/(end-start):0)}return out}function formatCount(value){if(value===void 0)return"\xB7\xB7";let n=typeof value==="string"?Number(value):value;if(!Number.isFinite(n))return"0";let sign=n<0?"-":"",magnitude=Math.abs(n),units=[{divisor:1,suffix:""},{divisor:1000,suffix:"k"},{divisor:1e6,suffix:"m"},{divisor:1e9,suffix:"b"},{divisor:1000000000000,suffix:"t"}],unitIndex=0;while(unitIndex+1<units.length&&magnitude>=units[unitIndex+1].divisor)unitIndex++;while(unitIndex+1<units.length){let scaled2=magnitude/units[unitIndex].divisor,decimals2=unitIndex===0?2:scaled2<10?1:0;if(Number(scaled2.toFixed(decimals2))<1000)break;unitIndex++}let unit=units[unitIndex],scaled=magnitude/unit.divisor,decimals=unitIndex===0?2:scaled<10?1:0;return`${sign}${Number(scaled.toFixed(decimals))}${unit.suffix}`}function countLabel(value,noun){let n=typeof value==="string"?Number(value):value;return`${formatCount(value)} ${n===1?noun:`${noun}s`}`}function timeAgo(iso,now=Date.now()){if(!iso)return"";let then=Date.parse(iso);if(Number.isNaN(then))return"";let seconds=Math.max(0,Math.floor((now-then)/1000));if(seconds<60)return`${seconds}s`;let minutes=Math.floor(seconds/60);if(minutes<60)return`${minutes}m`;let hours=Math.floor(minutes/60);if(hours<24)return`${hours}h`;let days=Math.floor(hours/24);if(days<7)return`${days}d`;let weeks=Math.floor(days/7);if(weeks<52)return`${weeks}w`;return`${Math.floor(days/365)}y`}import{useEffect as useEffect8,useState as useState7}from"h:0__";import{jsxDEV as jsxDEV15}from"h:6___________________________";var FRAMES=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],FRAME_MS=80;function useSpinnerFrame(active=!0){let[index,setIndex]=useState7(0);return useEffect8(()=>{if(!active)return;let timer=setInterval(()=>setIndex((i)=>(i+1)%FRAMES.length),FRAME_MS);return()=>clearInterval(timer)},[active]),FRAMES[index]}function SpinnerGlyph(){let frame=useSpinnerFrame();return jsxDEV15("span",{children:frame},void 0,!1,void 0,this)}import{Fragment as Fragment9}from"h:0__";import{countMetric as countMetric3}from"h:7___________________________________";var SEER_EMBED_LEVELS={agentWriteApproval:["block"],alert:["inline","block"],autofix:["block"],autofixRef:["block"],chart:["block"],dashboard:["inline","block"],docs:["inline"],dsn:["block"],errorsQuery:["inline","block"],issue:["inline","block"],issues:["block"],issuesQuery:["inline","block"],logsQuery:["inline","block"],metricsQuery:["inline","block"],monitor:["inline","block"],profile:["inline","block"],release:["inline","block"],replay:["inline","block"],replaysQuery:["inline","block"],savedIssueView:["inline","block"],savedQuery:["inline","block"],spansQuery:["inline","block"],timestamp:["inline"],trace:["inline","block"],user:["inline"]},STRUCTURED_SEER_EMBEDS=new Set(["agentWriteApproval"]);function seerEmbedLevel(name,aloneInBlock){let levels=SEER_EMBED_LEVELS[name];if(!levels)return null;if(!levels.includes("block"))return"inline";if(!levels.includes("inline"))return"block";return aloneInBlock?"block":"inline"}var reportedUnknownEmbeds=new Set;function reportUnknownSeerEmbed(name,level){if(reportedUnknownEmbeds.has(name))return;reportedUnknownEmbeds.add(name),countMetric3("ui.seer_embed.unknown",{level})}function embedText(value){if(typeof value==="string")return value===""?void 0:value;if(typeof value==="number"&&Number.isFinite(value))return String(value);return}function embedTexts(value){if(!Array.isArray(value))return[];return value.flatMap((entry)=>{let text=embedText(entry);return text?[text]:[]})}var STATS_PERIOD=/^\d+[smhdw]$/;function readEmbedFilters(data){let statsPeriod=embedText(data.statsPeriod);return{projects:embedTexts(data.projects),environments:embedTexts(data.environments),statsPeriod:statsPeriod&&STATS_PERIOD.test(statsPeriod)?statsPeriod:void 0,start:embedText(data.start),end:embedText(data.end)}}function describeEmbedPeriod(filters){if(filters.start&&filters.end)return`${filters.start} \u2192 ${filters.end}`;return filters.statsPeriod}function readQueryEmbed(data){let mode=embedText(data.mode);return{query:embedText(data.query)??"",mode:mode==="aggregate"?"aggregate":"samples",groupBy:embedTexts(data.groupBy),yAxes:embedTexts(data.yAxes),fields:embedTexts(data.fields),sort:embedText(data.sort),title:embedText(data.title),filters:readEmbedFilters(data)}}var DEFAULT_METRIC_AGGREGATE={counter:"sum",distribution:"sum",gauge:"avg"},NONE_UNIT="none";function searchValue(value){return/^[\w.@:/-]+$/.test(value)?value:JSON.stringify(value)}function resolveMetricsEmbed(data,embed){let name=embedText(data.name),type=embedText(data.type);if(!name||!type)return{query:embed.query,yAxes:embed.yAxes};let unit=embedText(data.unit),resolvedUnit=unit&&unit!=="-"?unit:NONE_UNIT,qualify=(aggregate)=>`${aggregate}(value,${name},${type},${resolvedUnit})`,yAxes=embed.yAxes.length>0?embed.yAxes.map((yAxis)=>{let parsed=/^([A-Za-z_][\w]*)\s*\(/.exec(yAxis);return parsed?.[1]?qualify(parsed[1]):yAxis}):[qualify(DEFAULT_METRIC_AGGREGATE[type]??"sum")];if(embed.mode==="aggregate")return{query:embed.query,yAxes};let unitFilter=resolvedUnit===NONE_UNIT?`(!has:metric.unit OR metric.unit:${NONE_UNIT})`:`metric.unit:${searchValue(resolvedUnit)}`,identity=`(metric.name:${searchValue(name)} metric.type:${searchValue(type)} ${unitFilter})`;return{query:embed.query?`${embed.query} ${identity}`:identity,yAxes}}function humanize(value){return value.replace(/_/g," ")}function shortId2(value,length=8){return value.length>length?value.slice(0,length):value}function reference(noun,id){return id?`**${noun} ${id}**`:`**${noun}**`}function relativeTime(value,now=Date.now()){let parsed=Date.parse(value);if(Number.isNaN(parsed))return value;let seconds=Math.round((parsed-now)/1000),absolute=Math.abs(seconds),[amount,unit]=absolute<60?[absolute,"second"]:absolute<3600?[Math.round(absolute/60),"minute"]:absolute<86400?[Math.round(absolute/3600),"hour"]:[Math.round(absolute/86400),"day"];return`${amount} ${unit}${amount===1?"":"s"} ${seconds<0?"ago":"from now"}`}function embedTimestamp(data){let value=embedText(data.value);if(!value)return"";if(data.format==="relative")return relativeTime(value);let parsed=Date.parse(value);return Number.isNaN(parsed)?value:new Date(parsed).toLocaleString()}function queryEmbedTitle(embed,noun){return embed.title??(embed.query||`All ${noun}`)}function inlineSeerEmbed(name,data){let id=embedText(data.id),title=embedText(data.title),label=embedText(data.name);switch(name){case"timestamp":return embedTimestamp(data);case"docs":{let href=embedText(data.href);return title&&href?`[${title}](${href})`:title??href??""}case"user":return`@${label??"user"}`;case"dsn":return`\`${embedText(data.value)??"DSN"}\``;case"issue":return`**${id??"issue"}**`;case"issues":{let ids=embedTexts(data.ids);return ids.length>0?ids.map((entry)=>`**${entry}**`).join(", "):"Issues"}case"dashboard":return title?`**${title}**`:reference("Dashboard",id);case"replay":{let replayId=embedText(data.id);return reference("Replay",replayId?shortReplayId(replayId):void 0)}case"release":return reference("Release",embedText(data.version));case"alert":{let kind=embedText(data.kind);if(label)return`**${label}**`;return reference(kind?`${kind} alert`:"Alert",id)}case"monitor":return label?`**${label}**`:reference("Monitor",id);case"savedIssueView":return label?`**${label}**`:reference("Issue view",id);case"savedQuery":{let dataset=embedText(data.dataset),base=label?`**${label}**`:reference("Saved query",id);return dataset?`${base} (${dataset})`:base}case"trace":{let traceId=embedText(data.traceId);return reference("Trace",traceId?shortId2(traceId):void 0)}case"profile":{let profileId=embedText(data.profileId);return reference("Profile",profileId?shortId2(profileId):void 0)}case"chart":return title??"Chart";case"autofix":return embedText(data.result)??"Autofix result";case"autofixRef":return`**Autofix \xB7 ${humanize(embedText(data.step)??"run")}**`;case"agentWriteApproval":return"Seer requested permission to make changes.";case"issuesQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"issues")}**`;case"errorsQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"errors")}**`;case"spansQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"spans")}**`;case"logsQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"logs")}**`;case"replaysQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"replays")}**`;case"metricsQuery":{let metric=embedText(data.name);return`**${embedText(data.title)??metric??"Metric"}**`}default:return""}}var DASHBOARD_SORT_OPTIONS=[{value:"mydashboards",label:"My Dashboards"},{value:"title",label:"Name (A-Z)"},{value:"-title",label:"Name (Z-A)"},{value:"-dateCreated",label:"Newest Created"},{value:"dateCreated",label:"Oldest Created"},{value:"mostPopular",label:"Most Popular"},{value:"recentlyViewed",label:"Recently Viewed"}];function dashboardSortOptions(prebuilt){return prebuilt?DASHBOARD_SORT_OPTIONS.filter((option)=>option.value!=="mydashboards"):DASHBOARD_SORT_OPTIONS}function dashboardSort(value,fallback,prebuilt){return dashboardSortOptions(prebuilt).some((option)=>option.value===value)?value:fallback}var DASHBOARDS_PAGE_SIZE=50,STARRED_DASHBOARDS_IN_NAV=20;async function listDashboards(client2,{org,filter,query,sort,limit=DASHBOARDS_PAGE_SIZE,cursor,signal}){let page=await fetchPage_listOrganizationDashboards({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{filter:filter?[filter]:void 0,query:query||void 0,sort,pin:"favorites",per_page:limit}},cursor);return client2.generatedPage(page)}async function listStarredDashboards(client2,{org,limit=STARRED_DASHBOARDS_IN_NAV,signal}){let page=await client2.request(`/organizations/${org}/dashboards/starred/`,{query:{per_page:limit},signal});return Array.isArray(page.data)?page.data:[]}async function getDashboard(client2,{org,id,signal}){let dashboard=(await client2.request(`/organizations/${org}/dashboards/${id}/`,{signal})).data;return{...dashboard,widgets:Array.isArray(dashboard?.widgets)?dashboard.widgets:[]}}var DETECTOR_TYPE={error:"error",metric:"metric_issue",cron:"monitor_check_in_failure",uptime:"uptime_domain_failure",issueStream:"issue_stream",mobileBuild:"preprod_size_analysis"},DETECTORS_PAGE_SIZE=50,DETECTOR_SORT_OPTIONS=[{value:"-latestGroup",label:"Latest Issue (newest)"},{value:"latestGroup",label:"Latest Issue (oldest)"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"type",label:"Type (A-Z)"},{value:"-type",label:"Type (Z-A)"},{value:"-connectedWorkflows",label:"Most Alerts"},{value:"connectedWorkflows",label:"Fewest Alerts"}],DEFAULT_DETECTOR_SORT="-latestGroup";function detectorSort(value){return DETECTOR_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_DETECTOR_SORT}var MAX_DETECTORS_PER_REQUEST=100;async function listDetectors(client2,{org,query,sortBy=DEFAULT_DETECTOR_SORT,project,limit=DETECTORS_PAGE_SIZE,cursor,signal}){let page=await fetchPage_listOrganizationDetectors({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{query:query||void 0,sortBy,project:projectParams(project),per_page:limit}},cursor);return client2.generatedPage({...page,data:detectorsFromResponse(page.data)})}async function fetchDetector(client2,{org,detectorId,signal}){return(await client2.request(`/organizations/${org}/detectors/${detectorId}/`,{signal})).data}var OPEN_PERIODS_LIMIT=20;async function listDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,limit=OPEN_PERIODS_LIMIT,cursor,signal}){return client2.request(`/organizations/${org}/open-periods/`,{query:{detectorId,statsPeriod,per_page:limit,cursor},signal})}async function listDetectorsByIds(client2,{org,ids,signal}){let unique=[...new Set(ids)];if(unique.length===0)return[];let chunks=[];for(let i=0;i<unique.length;i+=MAX_DETECTORS_PER_REQUEST)chunks.push(unique.slice(i,i+MAX_DETECTORS_PER_REQUEST));return(await Promise.all(chunks.map((chunk)=>fetchPage_listOrganizationDetectors({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{id:chunk.map(Number),per_page:MAX_DETECTORS_PER_REQUEST}}).then((page)=>detectorsFromResponse(page.data)).catch(()=>[])))).flat()}function detectorsFromResponse(data){return Array.isArray(data)?data:[]}var VIEW_SORT_OPTIONS=[{value:"popularity",label:"Most Starred"},{value:"visited",label:"Recently Viewed"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-created",label:"Created (Newest)"},{value:"created",label:"Created (Oldest)"}];function viewSort(value){return VIEW_SORT_OPTIONS.some((option)=>option.value===value)?value:"popularity"}function endpointSort(sort){switch(sort){case"popularity":return["-popularity","-visited","-created"];case"visited":return["-visited","-popularity","-created"];case"name":return["name","-visited","-created"];case"-name":return["-name","-visited","-created"];case"created":return["created","-popularity","-visited"];case"-created":return["-created","-popularity","-visited"]}}var VIEWS_PAGE_SIZE=20;async function fetchGroupSearchView(client2,{org,viewId,signal}){return(await client2.request(`/organizations/${org}/group-search-views/${viewId}/`,{signal})).data}async function listGroupSearchViews(client2,{org,createdBy,sort="popularity",limit=VIEWS_PAGE_SIZE,cursor,signal}){return client2.request(`/organizations/${org}/group-search-views/`,{query:{createdBy,sort:endpointSort(sort),per_page:limit,cursor},signal})}var MAX_STARRED_SAVED_QUERIES_IN_NAV=20;var EXPLORE_SAVED_QUERY_SORT_OPTIONS=[{value:"mostStarred",label:"Most Starred"},{value:"recentlyViewed",label:"Recently Viewed"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-dateAdded",label:"Created (Newest)"},{value:"dateAdded",label:"Created (Oldest)"}],DISCOVER_SAVED_QUERY_SORT_OPTIONS=[{value:"myqueries",label:"My Queries"},{value:"-dateUpdated",label:"Recently Edited"},{value:"name",label:"Name (A-Z)"},{value:"-dateCreated",label:"Created (Newest)"},{value:"dateCreated",label:"Created (Oldest)"},{value:"dateUpdated",label:"Most Outdated"},{value:"mostPopular",label:"Most Popular"},{value:"recentlyViewed",label:"Recently Viewed"}];function savedQuerySortOptions(source){return source==="explore"?EXPLORE_SAVED_QUERY_SORT_OPTIONS:DISCOVER_SAVED_QUERY_SORT_OPTIONS}function savedQueryListSort(value,source){if(savedQuerySortOptions(source).some((option)=>option.value===value))return value;return source==="explore"?"mostStarred":"myqueries"}var EXPLORE_DATASET_LABEL={logs:"Logs",spans:"Traces",segment_spans:"Traces",metrics:"Metrics",replays:"Replays",ai_conversations:"Conversations"},EXPLORE_DATASET_TO_EVENTS={logs:"logs",spans:"spans",segment_spans:"spans",metrics:"tracemetrics",replays:"replays",ai_conversations:"spans"};async function exploreSavedQueriesPage(client2,{org,starred,search,sort="recentlyViewed",limit=50,cursor,signal}){let page=await client2.request(`/organizations/${org}/explore/saved/`,{query:{sortBy:["starred",sort],per_page:limit,starred:starred?1:void 0,query:search||void 0,cursor},signal});return{...page,data:asArray2(page.data).map(normaliseExplore).filter(isRunnable)}}function normaliseExplore(raw,index){let dataset=exploreDataset(raw.dataset),first=firstQuery(raw.query);return{id:str4(raw.id)??String(index),source:"explore",name:str4(raw.name)??"Untitled query",datasetLabel:EXPLORE_DATASET_LABEL[dataset],dataset:EXPLORE_DATASET_TO_EVENTS[dataset],query:str4(first?.query)??"",fields:strings2(first?.fields),sort:str4(first?.orderby),projects:numbers(raw.projects),environment:strings2(raw.environment),statsPeriod:str4(raw.range),lastVisited:str4(raw.lastVisited),dateUpdated:str4(raw.dateUpdated),starred:raw.starred===!0,createdBy:raw.isPrebuilt===!0?void 0:actorName(raw.createdBy),isPrebuilt:raw.isPrebuilt===!0}}function firstQuery(value){if(!Array.isArray(value))return;let first=value[0];return typeof first==="object"&&first!==null?first:void 0}function exploreDataset(value){let key=String(value??"spans");return key in EXPLORE_DATASET_LABEL?key:"spans"}var DISCOVER_DATASET_LABEL={"error-events":"Errors","transaction-like":"Transactions",discover:"Discover"},DISCOVER_DATASET_TO_EVENTS={"error-events":"errors","transaction-like":"transactions",discover:"discover"};async function discoverSavedQueriesPage(client2,{org,search,sort="myqueries",limit=50,cursor,signal}){let trimmed=search?.trim(),page=await client2.request(`/organizations/${org}/discover/saved/`,{query:{query:trimmed?`version:2 name:"${trimmed}"`:"version:2",sortBy:sort,per_page:limit,cursor},signal});return{...page,data:asArray2(page.data).map(normaliseDiscover).filter(isRunnable)}}function normaliseDiscover(raw,index){let key=str4(raw.queryDataset)??"discover";return{id:str4(raw.id)??String(index),source:"discover",name:str4(raw.name)??"Untitled query",datasetLabel:DISCOVER_DATASET_LABEL[key]??"Discover",dataset:DISCOVER_DATASET_TO_EVENTS[key]??"discover",query:str4(raw.query)??"",fields:strings2(raw.fields),sort:Array.isArray(raw.orderby)?str4(raw.orderby[0]):str4(raw.orderby),projects:numbers(raw.projects),environment:strings2(raw.environment),statsPeriod:str4(raw.range),dateUpdated:str4(raw.dateUpdated),starred:!1,createdBy:actorName(raw.createdBy),isPrebuilt:!1}}async function fetchSavedQuery(client2,{org,source,queryId,signal}){if(source==="explore"){let page2=await client2.request(`/organizations/${org}/explore/saved/${queryId}/`,{signal});return normaliseExplore(page2.data,0)}let page=await client2.request(`/organizations/${org}/discover/saved/${queryId}/`,{signal});return normaliseDiscover(page.data,0)}function listSavedQueriesPage(client2,source,params){return source==="explore"?exploreSavedQueriesPage(client2,params):discoverSavedQueriesPage(client2,params)}function isRunnable(query){return query.fields.length>0}function asArray2(body){return Array.isArray(body)?body.filter((row)=>typeof row==="object"&&row!==null):[]}function str4(value){if(value===void 0||value===null||value==="")return;return String(value)}function strings2(value){return Array.isArray(value)?value.map((item)=>String(item)).filter(Boolean):[]}function numbers(value){if(!Array.isArray(value))return[];return value.map((item)=>Number(item)).filter((item)=>Number.isFinite(item))}function actorName(actor){if(!actor)return;return str4(actor.name)??str4(actor.email)}function clockTime(iso){if(!iso)return"--:--:--";return iso.match(/T(\d{2}:\d{2}:\d{2})/)?.[1]??(iso.slice(11,19)||"--:--:--")}function durationText(seconds){if(!Number.isFinite(seconds)||seconds<0)return"";if(seconds<60)return`${Math.round(seconds)}s`;let minutes=Math.floor(seconds/60);if(minutes<60)return`${minutes}m`;let hours=Math.floor(minutes/60);if(hours<24)return`${hours}h`;return`${Math.floor(hours/24)}d`}var NO_DATE="------ --:--";function dateTimeText(iso){if(!iso)return NO_DATE;let match=iso.match(/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})/);return match?`${match[1]} ${match[2]}`:NO_DATE}function elapsedText(start,end,now=Date.now()){let from=Date.parse(start);if(Number.isNaN(from))return"";let to=end?Date.parse(end):now;if(Number.isNaN(to))return"";return durationText(Math.max(0,(to-from)/1000))}var CUSTOM_AVATAR_TYPES=new Set(["upload","gravatar"]);function customAvatarUrl(user2){if(!user2?.avatar||!CUSTOM_AVATAR_TYPES.has(user2.avatar.avatarType))return;return user2.avatar.avatarUrl??user2.avatarUrl??void 0}function avatarsByUserId(members){let byId=new Map;for(let member of members){let url=customAvatarUrl(member.user);if(url&&member.user)byId.set(member.user.id,url)}return byId}function assigneeAvatarUrl(assignee,avatars){if(assignee?.type!=="user")return;return avatars.get(assignee.id)}var UNASSIGNED_GLYPH="\xB7";function assigneeInitials(assignee){let name=assignee?.name;if(!name)return UNASSIGNED_GLYPH;return name.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map((part)=>part[0].toUpperCase()).join("")||UNASSIGNED_GLYPH}import{jsxDEV as jsxDEV16}from"h:6___________________________";function Placeholder({text,fallback,width,fg,attributes=NONE}){let theme=useTheme(),empty=!text||text.trim().length===0;return jsxDEV16("text",{fg:empty?theme.subText:fg??theme.text,attributes:empty?ITALIC:attributes,style:{flexShrink:0},children:padText(empty?fallback:text,width)},void 0,!1,void 0,this)}function layoutColumns(columns,available,{gap=1,minFlex=8}={}){let width=Math.max(0,Math.floor(available)),visible=[...columns],minWidth=(cols)=>cols.reduce((sum,col)=>sum+(col.width==="flex"?minFlex:col.width),0)+gap*Math.max(0,cols.length-1);while(visible.length>0&&minWidth(visible)>width){let victim=lowestPriority(visible);if(victim<0)break;visible.splice(victim,1)}while(visible.length>1&&minWidth(visible)>width)visible.pop();if(visible.length===0)return[];let gaps=gap*(visible.length-1),fixedTotal=visible.reduce((sum,col)=>sum+(col.width==="flex"?0:col.width),0),flexCount=visible.filter((col)=>col.width==="flex").length,widths=visible.map((col)=>col.width==="flex"?0:col.width);if(flexCount>0){let slack=Math.max(0,width-gaps-fixedTotal),base=Math.floor(slack/flexCount),remainder=slack-base*flexCount;visible.forEach((col,i)=>{if(col.width!=="flex")return;if(widths[i]=base+(remainder>0?1:0),remainder>0)remainder--})}let total=widths.reduce((sum,w)=>sum+w,0)+gaps;for(let i=widths.length-1;i>=0&&total>width;i--){let take=Math.min(widths[i]-1,total-width);if(take<=0)continue;widths[i]=widths[i]-take,total-=take}let resolved2=[],offset=0;return visible.forEach((column,i)=>{let w=Math.max(0,widths[i]);resolved2.push({column,width:w,offset}),offset+=w+gap}),resolved2}function lowestPriority(columns){let best=-1,bestPriority=1/0;return columns.forEach((column,i)=>{if(column.priority===void 0)return;if(column.priority<=bestPriority)best=i,bestPriority=column.priority}),best}import{jsxDEV as jsxDEV17,Fragment as Fragment6}from"h:6___________________________";var COLUMN_WIDTH={lastSeen:10,age:6,sparkline:12,events:7,users:7,priority:6,assignee:5},SPARKLINE_GLYPHS=COLUMN_WIDTH.sparkline-3,AVATAR_WIDTH=2,AVATAR_HEIGHT=1,COLUMN_LABEL={lastSeen:"Last Seen",age:"Age",sparkline:"Trend",events:"Events",users:"Users",priority:"Prio",assignee:"Asgn"},ALL_COLUMNS=["lastSeen","age","sparkline","events","users","priority","assignee"],MIN_TITLE_WIDTH=16,MARKER_WIDTH=3,LAYOUT_COLUMNS=[{key:"marker",width:MARKER_WIDTH},{key:"title",width:"flex"},{key:"lastSeen",width:COLUMN_WIDTH.lastSeen,priority:6},{key:"age",width:COLUMN_WIDTH.age,priority:3},{key:"sparkline",width:COLUMN_WIDTH.sparkline,priority:5},{key:"events",width:COLUMN_WIDTH.events},{key:"users",width:COLUMN_WIDTH.users,priority:4},{key:"priority",width:COLUMN_WIDTH.priority,priority:2},{key:"assignee",width:COLUMN_WIDTH.assignee,priority:1}],ROW_PADDING=1,ROW_HEIGHT=4;function resolveRowLayout(width){let content=Math.max(MIN_TITLE_WIDTH+MARKER_WIDTH,width-ROW_PADDING*2),resolved2=layoutColumns(LAYOUT_COLUMNS,content,{gap:0,minFlex:MIN_TITLE_WIDTH}),title=resolved2.find(({column})=>column.key==="title")?.width??MIN_TITLE_WIDTH,visible=new Set(resolved2.map(({column})=>column.key)),columns=ALL_COLUMNS.filter((key)=>visible.has(key));return{content,title,columns}}var PRIORITY_LABEL={high:"high",medium:"med",low:"low"};function RowRule({width,selectionAbove=!1,selectionBelow=!1}){let theme=useTheme(),glyph=selectionAbove?"\u2580":selectionBelow?"\u2584":"\u2500",fg=selectionAbove||selectionBelow?theme.selected:theme.border;return jsxDEV17("text",{fg,children:glyph.repeat(Math.max(0,width))},void 0,!1,void 0,this)}function TrendCell({content,fg,rules=!0}){let theme=useTheme(),rule=rules?"\u2502":" ";return jsxDEV17(Fragment6,{children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.border,children:rule},void 0,!1,void 0,this),jsxDEV17("text",{fg,children:content},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.border,children:rule},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function IssueListHeader({width,selectionBelow=!1}){let theme=useTheme(),layout=resolveRowLayout(width);return jsxDEV17("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV17("box",{style:{flexDirection:"row",paddingLeft:ROW_PADDING,paddingRight:ROW_PADDING},children:[jsxDEV17("text",{fg:theme.muted,children:padText("Issue",MARKER_WIDTH+layout.title)},void 0,!1,void 0,this),layout.columns.map((key)=>key==="sparkline"?jsxDEV17(TrendCell,{content:padText(COLUMN_LABEL[key],SPARKLINE_GLYPHS,"center"),fg:theme.muted,rules:!1},key,!1,void 0,this):jsxDEV17("text",{fg:theme.muted,children:padText(COLUMN_LABEL[key],COLUMN_WIDTH[key],"right")},key,!1,void 0,this))]},void 0,!0,void 0,this),jsxDEV17(RowRule,{width,selectionBelow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function IssueRow({group,selected,width,pending=!1,selectionBelow=!1,assigneeAvatarUrl:assigneeAvatarUrl2,onClick}){let theme=useTheme(),layout=resolveRowLayout(width),bg=selected?theme.selected:void 0,title=issueTitle(group),message=issueMessage(group),iconWidth=usePlatformIconWidth(),meta=metaRow(group,Math.max(0,layout.content-5),message,iconWidth);return jsxDEV17("box",{style:{flexDirection:"column",width,flexShrink:0},onMouseDown:onClick,children:[jsxDEV17("box",{style:{flexDirection:"column",paddingLeft:ROW_PADDING,paddingRight:ROW_PADDING,backgroundColor:bg},children:[jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{fg:selected?theme.accent:theme.muted,children:selected?"\u25B8":" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.accent,children:pending?"\u27F3":group.hasSeen?" ":"\u25CF"},void 0,!1,void 0,this),jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17(Placeholder,{text:title,fallback:"(no title)",width:layout.title,fg:theme.text,attributes:BOLD},void 0,!1,void 0,this),layout.columns.map((key)=>jsxDEV17(Column,{column:key,group,avatarUrl:assigneeAvatarUrl2},key,!1,void 0,this))]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.level[group.level]??theme.level.unknown,children:"\u2503"},void 0,!1,void 0,this),jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17(Placeholder,{text:message,fallback:"(no error message)",width:Math.max(0,layout.content-5),fg:theme.muted},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.muted,children:meta.lead},void 0,!1,void 0,this),meta.showIcon?jsxDEV17(PlatformIcon,{platform:group.project?.platform},void 0,!1,void 0,this):null,jsxDEV17("text",{fg:theme.muted,children:meta.rest},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),jsxDEV17(RowRule,{width,selectionAbove:selected,selectionBelow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function AssigneeCell({group,avatarUrl}){let theme=useTheme(),width=COLUMN_WIDTH.assignee,{supportsHighRes}=useImageSupport();if(!avatarUrl||!supportsHighRes)return jsxDEV17("text",{fg:theme.muted,children:padText(assigneeInitials(group.assignedTo),width,"right")},void 0,!1,void 0,this);return jsxDEV17(Fragment6,{children:[jsxDEV17("text",{children:" ".repeat(Math.max(0,width-AVATAR_WIDTH))},void 0,!1,void 0,this),jsxDEV17("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH,height:AVATAR_HEIGHT,flexShrink:0}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Column({column,group,avatarUrl}){let theme=useTheme(),width=COLUMN_WIDTH[column];switch(column){case"sparkline":return jsxDEV17(TrendCell,{content:sparkline(group.stats?.["24h"],SPARKLINE_GLYPHS),fg:theme.muted},void 0,!1,void 0,this);case"events":return jsxDEV17("text",{fg:theme.text,children:padText(formatCount(group.count),width,"right")},void 0,!1,void 0,this);case"users":return jsxDEV17("text",{fg:theme.text,children:padText(formatCount(group.userCount),width,"right")},void 0,!1,void 0,this);case"lastSeen":return jsxDEV17("text",{fg:theme.muted,children:padText(relative(group.lastSeen,!0),width,"right")},void 0,!1,void 0,this);case"age":return jsxDEV17("text",{fg:theme.muted,children:padText(relative(group.firstSeen),width,"right")},void 0,!1,void 0,this);case"priority":return jsxDEV17("text",{fg:theme.muted,children:padText(group.priority?PRIORITY_LABEL[group.priority]:"",width,"right")},void 0,!1,void 0,this);case"assignee":return jsxDEV17(AssigneeCell,{group,avatarUrl},void 0,!1,void 0,this)}}function relative(iso,suffix=!1){if(!iso)return"\xB7\xB7";let ago=timeAgo(iso);return suffix&&ago?`${ago} ago`:ago}function metaRow(group,width,message,iconWidth){let slug=group.project?.slug,before=[group.shortId].filter((part)=>Boolean(part)),after=[slug,group.isUnhandled?"Unhandled":null,group.culprit===message?null:group.culprit,group.numComments>0?`\uD83D\uDCAC ${group.numComments}`:null,group.logger].filter((part)=>Boolean(part)),showIcon=Boolean(slug)&&iconWidth>0,budget=Math.max(0,width-(showIcon?iconWidth:0)),lead=before.length>0?fitText(`${before.join(" \u2502 ")} \u2502 `,budget):"",rest=fitText(after.join(" \u2502 "),Math.max(0,budget-measureTextWidth(lead)));return{lead,rest,showIcon}}function IssueRowSkeleton({width,seed}){let theme=useTheme(),layout=resolveRowLayout(width),titleBar=Math.floor(layout.title*(0.45+seed*17%40/100)),messageBar=Math.floor((layout.content-4)*(0.5+seed*29%35/100)),metaBar=Math.floor((layout.content-4)*(0.3+seed*23%25/100));return jsxDEV17("box",{style:{flexDirection:"column",width,paddingLeft:ROW_PADDING,paddingRight:ROW_PADDING,border:["bottom"],borderColor:theme.border,flexShrink:0},children:[jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.panelAlt,children:padText("\u2500".repeat(titleBar),layout.title)},void 0,!1,void 0,this),layout.columns.map((key)=>key==="sparkline"?jsxDEV17(TrendCell,{content:"\u254C".repeat(SPARKLINE_GLYPHS),fg:theme.panelAlt},key,!1,void 0,this):jsxDEV17("text",{fg:theme.panelAlt,children:padText("\xB7\xB7",COLUMN_WIDTH[key],"right")},key,!1,void 0,this))]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.border,children:"\u2503"},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.panelAlt,children:` ${"\u2500".repeat(messageBar)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.panelAlt,children:"\u2500".repeat(metaBar)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback5,useEffect as useEffect9,useRef as useRef4,useState as useState8}from"h:0__";function useIssues(client2,{org,query,sort,statsPeriod,limit,project,environment,reloadToken=0}){let[issues,setIssues]=useState8(idle),[statsLoading,setStatsLoading]=useState8(!1),[nextCursor,setNextCursor]=useState8(null),[prevCursor,setPrevCursor]=useState8(null),[page,setPage]=useState8(1),issuesRef=useRef4(issues);issuesRef.current=issues;let pageCursorRef=useRef4(void 0),pageRef=useRef4(1),requestRef=useRef4(null),requestIdRef=useRef4(0),requestPage=useCallback5((cursor,targetPage)=>{if(!client2)return!1;requestRef.current?.abort();let controller=new AbortController;requestRef.current=controller;let{signal}=controller,requestId=++requestIdRef.current;return setIssues(startLoading(issuesRef.current,Date.now())),setStatsLoading(!1),(async()=>{try{let result=await listIssues(client2,{org,query,sort,statsPeriod,limit,project,environment,cursor,signal});if(signal.aborted||requestId!==requestIdRef.current)return;if(pageCursorRef.current=cursor,pageRef.current=targetPage,setPage(targetPage),setNextCursor(result.nextCursor),setPrevCursor(result.prevCursor),setIssues(resolved(result.data,Date.now())),result.data.length===0)return;setStatsLoading(!0);try{let stats=await fetchIssueStats(client2,{org,groups:result.data.map((group)=>group.id),statsPeriod,project,signal});if(signal.aborted||requestId!==requestIdRef.current)return;setIssues((current)=>current.state==="ready"?resolved(mergeStats(current.value,stats),current.fetchedAt):current)}finally{if(!signal.aborted&&requestId===requestIdRef.current)setStatsLoading(!1)}}catch(error){if(signal.aborted||requestId!==requestIdRef.current)return;setIssues((current)=>rejected(current,toAsyncError(error)))}})(),!0},[client2,org,query,sort,statsPeriod,limit,project,environment]),previousRequestPage=useRef4(null),nextPage=useCallback5(()=>nextCursor===null||issuesRef.current.state==="loading"?!1:requestPage(nextCursor,pageRef.current+1),[nextCursor,requestPage]),previousPage=useCallback5(()=>pageRef.current<=1||prevCursor===null||issuesRef.current.state==="loading"?!1:requestPage(prevCursor,Math.max(1,pageRef.current-1)),[prevCursor,requestPage]);return useEffect9(()=>{if(!client2){requestIdRef.current++,requestRef.current?.abort();return}let queryChanged=previousRequestPage.current!==requestPage;if(previousRequestPage.current=requestPage,queryChanged)pageCursorRef.current=void 0,pageRef.current=1,setPage(1),setNextCursor(null),setPrevCursor(null);requestPage(pageCursorRef.current,pageRef.current)},[client2,requestPage,reloadToken]),useEffect9(()=>()=>{requestIdRef.current++,requestRef.current?.abort()},[]),{issues,statsLoading,nextCursor,prevCursor,page,nextPage,previousPage}}function mergeStats(groups,stats){return groups.map((group)=>{let entry=stats[group.id];if(!entry)return group;return{...group,count:entry.count??group.count,userCount:entry.userCount??group.userCount,firstSeen:entry.firstSeen??group.firstSeen,lastSeen:entry.lastSeen??group.lastSeen,isUnhandled:entry.isUnhandled??group.isUnhandled,stats:{...group.stats,...entry.stats}}})}import{jsxDEV as jsxDEV18}from"h:6___________________________";var MAX_EMBEDDED_ISSUES=25;function SeerIssueEmbed({client:client2,org,ids,width}){let theme=useTheme(),issueIds=[...new Set(ids.filter(Boolean))].slice(0,MAX_EMBEDDED_ISSUES),query=issueIds.length===1?`issue:${issueIds[0]}`:`issue:[${issueIds.join(",")}]`,state=useIssues(issueIds.length>0?client2:null,{org,query,sort:"date",statsPeriod:DEFAULT_STATS_PERIOD,limit:Math.max(1,issueIds.length)}),groups=valueOf(state.issues)??[],error=errorOf(state.issues),listWidth=Math.max(24,width-2),multiple=issueIds.length>1;if(issueIds.length===0)return jsxDEV18("text",{fg:theme.muted,children:"No issues referenced."},void 0,!1,void 0,this);return jsxDEV18("box",{style:{flexDirection:"column",width,border:!0,borderColor:error?theme.danger:theme.border,flexShrink:0},children:[multiple?jsxDEV18(IssueListHeader,{width:listWidth},void 0,!1,void 0,this):null,state.issues.state==="idle"||isInitialLoad(state.issues)?jsxDEV18(IssueRowSkeleton,{width:listWidth,seed:0},void 0,!1,void 0,this):null,error&&groups.length===0?jsxDEV18("box",{style:{flexDirection:"column",paddingLeft:1,paddingRight:1},children:[jsxDEV18("text",{fg:theme.danger,attributes:BOLD,children:["Could not load ",multiple?"issues":issueIds[0]]},void 0,!0,void 0,this),jsxDEV18("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,!error&&state.issues.state==="ready"&&groups.length===0?jsxDEV18("text",{fg:theme.muted,children:` No matching ${multiple?"issues":`issue ${issueIds[0]}`} found.`},void 0,!1,void 0,this):null,groups.map((group)=>jsxDEV18(IssueRow,{group,selected:!1,width:listWidth},group.id,!1,void 0,this)),ids.length>MAX_EMBEDDED_ISSUES?jsxDEV18("text",{fg:theme.muted,children:` Showing the first ${MAX_EMBEDDED_ISSUES} issues.`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as useCallback6,useState as useState9}from"h:0__";import{useKeyboard as useKeyboard3}from"h:4___________";import{jsxDEV as jsxDEV19}from"h:6___________________________";var BODY_INDENT=" ",KEY_COLUMN=18;function Divider(){let theme=useTheme();return jsxDEV19("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this)}function Empty({children}){let theme=useTheme();return jsxDEV19("text",{fg:theme.subText,children:`${BODY_INDENT}${children}`},void 0,!1,void 0,this)}function keyCell(name){return padText(fitText(name,KEY_COLUMN-1),KEY_COLUMN)}function Field({name,value,width}){let theme=useTheme();return jsxDEV19("box",{style:{flexDirection:"row",width},children:[jsxDEV19("text",{fg:theme.muted,children:`${BODY_INDENT}${keyCell(name)}`},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.text,children:fitText(value,Math.max(0,width-KEY_COLUMN-BODY_INDENT.length))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Section({index,title,count,collapsed,width,onToggle,children}){let theme=useTheme(),label=count===void 0?title:`${title} (${count})`,prefix=`${collapsed?"\u25B8":"\u25BE"} ${index} `,rule=Math.max(0,width-measureTextWidth(prefix)-measureTextWidth(label)-1);return jsxDEV19("box",{style:{flexDirection:"column",width,paddingTop:1},children:[jsxDEV19("box",{style:{flexDirection:"row",width},onMouseDown:onToggle,children:[jsxDEV19("text",{fg:theme.accent,children:prefix},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.text,attributes:BOLD,children:label},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.border,children:` ${"\u2500".repeat(rule)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),collapsed?null:children]},void 0,!0,void 0,this)}function useSectionFolds(order,focused){let[collapsed,setCollapsed]=useState9(()=>new Set),toggle=useCallback6((key)=>{setCollapsed((current)=>{let next=new Set(current);if(next.has(key))next.delete(key);else next.add(key);return next})},[]),toggleAll=useCallback6(()=>{setCollapsed((current)=>current.size===order.length?new Set:new Set(order))},[order]);return useKeyboard3((key)=>{if(!focused)return;routeKeyOwnership([()=>{if(matchesCommand("sentry.view.toggleAllSections",key))return toggleAll(),"mine";if(matchesCommand("sentry.view.toggleSection",key)){let target=order[Number(key.name)-1];if(!target)return"notMine";return toggle(target),"mine"}return"notMine"}],key,consumeKey)}),{collapsed,toggle}}import{jsxDEV as jsxDEV20,Fragment as Fragment7}from"h:6___________________________";var CARD_CHROME=3;function SeerEmbedCard({label,title,subtitle,width,tone="normal",children}){let theme=useTheme(),borderColor=tone==="warning"?theme.warning:tone==="danger"?theme.danger:tone==="accent"?theme.accent:theme.border,inner=Math.max(1,width-CARD_CHROME);return jsxDEV20("box",{style:{flexDirection:"column",width,border:!0,borderColor,paddingLeft:1,flexShrink:0},children:[jsxDEV20("box",{style:{flexDirection:"row",width:inner},children:[jsxDEV20("text",{fg:theme.accent,attributes:BOLD,children:label},void 0,!1,void 0,this),title?jsxDEV20("text",{fg:theme.text,children:` ${fitText(title,Math.max(1,inner-label.length-1))}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),subtitle?jsxDEV20("text",{fg:theme.muted,children:fitText(subtitle,inner)},void 0,!1,void 0,this):null,children]},void 0,!0,void 0,this)}function SeerEmbedFields({fields,width}){return jsxDEV20(Fragment7,{children:fields.flatMap(([name,value])=>value?[jsxDEV20(Field,{name,value,width},name,!1,void 0,this)]:[])},void 0,!1,void 0,this)}function SeerEmbedText({children,width,dim=!1}){let theme=useTheme();return jsxDEV20(Fragment7,{children:wrapText(children,Math.max(1,width)).map((line,index)=>jsxDEV20("text",{fg:dim?theme.muted:theme.text,attributes:dim?DIM:void 0,children:line},index,!1,void 0,this))},void 0,!1,void 0,this)}function SeerEmbedStatus({status,noun,empty=!1}){let theme=useTheme(),error=errorOf(status);if(error)return jsxDEV20("text",{fg:theme.danger,children:`${BODY_INDENT}Could not load ${noun}: ${error.message}`},void 0,!1,void 0,this);if(status.state==="idle"||isInitialLoad(status))return jsxDEV20("text",{fg:theme.muted,children:`${BODY_INDENT}Loading ${noun}\u2026`},void 0,!1,void 0,this);if(empty)return jsxDEV20("text",{fg:theme.subText,children:`${BODY_INDENT}No ${noun} found.`},void 0,!1,void 0,this);return null}import{useEffect as useEffect10,useRef as useRef5,useState as useState10}from"h:0__";function useDirectResource(client2,{org,id,reloadToken=0,load}){let[status,setStatus]=useState10(idle),statusRef=useRef5(status);return statusRef.current=status,useEffect10(()=>{if(!client2)return;let controller=new AbortController,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),load(client2,{org,id,signal:controller.signal}).then((value)=>{if(!cancelled)setStatus(resolved(value,Date.now()))}).catch((error)=>{if(!cancelled&&!controller.signal.aborted)setStatus(rejected(statusRef.current,toAsyncError(error)))}),()=>{cancelled=!0,controller.abort()}},[client2,org,id,reloadToken,load]),status}import{useCallback as useCallback8,useEffect as useEffect12,useRef as useRef7,useState as useState12}from"h:0__";import{useCallback as useCallback7,useEffect as useEffect11,useRef as useRef6,useState as useState11}from"h:0__";function useCursorPages(loader,reloadKey=0){let[status,setStatus]=useState11(idle),[nextCursor,setNextCursor]=useState11(null),[cursor,setCursor]=useState11(void 0),[page,setPage]=useState11(1),statusRef=useRef6(status);statusRef.current=status;let cursorRef=useRef6(void 0),pageRef=useRef6(1),cursorHistoryRef=useRef6([void 0]),requestRef=useRef6(null),requestIdRef=useRef6(0),requestPage=useCallback7((requestedCursor,targetPage)=>{requestRef.current?.abort();let controller=new AbortController;requestRef.current=controller;let requestId=++requestIdRef.current,request;try{request=loader(requestedCursor,controller.signal)}catch(error){return setStatus((current)=>rejected(current,toAsyncError(error))),!1}if(request===null)return setStatus(idle),!1;let loading=startLoading(statusRef.current,Date.now());return statusRef.current=loading,setStatus(loading),request.then((result)=>{if(controller.signal.aborted||requestId!==requestIdRef.current)return;cursorRef.current=requestedCursor,pageRef.current=targetPage,cursorHistoryRef.current[targetPage-1]=requestedCursor,cursorHistoryRef.current.length=targetPage,setCursor(requestedCursor),setPage(targetPage),setNextCursor(result.nextCursor),setStatus(resolved(result,Date.now()))}).catch((error)=>{if(controller.signal.aborted||requestId!==requestIdRef.current)return;setStatus((current)=>rejected(current,toAsyncError(error)))}),!0},[loader]),previousRequestPage=useRef6(null),nextPage=useCallback7(()=>{if(nextCursor===null||statusRef.current.state==="loading")return!1;return requestPage(nextCursor,pageRef.current+1)},[nextCursor,requestPage]),previousPage=useCallback7(()=>{if(pageRef.current<=1||statusRef.current.state==="loading")return!1;return requestPage(cursorHistoryRef.current[pageRef.current-2],pageRef.current-1)},[requestPage]);return useEffect11(()=>{let queryChanged=previousRequestPage.current!==requestPage;if(previousRequestPage.current=requestPage,queryChanged)cursorRef.current=void 0,pageRef.current=1,cursorHistoryRef.current=[void 0],setCursor(void 0),setPage(1),setNextCursor(null);requestPage(cursorRef.current,pageRef.current)},[requestPage,reloadKey]),useEffect11(()=>()=>{requestIdRef.current++,requestRef.current?.abort()},[]),{status,nextCursor,cursor,page,nextPage,previousPage}}function useReleases(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback8((cursor,signal)=>client2?listReleases(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment,sort]),pages=useCursorPages(loader,reloadToken);return{releases:mapAsyncStatus(pages.status,(result)=>result.data),nextCursor:pages.nextCursor,cursor:pages.cursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}function useReleaseHealth(client2,{org,query,statsPeriod,project,environment,sort,cursor,reloadToken=0}){let[health,setHealth]=useState12(idle),healthRef=useRef7(health);return healthRef.current=health,useEffect12(()=>{if(!client2)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setHealth(startLoading(healthRef.current,Date.now())),(async()=>{try{let index=await listReleaseHealth(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal});if(cancelled)return;setHealth(resolved(index,Date.now()))}catch(error){if(cancelled||signal.aborted)return;setHealth(rejected(healthRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,query,statsPeriod,project,environment,sort,cursor,reloadToken]),health}import{useMemo as useMemo6}from"h:0__";var VALUE_AGGREGATES=["count","avg","p50","p75","p90","p95","p99","sum","min","max","count_unique"],SPAN_AGGREGATES=["count","avg","p50","p75","p90","p95","p99","p100","sum","min","max","count_unique","epm","eps","failure_rate","failure_count","performance_score","opportunity_score"],TRACES={id:"explore.traces",dataset:"spans",fields:["id","span.name","span.description","span.duration","transaction","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count(span.duration)",builder:{itemType:"spans",aggregates:SPAN_AGGREGATES,numberField:"span.duration",uniqueField:"span.op"},noun:"spans",searchPlaceholder:"Search spans\u2026",referrer:"sentry-tui.explore-traces"},LOGS={id:"explore.logs",dataset:"logs",fields:["sentry.item_id","trace","sentry.severity","timestamp","message","project"],sort:"-timestamp",idField:"sentry.item_id",yAxis:"count(message)",builder:{itemType:"logs",aggregates:VALUE_AGGREGATES,uniqueField:"message"},noun:"logs",searchPlaceholder:"Search logs\u2026",referrer:"sentry-tui.explore-logs",feature:"logs"},METRICS={id:"explore.metrics",dataset:"tracemetrics",fields:["id","metric.name","metric.type","value","metric.unit","project","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count(value)",builder:{itemType:"tracemetrics",aggregates:VALUE_AGGREGATES,numberField:"value",uniqueField:"metric.name"},noun:"metrics",searchPlaceholder:"Search metrics\u2026",referrer:"sentry-tui.explore-metrics",feature:"tracemetrics-enabled"},ERRORS={id:"explore.errors",dataset:"errors",fields:["id","title","level","project","user.display","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count()",noun:"events",searchPlaceholder:"Search error events\u2026",referrer:"sentry-tui.explore-errors",feature:"explore-errors"},EXPLORE_TABLES=[TRACES,LOGS,METRICS,ERRORS],BY_ID3=new Map(EXPLORE_TABLES.map((table)=>[table.id,table]));function getExploreTable(id){return BY_ID3.get(id)}function exploreQuery(table,userQuery){let base=table.baseQuery?.trim()??"",typed=userQuery.trim();if(!base)return typed;if(!typed)return base;return`(${base}) and (${typed})`}function exploreChartTitle(table,yAxis=table.yAxis){return yAxis==="count()"||table.id==="explore.logs"&&yAxis==="count(message)"?`count(${table.noun})`:yAxis}function exploreEmptyLines(table,query){return[query||void 0,"Try widening the time range or adjusting the query.",table.feature?`This organization may not have ${table.feature} enabled.`:"This organization may not be sending this data yet."]}import{useEffect as useEffect13,useRef as useRef8,useState as useState13}from"h:0__";function useDiscoverRows(client2,{org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,reloadToken=0}){let[status,setStatus]=useState13(idle),[nextCursor,setNextCursor]=useState13(null),statusRef=useRef8(status);return statusRef.current=status,useEffect13(()=>{if(!client2||fields.length===0)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await queryDiscover(client2,{org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,signal});if(cancelled)return;setStatus(resolved(page.rows,Date.now())),setNextCursor(page.nextCursor)}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,reloadToken]),{rows:status,nextCursor}}import{useCallback as useCallback10}from"h:0__";var EXPLORE_PAGE_SIZE=50;async function listExploreEvents(client2,{idField="id",limit=EXPLORE_PAGE_SIZE,...params}){let page=await queryDiscover(client2,{...params,limit});return{data:page.rows.map((row,index)=>normalise2(row,index,idField)),nextCursor:page.nextCursor}}function normalise2(row,index,idField){return{id:rowString(row,idField)??String(index),row}}async function listExploreTimeseries(client2,params){return queryExploreTimeseries(client2,params)}import{useCallback as useCallback9,useEffect as useEffect14,useRef as useRef9,useState as useState14}from"h:0__";function useAsyncFetch(loader,{reloadKey,resetKey}={}){let[status,setStatus]=useState14(idle),[manualReload,setManualReload]=useState14(0),requestIdRef=useRef9(0),resetKeyRef=useRef9(resetKey),refetch=useCallback9(()=>setManualReload((value)=>value+1),[]);return useEffect14(()=>{let controller=new AbortController,requestId=++requestIdRef.current,reset=!Object.is(resetKeyRef.current,resetKey);resetKeyRef.current=resetKey;let promise;try{promise=loader(controller.signal)}catch(error){if(requestId===requestIdRef.current&&!controller.signal.aborted)setStatus((current)=>rejected(reset?void 0:current,toAsyncError(error)));return()=>{requestIdRef.current++,controller.abort()}}if(promise===null)return setStatus(idle),()=>{requestIdRef.current++,controller.abort()};return setStatus((current)=>startLoading(reset?void 0:current,Date.now())),promise.then((value)=>{if(requestId===requestIdRef.current&&!controller.signal.aborted)setStatus(resolved(value,Date.now()))}).catch((error)=>{if(requestId===requestIdRef.current&&!controller.signal.aborted)setStatus((current)=>rejected(current,toAsyncError(error)))}),()=>{requestIdRef.current++,controller.abort()}},[loader,reloadKey,resetKey,manualReload]),{status,refetch}}function useExploreEvents(client2,table,{org,query,request,statsPeriod,interval,project,environment,reloadToken=0}){let combined=exploreQuery(table,query),eventsLoader=useCallback10((cursor,signal)=>client2?listExploreEvents(client2,{org,query:combined,statsPeriod,project,environment,cursor,signal,dataset:table.dataset,fields:request.fields,sort:request.sort,idField:request.idField,referrer:table.referrer}):null,[client2,org,combined,request,statsPeriod,project,environment,table]),timeseriesLoader=useCallback10((signal)=>client2?listExploreTimeseries(client2,{org,query:combined,statsPeriod,interval,project,environment,signal,dataset:table.dataset,yAxis:request.yAxis,groupBy:request.groupBys.length>0?request.groupBys:void 0,sort:request.sort,topEvents:request.groupBys.length>0?9:void 0,referrer:`${table.referrer}-chart`}):null,[client2,org,combined,request,statsPeriod,interval,project,environment,table]),eventsPages=useCursorPages(eventsLoader,reloadToken),timeseries=useAsyncFetch(timeseriesLoader,{reloadKey:reloadToken}).status;return{events:mapAsyncStatus(eventsPages.status,(page)=>page.data),timeseries,nextCursor:eventsPages.nextCursor,page:eventsPages.page,nextPage:eventsPages.nextPage,previousPage:eventsPages.previousPage}}import{useCallback as useCallback11}from"h:0__";function useReplays(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback11((cursor,signal)=>client2?listReplays(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment,sort]),pages=useCursorPages(loader,reloadToken);return{replays:mapAsyncStatus(pages.status,(page)=>page.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}function useReplayErrors(client2,{org,replayId,statsPeriod,environment,count,reloadToken=0}){let loader=useCallback11((signal)=>{if(!client2)return null;if(count<=0)return Promise.resolve({data:[],nextCursor:null});return listReplayErrors(client2,{org,replayId,statsPeriod,environment,signal})},[client2,org,replayId,statsPeriod,environment,count]),{status}=useAsyncFetch(loader,{reloadKey:reloadToken});return{errors:mapAsyncStatus(status,(page)=>page.data),nextCursor:valueOf(status)?.nextCursor??null}}import{jsxDEV as jsxDEV21,Fragment as Fragment8}from"h:6___________________________";var PREVIEW_ROWS=5,EXPLORE_SCREENS2={spansQuery:"explore.traces",logsQuery:"explore.logs",metricsQuery:"explore.metrics"},NOUNS={issuesQuery:"issues",errorsQuery:"errors",spansQuery:"spans",logsQuery:"logs",metricsQuery:"metrics",replaysQuery:"replays"};function SeerQueryEmbed(props){switch(props.name){case"issuesQuery":return jsxDEV21(IssuesQueryEmbed,{...props},void 0,!1,void 0,this);case"replaysQuery":return jsxDEV21(ReplaysQueryEmbed,{...props},void 0,!1,void 0,this);case"errorsQuery":return jsxDEV21(ErrorsQueryEmbed,{...props},void 0,!1,void 0,this);case"spansQuery":case"logsQuery":case"metricsQuery":return jsxDEV21(ExploreQueryEmbed,{...props},void 0,!1,void 0,this);default:return null}}function describeQuery(embed){let parts=[];if(embed.mode==="aggregate"){if(embed.groupBy.length>0)parts.push(`by ${embed.groupBy.join(", ")}`);if(embed.yAxes.length>0)parts.push(embed.yAxes.join(", "))}let period=describeEmbedPeriod(embed.filters);if(period)parts.push(period);if(embed.filters.projects.length>0)parts.push(embed.filters.projects.length===1?"1 project":`${embed.filters.projects.length} projects`);if(embed.filters.environments.length>0)parts.push(embed.filters.environments.join(", "));return parts.join(" \xB7 ")}function QueryCard({label,embed,noun,width,bare,children}){if(bare)return jsxDEV21(Fragment8,{children},void 0,!1,void 0,this);return jsxDEV21(SeerEmbedCard,{label,title:queryEmbedTitle(embed,noun),subtitle:describeQuery(embed),width,children},void 0,!1,void 0,this)}function IssuesQueryEmbed({data,width,client:client2,org,bare=!1}){let embed=readQueryEmbed(data),state=useIssues(client2,{org,query:embed.query,sort:issueSort(embed.sort??"date"),statsPeriod:embed.filters.statsPeriod??DEFAULT_STATS_PERIOD,limit:PREVIEW_ROWS,project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0}),groups=valueOf(state.issues)??[],rowWidth=Math.max(24,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:"Issues",embed,noun:"issues",width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.issues,noun:"issues",empty:state.issues.state==="ready"&&groups.length===0},void 0,!1,void 0,this),groups.slice(0,PREVIEW_ROWS).map((group)=>jsxDEV21(IssueRow,{group,selected:!1,width:rowWidth},group.id,!1,void 0,this))]},void 0,!0,void 0,this)}function ReplaysQueryEmbed({data,width,client:client2,org,bare=!1}){let theme=useTheme(),embed=readQueryEmbed(data),state=useReplays(client2,{org,query:embed.query,statsPeriod:embed.filters.statsPeriod??DEFAULT_REPLAY_PERIOD,project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0}),replays=valueOf(state.replays)??[],inner=Math.max(1,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:"Replays",embed,noun:"replays",width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.replays,noun:"replays",empty:state.replays.state==="ready"&&replays.length===0},void 0,!1,void 0,this),replays.slice(0,PREVIEW_ROWS).map((replay)=>{let counts=[formatReplayDuration(replay.durationSec),replay.countErrors===void 0?null:`${replay.countErrors} errors`,replay.countRageClicks===void 0?null:`${replay.countRageClicks} rage`].filter(Boolean).join(" \xB7 ");return jsxDEV21("box",{style:{flexDirection:"row",width:inner},children:[jsxDEV21("text",{fg:theme.text,children:`${BODY_INDENT}${fitText(replay.user.displayName??shortReplayId(replay.id),Math.max(1,inner-counts.length-3))}`},void 0,!1,void 0,this),jsxDEV21("text",{fg:theme.muted,children:` ${counts}`},void 0,!1,void 0,this)]},replay.id,!0,void 0,this)})]},void 0,!0,void 0,this)}function previewFields(embed,table,yAxes){if(embed.mode==="aggregate")return[...new Set([...embed.groupBy,...yAxes.length>0?yAxes:[table.yAxis]])];return embed.fields.length>0?embed.fields:table.fields}function RowFields({row,fields,width}){return jsxDEV21(SeerEmbedFields,{fields:fields.slice(0,4).map((field)=>[field,formatCell(row[field])]),width},void 0,!1,void 0,this)}function formatCell(value){if(value===null||value===void 0||value==="")return;if(typeof value==="number")return Number.isInteger(value)?String(value):value.toFixed(2);if(typeof value==="string"||typeof value==="boolean")return String(value);return JSON.stringify(value)}function ExploreQueryEmbed({name,data,width,client:client2,org,bare=!1}){let theme=useTheme(),embed=readQueryEmbed(data),screenId=EXPLORE_SCREENS2[name],table=screenId?getExploreTable(screenId):void 0,noun=NOUNS[name]??"rows",metricName=name==="metricsQuery"?embedText(data.name):void 0,{query,yAxes}=name==="metricsQuery"?resolveMetricsEmbed(data,embed):{query:embed.query,yAxes:embed.yAxes},fields=table?previewFields(embed,table,yAxes):[],request=useMemo6(()=>({mode:embed.mode,fields,sort:embed.sort??table?.sort??"",yAxis:yAxes[0]??table?.yAxis??"",groupBys:embed.groupBy,idField:embed.mode==="aggregate"?embed.groupBy[0]??"":table?.idField??""}),[embed.mode,fields.join(","),embed.sort,yAxes.join(","),embed.groupBy.join(","),table]),state=useExploreEvents(table?client2:null,table??FALLBACK_TABLE,{org,query,request,statsPeriod:embed.filters.statsPeriod??"24h",project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0}),events=valueOf(state.events)??[],inner=Math.max(1,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:noun[0].toUpperCase()+noun.slice(1),embed:{...embed,title:embed.title??metricName},noun,width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.events,noun,empty:state.events.state==="ready"&&events.length===0},void 0,!1,void 0,this),events.slice(0,PREVIEW_ROWS).map((event,index)=>jsxDEV21("box",{style:{flexDirection:"column",width:inner},children:[index>0?jsxDEV21("text",{fg:theme.border,children:`${BODY_INDENT}${"\u2500".repeat(Math.max(0,inner-4))}`},void 0,!1,void 0,this):null,jsxDEV21(RowFields,{row:event.row,fields,width:inner},void 0,!1,void 0,this)]},event.id,!0,void 0,this))]},void 0,!0,void 0,this)}var FALLBACK_TABLE=getExploreTable("explore.traces");function ErrorsQueryEmbed({data,width,client:client2,org,bare=!1}){let theme=useTheme(),embed=readQueryEmbed(data),table=getExploreTable("explore.errors"),fields=useMemo6(()=>table?previewFields(embed,table,embed.yAxes):[],[embed.mode,embed.fields.join(","),embed.groupBy.join(","),embed.yAxes.join(","),table]),state=useDiscoverRows(client2,{org,dataset:"errors",fields,sort:embed.sort,query:embed.query,statsPeriod:embed.filters.statsPeriod??"24h",project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0,referrer:table?.referrer}),rows=valueOf(state.rows)??[],inner=Math.max(1,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:"Errors",embed,noun:"errors",width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.rows,noun:"errors",empty:state.rows.state==="ready"&&rows.length===0},void 0,!1,void 0,this),rows.slice(0,PREVIEW_ROWS).map((row,index)=>jsxDEV21("box",{style:{flexDirection:"column",width:inner},children:[index>0?jsxDEV21("text",{fg:theme.border,children:`${BODY_INDENT}${"\u2500".repeat(Math.max(0,inner-4))}`},void 0,!1,void 0,this):null,jsxDEV21(RowFields,{row,fields,width:inner},void 0,!1,void 0,this)]},index,!0,void 0,this))]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV22}from"h:6___________________________";function SeerBlockEmbed({name,data,width,client:client2,org}){switch(name){case"issue":return jsxDEV22(SeerIssueEmbed,{client:client2,org,ids:[embedText(data.id)??""],width},void 0,!1,void 0,this);case"issues":return jsxDEV22(SeerIssueEmbed,{client:client2,org,ids:embedTexts(data.ids),width},void 0,!1,void 0,this);case"dsn":return jsxDEV22(DsnEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"chart":return jsxDEV22(ChartEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"autofix":return jsxDEV22(AutofixEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"autofixRef":return jsxDEV22(AutofixRefEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"agentWriteApproval":return jsxDEV22(AgentWriteApprovalEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"trace":return jsxDEV22(TraceEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"profile":return jsxDEV22(ProfileEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"alert":return jsxDEV22(AlertEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"dashboard":return jsxDEV22(DashboardEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"monitor":return jsxDEV22(MonitorEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"release":return jsxDEV22(ReleaseEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"replay":return jsxDEV22(ReplayEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"savedQuery":return jsxDEV22(SavedQueryEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"savedIssueView":return jsxDEV22(SavedIssueViewEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);default:return jsxDEV22(SeerQueryEmbed,{name,data,width,client:client2,org},void 0,!1,void 0,this)}}function DsnEmbed({data,width}){let theme=useTheme();return jsxDEV22(SeerEmbedCard,{label:"DSN",width,children:jsxDEV22("text",{fg:theme.accent,children:embedText(data.value)??"DSN unavailable"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ChartEmbed({data,width}){let theme=useTheme(),series=Array.isArray(data.series)?data.series.slice(0,5):[],chartWidth=Math.max(8,Math.min(50,width-4));return jsxDEV22(SeerEmbedCard,{label:"Chart",title:embedText(data.title),subtitle:embedText(data.subtitle),width,children:series.map((entry,index)=>{let record2=entry&&typeof entry==="object"?entry:{},points=Array.isArray(record2.data)?record2.data.flatMap((point,pointIndex)=>{if(!point||typeof point!=="object")return[];let y=Number(point.y);return Number.isFinite(y)?[[pointIndex,y]]:[]}):[],label=embedText(record2.label)??embedText(record2.name)??`Series ${index+1}`;return jsxDEV22("box",{style:{flexDirection:"column"},children:[jsxDEV22("text",{fg:index===0?theme.accent:theme.muted,children:sparkline(points,chartWidth,{floor:!0})},void 0,!1,void 0,this),jsxDEV22("text",{fg:theme.muted,attributes:DIM,children:label},void 0,!1,void 0,this)]},`${label}-${index}`,!0,void 0,this)})},void 0,!1,void 0,this)}function stepLabel(data){return(embedText(data.step)??"result").replace(/_/g," ")}function AutofixEmbed({data,width}){return jsxDEV22(SeerEmbedCard,{label:"Autofix",title:stepLabel(data),subtitle:embedText(data.shortId),width,tone:"accent",children:jsxDEV22(SeerEmbedText,{width:width-CARD_CHROME,children:embedText(data.result)??"No result returned."},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function AutofixRefEmbed({data,width}){let theme=useTheme(),shortId3=embedText(data.shortId);return jsxDEV22(SeerEmbedCard,{label:"Autofix",title:stepLabel(data),subtitle:shortId3,width,tone:"accent",children:[jsxDEV22(SeerEmbedFields,{fields:[["Run",embedText(data.runId)],["Issue",shortId3??embedText(data.id)]],width:width-CARD_CHROME},void 0,!1,void 0,this),jsxDEV22("text",{fg:theme.muted,children:shortId3?` Open ${shortId3} to follow this run.`:" Open the issue to follow this run."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function AgentWriteApprovalEmbed({data,width}){let theme=useTheme(),status=embedText(data.status)??"pending",scopes=embedTexts(data.requiredScopes),tone=status==="rejected"?"danger":status==="approved"?"normal":"warning";return jsxDEV22("box",{style:{flexDirection:"column",width,border:!0,borderColor:tone==="danger"?theme.danger:tone==="warning"?theme.warning:theme.border,paddingLeft:1,flexShrink:0},children:[jsxDEV22("text",{fg:status==="approved"?theme.success:status==="rejected"?theme.danger:theme.warning,attributes:BOLD,children:status==="pending"?"Allow Seer to make changes?":`Access ${status}`},void 0,!1,void 0,this),scopes.map((scope)=>jsxDEV22("text",{fg:theme.muted,children:` ${scope}`},scope,!1,void 0,this)),status==="pending"?jsxDEV22("text",{fg:theme.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function TraceEmbed({data,width}){let traceId=embedText(data.traceId);return jsxDEV22(SeerEmbedCard,{label:"Trace",title:traceId,width,children:jsxDEV22(SeerEmbedFields,{fields:[["Span",embedText(data.spanId)],["Timestamp",dateTimeText(embedText(data.timestamp))]],width:width-CARD_CHROME},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ProfileEmbed({data,width}){let profileId=embedText(data.profileId);return jsxDEV22(SeerEmbedCard,{label:"Profile",title:profileId,width,children:jsxDEV22(SeerEmbedFields,{fields:[["Project",embedText(data.projectSlug)]],width:width-CARD_CHROME},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function AlertEmbed({data,width}){let kind=embedText(data.kind);return jsxDEV22(SeerEmbedCard,{label:"Alert",title:embedText(data.name)??embedText(data.id),subtitle:kind?`${kind} alert`:void 0,width,children:jsxDEV22(SeerEmbedFields,{fields:[["Id",embedText(data.id)]],width:width-CARD_CHROME},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var loadDashboard=(client2,{org,id,signal})=>getDashboard(client2,{org,id,signal});function DashboardEmbed({data,width,client:client2,org}){let theme=useTheme(),id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadDashboard}),dashboard=valueOf(status),widgets=dashboard?.widgets??[];return jsxDEV22(SeerEmbedCard,{label:"Dashboard",title:dashboard?.title??embedText(data.title)??id,subtitle:dashboard?`${widgets.length} widgets`:void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"dashboard",empty:Boolean(dashboard)&&!widgets[0]},void 0,!1,void 0,this),widgets.slice(0,8).map((widget,index)=>jsxDEV22("text",{fg:theme.text,children:` ${widget.title}`},`${widget.id??index}`,!1,void 0,this)),widgets.length>8?jsxDEV22("text",{fg:theme.subText,children:` \u2026and ${widgets.length-8} more`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var loadDetector=(client2,{org,id,signal})=>fetchDetector(client2,{org,detectorId:id,signal});function MonitorEmbed({data,width,client:client2,org}){let id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadDetector}),detector=valueOf(status);return jsxDEV22(SeerEmbedCard,{label:"Monitor",title:detector?.name??embedText(data.name)??id,subtitle:detector?`${detector.type}${detector.enabled?"":" \xB7 disabled"}`:void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"monitor"},void 0,!1,void 0,this),detector?jsxDEV22(SeerEmbedFields,{fields:[["Owner",detector.owner?.name??void 0],["Last triggered",detector.lastTriggered?relativeTime(detector.lastTriggered):void 0],["Last issue",detector.latestGroup?.shortId??void 0]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function ReleaseEmbed({data,width,client:client2,org}){let version=embedText(data.version)??"",projectId=embedText(data.projectId),state=useReleases(version?client2:null,{org,query:version,statsPeriod:DEFAULT_RELEASE_PERIOD,project:projectId?[projectId]:void 0}),releases=valueOf(state.releases)??[],release=releases.find((entry)=>entry.version===version)??releases[0];return jsxDEV22(SeerEmbedCard,{label:"Release",title:release?.shortVersion??version,subtitle:release?dateTimeText(release.dateReleased??release.dateCreated):void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status:state.releases,noun:"release",empty:state.releases.state==="ready"&&!release},void 0,!1,void 0,this),release?jsxDEV22(SeerEmbedFields,{fields:[["Package",release.package],["Commits",String(release.commitCount)],["Authors",String(release.authorCount)],["Projects",release.projects.map((project)=>project.slug).join(", ")||void 0],["Last deploy",release.lastDeploy?.environment]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var loadReplay=(client2,{org,id,signal})=>fetchReplay(client2,{org,replayId:id,signal});function ReplayEmbed({data,width,client:client2,org}){let id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadReplay}),replay=valueOf(status),eventTimestamp=embedText(data.eventTimestamp);return jsxDEV22(SeerEmbedCard,{label:"Replay",title:replay?.user.displayName??(id?shortReplayId(id):void 0),subtitle:replay?formatReplayDuration(replay.durationSec):void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"replay"},void 0,!1,void 0,this),replay?jsxDEV22(SeerEmbedFields,{fields:[["Started",dateTimeText(replay.startedAt)],["Browser",formatAgent(replay.browser)],["OS",formatAgent(replay.os)],["Errors",replay.countErrors===void 0?void 0:String(replay.countErrors)],["Rage clicks",replay.countRageClicks===void 0?void 0:String(replay.countRageClicks)],["Around",eventTimestamp?dateTimeText(eventTimestamp):void 0]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function savedQuerySource(dataset){return dataset==="errors"||dataset==="transactions"||dataset==="discover"?"discover":"explore"}var loadSavedQuery=(client2,{org,id,signal})=>{let separator=id.indexOf(":");return fetchSavedQuery(client2,{org,source:id.slice(0,separator),queryId:id.slice(separator+1),signal})};function SavedQueryEmbed({data,width,client:client2,org}){let queryId=embedText(data.id)??"",dataset=embedText(data.dataset),id=queryId?`${savedQuerySource(dataset)}:${queryId}`:"",status=useDirectResource(id?client2:null,{org,id,load:loadSavedQuery}),query=valueOf(status);return jsxDEV22(SeerEmbedCard,{label:"Saved query",title:query?.name??embedText(data.name)??queryId,subtitle:query?.datasetLabel??dataset,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"saved query"},void 0,!1,void 0,this),query?jsxDEV22(SeerEmbedFields,{fields:[["Filter",query.query||"\u2014"],["Columns",query.fields.join(", ")||void 0],["Sort",query.sort],["Period",query.statsPeriod]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var loadSavedView=(client2,{org,id,signal})=>fetchGroupSearchView(client2,{org,viewId:id,signal});function SavedIssueViewEmbed({data,width,client:client2,org}){let id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadSavedView}),view=valueOf(status);return jsxDEV22(SeerEmbedCard,{label:"Issue view",title:view?.name??embedText(data.name)??id,subtitle:view?.query,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"issue view"},void 0,!1,void 0,this),view?jsxDEV22(SeerQueryEmbed,{name:"issuesQuery",data:{query:view.query,sort:view.querySort,statsPeriod:view.timeFilters.period,projects:view.projects.filter((project)=>project>0).map(String),environments:view.environments},width:width-CARD_CHROME,client:client2,org,bare:!0},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useEffect as useEffect15,useState as useState15}from"h:0__";import{addDefaultParsers}from"h:3__________";var highlights_default="./assets/highlights-9wx8m64k.scm";var tree_sitter_go_default="./assets/tree-sitter-go-dve313fn.wasm";var highlights_default2="./assets/highlights-bds7v5h1.scm";var tree_sitter_php_only_default="./assets/tree-sitter-php-only-jk6j4gjt.wasm";var highlights_default3="./assets/highlights-k2cbtg72.scm";var tree_sitter_python_default="./assets/tree-sitter-python-d56ewc8c.wasm";var highlights_default4="./assets/highlights-3ybh5bp2.scm";var tree_sitter_ruby_default="./assets/tree-sitter-ruby-kmdgpnz0.wasm";function registerSyntaxParsers(){addDefaultParsers([{filetype:"python",wasm:tree_sitter_python_default,queries:{highlights:[highlights_default3]}},{filetype:"ruby",wasm:tree_sitter_ruby_default,queries:{highlights:[highlights_default4]}},{filetype:"php",wasm:tree_sitter_php_only_default,queries:{highlights:[highlights_default2]}},{filetype:"go",wasm:tree_sitter_go_default,queries:{highlights:[highlights_default]}}])}registerSyntaxParsers();function useSyntaxStyle(){let theme=useTheme(),[style,setStyle]=useState15();return useEffect15(()=>{let cancelled=!1;return setStyle(void 0),getSyntaxStyle(theme).then((resolved2)=>{if(!cancelled)setStyle(resolved2)}).catch(()=>{if(!cancelled)setStyle(void 0)}),()=>{cancelled=!0}},[theme]),style}import{jsxDEV as jsxDEV23}from"h:6___________________________";var EMBED_PATTERN=/\{%\s*([A-Za-z][\w]*)([^%]*?)\s*(?:\/%\}|%\}([\s\S]*?)\{%\s*\/\1\s*%\})/g;function splitSeerMarkdown(content,embedsEnabled,structuredContent=null){let segments=[],markdown="",cursor=0,flush=()=>{if(markdown)segments.push({kind:"markdown",content:markdown});markdown=""};for(let match of content.matchAll(EMBED_PATTERN)){let index=match.index??cursor;markdown+=content.slice(cursor,index);let raw=match[0],name=match[1],attributes=parseEmbedAttributes(match[2]),bodyData=parseEmbedData(match[3]),structuredData=name?objectValue(structuredContent?.[name]):null,data=name&&STRUCTURED_SEER_EMBEDS.has(name)?structuredData:bodyData??(Object.keys(attributes).length>0?attributes:structuredData);cursor=index+raw.length;let linePrefix=content.slice(content.lastIndexOf(`
|
|
12
|
+
`,index-1)+1,index).trim(),nextBreak=content.indexOf(`
|
|
13
|
+
`,cursor),lineSuffix=content.slice(cursor,nextBreak===-1?content.length:nextBreak).trim(),level=name?seerEmbedLevel(name,linePrefix===""&&lineSuffix===""):null;if(!name||!level){if(name)reportUnknownSeerEmbed(name,"block");continue}let embedData=data??{};if(!embedsEnabled||level==="inline"){markdown+=inlineSeerEmbed(name,embedData);continue}flush(),segments.push({kind:"embed",name,data:embedData})}return markdown+=content.slice(cursor),flush(),segments}function parseEmbedAttributes(raw){let attributes={};if(!raw)return attributes;let pattern=/([A-Za-z_][\w-]*)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s]+))/g;for(let match of raw.matchAll(pattern)){let key=match[1],value=match[2]??match[3]??match[4];if(key&&value!==void 0)attributes[key]=value}return attributes}function parseEmbedData(raw){if(!raw||raw.length>1e5)return null;try{let parsed=JSON.parse(raw.trim());return parsed&&typeof parsed==="object"&&!Array.isArray(parsed)?parsed:null}catch{return null}}function objectValue(value){return value&&typeof value==="object"&&!Array.isArray(value)?value:null}function SeerMarkdown({content,width,client:client2=null,org="",streaming=!1,embedsEnabled=!1,structuredContent=null}){let theme=useTheme(),syntaxStyle=useSyntaxStyle(),segments=splitSeerMarkdown(content,embedsEnabled,structuredContent);return jsxDEV23("box",{style:{flexDirection:"column",width},children:segments.map((segment,index)=>{if(segment.kind==="embed"&&segment.name&&segment.data)return jsxDEV23(SeerBlockEmbed,{name:segment.name,data:segment.data,width:Math.max(8,width-2),client:client2,org},`embed-${index}`,!1,void 0,this);let markdown=segment.content??"";if(!syntaxStyle)return jsxDEV23(Fragment9,{children:wrapText(markdown,Math.max(1,width)).map((line,lineIndex)=>jsxDEV23("text",{fg:theme.text,children:line},lineIndex,!1,void 0,this))},`markdown-${index}`,!1,void 0,this);return jsxDEV23("markdown",{content:markdown,syntaxStyle,streaming:!0,fg:theme.text,conceal:!0,internalBlockMode:"top-level",tableOptions:{style:"columns",widthMode:"full",wrapMode:"word",borderColor:theme.border},style:{width}},`markdown-${index}-${streaming?"stream":"static"}`,!1,void 0,this)})},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV24}from"h:6___________________________";var COMPOSER_HEIGHT=3;function SeerExplorer({chat,client:client2,org,width,height,focused,value,onInput,inputFocused,onInputFocus,onInputBlur,slashCommands,slashSelected,showHistory,historySelected,pendingState,placeholderOverride}){let theme=useTheme(),inner=Math.max(10,width-2),slashMenuHeight=slashCommands.length>0?slashCommands.length+2:0,transcriptHeight=Math.max(1,height-1-COMPOSER_HEIGHT-slashMenuHeight),latestTodos=useMemo7(()=>latestSeerTodos(chat.blocks),[chat.blocks]),hasAgentApprovalEmbed=useMemo7(()=>chat.capabilities.embeds&&chat.blocks.some((block)=>(block.tool_results??[]).some((result)=>result?.structuredContent?.agentWriteApproval!==void 0||result?.content.includes("agentWriteApproval"))),[chat.blocks,chat.capabilities.embeds]),inputRef=useRef10(null),inputRefCallback=useCallback12((node)=>{let prev=inputRef.current;if(prev)prev.removeAllListeners(RenderableEvents.FOCUSED),prev.removeAllListeners(RenderableEvents.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents.FOCUSED,()=>onInputFocus?.()),node.on(RenderableEvents.BLURRED,()=>onInputBlur?.())},[onInputFocus,onInputBlur]),placeholder=placeholderOverride??(chat.timedOut?"Response timed out. Please try again.":chat.interrupting?"Interrupted. What should Seer do instead?":chat.pendingInput?.input_type==="reauth_monitoring_provider"?"Reconnect your monitoring provider in Sentry to continue.":chat.pendingInput?"Respond using the controls above":"Ask Seer a question, or press / for commands.");return jsxDEV24("box",{style:{flexDirection:"column",width,height},children:[jsxDEV24("box",{style:{flexDirection:"row",width,height:1,flexShrink:0,paddingLeft:1,paddingRight:1,backgroundColor:theme.panelAlt},children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:["Seer Agent"," "]},void 0,!0,void 0,this),jsxDEV24("text",{fg:theme.accent,children:"\u03B2"},void 0,!1,void 0,this),jsxDEV24("box",{style:{flexGrow:1}},void 0,!1,void 0,this),chat.capabilities.codeMode?jsxDEV24("text",{fg:theme.muted,children:`${codeModeLabel(chat.codeMode)} \xB7 `},void 0,!1,void 0,this):null,chat.codeChanges.length>0?jsxDEV24("text",{fg:theme.muted,children:`+${chat.codeChanges.reduce((sum,change)=>sum+change.added,0)} -${chat.codeChanges.reduce((sum,change)=>sum+change.removed,0)} \xB7 `},void 0,!1,void 0,this):null,jsxDEV24("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),showHistory?jsxDEV24(SeerHistory,{chat,selected:historySelected,width:inner,height:transcriptHeight},void 0,!1,void 0,this):jsxDEV24("scrollbox",{focused:focused&&!inputFocused,stickyScroll:!0,stickyStart:"bottom",style:{flexGrow:1,width,height:transcriptHeight},children:[chat.blocks.length===0?jsxDEV24(SeerEmptyState,{width:inner},void 0,!1,void 0,this):chat.blocks.map((block)=>jsxDEV24(SeerBlockView,{block,width:inner,chat,client:client2,org,showTodos:latestTodos?.blockId===block.id?latestTodos.todos:[]},block.id,!1,void 0,this)),chat.codeChanges.length>0?jsxDEV24(CodeChangesCard,{chat,width:inner},void 0,!1,void 0,this):null,chat.pendingInput&&(chat.pendingInput.input_type!=="reauth_monitoring_provider"||chat.capabilities.infraTelemetry)&&(chat.pendingInput.input_type!=="agent_write_approval"||!hasAgentApprovalEmbed)?jsxDEV24(PendingInputCard,{pending:chat.pendingInput,state:pendingState,width:inner},void 0,!1,void 0,this):null,chat.error?jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[jsxDEV24("text",{fg:theme.danger,children:"Seer request failed"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:chat.error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,chat.timedOut?jsxDEV24("box",{style:{paddingLeft:1,paddingTop:1},children:jsxDEV24("text",{fg:theme.warning,children:"Seer stopped responding. Send another message to retry."},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),slashCommands.length>0?jsxDEV24(SlashMenu,{commands:slashCommands,selected:slashSelected,width},void 0,!1,void 0,this):null,jsxDEV24("box",{style:{flexDirection:"row",width,flexShrink:0,height:COMPOSER_HEIGHT,border:!0,borderStyle:"rounded",borderColor:inputFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[chat.thinking?jsxDEV24("text",{fg:theme.accent,children:[jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this)," "]},void 0,!0,void 0,this):jsxDEV24("text",{fg:theme.subText,children:"\u203A "},void 0,!1,void 0,this),jsxDEV24("input",{ref:inputRefCallback,value,placeholder,focused:inputFocused,onInput,style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:chat.timedOut||chat.interrupting||chat.pendingInput?theme.warning:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function CodeChangesCard({chat,width}){let theme=useTheme(),needsPush=chat.codeChanges.some((change)=>change.status==="needs_push"||change.status==="error");return jsxDEV24("box",{style:{flexDirection:"column",width:Math.max(8,width-2),marginTop:1,border:!0,borderColor:theme.border,paddingLeft:1},children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:"Code changes"},void 0,!1,void 0,this),chat.codeChanges.map((change)=>jsxDEV24("box",{style:{flexDirection:"column"},children:[jsxDEV24("text",{fg:theme.accent,attributes:BOLD,children:`${change.repoName} +${change.added} -${change.removed}`},void 0,!1,void 0,this),change.files.map((file)=>jsxDEV24("text",{fg:theme.muted,children:` +${file.added} -${file.removed} ${file.path}`},file.path,!1,void 0,this)),jsxDEV24("text",{fg:change.status==="pushed"?theme.success:change.status==="error"?theme.danger:change.status==="creating"?theme.warning:theme.muted,children:change.status==="creating"?" Creating or updating PR\u2026":change.status==="error"?" PR update failed \u2014 retry available":change.status==="pushed"?` Pushed${change.prNumber?` \xB7 PR #${change.prNumber}`:""}${change.prUrl?` \xB7 ${change.prUrl}`:""}`:` ${change.prNumber?`PR #${change.prNumber} has unpushed changes`:"No PR yet"}`},void 0,!1,void 0,this)]},change.repoName,!0,void 0,this)),needsPush&&!chat.readOnly?jsxDEV24("text",{fg:theme.accent,children:`[${formatKey(primaryKey("sentry.seer.pushChanges"))}] create/update PRs \xB7 /create-pr`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function SlashMenu({commands,selected,width}){let theme=useTheme();return jsxDEV24("box",{style:{flexDirection:"column",width,flexShrink:0,border:!0,borderColor:theme.border,backgroundColor:theme.panel,paddingLeft:1},children:commands.map((command,index)=>jsxDEV24("box",{style:{flexDirection:"row",width:Math.max(1,width-4),backgroundColor:index===selected?theme.selected:void 0},children:[jsxDEV24("text",{fg:index===selected?theme.accent:theme.text,attributes:BOLD,children:command.title.padEnd(19)},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:fitText(command.description,Math.max(1,width-25))},void 0,!1,void 0,this)]},command.id,!0,void 0,this))},void 0,!1,void 0,this)}function SeerHistory({chat,selected,width,height}){let theme=useTheme(),runs=valueOf(chat.runs)??[],error=errorOf(chat.runs);return jsxDEV24("scrollbox",{focused:!0,style:{flexGrow:1,width:width+2,height},children:jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:"Recent conversations"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"j/k select \xB7 enter open \xB7 esc close"},void 0,!1,void 0,this),isInitialLoad(chat.runs)?jsxDEV24("text",{fg:theme.muted,children:"Loading conversations\u2026"},void 0,!1,void 0,this):null,error?jsxDEV24("text",{fg:theme.danger,children:error.message},void 0,!1,void 0,this):null,!isInitialLoad(chat.runs)&&!error&&runs.length===0?jsxDEV24("text",{fg:theme.muted,children:"No recent conversations."},void 0,!1,void 0,this):null,runs.map((run,index)=>jsxDEV24("box",{style:{flexDirection:"row",width,backgroundColor:index===selected?theme.selected:void 0},children:[jsxDEV24("text",{fg:index===selected?theme.accent:theme.muted,children:index===selected?"\u276F ":" "},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.text,children:fitText(run.title??"Untitled chat",Math.max(4,width-10))},void 0,!1,void 0,this),jsxDEV24("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:timeAgo(run.lastTriggeredAt)},void 0,!1,void 0,this)]},run.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function SeerBlockView({block,width,chat,client:client2,org,showTodos}){if(block.message.role==="user")return jsxDEV24(UserBlock,{block,width},void 0,!1,void 0,this);if(block.message.role==="tool_use")return jsxDEV24(ToolUseBlock,{block,width,chat,client:client2,org,showTodos},void 0,!1,void 0,this);return jsxDEV24(AssistantBlock,{block,width,chat,client:client2,org},void 0,!1,void 0,this)}function UserBlock({block,width}){let theme=useTheme(),lines=wrapText(block.message.content??"",Math.max(1,width-3));return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:lines.map((line,index)=>jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:index===0?`\u203A ${line}`:` ${line}`},index,!1,void 0,this))},void 0,!1,void 0,this)}function AssistantBlock({block,width,chat,client:client2,org}){let theme=useTheme(),content=block.message.content??"";if(block.loading&&content.trim()==="")return jsxDEV24("text",{fg:theme.muted,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this)," Thinking\u2026"]},void 0,!0,void 0,this);if(block.loading&&block.id.startsWith("optimistic-assistant-"))return jsxDEV24("box",{style:{paddingLeft:1,paddingTop:1,flexDirection:"row"},children:jsxDEV24("text",{fg:theme.muted,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this),` ${content}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(!content.trim())return null;return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:3,paddingTop:1,width},children:jsxDEV24(SeerMarkdown,{content,width:Math.max(1,width-3),streaming:block.loading&&chat.capabilities.streaming,embedsEnabled:chat.capabilities.embeds,client:client2,org},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ToolUseBlock({block,width,chat,client:client2,org,showTodos}){let theme=useTheme(),status=getBlockStatus(block),blockColor=status==="failure"?theme.danger:status==="mixed"||status==="pending"?theme.warning:theme.muted,classicLines=describeToolCalls(block),calls=block.message.tool_calls??[];return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,width},children:[chat.showThinking&&block.message.thinking_content?.trim()?jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:2,width:Math.max(1,width-2)},children:[jsxDEV24("text",{fg:theme.muted,attributes:BOLD,children:"Thinking"},void 0,!1,void 0,this),jsxDEV24(SeerMarkdown,{content:block.message.thinking_content,width:Math.max(1,width-4),embedsEnabled:chat.capabilities.embeds,client:client2,org},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,calls.flatMap((tool,index)=>{let result=block.tool_results?.find((entry)=>entry?.tool_call_id===tool.id),isCodeMode=tool.function==="sentry_api_execute"||tool.function==="sentry_api_search",callRecords=result?.structuredContent?.calls?.length?result.structuredContent.calls:calls.length===1?block.live_calls??[]:[],rows=visibleCallRecords(callRecords).flatMap((record2)=>{let label=describeCallRecord(record2);return label?[{record:record2,label}]:[]}),links=result?.structuredContent?.links??[],artifacts=result?.structuredContent?.artifacts??[],structuredMarkdown=result?.structuredContent&&result.content.trimStart().startsWith("{%")?result.content:null;return[...rows.length?rows.map(({record:record2,label})=>jsxDEV24(CodeModeCallRow,{record:record2,label,settled:Boolean(result)},`${tool.id??index}-${record2.id}`,!1,void 0,this)):!isCodeMode?[status==="loading"?jsxDEV24("text",{fg:blockColor,attributes:ITALIC,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this),` ${classicLines[index]??tool.function}`]},`${tool.id??index}-classic`,!0,void 0,this):jsxDEV24("text",{fg:blockColor,attributes:ITALIC,children:` ${SEER_STATUS_GLYPH[status]} ${classicLines[index]??tool.function}`},`${tool.id??index}-classic`,!1,void 0,this)]:[],...links.filter((link)=>link.params?.is_error!==!0).map((link,linkIndex)=>jsxDEV24("text",{fg:theme.accent,children:` \u2197 ${toolLinkLabel(link.kind,link.params)}`},`${tool.id??index}-link-${linkIndex}`,!1,void 0,this)),...artifacts.map((artifact,artifactIndex)=>jsxDEV24("text",{fg:theme.accent,children:` \u25C7 ${artifact.reason||artifact.key}`},`${tool.id??index}-artifact-${artifactIndex}`,!1,void 0,this)),...structuredMarkdown?[jsxDEV24(SeerMarkdown,{content:structuredMarkdown,width:Math.max(1,width-3),embedsEnabled:chat.capabilities.embeds,structuredContent:result?.structuredContent??null,client:client2,org},`${tool.id??index}-markdown`,!1,void 0,this)]:[]]}),showTodos.map((todo,index)=>jsxDEV24("text",{fg:todo.status==="completed"?theme.success:theme.muted,attributes:todo.status==="completed"?DIM:NONE,children:` ${todo.status==="completed"?"[x]":todo.status==="in_progress"?"[~]":"[ ]"} ${todo.content}`},`todo-${index}`,!1,void 0,this))]},void 0,!0,void 0,this)}function CodeModeCallRow({record:record2,label,settled}){let theme=useTheme(),status=getCallRecordStatus(record2,settled),color=status==="failure"?theme.danger:theme.muted,details=describeCallRecordDetail(record2),suffix=record2.error?` \u2014 ${record2.error}`:record2.status!==void 0&&record2.status>=400?` \u2014 HTTP ${record2.status}`:"";return jsxDEV24("box",{style:{flexDirection:"column"},children:[status==="loading"?jsxDEV24("text",{fg:color,attributes:ITALIC,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this),` ${label}${suffix}`]},void 0,!0,void 0,this):jsxDEV24("text",{fg:color,attributes:ITALIC,children:` ${status==="failure"?"\u2717":"\u2713"} ${label}${suffix}`},void 0,!1,void 0,this),details.map((detail,index)=>jsxDEV24("text",{fg:theme.subText,children:` ${detail}`},index,!1,void 0,this))]},void 0,!0,void 0,this)}function toolLinkLabel(kind,params){let summary=params?.summary;if(typeof summary==="string"&&summary.trim())return summary;return`View ${kind.replace(/^get_/,"").replace(/_/g," ")}`}function PendingInputCard({pending,state,width}){let theme=useTheme(),cardStyle={flexDirection:"column",width:Math.max(8,width-2),border:!0,borderColor:theme.warning,paddingLeft:1,marginTop:1};if(pending.input_type==="file_change_approval"){let patches=Array.isArray(pending.data.patches)?pending.data.patches:[],patch=patches[state.fileApprovalIndex],record2=patch&&typeof patch==="object"?patch:{},body=record2.patch&&typeof record2.patch==="object"?record2.patch:record2,path=String(body.path??body.file_path??"proposed file change"),diff=String(body.diff??record2.diff??"");return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.warning,attributes:BOLD,children:`Make this change? (${state.fileApprovalIndex+1} of ${patches.length})`},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.text,children:path},void 0,!1,void 0,this),wrapText(diff,Math.max(1,width-5)).slice(0,10).map((line,index)=>jsxDEV24("text",{fg:line.startsWith("+")?theme.success:line.startsWith("-")?theme.danger:theme.muted,children:line},index,!1,void 0,this)),jsxDEV24("text",{fg:theme.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(pending.input_type==="agent_write_approval"){let scopes=Array.isArray(pending.data.required_scopes)?pending.data.required_scopes.filter((scope)=>typeof scope==="string"):[];return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.warning,attributes:BOLD,children:"Allow Seer to make changes?"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"Requested scopes:"},void 0,!1,void 0,this),scopes.map((scope)=>jsxDEV24("text",{fg:theme.text,children:` ${scope}`},scope,!1,void 0,this)),jsxDEV24("text",{fg:theme.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(pending.input_type==="ask_user_question"){let raw=(Array.isArray(pending.data.questions)?pending.data.questions:[])[state.questionIndex],question=raw&&typeof raw==="object"?raw:{},options=Array.isArray(question.options)?question.options:[];return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:String(question.question??"Seer has a question")},void 0,!1,void 0,this),options.map((option,index)=>{let item=option&&typeof option==="object"?option:{};return jsxDEV24("box",{style:{flexDirection:"column",backgroundColor:index===state.questionSelected?theme.selected:void 0},children:[jsxDEV24("text",{fg:index===state.questionSelected?theme.accent:theme.text,children:`${index+1}. ${String(item.label??"Option")}`},void 0,!1,void 0,this),item.description?jsxDEV24("text",{fg:theme.muted,children:` ${String(item.description)}`},void 0,!1,void 0,this):null]},index,!0,void 0,this)}),jsxDEV24("text",{fg:state.questionSelected===options.length?theme.accent:theme.muted,children:"o. Other \u2014 type your own answer"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"j/k select \xB7 enter confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.warning,attributes:BOLD,children:"Reconnect your monitoring provider in Sentry"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"This run will resume after the connection is restored."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var SEER_MARK=[" \u2584\u2584\u2584 "," \u2584\u2588\u2588\u2588\u2588\u2588\u2584 ","\u2588\u2588\u2588 \u25CF \u2588\u2588\u2588"," \u2580\u2588\u2588\u2588\u2588\u2588\u2580 "," \u2580\u2580\u2580\u2580\u2580 "];function SeerEmptyState({width}){let theme=useTheme();return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[SEER_MARK.map((line,index)=>jsxDEV24("text",{fg:theme.accent,children:` ${line}`},index,!1,void 0,this)),jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:`
|
|
14
|
+
Ask Seer anything about your application.`},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:" Try one of these:"},void 0,!1,void 0,this),SEER_SUGGESTED_QUESTIONS.map((question,index)=>jsxDEV24("text",{fg:theme.accent,children:` ${index+1}. ${wrapText(question,Math.max(1,width-6))[0]??question}`},question,!1,void 0,this)),jsxDEV24("text",{fg:theme.subText,children:`
|
|
15
|
+
${formatKey(primaryKey("sentry.seer.compose"))} to type, ${formatKey(primaryKey("sentry.nav.open"))} to send, ${formatKey(primaryKey("sentry.seer.newChat"))} new, ${formatKey(primaryKey("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function initialSeerScreenState(){return{mode:"conversation",inputFocused:!0,slashSelected:0}}function pendingState(pending){switch(pending.input_type){case"file_change_approval":return{mode:"fileApproval",pendingId:pending.id,index:0,decisions:[]};case"ask_user_question":return{mode:"question",pendingId:pending.id,index:0,answers:[],selected:0,inputFocused:!1};case"agent_write_approval":case"reauth_monitoring_provider":return{mode:"blockingInput",pendingId:pending.id}}}function seerScreenReducer(state,action){switch(action.type){case"pendingChanged":if(action.pending)return pendingState(action.pending);return"pendingId"in state?{mode:"conversation",inputFocused:!1,slashSelected:0}:state;case"inputChanged":return state.mode==="conversation"&&state.slashSelected!==0?{...state,slashSelected:0}:state;case"focusInput":if(state.mode==="conversation")return{...state,inputFocused:!0};if(state.mode==="question"&&action.allowQuestion)return{...state,inputFocused:!0};return state;case"blurInput":if(state.mode==="conversation"||state.mode==="question")return{...state,inputFocused:!1};return state;case"moveSlashSelection":if(state.mode!=="conversation"||action.count===0)return state;return{...state,slashSelected:(state.slashSelected+action.direction+action.count)%action.count};case"openHistory":return state.mode==="conversation"?{mode:"history",selected:0}:state;case"closeHistory":return state.mode==="history"?{mode:"conversation",inputFocused:!0,slashSelected:0}:state;case"startNewChat":return{mode:"conversation",inputFocused:!0,slashSelected:0};case"moveHistorySelection":{if(state.mode!=="history")return state;let selected=Math.max(0,Math.min(state.selected+action.direction,Math.max(0,action.count-1)));return selected===state.selected?state:{...state,selected}}case"moveQuestionSelection":if(state.mode!=="question")return state;return{...state,selected:(state.selected+action.direction+action.optionCount+1)%(action.optionCount+1),inputFocused:!1};case"selectQuestionOption":return state.mode==="question"?{...state,selected:action.index,inputFocused:!1}:state;case"selectOtherAnswer":return state.mode==="question"?{...state,selected:action.optionCount,inputFocused:!0}:state;case"commitQuestionAnswer":if(state.mode!=="question")return state;return action.final?{...state,inputFocused:!1}:{...state,index:state.index+1,answers:[...state.answers,action.answer],selected:0,inputFocused:!1};case"recordFileDecision":if(state.mode!=="fileApproval"||action.final)return state;return{...state,index:state.index+1,decisions:[...state.decisions,action.approved]}}}import{jsxDEV as jsxDEV25}from"h:6___________________________";function pendingQuestions(data){let raw=data?.questions;if(!Array.isArray(raw))return[];return raw.flatMap((entry)=>{if(!entry||typeof entry!=="object")return[];let record2=entry;if(typeof record2.question!=="string"||!Array.isArray(record2.options))return[];let options=record2.options.flatMap((option)=>{if(!option||typeof option!=="object")return[];let item=option;return typeof item.label==="string"?[{label:item.label,description:String(item.description??"")}]:[]});return[{question:record2.question,options}]})}function SeerScreen({client:client2,org,state,width,height,focused,registerActions,navigateToScreen,notify}){let chat=useContext2(SeerChatContext),value=state.searchQuery,setValue=useCallback13((next)=>state.dispatch({type:"setSearchQuery",payload:next}),[state.dispatch]);return jsxDEV25(SeerConversation,{chat,client:client2,org,width,height,focused,value,setValue,registerActions,navigateToScreen,notify},void 0,!1,void 0,this)}function SeerConversation({chat,client:client2,org,width,height,focused,value,setValue,registerActions,navigateToScreen,notify}){let theme=useTheme(),[interaction,dispatch]=useReducer2(seerScreenReducer,void 0,initialSeerScreenState),pendingId=chat?.pendingInput?.id,pendingType=chat?.pendingInput?.input_type,showHistory=interaction.mode==="history",historySelected=interaction.mode==="history"?interaction.selected:0,slashSelected=interaction.mode==="conversation"?interaction.slashSelected:0,fileApprovalIndex=interaction.mode==="fileApproval"?interaction.index:0,fileApprovalDecisions=interaction.mode==="fileApproval"?interaction.decisions:[],questionIndex=interaction.mode==="question"?interaction.index:0,questionAnswers=interaction.mode==="question"?interaction.answers:[],questionSelected=interaction.mode==="question"?interaction.selected:0,commands=useMemo8(()=>chat?seerSlashCommands(chat.capabilities,{hasRun:chat.started,hasCodeChanges:chat.codeChanges.length>0}):[],[chat]),visibleCommands=useMemo8(()=>{if(!value.startsWith("/")||value.includes(" "))return[];let query=value.toLowerCase();return commands.filter((command)=>command.title.startsWith(query))},[commands,value]);useEffect16(()=>dispatch({type:"inputChanged"}),[value]),useEffect16(()=>{dispatch({type:"pendingChanged",pending:pendingId&&pendingType?{id:pendingId,input_type:pendingType}:null})},[pendingId,pendingType]);let openHistory=useCallback13(()=>{if(!chat)return;chat.loadRuns(),dispatch({type:"openHistory"})},[chat]),pushChanges=useCallback13(()=>{if(!chat||chat.readOnly||chat.thinking)return;let pending=chat.codeChanges.filter((change)=>change.status==="needs_push"||change.status==="error");for(let change of pending)chat.createPR(change.repoName);if(pending.length>0)notify({kind:"info",text:`${pending.some((change)=>change.prNumber)?"Updating":"Creating"} ${pending.length===1?"pull request":"pull requests"}\u2026`})},[chat,notify]),executeCommand=useCallback13((command)=>{if(!chat)return;switch(setValue(""),command.id){case"new":chat.reset(),dispatch({type:"startNewChat"});return;case"history":openHistory();return;case"create-pr":pushChanges();return;case"conversations":if(chat.runId!==null)navigateToScreen("explore.conversations",{query:`gen_ai.conversation.id:${JSON.stringify(String(chat.runId))}`});return;case"code-mode-off":case"code-mode-on":case"code-mode-only":{let mode=command.id.replace("code-mode-","");chat.setCodeMode(mode),notify({kind:"info",text:`Seer ${command.title.slice(1)}`});return}case"bash-mode-off":case"bash-mode-on":{let enabled=command.id.endsWith("-on");chat.setBashMode(enabled),notify({kind:"info",text:`Seer bash mode ${enabled?"on":"off"}`});return}case"thinking-off":case"thinking-on":chat.setShowThinking(command.id.endsWith("-on"));return}},[chat,navigateToScreen,notify,openHistory,pushChanges,setValue]),questions=pendingQuestions(chat?.pendingInput?.data),currentQuestion=questions[questionIndex],otherSelected=Boolean(currentQuestion&&questionSelected===currentQuestion.options.length),commitQuestionAnswer=useCallback13((answer)=>{if(!chat?.pendingInput||!currentQuestion)return;let answers=[...questionAnswers,answer],final=questionIndex+1>=questions.length;if(dispatch({type:"commitQuestionAnswer",answer,final}),final){chat.respond(chat.pendingInput.id,{answers}),setValue("");return}setValue("")},[chat,currentQuestion,questionAnswers,questionIndex,questions.length,setValue]),submit=useCallback13(()=>{if(!chat)return!1;if(chat.pendingInput?.input_type==="ask_user_question"&&otherSelected){let answer=value.trim();if(answer)commitQuestionAnswer(answer);return!0}let command=visibleCommands[slashSelected]??commands.find((candidate)=>candidate.title===value.trim().toLowerCase());if(command)return executeCommand(command),!0;if(chat.thinking||chat.readOnly||chat.pendingInput||value.trim()==="")return!0;return chat.send(value),setValue(""),!0},[chat,commands,commitQuestionAnswer,executeCommand,otherSelected,setValue,slashSelected,value,visibleCommands]),respondToFileApproval=useCallback13((approved)=>{if(chat?.pendingInput?.input_type!=="file_change_approval")return;let patches=Array.isArray(chat.pendingInput.data.patches)?chat.pendingInput.data.patches:[],decisions=[...fileApprovalDecisions,approved],final=fileApprovalIndex+1>=patches.length;if(dispatch({type:"recordFileDecision",approved,final}),final)chat.respond(chat.pendingInput.id,{decisions})},[chat,fileApprovalDecisions,fileApprovalIndex]),handlePendingKey=useCallback13((key)=>{let pending=chat?.pendingInput;if(!pending)return!1;if(pending.input_type==="file_change_approval"){if(key.name.toLowerCase()==="y")respondToFileApproval(!0);else if(key.name.toLowerCase()==="x")respondToFileApproval(!1);else return!1;return!0}if(pending.input_type==="agent_write_approval"){if(key.name.toLowerCase()==="x")return chat.respond(pending.id,{decision:"reject"}),!0;if(key.name.toLowerCase()!=="y")return!1;let sessionId=pending.data.session_id,rawScopes=pending.data.required_scopes,scopes=Array.isArray(rawScopes)?rawScopes.filter((scope)=>typeof scope==="string"):[];if(typeof sessionId==="string")chat.approveWrite(pending.id,sessionId,scopes);return!0}if(pending.input_type!=="ask_user_question"||!currentQuestion)return!1;if(matchesCommand("sentry.nav.up",key)||key.name.toLowerCase()==="up")return dispatch({type:"moveQuestionSelection",direction:-1,optionCount:currentQuestion.options.length}),!0;if(matchesCommand("sentry.nav.down",key)||key.name.toLowerCase()==="down")return dispatch({type:"moveQuestionSelection",direction:1,optionCount:currentQuestion.options.length}),!0;if(key.name.toLowerCase()==="o")return dispatch({type:"selectOtherAnswer",optionCount:currentQuestion.options.length}),!0;let option=Number(key.name)-1;if(option>=0&&option<currentQuestion.options.length)return dispatch({type:"selectQuestionOption",index:option}),!0;if(matchesCommand("sentry.nav.open",key)&&!otherSelected){let selected=currentQuestion.options[questionSelected];if(selected)commitQuestionAnswer(selected.label);return!0}return!1},[chat,commitQuestionAnswer,currentQuestion,otherSelected,questionSelected,respondToFileApproval]),handleInputKey=useCallback13((key)=>{if(visibleCommands.length===0)return!1;let name=key.name.toLowerCase();if(name==="up")return dispatch({type:"moveSlashSelection",direction:-1,count:visibleCommands.length}),!0;if(name==="down")return dispatch({type:"moveSlashSelection",direction:1,count:visibleCommands.length}),!0;return!1},[visibleCommands.length]),handleKey=useCallback13((key)=>{if(!chat)return!1;if(chat.pendingInput&&handlePendingKey(key))return!0;if(showHistory){let runCount=chat.runs.state==="ready"?chat.runs.value.length:0;if(matchesCommand("sentry.nav.down",key))return dispatch({type:"moveHistorySelection",direction:1,count:runCount}),!0;if(matchesCommand("sentry.nav.up",key))return dispatch({type:"moveHistorySelection",direction:-1,count:runCount}),!0;if(matchesCommand("sentry.nav.open",key)&&chat.runs.state==="ready"){let selected=chat.runs.value[historySelected];if(selected)chat.switchRun(selected.id),dispatch({type:"closeHistory"});return!0}return!1}if(matchesCommand("sentry.seer.compose",key)||matchesCommand("sentry.nav.open",key))return dispatch({type:"focusInput",allowQuestion:otherSelected}),!0;if(matchesCommand("sentry.seer.newChat",key))return chat.reset(),setValue(""),dispatch({type:"startNewChat"}),!0;if(matchesCommand("sentry.seer.history",key))return openHistory(),!0;if(matchesCommand("sentry.seer.pushChanges",key)&&chat.codeChanges.length>0)return pushChanges(),!0;if(matchesCommand("sentry.seer.interrupt",key)){if(chat.thinking)chat.interrupt();return!0}if(chat.blocks.length===0&&!key.ctrl&&!key.meta){let question=SEER_SUGGESTED_QUESTIONS[Number(key.name)-1];if(question!==void 0)return chat.send(question),!0}return!1},[chat,handlePendingKey,historySelected,openHistory,pushChanges,setValue,showHistory]),back=useCallback13(()=>{if(!showHistory)return!1;return dispatch({type:"closeHistory"}),!0},[showHistory]),inputFocused=interaction.mode==="conversation"||interaction.mode==="question"?interaction.inputFocused:!1,composerFocused=focused&&inputFocused&&!showHistory&&!chat?.readOnly&&(!chat?.pendingInput||chat.pendingInput.input_type==="ask_user_question"&&otherSelected);if(useEffect16(()=>(registerActions({inputFocused:()=>composerFocused,submitInput:submit,blurInput:()=>dispatch({type:"blurInput"}),handleInputKey,handleKey,back}),()=>registerActions(null)),[back,composerFocused,handleInputKey,handleKey,registerActions,submit]),!chat)return jsxDEV25("text",{fg:theme.muted,children:"Seer is unavailable."},void 0,!1,void 0,this);if(!chat.capabilities.available)return jsxDEV25("text",{fg:theme.muted,children:"Seer Agent is not enabled for this organization."},void 0,!1,void 0,this);let placeholder=otherSelected?"Type your own answer\u2026":chat.readOnly?"This conversation is owned by another user and is read-only":void 0;return jsxDEV25(SeerExplorer,{chat,client:client2,org,width,height,focused,value,onInput:setValue,inputFocused:composerFocused,onInputFocus:()=>dispatch({type:"focusInput",allowQuestion:otherSelected}),onInputBlur:()=>dispatch({type:"blurInput"}),slashCommands:visibleCommands,slashSelected,showHistory,historySelected,pendingState:{fileApprovalIndex,questionIndex,questionSelected},placeholderOverride:placeholder},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV26}from"h:6___________________________";function issueAutofixPrompt(issue){return`Please try to root cause and propose a fix for issue ${issue.shortId}: ${issueTitle(issue)} (${issue.permalink})`}function IssueAutofixModal({issue,chat,client:client2,org,navigateToScreen,notify,onClose}){let terminal=useTerminalDimensions4(),[value,setValue]=useState16(""),actions=useRef11(null),sent=useRef11(!1),desiredWidth=Math.min(100,Math.max(40,terminal.width-8)),desiredHeight=Math.min(40,Math.max(18,terminal.height-6)),geometry=resolveModalGeometry({width:desiredWidth,height:desiredHeight,terminalWidth:terminal.width,terminalHeight:terminal.height}),registerActions=useCallback14((next)=>{actions.current=next},[]);return useEffect17(()=>{if(sent.current)return;sent.current=!0,chat.send(issueAutofixPrompt(issue))},[chat.send,issue]),useKeyboard4((key)=>{let current=actions.current;if(current?.inputFocused?.()){if(matchesCommand("sentry.nav.back",key)){current.blurInput?.(),consumeKey(key);return}if(matchesCommand("sentry.nav.open",key)){current.submitInput?.(),consumeKey(key);return}if(current.handleInputKey?.(key))consumeKey(key);return}if(matchesCommand("sentry.nav.back",key)){if(!current?.back?.())onClose();consumeKey(key);return}if(current?.handleKey?.(key)){consumeKey(key);return}consumeKey(key)}),jsxDEV26(ModalFrame,{title:` Autofix \xB7 ${issue.shortId} `,width:desiredWidth,height:desiredHeight,onClose,children:jsxDEV26(SeerConversation,{chat,client:client2,org,width:Math.max(10,geometry.width-4),height:Math.max(8,geometry.height-3),focused:!0,value,setValue,registerActions,navigateToScreen:(screen,initialState)=>{onClose(),navigateToScreen(screen,initialState)},notify},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useState as useState17}from"h:0__";import{useKeyboard as useKeyboard5}from"h:4___________";import{jsxDEV as jsxDEV27}from"h:6___________________________";var DIALOG_WIDTH=76,DIALOG_HEIGHT=8;function OpenSentryUrlDialog({onSubmit,onClose}){let theme=useTheme(),[url,setUrl]=useState17(""),[failure,setFailure]=useState17();useKeyboard5((key)=>{routeKeyOwnership([()=>{if(matchesCommand("sentry.nav.back",key))return onClose(),"mine";if(matchesCommand("sentry.nav.open",key))return setFailure(onSubmit(url)),"mine";return"notMine"}],key,consumeKey)});let prefix=failure?.kind==="unsupported"?"Not implemented":"Invalid URL";return jsxDEV27(ModalFrame,{title:" Open Sentry URL ",width:DIALOG_WIDTH,height:DIALOG_HEIGHT,onClose,children:[jsxDEV27("text",{fg:theme.muted,children:"Paste a sentry.io URL"},void 0,!1,void 0,this),jsxDEV27("input",{value:url,placeholder:"https://acme.sentry.io/issues/\u2026",focused:!0,onInput:(value)=>{setUrl(value),setFailure(void 0)},style:{marginTop:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this),failure?jsxDEV27("text",{fg:failure.kind==="invalid"?theme.danger:theme.warning,children:`${prefix}: ${failure.message}`},void 0,!1,void 0,this):jsxDEV27("text",{fg:theme.subText,children:"enter open \xB7 esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var compass_active_default="./assets/compass_active-mcnd0q22.png";var compass_inactive_default="./assets/compass_inactive-ddbmyj5v.png";var compass_active_light_default="./assets/compass_active_light-v08f7cvf.png";var compass_inactive_light_default="./assets/compass_inactive_light-wwd8x0j5.png";var dashboard_active_default="./assets/dashboard_active-3k2ysmyr.png";var dashboard_inactive_default="./assets/dashboard_inactive-a3pdwyw3.png";var dashboard_active_light_default="./assets/dashboard_active_light-j060573s.png";var dashboard_inactive_light_default="./assets/dashboard_inactive_light-47zscdjm.png";var issues_active_default="./assets/issues_active-k2k0e07f.png";var issues_inactive_default="./assets/issues_inactive-5jhnttk9.png";var issues_active_light_default="./assets/issues_active_light-ppxjynwp.png";var issues_inactive_light_default="./assets/issues_inactive_light-efzr1ggk.png";var monitors_active_default="./assets/monitors_active-ypv5rjbw.png";var monitors_inactive_default="./assets/monitors_inactive-vncjn4xh.png";var monitors_active_light_default="./assets/monitors_active_light-7en9bsxt.png";var monitors_inactive_light_default="./assets/monitors_inactive_light-3p8t6ysq.png";var seer_active_default="./assets/seer_active-s87c2fsc.png";var seer_inactive_default="./assets/seer_inactive-vnbwgb8m.png";var seer_active_light_default="./assets/seer_active_light-qr5zb8g1.png";var seer_inactive_light_default="./assets/seer_inactive_light-g6ryga4y.png";var sentry_default="./assets/sentry-a94jrdn1.png";var sentry_light_default="./assets/sentry_light-xph1a1zb.png";var DARK_NAV_ICON_PATHS={compass_active:compass_active_default,compass_inactive:compass_inactive_default,dashboard_active:dashboard_active_default,dashboard_inactive:dashboard_inactive_default,issues_active:issues_active_default,issues_inactive:issues_inactive_default,monitors_active:monitors_active_default,monitors_inactive:monitors_inactive_default,seer_active:seer_active_default,seer_inactive:seer_inactive_default,sentry:sentry_default},NAV_ICON_PATHS={dark:DARK_NAV_ICON_PATHS,light:{compass_active:compass_active_light_default,compass_inactive:compass_inactive_light_default,dashboard_active:dashboard_active_light_default,dashboard_inactive:dashboard_inactive_light_default,issues_active:issues_active_light_default,issues_inactive:issues_inactive_light_default,monitors_active:monitors_active_light_default,monitors_inactive:monitors_inactive_light_default,seer_active:seer_active_light_default,seer_inactive:seer_inactive_light_default,sentry:sentry_light_default}};function navIconBytes(name,mode="dark"){return imageBytes(NAV_ICON_PATHS[mode][name])}var NAV_ICON_NAMES=Object.keys(DARK_NAV_ICON_PATHS);import{jsxDEV as jsxDEV28}from"h:6___________________________";var ICON_BASE={issues:"issues",explore:"compass",dashboards:"dashboard",seer:"seer",monitors:"monitors"},ICON_HEIGHT=1,NAV_ICON_WIDTH=2;function NavIcon({groupId,active}){let theme=useTheme(),variant=active?"active":"inactive";return jsxDEV28("image",{source:navIconBytes(`${ICON_BASE[groupId]}_${variant}`,theme.mode),fit:"fit",style:{width:NAV_ICON_WIDTH,height:ICON_HEIGHT}},void 0,!1,void 0,this)}function SentryLogo(){let theme=useTheme();return jsxDEV28("image",{source:navIconBytes("sentry",theme.mode),fit:"fit",style:{width:NAV_ICON_WIDTH,height:ICON_HEIGHT}},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV29}from"h:6___________________________";var ORG_PICKER_COMMAND="sentry.app.switchOrg",AVATAR_WIDTH2=2,AVATAR_HEIGHT2=1,NAV_ITEM_HEIGHT=1,NAV_ITEM_GAP=1,NAV_ICON_GAP=1,RAIL_CHROME_WIDTH=4,WIDEST_NAV_LABEL=Math.max(...NAV_GROUPS.map((group)=>measureTextWidth(group.label))),ORG_KEY_HINT_WIDTH=(()=>{let key=formatKey(primaryKey(ORG_PICKER_COMMAND));return key?1+measureTextWidth(key):0})(),NAV_ITEM_ROW_WIDTH=NAV_ICON_WIDTH+NAV_ICON_GAP+WIDEST_NAV_LABEL,ORG_HEADER_ROW_WIDTH=AVATAR_WIDTH2+1+WIDEST_NAV_LABEL+ORG_KEY_HINT_WIDTH,NAV_RAIL_WIDTH=RAIL_CHROME_WIDTH+Math.max(NAV_ITEM_ROW_WIDTH,ORG_HEADER_ROW_WIDTH),COLLAPSED_NAV_RAIL_WIDTH=RAIL_CHROME_WIDTH+NAV_ICON_WIDTH,ORG_HEADER_MARGIN_TOP=1,ORG_HEADER_MARGIN_BOTTOM=2,ORG_HEADER_ANCHOR_LEFT=1,ORG_HEADER_ANCHOR_TOP=1+ORG_HEADER_MARGIN_TOP+AVATAR_HEIGHT2;function NavRail({active,expanded,focused,hotkeys,avatarUrl,orgSlug,onSelect,onExpand,onOrgPress,groups=NAV_GROUPS}){let theme=useTheme(),railWidth=expanded?NAV_RAIL_WIDTH:COLLAPSED_NAV_RAIL_WIDTH,contentWidth=railWidth-RAIL_CHROME_WIDTH,{supportsHighRes:hasImages}=useImageSupport(),slugWidth=expanded?contentWidth-(hasImages&&avatarUrl?AVATAR_WIDTH2+1:0)-ORG_KEY_HINT_WIDTH:0;return jsxDEV29("box",{style:{width:railWidth,flexShrink:0,flexDirection:"column",border:!0,borderColor:focused?theme.borderFocused:theme.border,paddingLeft:1,paddingRight:1},onMouseDown:expanded?void 0:onExpand,children:[orgSlug||hasImages&&avatarUrl?jsxDEV29("box",{style:{height:hasImages?AVATAR_HEIGHT2:1,flexDirection:"column",alignItems:expanded?"stretch":"center",marginTop:ORG_HEADER_MARGIN_TOP,marginBottom:ORG_HEADER_MARGIN_BOTTOM},onMouseDown:expanded?onOrgPress:void 0,children:expanded?jsxDEV29("box",{style:{flexDirection:"row",alignItems:"center",gap:1},children:[hasImages&&avatarUrl?jsxDEV29("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH2,height:AVATAR_HEIGHT2}},void 0,!1,void 0,this):null,orgSlug?jsxDEV29("text",{fg:theme.text,attributes:1,children:fitText(orgSlug,slugWidth)},void 0,!1,void 0,this):null,jsxDEV29("box",{style:{flexDirection:"row"},children:jsxDEV29(KeyHint,{command:ORG_PICKER_COMMAND},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):hasImages&&avatarUrl?jsxDEV29("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH2,height:AVATAR_HEIGHT2}},void 0,!1,void 0,this):orgSlug?jsxDEV29("text",{fg:theme.text,attributes:1,children:Array.from(orgSlug)[0]?.toUpperCase()},void 0,!1,void 0,this):null},void 0,!1,void 0,this):null,jsxDEV29("box",{style:{flexDirection:"column",gap:hasImages?NAV_ITEM_GAP:0},children:groups.map((group)=>{let isActive=group.id===active;return jsxDEV29("box",{style:{flexDirection:"row",alignItems:"center",gap:hasImages?NAV_ICON_GAP:0,height:NAV_ITEM_HEIGHT},onMouseDown:expanded?()=>onSelect?.(group.id):void 0,children:[hasImages?jsxDEV29(NavIcon,{groupId:group.id,active:isActive},void 0,!1,void 0,this):null,expanded?jsxDEV29(NavHotkeyLabel,{label:group.label,hotkey:hotkeys?.get(group.id),fg:isActive?theme.accent:theme.muted,bold:isActive},void 0,!1,void 0,this):hasImages?null:jsxDEV29("text",{fg:isActive?theme.accent:theme.muted,attributes:isActive?1:0,children:group.glyph},void 0,!1,void 0,this)]},group.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback15,useEffect as useEffect18,useMemo as useMemo9,useState as useState18}from"h:0__";import{jsxDEV as jsxDEV30}from"h:6___________________________";function OrgPicker({client:client2,currentOrg,anchorLeft,anchorTop,onSelect,onClose}){let[orgs,setOrgs]=useState18([]),[error,setError]=useState18(null),[loading,setLoading]=useState18(client2!==null);useEffect18(()=>{if(!client2)return;let controller=new AbortController;return setLoading(!0),listOrganizations2(client2,controller.signal).then((data)=>{if(controller.signal.aborted)return;setOrgs(data),setError(null)}).catch((err)=>{if(controller.signal.aborted)return;setError(err instanceof Error?err.message:String(err))}).finally(()=>{if(!controller.signal.aborted)setLoading(!1)}),()=>controller.abort()},[client2]);let items=useMemo9(()=>orgs.map((org)=>({label:org.slug,value:org.slug})),[orgs]),handleSelect=useCallback15((values)=>{let slug=values[0];if(slug)onSelect(slug)},[onSelect]);return jsxDEV30(Dropdown,{title:"Organization",items,selected:currentOrg?[currentOrg]:[],anchorLeft,anchorTop,showAll:!1,filterable:!0,placeholder:loading?"Loading organizations\u2026":error??"No organizations",onSelect:handleSelect,onClose},void 0,!1,void 0,this)}var NO_NAV_EXTRAS={sections:[]};function navSectionsFor(group,extras=NO_NAV_EXTRAS){return[...getNavGroup(group).sections.map((section)=>({title:section.title,items:section.items.map((label)=>({label}))})),...extras.sections]}function navItemsFor(group,extras=NO_NAV_EXTRAS){return navSectionsFor(group,extras).flatMap((section)=>section.items)}function navTargetOf(group,item){return item.target??{group,item:item.label}}import{jsxDEV as jsxDEV31}from"h:6___________________________";var SECONDARY_NAV_WIDTH=22,CONTENT_WIDTH=SECONDARY_NAV_WIDTH-4;function SecondaryNav({group,activeItem,focused,extras=NO_NAV_EXTRAS,hotkeys,onSelect}){let theme=useTheme(),nav=getNavGroup(group),sections=navSectionsFor(group,extras);return jsxDEV31("box",{style:{width:SECONDARY_NAV_WIDTH,flexShrink:0,flexDirection:"column",overflow:"hidden",border:!0,borderColor:focused?theme.borderFocused:theme.border,paddingTop:1,paddingLeft:1,paddingRight:1},children:[jsxDEV31("text",{fg:theme.text,attributes:1,children:nav.label},void 0,!1,void 0,this),sections.map((section,si)=>jsxDEV31("box",{style:{flexDirection:"column",flexShrink:0},children:[jsxDEV31("text",{fg:theme.border,children:"\u2500".repeat(CONTENT_WIDTH)},void 0,!1,void 0,this),section.title?jsxDEV31("text",{fg:theme.muted,children:section.title},void 0,!1,void 0,this):null,section.items.map((item,ii)=>{let isActive=item.label===activeItem;return jsxDEV31("box",{style:{flexDirection:"row",height:1,flexShrink:0},onMouseDown:()=>onSelect?.(item),children:jsxDEV31(NavHotkeyLabel,{label:fitText(item.label,CONTENT_WIDTH),hotkey:hotkeys?.get(item.label),fg:isActive?theme.accent:theme.muted,bold:isActive},void 0,!1,void 0,this)},`${si}:${ii}:${item.label}`,!1,void 0,this)})]},si,!0,void 0,this))]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV32,Fragment as Fragment10}from"h:6___________________________";function noticeColor(kind,theme){return kind==="error"?theme.danger:theme.highlight}function HintItem({commandId,label}){let theme=useTheme();if(!primaryKey(commandId))return null;return jsxDEV32(Fragment10,{children:[jsxDEV32(KeyHint,{command:commandId},void 0,!1,void 0,this),jsxDEV32("text",{children:" "},void 0,!1,void 0,this),label?jsxDEV32("text",{fg:theme.muted,children:label},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function UpdatePill({onPress}){let theme=useTheme();return jsxDEV32("box",{style:{flexDirection:"row",flexShrink:0},onMouseDown:onPress,children:[jsxDEV32("text",{fg:theme.highlight,attributes:BOLD,children:"Update"},void 0,!1,void 0,this),jsxDEV32("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function StatusBar({notice,hints,since,onUpdate}){let theme=useTheme(),loading=notice.kind==="loading",frame=useSpinnerFrame(loading),text=notice.text;if(loading){let elapsedMs=since===void 0?void 0:Date.now()-since,suffix=elapsedMs!==void 0&&elapsedMs>=2000?` ${(elapsedMs/1000).toFixed(1)}s`:"";text=`${frame} ${notice.text}${suffix}`}return jsxDEV32("box",{style:{height:1,flexShrink:0,flexDirection:"row",backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[onUpdate?jsxDEV32(UpdatePill,{onPress:onUpdate},void 0,!1,void 0,this):null,jsxDEV32("text",{fg:noticeColor(notice.kind,theme),children:text},void 0,!1,void 0,this),jsxDEV32("box",{style:{flexGrow:1}},void 0,!1,void 0,this),hints.map(({command,label},i)=>{if(!primaryKey(command))return null;return jsxDEV32("box",{style:{flexDirection:"row"},children:[i>0?jsxDEV32("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this):null,jsxDEV32(HintItem,{commandId:command,label},void 0,!1,void 0,this)]},command,!0,void 0,this)}),jsxDEV32(SentryBadge,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function SentryBadge(){let{supportsHighRes}=useImageSupport();if(!supportsHighRes)return null;return jsxDEV32("box",{style:{marginLeft:1},children:jsxDEV32(SentryLogo,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useKeyboard as useKeyboard6}from"h:4___________";import{jsxDEV as jsxDEV33}from"h:6___________________________";var DIALOG_WIDTH2=84,DIALOG_HEIGHT2=12;function WebUrlDialog({url,onClose}){let theme=useTheme();return useKeyboard6((key)=>{routeKeyOwnership([()=>{if(!matchesCommand("sentry.nav.back",key))return"notMine";return onClose(),"mine"}],key,consumeKey)}),jsxDEV33(ModalFrame,{title:" Open in Sentry ",width:DIALOG_WIDTH2,height:DIALOG_HEIGHT2,onClose,children:[jsxDEV33("text",{fg:theme.warning,children:"Could not launch a browser. Open this production URL:"},void 0,!1,void 0,this),jsxDEV33("text",{fg:theme.text,style:{wrapMode:"char"},children:url},void 0,!1,void 0,this),jsxDEV33("text",{fg:theme.subText,children:"esc close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback16,useMemo as useMemo10,useRef as useRef12,useState as useState19}from"h:0__";function useFocusRing(regions,initial){let[focused,setFocused]=useState19(initial??regions[0]),focusedRef=useRef12(focused);focusedRef.current=focused;let move=useCallback16((delta)=>{let next=(regions.indexOf(focusedRef.current)+delta+regions.length)%regions.length;setFocused(regions[next])},[regions]);return useMemo10(()=>({focused,focusedRef,isFocused:(region)=>focused===region,focus:setFocused,next:()=>move(1),prev:()=>move(-1)}),[focused,move])}import{useCallback as useCallback39,useMemo as useMemo32,useReducer as useReducer4,useState as useState32}from"h:0__";var ASSIGNABLE=/[a-z0-9]/i;function candidateIndexes(label){let chars=[...label],wordStarts=[],rest=[];return chars.forEach((char,index)=>{if(!ASSIGNABLE.test(char))return;let previous=chars[index-1];if(previous===void 0||!ASSIGNABLE.test(previous))wordStarts.push(index);else rest.push(index)}),[...wordStarts,...rest]}function assignHotkeys(labels,reserved=[]){let taken=new Set;for(let key of reserved)taken.add(key.toLowerCase());return labels.map((label)=>{let chars=[...label];for(let index of candidateIndexes(label)){let key=chars[index].toLowerCase();if(taken.has(key))continue;return taken.add(key),{key,index}}let fallback=[..."abcdefghijklmnopqrstuvwxyz0123456789"].find((key)=>!taken.has(key));if(!fallback)return;return taken.add(fallback),{key:fallback,index:-1}})}var RESERVED_KEYS=[primaryKey("sentry.nav.goto"),primaryKey("sentry.app.switchOrg")].filter(Boolean);function buildGotoHotkeys(group,navGroups=NAV_GROUPS){let items=getNavGroup(group).sections.flatMap((section)=>section.items),assigned=assignHotkeys([...navGroups.map((navGroup)=>navGroup.label),...items],RESERVED_KEYS),groups=new Map,itemKeys=new Map,byKey=new Map;return navGroups.forEach((navGroup,index)=>{let hotkey=assigned[index];if(!hotkey)return;groups.set(navGroup.id,hotkey),byKey.set(hotkey.key,{kind:"group",group:navGroup.id})}),items.forEach((item,index)=>{let hotkey=assigned[navGroups.length+index];if(!hotkey)return;itemKeys.set(item,hotkey),byKey.set(hotkey.key,{kind:"item",item})}),{groups,items:itemKeys,byKey}}var SEPARATOR=" \u203A ",ELISION="\u2026";function breadcrumbTrail(segments,width){let parts=segments.filter((part)=>Boolean(part&&part.trim()));if(parts.length===0||width<=0)return"";let full=parts.join(SEPARATOR);if(measureTextWidth(full)<=width)return full;for(let first=1;first<parts.length;first++){let candidate=[ELISION,...parts.slice(first)].join(SEPARATOR);if(measureTextWidth(candidate)<=width)return candidate}return fitText(parts[parts.length-1],width)}import{useCallback as useCallback17,useMemo as useMemo11,useReducer as useReducer3,useRef as useRef13}from"h:0__";function rowsOf(state){if(state.entriesSource!==null&&state.entriesSource!==state.source)throw Error(`Screen "${state.source}" cannot read rows written by "${state.entriesSource}" from shared state "${state.key}"`);return state.entries}var UNREGISTERED_KEY="__unregistered__";function initialSlice(key,selectedProjects=[]){let defaults=defaultsForStateKey(key),query=defaults.query??"";return{entries:[],entriesSource:null,selected:0,status:{loading:!1},openDropdown:null,selectedProjects:[...selectedProjects],selectedEnvs:[],statsPeriod:defaults.statsPeriod??DEFAULT_STATS_PERIOD,sort:defaults.sort??DEFAULT_SORT,detailOpen:!1,searchQuery:query,committedQuery:query,searchFocused:!1,queryBeforeEdit:query}}function sliceFromSnapshot(key,snapshot){return{...initialSlice(key,snapshot.selectedProjects),entriesSource:snapshot.source,selected:snapshot.selected,selectedProjects:[...snapshot.selectedProjects],selectedEnvs:[...snapshot.selectedEnvs],statsPeriod:snapshot.statsPeriod,sort:snapshot.sort,detailOpen:snapshot.detailOpen,searchQuery:snapshot.query,committedQuery:snapshot.query,queryBeforeEdit:snapshot.query}}function initialStore(key,selectedProjects,initialSeed,snapshots){let states=new Map;for(let[snapshotKey,snapshot]of Object.entries(snapshots??{}))states.set(snapshotKey,sliceFromSnapshot(snapshotKey,snapshot));if(initialSeed&&!states.has(key))states.set(key,screenReducer(initialSlice(key,selectedProjects),{type:"seed",payload:initialSeed}));return states}function sameStatus(a,b){return a.loading===b.loading&&a.since===b.since&&a.error===b.error&&a.noun===b.noun}function screenReducer(state,action,source){switch(action.type){case"setEntries":{if(!source)throw Error("setEntries requires a screen source");let previous=state.entriesSource===source?state.entries:[],entries=typeof action.payload==="function"?action.payload(previous):action.payload;if(entries===state.entries&&state.entriesSource===source)return state;let selected=Math.min(state.entriesSource===source?state.selected:0,Math.max(0,entries.length-1));return{...state,entries,entriesSource:source,selected}}case"setSelected":{let ownsEntries=source===void 0||state.entriesSource===source,previous=ownsEntries?state.selected:0,selected=typeof action.payload==="function"?action.payload(previous):action.payload,rowCount=ownsEntries?state.entries.length:0,clamped=Math.max(0,Math.min(selected,Math.max(0,rowCount-1)));return clamped===state.selected?state:{...state,selected:clamped}}case"setStatus":return sameStatus(state.status,action.payload)?state:{...state,status:action.payload};case"setOpenDropdown":return state.openDropdown===action.payload?state:{...state,openDropdown:action.payload};case"setSelectedProjects":return{...state,selectedProjects:action.payload};case"setSelectedEnvs":return{...state,selectedEnvs:action.payload};case"setStatsPeriod":return state.statsPeriod===action.payload?state:{...state,statsPeriod:action.payload};case"setSort":return state.sort===action.payload?state:{...state,sort:action.payload};case"setDetailOpen":{let detailOpen=typeof action.payload==="function"?action.payload(state.detailOpen):action.payload;return detailOpen===state.detailOpen?state:{...state,detailOpen}}case"setSearchQuery":return state.searchQuery===action.payload?state:{...state,searchQuery:action.payload};case"focusSearch":return{...state,queryBeforeEdit:state.committedQuery,searchFocused:!0};case"submitSearch":return{...state,committedQuery:state.searchQuery,searchFocused:!1};case"cancelSearch":case"handleSearchBlur":return{...state,searchQuery:state.queryBeforeEdit,searchFocused:!1};case"resetOrgScoped":return{...state,entries:[],entriesSource:null,selected:0,status:{loading:!1},openDropdown:null,selectedProjects:[...action.payload.projects],selectedEnvs:[],detailOpen:!1,searchFocused:!1};case"seed":{let query=action.payload.query??state.searchQuery;return{...state,searchQuery:query,committedQuery:query,queryBeforeEdit:query,sort:action.payload.sort??state.sort,statsPeriod:action.payload.statsPeriod??state.statsPeriod,selectedProjects:action.payload.selectedProjects??state.selectedProjects,selectedEnvs:action.payload.selectedEnvs??state.selectedEnvs}}}}function screenStoreReducer(states,action){if(action.type==="resetOrgScoped"){let next2=new Map;for(let[key,state]of states)next2.set(key,screenReducer(state,{type:"resetOrgScoped",payload:{projects:action.projects}}));return next2}let next=new Map(states);if(action.type==="seed")return next.set(action.key,screenReducer(initialSlice(action.key),{type:"seed",payload:action.values})),next;let current=states.get(action.key)??action.fallback,updated=screenReducer(current,action.action,action.source);if(updated===current&&states.has(action.key))return states;return next.set(action.key,updated),next}function useScreenState(stateKey,source,initialSelectedProjects=[],initialSeed,initialSnapshots){let key=stateKey??UNREGISTERED_KEY,[states,storeDispatch]=useReducer3(screenStoreReducer,void 0,()=>initialStore(key,initialSelectedProjects,initialSeed,initialSnapshots)),initialSelectedProjectsRef=useRef13(initialSelectedProjects);initialSelectedProjectsRef.current=initialSelectedProjects;let searchExitHandled=useRef13(!1),dispatch=useCallback17((action)=>{storeDispatch({type:"dispatch",key,source,action,fallback:initialSlice(key,initialSelectedProjectsRef.current)})},[key,source]),focusSearch=useCallback17(()=>dispatch({type:"focusSearch"}),[dispatch]),submitSearch=useCallback17(()=>{searchExitHandled.current=!0,dispatch({type:"submitSearch"})},[dispatch]),cancelSearch=useCallback17(()=>{searchExitHandled.current=!0,dispatch({type:"cancelSearch"})},[dispatch]),handleSearchBlur=useCallback17(()=>{if(searchExitHandled.current){searchExitHandled.current=!1;return}dispatch({type:"handleSearchBlur"})},[dispatch]),data=useMemo11(()=>states.get(key)??initialSlice(key,initialSelectedProjects),[states,key,initialSelectedProjects]),active=useMemo11(()=>({...data,entries:data.entriesSource===null||data.entriesSource===source?data.entries:[],selected:data.entriesSource===null||data.entriesSource===source?data.selected:0,key,source,dispatch,focusSearch,submitSearch,cancelSearch,handleSearchBlur}),[data,key,source,dispatch,focusSearch,submitSearch,cancelSearch,handleSearchBlur]),resetOrgScoped=useCallback17((selectedProjects=[])=>{storeDispatch({type:"resetOrgScoped",projects:[...selectedProjects]})},[]),seed=useCallback17((target,values)=>{storeDispatch({type:"seed",key:target,values})},[]),snapshots=useMemo11(()=>{let result={};for(let[snapshotKey,state]of states){if(snapshotKey===UNREGISTERED_KEY)continue;result[snapshotKey]={source:state.entriesSource,selected:state.selected,query:state.committedQuery,sort:state.sort,statsPeriod:state.statsPeriod,selectedProjects:[...state.selectedProjects],selectedEnvs:[...state.selectedEnvs],detailOpen:state.detailOpen}}return result},[states]);return{active,resetOrgScoped,seed,snapshots}}import{useMemo as useMemo14}from"h:0__";import{useCallback as useCallback18,useEffect as useEffect19,useMemo as useMemo12,useState as useState20}from"h:0__";var prebuiltDashboards_generated_default={source:{repository:"https://github.com/getsentry/sentry",revision:"f0ee5b0fd4164ac63f118461255fb0f74fcd56e9",path:"static/app/views/dashboards/utils/prebuiltConfigs.tsx"},dashboards:{"1":{title:"Frontend Session Health",description:"Monitor browser session health by user and session.",widgets:[{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"issues",title:"Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"",columns:["issue","project","title"],aggregates:[],orderby:"",fields:["issue","project","title"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"unhealthy-sessions",title:"Unhealthy Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["unhealthy_rate(session)"],orderby:"",fields:["unhealthy_rate(session)"]}],interval:"5m",layout:{x:0,y:2,w:3,h:3,minH:2}},{id:"user-health",title:"User Health",displayType:"area",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["abnormal_rate(user)","crash_rate(user)","errored_rate(user)","unhandled_rate(user)"],orderby:"",fields:["abnormal_rate(user)","crash_rate(user)","errored_rate(user)","unhandled_rate(user)"]}],interval:"5m",layout:{x:3,y:2,w:3,h:3,minH:2}},{id:"session-health",title:"Session Health",displayType:"area",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["abnormal_rate(session)","crash_rate(session)","errored_rate(session)","unhandled_rate(session)"],orderby:"",fields:["abnormal_rate(session)","crash_rate(session)","errored_rate(session)","unhandled_rate(session)"]}],interval:"5m",layout:{x:0,y:5,w:2,h:3,minH:2}},{id:"session-counts",title:"Session Counts",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["session.status"],aggregates:["sum(session)"],orderby:"",fields:["session.status","sum(session)"]}],interval:"5m",layout:{x:2,y:5,w:2,h:3,minH:2}},{id:"user-counts",title:"User Counts",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["session.status"],aggregates:["count_unique(user)"],orderby:"",fields:["session.status","count_unique(user)"]}],interval:"5m",layout:{x:4,y:5,w:2,h:3,minH:2}}]},"2":{title:"Queries",description:"Track database query throughput and duration, with per-query drill-downs.",widgets:[{id:"throughput",title:"Queries Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{y:0,w:3,h:2,x:0,minH:2}},{id:"duration",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{y:0,w:3,h:2,x:3,minH:2}},{id:"queries-table",title:"Queries List",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["epm()","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","epm()","avg(span.duration)","sum(span.duration)"],fieldAliases:["Query Description","Queries Per Minute","Avg Duration","Time Spent"]}],interval:"5m",layout:{y:2,w:6,h:6,x:0,minH:2}}]},"3":{title:"Query Details",description:"",widgets:[{id:"metrics-throughput",title:"Queries Per Minute",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"",fields:["epm()"]}],interval:"1h",layout:{y:0,x:2,h:1,w:2,minH:1}},{id:"metrics-duration",title:"Average Duration",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"",fields:["avg(span.duration)"]}],interval:"1h",layout:{y:0,x:0,h:1,w:2,minH:1}},{id:"metrics-time-spent",title:"Time Spent",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["sum(span.duration)"],orderby:"",fields:["sum(span.duration)"]}],interval:"1h",layout:{y:0,x:4,h:1,w:2,minH:1}},{id:"example-query",title:"Example Query",description:"",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["id","span.op","span.group","span.description","span.category"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category"],fieldAliases:[]}],interval:"1h",limit:1,layout:{y:1,x:0,h:2,w:6,minH:2}},{id:"transactions-with-query",title:"Transactions with Query",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["transaction"],aggregates:["epm()","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","epm()","sum(span.duration)"],fieldAliases:["Found In","Queries Per Minute","Time Spent"]}],interval:"1h",layout:{y:5,x:0,h:2,w:6,minH:2}},{id:"metrics-throughput-line",title:"Queries Per Minute",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"],fieldAliases:[]}],interval:"1h",layout:{y:3,x:0,h:2,w:3,minH:2}},{id:"metrics-duration-line",title:"Average Duration",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{y:3,x:3,h:2,w:3,minH:2}}]},"4":{title:"Outbound API Requests",description:"Track HTTP client request performance.",widgets:[{id:"throughput-chart",title:"Requests Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"duration-chart",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"response-codes-chart",title:"Response Codes (3XX, 4XX, 5XX)",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"domain-table",title:"Domains",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["span.domain","project"],aggregates:["epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["span.domain","project","epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],fieldAliases:["Domain","Project","Requests Per Minute","3XXs","4XXs","5XXs","Avg Duration","Time Spent"]}],interval:"5m",layout:{x:0,y:2,minH:2,h:4,w:6}}]},"5":{title:"Domain Details",description:"",widgets:[{id:"domain-widget",title:"Domain",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["id","span.op","span.group","span.description","span.category"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,minH:1,h:1,w:6}},{id:"throughput-big-number",title:"Requests Per Minute",displayType:"big_number",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:1,w:1,h:1,minH:1}},{id:"duration-big-number",title:"Average Duration",displayType:"big_number",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:1,y:1,w:1,h:1,minH:1}},{id:"3xx-percentage-big-number",title:"3XX",displayType:"big_number",widgetType:"spans",queries:[{name:"3XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)"]}],interval:"5m",layout:{x:2,y:1,w:1,h:1,minH:1}},{id:"4xx-percentage-big-number",title:"4XX",displayType:"big_number",widgetType:"spans",queries:[{name:"4XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,400,499) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,400,499) / count(span.duration)",fields:["equation|count_if(span.status_code,between,400,499) / count(span.duration)"]}],interval:"5m",layout:{x:3,y:1,w:1,h:1,minH:1}},{id:"5xx-percentage-big-number",title:"5XX",displayType:"big_number",widgetType:"spans",queries:[{name:"5XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,500,599) / count(span.duration)",fields:["equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:1,w:1,h:1,minH:1}},{id:"time-spent-big-number",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"Time Spent",conditions:"span.op:http.client",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:1,w:1,h:1,minH:1}},{id:"throughput-chart",title:"Requests Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:2,w:2,h:2,minH:2}},{id:"duration-chart",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:2,w:2,h:2,minH:2}},{id:"response-codes-chart",title:"Response Codes (3XX, 4XX, 5XX)",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:2,w:2,h:2,minH:2}},{id:"transactions-table",title:"Transactions Making Requests to This Domain",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["transaction"],aggregates:["epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],fieldAliases:["Found In","Requests Per Minute","3XXs","4XXs","5XXs","Avg Duration","Time Spent"]}],interval:"5m",layout:{x:0,y:4,minH:2,h:5,w:6}}]},"6":{title:"Web Vitals",description:"Track real-user Web Vitals, ranked by improvement opportunity.",widgets:[{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{y:0,w:2,h:2,x:0,minH:2}},{id:"score-breakdown-chart",title:"Score Breakdown",description:"Each Web Vital score contributes a different amount to the total score. Refer to the Performance Score wheel for total contribution.",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:4,h:2,x:2,minH:2}},{id:"lcp-p75-meter",title:"P75 Largest Contentful Paint",description:"Time to render the largest item in the viewport. Bad LCP frustrates users because the website feels slow to load.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.lcp.value)"],orderby:"",fields:["p75(browser.web_vital.lcp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:0,minH:1}},{id:"inp-p75-meter",title:"P75 Interaction to Next Paint",description:"Latency between user input and visual response. Bad INP makes users feel like the site is laggy, outdated, and unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.inp.value)"],orderby:"",fields:["p75(browser.web_vital.inp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:1,minH:1}},{id:"cls-p75-meter",title:"P75 Cumulative Layout Shift",description:"Measures content 'shifting' during load. Bad CLS indicates a janky website, degrading UX and trust.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.cls.value)"],orderby:"",fields:["p75(browser.web_vital.cls.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:0,minH:1}},{id:"ttfb-p75-meter",title:"P75 Time to First Byte",description:"Time until first byte is delivered to the client. Bad TTFB makes the server feel unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.ttfb.value)"],orderby:"",fields:["p75(browser.web_vital.ttfb.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:1,minH:1}},{id:"issues-table",title:"Web Vital Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"issue.type:[web_vitals,performance_render_blocking_asset_span,performance_uncompressed_assets,performance_http_overhead,performance_consecutive_http,performance_n_plus_one_api_calls,performance_large_http_payload,performance_p95_endpoint_regression]",columns:["issue","assignee","title"],aggregates:[],orderby:"date",fields:["issue","assignee","title"]}],interval:"5m",layout:{y:2,w:4,h:2,x:2,minH:2}},{id:"pages-table",title:"Pages",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["transaction","project","count()","p75(browser.web_vital.lcp.value)","p75(browser.web_vital.fcp.value)","p75(browser.web_vital.cls.value)","p75(browser.web_vital.ttfb.value)","p75(browser.web_vital.inp.value)","performance_score(measurements.score.total)","opportunity_score(measurements.score.total)"],aggregates:[],orderby:"-opportunity_score(measurements.score.total)",fields:["transaction","project","count()","p75(browser.web_vital.lcp.value)","p75(browser.web_vital.fcp.value)","p75(browser.web_vital.cls.value)","p75(browser.web_vital.ttfb.value)","p75(browser.web_vital.inp.value)","performance_score(measurements.score.total)","opportunity_score(measurements.score.total)"],fieldAliases:["Pages","Project","Pageloads","LCP","FCP","CLS","TTFB","INP","Perf Score","Opportunity"]}],interval:"5m",layout:{y:4,w:6,h:6,x:0,minH:2}}]},"7":{title:"Web Vitals Page Summary",description:"",widgets:[{id:"score-breakdown-chart",title:"Score Breakdown",description:"Each Web Vital score contributes a different amount to the total score. Refer to the Performance Score wheel for total contribution.",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:5,h:2,x:0,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"The overall performance rating of this page.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:1,h:2,x:5,minH:2}},{id:"lcp-p75-meter",title:"P75 Largest Contentful Paint",description:"Time to render the largest item in the viewport. Bad LCP frustrates users because the website feels slow to load.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.lcp.value)"],orderby:"",fields:["p75(browser.web_vital.lcp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:0,minH:1}},{id:"inp-p75-meter",title:"P75 Interaction to Next Paint",description:"Latency between user input and visual response. Bad INP makes users feel like the site is laggy, outdated, and unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.inp.value)"],orderby:"",fields:["p75(browser.web_vital.inp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:1,minH:1}},{id:"cls-p75-meter",title:"P75 Cumulative Layout Shift",description:"Measures content 'shifting' during load. Bad CLS indicates a janky website, degrading UX and trust.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.cls.value)"],orderby:"",fields:["p75(browser.web_vital.cls.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:0,minH:1}},{id:"ttfb-p75-meter",title:"P75 Time to First Byte",description:"Time until first byte is delivered to the client. Bad TTFB makes the server feel unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.ttfb.value)"],orderby:"",fields:["p75(browser.web_vital.ttfb.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:1,minH:1}},{id:"issues-table",title:"Web Vital Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"issue.type:[web_vitals,performance_render_blocking_asset_span,performance_uncompressed_assets,performance_http_overhead,performance_consecutive_http,performance_n_plus_one_api_calls,performance_large_http_payload,performance_p95_endpoint_regression]",columns:["issue","assignee","title"],aggregates:[],orderby:"date",fields:["issue","assignee","title"]}],interval:"5m",layout:{y:2,w:3,h:2,x:2,minH:2}},{id:"lcp-samples-table",title:"LCP Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.lcp.value",columns:["project","trace","browser.web_vital.lcp.element","browser.web_vital.lcp.value","profile.id","replay.id","measurements.score.ratio.lcp","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.lcp.element","browser.web_vital.lcp.value","profile.id","replay.id","measurements.score.ratio.lcp","timestamp"]}],interval:"5m",layout:{y:6,w:5,h:2,x:0,minH:2}},{id:"inp-samples-table",title:"INP Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.inp.value",columns:["project","trace","browser.web_vital.inp.value","profile.id","replay.id","measurements.score.ratio.inp","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.inp.value","profile.id","replay.id","measurements.score.ratio.inp","timestamp"]}],interval:"5m",layout:{y:8,w:5,h:2,x:0,minH:2}},{id:"cls-samples-table",title:"CLS Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.cls.value",columns:["project","trace","browser.web_vital.cls.value","profile.id","replay.id","measurements.score.ratio.cls","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.cls.value","profile.id","replay.id","measurements.score.ratio.cls","timestamp"]}],interval:"5m",layout:{y:10,w:5,h:2,x:0,minH:2}},{id:"pageloads-chart",title:"Pageloads",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:pageload",columns:[],aggregates:["count()"],orderby:"",fields:["count()"]}],interval:"5m",layout:{y:2,w:1,h:2,x:5,minH:2}},{id:"interactions-chart",title:"Interactions",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press]",columns:[],aggregates:["count()"],orderby:"",fields:["count()"]}],interval:"5m",layout:{y:4,w:1,h:2,x:5,minH:2}}]},"8":{title:"Mobile Vitals",description:"Track key mobile performance metrics, including Time-to-Initial-Display.",widgets:[{id:"cold-start-big-number",title:"Average Cold App Start",description:"Average cold app start duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:0,y:0,w:1,minH:1}},{id:"warm-start-big-number",title:"Average Warm App Start",description:"Average warm app start duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:1,y:0,w:1,minH:1}},{id:"avg-ttid-big-number",title:"Average TTID",description:"Average time to initial display",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"",fields:["avg(app.vitals.ttid.value)"]}],interval:"1h",layout:{h:1,x:2,y:0,w:1,minH:1}},{id:"avg-ttfd-big-number",title:"Average TTFD",description:"Average time to full display",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"",fields:["avg(app.vitals.ttfd.value)"]}],interval:"1h",layout:{h:1,x:3,y:0,w:1,minH:1}},{id:"slow-frame-rate-big-number",title:"Slow Frame Rate",description:"Percentage of slow frames across screen load transactions, calculated as total slow frames divided by total frames.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["sum(app.vitals.frames.slow.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.slow.count) / sum(app.vitals.frames.total.count)"],orderby:"",fields:["sum(app.vitals.frames.slow.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.slow.count) / sum(app.vitals.frames.total.count)"],selectedAggregate:2}],interval:"1h",layout:{h:1,x:0,y:1,w:1,minH:1}},{id:"frozen-frame-rate-big-number",title:"Frozen Frame Rate",description:"Percentage of frozen frames across screen load transactions, calculated as total frozen frames divided by total frames.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["sum(app.vitals.frames.frozen.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count) / sum(app.vitals.frames.total.count)"],orderby:"",fields:["sum(app.vitals.frames.frozen.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count) / sum(app.vitals.frames.total.count)"],selectedAggregate:2}],interval:"1h",layout:{h:1,x:1,y:1,w:1,minH:1}},{id:"avg-frame-delay-big-number",title:"Average Frame Delay",description:"Average frame delay",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["avg(app.vitals.frames.delay.value)"],orderby:"",fields:["avg(app.vitals.frames.delay.value)"]}],interval:"1h",layout:{h:1,x:2,y:1,w:1,minH:1}},{id:"crash-free-session-rate-big-number",title:"Crash Free Session Rate",description:"Percentage of sessions that did not crash. Based on session data, so span filters do not apply.",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"1h",layout:{h:1,x:3,y:1,w:1,minH:1}},{id:"about-this-page-text",title:"About this page",description:`Top-level metrics show your app's health. When one looks off, use the tables below to find the screens responsible, then drill in to investigate.
|
|
15
16
|
|
|
16
17
|
App start metrics only count launches that open the app UI, not background starts.
|
|
17
18
|
|
|
18
|
-
See the [Mobile Vitals docs](https://docs.sentry.io/product/insights/mobile/mobile-vitals/) for more information.`,displayType:"text",queries:[],interval:"1h",layout:{h:2,x:4,y:0,w:2,minH:2}},{id:"app-start-table",title:"App Starts",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.start.cold.value OR span.op:app.start.cold has:app.vitals.start.cold.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.start.warm.value OR span.op:app.start.warm has:app.vitals.start.warm.value)) has:transaction",columns:["transaction"],aggregates:["avg(app.vitals.start.cold.value)","avg(app.vitals.start.warm.value)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","avg(app.vitals.start.cold.value)","avg(app.vitals.start.warm.value)","count_unique(transaction.span_id)"],fieldAliases:["Screen","Avg Cold Start","Avg Warm Start","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:2,w:6,minH:2}},{id:"screen-load-table",title:"Screen Loads",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)) has:transaction",columns:["transaction"],aggregates:["avg(app.vitals.ttid.value)","avg(app.vitals.ttfd.value)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","avg(app.vitals.ttid.value)","avg(app.vitals.ttfd.value)","count_unique(transaction.span_id)"],fieldAliases:["Screen","Avg TTID","Avg TTFD","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:5,w:6,minH:2}},{id:"screen-rendering-table",title:"Screen Rendering",description:"Frame rates are weighted across screen load transactions using total frame counts.",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count has:transaction",columns:["transaction"],aggregates:["equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","count_unique(transaction.span_id)"],fieldAliases:["Transaction","Slow Frame %","Frozen Frame %","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:8,w:6,minH:2}}]},"9":{title:"Mobile Vitals App Starts",description:"",widgets:[{id:"avg-cold-starts-big-number",title:"Average Cold Start",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.cold.value OR span.op:app.start.cold has:app.vitals.start.cold.value)",columns:[],aggregates:["avg(app.vitals.start.cold.value)"],orderby:"",fields:["avg(app.vitals.start.cold.value)"]}],interval:"1h",layout:{h:1,x:0,y:0,w:1,minH:1}},{id:"avg-warm-starts-big-number",title:"Average Warm Start",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.warm.value OR span.op:app.start.warm has:app.vitals.start.warm.value)",columns:[],aggregates:["avg(app.vitals.start.warm.value)"],orderby:"",fields:["avg(app.vitals.start.warm.value)"]}],interval:"1h",layout:{h:1,x:3,y:0,w:1,minH:1}},{id:"total-cold-start-count-big-number",title:"Cold Start Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.cold.value OR span.op:app.start.cold has:app.vitals.start.cold.value)",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:1,y:0,w:1,minH:1}},{id:"total-warm-start-count-big-number",title:"Warm Start Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.warm.value OR span.op:app.start.warm has:app.vitals.start.warm.value)",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:4,y:0,w:1,minH:1}},{id:"avg-cold-start-line",title:"Average Cold Start",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.cold.value OR span.op:app.start.cold has:app.vitals.start.cold.value)",columns:[],aggregates:["avg(app.vitals.start.cold.value)"],orderby:"-avg(app.vitals.start.cold.value)",fields:["avg(app.vitals.start.cold.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:0,y:1,w:3,minH:2}},{id:"avg-warm-start-line",title:"Average Warm Start",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.warm.value OR span.op:app.start.warm has:app.vitals.start.warm.value)",columns:[],aggregates:["avg(app.vitals.start.warm.value)"],orderby:"-avg(app.vitals.start.warm.value)",fields:["avg(app.vitals.start.warm.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:3,y:1,w:3,minH:2}},{id:"cold-start-device-distribution-bar",title:"Cold Start Device Distribution",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.cold.value OR span.op:app.start.cold has:app.vitals.start.cold.value)",columns:["device.class"],aggregates:["avg(app.vitals.start.cold.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.start.cold.value)"]}],interval:"1h",layout:{h:2,x:0,y:3,w:3,minH:2}},{id:"warm-start-device-distribution-bar",title:"Warm Start Device Distribution",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation,app.start] has:app.vitals.start.warm.value OR span.op:app.start.warm has:app.vitals.start.warm.value)",columns:["device.class"],aggregates:["avg(app.vitals.start.warm.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.start.warm.value)"]}],interval:"1h",layout:{h:2,x:3,y:3,w:3,minH:2}},{id:"cold-operations-table",title:"Cold Start Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'(!span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:span.description transaction.op:[ui.load,navigation] has:ttid app_start_type:cold span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true ((has:span.description !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render") OR (has:span.name !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render")) app.vitals.start.type:cold span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load])',columns:["span.op","span.name","span.description"],aggregates:["avg(span.self_time)"],orderby:"-avg(span.self_time)",fields:["span.op","span.name","span.description","avg(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","Avg"]}],interval:"1h",layout:{h:6,x:0,y:5,w:3,minH:2}},{id:"warm-operations-table",title:"Warm Start Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'(!span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:span.description transaction.op:[ui.load,navigation] has:ttid app_start_type:warm span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true ((has:span.description !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render") OR (has:span.name !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render")) app.vitals.start.type:warm span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load])',columns:["span.op","span.name","span.description"],aggregates:["avg(span.self_time)"],orderby:"-avg(span.self_time)",fields:["span.op","span.name","span.description","avg(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","Avg"]}],interval:"1h",layout:{h:6,x:3,y:5,w:3,minH:2}}]},"10":{title:"Mobile Vitals Screen Loads",description:"",widgets:[{id:"avg-ttid-big-number",title:"Average TTID",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"",fields:["avg(app.vitals.ttid.value)"]}],interval:"1h",layout:{h:1,x:0,y:0,w:2,minH:1}},{id:"avg-ttfd-big-number",title:"Average TTFD",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"",fields:["avg(app.vitals.ttfd.value)"]}],interval:"1h",layout:{h:1,x:2,y:0,w:2,minH:1}},{id:"total-count-big-number",title:"Total Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value))",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:4,y:0,w:2,minH:1}},{id:"average-ttid-line",title:"Average TTID",description:"",displayType:"line",widgetType:"spans",queries:[{name:"TTID",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"avg(app.vitals.ttid.value)",fields:["avg(app.vitals.ttid.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:0,y:1,w:2,minH:2}},{id:"average-ttfd-line",title:"Average TTFD",description:"",displayType:"line",widgetType:"spans",queries:[{name:"TTFD",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"avg(app.vitals.ttfd.value)",fields:["avg(app.vitals.ttfd.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:2,y:1,w:2,minH:2}},{id:"total-count-line",title:"Total Count",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value))",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"count_unique(transaction.span_id)",fields:["count_unique(transaction.span_id)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:4,y:1,w:2,minH:2}},{id:"ttid-device-class-bar",title:"TTID by Device Class",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:["device.class"],aggregates:["avg(app.vitals.ttid.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.ttid.value)"],fieldAliases:["Device Class","AVG TTID"]}],interval:"1h",layout:{h:2,x:0,y:3,w:2,minH:2}},{id:"ttfd-device-class-bar",title:"TTFD by Device Class",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:["device.class"],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.ttfd.value)"],fieldAliases:["Device Class","AVG TTFD"]}],interval:"1h",layout:{h:2,x:2,y:3,w:2,minH:2}},{id:"span-operations-table",title:"Span Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"transaction.op:[ui.load,navigation] (has:span.description OR has:span.name) span.op:[file.read,file.write,ui.load,navigation,http.client,db,db.sql.room,db.sql.query,db.sql.transaction]",columns:["span.op","span.name","span.description"],aggregates:["equation|ttid_contribution_rate()","equation|ttfd_contribution_rate()","avg(span.self_time)","sum(span.self_time)"],orderby:"-sum(span.self_time)",fields:["span.op","span.name","span.description","equation|ttid_contribution_rate()","equation|ttfd_contribution_rate()","avg(span.self_time)","sum(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","TTID Contribution Rate","TTFD Contribution Rate","Avg Self Time","Total Time Spent"]}],interval:"1h",layout:{h:4,x:0,y:5,w:6,minH:2}}]},"11":{title:"Mobile Vitals Screen Rendering",description:"",widgets:[{id:"span-operations-table",title:"Span Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"!is_transaction:true has:app.vitals.frames.total.count has:span.op",columns:["span.op","span.name","span.description"],aggregates:["equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","avg(app.vitals.frames.delay.value)"],orderby:"-avg(app.vitals.frames.delay.value)",fields:["span.op","span.name","span.description","equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","avg(app.vitals.frames.delay.value)"],fieldAliases:["Operation","Span Name","Span Description","Slow Frame %","Frozen Frame %","Delay"]}],interval:"1h",layout:{h:7,x:0,y:0,w:6,minH:2}}]},"12":{title:"Backend Overview",description:"Monitor backend services and dependencies, including caches and queues.",widgets:[{id:"requests-widget",title:"Requests",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Requests",conditions:"span.op:http.server",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:5,layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"jobs-chart",title:"Jobs",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"queries-by-time-spent-chart",title:"Queries by Time Spent",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","p75(span.duration)"],fieldAliases:[""]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"cache-miss-rates-chart",title:"Cache Miss Rates",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction"],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"-equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],fieldAliases:[""]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"backend-overview-transactions-table",title:"Transactions",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"( ( !span.op:pageload !span.op:navigation !span.op:ui.render !span.op:interaction !span.op:ui.action.swipe !span.op:ui.action.scroll !span.op:ui.action.click !span.op:ui.action !span.op:ui.load !span.op:app.lifecycle !span.op:ui.interaction !span.op:ui.interaction.click !span.op:ui.interaction.hover !span.op:ui.interaction.drag !span.op:ui.interaction.press !span.op:ui.webvital.cls !span.op:ui.webvital.lcp !span.op:ui.webvital.fcp ) OR ( span.op:http.server ) ) is_transaction:true",columns:["is_starred_transaction","request.method","transaction","span.op","project"],aggregates:["epm()","p50(span.duration)","p95(span.duration)","equation|failure_count() / count(span.duration)","count_unique(user)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["is_starred_transaction","request.method","transaction","span.op","project","epm()","p50(span.duration)","p95(span.duration)","equation|failure_count() / count(span.duration)","count_unique(user)","sum(span.duration)"],fieldAliases:["","HTTP Method","Transaction","Operation","Project","TPM","P50","P95","Failure rate","Users","Time Spent"]}],interval:"5m",layout:{x:0,w:6,h:6,minH:2,y:7}}]},"13":{title:"Mobile Session Health",description:"Monitor mobile session health by user and session.",widgets:[{id:"crash-free-sessions",title:"Crash Free Sessions",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:1,minH:1}},{id:"crash-free-users",title:"Crash Free Users",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(user)"],orderby:"",fields:["crash_free_rate(user)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:1,minH:1}},{id:"anr-rate",title:"ANR / App Hang Rate",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["anr_rate()"],orderby:"",fields:["anr_rate()"]}],interval:"5m",layout:{x:4,y:0,w:2,h:1,minH:1}},{id:"crash-free-session-line-chart",title:"Crash Free Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"5m",layout:{x:0,y:1,w:3,h:2,minH:2}},{id:"crash-free-user-line-chart",title:"Crash Free Users",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(user)"],orderby:"",fields:["crash_free_rate(user)"]}],interval:"5m",layout:{x:3,y:1,w:3,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:4,w:3,h:2,minH:2}},{id:"total-sessions",title:"Total Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(session)"],orderby:"",fields:["sum(session)"]}],interval:"5m",layout:{x:3,y:4,w:3,h:2,minH:2}},{id:"crash-rate-table",title:"Crash Free Rate by Project",displayType:"table",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["project"],aggregates:["crash_free_rate(session)"],orderby:"crash_free_rate(session)",fields:["project","crash_free_rate(session)"],fieldAliases:["Project","Crash Free Rate"]}],interval:"5m",layout:{x:0,y:6,w:6,h:2,minH:2}},{id:"release-table",title:"Releases",displayType:"table",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["project","release"],aggregates:["crash_free_rate(session)","sum(session)"],orderby:"-release",fields:["project","release","crash_free_rate(session)","sum(session)"],fieldAliases:["Project","Release","Crash Free Rate","Total Sessions"]}],interval:"5m",layout:{x:0,y:8,w:6,h:3,minH:2}}]},"14":{title:"Frontend Overview",description:"Monitor frontend errors and performance telemetry.",widgets:[{id:"throughput-widget",title:"Transaction Throughput",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"( span.op:[pageload,navigation,ui.render,interaction] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] ) !span.op:http.server is_transaction:true",columns:[],aggregates:["epm()"],orderby:"-epm()",fields:["epm()"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"duration-widget",title:"Transaction Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"( span.op:[pageload,navigation,ui.render,interaction] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] ) !span.op:http.server is_transaction:true",columns:[],aggregates:["p50(span.duration)","p75(span.duration)","p95(span.duration)"],orderby:"-p50(span.duration)",fields:["p50(span.duration)","p75(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"assets-by-time-spent-widget",title:"Assets by Time Spent",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:'has:sentry.normalized_description has:sentry.normalized_description !sentry.normalized_description:"browser-extension://*" ( span.op:resource.script OR file_extension:css OR file_extension:[woff,woff2,ttf,otf,eot] OR file_extension:[jpg,jpeg,png,gif,svg,webp,apng,avif] OR span.op:resource.img )',columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["p75(span.duration)"]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"network-requests-by-time-spent-widget",title:"Network Requests by Time Spent",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:http",columns:["span.domain"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["p75(span.duration)"]}],interval:"5m",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"frontend-overview-table",title:"Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"!span.op:http.server ( span.op:[pageload,navigation,ui.render,interaction,ui.render,interaction,ui.interaction,ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,ui.webvital.fcp,pageload] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] )",columns:["is_starred_transaction","transaction","project"],aggregates:["equation|tpm()","equation|p50_if(span.duration,is_transaction,equals,true)","equation|p75_if(span.duration,is_transaction,equals,true)","equation|p95_if(span.duration,is_transaction,equals,true)","equation|failure_rate_if(is_transaction,equals,true)","count_unique(user)","equation|sum_if(span.duration,is_transaction,equals,true)","performance_score(measurements.score.total)"],orderby:"-equation|sum_if(span.duration,is_transaction,equals,true)",fields:["is_starred_transaction","transaction","project","equation|tpm()","equation|p50_if(span.duration,is_transaction,equals,true)","equation|p75_if(span.duration,is_transaction,equals,true)","equation|p95_if(span.duration,is_transaction,equals,true)","equation|failure_rate_if(is_transaction,equals,true)","count_unique(user)","equation|sum_if(span.duration,is_transaction,equals,true)","performance_score(measurements.score.total)"],fieldAliases:["","Transaction","Project","TPM","P50","P75","P95","Failure Rate","Users","Time Spent","Performance Score"]}],interval:"5m",layout:{x:0,y:7,w:6,h:6,minH:2}}]},"15":{title:"Next.js Overview",description:"Monitor frontend and SSR performance for Next.js applications.",widgets:[{id:"pageloads-widget",title:"Pageloads",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:pageload",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"rage-and-dead-clicks-widget",title:"Rage and Dead Clicks",description:"Visualizes the rage and dead clicks in your frontend project.",displayType:"rage_and_dead_clicks",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"5m",layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"slow-ssr-widget",title:"Slow SSR",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:function.nextjs",columns:["span.description"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["span.description","avg(span.duration)"]}],interval:"5m",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"client-transactions-table",title:"Client Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[ui.render,interaction,ui.interaction,ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,ui.webvital.fcp,pageload,navigation,default] !span.op:http.server is_transaction:true !sentry.origin:auto.db.* !sentry.origin:auto",columns:["transaction","span.op","project"],aggregates:["count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","performance_score(measurements.score.total)"],orderby:"-count(span.duration)",fields:["transaction","project","span.op","count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","performance_score(measurements.score.total)"],fieldAliases:["Transaction","","Operation","Views","Error Rate","Avg","P95","Perf Score"]}],interval:"5m",layout:{x:0,y:5,w:6,h:3,minH:2}},{id:"server-transactions-table",title:"Server Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server is_transaction:true",columns:["transaction","project"],aggregates:["count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],orderby:"-count(span.duration)",fields:["transaction","project","count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],fieldAliases:["Transaction","","Views","Error Rate","Avg","P95","Time Spent"]}],interval:"5m",layout:{x:0,y:8,w:6,h:3,minH:2}},{id:"server-tree-widget",title:"SSR File Tree",description:"Visualizes the file tree of the server-rendered components in your Next.js project.",displayType:"server_tree",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"5m",layout:{x:0,y:11,w:6,h:3,minH:3}}]},"16":{title:"AI Agents Overview",description:"Monitor AI agent workflows, model costs, token usage, and tool calls.",widgets:[{id:"ai-agents-overview-agent-runs",title:"Agent Runs",description:"Number of agent runs captured over time.",displayType:"bar",widgetType:"spans",queries:[{name:"Count",conditions:"gen_ai.operation.type:agent",columns:[],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)"],fieldAliases:["Count"]}],interval:"1h",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-estimated-cost",title:"Estimated Cost",description:"Estimated cost of LLM calls with token and model data.",displayType:"bar",widgetType:"spans",queries:[{name:"Cost",conditions:"gen_ai.operation.type:ai_client",columns:[],aggregates:["sum(gen_ai.cost.total_tokens)"],orderby:"-sum(gen_ai.cost.total_tokens)",fields:["sum(gen_ai.cost.total_tokens)"],fieldAliases:["Estimated Cost"]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-duration",title:"Duration",description:"Average and p95 duration for agent runs and LLM calls.",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:[agent, ai_client]",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"-avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:["Avg","P95"]}],interval:"1h",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-llm-calls-by-model",title:"LLM Calls by Model",description:"Number of LLM calls grouped by response model.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.response.model","count(span.duration)"],fieldAliases:["Model","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"ai-agents-overview-tokens-used",title:"Tokens Used",description:"Total tokens used by LLM calls, grouped by response model.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.usage.total_tokens)"],orderby:"-sum(gen_ai.usage.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.usage.total_tokens)"],fieldAliases:["Model","Total Tokens"]}],interval:"1h",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"ai-agents-overview-tool-calls",title:"Tool Calls",description:"Tool call volume grouped by tool name.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"ai-agents-traces-table",title:"Traces",description:"Agent traces with duration, token, cost, and tool usage.",displayType:"agents_traces_table",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"1h",limit:10,layout:{x:0,y:6,w:6,h:4,minH:2}}]},"17":{title:"AI Agents Model Details",description:"View AI agent token usage and costs by model.",widgets:[{id:"ai-agents-model-cost",title:"Model Cost",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.cost.total_tokens)"],orderby:"-sum(gen_ai.cost.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.cost.total_tokens)"],fieldAliases:["Model","Total Cost"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"ai-agents-token-usage",title:"Tokens Used",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.usage.total_tokens)"],orderby:"-sum(gen_ai.usage.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.usage.total_tokens)"],fieldAliases:["Model","Total Tokens"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"ai-agents-token-types",title:"Token Types",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:[],aggregates:["sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.input_tokens.cached)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.output_tokens.reasoning)"],orderby:"",fields:["sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.input_tokens.cached)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.output_tokens.reasoning)"],fieldAliases:["Input Tokens","Cached Input Tokens","Output Tokens","Reasoning Tokens"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"ai-agents-models-table",title:"Models",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)","sum(gen_ai.cost.total_tokens)","sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.input_tokens.cached)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.output_tokens.reasoning)"],orderby:"-count()",fields:["gen_ai.response.model","count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)","sum(gen_ai.cost.total_tokens)","sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.input_tokens.cached)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.output_tokens.reasoning)"],fieldAliases:["Model","Requests","Errors","Avg","P95","Cost","Input Tokens","Cached Tokens","Output Tokens","Reasoning Tokens"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"18":{title:"AI Agents Tool Details",description:"Track AI agent tool calls and error rates.",widgets:[{id:"ai-agents-tool-calls",title:"Tool Calls",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:3,h:3,minH:3}},{id:"ai-agents-tool-errors",title:"Tool Errors",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool span.status:[internal_error,error]",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Errors"]}],interval:"1h",limit:3,layout:{x:3,y:0,w:3,h:3,minH:3}},{id:"ai-agents-tools-table",title:"Tools",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.tool.name","count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Tool","Requests","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"19":{title:"MCP Overview",description:"Monitor MCP server usage and performance.",widgets:[{id:"mcp-overview-traffic",title:"Traffic",displayType:"bar",widgetType:"spans",queries:[{name:"Count",conditions:"span.op:mcp.server",columns:[],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)"],fieldAliases:["Count"]}],interval:"1h",layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-traffic-by-client",title:"Traffic by Client",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server",columns:["mcp.client.name"],aggregates:["count()"],orderby:"-count()",fields:["mcp.client.name","count()"],fieldAliases:["Client","Count"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-transport-distribution",title:"Transport Distribution",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.transport",columns:["mcp.transport"],aggregates:["count()"],orderby:"-count()",fields:["mcp.transport","count()"],fieldAliases:["Transport","Count"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-tools",title:"Most Used Tools",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.tool.name",columns:["mcp.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.tool.name","count(span.duration)"],fieldAliases:["Tool","Count"]}],interval:"1h",limit:3,layout:{x:0,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-resources",title:"Most Used Resources",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.resource.uri","count(span.duration)"],fieldAliases:["Resource","Count"]}],interval:"1h",limit:3,layout:{x:2,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-prompts",title:"Most Used Prompts",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.prompt.name",columns:["mcp.prompt.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.prompt.name","count(span.duration)"],fieldAliases:["Prompt","Count"]}],interval:"1h",limit:3,layout:{x:4,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-table",title:"MCP Overview",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server",columns:["span.description"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["span.description","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Span Description","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:6,w:6,h:4,minH:2}}]},"20":{title:"MCP Tool Details",description:"Track MCP tool call latency, frequency, and error rates.",widgets:[{id:"mcp-tools-most-used-tools",title:"Most Used Tools",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.tool.name",columns:["mcp.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-slowest-tools",title:"Slowest Tools",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.tool.name",columns:["mcp.tool.name"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["mcp.tool.name","avg(span.duration)"],fieldAliases:["Tool","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-most-failing-tools",title:"Most Failing Tools",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.tool.name",columns:["mcp.tool.name"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["mcp.tool.name","failure_rate()"],fieldAliases:["Tool","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-table",title:"Tools",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.tool.name",columns:["mcp.tool.name"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["mcp.tool.name","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Tool Name","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"21":{title:"MCP Resource Details",description:"Track MCP resource call latency, frequency, and error rates.",widgets:[{id:"mcp-resources-most-used-resources",title:"Most Used Resources",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.resource.uri","count(span.duration)"],fieldAliases:["Resource","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-slowest-resources",title:"Slowest Resources",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["mcp.resource.uri","avg(span.duration)"],fieldAliases:["Resource","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-most-failing-resources",title:"Most Failing Resources",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["mcp.resource.uri","failure_rate()"],fieldAliases:["Resource","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-table",title:"Resources",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["mcp.resource.uri","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Resource URI","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"22":{title:"MCP Prompt Details",description:"Track MCP prompt call latency, frequency, and error rates.",widgets:[{id:"mcp-prompts-most-used-prompts",title:"Most Used Prompts",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.prompt.name",columns:["mcp.prompt.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.prompt.name","count(span.duration)"],fieldAliases:["Prompt","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-slowest-prompts",title:"Slowest Prompts",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.prompt.name",columns:["mcp.prompt.name"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["mcp.prompt.name","avg(span.duration)"],fieldAliases:["Prompt","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-most-failing-prompts",title:"Most Failing Prompts",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.prompt.name",columns:["mcp.prompt.name"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["mcp.prompt.name","failure_rate()"],fieldAliases:["Prompt","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-table",title:"Prompts",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.prompt.name",columns:["mcp.prompt.name"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["mcp.prompt.name","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Prompt Name","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"23":{title:"Laravel Overview",description:"Monitor Laravel services and dependencies, including background jobs.",widgets:[{id:"requests-widget",title:"Requests",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Requests",conditions:"span.op:http.server",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:5,layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"jobs-chart",title:"Jobs",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"queries-by-time-spent-chart",title:"Queries by Time Spent",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","p75(span.duration)"],fieldAliases:[""]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"cache-miss-rates-chart",title:"Cache Miss Rates",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction"],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"-equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],fieldAliases:[""]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"paths-table",title:"Paths",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"transaction.op:http.server is_transaction:true",columns:["http.request.method","transaction"],aggregates:["count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)","count_unique(user)"],orderby:"-count()",fields:["http.request.method","transaction","count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)","count_unique(user)"],fieldAliases:["Method","Path","Requests","Error Rate","Avg","P95","Time Spent","Users"]}],interval:"5m",layout:{x:0,y:7,w:6,h:3,minH:2}},{id:"commands-table",title:"Commands",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:console.command*",columns:["command"],aggregates:["count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],orderby:"-count()",fields:["command","count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],fieldAliases:["Command","Invocations","Error Rate","Avg","P95","Time Spent"]}],interval:"5m",layout:{x:0,y:10,w:6,h:3,minH:2}},{id:"jobs-table",title:"Jobs",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:["messaging.destination.name","transaction"],aggregates:["count()","failure_rate()","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","sum(span.duration)"],orderby:"-count()",fields:["transaction","messaging.destination.name","count()","failure_rate()","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Job","Queue Name","Processed","Error Rate","Avg Time in Queue","Avg Processing Time","Time Spent"]}],interval:"5m",layout:{x:0,y:13,w:6,h:3,minH:2}}]},"24":{title:"Frontend Assets",description:"Track JS, CSS, and image asset performance, with per-resource drill-downs.",widgets:[{id:"requests-per-min-widget",title:"Requests per Minute",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"average-duration-widget",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"assets-table",title:"Assets",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["epm()","avg(span.duration)","sum(span.duration)","avg(http.response_content_length)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","epm()","avg(span.duration)","sum(span.duration)","avg(http.response_content_length)"],fieldAliases:["Asset description","Requests per Minute","Avg","Time Spent","Avg Encoded Size"]}],interval:"5m",layout:{x:0,y:2,w:6,h:6,minH:2}}]},"25":{title:"Frontend Assets Summary",description:"",widgets:[{id:"domain-widget",title:"Example Asset",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"",columns:["id","span.op","span.group","span.description","span.category","project.id"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category","project.id"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,minH:2,h:2,w:6}},{id:"request-per-min-big-number",title:"Requests per Minute",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:2,w:1,h:1,minH:1}},{id:"average-encoded-size-big-number",title:"Average Encoded Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.response_content_length)"],orderby:"avg(http.response_content_length)",fields:["avg(http.response_content_length)"]}],interval:"5m",layout:{x:1,y:2,w:1,h:1,minH:1}},{id:"average-decoded-size-big-number",title:"Average Decoded Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.decoded_response_content_length)"],orderby:"avg(http.decoded_response_content_length)",fields:["avg(http.decoded_response_content_length)"]}],interval:"5m",layout:{x:2,y:2,w:1,h:1,minH:1}},{id:"average-transfer-size-big-number",title:"Average Transfer Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.response_transfer_size)"],orderby:"avg(http.response_transfer_size)",fields:["avg(http.response_transfer_size)"]}],interval:"5m",layout:{x:3,y:2,w:1,h:1,minH:1}},{id:"average-duration-big-number",title:"Average Duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:4,y:2,w:1,h:1,minH:1}},{id:"time-spent-big-number",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:2,w:1,h:1,minH:1}},{id:"requests-per-min-widget",title:"Requests per Minute",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:3,w:2,h:2,minH:2}},{id:"average-duration-widget",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:3,w:2,h:2,minH:2}},{id:"average-asset-size-widget",title:"Average Asset Size",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.decoded_response_content_length)","avg(http.response_transfer_size)","avg(http.response_content_length)"],orderby:"avg(http.response_content_length)",fields:["avg(http.decoded_response_content_length)","avg(http.response_transfer_size)","avg(http.response_content_length)"],fieldAliases:["Avg Decoded Size","Avg Transfer Size","Avg Encoded Size"]}],interval:"5m",layout:{x:4,y:3,w:2,h:2,minH:2}},{id:"assets-table-widget",title:"Pages Containing This Asset",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"",columns:["transaction","resource.render_blocking_status"],aggregates:["epm()","avg(span.duration)","avg(http.response_content_length)"],orderby:"-epm()",fields:["transaction","epm()","avg(span.duration)","avg(http.response_content_length)","resource.render_blocking_status"],fieldAliases:["Transaction","Requests per Minute","Avg","Avg Encoded Size","Render Blocking"]}],interval:"5m",layout:{x:0,y:5,minH:2,h:6,w:6}}]},"26":{title:"Queues",description:"Track message queue throughput, latency, and error rates.",widgets:[{id:"average-duration-widget",title:"Average Duration",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["avg(messaging.message.receive.latency)","avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(messaging.message.receive.latency)","avg(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Published vs Processed",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["span.op"],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"destination-table",title:"Destinations",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["messaging.destination.name"],aggregates:["avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["messaging.destination.name","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Destination","Avg time in queue","Avg processing time","Error rate","Published","Processed","Time spent"]}],interval:"5m",layout:{x:0,y:3,w:6,h:6,minH:2}}]},"27":{title:"Queue Summary",description:"",widgets:[{id:"avg-time-in-queue-widget",title:"Average Time in Queue",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["avg(messaging.message.receive.latency)"],orderby:"avg(messaging.message.receive.latency)",fields:["avg(messaging.message.receive.latency)"]}],interval:"5m",layout:{x:0,y:0,w:1,h:1,minH:1}},{id:"avg-processing-time-widget",title:"Average Processing Time",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|avg_if(span.duration,span.op,equals,queue.process)"],orderby:"equation|avg_if(span.duration,span.op,equals,queue.process)",fields:["equation|avg_if(span.duration,span.op,equals,queue.process)"]}],interval:"5m",layout:{x:1,y:0,w:1,h:1,minH:1}},{id:"error-rate-widget",title:"Error Rate",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))"],orderby:"equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))",fields:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))"]}],interval:"5m",layout:{x:2,y:0,w:1,h:1,minH:1}},{id:"published-widget",title:"Published",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|count_if(span.op,equals,queue.publish)"],orderby:"equation|count_if(span.op,equals,queue.publish)",fields:["equation|count_if(span.op,equals,queue.publish)"]}],interval:"5m",layout:{x:3,y:0,w:1,h:1,minH:1}},{id:"processed-widget",title:"Processed",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|count_if(span.op,equals,queue.process)"],orderby:"equation|count_if(span.op,equals,queue.process)",fields:["equation|count_if(span.op,equals,queue.process)"]}],interval:"5m",layout:{x:4,y:0,w:1,h:1,minH:1}},{id:"time-spent-widget",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:0,w:1,h:1,minH:1}},{id:"average-duration-widget",title:"Average Duration",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["avg(messaging.message.receive.latency)","avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(messaging.message.receive.latency)","avg(span.duration)"]}],interval:"5m",layout:{x:0,y:1,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Published vs Processed",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["span.op"],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:1,w:3,h:2,minH:2}},{id:"consumer-table",title:"Consumer Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:["transaction"],aggregates:["avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Transaction","Avg time in queue","Avg processing time","Error rate","Processed","Time spent"]}],interval:"5m",layout:{x:0,y:4,w:6,h:3,minH:3}},{id:"producer-table",title:"Producer Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.publish",columns:["transaction"],aggregates:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","sum(span.duration)"],fieldAliases:["Transaction","Error rate","Published","Time spent"]}],interval:"5m",layout:{x:0,y:7,w:6,h:3,minH:3}}]},"28":{title:"Caches",description:"Track cache hit rates, throughput, and latency.",widgets:[{id:"cache-hits-widget",title:"Miss Rate",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:[],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Throughput",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"transaction-table",title:"Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction","project"],aggregates:["avg(cache.item_size)","epm()","equation|count_if(cache.hit,equals,false) / count(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","project","avg(cache.item_size)","epm()","equation|count_if(cache.hit,equals,false) / count(span.duration)","sum(span.duration)"],fieldAliases:["Transaction","Project","Avg Value Size","Requests Per Minute","Miss Rate","Time Spent"]}],interval:"5m",layout:{x:0,y:3,w:6,h:6,minH:2}}]},"29":{title:"Node.js Runtime Metrics",description:"Track Node.js runtime metrics, including memory usage and event loop utilization.",widgets:[{id:"node-runtime-event-loop-utilization-kpi",title:"Event Loop Utilization",description:"Average fraction of time the Node.js event loop is active (0-100%) across the selected time range. High utilization means less capacity to handle new work and may indicate CPU-bound processing or blocking operations.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.event_loop.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.event_loop.utilization,gauge,none)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:1,minH:1}},{id:"node-runtime-cpu-utilization-kpi",title:"CPU Utilization",description:"Average CPU usage across all cores over the selected time range. Values above 1.0 (100%) are possible on multi-core systems. Sustained high utilization may indicate compute-bound workloads or insufficient scaling.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.cpu.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.cpu.utilization,gauge,none)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:1,minH:1}},{id:"node-runtime-process-uptime-kpi",title:"Process Uptime",description:"Total process uptime summed across instances. Sudden resets indicate process crashes or restarts. Useful for detecting instability and correlating with deployment events.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(value,node.runtime.process.uptime,counter,second)"],orderby:"",fields:["sum(value,node.runtime.process.uptime,counter,second)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:1,minH:1}},{id:"node-runtime-memory-usage",title:"Memory Usage",description:"Resident Set Size (RSS, total memory footprint), V8 heap total (allocated), and heap used (in-use). Growing RSS without matching heap growth may indicate native memory leaks. Heap used approaching heap total triggers more frequent garbage collection.",displayType:"area",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.mem.rss,gauge,byte)","avg(value,node.runtime.mem.heap_total,gauge,byte)","avg(value,node.runtime.mem.heap_used,gauge,byte)"],orderby:"",fields:["avg(value,node.runtime.mem.rss,gauge,byte)","avg(value,node.runtime.mem.heap_total,gauge,byte)","avg(value,node.runtime.mem.heap_used,gauge,byte)"]}],interval:"5m",layout:{x:0,y:1,w:6,h:2,minH:2}},{id:"node-runtime-cpu-utilization-over-time",title:"CPU Utilization Over Time",description:"CPU utilization trend over time. Correlate spikes with deployments, traffic changes, or event loop delay increases to identify compute-bound bottlenecks.",displayType:"line",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.cpu.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.cpu.utilization,gauge,none)"]}],interval:"5m",layout:{x:0,y:3,w:3,h:2,minH:2}},{id:"node-runtime-http-request-duration",title:"HTTP Request Duration",description:"Server-side HTTP request latency (p50 and p95). Compare with event loop delay and CPU utilization to determine if slow responses are caused by runtime bottlenecks or application logic.",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["p50(span.duration)","p95(span.duration)"],orderby:"",fields:["p50(span.duration)","p95(span.duration)"]}],interval:"5m",layout:{x:3,y:3,w:3,h:2,minH:2}}]}}};var hy=ky.dashboards;function Wi(e){if(e.prebuiltId==null)return e;let t=hy[e.prebuiltId];if(!t)return e;return{...e,description:e.description||t.description,widgetDisplay:e.widgetDisplay.length>0?e.widgetDisplay:t.widgets.map((r)=>r.displayType)}}function Ly(e){if(e.widgets.length>0||e.prebuiltId==null)return e;let t=hy[e.prebuiltId];return t?{...e,widgets:structuredClone(t.widgets)}:e}import{useCallback as V5,useEffect as Z5,useRef as Iy,useState as by}from"h:0__";function Kt(e,{reloadKey:t,resetKey:r}={}){let[H,n]=by(me),[o,s]=by(0),i=Iy(0),a=Iy(r),l=V5(()=>s((c)=>c+1),[]);return Z5(()=>{let c=new AbortController,A=++i.current,u=!Object.is(a.current,r);a.current=r;let d;try{d=e(c.signal)}catch(m){if(A===i.current&&!c.signal.aborted)n((g)=>Oe(u?void 0:g,Ne(m)));return()=>{i.current++,c.abort()}}if(d===null)return n(me),()=>{i.current++,c.abort()};return n((m)=>_e(u?void 0:m,Date.now())),d.then((m)=>{if(A===i.current&&!c.signal.aborted)n(ge(m,Date.now()))}).catch((m)=>{if(A===i.current&&!c.signal.aborted)n((g)=>Oe(g,Ne(m)))}),()=>{i.current++,c.abort()}},[e,t,r,o]),{status:H,refetch:l}}function wy(e,{org:t,filter:r,query:H="",sort:n,reloadToken:o=0}){let s=z5((a)=>{if(!e)return null;return fy(e,{org:t,filter:r,query:H,sort:n,signal:a}).then((l)=>({data:Array.isArray(l.data)?l.data.map(Wi):[],nextCursor:l.nextCursor}))},[e,t,r,H,n]),{status:i}=Kt(s,{reloadKey:o});return{dashboards:dt(i,(a)=>a.data),nextCursor:B(i)?.nextCursor??null}}function rq(e,{org:t,enabled:r,reloadToken:H=0}){let[n,o]=tq([]);return J5(()=>{if(!e||!r||!t){o([]);return}let s=new AbortController,i=!1;return Sy(e,{org:t,signal:s.signal}).then((a)=>{if(!i)o(a.map(Wi))}).catch(()=>{if(!i)o([])}),()=>{i=!0,s.abort()}},[e,t,r,H]),n}function xy(e,t,r,H){let n=rq(e,{org:t,enabled:r,reloadToken:H});return eq(()=>{if(n.length===0)return wr;return{sections:[{title:"Starred Dashboards",items:n.map((o)=>({label:o.title,target:{group:"dashboards",item:"All Dashboards"}}))}]}},[n])}import{useEffect as Hq,useRef as nq,useState as Ty}from"h:0__";function po(e,{org:t,source:r,starred:H,search:n,sort:o,limit:s,enabled:i=!0,reloadToken:a=0}){let[l,c]=Ty(me),[A,u]=Ty(null),d=nq(l);return d.current=l,Hq(()=>{if(!e||!i)return;let m=new AbortController,{signal:g}=m,p=!1;return c(_e(d.current,Date.now())),(async()=>{try{let O=await uy(e,r,{org:t,starred:H,search:n,sort:o,limit:s,signal:g});if(p)return;c(ge(O.data,Date.now())),u(O.nextCursor)}catch(O){if(p||g.aborted)return;c(Oe(d.current,Ne(O)))}})(),()=>{p=!0,m.abort()}},[e,t,r,H,n,o,s,i,a]),{queries:l,nextCursor:A}}import{useEffect as Zi,useMemo as Dy}from"h:0__";var oq={"explore.all-queries":{source:"explore",title:"All Queries",description:"Saved Explore queries for this organization.",noun:"saved queries",searchPlaceholder:"Search queries by name\u2026",activityLabel:"Last Viewed",emptyHint:"This organization may not have Explore saved queries enabled."},"explore.discover":{source:"discover",title:"Discover",description:"Legacy saved queries, superseded by All Queries.",noun:"Discover queries",searchPlaceholder:"Search queries by name\u2026",activityLabel:"Last Edited",emptyHint:"This organization may not have Discover enabled."}};function Fi(e){return oq[e]}var Ui="explore.saved-query-results";import{useRef as iq}from"h:0__";import{useEffect as sq}from"h:0__";function Py({index:e,rowCount:t,rowHeight:r,viewportHeight:H,scrollTop:n}){return BH({rowTop:e*r,rowHeight:r,contentHeight:t*r,viewportHeight:H,scrollTop:n})}function BH({rowTop:e,rowHeight:t,contentHeight:r,viewportHeight:H,scrollTop:n}){let o=Math.max(0,r-H),s=e+t,i=e<n||t>H?e:s>n+H?s-H:n;return Math.min(Math.max(i,0),o)}function gH(e,{index:t,rowCount:r,rowHeight:H,layout:n=[]}){let o,s,i;if(typeof H==="number")s=H,i=r*H;else{o=0;for(let a=0;a<t&&a<H.length;a++)o+=H[a]??0;s=H[t]??0,i=H.reduce((a,l)=>a+l,0)}sq(()=>{let a=e.current;if(!a||r===0)return;let l=a.viewport.height;if(l<=0)return;let c=o===void 0?Py({index:t,rowCount:r,rowHeight:s,viewportHeight:l,scrollTop:a.scrollTop}):BH({rowTop:o,rowHeight:s,contentHeight:i,viewportHeight:l,scrollTop:a.scrollTop});if(c!==a.scrollTop)a.scrollTop=c},[e,t,r,o,s,i,...n])}import{jsxDEV as Se,Fragment as Cy}from"h:6___________________________";var aq=2,cq=20;function qy(e){return Yi(e.contentHeight)+(e.renderDetail?1:0)+(e.separator?1:0)}function Yi(e){if(e===void 0||!Number.isFinite(e))return 1;return Math.max(1,Math.floor(e))}function nt({rows:e,columns:t,width:r,selectedIndex:H,focused:n,rowKey:o,loading:s=!1,error:i,onRowClick:a,renderDetail:l,rowContentHeight:c,skeletonContentHeight:A=1,separator:u=!1,skeletonRows:d=cq,empty:m,errorTitle:g="Failed to load",gap:p=1,minFlex:O,gutter:y=aq,layout:L=[]}){let f=S(),k=iq(null),I=Math.max(1,r-y),h=br(t,I,{gap:p,minFlex:O}),b=h.map(({column:x})=>x),w=qy({renderDetail:l,separator:u}),T=e&&c?e.map((x,P)=>Yi(c(x,P,b))):void 0,q=T?T.map((x)=>qy({contentHeight:x,renderDetail:l,separator:u})):w;gH(k,{index:H,rowCount:e?.length??0,rowHeight:q,layout:L});let E=e===void 0&&s,D=e!==void 0&&e.length===0&&!s;return Se(Cy,{children:[Se(lq,{resolved:h,width:I,gap:p},void 0,!1,void 0,this),Se("scrollbox",{ref:k,focused:n,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:f.panel,foregroundColor:f.muted}},style:{flexGrow:1,flexBasis:0,width:r},children:[E?Array.from({length:d},(x,P)=>Se(uq,{resolved:h,width:I,gap:p,seed:P,contentHeight:A,detail:Boolean(l),separator:u},P,!1,void 0,this)):null,D&&m?Se(dq,{...m},void 0,!1,void 0,this):null,e?.map((x,P)=>Se(Aq,{row:x,index:P,resolved:h,width:I,gap:p,selected:n&&P===H,contentHeight:T?.[P]??1,renderDetail:l,separator:u,onRowClick:a},o(x,P),!1,void 0,this)),i&&e===void 0?Se(pq,{title:g,error:i},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function lq({resolved:e,width:t,gap:r}){let H=S();return Se("box",{style:{flexDirection:"row",width:t,border:["bottom"],borderColor:H.border,flexShrink:0},children:e.map(({column:n,width:o},s)=>Se($i,{width:o,gap:s>0?r:0,children:Se("text",{fg:H.muted,children:_(n.label,o,n.align??"left")},void 0,!1,void 0,this)},n.key,!1,void 0,this))},void 0,!1,void 0,this)}function $i({width:e,gap:t,children:r}){return Se(Cy,{children:[t>0?Se("text",{children:" ".repeat(t)},void 0,!1,void 0,this):null,Se("box",{style:{width:e,flexShrink:0,flexDirection:"row",overflow:"hidden"},children:r},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Aq({row:e,index:t,resolved:r,width:H,gap:n,selected:o,contentHeight:s,renderDetail:i,separator:a,onRowClick:l}){let c=S();return Se("box",{style:{flexDirection:"column",width:H,backgroundColor:o?c.selected:void 0,flexShrink:0},onMouseDown:l?()=>l(t,e):void 0,children:[Se("box",{style:{flexDirection:"row",height:s,flexShrink:0},children:r.map(({column:A,width:u},d)=>Se($i,{width:u,gap:d>0?n:0,children:A.render(e,o,u)},A.key,!1,void 0,this))},void 0,!1,void 0,this),i?Se("box",{style:{flexDirection:"row",width:H},children:i(e,o,H)},void 0,!1,void 0,this):null,a?Se("text",{fg:c.border,children:"\u2500".repeat(Math.max(0,H))},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function uq({resolved:e,width:t,gap:r,seed:H,contentHeight:n,detail:o,separator:s}){let i=S();return Se("box",{style:{flexDirection:"column",width:t,flexShrink:0},children:[Array.from({length:Yi(n)},(a,l)=>Se("box",{style:{flexDirection:"row"},children:e.map(({column:c,width:A},u)=>Se($i,{width:A,gap:u>0?r:0,children:Se("text",{fg:i.panelAlt,children:_(My(A,H+l+u),A,c.align??"left")},void 0,!1,void 0,this)},c.key,!1,void 0,this))},l,!1,void 0,this)),o?Se("box",{style:{flexDirection:"row",width:t},children:Se("text",{fg:i.panelAlt,children:_(My(t,H+7),t)},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,s?Se("text",{fg:i.border,children:"\u2500".repeat(Math.max(0,t))},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function My(e,t){if(e<=0)return"";let r=0.4+t*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(e,Math.floor(e*r))))}function dq({title:e,lines:t=[]}){let r=S();return Se("box",{style:{flexDirection:"column",padding:1},children:[Se("text",{fg:r.text,children:e},void 0,!1,void 0,this),t.filter(Boolean).map((H,n)=>Se("text",{fg:r.muted,children:H},n,!1,void 0,this))]},void 0,!0,void 0,this)}function pq({title:e,error:t}){let r=S();return Se("box",{style:{flexDirection:"column",padding:1},children:[Se("text",{fg:r.danger,children:e},void 0,!1,void 0,this),Se("text",{fg:r.muted,children:t.message},void 0,!1,void 0,this),t.retryable?Se("text",{fg:r.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as Qy}from"h:6___________________________";function lr({status:e,noun:t,width:r,height:H}){let n=S(),o=se(e);return Qy("box",{style:{flexDirection:"column",width:r,height:H,paddingLeft:1},children:Qy("text",{fg:o?n.danger:n.muted,children:o?`Failed to load ${t}: ${o.message}`:`Loading ${t}\u2026`},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{jsxDEV as rr}from"h:6___________________________";function mq(e,t,r=!1){let H=r?"+":"",n=e===1&&!r?t:`${t}s`;return`${Pe(e)}${H} ${n}`}function Re({count:e,noun:t,hasMore:r=!1,pagination:H}){let n=S(),o=H?.hasPrevious&&!H.loading,s=H?.hasNext&&!H.loading;return rr("box",{style:{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1},children:[rr("text",{fg:n.subText,children:e===void 0?"":mq(e,t,r)},void 0,!1,void 0,this),rr("box",{style:{flexGrow:1}},void 0,!1,void 0,this),H?rr("box",{style:{flexDirection:"row",flexShrink:0},children:[H.hasPrevious?rr("box",{style:{flexDirection:"row"},onMouseDown:o?H.onPrevious:void 0,children:[rr(Pt,{command:"sentry.nav.pageUp"},void 0,!1,void 0,this),rr("text",{fg:o?n.muted:n.subText,children:" \u2039 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,rr("text",{fg:n.subText,children:H.page},void 0,!1,void 0,this),H.hasNext?rr("box",{style:{flexDirection:"row"},onMouseDown:s?H.onNext:void 0,children:[rr("text",{fg:s?n.muted:n.subText,children:" \u203A "},void 0,!1,void 0,this),rr(Pt,{command:"sentry.nav.pageDown"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as gq,useRef as Oq}from"h:0__";import{RenderableEvents as mo}from"h:3__________";import{jsxDEV as Vi}from"h:6___________________________";function Lt({value:e,placeholder:t,focused:r,width:H,onInput:n,onFocus:o,onBlur:s}){let i=S(),a=Oq(null),l=gq((c)=>{let A=a.current;if(A)A.removeAllListeners(mo.FOCUSED),A.removeAllListeners(mo.BLURRED);if(a.current=c,c)c.on(mo.FOCUSED,()=>o()),c.on(mo.BLURRED,()=>s())},[o,s]);return Vi("box",{style:{flexDirection:"row",width:H,flexShrink:0,height:Le,border:!0,borderStyle:"rounded",borderColor:r?i.accent:i.border,backgroundColor:i.panel,paddingLeft:1,paddingRight:1},children:[Vi(Gt,{},void 0,!1,void 0,this),Vi("input",{ref:l,value:e,placeholder:t,focused:r,onInput:n,style:{flexGrow:1,textColor:i.text,backgroundColor:i.panel,focusedTextColor:i.text,focusedBackgroundColor:i.panel,placeholderColor:i.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useEffect as yq,useRef as fq,useState as Ny}from"h:0__";function jy(e,{org:t,dataset:r,fields:H,sort:n,query:o,statsPeriod:s,project:i,environment:a,referrer:l,reloadToken:c=0}){let[A,u]=Ny(me),[d,m]=Ny(null),g=fq(A);return g.current=A,yq(()=>{if(!e||H.length===0)return;let p=new AbortController,{signal:O}=p,y=!1;return u(_e(g.current,Date.now())),(async()=>{try{let L=await Tt(e,{org:t,dataset:r,fields:H,sort:n,query:o,statsPeriod:s,project:i,environment:a,referrer:l,signal:O});if(y)return;u(ge(L.rows,Date.now())),m(L.nextCursor)}catch(L){if(y||O.aborted)return;u(Oe(g.current,Ne(L)))}})(),()=>{y=!0,p.abort()}},[e,t,r,H,n,o,s,i,a,l,c]),{rows:A,nextCursor:d}}import{useEffect as Sq,useRef as _q,useState as kq}from"h:0__";function Ar(e,{org:t,id:r,reloadToken:H=0,load:n}){let[o,s]=kq(me),i=_q(o);return i.current=o,Sq(()=>{if(!e)return;let a=new AbortController,l=!1;return s(_e(i.current,Date.now())),n(e,{org:t,id:r,signal:a.signal}).then((c)=>{if(!l)s(ge(c,Date.now()))}).catch((c)=>{if(!l&&!a.signal.aborted)s(Oe(i.current,Ne(c)))}),()=>{l=!0,a.abort()}},[e,t,r,H,n]),o}import{jsxDEV as Mt}from"h:6___________________________";function go(e){let t=e.projects.filter((r)=>r!==-1).map(String);return{id:`saved-query:${e.source}:${e.id}`,sentryLocation:{screen:Ry(e),detail:{kind:"saved_query",queryId:e.id,source:e.source,resultScreen:Ry(e),dataset:e.dataset,title:e.name},state:{query:e.query,sort:e.sort,statsPeriod:e.statsPeriod,selectedProjects:t,selectedEnvs:e.environment,fields:e.fields}},label:e.name,stateKey:Ui,initialState:{query:e.query,sort:e.sort,statsPeriod:e.statsPeriod,selectedProjects:t,selectedEnvs:e.environment},render:(r)=>r.state?Mt(Gy,{...r,state:r.state,query:e},void 0,!1,void 0,this):null}}function Ry(e){if(e.source==="discover")return"explore.discover";switch(e.dataset){case"logs":return"explore.logs";case"tracemetrics":return"explore.metrics";case"errors":return"explore.errors";case"profiles":return"explore.profiles";case"replays":return"explore.replays";default:return e.datasetLabel==="Conversations"?"explore.conversations":"explore.traces"}}var hq=(e,{org:t,id:r,signal:H})=>{let n=r.indexOf(":"),o=r.slice(0,n),s=r.slice(n+1);return Ay(e,{org:t,source:o,queryId:s,signal:H})};function vy(e){return{id:`saved-query:${e.source}:${e.queryId}`,label:e.title??`Query ${e.queryId}`,stateKey:Ui,sentryLocation:{screen:e.resultScreen,detail:e},render:(t)=>t.state?Mt(Lq,{...t,state:t.state,detail:e},void 0,!1,void 0,this):null}}function Lq({client:e,org:t,state:r,detail:H,reloadToken:n,width:o,height:s,updateView:i,...a}){let l=`${H.source}:${H.queryId}`,c=Ar(e,{org:t,id:l,reloadToken:n,load:hq}),A=B(c);if(Zi(()=>{if(!A)return;r.dispatch({type:"seed",payload:{query:A.query,sort:A.sort,statsPeriod:A.statsPeriod,selectedProjects:A.projects.filter((u)=>u!==-1).map(String),selectedEnvs:A.environment}}),i(`saved-query:${H.source}:${H.queryId}`,{label:A.name})},[H.queryId,H.source,A,r.dispatch,i]),!A)return Mt(lr,{status:c,noun:"saved query",width:o,height:s},void 0,!1,void 0,this);return Mt(Gy,{...a,client:e,org:t,state:r,reloadToken:n,width:o,height:s,updateView:i,query:A},void 0,!1,void 0,this)}function Gy({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,query:i}){let a=S(),{dispatch:l,focusSearch:c,handleSearchBlur:A}=r,u=r.selectedProjects.length>0?r.selectedProjects:void 0,d=r.selectedEnvs.length>0?r.selectedEnvs:void 0,m=Dy(()=>Rn(i.fields),[i.fields]),g=m.some((h)=>h.value===r.sort)?r.sort:i.sort??m[0]?.value,{rows:p,nextCursor:O}=jy(e,{org:t,dataset:i.dataset,fields:i.fields,sort:g,query:r.committedQuery,statsPeriod:r.statsPeriod,project:u,environment:d,referrer:"sentry-tui.saved-query",reloadToken:s}),y=B(p),L=se(p),f=p.state==="loading",k=Je(p);Zi(()=>{if(y)l({type:"setEntries",payload:y})},[y,l]),Zi(()=>{l({type:"setStatus",payload:{loading:f,since:k,error:L?.message,noun:"results"}})},[f,k,L,p,l]);let I=Dy(()=>Pq(i.fields,a),[i.fields,a]);return Mt("box",{style:{flexDirection:"column",width:n,height:o},children:[Mt(Lt,{value:r.searchQuery,placeholder:"Refine this query\u2026",focused:r.searchFocused,width:n,onInput:(h)=>l({type:"setSearchQuery",payload:h}),onFocus:c,onBlur:A},void 0,!1,void 0,this),Mt("box",{style:{flexDirection:"row",width:n,flexShrink:0,height:1,paddingLeft:1},children:[Mt("text",{fg:a.accent,attributes:X,children:R(i.name,Math.max(8,n-24))},void 0,!1,void 0,this),Mt("text",{fg:a.muted,children:` ${i.datasetLabel}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Mt(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,sort:g?{value:g,items:m,onChange:(h)=>l({type:"setSort",payload:h})}:void 0,width:n,anchorTop:Le+1,onProjectChange:(h)=>l({type:"setSelectedProjects",payload:h}),onEnvChange:(h)=>l({type:"setSelectedEnvs",payload:h}),onPeriodChange:(h)=>l({type:"setStatsPeriod",payload:h}),onDropdownClose:()=>l({type:"setOpenDropdown",payload:null}),onDropdownOpen:(h)=>l({type:"setOpenDropdown",payload:h})},void 0,!1,void 0,this),Mt(nt,{rows:y,columns:I,width:n,selectedIndex:r.selected,focused:H,rowKey:(h,b)=>String(b),loading:ke(p),error:L,errorTitle:"Failed to run the query",minFlex:Tq,empty:{title:"This query returned nothing.",lines:[r.committedQuery||void 0,"Try widening the time range or adjusting the query.",`This organization may not have ${i.datasetLabel} enabled.`]},layout:[o]},void 0,!1,void 0,this),Mt(Re,{count:y?.length,noun:"result",hasMore:O!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Iq=[{test:/timestamp|^time$/,width:19},{test:/^project(\.\w+)?$/,width:14},{test:/^(id|trace|replay_id|profile\.id)$|_id$/,width:12},{test:/\(.*\)/,width:12,align:"right"},{test:/duration|latency|size|count/,width:10,align:"right"},{test:/^(release|environment|platform|user|browser|os)(\.\w+)?$/,width:16}],bq=/^(message|description|name|transaction|title|url|culprit)$|\.(description|name)$/,wq=18,xq=20,Tq=24;function Pq(e,t){let r=e.map((n)=>{let o=Iq.find((s)=>s.test.test(n));return{field:n,width:Math.max(o?.width??wq,Math.min(ce(n),xq)),align:o?.align,wide:bq.test(n),unknown:o===void 0}}),H=qq(r.findIndex((n)=>n.wide),r.findIndex((n)=>n.unknown),r.length-1);return r.map((n,o)=>({key:n.field,label:n.field,width:o===H?"flex":n.width,align:n.align,priority:o===H?void 0:r.length-o,render:(s,i,a)=>Mt("text",{fg:o===0?t.text:t.muted,children:_(R(Mq(s[n.field]),a),a,n.align??"left")},void 0,!1,void 0,this)}))}function qq(...e){return e.find((t)=>t>=0)??0}function Mq(e){if(e===void 0||e===null||e==="")return"\u2014";if(typeof e==="number")return Number.isInteger(e)?String(e):e.toFixed(2);if(typeof e==="object")return JSON.stringify(e);return String(e)}function Ey(e,t,r,H){let n=Qq(e,t,r==="explore",H),o=xy(e,t,r==="dashboards",H);switch(r){case"explore":return{sections:n};case"dashboards":return o;default:return wr}}function Qq(e,t,r,H){let{queries:n}=po(e,{org:t,source:"explore",starred:!0,limit:Ki,enabled:r,reloadToken:H}),o=B(n);return Cq(()=>Nq(o),[o])}function Nq(e){if(!e||e.length===0)return[];return[{title:"Starred Queries",items:e.slice(0,Ki).map((t)=>({label:t.name,target:{group:"explore",item:"All Queries"},open:()=>go(t)}))}]}function Ky(e,t,r=[]){return{railGroup:e,activeGroup:e,activeItem:t,navExpanded:!1,showSecondary:!1,secondaryItem:t,gotoMode:!1,viewStack:[...r]}}function Xy(e,t){switch(t.type){case"navigate":return{...e,railGroup:t.group,activeGroup:t.group,activeItem:t.item,navExpanded:!1,showSecondary:!1,secondaryItem:t.item,gotoMode:!1,viewStack:[]};case"openGroup":return{...e,railGroup:t.group,showSecondary:!0,secondaryItem:t.item,gotoMode:!1};case"expandNav":return e.navExpanded?e:{...e,navExpanded:!0};case"openGoto":return{...e,navExpanded:!0,gotoMode:!0};case"closeGoto":return e.gotoMode?{...e,gotoMode:!1}:e;case"previewGroup":return{...e,railGroup:t.group,secondaryItem:t.item};case"selectRailGroup":return e.railGroup===t.group?e:{...e,railGroup:t.group};case"closeSecondary":return e.showSecondary?{...e,showSecondary:!1}:e;case"selectSecondaryItem":return e.secondaryItem===t.item?e:{...e,secondaryItem:t.item};case"pushView":return{...e,viewStack:[...e.viewStack,t.view]};case"popView":return e.viewStack.length===0?e:{...e,viewStack:e.viewStack.slice(0,-1)};case"clearViews":return e.viewStack.length===0?e:{...e,viewStack:[]};case"updateView":{let r=e.viewStack.findIndex((H)=>H.id===t.id);if(r===-1)return e;return{...e,viewStack:e.viewStack.map((H,n)=>n===r?{...H,...t.update}:H)}}case"replaceIssue":{let r=e.viewStack.map((H)=>H.issue?.id===t.issue.id?{...H,issue:t.issue}:H);return r.some((H,n)=>H!==e.viewStack[n])?{...e,viewStack:r}:e}}}import{useCallback as OM,useEffect as na,useRef as yM}from"h:0__";var jq=50;async function Fy(e,{org:t,query:r="",statsPeriod:H,project:n,environment:o,cursor:s,limit:i=jq,signal:a}){let l=await e.request(`/organizations/${t}/ai-conversations/`,{query:{query:r||void 0,statsPeriod:H,project:Fe(n),environment:o,cursor:s,per_page:i,referrer:"sentry-tui.explore-conversations"},signal:a});return{data:(Array.isArray(l.data)?l.data:[]).map(Dq).sort((A,u)=>Date.parse(u.endedAt)-Date.parse(A.endedAt)),nextCursor:l.nextCursor}}function Dq(e,t){let r=e.startTimestamp??0,H=e.endTimestamp??r;return{id:e.conversationId??String(t),title:Ur(e.title),firstInput:By(e.firstInput),lastOutput:By(e.lastOutput),generationDurationMs:e.generationDuration??0,durationMs:Math.max(0,H-r),endedAt:H>0?new Date(H).toISOString():"",llmCalls:e.llmCalls??0,toolCalls:e.toolCalls??0,toolErrors:e.toolErrors??0,toolNames:Array.isArray(e.toolNames)?e.toolNames.filter(Wy):[],errors:e.errors??0,totalTokens:e.totalTokens??0,inputTokens:e.inputTokens??0,outputTokens:e.outputTokens??0,totalCost:typeof e.totalCost==="number"?e.totalCost:void 0,traceCount:e.traceCount??0,traceIds:Array.isArray(e.traceIds)?e.traceIds.filter(Wy):[],projectId:e.projectId==null?void 0:String(e.projectId),user:Rq(e.user)}}function By(e){if(typeof e==="string")return Ur(e);if(!Array.isArray(e))return;return Ur(e.find((t)=>t?.type==="text")?.text??e[0]?.text)}function Ur(e){let t=e?.trim();if(!t||t.toLowerCase()==="none")return;return t}function Rq(e){if(!e)return;let t={id:Ur(e.id),email:Ur(e.email),username:Ur(e.username),ipAddress:Ur(e.ip_address)};return Object.values(t).some(Boolean)?t:void 0}function Wy(e){return typeof e==="string"&&e.trim().length>0}function zi(e){let t=e.title??e.firstInput;return t?t.replace(/\s+/g," ").trim()||void 0:void 0}var vq=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Uy(e){return vq.test(e)?e.slice(0,8):e}function Yy(e){if(!e)return;return e.email??e.username??e.ipAddress??void 0}var $y="has:gen_ai.conversation.id",WH={yAxis:"count_unique(gen_ai.conversation.id)",noun:"conversations"},Vy="conversations";function Zy(e){return[e||void 0,"Try widening the time range or adjusting the query.","This organization may not have gen-ai-conversations enabled."]}import{jsxDEV as Hr}from"h:6___________________________";var Gq=[" ","\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],FH=10,Eq=8,Kq=5;function Oo(e,t=0){return e>=FH+Eq+t+Kq}var OH=7,Xq=1,Bq=1;function Wq(e,t){if(e.length<=t)return e;let r=e.length/t,H=[];for(let n=0;n<t;n++){let o=Math.floor(n*r),s=Math.min(e.length,Math.floor((n+1)*r)),i=0,a=!1;for(let l=o;l<s;l++)i+=e[l].value,a||=e[l].incomplete;H.push({value:i,incomplete:a})}return H}function Fq(e){return{top:_(Pe(e),OH-1,"right")+" ",mid:_(Pe(Math.round(e/2)),OH-1,"right")+" ",zero:_("0",OH-1,"right")+" "}}function Uq(e){let t=new Date(e*1000),r=String(t.getHours()).padStart(2,"0"),H=String(t.getMinutes()).padStart(2,"0");return`${r}:${H}`}function Yq(e,t,r){if(e.length===0||r<10)return"";let n=Math.max(2,Math.floor(r/(6+2))),o=Math.max(1,Math.floor(e.length/n)),s=Array.from({length:r},()=>" ");for(let i=0;i<e.length;i+=o){let a=e[i],l=Uq(a[0]),c=Math.round(i/Math.max(1,e.length-1)*(r-l.length)),A=Math.max(0,Math.min(r-l.length,c));for(let u=0;u<l.length;u++)s[A+u]=l[u]}return s.join("")}function yo({buckets:e,width:t,height:r,title:H,noun:n}){let o=S();if(t<20||r<4)return null;let s=t-OH-3,i=Math.max(1,r-Xq-Bq-2),a=e.map(([,y])=>y[0]?.count??0),l=e.map(([,y,L])=>({value:y[0]?.count??0,incomplete:L?.incomplete===!0})),c=AH(Wq(l,s),s),A=Math.max(1,...c.map(({value:y})=>y)),u=a.reduce((y,L)=>y+L,0),d=Fq(A),m=[];for(let y=i-1;y>=0;y--){let L="";for(let f=0;f<c.length;f++){let{value:k,incomplete:I}=c[f],h=A===0?0:Math.round(k/A*i*8),b=Math.floor(h/8),w=h%8,T=y<b?"\u2588":y===b&&w>0?Gq[w]:" ";L+=I&&T!==" "?"\u2591":T}m.push(L)}let g=Yq(e,c.length,s),p=t-2-1,O=n===void 0?"":`${Pe(u)} ${n}`;return Hr("box",{style:{flexDirection:"column",width:t,height:r,flexShrink:0,border:["top","bottom","left","right"],borderColor:o.border,backgroundColor:o.panel,paddingLeft:1},children:[Hr("box",{style:{flexDirection:"row",width:p,flexShrink:0},children:[Hr("text",{fg:o.text,children:R(H,Math.max(0,p-O.length-1))},void 0,!1,void 0,this),Hr("box",{style:{flexGrow:1}},void 0,!1,void 0,this),Hr("text",{fg:o.muted,attributes:rt,children:O},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m.map((y,L)=>{let f;if(L===0)f=d.top;else if(L===Math.floor(m.length/2))f=d.mid;else if(L===m.length-1)f=d.zero;else f=" ".repeat(OH);return Hr("box",{style:{flexDirection:"row",flexShrink:0},children:[Hr("text",{fg:o.muted,attributes:rt,children:f},void 0,!1,void 0,this),Hr("text",{fg:o.accent,children:y},void 0,!1,void 0,this)]},L,!0,void 0,this)}),Hr("box",{style:{flexDirection:"row",flexShrink:0},children:[Hr("text",{fg:o.muted,children:" ".repeat(OH)},void 0,!1,void 0,this),Hr("text",{fg:o.muted,attributes:rt,children:g},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as ef}from"h:0__";var $q=50;async function zy(e,{idField:t="id",limit:r=$q,...H}){let n=await Tt(e,{...H,limit:r});return{data:n.rows.map((o,s)=>Vq(o,s,t)),nextCursor:n.nextCursor}}function Vq(e,t,r){return{id:Ge(e,r)??String(t),row:e}}async function fo(e,t){return ul(e,t)}import{useCallback as Ji,useEffect as Jy,useRef as Yr,useState as So}from"h:0__";function It(e,t=0){let[r,H]=So(me),[n,o]=So(null),[s,i]=So(void 0),[a,l]=So(1),c=Yr(r);c.current=r;let A=Yr(void 0),u=Yr(1),d=Yr([void 0]),m=Yr(null),g=Yr(0),p=Ji((f,k)=>{m.current?.abort();let I=new AbortController;m.current=I;let h=++g.current,b;try{b=e(f,I.signal)}catch(T){return H((q)=>Oe(q,Ne(T))),!1}if(b===null)return H(me),!1;let w=_e(c.current,Date.now());return c.current=w,H(w),b.then((T)=>{if(I.signal.aborted||h!==g.current)return;A.current=f,u.current=k,d.current[k-1]=f,d.current.length=k,i(f),l(k),o(T.nextCursor),H(ge(T,Date.now()))}).catch((T)=>{if(I.signal.aborted||h!==g.current)return;H((q)=>Oe(q,Ne(T)))}),!0},[e]),O=Yr(null),y=Ji(()=>{if(n===null||c.current.state==="loading")return!1;return p(n,u.current+1)},[n,p]),L=Ji(()=>{if(u.current<=1||c.current.state==="loading")return!1;return p(d.current[u.current-2],u.current-1)},[p]);return Jy(()=>{let f=O.current!==p;if(O.current=p,f)A.current=void 0,u.current=1,d.current=[void 0],i(void 0),l(1),o(null);p(A.current,u.current)},[p,t]),Jy(()=>()=>{g.current++,m.current?.abort()},[]),{status:r,nextCursor:n,cursor:s,page:a,nextPage:y,previousPage:L}}function tf(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,reloadToken:s=0}){let i=ef((A,u)=>e?Fy(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,cursor:A,signal:u}):null,[e,t,r,H,n,o]),a=ef((A)=>e?fo(e,{org:t,statsPeriod:H,project:n,environment:o,signal:A,dataset:"spans",yAxis:WH.yAxis,query:[$y,r.trim()].filter(Boolean).join(" "),referrer:"sentry-tui.explore-conversations-chart"}):null,[e,t,r,H,n,o]),l=It(i,s),c=Kt(a,{reloadKey:s}).status;return{conversations:dt(l.status,(A)=>A.data),timeseries:c,nextCursor:l.nextCursor,page:l.page,nextPage:l.nextPage,previousPage:l.previousPage}}import{useEffect as Zq}from"h:0__";function Ke(e,t){Zq(()=>(e(t),()=>e(null)))}var rf=[{name:"count",argument:"count"},{name:"avg",argument:"number"},{name:"p50",argument:"number"},{name:"p75",argument:"number"},{name:"p90",argument:"number"},{name:"p95",argument:"number"},{name:"p99",argument:"number"},{name:"p100",argument:"number"},{name:"sum",argument:"number"},{name:"min",argument:"number"},{name:"max",argument:"number"},{name:"count_unique",argument:"any"},{name:"epm",argument:"none"},{name:"eps",argument:"none"},{name:"failure_rate",argument:"none"},{name:"failure_count",argument:"none"},{name:"performance_score",argument:"score"},{name:"opportunity_score",argument:"score"}],zq=new Map(rf.map((e)=>[e.name,e]));function Or(e){return zq.get(e)?.argument??"number"}function Hf(e,t=[]){let r=e.builder;if(!r)return[];let H=new Set(r.aggregates);return rf.filter((n)=>H.has(n.name)&&(n.argument!=="number"||r.numberField||t.length>0))}var nf=new Set(["id","sentry.item_id","timestamp"]);function _o(e){let t=/^([a-zA-Z0-9_]+)\((.*)\)$/.exec(e.trim());if(!t)return{aggregate:e.trim(),argument:""};return{aggregate:t[1],argument:t[2].trim()}}function UH(e){return`${e.aggregate}(${Or(e.aggregate)==="none"?"":e.argument})`}function of(e){let{aggregate:t,argument:r}=_o(e.yAxis);return{aggregate:t,argument:r,groupBys:[],sampleSort:null,aggregateSort:null}}function ko(e){return e.groupBys.length>0?"aggregate":"samples"}function sf(e,t,r,H=[]){let n=Jq(t,e,r,H);if(n===void 0)return e;return cf(e,{...e,aggregate:t,argument:n})}function af(e,t){return cf(e,{...e,argument:t})}function cf(e,t){let r=t.aggregateSort;if(!r||r.field!==UH(e))return t;return{...t,aggregateSort:{...r,field:UH(t)}}}function Jq(e,t,r,H){let n=Or(e),o=Or(t.aggregate);if(n==="none")return"";if(n==="count")return _o(r.yAxis).argument;if(n==="any")return r.builder?.uniqueField;if(n==="score")return t.argument.startsWith("measurements.score.")?t.argument:"measurements.score.total";if(o==="none"||o==="any"||t.argument==="")return H[0]??r.builder?.numberField;if(o==="count")return H[0]??r.builder?.numberField;return t.argument}function lf(e,t,r){let H={...e,groupBys:t.filter(Boolean)},n=H.aggregateSort;if(n&&!ta(H,r).includes(n.field))return{...H,aggregateSort:null};return H}function YH(e,t){return ko(e)==="aggregate"?{...e,aggregateSort:t}:{...e,sampleSort:t}}function ho(e,t){let r=Lo(e,t);return YH(e,{field:r.field,direction:r.direction==="desc"?"asc":"desc"})}function Lo(e,t){if(ko(e)==="aggregate")return e.aggregateSort??{field:UH(e),direction:"desc"};return e.sampleSort??ea(t.sort)}function ea(e){return e.startsWith("-")?{field:e.slice(1),direction:"desc"}:{field:e,direction:"asc"}}function eM(e){return e.direction==="desc"?`-${e.field}`:e.field}function ta(e,t){if(ko(e)==="samples")return[...t.fields];return uf([UH(e),...e.groupBys])}function Af(e,t){let r=UH(t),H=ko(t),n=eM(Lo(t,e));if(H==="samples")return{mode:H,fields:e.fields,sort:n,yAxis:r,groupBys:[],idField:e.idField};return{mode:H,fields:uf([...t.groupBys,r]),sort:n,yAxis:r,groupBys:t.groupBys,idField:t.groupBys[0]??""}}function uf(e){return[...new Set(e.filter(Boolean))]}function df(e,t){let r=Or(e.aggregate);return r==="none"||r==="count"?t.noun:e.argument||"\u2014"}function pf(e){if(e.groupBys.length===0)return"\u2014";if(e.groupBys.length===1)return e.groupBys[0];return`${e.groupBys.length} groups`}function mf(e){return e==="count"||e==="failure_count"}function gf(e){return e.startsWith("measurements.score.")}function $H(e){if(!e)return"--:--:--";return e.match(/T(\d{2}:\d{2}:\d{2})/)?.[1]??(e.slice(11,19)||"--:--:--")}function $r(e){if(!Number.isFinite(e)||e<0)return"";if(e<60)return`${Math.round(e)}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);if(r<24)return`${r}h`;return`${Math.floor(r/24)}d`}var Of="------ --:--";function VH(e){if(!e)return Of;let t=e.match(/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})/);return t?`${t[1]} ${t[2]}`:Of}function yf(e,t,r=Date.now()){let H=Date.parse(e);if(Number.isNaN(H))return"";let n=t?Date.parse(t):r;if(Number.isNaN(n))return"";return $r(Math.max(0,(n-H)/1000))}import{jsxDEV as ye,Fragment as Io}from"h:6___________________________";var ff=24;function Sf(e,t){switch(e){case"explore.traces":return HM(t);case"explore.logs":return rM(t.theme);case"explore.metrics":return dM(t.theme);case"explore.errors":return gM(t.theme);default:return[]}}var tM={trace:"TRACE",debug:"DEBUG",info:" INFO",warn:" WARN",error:"ERROR",fatal:"FATAL"};function rM(e){let t={trace:e.subText,debug:e.muted,info:e.accent,warn:e.warning,error:e.danger,fatal:e.level.fatal};return[{key:"timestamp",label:"Time",width:10,render:(r,H,n)=>ye("text",{fg:e.muted,children:_($H(Ge(r.row,"timestamp")),n)},void 0,!1,void 0,this)},{key:"sentry.severity",label:"Level",width:6,priority:2,render:(r,H,n)=>{let o=ra(r);return ye("text",{fg:t[o],attributes:o==="error"||o==="fatal"?X:0,children:_(tM[o],n)},void 0,!1,void 0,this)}},{key:"project",label:"Project",width:14,priority:1,render:(r,H,n)=>ye("text",{fg:e.subText,children:_(ot(r,"project"),n)},void 0,!1,void 0,this)},{key:"message",label:"Message",width:"flex",render:(r,H,n)=>ye("text",{fg:e.text,children:_(ot(r,"message"),n)},void 0,!1,void 0,this)}]}function ra(e){let t=ot(e,"sentry.severity").toLowerCase();return t==="trace"||t==="debug"||t==="warn"||t==="error"||t==="fatal"?t:"info"}function HM(e){let{theme:t}=e;return[{key:"id",label:"Span ID",width:8,priority:3,render:(r,H,n)=>ye("text",{fg:t.muted,children:_(kf(r.id),n)},void 0,!1,void 0,this)},{key:"span.name",label:"Name",width:16,priority:2,render:(r,H,n)=>ye("text",{fg:t.subText,children:_(ot(r,"span.name"),n)},void 0,!1,void 0,this)},{key:"span.description",label:"Description",width:"flex",render:(r,H,n)=>ye("text",{fg:t.text,children:_(ot(r,"span.description"),n)},void 0,!1,void 0,this)},{key:"span.duration",label:"Duration",width:15,render:(r,H,n)=>ye(oM,{durationMs:kt(r.row,"span.duration"),maxMs:e.maxDurationMs,theme:t,width:n},void 0,!1,void 0,this)},{key:"transaction",label:"Transaction",width:18,priority:1,render:(r,H,n)=>ye("text",{fg:t.subText,children:_(ot(r,"transaction"),n)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,priority:4,render:(r,H,n)=>ye("text",{fg:t.muted,children:_($H(Ge(r.row,"timestamp")),n)},void 0,!1,void 0,this)}]}var nM=7;function oM({durationMs:e,maxMs:t,theme:r,width:H}){let n=Math.min(nM,H),o=Math.max(0,H-n-1);if(e===void 0)return ye("text",{fg:r.subText,children:_("\u2014",H,"right")},void 0,!1,void 0,this);let s=t>0?e/t:0;return ye(Io,{children:[o>0?ye(Io,{children:[ye("text",{fg:r.accent,children:Si(s,o)},void 0,!1,void 0,this),ye("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,ye("text",{fg:r.text,children:_(ZH(e),n,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ZH(e){if(!Number.isFinite(e)||e<0)return"\u2014";if(e<1)return`${Math.round(e*1000)}\xB5s`;if(e<10)return`${e.toFixed(2)}ms`;if(e<1000)return`${Math.round(e)}ms`;let t=e/1000;if(t<60)return`${t.toFixed(t<10?2:1)}s`;let r=t/60;if(r<60)return`${r.toFixed(1)}m`;return`${(r/60).toFixed(1)}h`}var sM=20,iM=8;function _f(e,t,r,H){let{aggregate:n,argument:o}=_o(t);return[...e.map((s,i)=>({key:s,label:s,width:"flex",priority:i===0?void 0:e.length-i,render:(a,l,c)=>ye("text",{fg:i===0?H.text:H.subText,children:_(ot(a,s)||"(none)",c)},void 0,!1,void 0,this)})),{key:t,label:t,width:sM,align:"right",render:(s,i,a)=>ye(aM,{value:kt(s.row,t),maxValue:r,text:AM(n,o,kt(s.row,t)),theme:H,width:a},void 0,!1,void 0,this)}]}function aM({value:e,maxValue:t,text:r,theme:H,width:n}){let o=Math.min(iM,n),s=Math.max(0,n-o-1);if(e===void 0)return ye("text",{fg:H.subText,children:_("\u2014",n,"right")},void 0,!1,void 0,this);let i=t>0?e/t:0;return ye(Io,{children:[s>0?ye(Io,{children:[ye("text",{fg:H.accent,children:Si(i,s)},void 0,!1,void 0,this),ye("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,ye("text",{fg:H.text,children:_(r,o,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var cM=new Set(["count","count_unique","failure_count"]),lM=new Set(["failure_rate","performance_score","opportunity_score"]);function AM(e,t,r){if(r===void 0)return"\u2014";if(cM.has(e))return Pe(r);if(lM.has(e))return`${(r*100).toFixed(1)}%`;if(uM(t))return ZH(r);return Math.abs(r)>=1000?Pe(r):String(Number(r.toFixed(2)))}function uM(e){return e==="span.duration"||e==="span.self_time"||e.endsWith(".duration")||e.endsWith("_time")}function dM(e){return[{key:"metric.name",label:"Metric",width:"flex",render:(t,r,H)=>ye("text",{fg:e.text,children:_(ot(t,"metric.name"),H)},void 0,!1,void 0,this)},{key:"metric.type",label:"Type",width:12,priority:2,render:(t,r,H)=>ye("text",{fg:e.subText,children:_(ot(t,"metric.type"),H)},void 0,!1,void 0,this)},{key:"value",label:"Value",width:14,align:"right",render:(t,r,H)=>ye("text",{fg:e.accent,children:_(mM(kt(t.row,"value"),Ge(t.row,"metric.unit")),H,"right")},void 0,!1,void 0,this)},{key:"project",label:"Project",width:14,priority:1,render:(t,r,H)=>ye("text",{fg:e.subText,children:_(ot(t,"project"),H)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,priority:3,render:(t,r,H)=>ye("text",{fg:e.muted,children:_($H(Ge(t.row,"timestamp")),H)},void 0,!1,void 0,this)}]}var pM={nanosecond:"ns",microsecond:"\xB5s",millisecond:"ms",second:"s",minute:"min",hour:"h",day:"d",week:"wk",bit:"b",byte:"B",kilobyte:"kB",kibibyte:"KiB",megabyte:"MB",mebibyte:"MiB",gigabyte:"GB",gibibyte:"GiB",terabyte:"TB",tebibyte:"TiB",percent:"%",ratio:""};function mM(e,t){if(e===void 0)return"\u2014";let r=Math.abs(e)<1000?String(Number(e.toFixed(2))):Pe(e);if(!t||t==="none")return r;let H=pM[t]??t;if(!H)return r;return H.length<=3?`${r}${H}`:`${r} ${H}`}function gM(e){let t={fatal:e.level.fatal,error:e.level.error,warning:e.level.warning,info:e.level.info,sample:e.level.sample};return[{key:"id",label:"Event ID",width:8,priority:3,render:(r,H,n)=>ye("text",{fg:e.muted,children:_(kf(r.id),n)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,render:(r,H,n)=>ye("text",{fg:e.muted,children:_($H(Ge(r.row,"timestamp")),n)},void 0,!1,void 0,this)},{key:"level",label:"Level",width:7,priority:4,render:(r,H,n)=>{let o=ot(r,"level").toLowerCase(),s=t[o]??e.level.unknown;return ye("text",{fg:s,attributes:o==="error"||o==="fatal"?X:0,children:_(o?o.toUpperCase():"",n)},void 0,!1,void 0,this)}},{key:"title",label:"Title",width:"flex",render:(r,H,n)=>ye("text",{fg:e.text,children:_(ot(r,"title"),n)},void 0,!1,void 0,this)},{key:"project",label:"Project",width:14,priority:2,render:(r,H,n)=>ye("text",{fg:e.subText,children:_(ot(r,"project"),n)},void 0,!1,void 0,this)},{key:"user.display",label:"User",width:18,priority:1,render:(r,H,n)=>ye("text",{fg:e.subText,children:_(ot(r,"user.display"),n)},void 0,!1,void 0,this)}]}function Ha(e){if(e===void 0)return"\u2014";if(e===0)return"$0";return e<1?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function ot(e,t){return Ge(e.row,t)??""}function kf(e,t=8){return e.slice(0,t)}import{jsxDEV as Ze}from"h:6___________________________";var fM=28,Lf="Untitled conversation";function SM(e){return[{key:"conversation",label:"Conversation",width:"flex",render:(t,r,H)=>{let n=zi(t);return Ze("text",{fg:n?e.text:e.subText,children:_(n??Lf,H)},void 0,!1,void 0,this)}},{key:"duration",label:"Duration",width:9,align:"right",priority:2,render:(t,r,H)=>Ze("text",{fg:e.text,children:_(ZH(t.generationDurationMs),H,"right")},void 0,!1,void 0,this)},{key:"messages",label:"Msgs",width:5,align:"right",priority:5,render:(t,r,H)=>Ze("text",{fg:e.text,children:_(Pe(t.llmCalls),H,"right")},void 0,!1,void 0,this)},{key:"errors",label:"Errs",width:5,align:"right",priority:3,render:(t,r,H)=>{let n=t.errors;return Ze("text",{fg:n>0?e.danger:e.subText,attributes:n>0?X:0,children:_(n>0?Pe(n):"\xB7",H,"right")},void 0,!1,void 0,this)}},{key:"cost",label:"Cost",width:9,align:"right",priority:6,render:(t,r,H)=>Ze("text",{fg:e.accent,children:_(Ha(t.totalCost),H,"right")},void 0,!1,void 0,this)},{key:"tools",label:"Tools",width:20,priority:1,render:(t,r,H)=>Ze("text",{fg:e.subText,children:_(_M(t,H),H)},void 0,!1,void 0,this)},{key:"age",label:"Age",width:5,align:"right",priority:4,render:(t,r,H)=>Ze("text",{fg:e.muted,children:_(he(t.endedAt),H,"right")},void 0,!1,void 0,this)}]}function _M(e,t){let r=e.toolNames;if(r.length===0)return e.toolCalls>0?`${e.toolCalls} calls`:"";let H=[],n=0;for(let s of r){let i=(H.length>0?2:0)+s.length;if(n+i>t-(H.length<r.length-1?3:0))break;H.push(s),n+=i}if(H.length===0)H.push(r[0]);let o=r.length-H.length;return o>0?`${H.join(", ")} +${o}`:H.join(", ")}function If({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,onProjectSelect:i,registerActions:a,activateRow:l}){let c=S(),{dispatch:A,focusSearch:u,handleSearchBlur:d}=r,m=r.committedQuery,g=r.selectedProjects.length>0?r.selectedProjects:void 0,p=r.selectedEnvs.length>0?r.selectedEnvs:void 0,{conversations:O,timeseries:y,nextCursor:L,page:f,nextPage:k,previousPage:I}=tf(e,{org:t,query:m,statsPeriod:r.statsPeriod,project:g,environment:p,reloadToken:s}),h=O.state==="loading",b=Je(O),w=B(O),T=se(O),q=B(y);na(()=>{if(w)A({type:"setEntries",payload:w})},[w,A]);let E=yM(f);na(()=>{if(E.current===f)return;E.current=f,A({type:"setSelected",payload:0})},[f,A]),na(()=>{A({type:"setStatus",payload:{loading:h,since:b,error:T?.message,noun:Vy}})},[h,b,T,O,A]);let D=OM(()=>A({type:"setOpenDropdown",payload:null}),[A]);Ke(a,{open:()=>A({type:"setDetailOpen",payload:(j)=>!j}),nextPage:k,previousPage:I,back:()=>{if(!r.detailOpen)return!1;return A({type:"setDetailOpen",payload:!1}),!0}});let x=w?.[r.selected]??null,P=r.detailOpen&&x!==null,N=!P&&Oo(o)&&q!==void 0&&q.length>0,F=Math.max(20,n-2);return Ze("box",{style:{flexDirection:"column",width:n,height:o},children:[Ze(Lt,{value:r.searchQuery,placeholder:"Search AI conversations\u2026",focused:r.searchFocused,width:n,onInput:(j)=>A({type:"setSearchQuery",payload:j}),onFocus:u,onBlur:d},void 0,!1,void 0,this),Ze(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,width:n,anchorTop:Le,onProjectChange:i,onEnvChange:(j)=>A({type:"setSelectedEnvs",payload:j}),onPeriodChange:(j)=>A({type:"setStatsPeriod",payload:j}),onDropdownClose:D,onDropdownOpen:(j)=>A({type:"setOpenDropdown",payload:j})},void 0,!1,void 0,this),N&&q?Ze(yo,{buckets:q,width:F,height:FH,title:WH.yAxis,noun:WH.noun},void 0,!1,void 0,this):null,Ze(nt,{rows:w,columns:SM(c),width:n,selectedIndex:r.selected,focused:H,rowKey:(j,U)=>`${U}:${j.id}`,minFlex:fM,loading:ke(O),error:T,errorTitle:"Failed to load conversations",onRowClick:l,renderDetail:(j,U,z)=>kM(j,U,z,c),empty:{title:"No conversations found.",lines:Zy(m)},layout:[o,N,P]},void 0,!1,void 0,this),P&&x?Ze(hM,{conversation:x,width:F},void 0,!1,void 0,this):null,Ze(Re,{count:w?.length,noun:"conversation",hasMore:L!==null,pagination:L!==null||f>1?{page:f,hasPrevious:f>1,hasNext:L!==null,loading:h,onPrevious:I,onNext:k}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function kM(e,t,r,H){let n=[Uy(e.id),e.projectId?`project ${e.projectId}`:void 0,Yy(e.user),e.traceCount>1?`${e.traceCount} traces`:void 0].filter(Boolean);return Ze("text",{fg:H.subText,attributes:rt,children:_(` ${n.join(" \u2502 ")}`,r)},void 0,!1,void 0,this)}function hM({conversation:e,width:t}){let r=S(),H=Math.max(10,t-2);return Ze("box",{style:{flexDirection:"column",width:t,border:["top"],borderColor:r.border,paddingTop:1,flexShrink:0},children:[Ze("text",{fg:r.accent,attributes:X,children:`\u25BE ${R(zi(e)??Lf,t-2)}`},void 0,!1,void 0,this),e.firstInput&&e.title?Ze("text",{fg:r.text,children:R(` \u2192 ${hf(e.firstInput)}`,H)},void 0,!1,void 0,this):null,e.lastOutput?Ze("text",{fg:r.muted,children:R(` \u2190 ${hf(e.lastOutput)}`,H)},void 0,!1,void 0,this):null,Ze("text",{fg:r.muted,children:R(` ${uH(e.llmCalls,"call")} \u2502 `+`${uH(e.toolCalls,"tool")} \u2502 `+`${Pe(e.inputTokens)} in / ${Pe(e.outputTokens)} out \u2502 `+`${Ha(e.totalCost)} \u2502 ${ZH(e.generationDurationMs)}`,H)},void 0,!1,void 0,this),e.traceIds[0]?Ze("text",{fg:r.subText,attributes:rt,children:R(` trace ${e.traceIds[0]}`,H)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function hf(e){return e.replace(/\s+/g," ").trim()}import{useCallback as ia,useEffect as aa,useMemo as yH,useRef as DM,useState as ca}from"h:0__";var bf=["count","avg","p50","p75","p90","p95","p99","sum","min","max","count_unique"],LM=["count","avg","p50","p75","p90","p95","p99","p100","sum","min","max","count_unique","epm","eps","failure_rate","failure_count","performance_score","opportunity_score"],IM={id:"explore.traces",dataset:"spans",fields:["id","span.name","span.description","span.duration","transaction","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count(span.duration)",builder:{itemType:"spans",aggregates:LM,numberField:"span.duration",uniqueField:"span.op"},noun:"spans",searchPlaceholder:"Search spans\u2026",referrer:"sentry-tui.explore-traces"},bM={id:"explore.logs",dataset:"logs",fields:["sentry.item_id","trace","sentry.severity","timestamp","message","project"],sort:"-timestamp",idField:"sentry.item_id",yAxis:"count(message)",builder:{itemType:"logs",aggregates:bf,uniqueField:"message"},noun:"logs",searchPlaceholder:"Search logs\u2026",referrer:"sentry-tui.explore-logs",feature:"logs"},wM={id:"explore.metrics",dataset:"tracemetrics",fields:["id","metric.name","metric.type","value","metric.unit","project","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count(value)",builder:{itemType:"tracemetrics",aggregates:bf,numberField:"value",uniqueField:"metric.name"},noun:"metrics",searchPlaceholder:"Search metrics\u2026",referrer:"sentry-tui.explore-metrics",feature:"tracemetrics-enabled"},xM={id:"explore.errors",dataset:"errors",fields:["id","title","level","project","user.display","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count()",noun:"events",searchPlaceholder:"Search error events\u2026",referrer:"sentry-tui.explore-errors",feature:"explore-errors"},TM=[IM,bM,wM,xM],PM=new Map(TM.map((e)=>[e.id,e]));function wf(e){return PM.get(e)}function xf(e,t){let r=e.baseQuery?.trim()??"",H=t.trim();if(!r)return H;if(!H)return r;return`(${r}) and (${H})`}function Tf(e,t=e.yAxis){return t==="count()"||e.id==="explore.logs"&&t==="count(message)"?`count(${e.noun})`:t}function Pf(e,t){return[t||void 0,"Try widening the time range or adjusting the query.",e.feature?`This organization may not have ${e.feature} enabled.`:"This organization may not be sending this data yet."]}import{useMemo as xo}from"h:0__";import{jsxDEV as Ct,Fragment as QM}from"h:6___________________________";var To=ft,bo=1,oa=3,sa="",Mf=44;function Cf({table:e,query:t,attributes:r,open:H,width:n,anchorTop:o,interval:s,intervalItems:i,onChange:a,onIntervalChange:l,onOpen:c,onClose:A}){let u=S(),d=Lo(t,e),m=Or(t.aggregate),g=m!=="none"&&m!=="count",p=xo(()=>r.number.map(({key:b})=>b),[r.number]),O=xo(()=>Hf(e,p).map(({name:b})=>({label:b,value:b})),[e,p]),y=[{kind:"label",text:"Visualize",gapBefore:0},{kind:"chip",gapBefore:bo,opens:"visualize",onPress:()=>c("visualize"),chip:{command:"sentry.explore.visualize",label:t.aggregate,caret:!0}},{kind:"chip",gapBefore:Lr,opens:"field",onPress:()=>g&&c("field"),chip:{command:"sentry.explore.visualizeField",label:df(t,e),caret:g}},{kind:"label",text:"Group by",gapBefore:oa},{kind:"chip",gapBefore:bo,opens:"groupBy",onPress:()=>c("groupBy"),chip:{command:"sentry.explore.groupBy",label:pf(t),caret:!0}},{kind:"label",text:"Sort",gapBefore:oa},{kind:"chip",gapBefore:bo,opens:"sort",onPress:()=>c("sort"),chip:{command:"sentry.view.sort",label:d.field,caret:!0}},{kind:"chip",gapBefore:Lr,opens:null,onPress:()=>a(ho(t,e)),chip:{command:"sentry.explore.sortDirection",label:d.direction==="desc"?"Desc":"Asc"}},{kind:"label",text:"Interval",gapBefore:oa},{kind:"chip",gapBefore:bo,opens:"interval",onPress:()=>c("interval"),chip:{command:"sentry.explore.interval",label:s,caret:!0}}],L=qf(y,!0),f=L.total<=n,{placed:k}=f?L:qf(y,!1),I=o+ft,h=(b)=>k.find((w)=>w.item.kind==="chip"&&w.item.opens===b)?.left??0;return Ct(QM,{children:[Ct("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:ft,overflow:"hidden"},children:k.map(({item:b,key:w,gap:T})=>b.kind==="label"?Ct("text",{fg:u.muted,children:`${" ".repeat(T)}${b.text}`},w,!1,void 0,this):Ct("box",{style:{flexDirection:"row",flexShrink:0},children:[T>0?Ct("text",{children:" ".repeat(T)},void 0,!1,void 0,this):null,Ct(Gr,{...b.chip,active:H!==null&&H===b.opens,onPress:b.onPress},void 0,!1,void 0,this)]},w,!0,void 0,this))},void 0,!1,void 0,this),H==="visualize"?Ct(lt,{title:"Visualize",items:O,selected:[t.aggregate],anchorLeft:h("visualize"),anchorTop:I,showAll:!1,onSelect:(b)=>{let w=b[0];if(w)a(sf(t,w,e,p));A()},onClose:A},void 0,!1,void 0,this):null,H==="field"?Ct(qM,{query:t,attributes:r,anchorLeft:h("field"),anchorTop:I,onSelect:(b)=>{a(af(t,b)),A()},onClose:A},void 0,!1,void 0,this):null,H==="groupBy"?Ct(MM,{query:t,attributes:r,anchorLeft:h("groupBy"),anchorTop:I,onSelect:(b)=>{a(lf(t,CM(t.groupBys,b),e)),A()},onClose:A},void 0,!1,void 0,this):null,H==="sort"?Ct(lt,{title:"Sort By",items:ta(t,e).map((b)=>({label:b,value:b})),selected:[d.field],anchorLeft:h("sort"),anchorTop:I,showAll:!1,placeholder:"No sortable columns",onSelect:(b)=>{let w=b[0];if(w)a(YH(t,{field:w,direction:d.direction}));A()},onClose:A},void 0,!1,void 0,this):null,H==="interval"?Ct(lt,{title:"Chart Interval",items:i,selected:[s],anchorLeft:h("interval"),anchorTop:I,showAll:!1,placeholder:"No intervals for this range",onSelect:(b)=>{let w=b[0];if(w)l(w);A()},onClose:A},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function qM({query:e,attributes:t,anchorLeft:r,anchorTop:H,onSelect:n,onClose:o}){let s=Or(e.aggregate),i=xo(()=>{if(s==="any")return wo([...t.string,...t.number,...t.boolean]);if(s==="score")return wo(t.number.filter((a)=>gf(a.key)));return wo(t.number)},[s,t]);return Ct(lt,{title:"Field",items:i,selected:[e.argument],anchorLeft:r,anchorTop:H,showAll:!1,filterable:!0,maxWidth:Mf,placeholder:t.loading?"Loading attributes\u2026":"No attributes found",onSelect:(a)=>{let l=a[0];if(l)n(l)},onClose:o},void 0,!1,void 0,this)}function MM({query:e,attributes:t,anchorLeft:r,anchorTop:H,onSelect:n,onClose:o}){let s=xo(()=>[{label:"\u2014",value:sa},...wo([...t.string,...t.number,...t.boolean].filter((i)=>!nf.has(i.key)))],[t.string,t.number,t.boolean]);return Ct(lt,{title:"Group By",items:s,selected:e.groupBys.length>0?[...e.groupBys]:[sa],anchorLeft:r,anchorTop:H,showAll:!1,filterable:!0,maxWidth:Mf,placeholder:t.loading?"Loading attributes\u2026":"No attributes found",onSelect:(i)=>n(i[0]??sa),onClose:o},void 0,!1,void 0,this)}function wo(e){return[...new Map(e.map((t)=>[t.key,{label:t.key,value:t.key}])).values()]}function CM(e,t){if(!t)return[];return e.includes(t)?e.filter((r)=>r!==t):[...e,t]}function qf(e,t){let r=[],H=0,n=!0;for(let o of e){if(o.kind==="label"&&!t)continue;let s=n?0:o.gapBefore;n=!1;let i=H+s;r.push({item:o,key:o.kind==="label"?`label:${o.text}`:o.chip.command,left:i,gap:s}),H=i+(o.kind==="label"?ce(o.text):vt(o.chip))}return{placed:r,total:H}}import{useCallback as Qf}from"h:0__";function Nf(e,t,{org:r,query:H,request:n,statsPeriod:o,interval:s,project:i,environment:a,reloadToken:l=0}){let c=xf(t,H),A=Qf((g,p)=>e?zy(e,{org:r,query:c,statsPeriod:o,project:i,environment:a,cursor:g,signal:p,dataset:t.dataset,fields:n.fields,sort:n.sort,idField:n.idField,referrer:t.referrer}):null,[e,r,c,n,o,i,a,t]),u=Qf((g)=>e?fo(e,{org:r,query:c,statsPeriod:o,interval:s,project:i,environment:a,signal:g,dataset:t.dataset,yAxis:n.yAxis,groupBy:n.groupBys.length>0?n.groupBys:void 0,sort:n.sort,topEvents:n.groupBys.length>0?9:void 0,referrer:`${t.referrer}-chart`}):null,[e,r,c,n,o,s,i,a,t]),d=It(A,l),m=Kt(u,{reloadKey:l}).status;return{events:dt(d.status,(g)=>g.data),timeseries:m,nextCursor:d.nextCursor,page:d.page,nextPage:d.nextPage,previousPage:d.previousPage}}import{useEffect as NM,useState as jM}from"h:0__";async function jf(e,{org:t,itemType:r,attributeType:H,project:n,environment:o,statsPeriod:s,signal:i}){let{data:a}=await Pc({...e.generatedOptions(i),path:{organization_id_or_slug:t},query:{itemType:r,attributeType:[H],project:Fe(n),environment:o,statsPeriod:s}}),l=new Set,c=[];for(let A of Array.isArray(a)?a:[]){let u=typeof A?.key==="string"?A.key:"";if(!u||l.has(u))continue;l.add(u),c.push({key:u,name:typeof A.name==="string"&&A.name?A.name:u,type:H})}return c.sort((A,u)=>A.name.localeCompare(u.name)),c}var Po=[],Df={string:Po,number:Po,boolean:Po,loading:!1};function Rf(e,{org:t,itemType:r,statsPeriod:H,project:n,environment:o}){let[s,i]=jM(Df),a=n?.join(",")??"",l=o?.join(",")??"";return NM(()=>{if(!e||!r){i(Df);return}let c=new AbortController,A=!1;i((d)=>({...d,loading:!0}));let u=(d)=>jf(e,{org:t,itemType:r,attributeType:d,statsPeriod:H,project:a?a.split(","):void 0,environment:l?l.split(","):void 0,signal:c.signal}).catch(()=>Po);return Promise.all([u("string"),u("number"),u("boolean")]).then(([d,m,g])=>{if(A)return;i({string:d,number:m,boolean:g,loading:!1})}),()=>{A=!0,c.abort()}},[e,t,r,H,a,l]),s}import{jsxDEV as xe,Fragment as FM}from"h:6___________________________";var vf=26;function zH(e){let t=S(),r=wf(e.screen.id);if(!r)return xe("box",{style:{flexDirection:"column",paddingLeft:1},children:xe("text",{fg:t.danger,children:`No Explore table configured for ${e.screen.id}.`},void 0,!1,void 0,this)},void 0,!1,void 0,this);return xe(RM,{...e,table:r},void 0,!1,void 0,this)}function RM({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,onProjectSelect:i,registerActions:a,activateRow:l,table:c}){let A=S(),{dispatch:u,focusSearch:d,handleSearchBlur:m}=r,g=r.committedQuery,p=r.selectedProjects.length>0?r.selectedProjects:void 0,O=r.selectedEnvs.length>0?r.selectedEnvs:void 0,[y,L]=ca(()=>of(c)),[f,k]=ca(null),[I,h]=ca(),b=c.builder!==void 0,w=yH(()=>Af(c,y),[c,y]),T=yH(()=>Rn(c.fields),[c.fields]),q=yH(()=>cl(r.statsPeriod),[r.statsPeriod]),E=q.find(({value:fe})=>fe===I)?.value??q[0]?.value??qr(r.statsPeriod),D=Rf(e,{org:t,itemType:c.builder?.itemType,statsPeriod:r.statsPeriod,project:p,environment:O}),{events:x,timeseries:P,nextCursor:N,page:F,nextPage:j,previousPage:U}=Nf(e,c,{org:t,query:g,request:w,statsPeriod:r.statsPeriod,interval:E,project:p,environment:O,reloadToken:s}),z=x.state==="loading",oe=Je(x),ie=B(x),G=se(x),Y=B(P);aa(()=>{if(ie)u({type:"setEntries",payload:ie})},[ie,u]);let ee=DM(F);aa(()=>{if(ee.current===F)return;ee.current=F,u({type:"setSelected",payload:0})},[F,u]),aa(()=>{u({type:"setStatus",payload:{loading:z,since:oe,error:G?.message,noun:c.noun}})},[z,oe,G,x,u,c.noun]);let C=ia(()=>u({type:"setOpenDropdown",payload:null}),[u]),v=ia(()=>k(null),[]),pe=ia((fe)=>{u({type:"setOpenDropdown",payload:null}),k(fe)},[u]);Ke(a,{open:()=>u({type:"setDetailOpen",payload:(fe)=>!fe}),nextPage:j,previousPage:U,back:()=>{if(!r.detailOpen)return!1;return u({type:"setDetailOpen",payload:!1}),!0},handleKey:(fe)=>{if(Q("sentry.explore.interval",fe))return pe("interval"),!0;if(!b)return!1;if(Q("sentry.explore.visualize",fe))return pe("visualize"),!0;if(Q("sentry.explore.visualizeField",fe)){let Te=Or(y.aggregate);if(Te!=="none"&&Te!=="count")pe("field");return!0}if(Q("sentry.explore.groupBy",fe))return pe("groupBy"),!0;if(Q("sentry.view.sort",fe))return pe("sort"),!0;if(Q("sentry.explore.sortDirection",fe))return L((Te)=>ho(Te,c)),!0;return!1}});let Me=yH(()=>BM(ie),[ie]),de=yH(()=>XM(ie,w.yAxis),[ie,w.yAxis]),re=yH(()=>w.mode==="aggregate"?_f(y.groupBys,w.yAxis,de,A):Sf(c.id,{maxDurationMs:Me,theme:A}),[w.mode,w.yAxis,y.groupBys,de,c.id,Me,A]),ue=ie?.[r.selected]??null,Ae=r.detailOpen&&ue!==null,He=!Ae&&Oo(o,To)&&Y!==void 0&&Y.length>0,Ce=Math.max(20,n-2);return xe("box",{style:{flexDirection:"column",width:n,height:o},children:[xe(Lt,{value:r.searchQuery,placeholder:c.searchPlaceholder,focused:r.searchFocused,width:n,onInput:(fe)=>u({type:"setSearchQuery",payload:fe}),onFocus:d,onBlur:m},void 0,!1,void 0,this),xe(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,sort:b?void 0:{value:w.sort,items:T,onChange:(fe)=>L((Te)=>YH(Te,ea(fe)))},width:n,anchorTop:Le,onProjectChange:i,onEnvChange:(fe)=>u({type:"setSelectedEnvs",payload:fe}),onPeriodChange:(fe)=>u({type:"setStatsPeriod",payload:fe}),onDropdownClose:C,onDropdownOpen:(fe)=>u({type:"setOpenDropdown",payload:fe})},void 0,!1,void 0,this),b?xe(Cf,{table:c,query:y,attributes:D,open:f,width:n,anchorTop:Le+To,interval:E??"",intervalItems:q,onChange:L,onIntervalChange:h,onOpen:pe,onClose:v},void 0,!1,void 0,this):xe(vM,{interval:E??"",items:q,open:f==="interval",width:n,anchorTop:Le+To,onOpen:()=>pe("interval"),onChange:h,onClose:v},void 0,!1,void 0,this),He&&Y?xe(yo,{buckets:Y,width:Ce,height:FH,title:Tf(c,w.yAxis),noun:mf(y.aggregate)?c.noun:void 0},void 0,!1,void 0,this):null,xe(nt,{rows:ie,columns:re,width:n,selectedIndex:r.selected,focused:H,rowKey:(fe,Te)=>`${Te}:${fe.id}`,minFlex:ff,loading:ke(x),error:G,errorTitle:`Failed to load ${c.noun}`,onRowClick:l,empty:{title:`No ${c.noun} found.`,lines:Pf(c,g)},layout:[o,He,Ae]},void 0,!1,void 0,this),Ae&&ue?c.id==="explore.logs"?xe(GM,{event:ue,width:Ce},void 0,!1,void 0,this):xe(EM,{event:ue,fields:w.fields,width:Ce},void 0,!1,void 0,this):null,xe(Re,{count:ie?.length,noun:WM(c),hasMore:N!==null,pagination:N!==null||F>1?{page:F,hasPrevious:F>1,hasNext:N!==null,loading:z,onPrevious:U,onNext:j}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vM({interval:e,items:t,open:r,width:H,anchorTop:n,onOpen:o,onChange:s,onClose:i}){let a=S();return xe(FM,{children:[xe("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:ft,overflow:"hidden"},children:[xe("text",{fg:a.muted,children:"Interval "},void 0,!1,void 0,this),xe(Gr,{command:"sentry.explore.interval",label:e,caret:!0,active:r,onPress:o},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r?xe(lt,{title:"Chart Interval",items:t,selected:[e],anchorLeft:9,anchorTop:n+ft,availableWidth:H,showAll:!1,onSelect:(l)=>{let c=l[0];if(c)s(c);i()},onClose:i},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function GM({event:e,width:t}){let r=S(),H=ot(e,"trace");return xe("box",{style:{flexDirection:"column",width:t,border:["top"],borderColor:r.border,paddingTop:1,flexShrink:0},children:[xe("text",{fg:r.accent,attributes:X,children:"\u25BE Log Details"},void 0,!1,void 0,this),xe("text",{fg:r.text,children:R(ot(e,"message"),t)},void 0,!1,void 0,this),xe("text",{fg:r.muted,children:` Severity: ${ra(e)} \u2502 Project: ${ot(e,"project")||"\u2014"}`},void 0,!1,void 0,this),H?xe("text",{fg:r.muted,children:` Trace: ${H}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function EM({event:e,fields:t,width:r}){let H=S(),n=Math.max(10,r-vf-2);return xe("box",{style:{flexDirection:"column",width:r,border:["top"],borderColor:H.border,paddingTop:1,flexShrink:0},children:[xe("text",{fg:H.accent,attributes:X,children:"\u25BE Row Details"},void 0,!1,void 0,this),t.map((o)=>xe("box",{style:{flexDirection:"row",width:r},children:[xe("text",{fg:H.muted,children:` ${_(o,vf)}`},void 0,!1,void 0,this),xe("text",{fg:H.text,children:R(KM(e,o),n)},void 0,!1,void 0,this)]},o,!0,void 0,this))]},void 0,!0,void 0,this)}function KM(e,t){let r=ot(e,t);return r===""?"\u2014":r.replace(/\s+/g," ")}function XM(e,t){let r=0;for(let H of e??[]){let n=kt(H.row,t);if(n!==void 0&&n>r)r=n}return r}function BM(e){if(!e)return 0;let t=0;for(let r of e){let H=Number(r.row["span.duration"]);if(Number.isFinite(H)&&H>t)t=H}return t}function WM(e){return e.noun.endsWith("s")?e.noun.slice(0,-1):e.noun}import{useCallback as MC,useEffect as sS,useMemo as CC}from"h:0__";var UM={"dashboards.all":{title:"All Dashboards",description:"Every dashboard in this organization.",sort:"recentlyViewed",searchPlaceholder:"Search dashboards by title\u2026",emptyTitle:"No dashboards found.",emptyLines:["This organization may not have dashboards enabled.","Otherwise there are none yet \u2014 create one on sentry.io, as this client is read-only."]},"dashboards.sentry-built":{title:"Sentry Built",description:"Prebuilt dashboards Sentry ships for you.",filter:"onlyPrebuilt",sort:"mostPopular",searchPlaceholder:"Search Sentry Built dashboards\u2026",emptyTitle:"No Sentry Built dashboards.",emptyLines:["This organization may not have prebuilt dashboards enabled.","The web app hides this section entirely without the feature; we can't read org features, so it shows up empty instead."]}};function Gf(e){return UM[e]}import{jsxDEV as JH,Fragment as YM}from"h:6___________________________";function fH({value:e,items:t,open:r,width:H,anchorTop:n,onChange:o,onOpen:s,onClose:i}){let a=Math.max(0,H-vt({command:RH,label:vH(t,e),caret:!0}));return JH(YM,{children:[JH("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,width:H,height:ft,overflow:"hidden"},children:[JH("box",{style:{flexGrow:1}},void 0,!1,void 0,this),JH(vn,{value:e,items:t,open:r,onOpen:s},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r?JH(Gn,{value:e,items:t,anchorLeft:a,anchorTop:n+ft,availableWidth:H,onChange:o,onClose:i},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as LC,useEffect as SH,useMemo as fa,useRef as nS,useState as IC}from"h:0__";function Vr(e){switch(e){case"big_number":return"number";case"bar":case"area":case"line":return"series";case"table":case"top_n":return"table";case"categorical_bar":return"bars";default:return"unsupported"}}function Aa(e){switch(e){case void 0:case null:case"discover":return"discover";case"error-events":return"errors";case"transaction-like":return"transactions";case"spans":return"spans";case"logs":return"ourlogs";case"tracemetrics":return"tracemetrics";case"preprod-app-size":return"preprodSize";default:return null}}function ua(e){if(Vr(e.displayType)==="unsupported")return`"${e.displayType}" widgets are not renderable in the terminal.`;return`"${e.widgetType}" widgets are not read through the events API.`}var $M=5,VM=10,qo=8;async function Kf(e,{org:t,widget:r,statsPeriod:H,project:n,environment:o,signal:s}){let i=Vr(r.displayType),a=Aa(r.widgetType),l=r.queries[0];if(i==="unsupported"||a===null||!l)return null;let c={org:t,dataset:a,query:l.conditions,statsPeriod:H,project:n,environment:o,referrer:"sentry-tui.dashboards",signal:s};switch(i){case"number":{let A=ZM(l),u=await Tt(e,{...c,fields:[A],limit:1}),d=u.rows[0]?kt(u.rows[0],A):void 0;return{kind:"number",value:d,formatted:pa(d),label:A}}case"series":{let A=al(H,r.interval,r.displayType==="bar"),u=[];for(let d of r.queries){let m=d.aggregates[0]??"count()",g=await Qs(e,{...c,query:d.conditions,yAxis:m,interval:A});u.push({buckets:g,label:d.name||m})}return{kind:"series",series:u}}case"table":{let A=zM(l),u=await Tt(e,{...c,fields:A,sort:l.orderby||void 0,limit:da(r)});return{kind:"table",headers:JM(l,A),fields:A,rows:u.rows}}case"bars":{let A=l.columns[0],u=l.aggregates[0]??"count()";return{kind:"bars",entries:(await Tt(e,{...c,fields:A?[A,u]:[u],sort:l.orderby||`-${u}`,limit:qo})).rows.map((p,O)=>({label:(A?Ge(p,A):void 0)??`#${O+1}`,value:kt(p,u)??0})),label:u}}}}function ZM(e){let t=e.selectedAggregate??0;return e.aggregates[t]??e.aggregates[0]??"count()"}function zM(e){let t=e.fields?.filter((H)=>H.length>0)??[];if(t.length>0)return t;let r=[...e.columns,...e.aggregates].filter((H)=>H.length>0);return r.length>0?r:["count()"]}function JM(e,t){return t.map((r,H)=>e.fieldAliases?.[H]||r)}function da(e){let t=e.limit??$M;return Math.max(1,Math.min(t,VM))}function pa(e){if(e===void 0||!Number.isFinite(e))return"\u2014";if(!Number.isInteger(e))return Math.abs(e)>=1000?Ef(e):e.toFixed(2);return Math.abs(e)>=1e4?Ef(e):String(e)}function Ef(e){let t=e<0?"-":"",r=Math.abs(e);if(r>=1e9)return`${t}${la(r/1e9)}b`;if(r>=1e6)return`${t}${la(r/1e6)}m`;return`${t}${la(r/1000)}k`}function la(e){return e.toFixed(1).replace(/\.0$/,"")}var Xf=5;var Bf={"0":["\u2588\u2588\u2588","\u2588 \u2588","\u2588 \u2588","\u2588 \u2588","\u2588\u2588\u2588"],"1":[" \u2588\u2588"," \u2588"," \u2588"," \u2588"," \u2588"],"2":["\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588"],"3":["\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"4":["\u2588 \u2588","\u2588 \u2588","\u2588\u2588\u2588"," \u2588"," \u2588"],"5":["\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"6":["\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"],"7":["\u2588\u2588\u2588"," \u2588"," \u2588"," \u2588"," \u2588"],"8":["\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"],"9":["\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"-":[" "," ","\u2588\u2588\u2588"," "," "],".":[" "," "," "," ","\u2588"],",":[" "," "," "," ","\u2588"]," ":[" "," "," "," "," "]};function eC(e){return e in Bf}function Wf(e){let t=0;while(t<e.length&&eC(e[t]))t++;return{numeric:e.slice(0,t),suffix:e.slice(t)}}function Ff(e){let t=[...e].map((r)=>Bf[r]).filter((r)=>r!==void 0);if(t.length===0)return Array.from({length:5},()=>"");return Array.from({length:5},(r,H)=>t.map((n)=>n[H]).join(" "))}var tC=2,rC=1,ma=1,en=8,HC=1,nC=Xf+1,oC=2,sC=1;function iC(e,t){switch(t){case"number":return nC;case"series":return en+HC;case"table":return sC+da(e);case"bars":return ga(e);case"unsupported":return oC}}function Uf(e,t){return tC+rC+iC(e,t)+ma}function ga(e){let t=e.limit??qo;return Math.max(1,Math.min(t,qo))}function Yf(e){return[...e].map((t,r)=>({widget:t,index:r})).sort((t,r)=>{let H=t.widget.layout,n=r.widget.layout;if(!H&&!n)return t.index-r.index;if(!H)return 1;if(!n)return-1;return H.y-n.y||H.x-n.x||t.index-r.index}).map(({widget:t})=>t)}function aC(e){let t=[],r=0;for(let H of e)t.push(r),r+=H;return t}function $f({heights:e,index:t,viewportHeight:r,scrollTop:H}){if(e.length===0||r<=0)return 0;let n=Math.max(0,Math.min(t,e.length-1)),o=aC(e),s=o[e.length-1]+e[e.length-1],i=Math.max(0,s-r),a=o[n],l=a+e[n],c=a<H||e[n]>r?a:l>H+r?l-r:H;return Math.min(Math.max(c,0),i)}import{jsxDEV as le}from"h:6___________________________";var cC=4,Mo=6,lC=8,AC=24,Vf=8,uC=8;function Jf({widget:e,kind:t,status:r,width:H,height:n,selected:o,placeholder:s=!1}){let i=S(),a=Math.max(4,H-cC),l=Math.max(0,n-3);return le("box",{style:{flexDirection:"column",width:H,height:n,flexShrink:0,marginBottom:ma,border:!0,borderColor:o?i.accent:i.border,backgroundColor:o?i.panel:void 0,paddingLeft:1,paddingRight:1},children:[le(dC,{widget:e,width:a,selected:o,placeholder:s},void 0,!1,void 0,this),le(pC,{widget:e,kind:t,status:s?void 0:r,width:a,lines:l},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function dC({widget:e,width:t,selected:r,placeholder:H}){let n=S(),o=e.displayType,s=Math.max(1,t-o.length-1);return le("box",{style:{flexDirection:"row",width:t,flexShrink:0},children:[le("text",{fg:H?n.panelAlt:r?n.accent:n.text,attributes:H?0:X,children:_(H?Oa(s,3):e.title||"Untitled widget",s)},void 0,!1,void 0,this),le("text",{fg:n.subText,attributes:rt,children:_(o,o.length+1,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function pC({widget:e,kind:t,status:r,width:H,lines:n}){if(t==="unsupported")return le(zf,{reason:ua(e),width:H,lines:n},void 0,!1,void 0,this);let o=se(r);if(o)return le(kC,{message:o.message,width:H,lines:n},void 0,!1,void 0,this);let s=B(r)??null;if(s===null&&r?.state==="ready")return le(zf,{reason:ua(e),width:H,lines:n},void 0,!1,void 0,this);let i=s===null||Ig(r)||r===void 0;switch(t){case"number":return le(mC,{data:s?.kind==="number"?s:void 0,pending:i,width:H},void 0,!1,void 0,this);case"series":return le(gC,{data:s?.kind==="series"?s:void 0,pending:i,width:H},void 0,!1,void 0,this);case"table":return le(fC,{data:s?.kind==="table"?s:void 0,width:H,lines:n},void 0,!1,void 0,this);case"bars":return le(_C,{data:s?.kind==="bars"?s:void 0,rows:ga(e),width:H},void 0,!1,void 0,this)}}function mC({data:e,pending:t,width:r}){let H=S(),{numeric:n,suffix:o}=Wf(e?.formatted??""),s=Ff(t||n.length===0?"000":n),i=t||n.length===0,a=s.length-1,l=o?` ${o}`:"",c=(s[0]?.length??0)+l.length;return le("box",{style:{flexDirection:"column",width:r,flexShrink:0},children:[s.map((A,u)=>le("box",{style:{flexDirection:"row",width:r,flexShrink:0},children:le("text",{fg:i?H.panelAlt:H.text,children:_(_(u===a?A+l:A,c),r,"center")},void 0,!1,void 0,this)},u,!1,void 0,this)),le("text",{fg:H.muted,children:_(e?.label??"",r,"center")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function gC({data:e,pending:t,width:r}){let H=S(),n=Math.max(4,r-Mo-1),o=(e?.series??[]).map(({buckets:m,label:g})=>({label:g,points:m.map(([p,O])=>[p,O[0]?.count??0])})),s=t?[{label:"",points:void 0}]:o.slice(0,en),i=[H.accent,H.success,H.warning,H.highlight],a=Math.floor(en/Math.max(1,s.length)),l=en%Math.max(1,s.length),c=s.length>1,A=s.flatMap(({label:m,points:g},p)=>{let O=a+(l-- >0?1:0),y=g?AH(g,n):void 0,L=zn(y,n,O,{floor:!0}),f=g&&g.length>0?Math.max(...g.map(([,k])=>k)):0;return L.map((k,I)=>({line:k,color:i[p%i.length],gutter:c?I===0?R(m,Mo):"":OC(I,L.length,f,Boolean(g))}))}),u=o[0]?.points,d=c?`${s.length} series`:o[0]?.label??"";return le("box",{style:{flexDirection:"column",width:r,flexShrink:0},children:[A.map(({line:m,gutter:g,color:p},O)=>le("box",{style:{flexDirection:"row",width:r,flexShrink:0},children:[le("text",{fg:H.muted,attributes:rt,children:`${_(g,Mo,c?"left":"right")} `},void 0,!1,void 0,this),le("text",{fg:t?H.panelAlt:p,children:m},void 0,!1,void 0,this)]},O,!0,void 0,this)),le("box",{style:{flexDirection:"row",width:r,flexShrink:0},children:[le("text",{fg:H.muted,attributes:rt,children:" ".repeat(Mo+1)},void 0,!1,void 0,this),le("text",{fg:H.subText,attributes:rt,children:yC(u,d,n)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function OC(e,t,r,H){if(!H)return"";if(e===0)return pa(r);if(e===t-1)return"0";return""}function yC(e,t,r){if(!e||e.length===0||r<12)return" ".repeat(Math.max(0,r));let H=Zf(e[0][0]),n=Zf(e[e.length-1][0]),o=Math.max(1,r-H.length-n.length);return`${H}${_(R(t,Math.max(0,o-4)),o,"center")}${n}`.slice(0,r)}function Zf(e){let t=new Date(e*1000);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function fC({data:e,width:t,lines:r}){let H=S(),n=e?.headers??[],o=e?.fields??[],s=(n.length>0?n:[""]).map((l,c)=>({key:String(c),width:"flex",priority:n.length-c,header:l,field:o[c]??""})),i=br(s,t,{gap:1,minFlex:uC}),a=Math.max(0,r-1);return le("box",{style:{flexDirection:"column",width:t,flexShrink:0},children:[le("text",{fg:H.muted,children:i.map(({column:l,width:c})=>_(l.header,c)).join(" ")},void 0,!1,void 0,this),Array.from({length:a},(l,c)=>{let A=e?.rows[c];return le("text",{fg:A?H.text:H.panelAlt,children:i.map(({column:u,width:d})=>_(A?SC(A,u.field):e?"":Oa(d,c),d)).join(" ")},c,!1,void 0,this)})]},void 0,!0,void 0,this)}function SC(e,t){let r=e[t];if(r===void 0||r===null||r==="")return"\u2014";if(typeof r==="number")return Number.isInteger(r)?String(r):r.toFixed(2);return String(r)}function Oa(e,t){if(e<=0)return"";let r=0.4+t*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(e,Math.floor(e*r))))}function _C({data:e,rows:t,width:r}){let H=S(),n=Math.max(lC,Math.min(AC,Math.floor(r*0.35))),o=Math.max(1,r-n-Vf-2),s=e?.entries??[],i=Math.max(1,...s.map((a)=>a.value));return le("box",{style:{flexDirection:"column",width:r,flexShrink:0},children:Array.from({length:t},(a,l)=>{let c=s[l],A=c?Math.max(1,Math.round(c.value/i*o)):0,u=c||!e?Math.max(0,o-A):0;return le("box",{style:{flexDirection:"row",width:r,flexShrink:0},children:[le("text",{fg:c?H.subText:H.panelAlt,children:`${_(c?.label??(e?"":Oa(n,l)),n)} `},void 0,!1,void 0,this),A>0?le("text",{fg:H.accent,children:"\u2588".repeat(A)},void 0,!1,void 0,this):null,u>0?le("text",{fg:H.panelAlt,children:"\u2591".repeat(u)},void 0,!1,void 0,this):null,le("text",{fg:c?H.text:H.panelAlt,children:_(c?Pe(c.value):"",Vf,"right")},void 0,!1,void 0,this)]},l,!0,void 0,this)})},void 0,!1,void 0,this)}function zf({reason:e,width:t,lines:r}){let H=S();return le(eS,{width:t,lines:r,children:[le("text",{fg:H.muted,children:R(e,t)},void 0,!1,void 0,this),le("text",{fg:H.subText,attributes:rt,children:R("Open it on sentry.io to see this one.",t)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function kC({message:e,width:t,lines:r}){let H=S();return le(eS,{width:t,lines:r,children:[le("text",{fg:H.danger,children:R("Failed to load this widget",t)},void 0,!1,void 0,this),le("text",{fg:H.muted,children:R(e,t)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function eS({width:e,lines:t,children:r}){return le("box",{style:{flexDirection:"column",width:e,height:t,flexShrink:0},children:r},void 0,!1,void 0,this)}import{useEffect as ya,useRef as tn,useState as tS}from"h:0__";function rS(e,{org:t,id:r,reloadToken:H=0}){let[n,o]=tS(me),s=tn(n);return s.current=n,ya(()=>{if(!e)return;let i=new AbortController,{signal:a}=i,l=!1;return o(_e(s.current,Date.now())),(async()=>{try{let c=await _y(e,{org:t,id:r,signal:a});if(!l)o(ge(Ly(c),Date.now()))}catch(c){if(l||a.aborted)return;o(Oe(s.current,Ne(c)))}})(),()=>{l=!0,i.abort()}},[e,t,r,H]),n}function Qo(e,t){return e.id??`#${t}`}function HS(e,{org:t,dashboardId:r,widgets:H,upto:n,statsPeriod:o,project:s,environment:i,reloadToken:a=0}){let[l,c]=tS(()=>new Map),A=JSON.stringify([t,r,o,s??null,i??null,a]),u=tn({org:t,statsPeriod:o,project:s,environment:i});u.current={org:t,statsPeriod:o,project:s,environment:i};let d=tn(new Set),m=tn(Promise.resolve()),g=tn(null);return ya(()=>{d.current=new Set,m.current=Promise.resolve(),c(new Map);let p=new AbortController;return g.current=p,()=>p.abort()},[A]),ya(()=>{if(!e)return;let p=g.current;if(!p)return;let O=Math.min(H.length,Math.max(0,n));for(let y=0;y<O;y++){let L=H[y],f=Qo(L,y);if(d.current.has(f))continue;if(d.current.add(f),!hC(L)){c((k)=>Co(k,f,ge(null,Date.now())));continue}c((k)=>Co(k,f,_e(void 0,Date.now()))),m.current=m.current.then(async()=>{if(p.signal.aborted)return;try{let k=await Kf(e,{...u.current,widget:L,signal:p.signal});if(!p.signal.aborted)c((I)=>Co(I,f,ge(k,Date.now())))}catch(k){if(p.signal.aborted)return;c((I)=>Co(I,f,Oe(void 0,Ne(k))))}})}},[e,H,n,A]),l}function hC(e){return Vr(e.displayType)!=="unsupported"&&Aa(e.widgetType)!==null&&e.queries.length>0}function Co(e,t,r){let H=new Map(e);return H.set(t,r),H}import{jsxDEV as gt}from"h:6___________________________";var bC=2,wC=2,xC="14d",TC=2,PC=1;function Sa(e){return{id:`dashboard:${e.id}`,sentryLocation:{screen:"dashboards.all",detail:{kind:"dashboard",dashboardId:e.id}},label:e.title,stateKey:Rl,initialState:{statsPeriod:xC,selectedEnvs:e.environment??[],selectedProjects:[]},render:(t)=>t.state?gt(qC,{...t,state:t.state,dashboard:e},void 0,!1,void 0,this):null}}function oS(e){return Sa({id:e,title:`Dashboard ${e}`,widgetDisplay:[]})}function qC({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,dashboard:i,updateView:a}){let l=S(),{dispatch:c}=r,A=nS(null),u=rS(e,{org:t,id:i.id,reloadToken:s}),d=B(u),m=se(u),g=u.state==="loading";SH(()=>{if(d)a(`dashboard:${i.id}`,{label:d.title})},[d,i.id,a]);let p=fa(()=>Yf(d?.widgets??[]),[d]),O=fa(()=>(i.widgetDisplay??[]).map((x,P)=>({id:`placeholder-${P}`,title:"",displayType:x,queries:[]})),[i.widgetDisplay]),y=d?p:O,L=!d,f=Boolean(d?.prebuiltId??i.prebuiltId);SH(()=>{c({type:"setEntries",payload:p})},[p,c]),SH(()=>{c({type:"setStatus",payload:{loading:g,error:m?.message,noun:"dashboard"}})},[g,m,c]);let k=nS(null);SH(()=>{if(!d?.period||k.current===d.id)return;k.current=d.id,c({type:"setStatsPeriod",payload:d.period})},[d,c]);let[I,h]=IC(bC);SH(()=>{h((x)=>Math.max(x,r.selected+1+wC))},[r.selected]);let b=r.selectedProjects.length>0?r.selectedProjects:void 0,w=r.selectedEnvs.length>0?r.selectedEnvs:void 0,T=HS(e,{org:t,dashboardId:i.id,widgets:p,upto:I,statsPeriod:r.statsPeriod,project:b,environment:w,reloadToken:s}),q=Math.max(20,n-TC),E=fa(()=>y.map((x)=>Uf(x,Vr(x.displayType))),[y]);SH(()=>{let x=A.current;if(!x||E.length===0)return;let P=x.viewport.height;if(P<=0)return;let N=$f({heights:E,index:r.selected,viewportHeight:P,scrollTop:x.scrollTop});if(N!==x.scrollTop)x.scrollTop=N},[E,r.selected,o]);let D=LC(()=>c({type:"setOpenDropdown",payload:null}),[c]);return gt("box",{style:{flexDirection:"column",width:n,height:o},children:[gt("box",{style:{flexDirection:"row",width:n,flexShrink:0,paddingLeft:1},children:[gt("text",{fg:l.text,attributes:X,children:R(d?.title??i.title,Math.max(8,n-24))},void 0,!1,void 0,this),gt("text",{fg:l.muted,children:d?.period?` saved on ${d.period}`:" read-only"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),gt(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,width:n,anchorTop:PC,onProjectChange:(x)=>c({type:"setSelectedProjects",payload:x}),onEnvChange:(x)=>c({type:"setSelectedEnvs",payload:x}),onPeriodChange:(x)=>c({type:"setStatsPeriod",payload:x}),onDropdownClose:D,onDropdownOpen:(x)=>c({type:"setOpenDropdown",payload:x})},void 0,!1,void 0,this),m&&!d?gt("box",{style:{flexDirection:"column",padding:1},children:[gt("text",{fg:l.danger,children:"Failed to load dashboard"},void 0,!1,void 0,this),gt("text",{fg:l.muted,children:m.message},void 0,!1,void 0,this),m.retryable?gt("text",{fg:l.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null,d&&y.length===0?gt("box",{style:{flexDirection:"column",padding:1},children:[gt("text",{fg:l.text,children:f?"This Sentry Built dashboard is not bundled in this version.":"This dashboard has no widgets."},void 0,!1,void 0,this),gt("text",{fg:l.muted,children:f?"Its widgets live in Sentry Web rather than the API; open it on sentry.io to view them.":"Add one on sentry.io \u2014 this client is read-only."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,gt("scrollbox",{ref:A,focused:H,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:l.panel,foregroundColor:l.muted}},style:{flexGrow:1,flexBasis:0,width:n},children:y.map((x,P)=>gt(Jf,{widget:x,kind:Vr(x.displayType),status:T.get(Qo(x,P)),width:q,height:E[P]-1,selected:H&&P===r.selected,placeholder:L},Qo(x,P),!1,void 0,this))},void 0,!1,void 0,this),y.length>0?gt("text",{fg:l.subText,attributes:rt,children:R(` widget ${Math.min(r.selected+1,y.length)} of ${y.length} \xB7 j/k to move \xB7 esc to go back`,n)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as Ot}from"h:6___________________________";var QC=4,NC=28;function jC(e){let t={key:"star",label:"\u2605",width:1,render:(i)=>Ot("text",{fg:i.isFavorited?e.warning:e.border,children:i.isFavorited?"\u2605":"\u2606"},void 0,!1,void 0,this)},r={key:"name",label:"Name",width:"flex",render:(i,a,l)=>Ot("text",{fg:a?e.text:e.accent,attributes:a?X:0,children:_(i.title,l)},void 0,!1,void 0,this)},H={key:"widgets",label:"Widgets",width:7,align:"right",priority:4,render:(i,a,l)=>Ot("text",{fg:e.text,children:_(DC(i),l,"right")},void 0,!1,void 0,this)},n={key:"lastVisited",label:"Last Visited",width:12,priority:5,render:(i,a,l)=>Ot("text",{fg:e.subText,children:_(i.lastVisited?he(i.lastVisited):"\u2014",l)},void 0,!1,void 0,this)};return{standard:[t,r,H,{key:"owner",label:"Owner",width:18,priority:3,render:(i,a,l)=>Ot("text",{fg:e.muted,children:_(RC(i),l)},void 0,!1,void 0,this)},{key:"access",label:"Access",width:10,priority:1,render:(i,a,l)=>Ot("text",{fg:e.muted,children:_(vC(i),l)},void 0,!1,void 0,this)},{key:"created",label:"Created",width:10,priority:2,render:(i,a,l)=>Ot("text",{fg:e.subText,children:_(i.dateCreated?he(i.dateCreated):"\u2014",l)},void 0,!1,void 0,this)},n],prebuilt:[t,r,{key:"description",label:"Description",width:"flex",priority:1,render:(i,a,l)=>Ot("text",{fg:e.muted,children:_(i.description??"",l)},void 0,!1,void 0,this)},H,n]}}function _a(e){let t=S(),{client:r,org:H,screen:n,state:o,focused:s,width:i,height:a,reloadToken:l}=e,{dispatch:c,focusSearch:A,handleSearchBlur:u}=o,m=Gf(n.id)??{title:n.item,description:"",sort:"recentlyViewed",searchPlaceholder:"Search dashboards\u2026",emptyTitle:"No dashboards found.",emptyLines:[]},g=m.filter==="onlyPrebuilt",p=CC(()=>Bi(g),[g]),O=yy(o.sort,m.sort,g),{dashboards:y,nextCursor:L}=wy(r,{org:H,filter:m.filter,query:o.committedQuery,sort:O,reloadToken:l}),f=B(y),k=se(y),I=y.state==="loading";sS(()=>{if(f)c({type:"setEntries",payload:f})},[f,c]),sS(()=>{c({type:"setStatus",payload:{loading:I,error:k?.message,noun:"dashboards"}})},[I,k,c]);let{pushView:h}=e,b=MC((q)=>{let E=f?.[q];if(E)h(Sa(E))},[f,h]);Ke(e.registerActions,{open:b});let w=jC(t),T=g?w.prebuilt:w.standard;return Ot("box",{style:{flexDirection:"column",width:i,height:a},children:[Ot(Lt,{value:o.searchQuery,placeholder:m.searchPlaceholder,focused:o.searchFocused,width:i,onInput:(q)=>c({type:"setSearchQuery",payload:q}),onFocus:A,onBlur:u},void 0,!1,void 0,this),Ot("box",{style:{flexDirection:"row",width:i,flexShrink:0,paddingLeft:1},children:[Ot("text",{fg:t.text,attributes:X,children:m.title},void 0,!1,void 0,this),Ot("text",{fg:t.muted,children:` ${m.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ot(fH,{value:O,items:p,open:o.openDropdown==="sort",width:i,anchorTop:Le+1,onChange:(q)=>c({type:"setSort",payload:q}),onOpen:()=>c({type:"setOpenDropdown",payload:"sort"}),onClose:()=>c({type:"setOpenDropdown",payload:null})},void 0,!1,void 0,this),Ot(nt,{rows:f,columns:T,width:i,minFlex:NC,selectedIndex:o.selected,focused:s,rowKey:(q)=>q.id,loading:ke(y),error:k,errorTitle:"Failed to load dashboards",onRowClick:e.activateRow,empty:{title:m.emptyTitle,lines:[o.committedQuery||void 0,...m.emptyLines]},layout:[a,QC]},void 0,!1,void 0,this),Ot(Re,{count:f?.length,noun:"dashboard",hasMore:L!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function DC(e){if(e.widgetDisplay.length>0)return String(e.widgetDisplay.length);return e.prebuiltId==null?"0":"\u2014"}function RC(e){let t=e.createdBy;if(!t)return"Sentry";return t.name||t.email||"\u2014"}function vC(e){let t=e.permissions;if(!t||t.isEditableByEveryone)return"All";let r=t.teamsWithEditAccess?.length??0;return r>0?`Creator +${r}`:"Creator"}import{useCallback as ba,useEffect as Eo,useMemo as dQ,useRef as wa}from"h:0__";import{RenderableEvents as Go}from"h:3__________";import{jsxDEV as ur}from"h:6___________________________";function iS({width:e,rows:t}){return ur("box",{style:{flexDirection:"column",width:e},children:Array.from({length:t},(r,H)=>ur(to,{width:e,seed:H},H,!1,void 0,this))},void 0,!1,void 0,this)}function aS({query:e}){let t=S();return ur("box",{style:{flexDirection:"column",padding:1},children:[ur("text",{fg:t.text,children:"No issues match this search."},void 0,!1,void 0,this),ur("text",{fg:t.muted,children:e},void 0,!1,void 0,this),ur("text",{fg:t.muted,children:`${ve(we("sentry.nav.search"))} to edit the query`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cS({error:e}){let t=S();return ur("box",{style:{flexDirection:"column",padding:1},children:[ur("text",{fg:t.danger,children:"Failed to load issues"},void 0,!1,void 0,this),ur("text",{fg:t.muted,children:e.message},void 0,!1,void 0,this),e.retryable?ur("text",{fg:t.muted,children:`${ve(we("sentry.app.refresh"))} to retry`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useMemo as XC}from"h:0__";import{useCallback as GC,useMemo as EC}from"h:0__";var lS=new WeakMap;function KC(e,t){let r=lS.get(e);if(!r)r=new Map,lS.set(e,r);let H=r.get(t);if(H)return H;let n=Wc(e,{org:t}).then((o)=>new Map(o.flatMap((s)=>s.user?[[s.user.id,s]]:[])));return r.set(t,n),n.catch(()=>{if(r.get(t)===n)r.delete(t)}),n}function No(e,t,r=!0){let H=GC((o)=>e&&t&&r?KC(e,t):null,[e,t,r]),n=EC(()=>({client:e,org:t,enabled:r}),[e,t,r]);return Kt(H,{resetKey:n}).status}var BC=new Map;function AS(e,t,r){let{supportsHighRes:H}=Zt(),o=No(e,t,r&&H),s=B(o);return XC(()=>s?Qg([...s.values()]):BC,[s])}import{useCallback as Hn,useEffect as eQ,useLayoutEffect as tQ,useRef as fS,useState as La}from"h:0__";import{useKeyboard as rQ}from"h:4___________";function WC(e,t,r){return r||e.inApp||(t?.inApp??!1)||!e.inApp&&t===void 0}function FC(e,t){if(!t)return!1;return e.filename===t.filename&&e.function===t.function&&e.lineNo===t.lineNo&&e.colNo===t.colNo}function jo(e,{includeSystemFrames:t=!1,newestFirst:r=!0}={}){let H=e?.frames??[];if(H.length===0)return[];let n=[],o=0;for(let s=0;s<H.length;s++){let i=H[s],a=H[s+1];if(!WC(i,a,t)){o++;continue}let l=n[n.length-1];if(l?.kind==="frame"&&o===0&&FC(i,l.frame)){l.repeats++;continue}n.push({kind:"frame",frame:i,index:s,repeats:0,hiddenBefore:o}),o=0}if(o>0){let s=n[n.length-1];if(s?.kind==="frame")s.hiddenBefore+=o}if(e?.framesOmitted){let[s,i]=e.framesOmitted;n.push({kind:"omitted",from:s,to:i})}return r?n.reverse():n}function uS(e){let r=[e.filename??e.module??"<unknown>"];if(e.function)r.push(`in ${e.function}`);if(e.lineNo!==null&&e.lineNo>0){let H=e.colNo!==null&&e.colNo>0?`${e.lineNo}:${e.colNo}`:String(e.lineNo);r.push(`at line ${H}`)}return r.join(" ")}function dS(e){return e.context.length>0||e.vars!==null&&Object.keys(e.vars).length>0}function pS(e){let t=e.filename??e.absPath??"";if(t.endsWith(".tsx"))return"tsx";if(t.endsWith(".ts"))return"typescript";if(t.endsWith(".js")||t.endsWith(".jsx"))return"javascript";if(t.endsWith(".md"))return"markdown";if(t.endsWith(".py")||t.endsWith(".pyi"))return"python";if(t.endsWith(".rb"))return"ruby";if(t.endsWith(".php"))return"php";if(t.endsWith(".go"))return"go";return}import{useCallback as mS,useState as UC}from"h:0__";import{useKeyboard as YC}from"h:4___________";import{jsxDEV as dr}from"h:6___________________________";var Ie=" ",rn=18;function Qt(){let e=S();return dr("text",{fg:e.subText,children:" \xB7 "},void 0,!1,void 0,this)}function st({children:e}){let t=S();return dr("text",{fg:t.subText,children:`${Ie}${e}`},void 0,!1,void 0,this)}function ka(e){return _(R(e,rn-1),rn)}function Xt({name:e,value:t,width:r}){let H=S();return dr("box",{style:{flexDirection:"row",width:r},children:[dr("text",{fg:H.muted,children:`${Ie}${ka(e)}`},void 0,!1,void 0,this),dr("text",{fg:H.text,children:R(t,Math.max(0,r-rn-Ie.length))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Do({index:e,title:t,count:r,collapsed:H,width:n,onToggle:o,children:s}){let i=S(),a=r===void 0?t:`${t} (${r})`,l=`${H?"\u25B8":"\u25BE"} ${e} `,c=Math.max(0,n-ce(l)-ce(a)-1);return dr("box",{style:{flexDirection:"column",width:n,paddingTop:1},children:[dr("box",{style:{flexDirection:"row",width:n},onMouseDown:o,children:[dr("text",{fg:i.accent,children:l},void 0,!1,void 0,this),dr("text",{fg:i.text,attributes:X,children:a},void 0,!1,void 0,this),dr("text",{fg:i.border,children:` ${"\u2500".repeat(c)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H?null:s]},void 0,!0,void 0,this)}function Ro(e,t){let[r,H]=UC(()=>new Set),n=mS((s)=>{H((i)=>{let a=new Set(i);if(a.has(s))a.delete(s);else a.add(s);return a})},[]),o=mS(()=>{H((s)=>s.size===e.length?new Set:new Set(e))},[e]);return YC((s)=>{if(!t)return;Rt([()=>{if(Q("sentry.view.toggleAllSections",s))return o(),"mine";if(Q("sentry.view.toggleSection",s)){let i=e[Number(s.name)-1];if(!i)return"notMine";return n(i),"mine"}return"notMine"}],s,je)}),{collapsed:r,toggle:n}}import{jsxDEV as Xe}from"h:6___________________________";function ha(e,t,r){return`${e}:${t}:${r}`}function gS({value:e,traceId:t,exceptionIndex:r,width:H,expandedFrames:n,selectedFrame:o,selectedFrameId:s,onFrameClick:i,includeSystemFrames:a}){let l=S(),c=jo(e.stacktrace,{includeSystemFrames:a});return Xe("box",{style:{flexDirection:"column",width:H},children:[Xe("text",{fg:l.danger,attributes:1,children:R(e.type??"Error",H)},void 0,!1,void 0,this),e.value?Xe("text",{fg:l.text,children:R(e.value,H)},void 0,!1,void 0,this):null,e.mechanism?Xe("text",{fg:l.muted,children:`mechanism: ${e.mechanism.type}${e.mechanism.handled?"":" \xB7 unhandled"}`},void 0,!1,void 0,this):null,c.map((A)=>{if(A.kind==="omitted")return Xe("text",{fg:l.muted,children:` \u2026 frames ${A.from}\u2013${A.to} omitted`},`omitted-${A.from}`,!1,void 0,this);let u=ha(t,r,A.index);return Xe($C,{frame:A.frame,width:H,repeats:A.repeats,hiddenBefore:A.hiddenBefore,expanded:n.has(u),selected:o===u,selectedId:s,onClick:()=>i(u)},A.index,!1,void 0,this)}),c.length===0?Xe("text",{fg:l.muted,children:"No stack trace available."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function $C({frame:e,width:t,repeats:r,hiddenBefore:H,expanded:n,selected:o,selectedId:s,onClick:i}){let a=S(),c=dS(e)?n?"\u25BE":"\u25B8":" ";return Xe("box",{style:{flexDirection:"column",width:t},children:[H>0?Xe("text",{fg:a.muted,children:` \u25B8 ${H} more frame${H===1?"":"s"}`},void 0,!1,void 0,this):null,Xe("box",{id:o?s:void 0,style:{flexDirection:"row",width:t,backgroundColor:o?a.selected:void 0},onMouseDown:i,children:[Xe("text",{fg:o?a.accent:a.muted,children:`${o?"\u276F":" "} ${c} `},void 0,!1,void 0,this),Xe("text",{fg:e.inApp?a.text:a.muted,children:R(uS(e),t-15)},void 0,!1,void 0,this),Xe("box",{style:{flexGrow:1}},void 0,!1,void 0,this),r>0?Xe("text",{fg:a.muted,children:`\xD7${r+1} `},void 0,!1,void 0,this):null,e.inApp?Xe("text",{fg:a.accent,children:"In App"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),n?Xe(VC,{frame:e,width:t},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function VC({frame:e,width:t}){let r=S(),H=Ho(),n=H?pS(e):void 0,o=e.vars?Object.entries(e.vars):[];return Xe("box",{style:{flexDirection:"column",width:t,paddingLeft:5},children:[e.context.map(([s,i])=>{let a=s===e.lineNo,l=String(s).padStart(5);return Xe("box",{style:{flexDirection:"row",width:t-5},children:[Xe("text",{fg:a?r.accent:r.muted,children:`${l} ${a?"\u276F":" "} `},void 0,!1,void 0,this),n&&H?Xe("code",{content:i??"",filetype:n,syntaxStyle:H,style:{flexGrow:1}},void 0,!1,void 0,this):Xe("text",{fg:a?r.text:r.muted,children:R(i??"",t-14)},void 0,!1,void 0,this)]},s,!0,void 0,this)}),o.length>0?Xe("box",{style:{flexDirection:"column",paddingTop:1},children:[Xe("text",{fg:r.muted,children:"Local variables"},void 0,!1,void 0,this),o.map(([s,i])=>Xe("text",{fg:r.muted,children:R(` ${s} = ${ZC(i)}`,t-6)},s,!1,void 0,this))]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function ZC(e){if(typeof e==="string")return e;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}import{useEffect as zC,useRef as OS,useState as JC}from"h:0__";function yS(e,{org:t,issueId:r,eventId:H="latest",reloadToken:n=0}){let[o,s]=JC(me),i=OS(o);i.current=o;let a=OS(null);return zC(()=>{if(!e||!r){a.current=null,s(me());return}let l=new AbortController,c=!1,A=a.current===r;return a.current=r,s(_e(A?i.current:me(),Date.now())),(async()=>{try{let u=await Gc(e,{org:t,issueId:r,eventId:H,signal:l.signal});if(c)return;s(ge(u,Date.now()))}catch(u){if(c||l.signal.aborted)return;s(Oe(i.current,{message:u instanceof Error?u.message:String(u),retryable:u instanceof pr?u.retryable:!0}))}})(),()=>{c=!0,l.abort()}},[e,t,r,H,n]),o}import{jsxDEV as V,Fragment as uQ}from"h:6___________________________";var SS=["exception","breadcrumbs","request","tags","contexts","sdk"],HQ={exception:"Stack Trace",breadcrumbs:"Breadcrumbs",request:"Request",tags:"Tags",contexts:"Contexts",sdk:"SDK"},_S=24,nQ=3,kS="issue-detail-selected-frame",oQ=8,vo="sentry.issue.actions";function Ia({client:e,org:t,group:r,width:H,height:n,focused:o,eventId:s,reloadToken:i,runIssueAction:a,openIssueAutofix:l}){let c=S(),A=yS(e,{org:t,issueId:r.id,eventId:s,reloadToken:i}),u=B(A),d=se(A),m=ke(A),g=fS(null),[p,O]=La(!1),{collapsed:y,toggle:L}=Ro(SS,o),[f,k]=La(),I=fS(f),[h,b]=La(()=>new Map),w=u?(HH(u.entries,"exception")?.data.values??[]).flatMap((G,Y)=>jo(G.stacktrace).filter((ee)=>ee.kind==="frame").map((ee)=>({key:ha(u.id,Y,ee.index),row:ee}))):[],T=w.find((G)=>G.key===f)??w[0],q=w[0]?.key,E=new Set(w.filter((G)=>h.get(G.key)??G.key===q).map((G)=>G.key));tQ(()=>{if(f===T?.key)return;I.current=T?.key,k(T?.key)},[T?.key,f]);let D=Hn((G)=>{b((Y)=>{let ee=new Map(Y),C=Y.get(G)??G===q;return ee.set(G,!C),ee})},[q]),x=Hn((G)=>{let Y=w[Math.max(0,Math.min(G,w.length-1))];if(!Y)return;I.current=Y.key,k(Y.key)},[w]),P=Hn((G)=>{let Y=w.findIndex((ee)=>ee.key===G);if(Y<0)return;x(Y),D(G)},[w,x,D]);rQ((G)=>{if(!o)return;if(Q(vo,G)){O((Y)=>!Y),je(G);return}if(p||y.has("exception")||!T)return;if(Q("sentry.nav.down",G)){let Y=Math.max(0,w.findIndex((ee)=>ee.key===I.current));if(Y>=w.length-1)return;x(Y+1),je(G);return}if(Q("sentry.nav.up",G)){let Y=Math.max(0,w.findIndex((ee)=>ee.key===I.current));if(Y===0)return;x(Y-1),je(G);return}if(Q("sentry.nav.open",G)){let Y=w.find((ee)=>ee.key===I.current)??T;D(Y.key),je(G)}}),eQ(()=>{g.current?.scrollChildIntoView(kS)},[T?.key,h,n]);let N=Math.max(20,H-2),F=sQ(r),j=F.findIndex((G)=>G.command===vo),U=Ie.length+(Cn(F)[Math.max(0,j)]??0),z=[{value:"sentry.issue.bookmark",label:r.isBookmarked?"Unbookmark":"Bookmark"},...!r.hasSeen?[{value:"sentry.issue.markReviewed",label:"Mark reviewed"}]:[],{value:"autofix",label:"Autofix"}],oe=Hn((G)=>{let Y=G[0];if(O(!1),Y==="autofix")l(r);else if(Y)a(Y,r)},[r,l,a]),ie=Hn((G)=>{if(G.command===vo)O((Y)=>!Y);else a(G.command,r)},[r,a]);return V(uQ,{children:[V("scrollbox",{ref:g,focused:o,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:c.panel,foregroundColor:c.muted}},style:{width:H,height:n,paddingLeft:1},children:[V(aQ,{group:r,width:N,actions:F,actionsOpen:p,onActionPress:ie},void 0,!1,void 0,this),m?V("text",{fg:c.muted,children:`${Ie}Loading event\u2026`},void 0,!1,void 0,this):null,d?V("box",{style:{flexDirection:"column",paddingTop:1},children:[V("text",{fg:c.danger,children:`${Ie}Failed to load event`},void 0,!1,void 0,this),V("text",{fg:c.muted,children:R(`${Ie}${d.message}`,N)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,u?SS.map((G,Y)=>V(Do,{index:Y+1,title:HQ[G],count:cQ(G,u),collapsed:y.has(G),width:N,onToggle:()=>L(G),children:V(lQ,{sectionKey:G,event:u,width:N,expandedFrames:E,selectedFrame:T?.key,selectedFrameId:kS,onFrameClick:P},void 0,!1,void 0,this)},G,!1,void 0,this)):null]},void 0,!0,void 0,this),p?V(lt,{title:"Actions",items:z,selected:[],anchorLeft:U,anchorTop:oQ+ft,availableWidth:H,showAll:!1,showSelection:!1,onSelect:oe,onClose:()=>O(!1)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function sQ(e){return[e.status===Vt.RESOLVED?{command:"sentry.issue.unresolve",label:"unresolve",inlineHotkey:!0}:{command:"sentry.issue.resolve",label:"resolve",inlineHotkey:!0},e.status===Vt.IGNORED?{command:"sentry.issue.archive",label:"unarchive",inlineHotkey:!0}:{command:"sentry.issue.archive",label:"archive",inlineHotkey:!0},{command:vo,label:"actions",inlineHotkey:!0,caret:!0}]}function iQ(e){let t=e.stats?.["24h"],r=t?.length?Math.min(_S,t.length):0;return zn(t,r||_S,nQ,{floor:!0})}function aQ({group:e,width:t,actions:r,actionsOpen:H,onActionPress:n}){let o=S(),s=o.level[e.level]??o.level.unknown,i=Math.max(12,t-2),a=iQ(e),l=Math.max(...a.map(ce));return V("box",{style:{flexDirection:"column",width:t},children:[V("box",{style:{flexDirection:"row",width:t},children:[V("text",{fg:s,children:"\u2503 "},void 0,!1,void 0,this),V(pH,{text:Kr(e),fallback:"(no title)",width:i,fg:o.text,attributes:X},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V("box",{style:{flexDirection:"row",width:t},children:[V("text",{fg:s,children:"\u2503 "},void 0,!1,void 0,this),V(pH,{text:Wn(e),fallback:"(no error message)",width:i,fg:o.muted},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V("box",{style:{flexDirection:"row",width:t,paddingTop:1},children:[V("text",{children:Ie},void 0,!1,void 0,this),V(aH,{platform:e.project.platform},void 0,!1,void 0,this),V("text",{fg:o.muted,children:e.project.slug},void 0,!1,void 0,this),V(Qt,{},void 0,!1,void 0,this),V("text",{fg:o.muted,children:e.priority?`${e.priority} priority`:"no priority"},void 0,!1,void 0,this),V(Qt,{},void 0,!1,void 0,this),V("text",{fg:o.muted,children:e.assignedTo?.name??"unassigned"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V("box",{style:{flexDirection:"row",width:t,alignItems:"center",paddingTop:1},children:[V("text",{children:Ie},void 0,!1,void 0,this),V("text",{fg:o.muted,children:"24h "},void 0,!1,void 0,this),V("box",{style:{flexDirection:"column",alignItems:"flex-start",width:l,flexShrink:0},children:a.map((c,A)=>V("text",{fg:o.accent,children:c},A,!1,void 0,this))},void 0,!1,void 0,this),V("text",{children:" "},void 0,!1,void 0,this),V("text",{fg:o.muted,children:uH(e.count,"event")},void 0,!1,void 0,this),V(Qt,{},void 0,!1,void 0,this),V("text",{fg:o.muted,children:uH(e.userCount,"user")},void 0,!1,void 0,this),V(Qt,{},void 0,!1,void 0,this),V("text",{fg:o.muted,children:`first seen ${he(e.firstSeen)} ago`},void 0,!1,void 0,this),V(Qt,{},void 0,!1,void 0,this),V("text",{fg:o.muted,children:`last seen ${he(e.lastSeen)} ago`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V("box",{style:{flexDirection:"row",width:t},children:[V("text",{children:Ie},void 0,!1,void 0,this),V(Qn,{chips:r,activeIndex:H?r.length-1:void 0,onPress:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V("text",{fg:o.border,children:"\u2500".repeat(t)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cQ(e,t){switch(e){case"breadcrumbs":return HH(t.entries,"breadcrumbs")?.data.values?.length;case"tags":return t.tags?.length;case"contexts":return Object.keys(t.contexts??{}).length;default:return}}function lQ({sectionKey:e,event:t,width:r,expandedFrames:H,selectedFrame:n,selectedFrameId:o,onFrameClick:s}){let i=S();switch(e){case"exception":{let l=HH(t.entries,"exception")?.data.values??[];if(l.length===0)return V(st,{children:"No exception on this event."},void 0,!1,void 0,this);return V("box",{style:{flexDirection:"column",paddingLeft:Ie.length},children:l.map((c,A)=>V(gS,{value:c,traceId:t.id,exceptionIndex:A,width:r-Ie.length,expandedFrames:H,selectedFrame:n,selectedFrameId:o,onFrameClick:s,includeSystemFrames:!1},A,!1,void 0,this))},void 0,!1,void 0,this)}case"breadcrumbs":{let a=HH(t.entries,"breadcrumbs")?.data.values??[];if(a.length===0)return V(st,{children:"No breadcrumbs."},void 0,!1,void 0,this);return V("box",{style:{flexDirection:"column",width:r},children:a.map((l,c)=>V(AQ,{crumb:l,width:r},c,!1,void 0,this))},void 0,!1,void 0,this)}case"request":{let a=HH(t.entries,"request")?.data;if(!a?.url)return V(st,{children:"No request data."},void 0,!1,void 0,this);return V("box",{style:{flexDirection:"column",width:r},children:[V("text",{fg:i.text,children:R(`${Ie}${a.method??"GET"} ${a.url}`,r)},void 0,!1,void 0,this),(a.headers??[]).map(([l,c])=>V(Xt,{name:l,value:c,width:r},l,!1,void 0,this))]},void 0,!0,void 0,this)}case"tags":{let a=t.tags??[];if(a.length===0)return V(st,{children:"No tags."},void 0,!1,void 0,this);return V("box",{style:{flexDirection:"column",width:r},children:a.map((l)=>V(Xt,{name:l.key,value:l.value,width:r},l.key,!1,void 0,this))},void 0,!1,void 0,this)}case"contexts":{let a=Object.entries(t.contexts??{});if(a.length===0)return V(st,{children:"No contexts."},void 0,!1,void 0,this);return V("box",{style:{flexDirection:"column",width:r},children:a.map(([l,c])=>V(Xt,{name:l,value:hS(c),width:r},l,!1,void 0,this))},void 0,!1,void 0,this)}case"sdk":if(!t.sdk)return V(st,{children:"Unknown SDK."},void 0,!1,void 0,this);return V("box",{style:{flexDirection:"row",width:r},children:[V("text",{fg:i.text,children:`${Ie}${t.sdk.name}`},void 0,!1,void 0,this),V("text",{fg:i.muted,children:` ${t.sdk.version}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}}function AQ({crumb:e,width:t}){let r=S(),H=e.timestamp?e.timestamp.slice(11,19):"--:--:--",n=e.category??e.type,o=e.message??hS(e.data??{}),s=Ie.length+H.length+2+rn;return V("box",{style:{flexDirection:"row",width:t},children:[V("text",{fg:r.subText,children:`${Ie}${H} `},void 0,!1,void 0,this),V("text",{fg:r.muted,children:ka(n)},void 0,!1,void 0,this),V("text",{fg:r.text,children:R(o,Math.max(0,t-s))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hS(e){return Object.entries(e).filter(([t])=>t!=="type").map(([t,r])=>`${t}=${String(r)}`).join(" ")}import{jsxDEV as et}from"h:6___________________________";var pQ=1,mQ=1;function Bt(e){let{client:t,org:r,state:H,focused:n,width:o,height:s,reloadToken:i,pendingIds:a,pushView:l,activateRow:c,registerActions:A}=e,u=S(),{dispatch:d}=H,m="screen"in e?Ql(e.screen.item):void 0,g="screen"in e?m?.label:e.title,p="screen"in e?m?.description:e.description,O="screen"in e?e.onProjectSelect:(C)=>d({type:"setSelectedProjects",payload:C}),y=wa(null),L=wa(null),f=ba((C)=>{let v=tr(H)[C];if(v)l(gQ(v,t,r))},[H,l,t,r]),k=ba(()=>d({type:"setOpenDropdown",payload:null}),[d]),I=ba((C)=>{let v=y.current;if(v)v.removeAllListeners(Go.FOCUSED),v.removeAllListeners(Go.BLURRED);if(y.current=C,C)C.on(Go.FOCUSED,H.focusSearch),C.on(Go.BLURRED,H.handleSearchBlur)},[H.focusSearch,H.handleSearchBlur]),h=jc(H.sort),{issues:b,statsLoading:w,nextCursor:T,prevCursor:q,page:E,nextPage:D,previousPage:x}=ro(t,{org:r,query:H.committedQuery,sort:h,statsPeriod:H.statsPeriod,project:H.selectedProjects.length>0?H.selectedProjects:void 0,environment:H.selectedEnvs.length>0?H.selectedEnvs:void 0,reloadToken:i});Ke(A,{open:f,nextPage:D,previousPage:x});let P=wa(E);Eo(()=>{if(P.current===E)return;P.current=E,d({type:"setSelected",payload:0})},[E,d]);let N=b.state==="loading",F=Je(b),j=B(b),U=tr(H),z=U.length>0?U:j,oe=se(b),ie=z!==void 0&&(N||oe!==void 0);Eo(()=>{if(j)d({type:"setEntries",payload:j})},[j,d]),Eo(()=>{d({type:"setStatus",payload:{loading:N||w,since:F,error:oe?.message,noun:"issues"}})},[N,w,F,oe,b,d]),gH(L,{index:H.selected,rowCount:z?.length??0,rowHeight:Ii,layout:[s]});let G=dQ(()=>(z??[]).some((C)=>C.assignedTo?.type==="user"),[z]),Y=AS(t,r,G),ee=Math.max(20,o-pQ);return et("box",{style:{flexDirection:"column",width:o,height:s},children:[g?et("box",{style:{flexDirection:"row",width:o,flexShrink:0,paddingLeft:1},children:[et("text",{fg:u.text,attributes:X,children:g},void 0,!1,void 0,this),p?et("text",{fg:u.muted,children:` ${R(p,Math.max(0,ee-ce(g)-3))}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null,et("box",{style:{flexDirection:"row",width:o,flexShrink:0,height:3,border:!0,borderStyle:"rounded",borderColor:H.searchFocused?u.accent:u.border,backgroundColor:u.panel,paddingLeft:1,paddingRight:1},children:[et(Gt,{},void 0,!1,void 0,this),et("input",{ref:I,value:H.searchQuery,placeholder:"Search issues\u2026",focused:H.searchFocused,onInput:(C)=>d({type:"setSearchQuery",payload:C}),style:{flexGrow:1,textColor:u.text,backgroundColor:u.panel,focusedTextColor:u.text,focusedBackgroundColor:u.panel,placeholderColor:u.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),et(Ve,{client:t,org:r,openDropdown:H.openDropdown,selectedProjects:H.selectedProjects,selectedEnvs:H.selectedEnvs,statsPeriod:H.statsPeriod,sort:{value:h,items:qs,onChange:(C)=>d({type:"setSort",payload:C})},width:o,anchorTop:Le+(g?mQ:0),onProjectChange:O,onEnvChange:(C)=>d({type:"setSelectedEnvs",payload:C}),onPeriodChange:(C)=>d({type:"setStatsPeriod",payload:C}),onDropdownClose:k,onDropdownOpen:(C)=>d({type:"setOpenDropdown",payload:C})},void 0,!1,void 0,this),et(Jn,{width:ee,selectionBelow:n&&H.selected===0&&(z?.length??0)>0},void 0,!1,void 0,this),et("scrollbox",{ref:L,focused:n,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:u.panel,foregroundColor:u.muted}},style:{flexGrow:1,flexBasis:0,width:o},children:[z===void 0&&ke(b)?et(iS,{width:ee,rows:Ps},void 0,!1,void 0,this):null,z!==void 0&&z.length===0&&!N?et(aS,{query:H.committedQuery},void 0,!1,void 0,this):null,z?.map((C,v)=>et(eo,{group:C,selected:n&&v===H.selected,selectionBelow:n&&v+1===H.selected,width:ee,pending:a.has(C.id),assigneeAvatarUrl:Ng(C.assignedTo,Y),onClick:()=>c(v)},C.id,!1,void 0,this)),oe&&z===void 0?et(cS,{error:oe},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),ie?et("text",{fg:u.muted,children:oe?` \u26A0 ${R(oe.message,ee-3)}`:""},void 0,!1,void 0,this):null,et(Re,{count:z?.length,noun:"issue",hasMore:T!==null,pagination:T!==null||q!==null||E>1?{page:E,hasPrevious:E>1&&q!==null,hasNext:T!==null,loading:N,onPrevious:x,onNext:D}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function gQ(e,t,r){return{id:`issue:${e.id}`,sentryLocation:{screen:"issues.feed",detail:{kind:"issue",issueId:e.id}},label:e.shortId,issue:e,render:(H)=>et(Ia,{client:t,org:r,group:H.issue??e,width:H.width,height:H.height,focused:H.focused,reloadToken:H.reloadToken,runIssueAction:H.runIssueAction,openIssueAutofix:H.openIssueAutofix},void 0,!1,void 0,this)}}var OQ=(e,{org:t,id:r,signal:H})=>vc(e,{org:t,issueId:r,signal:H});function Ko(e,t){return{id:`issue:${e}`,sentryLocation:{screen:"issues.feed",detail:{kind:"issue",issueId:e,eventId:t}},label:`Issue ${e}`,render:(r)=>et(yQ,{...r,issueId:e,eventId:t},void 0,!1,void 0,this)}}function yQ({client:e,org:t,issueId:r,eventId:H,reloadToken:n,width:o,height:s,focused:i,updateView:a,issue:l,runIssueAction:c,openIssueAutofix:A}){let u=Ar(e,{org:t,id:r,reloadToken:n,load:OQ}),d=B(u);if(Eo(()=>{if(d)a(`issue:${r}`,{label:d.shortId,issue:d})},[d,r,a]),!d)return et(lr,{status:u,noun:"issue",width:o,height:s},void 0,!1,void 0,this);return et(Ia,{client:e,org:t,group:l??d,eventId:H,width:o,height:s,focused:i,reloadToken:n,runIssueAction:c,openIssueAutofix:A},void 0,!1,void 0,this)}import{useCallback as CS,useEffect as xQ}from"h:0__";var xa=[{value:"popularity",label:"Most Starred"},{value:"visited",label:"Recently Viewed"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-created",label:"Created (Newest)"},{value:"created",label:"Created (Oldest)"}];function LS(e){return xa.some((t)=>t.value===e)?e:"popularity"}function fQ(e){switch(e){case"popularity":return["-popularity","-visited","-created"];case"visited":return["-visited","-popularity","-created"];case"name":return["name","-visited","-created"];case"-name":return["-name","-visited","-created"];case"created":return["created","-popularity","-visited"];case"-created":return["-created","-popularity","-visited"]}}var SQ=20;async function IS(e,{org:t,viewId:r,signal:H}){return(await e.request(`/organizations/${t}/group-search-views/${r}/`,{signal:H})).data}async function Ta(e,{org:t,createdBy:r,sort:H="popularity",limit:n=SQ,cursor:o,signal:s}){return e.request(`/organizations/${t}/group-search-views/`,{query:{createdBy:r,sort:fQ(H),per_page:n,cursor:o},signal:s})}import{useEffect as xS,useMemo as hQ,useRef as LQ}from"h:0__";import{useEffect as _Q,useRef as kQ,useState as bS}from"h:0__";function wS(e,{org:t,sort:r,reloadToken:H=0}){let[n,o]=bS(me),[s,i]=bS({mine:null,others:null}),a=kQ(n);return a.current=n,_Q(()=>{if(!e)return;let l=new AbortController,{signal:c}=l,A=!1;return o(_e(a.current,Date.now())),(async()=>{try{let[u,d]=await Promise.all([Ta(e,{org:t,createdBy:"me",sort:r,signal:c}),Ta(e,{org:t,createdBy:"others",sort:r,signal:c})]);if(A)return;i({mine:u.nextCursor,others:d.nextCursor}),o(ge([{title:"Created by Me",views:u.data},{title:"Created by Others",views:d.data}],Date.now()))}catch(u){if(A||c.aborted)return;o(Oe(a.current,Ne(u)))}})(),()=>{A=!0,l.abort()}},[e,t,r,H]),{sections:n,nextCursors:s}}import{jsxDEV as Ye}from"h:6___________________________";var IQ=1,TS=26,PS=10,qS=6,bQ=1;function MS({client:e,org:t,width:r,height:H,focused:n,selectedIndex:o,sort:s,openDropdown:i,onSortChange:a,onDropdownOpen:l,onDropdownClose:c,onRowsChange:A,onStatusChange:u,reloadToken:d}){let m=S(),g=LQ(null),p=LS(s),{sections:O,nextCursors:y}=wS(e,{org:t,sort:p,reloadToken:d}),L=B(O),f=se(O),k=O.state==="loading",I=hQ(()=>(L??[]).flatMap((w)=>w.views.map((T)=>({view:T,projectIds:T.projects.filter((q)=>q!==-1).map(String),statsPeriod:T.timeFilters?.period??xt}))),[L]);xS(()=>{A?.(I)},[I,A]),xS(()=>{u?.({loading:k,error:f?.message})},[k,f,u]),gH(g,{index:o,rowCount:I.length,rowHeight:IQ,layout:[H]});let h=Math.max(20,r-bQ),b=-1;return Ye("box",{style:{flexDirection:"column",width:r,height:H},children:[Ye("box",{style:{flexDirection:"row",width:r,flexShrink:0,paddingLeft:1},children:[Ye("text",{fg:m.text,attributes:X,children:"All Views"},void 0,!1,void 0,this),Ye("text",{fg:m.muted,children:" Saved issue searches for this organization."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ye(fH,{value:p,items:xa,open:i==="sort",width:r,anchorTop:1,onChange:a,onOpen:l,onClose:c},void 0,!1,void 0,this),Ye("scrollbox",{ref:g,focused:n,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:m.panel,foregroundColor:m.muted}},style:{flexGrow:1,flexBasis:0,width:r},children:[L===void 0&&ke(O)?Ye("text",{fg:m.muted,children:" Loading views\u2026"},void 0,!1,void 0,this):null,f&&L===void 0?Ye("box",{style:{flexDirection:"column",padding:1},children:[Ye("text",{fg:m.danger,children:"Failed to load views"},void 0,!1,void 0,this),Ye("text",{fg:m.muted,children:f.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,L?.map((w)=>Ye("box",{style:{flexDirection:"column",width:h},children:[Ye("text",{fg:m.muted,attributes:X,children:` ${w.title}`},void 0,!1,void 0,this),w.views.length===0?Ye("text",{fg:m.subText,children:" No saved views."},void 0,!1,void 0,this):null,w.views.map((T)=>(b+=1,Ye(wQ,{view:T,width:h,selected:n&&b===o},T.id,!1,void 0,this)))]},w.title,!0,void 0,this))]},void 0,!0,void 0,this),Ye(Re,{count:L===void 0?void 0:I.length,noun:"view",hasMore:y.mine!==null||y.others!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function wQ({view:e,width:t,selected:r}){let H=S(),n=r?"\u276F":" ",o=e.starred?"\u2605":" ",s=2+TS+PS+qS+3,i=Math.max(6,t-s);return Ye("box",{style:{flexDirection:"row",width:t,backgroundColor:r?H.panel:void 0},children:[Ye("text",{fg:H.accent,children:n},void 0,!1,void 0,this),Ye("text",{fg:e.starred?H.warning:H.muted,children:o},void 0,!1,void 0,this),Ye("text",{fg:r?H.text:H.subText,attributes:r?X:0,children:` ${_(e.name,TS)}`},void 0,!1,void 0,this),Ye("text",{fg:H.muted,children:` ${_(R(e.query,i),i)}`},void 0,!1,void 0,this),Ye("text",{fg:H.subText,children:` ${_(e.lastVisited?he(e.lastVisited):"\u2014",PS,"right")}`},void 0,!1,void 0,this),Ye("text",{fg:H.subText,children:_(`${e.stars}\u2605`,qS,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as nn}from"h:6___________________________";function QS(e){let{client:t,org:r,state:H,focused:n,width:o,height:s,reloadToken:i,pushView:a,registerActions:l}=e,{dispatch:c}=H,A=CS((d)=>{let m=tr(H)[d];if(m)a(TQ(m))},[H,a]);Ke(l,{open:A});let u=CS((d)=>c({type:"setStatus",payload:{...d,noun:"saved views"}}),[c]);return nn(MS,{client:t,org:r,width:o,height:s,focused:n,selectedIndex:H.selected,sort:H.sort,openDropdown:H.openDropdown,onSortChange:(d)=>c({type:"setSort",payload:d}),onDropdownOpen:()=>c({type:"setOpenDropdown",payload:"sort"}),onDropdownClose:()=>c({type:"setOpenDropdown",payload:null}),onRowsChange:(d)=>c({type:"setEntries",payload:d}),onStatusChange:u,reloadToken:i},void 0,!1,void 0,this)}function TQ(e){return{id:`saved-view:${e.view.id}`,sentryLocation:{screen:"issues.all-views",detail:{kind:"issue_view",viewId:e.view.id}},label:e.view.name,stateKey:Es,initialState:{query:e.view.query,sort:e.view.querySort,statsPeriod:e.statsPeriod,selectedProjects:e.projectIds,selectedEnvs:e.view.environments},render:(t)=>t.state?nn(Bt,{...t,state:t.state,title:e.view.name,description:e.view.query},void 0,!1,void 0,this):null}}var PQ=(e,{org:t,id:r,signal:H})=>IS(e,{org:t,viewId:r,signal:H});function NS(e){return{id:`saved-view:${e}`,label:`View ${e}`,stateKey:Es,sentryLocation:{screen:"issues.all-views",detail:{kind:"issue_view",viewId:e}},render:(t)=>t.state?nn(qQ,{...t,state:t.state,viewId:e},void 0,!1,void 0,this):null}}function qQ({client:e,org:t,state:r,viewId:H,reloadToken:n,width:o,height:s,updateView:i,...a}){let l=Ar(e,{org:t,id:H,reloadToken:n,load:PQ}),c=B(l);if(xQ(()=>{if(!c)return;r.dispatch({type:"seed",payload:{query:c.query,sort:c.querySort,statsPeriod:c.timeFilters.period??void 0,selectedProjects:c.projects.filter((A)=>A!==-1).map(String),selectedEnvs:c.environments}}),i(`saved-view:${H}`,{label:c.name})},[r.dispatch,i,c,H]),!c)return nn(lr,{status:l,noun:"saved view",width:o,height:s},void 0,!1,void 0,this);return nn(Bt,{...a,client:e,org:t,state:r,reloadToken:n,width:o,height:s,updateView:i,title:c.name,description:c.query},void 0,!1,void 0,this)}import{useCallback as Ga,useEffect as os,useMemo as Ea,useRef as F_}from"h:0__";var qe={error:"error",metric:"metric_issue",cron:"monitor_check_in_failure",uptime:"uptime_domain_failure",issueStream:"issue_stream",mobileBuild:"preprod_size_analysis"},MQ=50,qa=[{value:"-latestGroup",label:"Latest Issue (newest)"},{value:"latestGroup",label:"Latest Issue (oldest)"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"type",label:"Type (A-Z)"},{value:"-type",label:"Type (Z-A)"},{value:"-connectedWorkflows",label:"Most Alerts"},{value:"connectedWorkflows",label:"Fewest Alerts"}],jS="-latestGroup";function DS(e){return qa.some((t)=>t.value===e)?e:jS}var Pa=100;async function RS(e,{org:t,query:r,sortBy:H=jS,project:n,limit:o=MQ,cursor:s,signal:i}){let a=await ws({...e.generatedOptions(i),path:{organization_id_or_slug:t},query:{query:r||void 0,sortBy:H,project:Fe(n),per_page:o}},s);return e.generatedPage({...a,data:KS(a.data)})}async function vS(e,{org:t,detectorId:r,signal:H}){return(await e.request(`/organizations/${t}/detectors/${r}/`,{signal:H})).data}var CQ=20;async function GS(e,{org:t,detectorId:r,statsPeriod:H,limit:n=CQ,cursor:o,signal:s}){return e.request(`/organizations/${t}/open-periods/`,{query:{detectorId:r,statsPeriod:H,per_page:n,cursor:o},signal:s})}async function ES(e,{org:t,ids:r,signal:H}){let n=[...new Set(r)];if(n.length===0)return[];let o=[];for(let i=0;i<n.length;i+=Pa)o.push(n.slice(i,i+Pa));return(await Promise.all(o.map((i)=>ws({...e.generatedOptions(H),path:{organization_id_or_slug:t},query:{id:i.map(Number),per_page:Pa}}).then((a)=>KS(a.data)).catch(()=>[])))).flat()}function KS(e){return Array.isArray(e)?e:[]}var XS="\u254C",QQ={ok:"\u2584",missed:"\u2591",timeout:"\u2592",in_progress:"\u2593",error:"\u2588",unknown:"?"},NQ={ok:"Okay",error:"Failed",in_progress:"In Progress",missed:"Missed",timeout:"Timed Out",unknown:"Unknown"},BS={precedence:["unknown","error","timeout","missed","ok","in_progress"],glyphs:QQ,labels:NQ},jQ={success:"\u2584",missed_window:"?",failure:"\u2593",failure_incident:"\u2588"},DQ={success:"Uptime",failure:"Failure",failure_incident:"Downtime",missed_window:"Unknown"},WS={precedence:["failure_incident","failure","success","missed_window"],glyphs:jQ,labels:DQ};function FS(e,t){if(!Number.isFinite(e)||!Number.isFinite(t))return 60;if(e<=0||t<=0)return 60;return Math.max(60,Math.ceil(e/Math.floor(t)))}function Xo(e,{width:t,since:r,until:H,config:n}){let o=Math.max(0,Math.floor(t));if(o===0)return[];let s=H>r?H-r:0,i=s/o,a=Array.from({length:o},(l,c)=>({status:null,glyph:"\xB7",total:0,counts:{},start:r+Math.round(c*i),end:r+Math.round((c+1)*i)}));if(s>0)for(let l of e??[]){let c=l?.[0],A=l?.[1];if(typeof c!=="number"||!Number.isFinite(c)||!A)continue;let u=Math.min(o-1,Math.max(0,Math.floor((c-r)/s*o)));RQ(a[u],A)}for(let l of a)vQ(l,n);return a}function US(e,t){return t.precedence.map((r)=>({status:r,label:t.labels[r],count:e.reduce((H,n)=>H+(n.counts[r]??0),0)})).filter((r)=>r.count>0)}function RQ(e,t){for(let[r,H]of Object.entries(t)){if(typeof H!=="number"||!Number.isFinite(H)||H<=0)continue;e.counts[r]=(e.counts[r]??0)+H,e.total+=H}}function vQ(e,t){if(e.total===0)return;let r=t.precedence.find((H)=>(e.counts[H]??0)>0);if(r===void 0){e.glyph="?";return}e.status=r,e.glyph=t.glyphs[r]??"?"}function Ma(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)?Object.entries(e):[]}function $S(e){let t={};for(let[r,H]of Ma(e))if(typeof H==="number"&&Number.isFinite(H))t[r]=H;return t}function GQ(e){if(!Array.isArray(e)||e.length!==2||typeof e[0]!=="number"||!Number.isFinite(e[0]))return;return[e[0],$S(e[1])]}function EQ(e){if(!Array.isArray(e)||e.length!==2||typeof e[0]!=="number"||!Number.isFinite(e[0]))return;let t={};for(let[r,H]of Ma(e[1]))t[r]=$S(H);return[e[0],t]}function VS(e,t){let r={};for(let[H,n]of Ma(e)){let o=[];if(Array.isArray(n))for(let s of n){let i=t(s);if(i!==void 0)o.push(i)}r[H]=o}return r}var KQ=100,Bo=86400;function Wo(e){let t=Yt(e);if(t===void 0||t<=0)return Bo;return Math.floor(t*60)}function Ca(e,{windowSeconds:t=Bo,now:r=Date.now()}={}){let H=Math.floor(r/1000);return{since:H-t,until:H,resolution:FS(t,e)}}var YS=[60,120,300,600,900,1800,3600,7200,10800,14400,21600,43200,86400];function XQ(e){if(!Number.isFinite(e))return YS[0];let t=YS,r=t[0];for(let H of t)if(H<=e)r=H;return r}function ZS({since:e,until:t,resolution:r}){return{since:e,until:t,resolution:`${r}s`}}async function zS(e,{org:t,monitors:r,project:H,environment:n,signal:o,...s}){if(r.length===0)return{};let i=await e.request(`/organizations/${t}/monitors-stats/`,{query:{monitor:[...r],project:Fe(H),environment:n?[...n]:void 0,...ZS(s)},signal:o});return VS(i.data,EQ)}async function JS(e,{org:t,detectorIds:r,signal:H,...n}){let o=[...new Set(r)].slice(0,KQ);if(o.length===0)return{};let s=await e.request(`/organizations/${t}/uptime-stats/`,{query:{uptimeDetectorId:o,...ZS({...n,resolution:XQ(n.resolution)})},signal:H});return VS(s.data,GQ)}function e_(e,t){return(e??[]).map(([r,H])=>{if(t!==void 0)return[r,H[t]??{}];let n={};for(let o of Object.values(H??{}))for(let[s,i]of Object.entries(o??{}))n[s]=(n[s]??0)+i;return[r,n]})}var BQ=qe.issueStream,WQ={"monitors.all":{title:"All Monitors",description:"Everything watching this organization.",searchPlaceholder:"Search monitors by name, type or assignee\u2026",emptyTitle:"No monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise nothing is being monitored yet \u2014 create a monitor on sentry.io, as this client is read-only."]},"monitors.mine":{title:"My Monitors",description:"Monitors assigned to you or your teams.",assignee:"[me,my_teams]",searchPlaceholder:"Search your monitors\u2026",emptyTitle:"No monitors assigned to you.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise nothing here is assigned to you or to a team you are on."]},"monitors.error":{title:"Error",description:"The per-project detectors that turn errors into issues.",type:qe.error,searchPlaceholder:"Search error monitors\u2026",emptyTitle:"No error monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Error monitors are created by Sentry, one per project \u2014 an org with projects should have some."]},"monitors.metric":{title:"Metric",description:"Thresholds and anomalies over a metric.",type:qe.metric,searchPlaceholder:"Search metric monitors\u2026",emptyTitle:"No metric monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise no metric monitor has been created yet."]},"monitors.cron":{title:"Cron",description:"Scheduled jobs that check in when they run.",type:qe.cron,searchPlaceholder:"Search cron monitors\u2026",emptyTitle:"No cron monitors found.",emptyLines:["This organization may not have crons enabled.","Otherwise no job is checking in yet \u2014 a cron monitor is created by its first check-in."]},"monitors.uptime":{title:"Uptime",description:"URLs Sentry checks on a schedule.",type:qe.uptime,searchPlaceholder:"Search uptime monitors\u2026",emptyTitle:"No uptime monitors found.",emptyLines:["This organization may not have uptime monitoring enabled.","Otherwise no URL is being checked yet."]},"monitors.mobile-build":{title:"Mobile Build",description:"Size regressions in mobile builds.",type:qe.mobileBuild,searchPlaceholder:"Search mobile build monitors\u2026",emptyTitle:"No mobile build monitors found.",emptyLines:["This organization may not have build size analysis (preprod) enabled.","Otherwise no build size monitor has been created yet."]}};function t_(e){return WQ[e]}function r_(e,t=""){let r=[`!type:${BQ}`];if(e?.type)r.push(`type:${e.type}`);if(e?.assignee)r.push(`assignee:${e.assignee}`);let H=t.trim();if(H)r.push(H);return r.join(" ")}import{useEffect as FQ,useMemo as Fo,useRef as UQ,useState as YQ}from"h:0__";function Uo(e,{org:t,monitorIds:r,uptimeDetectorIds:H,width:n,statsPeriod:o,project:s,environment:i,reloadToken:a=0}){let[l,c]=YQ(me),A=UQ(l);A.current=l;let u=Fo(()=>[...new Set(r)].sort().join(","),[r]),d=Fo(()=>[...new Set(H)].sort().join(","),[H]),m=Fo(()=>(s??[]).join(","),[s]),g=Fo(()=>(i??[]).join(","),[i]),p=Wo(o),O=Ca(n,{windowSeconds:p}).resolution;return FQ(()=>{if(!e)return;let y=u?u.split(","):[],L=d?d.split(","):[],f=Ca(n,{windowSeconds:p});if(y.length===0&&L.length===0){c(me);return}let k=new AbortController,{signal:I}=k,h=!1;return c(_e(A.current,Date.now())),(async()=>{try{let[b,w]=await Promise.all([zS(e,{org:t,monitors:y,project:m?m.split(","):void 0,environment:g?g.split(","):void 0,signal:I,...f}),JS(e,{org:t,detectorIds:L,signal:I,...f})]);if(h)return;c(ge({window:f,monitors:b,uptime:w},Date.now()))}catch(b){if(h||I.aborted)return;c(Oe(A.current,Ne(b)))}})(),()=>{h=!0,k.abort()}},[e,t,u,d,m,g,p,O,a]),l}function on(e,t,r){if(!e||!t)return;return e_(e.monitors[t],r)}function Yo(e,t){if(!e||!t)return;return e.uptime[t]??[]}import{useCallback as $Q}from"h:0__";function H_(e,{org:t,query:r,sortBy:H,project:n,reloadToken:o=0}){let s=$Q((a,l)=>{if(!e)return null;return RS(e,{org:t,query:r,sortBy:H,project:n,cursor:a,signal:l}).then((c)=>({data:Array.isArray(c.data)?c.data:[],nextCursor:c.nextCursor}))},[e,t,r,H,n]),i=It(s,o);return{detectors:dt(i.status,(a)=>a.data),nextCursor:i.nextCursor,page:i.page,nextPage:i.nextPage,previousPage:i.previousPage}}import{useEffect as CN,useMemo as QN}from"h:0__";var Qa=[{value:"-lastTriggered",label:"Last Triggered (newest)"},{value:"lastTriggered",label:"Last Triggered (oldest)"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-actions",label:"Most Actions"},{value:"actions",label:"Fewest Actions"},{value:"-connectedDetectors",label:"Most Monitors"},{value:"connectedDetectors",label:"Fewest Monitors"}],n_="-lastTriggered";function o_(e){return Qa.some((t)=>t.value===e)?e:n_}var VQ=50;async function $o(e,{org:t,detector:r,query:H,project:n,sortBy:o=n_,limit:s=VQ,cursor:i,signal:a}){let l=await Nc({...e.generatedOptions(a),path:{organization_id_or_slug:t},query:{detector:r?.map(Number),query:H||void 0,project:Fe(n),sortBy:o,per_page:s}},i);return e.generatedPage({...l,data:ZQ(l.data)})}function ZQ(e){return Array.isArray(e)?e:[]}var zQ={vsts:"Azure DevOps",discord:"Discord",email:"Email",github:"GitHub",github_enterprise:"GitHub Enterprise",jira:"JIRA",jira_server:"JIRA Server",msteams:"Teams",opsgenie:"Opsgenie",pagerduty:"Pagerduty",plugin:"Plugin",sentry_app:"Sentry App",slack:"Slack",slack_staging:"Slack (Staging)",webhook:"Webhook"};function Vo(e){return zQ[e]??e}function Zo(e){let t=new Set;for(let r of e.actionFilters??[])for(let H of r.actions??[])if(H?.type)t.add(H.type);return[...t]}var s_=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],JQ={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},eN=["January","February","March","April","May","June","July","August","September","October","November","December"],tN={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},rN={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *"};function a_(e){let r=(rN[e.trim().toLowerCase()]??e).trim().split(/\s+/),[H,n,o,s,i]=r.length===6?r.slice(1):r;if(!H||!n||!o||!s||!i)return;let a=o==="*"&&s==="*",l=a&&i==="*";if(H==="*"&&n==="*"&&l)return"Every minute";let c=i_(H);if(c!==void 0&&n==="*"&&l)return`Every ${ja(c,"minute")}`;let A=sn(H);if(A===void 0)return;let u=i_(n);if(u!==void 0&&l)return`Every ${ja(u,"hour")} at :${zo(A)}`;if(n==="*"&&l)return`Every hour at :${zo(A)}`;let d=sn(n);if(d===void 0)return;let m=`at ${zo(d)}:${zo(A)}`;if(l)return`Every day ${m}`;if(a){let O=nN(i);return O?`Every ${O} ${m}`:void 0}if(i!=="*")return;let g=sn(o);if(g===void 0)return;if(s==="*")return`Day ${g} of every month ${m}`;let p=HN(s);if(p===void 0)return;return`${eN[p-1]} ${g} ${m}`}function c_(e,t){return`Every ${ja(e,t)}`}function ja(e,t){if(e===1)return t;return`${e} ${t}s`}function zo(e){return String(e).padStart(2,"0")}function i_(e){let t=e.match(/^\*\/(\d+)$/);if(!t)return;let r=Number(t[1]);return r>0?r:void 0}function sn(e){return/^\d+$/.test(e)?Number(e):void 0}function HN(e){let t=sn(e);if(t!==void 0)return t>=1&&t<=12?t:void 0;return tN[e.toLowerCase().slice(0,3)]}function nN(e){let t=e.match(/^([^-]+)-([^-]+)$/);if(t){let H=Na(t[1]),n=Na(t[2]);return H&&n?`${H}\u2013${n}`:void 0}let r=e.split(",").map((H)=>Na(H));if(r.some((H)=>H===void 0))return;if(r.length===1)return r[0];return`${r.slice(0,-1).join(", ")} and ${r.at(-1)}`}function Na(e){let t=e.trim(),r=sn(t);if(r!==void 0)return s_[r===7?0:r];let H=JQ[t.toLowerCase().slice(0,3)];return H===void 0?void 0:s_[H]}var A_=40,u_=" \u2502 ",oN={[qe.error]:"Error",[qe.metric]:"Metric",[qe.cron]:"Cron",[qe.uptime]:"Uptime",[qe.issueStream]:"Project",[qe.mobileBuild]:"Mobile Build"};function Jo(e){return oN[e]??"Unknown"}function es(e){if(!e)return"\u2014";let t=e.name||e.email;if(!t)return"\u2014";return e.type==="team"&&!t.startsWith("#")?`#${t}`:t}function ts(e){return e.dataSources?.find((r)=>r.type==="snuba_query_subscription")?.queryObj?.snubaQuery}function d_(e){return e.dataSources?.find((r)=>r.type==="uptime_subscription")?.queryObj??void 0}function yr(e){return e.dataSources?.find((r)=>r.type==="cron_monitor")?.queryObj??void 0}function p_(e,{projectSlug:t}={}){let r=[];if(t)r.push(t);switch(e.type){case qe.metric:r.push(...sN(e));break;case qe.uptime:r.push(...iN(e));break;case qe.cron:{let H=m_(yr(e)?.config);if(H)r.push(H);break}case qe.mobileBuild:{let H=aN(e);if(H)r.push(H);break}default:break}return r}function sN(e){let t=[],r=ts(e);if(r){if(r.environment)t.push(r.environment);if(r.aggregate)t.push(r.aggregate);if(r.query)t.push(ei(r.query,A_))}let H=g_(e);if(H)t.push(H);return t}function iN(e){let t=d_(e);if(!t)return[];let r=[];if(t.url)r.push(ei(t.url,A_));let H=t.intervalSeconds;if(typeof H==="number"&&H>0)r.push(`Every ${$r(H)}`);return r}function m_(e){let t=e?.schedule;if(t===void 0)return;if(Array.isArray(t)){let[r,H]=t;if(typeof r!=="number"||!H)return;return c_(r,H)}if(typeof t!=="string"||t.trim()==="")return;return a_(t)??t}function aN(e){let{measurement:t,thresholdType:r}=e.config??{};return[t,r].filter(Boolean).join(" ")||void 0}var cN={gt:">",gte:">=",lt:"<",lte:"<=",eq:"=",ne:"!="},lN={25:"low",50:"medium",75:"high"};function g_(e){let t=e.conditionGroup?.conditions;if(!t?.length)return;let r=e.config?.detectionType??"static";if(r==="dynamic")return"Dynamic";if(r==="percent"){let o=$r(e.config?.comparisonDelta??3600);return t.map((i)=>uN(i,o)).filter(Boolean).join(", ")||void 0}let H=ON(ts(e)?.aggregate??"count()");return t.map((o)=>AN(o,H)).filter(Boolean).join(", ")||void 0}function AN(e,t){let r=O_(e);if(!r)return;if(typeof e.comparison!=="number"&&typeof e.comparison!=="string")return;return`${cN[e.type]??e.type}${e.comparison}${t} ${r}`}function uN(e,t){if(!O_(e)||typeof e.comparison!=="number")return;let H=e.comparison,n=H>=100?H-100:100-H,o=H>=100?"higher":"lower";return`${n}% ${o} than previous ${t}`}function O_(e){let t=e.conditionResult;if(typeof t!=="number"||t===0)return;return lN[t]}var dN=new Set(["any","avg","max","min","p50","p75","p90","p95","p99","p100","percentile","sum"]),pN=new Set(["event.timestamp","function.duration","measurements.app_start_cold","measurements.app_start_warm","measurements.fcp","measurements.fid","measurements.fp","measurements.inp","measurements.lcp","measurements.stall_longest_time","measurements.stall_total_time","measurements.time_to_full_display","measurements.time_to_initial_display","measurements.ttfb","measurements.ttfb.requesttime","span.duration","span.self_time","spans.browser","spans.db","spans.http","spans.resource","spans.ui","timestamp","transaction.duration"]),mN=new Set(["http.decoded_response_content_length","http.response_content_length","http.response_transfer_size","payload_size"]),gN=new Set(["abnormal_rate","anr_rate","crash_free_rate","crash_rate","errored_rate","foreground_anr_rate","unhandled_rate","unhealthy_rate"]);function ON(e){let t=e.trim().toLowerCase().match(/^([a-z_][a-z0-9_]*)\((.*)\)$/);if(!t)return"";let r=t[1];if(gN.has(r))return"%";if(r==="last_seen")return"ms";if(!dN.has(r))return"";let H=t[2].split(",",1)[0].trim();if(pN.has(H))return"ms";if(mN.has(H))return"B";return""}function y_(e){switch(e.type){case qe.metric:return yN(e);case qe.uptime:return fN(e);case qe.cron:return SN(e);case qe.mobileBuild:return _N(e);default:return[]}}function rs(e){return e.filter((t)=>t!==void 0&&t.value!=="")}function Be(e,t){if(t===null||t===void 0||t==="")return;return{label:e,value:String(t)}}function yN(e){let t=ts(e),r=t?.timeWindow;return rs([Be("Aggregate",t?.aggregate),Be("Query",t?.query),Be("Dataset",t?.dataset),Be("Environment",t?.environment),Be("Time window",typeof r==="number"?$r(r):void 0),Be("Detection",e.config?.detectionType??"static"),Be("Threshold",g_(e))])}function fN(e){let t=d_(e),r=t?.intervalSeconds,H=t?.timeoutMs,n=e.config;return rs([Be("URL",t?.url),Be("Method",t?.method),Be("Interval",typeof r==="number"?`Every ${$r(r)}`:void 0),Be("Timeout",typeof H==="number"?$r(H/1000):void 0),Be("Environment",n?.environment),Be("Downtime after",f_(n?.downtimeThreshold)),Be("Recovers after",S_(n?.recoveryThreshold))])}function SN(e){let t=yr(e),r=t?.config,H=(t?.environments??[]).map((n)=>n.name);return rs([Be("Schedule",m_(r)),Be("Timezone",r?.timezone),Be("Check-in margin",l_(r?.checkin_margin)),Be("Max runtime",l_(r?.max_runtime)),Be("Fails after",f_(r?.failure_issue_threshold)),Be("Recovers after",S_(r?.recovery_threshold)),Be("Environments",H.join(", "))])}function _N(e){let t=e.config;return rs([Be("Measurement",t?.measurement),Be("Threshold type",t?.thresholdType),Be("Query",t?.query)])}function l_(e){if(typeof e!=="number")return;return e===1?"1 minute":`${e} minutes`}function f_(e){if(typeof e!=="number")return;return e===1?"1 failure":`${e} consecutive failures`}function S_(e){if(typeof e!=="number")return;return e===1?"1 success":`${e} consecutive successes`}function __(e){switch(e.type){case qe.metric:return ts(e)?.environment??void 0;case qe.uptime:return e.config?.environment??void 0;default:return}}import{useEffect as k_,useRef as h_,useState as L_}from"h:0__";function I_(e,{org:t,detectorId:r,statsPeriod:H,reloadToken:n=0}){let[o,s]=L_(me),i=h_(o);return i.current=o,k_(()=>{if(!e||!r)return;let a=new AbortController,{signal:l}=a,c=!1;return s(_e(i.current,Date.now())),(async()=>{try{let A=await GS(e,{org:t,detectorId:r,statsPeriod:H,signal:l});if(c)return;s(ge({rows:Array.isArray(A.data)?A.data:[],nextCursor:A.nextCursor,...A.totalCount===void 0?{}:{totalCount:A.totalCount}},Date.now()))}catch(A){if(c||l.aborted)return;s(Oe(i.current,Ne(A)))}})(),()=>{c=!0,a.abort()}},[e,t,r,H,n]),o}function b_(e,{org:t,detectorId:r,reloadToken:H=0}){let[n,o]=L_(me),s=h_(n);return s.current=n,k_(()=>{if(!e||!r)return;let i=new AbortController,{signal:a}=i,l=!1;return o(_e(s.current,Date.now())),(async()=>{try{let c=await $o(e,{org:t,detector:[r],signal:a});if(l)return;o(ge(Array.isArray(c.data)?c.data:[],Date.now()))}catch(c){if(l||a.aborted)return;o(Oe(s.current,Ne(c)))}})(),()=>{l=!0,i.abort()}},[e,t,r,H]),n}import{useEffect as xN,useMemo as N_,useRef as TN}from"h:0__";function Hs(e){let t=e.border;return{cron:{config:BS,colors:{ok:e.success,missed:e.muted,timeout:e.warning,error:e.danger,in_progress:e.accent,unknown:e.subText},trackColor:t},uptime:{config:WS,colors:{success:e.success,failure:e.danger,failure_incident:e.danger,missed_window:e.subText},trackColor:t}}}function ns(e=Bo){let t=Math.round(e/3600);if(t<=0)return"Last hour";if(t===1)return"Last hour";if(t%24!==0)return`Last ${t} hours`;let r=t/24;return r===1?"Last 24 hours":`Last ${r} days`}import{jsxDEV as Da}from"h:6___________________________";function _H({buckets:e,style:t,width:r,since:H,until:n}){let o=Math.max(0,Math.floor(r));if(o===0)return null;if(e===void 0)return Da("text",{fg:t.trackColor,children:XS.repeat(o)},void 0,!1,void 0,this);let s=Xo(e,{width:o,since:H,until:n,config:t.config});return Da("text",{children:kN(s,t)},void 0,!1,void 0,this)}function kN(e,t){let r=[],H="",n="",o=()=>{if(!H)return;r.push(Da("span",{fg:n,children:H},r.length,!1,void 0,this)),H=""};for(let s of e){let i=s.status===null?t.trackColor:t.colors[s.status];if(i!==n)o(),n=i;H+=s.glyph}return o(),r}import{jsxDEV as fr,Fragment as wN}from"h:6___________________________";function kH(e){if(e===qe.cron)return"cron";if(e===qe.uptime)return"uptime";return}function Ra(e){return kH(e.type)}var hN=16,LN=72,IN=0.45,bN=16,w_=8;function x_(e){let t=Math.floor(Math.max(0,e)*IN);return Math.max(hN,Math.min(LN,t))}function T_(e,t){return e==="cron"?C_(t).track:t}function P_(e){if(Ra(e)!=="cron")return 1;return Math.max(1,M_(e).length)}function q_({stats:e,failed:t,width:r,windowSeconds:H,theme:n}){let o=Hs(n),s=e?e.window.until-e.window.since:H;return{key:"check-ins",label:ns(s),width:r,render:(i,a,l)=>{let c=Ra(i);if(!c)return fr("text",{fg:n.subText,children:_("",l)},void 0,!1,void 0,this);let A=e?.window.since??0,u=e?.window.until??0;if(c==="uptime")return fr(_H,{buckets:t?[]:Yo(e,i.id),style:o.uptime,width:l,since:A,until:u},void 0,!1,void 0,this);let m=yr(i)?.id,g=M_(i);if(g.length===0)return fr(_H,{buckets:t||!m?[]:on(e,m),style:o.cron,width:l,since:A,until:u},void 0,!1,void 0,this);let p=C_(l);return fr("box",{style:{flexDirection:"column",width:l},children:g.map((O)=>fr("box",{style:{flexDirection:"row",width:l},children:[p.label>0?fr(wN,{children:[fr("text",{fg:n.subText,children:_(O,p.label)},void 0,!1,void 0,this),fr("text",{children:" ".repeat(p.gap)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,fr(_H,{buckets:t||!m?[]:on(e,m,O),style:o.cron,width:p.track,since:A,until:u},void 0,!1,void 0,this)]},O,!0,void 0,this))},void 0,!1,void 0,this)}}}function M_(e){let t=(yr(e)?.environments??[]).map((r)=>r.name).filter((r)=>r.length>0);return[...new Set(t)]}function C_(e){let t=Math.max(0,Math.floor(e));if(t<=w_+1)return{label:0,gap:0,track:t};let r=1,H=Math.min(bN,t-w_-r);return{label:H,gap:r,track:t-H-r}}function Q_(e){let t=[],r=[];for(let H of e??[]){let n=Ra(H);if(n==="uptime")r.push(H.id);else if(n==="cron"){let o=yr(H)?.id;if(o)t.push(o)}}return{monitorIds:t,uptimeDetectorIds:r}}import{jsxDEV as St,Fragment as MN}from"h:6___________________________";function D_(e){return kH(e.type)!==void 0}function R_({detector:e,width:t,client:r,org:H,reloadToken:n,notify:o}){let s=S(),i=Hs(s),a=kH(e.type),l=a==="cron"?yr(e)?.id:void 0,c=N_(()=>l?[l]:[],[l]),A=N_(()=>a==="uptime"?[e.id]:[],[a,e.id]),u=Math.max(0,t-Ie.length),d=Uo(r,{org:H,monitorIds:c,uptimeDetectorIds:A,width:u,reloadToken:n}),m=B(d),g=d.state==="error"&&m===void 0,p=TN(void 0),O=se(d)?.message;if(xN(()=>{if(O&&p.current!==O)o({kind:"warning",text:"check-in history unavailable"});p.current=O},[O,o]),!a)return null;if(a==="cron"&&!l)return St(st,{children:"This monitor has no check-in source."},void 0,!1,void 0,this);let y=m?.window.since??0,L=m?.window.until??0;return St("box",{style:{flexDirection:"column",width:t},children:[St("box",{style:{flexDirection:"row",width:t},children:[St("text",{fg:s.muted,children:`${Ie}${ns()}`},void 0,!1,void 0,this),qN(e,s)]},void 0,!0,void 0,this),a==="uptime"?St(j_,{buckets:g?[]:Yo(m,e.id),style:i.uptime,width:u,since:y,until:L},void 0,!1,void 0,this):St(j_,{buckets:g?[]:on(m,l),style:i.cron,width:u,since:y,until:L},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function j_({buckets:e,style:t,width:r,since:H,until:n}){return St(MN,{children:[St("box",{style:{flexDirection:"row",width:r+Ie.length},children:[St("text",{children:Ie},void 0,!1,void 0,this),St(_H,{buckets:e,style:t,width:r,since:H,until:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this),St(PN,{buckets:e,style:t,width:r,since:H,until:n},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function PN({buckets:e,style:t,width:r,since:H,until:n}){if(!e||e.length===0)return null;let o=Xo(e,{width:r,since:H,until:n,config:t.config}),s=US(o,t.config);if(s.length===0)return null;return St("box",{style:{flexDirection:"row",width:r+Ie.length},children:[St("text",{children:Ie},void 0,!1,void 0,this),s.map((i,a)=>St("text",{fg:t.colors[i.status],children:`${a>0?" \xB7 ":""}${i.count} ${i.label}`},i.status,!1,void 0,this))]},void 0,!0,void 0,this)}function qN(e,t){let r=yr(e)?.environments??[];if(r.length<2)return null;return St("text",{fg:t.subText,children:` (all ${r.length} environments)`},void 0,!1,void 0,this)}import{jsxDEV as W,Fragment as K_}from"h:6___________________________";var NN={config:"Configuration",timeline:"Check-ins",periods:"Open Periods",alerts:"Connected Alerts",details:"Details"};function v_(e,t,r=xt){return{id:`monitor:${e.id}`,sentryLocation:{screen:"monitors.all",detail:{kind:"monitor",detectorId:e.id}},label:e.name,render:(H)=>W(E_,{...H,detector:e,projectSlug:t,statsPeriod:r},void 0,!1,void 0,this)}}var jN=(e,{org:t,id:r,signal:H})=>vS(e,{org:t,detectorId:r,signal:H});function G_(e){return{id:`monitor:${e}`,sentryLocation:{screen:"monitors.all",detail:{kind:"monitor",detectorId:e}},label:`Monitor ${e}`,render:(t)=>W(DN,{...t,detectorId:e},void 0,!1,void 0,this)}}function DN({client:e,org:t,detectorId:r,reloadToken:H,width:n,height:o,updateView:s,...i}){let a=Ar(e,{org:t,id:r,reloadToken:H,load:jN}),l=B(a);if(CN(()=>{if(l)s(`monitor:${r}`,{label:l.name})},[l,r,s]),!l)return W(lr,{status:a,noun:"monitor",width:n,height:o},void 0,!1,void 0,this);return W(E_,{...i,client:e,org:t,detector:l,projectSlug:l.latestGroup?.project?.slug,reloadToken:H,width:n,height:o,updateView:s},void 0,!1,void 0,this)}function E_({client:e,org:t,detector:r,projectSlug:H,statsPeriod:n=xt,width:o,height:s,focused:i,reloadToken:a,notify:l,pushView:c,registerActions:A}){let u=S(),d=r.latestGroup?.id;Ke(A,{openDetail:d?()=>c(Ko(d)):void 0});let m=I_(e,{org:t,detectorId:r.id,statsPeriod:n,reloadToken:a}),g=b_(e,{org:t,detectorId:r.id,reloadToken:a}),p=Math.max(20,o-2),O=D_(r),y=QN(()=>["config",...O?["timeline"]:[],"periods","alerts","details"],[O]),{collapsed:L,toggle:f}=Ro(y,i),k=B(m),I=B(g),h={config:void 0,periods:KN(k),alerts:I?.length};return W("scrollbox",{focused:i,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:u.panel,foregroundColor:u.muted}},style:{width:o,height:s,paddingLeft:1},children:[W(RN,{detector:r,projectSlug:H,width:p},void 0,!1,void 0,this),y.map((b,w)=>W(Do,{index:w+1,title:NN[b],count:h[b],collapsed:L.has(b),width:p,onToggle:()=>f(b),children:W(GN,{sectionKey:b,detector:r,width:p,client:e,org:t,reloadToken:a,notify:l,statsPeriod:n,periods:m,workflows:g},void 0,!1,void 0,this)},b,!1,void 0,this))]},void 0,!0,void 0,this)}function RN({detector:e,projectSlug:t,width:r}){let H=S(),n=e.enabled?H.accent:H.muted,o=Math.max(12,r-2);return W("box",{style:{flexDirection:"column",width:r},children:[W("box",{style:{flexDirection:"row",width:r},children:[W("text",{fg:n,children:"\u2503 "},void 0,!1,void 0,this),W("text",{fg:H.text,attributes:X,children:R(e.name,o)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W("box",{style:{flexDirection:"row",width:r},children:[W("text",{fg:n,children:"\u2503 "},void 0,!1,void 0,this),W("text",{fg:H.muted,children:R(e.description||"(no description)",o)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W("box",{style:{flexDirection:"row",width:r,paddingTop:1},children:[W("text",{children:Ie},void 0,!1,void 0,this),W("text",{fg:e.enabled?H.success:H.muted,children:e.enabled?"enabled":"disabled"},void 0,!1,void 0,this),W(Qt,{},void 0,!1,void 0,this),W("text",{fg:H.muted,children:Jo(e.type)},void 0,!1,void 0,this),t?W(K_,{children:[W(Qt,{},void 0,!1,void 0,this),W("text",{fg:H.muted,children:t},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,W(Qt,{},void 0,!1,void 0,this),W("text",{fg:H.muted,children:e.owner?es(e.owner):"unassigned"},void 0,!1,void 0,this),W(Qt,{},void 0,!1,void 0,this),W("text",{fg:H.muted,children:vN(e)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W("text",{fg:H.border,children:"\u2500".repeat(r)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function vN(e){let t=e.lastTriggered?he(e.lastTriggered):"";if(t)return`last triggered ${t} ago`;let r=he(e.latestGroup?.lastSeen);return r?`last issue ${r} ago`:"never triggered"}function GN({sectionKey:e,detector:t,width:r,client:H,org:n,reloadToken:o,notify:s,statsPeriod:i,periods:a,workflows:l}){switch(e){case"config":{let c=y_(t);if(c.length===0)return t.type==="error"?W(st,{children:"An error monitor has no settings \u2014 every error in its project opens an issue."},void 0,!1,void 0,this):W(st,{children:"No configuration was returned for this monitor."},void 0,!1,void 0,this);return W("box",{style:{flexDirection:"column",width:r},children:c.map((A)=>W(Xt,{name:A.label,value:A.value,width:r},A.label,!1,void 0,this))},void 0,!1,void 0,this)}case"timeline":return W(R_,{detector:t,width:r,client:H,org:n,reloadToken:o,notify:s},void 0,!1,void 0,this);case"periods":return W(EN,{status:a,statsPeriod:i,width:r},void 0,!1,void 0,this);case"alerts":return W(WN,{status:l,width:r},void 0,!1,void 0,this);case"details":return W(UN,{detector:t,width:r,client:H,org:n},void 0,!1,void 0,this)}}function EN({status:e,statsPeriod:t,width:r}){let H=B(e),n=se(e);if(n)return W(st,{children:`Failed to load open periods: ${n.message}`},void 0,!1,void 0,this);if(!H)return W(st,{children:"Loading open periods\u2026"},void 0,!1,void 0,this);if(H.rows.length===0)return W(st,{children:`No open periods in the last ${t}.`},void 0,!1,void 0,this);return W("box",{style:{flexDirection:"column",width:r},children:[W(st,{children:XN(H,t)},void 0,!1,void 0,this),H.rows.map((o)=>W(BN,{period:o,width:r},o.id,!1,void 0,this))]},void 0,!0,void 0,this)}function KN(e){if(!e)return;if(e.totalCount!==void 0&&e.totalCount>e.rows.length)return`${e.rows.length} of ${e.totalCount}`;return e.nextCursor===null?e.rows.length:`${e.rows.length}+`}function XN(e,t){let r=e.rows.length,H=e.totalCount===void 0?void 0:Math.max(0,e.totalCount-r);if(H&&H>0)return`Newest ${r} in the last ${t}; ${H} older not shown.`;if(e.nextCursor!==null)return`Newest ${r} in the last ${t}; older periods not shown.`;return`All ${r} in the last ${t}, newest first.`}function BN({period:e,width:t}){let r=S(),H=e.isOpen||!e.end;return W("box",{style:{flexDirection:"row",width:t},children:[W("text",{fg:r.subText,children:`${Ie}#${e.id} `},void 0,!1,void 0,this),W("text",{fg:r.text,children:VH(e.start)},void 0,!1,void 0,this),W("text",{fg:r.subText,children:" \u2192 "},void 0,!1,void 0,this),W("text",{fg:H?r.warning:r.text,children:H?"ongoing":VH(e.end)},void 0,!1,void 0,this),W("text",{fg:r.muted,children:` ${yf(e.start,e.end)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function WN({status:e,width:t}){let r=B(e),H=se(e);if(H)return W(st,{children:`Failed to load alerts: ${H.message}`},void 0,!1,void 0,this);if(!r)return W(st,{children:"Loading alerts\u2026"},void 0,!1,void 0,this);if(r.length===0)return W(st,{children:"No alerts are connected to this monitor."},void 0,!1,void 0,this);return W("box",{style:{flexDirection:"column",width:t},children:r.map((n)=>W(FN,{workflow:n,width:t},n.id,!1,void 0,this))},void 0,!1,void 0,this)}function FN({workflow:e,width:t}){let r=S(),H=Zo(e).map(Vo).join(", "),n=e.lastTriggered?`${he(e.lastTriggered)} ago`:"never",o=e.enabled!==!1;return W("box",{style:{flexDirection:"column",width:t},children:[W("box",{style:{flexDirection:"row",width:t},children:W("text",{fg:o?r.text:r.muted,children:`${Ie}${R(e.name||`Alert ${e.id}`,Math.max(8,t-4))}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),W("box",{style:{flexDirection:"row",width:t},children:[W("text",{fg:r.subText,children:`${Ie} `},void 0,!1,void 0,this),W("text",{fg:o?r.muted:r.subText,children:o?"enabled":"disabled"},void 0,!1,void 0,this),H?W(K_,{children:[W(Qt,{},void 0,!1,void 0,this),W("text",{fg:r.muted,children:H},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,W(Qt,{},void 0,!1,void 0,this),W("text",{fg:r.muted,children:`last fired ${n}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function UN({detector:e,width:t,client:r,org:H}){let n=__(e),o=e.latestGroup,s=No(r,H,Boolean(e.createdBy)),i=e.createdBy?s.state==="ready"?s.value.get(e.createdBy)?.user?.name??"Deactivated user":s.state==="error"?"Unavailable":"Loading\u2026":"Sentry";return W("box",{style:{flexDirection:"column",width:t},children:[W(Xt,{name:"Monitor ID",value:e.id,width:t},void 0,!1,void 0,this),n?W(Xt,{name:"Environment",value:n,width:t},void 0,!1,void 0,this):null,o?W(Xt,{name:"Last issue",value:YN(o.title,o.shortId,o.lastSeen),width:t},void 0,!1,void 0,this):null,W(Xt,{name:"Created",value:VH(e.dateCreated),width:t},void 0,!1,void 0,this),W(Xt,{name:"Created by",value:i,width:t},void 0,!1,void 0,this),W(Xt,{name:"Last modified",value:VH(e.dateUpdated),width:t},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function YN(e,t,r){let H=he(r);return[t,e,H?`${H} ago`:void 0].filter(Boolean).join(" \xB7 ")}import{jsxDEV as hH}from"h:6___________________________";var X_=22;function va(e,t,r){return e.enabled?t:r.muted}function $N(e){return{name:{key:"name",label:"Name",width:"flex",render:(s,i,a)=>hH("text",{fg:va(s,i?e.text:e.accent,e),attributes:i&&s.enabled?X:0,children:_(s.name,a)},void 0,!1,void 0,this)},type:{key:"type",label:"Type",width:12,priority:4,render:(s,i,a)=>hH("text",{fg:va(s,e.text,e),children:_(Jo(s.type),a)},void 0,!1,void 0,this)},lastIssue:{key:"last-issue",label:"Last Issue",width:26,priority:2,render:(s,i,a)=>hH("text",{fg:e.subText,children:_(VN(s),a)},void 0,!1,void 0,this)},assignee:{key:"assignee",label:"Assignee",width:16,priority:3,render:(s,i,a)=>hH("text",{fg:e.subText,children:_(es(s.owner),a)},void 0,!1,void 0,this)},alerts:{key:"alerts",label:"Alerts",width:6,align:"right",priority:1,render:(s,i,a)=>{let l=s.workflowIds?.length??0;return hH("text",{fg:l>0?va(s,e.text,e):e.subText,children:_(l>0?String(l):"\u2014",a,"right")},void 0,!1,void 0,this)}}}}function B_(e,{visualization:t}={}){let r=$N(e);if(t)return[r.name,r.type,t];return[r.name,r.type,r.lastIssue,r.assignee,r.alerts]}function W_(e,t,{projectSlugs:r,theme:H}){let n=e.projectId?r?.get(e.projectId)??e.latestGroup?.project?.slug:void 0,o=p_(e,{projectSlug:n});return hH("text",{fg:H.muted,children:_(` ${o.join(u_)}`,Math.max(0,t))},void 0,!1,void 0,this)}function VN(e){let t=e.latestGroup;if(!t)return"\u2014";let r=t.title||t.shortId||t.id,H=he(t.lastSeen);return H?`${r} \xB7 ${H}`:r}import{jsxDEV as xr}from"h:6___________________________";var ZN=4,zN=["project"],JN=["project","date"];function e1(e){return{title:e,description:"",searchPlaceholder:"Search monitors\u2026",emptyTitle:"No monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled."]}}function t1(e,t,r){return r.some((H)=>H.key==="check-ins")?P_(e):1}function Tr(e){let t=S(),{client:r,org:H,screen:n,state:o,focused:s,width:i,height:a,reloadToken:l,onProjectSelect:c}=e,{dispatch:A,focusSearch:u,handleSearchBlur:d}=o,m=t_(n.id)??e1(n.item),g=r_(m,o.committedQuery),p=DS(o.sort),O=o.selectedProjects.length>0?o.selectedProjects:void 0,{detectors:y,nextCursor:L,page:f,nextPage:k,previousPage:I}=H_(r,{org:H,query:g,sortBy:p,project:O,reloadToken:l}),h=B(y),b=se(y),w=y.state==="loading",T=Je(y);os(()=>{if(h)A({type:"setEntries",payload:h})},[h,A]);let q=F_(f);os(()=>{if(q.current===f)return;q.current=f,A({type:"setSelected",payload:0})},[f,A]),os(()=>{A({type:"setStatus",payload:{loading:w,since:T,error:b?.message,noun:"monitors"}})},[w,T,b,A]);let E=Ea(()=>h?.flatMap((de)=>de.projectId?[de.projectId]:[])??[],[h]),D=cH(r,H,E),{pushView:x}=e,P=Ga((de)=>{let re=h?.[de];if(!re)return;let ue=re.projectId?D.get(re.projectId):void 0;x(v_(re,ue??re.latestGroup?.project?.slug,o.statsPeriod))},[h,x,D,o.statsPeriod]);Ke(e.registerActions,{open:P,nextPage:k,previousPage:I});let N=Ga(()=>A({type:"setOpenDropdown",payload:null}),[A]),F=kH(m.type),j=x_(i),U=Wo(o.statsPeriod),{monitorIds:z,uptimeDetectorIds:oe}=Ea(()=>F?Q_(h):{monitorIds:[],uptimeDetectorIds:[]},[F,h]),ie=Uo(r,{org:H,monitorIds:z,uptimeDetectorIds:oe,width:F?T_(F,j):j,statsPeriod:o.statsPeriod,reloadToken:l}),G=B(ie),Y=ie.state==="error"&&G===void 0,{notify:ee}=e,C=F_(void 0),v=se(ie)?.message;os(()=>{if(!F)return;if(v&&C.current!==v)ee({kind:"warning",text:"check-in history unavailable"});C.current=v},[F,v,ee]);let pe=Ea(()=>B_(t,F?{visualization:q_({stats:G,failed:Y,width:j,windowSeconds:U,theme:t})}:void 0),[F,G,Y,j,U,t]),Me=Ga((de,re,ue)=>W_(de,ue,{projectSlugs:D,theme:t}),[D,t]);return xr("box",{style:{flexDirection:"column",width:i,height:a},children:[xr(Lt,{value:o.searchQuery,placeholder:m.searchPlaceholder,focused:o.searchFocused,width:i,onInput:(de)=>A({type:"setSearchQuery",payload:de}),onFocus:u,onBlur:d},void 0,!1,void 0,this),xr("box",{style:{flexDirection:"row",width:i,flexShrink:0,paddingLeft:1},children:[xr("text",{fg:t.text,attributes:X,children:m.title},void 0,!1,void 0,this),xr("text",{fg:t.muted,children:` ${m.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),xr(Ve,{client:r,org:H,openDropdown:o.openDropdown,selectedProjects:o.selectedProjects,selectedEnvs:o.selectedEnvs,statsPeriod:o.statsPeriod,filters:F?JN:zN,sort:{value:p,items:qa,onChange:(de)=>A({type:"setSort",payload:de})},width:i,anchorTop:Le+1,onProjectChange:c,onEnvChange:()=>{},onPeriodChange:(de)=>A({type:"setStatsPeriod",payload:de}),onDropdownOpen:(de)=>A({type:"setOpenDropdown",payload:de}),onDropdownClose:N},void 0,!1,void 0,this),xr(nt,{rows:h,columns:pe,width:i,minFlex:X_,selectedIndex:o.selected,focused:s,rowKey:(de)=>de.id,loading:ke(y),error:b,errorTitle:"Failed to load monitors",onRowClick:e.activateRow,renderDetail:Me,rowContentHeight:F==="cron"?t1:void 0,empty:{title:m.emptyTitle,lines:[o.committedQuery||void 0,...m.emptyLines]},layout:[a,ZN]},void 0,!1,void 0,this),xr(Re,{count:h?.length,noun:"monitor",hasMore:L!==null,pagination:L!==null||f>1?{page:f,hasPrevious:f>1,hasNext:L!==null,loading:w,onPrevious:I,onNext:k}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as Z_,useEffect as Xa,useRef as z_}from"h:0__";import{RenderableEvents as ss}from"h:3__________";var r1=["project","fingerprint","package","function","count()","sum()","avg()","p50()","p75()","p95()","p99()"],Ka=[{value:"-sum()",label:"Total self time"},{value:"-avg()",label:"Average self time"},{value:"-p50()",label:"p50 self time"},{value:"-p75()",label:"p75 self time"},{value:"-p95()",label:"p95 self time"},{value:"-p99()",label:"p99 self time"}],U_="-sum()";function Y_(e){return Ka.some((t)=>t.value===e)?e:U_}var H1=50;async function $_(e,{org:t,query:r="",statsPeriod:H,project:n,environment:o,sort:s=U_,cursor:i,limit:a=H1,signal:l}){let c=await Tt(e,{org:t,dataset:"profileFunctions",fields:r1,sort:s,query:r,statsPeriod:H,project:n,environment:o,cursor:i,limit:a,referrer:"sentry-tui.profile-functions",signal:l});return{data:c.rows.map(n1),nextCursor:c.nextCursor}}function n1(e,t){return{fingerprint:Ge(e,"fingerprint")??String(t),projectSlug:Ge(e,"project"),package:Ge(e,"package")??"",name:Ge(e,"function")??"",count:kt(e,"count()"),totalSelfTimeNs:kt(e,"sum()"),p75SelfTimeNs:kt(e,"p75()")}}import{useCallback as o1}from"h:0__";function V_(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,reloadToken:i=0}){let a=o1((c,A)=>e?$_(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,cursor:c,signal:A}):null,[e,t,r,H,n,o,s]),l=It(a,i);return{functions:dt(l.status,(c)=>c.data),nextCursor:l.nextCursor,page:l.page,nextPage:l.nextPage,previousPage:l.previousPage}}import{jsxDEV as Ue}from"h:6___________________________";var s1="Aggregate flamegraph \u2014 open Explore \u203A Profiles on sentry.io",i1=24,a1=["A flamegraph needs pixels a terminal does not have; an ASCII","approximation would mislead. Below: the same page's slowest functions."];function c1(e){return[{key:"function",label:"Function",width:"flex",render:(t,r,H)=>Ue("text",{fg:e.text,children:_(t.name,H)},void 0,!1,void 0,this)},{key:"package",label:"Package",width:18,priority:2,render:(t,r,H)=>Ue("text",{fg:e.muted,children:_(t.package,H)},void 0,!1,void 0,this)},{key:"project",label:"Project",width:12,priority:1,render:(t,r,H)=>Ue("text",{fg:e.subText,children:_(t.projectSlug??"",H)},void 0,!1,void 0,this)},{key:"count",label:"Calls",width:7,align:"right",priority:3,render:(t,r,H)=>Ue("text",{fg:e.muted,children:_(Pe(t.count),H,"right")},void 0,!1,void 0,this)},{key:"p75",label:"p75",width:9,align:"right",priority:4,render:(t,r,H)=>Ue("text",{fg:e.muted,children:_(is(t.p75SelfTimeNs),H,"right")},void 0,!1,void 0,this)},{key:"total",label:"Self Time",width:10,align:"right",render:(t,r,H)=>Ue("text",{fg:e.text,children:_(is(t.totalSelfTimeNs),H,"right")},void 0,!1,void 0,this)}]}function J_({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,onProjectSelect:i,registerActions:a,activateRow:l}){let c=S(),{dispatch:A,focusSearch:u,handleSearchBlur:d}=r,m=z_(null),g=Z_((N)=>{let F=m.current;if(F)F.removeAllListeners(ss.FOCUSED),F.removeAllListeners(ss.BLURRED);if(m.current=N,N)N.on(ss.FOCUSED,()=>u()),N.on(ss.BLURRED,()=>d())},[u,d]),p=r.committedQuery,O=Y_(r.sort),{functions:y,nextCursor:L,page:f,nextPage:k,previousPage:I}=V_(e,{org:t,query:p,statsPeriod:r.statsPeriod,project:r.selectedProjects.length>0?r.selectedProjects:void 0,environment:r.selectedEnvs.length>0?r.selectedEnvs:void 0,sort:O,reloadToken:s}),h=y.state==="loading",b=Je(y),w=B(y),T=se(y);Xa(()=>{if(w)A({type:"setEntries",payload:w})},[w,A]);let q=z_(f);Xa(()=>{if(q.current===f)return;q.current=f,A({type:"setSelected",payload:0})},[f,A]),Xa(()=>{A({type:"setStatus",payload:{loading:h,since:b,error:T?.message,noun:"functions"}})},[h,b,T,y,A]);let E=Z_(()=>A({type:"setOpenDropdown",payload:null}),[A]);Ke(a,{open:()=>A({type:"setDetailOpen",payload:(N)=>!N}),nextPage:k,previousPage:I,back:()=>{if(!r.detailOpen)return!1;return A({type:"setDetailOpen",payload:!1}),!0}});let D=Math.max(20,n-2),x=w?.[r.selected]??null,P=r.detailOpen&&x!==null;return Ue("box",{style:{flexDirection:"column",width:n,height:o},children:[Ue("box",{style:{flexDirection:"row",width:n,flexShrink:0,height:Le,border:!0,borderStyle:"rounded",borderColor:r.searchFocused?c.accent:c.border,backgroundColor:c.panel,paddingLeft:1,paddingRight:1},children:[Ue(Gt,{},void 0,!1,void 0,this),Ue("input",{ref:g,value:r.searchQuery,placeholder:"Search functions\u2026",focused:r.searchFocused,onInput:(N)=>A({type:"setSearchQuery",payload:N}),style:{flexGrow:1,textColor:c.text,backgroundColor:c.panel,focusedTextColor:c.text,focusedBackgroundColor:c.panel,placeholderColor:c.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Ue(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,sort:{value:O,items:Ka,onChange:(N)=>A({type:"setSort",payload:N})},width:n,anchorTop:Le,onProjectChange:i,onEnvChange:(N)=>A({type:"setSelectedEnvs",payload:N}),onPeriodChange:(N)=>A({type:"setStatsPeriod",payload:N}),onDropdownClose:E,onDropdownOpen:(N)=>A({type:"setOpenDropdown",payload:N})},void 0,!1,void 0,this),Ue(l1,{width:D},void 0,!1,void 0,this),Ue(nt,{rows:w,columns:c1(c),width:n,selectedIndex:r.selected,focused:H,rowKey:(N)=>N.fingerprint,loading:ke(y),error:T,errorTitle:"Failed to load profiled functions",minFlex:i1,onRowClick:l,empty:{title:"No profiled functions found.",lines:[p||void 0,"Try widening the time range or selecting a project that sends profiles.","This organization may not have profiling enabled."]},layout:[o,P]},void 0,!1,void 0,this),P&&x?Ue(A1,{fn:x,width:D},void 0,!1,void 0,this):null,Ue(Re,{count:w?.length,noun:"function",hasMore:L!==null,pagination:L!==null||f>1?{page:f,hasPrevious:f>1,hasNext:L!==null,loading:h,onPrevious:I,onNext:k}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function l1({width:e}){let t=S();return Ue("box",{style:{flexDirection:"column",width:e,flexShrink:0,border:["bottom"],borderColor:t.border},children:[Ue("text",{fg:t.subText,attributes:X,children:R(s1,e)},void 0,!1,void 0,this),a1.map((r)=>Ue("text",{fg:t.muted,children:R(r,e)},r,!1,void 0,this))]},void 0,!0,void 0,this)}function A1({fn:e,width:t}){let r=S();return Ue("box",{style:{flexDirection:"column",width:t,border:["top"],borderColor:r.border,paddingTop:1,flexShrink:0},children:[Ue("text",{fg:r.accent,attributes:X,children:"\u25BE Function Details"},void 0,!1,void 0,this),Ue("text",{fg:r.text,children:R(e.name,t)},void 0,!1,void 0,this),Ue("text",{fg:r.muted,children:R(` Package: ${e.package||"\u2014"}`,t)},void 0,!1,void 0,this),Ue("text",{fg:r.muted,children:R(` Project: ${e.projectSlug??"\u2014"} \u2502 Calls: ${Pe(e.count)}`+` \u2502 Self time: ${is(e.totalSelfTimeNs)}`+` \u2502 p75: ${is(e.p75SelfTimeNs)}`,t)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function is(e){if(e===void 0||!Number.isFinite(e))return"\xB7\xB7";if(e<1000)return`${Math.round(e)}ns`;if(e<1e6)return`${Ba(e/1000)}\xB5s`;if(e<1e9)return`${Ba(e/1e6)}ms`;return`${Ba(e/1e9)}s`}function Ba(e){let t=e<10?2:e<100?1:0,r=e.toFixed(t);return r.includes(".")?r.replace(/\.?0+$/,""):r}import{useCallback as nk,useEffect as Wa,useMemo as as,useRef as Fa}from"h:0__";import{RenderableEvents as cs}from"h:3__________";import{useEffect as u1}from"h:0__";function ek(e,{index:t,heights:r,layout:H=[]}){let n=0;for(let i=0;i<t&&i<r.length;i++)n+=r[i]??0;let o=r[t]??0,s=r.reduce((i,a)=>i+a,0);u1(()=>{let i=e.current;if(!i||s===0)return;let a=i.viewport.height;if(a<=0)return;let l=BH({rowTop:n,rowHeight:o,contentHeight:s,viewportHeight:a,scrollTop:i.scrollTop});if(l!==i.scrollTop)i.scrollTop=l},[e,n,o,s,...H])}import{useCallback as d1}from"h:0__";function tk(e,{org:t,releases:r,project:H,environment:n}){let o=d1((s)=>e&&r?kl(e,{org:t,releases:r,project:H,environment:n,signal:s}):null,[e,t,r,H,n]);return Kt(o,{resetKey:r}).status}import{useCallback as p1,useEffect as m1,useRef as g1,useState as O1}from"h:0__";function rk(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,reloadToken:i=0}){let a=p1((c,A)=>e?Sl(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,cursor:c,signal:A}):null,[e,t,r,H,n,o,s]),l=It(a,i);return{releases:dt(l.status,(c)=>c.data),nextCursor:l.nextCursor,cursor:l.cursor,page:l.page,nextPage:l.nextPage,previousPage:l.previousPage}}function Hk(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,cursor:i,reloadToken:a=0}){let[l,c]=O1(me),A=g1(l);return A.current=l,m1(()=>{if(!e)return;let u=new AbortController,{signal:d}=u,m=!1;return c(_e(A.current,Date.now())),(async()=>{try{let g=await _l(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,cursor:i,signal:d});if(m)return;c(ge(g,Date.now()))}catch(g){if(m||d.aborted)return;c(Oe(A.current,Ne(g)))}})(),()=>{m=!0,u.abort()}},[e,t,r,H,n,o,s,i,a]),l}import{jsxDEV as Z,Fragment as N1}from"h:6___________________________";var y1=2,nr=2,an=1,f1=3,Ua=3,S1=4,_1=2,k1=12,sk=5,ls=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],h1=98,L1=99.5;function I1(e){return[{key:"project",label:"Project",width:"flex",render:(t,r,H)=>Z("text",{fg:e.text,children:_(t.project.slug,H)},void 0,!1,void 0,this)},{key:"adoption",label:"Adoption",width:sk+k1,priority:3,render:(t,r,H)=>Z(T1,{row:t,width:H},void 0,!1,void 0,this)},{key:"crashFree",label:"Crash-Free",width:11,align:"right",render:(t,r,H)=>Z(M1,{row:t,width:H},void 0,!1,void 0,this)},{key:"crashes",label:"Crashes",width:8,align:"right",priority:2,render:(t,r,H)=>t.pending?Z($a,{width:H,align:"right"},void 0,!1,void 0,this):Z("text",{fg:e.muted,children:_(t.health?Pe(t.health.sessionsCrashed??0):"\u2014",H,"right")},void 0,!1,void 0,this)},{key:"newIssues",label:"New Issues",width:10,align:"right",priority:1,render:(t,r,H)=>Z("text",{fg:e.muted,children:_(Pe(t.project.newGroups),H,"right")},void 0,!1,void 0,this)}]}function ik({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,onProjectSelect:i,registerActions:a,activateRow:l}){let c=S(),{dispatch:A,focusSearch:u,handleSearchBlur:d}=r,m=Fa(null),g=Fa(null),p=nk((Ae)=>{let He=g.current;if(He)He.removeAllListeners(cs.FOCUSED),He.removeAllListeners(cs.BLURRED);if(g.current=Ae,Ae)Ae.on(cs.FOCUSED,()=>u()),Ae.on(cs.BLURRED,()=>d())},[u,d]),O=r.committedQuery,y=as(()=>Fe(r.selectedProjects),[r.selectedProjects]),L=r.selectedEnvs.length>0?r.selectedEnvs:void 0,f=as(()=>js(r.selectedEnvs),[r.selectedEnvs]),k=fl(r.sort,r.selectedEnvs),I={org:t,query:O,statsPeriod:r.statsPeriod,project:y,environment:L,sort:k,reloadToken:s},{releases:h,nextCursor:b,cursor:w,page:T,nextPage:q,previousPage:E}=rk(e,I),D=Hk(e,{...I,cursor:w}),x=B(h),P=tk(e,{org:t,releases:x,project:y,environment:L}),N=se(h),F=B(D),j=se(D),U=F===void 0&&D.state==="loading",z=B(P),oe=se(P),ie=x!==void 0&&z===void 0&&P.state!=="error",G=h.state==="loading",Y=Je(h);Wa(()=>{if(x)A({type:"setEntries",payload:x})},[x,A]);let ee=Fa(T);Wa(()=>{if(ee.current===T)return;ee.current=T,A({type:"setSelected",payload:0})},[T,A]),Wa(()=>{A({type:"setStatus",payload:{loading:G,since:Y,error:N?.message??(j?`health: ${j.message}`:void 0)??(oe?`adoption: ${oe.message}`:void 0),noun:"releases"}})},[G,Y,N,j,oe,h,A]);let C=nk(()=>A({type:"setOpenDropdown",payload:null}),[A]);Ke(a,{open:()=>A({type:"setDetailOpen",payload:(Ae)=>!Ae}),nextPage:q,previousPage:E,back:()=>{if(!r.detailOpen)return!1;return A({type:"setDetailOpen",payload:!1}),!0}});let v=Math.max(20,n-y1),pe=Math.max(10,v-nr),Me=as(()=>br(I1(c),pe,{gap:an}),[pe,c]),de=as(()=>(x??[]).map((Ae,He)=>b1(Ae,r.detailOpen&&He===r.selected)),[x,r.detailOpen,r.selected]);ek(m,{index:r.selected,heights:de,layout:[o]});let re=x===void 0&&G,ue=x!==void 0&&x.length===0&&!G;return Z("box",{style:{flexDirection:"column",width:n,height:o},children:[Z("box",{style:{flexDirection:"row",width:n,flexShrink:0,height:Le,border:!0,borderStyle:"rounded",borderColor:r.searchFocused?c.accent:c.border,backgroundColor:c.panel,paddingLeft:1,paddingRight:1},children:[Z(Gt,{},void 0,!1,void 0,this),Z("input",{ref:p,value:r.searchQuery,placeholder:"Search releases\u2026",focused:r.searchFocused,onInput:(Ae)=>A({type:"setSearchQuery",payload:Ae}),style:{flexGrow:1,textColor:c.text,backgroundColor:c.panel,focusedTextColor:c.text,focusedBackgroundColor:c.panel,placeholderColor:c.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,sort:{value:k,items:f,onChange:(Ae)=>A({type:"setSort",payload:Ae})},width:n,anchorTop:Le,onProjectChange:i,onEnvChange:(Ae)=>A({type:"setSelectedEnvs",payload:Ae}),onPeriodChange:(Ae)=>A({type:"setStatsPeriod",payload:Ae}),onDropdownClose:C,onDropdownOpen:(Ae)=>A({type:"setOpenDropdown",payload:Ae})},void 0,!1,void 0,this),Z("scrollbox",{ref:m,focused:H,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:c.panel,foregroundColor:c.muted}},style:{flexGrow:1,flexBasis:0,width:n},children:[re?Array.from({length:S1},(Ae,He)=>Z(Q1,{resolved:Me,width:v,seed:He},He,!1,void 0,this)):null,ue?Z("box",{style:{flexDirection:"column",padding:1},children:[Z("text",{fg:c.text,children:"No releases found."},void 0,!1,void 0,this),O?Z("text",{fg:c.muted,children:O},void 0,!1,void 0,this):null,Z("text",{fg:c.muted,children:"Try widening the time range or clearing the version filter."},void 0,!1,void 0,this),Z("text",{fg:c.muted,children:"This organization may not have release tracking set up."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,x?.map((Ae,He)=>Z(w1,{release:Ae,index:He,health:F,healthPending:U,adoption:z,adoptionPending:ie,resolved:Me,width:v,selected:H&&He===r.selected,expanded:r.detailOpen&&He===r.selected,onPress:l},Ae.version,!1,void 0,this)),N&&x===void 0?Z("box",{style:{flexDirection:"column",padding:1},children:[Z("text",{fg:c.danger,children:"Failed to load releases"},void 0,!1,void 0,this),Z("text",{fg:c.muted,children:N.message},void 0,!1,void 0,this),N.retryable?Z("text",{fg:c.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),Z(Re,{count:x?.length,noun:"release",hasMore:b!==null,pagination:b!==null||T>1?{page:T,hasPrevious:T>1,hasNext:b!==null,loading:G,onPrevious:E,onNext:q}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ak(e,t){let r=[...e.projects].sort((H,n)=>H.slug.localeCompare(n.slug));if(t||r.length<=Ua)return{shown:r,hidden:0};return{shown:r.slice(0,Ua),hidden:r.length-Ua}}function b1(e,t){let{shown:r,hidden:H}=ak(e,t);return f1+r.length+(H>0?1:0)+1}function w1({release:e,index:t,health:r,healthPending:H,adoption:n,adoptionPending:o,resolved:s,width:i,selected:a,expanded:l,onPress:c}){let A=S(),{shown:u,hidden:d}=ak(e,l),m=Math.max(10,i-nr),g=he(e.lastDeploy?.dateFinished??e.dateCreated),p=e.lastDeploy?` \u2502 ${e.lastDeploy.environment}`:"",O=`${g}${p}`,y=Math.min(O.length+1,Math.max(0,i-nr-4)),L=Math.max(4,i-nr-y);return Z("box",{style:{flexDirection:"column",width:i,flexShrink:0},onMouseDown:()=>c(t),children:[Z("box",{style:{flexDirection:"row",width:i,backgroundColor:a?A.selected:void 0},children:[Z("text",{fg:A.accent,children:a?"\u276F ":" "},void 0,!1,void 0,this),Z("text",{fg:A.text,attributes:X,children:_(e.shortVersion||e.version,L)},void 0,!1,void 0,this),Z("text",{fg:A.subText,children:_(O,y,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Z("text",{fg:A.muted,children:_(` ${x1(e)}`,i)},void 0,!1,void 0,this),Z("box",{style:{flexDirection:"row",width:i},children:[Z("text",{children:" ".repeat(nr)},void 0,!1,void 0,this),s.map(({column:f,width:k},I)=>Z("text",{fg:A.subText,children:(I>0?" ".repeat(an):"")+_(f.label,k,f.align??"left")},f.key,!1,void 0,this))]},void 0,!0,void 0,this),u.map((f)=>Z("box",{style:{flexDirection:"row",width:i},children:[Z("text",{children:" ".repeat(nr)},void 0,!1,void 0,this),s.map(({column:k,width:I},h)=>Z("box",{style:{flexDirection:"row",flexShrink:0},children:[h>0?Z("text",{children:" ".repeat(an)},void 0,!1,void 0,this):null,k.render({project:f,health:r?.get(Cr(e.version,f.id)),pending:H,adoption:n?.get(Cr(e.version,f.id)),adoptionPending:o},a,I)]},k.key,!0,void 0,this))]},f.id,!0,void 0,this)),d>0?Z("text",{fg:A.subText,attributes:mr,children:_(` +${d} more ${d===1?"project":"projects"} \u2014 enter to expand`,i)},void 0,!1,void 0,this):null,Z("text",{fg:A.border,children:"\u2500".repeat(Math.max(0,m+nr))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function x1(e){let t=[];if(e.package)t.push(e.package);if(e.commitCount>0){let r=`${e.commitCount} ${e.commitCount===1?"commit":"commits"}`,H=`${e.authorCount} ${e.authorCount===1?"author":"authors"}`;t.push(`${r} by ${H}`)}return t.length>0?t.join(" \xB7 "):"no commits associated"}function T1({row:e,width:t}){let r=S();if(e.pending||e.adoptionPending)return Z($a,{width:t},void 0,!1,void 0,this);let H=e.health?.adoption;if(H===void 0)return Z("text",{fg:r.subText,children:_("\u2014",t)},void 0,!1,void 0,this);let n=Math.max(0,Math.min(100,H)),o=Math.min(sk,t),s=Math.max(0,t-o),i=e.adoption?P1(e.adoption,s):[];return Z(N1,{children:[Z("text",{fg:r.muted,children:_(`${Math.round(n)}%`,o)},void 0,!1,void 0,this),i.length>0?i.map((a,l)=>Z("text",{fg:a.series==="release"?r.accent:r.subText,children:a.glyph},l,!1,void 0,this)):Z("text",{children:" ".repeat(s)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function P1(e,t){if(t<=0||e.project.length===0&&e.release.length===0)return[];let r=Math.max(1,Math.floor(t/2)),H=Math.max(e.project.length,e.release.length),n=Array.from({length:H},(a,l)=>[e.project[l]??0,e.release[l]??0]),o=n.length>r?q1(n,r):AH(n,r),s=Math.max(1,...o.flatMap(([a,l])=>[a,l])),i=o.flatMap(([a,l])=>[{glyph:ok(a,s),series:"project"},{glyph:ok(l,s),series:"release"}]);while(i.length<t)i.push({glyph:" ",series:"project"});return i.slice(0,t)}function q1(e,t){let r=e.length/t;return Array.from({length:t},(H,n)=>{let o=Math.floor(n*r),s=Math.min(e.length,Math.floor((n+1)*r)),i=0,a=0;for(let l=o;l<s;l++)i+=e[l]?.[0]??0,a+=e[l]?.[1]??0;return[i,a]})}function ok(e,t){if(e<=0)return ls[0];let r=Math.ceil(e/t*ls.length)-1;return ls[Math.max(0,Math.min(ls.length-1,r))]}function M1({row:e,width:t}){let r=S();if(e.pending)return Z($a,{width:t,align:"right"},void 0,!1,void 0,this);let H=e.health?.crashFreeSessions;if(H===void 0)return Z("text",{fg:r.subText,children:_("\u2014",t,"right")},void 0,!1,void 0,this);let[n,o]=H<h1?[r.danger,"\u2717"]:H<L1?[r.warning,"!"]:[r.success,"\u2713"];return Z("text",{fg:n,children:_(`${o} ${C1(H)}`,t,"right")},void 0,!1,void 0,this)}function $a({width:e,align:t="left"}){let r=S();return Z("text",{fg:r.panelAlt,children:_("\u2500".repeat(Math.max(1,Math.floor(e*0.6))),e,t)},void 0,!1,void 0,this)}function C1(e){if(Number.isNaN(e))return"\u2014";if(e>0&&e<1)return"<1%";let r=10**(e>90?3:0),H=Math.round(e*r)/r;if(H===100&&e<100)H=Math.floor(e*r)/r;return`${H}%`}function Q1({resolved:e,width:t,seed:r}){let H=S(),n=Math.max(10,t-nr);return Z("box",{style:{flexDirection:"column",width:t,flexShrink:0},children:[Z("text",{fg:H.panelAlt,children:_(` ${Ya(24,r)}`,t)},void 0,!1,void 0,this),Z("text",{fg:H.panelAlt,children:_(` ${Ya(32,r+3)}`,t)},void 0,!1,void 0,this),Z("box",{style:{flexDirection:"row",width:t},children:[Z("text",{children:" ".repeat(nr)},void 0,!1,void 0,this),e.map(({column:o,width:s},i)=>Z("text",{fg:H.subText,children:(i>0?" ".repeat(an):"")+_(o.label,s,o.align??"left")},o.key,!1,void 0,this))]},void 0,!0,void 0,this),Array.from({length:_1},(o,s)=>Z("box",{style:{flexDirection:"row",width:t},children:[Z("text",{children:" ".repeat(nr)},void 0,!1,void 0,this),e.map(({column:i,width:a},l)=>Z("text",{fg:H.panelAlt,children:(l>0?" ".repeat(an):"")+_(Ya(a,r+s+l),a,i.align??"left")},i.key,!1,void 0,this))]},s,!0,void 0,this)),Z("text",{fg:H.border,children:"\u2500".repeat(Math.max(0,n+nr))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Ya(e,t){if(e<=0)return"";let r=0.4+t*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(e,Math.floor(e*r))))}import{useCallback as za,useEffect as IH,useMemo as uk,useRef as dk}from"h:0__";import{RenderableEvents as As}from"h:3__________";import{useCallback as ck}from"h:0__";function lk(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,reloadToken:i=0}){let a=ck((c,A)=>e?xl(e,{org:t,query:r,statsPeriod:H,project:n,environment:o,sort:s,cursor:c,signal:A}):null,[e,t,r,H,n,o,s]),l=It(a,i);return{replays:dt(l.status,(c)=>c.data),nextCursor:l.nextCursor,page:l.page,nextPage:l.nextPage,previousPage:l.previousPage}}function Ak(e,{org:t,replayId:r,statsPeriod:H,environment:n,count:o,reloadToken:s=0}){let i=ck((l)=>{if(!e)return null;if(o<=0)return Promise.resolve({data:[],nextCursor:null});return Pl(e,{org:t,replayId:r,statsPeriod:H,environment:n,signal:l})},[e,t,r,H,n,o]),{status:a}=Kt(i,{reloadKey:s});return{errors:dt(a,(l)=>l.data),nextCursor:B(a)?.nextCursor??null}}import{jsxDEV as te,Fragment as Ok}from"h:6___________________________";var Za=10,j1=15;function D1(e){return[{key:"session",label:"Replay",width:"flex",render:(t,r,H)=>{if(t.isArchived)return te("text",{fg:e.subText,children:_("Deleted Replay",H)},void 0,!1,void 0,this);let n=t.hasViewed?" ":"\u25CF ",o=t.user.displayName??"Anonymous User",s=H-n.length;return te(Ok,{children:[te("text",{fg:e.accent,children:n},void 0,!1,void 0,this),s>0?te("text",{fg:e.text,attributes:r?X:0,children:_(o,s)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}},{key:"os",label:"OS",width:11,render:(t,r,H)=>te("text",{fg:e.subText,children:_(MH(t.os),H)},void 0,!1,void 0,this)},{key:"browser",label:"Browser",width:11,render:(t,r,H)=>te("text",{fg:e.subText,children:_(MH(t.browser),H)},void 0,!1,void 0,this)},{key:"duration",label:"Duration",width:8,align:"right",render:(t,r,H)=>te("text",{fg:e.text,children:_(vs(t.durationSec),H,"right")},void 0,!1,void 0,this)},{key:"dead",label:"Dead",width:5,align:"right",priority:1,render:(t,r,H)=>te(Va,{value:t.countDeadClicks,width:H,color:e.warning},void 0,!1,void 0,this)},{key:"rage",label:"Rage",width:5,align:"right",priority:1,render:(t,r,H)=>te(Va,{value:t.countRageClicks,width:H,color:e.danger},void 0,!1,void 0,this)},{key:"errors",label:"Errors",width:6,align:"right",render:(t,r,H)=>te(Va,{value:t.countErrors,width:H,color:e.danger},void 0,!1,void 0,this)},{key:"activity",label:"Activity",width:Za,priority:2,render:(t,r,H)=>te(v1,{score:t.activity,width:H},void 0,!1,void 0,this)}]}function pk({client:e,org:t,state:r,focused:H,width:n,height:o,reloadToken:s,onProjectSelect:i,pushView:a,registerActions:l,activateRow:c}){let A=S(),{dispatch:u}=r,d=r.committedQuery,m=r.selectedProjects.length>0?r.selectedProjects:void 0,g=r.selectedEnvs.length>0?r.selectedEnvs:void 0,p=wl(r.sort),{replays:O,nextCursor:y,page:L,nextPage:f,previousPage:k}=lk(e,{org:t,query:d,statsPeriod:r.statsPeriod,project:m,environment:g,sort:p,reloadToken:s}),I=O.state==="loading",h=Je(O),b=B(O),w=se(O),T=uk(()=>b?.flatMap((P)=>P.projectId?[P.projectId]:[])??[],[b]),q=cH(e,t,T),E=uk(()=>b?.map((P)=>({...P,projectSlug:P.projectId?q.get(P.projectId):void 0})),[b,q]);IH(()=>{if(E)u({type:"setEntries",payload:E})},[E,u]);let D=dk(L);IH(()=>{if(D.current===L)return;D.current=L,u({type:"setSelected",payload:0})},[L,u]),IH(()=>{u({type:"setStatus",payload:{loading:I,since:h,error:w?.message,noun:"replays"}})},[I,h,w,O,u]);let x=za(()=>u({type:"setOpenDropdown",payload:null}),[u]);return Ke(l,{open:(P)=>{let N=tr(r)[P];if(N)a(G1(N,r.statsPeriod,r.selectedEnvs))},nextPage:f,previousPage:k}),te("box",{style:{flexDirection:"column",width:n,height:o},children:[te(F1,{state:r,width:n,placeholder:"Search replays\u2026"},void 0,!1,void 0,this),te(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,sort:{value:p,items:Rs,onChange:(P)=>u({type:"setSort",payload:P})},width:n,anchorTop:Le,onProjectChange:i,onEnvChange:(P)=>u({type:"setSelectedEnvs",payload:P}),onPeriodChange:(P)=>u({type:"setStatsPeriod",payload:P}),onDropdownClose:x,onDropdownOpen:(P)=>u({type:"setOpenDropdown",payload:P})},void 0,!1,void 0,this),te(nt,{rows:E,columns:D1(A),width:n,selectedIndex:r.selected,focused:H,rowKey:(P)=>P.id,loading:ke(O),error:w,errorTitle:"Failed to load replays",onRowClick:c,renderDetail:(P,N,F)=>R1(P,N,F,A),minFlex:j1,empty:{title:"No replays found.",lines:[d||void 0,"Try widening the time range or adjusting the query.","This organization may not have session replay enabled."]},layout:[o]},void 0,!1,void 0,this),te(Re,{count:E?.length,noun:"replay",hasMore:y!==null,pagination:y!==null||L>1?{page:L,hasPrevious:L>1,hasNext:y!==null,loading:I,onPrevious:k,onNext:f}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function R1(e,t,r,H){let n=[e.projectSlug,CH(e.id)].filter(Boolean),o=he(e.startedAt);if(o)n.push(`${o} ago`);return te("text",{fg:H.muted,children:_(` ${n.join(" \xB7 ")}`,r)},void 0,!1,void 0,this)}function Va({value:e,width:t,color:r}){let H=S(),n=e!==void 0;return te("text",{fg:n&&e>0?r:H.subText,children:_(n?String(e):"\u2014",t,"right")},void 0,!1,void 0,this)}function v1({score:e,width:t}){let r=S();if(t<=0)return null;if(e===void 0)return te("text",{fg:r.subText,children:_("\u2014",t)},void 0,!1,void 0,this);let H=Math.max(0,Math.min(Za,Math.round(e))),n=Math.round(H/Za*t),o=Math.max(0,t-n);return te(Ok,{children:[n>0?te("text",{fg:r.accent,children:"\u2588".repeat(n)},void 0,!1,void 0,this):null,o>0?te("text",{fg:r.border,children:"\u2591".repeat(o)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function G1(e,t,r){return{id:`replay:${e.id}`,sentryLocation:{screen:"explore.replays",detail:{kind:"replay",replayId:e.id}},label:CH(e.id),stateKey:Ks,initialState:{statsPeriod:t,selectedEnvs:r,selectedProjects:e.projectSlug?[e.projectSlug]:[]},render:(H)=>H.state?te(gk,{...H,state:H.state,replay:e},void 0,!1,void 0,this):null}}var E1=(e,{org:t,id:r,signal:H})=>Tl(e,{org:t,replayId:r,signal:H});function mk(e){return{id:`replay:${e}`,sentryLocation:{screen:"explore.replays",detail:{kind:"replay",replayId:e}},label:CH(e),stateKey:Ks,initialState:{statsPeriod:rH,selectedEnvs:[],selectedProjects:[]},render:(t)=>t.state?te(K1,{...t,state:t.state,replayId:e},void 0,!1,void 0,this):null}}function K1({client:e,org:t,state:r,replayId:H,reloadToken:n,width:o,height:s,updateView:i,...a}){let l=Ar(e,{org:t,id:H,reloadToken:n,load:E1}),c=B(l);if(IH(()=>{if(c)i(`replay:${H}`,{label:CH(c.id)})},[c,H,i]),!c)return te(lr,{status:l,noun:"replay",width:o,height:s},void 0,!1,void 0,this);return te(gk,{...a,client:e,org:t,state:r,replay:c,reloadToken:n,width:o,height:s,updateView:i},void 0,!1,void 0,this)}function X1(e){return[{key:"time",label:"Time",width:8,render:(t,r,H)=>te("text",{fg:e.muted,children:_(W1(t.timestamp),H)},void 0,!1,void 0,this)},{key:"level",label:"Level",width:5,priority:1,render:(t,r,H)=>te("text",{fg:t.level==="error"||t.level==="fatal"?e.danger:e.muted,children:_(t.level??"",H)},void 0,!1,void 0,this)},{key:"issue",label:"Issue",width:16,priority:2,render:(t,r,H)=>te("text",{fg:e.subText,children:_(t.issue??"",H)},void 0,!1,void 0,this)},{key:"title",label:"Title",width:"flex",render:(t,r,H)=>te("text",{fg:e.text,children:_(t.title,H)},void 0,!1,void 0,this)}]}function gk({client:e,org:t,state:r,replay:H,focused:n,width:o,height:s,reloadToken:i}){let a=S(),{dispatch:l}=r,{errors:c,nextCursor:A}=Ak(e,{org:t,replayId:H.id,statsPeriod:r.statsPeriod,environment:r.selectedEnvs.length>0?r.selectedEnvs:void 0,count:H.countErrors??0,reloadToken:i}),u=B(c),d=se(c);IH(()=>{if(u)l({type:"setEntries",payload:u})},[u,l]),IH(()=>{l({type:"setStatus",payload:{loading:c.state==="loading",error:d?.message,noun:"replay errors"}})},[c,d,l]);let m=za(()=>l({type:"setOpenDropdown",payload:null}),[l]),g=Math.max(20,o-2),p=H.user.displayName??"Anonymous User";return te("box",{style:{flexDirection:"column",width:o,height:s,paddingLeft:1},children:[te(Ve,{client:e,org:t,openDropdown:r.openDropdown,selectedProjects:r.selectedProjects,selectedEnvs:r.selectedEnvs,statsPeriod:r.statsPeriod,width:g,anchorTop:0,onProjectChange:(O)=>l({type:"setSelectedProjects",payload:O}),onEnvChange:(O)=>l({type:"setSelectedEnvs",payload:O}),onPeriodChange:(O)=>l({type:"setStatsPeriod",payload:O}),onDropdownClose:m,onDropdownOpen:(O)=>l({type:"setOpenDropdown",payload:O})},void 0,!1,void 0,this),te("box",{style:{flexDirection:"row",flexShrink:0},children:[te("text",{fg:a.text,attributes:X,children:R(p,Math.max(8,g-24))},void 0,!1,void 0,this),te("text",{fg:a.muted,children:R(` ${H.projectSlug??"\u2014"} \xB7 ${he(H.startedAt)} ago`,24)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),te(LH,{label:"Duration",value:vs(H.durationSec),width:g},void 0,!1,void 0,this),te(LH,{label:"Platform",value:[MH(H.os),MH(H.browser)].filter((O)=>O!=="\u2014").join(" \xB7 "),width:g},void 0,!1,void 0,this),te(LH,{label:"Clicks",value:`${cn(H.countDeadClicks)} dead \xB7 ${cn(H.countRageClicks)} rage`,width:g},void 0,!1,void 0,this),te(LH,{label:"Session",value:`${cn(H.countUrls)} urls \xB7 ${cn(H.countSegments)} segments \xB7 activity ${cn(H.activity)}`,width:g},void 0,!1,void 0,this),te(LH,{label:"Release",value:H.releases[0]??"\u2014",width:g},void 0,!1,void 0,this),te(LH,{label:"URL",value:H.urls[0]??"\u2014",width:g},void 0,!1,void 0,this),te("box",{style:{flexDirection:"column",flexShrink:0},children:[te("text",{fg:a.muted,children:" "},void 0,!1,void 0,this),te("text",{fg:a.subText,children:_("Playback is not available in a terminal. Open it at:",g)},void 0,!1,void 0,this),B1(ql(t,H.id),g).map((O,y)=>te("text",{fg:a.accent,children:_(O,g)},y,!1,void 0,this)),te("text",{fg:a.muted,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this),te(nt,{rows:u,columns:X1(a),width:o-1,selectedIndex:r.selected,focused:n,rowKey:(O)=>O.id,loading:ke(c),error:d,errorTitle:"Failed to load replay errors",empty:{title:"No errors in this replay."},layout:[s]},void 0,!1,void 0,this),te(Re,{count:u?.length,noun:"error",hasMore:A!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function LH({label:e,value:t,width:r}){let H=S(),n=10;return te("box",{style:{flexDirection:"row",flexShrink:0},children:[te("text",{fg:H.muted,children:_(e,10)},void 0,!1,void 0,this),te("text",{fg:H.text,children:R(t||"\u2014",Math.max(0,r-10))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function B1(e,t){if(t<=0)return[e];let r=[];for(let H=0;H<e.length;H+=t)r.push(e.slice(H,H+t));return r.length>0?r:[""]}function cn(e){return e===void 0?"\u2014":String(e)}function W1(e){if(!e)return"--:--:--";return/T(\d{2}:\d{2}:\d{2})/.exec(e)?.[1]??(e.slice(11,19)||"--:--:--")}function F1({state:e,width:t,placeholder:r}){let H=S(),{focusSearch:n,handleSearchBlur:o}=e,s=dk(null),i=za((a)=>{let l=s.current;if(l)l.removeAllListeners(As.FOCUSED),l.removeAllListeners(As.BLURRED);if(s.current=a,a)a.on(As.FOCUSED,()=>n()),a.on(As.BLURRED,()=>o())},[n,o]);return te("box",{style:{flexDirection:"row",width:t,flexShrink:0,height:Le,border:!0,borderStyle:"rounded",borderColor:e.searchFocused?H.accent:H.border,backgroundColor:H.panel,paddingLeft:1,paddingRight:1},children:[te(Gt,{},void 0,!1,void 0,this),te("input",{ref:i,value:e.searchQuery,placeholder:r,focused:e.searchFocused,onInput:(a)=>e.dispatch({type:"setSearchQuery",payload:a}),style:{flexGrow:1,textColor:H.text,backgroundColor:H.panel,focusedTextColor:H.text,focusedBackgroundColor:H.panel,placeholderColor:H.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as U1,useEffect as yk,useMemo as Y1}from"h:0__";import{jsxDEV as bt}from"h:6___________________________";var $1=1,V1=20;function Z1(e,t){return[{key:"star",label:" ",width:1,render:(r)=>bt("text",{fg:r.starred?t.warning:t.muted,children:r.starred?"\u2605":" "},void 0,!1,void 0,this)},{key:"name",label:"Name",width:24,render:(r,H,n)=>bt("text",{fg:H?t.text:t.subText,attributes:H?X:0,children:_(R(r.name,n),n)},void 0,!1,void 0,this)},{key:"type",label:"Type",width:12,priority:2,render:(r,H,n)=>bt("text",{fg:t.muted,children:_(R(r.datasetLabel,n),n)},void 0,!1,void 0,this)},{key:"query",label:"Query",width:"flex",render:(r,H,n)=>bt("text",{fg:r.query?t.muted:t.subText,children:_(R(z1(r),n),n)},void 0,!1,void 0,this)},{key:"creator",label:"Creator",width:14,priority:3,render:(r,H,n)=>bt("text",{fg:t.subText,children:_(R(r.createdBy??(r.isPrebuilt?"Sentry":"\u2014"),n),n)},void 0,!1,void 0,this)},{key:"activity",label:e.activityLabel,width:11,align:"right",priority:1,render:(r,H,n)=>bt("text",{fg:t.subText,children:_(J1(r),n,"right")},void 0,!1,void 0,this)}]}function Ja(e){let t=S(),{client:r,org:H,screen:n,state:o,focused:s,width:i,height:a,reloadToken:l,pushView:c,registerActions:A,activateRow:u}=e,{dispatch:d,focusSearch:m,handleSearchBlur:g}=o,p=Fi(n.id)??Fi("explore.all-queries"),O=Xi(p.source),y=iy(o.sort,p.source),{queries:L,nextCursor:f}=po(r,{org:H,source:p.source,search:o.committedQuery||void 0,sort:y,reloadToken:l}),k=B(L),I=se(L),h=L.state==="loading",b=Je(L);yk(()=>{if(k)d({type:"setEntries",payload:k})},[k,d]),yk(()=>{d({type:"setStatus",payload:{loading:h,since:b,error:I?.message,noun:p.noun}})},[h,b,I,L,p.noun,d]);let w=U1((q)=>{let E=tr(o)[q];if(E)c(go(E))},[o,c]);Ke(A,{open:w});let T=Y1(()=>Z1(p,t),[p,t]);return bt("box",{style:{flexDirection:"column",width:i,height:a},children:[bt(Lt,{value:o.searchQuery,placeholder:p.searchPlaceholder,focused:o.searchFocused,width:i,onInput:(q)=>d({type:"setSearchQuery",payload:q}),onFocus:m,onBlur:g},void 0,!1,void 0,this),bt("box",{style:{flexDirection:"row",width:i,flexShrink:0,height:$1,paddingLeft:1},children:[bt("text",{fg:t.text,attributes:X,children:p.title},void 0,!1,void 0,this),bt("text",{fg:t.muted,children:` ${p.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),bt(fH,{value:y,items:O,open:o.openDropdown==="sort",width:i,anchorTop:Le+1,onChange:(q)=>d({type:"setSort",payload:q}),onOpen:()=>d({type:"setOpenDropdown",payload:"sort"}),onClose:()=>d({type:"setOpenDropdown",payload:null})},void 0,!1,void 0,this),bt(nt,{rows:k,columns:T,width:i,selectedIndex:o.selected,focused:s,rowKey:(q)=>`${q.source}:${q.id}`,loading:ke(L),error:I,errorTitle:`Failed to load ${p.noun}`,minFlex:V1,onRowClick:u,empty:{title:"No saved queries found.",lines:[o.committedQuery?`No query name matches "${o.committedQuery}".`:void 0,p.emptyHint]},layout:[a]},void 0,!1,void 0,this),bt(Re,{count:k?.length,noun:"query",hasMore:f!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function z1(e){return e.query||e.fields.join(", ")}function J1(e){let t=e.lastVisited??e.dateUpdated;return t?he(t):"\u2014"}import{useCallback as n9,useEffect as tc,useMemo as _k,useRef as o9}from"h:0__";import{useCallback as e9,useEffect as t9,useMemo as r9,useState as H9}from"h:0__";function fk(e,{org:t,query:r="",project:H,sortBy:n,reloadToken:o=0}){let s=e9((a,l)=>e?$o(e,{org:t,query:r,project:H,sortBy:n,cursor:a,signal:l}).then((c)=>({data:Array.isArray(c.data)?c.data:[],nextCursor:c.nextCursor})):null,[e,t,r,H,n]),i=It(s,o);return{workflows:dt(i.status,(a)=>a.data),nextCursor:i.nextCursor,page:i.page,nextPage:i.nextPage,previousPage:i.previousPage}}var ec={byId:new Map,loading:!1};function Sk(e,t,r){let n=r9(()=>{let i=new Set;for(let a of r??[])for(let l of a.detectorIds??[])i.add(l);return[...i].sort()},[r]).join(","),[o,s]=H9(ec);return t9(()=>{if(!e||n===""){s(ec);return}let i=new AbortController,a=!1;return s((l)=>({byId:l.byId,loading:!0})),ES(e,{org:t,ids:n.split(","),signal:i.signal}).then((l)=>{if(a)return;s({byId:new Map(l.map((c)=>[c.id,c])),loading:!1})}).catch(()=>{if(!a)s(ec)}),()=>{a=!0,i.abort()}},[e,t,n]),o}import{jsxDEV as Nt}from"h:6___________________________";var s9=4,i9=24,bH="\u2014",a9=["project"];function c9(e){return[{key:"name",label:"Name",width:"flex",render:(t,r,H)=>Nt("text",{fg:l9(t,r,e),attributes:r?X:0,children:_(t.name,H)},void 0,!1,void 0,this)},{key:"lastTriggered",label:"Last Triggered",width:14,priority:2,render:(t,r,H)=>Nt("text",{fg:e.subText,children:_(t.lastTriggered,H)},void 0,!1,void 0,this)},{key:"actions",label:"Actions",width:18,priority:3,render:(t,r,H)=>Nt("text",{fg:t.enabled?e.text:e.subText,children:_(t.actions,H)},void 0,!1,void 0,this)},{key:"projects",label:"Projects",width:18,priority:4,render:(t,r,H)=>Nt("text",{fg:t.enabled?e.muted:e.subText,children:_(t.projects,H)},void 0,!1,void 0,this)},{key:"monitors",label:"Monitors",width:11,priority:1,render:(t,r,H)=>Nt("text",{fg:t.enabled?e.muted:e.subText,children:_(t.monitors,H)},void 0,!1,void 0,this)}]}function kk(e){let t=S(),{client:r,org:H,state:n,focused:o,width:s,height:i,reloadToken:a,onProjectSelect:l}=e,{dispatch:c,focusSearch:A,handleSearchBlur:u}=n,d=o_(n.sort),m=n.selectedProjects.length>0?n.selectedProjects:void 0,{workflows:g,nextCursor:p,page:O,nextPage:y,previousPage:L}=fk(r,{org:H,query:n.committedQuery,project:m,sortBy:d,reloadToken:a}),f=B(g),k=se(g),I=g.state==="loading",h=Je(g),b=Sk(r,H,f),w=_k(()=>[...b.byId.values()].flatMap((x)=>x.projectId?[x.projectId]:[]),[b.byId]),T=cH(r,H,w),q=_k(()=>f?.map((x)=>A9(x,b.byId,b.loading,T)),[f,b,T]);tc(()=>{if(q)c({type:"setEntries",payload:q})},[q,c]);let E=o9(O);tc(()=>{if(E.current===O)return;E.current=O,c({type:"setSelected",payload:0})},[O,c]),tc(()=>{c({type:"setStatus",payload:{loading:I,since:h,error:k?.message,noun:"alerts"}})},[I,h,k,c]);let D=n9(()=>c({type:"setOpenDropdown",payload:null}),[c]);return Ke(e.registerActions,{nextPage:y,previousPage:L}),Nt("box",{style:{flexDirection:"column",width:s,height:i},children:[Nt(Lt,{value:n.searchQuery,placeholder:"Search alerts by name\u2026",focused:n.searchFocused,width:s,onInput:(x)=>c({type:"setSearchQuery",payload:x}),onFocus:A,onBlur:u},void 0,!1,void 0,this),Nt("box",{style:{flexDirection:"row",width:s,height:1,flexShrink:0,overflow:"hidden",paddingLeft:1},children:[Nt("text",{fg:t.text,attributes:X,children:"Alerts"},void 0,!1,void 0,this),Nt("text",{fg:t.muted,children:" Automations that run when a monitor fires."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Nt(Ve,{client:r,org:H,openDropdown:n.openDropdown,selectedProjects:n.selectedProjects,selectedEnvs:n.selectedEnvs,statsPeriod:n.statsPeriod,filters:a9,sort:{value:d,items:Qa,onChange:(x)=>c({type:"setSort",payload:x})},width:s,anchorTop:Le+1,onProjectChange:l,onEnvChange:()=>{},onPeriodChange:()=>{},onDropdownOpen:(x)=>c({type:"setOpenDropdown",payload:x}),onDropdownClose:D},void 0,!1,void 0,this),Nt(nt,{rows:q,columns:c9(t),width:s,minFlex:i9,selectedIndex:n.selected,focused:o,rowKey:(x)=>x.id,loading:ke(g),error:k,errorTitle:"Failed to load alerts",onRowClick:e.activateRow,empty:{title:"No alerts found.",lines:n.committedQuery?[`No alert name matches "${n.committedQuery}".`]:["Alerts are the automations that run when a monitor fires.","This organization may not have the new alerts and monitors enabled."]},layout:[i,s9]},void 0,!1,void 0,this),Nt(Re,{count:q?.length,noun:"alert",hasMore:p!==null,pagination:p!==null||O>1?{page:O,hasPrevious:O>1,hasNext:p!==null,loading:I,onPrevious:L,onNext:y}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function l9(e,t,r){if(!e.enabled)return r.subText;return t?r.text:r.accent}function A9(e,t,r,H){let n=e.detectorIds??[];return{workflow:e,id:e.id,name:e.name||`Alert ${e.id}`,enabled:e.enabled!==!1,lastTriggered:e.lastTriggered?he(e.lastTriggered):bH,actions:u9(e),projects:d9(n,t,r,H),monitors:n.length===0?bH:m9(n.length)}}function u9(e){let t=Zo(e);if(t.length===0)return bH;return t.map(Vo).join(", ")}function d9(e,t,r,H){if(e.length===0)return bH;let n=e.map((s)=>t.get(s)).filter(p9);if(n.length===0)return r?"\u2026":bH;if(n.some((s)=>s.projectId===null))return"All Projects";let o=[...new Set(n.map((s)=>s.projectId?H.get(s.projectId):void 0).filter((s)=>Boolean(s)))];if(o.length===0)return r?"\u2026":bH;return o.join(", ")}function p9(e){return e!==void 0}function m9(e){return`${e} ${e===1?"monitor":"monitors"}`}var hk={"issues.feed":Bt,"issues.inbox":Bt,"issues.errors-outages":Bt,"issues.breached-metrics":Bt,"issues.warnings":Bt,"issues.configuration":Bt,"issues.user-feedback":Bt,"issues.recently-run":Bt,"issues.all-views":QS,"seer.ask":oO,"explore.profiles":J_,"explore.releases":ik,"explore.replays":pk,"explore.traces":zH,"explore.logs":zH,"explore.metrics":zH,"explore.errors":zH,"explore.conversations":If,"dashboards.all":_a,"dashboards.sentry-built":_a,"monitors.alerts":kk,"explore.all-queries":Ja,"explore.discover":Ja,"monitors.all":Tr,"monitors.mine":Tr,"monitors.error":Tr,"monitors.metric":Tr,"monitors.cron":Tr,"monitors.uptime":Tr,"monitors.mobile-build":Tr};function ln(e,t){if(!e)return;let r;switch(e.kind){case"issue":r=Ko(e.issueId,e.eventId);break;case"dashboard":r=oS(e.dashboardId);break;case"replay":r=mk(e.replayId);break;case"monitor":r=G_(e.detectorId);break;case"issue_view":r=NS(e.viewId);break;case"saved_query":r=vy(e);break}if(!r.stateKey||!t)return r;return{...r,initialState:{...r.initialState,...t}}}var y9=4,Lk=["nav","secondary","content"];function Ik({client:e,org:t,reloadToken:r,width:H,initialScreen:n,initialLocation:o,initialViewLocations:s,initialScreenSnapshots:i,initialSelectedProjects:a=[],availableNavGroups:l,focus:c,canOpen:A}){let u=hr(o?.screen??n),[d]=O9(()=>{let ne=(s??[]).map(($e)=>ln($e.detail,$e.state)).filter(($e)=>$e!==void 0);if(ne.length>0)return ne;let be=ln(o?.detail,o?.state);return be?[be]:[]}),[m,g]=g9(Xy,void 0,()=>Ky(u.group,u.item,d)),{railGroup:p,activeGroup:O,activeItem:y,navExpanded:L,showSecondary:f,gotoMode:k,viewStack:I}=m,h=Gl(O,y),b=h?hk[h.id]:void 0,w=I.at(-1),T=w&&!w.stateKey?w:void 0,q=!T&&(b!==void 0||w!==void 0),E=[...I].reverse().find((ne)=>ne.stateKey),D=E?.stateKey??(h?jr(h):void 0),x=E?.id??h?.id??D??"__unregistered__",P=d.at(-1),{active:N,resetOrgScoped:F,seed:j,snapshots:U}=sy(D,x,a,P?.stateKey?P.initialState:o?.state,i),z=An(()=>I.map((ne)=>ne.sentryLocation),[I]),oe=Ey(e,t,p,r),ie=An(()=>Gi(p,oe),[p,oe]),G=or((ne)=>{if(ne.stateKey&&ne.initialState)j(ne.stateKey,ne.initialState);g({type:"pushView",view:ne})},[j]),Y=or((ne,be)=>{g({type:"updateView",id:ne,update:be})},[]),ee=or(()=>g({type:"popView"}),[]),C=or(()=>g({type:"clearViews"}),[]),v=or((ne,be)=>{g({type:"navigate",group:ne,item:be}),N.dispatch({type:"setDetailOpen",payload:!1}),c.focus("content")},[c,N.dispatch]),pe=or((ne,be)=>{let $e=hr(ne);if(!l.some((_r)=>_r.id===$e.group))return;if(be)j(jr($e),be);v($e.group,$e.item)},[l,v,j]),Me=or((ne)=>{let be=Ms(yt(ne));if(be!==void 0){v(ne,be);return}let $e=ne===O?y:yt(ne).sections[0]?.items[0]??"";g({type:"openGroup",group:ne,item:$e}),c.focus("secondary")},[O,y,c,v]),de=or(()=>{g({type:"expandNav"}),c.focus("nav")},[c]),re=or((ne)=>{let be=UO(p,ne);v(be.group,be.item);let $e=ne.open?.();if($e)G($e)},[p,v,G]),ue=An(()=>k?ty(p,l):null,[k,p,l]),Ae=or((ne)=>{let be=Ms(yt(ne));if(be!==void 0){v(ne,be);return}let $e=ne===O?y:Gi(ne,oe)[0]?.label??"";g({type:"previewGroup",group:ne,item:$e})},[O,y,oe,v]),He=or((ne)=>{N.dispatch({type:"setEntries",payload:(be)=>{let $e=be;return $e.some((_r)=>_r?.id===ne.id)?$e.map((_r)=>_r?.id===ne.id?ne:_r):be}}),g({type:"replaceIssue",issue:ne})},[N.dispatch]),Ce=f||k,fe=Ce?co:0,Sr=Math.max(20,H-(L?ji:Di)-fe-2),wH=I.at(-2)?.label??y,wt=An(()=>{if(I.length===0)return;let ne=Hy([yt(O).label,y,...I.map((be)=>be.label)],Math.max(0,Sr-y9-ni(wH,Sr)));return ne?` ${ne} `:void 0},[I,O,y,Sr,wH]),Zr=An(()=>{if(k)return[{command:"sentry.nav.back",label:"cancel"}];if(N.searchFocused)return[{command:"sentry.nav.open",label:"submit"},{command:"sentry.nav.back",label:"cancel"}];let ne=w?[{command:"sentry.nav.back",label:"back"}]:[],be=T?A?[{command:"sentry.nav.open",label:"open"}]:[]:[...A?[{command:"sentry.nav.open",label:N.detailOpen?"close":h?.openLabel??"open"}]:[],{command:"sentry.nav.search",label:"search"}];return[...ne,...be,{command:"sentry.nav.goto",label:"nav"},{command:"sentry.app.commandPalette",label:"commands"},{command:"sentry.app.help",label:"help"},...w?[]:[{command:"sentry.app.quit",label:"quit"}]]},[k,N.searchFocused,N.detailOpen,w,T,h,A]);return{...m,dispatch:g,showSecondaryPane:Ce,topView:w,detailView:T,listActive:q,screen:h,ScreenComponent:b,state:N,viewLocations:z,screenSnapshots:U,resetOrgScoped:F,seed:j,navExtras:oe,secondaryItems:ie,gotoHotkeys:ue,contentWidth:Sr,breadcrumb:wt,backTarget:wH,statusHints:Zr,navigateTo:v,navigateToScreen:pe,openNavGroup:Me,expandNav:de,selectNavItem:re,previewNavGroup:Ae,pushView:G,popView:ee,clearViews:C,updateView:Y,replaceIssue:He}}import{useEffect as bk,useMemo as f9}from"h:0__";import{abandonNavigation as S9,beginNavigation as _9,breadcrumb as k9,endNavigation as h9,isTelemetryEnabled as L9}from"h:7___________________________________";var I9=250;function wk(e,t,r){let H=`${yt(e).label} \u203A ${t}`,n=L9();f9(()=>{if(!n)return;_9(H),k9({category:"navigation",message:H})},[H,n]),bk(()=>n?()=>S9(H):void 0,[H,n]),bk(()=>{if(!n||r)return;let o=Date.now(),s=setTimeout(()=>h9(H,o),I9);return()=>clearTimeout(s)},[H,r,n])}import{useEffect as b9,useState as w9}from"h:0__";import{watchForUpdate as x9}from"h:9________________________________";function xk(){let[e,t]=w9(void 0);return b9(()=>x9(t),[]),e}import{useCallback as T9,useRef as P9,useState as q9}from"h:0__";function Tk(e,t,{onOptimistic:r,onNotice:H}){let[n,o]=q9(()=>new Set),s=P9(new Map),i=T9((a,l)=>{let c=wn(a);if(!c||!e)return;let A=c.update(l);if(!A){H({kind:"warning",text:HA(a)});return}let u=l,d=rA(l,A);r(d),s.current.get(l.id)?.abort();let m=new AbortController;s.current.set(l.id,m),o((p)=>new Set(p).add(l.id));let g=()=>o((p)=>{let O=new Set(p);return O.delete(l.id),O});(async()=>{try{let p=await Ec(e,{org:t,issueId:l.id,update:A,signal:m.signal});if(m.signal.aborted)return;r({...d,...p}),H({kind:"success",text:`${c.pastTense} ${l.shortId}`})}catch(p){if(m.signal.aborted)return;r(u),H({kind:"error",text:`failed: ${p instanceof pr?p.message:String(p)}`})}finally{if(!m.signal.aborted)s.current.delete(l.id),g()}})()},[e,t,r,H]);return{pending:n,run:i}}var us={"sentry.view.filterProject":"project","sentry.view.filterEnv":"env","sentry.view.filterDate":"date"},M9=Object.entries(us);function C9({showOpenUrl:e,showPalette:t,showHelp:r,showSeerAutofix:H,setShowHelp:n}){return(o)=>{if(e||t||H)return"focused";if(!r)return"notMine";if(Q("sentry.nav.back",o)||Q("sentry.app.help",o))n(!1);return"mine"}}function Q9({state:e,showOrgPicker:t}){return(r)=>{if(!e.openDropdown&&!t&&!Ai())return"notMine";if(e.openDropdown&&!Ai()&&Q("sentry.nav.back",r))return e.dispatch({type:"setOpenDropdown",payload:null}),"mine";return"focused"}}function N9({state:e,screenActions:t,setShowPalette:r}){return(H)=>{if(!Q("sentry.app.commandPalette",H))return"notMine";if(e.searchFocused)e.cancelSearch();if(t.current?.inputFocused?.())t.current.blurInput?.();return r(!0),"mine"}}function j9({state:e,screenActions:t,setShowOpenUrl:r}){return(H)=>{if(!Q("sentry.app.openUrl",H))return"notMine";if(e.searchFocused)e.cancelSearch();if(t.current?.inputFocused?.())t.current.blurInput?.();return r(!0),"mine"}}function D9({screenActions:e}){return(t)=>{let r=e.current;if(!r?.inputFocused?.())return"notMine";if(Q("sentry.nav.back",t))return r.blurInput?.(),"mine";if(Q("sentry.nav.open",t))return r.submitInput?.()?"mine":"focused";if(r.handleInputKey?.(t))return"mine";if(Q("sentry.app.focusNext",t)||Q("sentry.app.focusPrev",t))return r.blurInput?.(),"notMine";return"focused"}}function R9({state:e}){return(t)=>{if(!e.searchFocused)return"notMine";if(Q("sentry.nav.back",t))return e.cancelSearch(),"mine";if(Q("sentry.nav.open",t))return e.submitSearch(),"mine";return"focused"}}function v9({navigation:e,setShowOrgPicker:t}){return(r)=>{if(!e.gotoMode){if(!Q("sentry.nav.goto",r))return"notMine";return e.dispatch({type:"openGoto"}),"mine"}if(Q("sentry.nav.goto",r)||Q("sentry.nav.back",r)||r.ctrl||r.meta||r.shift)return e.dispatch({type:"closeGoto"}),"mine";if(Q("sentry.app.switchOrg",r))return e.dispatch({type:"closeGoto"}),t(!0),"mine";let H=e.gotoHotkeys?.byKey.get(r.name.toLowerCase());if(H?.kind==="group")return e.previewNavGroup(H.group),"mine";if(H?.kind==="item")return e.navigateTo(e.railGroup,H.item),"mine";return e.dispatch({type:"closeGoto"}),"mine"}}function G9({navigation:e}){return(t)=>{if(!e.topView||e.showSecondary)return"notMine";if(!Q("sentry.nav.back",t))return"notMine";return e.popView(),"mine"}}function E9({navigation:e,focus:t,screenActions:r}){return(H)=>{if(e.topView)return"notMine";if(t.focusedRef.current!=="content")return"notMine";if(!Q("sentry.nav.back",H))return"notMine";return r.current?.back?.()?"mine":"notMine"}}function K9({navigation:e,focus:t}){return(r)=>{if(!e.showSecondary||!Q("sentry.nav.back",r))return"notMine";return e.dispatch({type:"closeSecondary"}),t.focus("nav"),"mine"}}function X9({navigation:e,state:t,focus:r,setShowHelp:H,setShowOrgPicker:n,refresh:o,runUpdate:s,openInBrowser:i,onQuit:a}){return(l)=>{if(e.listActive&&r.focusedRef.current==="content"){for(let[c,A]of M9){if(!Q(c,l))continue;if(Bn(A))t.dispatch({type:"setOpenDropdown",payload:A});return"mine"}if(Q("sentry.view.sort",l)&&Ym())return t.dispatch({type:"setOpenDropdown",payload:"sort"}),"mine"}if(Q("sentry.app.help",l))return H(!0),"mine";if(Q("sentry.app.refresh",l))return o(),"mine";if(Q("sentry.app.switchOrg",l))return n(!0),"mine";if(Q("sentry.app.update",l))return s(),"mine";if(Q("sentry.app.openInBrowser",l))return i(),"mine";if(Q("sentry.app.quit",l))return a(),"mine";if(Q("sentry.app.focusNext",l)){if(!e.navExpanded)return r.focus("content"),"mine";let c=r.focusedRef.current;if(e.showSecondary)r.focus(c==="nav"?"secondary":"nav");else r.focus(c==="nav"?"content":"nav");return"mine"}if(Q("sentry.app.focusPrev",l)){if(!e.navExpanded)return r.focus("content"),"mine";let c=r.focusedRef.current;if(e.showSecondary)r.focus(c==="secondary"?"nav":"secondary");else r.focus(c==="content"?"nav":"content");return"mine"}return"notMine"}}function B9({activeIssue:e,focus:t,triage:r}){return(H)=>{if(!e||t.focusedRef.current!=="content")return"notMine";for(let n of $s){if(!Q(n.commandId,H))continue;return r(n.commandId,e),"mine"}return"notMine"}}function W9({navigation:e,focus:t,availableNavGroups:r}){return(H)=>{if(t.focusedRef.current!=="nav")return"notMine";if(Q("sentry.nav.open",H))return e.openNavGroup(e.railGroup),"mine";let n=r.findIndex((i)=>i.id===e.railGroup),o=Q("sentry.nav.down",H)?1:Q("sentry.nav.up",H)?-1:0;if(o===0)return"notMine";let s=r[(n+o+r.length)%r.length];return e.dispatch({type:"selectRailGroup",group:s.id}),"mine"}}function F9({navigation:e,focus:t}){return(r)=>{if(!e.showSecondary||t.focusedRef.current!=="secondary")return"notMine";let H=e.secondaryItems.findIndex((s)=>s.label===e.secondaryItem);if(Q("sentry.nav.open",r)){let s=e.secondaryItems[H]??e.secondaryItems[0];if(s)e.selectNavItem(s);return"mine"}let n=Q("sentry.nav.down",r)?1:Q("sentry.nav.up",r)?-1:0;if(n===0)return"notMine";let o=Math.max(0,Math.min(H+n,e.secondaryItems.length-1));return e.dispatch({type:"selectSecondaryItem",item:e.secondaryItems[o]?.label??e.secondaryItem}),"mine"}}function U9({screenActions:e,focus:t}){return(r)=>{let H=e.current;if(!H||!t.isFocused("content"))return"notMine";if(H.openDetail&&Q("sentry.nav.open",r))return H.openDetail(),"mine";return H.handleKey?.(r)?"mine":"notMine"}}function Y9({navigation:e,state:t,focus:r}){return(H)=>{if(!e.listActive||r.focusedRef.current!=="content")return"notMine";if(!Q("sentry.nav.search",H))return"notMine";return t.focusSearch(),"mine"}}function $9({navigation:e,state:t,screenActions:r,focus:H}){return(n)=>{if(!e.listActive||H.focusedRef.current!=="content")return"notMine";let o=Math.max(0,t.entries.length-1);if(Q("sentry.nav.pageDown",n))return r.current?.nextPage?.()?"mine":"notMine";if(Q("sentry.nav.pageUp",n))return r.current?.previousPage?.()?"mine":"notMine";if(Q("sentry.nav.open",n)){let s=r.current?.open;if(!s)return"notMine";return s(t.selected),"mine"}if(Q("sentry.nav.down",n))return t.dispatch({type:"setSelected",payload:(s)=>Math.min(s+1,o)}),"mine";if(Q("sentry.nav.up",n))return t.dispatch({type:"setSelected",payload:(s)=>Math.max(s-1,0)}),"mine";if(Q("sentry.nav.top",n))return t.dispatch({type:"setSelected",payload:0}),"mine";if(Q("sentry.nav.bottom",n))return t.dispatch({type:"setSelected",payload:o}),"mine";return"notMine"}}function Pk(e){return[C9(e),Q9(e),N9(e),j9(e),D9(e),R9(e),v9(e),G9(e),E9(e),K9(e),X9(e),B9(e),W9(e),F9(e),U9(e),Y9(e),$9(e)]}import{jsxDEV as ut}from"h:6___________________________";var qk="issues.feed";function Mk({onQuit:e,client:t=null,org:r="",initialScreen:H=qk,initialLocation:n,initialProjectsByOrg:o={},user:s,initialSeerCodeModeByOrg:i={},initialSeerBashModeByOrg:a={},initialSeerShowThinkingByOrg:l={},onApplyUpdate:c,onOpenUrl:A,initialSessionSnapshot:u,onSessionSnapshot:d}){let m=S(),{width:g,height:p}=Z9(),[O]=At(()=>Yl(u)),y=O?.snapshot,L=O?.location??n,[f,k]=At(()=>Object.fromEntries(Object.entries({...o,...y?.projectsByOrg}).map(([K,ae])=>[K,[...ae]]))),I=rc(f),[h,b]=At(()=>({...i,...y?.seerCodeModeByOrg})),[w,T]=At(()=>({...a,...y?.seerBashModeByOrg})),[q,E]=At(()=>({...l,...y?.seerShowThinkingByOrg})),[D,x]=At(L?.org??y?.org??r),[P,N]=At(!1),[F,j]=At(!1),[U,z]=At(!1),[oe,ie]=At(!1),[G,Y]=At(),[ee,C]=At(),[v,pe]=At(),[Me,de]=At(),[re,ue]=At(s),Ae=Me===void 0||Me.includes("seer-explorer"),He=ds(()=>Ut.filter((K)=>K.id!=="seer"||Ae),[Ae]),[Ce,fe]=At(0),Te=_t(()=>fe((K)=>K+1),[]),[Sr,wH]=At(!1),wt=zO(Lk,"content"),Zr=Ik({client:t,org:D,reloadToken:Ce,width:g,initialScreen:H,initialLocation:L,initialViewLocations:O?.viewStack,initialScreenSnapshots:y?.navigation.screens,initialSelectedProjects:f[D]??[],availableNavGroups:He,focus:wt,canOpen:Sr}),{activeGroup:ne,activeItem:be,backTarget:$e,breadcrumb:_r,clearViews:Hc,contentWidth:nc,detailView:ps,expandNav:Qk,gotoHotkeys:oc,gotoMode:sc,listActive:ic,navigateTo:pn,navigateToScreen:mn,navExpanded:Nk,navExtras:jk,openNavGroup:Dk,pushView:ms,railGroup:ac,replaceIssue:Rk,resetOrgScoped:cc,screen:kr,ScreenComponent:lc,secondaryItem:vk,seed:gs,selectNavItem:Gk,showSecondaryPane:Ek,state:We,statusHints:Kk,topView:sr,updateView:Xk,viewLocations:Os,screenSnapshots:Ac}=Zr;un(()=>{if(pe(void 0),de(void 0),!t||!D)return;let K=new AbortController;return Kc(t,{org:D,signal:K.signal}).then((ae)=>{if(ae.avatar?.avatarUrl)pe(ae.avatar.avatarUrl);if(Array.isArray(ae.features))de(ae.features)}).catch(()=>{}),()=>K.abort()},[t,D]),un(()=>{if(s?.email||!t){ue(s);return}if(ne!=="seer")return;let K=new AbortController;return Xc(t,K.signal).then(ue).catch(()=>{}),()=>K.abort()},[ne,t,s]);let Bk=_t((K)=>{b((ae)=>{let it={...ae,[D]:K};return dn({seerCodeModeByOrg:it}).catch(()=>{}),it})},[D]),Wk=_t((K)=>{T((ae)=>{let it={...ae,[D]:K};return dn({seerBashModeByOrg:it}).catch(()=>{}),it})},[D]),Fk=_t((K)=>{E((ae)=>{let it={...ae,[D]:K};return dn({seerShowThinkingByOrg:it}).catch(()=>{}),it})},[D]),Uk=_t((K)=>{We.dispatch({type:"setSelectedProjects",payload:K});let ae={...I.current,[D]:[...K]};I.current=ae,k(ae),dn({projectsByOrg:ae}).catch(()=>{})},[D,We.dispatch]);wk(ne,be,We.status.loading);let Wt=Tg(t,D,{features:Me,isEmployee:re?.email?.toLowerCase().endsWith("@sentry.io")===!0,userId:re?.id,pageName:kr?.id,codeMode:h[D]??"only",bashMode:w[D]??!1,showThinking:q[D]??!1,initialRunId:y?.seerRunId,onCodeModeChange:Bk,onBashModeChange:Wk,onShowThinkingChange:Fk}),Pr=ds(()=>{let K=sr?.sentryLocation??(kr?{screen:kr.id}:void 0);if(!K)return;let it=!sr&&kr?.kind!=="chat"||Boolean(sr?.stateKey)?{...K.state,query:We.committedQuery,sort:We.sort,statsPeriod:We.statsPeriod,selectedProjects:[...We.selectedProjects],selectedEnvs:[...We.selectedEnvs]}:K.state;return{org:D,...K,state:it,...K.screen==="seer.ask"&&Wt.runId!==null?{seerRunId:Wt.runId}:{}}},[D,kr,Wt.runId,We,sr]),ys=ds(()=>{if(!d||!D||!Pr)return;let K=Os.length-1;return Ul({org:D,navigation:{location:bn(Pr),viewStack:Os.map((ae,it)=>bn(it===K?Pr:{org:D,...ae})),screens:{...Ac}},projectsByOrg:Object.fromEntries(Object.entries(f).map(([ae,it])=>[ae,[...it]])),seerCodeModeByOrg:{...h},seerBashModeByOrg:{...w},seerShowThinkingByOrg:{...q},...Wt.runId===null?{}:{seerRunId:Wt.runId}})},[Pr,d,D,f,Ac,w,Wt.runId,h,q,Os]);un(()=>{if(ys)d?.(ys)},[d,ys]);let fs=_t(()=>{if(!Pr)return;let K=bn(Pr);if(!A){C(K);return}Promise.resolve(A(K)).then((ae)=>{if(!ae)C(K)}).catch(()=>C(K))},[Pr,A]),Ss=rc(null),Yk=_t((K)=>{Ss.current=K,wH(Boolean(K?.open||K?.openDetail))},[]),[$k,uc]=At(null),_s=rc(void 0),ir=_t((K)=>{uc(K),clearTimeout(_s.current),_s.current=setTimeout(()=>uc(null),4000)},[]);un(()=>()=>clearTimeout(_s.current),[]);let ks=_t((K)=>{if(ie(!1),!K||K===D)return;x(K),Hc(),cc(I.current[K]??[]),ir({kind:"info",text:`switched to ${K}`}),J9({org:K}),z9({category:"navigation",message:`switched org to ${K}`}),ej("info","ui.org.switched",{org:K}),dn({org:K}).catch(()=>{})},[Hc,D,cc,ir]),xH=Tk(t,D,{onOptimistic:Rk,onNotice:ir}),Vk=_t((K)=>{if(!Wt.capabilities.available){ir({kind:"error",text:"Seer is not enabled for this organization"});return}Wt.reset(),Y(K)},[Wt,ir]),zr=sr?.issue??(ne==="issues"?tr(We)[We.selected]:void 0);un(()=>{if(ne==="seer"&&!Ae)mn(qk)},[ne,mn,Ae]);let dc=_t((K)=>{let ae=hr(K.screen);if(K.org!==D)ks(K.org);pn(ae.group,ae.item);let it=ln(K.detail,K.state);if(it){if(!it.stateKey&&K.state)gs(jr(ae),K.state);ms(it)}else if(K.state)gs(jr(ae),K.state)},[pn,D,ms,gs,ks]),Zk=_t((K)=>{let ae=In(K);if(ae.kind!=="location")return Bl(ae,"command_palette"),ae;dc(ae.location),z(!1);return},[dc]),gn=xk(),hs=Boolean(gn&&c),On=_t(()=>{if(!gn||!c){ir({kind:"idle",text:"already up to date"});return}Promise.resolve(c(gn)).then((K)=>{if(!K)ir({kind:"error",text:"update could not be applied"})})},[gn,c,ir]),zk=ds(()=>rl({streamView:ic,hasIssue:Boolean(zr),updateReady:hs},He),[ic,zr,hs,He]),Jk=_t((K)=>{if(j(!1),K.target.kind==="nav"){pn(K.target.group,K.target.item);return}let{commandId:ae}=K.target;switch(ae){case"sentry.app.quit":e();return;case"sentry.app.help":N(!0);return;case"sentry.app.refresh":Te();return;case"sentry.app.switchOrg":ie(!0);return;case"sentry.app.openUrl":z(!0);return;case"sentry.app.openInBrowser":fs();return;case"sentry.app.update":On();return;case"sentry.nav.search":wt.focus("content"),We.focusSearch();return;case"sentry.view.filterProject":case"sentry.view.filterEnv":case"sentry.view.filterDate":{if(!Bn(us[ae]))return;wt.focus("content"),We.dispatch({type:"setOpenDropdown",payload:us[ae]});return}default:if(wn(ae)&&zr)xH.run(ae,zr)}},[zr,wt,pn,e,fs,Te,On,We,xH]),eh=_t((K)=>{let ae=wt.focusedRef.current==="content"&&K===We.selected;if(We.dispatch({type:"setSelected",payload:K}),Zr.dispatch({type:"closeSecondary"}),wt.focus("content"),ae)Ss.current?.open?.(K)},[wt,Zr,We]),th=Pk({showOpenUrl:U||Boolean(ee),showPalette:F,showHelp:P,showOrgPicker:oe,showSeerAutofix:Boolean(G),setShowOpenUrl:z,setShowPalette:j,setShowHelp:N,setShowOrgPicker:ie,navigation:Zr,state:We,screenActions:Ss,focus:wt,availableNavGroups:He,activeIssue:zr,triage:xH.run,refresh:Te,runUpdate:On,openInBrowser:fs,onQuit:e});V9((K)=>{Rt(th,K,je)});let rh=Math.max(3,p-3),pc=wt.isFocused("content")&&!oe&&!G,mc={client:t,org:D,focused:pc,width:nc,height:rh,reloadToken:Ce,onProjectSelect:Uk,pendingIds:xH.pending,runIssueAction:xH.run,openIssueAutofix:Vk,pushView:ms,notify:ir,activateRow:eh,registerActions:Yk,updateView:Xk,navigateToScreen:mn};return ut("box",{style:{width:"100%",height:"100%",flexDirection:"column",backgroundColor:m.bg},children:[ut("box",{style:{flexGrow:1,flexDirection:"row"},children:[ut(WO,{active:ac,expanded:Nk,focused:wt.isFocused("nav"),avatarUrl:v,orgSlug:D,groups:He,hotkeys:oc?.groups,onSelect:Dk,onExpand:Qk,onOrgPress:()=>ie(!0)},void 0,!1,void 0,this),Ek?ut($O,{group:ac,activeItem:vk,focused:wt.isFocused("secondary"),extras:jk,hotkeys:oc?.items,onSelect:Gk},void 0,!1,void 0,this):null,ut("box",{title:_r,titleColor:m.accent,style:{flexGrow:1,flexDirection:"column",overflow:"hidden",border:!0,borderColor:pc&&!We.searchFocused?m.borderFocused:m.border},children:ut(Vn.Provider,{value:Wt,children:sr?sr.render({...mc,state:sr.stateKey?We:void 0,issue:sr.issue}):lc&&kr?ut(lc,{...mc,screen:kr,state:We},kr.id,!1,void 0,this):ut("box",{style:{flexDirection:"column",paddingLeft:1},children:[ut("text",{fg:m.text,attributes:1,children:`${yt(ne).label} \u203A ${be}`},void 0,!1,void 0,this),ut("text",{fg:m.muted,children:"Not implemented yet."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),sr?ut(qA,{parent:$e,top:0,right:g-1,paneWidth:nc},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),ut(VO,{notice:sc?{kind:"info",text:"go to\u2026"}:$k??(ps?{kind:"idle",text:ps.label??""}:tj(We.status)),since:ps||sc?void 0:We.status.since,hints:Kk,onUpdate:hs?On:void 0},void 0,!1,void 0,this),P?ut(eg,{onClose:()=>N(!1)},void 0,!1,void 0,this):null,F?ut(wA,{actions:zk,onRun:Jk,onClose:()=>j(!1)},void 0,!1,void 0,this):null,U?ut(lO,{onSubmit:Zk,onClose:()=>z(!1)},void 0,!1,void 0,this):null,oe?ut(FO,{client:t,currentOrg:D,anchorLeft:XO,anchorTop:BO,onSelect:ks,onClose:()=>ie(!1)},void 0,!1,void 0,this):null,ee?ut(ZO,{url:ee,onClose:()=>C(void 0)},void 0,!1,void 0,this):null,G?ut(aO,{issue:G,chat:Wt,client:t,org:D,navigateToScreen:mn,notify:ir,onClose:()=>Y(void 0)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function tj(e){if(e.error)return{kind:"error",text:e.error};if(e.loading)return{kind:"loading",text:e.noun?`loading ${e.noun}\u2026`:"loading\u2026"};return{kind:"idle",text:""}}import{jsxDEV as Ck}from"h:6___________________________";var Ane={version:Ls,hostApiVersion:gc};function une({theme:e,...t}){return Ck(eA,{...e,children:Ck(Mk,{...t},void 0,!1,void 0,this)},void 0,!1,void 0,this)}export{une as PayloadApp,Ane as payload};
|
|
19
|
+
See the [Mobile Vitals docs](https://docs.sentry.io/product/insights/mobile/mobile-vitals/) for more information.`,displayType:"text",queries:[],interval:"1h",layout:{h:2,x:4,y:0,w:2,minH:2}},{id:"app-start-table",title:"App Starts",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"(has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number])",columns:["app.vitals.start.screen"],aggregates:["avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,cold)","avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,warm)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["app.vitals.start.screen","avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,cold)","avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,warm)","count_unique(transaction.span_id)"],fieldAliases:["Screen","Avg Cold Start","Avg Warm Start","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:2,w:6,minH:2}},{id:"screen-load-table",title:"Screen Loads",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)) has:transaction",columns:["transaction"],aggregates:["avg(app.vitals.ttid.value)","avg(app.vitals.ttfd.value)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","avg(app.vitals.ttid.value)","avg(app.vitals.ttfd.value)","count_unique(transaction.span_id)"],fieldAliases:["Screen","Avg TTID","Avg TTFD","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:5,w:6,minH:2}},{id:"screen-rendering-table",title:"Screen Rendering",description:"Frame rates are weighted across screen load transactions using total frame counts.",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count has:transaction",columns:["transaction"],aggregates:["equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","count_unique(transaction.span_id)"],fieldAliases:["Transaction","Slow Frame %","Frozen Frame %","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:8,w:6,minH:2}}]},"9":{title:"Mobile Vitals App Starts",description:"",widgets:[{id:"avg-cold-starts-big-number",title:"Average Cold Start",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:0,y:0,w:1,minH:1}},{id:"avg-warm-starts-big-number",title:"Average Warm Start",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:3,y:0,w:1,minH:1}},{id:"total-cold-start-count-big-number",title:"Cold Start Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:1,y:0,w:1,minH:1}},{id:"total-warm-start-count-big-number",title:"Warm Start Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:4,y:0,w:1,minH:1}},{id:"avg-cold-start-line",title:"Average Cold Start",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"-avg(tags[app.vitals.start.value,millisecond])",fields:["avg(tags[app.vitals.start.value,millisecond])"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:0,y:1,w:3,minH:2}},{id:"avg-warm-start-line",title:"Average Warm Start",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"-avg(tags[app.vitals.start.value,millisecond])",fields:["avg(tags[app.vitals.start.value,millisecond])"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:3,y:1,w:3,minH:2}},{id:"cold-start-device-distribution-bar",title:"Cold Start Device Distribution",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:["device.class"],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"device.class",fields:["device.class","avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:2,x:0,y:3,w:3,minH:2}},{id:"warm-start-device-distribution-bar",title:"Warm Start Device Distribution",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:["device.class"],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"device.class",fields:["device.class","avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:2,x:3,y:3,w:3,minH:2}},{id:"cold-operations-table",title:"Cold Start Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'(!is_transaction:true !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:span.description transaction.op:[ui.load,navigation] has:ttid app_start_type:cold span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true ((has:span.description !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render") OR (has:span.name !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render")) app.vitals.start.type:cold span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true !span.op:app.start !transaction.op:[ui.load,navigation] !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render" !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:app.vitals.start.screen !has:tags[app.vitals.start.value,number] app.vitals.start.type:cold)',columns:["span.op","span.name","span.description"],aggregates:["avg(span.self_time)"],orderby:"-avg(span.self_time)",fields:["span.op","span.name","span.description","avg(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","Avg"]}],interval:"1h",layout:{h:6,x:0,y:5,w:3,minH:2}},{id:"warm-operations-table",title:"Warm Start Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'(!is_transaction:true !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:span.description transaction.op:[ui.load,navigation] has:ttid app_start_type:warm span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true ((has:span.description !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render") OR (has:span.name !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render")) app.vitals.start.type:warm span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true !span.op:app.start !transaction.op:[ui.load,navigation] !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render" !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:app.vitals.start.screen !has:tags[app.vitals.start.value,number] app.vitals.start.type:warm)',columns:["span.op","span.name","span.description"],aggregates:["avg(span.self_time)"],orderby:"-avg(span.self_time)",fields:["span.op","span.name","span.description","avg(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","Avg"]}],interval:"1h",layout:{h:6,x:3,y:5,w:3,minH:2}}]},"10":{title:"Mobile Vitals Screen Loads",description:"",widgets:[{id:"avg-ttid-big-number",title:"Average TTID",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"",fields:["avg(app.vitals.ttid.value)"]}],interval:"1h",layout:{h:1,x:0,y:0,w:2,minH:1}},{id:"avg-ttfd-big-number",title:"Average TTFD",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"",fields:["avg(app.vitals.ttfd.value)"]}],interval:"1h",layout:{h:1,x:2,y:0,w:2,minH:1}},{id:"total-count-big-number",title:"Total Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value))",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:4,y:0,w:2,minH:1}},{id:"average-ttid-line",title:"Average TTID",description:"",displayType:"line",widgetType:"spans",queries:[{name:"TTID",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"avg(app.vitals.ttid.value)",fields:["avg(app.vitals.ttid.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:0,y:1,w:2,minH:2}},{id:"average-ttfd-line",title:"Average TTFD",description:"",displayType:"line",widgetType:"spans",queries:[{name:"TTFD",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"avg(app.vitals.ttfd.value)",fields:["avg(app.vitals.ttfd.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:2,y:1,w:2,minH:2}},{id:"total-count-line",title:"Total Count",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value))",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"count_unique(transaction.span_id)",fields:["count_unique(transaction.span_id)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:4,y:1,w:2,minH:2}},{id:"ttid-device-class-bar",title:"TTID by Device Class",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:["device.class"],aggregates:["avg(app.vitals.ttid.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.ttid.value)"],fieldAliases:["Device Class","AVG TTID"]}],interval:"1h",layout:{h:2,x:0,y:3,w:2,minH:2}},{id:"ttfd-device-class-bar",title:"TTFD by Device Class",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:["device.class"],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.ttfd.value)"],fieldAliases:["Device Class","AVG TTFD"]}],interval:"1h",layout:{h:2,x:2,y:3,w:2,minH:2}},{id:"span-operations-table",title:"Span Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"transaction.op:[ui.load,navigation] (has:span.description OR has:span.name) span.op:[file.read,file.write,ui.load,navigation,http.client,db,db.sql.room,db.sql.query,db.sql.transaction]",columns:["span.op","span.name","span.description"],aggregates:["equation|ttid_contribution_rate()","equation|ttfd_contribution_rate()","avg(span.self_time)","sum(span.self_time)"],orderby:"-sum(span.self_time)",fields:["span.op","span.name","span.description","equation|ttid_contribution_rate()","equation|ttfd_contribution_rate()","avg(span.self_time)","sum(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","TTID Contribution Rate","TTFD Contribution Rate","Avg Self Time","Total Time Spent"]}],interval:"1h",layout:{h:4,x:0,y:5,w:6,minH:2}}]},"11":{title:"Mobile Vitals Screen Rendering",description:"",widgets:[{id:"span-operations-table",title:"Span Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"!is_transaction:true has:app.vitals.frames.total.count has:span.op",columns:["span.op","span.name","span.description"],aggregates:["equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","avg(app.vitals.frames.delay.value)"],orderby:"-avg(app.vitals.frames.delay.value)",fields:["span.op","span.name","span.description","equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","avg(app.vitals.frames.delay.value)"],fieldAliases:["Operation","Span Name","Span Description","Slow Frame %","Frozen Frame %","Delay"]}],interval:"1h",layout:{h:7,x:0,y:0,w:6,minH:2}}]},"12":{title:"Backend Overview",description:"Monitor backend services and dependencies, including caches and queues.",widgets:[{id:"requests-widget",title:"Requests",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Requests",conditions:"span.op:http.server",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:5,layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"jobs-chart",title:"Jobs",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"queries-by-time-spent-chart",title:"Queries by Time Spent",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","p75(span.duration)"],fieldAliases:[""]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"cache-miss-rates-chart",title:"Cache Miss Rates",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction"],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"-equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],fieldAliases:[""]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"backend-overview-transactions-table",title:"Transactions",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"( ( !span.op:pageload !span.op:navigation !span.op:ui.render !span.op:interaction !span.op:ui.action.swipe !span.op:ui.action.scroll !span.op:ui.action.click !span.op:ui.action !span.op:ui.load !span.op:app.lifecycle !span.op:ui.interaction !span.op:ui.interaction.click !span.op:ui.interaction.hover !span.op:ui.interaction.drag !span.op:ui.interaction.press !span.op:ui.webvital.cls !span.op:ui.webvital.lcp !span.op:ui.webvital.fcp ) OR ( span.op:http.server ) ) is_transaction:true",columns:["is_starred_transaction","request.method","transaction","span.op","project"],aggregates:["epm()","p50(span.duration)","p95(span.duration)","equation|failure_count() / count(span.duration)","count_unique(user)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["is_starred_transaction","request.method","transaction","span.op","project","epm()","p50(span.duration)","p95(span.duration)","equation|failure_count() / count(span.duration)","count_unique(user)","sum(span.duration)"],fieldAliases:["","HTTP Method","Transaction","Operation","Project","TPM","P50","P95","Failure rate","Users","Time Spent"]}],interval:"5m",layout:{x:0,w:6,h:6,minH:2,y:7}}]},"13":{title:"Mobile Session Health",description:"Monitor mobile session health by user and session.",widgets:[{id:"crash-free-sessions",title:"Crash Free Sessions",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:1,minH:1}},{id:"crash-free-users",title:"Crash Free Users",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(user)"],orderby:"",fields:["crash_free_rate(user)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:1,minH:1}},{id:"anr-rate",title:"ANR / App Hang Rate",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["anr_rate()"],orderby:"",fields:["anr_rate()"]}],interval:"5m",layout:{x:4,y:0,w:2,h:1,minH:1}},{id:"crash-free-session-line-chart",title:"Crash Free Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"5m",layout:{x:0,y:1,w:3,h:2,minH:2}},{id:"crash-free-user-line-chart",title:"Crash Free Users",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(user)"],orderby:"",fields:["crash_free_rate(user)"]}],interval:"5m",layout:{x:3,y:1,w:3,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:4,w:3,h:2,minH:2}},{id:"total-sessions",title:"Total Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(session)"],orderby:"",fields:["sum(session)"]}],interval:"5m",layout:{x:3,y:4,w:3,h:2,minH:2}},{id:"crash-rate-table",title:"Crash Free Rate by Project",displayType:"table",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["project"],aggregates:["crash_free_rate(session)"],orderby:"crash_free_rate(session)",fields:["project","crash_free_rate(session)"],fieldAliases:["Project","Crash Free Rate"]}],interval:"5m",layout:{x:0,y:6,w:6,h:2,minH:2}},{id:"release-table",title:"Releases",displayType:"table",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["project","release"],aggregates:["crash_free_rate(session)","sum(session)"],orderby:"-release",fields:["project","release","crash_free_rate(session)","sum(session)"],fieldAliases:["Project","Release","Crash Free Rate","Total Sessions"]}],interval:"5m",layout:{x:0,y:8,w:6,h:3,minH:2}}]},"14":{title:"Frontend Overview",description:"Monitor frontend errors and performance telemetry.",widgets:[{id:"throughput-widget",title:"Transaction Throughput",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"( span.op:[pageload,navigation,ui.render,interaction] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] ) !span.op:http.server is_transaction:true",columns:[],aggregates:["epm()"],orderby:"-epm()",fields:["epm()"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"duration-widget",title:"Transaction Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"( span.op:[pageload,navigation,ui.render,interaction] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] ) !span.op:http.server is_transaction:true",columns:[],aggregates:["p50(span.duration)","p75(span.duration)","p95(span.duration)"],orderby:"-p50(span.duration)",fields:["p50(span.duration)","p75(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"assets-by-time-spent-widget",title:"Assets by Time Spent",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:'has:sentry.normalized_description has:sentry.normalized_description !sentry.normalized_description:"browser-extension://*" ( span.op:resource.script OR file_extension:css OR file_extension:[woff,woff2,ttf,otf,eot] OR file_extension:[jpg,jpeg,png,gif,svg,webp,apng,avif] OR span.op:resource.img )',columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["p75(span.duration)"]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"network-requests-by-time-spent-widget",title:"Network Requests by Time Spent",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:http",columns:["span.domain"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["p75(span.duration)"]}],interval:"5m",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"frontend-overview-table",title:"Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"!span.op:http.server ( span.op:[pageload,navigation,ui.render,interaction,ui.render,interaction,ui.interaction,ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,ui.webvital.fcp,pageload] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] )",columns:["is_starred_transaction","transaction","project"],aggregates:["equation|tpm()","equation|p50_if(span.duration,is_transaction,equals,true)","equation|p75_if(span.duration,is_transaction,equals,true)","equation|p95_if(span.duration,is_transaction,equals,true)","equation|failure_rate_if(is_transaction,equals,true)","count_unique(user)","equation|sum_if(span.duration,is_transaction,equals,true)","performance_score(measurements.score.total)"],orderby:"-equation|sum_if(span.duration,is_transaction,equals,true)",fields:["is_starred_transaction","transaction","project","equation|tpm()","equation|p50_if(span.duration,is_transaction,equals,true)","equation|p75_if(span.duration,is_transaction,equals,true)","equation|p95_if(span.duration,is_transaction,equals,true)","equation|failure_rate_if(is_transaction,equals,true)","count_unique(user)","equation|sum_if(span.duration,is_transaction,equals,true)","performance_score(measurements.score.total)"],fieldAliases:["","Transaction","Project","TPM","P50","P75","P95","Failure Rate","Users","Time Spent","Performance Score"]}],interval:"5m",layout:{x:0,y:7,w:6,h:6,minH:2}}]},"15":{title:"Next.js Overview",description:"Monitor frontend and SSR performance for Next.js applications.",widgets:[{id:"pageloads-widget",title:"Pageloads",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:pageload",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"rage-and-dead-clicks-widget",title:"Rage and Dead Clicks",description:"Visualizes the rage and dead clicks in your frontend project.",displayType:"rage_and_dead_clicks",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"5m",layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"slow-ssr-widget",title:"Slow SSR",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:function.nextjs",columns:["span.description"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["span.description","avg(span.duration)"]}],interval:"5m",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"client-transactions-table",title:"Client Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[ui.render,interaction,ui.interaction,ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,ui.webvital.fcp,pageload,navigation,default] !span.op:http.server is_transaction:true !sentry.origin:auto.db.* !sentry.origin:auto",columns:["transaction","span.op","project"],aggregates:["count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","performance_score(measurements.score.total)"],orderby:"-count(span.duration)",fields:["transaction","project","span.op","count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","performance_score(measurements.score.total)"],fieldAliases:["Transaction","","Operation","Views","Error Rate","Avg","P95","Perf Score"]}],interval:"5m",layout:{x:0,y:5,w:6,h:3,minH:2}},{id:"server-transactions-table",title:"Server Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server is_transaction:true",columns:["transaction","project"],aggregates:["count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],orderby:"-count(span.duration)",fields:["transaction","project","count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],fieldAliases:["Transaction","","Views","Error Rate","Avg","P95","Time Spent"]}],interval:"5m",layout:{x:0,y:8,w:6,h:3,minH:2}},{id:"server-tree-widget",title:"SSR File Tree",description:"Visualizes the file tree of the server-rendered components in your Next.js project.",displayType:"server_tree",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"5m",layout:{x:0,y:11,w:6,h:3,minH:3}}]},"16":{title:"AI Agents Overview",description:"Monitor AI agent workflows, model costs, token usage, and tool calls.",widgets:[{id:"ai-agents-overview-agent-runs",title:"Agent Runs",description:"Number of agent runs captured over time.",displayType:"bar",widgetType:"spans",queries:[{name:"Count",conditions:"gen_ai.operation.type:agent",columns:[],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)"],fieldAliases:["Count"]}],interval:"1h",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-estimated-cost",title:"Estimated Cost",description:"Estimated cost of LLM calls with token and model data.",displayType:"bar",widgetType:"spans",queries:[{name:"Cost",conditions:"gen_ai.operation.type:ai_client",columns:[],aggregates:["sum(gen_ai.cost.total_tokens)"],orderby:"-sum(gen_ai.cost.total_tokens)",fields:["sum(gen_ai.cost.total_tokens)"],fieldAliases:["Estimated Cost"]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-duration",title:"Duration",description:"Average and p95 duration for agent runs and LLM calls.",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:[agent, ai_client]",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"-avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:["Avg","P95"]}],interval:"1h",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-llm-calls-by-model",title:"LLM Calls by Model",description:"Number of LLM calls grouped by response model.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.response.model","count(span.duration)"],fieldAliases:["Model","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"ai-agents-overview-tokens-used",title:"Tokens Used",description:"Total tokens used by LLM calls, grouped by response model.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.usage.total_tokens)"],orderby:"-sum(gen_ai.usage.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.usage.total_tokens)"],fieldAliases:["Model","Total Tokens"]}],interval:"1h",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"ai-agents-overview-tool-calls",title:"Tool Calls",description:"Tool call volume grouped by tool name.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"ai-agents-traces-table",title:"Traces",description:"Agent traces with duration, token, cost, and tool usage.",displayType:"agents_traces_table",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"1h",limit:10,layout:{x:0,y:6,w:6,h:4,minH:2}}]},"17":{title:"AI Agents Model Details",description:"View AI agent token usage and costs by model.",widgets:[{id:"ai-agents-model-cost",title:"Model Cost",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.cost.total_tokens)"],orderby:"-sum(gen_ai.cost.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.cost.total_tokens)"],fieldAliases:["Model","Total Cost"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"ai-agents-token-usage",title:"Tokens Used",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.usage.total_tokens)"],orderby:"-sum(gen_ai.usage.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.usage.total_tokens)"],fieldAliases:["Model","Total Tokens"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"ai-agents-token-types",title:"Token Types",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:[],aggregates:["sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],orderby:"",fields:["sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],fieldAliases:["Input Tokens","Cached Input Tokens","Output Tokens","Reasoning Tokens"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"ai-agents-models-table",title:"Models",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)","sum(gen_ai.cost.total_tokens)","sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],orderby:"-count()",fields:["gen_ai.response.model","count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)","sum(gen_ai.cost.total_tokens)","sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],fieldAliases:["Model","Requests","Errors","Avg","P95","Cost","Input Tokens","Cached Tokens","Output Tokens","Reasoning Tokens"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"18":{title:"AI Agents Tool Details",description:"Track AI agent tool calls and error rates.",widgets:[{id:"ai-agents-tool-calls",title:"Tool Calls",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:3,h:3,minH:3}},{id:"ai-agents-tool-errors",title:"Tool Errors",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool span.status:[internal_error,error]",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Errors"]}],interval:"1h",limit:3,layout:{x:3,y:0,w:3,h:3,minH:3}},{id:"ai-agents-tools-table",title:"Tools",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.tool.name","count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Tool","Requests","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"19":{title:"MCP Overview",description:"Monitor MCP server usage and performance.",widgets:[{id:"mcp-overview-traffic",title:"Traffic",displayType:"bar",widgetType:"spans",queries:[{name:"Count",conditions:"span.op:mcp.server",columns:[],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)"],fieldAliases:["Count"]}],interval:"1h",layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-traffic-by-client",title:"Traffic by Client",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server",columns:["mcp.client.name"],aggregates:["count()"],orderby:"-count()",fields:["mcp.client.name","count()"],fieldAliases:["Client","Count"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-transport-distribution",title:"Transport Distribution",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:network.transport",columns:["network.transport"],aggregates:["count()"],orderby:"-count()",fields:["network.transport","count()"],fieldAliases:["Transport","Count"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-tools",title:"Most Used Tools",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Count"]}],interval:"1h",limit:3,layout:{x:0,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-resources",title:"Most Used Resources",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.resource.uri","count(span.duration)"],fieldAliases:["Resource","Count"]}],interval:"1h",limit:3,layout:{x:2,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-prompts",title:"Most Used Prompts",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.prompt.name","count(span.duration)"],fieldAliases:["Prompt","Count"]}],interval:"1h",limit:3,layout:{x:4,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-table",title:"MCP Overview",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server",columns:["span.description"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["span.description","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Span Description","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:6,w:6,h:4,minH:2}}]},"20":{title:"MCP Tool Details",description:"Track MCP tool call latency, frequency, and error rates.",widgets:[{id:"mcp-tools-most-used-tools",title:"Most Used Tools",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-slowest-tools",title:"Slowest Tools",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["gen_ai.tool.name","avg(span.duration)"],fieldAliases:["Tool","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-most-failing-tools",title:"Most Failing Tools",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["gen_ai.tool.name","failure_rate()"],fieldAliases:["Tool","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-table",title:"Tools",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.tool.name","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Tool Name","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"21":{title:"MCP Resource Details",description:"Track MCP resource call latency, frequency, and error rates.",widgets:[{id:"mcp-resources-most-used-resources",title:"Most Used Resources",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.resource.uri","count(span.duration)"],fieldAliases:["Resource","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-slowest-resources",title:"Slowest Resources",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["mcp.resource.uri","avg(span.duration)"],fieldAliases:["Resource","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-most-failing-resources",title:"Most Failing Resources",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["mcp.resource.uri","failure_rate()"],fieldAliases:["Resource","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-table",title:"Resources",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["mcp.resource.uri","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Resource URI","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"22":{title:"MCP Prompt Details",description:"Track MCP prompt call latency, frequency, and error rates.",widgets:[{id:"mcp-prompts-most-used-prompts",title:"Most Used Prompts",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.prompt.name","count(span.duration)"],fieldAliases:["Prompt","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-slowest-prompts",title:"Slowest Prompts",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["gen_ai.prompt.name","avg(span.duration)"],fieldAliases:["Prompt","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-most-failing-prompts",title:"Most Failing Prompts",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["gen_ai.prompt.name","failure_rate()"],fieldAliases:["Prompt","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-table",title:"Prompts",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.prompt.name","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Prompt Name","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"23":{title:"Laravel Overview",description:"Monitor Laravel services and dependencies, including background jobs.",widgets:[{id:"requests-widget",title:"Requests",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Requests",conditions:"span.op:http.server",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:5,layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"jobs-chart",title:"Jobs",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"queries-by-time-spent-chart",title:"Queries by Time Spent",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","p75(span.duration)"],fieldAliases:[""]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"cache-miss-rates-chart",title:"Cache Miss Rates",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction"],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"-equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],fieldAliases:[""]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"paths-table",title:"Paths",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"transaction.op:http.server is_transaction:true",columns:["http.request.method","transaction"],aggregates:["count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)","count_unique(user)"],orderby:"-count()",fields:["http.request.method","transaction","count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)","count_unique(user)"],fieldAliases:["Method","Path","Requests","Error Rate","Avg","P95","Time Spent","Users"]}],interval:"5m",layout:{x:0,y:7,w:6,h:3,minH:2}},{id:"commands-table",title:"Commands",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:console.command*",columns:["command"],aggregates:["count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],orderby:"-count()",fields:["command","count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],fieldAliases:["Command","Invocations","Error Rate","Avg","P95","Time Spent"]}],interval:"5m",layout:{x:0,y:10,w:6,h:3,minH:2}},{id:"jobs-table",title:"Jobs",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:["messaging.destination.name","transaction"],aggregates:["count()","failure_rate()","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","sum(span.duration)"],orderby:"-count()",fields:["transaction","messaging.destination.name","count()","failure_rate()","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Job","Queue Name","Processed","Error Rate","Avg Time in Queue","Avg Processing Time","Time Spent"]}],interval:"5m",layout:{x:0,y:13,w:6,h:3,minH:2}}]},"24":{title:"Frontend Assets",description:"Track JS, CSS, and image asset performance, with per-resource drill-downs.",widgets:[{id:"requests-per-min-widget",title:"Requests per Minute",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"average-duration-widget",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"assets-table",title:"Assets",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["epm()","avg(span.duration)","sum(span.duration)","avg(http.response_content_length)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","epm()","avg(span.duration)","sum(span.duration)","avg(http.response_content_length)"],fieldAliases:["Asset description","Requests per Minute","Avg","Time Spent","Avg Encoded Size"]}],interval:"5m",layout:{x:0,y:2,w:6,h:6,minH:2}}]},"25":{title:"Frontend Assets Summary",description:"",widgets:[{id:"domain-widget",title:"Example Asset",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"",columns:["id","span.op","span.group","span.description","span.category","project.id"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category","project.id"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,minH:2,h:2,w:6}},{id:"request-per-min-big-number",title:"Requests per Minute",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:2,w:1,h:1,minH:1}},{id:"average-encoded-size-big-number",title:"Average Encoded Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.response_content_length)"],orderby:"avg(http.response_content_length)",fields:["avg(http.response_content_length)"]}],interval:"5m",layout:{x:1,y:2,w:1,h:1,minH:1}},{id:"average-decoded-size-big-number",title:"Average Decoded Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.decoded_response_content_length)"],orderby:"avg(http.decoded_response_content_length)",fields:["avg(http.decoded_response_content_length)"]}],interval:"5m",layout:{x:2,y:2,w:1,h:1,minH:1}},{id:"average-transfer-size-big-number",title:"Average Transfer Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.response_transfer_size)"],orderby:"avg(http.response_transfer_size)",fields:["avg(http.response_transfer_size)"]}],interval:"5m",layout:{x:3,y:2,w:1,h:1,minH:1}},{id:"average-duration-big-number",title:"Average Duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:4,y:2,w:1,h:1,minH:1}},{id:"time-spent-big-number",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:2,w:1,h:1,minH:1}},{id:"requests-per-min-widget",title:"Requests per Minute",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:3,w:2,h:2,minH:2}},{id:"average-duration-widget",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:3,w:2,h:2,minH:2}},{id:"average-asset-size-widget",title:"Average Asset Size",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.decoded_response_content_length)","avg(http.response_transfer_size)","avg(http.response_content_length)"],orderby:"avg(http.response_content_length)",fields:["avg(http.decoded_response_content_length)","avg(http.response_transfer_size)","avg(http.response_content_length)"],fieldAliases:["Avg Decoded Size","Avg Transfer Size","Avg Encoded Size"]}],interval:"5m",layout:{x:4,y:3,w:2,h:2,minH:2}},{id:"assets-table-widget",title:"Pages Containing This Asset",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"",columns:["transaction","resource.render_blocking_status"],aggregates:["epm()","avg(span.duration)","avg(http.response_content_length)"],orderby:"-epm()",fields:["transaction","epm()","avg(span.duration)","avg(http.response_content_length)","resource.render_blocking_status"],fieldAliases:["Transaction","Requests per Minute","Avg","Avg Encoded Size","Render Blocking"]}],interval:"5m",layout:{x:0,y:5,minH:2,h:6,w:6}}]},"26":{title:"Queues",description:"Track message queue throughput, latency, and error rates.",widgets:[{id:"average-duration-widget",title:"Average Duration",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["avg(messaging.message.receive.latency)","avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(messaging.message.receive.latency)","avg(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Published vs Processed",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["span.op"],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"destination-table",title:"Destinations",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["messaging.destination.name"],aggregates:["avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["messaging.destination.name","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Destination","Avg time in queue","Avg processing time","Error rate","Published","Processed","Time spent"]}],interval:"5m",layout:{x:0,y:3,w:6,h:6,minH:2}}]},"27":{title:"Queue Summary",description:"",widgets:[{id:"avg-time-in-queue-widget",title:"Average Time in Queue",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["avg(messaging.message.receive.latency)"],orderby:"avg(messaging.message.receive.latency)",fields:["avg(messaging.message.receive.latency)"]}],interval:"5m",layout:{x:0,y:0,w:1,h:1,minH:1}},{id:"avg-processing-time-widget",title:"Average Processing Time",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|avg_if(span.duration,span.op,equals,queue.process)"],orderby:"equation|avg_if(span.duration,span.op,equals,queue.process)",fields:["equation|avg_if(span.duration,span.op,equals,queue.process)"]}],interval:"5m",layout:{x:1,y:0,w:1,h:1,minH:1}},{id:"error-rate-widget",title:"Error Rate",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))"],orderby:"equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))",fields:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))"]}],interval:"5m",layout:{x:2,y:0,w:1,h:1,minH:1}},{id:"published-widget",title:"Published",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|count_if(span.op,equals,queue.publish)"],orderby:"equation|count_if(span.op,equals,queue.publish)",fields:["equation|count_if(span.op,equals,queue.publish)"]}],interval:"5m",layout:{x:3,y:0,w:1,h:1,minH:1}},{id:"processed-widget",title:"Processed",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|count_if(span.op,equals,queue.process)"],orderby:"equation|count_if(span.op,equals,queue.process)",fields:["equation|count_if(span.op,equals,queue.process)"]}],interval:"5m",layout:{x:4,y:0,w:1,h:1,minH:1}},{id:"time-spent-widget",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:0,w:1,h:1,minH:1}},{id:"average-duration-widget",title:"Average Duration",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["avg(messaging.message.receive.latency)","avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(messaging.message.receive.latency)","avg(span.duration)"]}],interval:"5m",layout:{x:0,y:1,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Published vs Processed",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["span.op"],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:1,w:3,h:2,minH:2}},{id:"consumer-table",title:"Consumer Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:["transaction"],aggregates:["avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Transaction","Avg time in queue","Avg processing time","Error rate","Processed","Time spent"]}],interval:"5m",layout:{x:0,y:4,w:6,h:3,minH:3}},{id:"producer-table",title:"Producer Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.publish",columns:["transaction"],aggregates:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","sum(span.duration)"],fieldAliases:["Transaction","Error rate","Published","Time spent"]}],interval:"5m",layout:{x:0,y:7,w:6,h:3,minH:3}}]},"28":{title:"Caches",description:"Track cache hit rates, throughput, and latency.",widgets:[{id:"cache-hits-widget",title:"Miss Rate",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:[],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Throughput",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"transaction-table",title:"Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction","project"],aggregates:["avg(cache.item_size)","epm()","equation|count_if(cache.hit,equals,false) / count(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","project","avg(cache.item_size)","epm()","equation|count_if(cache.hit,equals,false) / count(span.duration)","sum(span.duration)"],fieldAliases:["Transaction","Project","Avg Value Size","Requests Per Minute","Miss Rate","Time Spent"]}],interval:"5m",layout:{x:0,y:3,w:6,h:6,minH:2}}]},"29":{title:"Node.js Runtime Metrics",description:"Track Node.js runtime metrics, including memory usage and event loop utilization.",widgets:[{id:"node-runtime-event-loop-utilization-kpi",title:"Event Loop Utilization",description:"Average fraction of time the Node.js event loop is active (0-100%) across the selected time range. High utilization means less capacity to handle new work and may indicate CPU-bound processing or blocking operations.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.event_loop.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.event_loop.utilization,gauge,none)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:1,minH:1}},{id:"node-runtime-cpu-utilization-kpi",title:"CPU Utilization",description:"Average CPU usage across all cores over the selected time range. Values above 1.0 (100%) are possible on multi-core systems. Sustained high utilization may indicate compute-bound workloads or insufficient scaling.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.cpu.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.cpu.utilization,gauge,none)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:1,minH:1}},{id:"node-runtime-process-uptime-kpi",title:"Process Uptime",description:"Total process uptime summed across instances. Sudden resets indicate process crashes or restarts. Useful for detecting instability and correlating with deployment events.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(value,node.runtime.process.uptime,counter,second)"],orderby:"",fields:["sum(value,node.runtime.process.uptime,counter,second)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:1,minH:1}},{id:"node-runtime-memory-usage",title:"Memory Usage",description:"Resident Set Size (RSS, total memory footprint), V8 heap total (allocated), and heap used (in-use). Growing RSS without matching heap growth may indicate native memory leaks. Heap used approaching heap total triggers more frequent garbage collection.",displayType:"area",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.mem.rss,gauge,byte)","avg(value,node.runtime.mem.heap_total,gauge,byte)","avg(value,node.runtime.mem.heap_used,gauge,byte)"],orderby:"",fields:["avg(value,node.runtime.mem.rss,gauge,byte)","avg(value,node.runtime.mem.heap_total,gauge,byte)","avg(value,node.runtime.mem.heap_used,gauge,byte)"]}],interval:"5m",layout:{x:0,y:1,w:6,h:2,minH:2}},{id:"node-runtime-cpu-utilization-over-time",title:"CPU Utilization Over Time",description:"CPU utilization trend over time. Correlate spikes with deployments, traffic changes, or event loop delay increases to identify compute-bound bottlenecks.",displayType:"line",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.cpu.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.cpu.utilization,gauge,none)"]}],interval:"5m",layout:{x:0,y:3,w:3,h:2,minH:2}},{id:"node-runtime-http-request-duration",title:"HTTP Request Duration",description:"Server-side HTTP request latency (p50 and p95). Compare with event loop delay and CPU utilization to determine if slow responses are caused by runtime bottlenecks or application logic.",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["p50(span.duration)","p95(span.duration)"],orderby:"",fields:["p50(span.duration)","p95(span.duration)"]}],interval:"5m",layout:{x:3,y:3,w:3,h:2,minH:2}}]}}};var PREBUILT_DASHBOARDS=prebuiltDashboards_generated_default.dashboards;function withPrebuiltListMetadata(dashboard){if(dashboard.prebuiltId==null)return dashboard;let definition=PREBUILT_DASHBOARDS[dashboard.prebuiltId];if(!definition)return dashboard;return{...dashboard,description:dashboard.description||definition.description,widgetDisplay:dashboard.widgetDisplay.length>0?dashboard.widgetDisplay:definition.widgets.map((widget)=>widget.displayType)}}function withPrebuiltDetails(dashboard){if(dashboard.widgets.length>0||dashboard.prebuiltId==null)return dashboard;let definition=PREBUILT_DASHBOARDS[dashboard.prebuiltId];return definition?{...dashboard,widgets:structuredClone(definition.widgets)}:dashboard}function useDashboards(client2,{org,filter,query="",sort,reloadToken=0}){let loader=useCallback18((signal)=>{if(!client2)return null;return listDashboards(client2,{org,filter,query,sort,signal}).then((page)=>({data:Array.isArray(page.data)?page.data.map(withPrebuiltListMetadata):[],nextCursor:page.nextCursor}))},[client2,org,filter,query,sort]),{status}=useAsyncFetch(loader,{reloadKey:reloadToken});return{dashboards:mapAsyncStatus(status,(page)=>page.data),nextCursor:valueOf(status)?.nextCursor??null}}function useStarredDashboards(client2,{org,enabled,reloadToken=0}){let[dashboards,setDashboards]=useState20([]);return useEffect19(()=>{if(!client2||!enabled||!org){setDashboards([]);return}let controller=new AbortController,cancelled=!1;return listStarredDashboards(client2,{org,signal:controller.signal}).then((data)=>{if(!cancelled)setDashboards(data.map(withPrebuiltListMetadata))}).catch(()=>{if(!cancelled)setDashboards([])}),()=>{cancelled=!0,controller.abort()}},[client2,org,enabled,reloadToken]),dashboards}function useDashboardsNavExtras(client2,org,enabled,reloadToken){let starred=useStarredDashboards(client2,{org,enabled,reloadToken});return useMemo12(()=>{if(starred.length===0)return NO_NAV_EXTRAS;return{sections:[{title:"Starred Dashboards",items:starred.map((dashboard)=>({label:dashboard.title,target:{group:"dashboards",item:"All Dashboards"}}))}]}},[starred])}import{useEffect as useEffect20,useRef as useRef14,useState as useState21}from"h:0__";function useSavedQueries(client2,{org,source,starred,search,sort,limit,enabled=!0,reloadToken=0}){let[status,setStatus]=useState21(idle),[nextCursor,setNextCursor]=useState21(null),statusRef=useRef14(status);return statusRef.current=status,useEffect20(()=>{if(!client2||!enabled)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await listSavedQueriesPage(client2,source,{org,starred,search,sort,limit,signal});if(cancelled)return;setStatus(resolved(page.data,Date.now())),setNextCursor(page.nextCursor)}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,source,starred,search,sort,limit,enabled,reloadToken]),{queries:status,nextCursor}}import{useEffect as useEffect22,useMemo as useMemo13}from"h:0__";var SAVED_QUERY_SCREENS={"explore.all-queries":{source:"explore",title:"All Queries",description:"Saved Explore queries for this organization.",noun:"saved queries",searchPlaceholder:"Search queries by name\u2026",activityLabel:"Last Viewed",emptyHint:"This organization may not have Explore saved queries enabled."},"explore.discover":{source:"discover",title:"Discover",description:"Legacy saved queries, superseded by All Queries.",noun:"Discover queries",searchPlaceholder:"Search queries by name\u2026",activityLabel:"Last Edited",emptyHint:"This organization may not have Discover enabled."}};function savedQueryScreen(id){return SAVED_QUERY_SCREENS[id]}var SAVED_QUERY_RESULTS_STATE_KEY="explore.saved-query-results";import{useRef as useRef15}from"h:0__";import{useEffect as useEffect21}from"h:0__";function scrollTopForRow({index,rowCount,rowHeight,viewportHeight,scrollTop}){return scrollTopForRowAt({rowTop:index*rowHeight,rowHeight,contentHeight:rowCount*rowHeight,viewportHeight,scrollTop})}function scrollTopForRowAt({rowTop,rowHeight,contentHeight,viewportHeight,scrollTop}){let maxScrollTop=Math.max(0,contentHeight-viewportHeight),rowBottom=rowTop+rowHeight,next=rowTop<scrollTop||rowHeight>viewportHeight?rowTop:rowBottom>scrollTop+viewportHeight?rowBottom-viewportHeight:scrollTop;return Math.min(Math.max(next,0),maxScrollTop)}function useRowScrollFollow(list,{index,rowCount,rowHeight,layout=[]}){let rowTop,selectedHeight,contentHeight;if(typeof rowHeight==="number")selectedHeight=rowHeight,contentHeight=rowCount*rowHeight;else{rowTop=0;for(let i=0;i<index&&i<rowHeight.length;i++)rowTop+=rowHeight[i]??0;selectedHeight=rowHeight[index]??0,contentHeight=rowHeight.reduce((total,height)=>total+height,0)}useEffect21(()=>{let box=list.current;if(!box||rowCount===0)return;let viewportHeight=box.viewport.height;if(viewportHeight<=0)return;let next=rowTop===void 0?scrollTopForRow({index,rowCount,rowHeight:selectedHeight,viewportHeight,scrollTop:box.scrollTop}):scrollTopForRowAt({rowTop,rowHeight:selectedHeight,contentHeight,viewportHeight,scrollTop:box.scrollTop});if(next!==box.scrollTop)box.scrollTop=next},[list,index,rowCount,rowTop,selectedHeight,contentHeight,...layout])}import{jsxDEV as jsxDEV34,Fragment as Fragment11}from"h:6___________________________";var DEFAULT_GUTTER=2,DEFAULT_SKELETON_ROWS=20;function rowHeightOf(options){return normalizeContentHeight(options.contentHeight)+(options.renderDetail?1:0)+(options.separator?1:0)}function normalizeContentHeight(value){if(value===void 0||!Number.isFinite(value))return 1;return Math.max(1,Math.floor(value))}function DataTable({rows,columns,width,selectedIndex,focused,rowKey,loading=!1,error,onRowClick,renderDetail,rowContentHeight,skeletonContentHeight=1,separator=!1,skeletonRows=DEFAULT_SKELETON_ROWS,empty,errorTitle="Failed to load",gap=1,minFlex,gutter=DEFAULT_GUTTER,layout=[]}){let theme=useTheme(),listRef=useRef15(null),rowWidth=Math.max(1,width-gutter),resolved2=layoutColumns(columns,rowWidth,{gap,minFlex}),visibleColumns=resolved2.map(({column})=>column),fixedRowHeight=rowHeightOf({renderDetail,separator}),contentHeights=rows&&rowContentHeight?rows.map((row,index)=>normalizeContentHeight(rowContentHeight(row,index,visibleColumns))):void 0,rowHeight=contentHeights?contentHeights.map((contentHeight)=>rowHeightOf({contentHeight,renderDetail,separator})):fixedRowHeight;useRowScrollFollow(listRef,{index:selectedIndex,rowCount:rows?.length??0,rowHeight,layout});let showSkeleton=rows===void 0&&loading,showEmpty=rows!==void 0&&rows.length===0&&!loading;return jsxDEV34(Fragment11,{children:[jsxDEV34(TableHeader,{resolved:resolved2,width:rowWidth,gap},void 0,!1,void 0,this),jsxDEV34("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[showSkeleton?Array.from({length:skeletonRows},(_,i)=>jsxDEV34(SkeletonRow,{resolved:resolved2,width:rowWidth,gap,seed:i,contentHeight:skeletonContentHeight,detail:Boolean(renderDetail),separator},i,!1,void 0,this)):null,showEmpty&&empty?jsxDEV34(TableEmpty,{...empty},void 0,!1,void 0,this):null,rows?.map((row,index)=>jsxDEV34(Row,{row,index,resolved:resolved2,width:rowWidth,gap,selected:focused&&index===selectedIndex,contentHeight:contentHeights?.[index]??1,renderDetail,separator,onRowClick},rowKey(row,index),!1,void 0,this)),error&&rows===void 0?jsxDEV34(TableError,{title:errorTitle,error},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function TableHeader({resolved:resolved2,width,gap}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"row",width,border:["bottom"],borderColor:theme.border,flexShrink:0},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV34(Cell,{width:cellWidth,gap:i>0?gap:0,children:jsxDEV34("text",{fg:theme.muted,children:padText(column.label,cellWidth,column.align??"left")},void 0,!1,void 0,this)},column.key,!1,void 0,this))},void 0,!1,void 0,this)}function Cell({width,gap,children}){return jsxDEV34(Fragment11,{children:[gap>0?jsxDEV34("text",{children:" ".repeat(gap)},void 0,!1,void 0,this):null,jsxDEV34("box",{style:{width,flexShrink:0,flexDirection:"row",overflow:"hidden"},children},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Row({row,index,resolved:resolved2,width,gap,selected,contentHeight,renderDetail,separator,onRowClick}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",width,backgroundColor:selected?theme.selected:void 0,flexShrink:0},onMouseDown:onRowClick?()=>onRowClick(index,row):void 0,children:[jsxDEV34("box",{style:{flexDirection:"row",height:contentHeight,flexShrink:0},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV34(Cell,{width:cellWidth,gap:i>0?gap:0,children:column.render(row,selected,cellWidth)},column.key,!1,void 0,this))},void 0,!1,void 0,this),renderDetail?jsxDEV34("box",{style:{flexDirection:"row",width},children:renderDetail(row,selected,width)},void 0,!1,void 0,this):null,separator?jsxDEV34("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,width))},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function SkeletonRow({resolved:resolved2,width,gap,seed,contentHeight,detail,separator}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",width,flexShrink:0},children:[Array.from({length:normalizeContentHeight(contentHeight)},(_,line)=>jsxDEV34("box",{style:{flexDirection:"row"},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV34(Cell,{width:cellWidth,gap:i>0?gap:0,children:jsxDEV34("text",{fg:theme.panelAlt,children:padText(bar(cellWidth,seed+line+i),cellWidth,column.align??"left")},void 0,!1,void 0,this)},column.key,!1,void 0,this))},line,!1,void 0,this)),detail?jsxDEV34("box",{style:{flexDirection:"row",width},children:jsxDEV34("text",{fg:theme.panelAlt,children:padText(bar(width,seed+7),width)},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,separator?jsxDEV34("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,width))},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function bar(width,seed){if(width<=0)return"";let fraction=0.4+seed*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(width,Math.floor(width*fraction))))}function TableEmpty({title,lines=[]}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV34("text",{fg:theme.text,children:title},void 0,!1,void 0,this),lines.filter(Boolean).map((line,i)=>jsxDEV34("text",{fg:theme.muted,children:line},i,!1,void 0,this))]},void 0,!0,void 0,this)}function TableError({title,error}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV34("text",{fg:theme.danger,children:title},void 0,!1,void 0,this),jsxDEV34("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV34("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV35}from"h:6___________________________";function DirectDetailStatus({status,noun,width,height}){let theme=useTheme(),error=errorOf(status);return jsxDEV35("box",{style:{flexDirection:"column",width,height,paddingLeft:1},children:jsxDEV35("text",{fg:error?theme.danger:theme.muted,children:error?`Failed to load ${noun}: ${error.message}`:`Loading ${noun}\u2026`},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV36}from"h:6___________________________";function resultCountLabel(count,noun,hasMore=!1){let suffix=hasMore?"+":"",label=count===1&&!hasMore?noun:`${noun}s`;return`${formatCount(count)}${suffix} ${label}`}function ResultFooter({count,noun,hasMore=!1,pagination}){let theme=useTheme(),canPrevious=pagination?.hasPrevious&&!pagination.loading,canNext=pagination?.hasNext&&!pagination.loading;return jsxDEV36("box",{style:{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1},children:[jsxDEV36("text",{fg:theme.subText,children:count===void 0?"":resultCountLabel(count,noun,hasMore)},void 0,!1,void 0,this),jsxDEV36("box",{style:{flexGrow:1}},void 0,!1,void 0,this),pagination?jsxDEV36("box",{style:{flexDirection:"row",flexShrink:0},children:[pagination.hasPrevious?jsxDEV36("box",{style:{flexDirection:"row"},onMouseDown:canPrevious?pagination.onPrevious:void 0,children:[jsxDEV36(KeyHint,{command:"sentry.nav.pageUp"},void 0,!1,void 0,this),jsxDEV36("text",{fg:canPrevious?theme.muted:theme.subText,children:" \u2039 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV36("text",{fg:theme.subText,children:pagination.page},void 0,!1,void 0,this),pagination.hasNext?jsxDEV36("box",{style:{flexDirection:"row"},onMouseDown:canNext?pagination.onNext:void 0,children:[jsxDEV36("text",{fg:canNext?theme.muted:theme.subText,children:" \u203A "},void 0,!1,void 0,this),jsxDEV36(KeyHint,{command:"sentry.nav.pageDown"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as useCallback19,useRef as useRef16}from"h:0__";import{RenderableEvents as RenderableEvents2}from"h:3__________";import{jsxDEV as jsxDEV37}from"h:6___________________________";function SearchInput({value,placeholder,focused,width,onInput,onFocus,onBlur}){let theme=useTheme(),inputRef=useRef16(null),inputRefCallback=useCallback19((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents2.FOCUSED),previous.removeAllListeners(RenderableEvents2.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents2.FOCUSED,()=>onFocus()),node.on(RenderableEvents2.BLURRED,()=>onBlur())},[onFocus,onBlur]);return jsxDEV37("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:focused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV37(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV37("input",{ref:inputRefCallback,value,placeholder,focused,onInput,style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV38}from"h:6___________________________";function savedQueryResultsView(query){let projectRefs=query.projects.filter((id)=>id!==-1).map(String);return{id:`saved-query:${query.source}:${query.id}`,sentryLocation:{screen:resultScreen(query),detail:{kind:"saved_query",queryId:query.id,source:query.source,resultScreen:resultScreen(query),dataset:query.dataset,title:query.name},state:{query:query.query,sort:query.sort,statsPeriod:query.statsPeriod,selectedProjects:projectRefs,selectedEnvs:query.environment,fields:query.fields}},label:query.name,stateKey:SAVED_QUERY_RESULTS_STATE_KEY,initialState:{query:query.query,sort:query.sort,statsPeriod:query.statsPeriod,selectedProjects:projectRefs,selectedEnvs:query.environment},render:(ctx)=>ctx.state?jsxDEV38(SavedQueryResults,{...ctx,state:ctx.state,query},void 0,!1,void 0,this):null}}function resultScreen(query){if(query.source==="discover")return"explore.discover";switch(query.dataset){case"logs":return"explore.logs";case"tracemetrics":return"explore.metrics";case"errors":return"explore.errors";case"profiles":return"explore.profiles";case"replays":return"explore.replays";default:return query.datasetLabel==="Conversations"?"explore.conversations":"explore.traces"}}var loadSavedQuery2=(client2,{org,id,signal})=>{let separator=id.indexOf(":"),source=id.slice(0,separator),queryId=id.slice(separator+1);return fetchSavedQuery(client2,{org,source,queryId,signal})};function savedQueryUrlView(detail){return{id:`saved-query:${detail.source}:${detail.queryId}`,label:detail.title??`Query ${detail.queryId}`,stateKey:SAVED_QUERY_RESULTS_STATE_KEY,sentryLocation:{screen:detail.resultScreen,detail},render:(ctx)=>ctx.state?jsxDEV38(SavedQueryFromUrl,{...ctx,state:ctx.state,detail},void 0,!1,void 0,this):null}}function SavedQueryFromUrl({client:client2,org,state,detail,reloadToken,width,height,updateView,...ctx}){let resourceId=`${detail.source}:${detail.queryId}`,status=useDirectResource(client2,{org,id:resourceId,reloadToken,load:loadSavedQuery2}),query=valueOf(status);if(useEffect22(()=>{if(!query)return;state.dispatch({type:"seed",payload:{query:query.query,sort:query.sort,statsPeriod:query.statsPeriod,selectedProjects:query.projects.filter((id)=>id!==-1).map(String),selectedEnvs:query.environment}}),updateView(`saved-query:${detail.source}:${detail.queryId}`,{label:query.name})},[detail.queryId,detail.source,query,state.dispatch,updateView]),!query)return jsxDEV38(DirectDetailStatus,{status,noun:"saved query",width,height},void 0,!1,void 0,this);return jsxDEV38(SavedQueryResults,{...ctx,client:client2,org,state,reloadToken,width,height,updateView,query},void 0,!1,void 0,this)}function SavedQueryResults({client:client2,org,state,focused,width,height,reloadToken,query:savedQuery}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sortItems=useMemo13(()=>fieldSortItems(savedQuery.fields),[savedQuery.fields]),sort=sortItems.some((item)=>item.value===state.sort)?state.sort:savedQuery.sort??sortItems[0]?.value,{rows:status,nextCursor}=useDiscoverRows(client2,{org,dataset:savedQuery.dataset,fields:savedQuery.fields,sort,query:state.committedQuery,statsPeriod:state.statsPeriod,project,environment,referrer:"sentry-tui.saved-query",reloadToken}),rows=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status);useEffect22(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]),useEffect22(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"results"}})},[loading,since,error,status,dispatch]);let columns=useMemo13(()=>columnsFor(savedQuery.fields,theme),[savedQuery.fields,theme]);return jsxDEV38("box",{style:{flexDirection:"column",width,height},children:[jsxDEV38(SearchInput,{value:state.searchQuery,placeholder:"Refine this query\u2026",focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV38("box",{style:{flexDirection:"row",width,flexShrink:0,height:1,paddingLeft:1},children:[jsxDEV38("text",{fg:theme.accent,attributes:BOLD,children:fitText(savedQuery.name,Math.max(8,width-24))},void 0,!1,void 0,this),jsxDEV38("text",{fg:theme.muted,children:` ${savedQuery.datasetLabel}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV38(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:sort?{value:sort,items:sortItems,onChange:(value)=>dispatch({type:"setSort",payload:value})}:void 0,width,anchorTop:SEARCH_ROWS+1,onProjectChange:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:()=>dispatch({type:"setOpenDropdown",payload:null}),onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV38(DataTable,{rows,columns,width,selectedIndex:state.selected,focused,rowKey:(_row,index)=>String(index),loading:isInitialLoad(status),error,errorTitle:"Failed to run the query",minFlex:MIN_PROSE_WIDTH,empty:{title:"This query returned nothing.",lines:[state.committedQuery||void 0,"Try widening the time range or adjusting the query.",`This organization may not have ${savedQuery.datasetLabel} enabled.`]},layout:[height]},void 0,!1,void 0,this),jsxDEV38(ResultFooter,{count:rows?.length,noun:"result",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var FIELD_WIDTHS=[{test:/timestamp|^time$/,width:19},{test:/^project(\.\w+)?$/,width:14},{test:/^(id|trace|replay_id|profile\.id)$|_id$/,width:12},{test:/\(.*\)/,width:12,align:"right"},{test:/duration|latency|size|count/,width:10,align:"right"},{test:/^(release|environment|platform|user|browser|os)(\.\w+)?$/,width:16}],FLEX_FIELDS=/^(message|description|name|transaction|title|url|culprit)$|\.(description|name)$/,DEFAULT_FIELD_WIDTH=18,MAX_HEADER_WIDTH=20,MIN_PROSE_WIDTH=24;function columnsFor(fields,theme){let shapes=fields.map((field)=>{let match=FIELD_WIDTHS.find((candidate)=>candidate.test.test(field));return{field,width:Math.max(match?.width??DEFAULT_FIELD_WIDTH,Math.min(measureTextWidth(field),MAX_HEADER_WIDTH)),align:match?.align,wide:FLEX_FIELDS.test(field),unknown:match===void 0}}),flexAt=pick(shapes.findIndex((shape)=>shape.wide),shapes.findIndex((shape)=>shape.unknown),shapes.length-1);return shapes.map((shape,index)=>({key:shape.field,label:shape.field,width:index===flexAt?"flex":shape.width,align:shape.align,priority:index===flexAt?void 0:shapes.length-index,render:(row,_selected,width)=>jsxDEV38("text",{fg:index===0?theme.text:theme.muted,children:padText(fitText(cellText(row[shape.field]),width),width,shape.align??"left")},void 0,!1,void 0,this)}))}function pick(...candidates){return candidates.find((index)=>index>=0)??0}function cellText(value){if(value===void 0||value===null||value==="")return"\u2014";if(typeof value==="number")return Number.isInteger(value)?String(value):value.toFixed(2);if(typeof value==="object")return JSON.stringify(value);return String(value)}function useSecondaryNavExtras(client2,org,group,reloadToken){let exploreSections=useExploreNavSections(client2,org,group==="explore",reloadToken),dashboards=useDashboardsNavExtras(client2,org,group==="dashboards",reloadToken);switch(group){case"explore":return{sections:exploreSections};case"dashboards":return dashboards;default:return NO_NAV_EXTRAS}}function useExploreNavSections(client2,org,enabled,reloadToken){let{queries:status}=useSavedQueries(client2,{org,source:"explore",starred:!0,limit:MAX_STARRED_SAVED_QUERIES_IN_NAV,enabled,reloadToken}),starred=valueOf(status);return useMemo14(()=>starredQueriesSections(starred),[starred])}function starredQueriesSections(starred){if(!starred||starred.length===0)return[];return[{title:"Starred Queries",items:starred.slice(0,MAX_STARRED_SAVED_QUERIES_IN_NAV).map((query)=>({label:query.name,target:{group:"explore",item:"All Queries"},open:()=>savedQueryResultsView(query)}))}]}function initialNavigationModel(group,item,initialViews=[]){return{railGroup:group,activeGroup:group,activeItem:item,navExpanded:!1,showSecondary:!1,secondaryItem:item,gotoMode:!1,viewStack:[...initialViews]}}function navigationReducer(state,action){switch(action.type){case"navigate":return{...state,railGroup:action.group,activeGroup:action.group,activeItem:action.item,navExpanded:!1,showSecondary:!1,secondaryItem:action.item,gotoMode:!1,viewStack:[]};case"openGroup":return{...state,railGroup:action.group,showSecondary:!0,secondaryItem:action.item,gotoMode:!1};case"expandNav":return state.navExpanded?state:{...state,navExpanded:!0};case"openGoto":return{...state,navExpanded:!0,gotoMode:!0};case"closeGoto":return state.gotoMode?{...state,gotoMode:!1}:state;case"previewGroup":return{...state,railGroup:action.group,secondaryItem:action.item};case"selectRailGroup":return state.railGroup===action.group?state:{...state,railGroup:action.group};case"closeSecondary":return state.showSecondary?{...state,showSecondary:!1}:state;case"selectSecondaryItem":return state.secondaryItem===action.item?state:{...state,secondaryItem:action.item};case"pushView":return{...state,viewStack:[...state.viewStack,action.view]};case"popView":return state.viewStack.length===0?state:{...state,viewStack:state.viewStack.slice(0,-1)};case"clearViews":return state.viewStack.length===0?state:{...state,viewStack:[]};case"updateView":{let index=state.viewStack.findIndex((view)=>view.id===action.id);if(index===-1)return state;return{...state,viewStack:state.viewStack.map((view,viewIndex)=>viewIndex===index?{...view,...action.update}:view)}}case"replaceIssue":{let viewStack=state.viewStack.map((view)=>view.issue?.id===action.issue.id?{...view,issue:action.issue}:view);return viewStack.some((view,index)=>view!==state.viewStack[index])?{...state,viewStack}:state}}}import{useCallback as useCallback21,useEffect as useEffect24,useRef as useRef17}from"h:0__";var CONVERSATION_PAGE_SIZE=50;async function listConversations(client2,{org,query="",statsPeriod,project,environment,cursor,limit=CONVERSATION_PAGE_SIZE,signal}){let page=await client2.request(`/organizations/${org}/ai-conversations/`,{query:{query:query||void 0,statsPeriod,project:projectParams(project),environment,cursor,per_page:limit,referrer:"sentry-tui.explore-conversations"},signal});return{data:(Array.isArray(page.data)?page.data:[]).map(normalise3).sort((a,b)=>Date.parse(b.endedAt)-Date.parse(a.endedAt)),nextCursor:page.nextCursor}}function normalise3(raw,index){let start=raw.startTimestamp??0,end=raw.endTimestamp??start;return{id:raw.conversationId??String(index),title:text(raw.title),firstInput:messageText(raw.firstInput),lastOutput:messageText(raw.lastOutput),generationDurationMs:raw.generationDuration??0,durationMs:Math.max(0,end-start),endedAt:end>0?new Date(end).toISOString():"",llmCalls:raw.llmCalls??0,toolCalls:raw.toolCalls??0,toolErrors:raw.toolErrors??0,toolNames:Array.isArray(raw.toolNames)?raw.toolNames.filter(isNonEmpty):[],errors:raw.errors??0,totalTokens:raw.totalTokens??0,inputTokens:raw.inputTokens??0,outputTokens:raw.outputTokens??0,totalCost:typeof raw.totalCost==="number"?raw.totalCost:void 0,traceCount:raw.traceCount??0,traceIds:Array.isArray(raw.traceIds)?raw.traceIds.filter(isNonEmpty):[],projectId:raw.projectId==null?void 0:String(raw.projectId),user:normaliseUser(raw.user)}}function messageText(raw){if(typeof raw==="string")return text(raw);if(!Array.isArray(raw))return;return text(raw.find((part)=>part?.type==="text")?.text??raw[0]?.text)}function text(value){let trimmed=value?.trim();if(!trimmed||trimmed.toLowerCase()==="none")return;return trimmed}function normaliseUser(raw){if(!raw)return;let user2={id:text(raw.id),email:text(raw.email),username:text(raw.username),ipAddress:text(raw.ip_address)};return Object.values(user2).some(Boolean)?user2:void 0}function isNonEmpty(value){return typeof value==="string"&&value.trim().length>0}function conversationTitle(conversation){let raw=conversation.title??conversation.firstInput;return raw?raw.replace(/\s+/g," ").trim()||void 0:void 0}var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function conversationIdLabel(id){return UUID.test(id)?id.slice(0,8):id}function conversationUserLabel(user2){if(!user2)return;return user2.email??user2.username??user2.ipAddress??void 0}var CONVERSATION_SPAN_FILTER="has:gen_ai.conversation.id",CONVERSATION_CHART={yAxis:"count_unique(gen_ai.conversation.id)",noun:"conversations"},CONVERSATION_NOUN="conversations";function conversationEmptyLines(query){return[query||void 0,"Try widening the time range or adjusting the query.","This organization may not have gen-ai-conversations enabled."]}import{jsxDEV as jsxDEV39}from"h:6___________________________";var BLOCKS2=[" ","\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],CHART_ROWS=10,CHROME_ROWS=8,MIN_LIST_ROWS=5;function fitsChart(height,extraChrome=0){return height>=CHART_ROWS+CHROME_ROWS+extraChrome+MIN_LIST_ROWS}var Y_LABEL_WIDTH=7,BOTTOM_ROWS=1,TITLE_ROWS=1;function downsample2(values,targetLen){if(values.length<=targetLen)return values;let bucketSize=values.length/targetLen,out=[];for(let i=0;i<targetLen;i++){let start=Math.floor(i*bucketSize),end=Math.min(values.length,Math.floor((i+1)*bucketSize)),sum=0,incomplete=!1;for(let j=start;j<end;j++)sum+=values[j].value,incomplete||=values[j].incomplete;out.push({value:sum,incomplete})}return out}function yAxisLabels(max){return{top:padText(formatCount(max),Y_LABEL_WIDTH-1,"right")+" ",mid:padText(formatCount(Math.round(max/2)),Y_LABEL_WIDTH-1,"right")+" ",zero:padText("0",Y_LABEL_WIDTH-1,"right")+" "}}function timeLabel(unixSeconds){let d=new Date(unixSeconds*1000),hh=String(d.getHours()).padStart(2,"0"),mm=String(d.getMinutes()).padStart(2,"0");return`${hh}:${mm}`}function buildTimeLabels(buckets,barCount,chartWidth){if(buckets.length===0||chartWidth<10)return"";let maxLabels=Math.max(2,Math.floor(chartWidth/(6+2))),step=Math.max(1,Math.floor(buckets.length/maxLabels)),buf=Array.from({length:chartWidth},()=>" ");for(let i=0;i<buckets.length;i+=step){let bucket=buckets[i],label=timeLabel(bucket[0]),pos=Math.round(i/Math.max(1,buckets.length-1)*(chartWidth-label.length)),clampedPos=Math.max(0,Math.min(chartWidth-label.length,pos));for(let c=0;c<label.length;c++)buf[clampedPos+c]=label[c]}return buf.join("")}function BarChart({buckets,width,height,title,noun}){let theme=useTheme();if(width<20||height<4)return null;let chartWidth=width-Y_LABEL_WIDTH-3,chartHeight=Math.max(1,height-BOTTOM_ROWS-TITLE_ROWS-2),rawCounts=buckets.map(([,agg])=>agg[0]?.count??0),rawValues=buckets.map(([,agg,meta])=>({value:agg[0]?.count??0,incomplete:meta?.incomplete===!0})),values=stretch(downsample2(rawValues,chartWidth),chartWidth),max=Math.max(1,...values.map(({value})=>value)),total=rawCounts.reduce((a,b)=>a+b,0),labels=yAxisLabels(max),rows=[];for(let row=chartHeight-1;row>=0;row--){let line="";for(let col=0;col<values.length;col++){let{value:v,incomplete}=values[col],subCells=max===0?0:Math.round(v/max*chartHeight*8),fullRows=Math.floor(subCells/8),remainder=subCells%8,glyph=row<fullRows?"\u2588":row===fullRows&&remainder>0?BLOCKS2[remainder]:" ";line+=incomplete&&glyph!==" "?"\u2591":glyph}rows.push(line)}let timeLabelsRow=buildTimeLabels(buckets,values.length,chartWidth),innerWidth=width-2-1,totalLabel=noun===void 0?"":`${formatCount(total)} ${noun}`;return jsxDEV39("box",{style:{flexDirection:"column",width,height,flexShrink:0,border:["top","bottom","left","right"],borderColor:theme.border,backgroundColor:theme.panel,paddingLeft:1},children:[jsxDEV39("box",{style:{flexDirection:"row",width:innerWidth,flexShrink:0},children:[jsxDEV39("text",{fg:theme.text,children:fitText(title,Math.max(0,innerWidth-totalLabel.length-1))},void 0,!1,void 0,this),jsxDEV39("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.muted,attributes:DIM,children:totalLabel},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rows.map((line,i)=>{let yLabel;if(i===0)yLabel=labels.top;else if(i===Math.floor(rows.length/2))yLabel=labels.mid;else if(i===rows.length-1)yLabel=labels.zero;else yLabel=" ".repeat(Y_LABEL_WIDTH);return jsxDEV39("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV39("text",{fg:theme.muted,attributes:DIM,children:yLabel},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.accent,children:line},void 0,!1,void 0,this)]},i,!0,void 0,this)}),jsxDEV39("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV39("text",{fg:theme.muted,children:" ".repeat(Y_LABEL_WIDTH)},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.muted,attributes:DIM,children:timeLabelsRow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback20}from"h:0__";function useConversations(client2,{org,query,statsPeriod,project,environment,reloadToken=0}){let conversationsLoader=useCallback20((cursor,signal)=>client2?listConversations(client2,{org,query,statsPeriod,project,environment,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment]),timeseriesLoader=useCallback20((signal)=>client2?listExploreTimeseries(client2,{org,statsPeriod,project,environment,signal,dataset:"spans",yAxis:CONVERSATION_CHART.yAxis,query:[CONVERSATION_SPAN_FILTER,query.trim()].filter(Boolean).join(" "),referrer:"sentry-tui.explore-conversations-chart"}):null,[client2,org,query,statsPeriod,project,environment]),conversationPages=useCursorPages(conversationsLoader,reloadToken),timeseries=useAsyncFetch(timeseriesLoader,{reloadKey:reloadToken}).status;return{conversations:mapAsyncStatus(conversationPages.status,(page)=>page.data),timeseries,nextCursor:conversationPages.nextCursor,page:conversationPages.page,nextPage:conversationPages.nextPage,previousPage:conversationPages.previousPage}}import{useEffect as useEffect23}from"h:0__";function useScreenActions(register,actions){useEffect23(()=>(register(actions),()=>register(null)))}var EXPLORE_AGGREGATES=[{name:"count",argument:"count"},{name:"avg",argument:"number"},{name:"p50",argument:"number"},{name:"p75",argument:"number"},{name:"p90",argument:"number"},{name:"p95",argument:"number"},{name:"p99",argument:"number"},{name:"p100",argument:"number"},{name:"sum",argument:"number"},{name:"min",argument:"number"},{name:"max",argument:"number"},{name:"count_unique",argument:"any"},{name:"epm",argument:"none"},{name:"eps",argument:"none"},{name:"failure_rate",argument:"none"},{name:"failure_count",argument:"none"},{name:"performance_score",argument:"score"},{name:"opportunity_score",argument:"score"}],AGGREGATES_BY_NAME=new Map(EXPLORE_AGGREGATES.map((a)=>[a.name,a]));function argumentKind(aggregate){return AGGREGATES_BY_NAME.get(aggregate)?.argument??"number"}function availableExploreAggregates(table,numberFields=[]){let builder=table.builder;if(!builder)return[];let allowed=new Set(builder.aggregates);return EXPLORE_AGGREGATES.filter((aggregate)=>allowed.has(aggregate.name)&&(aggregate.argument!=="number"||builder.numberField||numberFields.length>0))}var DISALLOWED_GROUP_BYS=new Set(["id","sentry.item_id","timestamp"]);function parseAggregateExpression(yAxis){let match=/^([a-zA-Z0-9_]+)\((.*)\)$/.exec(yAxis.trim());if(!match)return{aggregate:yAxis.trim(),argument:""};return{aggregate:match[1],argument:match[2].trim()}}function exploreYAxis(state){return`${state.aggregate}(${argumentKind(state.aggregate)==="none"?"":state.argument})`}function defaultExploreQuery(table){let{aggregate,argument}=parseAggregateExpression(table.yAxis);return{aggregate,argument,groupBys:[],sampleSort:null,aggregateSort:null}}function exploreMode(state){return state.groupBys.length>0?"aggregate":"samples"}function withAggregate(state,aggregate,table,numberFields=[]){let argument=argumentFor(aggregate,state,table,numberFields);if(argument===void 0)return state;return repointSort(state,{...state,aggregate,argument})}function withArgument(state,argument){return repointSort(state,{...state,argument})}function repointSort(previous,next){let sort=next.aggregateSort;if(!sort||sort.field!==exploreYAxis(previous))return next;return{...next,aggregateSort:{...sort,field:exploreYAxis(next)}}}function argumentFor(aggregate,previous,table,numberFields){let kind=argumentKind(aggregate),wasKind=argumentKind(previous.aggregate);if(kind==="none")return"";if(kind==="count")return parseAggregateExpression(table.yAxis).argument;if(kind==="any")return table.builder?.uniqueField;if(kind==="score")return previous.argument.startsWith("measurements.score.")?previous.argument:"measurements.score.total";if(wasKind==="none"||wasKind==="any"||previous.argument==="")return numberFields[0]??table.builder?.numberField;if(wasKind==="count")return numberFields[0]??table.builder?.numberField;return previous.argument}function withGroupBys(state,groupBys,table){let next={...state,groupBys:groupBys.filter(Boolean)},sort=next.aggregateSort;if(sort&&!sortOptions(next,table).includes(sort.field))return{...next,aggregateSort:null};return next}function withSort(state,sort){return exploreMode(state)==="aggregate"?{...state,aggregateSort:sort}:{...state,sampleSort:sort}}function withToggledDirection(state,table){let current=effectiveSort(state,table);return withSort(state,{field:current.field,direction:current.direction==="desc"?"asc":"desc"})}function effectiveSort(state,table){if(exploreMode(state)==="aggregate")return state.aggregateSort??{field:exploreYAxis(state),direction:"desc"};return state.sampleSort??parseSort(table.sort)}function parseSort(sort){return sort.startsWith("-")?{field:sort.slice(1),direction:"desc"}:{field:sort,direction:"asc"}}function formatSort(sort){return sort.direction==="desc"?`-${sort.field}`:sort.field}function sortOptions(state,table){if(exploreMode(state)==="samples")return[...table.fields];return unique([exploreYAxis(state),...state.groupBys])}function resolveExploreQuery(table,state){let yAxis=exploreYAxis(state),mode=exploreMode(state),sort=formatSort(effectiveSort(state,table));if(mode==="samples")return{mode,fields:table.fields,sort,yAxis,groupBys:[],idField:table.idField};return{mode,fields:unique([...state.groupBys,yAxis]),sort,yAxis,groupBys:state.groupBys,idField:state.groupBys[0]??""}}function unique(values){return[...new Set(values.filter(Boolean))]}function argumentLabel(state,table){let kind=argumentKind(state.aggregate);return kind==="none"||kind==="count"?table.noun:state.argument||"\u2014"}function groupByLabel(state){if(state.groupBys.length===0)return"\u2014";if(state.groupBys.length===1)return state.groupBys[0];return`${state.groupBys.length} groups`}function sumsOverTime(aggregate){return aggregate==="count"||aggregate==="failure_count"}function isScoreAttribute(key){return key.startsWith("measurements.score.")}import{jsxDEV as jsxDEV40,Fragment as Fragment12}from"h:6___________________________";var EXPLORE_MIN_FLEX=24;function exploreColumnsFor(id,context){switch(id){case"explore.traces":return traceColumns(context);case"explore.logs":return logColumns(context.theme);case"explore.metrics":return metricColumns(context.theme);case"explore.errors":return errorColumns(context.theme);default:return[]}}var LOG_SEVERITY_LABEL={trace:"TRACE",debug:"DEBUG",info:" INFO",warn:" WARN",error:"ERROR",fatal:"FATAL"};function logColumns(theme){let severityColor={trace:theme.subText,debug:theme.muted,info:theme.accent,warn:theme.warning,error:theme.danger,fatal:theme.level.fatal};return[{key:"timestamp",label:"Time",width:10,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)},{key:"sentry.severity",label:"Level",width:6,priority:2,render:(event,_selected,width)=>{let severity=logSeverity(event);return jsxDEV40("text",{fg:severityColor[severity],attributes:severity==="error"||severity==="fatal"?BOLD:0,children:padText(LOG_SEVERITY_LABEL[severity],width)},void 0,!1,void 0,this)}},{key:"project",label:"Project",width:14,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"project"),width)},void 0,!1,void 0,this)},{key:"message",label:"Message",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"message"),width)},void 0,!1,void 0,this)}]}function logSeverity(event){let value=field(event,"sentry.severity").toLowerCase();return value==="trace"||value==="debug"||value==="warn"||value==="error"||value==="fatal"?value:"info"}function traceColumns(context){let{theme}=context;return[{key:"id",label:"Span ID",width:8,priority:3,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(shortId3(event.id),width)},void 0,!1,void 0,this)},{key:"span.name",label:"Name",width:16,priority:2,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"span.name"),width)},void 0,!1,void 0,this)},{key:"span.description",label:"Description",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"span.description"),width)},void 0,!1,void 0,this)},{key:"span.duration",label:"Duration",width:15,render:(event,_selected,width)=>jsxDEV40(DurationCell,{durationMs:rowNumber(event.row,"span.duration"),maxMs:context.maxDurationMs,theme,width},void 0,!1,void 0,this)},{key:"transaction",label:"Transaction",width:18,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"transaction"),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,priority:4,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)}]}var DURATION_VALUE_WIDTH=7;function DurationCell({durationMs,maxMs,theme,width}){let valueWidth=Math.min(DURATION_VALUE_WIDTH,width),barWidth=Math.max(0,width-valueWidth-1);if(durationMs===void 0)return jsxDEV40("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let fraction=maxMs>0?durationMs/maxMs:0;return jsxDEV40(Fragment12,{children:[barWidth>0?jsxDEV40(Fragment12,{children:[jsxDEV40("text",{fg:theme.accent,children:proportionalBar(fraction,barWidth)},void 0,!1,void 0,this),jsxDEV40("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV40("text",{fg:theme.text,children:padText(formatDuration(durationMs),valueWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function formatDuration(ms){if(!Number.isFinite(ms)||ms<0)return"\u2014";if(ms<1)return`${Math.round(ms*1000)}\xB5s`;if(ms<10)return`${ms.toFixed(2)}ms`;if(ms<1000)return`${Math.round(ms)}ms`;let seconds=ms/1000;if(seconds<60)return`${seconds.toFixed(seconds<10?2:1)}s`;let minutes=seconds/60;if(minutes<60)return`${minutes.toFixed(1)}m`;return`${(minutes/60).toFixed(1)}h`}var AGGREGATE_WIDTH=20,AGGREGATE_VALUE_WIDTH=8;function aggregateColumns(groupBys,yAxis,maxValue,theme){let{aggregate,argument}=parseAggregateExpression(yAxis);return[...groupBys.map((key,index)=>({key,label:key,width:"flex",priority:index===0?void 0:groupBys.length-index,render:(event,_selected,width)=>jsxDEV40("text",{fg:index===0?theme.text:theme.subText,children:padText(field(event,key)||"(none)",width)},void 0,!1,void 0,this)})),{key:yAxis,label:yAxis,width:AGGREGATE_WIDTH,align:"right",render:(event,_selected,width)=>jsxDEV40(AggregateCell,{value:rowNumber(event.row,yAxis),maxValue,text:formatAggregate(aggregate,argument,rowNumber(event.row,yAxis)),theme,width},void 0,!1,void 0,this)}]}function AggregateCell({value,maxValue,text:text2,theme,width}){let valueWidth=Math.min(AGGREGATE_VALUE_WIDTH,width),barWidth=Math.max(0,width-valueWidth-1);if(value===void 0)return jsxDEV40("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let fraction=maxValue>0?value/maxValue:0;return jsxDEV40(Fragment12,{children:[barWidth>0?jsxDEV40(Fragment12,{children:[jsxDEV40("text",{fg:theme.accent,children:proportionalBar(fraction,barWidth)},void 0,!1,void 0,this),jsxDEV40("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV40("text",{fg:theme.text,children:padText(text2,valueWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var COUNTING_AGGREGATES=new Set(["count","count_unique","failure_count"]),RATIO_AGGREGATES=new Set(["failure_rate","performance_score","opportunity_score"]);function formatAggregate(aggregate,argument,value){if(value===void 0)return"\u2014";if(COUNTING_AGGREGATES.has(aggregate))return formatCount(value);if(RATIO_AGGREGATES.has(aggregate))return`${(value*100).toFixed(1)}%`;if(isDurationField(argument))return formatDuration(value);return Math.abs(value)>=1000?formatCount(value):String(Number(value.toFixed(2)))}function isDurationField(field){return field==="span.duration"||field==="span.self_time"||field.endsWith(".duration")||field.endsWith("_time")}function metricColumns(theme){return[{key:"metric.name",label:"Metric",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"metric.name"),width)},void 0,!1,void 0,this)},{key:"metric.type",label:"Type",width:12,priority:2,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"metric.type"),width)},void 0,!1,void 0,this)},{key:"value",label:"Value",width:14,align:"right",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.accent,children:padText(formatMetricValue(rowNumber(event.row,"value"),rowString(event.row,"metric.unit")),width,"right")},void 0,!1,void 0,this)},{key:"project",label:"Project",width:14,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"project"),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,priority:3,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)}]}var UNIT_SYMBOLS={nanosecond:"ns",microsecond:"\xB5s",millisecond:"ms",second:"s",minute:"min",hour:"h",day:"d",week:"wk",bit:"b",byte:"B",kilobyte:"kB",kibibyte:"KiB",megabyte:"MB",mebibyte:"MiB",gigabyte:"GB",gibibyte:"GiB",terabyte:"TB",tebibyte:"TiB",percent:"%",ratio:""};function formatMetricValue(value,unit){if(value===void 0)return"\u2014";let magnitude=Math.abs(value)<1000?String(Number(value.toFixed(2))):formatCount(value);if(!unit||unit==="none")return magnitude;let symbol=UNIT_SYMBOLS[unit]??unit;if(!symbol)return magnitude;return symbol.length<=3?`${magnitude}${symbol}`:`${magnitude} ${symbol}`}function errorColumns(theme){let levels={fatal:theme.level.fatal,error:theme.level.error,warning:theme.level.warning,info:theme.level.info,sample:theme.level.sample};return[{key:"id",label:"Event ID",width:8,priority:3,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(shortId3(event.id),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)},{key:"level",label:"Level",width:7,priority:4,render:(event,_selected,width)=>{let level=field(event,"level").toLowerCase(),colour=levels[level]??theme.level.unknown;return jsxDEV40("text",{fg:colour,attributes:level==="error"||level==="fatal"?BOLD:0,children:padText(level?level.toUpperCase():"",width)},void 0,!1,void 0,this)}},{key:"title",label:"Title",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"title"),width)},void 0,!1,void 0,this)},{key:"project",label:"Project",width:14,priority:2,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"project"),width)},void 0,!1,void 0,this)},{key:"user.display",label:"User",width:18,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"user.display"),width)},void 0,!1,void 0,this)}]}function formatCost(cost){if(cost===void 0)return"\u2014";if(cost===0)return"$0";return cost<1?`$${cost.toFixed(4)}`:`$${cost.toFixed(2)}`}function field(event,name){return rowString(event.row,name)??""}function shortId3(id,width=8){return id.slice(0,width)}import{jsxDEV as jsxDEV41}from"h:6___________________________";var TITLE_MIN_FLEX=28,UNTITLED="Untitled conversation";function conversationColumns(theme){return[{key:"conversation",label:"Conversation",width:"flex",render:(conversation,_selected,width)=>{let title=conversationTitle(conversation);return jsxDEV41("text",{fg:title?theme.text:theme.subText,children:padText(title??UNTITLED,width)},void 0,!1,void 0,this)}},{key:"duration",label:"Duration",width:9,align:"right",priority:2,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.text,children:padText(formatDuration(conversation.generationDurationMs),width,"right")},void 0,!1,void 0,this)},{key:"messages",label:"Msgs",width:5,align:"right",priority:5,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.text,children:padText(formatCount(conversation.llmCalls),width,"right")},void 0,!1,void 0,this)},{key:"errors",label:"Errs",width:5,align:"right",priority:3,render:(conversation,_selected,width)=>{let errors=conversation.errors;return jsxDEV41("text",{fg:errors>0?theme.danger:theme.subText,attributes:errors>0?BOLD:0,children:padText(errors>0?formatCount(errors):"\xB7",width,"right")},void 0,!1,void 0,this)}},{key:"cost",label:"Cost",width:9,align:"right",priority:6,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.accent,children:padText(formatCost(conversation.totalCost),width,"right")},void 0,!1,void 0,this)},{key:"tools",label:"Tools",width:20,priority:1,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.subText,children:padText(toolSummary(conversation,width),width)},void 0,!1,void 0,this)},{key:"age",label:"Age",width:5,align:"right",priority:4,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.muted,children:padText(timeAgo(conversation.endedAt),width,"right")},void 0,!1,void 0,this)}]}function toolSummary(conversation,width){let names=conversation.toolNames;if(names.length===0)return conversation.toolCalls>0?`${conversation.toolCalls} calls`:"";let shown=[],used=0;for(let name of names){let cost=(shown.length>0?2:0)+name.length;if(used+cost>width-(shown.length<names.length-1?3:0))break;shown.push(name),used+=cost}if(shown.length===0)shown.push(names[0]);let hidden=names.length-shown.length;return hidden>0?`${shown.join(", ")} +${hidden}`:shown.join(", ")}function ConversationList({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,query=state.committedQuery,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,{conversations,timeseries,nextCursor,page,nextPage,previousPage}=useConversations(client2,{org,query,statsPeriod:state.statsPeriod,project,environment,reloadToken}),loading=conversations.state==="loading",since=loadingSince(conversations),rows=valueOf(conversations),error=errorOf(conversations),buckets=valueOf(timeseries);useEffect24(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef17(page);useEffect24(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect24(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:CONVERSATION_NOUN}})},[loading,since,error,conversations,dispatch]);let closeDropdown=useCallback21(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0}});let selected=rows?.[state.selected]??null,showDetail=state.detailOpen&&selected!==null,hasChart=!showDetail&&fitsChart(height)&&buckets!==void 0&&buckets.length>0,inner=Math.max(20,width-2);return jsxDEV41("box",{style:{flexDirection:"column",width,height},children:[jsxDEV41(SearchInput,{value:state.searchQuery,placeholder:"Search AI conversations\u2026",focused:state.searchFocused,width,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV41(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),hasChart&&buckets?jsxDEV41(BarChart,{buckets,width:inner,height:CHART_ROWS,title:CONVERSATION_CHART.yAxis,noun:CONVERSATION_CHART.noun},void 0,!1,void 0,this):null,jsxDEV41(DataTable,{rows,columns:conversationColumns(theme),width,selectedIndex:state.selected,focused,rowKey:(conversation,index)=>`${index}:${conversation.id}`,minFlex:TITLE_MIN_FLEX,loading:isInitialLoad(conversations),error,errorTitle:"Failed to load conversations",onRowClick:activateRow,renderDetail:(conversation,selected2,rowWidth)=>renderIdentity(conversation,selected2,rowWidth,theme),empty:{title:"No conversations found.",lines:conversationEmptyLines(query)},layout:[height,hasChart,showDetail]},void 0,!1,void 0,this),showDetail&&selected?jsxDEV41(ConversationDetail,{conversation:selected,width:inner},void 0,!1,void 0,this):null,jsxDEV41(ResultFooter,{count:rows?.length,noun:"conversation",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function renderIdentity(conversation,_selected,width,theme){let parts=[conversationIdLabel(conversation.id),conversation.projectId?`project ${conversation.projectId}`:void 0,conversationUserLabel(conversation.user),conversation.traceCount>1?`${conversation.traceCount} traces`:void 0].filter(Boolean);return jsxDEV41("text",{fg:theme.subText,attributes:DIM,children:padText(` ${parts.join(" \u2502 ")}`,width)},void 0,!1,void 0,this)}function ConversationDetail({conversation,width}){let theme=useTheme(),inner=Math.max(10,width-2);return jsxDEV41("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV41("text",{fg:theme.accent,attributes:BOLD,children:`\u25BE ${fitText(conversationTitle(conversation)??UNTITLED,width-2)}`},void 0,!1,void 0,this),conversation.firstInput&&conversation.title?jsxDEV41("text",{fg:theme.text,children:fitText(` \u2192 ${collapse(conversation.firstInput)}`,inner)},void 0,!1,void 0,this):null,conversation.lastOutput?jsxDEV41("text",{fg:theme.muted,children:fitText(` \u2190 ${collapse(conversation.lastOutput)}`,inner)},void 0,!1,void 0,this):null,jsxDEV41("text",{fg:theme.muted,children:fitText(` ${countLabel(conversation.llmCalls,"call")} \u2502 `+`${countLabel(conversation.toolCalls,"tool")} \u2502 `+`${formatCount(conversation.inputTokens)} in / ${formatCount(conversation.outputTokens)} out \u2502 `+`${formatCost(conversation.totalCost)} \u2502 ${formatDuration(conversation.generationDurationMs)}`,inner)},void 0,!1,void 0,this),conversation.traceIds[0]?jsxDEV41("text",{fg:theme.subText,attributes:DIM,children:fitText(` trace ${conversation.traceIds[0]}`,inner)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function collapse(text2){return text2.replace(/\s+/g," ").trim()}import{useCallback as useCallback22,useEffect as useEffect26,useMemo as useMemo16,useRef as useRef18,useState as useState23}from"h:0__";import{useMemo as useMemo15}from"h:0__";import{jsxDEV as jsxDEV42,Fragment as Fragment13}from"h:6___________________________";var QUERY_BAR_ROWS=CHIP_HEIGHT,LABEL_GAP=1,SECTION_GAP=3,UNGROUPED="",ATTRIBUTE_MENU_WIDTH=44;function ExploreQueryBar({table,query,attributes,open,width,anchorTop,interval,intervalItems,onChange,onIntervalChange,onOpen,onClose}){let theme=useTheme(),sort=effectiveSort(query,table),kind=argumentKind(query.aggregate),fieldIsChoosable=kind!=="none"&&kind!=="count",numberFields=useMemo15(()=>attributes.number.map(({key})=>key),[attributes.number]),aggregateItems=useMemo15(()=>availableExploreAggregates(table,numberFields).map(({name})=>({label:name,value:name})),[table,numberFields]),items=[{kind:"label",text:"Visualize",gapBefore:0},{kind:"chip",gapBefore:LABEL_GAP,opens:"visualize",onPress:()=>onOpen("visualize"),chip:{command:"sentry.explore.visualize",label:query.aggregate,caret:!0}},{kind:"chip",gapBefore:CHIP_GAP,opens:"field",onPress:()=>fieldIsChoosable&&onOpen("field"),chip:{command:"sentry.explore.visualizeField",label:argumentLabel(query,table),caret:fieldIsChoosable}},{kind:"label",text:"Group by",gapBefore:SECTION_GAP},{kind:"chip",gapBefore:LABEL_GAP,opens:"groupBy",onPress:()=>onOpen("groupBy"),chip:{command:"sentry.explore.groupBy",label:groupByLabel(query),caret:!0}},{kind:"label",text:"Sort",gapBefore:SECTION_GAP},{kind:"chip",gapBefore:LABEL_GAP,opens:"sort",onPress:()=>onOpen("sort"),chip:{command:"sentry.view.sort",label:sort.field,caret:!0}},{kind:"chip",gapBefore:CHIP_GAP,opens:null,onPress:()=>onChange(withToggledDirection(query,table)),chip:{command:"sentry.explore.sortDirection",label:sort.direction==="desc"?"Desc":"Asc"}},{kind:"label",text:"Interval",gapBefore:SECTION_GAP},{kind:"chip",gapBefore:LABEL_GAP,opens:"interval",onPress:()=>onOpen("interval"),chip:{command:"sentry.explore.interval",label:interval,caret:!0}}],labelled=layout(items,!0),showLabels=labelled.total<=width,{placed}=showLabels?labelled:layout(items,!1),dropdownTop=anchorTop+CHIP_HEIGHT,anchorOf=(which)=>placed.find((p)=>p.item.kind==="chip"&&p.item.opens===which)?.left??0;return jsxDEV42(Fragment13,{children:[jsxDEV42("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:placed.map(({item,key,gap})=>item.kind==="label"?jsxDEV42("text",{fg:theme.muted,children:`${" ".repeat(gap)}${item.text}`},key,!1,void 0,this):jsxDEV42("box",{style:{flexDirection:"row",flexShrink:0},children:[gap>0?jsxDEV42("text",{children:" ".repeat(gap)},void 0,!1,void 0,this):null,jsxDEV42(Chip,{...item.chip,active:open!==null&&open===item.opens,onPress:item.onPress},void 0,!1,void 0,this)]},key,!0,void 0,this))},void 0,!1,void 0,this),open==="visualize"?jsxDEV42(Dropdown,{title:"Visualize",items:aggregateItems,selected:[query.aggregate],anchorLeft:anchorOf("visualize"),anchorTop:dropdownTop,showAll:!1,onSelect:(values)=>{let value=values[0];if(value)onChange(withAggregate(query,value,table,numberFields));onClose()},onClose},void 0,!1,void 0,this):null,open==="field"?jsxDEV42(FieldDropdown,{query,attributes,anchorLeft:anchorOf("field"),anchorTop:dropdownTop,onSelect:(value)=>{onChange(withArgument(query,value)),onClose()},onClose},void 0,!1,void 0,this):null,open==="groupBy"?jsxDEV42(GroupByDropdown,{query,attributes,anchorLeft:anchorOf("groupBy"),anchorTop:dropdownTop,onSelect:(value)=>{onChange(withGroupBys(query,toggleGroupBy(query.groupBys,value),table)),onClose()},onClose},void 0,!1,void 0,this):null,open==="sort"?jsxDEV42(Dropdown,{title:"Sort By",items:sortOptions(query,table).map((field2)=>({label:field2,value:field2})),selected:[sort.field],anchorLeft:anchorOf("sort"),anchorTop:dropdownTop,showAll:!1,placeholder:"No sortable columns",onSelect:(values)=>{let value=values[0];if(value)onChange(withSort(query,{field:value,direction:sort.direction}));onClose()},onClose},void 0,!1,void 0,this):null,open==="interval"?jsxDEV42(Dropdown,{title:"Chart Interval",items:intervalItems,selected:[interval],anchorLeft:anchorOf("interval"),anchorTop:dropdownTop,showAll:!1,placeholder:"No intervals for this range",onSelect:(values)=>{let value=values[0];if(value)onIntervalChange(value);onClose()},onClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function FieldDropdown({query,attributes,anchorLeft,anchorTop,onSelect,onClose}){let kind=argumentKind(query.aggregate),items=useMemo15(()=>{if(kind==="any")return toItems([...attributes.string,...attributes.number,...attributes.boolean]);if(kind==="score")return toItems(attributes.number.filter((a)=>isScoreAttribute(a.key)));return toItems(attributes.number)},[kind,attributes]);return jsxDEV42(Dropdown,{title:"Field",items,selected:[query.argument],anchorLeft,anchorTop,showAll:!1,filterable:!0,maxWidth:ATTRIBUTE_MENU_WIDTH,placeholder:attributes.loading?"Loading attributes\u2026":"No attributes found",onSelect:(values)=>{let value=values[0];if(value)onSelect(value)},onClose},void 0,!1,void 0,this)}function GroupByDropdown({query,attributes,anchorLeft,anchorTop,onSelect,onClose}){let items=useMemo15(()=>[{label:"\u2014",value:UNGROUPED},...toItems([...attributes.string,...attributes.number,...attributes.boolean].filter((a)=>!DISALLOWED_GROUP_BYS.has(a.key)))],[attributes.string,attributes.number,attributes.boolean]);return jsxDEV42(Dropdown,{title:"Group By",items,selected:query.groupBys.length>0?[...query.groupBys]:[UNGROUPED],anchorLeft,anchorTop,showAll:!1,filterable:!0,maxWidth:ATTRIBUTE_MENU_WIDTH,placeholder:attributes.loading?"Loading attributes\u2026":"No attributes found",onSelect:(values)=>onSelect(values[0]??UNGROUPED),onClose},void 0,!1,void 0,this)}function toItems(attributes){return[...new Map(attributes.map((attribute)=>[attribute.key,{label:attribute.key,value:attribute.key}])).values()]}function toggleGroupBy(groupBys,value){if(!value)return[];return groupBys.includes(value)?groupBys.filter((key)=>key!==value):[...groupBys,value]}function layout(items,withLabels){let placed=[],left=0,first=!0;for(let item of items){if(item.kind==="label"&&!withLabels)continue;let gap=first?0:item.gapBefore;first=!1;let start=left+gap;placed.push({item,key:item.kind==="label"?`label:${item.text}`:item.chip.command,left:start,gap}),left=start+(item.kind==="label"?measureTextWidth(item.text):chipWidth(item.chip))}return{placed,total:left}}import{useEffect as useEffect25,useState as useState22}from"h:0__";async function listTraceItemAttributes(client2,{org,itemType,attributeType,project,environment,statsPeriod,signal}){let{data}=await listOrganizationTraceItemAttributes({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{itemType,attributeType:[attributeType],project:projectParams(project),environment,statsPeriod}}),seen=new Set,attributes=[];for(let raw of Array.isArray(data)?data:[]){let key=typeof raw?.key==="string"?raw.key:"";if(!key||seen.has(key))continue;seen.add(key),attributes.push({key,name:typeof raw.name==="string"&&raw.name?raw.name:key,type:attributeType})}return attributes.sort((a,b)=>a.name.localeCompare(b.name)),attributes}var NONE2=[],IDLE={string:NONE2,number:NONE2,boolean:NONE2,loading:!1};function useTraceItemAttributes(client2,{org,itemType,statsPeriod,project,environment}){let[attributes,setAttributes]=useState22(IDLE),projectKey=project?.join(",")??"",environmentKey=environment?.join(",")??"";return useEffect25(()=>{if(!client2||!itemType){setAttributes(IDLE);return}let controller=new AbortController,cancelled=!1;setAttributes((current)=>({...current,loading:!0}));let load=(attributeType)=>listTraceItemAttributes(client2,{org,itemType,attributeType,statsPeriod,project:projectKey?projectKey.split(","):void 0,environment:environmentKey?environmentKey.split(","):void 0,signal:controller.signal}).catch(()=>NONE2);return Promise.all([load("string"),load("number"),load("boolean")]).then(([strings3,numbers2,booleans])=>{if(cancelled)return;setAttributes({string:strings3,number:numbers2,boolean:booleans,loading:!1})}),()=>{cancelled=!0,controller.abort()}},[client2,org,itemType,statsPeriod,projectKey,environmentKey]),attributes}import{jsxDEV as jsxDEV43,Fragment as Fragment14}from"h:6___________________________";var DETAIL_LABEL_WIDTH=26;function ExploreTable(props){let theme=useTheme(),table=getExploreTable(props.screen.id);if(!table)return jsxDEV43("box",{style:{flexDirection:"column",paddingLeft:1},children:jsxDEV43("text",{fg:theme.danger,children:`No Explore table configured for ${props.screen.id}.`},void 0,!1,void 0,this)},void 0,!1,void 0,this);return jsxDEV43(ExploreTableScreen,{...props,table},void 0,!1,void 0,this)}function ExploreTableScreen({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow,table}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,query=state.committedQuery,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,[builder,setBuilder]=useState23(()=>defaultExploreQuery(table)),[queryDropdown,setQueryDropdown]=useState23(null),[selectedInterval,setSelectedInterval]=useState23(),hasBuilder=table.builder!==void 0,resolved2=useMemo16(()=>resolveExploreQuery(table,builder),[table,builder]),fixedSortItems=useMemo16(()=>fieldSortItems(table.fields),[table.fields]),intervalItems=useMemo16(()=>chartIntervalOptions(state.statsPeriod),[state.statsPeriod]),interval=intervalItems.find(({value})=>value===selectedInterval)?.value??intervalItems[0]?.value??chartInterval(state.statsPeriod),attributes=useTraceItemAttributes(client2,{org,itemType:table.builder?.itemType,statsPeriod:state.statsPeriod,project,environment}),{events,timeseries,nextCursor,page,nextPage,previousPage}=useExploreEvents(client2,table,{org,query,request:resolved2,statsPeriod:state.statsPeriod,interval,project,environment,reloadToken}),loading=events.state==="loading",since=loadingSince(events),rows=valueOf(events),error=errorOf(events),buckets=valueOf(timeseries);useEffect26(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef18(page);useEffect26(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect26(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:table.noun}})},[loading,since,error,events,dispatch,table.noun]);let closeDropdown=useCallback22(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),closeQueryDropdown=useCallback22(()=>setQueryDropdown(null),[]),openQueryDropdown=useCallback22((which)=>{dispatch({type:"setOpenDropdown",payload:null}),setQueryDropdown(which)},[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0},handleKey:(key)=>{if(matchesCommand("sentry.explore.interval",key))return openQueryDropdown("interval"),!0;if(!hasBuilder)return!1;if(matchesCommand("sentry.explore.visualize",key))return openQueryDropdown("visualize"),!0;if(matchesCommand("sentry.explore.visualizeField",key)){let kind=argumentKind(builder.aggregate);if(kind!=="none"&&kind!=="count")openQueryDropdown("field");return!0}if(matchesCommand("sentry.explore.groupBy",key))return openQueryDropdown("groupBy"),!0;if(matchesCommand("sentry.view.sort",key))return openQueryDropdown("sort"),!0;if(matchesCommand("sentry.explore.sortDirection",key))return setBuilder((current)=>withToggledDirection(current,table)),!0;return!1}});let maxDurationMs=useMemo16(()=>longestDuration(rows),[rows]),maxAggregate=useMemo16(()=>largest(rows,resolved2.yAxis),[rows,resolved2.yAxis]),columns=useMemo16(()=>resolved2.mode==="aggregate"?aggregateColumns(builder.groupBys,resolved2.yAxis,maxAggregate,theme):exploreColumnsFor(table.id,{maxDurationMs,theme}),[resolved2.mode,resolved2.yAxis,builder.groupBys,maxAggregate,table.id,maxDurationMs,theme]),selected=rows?.[state.selected]??null,showDetail=state.detailOpen&&selected!==null,hasChart=!showDetail&&fitsChart(height,QUERY_BAR_ROWS)&&buckets!==void 0&&buckets.length>0,inner=Math.max(20,width-2);return jsxDEV43("box",{style:{flexDirection:"column",width,height},children:[jsxDEV43(SearchInput,{value:state.searchQuery,placeholder:table.searchPlaceholder,focused:state.searchFocused,width,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV43(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:hasBuilder?void 0:{value:resolved2.sort,items:fixedSortItems,onChange:(value)=>setBuilder((current)=>withSort(current,parseSort(value)))},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),hasBuilder?jsxDEV43(ExploreQueryBar,{table,query:builder,attributes,open:queryDropdown,width,anchorTop:SEARCH_ROWS+QUERY_BAR_ROWS,interval:interval??"",intervalItems,onChange:setBuilder,onIntervalChange:setSelectedInterval,onOpen:openQueryDropdown,onClose:closeQueryDropdown},void 0,!1,void 0,this):jsxDEV43(ExploreIntervalBar,{interval:interval??"",items:intervalItems,open:queryDropdown==="interval",width,anchorTop:SEARCH_ROWS+QUERY_BAR_ROWS,onOpen:()=>openQueryDropdown("interval"),onChange:setSelectedInterval,onClose:closeQueryDropdown},void 0,!1,void 0,this),hasChart&&buckets?jsxDEV43(BarChart,{buckets,width:inner,height:CHART_ROWS,title:exploreChartTitle(table,resolved2.yAxis),noun:sumsOverTime(builder.aggregate)?table.noun:void 0},void 0,!1,void 0,this):null,jsxDEV43(DataTable,{rows,columns,width,selectedIndex:state.selected,focused,rowKey:(event,index)=>`${index}:${event.id}`,minFlex:EXPLORE_MIN_FLEX,loading:isInitialLoad(events),error,errorTitle:`Failed to load ${table.noun}`,onRowClick:activateRow,empty:{title:`No ${table.noun} found.`,lines:exploreEmptyLines(table,query)},layout:[height,hasChart,showDetail]},void 0,!1,void 0,this),showDetail&&selected?table.id==="explore.logs"?jsxDEV43(LogDetail,{event:selected,width:inner},void 0,!1,void 0,this):jsxDEV43(EventDetail,{event:selected,fields:resolved2.fields,width:inner},void 0,!1,void 0,this):null,jsxDEV43(ResultFooter,{count:rows?.length,noun:rowNoun(table),hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ExploreIntervalBar({interval,items,open,width,anchorTop,onOpen,onChange,onClose}){let theme=useTheme();return jsxDEV43(Fragment14,{children:[jsxDEV43("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV43("text",{fg:theme.muted,children:"Interval "},void 0,!1,void 0,this),jsxDEV43(Chip,{command:"sentry.explore.interval",label:interval,caret:!0,active:open,onPress:onOpen},void 0,!1,void 0,this)]},void 0,!0,void 0,this),open?jsxDEV43(Dropdown,{title:"Chart Interval",items,selected:[interval],anchorLeft:9,anchorTop:anchorTop+CHIP_HEIGHT,availableWidth:width,showAll:!1,onSelect:(values)=>{let value=values[0];if(value)onChange(value);onClose()},onClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function LogDetail({event,width}){let theme=useTheme(),traceId=field(event,"trace");return jsxDEV43("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV43("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Log Details"},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.text,children:fitText(field(event,"message"),width)},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.muted,children:` Severity: ${logSeverity(event)} \u2502 Project: ${field(event,"project")||"\u2014"}`},void 0,!1,void 0,this),traceId?jsxDEV43("text",{fg:theme.muted,children:` Trace: ${traceId}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function EventDetail({event,fields,width}){let theme=useTheme(),valueWidth=Math.max(10,width-DETAIL_LABEL_WIDTH-2);return jsxDEV43("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV43("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Row Details"},void 0,!1,void 0,this),fields.map((name)=>jsxDEV43("box",{style:{flexDirection:"row",width},children:[jsxDEV43("text",{fg:theme.muted,children:` ${padText(name,DETAIL_LABEL_WIDTH)}`},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.text,children:fitText(displayValue(event,name),valueWidth)},void 0,!1,void 0,this)]},name,!0,void 0,this))]},void 0,!0,void 0,this)}function displayValue(event,name){let value=field(event,name);return value===""?"\u2014":value.replace(/\s+/g," ")}function largest(rows,name){let max=0;for(let row of rows??[]){let value=rowNumber(row.row,name);if(value!==void 0&&value>max)max=value}return max}function longestDuration(rows){if(!rows)return 0;let max=0;for(let row of rows){let value=Number(row.row["span.duration"]);if(Number.isFinite(value)&&value>max)max=value}return max}function rowNoun(table){return table.noun.endsWith("s")?table.noun.slice(0,-1):table.noun}import{useCallback as useCallback24,useEffect as useEffect29,useMemo as useMemo18}from"h:0__";var DASHBOARD_LIST_VIEWS={"dashboards.all":{title:"All Dashboards",description:"Every dashboard in this organization.",sort:"recentlyViewed",searchPlaceholder:"Search dashboards by title\u2026",emptyTitle:"No dashboards found.",emptyLines:["This organization may not have dashboards enabled.","Otherwise there are none yet \u2014 create one on sentry.io, as this client is read-only."]},"dashboards.sentry-built":{title:"Sentry Built",description:"Prebuilt dashboards Sentry ships for you.",filter:"onlyPrebuilt",sort:"mostPopular",searchPlaceholder:"Search Sentry Built dashboards\u2026",emptyTitle:"No Sentry Built dashboards.",emptyLines:["This organization may not have prebuilt dashboards enabled.","The web app hides this section entirely without the feature; we can't read org features, so it shows up empty instead."]}};function getDashboardListView(id){return DASHBOARD_LIST_VIEWS[id]}import{jsxDEV as jsxDEV44,Fragment as Fragment15}from"h:6___________________________";function SortBar({value,items,open,width,anchorTop,onChange,onOpen,onClose}){let anchorLeft=Math.max(0,width-chipWidth({command:SORT_COMMAND,label:sortLabel(items,value),caret:!0}));return jsxDEV44(Fragment15,{children:[jsxDEV44("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,width,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV44("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV44(SortSelector,{value,items,open,onOpen},void 0,!1,void 0,this)]},void 0,!0,void 0,this),open?jsxDEV44(SortDropdown,{value,items,anchorLeft,anchorTop:anchorTop+CHIP_HEIGHT,availableWidth:width,onChange,onClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as useCallback23,useEffect as useEffect28,useMemo as useMemo17,useRef as useRef20,useState as useState25}from"h:0__";function widgetRenderKind(displayType){switch(displayType){case"big_number":return"number";case"bar":case"area":case"line":return"series";case"table":case"top_n":return"table";case"categorical_bar":return"bars";default:return"unsupported"}}function widgetDataset(widgetType){switch(widgetType){case void 0:case null:case"discover":return"discover";case"error-events":return"errors";case"transaction-like":return"transactions";case"spans":return"spans";case"logs":return"ourlogs";case"tracemetrics":return"tracemetrics";case"preprod-app-size":return"preprodSize";default:return null}}function unsupportedReason(widget){if(widgetRenderKind(widget.displayType)==="unsupported")return`"${widget.displayType}" widgets are not renderable in the terminal.`;return`"${widget.widgetType}" widgets are not read through the events API.`}var DEFAULT_TABLE_ROWS=5,MAX_TABLE_ROWS=10,MAX_CATEGORICAL_BARS=8;async function fetchWidgetData(client2,{org,widget,statsPeriod,project,environment,signal}){let kind=widgetRenderKind(widget.displayType),dataset=widgetDataset(widget.widgetType),query=widget.queries[0];if(kind==="unsupported"||dataset===null||!query)return null;let common={org,dataset,query:query.conditions,statsPeriod,project,environment,referrer:"sentry-tui.dashboards",signal};switch(kind){case"number":{let aggregate=bigNumberAggregate(query),page=await queryDiscover(client2,{...common,fields:[aggregate],limit:1}),value=page.rows[0]?rowNumber(page.rows[0],aggregate):void 0;return{kind:"number",value,formatted:formatWidgetValue(value),label:aggregate}}case"series":{let interval=dashboardChartInterval(statsPeriod,widget.interval,widget.displayType==="bar"),series=[];for(let savedQuery of widget.queries){let yAxis=savedQuery.aggregates[0]??"count()",buckets=await queryDiscoverTimeseries(client2,{...common,query:savedQuery.conditions,yAxis,interval});series.push({buckets,label:savedQuery.name||yAxis})}return{kind:"series",series}}case"table":{let fields=tableFields(query),page=await queryDiscover(client2,{...common,fields,sort:query.orderby||void 0,limit:tableRowLimit(widget)});return{kind:"table",headers:tableHeaders(query,fields),fields,rows:page.rows}}case"bars":{let group=query.columns[0],aggregate=query.aggregates[0]??"count()";return{kind:"bars",entries:(await queryDiscover(client2,{...common,fields:group?[group,aggregate]:[aggregate],sort:query.orderby||`-${aggregate}`,limit:MAX_CATEGORICAL_BARS})).rows.map((row,index)=>({label:(group?rowString(row,group):void 0)??`#${index+1}`,value:rowNumber(row,aggregate)??0})),label:aggregate}}}}function bigNumberAggregate(query){let index=query.selectedAggregate??0;return query.aggregates[index]??query.aggregates[0]??"count()"}function tableFields(query){let fields=query.fields?.filter((field2)=>field2.length>0)??[];if(fields.length>0)return fields;let combined=[...query.columns,...query.aggregates].filter((field2)=>field2.length>0);return combined.length>0?combined:["count()"]}function tableHeaders(query,fields){return fields.map((field2,index)=>query.fieldAliases?.[index]||field2)}function tableRowLimit(widget){let limit=widget.limit??DEFAULT_TABLE_ROWS;return Math.max(1,Math.min(limit,MAX_TABLE_ROWS))}function formatWidgetValue(value){if(value===void 0||!Number.isFinite(value))return"\u2014";if(!Number.isInteger(value))return Math.abs(value)>=1000?abbreviate(value):value.toFixed(2);return Math.abs(value)>=1e4?abbreviate(value):String(value)}function abbreviate(value){let sign=value<0?"-":"",n=Math.abs(value);if(n>=1e9)return`${sign}${trim(n/1e9)}b`;if(n>=1e6)return`${sign}${trim(n/1e6)}m`;return`${sign}${trim(n/1000)}k`}function trim(value){return value.toFixed(1).replace(/\.0$/,"")}var BIG_DIGIT_ROWS=5;var GLYPHS={"0":["\u2588\u2588\u2588","\u2588 \u2588","\u2588 \u2588","\u2588 \u2588","\u2588\u2588\u2588"],"1":[" \u2588\u2588"," \u2588"," \u2588"," \u2588"," \u2588"],"2":["\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588"],"3":["\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"4":["\u2588 \u2588","\u2588 \u2588","\u2588\u2588\u2588"," \u2588"," \u2588"],"5":["\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"6":["\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"],"7":["\u2588\u2588\u2588"," \u2588"," \u2588"," \u2588"," \u2588"],"8":["\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"],"9":["\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"-":[" "," ","\u2588\u2588\u2588"," "," "],".":[" "," "," "," ","\u2588"],",":[" "," "," "," ","\u2588"]," ":[" "," "," "," "," "]};function hasBigGlyph(char){return char in GLYPHS}function splitBigValue(formatted){let end=0;while(end<formatted.length&&hasBigGlyph(formatted[end]))end++;return{numeric:formatted.slice(0,end),suffix:formatted.slice(end)}}function bigDigitLines(text2){let glyphs=[...text2].map((char)=>GLYPHS[char]).filter((glyph)=>glyph!==void 0);if(glyphs.length===0)return Array.from({length:5},()=>"");return Array.from({length:5},(_,row)=>glyphs.map((glyph)=>glyph[row]).join(" "))}var CARD_BORDER_ROWS=2,CARD_TITLE_ROWS=1,CARD_GAP_ROWS=1,SERIES_CHART_ROWS=8,SERIES_AXIS_ROWS=1,NUMBER_BODY_ROWS=BIG_DIGIT_ROWS+1,UNSUPPORTED_BODY_ROWS=2,TABLE_HEADER_ROWS=1;function widgetBodyLines(widget,kind){switch(kind){case"number":return NUMBER_BODY_ROWS;case"series":return SERIES_CHART_ROWS+SERIES_AXIS_ROWS;case"table":return TABLE_HEADER_ROWS+tableRowLimit(widget);case"bars":return barRowCount(widget);case"unsupported":return UNSUPPORTED_BODY_ROWS}}function widgetCardHeight(widget,kind){return CARD_BORDER_ROWS+CARD_TITLE_ROWS+widgetBodyLines(widget,kind)+CARD_GAP_ROWS}function barRowCount(widget){let limit=widget.limit??MAX_CATEGORICAL_BARS;return Math.max(1,Math.min(limit,MAX_CATEGORICAL_BARS))}function orderWidgets(widgets){return[...widgets].map((widget,index)=>({widget,index})).sort((a,b)=>{let layoutA=a.widget.layout,layoutB=b.widget.layout;if(!layoutA&&!layoutB)return a.index-b.index;if(!layoutA)return 1;if(!layoutB)return-1;return layoutA.y-layoutB.y||layoutA.x-layoutB.x||a.index-b.index}).map(({widget})=>widget)}function stackOffsets(heights){let tops=[],top=0;for(let height of heights)tops.push(top),top+=height;return tops}function scrollTopForWidget({heights,index,viewportHeight,scrollTop}){if(heights.length===0||viewportHeight<=0)return 0;let clamped=Math.max(0,Math.min(index,heights.length-1)),tops=stackOffsets(heights),contentHeight=tops[heights.length-1]+heights[heights.length-1],maxScrollTop=Math.max(0,contentHeight-viewportHeight),top=tops[clamped],bottom=top+heights[clamped],next=top<scrollTop||heights[clamped]>viewportHeight?top:bottom>scrollTop+viewportHeight?bottom-viewportHeight:scrollTop;return Math.min(Math.max(next,0),maxScrollTop)}import{jsxDEV as jsxDEV45}from"h:6___________________________";var CARD_CHROME_WIDTH=4,AXIS_LABEL_WIDTH=6,BAR_LABEL_MIN=8,BAR_LABEL_MAX=24,BAR_VALUE_WIDTH=8,TABLE_MIN_COLUMN=8;function WidgetCard({widget,kind,status,width,height,selected,placeholder=!1}){let theme=useTheme(),inner=Math.max(4,width-CARD_CHROME_WIDTH),bodyLines=Math.max(0,height-3);return jsxDEV45("box",{style:{flexDirection:"column",width,height,flexShrink:0,marginBottom:CARD_GAP_ROWS,border:!0,borderColor:selected?theme.accent:theme.border,backgroundColor:selected?theme.panel:void 0,paddingLeft:1,paddingRight:1},children:[jsxDEV45(CardTitle,{widget,width:inner,selected,placeholder},void 0,!1,void 0,this),jsxDEV45(CardBody,{widget,kind,status:placeholder?void 0:status,width:inner,lines:bodyLines},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function CardTitle({widget,width,selected,placeholder}){let theme=useTheme(),tag=widget.displayType,titleWidth=Math.max(1,width-tag.length-1);return jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:placeholder?theme.panelAlt:selected?theme.accent:theme.text,attributes:placeholder?0:BOLD,children:padText(placeholder?skeletonBar(titleWidth,3):widget.title||"Untitled widget",titleWidth)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.subText,attributes:DIM,children:padText(tag,tag.length+1,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function CardBody({widget,kind,status,width,lines}){if(kind==="unsupported")return jsxDEV45(NotRenderable,{reason:unsupportedReason(widget),width,lines},void 0,!1,void 0,this);let error=errorOf(status);if(error)return jsxDEV45(CardError,{message:error.message,width,lines},void 0,!1,void 0,this);let data=valueOf(status)??null;if(data===null&&status?.state==="ready")return jsxDEV45(NotRenderable,{reason:unsupportedReason(widget),width,lines},void 0,!1,void 0,this);let pending=data===null||isLoading(status)||status===void 0;switch(kind){case"number":return jsxDEV45(NumberBody,{data:data?.kind==="number"?data:void 0,pending,width},void 0,!1,void 0,this);case"series":return jsxDEV45(SeriesBody,{data:data?.kind==="series"?data:void 0,pending,width},void 0,!1,void 0,this);case"table":return jsxDEV45(TableBody,{data:data?.kind==="table"?data:void 0,width,lines},void 0,!1,void 0,this);case"bars":return jsxDEV45(BarsBody,{data:data?.kind==="bars"?data:void 0,rows:barRowCount(widget),width},void 0,!1,void 0,this)}}function NumberBody({data,pending,width}){let theme=useTheme(),{numeric,suffix}=splitBigValue(data?.formatted??""),glyphs=bigDigitLines(pending||numeric.length===0?"000":numeric),dim=pending||numeric.length===0,lastRow=glyphs.length-1,tail=suffix?` ${suffix}`:"",blockWidth=(glyphs[0]?.length??0)+tail.length;return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:[glyphs.map((line,row)=>jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:jsxDEV45("text",{fg:dim?theme.panelAlt:theme.text,children:padText(padText(row===lastRow?line+tail:line,blockWidth),width,"center")},void 0,!1,void 0,this)},row,!1,void 0,this)),jsxDEV45("text",{fg:theme.muted,children:padText(data?.label??"",width,"center")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function SeriesBody({data,pending,width}){let theme=useTheme(),chartWidth=Math.max(4,width-AXIS_LABEL_WIDTH-1),rawSeries=(data?.series??[]).map(({buckets,label})=>({label,points:buckets.map(([at,series])=>[at,series[0]?.count??0])})),visibleSeries=pending?[{label:"",points:void 0}]:rawSeries.slice(0,SERIES_CHART_ROWS),colors=[theme.accent,theme.success,theme.warning,theme.highlight],baseRows=Math.floor(SERIES_CHART_ROWS/Math.max(1,visibleSeries.length)),remainder=SERIES_CHART_ROWS%Math.max(1,visibleSeries.length),multiple=visibleSeries.length>1,rows=visibleSeries.flatMap(({label,points},seriesIndex)=>{let rowCount=baseRows+(remainder-- >0?1:0),stretched=points?stretch(points,chartWidth):void 0,lines=sparklineBlock(stretched,chartWidth,rowCount,{floor:!0}),max=points&&points.length>0?Math.max(...points.map(([,count])=>count)):0;return lines.map((line,row)=>({line,color:colors[seriesIndex%colors.length],gutter:multiple?row===0?fitText(label,AXIS_LABEL_WIDTH):"":axisLabel(row,lines.length,max,Boolean(points))}))}),first=rawSeries[0]?.points,axisTitle=multiple?`${visibleSeries.length} series`:rawSeries[0]?.label??"";return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:[rows.map(({line,gutter,color},row)=>jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:theme.muted,attributes:DIM,children:`${padText(gutter,AXIS_LABEL_WIDTH,multiple?"left":"right")} `},void 0,!1,void 0,this),jsxDEV45("text",{fg:pending?theme.panelAlt:color,children:line},void 0,!1,void 0,this)]},row,!0,void 0,this)),jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:theme.muted,attributes:DIM,children:" ".repeat(AXIS_LABEL_WIDTH+1)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.subText,attributes:DIM,children:timeAxis(first,axisTitle,chartWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function axisLabel(row,rows,max,settled){if(!settled)return"";if(row===0)return formatWidgetValue(max);if(row===rows-1)return"0";return""}function timeAxis(points,label,width){if(!points||points.length===0||width<12)return" ".repeat(Math.max(0,width));let first=clock(points[0][0]),last=clock(points[points.length-1][0]),middle=Math.max(1,width-first.length-last.length);return`${first}${padText(fitText(label,Math.max(0,middle-4)),middle,"center")}${last}`.slice(0,width)}function clock(unixSeconds){let date=new Date(unixSeconds*1000);return`${String(date.getHours()).padStart(2,"0")}:${String(date.getMinutes()).padStart(2,"0")}`}function TableBody({data,width,lines}){let theme=useTheme(),headers=data?.headers??[],fields=data?.fields??[],specs=(headers.length>0?headers:[""]).map((header,index)=>({key:String(index),width:"flex",priority:headers.length-index,header,field:fields[index]??""})),resolved2=layoutColumns(specs,width,{gap:1,minFlex:TABLE_MIN_COLUMN}),rowLines=Math.max(0,lines-1);return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV45("text",{fg:theme.muted,children:resolved2.map(({column,width:cell})=>padText(column.header,cell)).join(" ")},void 0,!1,void 0,this),Array.from({length:rowLines},(_,row)=>{let values=data?.rows[row];return jsxDEV45("text",{fg:values?theme.text:theme.panelAlt,children:resolved2.map(({column,width:cell})=>padText(values?cellText2(values,column.field):data?"":skeletonBar(cell,row),cell)).join(" ")},row,!1,void 0,this)})]},void 0,!0,void 0,this)}function cellText2(row,field2){let value=row[field2];if(value===void 0||value===null||value==="")return"\u2014";if(typeof value==="number")return Number.isInteger(value)?String(value):value.toFixed(2);return String(value)}function skeletonBar(width,seed){if(width<=0)return"";let fraction=0.4+seed*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(width,Math.floor(width*fraction))))}function BarsBody({data,rows,width}){let theme=useTheme(),labelWidth=Math.max(BAR_LABEL_MIN,Math.min(BAR_LABEL_MAX,Math.floor(width*0.35))),barWidth=Math.max(1,width-labelWidth-BAR_VALUE_WIDTH-2),entries=data?.entries??[],max=Math.max(1,...entries.map((entry)=>entry.value));return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:Array.from({length:rows},(_,row)=>{let entry=entries[row],filled=entry?Math.max(1,Math.round(entry.value/max*barWidth)):0,track=entry||!data?Math.max(0,barWidth-filled):0;return jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:entry?theme.subText:theme.panelAlt,children:`${padText(entry?.label??(data?"":skeletonBar(labelWidth,row)),labelWidth)} `},void 0,!1,void 0,this),filled>0?jsxDEV45("text",{fg:theme.accent,children:"\u2588".repeat(filled)},void 0,!1,void 0,this):null,track>0?jsxDEV45("text",{fg:theme.panelAlt,children:"\u2591".repeat(track)},void 0,!1,void 0,this):null,jsxDEV45("text",{fg:entry?theme.text:theme.panelAlt,children:padText(entry?formatCount(entry.value):"",BAR_VALUE_WIDTH,"right")},void 0,!1,void 0,this)]},row,!0,void 0,this)})},void 0,!1,void 0,this)}function NotRenderable({reason,width,lines}){let theme=useTheme();return jsxDEV45(FixedLines,{width,lines,children:[jsxDEV45("text",{fg:theme.muted,children:fitText(reason,width)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.subText,attributes:DIM,children:fitText("Open it on sentry.io to see this one.",width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function CardError({message,width,lines}){let theme=useTheme();return jsxDEV45(FixedLines,{width,lines,children:[jsxDEV45("text",{fg:theme.danger,children:fitText("Failed to load this widget",width)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.muted,children:fitText(message,width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function FixedLines({width,lines,children}){return jsxDEV45("box",{style:{flexDirection:"column",width,height:lines,flexShrink:0},children},void 0,!1,void 0,this)}import{useEffect as useEffect27,useRef as useRef19,useState as useState24}from"h:0__";function useDashboardDetail(client2,{org,id,reloadToken=0}){let[status,setStatus]=useState24(idle),statusRef=useRef19(status);return statusRef.current=status,useEffect27(()=>{if(!client2)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let dashboard=await getDashboard(client2,{org,id,signal});if(!cancelled)setStatus(resolved(withPrebuiltDetails(dashboard),Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,id,reloadToken]),status}function widgetKey(widget,index){return widget.id??`#${index}`}function useWidgetData(client2,{org,dashboardId,widgets,upto,statsPeriod,project,environment,reloadToken=0}){let[results,setResults]=useState24(()=>new Map),queryKey=JSON.stringify([org,dashboardId,statsPeriod,project??null,environment??null,reloadToken]),params=useRef19({org,statsPeriod,project,environment});params.current={org,statsPeriod,project,environment};let requested=useRef19(new Set),chain=useRef19(Promise.resolve()),controller=useRef19(null);return useEffect27(()=>{requested.current=new Set,chain.current=Promise.resolve(),setResults(new Map);let next=new AbortController;return controller.current=next,()=>next.abort()},[queryKey]),useEffect27(()=>{if(!client2)return;let abort=controller.current;if(!abort)return;let limit=Math.min(widgets.length,Math.max(0,upto));for(let index=0;index<limit;index++){let widget=widgets[index],key=widgetKey(widget,index);if(requested.current.has(key))continue;if(requested.current.add(key),!isFetchable(widget)){setResults((map)=>withEntry(map,key,resolved(null,Date.now())));continue}setResults((map)=>withEntry(map,key,startLoading(void 0,Date.now()))),chain.current=chain.current.then(async()=>{if(abort.signal.aborted)return;try{let data=await fetchWidgetData(client2,{...params.current,widget,signal:abort.signal});if(!abort.signal.aborted)setResults((map)=>withEntry(map,key,resolved(data,Date.now())))}catch(error){if(abort.signal.aborted)return;setResults((map)=>withEntry(map,key,rejected(void 0,toAsyncError(error))))}})}},[client2,widgets,upto,queryKey]),results}function isFetchable(widget){return widgetRenderKind(widget.displayType)!=="unsupported"&&widgetDataset(widget.widgetType)!==null&&widget.queries.length>0}function withEntry(map,key,value){let next=new Map(map);return next.set(key,value),next}import{jsxDEV as jsxDEV46}from"h:6___________________________";var INITIAL_WIDGETS=2,LOOKAHEAD=2,DEFAULT_DASHBOARD_PERIOD="14d",SCROLLBAR_GUTTER=2,HEADER_ROWS=1;function dashboardDetailView(row){return{id:`dashboard:${row.id}`,sentryLocation:{screen:"dashboards.all",detail:{kind:"dashboard",dashboardId:row.id}},label:row.title,stateKey:DASHBOARD_DETAIL_STATE_KEY,initialState:{statsPeriod:DEFAULT_DASHBOARD_PERIOD,selectedEnvs:row.environment??[],selectedProjects:[]},render:(ctx)=>ctx.state?jsxDEV46(DashboardWidgetGrid,{...ctx,state:ctx.state,dashboard:row},void 0,!1,void 0,this):null}}function dashboardUrlView(dashboardId){return dashboardDetailView({id:dashboardId,title:`Dashboard ${dashboardId}`,widgetDisplay:[]})}function DashboardWidgetGrid({client:client2,org,state,focused,width,height,reloadToken,dashboard,updateView}){let theme=useTheme(),{dispatch}=state,listRef=useRef20(null),detail=useDashboardDetail(client2,{org,id:dashboard.id,reloadToken}),details=valueOf(detail),error=errorOf(detail),loading=detail.state==="loading";useEffect28(()=>{if(details)updateView(`dashboard:${dashboard.id}`,{label:details.title})},[details,dashboard.id,updateView]);let widgets=useMemo17(()=>orderWidgets(details?.widgets??[]),[details]),placeholders=useMemo17(()=>(dashboard.widgetDisplay??[]).map((displayType,index)=>({id:`placeholder-${index}`,title:"",displayType,queries:[]})),[dashboard.widgetDisplay]),showing=details?widgets:placeholders,isPlaceholder=!details,isPrebuilt=Boolean(details?.prebuiltId??dashboard.prebuiltId);useEffect28(()=>{dispatch({type:"setEntries",payload:widgets})},[widgets,dispatch]),useEffect28(()=>{dispatch({type:"setStatus",payload:{loading,error:error?.message,noun:"dashboard"}})},[loading,error,dispatch]);let seededPeriod=useRef20(null);useEffect28(()=>{if(!details?.period||seededPeriod.current===details.id)return;seededPeriod.current=details.id,dispatch({type:"setStatsPeriod",payload:details.period})},[details,dispatch]);let[upto,setUpto]=useState25(INITIAL_WIDGETS);useEffect28(()=>{setUpto((current)=>Math.max(current,state.selected+1+LOOKAHEAD))},[state.selected]);let project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,data=useWidgetData(client2,{org,dashboardId:dashboard.id,widgets,upto,statsPeriod:state.statsPeriod,project,environment,reloadToken}),cardWidth=Math.max(20,width-SCROLLBAR_GUTTER),heights=useMemo17(()=>showing.map((widget)=>widgetCardHeight(widget,widgetRenderKind(widget.displayType))),[showing]);useEffect28(()=>{let box=listRef.current;if(!box||heights.length===0)return;let viewportHeight=box.viewport.height;if(viewportHeight<=0)return;let next=scrollTopForWidget({heights,index:state.selected,viewportHeight,scrollTop:box.scrollTop});if(next!==box.scrollTop)box.scrollTop=next},[heights,state.selected,height]);let closeDropdown=useCallback23(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return jsxDEV46("box",{style:{flexDirection:"column",width,height},children:[jsxDEV46("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV46("text",{fg:theme.text,attributes:BOLD,children:fitText(details?.title??dashboard.title,Math.max(8,width-24))},void 0,!1,void 0,this),jsxDEV46("text",{fg:theme.muted,children:details?.period?` saved on ${details.period}`:" read-only"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV46(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,width,anchorTop:HEADER_ROWS,onProjectChange:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),error&&!details?jsxDEV46("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV46("text",{fg:theme.danger,children:"Failed to load dashboard"},void 0,!1,void 0,this),jsxDEV46("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV46("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null,details&&showing.length===0?jsxDEV46("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV46("text",{fg:theme.text,children:isPrebuilt?"This Sentry Built dashboard is not bundled in this version.":"This dashboard has no widgets."},void 0,!1,void 0,this),jsxDEV46("text",{fg:theme.muted,children:isPrebuilt?"Its widgets live in Sentry Web rather than the API; open it on sentry.io to view them.":"Add one on sentry.io \u2014 this client is read-only."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV46("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:showing.map((widget,index)=>jsxDEV46(WidgetCard,{widget,kind:widgetRenderKind(widget.displayType),status:data.get(widgetKey(widget,index)),width:cardWidth,height:heights[index]-1,selected:focused&&index===state.selected,placeholder:isPlaceholder},widgetKey(widget,index),!1,void 0,this))},void 0,!1,void 0,this),showing.length>0?jsxDEV46("text",{fg:theme.subText,attributes:DIM,children:fitText(` widget ${Math.min(state.selected+1,showing.length)} of ${showing.length} \xB7 j/k to move \xB7 esc to go back`,width)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV47}from"h:6___________________________";var HEADING_ROWS=4,MIN_TITLE_WIDTH2=28;function dashboardColumns(theme){let STAR_COLUMN={key:"star",label:"\u2605",width:1,render:(row)=>jsxDEV47("text",{fg:row.isFavorited?theme.warning:theme.border,children:row.isFavorited?"\u2605":"\u2606"},void 0,!1,void 0,this)},NAME_COLUMN={key:"name",label:"Name",width:"flex",render:(row,selected,width)=>jsxDEV47("text",{fg:selected?theme.text:theme.accent,attributes:selected?BOLD:0,children:padText(row.title,width)},void 0,!1,void 0,this)},WIDGETS_COLUMN={key:"widgets",label:"Widgets",width:7,align:"right",priority:4,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.text,children:padText(widgetCountLabel(row),width,"right")},void 0,!1,void 0,this)},LAST_VISITED_COLUMN={key:"lastVisited",label:"Last Visited",width:12,priority:5,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.subText,children:padText(row.lastVisited?timeAgo(row.lastVisited):"\u2014",width)},void 0,!1,void 0,this)};return{standard:[STAR_COLUMN,NAME_COLUMN,WIDGETS_COLUMN,{key:"owner",label:"Owner",width:18,priority:3,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.muted,children:padText(ownerLabel(row),width)},void 0,!1,void 0,this)},{key:"access",label:"Access",width:10,priority:1,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.muted,children:padText(accessLabel(row),width)},void 0,!1,void 0,this)},{key:"created",label:"Created",width:10,priority:2,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.subText,children:padText(row.dateCreated?timeAgo(row.dateCreated):"\u2014",width)},void 0,!1,void 0,this)},LAST_VISITED_COLUMN],prebuilt:[STAR_COLUMN,NAME_COLUMN,{key:"description",label:"Description",width:"flex",priority:1,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.muted,children:padText(row.description??"",width)},void 0,!1,void 0,this)},WIDGETS_COLUMN,LAST_VISITED_COLUMN]}}function DashboardList(props){let theme=useTheme(),{client:client2,org,screen,state,focused,width,height,reloadToken}=props,{dispatch,focusSearch,handleSearchBlur}=state,config=getDashboardListView(screen.id)??{title:screen.item,description:"",sort:"recentlyViewed",searchPlaceholder:"Search dashboards\u2026",emptyTitle:"No dashboards found.",emptyLines:[]},isPrebuilt=config.filter==="onlyPrebuilt",sortItems=useMemo18(()=>dashboardSortOptions(isPrebuilt),[isPrebuilt]),sort=dashboardSort(state.sort,config.sort,isPrebuilt),{dashboards:status,nextCursor}=useDashboards(client2,{org,filter:config.filter,query:state.committedQuery,sort,reloadToken}),rows=valueOf(status),error=errorOf(status),loading=status.state==="loading";useEffect29(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]),useEffect29(()=>{dispatch({type:"setStatus",payload:{loading,error:error?.message,noun:"dashboards"}})},[loading,error,dispatch]);let{pushView}=props,open=useCallback24((index)=>{let row=rows?.[index];if(row)pushView(dashboardDetailView(row))},[rows,pushView]);useScreenActions(props.registerActions,{open});let columnSets=dashboardColumns(theme),columns=isPrebuilt?columnSets.prebuilt:columnSets.standard;return jsxDEV47("box",{style:{flexDirection:"column",width,height},children:[jsxDEV47(SearchInput,{value:state.searchQuery,placeholder:config.searchPlaceholder,focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV47("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV47("text",{fg:theme.text,attributes:BOLD,children:config.title},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:` ${config.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV47(SortBar,{value:sort,items:sortItems,open:state.openDropdown==="sort",width,anchorTop:SEARCH_ROWS+1,onChange:(sort2)=>dispatch({type:"setSort",payload:sort2}),onOpen:()=>dispatch({type:"setOpenDropdown",payload:"sort"}),onClose:()=>dispatch({type:"setOpenDropdown",payload:null})},void 0,!1,void 0,this),jsxDEV47(DataTable,{rows,columns,width,minFlex:MIN_TITLE_WIDTH2,selectedIndex:state.selected,focused,rowKey:(row)=>row.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load dashboards",onRowClick:props.activateRow,empty:{title:config.emptyTitle,lines:[state.committedQuery||void 0,...config.emptyLines]},layout:[height,HEADING_ROWS]},void 0,!1,void 0,this),jsxDEV47(ResultFooter,{count:rows?.length,noun:"dashboard",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function widgetCountLabel(row){if(row.widgetDisplay.length>0)return String(row.widgetDisplay.length);return row.prebuiltId==null?"0":"\u2014"}function ownerLabel(row){let owner=row.createdBy;if(!owner)return"Sentry";return owner.name||owner.email||"\u2014"}function accessLabel(row){let permissions=row.permissions;if(!permissions||permissions.isEditableByEveryone)return"All";let teams=permissions.teamsWithEditAccess?.length??0;return teams>0?`Creator +${teams}`:"Creator"}import{useCallback as useCallback27,useEffect as useEffect32,useMemo as useMemo21,useRef as useRef23}from"h:0__";import{RenderableEvents as RenderableEvents3}from"h:3__________";import{jsxDEV as jsxDEV48}from"h:6___________________________";function IssueListSkeleton({width,rows}){return jsxDEV48("box",{style:{flexDirection:"column",width},children:Array.from({length:rows},(_,i)=>jsxDEV48(IssueRowSkeleton,{width,seed:i},i,!1,void 0,this))},void 0,!1,void 0,this)}function IssueListEmpty({query}){let theme=useTheme();return jsxDEV48("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV48("text",{fg:theme.text,children:"No issues match this search."},void 0,!1,void 0,this),jsxDEV48("text",{fg:theme.muted,children:query},void 0,!1,void 0,this),jsxDEV48("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.nav.search"))} to edit the query`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function IssueListError({error}){let theme=useTheme();return jsxDEV48("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV48("text",{fg:theme.danger,children:"Failed to load issues"},void 0,!1,void 0,this),jsxDEV48("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV48("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.app.refresh"))} to retry`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useMemo as useMemo20}from"h:0__";import{useCallback as useCallback25,useMemo as useMemo19}from"h:0__";var directories=new WeakMap;function loadOrganizationMembers(client2,org){let byOrg=directories.get(client2);if(!byOrg)byOrg=new Map,directories.set(client2,byOrg);let held=byOrg.get(org);if(held)return held;let request=listOrganizationMembers(client2,{org}).then((members)=>new Map(members.flatMap((member)=>member.user?[[member.user.id,member]]:[])));return byOrg.set(org,request),request.catch(()=>{if(byOrg.get(org)===request)byOrg.delete(org)}),request}function useOrganizationMembers(client2,org,enabled=!0){let loader=useCallback25((_signal)=>client2&&org&&enabled?loadOrganizationMembers(client2,org):null,[client2,org,enabled]),scope=useMemo19(()=>({client:client2,org,enabled}),[client2,org,enabled]);return useAsyncFetch(loader,{resetKey:scope}).status}var EMPTY=new Map;function useMemberAvatars(client2,org,enabled){let{supportsHighRes}=useImageSupport(),status=useOrganizationMembers(client2,org,enabled&&supportsHighRes),members=valueOf(status);return useMemo20(()=>members?avatarsByUserId([...members.values()]):EMPTY,[members])}import{useCallback as useCallback26,useEffect as useEffect31,useLayoutEffect,useRef as useRef22,useState as useState27}from"h:0__";import{useKeyboard as useKeyboard7}from"h:4___________";function frameIsVisible(frame,nextFrame,includeSystemFrames){return includeSystemFrames||frame.inApp||(nextFrame?.inApp??!1)||!frame.inApp&&nextFrame===void 0}function isRepeatedFrame(frame,other){if(!other)return!1;return frame.filename===other.filename&&frame.function===other.function&&frame.lineNo===other.lineNo&&frame.colNo===other.colNo}function buildStackRows(stacktrace,{includeSystemFrames=!1,newestFirst=!0}={}){let frames=stacktrace?.frames??[];if(frames.length===0)return[];let rows=[],pendingHidden=0;for(let i=0;i<frames.length;i++){let frame=frames[i],next=frames[i+1];if(!frameIsVisible(frame,next,includeSystemFrames)){pendingHidden++;continue}let previous=rows[rows.length-1];if(previous?.kind==="frame"&&pendingHidden===0&&isRepeatedFrame(frame,previous.frame)){previous.repeats++;continue}rows.push({kind:"frame",frame,index:i,repeats:0,hiddenBefore:pendingHidden}),pendingHidden=0}if(pendingHidden>0){let last=rows[rows.length-1];if(last?.kind==="frame")last.hiddenBefore+=pendingHidden}if(stacktrace?.framesOmitted){let[from,to]=stacktrace.framesOmitted;rows.push({kind:"omitted",from,to})}return newestFirst?rows.reverse():rows}function formatFrameTitle(frame){let parts=[frame.filename??frame.module??"<unknown>"];if(frame.function)parts.push(`in ${frame.function}`);if(frame.lineNo!==null&&frame.lineNo>0){let position=frame.colNo!==null&&frame.colNo>0?`${frame.lineNo}:${frame.colNo}`:String(frame.lineNo);parts.push(`at line ${position}`)}return parts.join(" ")}function frameIsExpandable(frame){return frame.context.length>0||frame.vars!==null&&Object.keys(frame.vars).length>0}function filetypeFor(frame){let name=frame.filename??frame.absPath??"";if(name.endsWith(".tsx"))return"tsx";if(name.endsWith(".ts"))return"typescript";if(name.endsWith(".js")||name.endsWith(".jsx"))return"javascript";if(name.endsWith(".md"))return"markdown";if(name.endsWith(".py")||name.endsWith(".pyi"))return"python";if(name.endsWith(".rb"))return"ruby";if(name.endsWith(".php"))return"php";if(name.endsWith(".go"))return"go";return}import{jsxDEV as jsxDEV49}from"h:6___________________________";function stackFrameKey(traceId,exceptionIndex,frameIndex){return`${traceId}:${exceptionIndex}:${frameIndex}`}function ExceptionSection({value,traceId,exceptionIndex,width,expandedFrames,selectedFrame,selectedFrameId,onFrameClick,includeSystemFrames}){let theme=useTheme(),rows=buildStackRows(value.stacktrace,{includeSystemFrames});return jsxDEV49("box",{style:{flexDirection:"column",width},children:[jsxDEV49("text",{fg:theme.danger,attributes:1,children:fitText(value.type??"Error",width)},void 0,!1,void 0,this),value.value?jsxDEV49("text",{fg:theme.text,children:fitText(value.value,width)},void 0,!1,void 0,this):null,value.mechanism?jsxDEV49("text",{fg:theme.muted,children:`mechanism: ${value.mechanism.type}${value.mechanism.handled?"":" \xB7 unhandled"}`},void 0,!1,void 0,this):null,rows.map((row)=>{if(row.kind==="omitted")return jsxDEV49("text",{fg:theme.muted,children:` \u2026 frames ${row.from}\u2013${row.to} omitted`},`omitted-${row.from}`,!1,void 0,this);let key=stackFrameKey(traceId,exceptionIndex,row.index);return jsxDEV49(FrameRow,{frame:row.frame,width,repeats:row.repeats,hiddenBefore:row.hiddenBefore,expanded:expandedFrames.has(key),selected:selectedFrame===key,selectedId:selectedFrameId,onClick:()=>onFrameClick(key)},row.index,!1,void 0,this)}),rows.length===0?jsxDEV49("text",{fg:theme.muted,children:"No stack trace available."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function FrameRow({frame,width,repeats,hiddenBefore,expanded,selected,selectedId,onClick}){let theme=useTheme(),marker=frameIsExpandable(frame)?expanded?"\u25BE":"\u25B8":" ";return jsxDEV49("box",{style:{flexDirection:"column",width},children:[hiddenBefore>0?jsxDEV49("text",{fg:theme.muted,children:` \u25B8 ${hiddenBefore} more frame${hiddenBefore===1?"":"s"}`},void 0,!1,void 0,this):null,jsxDEV49("box",{id:selected?selectedId:void 0,style:{flexDirection:"row",width,backgroundColor:selected?theme.selected:void 0},onMouseDown:onClick,children:[jsxDEV49("text",{fg:selected?theme.accent:theme.muted,children:`${selected?"\u276F":" "} ${marker} `},void 0,!1,void 0,this),jsxDEV49("text",{fg:frame.inApp?theme.text:theme.muted,children:fitText(formatFrameTitle(frame),width-15)},void 0,!1,void 0,this),jsxDEV49("box",{style:{flexGrow:1}},void 0,!1,void 0,this),repeats>0?jsxDEV49("text",{fg:theme.muted,children:`\xD7${repeats+1} `},void 0,!1,void 0,this):null,frame.inApp?jsxDEV49("text",{fg:theme.accent,children:"In App"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),expanded?jsxDEV49(FrameContext,{frame,width},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function FrameContext({frame,width}){let theme=useTheme(),syntaxStyle=useSyntaxStyle(),filetype=syntaxStyle?filetypeFor(frame):void 0,vars=frame.vars?Object.entries(frame.vars):[];return jsxDEV49("box",{style:{flexDirection:"column",width,paddingLeft:5},children:[frame.context.map(([lineNo,source])=>{let active=lineNo===frame.lineNo,gutter=String(lineNo).padStart(5);return jsxDEV49("box",{style:{flexDirection:"row",width:width-5},children:[jsxDEV49("text",{fg:active?theme.accent:theme.muted,children:`${gutter} ${active?"\u276F":" "} `},void 0,!1,void 0,this),filetype&&syntaxStyle?jsxDEV49("code",{content:source??"",filetype,syntaxStyle,style:{flexGrow:1}},void 0,!1,void 0,this):jsxDEV49("text",{fg:active?theme.text:theme.muted,children:fitText(source??"",width-14)},void 0,!1,void 0,this)]},lineNo,!0,void 0,this)}),vars.length>0?jsxDEV49("box",{style:{flexDirection:"column",paddingTop:1},children:[jsxDEV49("text",{fg:theme.muted,children:"Local variables"},void 0,!1,void 0,this),vars.map(([name,value])=>jsxDEV49("text",{fg:theme.muted,children:fitText(` ${name} = ${formatVar(value)}`,width-6)},name,!1,void 0,this))]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function formatVar(value){if(typeof value==="string")return value;try{return JSON.stringify(value)??String(value)}catch{return String(value)}}import{useEffect as useEffect30,useRef as useRef21,useState as useState26}from"h:0__";function useIssueEvent(client2,{org,issueId,eventId="latest",reloadToken=0}){let[event,setEvent]=useState26(idle),eventRef=useRef21(event);eventRef.current=event;let lastIssueId=useRef21(null);return useEffect30(()=>{if(!client2||!issueId){lastIssueId.current=null,setEvent(idle());return}let controller=new AbortController,cancelled=!1,sameIssue=lastIssueId.current===issueId;return lastIssueId.current=issueId,setEvent(startLoading(sameIssue?eventRef.current:idle(),Date.now())),(async()=>{try{let result=await fetchIssueEvent(client2,{org,issueId,eventId,signal:controller.signal});if(cancelled)return;setEvent(resolved(result,Date.now()))}catch(error){if(cancelled||controller.signal.aborted)return;setEvent(rejected(eventRef.current,{message:error instanceof Error?error.message:String(error),retryable:error instanceof ApiError?error.retryable:!0}))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,issueId,eventId,reloadToken]),event}import{jsxDEV as jsxDEV50,Fragment as Fragment16}from"h:6___________________________";var SECTION_ORDER=["exception","breadcrumbs","request","tags","contexts","sdk"],SECTION_TITLES={exception:"Stack Trace",breadcrumbs:"Breadcrumbs",request:"Request",tags:"Tags",contexts:"Contexts",sdk:"SDK"},HEADER_SPARKLINE_WIDTH=24,HEADER_SPARKLINE_ROWS=3,SELECTED_FRAME_ID="issue-detail-selected-frame",HEADER_ACTIONS_TOP=8,ISSUE_ACTIONS_COMMAND="sentry.issue.actions";function IssueDetail({client:client2,org,group,width,height,focused,eventId,reloadToken,runIssueAction,openIssueAutofix}){let theme=useTheme(),status=useIssueEvent(client2,{org,issueId:group.id,eventId,reloadToken}),event=valueOf(status),error=errorOf(status),loading=isInitialLoad(status),scrollRef=useRef22(null),[actionsOpen,setActionsOpen]=useState27(!1),{collapsed,toggle}=useSectionFolds(SECTION_ORDER,focused),[selectedFrameKey,setSelectedFrameKey]=useState27(),selectedFrameKeyRef=useRef22(selectedFrameKey),[frameExpansion,setFrameExpansion]=useState27(()=>new Map),frameRows=event?(findEntry(event.entries,"exception")?.data.values??[]).flatMap((value,exceptionIndex)=>buildStackRows(value.stacktrace).filter((row)=>row.kind==="frame").map((row)=>({key:stackFrameKey(event.id,exceptionIndex,row.index),row}))):[],selectedFrame=frameRows.find((frame)=>frame.key===selectedFrameKey)??frameRows[0],defaultExpandedFrame=frameRows[0]?.key,expandedFrames=new Set(frameRows.filter((frame)=>frameExpansion.get(frame.key)??frame.key===defaultExpandedFrame).map((frame)=>frame.key));useLayoutEffect(()=>{if(selectedFrameKey===selectedFrame?.key)return;selectedFrameKeyRef.current=selectedFrame?.key,setSelectedFrameKey(selectedFrame?.key)},[selectedFrame?.key,selectedFrameKey]);let toggleFrame=useCallback26((key)=>{setFrameExpansion((current)=>{let next=new Map(current),expanded=current.get(key)??key===defaultExpandedFrame;return next.set(key,!expanded),next})},[defaultExpandedFrame]),selectFrameAt=useCallback26((position)=>{let next=frameRows[Math.max(0,Math.min(position,frameRows.length-1))];if(!next)return;selectedFrameKeyRef.current=next.key,setSelectedFrameKey(next.key)},[frameRows]),clickFrame=useCallback26((key)=>{let position=frameRows.findIndex((frame)=>frame.key===key);if(position<0)return;selectFrameAt(position),toggleFrame(key)},[frameRows,selectFrameAt,toggleFrame]);useKeyboard7((key)=>{if(!focused)return;if(matchesCommand(ISSUE_ACTIONS_COMMAND,key)){setActionsOpen((open)=>!open),consumeKey(key);return}if(actionsOpen||collapsed.has("exception")||!selectedFrame)return;if(matchesCommand("sentry.nav.down",key)){let current=Math.max(0,frameRows.findIndex((frame)=>frame.key===selectedFrameKeyRef.current));if(current>=frameRows.length-1)return;selectFrameAt(current+1),consumeKey(key);return}if(matchesCommand("sentry.nav.up",key)){let current=Math.max(0,frameRows.findIndex((frame)=>frame.key===selectedFrameKeyRef.current));if(current===0)return;selectFrameAt(current-1),consumeKey(key);return}if(matchesCommand("sentry.nav.open",key)){let liveFrame=frameRows.find((frame)=>frame.key===selectedFrameKeyRef.current)??selectedFrame;toggleFrame(liveFrame.key),consumeKey(key)}}),useEffect31(()=>{scrollRef.current?.scrollChildIntoView(SELECTED_FRAME_ID)},[selectedFrame?.key,frameExpansion,height]);let inner=Math.max(20,width-2),actions=headerActions(group),actionsIndex=actions.findIndex((chip)=>chip.command===ISSUE_ACTIONS_COMMAND),actionsAnchorLeft=BODY_INDENT.length+(chipOffsets(actions)[Math.max(0,actionsIndex)]??0),actionItems=[{value:"sentry.issue.bookmark",label:group.isBookmarked?"Unbookmark":"Bookmark"},...!group.hasSeen?[{value:"sentry.issue.markReviewed",label:"Mark reviewed"}]:[],{value:"autofix",label:"Autofix"}],selectAction=useCallback26((values)=>{let action=values[0];if(setActionsOpen(!1),action==="autofix")openIssueAutofix(group);else if(action)runIssueAction(action,group)},[group,openIssueAutofix,runIssueAction]),pressHeaderAction=useCallback26((chip)=>{if(chip.command===ISSUE_ACTIONS_COMMAND)setActionsOpen((open)=>!open);else runIssueAction(chip.command,group)},[group,runIssueAction]);return jsxDEV50(Fragment16,{children:[jsxDEV50("scrollbox",{ref:scrollRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{width,height,paddingLeft:1},children:[jsxDEV50(IssueHeader,{group,width:inner,actions,actionsOpen,onActionPress:pressHeaderAction},void 0,!1,void 0,this),loading?jsxDEV50("text",{fg:theme.muted,children:`${BODY_INDENT}Loading event\u2026`},void 0,!1,void 0,this):null,error?jsxDEV50("box",{style:{flexDirection:"column",paddingTop:1},children:[jsxDEV50("text",{fg:theme.danger,children:`${BODY_INDENT}Failed to load event`},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:fitText(`${BODY_INDENT}${error.message}`,inner)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,event?SECTION_ORDER.map((key,i)=>jsxDEV50(Section,{index:i+1,title:SECTION_TITLES[key],count:sectionCount(key,event),collapsed:collapsed.has(key),width:inner,onToggle:()=>toggle(key),children:jsxDEV50(SectionBody,{sectionKey:key,event,width:inner,expandedFrames,selectedFrame:selectedFrame?.key,selectedFrameId:SELECTED_FRAME_ID,onFrameClick:clickFrame},void 0,!1,void 0,this)},key,!1,void 0,this)):null]},void 0,!0,void 0,this),actionsOpen?jsxDEV50(Dropdown,{title:"Actions",items:actionItems,selected:[],anchorLeft:actionsAnchorLeft,anchorTop:HEADER_ACTIONS_TOP+CHIP_HEIGHT,availableWidth:width,showAll:!1,showSelection:!1,onSelect:selectAction,onClose:()=>setActionsOpen(!1)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function headerActions(group){return[group.status===GroupStatus.RESOLVED?{command:"sentry.issue.unresolve",label:"unresolve",inlineHotkey:!0}:{command:"sentry.issue.resolve",label:"resolve",inlineHotkey:!0},group.status===GroupStatus.IGNORED?{command:"sentry.issue.archive",label:"unarchive",inlineHotkey:!0}:{command:"sentry.issue.archive",label:"archive",inlineHotkey:!0},{command:ISSUE_ACTIONS_COMMAND,label:"actions",inlineHotkey:!0,caret:!0}]}function headerSparkline(group){let series=group.stats?.["24h"],width=series?.length?Math.min(HEADER_SPARKLINE_WIDTH,series.length):0;return sparklineBlock(series,width||HEADER_SPARKLINE_WIDTH,HEADER_SPARKLINE_ROWS,{floor:!0})}function IssueHeader({group,width,actions,actionsOpen,onActionPress}){let theme=useTheme(),level=theme.level[group.level]??theme.level.unknown,titleWidth=Math.max(12,width-2),chart=headerSparkline(group),chartWidth=Math.max(...chart.map(measureTextWidth));return jsxDEV50("box",{style:{flexDirection:"column",width},children:[jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:level,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV50(Placeholder,{text:issueTitle(group),fallback:"(no title)",width:titleWidth,fg:theme.text,attributes:BOLD},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:level,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV50(Placeholder,{text:issueMessage(group),fallback:"(no error message)",width:titleWidth,fg:theme.muted},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width,paddingTop:1},children:[jsxDEV50("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV50(PlatformIcon,{platform:group.project.platform},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:group.project.slug},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:group.priority?`${group.priority} priority`:"no priority"},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:group.assignedTo?.name??"unassigned"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width,alignItems:"center",paddingTop:1},children:[jsxDEV50("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:"24h "},void 0,!1,void 0,this),jsxDEV50("box",{style:{flexDirection:"column",alignItems:"flex-start",width:chartWidth,flexShrink:0},children:chart.map((row,i)=>jsxDEV50("text",{fg:theme.accent,children:row},i,!1,void 0,this))},void 0,!1,void 0,this),jsxDEV50("text",{children:" "},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:countLabel(group.count,"event")},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:countLabel(group.userCount,"user")},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:`first seen ${timeAgo(group.firstSeen)} ago`},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:`last seen ${timeAgo(group.lastSeen)} ago`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV50(ChipRow,{chips:actions,activeIndex:actionsOpen?actions.length-1:void 0,onPress:onActionPress},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("text",{fg:theme.border,children:"\u2500".repeat(width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sectionCount(key,event){switch(key){case"breadcrumbs":return findEntry(event.entries,"breadcrumbs")?.data.values?.length;case"tags":return event.tags?.length;case"contexts":return Object.keys(event.contexts??{}).length;default:return}}function SectionBody({sectionKey,event,width,expandedFrames,selectedFrame,selectedFrameId,onFrameClick}){let theme=useTheme();switch(sectionKey){case"exception":{let values=findEntry(event.entries,"exception")?.data.values??[];if(values.length===0)return jsxDEV50(Empty,{children:"No exception on this event."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",paddingLeft:BODY_INDENT.length},children:values.map((value,i)=>jsxDEV50(ExceptionSection,{value,traceId:event.id,exceptionIndex:i,width:width-BODY_INDENT.length,expandedFrames,selectedFrame,selectedFrameId,onFrameClick,includeSystemFrames:!1},i,!1,void 0,this))},void 0,!1,void 0,this)}case"breadcrumbs":{let crumbs=findEntry(event.entries,"breadcrumbs")?.data.values??[];if(crumbs.length===0)return jsxDEV50(Empty,{children:"No breadcrumbs."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:crumbs.map((crumb,i)=>jsxDEV50(Crumb,{crumb,width},i,!1,void 0,this))},void 0,!1,void 0,this)}case"request":{let request=findEntry(event.entries,"request")?.data;if(!request?.url)return jsxDEV50(Empty,{children:"No request data."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:[jsxDEV50("text",{fg:theme.text,children:fitText(`${BODY_INDENT}${request.method??"GET"} ${request.url}`,width)},void 0,!1,void 0,this),(request.headers??[]).map(([name,value])=>jsxDEV50(Field,{name,value,width},name,!1,void 0,this))]},void 0,!0,void 0,this)}case"tags":{let tags=event.tags??[];if(tags.length===0)return jsxDEV50(Empty,{children:"No tags."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:tags.map((tag)=>jsxDEV50(Field,{name:tag.key,value:tag.value,width},tag.key,!1,void 0,this))},void 0,!1,void 0,this)}case"contexts":{let contexts=Object.entries(event.contexts??{});if(contexts.length===0)return jsxDEV50(Empty,{children:"No contexts."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:contexts.map(([name,values])=>jsxDEV50(Field,{name,value:summarize(values),width},name,!1,void 0,this))},void 0,!1,void 0,this)}case"sdk":if(!event.sdk)return jsxDEV50(Empty,{children:"Unknown SDK."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:theme.text,children:`${BODY_INDENT}${event.sdk.name}`},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:` ${event.sdk.version}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}}function Crumb({crumb,width}){let theme=useTheme(),time=crumb.timestamp?crumb.timestamp.slice(11,19):"--:--:--",category=crumb.category??crumb.type,message=crumb.message??summarize(crumb.data??{}),used=BODY_INDENT.length+time.length+2+KEY_COLUMN;return jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:theme.subText,children:`${BODY_INDENT}${time} `},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:keyCell(category)},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.text,children:fitText(message,Math.max(0,width-used))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function summarize(values){return Object.entries(values).filter(([key])=>key!=="type").map(([key,value])=>`${key}=${String(value)}`).join(" ")}import{jsxDEV as jsxDEV51}from"h:6___________________________";var SCROLLBAR_GUTTER2=1,TITLE_ROWS2=1;function IssueFeed(props){let{client:client2,org,state,focused,width,height,reloadToken,pendingIds,pushView,activateRow,registerActions}=props,theme=useTheme(),{dispatch}=state,view="screen"in props?getIssueView(props.screen.item):void 0,title="screen"in props?view?.label:props.title,description="screen"in props?view?.description:props.description,onProjectChange="screen"in props?props.onProjectSelect:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),inputRef=useRef23(null),listRef=useRef23(null),open=useCallback27((index)=>{let group=rowsOf(state)[index];if(group)pushView(issueView(group,client2,org))},[state,pushView,client2,org]),closeDropdown=useCallback27(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),inputRefCallback=useCallback27((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents3.FOCUSED),previous.removeAllListeners(RenderableEvents3.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents3.FOCUSED,state.focusSearch),node.on(RenderableEvents3.BLURRED,state.handleSearchBlur)},[state.focusSearch,state.handleSearchBlur]),sort=issueSort(state.sort),{issues,statsLoading,nextCursor,prevCursor,page,nextPage,previousPage}=useIssues(client2,{org,query:state.committedQuery,sort,statsPeriod:state.statsPeriod,project:state.selectedProjects.length>0?state.selectedProjects:void 0,environment:state.selectedEnvs.length>0?state.selectedEnvs:void 0,reloadToken});useScreenActions(registerActions,{open,nextPage,previousPage});let reportedPage=useRef23(page);useEffect32(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]);let loading=issues.state==="loading",since=loadingSince(issues),fetched=valueOf(issues),stored=rowsOf(state),rows=stored.length>0?stored:fetched,error=errorOf(issues),stale=rows!==void 0&&(loading||error!==void 0);useEffect32(()=>{if(fetched)dispatch({type:"setEntries",payload:fetched})},[fetched,dispatch]),useEffect32(()=>{dispatch({type:"setStatus",payload:{loading:loading||statsLoading,since,error:error?.message,noun:"issues"}})},[loading,statsLoading,since,error,issues,dispatch]),useRowScrollFollow(listRef,{index:state.selected,rowCount:rows?.length??0,rowHeight:ROW_HEIGHT,layout:[height]});let hasAssignee=useMemo21(()=>(rows??[]).some((group)=>group.assignedTo?.type==="user"),[rows]),avatars=useMemberAvatars(client2,org,hasAssignee),listWidth=Math.max(20,width-SCROLLBAR_GUTTER2);return jsxDEV51("box",{style:{flexDirection:"column",width,height},children:[title?jsxDEV51("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV51("text",{fg:theme.text,attributes:BOLD,children:title},void 0,!1,void 0,this),description?jsxDEV51("text",{fg:theme.muted,children:` ${fitText(description,Math.max(0,listWidth-measureTextWidth(title)-3))}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null,jsxDEV51("box",{style:{flexDirection:"row",width,flexShrink:0,height:3,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV51(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV51("input",{ref:inputRefCallback,value:state.searchQuery,placeholder:"Search issues\u2026",focused:state.searchFocused,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV51(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS+(title?TITLE_ROWS2:0),onProjectChange,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV51(IssueListHeader,{width:listWidth,selectionBelow:focused&&state.selected===0&&(rows?.length??0)>0},void 0,!1,void 0,this),jsxDEV51("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[rows===void 0&&isInitialLoad(issues)?jsxDEV51(IssueListSkeleton,{width:listWidth,rows:PAGE_SIZE},void 0,!1,void 0,this):null,rows!==void 0&&rows.length===0&&!loading?jsxDEV51(IssueListEmpty,{query:state.committedQuery},void 0,!1,void 0,this):null,rows?.map((group,index)=>jsxDEV51(IssueRow,{group,selected:focused&&index===state.selected,selectionBelow:focused&&index+1===state.selected,width:listWidth,pending:pendingIds.has(group.id),assigneeAvatarUrl:assigneeAvatarUrl(group.assignedTo,avatars),onClick:()=>activateRow(index)},group.id,!1,void 0,this)),error&&rows===void 0?jsxDEV51(IssueListError,{error},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),stale?jsxDEV51("text",{fg:theme.muted,children:error?` \u26A0 ${fitText(error.message,listWidth-3)}`:""},void 0,!1,void 0,this):null,jsxDEV51(ResultFooter,{count:rows?.length,noun:"issue",hasMore:nextCursor!==null,pagination:nextCursor!==null||prevCursor!==null||page>1?{page,hasPrevious:page>1&&prevCursor!==null,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function issueView(group,client2,org){return{id:`issue:${group.id}`,sentryLocation:{screen:"issues.feed",detail:{kind:"issue",issueId:group.id}},label:group.shortId,issue:group,render:(ctx)=>jsxDEV51(IssueDetail,{client:client2,org,group:ctx.issue??group,width:ctx.width,height:ctx.height,focused:ctx.focused,reloadToken:ctx.reloadToken,runIssueAction:ctx.runIssueAction,openIssueAutofix:ctx.openIssueAutofix},void 0,!1,void 0,this)}}var loadIssue=(client2,{org,id,signal})=>fetchIssue(client2,{org,issueId:id,signal});function issueUrlView(issueId,eventId){return{id:`issue:${issueId}`,sentryLocation:{screen:"issues.feed",detail:{kind:"issue",issueId,eventId}},label:`Issue ${issueId}`,render:(ctx)=>jsxDEV51(IssueFromUrl,{...ctx,issueId,eventId},void 0,!1,void 0,this)}}function IssueFromUrl({client:client2,org,issueId,eventId,reloadToken,width,height,focused,updateView,issue,runIssueAction,openIssueAutofix}){let status=useDirectResource(client2,{org,id:issueId,reloadToken,load:loadIssue}),group=valueOf(status);if(useEffect32(()=>{if(group)updateView(`issue:${issueId}`,{label:group.shortId,issue:group})},[group,issueId,updateView]),!group)return jsxDEV51(DirectDetailStatus,{status,noun:"issue",width,height},void 0,!1,void 0,this);return jsxDEV51(IssueDetail,{client:client2,org,group:issue??group,eventId,width,height,focused,reloadToken,runIssueAction,openIssueAutofix},void 0,!1,void 0,this)}import{useCallback as useCallback28,useEffect as useEffect35}from"h:0__";import{useEffect as useEffect34,useMemo as useMemo22,useRef as useRef25}from"h:0__";import{useEffect as useEffect33,useRef as useRef24,useState as useState28}from"h:0__";function useGroupSearchViews(client2,{org,sort,reloadToken=0}){let[sections,setSections]=useState28(idle),[nextCursors,setNextCursors]=useState28({mine:null,others:null}),sectionsRef=useRef24(sections);return sectionsRef.current=sections,useEffect33(()=>{if(!client2)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setSections(startLoading(sectionsRef.current,Date.now())),(async()=>{try{let[mine,others]=await Promise.all([listGroupSearchViews(client2,{org,createdBy:"me",sort,signal}),listGroupSearchViews(client2,{org,createdBy:"others",sort,signal})]);if(cancelled)return;setNextCursors({mine:mine.nextCursor,others:others.nextCursor}),setSections(resolved([{title:"Created by Me",views:mine.data},{title:"Created by Others",views:others.data}],Date.now()))}catch(error){if(cancelled||signal.aborted)return;setSections(rejected(sectionsRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,sort,reloadToken]),{sections,nextCursors}}import{jsxDEV as jsxDEV52}from"h:6___________________________";var ROW_HEIGHT2=1,COL_NAME=26,COL_LAST_VIEWED=10,COL_STARS=6,SCROLLBAR_GUTTER3=1;function IssueViewsList({client:client2,org,width,height,focused,selectedIndex,sort:sortValue,openDropdown,onSortChange,onDropdownOpen,onDropdownClose,onRowsChange,onStatusChange,reloadToken}){let theme=useTheme(),listRef=useRef25(null),sort=viewSort(sortValue),{sections:status,nextCursors}=useGroupSearchViews(client2,{org,sort,reloadToken}),sections=valueOf(status),error=errorOf(status),loading=status.state==="loading",rows=useMemo22(()=>(sections??[]).flatMap((section)=>section.views.map((view)=>({view,projectIds:view.projects.filter((id)=>id!==-1).map(String),statsPeriod:view.timeFilters?.period??DEFAULT_STATS_PERIOD}))),[sections]);useEffect34(()=>{onRowsChange?.(rows)},[rows,onRowsChange]),useEffect34(()=>{onStatusChange?.({loading,error:error?.message})},[loading,error,onStatusChange]),useRowScrollFollow(listRef,{index:selectedIndex,rowCount:rows.length,rowHeight:ROW_HEIGHT2,layout:[height]});let listWidth=Math.max(20,width-SCROLLBAR_GUTTER3),rowIndex=-1;return jsxDEV52("box",{style:{flexDirection:"column",width,height},children:[jsxDEV52("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV52("text",{fg:theme.text,attributes:BOLD,children:"All Views"},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.muted,children:" Saved issue searches for this organization."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV52(SortBar,{value:sort,items:VIEW_SORT_OPTIONS,open:openDropdown==="sort",width,anchorTop:1,onChange:onSortChange,onOpen:onDropdownOpen,onClose:onDropdownClose},void 0,!1,void 0,this),jsxDEV52("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[sections===void 0&&isInitialLoad(status)?jsxDEV52("text",{fg:theme.muted,children:" Loading views\u2026"},void 0,!1,void 0,this):null,error&§ions===void 0?jsxDEV52("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV52("text",{fg:theme.danger,children:"Failed to load views"},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,sections?.map((section)=>jsxDEV52("box",{style:{flexDirection:"column",width:listWidth},children:[jsxDEV52("text",{fg:theme.muted,attributes:BOLD,children:` ${section.title}`},void 0,!1,void 0,this),section.views.length===0?jsxDEV52("text",{fg:theme.subText,children:" No saved views."},void 0,!1,void 0,this):null,section.views.map((view)=>(rowIndex+=1,jsxDEV52(ViewRow,{view,width:listWidth,selected:focused&&rowIndex===selectedIndex},view.id,!1,void 0,this)))]},section.title,!0,void 0,this))]},void 0,!0,void 0,this),jsxDEV52(ResultFooter,{count:sections===void 0?void 0:rows.length,noun:"view",hasMore:nextCursors.mine!==null||nextCursors.others!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ViewRow({view,width,selected}){let theme=useTheme(),cursor=selected?"\u276F":" ",star=view.starred?"\u2605":" ",fixed=2+COL_NAME+COL_LAST_VIEWED+COL_STARS+3,queryWidth=Math.max(6,width-fixed);return jsxDEV52("box",{style:{flexDirection:"row",width,backgroundColor:selected?theme.panel:void 0},children:[jsxDEV52("text",{fg:theme.accent,children:cursor},void 0,!1,void 0,this),jsxDEV52("text",{fg:view.starred?theme.warning:theme.muted,children:star},void 0,!1,void 0,this),jsxDEV52("text",{fg:selected?theme.text:theme.subText,attributes:selected?BOLD:0,children:` ${padText(view.name,COL_NAME)}`},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.muted,children:` ${padText(fitText(view.query,queryWidth),queryWidth)}`},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.subText,children:` ${padText(view.lastVisited?timeAgo(view.lastVisited):"\u2014",COL_LAST_VIEWED,"right")}`},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.subText,children:padText(`${view.stars}\u2605`,COL_STARS,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV53}from"h:6___________________________";function IssueViews(props){let{client:client2,org,state,focused,width,height,reloadToken,pushView,registerActions}=props,{dispatch}=state,open=useCallback28((index)=>{let row=rowsOf(state)[index];if(row)pushView(savedViewStream(row))},[state,pushView]);useScreenActions(registerActions,{open});let handleStatus=useCallback28((status)=>dispatch({type:"setStatus",payload:{...status,noun:"saved views"}}),[dispatch]);return jsxDEV53(IssueViewsList,{client:client2,org,width,height,focused,selectedIndex:state.selected,sort:state.sort,openDropdown:state.openDropdown,onSortChange:(sort)=>dispatch({type:"setSort",payload:sort}),onDropdownOpen:()=>dispatch({type:"setOpenDropdown",payload:"sort"}),onDropdownClose:()=>dispatch({type:"setOpenDropdown",payload:null}),onRowsChange:(rows)=>dispatch({type:"setEntries",payload:rows}),onStatusChange:handleStatus,reloadToken},void 0,!1,void 0,this)}function savedViewStream(row){return{id:`saved-view:${row.view.id}`,sentryLocation:{screen:"issues.all-views",detail:{kind:"issue_view",viewId:row.view.id}},label:row.view.name,stateKey:SAVED_VIEW_STATE_KEY,initialState:{query:row.view.query,sort:row.view.querySort,statsPeriod:row.statsPeriod,selectedProjects:row.projectIds,selectedEnvs:row.view.environments},render:(ctx)=>ctx.state?jsxDEV53(IssueFeed,{...ctx,state:ctx.state,title:row.view.name,description:row.view.query},void 0,!1,void 0,this):null}}var loadSavedView2=(client2,{org,id,signal})=>fetchGroupSearchView(client2,{org,viewId:id,signal});function savedViewUrlStream(viewId){return{id:`saved-view:${viewId}`,label:`View ${viewId}`,stateKey:SAVED_VIEW_STATE_KEY,sentryLocation:{screen:"issues.all-views",detail:{kind:"issue_view",viewId}},render:(ctx)=>ctx.state?jsxDEV53(SavedViewFromUrl,{...ctx,state:ctx.state,viewId},void 0,!1,void 0,this):null}}function SavedViewFromUrl({client:client2,org,state,viewId,reloadToken,width,height,updateView,...ctx}){let status=useDirectResource(client2,{org,id:viewId,reloadToken,load:loadSavedView2}),view=valueOf(status);if(useEffect35(()=>{if(!view)return;state.dispatch({type:"seed",payload:{query:view.query,sort:view.querySort,statsPeriod:view.timeFilters.period??void 0,selectedProjects:view.projects.filter((id)=>id!==-1).map(String),selectedEnvs:view.environments}}),updateView(`saved-view:${viewId}`,{label:view.name})},[state.dispatch,updateView,view,viewId]),!view)return jsxDEV53(DirectDetailStatus,{status,noun:"saved view",width,height},void 0,!1,void 0,this);return jsxDEV53(IssueFeed,{...ctx,client:client2,org,state,reloadToken,width,height,updateView,title:view.name,description:view.query},void 0,!1,void 0,this)}import{useCallback as useCallback30,useEffect as useEffect40,useMemo as useMemo26,useRef as useRef29}from"h:0__";var TIMELINE_PENDING_GLYPH="\u254C",CRON_GLYPHS={ok:"\u2584",missed:"\u2591",timeout:"\u2592",in_progress:"\u2593",error:"\u2588",unknown:"?"},CRON_LABELS={ok:"Okay",error:"Failed",in_progress:"In Progress",missed:"Missed",timeout:"Timed Out",unknown:"Unknown"},CRON_TIMELINE={precedence:["unknown","error","timeout","missed","ok","in_progress"],glyphs:CRON_GLYPHS,labels:CRON_LABELS},UPTIME_GLYPHS={success:"\u2584",missed_window:"?",failure:"\u2593",failure_incident:"\u2588"},UPTIME_LABELS={success:"Uptime",failure:"Failure",failure_incident:"Downtime",missed_window:"Unknown"},UPTIME_TIMELINE={precedence:["failure_incident","failure","success","missed_window"],glyphs:UPTIME_GLYPHS,labels:UPTIME_LABELS};function resolutionForWidth(windowSeconds,width){if(!Number.isFinite(windowSeconds)||!Number.isFinite(width))return 60;if(windowSeconds<=0||width<=0)return 60;return Math.max(60,Math.ceil(windowSeconds/Math.floor(width)))}function foldCheckIns(buckets,{width,since,until,config}){let cellCount=Math.max(0,Math.floor(width));if(cellCount===0)return[];let span=until>since?until-since:0,cellSpan=span/cellCount,cells=Array.from({length:cellCount},(_,index)=>({status:null,glyph:"\xB7",total:0,counts:{},start:since+Math.round(index*cellSpan),end:since+Math.round((index+1)*cellSpan)}));if(span>0)for(let bucket of buckets??[]){let timestamp=bucket?.[0],counts=bucket?.[1];if(typeof timestamp!=="number"||!Number.isFinite(timestamp)||!counts)continue;let index=Math.min(cellCount-1,Math.max(0,Math.floor((timestamp-since)/span*cellCount)));addCounts(cells[index],counts)}for(let cell of cells)resolveCell(cell,config);return cells}function summariseTimeline(cells,config){return config.precedence.map((status)=>({status,label:config.labels[status],count:cells.reduce((sum,cell)=>sum+(cell.counts[status]??0),0)})).filter((entry)=>entry.count>0)}function addCounts(cell,counts){for(let[status,count]of Object.entries(counts)){if(typeof count!=="number"||!Number.isFinite(count)||count<=0)continue;cell.counts[status]=(cell.counts[status]??0)+count,cell.total+=count}}function resolveCell(cell,config){if(cell.total===0)return;let status=config.precedence.find((candidate)=>(cell.counts[candidate]??0)>0);if(status===void 0){cell.glyph="?";return}cell.status=status,cell.glyph=config.glyphs[status]??"?"}function recordEntries(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)?Object.entries(value):[]}function normalizeStatusCounts(value){let counts={};for(let[status,count]of recordEntries(value))if(typeof count==="number"&&Number.isFinite(count))counts[status]=count;return counts}function normalizeUptimeBucket(value){if(!Array.isArray(value)||value.length!==2||typeof value[0]!=="number"||!Number.isFinite(value[0]))return;return[value[0],normalizeStatusCounts(value[1])]}function normalizeCronBucket(value){if(!Array.isArray(value)||value.length!==2||typeof value[0]!=="number"||!Number.isFinite(value[0]))return;let environments={};for(let[environment,counts]of recordEntries(value[1]))environments[environment]=normalizeStatusCounts(counts);return[value[0],environments]}function normalizeBucketRecord(value,normalizeBucket){let stats={};for(let[id,rawBuckets]of recordEntries(value)){let buckets=[];if(Array.isArray(rawBuckets))for(let rawBucket of rawBuckets){let bucket=normalizeBucket(rawBucket);if(bucket!==void 0)buckets.push(bucket)}stats[id]=buckets}return stats}var MAX_UPTIME_DETECTORS_PER_REQUEST=100,DEFAULT_TIMELINE_WINDOW_SECONDS=86400;function timelineWindowSeconds(statsPeriod){let minutes=statsPeriodMinutes(statsPeriod);if(minutes===void 0||minutes<=0)return DEFAULT_TIMELINE_WINDOW_SECONDS;return Math.floor(minutes*60)}function timelineWindow(width,{windowSeconds=DEFAULT_TIMELINE_WINDOW_SECONDS,now=Date.now()}={}){let until=Math.floor(now/1000);return{since:until-windowSeconds,until,resolution:resolutionForWidth(windowSeconds,width)}}var UPTIME_RESOLUTIONS_SECONDS=[60,120,300,600,900,1800,3600,7200,10800,14400,21600,43200,86400];function uptimeResolution(resolution){if(!Number.isFinite(resolution))return UPTIME_RESOLUTIONS_SECONDS[0];let allowed=UPTIME_RESOLUTIONS_SECONDS,snapped=allowed[0];for(let candidate of allowed)if(candidate<=resolution)snapped=candidate;return snapped}function windowQuery({since,until,resolution}){return{since,until,resolution:`${resolution}s`}}async function fetchMonitorStats(client2,{org,monitors,project,environment,signal,...window}){if(monitors.length===0)return{};let page=await client2.request(`/organizations/${org}/monitors-stats/`,{query:{monitor:[...monitors],project:projectParams(project),environment:environment?[...environment]:void 0,...windowQuery(window)},signal});return normalizeBucketRecord(page.data,normalizeCronBucket)}async function fetchUptimeStats(client2,{org,detectorIds,signal,...window}){let ids=[...new Set(detectorIds)].slice(0,MAX_UPTIME_DETECTORS_PER_REQUEST);if(ids.length===0)return{};let page=await client2.request(`/organizations/${org}/uptime-stats/`,{query:{uptimeDetectorId:ids,...windowQuery({...window,resolution:uptimeResolution(window.resolution)})},signal});return normalizeBucketRecord(page.data,normalizeUptimeBucket)}function selectEnvironment(buckets,environment){return(buckets??[]).map(([timestamp,environments])=>{if(environment!==void 0)return[timestamp,environments[environment]??{}];let totals={};for(let counts of Object.values(environments??{}))for(let[status,count]of Object.entries(counts??{}))totals[status]=(totals[status]??0)+count;return[timestamp,totals]})}var EXCLUDED_DETECTOR_TYPE=DETECTOR_TYPE.issueStream,MONITOR_LIST_VIEWS={"monitors.all":{title:"All Monitors",description:"Everything watching this organization.",searchPlaceholder:"Search monitors by name, type or assignee\u2026",emptyTitle:"No monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise nothing is being monitored yet \u2014 create a monitor on sentry.io, as this client is read-only."]},"monitors.mine":{title:"My Monitors",description:"Monitors assigned to you or your teams.",assignee:"[me,my_teams]",searchPlaceholder:"Search your monitors\u2026",emptyTitle:"No monitors assigned to you.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise nothing here is assigned to you or to a team you are on."]},"monitors.error":{title:"Error",description:"The per-project detectors that turn errors into issues.",type:DETECTOR_TYPE.error,searchPlaceholder:"Search error monitors\u2026",emptyTitle:"No error monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Error monitors are created by Sentry, one per project \u2014 an org with projects should have some."]},"monitors.metric":{title:"Metric",description:"Thresholds and anomalies over a metric.",type:DETECTOR_TYPE.metric,searchPlaceholder:"Search metric monitors\u2026",emptyTitle:"No metric monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise no metric monitor has been created yet."]},"monitors.cron":{title:"Cron",description:"Scheduled jobs that check in when they run.",type:DETECTOR_TYPE.cron,searchPlaceholder:"Search cron monitors\u2026",emptyTitle:"No cron monitors found.",emptyLines:["This organization may not have crons enabled.","Otherwise no job is checking in yet \u2014 a cron monitor is created by its first check-in."]},"monitors.uptime":{title:"Uptime",description:"URLs Sentry checks on a schedule.",type:DETECTOR_TYPE.uptime,searchPlaceholder:"Search uptime monitors\u2026",emptyTitle:"No uptime monitors found.",emptyLines:["This organization may not have uptime monitoring enabled.","Otherwise no URL is being checked yet."]},"monitors.mobile-build":{title:"Mobile Build",description:"Size regressions in mobile builds.",type:DETECTOR_TYPE.mobileBuild,searchPlaceholder:"Search mobile build monitors\u2026",emptyTitle:"No mobile build monitors found.",emptyLines:["This organization may not have build size analysis (preprod) enabled.","Otherwise no build size monitor has been created yet."]}};function getMonitorListView(id){return MONITOR_LIST_VIEWS[id]}function buildDetectorQuery(view,userQuery=""){let parts=[`!type:${EXCLUDED_DETECTOR_TYPE}`];if(view?.type)parts.push(`type:${view.type}`);if(view?.assignee)parts.push(`assignee:${view.assignee}`);let trimmed=userQuery.trim();if(trimmed)parts.push(trimmed);return parts.join(" ")}import{useEffect as useEffect36,useMemo as useMemo23,useRef as useRef26,useState as useState29}from"h:0__";function useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width,statsPeriod,project,environment,reloadToken=0}){let[status,setStatus]=useState29(idle),statusRef=useRef26(status);statusRef.current=status;let monitorKey=useMemo23(()=>[...new Set(monitorIds)].sort().join(","),[monitorIds]),uptimeKey=useMemo23(()=>[...new Set(uptimeDetectorIds)].sort().join(","),[uptimeDetectorIds]),projectKey=useMemo23(()=>(project??[]).join(","),[project]),environmentKey=useMemo23(()=>(environment??[]).join(","),[environment]),windowSeconds=timelineWindowSeconds(statsPeriod),resolution=timelineWindow(width,{windowSeconds}).resolution;return useEffect36(()=>{if(!client2)return;let monitors=monitorKey?monitorKey.split(","):[],detectors=uptimeKey?uptimeKey.split(","):[],window=timelineWindow(width,{windowSeconds});if(monitors.length===0&&detectors.length===0){setStatus(idle);return}let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let[monitorStats,uptimeStats]=await Promise.all([fetchMonitorStats(client2,{org,monitors,project:projectKey?projectKey.split(","):void 0,environment:environmentKey?environmentKey.split(","):void 0,signal,...window}),fetchUptimeStats(client2,{org,detectorIds:detectors,signal,...window})]);if(cancelled)return;setStatus(resolved({window,monitors:monitorStats,uptime:uptimeStats},Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,monitorKey,uptimeKey,projectKey,environmentKey,windowSeconds,resolution,reloadToken]),status}function cronBuckets(stats,monitorId,environment){if(!stats||!monitorId)return;return selectEnvironment(stats.monitors[monitorId],environment)}function uptimeBuckets(stats,detectorId){if(!stats||!detectorId)return;return stats.uptime[detectorId]??[]}import{useCallback as useCallback29}from"h:0__";function useDetectors(client2,{org,query,sortBy,project,reloadToken=0}){let loader=useCallback29((cursor,signal)=>{if(!client2)return null;return listDetectors(client2,{org,query,sortBy,project,cursor,signal}).then((page)=>({data:Array.isArray(page.data)?page.data:[],nextCursor:page.nextCursor}))},[client2,org,query,sortBy,project]),pages=useCursorPages(loader,reloadToken);return{detectors:mapAsyncStatus(pages.status,(page)=>page.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}import{useEffect as useEffect39,useMemo as useMemo25}from"h:0__";var WORKFLOW_SORT_OPTIONS=[{value:"-lastTriggered",label:"Last Triggered (newest)"},{value:"lastTriggered",label:"Last Triggered (oldest)"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-actions",label:"Most Actions"},{value:"actions",label:"Fewest Actions"},{value:"-connectedDetectors",label:"Most Monitors"},{value:"connectedDetectors",label:"Fewest Monitors"}],DEFAULT_WORKFLOW_SORT="-lastTriggered";function workflowSort(value){return WORKFLOW_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_WORKFLOW_SORT}var WORKFLOWS_PAGE_SIZE=50;async function listWorkflows(client2,{org,detector,query,project,sortBy=DEFAULT_WORKFLOW_SORT,limit=WORKFLOWS_PAGE_SIZE,cursor,signal}){let page=await fetchPage_listOrganizationWorkflows({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{detector:detector?.map(Number),query:query||void 0,project:projectParams(project),sortBy,per_page:limit}},cursor);return client2.generatedPage({...page,data:workflowsFromResponse(page.data)})}function workflowsFromResponse(data){return Array.isArray(data)?data:[]}var ACTION_LABELS={vsts:"Azure DevOps",discord:"Discord",email:"Email",github:"GitHub",github_enterprise:"GitHub Enterprise",jira:"JIRA",jira_server:"JIRA Server",msteams:"Teams",opsgenie:"Opsgenie",pagerduty:"Pagerduty",plugin:"Plugin",sentry_app:"Sentry App",slack:"Slack",slack_staging:"Slack (Staging)",webhook:"Webhook"};function actionTypeLabel(type){return ACTION_LABELS[type]??type}function workflowActionTypes(workflow){let seen=new Set;for(let group of workflow.actionFilters??[])for(let action of group.actions??[])if(action?.type)seen.add(action.type);return[...seen]}var DAY_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],DAY_ALIASES={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December"],MONTH_ALIASES={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},MACROS={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *"};function crontabAsText(expression){let fields=(MACROS[expression.trim().toLowerCase()]??expression).trim().split(/\s+/),[minute,hour,dayOfMonth,month,dayOfWeek]=fields.length===6?fields.slice(1):fields;if(!minute||!hour||!dayOfMonth||!month||!dayOfWeek)return;let everyDate=dayOfMonth==="*"&&month==="*",everyDay=everyDate&&dayOfWeek==="*";if(minute==="*"&&hour==="*"&&everyDay)return"Every minute";let minuteStep=stepOf(minute);if(minuteStep!==void 0&&hour==="*"&&everyDay)return`Every ${plural(minuteStep,"minute")}`;let minuteAt=numberOf(minute);if(minuteAt===void 0)return;let hourStep=stepOf(hour);if(hourStep!==void 0&&everyDay)return`Every ${plural(hourStep,"hour")} at :${pad(minuteAt)}`;if(hour==="*"&&everyDay)return`Every hour at :${pad(minuteAt)}`;let hourAt=numberOf(hour);if(hourAt===void 0)return;let at=`at ${pad(hourAt)}:${pad(minuteAt)}`;if(everyDay)return`Every day ${at}`;if(everyDate){let days=dayList(dayOfWeek);return days?`Every ${days} ${at}`:void 0}if(dayOfWeek!=="*")return;let dayAt=numberOf(dayOfMonth);if(dayAt===void 0)return;if(month==="*")return`Day ${dayAt} of every month ${at}`;let monthAt=monthNumber(month);if(monthAt===void 0)return;return`${MONTH_NAMES[monthAt-1]} ${dayAt} ${at}`}function intervalAsText(value,unit){return`Every ${plural(value,unit)}`}function plural(value,unit){if(value===1)return unit;return`${value} ${unit}s`}function pad(value){return String(value).padStart(2,"0")}function stepOf(field2){let match=field2.match(/^\*\/(\d+)$/);if(!match)return;let step=Number(match[1]);return step>0?step:void 0}function numberOf(field2){return/^\d+$/.test(field2)?Number(field2):void 0}function monthNumber(field2){let numeric=numberOf(field2);if(numeric!==void 0)return numeric>=1&&numeric<=12?numeric:void 0;return MONTH_ALIASES[field2.toLowerCase().slice(0,3)]}function dayList(field2){let range=field2.match(/^([^-]+)-([^-]+)$/);if(range){let from=dayName(range[1]),to=dayName(range[2]);return from&&to?`${from}\u2013${to}`:void 0}let names=field2.split(",").map((part)=>dayName(part));if(names.some((name)=>name===void 0))return;if(names.length===1)return names[0];return`${names.slice(0,-1).join(", ")} and ${names.at(-1)}`}function dayName(token){let trimmed=token.trim(),numeric=numberOf(trimmed);if(numeric!==void 0)return DAY_NAMES[numeric===7?0:numeric];let alias=DAY_ALIASES[trimmed.toLowerCase().slice(0,3)];return alias===void 0?void 0:DAY_NAMES[alias]}var DETAIL_VALUE_WIDTH=40,DETAIL_SEPARATOR=" \u2502 ",TYPE_LABELS={[DETECTOR_TYPE.error]:"Error",[DETECTOR_TYPE.metric]:"Metric",[DETECTOR_TYPE.cron]:"Cron",[DETECTOR_TYPE.uptime]:"Uptime",[DETECTOR_TYPE.issueStream]:"Project",[DETECTOR_TYPE.mobileBuild]:"Mobile Build"};function detectorTypeLabel(type){return TYPE_LABELS[type]??"Unknown"}function detectorAssigneeLabel(owner){if(!owner)return"\u2014";let name=owner.name||owner.email;if(!name)return"\u2014";return owner.type==="team"&&!name.startsWith("#")?`#${name}`:name}function metricQuery(detector){return detector.dataSources?.find((candidate)=>candidate.type==="snuba_query_subscription")?.queryObj?.snubaQuery}function uptimeSubscription(detector){return detector.dataSources?.find((candidate)=>candidate.type==="uptime_subscription")?.queryObj??void 0}function cronMonitor(detector){return detector.dataSources?.find((candidate)=>candidate.type==="cron_monitor")?.queryObj??void 0}function detectorDetailParts(detector,{projectSlug}={}){let parts=[];if(projectSlug)parts.push(projectSlug);switch(detector.type){case DETECTOR_TYPE.metric:parts.push(...metricDetailParts(detector));break;case DETECTOR_TYPE.uptime:parts.push(...uptimeDetailParts(detector));break;case DETECTOR_TYPE.cron:{let schedule=cronScheduleText(cronMonitor(detector)?.config);if(schedule)parts.push(schedule);break}case DETECTOR_TYPE.mobileBuild:{let preprod=preprodThresholdText(detector);if(preprod)parts.push(preprod);break}default:break}return parts}function metricDetailParts(detector){let parts=[],query=metricQuery(detector);if(query){if(query.environment)parts.push(query.environment);if(query.aggregate)parts.push(query.aggregate);if(query.query)parts.push(middleEllipsis(query.query,DETAIL_VALUE_WIDTH))}let threshold=metricThresholdText(detector);if(threshold)parts.push(threshold);return parts}function uptimeDetailParts(detector){let subscription=uptimeSubscription(detector);if(!subscription)return[];let parts=[];if(subscription.url)parts.push(middleEllipsis(subscription.url,DETAIL_VALUE_WIDTH));let interval=subscription.intervalSeconds;if(typeof interval==="number"&&interval>0)parts.push(`Every ${durationText(interval)}`);return parts}function cronScheduleText(config){let schedule=config?.schedule;if(schedule===void 0)return;if(Array.isArray(schedule)){let[value,unit]=schedule;if(typeof value!=="number"||!unit)return;return intervalAsText(value,unit)}if(typeof schedule!=="string"||schedule.trim()==="")return;return crontabAsText(schedule)??schedule}function preprodThresholdText(detector){let{measurement,thresholdType}=detector.config??{};return[measurement,thresholdType].filter(Boolean).join(" ")||void 0}var CONDITION_SYMBOLS={gt:">",gte:">=",lt:"<",lte:"<=",eq:"=",ne:"!="},PRIORITY_LABELS={25:"low",50:"medium",75:"high"};function metricThresholdText(detector){let conditions=detector.conditionGroup?.conditions;if(!conditions?.length)return;let detectionType=detector.config?.detectionType??"static";if(detectionType==="dynamic")return"Dynamic";if(detectionType==="percent"){let window=durationText(detector.config?.comparisonDelta??3600);return conditions.map((condition)=>percentConditionText(condition,window)).filter(Boolean).join(", ")||void 0}let unit=thresholdSuffix(metricQuery(detector)?.aggregate??"count()");return conditions.map((condition)=>staticConditionText(condition,unit)).filter(Boolean).join(", ")||void 0}function staticConditionText(condition,unit){let priority=priorityOf(condition);if(!priority)return;if(typeof condition.comparison!=="number"&&typeof condition.comparison!=="string")return;return`${CONDITION_SYMBOLS[condition.type]??condition.type}${condition.comparison}${unit} ${priority}`}function percentConditionText(condition,window){if(!priorityOf(condition)||typeof condition.comparison!=="number")return;let comparison=condition.comparison,delta=comparison>=100?comparison-100:100-comparison,direction=comparison>=100?"higher":"lower";return`${delta}% ${direction} than previous ${window}`}function priorityOf(condition){let level=condition.conditionResult;if(typeof level!=="number"||level===0)return;return PRIORITY_LABELS[level]}var FIELD_TYPED_AGGREGATES=new Set(["any","avg","max","min","p50","p75","p90","p95","p99","p100","percentile","sum"]),MILLISECOND_FIELDS=new Set(["event.timestamp","function.duration","measurements.app_start_cold","measurements.app_start_warm","measurements.fcp","measurements.fid","measurements.fp","measurements.inp","measurements.lcp","measurements.stall_longest_time","measurements.stall_total_time","measurements.time_to_full_display","measurements.time_to_initial_display","measurements.ttfb","measurements.ttfb.requesttime","span.duration","span.self_time","spans.browser","spans.db","spans.http","spans.resource","spans.ui","timestamp","transaction.duration"]),BYTE_FIELDS=new Set(["http.decoded_response_content_length","http.response_content_length","http.response_transfer_size","payload_size"]),SESSION_PERCENTAGE_AGGREGATES=new Set(["abnormal_rate","anr_rate","crash_free_rate","crash_rate","errored_rate","foreground_anr_rate","unhandled_rate","unhealthy_rate"]);function thresholdSuffix(aggregate){let match=aggregate.trim().toLowerCase().match(/^([a-z_][a-z0-9_]*)\((.*)\)$/);if(!match)return"";let fn=match[1];if(SESSION_PERCENTAGE_AGGREGATES.has(fn))return"%";if(fn==="last_seen")return"ms";if(!FIELD_TYPED_AGGREGATES.has(fn))return"";let field2=match[2].split(",",1)[0].trim();if(MILLISECOND_FIELDS.has(field2))return"ms";if(BYTE_FIELDS.has(field2))return"B";return""}function detectorConfigFields(detector){switch(detector.type){case DETECTOR_TYPE.metric:return metricConfigFields(detector);case DETECTOR_TYPE.uptime:return uptimeConfigFields(detector);case DETECTOR_TYPE.cron:return cronConfigFields(detector);case DETECTOR_TYPE.mobileBuild:return preprodConfigFields(detector);default:return[]}}function present(fields){return fields.filter((field2)=>field2!==void 0&&field2.value!=="")}function field2(label,value){if(value===null||value===void 0||value==="")return;return{label,value:String(value)}}function metricConfigFields(detector){let query=metricQuery(detector),window=query?.timeWindow;return present([field2("Aggregate",query?.aggregate),field2("Query",query?.query),field2("Dataset",query?.dataset),field2("Environment",query?.environment),field2("Time window",typeof window==="number"?durationText(window):void 0),field2("Detection",detector.config?.detectionType??"static"),field2("Threshold",metricThresholdText(detector))])}function uptimeConfigFields(detector){let subscription=uptimeSubscription(detector),interval=subscription?.intervalSeconds,timeout=subscription?.timeoutMs,config=detector.config;return present([field2("URL",subscription?.url),field2("Method",subscription?.method),field2("Interval",typeof interval==="number"?`Every ${durationText(interval)}`:void 0),field2("Timeout",typeof timeout==="number"?durationText(timeout/1000):void 0),field2("Environment",config?.environment),field2("Downtime after",failureCount(config?.downtimeThreshold)),field2("Recovers after",successCount(config?.recoveryThreshold))])}function cronConfigFields(detector){let monitor=cronMonitor(detector),config=monitor?.config,environments=(monitor?.environments??[]).map((environment)=>environment.name);return present([field2("Schedule",cronScheduleText(config)),field2("Timezone",config?.timezone),field2("Check-in margin",minutesText(config?.checkin_margin)),field2("Max runtime",minutesText(config?.max_runtime)),field2("Fails after",failureCount(config?.failure_issue_threshold)),field2("Recovers after",successCount(config?.recovery_threshold)),field2("Environments",environments.join(", "))])}function preprodConfigFields(detector){let config=detector.config;return present([field2("Measurement",config?.measurement),field2("Threshold type",config?.thresholdType),field2("Query",config?.query)])}function minutesText(minutes){if(typeof minutes!=="number")return;return minutes===1?"1 minute":`${minutes} minutes`}function failureCount(count){if(typeof count!=="number")return;return count===1?"1 failure":`${count} consecutive failures`}function successCount(count){if(typeof count!=="number")return;return count===1?"1 success":`${count} consecutive successes`}function detectorEnvironment(detector){switch(detector.type){case DETECTOR_TYPE.metric:return metricQuery(detector)?.environment??void 0;case DETECTOR_TYPE.uptime:return detector.config?.environment??void 0;default:return}}import{useEffect as useEffect37,useRef as useRef27,useState as useState30}from"h:0__";function useDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,reloadToken=0}){let[status,setStatus]=useState30(idle),statusRef=useRef27(status);return statusRef.current=status,useEffect37(()=>{if(!client2||!detectorId)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await listDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,signal});if(cancelled)return;setStatus(resolved({rows:Array.isArray(page.data)?page.data:[],nextCursor:page.nextCursor,...page.totalCount===void 0?{}:{totalCount:page.totalCount}},Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,detectorId,statsPeriod,reloadToken]),status}function useDetectorWorkflows(client2,{org,detectorId,reloadToken=0}){let[status,setStatus]=useState30(idle),statusRef=useRef27(status);return statusRef.current=status,useEffect37(()=>{if(!client2||!detectorId)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await listWorkflows(client2,{org,detector:[detectorId],signal});if(cancelled)return;setStatus(resolved(Array.isArray(page.data)?page.data:[],Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,detectorId,reloadToken]),status}import{useEffect as useEffect38,useMemo as useMemo24,useRef as useRef28}from"h:0__";function timelineStylesFor(selectedTheme){let trackColor=selectedTheme.border;return{cron:{config:CRON_TIMELINE,colors:{ok:selectedTheme.success,missed:selectedTheme.muted,timeout:selectedTheme.warning,error:selectedTheme.danger,in_progress:selectedTheme.accent,unknown:selectedTheme.subText},trackColor},uptime:{config:UPTIME_TIMELINE,colors:{success:selectedTheme.success,failure:selectedTheme.danger,failure_incident:selectedTheme.danger,missed_window:selectedTheme.subText},trackColor}}}function timelineWindowLabel(seconds=DEFAULT_TIMELINE_WINDOW_SECONDS){let hours=Math.round(seconds/3600);if(hours<=0)return"Last hour";if(hours===1)return"Last hour";if(hours%24!==0)return`Last ${hours} hours`;let days=hours/24;return days===1?"Last 24 hours":`Last ${days} days`}import{jsxDEV as jsxDEV54}from"h:6___________________________";function CheckInTimeline({buckets,style,width,since,until}){let cells=Math.max(0,Math.floor(width));if(cells===0)return null;if(buckets===void 0)return jsxDEV54("text",{fg:style.trackColor,children:TIMELINE_PENDING_GLYPH.repeat(cells)},void 0,!1,void 0,this);let folded=foldCheckIns(buckets,{width:cells,since,until,config:style.config});return jsxDEV54("text",{children:coalesce(folded,style)},void 0,!1,void 0,this)}function coalesce(cells,style){let spans=[],run="",runColor="",flush=()=>{if(!run)return;spans.push(jsxDEV54("span",{fg:runColor,children:run},spans.length,!1,void 0,this)),run=""};for(let cell of cells){let color=cell.status===null?style.trackColor:style.colors[cell.status];if(color!==runColor)flush(),runColor=color;run+=cell.glyph}return flush(),spans}import{jsxDEV as jsxDEV55,Fragment as Fragment17}from"h:6___________________________";function timelineKindFor(detectorType){if(detectorType===DETECTOR_TYPE.cron)return"cron";if(detectorType===DETECTOR_TYPE.uptime)return"uptime";return}function rowKind(detector){return timelineKindFor(detector.type)}var TIMELINE_MIN_WIDTH=16,TIMELINE_MAX_WIDTH=72,TIMELINE_PANE_SHARE=0.45,ENVIRONMENT_LABEL_MAX_WIDTH=16,ENVIRONMENT_TRACK_MIN_WIDTH=8;function timelineColumnWidth(paneWidth){let share=Math.floor(Math.max(0,paneWidth)*TIMELINE_PANE_SHARE);return Math.max(TIMELINE_MIN_WIDTH,Math.min(TIMELINE_MAX_WIDTH,share))}function timelineDataWidth(kind,columnWidth){return kind==="cron"?environmentTimelineWidths(columnWidth).track:columnWidth}function timelineRowContentHeight(detector){if(rowKind(detector)!=="cron")return 1;return Math.max(1,cronEnvironmentNames(detector).length)}function timelineColumn({stats,failed,width,windowSeconds,theme}){let timelineStyles=timelineStylesFor(theme),displayedWindowSeconds=stats?stats.window.until-stats.window.since:windowSeconds;return{key:"check-ins",label:timelineWindowLabel(displayedWindowSeconds),width,render:(detector,_selected,cellWidth)=>{let kind=rowKind(detector);if(!kind)return jsxDEV55("text",{fg:theme.subText,children:padText("",cellWidth)},void 0,!1,void 0,this);let since=stats?.window.since??0,until=stats?.window.until??0;if(kind==="uptime")return jsxDEV55(CheckInTimeline,{buckets:failed?[]:uptimeBuckets(stats,detector.id),style:timelineStyles.uptime,width:cellWidth,since,until},void 0,!1,void 0,this);let monitorId=cronMonitor(detector)?.id,environments=cronEnvironmentNames(detector);if(environments.length===0)return jsxDEV55(CheckInTimeline,{buckets:failed||!monitorId?[]:cronBuckets(stats,monitorId),style:timelineStyles.cron,width:cellWidth,since,until},void 0,!1,void 0,this);let environmentWidths=environmentTimelineWidths(cellWidth);return jsxDEV55("box",{style:{flexDirection:"column",width:cellWidth},children:environments.map((environment)=>jsxDEV55("box",{style:{flexDirection:"row",width:cellWidth},children:[environmentWidths.label>0?jsxDEV55(Fragment17,{children:[jsxDEV55("text",{fg:theme.subText,children:padText(environment,environmentWidths.label)},void 0,!1,void 0,this),jsxDEV55("text",{children:" ".repeat(environmentWidths.gap)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV55(CheckInTimeline,{buckets:failed||!monitorId?[]:cronBuckets(stats,monitorId,environment),style:timelineStyles.cron,width:environmentWidths.track,since,until},void 0,!1,void 0,this)]},environment,!0,void 0,this))},void 0,!1,void 0,this)}}}function cronEnvironmentNames(detector){let names=(cronMonitor(detector)?.environments??[]).map((environment)=>environment.name).filter((name)=>name.length>0);return[...new Set(names)]}function environmentTimelineWidths(width){let available=Math.max(0,Math.floor(width));if(available<=ENVIRONMENT_TRACK_MIN_WIDTH+1)return{label:0,gap:0,track:available};let gap=1,label=Math.min(ENVIRONMENT_LABEL_MAX_WIDTH,available-ENVIRONMENT_TRACK_MIN_WIDTH-gap);return{label,gap,track:available-label-gap}}function timelineStatsIds(detectors){let monitorIds=[],uptimeDetectorIds=[];for(let detector of detectors??[]){let kind=rowKind(detector);if(kind==="uptime")uptimeDetectorIds.push(detector.id);else if(kind==="cron"){let monitorId=cronMonitor(detector)?.id;if(monitorId)monitorIds.push(monitorId)}}return{monitorIds,uptimeDetectorIds}}import{jsxDEV as jsxDEV56,Fragment as Fragment18}from"h:6___________________________";function hasDetectorTimeline(detector){return timelineKindFor(detector.type)!==void 0}function DetectorTimelineSection({detector,width,client:client2,org,reloadToken,notify}){let theme=useTheme(),timelineStyles=timelineStylesFor(theme),kind=timelineKindFor(detector.type),monitorId=kind==="cron"?cronMonitor(detector)?.id:void 0,monitorIds=useMemo24(()=>monitorId?[monitorId]:[],[monitorId]),uptimeDetectorIds=useMemo24(()=>kind==="uptime"?[detector.id]:[],[kind,detector.id]),trackWidth=Math.max(0,width-BODY_INDENT.length),status=useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width:trackWidth,reloadToken}),stats=valueOf(status),failed=status.state==="error"&&stats===void 0,notified=useRef28(void 0),error=errorOf(status)?.message;if(useEffect38(()=>{if(error&¬ified.current!==error)notify({kind:"warning",text:"check-in history unavailable"});notified.current=error},[error,notify]),!kind)return null;if(kind==="cron"&&!monitorId)return jsxDEV56(Empty,{children:"This monitor has no check-in source."},void 0,!1,void 0,this);let since=stats?.window.since??0,until=stats?.window.until??0;return jsxDEV56("box",{style:{flexDirection:"column",width},children:[jsxDEV56("box",{style:{flexDirection:"row",width},children:[jsxDEV56("text",{fg:theme.muted,children:`${BODY_INDENT}${timelineWindowLabel()}`},void 0,!1,void 0,this),environmentNote(detector,theme)]},void 0,!0,void 0,this),kind==="uptime"?jsxDEV56(Track,{buckets:failed?[]:uptimeBuckets(stats,detector.id),style:timelineStyles.uptime,width:trackWidth,since,until},void 0,!1,void 0,this):jsxDEV56(Track,{buckets:failed?[]:cronBuckets(stats,monitorId),style:timelineStyles.cron,width:trackWidth,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Track({buckets,style,width,since,until}){return jsxDEV56(Fragment18,{children:[jsxDEV56("box",{style:{flexDirection:"row",width:width+BODY_INDENT.length},children:[jsxDEV56("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV56(CheckInTimeline,{buckets,style,width,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV56(Tally,{buckets,style,width,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Tally({buckets,style,width,since,until}){if(!buckets||buckets.length===0)return null;let cells=foldCheckIns(buckets,{width,since,until,config:style.config}),totals=summariseTimeline(cells,style.config);if(totals.length===0)return null;return jsxDEV56("box",{style:{flexDirection:"row",width:width+BODY_INDENT.length},children:[jsxDEV56("text",{children:BODY_INDENT},void 0,!1,void 0,this),totals.map((entry,index)=>jsxDEV56("text",{fg:style.colors[entry.status],children:`${index>0?" \xB7 ":""}${entry.count} ${entry.label}`},entry.status,!1,void 0,this))]},void 0,!0,void 0,this)}function environmentNote(detector,theme){let environments=cronMonitor(detector)?.environments??[];if(environments.length<2)return null;return jsxDEV56("text",{fg:theme.subText,children:` (all ${environments.length} environments)`},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV57,Fragment as Fragment19}from"h:6___________________________";var SECTION_TITLES2={config:"Configuration",timeline:"Check-ins",periods:"Open Periods",alerts:"Connected Alerts",details:"Details"};function monitorDetailView(detector,projectSlug,statsPeriod=DEFAULT_STATS_PERIOD){return{id:`monitor:${detector.id}`,sentryLocation:{screen:"monitors.all",detail:{kind:"monitor",detectorId:detector.id}},label:detector.name,render:(ctx)=>jsxDEV57(MonitorDetail,{...ctx,detector,projectSlug,statsPeriod},void 0,!1,void 0,this)}}var loadDetector2=(client2,{org,id,signal})=>fetchDetector(client2,{org,detectorId:id,signal});function monitorUrlView(detectorId){return{id:`monitor:${detectorId}`,sentryLocation:{screen:"monitors.all",detail:{kind:"monitor",detectorId}},label:`Monitor ${detectorId}`,render:(ctx)=>jsxDEV57(MonitorFromUrl,{...ctx,detectorId},void 0,!1,void 0,this)}}function MonitorFromUrl({client:client2,org,detectorId,reloadToken,width,height,updateView,...ctx}){let status=useDirectResource(client2,{org,id:detectorId,reloadToken,load:loadDetector2}),detector=valueOf(status);if(useEffect39(()=>{if(detector)updateView(`monitor:${detectorId}`,{label:detector.name})},[detector,detectorId,updateView]),!detector)return jsxDEV57(DirectDetailStatus,{status,noun:"monitor",width,height},void 0,!1,void 0,this);return jsxDEV57(MonitorDetail,{...ctx,client:client2,org,detector,projectSlug:detector.latestGroup?.project?.slug,reloadToken,width,height,updateView},void 0,!1,void 0,this)}function MonitorDetail({client:client2,org,detector,projectSlug,statsPeriod=DEFAULT_STATS_PERIOD,width,height,focused,reloadToken,notify,pushView,registerActions}){let theme=useTheme(),latestIssueId=detector.latestGroup?.id;useScreenActions(registerActions,{openDetail:latestIssueId?()=>pushView(issueUrlView(latestIssueId)):void 0});let periods=useDetectorOpenPeriods(client2,{org,detectorId:detector.id,statsPeriod,reloadToken}),workflows=useDetectorWorkflows(client2,{org,detectorId:detector.id,reloadToken}),inner=Math.max(20,width-2),showTimeline=hasDetectorTimeline(detector),order=useMemo25(()=>["config",...showTimeline?["timeline"]:[],"periods","alerts","details"],[showTimeline]),{collapsed,toggle}=useSectionFolds(order,focused),periodPage=valueOf(periods),workflowRows=valueOf(workflows),counts={config:void 0,periods:openPeriodsCount(periodPage),alerts:workflowRows?.length};return jsxDEV57("scrollbox",{focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{width,height,paddingLeft:1},children:[jsxDEV57(MonitorHeader,{detector,projectSlug,width:inner},void 0,!1,void 0,this),order.map((key,index)=>jsxDEV57(Section,{index:index+1,title:SECTION_TITLES2[key],count:counts[key],collapsed:collapsed.has(key),width:inner,onToggle:()=>toggle(key),children:jsxDEV57(SectionBody2,{sectionKey:key,detector,width:inner,client:client2,org,reloadToken,notify,statsPeriod,periods,workflows},void 0,!1,void 0,this)},key,!1,void 0,this))]},void 0,!0,void 0,this)}function MonitorHeader({detector,projectSlug,width}){let theme=useTheme(),bar2=detector.enabled?theme.accent:theme.muted,titleWidth=Math.max(12,width-2);return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:bar2,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.text,attributes:BOLD,children:fitText(detector.name,titleWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:bar2,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:fitText(detector.description||"(no description)",titleWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV57("box",{style:{flexDirection:"row",width,paddingTop:1},children:[jsxDEV57("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV57("text",{fg:detector.enabled?theme.success:theme.muted,children:detector.enabled?"enabled":"disabled"},void 0,!1,void 0,this),jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:detectorTypeLabel(detector.type)},void 0,!1,void 0,this),projectSlug?jsxDEV57(Fragment19,{children:[jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:projectSlug},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:detector.owner?detectorAssigneeLabel(detector.owner):"unassigned"},void 0,!1,void 0,this),jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:lastTriggeredLabel(detector)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV57("text",{fg:theme.border,children:"\u2500".repeat(width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lastTriggeredLabel(detector){let triggered=detector.lastTriggered?timeAgo(detector.lastTriggered):"";if(triggered)return`last triggered ${triggered} ago`;let fired=timeAgo(detector.latestGroup?.lastSeen);return fired?`last issue ${fired} ago`:"never triggered"}function SectionBody2({sectionKey,detector,width,client:client2,org,reloadToken,notify,statsPeriod,periods,workflows}){switch(sectionKey){case"config":{let fields=detectorConfigFields(detector);if(fields.length===0)return detector.type==="error"?jsxDEV57(Empty,{children:"An error monitor has no settings \u2014 every error in its project opens an issue."},void 0,!1,void 0,this):jsxDEV57(Empty,{children:"No configuration was returned for this monitor."},void 0,!1,void 0,this);return jsxDEV57("box",{style:{flexDirection:"column",width},children:fields.map((field3)=>jsxDEV57(Field,{name:field3.label,value:field3.value,width},field3.label,!1,void 0,this))},void 0,!1,void 0,this)}case"timeline":return jsxDEV57(DetectorTimelineSection,{detector,width,client:client2,org,reloadToken,notify},void 0,!1,void 0,this);case"periods":return jsxDEV57(OpenPeriods,{status:periods,statsPeriod,width},void 0,!1,void 0,this);case"alerts":return jsxDEV57(ConnectedAlerts,{status:workflows,width},void 0,!1,void 0,this);case"details":return jsxDEV57(Details,{detector,width,client:client2,org},void 0,!1,void 0,this)}}function OpenPeriods({status,statsPeriod,width}){let page=valueOf(status),error=errorOf(status);if(error)return jsxDEV57(Empty,{children:`Failed to load open periods: ${error.message}`},void 0,!1,void 0,this);if(!page)return jsxDEV57(Empty,{children:"Loading open periods\u2026"},void 0,!1,void 0,this);if(page.rows.length===0)return jsxDEV57(Empty,{children:`No open periods in the last ${statsPeriod}.`},void 0,!1,void 0,this);return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57(Empty,{children:openPeriodsSummary(page,statsPeriod)},void 0,!1,void 0,this),page.rows.map((period)=>jsxDEV57(OpenPeriodRow,{period,width},period.id,!1,void 0,this))]},void 0,!0,void 0,this)}function openPeriodsCount(page){if(!page)return;if(page.totalCount!==void 0&&page.totalCount>page.rows.length)return`${page.rows.length} of ${page.totalCount}`;return page.nextCursor===null?page.rows.length:`${page.rows.length}+`}function openPeriodsSummary(page,statsPeriod){let shown=page.rows.length,hidden=page.totalCount===void 0?void 0:Math.max(0,page.totalCount-shown);if(hidden&&hidden>0)return`Newest ${shown} in the last ${statsPeriod}; ${hidden} older not shown.`;if(page.nextCursor!==null)return`Newest ${shown} in the last ${statsPeriod}; older periods not shown.`;return`All ${shown} in the last ${statsPeriod}, newest first.`}function OpenPeriodRow({period,width}){let theme=useTheme(),open=period.isOpen||!period.end;return jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:theme.subText,children:`${BODY_INDENT}#${period.id} `},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.text,children:dateTimeText(period.start)},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.subText,children:" \u2192 "},void 0,!1,void 0,this),jsxDEV57("text",{fg:open?theme.warning:theme.text,children:open?"ongoing":dateTimeText(period.end)},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:` ${elapsedText(period.start,period.end)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ConnectedAlerts({status,width}){let rows=valueOf(status),error=errorOf(status);if(error)return jsxDEV57(Empty,{children:`Failed to load alerts: ${error.message}`},void 0,!1,void 0,this);if(!rows)return jsxDEV57(Empty,{children:"Loading alerts\u2026"},void 0,!1,void 0,this);if(rows.length===0)return jsxDEV57(Empty,{children:"No alerts are connected to this monitor."},void 0,!1,void 0,this);return jsxDEV57("box",{style:{flexDirection:"column",width},children:rows.map((workflow)=>jsxDEV57(AlertRow,{workflow,width},workflow.id,!1,void 0,this))},void 0,!1,void 0,this)}function AlertRow({workflow,width}){let theme=useTheme(),actions=workflowActionTypes(workflow).map(actionTypeLabel).join(", "),triggered=workflow.lastTriggered?`${timeAgo(workflow.lastTriggered)} ago`:"never",enabled=workflow.enabled!==!1;return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57("box",{style:{flexDirection:"row",width},children:jsxDEV57("text",{fg:enabled?theme.text:theme.muted,children:`${BODY_INDENT}${fitText(workflow.name||`Alert ${workflow.id}`,Math.max(8,width-4))}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:theme.subText,children:`${BODY_INDENT} `},void 0,!1,void 0,this),jsxDEV57("text",{fg:enabled?theme.muted:theme.subText,children:enabled?"enabled":"disabled"},void 0,!1,void 0,this),actions?jsxDEV57(Fragment19,{children:[jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:actions},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:`last fired ${triggered}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Details({detector,width,client:client2,org}){let environment=detectorEnvironment(detector),group=detector.latestGroup,members=useOrganizationMembers(client2,org,Boolean(detector.createdBy)),createdBy=detector.createdBy?members.state==="ready"?members.value.get(detector.createdBy)?.user?.name??"Deactivated user":members.state==="error"?"Unavailable":"Loading\u2026":"Sentry";return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57(Field,{name:"Monitor ID",value:detector.id,width},void 0,!1,void 0,this),environment?jsxDEV57(Field,{name:"Environment",value:environment,width},void 0,!1,void 0,this):null,group?jsxDEV57(Field,{name:"Last issue",value:lastIssueValue(group.title,group.shortId,group.lastSeen),width},void 0,!1,void 0,this):null,jsxDEV57(Field,{name:"Created",value:dateTimeText(detector.dateCreated),width},void 0,!1,void 0,this),jsxDEV57(Field,{name:"Created by",value:createdBy,width},void 0,!1,void 0,this),jsxDEV57(Field,{name:"Last modified",value:dateTimeText(detector.dateUpdated),width},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lastIssueValue(title,shortId4,lastSeen){let age=timeAgo(lastSeen);return[shortId4,title,age?`${age} ago`:void 0].filter(Boolean).join(" \xB7 ")}import{jsxDEV as jsxDEV58}from"h:6___________________________";var MONITOR_MIN_FLEX=22;function rowFg(detector,color,theme){return detector.enabled?color:theme.muted}function monitorColumnSet(theme){return{name:{key:"name",label:"Name",width:"flex",render:(detector,selected,width)=>jsxDEV58("text",{fg:rowFg(detector,selected?theme.text:theme.accent,theme),attributes:selected&&detector.enabled?BOLD:0,children:padText(detector.name,width)},void 0,!1,void 0,this)},type:{key:"type",label:"Type",width:12,priority:4,render:(detector,_selected,width)=>jsxDEV58("text",{fg:rowFg(detector,theme.text,theme),children:padText(detectorTypeLabel(detector.type),width)},void 0,!1,void 0,this)},lastIssue:{key:"last-issue",label:"Last Issue",width:26,priority:2,render:(detector,_selected,width)=>jsxDEV58("text",{fg:theme.subText,children:padText(lastIssueLabel(detector),width)},void 0,!1,void 0,this)},assignee:{key:"assignee",label:"Assignee",width:16,priority:3,render:(detector,_selected,width)=>jsxDEV58("text",{fg:theme.subText,children:padText(detectorAssigneeLabel(detector.owner),width)},void 0,!1,void 0,this)},alerts:{key:"alerts",label:"Alerts",width:6,align:"right",priority:1,render:(detector,_selected,width)=>{let count=detector.workflowIds?.length??0;return jsxDEV58("text",{fg:count>0?rowFg(detector,theme.text,theme):theme.subText,children:padText(count>0?String(count):"\u2014",width,"right")},void 0,!1,void 0,this)}}}}function monitorColumns(theme,{visualization}={}){let columns=monitorColumnSet(theme);if(visualization)return[columns.name,columns.type,visualization];return[columns.name,columns.type,columns.lastIssue,columns.assignee,columns.alerts]}function renderDetectorDetail(detector,width,{projectSlugs:projectSlugs2,theme}){let projectSlug=detector.projectId?projectSlugs2?.get(detector.projectId)??detector.latestGroup?.project?.slug:void 0,parts=detectorDetailParts(detector,{projectSlug});return jsxDEV58("text",{fg:theme.muted,children:padText(` ${parts.join(DETAIL_SEPARATOR)}`,Math.max(0,width))},void 0,!1,void 0,this)}function lastIssueLabel(detector){let group=detector.latestGroup;if(!group)return"\u2014";let title=group.title||group.shortId||group.id,age=timeAgo(group.lastSeen);return age?`${title} \xB7 ${age}`:title}import{jsxDEV as jsxDEV59}from"h:6___________________________";var HEADING_ROWS2=4,MONITOR_FILTERS=["project"],MONITOR_TIMELINE_FILTERS=["project","date"];function fallbackView(item){return{title:item,description:"",searchPlaceholder:"Search monitors\u2026",emptyTitle:"No monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled."]}}function monitorRowContentHeight(detector,_index,visibleColumns){return visibleColumns.some((column)=>column.key==="check-ins")?timelineRowContentHeight(detector):1}function MonitorList(props){let theme=useTheme(),{client:client2,org,screen,state,focused,width,height,reloadToken,onProjectSelect}=props,{dispatch,focusSearch,handleSearchBlur}=state,view=getMonitorListView(screen.id)??fallbackView(screen.item),query=buildDetectorQuery(view,state.committedQuery),sort=detectorSort(state.sort),project=state.selectedProjects.length>0?state.selectedProjects:void 0,{detectors:status,nextCursor,page,nextPage,previousPage}=useDetectors(client2,{org,query,sortBy:sort,project,reloadToken}),rows=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status);useEffect40(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef29(page);useEffect40(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect40(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"monitors"}})},[loading,since,error,dispatch]);let projectIds=useMemo26(()=>rows?.flatMap((row)=>row.projectId?[row.projectId]:[])??[],[rows]),projectSlugs2=useProjectSlugs(client2,org,projectIds),{pushView}=props,open=useCallback30((index)=>{let row=rows?.[index];if(!row)return;let slug=row.projectId?projectSlugs2.get(row.projectId):void 0;pushView(monitorDetailView(row,slug??row.latestGroup?.project?.slug,state.statsPeriod))},[rows,pushView,projectSlugs2,state.statsPeriod]);useScreenActions(props.registerActions,{open,nextPage,previousPage});let closeDropdown=useCallback30(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),timelineKind=timelineKindFor(view.type),trackWidth=timelineColumnWidth(width),windowSeconds=timelineWindowSeconds(state.statsPeriod),{monitorIds,uptimeDetectorIds}=useMemo26(()=>timelineKind?timelineStatsIds(rows):{monitorIds:[],uptimeDetectorIds:[]},[timelineKind,rows]),statsStatus=useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width:timelineKind?timelineDataWidth(timelineKind,trackWidth):trackWidth,statsPeriod:state.statsPeriod,reloadToken}),stats=valueOf(statsStatus),statsFailed=statsStatus.state==="error"&&stats===void 0,{notify}=props,notifiedError=useRef29(void 0),statsError=errorOf(statsStatus)?.message;useEffect40(()=>{if(!timelineKind)return;if(statsError&¬ifiedError.current!==statsError)notify({kind:"warning",text:"check-in history unavailable"});notifiedError.current=statsError},[timelineKind,statsError,notify]);let columns=useMemo26(()=>monitorColumns(theme,timelineKind?{visualization:timelineColumn({stats,failed:statsFailed,width:trackWidth,windowSeconds,theme})}:void 0),[timelineKind,stats,statsFailed,trackWidth,windowSeconds,theme]),renderDetail=useCallback30((detector,_selected,detailWidth)=>renderDetectorDetail(detector,detailWidth,{projectSlugs:projectSlugs2,theme}),[projectSlugs2,theme]);return jsxDEV59("box",{style:{flexDirection:"column",width,height},children:[jsxDEV59(SearchInput,{value:state.searchQuery,placeholder:view.searchPlaceholder,focused:state.searchFocused,width,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV59("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV59("text",{fg:theme.text,attributes:BOLD,children:view.title},void 0,!1,void 0,this),jsxDEV59("text",{fg:theme.muted,children:` ${view.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV59(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,filters:timelineKind?MONITOR_TIMELINE_FILTERS:MONITOR_FILTERS,sort:{value:sort,items:DETECTOR_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS+1,onProjectChange:onProjectSelect,onEnvChange:()=>{},onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown}),onDropdownClose:closeDropdown},void 0,!1,void 0,this),jsxDEV59(DataTable,{rows,columns,width,minFlex:MONITOR_MIN_FLEX,selectedIndex:state.selected,focused,rowKey:(detector)=>detector.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load monitors",onRowClick:props.activateRow,renderDetail,rowContentHeight:timelineKind==="cron"?monitorRowContentHeight:void 0,empty:{title:view.emptyTitle,lines:[state.committedQuery||void 0,...view.emptyLines]},layout:[height,HEADING_ROWS2]},void 0,!1,void 0,this),jsxDEV59(ResultFooter,{count:rows?.length,noun:"monitor",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback32,useEffect as useEffect41,useRef as useRef30}from"h:0__";import{RenderableEvents as RenderableEvents4}from"h:3__________";var FUNCTION_FIELDS=["project","fingerprint","package","function","count()","sum()","avg()","p50()","p75()","p95()","p99()"],PROFILE_FUNCTION_SORT_OPTIONS=[{value:"-sum()",label:"Total self time"},{value:"-avg()",label:"Average self time"},{value:"-p50()",label:"p50 self time"},{value:"-p75()",label:"p75 self time"},{value:"-p95()",label:"p95 self time"},{value:"-p99()",label:"p99 self time"}],DEFAULT_PROFILE_FUNCTION_SORT="-sum()";function profileFunctionSort(value){return PROFILE_FUNCTION_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_PROFILE_FUNCTION_SORT}var PROFILE_FUNCTION_PAGE_SIZE=50;async function listProfileFunctions(client2,{org,query="",statsPeriod,project,environment,sort=DEFAULT_PROFILE_FUNCTION_SORT,cursor,limit=PROFILE_FUNCTION_PAGE_SIZE,signal}){let page=await queryDiscover(client2,{org,dataset:"profileFunctions",fields:FUNCTION_FIELDS,sort,query,statsPeriod,project,environment,cursor,limit,referrer:"sentry-tui.profile-functions",signal});return{data:page.rows.map(normalise4),nextCursor:page.nextCursor}}function normalise4(row,index){return{fingerprint:rowString(row,"fingerprint")??String(index),projectSlug:rowString(row,"project"),package:rowString(row,"package")??"",name:rowString(row,"function")??"",count:rowNumber(row,"count()"),totalSelfTimeNs:rowNumber(row,"sum()"),p75SelfTimeNs:rowNumber(row,"p75()")}}import{useCallback as useCallback31}from"h:0__";function useProfileFunctions(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback31((cursor,signal)=>client2?listProfileFunctions(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment,sort]),pages=useCursorPages(loader,reloadToken);return{functions:mapAsyncStatus(pages.status,(result)=>result.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}import{jsxDEV as jsxDEV60}from"h:6___________________________";var FLAMEGRAPH_HEADING="Aggregate flamegraph \u2014 open Explore \u203A Profiles on sentry.io",MIN_FUNCTION_WIDTH=24,FLAMEGRAPH_NOTE=["A flamegraph needs pixels a terminal does not have; an ASCII","approximation would mislead. Below: the same page's slowest functions."];function profileColumns(theme){return[{key:"function",label:"Function",width:"flex",render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.text,children:padText(fn.name,width)},void 0,!1,void 0,this)},{key:"package",label:"Package",width:18,priority:2,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.muted,children:padText(fn.package,width)},void 0,!1,void 0,this)},{key:"project",label:"Project",width:12,priority:1,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.subText,children:padText(fn.projectSlug??"",width)},void 0,!1,void 0,this)},{key:"count",label:"Calls",width:7,align:"right",priority:3,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.muted,children:padText(formatCount(fn.count),width,"right")},void 0,!1,void 0,this)},{key:"p75",label:"p75",width:9,align:"right",priority:4,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.muted,children:padText(formatNanoseconds(fn.p75SelfTimeNs),width,"right")},void 0,!1,void 0,this)},{key:"total",label:"Self Time",width:10,align:"right",render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.text,children:padText(formatNanoseconds(fn.totalSelfTimeNs),width,"right")},void 0,!1,void 0,this)}]}function ProfileFunctions({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,inputRef=useRef30(null),inputRefCallback=useCallback32((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents4.FOCUSED),previous.removeAllListeners(RenderableEvents4.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents4.FOCUSED,()=>focusSearch()),node.on(RenderableEvents4.BLURRED,()=>handleSearchBlur())},[focusSearch,handleSearchBlur]),query=state.committedQuery,sort=profileFunctionSort(state.sort),{functions:status,nextCursor,page,nextPage,previousPage}=useProfileFunctions(client2,{org,query,statsPeriod:state.statsPeriod,project:state.selectedProjects.length>0?state.selectedProjects:void 0,environment:state.selectedEnvs.length>0?state.selectedEnvs:void 0,sort,reloadToken}),loading=status.state==="loading",since=loadingSince(status),functions=valueOf(status),error=errorOf(status);useEffect41(()=>{if(functions)dispatch({type:"setEntries",payload:functions})},[functions,dispatch]);let reportedPage=useRef30(page);useEffect41(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect41(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"functions"}})},[loading,since,error,status,dispatch]);let closeDropdown=useCallback32(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0}});let inner=Math.max(20,width-2),selected=functions?.[state.selected]??null,showDetail=state.detailOpen&&selected!==null;return jsxDEV60("box",{style:{flexDirection:"column",width,height},children:[jsxDEV60("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV60(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV60("input",{ref:inputRefCallback,value:state.searchQuery,placeholder:"Search functions\u2026",focused:state.searchFocused,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV60(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:PROFILE_FUNCTION_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV60(FlamegraphNote,{width:inner},void 0,!1,void 0,this),jsxDEV60(DataTable,{rows:functions,columns:profileColumns(theme),width,selectedIndex:state.selected,focused,rowKey:(fn)=>fn.fingerprint,loading:isInitialLoad(status),error,errorTitle:"Failed to load profiled functions",minFlex:MIN_FUNCTION_WIDTH,onRowClick:activateRow,empty:{title:"No profiled functions found.",lines:[query||void 0,"Try widening the time range or selecting a project that sends profiles.","This organization may not have profiling enabled."]},layout:[height,showDetail]},void 0,!1,void 0,this),showDetail&&selected?jsxDEV60(FunctionDetail,{fn:selected,width:inner},void 0,!1,void 0,this):null,jsxDEV60(ResultFooter,{count:functions?.length,noun:"function",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function FlamegraphNote({width}){let theme=useTheme();return jsxDEV60("box",{style:{flexDirection:"column",width,flexShrink:0,border:["bottom"],borderColor:theme.border},children:[jsxDEV60("text",{fg:theme.subText,attributes:BOLD,children:fitText(FLAMEGRAPH_HEADING,width)},void 0,!1,void 0,this),FLAMEGRAPH_NOTE.map((line)=>jsxDEV60("text",{fg:theme.muted,children:fitText(line,width)},line,!1,void 0,this))]},void 0,!0,void 0,this)}function FunctionDetail({fn,width}){let theme=useTheme();return jsxDEV60("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV60("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Function Details"},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.text,children:fitText(fn.name,width)},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.muted,children:fitText(` Package: ${fn.package||"\u2014"}`,width)},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.muted,children:fitText(` Project: ${fn.projectSlug??"\u2014"} \u2502 Calls: ${formatCount(fn.count)}`+` \u2502 Self time: ${formatNanoseconds(fn.totalSelfTimeNs)}`+` \u2502 p75: ${formatNanoseconds(fn.p75SelfTimeNs)}`,width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function formatNanoseconds(value){if(value===void 0||!Number.isFinite(value))return"\xB7\xB7";if(value<1000)return`${Math.round(value)}ns`;if(value<1e6)return`${trim2(value/1000)}\xB5s`;if(value<1e9)return`${trim2(value/1e6)}ms`;return`${trim2(value/1e9)}s`}function trim2(value){let places=value<10?2:value<100?1:0,fixed=value.toFixed(places);return fixed.includes(".")?fixed.replace(/\.?0+$/,""):fixed}import{useCallback as useCallback34,useEffect as useEffect43,useMemo as useMemo27,useRef as useRef31}from"h:0__";import{RenderableEvents as RenderableEvents5}from"h:3__________";import{useEffect as useEffect42}from"h:0__";function useCardScrollFollow(list,{index,heights,layout:layout2=[]}){let rowTop=0;for(let i=0;i<index&&i<heights.length;i++)rowTop+=heights[i]??0;let rowHeight=heights[index]??0,contentHeight=heights.reduce((total,height)=>total+height,0);useEffect42(()=>{let box=list.current;if(!box||contentHeight===0)return;let viewportHeight=box.viewport.height;if(viewportHeight<=0)return;let next=scrollTopForRowAt({rowTop,rowHeight,contentHeight,viewportHeight,scrollTop:box.scrollTop});if(next!==box.scrollTop)box.scrollTop=next},[list,rowTop,rowHeight,contentHeight,...layout2])}import{useCallback as useCallback33}from"h:0__";function useReleaseAdoption(client2,{org,releases,project,environment}){let loader=useCallback33((signal)=>client2&&releases?listReleaseAdoption(client2,{org,releases,project,environment,signal}):null,[client2,org,releases,project,environment]);return useAsyncFetch(loader,{resetKey:releases}).status}import{jsxDEV as jsxDEV61,Fragment as Fragment20}from"h:6___________________________";var GUTTER=2,INDENT=2,GAP=1,CARD_HEADER_LINES=3,COLLAPSED_PROJECTS=3,SKELETON_CARDS=4,SKELETON_PROJECTS=2,ADOPTION_CHART=12,ADOPTION_LABEL=5,ADOPTION_BLOCKS=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],CRASH_FREE_DANGER=98,CRASH_FREE_WARNING=99.5;function projectColumns(theme){return[{key:"project",label:"Project",width:"flex",render:(row,_selected,width)=>jsxDEV61("text",{fg:theme.text,children:padText(row.project.slug,width)},void 0,!1,void 0,this)},{key:"adoption",label:"Adoption",width:ADOPTION_LABEL+ADOPTION_CHART,priority:3,render:(row,_selected,width)=>jsxDEV61(AdoptionCell,{row,width},void 0,!1,void 0,this)},{key:"crashFree",label:"Crash-Free",width:11,align:"right",render:(row,_selected,width)=>jsxDEV61(CrashFreeCell,{row,width},void 0,!1,void 0,this)},{key:"crashes",label:"Crashes",width:8,align:"right",priority:2,render:(row,_selected,width)=>row.pending?jsxDEV61(PendingCell,{width,align:"right"},void 0,!1,void 0,this):jsxDEV61("text",{fg:theme.muted,children:padText(row.health?formatCount(row.health.sessionsCrashed??0):"\u2014",width,"right")},void 0,!1,void 0,this)},{key:"newIssues",label:"New Issues",width:10,align:"right",priority:1,render:(row,_selected,width)=>jsxDEV61("text",{fg:theme.muted,children:padText(formatCount(row.project.newGroups),width,"right")},void 0,!1,void 0,this)}]}function ReleaseCards({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,listRef=useRef31(null),inputRef=useRef31(null),inputRefCallback=useCallback34((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents5.FOCUSED),previous.removeAllListeners(RenderableEvents5.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents5.FOCUSED,()=>focusSearch()),node.on(RenderableEvents5.BLURRED,()=>handleSearchBlur())},[focusSearch,handleSearchBlur]),query=state.committedQuery,project=useMemo27(()=>projectParams(state.selectedProjects),[state.selectedProjects]),environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sortItems=useMemo27(()=>releaseSortOptions(state.selectedEnvs),[state.selectedEnvs]),sort=releaseSort(state.sort,state.selectedEnvs),params={org,query,statsPeriod:state.statsPeriod,project,environment,sort,reloadToken},{releases:releasesStatus,nextCursor,cursor,page,nextPage,previousPage}=useReleases(client2,params),healthStatus=useReleaseHealth(client2,{...params,cursor}),releases=valueOf(releasesStatus),adoptionStatus=useReleaseAdoption(client2,{org,releases,project,environment}),listError=errorOf(releasesStatus),health=valueOf(healthStatus),healthError=errorOf(healthStatus),healthPending=health===void 0&&healthStatus.state==="loading",adoption=valueOf(adoptionStatus),adoptionError=errorOf(adoptionStatus),adoptionPending=releases!==void 0&&adoption===void 0&&adoptionStatus.state!=="error",loading=releasesStatus.state==="loading",since=loadingSince(releasesStatus);useEffect43(()=>{if(releases)dispatch({type:"setEntries",payload:releases})},[releases,dispatch]);let reportedPage=useRef31(page);useEffect43(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect43(()=>{dispatch({type:"setStatus",payload:{loading,since,error:listError?.message??(healthError?`health: ${healthError.message}`:void 0)??(adoptionError?`adoption: ${adoptionError.message}`:void 0),noun:"releases"}})},[loading,since,listError,healthError,adoptionError,releasesStatus,dispatch]);let closeDropdown=useCallback34(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0}});let cardWidth=Math.max(20,width-GUTTER),tableWidth=Math.max(10,cardWidth-INDENT),resolved2=useMemo27(()=>layoutColumns(projectColumns(theme),tableWidth,{gap:GAP}),[tableWidth,theme]),heights=useMemo27(()=>(releases??[]).map((release,index)=>cardHeight(release,state.detailOpen&&index===state.selected)),[releases,state.detailOpen,state.selected]);useCardScrollFollow(listRef,{index:state.selected,heights,layout:[height]});let showSkeleton=releases===void 0&&loading,showEmpty=releases!==void 0&&releases.length===0&&!loading;return jsxDEV61("box",{style:{flexDirection:"column",width,height},children:[jsxDEV61("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV61(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV61("input",{ref:inputRefCallback,value:state.searchQuery,placeholder:"Search releases\u2026",focused:state.searchFocused,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV61(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:sortItems,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV61("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[showSkeleton?Array.from({length:SKELETON_CARDS},(_,i)=>jsxDEV61(SkeletonCard,{resolved:resolved2,width:cardWidth,seed:i},i,!1,void 0,this)):null,showEmpty?jsxDEV61("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV61("text",{fg:theme.text,children:"No releases found."},void 0,!1,void 0,this),query?jsxDEV61("text",{fg:theme.muted,children:query},void 0,!1,void 0,this):null,jsxDEV61("text",{fg:theme.muted,children:"Try widening the time range or clearing the version filter."},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.muted,children:"This organization may not have release tracking set up."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,releases?.map((release,index)=>jsxDEV61(ReleaseCard,{release,index,health,healthPending,adoption,adoptionPending,resolved:resolved2,width:cardWidth,selected:focused&&index===state.selected,expanded:state.detailOpen&&index===state.selected,onPress:activateRow},release.version,!1,void 0,this)),listError&&releases===void 0?jsxDEV61("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV61("text",{fg:theme.danger,children:"Failed to load releases"},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.muted,children:listError.message},void 0,!1,void 0,this),listError.retryable?jsxDEV61("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),jsxDEV61(ResultFooter,{count:releases?.length,noun:"release",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cardProjects(release,expanded){let sorted=[...release.projects].sort((a,b)=>a.slug.localeCompare(b.slug));if(expanded||sorted.length<=COLLAPSED_PROJECTS)return{shown:sorted,hidden:0};return{shown:sorted.slice(0,COLLAPSED_PROJECTS),hidden:sorted.length-COLLAPSED_PROJECTS}}function cardHeight(release,expanded){let{shown,hidden}=cardProjects(release,expanded);return CARD_HEADER_LINES+shown.length+(hidden>0?1:0)+1}function ReleaseCard({release,index,health,healthPending,adoption,adoptionPending,resolved:resolved2,width,selected,expanded,onPress}){let theme=useTheme(),{shown,hidden}=cardProjects(release,expanded),tableWidth=Math.max(10,width-INDENT),when=timeAgo(release.lastDeploy?.dateFinished??release.dateCreated),suffix=release.lastDeploy?` \u2502 ${release.lastDeploy.environment}`:"",stamp=`${when}${suffix}`,stampWidth=Math.min(stamp.length+1,Math.max(0,width-INDENT-4)),versionWidth=Math.max(4,width-INDENT-stampWidth);return jsxDEV61("box",{style:{flexDirection:"column",width,flexShrink:0},onMouseDown:()=>onPress(index),children:[jsxDEV61("box",{style:{flexDirection:"row",width,backgroundColor:selected?theme.selected:void 0},children:[jsxDEV61("text",{fg:theme.accent,children:selected?"\u276F ":" "},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.text,attributes:BOLD,children:padText(release.shortVersion||release.version,versionWidth)},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.subText,children:padText(stamp,stampWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV61("text",{fg:theme.muted,children:padText(` ${releaseSummary(release)}`,width)},void 0,!1,void 0,this),jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("text",{fg:theme.subText,children:(i>0?" ".repeat(GAP):"")+padText(column.label,cellWidth,column.align??"left")},column.key,!1,void 0,this))]},void 0,!0,void 0,this),shown.map((project)=>jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("box",{style:{flexDirection:"row",flexShrink:0},children:[i>0?jsxDEV61("text",{children:" ".repeat(GAP)},void 0,!1,void 0,this):null,column.render({project,health:health?.get(healthKey(release.version,project.id)),pending:healthPending,adoption:adoption?.get(healthKey(release.version,project.id)),adoptionPending},selected,cellWidth)]},column.key,!0,void 0,this))]},project.id,!0,void 0,this)),hidden>0?jsxDEV61("text",{fg:theme.subText,attributes:ITALIC,children:padText(` +${hidden} more ${hidden===1?"project":"projects"} \u2014 enter to expand`,width)},void 0,!1,void 0,this):null,jsxDEV61("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,tableWidth+INDENT))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function releaseSummary(release){let parts=[];if(release.package)parts.push(release.package);if(release.commitCount>0){let commits=`${release.commitCount} ${release.commitCount===1?"commit":"commits"}`,authors=`${release.authorCount} ${release.authorCount===1?"author":"authors"}`;parts.push(`${commits} by ${authors}`)}return parts.length>0?parts.join(" \xB7 "):"no commits associated"}function AdoptionCell({row,width}){let theme=useTheme();if(row.pending||row.adoptionPending)return jsxDEV61(PendingCell,{width},void 0,!1,void 0,this);let adoption=row.health?.adoption;if(adoption===void 0)return jsxDEV61("text",{fg:theme.subText,children:padText("\u2014",width)},void 0,!1,void 0,this);let clamped=Math.max(0,Math.min(100,adoption)),labelWidth=Math.min(ADOPTION_LABEL,width),chartWidth=Math.max(0,width-labelWidth),chart=row.adoption?adoptionChart(row.adoption,chartWidth):[];return jsxDEV61(Fragment20,{children:[jsxDEV61("text",{fg:theme.muted,children:padText(`${Math.round(clamped)}%`,labelWidth)},void 0,!1,void 0,this),chart.length>0?chart.map((cell,index)=>jsxDEV61("text",{fg:cell.series==="release"?theme.accent:theme.subText,children:cell.glyph},index,!1,void 0,this)):jsxDEV61("text",{children:" ".repeat(chartWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function adoptionChart(series,width){if(width<=0||series.project.length===0&&series.release.length===0)return[];let pairCount=Math.max(1,Math.floor(width/2)),length=Math.max(series.project.length,series.release.length),pairs=Array.from({length},(_,index)=>[series.project[index]??0,series.release[index]??0]),sampled=pairs.length>pairCount?downsampleAdoption(pairs,pairCount):stretch(pairs,pairCount),max=Math.max(1,...sampled.flatMap(([project,release])=>[project,release])),cells=sampled.flatMap(([project,release])=>[{glyph:adoptionGlyph(project,max),series:"project"},{glyph:adoptionGlyph(release,max),series:"release"}]);while(cells.length<width)cells.push({glyph:" ",series:"project"});return cells.slice(0,width)}function downsampleAdoption(pairs,width){let bucketSize=pairs.length/width;return Array.from({length:width},(_,index)=>{let start=Math.floor(index*bucketSize),end=Math.min(pairs.length,Math.floor((index+1)*bucketSize)),project=0,release=0;for(let point=start;point<end;point++)project+=pairs[point]?.[0]??0,release+=pairs[point]?.[1]??0;return[project,release]})}function adoptionGlyph(value,max){if(value<=0)return ADOPTION_BLOCKS[0];let level=Math.ceil(value/max*ADOPTION_BLOCKS.length)-1;return ADOPTION_BLOCKS[Math.max(0,Math.min(ADOPTION_BLOCKS.length-1,level))]}function CrashFreeCell({row,width}){let theme=useTheme();if(row.pending)return jsxDEV61(PendingCell,{width,align:"right"},void 0,!1,void 0,this);let rate=row.health?.crashFreeSessions;if(rate===void 0)return jsxDEV61("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let[color,marker]=rate<CRASH_FREE_DANGER?[theme.danger,"\u2717"]:rate<CRASH_FREE_WARNING?[theme.warning,"!"]:[theme.success,"\u2713"];return jsxDEV61("text",{fg:color,children:padText(`${marker} ${displayCrashFreePercent(rate)}`,width,"right")},void 0,!1,void 0,this)}function PendingCell({width,align="left"}){let theme=useTheme();return jsxDEV61("text",{fg:theme.panelAlt,children:padText("\u2500".repeat(Math.max(1,Math.floor(width*0.6))),width,align)},void 0,!1,void 0,this)}function displayCrashFreePercent(percent){if(Number.isNaN(percent))return"\u2014";if(percent>0&&percent<1)return"<1%";let factor=10**(percent>90?3:0),rounded=Math.round(percent*factor)/factor;if(rounded===100&&percent<100)rounded=Math.floor(percent*factor)/factor;return`${rounded}%`}function SkeletonCard({resolved:resolved2,width,seed}){let theme=useTheme(),tableWidth=Math.max(10,width-INDENT);return jsxDEV61("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV61("text",{fg:theme.panelAlt,children:padText(` ${bar2(24,seed)}`,width)},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.panelAlt,children:padText(` ${bar2(32,seed+3)}`,width)},void 0,!1,void 0,this),jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("text",{fg:theme.subText,children:(i>0?" ".repeat(GAP):"")+padText(column.label,cellWidth,column.align??"left")},column.key,!1,void 0,this))]},void 0,!0,void 0,this),Array.from({length:SKELETON_PROJECTS},(_,row)=>jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("text",{fg:theme.panelAlt,children:(i>0?" ".repeat(GAP):"")+padText(bar2(cellWidth,seed+row+i),cellWidth,column.align??"left")},column.key,!1,void 0,this))]},row,!0,void 0,this)),jsxDEV61("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,tableWidth+INDENT))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function bar2(width,seed){if(width<=0)return"";let fraction=0.4+seed*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(width,Math.floor(width*fraction))))}import{useCallback as useCallback35,useEffect as useEffect44,useMemo as useMemo28,useRef as useRef32}from"h:0__";import{RenderableEvents as RenderableEvents6}from"h:3__________";import{jsxDEV as jsxDEV62,Fragment as Fragment21}from"h:6___________________________";var ACTIVITY_STEPS=10,MIN_SESSION_WIDTH=15;function replayColumns(theme){return[{key:"session",label:"Replay",width:"flex",render:(replay,selected,width)=>{if(replay.isArchived)return jsxDEV62("text",{fg:theme.subText,children:padText("Deleted Replay",width)},void 0,!1,void 0,this);let marker=replay.hasViewed?" ":"\u25CF ",name=replay.user.displayName??"Anonymous User",nameWidth=width-marker.length;return jsxDEV62(Fragment21,{children:[jsxDEV62("text",{fg:theme.accent,children:marker},void 0,!1,void 0,this),nameWidth>0?jsxDEV62("text",{fg:theme.text,attributes:selected?BOLD:0,children:padText(name,nameWidth)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}},{key:"os",label:"OS",width:11,render:(replay,_selected,width)=>jsxDEV62("text",{fg:theme.subText,children:padText(formatAgent(replay.os),width)},void 0,!1,void 0,this)},{key:"browser",label:"Browser",width:11,render:(replay,_selected,width)=>jsxDEV62("text",{fg:theme.subText,children:padText(formatAgent(replay.browser),width)},void 0,!1,void 0,this)},{key:"duration",label:"Duration",width:8,align:"right",render:(replay,_selected,width)=>jsxDEV62("text",{fg:theme.text,children:padText(formatReplayDuration(replay.durationSec),width,"right")},void 0,!1,void 0,this)},{key:"dead",label:"Dead",width:5,align:"right",priority:1,render:(replay,_selected,width)=>jsxDEV62(CountCell,{value:replay.countDeadClicks,width,color:theme.warning},void 0,!1,void 0,this)},{key:"rage",label:"Rage",width:5,align:"right",priority:1,render:(replay,_selected,width)=>jsxDEV62(CountCell,{value:replay.countRageClicks,width,color:theme.danger},void 0,!1,void 0,this)},{key:"errors",label:"Errors",width:6,align:"right",render:(replay,_selected,width)=>jsxDEV62(CountCell,{value:replay.countErrors,width,color:theme.danger},void 0,!1,void 0,this)},{key:"activity",label:"Activity",width:ACTIVITY_STEPS,priority:2,render:(replay,_selected,width)=>jsxDEV62(ActivityBar,{score:replay.activity,width},void 0,!1,void 0,this)}]}function ReplayStream({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,pushView,registerActions,activateRow}){let theme=useTheme(),{dispatch}=state,query=state.committedQuery,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sort=replaySort(state.sort),{replays,nextCursor,page,nextPage,previousPage}=useReplays(client2,{org,query,statsPeriod:state.statsPeriod,project,environment,sort,reloadToken}),loading=replays.state==="loading",since=loadingSince(replays),fetched=valueOf(replays),error=errorOf(replays),projectIds=useMemo28(()=>fetched?.flatMap((replay)=>replay.projectId?[replay.projectId]:[])??[],[fetched]),slugById=useProjectSlugs(client2,org,projectIds),rows=useMemo28(()=>fetched?.map((replay)=>({...replay,projectSlug:replay.projectId?slugById.get(replay.projectId):void 0})),[fetched,slugById]);useEffect44(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef32(page);useEffect44(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect44(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"replays"}})},[loading,since,error,replays,dispatch]);let closeDropdown=useCallback35(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return useScreenActions(registerActions,{open:(index)=>{let row=rowsOf(state)[index];if(row)pushView(replayDetailView(row,state.statsPeriod,state.selectedEnvs))},nextPage,previousPage}),jsxDEV62("box",{style:{flexDirection:"column",width,height},children:[jsxDEV62(SearchInputPlaceholder,{state,width,placeholder:"Search replays\u2026"},void 0,!1,void 0,this),jsxDEV62(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:REPLAY_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV62(DataTable,{rows,columns:replayColumns(theme),width,selectedIndex:state.selected,focused,rowKey:(replay)=>replay.id,loading:isInitialLoad(replays),error,errorTitle:"Failed to load replays",onRowClick:activateRow,renderDetail:(replay,selected,rowWidth)=>renderSessionDetail(replay,selected,rowWidth,theme),minFlex:MIN_SESSION_WIDTH,empty:{title:"No replays found.",lines:[query||void 0,"Try widening the time range or adjusting the query.","This organization may not have session replay enabled."]},layout:[height]},void 0,!1,void 0,this),jsxDEV62(ResultFooter,{count:rows?.length,noun:"replay",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function renderSessionDetail(replay,_selected,width,theme){let parts=[replay.projectSlug,shortReplayId(replay.id)].filter(Boolean),started=timeAgo(replay.startedAt);if(started)parts.push(`${started} ago`);return jsxDEV62("text",{fg:theme.muted,children:padText(` ${parts.join(" \xB7 ")}`,width)},void 0,!1,void 0,this)}function CountCell({value,width,color}){let theme=useTheme(),known=value!==void 0;return jsxDEV62("text",{fg:known&&value>0?color:theme.subText,children:padText(known?String(value):"\u2014",width,"right")},void 0,!1,void 0,this)}function ActivityBar({score,width}){let theme=useTheme();if(width<=0)return null;if(score===void 0)return jsxDEV62("text",{fg:theme.subText,children:padText("\u2014",width)},void 0,!1,void 0,this);let clamped=Math.max(0,Math.min(ACTIVITY_STEPS,Math.round(score))),filled=Math.round(clamped/ACTIVITY_STEPS*width),empty=Math.max(0,width-filled);return jsxDEV62(Fragment21,{children:[filled>0?jsxDEV62("text",{fg:theme.accent,children:"\u2588".repeat(filled)},void 0,!1,void 0,this):null,empty>0?jsxDEV62("text",{fg:theme.border,children:"\u2591".repeat(empty)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function replayDetailView(replay,statsPeriod,environments){return{id:`replay:${replay.id}`,sentryLocation:{screen:"explore.replays",detail:{kind:"replay",replayId:replay.id}},label:shortReplayId(replay.id),stateKey:REPLAY_DETAIL_STATE_KEY,initialState:{statsPeriod,selectedEnvs:environments,selectedProjects:replay.projectSlug?[replay.projectSlug]:[]},render:(ctx)=>ctx.state?jsxDEV62(ReplayDetail,{...ctx,state:ctx.state,replay},void 0,!1,void 0,this):null}}var loadReplay2=(client2,{org,id,signal})=>fetchReplay(client2,{org,replayId:id,signal});function replayUrlView(replayId){return{id:`replay:${replayId}`,sentryLocation:{screen:"explore.replays",detail:{kind:"replay",replayId}},label:shortReplayId(replayId),stateKey:REPLAY_DETAIL_STATE_KEY,initialState:{statsPeriod:DEFAULT_REPLAY_PERIOD,selectedEnvs:[],selectedProjects:[]},render:(ctx)=>ctx.state?jsxDEV62(ReplayFromUrl,{...ctx,state:ctx.state,replayId},void 0,!1,void 0,this):null}}function ReplayFromUrl({client:client2,org,state,replayId,reloadToken,width,height,updateView,...ctx}){let status=useDirectResource(client2,{org,id:replayId,reloadToken,load:loadReplay2}),replay=valueOf(status);if(useEffect44(()=>{if(replay)updateView(`replay:${replayId}`,{label:shortReplayId(replay.id)})},[replay,replayId,updateView]),!replay)return jsxDEV62(DirectDetailStatus,{status,noun:"replay",width,height},void 0,!1,void 0,this);return jsxDEV62(ReplayDetail,{...ctx,client:client2,org,state,replay,reloadToken,width,height,updateView},void 0,!1,void 0,this)}function replayErrorColumns(theme){return[{key:"time",label:"Time",width:8,render:(event,_selected,width)=>jsxDEV62("text",{fg:theme.muted,children:padText(clockOf(event.timestamp),width)},void 0,!1,void 0,this)},{key:"level",label:"Level",width:5,priority:1,render:(event,_selected,width)=>jsxDEV62("text",{fg:event.level==="error"||event.level==="fatal"?theme.danger:theme.muted,children:padText(event.level??"",width)},void 0,!1,void 0,this)},{key:"issue",label:"Issue",width:16,priority:2,render:(event,_selected,width)=>jsxDEV62("text",{fg:theme.subText,children:padText(event.issue??"",width)},void 0,!1,void 0,this)},{key:"title",label:"Title",width:"flex",render:(event,_selected,width)=>jsxDEV62("text",{fg:theme.text,children:padText(event.title,width)},void 0,!1,void 0,this)}]}function ReplayDetail({client:client2,org,state,replay,focused,width,height,reloadToken}){let theme=useTheme(),{dispatch}=state,{errors:status,nextCursor}=useReplayErrors(client2,{org,replayId:replay.id,statsPeriod:state.statsPeriod,environment:state.selectedEnvs.length>0?state.selectedEnvs:void 0,count:replay.countErrors??0,reloadToken}),errors=valueOf(status),error=errorOf(status);useEffect44(()=>{if(errors)dispatch({type:"setEntries",payload:errors})},[errors,dispatch]),useEffect44(()=>{dispatch({type:"setStatus",payload:{loading:status.state==="loading",error:error?.message,noun:"replay errors"}})},[status,error,dispatch]);let closeDropdown=useCallback35(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),inner=Math.max(20,width-2),name=replay.user.displayName??"Anonymous User";return jsxDEV62("box",{style:{flexDirection:"column",width,height,paddingLeft:1},children:[jsxDEV62(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,width:inner,anchorTop:0,onProjectChange:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV62("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV62("text",{fg:theme.text,attributes:BOLD,children:fitText(name,Math.max(8,inner-24))},void 0,!1,void 0,this),jsxDEV62("text",{fg:theme.muted,children:fitText(` ${replay.projectSlug??"\u2014"} \xB7 ${timeAgo(replay.startedAt)} ago`,24)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV62(Field2,{label:"Duration",value:formatReplayDuration(replay.durationSec),width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Platform",value:[formatAgent(replay.os),formatAgent(replay.browser)].filter((part)=>part!=="\u2014").join(" \xB7 "),width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Clicks",value:`${count(replay.countDeadClicks)} dead \xB7 ${count(replay.countRageClicks)} rage`,width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Session",value:`${count(replay.countUrls)} urls \xB7 ${count(replay.countSegments)} segments \xB7 activity ${count(replay.activity)}`,width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Release",value:replay.releases[0]??"\u2014",width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"URL",value:replay.urls[0]??"\u2014",width:inner},void 0,!1,void 0,this),jsxDEV62("box",{style:{flexDirection:"column",flexShrink:0},children:[jsxDEV62("text",{fg:theme.muted,children:" "},void 0,!1,void 0,this),jsxDEV62("text",{fg:theme.subText,children:padText("Playback is not available in a terminal. Open it at:",inner)},void 0,!1,void 0,this),chunk(replayUrl(org,replay.id),inner).map((line,index)=>jsxDEV62("text",{fg:theme.accent,children:padText(line,inner)},index,!1,void 0,this)),jsxDEV62("text",{fg:theme.muted,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV62(DataTable,{rows:errors,columns:replayErrorColumns(theme),width:width-1,selectedIndex:state.selected,focused,rowKey:(event)=>event.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load replay errors",empty:{title:"No errors in this replay."},layout:[height]},void 0,!1,void 0,this),jsxDEV62(ResultFooter,{count:errors?.length,noun:"error",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Field2({label,value,width}){let theme=useTheme(),gutter=10;return jsxDEV62("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV62("text",{fg:theme.muted,children:padText(label,10)},void 0,!1,void 0,this),jsxDEV62("text",{fg:theme.text,children:fitText(value||"\u2014",Math.max(0,width-10))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function chunk(text2,width){if(width<=0)return[text2];let lines=[];for(let start=0;start<text2.length;start+=width)lines.push(text2.slice(start,start+width));return lines.length>0?lines:[""]}function count(value){return value===void 0?"\u2014":String(value)}function clockOf(iso){if(!iso)return"--:--:--";return/T(\d{2}:\d{2}:\d{2})/.exec(iso)?.[1]??(iso.slice(11,19)||"--:--:--")}function SearchInputPlaceholder({state,width,placeholder}){let theme=useTheme(),{focusSearch,handleSearchBlur}=state,inputRef=useRef32(null),inputRefCallback=useCallback35((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents6.FOCUSED),previous.removeAllListeners(RenderableEvents6.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents6.FOCUSED,()=>focusSearch()),node.on(RenderableEvents6.BLURRED,()=>handleSearchBlur())},[focusSearch,handleSearchBlur]);return jsxDEV62("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV62(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV62("input",{ref:inputRefCallback,value:state.searchQuery,placeholder,focused:state.searchFocused,onInput:(query)=>state.dispatch({type:"setSearchQuery",payload:query}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback36,useEffect as useEffect45,useMemo as useMemo29}from"h:0__";import{jsxDEV as jsxDEV63}from"h:6___________________________";var HEADING_ROWS3=1,MIN_QUERY_WIDTH=20;function columnsFor2(config,theme){return[{key:"star",label:" ",width:1,render:(query)=>jsxDEV63("text",{fg:query.starred?theme.warning:theme.muted,children:query.starred?"\u2605":" "},void 0,!1,void 0,this)},{key:"name",label:"Name",width:24,render:(query,selected,width)=>jsxDEV63("text",{fg:selected?theme.text:theme.subText,attributes:selected?BOLD:0,children:padText(fitText(query.name,width),width)},void 0,!1,void 0,this)},{key:"type",label:"Type",width:12,priority:2,render:(query,_selected,width)=>jsxDEV63("text",{fg:theme.muted,children:padText(fitText(query.datasetLabel,width),width)},void 0,!1,void 0,this)},{key:"query",label:"Query",width:"flex",render:(query,_selected,width)=>jsxDEV63("text",{fg:query.query?theme.muted:theme.subText,children:padText(fitText(describe(query),width),width)},void 0,!1,void 0,this)},{key:"creator",label:"Creator",width:14,priority:3,render:(query,_selected,width)=>jsxDEV63("text",{fg:theme.subText,children:padText(fitText(query.createdBy??(query.isPrebuilt?"Sentry":"\u2014"),width),width)},void 0,!1,void 0,this)},{key:"activity",label:config.activityLabel,width:11,align:"right",priority:1,render:(query,_selected,width)=>jsxDEV63("text",{fg:theme.subText,children:padText(activity(query),width,"right")},void 0,!1,void 0,this)}]}function SavedQueries(props){let theme=useTheme(),{client:client2,org,screen,state,focused,width,height,reloadToken,pushView,registerActions,activateRow}=props,{dispatch,focusSearch,handleSearchBlur}=state,config=savedQueryScreen(screen.id)??savedQueryScreen("explore.all-queries"),sortItems=savedQuerySortOptions(config.source),sort=savedQueryListSort(state.sort,config.source),{queries:status,nextCursor}=useSavedQueries(client2,{org,source:config.source,search:state.committedQuery||void 0,sort,reloadToken}),queries=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status);useEffect45(()=>{if(queries)dispatch({type:"setEntries",payload:queries})},[queries,dispatch]),useEffect45(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:config.noun}})},[loading,since,error,status,config.noun,dispatch]);let open=useCallback36((index)=>{let query=rowsOf(state)[index];if(query)pushView(savedQueryResultsView(query))},[state,pushView]);useScreenActions(registerActions,{open});let columns=useMemo29(()=>columnsFor2(config,theme),[config,theme]);return jsxDEV63("box",{style:{flexDirection:"column",width,height},children:[jsxDEV63(SearchInput,{value:state.searchQuery,placeholder:config.searchPlaceholder,focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV63("box",{style:{flexDirection:"row",width,flexShrink:0,height:HEADING_ROWS3,paddingLeft:1},children:[jsxDEV63("text",{fg:theme.text,attributes:BOLD,children:config.title},void 0,!1,void 0,this),jsxDEV63("text",{fg:theme.muted,children:` ${config.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV63(SortBar,{value:sort,items:sortItems,open:state.openDropdown==="sort",width,anchorTop:SEARCH_ROWS+1,onChange:(sort2)=>dispatch({type:"setSort",payload:sort2}),onOpen:()=>dispatch({type:"setOpenDropdown",payload:"sort"}),onClose:()=>dispatch({type:"setOpenDropdown",payload:null})},void 0,!1,void 0,this),jsxDEV63(DataTable,{rows:queries,columns,width,selectedIndex:state.selected,focused,rowKey:(query)=>`${query.source}:${query.id}`,loading:isInitialLoad(status),error,errorTitle:`Failed to load ${config.noun}`,minFlex:MIN_QUERY_WIDTH,onRowClick:activateRow,empty:{title:"No saved queries found.",lines:[state.committedQuery?`No query name matches "${state.committedQuery}".`:void 0,config.emptyHint]},layout:[height]},void 0,!1,void 0,this),jsxDEV63(ResultFooter,{count:queries?.length,noun:"query",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function describe(query){return query.query||query.fields.join(", ")}function activity(query){let iso=query.lastVisited??query.dateUpdated;return iso?timeAgo(iso):"\u2014"}import{useCallback as useCallback38,useEffect as useEffect47,useMemo as useMemo31,useRef as useRef33}from"h:0__";import{useCallback as useCallback37,useEffect as useEffect46,useMemo as useMemo30,useState as useState31}from"h:0__";function useWorkflows(client2,{org,query="",project,sortBy,reloadToken=0}){let loader=useCallback37((cursor,signal)=>client2?listWorkflows(client2,{org,query,project,sortBy,cursor,signal}).then((page)=>({data:Array.isArray(page.data)?page.data:[],nextCursor:page.nextCursor})):null,[client2,org,query,project,sortBy]),pages=useCursorPages(loader,reloadToken);return{workflows:mapAsyncStatus(pages.status,(page)=>page.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}var NO_DETECTORS={byId:new Map,loading:!1};function useWorkflowDetectors(client2,org,workflows){let key=useMemo30(()=>{let unique2=new Set;for(let workflow of workflows??[])for(let id of workflow.detectorIds??[])unique2.add(id);return[...unique2].sort()},[workflows]).join(","),[lookup,setLookup]=useState31(NO_DETECTORS);return useEffect46(()=>{if(!client2||key===""){setLookup(NO_DETECTORS);return}let controller=new AbortController,cancelled=!1;return setLookup((current)=>({byId:current.byId,loading:!0})),listDetectorsByIds(client2,{org,ids:key.split(","),signal:controller.signal}).then((detectors)=>{if(cancelled)return;setLookup({byId:new Map(detectors.map((d)=>[d.id,d])),loading:!1})}).catch(()=>{if(!cancelled)setLookup(NO_DETECTORS)}),()=>{cancelled=!0,controller.abort()}},[client2,org,key]),lookup}import{jsxDEV as jsxDEV64}from"h:6___________________________";var HEADING_ROWS4=4,MIN_NAME_WIDTH=24,EMPTY2="\u2014",ALERT_FILTERS=["project"];function workflowColumns(theme){return[{key:"name",label:"Name",width:"flex",render:(row,selected,width)=>jsxDEV64("text",{fg:nameColor(row,selected,theme),attributes:selected?BOLD:0,children:padText(row.name,width)},void 0,!1,void 0,this)},{key:"lastTriggered",label:"Last Triggered",width:14,priority:2,render:(row,_selected,width)=>jsxDEV64("text",{fg:theme.subText,children:padText(row.lastTriggered,width)},void 0,!1,void 0,this)},{key:"actions",label:"Actions",width:18,priority:3,render:(row,_selected,width)=>jsxDEV64("text",{fg:row.enabled?theme.text:theme.subText,children:padText(row.actions,width)},void 0,!1,void 0,this)},{key:"projects",label:"Projects",width:18,priority:4,render:(row,_selected,width)=>jsxDEV64("text",{fg:row.enabled?theme.muted:theme.subText,children:padText(row.projects,width)},void 0,!1,void 0,this)},{key:"monitors",label:"Monitors",width:11,priority:1,render:(row,_selected,width)=>jsxDEV64("text",{fg:row.enabled?theme.muted:theme.subText,children:padText(row.monitors,width)},void 0,!1,void 0,this)}]}function WorkflowList(props){let theme=useTheme(),{client:client2,org,state,focused,width,height,reloadToken,onProjectSelect}=props,{dispatch,focusSearch,handleSearchBlur}=state,sort=workflowSort(state.sort),project=state.selectedProjects.length>0?state.selectedProjects:void 0,{workflows:status,nextCursor,page,nextPage,previousPage}=useWorkflows(client2,{org,query:state.committedQuery,project,sortBy:sort,reloadToken}),workflows=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status),detectors=useWorkflowDetectors(client2,org,workflows),projectIds=useMemo31(()=>[...detectors.byId.values()].flatMap((detector)=>detector.projectId?[detector.projectId]:[]),[detectors.byId]),slugById=useProjectSlugs(client2,org,projectIds),rows=useMemo31(()=>workflows?.map((workflow)=>toRow(workflow,detectors.byId,detectors.loading,slugById)),[workflows,detectors,slugById]);useEffect47(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef33(page);useEffect47(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect47(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"alerts"}})},[loading,since,error,dispatch]);let closeDropdown=useCallback38(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return useScreenActions(props.registerActions,{nextPage,previousPage}),jsxDEV64("box",{style:{flexDirection:"column",width,height},children:[jsxDEV64(SearchInput,{value:state.searchQuery,placeholder:"Search alerts by name\u2026",focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV64("box",{style:{flexDirection:"row",width,height:1,flexShrink:0,overflow:"hidden",paddingLeft:1},children:[jsxDEV64("text",{fg:theme.text,attributes:BOLD,children:"Alerts"},void 0,!1,void 0,this),jsxDEV64("text",{fg:theme.muted,children:" Automations that run when a monitor fires."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV64(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,filters:ALERT_FILTERS,sort:{value:sort,items:WORKFLOW_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS+1,onProjectChange:onProjectSelect,onEnvChange:()=>{},onPeriodChange:()=>{},onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown}),onDropdownClose:closeDropdown},void 0,!1,void 0,this),jsxDEV64(DataTable,{rows,columns:workflowColumns(theme),width,minFlex:MIN_NAME_WIDTH,selectedIndex:state.selected,focused,rowKey:(row)=>row.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load alerts",onRowClick:props.activateRow,empty:{title:"No alerts found.",lines:state.committedQuery?[`No alert name matches "${state.committedQuery}".`]:["Alerts are the automations that run when a monitor fires.","This organization may not have the new alerts and monitors enabled."]},layout:[height,HEADING_ROWS4]},void 0,!1,void 0,this),jsxDEV64(ResultFooter,{count:rows?.length,noun:"alert",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nameColor(row,selected,theme){if(!row.enabled)return theme.subText;return selected?theme.text:theme.accent}function toRow(workflow,detectorsById,detectorsLoading,slugById){let detectorIds=workflow.detectorIds??[];return{workflow,id:workflow.id,name:workflow.name||`Alert ${workflow.id}`,enabled:workflow.enabled!==!1,lastTriggered:workflow.lastTriggered?timeAgo(workflow.lastTriggered):EMPTY2,actions:actionsLabel(workflow),projects:projectsLabel(detectorIds,detectorsById,detectorsLoading,slugById),monitors:detectorIds.length===0?EMPTY2:monitorsLabel(detectorIds.length)}}function actionsLabel(workflow){let types=workflowActionTypes(workflow);if(types.length===0)return EMPTY2;return types.map(actionTypeLabel).join(", ")}function projectsLabel(detectorIds,detectorsById,detectorsLoading,slugById){if(detectorIds.length===0)return EMPTY2;let detectors=detectorIds.map((id)=>detectorsById.get(id)).filter(isDetector);if(detectors.length===0)return detectorsLoading?"\u2026":EMPTY2;if(detectors.some((detector)=>detector.projectId===null))return"All Projects";let slugs=[...new Set(detectors.map((detector)=>detector.projectId?slugById.get(detector.projectId):void 0).filter((slug)=>Boolean(slug)))];if(slugs.length===0)return detectorsLoading?"\u2026":EMPTY2;return slugs.join(", ")}function isDetector(detector){return detector!==void 0}function monitorsLabel(count2){return`${count2} ${count2===1?"monitor":"monitors"}`}var SCREEN_COMPONENTS={"issues.feed":IssueFeed,"issues.inbox":IssueFeed,"issues.errors-outages":IssueFeed,"issues.breached-metrics":IssueFeed,"issues.warnings":IssueFeed,"issues.configuration":IssueFeed,"issues.user-feedback":IssueFeed,"issues.recently-run":IssueFeed,"issues.all-views":IssueViews,"seer.ask":SeerScreen,"explore.profiles":ProfileFunctions,"explore.releases":ReleaseCards,"explore.replays":ReplayStream,"explore.traces":ExploreTable,"explore.logs":ExploreTable,"explore.metrics":ExploreTable,"explore.errors":ExploreTable,"explore.conversations":ConversationList,"dashboards.all":DashboardList,"dashboards.sentry-built":DashboardList,"monitors.alerts":WorkflowList,"explore.all-queries":SavedQueries,"explore.discover":SavedQueries,"monitors.all":MonitorList,"monitors.mine":MonitorList,"monitors.error":MonitorList,"monitors.metric":MonitorList,"monitors.cron":MonitorList,"monitors.uptime":MonitorList,"monitors.mobile-build":MonitorList};function viewForSentryUrl(detail,state){if(!detail)return;let view;switch(detail.kind){case"issue":view=issueUrlView(detail.issueId,detail.eventId);break;case"dashboard":view=dashboardUrlView(detail.dashboardId);break;case"replay":view=replayUrlView(detail.replayId);break;case"monitor":view=monitorUrlView(detail.detectorId);break;case"issue_view":view=savedViewUrlStream(detail.viewId);break;case"saved_query":view=savedQueryUrlView(detail);break}if(!view.stateKey||!state)return view;return{...view,initialState:{...view.initialState,...state}}}var BREADCRUMB_CHROME_WIDTH=4,APP_REGIONS=["nav","secondary","content"];function useNavigation({client:client2,org,reloadToken,width,initialScreen,initialLocation,initialViewLocations,initialScreenSnapshots,initialSelectedProjects=[],availableNavGroups,focus,canOpen}){let initial=getScreen(initialLocation?.screen??initialScreen),[initialViews]=useState32(()=>{let restored=(initialViewLocations??[]).map((location)=>viewForSentryUrl(location.detail,location.state)).filter((view)=>view!==void 0);if(restored.length>0)return restored;let initialView=viewForSentryUrl(initialLocation?.detail,initialLocation?.state);return initialView?[initialView]:[]}),[navigation,dispatch]=useReducer4(navigationReducer,void 0,()=>initialNavigationModel(initial.group,initial.item,initialViews)),{railGroup,activeGroup,activeItem,navExpanded,showSecondary,gotoMode,viewStack}=navigation,screen=findScreen(activeGroup,activeItem),ScreenComponent=screen?SCREEN_COMPONENTS[screen.id]:void 0,topView=viewStack.at(-1),detailView=topView&&!topView.stateKey?topView:void 0,listActive=!detailView&&(ScreenComponent!==void 0||topView!==void 0),activeStatefulView=[...viewStack].reverse().find((view)=>view.stateKey),activeKey=activeStatefulView?.stateKey??(screen?stateKeyOf(screen):void 0),activeSource=activeStatefulView?.id??screen?.id??activeKey??"__unregistered__",initialTopView=initialViews.at(-1),{active:state,resetOrgScoped,seed,snapshots:screenSnapshots}=useScreenState(activeKey,activeSource,initialSelectedProjects,initialTopView?.stateKey?initialTopView.initialState:initialLocation?.state,initialScreenSnapshots),viewLocations=useMemo32(()=>viewStack.map((view)=>view.sentryLocation),[viewStack]),navExtras=useSecondaryNavExtras(client2,org,railGroup,reloadToken),secondaryItems=useMemo32(()=>navItemsFor(railGroup,navExtras),[railGroup,navExtras]),pushView=useCallback39((view)=>{if(view.stateKey&&view.initialState)seed(view.stateKey,view.initialState);dispatch({type:"pushView",view})},[seed]),updateView=useCallback39((id,update)=>{dispatch({type:"updateView",id,update})},[]),popView=useCallback39(()=>dispatch({type:"popView"}),[]),clearViews=useCallback39(()=>dispatch({type:"clearViews"}),[]),navigateTo=useCallback39((group,item)=>{dispatch({type:"navigate",group,item}),state.dispatch({type:"setDetailOpen",payload:!1}),focus.focus("content")},[focus,state.dispatch]),navigateToScreen=useCallback39((screenId,initialState)=>{let target=getScreen(screenId);if(!availableNavGroups.some((group)=>group.id===target.group))return;if(initialState)seed(stateKeyOf(target),initialState);navigateTo(target.group,target.item)},[availableNavGroups,navigateTo,seed]),openNavGroup=useCallback39((group)=>{let sole=soleNavItem(getNavGroup(group));if(sole!==void 0){navigateTo(group,sole);return}let startItem=group===activeGroup?activeItem:getNavGroup(group).sections[0]?.items[0]??"";dispatch({type:"openGroup",group,item:startItem}),focus.focus("secondary")},[activeGroup,activeItem,focus,navigateTo]),expandNav=useCallback39(()=>{dispatch({type:"expandNav"}),focus.focus("nav")},[focus]),selectNavItem=useCallback39((item)=>{let target=navTargetOf(railGroup,item);navigateTo(target.group,target.item);let view=item.open?.();if(view)pushView(view)},[railGroup,navigateTo,pushView]),gotoHotkeys=useMemo32(()=>gotoMode?buildGotoHotkeys(railGroup,availableNavGroups):null,[gotoMode,railGroup,availableNavGroups]),previewNavGroup=useCallback39((group)=>{let sole=soleNavItem(getNavGroup(group));if(sole!==void 0){navigateTo(group,sole);return}let item=group===activeGroup?activeItem:navItemsFor(group,navExtras)[0]?.label??"";dispatch({type:"previewGroup",group,item})},[activeGroup,activeItem,navExtras,navigateTo]),replaceIssue=useCallback39((next)=>{state.dispatch({type:"setEntries",payload:(rows)=>{let groups=rows;return groups.some((row)=>row?.id===next.id)?groups.map((row)=>row?.id===next.id?next:row):rows}}),dispatch({type:"replaceIssue",issue:next})},[state.dispatch]),showSecondaryPane=showSecondary||gotoMode,secondaryWidth=showSecondaryPane?SECONDARY_NAV_WIDTH:0,contentWidth=Math.max(20,width-(navExpanded?NAV_RAIL_WIDTH:COLLAPSED_NAV_RAIL_WIDTH)-secondaryWidth-2),backTarget=viewStack.at(-2)?.label??activeItem,breadcrumb=useMemo32(()=>{if(viewStack.length===0)return;let trail=breadcrumbTrail([getNavGroup(activeGroup).label,activeItem,...viewStack.map((view)=>view.label)],Math.max(0,contentWidth-BREADCRUMB_CHROME_WIDTH-detailBackWidth(backTarget,contentWidth)));return trail?` ${trail} `:void 0},[viewStack,activeGroup,activeItem,contentWidth,backTarget]),statusHints=useMemo32(()=>{if(gotoMode)return[{command:"sentry.nav.back",label:"cancel"}];if(state.searchFocused)return[{command:"sentry.nav.open",label:"submit"},{command:"sentry.nav.back",label:"cancel"}];let back=topView?[{command:"sentry.nav.back",label:"back"}]:[],list=detailView?canOpen?[{command:"sentry.nav.open",label:"open"}]:[]:[...canOpen?[{command:"sentry.nav.open",label:state.detailOpen?"close":screen?.openLabel??"open"}]:[],{command:"sentry.nav.search",label:"search"}];return[...back,...list,{command:"sentry.nav.goto",label:"nav"},{command:"sentry.app.commandPalette",label:"commands"},{command:"sentry.app.help",label:"help"},...topView?[]:[{command:"sentry.app.quit",label:"quit"}]]},[gotoMode,state.searchFocused,state.detailOpen,topView,detailView,screen,canOpen]);return{...navigation,dispatch,showSecondaryPane,topView,detailView,listActive,screen,ScreenComponent,state,viewLocations,screenSnapshots,resetOrgScoped,seed,navExtras,secondaryItems,gotoHotkeys,contentWidth,breadcrumb,backTarget,statusHints,navigateTo,navigateToScreen,openNavGroup,expandNav,selectNavItem,previewNavGroup,pushView,popView,clearViews,updateView,replaceIssue}}import{useEffect as useEffect48,useMemo as useMemo33}from"h:0__";import{abandonNavigation,beginNavigation,breadcrumb,endNavigation,isTelemetryEnabled}from"h:7___________________________________";var SETTLE_DEBOUNCE_MS=250;function useNavigationTrace(group,item,loading){let name=`${getNavGroup(group).label} \u203A ${item}`,on=isTelemetryEnabled();useMemo33(()=>{if(!on)return;beginNavigation(name),breadcrumb({category:"navigation",message:name})},[name,on]),useEffect48(()=>on?()=>abandonNavigation(name):void 0,[name,on]),useEffect48(()=>{if(!on||loading)return;let settledAt=Date.now(),settle=setTimeout(()=>endNavigation(name,settledAt),SETTLE_DEBOUNCE_MS);return()=>clearTimeout(settle)},[name,loading,on])}import{useCallback as useCallback40,useEffect as useEffect49,useState as useState33}from"h:0__";import{checkForUpdate,watchForUpdate}from"h:9________________________________";function useUpdateCheck(){let[update,setUpdate]=useState33(void 0);useEffect49(()=>watchForUpdate(setUpdate),[]);let checkNow=useCallback40(async()=>{let found=await checkForUpdate();return setUpdate(found),found},[]);return{update,checkNow}}import{useCallback as useCallback41,useRef as useRef34,useState as useState34}from"h:0__";function useTriage(client2,org,{onOptimistic,onNotice}){let[pending,setPending]=useState34(()=>new Set),controllers=useRef34(new Map),run=useCallback41((commandId,group)=>{let action=findTriageAction(commandId);if(!action||!client2)return;let update=action.update(group);if(!update){onNotice({kind:"warning",text:noOpNotice(commandId)});return}let original=group,optimistic=applyUpdate(group,update);onOptimistic(optimistic),controllers.current.get(group.id)?.abort();let controller=new AbortController;controllers.current.set(group.id,controller),setPending((current)=>new Set(current).add(group.id));let settle=()=>setPending((current)=>{let next=new Set(current);return next.delete(group.id),next});(async()=>{try{let confirmed=await updateIssue(client2,{org,issueId:group.id,update,signal:controller.signal});if(controller.signal.aborted)return;onOptimistic({...optimistic,...confirmed}),onNotice({kind:"success",text:`${action.pastTense} ${group.shortId}`})}catch(error){if(controller.signal.aborted)return;onOptimistic(original),onNotice({kind:"error",text:`failed: ${error instanceof ApiError?error.message:String(error)}`})}finally{if(!controller.signal.aborted)controllers.current.delete(group.id),settle()}})()},[client2,org,onOptimistic,onNotice]);return{pending,run}}var FILTER_COMMAND_DROPDOWN={"sentry.view.filterProject":"project","sentry.view.filterEnv":"env","sentry.view.filterDate":"date"},FILTER_COMMAND_ENTRIES=Object.entries(FILTER_COMMAND_DROPDOWN);function createOverlayHandler({showOpenUrl,showPalette,showHelp,showSeerAutofix,setShowHelp}){return(key)=>{if(showOpenUrl||showPalette||showSeerAutofix)return"focused";if(!showHelp)return"notMine";if(matchesCommand("sentry.nav.back",key)||matchesCommand("sentry.app.help",key))setShowHelp(!1);return"mine"}}function createDropdownHandler({state,showOrgPicker}){return(key)=>{if(!state.openDropdown&&!showOrgPicker&&!isDropdownMounted())return"notMine";if(state.openDropdown&&!isDropdownMounted()&&matchesCommand("sentry.nav.back",key))return state.dispatch({type:"setOpenDropdown",payload:null}),"mine";return"focused"}}function createPaletteOpenHandler({state,screenActions,setShowPalette}){return(key)=>{if(!matchesCommand("sentry.app.commandPalette",key))return"notMine";if(state.searchFocused)state.cancelSearch();if(screenActions.current?.inputFocused?.())screenActions.current.blurInput?.();return setShowPalette(!0),"mine"}}function createUrlOpenHandler({state,screenActions,setShowOpenUrl}){return(key)=>{if(!matchesCommand("sentry.app.openUrl",key))return"notMine";if(state.searchFocused)state.cancelSearch();if(screenActions.current?.inputFocused?.())screenActions.current.blurInput?.();return setShowOpenUrl(!0),"mine"}}function createScreenInputHandler({screenActions}){return(key)=>{let actions=screenActions.current;if(!actions?.inputFocused?.())return"notMine";if(matchesCommand("sentry.nav.back",key))return actions.blurInput?.(),"mine";if(matchesCommand("sentry.nav.open",key))return actions.submitInput?.()?"mine":"focused";if(actions.handleInputKey?.(key))return"mine";if(matchesCommand("sentry.app.focusNext",key)||matchesCommand("sentry.app.focusPrev",key))return actions.blurInput?.(),"notMine";return"focused"}}function createSearchHandler({state}){return(key)=>{if(!state.searchFocused)return"notMine";if(matchesCommand("sentry.nav.back",key))return state.cancelSearch(),"mine";if(matchesCommand("sentry.nav.open",key))return state.submitSearch(),"mine";return"focused"}}function createGotoHandler({navigation,setShowOrgPicker}){return(key)=>{if(!navigation.gotoMode){if(!matchesCommand("sentry.nav.goto",key))return"notMine";return navigation.dispatch({type:"openGoto"}),"mine"}if(matchesCommand("sentry.nav.goto",key)||matchesCommand("sentry.nav.back",key)||key.ctrl||key.meta||key.shift)return navigation.dispatch({type:"closeGoto"}),"mine";if(matchesCommand("sentry.app.switchOrg",key))return navigation.dispatch({type:"closeGoto"}),setShowOrgPicker(!0),"mine";let target=navigation.gotoHotkeys?.byKey.get(key.name.toLowerCase());if(target?.kind==="group")return navigation.previewNavGroup(target.group),"mine";if(target?.kind==="item")return navigation.navigateTo(navigation.railGroup,target.item),"mine";return navigation.dispatch({type:"closeGoto"}),"mine"}}function createViewStackHandler({navigation}){return(key)=>{if(!navigation.topView||navigation.showSecondary)return"notMine";if(!matchesCommand("sentry.nav.back",key))return"notMine";return navigation.popView(),"mine"}}function createScreenBackHandler({navigation,focus,screenActions}){return(key)=>{if(navigation.topView)return"notMine";if(focus.focusedRef.current!=="content")return"notMine";if(!matchesCommand("sentry.nav.back",key))return"notMine";return screenActions.current?.back?.()?"mine":"notMine"}}function createSecondaryNavCloseHandler({navigation,focus}){return(key)=>{if(!navigation.showSecondary||!matchesCommand("sentry.nav.back",key))return"notMine";return navigation.dispatch({type:"closeSecondary"}),focus.focus("nav"),"mine"}}function createGlobalCommandHandler({navigation,state,focus,setShowHelp,setShowOrgPicker,refresh:refresh2,runUpdate,openInBrowser,onQuit}){return(key)=>{if(navigation.listActive&&focus.focusedRef.current==="content"){for(let[commandId,which]of FILTER_COMMAND_ENTRIES){if(!matchesCommand(commandId,key))continue;if(isFilterBarMounted(which))state.dispatch({type:"setOpenDropdown",payload:which});return"mine"}if(matchesCommand("sentry.view.sort",key)&&isSortSelectorMounted())return state.dispatch({type:"setOpenDropdown",payload:"sort"}),"mine"}if(matchesCommand("sentry.app.help",key))return setShowHelp(!0),"mine";if(matchesCommand("sentry.app.refresh",key))return refresh2(),"mine";if(matchesCommand("sentry.app.switchOrg",key))return setShowOrgPicker(!0),"mine";if(matchesCommand("sentry.app.update",key))return runUpdate(),"mine";if(matchesCommand("sentry.app.openInBrowser",key))return openInBrowser(),"mine";if(matchesCommand("sentry.app.quit",key))return onQuit(),"mine";if(matchesCommand("sentry.app.focusNext",key)){if(!navigation.navExpanded)return focus.focus("content"),"mine";let current=focus.focusedRef.current;if(navigation.showSecondary)focus.focus(current==="nav"?"secondary":"nav");else focus.focus(current==="nav"?"content":"nav");return"mine"}if(matchesCommand("sentry.app.focusPrev",key)){if(!navigation.navExpanded)return focus.focus("content"),"mine";let current=focus.focusedRef.current;if(navigation.showSecondary)focus.focus(current==="secondary"?"nav":"secondary");else focus.focus(current==="content"?"nav":"content");return"mine"}return"notMine"}}function createTriageHandler({activeIssue,focus,triage}){return(key)=>{if(!activeIssue||focus.focusedRef.current!=="content")return"notMine";for(let action of TRIAGE_ACTIONS){if(!matchesCommand(action.commandId,key))continue;return triage(action.commandId,activeIssue),"mine"}return"notMine"}}function createNavRailHandler({navigation,focus,availableNavGroups}){return(key)=>{if(focus.focusedRef.current!=="nav")return"notMine";if(matchesCommand("sentry.nav.open",key))return navigation.openNavGroup(navigation.railGroup),"mine";let index=availableNavGroups.findIndex((group)=>group.id===navigation.railGroup),step=matchesCommand("sentry.nav.down",key)?1:matchesCommand("sentry.nav.up",key)?-1:0;if(step===0)return"notMine";let next=availableNavGroups[(index+step+availableNavGroups.length)%availableNavGroups.length];return navigation.dispatch({type:"selectRailGroup",group:next.id}),"mine"}}function createSecondaryNavHandler({navigation,focus}){return(key)=>{if(!navigation.showSecondary||focus.focusedRef.current!=="secondary")return"notMine";let index=navigation.secondaryItems.findIndex((item)=>item.label===navigation.secondaryItem);if(matchesCommand("sentry.nav.open",key)){let item=navigation.secondaryItems[index]??navigation.secondaryItems[0];if(item)navigation.selectNavItem(item);return"mine"}let step=matchesCommand("sentry.nav.down",key)?1:matchesCommand("sentry.nav.up",key)?-1:0;if(step===0)return"notMine";let next=Math.max(0,Math.min(index+step,navigation.secondaryItems.length-1));return navigation.dispatch({type:"selectSecondaryItem",item:navigation.secondaryItems[next]?.label??navigation.secondaryItem}),"mine"}}function createScreenKeyHandler({screenActions,focus}){return(key)=>{let actions=screenActions.current;if(!actions||!focus.isFocused("content"))return"notMine";if(actions.openDetail&&matchesCommand("sentry.nav.open",key))return actions.openDetail(),"mine";return actions.handleKey?.(key)?"mine":"notMine"}}function createSearchFocusHandler({navigation,state,focus}){return(key)=>{if(!navigation.listActive||focus.focusedRef.current!=="content")return"notMine";if(!matchesCommand("sentry.nav.search",key))return"notMine";return state.focusSearch(),"mine"}}function createListCursorHandler({navigation,state,screenActions,focus}){return(key)=>{if(!navigation.listActive||focus.focusedRef.current!=="content")return"notMine";let last=Math.max(0,state.entries.length-1);if(matchesCommand("sentry.nav.pageDown",key))return screenActions.current?.nextPage?.()?"mine":"notMine";if(matchesCommand("sentry.nav.pageUp",key))return screenActions.current?.previousPage?.()?"mine":"notMine";if(matchesCommand("sentry.nav.open",key)){let open=screenActions.current?.open;if(!open)return"notMine";return open(state.selected),"mine"}if(matchesCommand("sentry.nav.down",key))return state.dispatch({type:"setSelected",payload:(index)=>Math.min(index+1,last)}),"mine";if(matchesCommand("sentry.nav.up",key))return state.dispatch({type:"setSelected",payload:(index)=>Math.max(index-1,0)}),"mine";if(matchesCommand("sentry.nav.top",key))return state.dispatch({type:"setSelected",payload:0}),"mine";if(matchesCommand("sentry.nav.bottom",key))return state.dispatch({type:"setSelected",payload:last}),"mine";return"notMine"}}function createAppKeyHandlers(options){return[createOverlayHandler(options),createDropdownHandler(options),createPaletteOpenHandler(options),createUrlOpenHandler(options),createScreenInputHandler(options),createSearchHandler(options),createGotoHandler(options),createViewStackHandler(options),createScreenBackHandler(options),createSecondaryNavCloseHandler(options),createGlobalCommandHandler(options),createTriageHandler(options),createNavRailHandler(options),createSecondaryNavHandler(options),createScreenKeyHandler(options),createSearchFocusHandler(options),createListCursorHandler(options)]}import{jsxDEV as jsxDEV65}from"h:6___________________________";var DEFAULT_SCREEN="issues.feed";function persistConfig(updates){writeConfig(updates).catch((error)=>{reportError3(error,{source:"app.config.write_failed"})})}function App({onQuit,client:client2=null,org:initialOrg="",initialScreen=DEFAULT_SCREEN,initialLocation,initialProjectsByOrg={},user:user2,initialSeerCodeModeByOrg={},initialSeerBashModeByOrg={},initialSeerShowThinkingByOrg={},onApplyUpdate,onOpenUrl,initialSessionSnapshot,onSessionSnapshot}){let theme=useTheme(),{width,height}=useTerminalDimensions5(),[restoredSession]=useState35(()=>restoreAppSessionSnapshot(initialSessionSnapshot)),restoredSnapshot=restoredSession?.snapshot,startupLocation=restoredSession?.location??initialLocation,[projectsByOrg,setProjectsByOrg]=useState35(()=>Object.fromEntries(Object.entries({...initialProjectsByOrg,...restoredSnapshot?.projectsByOrg}).map(([slug,projects])=>[slug,[...projects]]))),projectsByOrgRef=useRef35(projectsByOrg),[seerCodeModeByOrg,setSeerCodeModeByOrg]=useState35(()=>({...initialSeerCodeModeByOrg,...restoredSnapshot?.seerCodeModeByOrg})),[seerBashModeByOrg,setSeerBashModeByOrg]=useState35(()=>({...initialSeerBashModeByOrg,...restoredSnapshot?.seerBashModeByOrg})),[seerShowThinkingByOrg,setSeerShowThinkingByOrg]=useState35(()=>({...initialSeerShowThinkingByOrg,...restoredSnapshot?.seerShowThinkingByOrg})),[org,setOrg]=useState35(startupLocation?.org??restoredSnapshot?.org??initialOrg),[showHelp,setShowHelp]=useState35(!1),[showPalette,setShowPalette]=useState35(!1),[showOpenUrl,setShowOpenUrl]=useState35(!1),[showOrgPicker,setShowOrgPicker]=useState35(!1),[autofixIssue,setAutofixIssue]=useState35(),[webUrlFallback,setWebUrlFallback]=useState35(),[avatarUrl,setAvatarUrl]=useState35(),[orgFeatures,setOrgFeatures]=useState35(),[currentUser,setCurrentUser]=useState35(user2),seerAvailable=orgFeatures===void 0||orgFeatures.includes("seer-explorer"),availableNavGroups=useMemo34(()=>NAV_GROUPS.filter((group)=>group.id!=="seer"||seerAvailable),[seerAvailable]),[reloadToken,setReloadToken]=useState35(0),refresh2=useCallback42(()=>setReloadToken((n)=>n+1),[]),[canOpen,setCanOpen]=useState35(!1),focus=useFocusRing(APP_REGIONS,"content"),navigation=useNavigation({client:client2,org,reloadToken,width,initialScreen,initialLocation:startupLocation,initialViewLocations:restoredSession?.viewStack,initialScreenSnapshots:restoredSnapshot?.navigation.screens,initialSelectedProjects:projectsByOrg[org]??[],availableNavGroups,focus,canOpen}),{activeGroup,activeItem,backTarget,breadcrumb:breadcrumb2,clearViews,contentWidth,detailView,expandNav,gotoHotkeys,gotoMode,listActive,navigateTo,navigateToScreen,navExpanded,navExtras,openNavGroup,pushView,railGroup,replaceIssue,resetOrgScoped,screen,ScreenComponent,secondaryItem,seed,selectNavItem,showSecondaryPane,state,statusHints,topView,updateView,viewLocations,screenSnapshots}=navigation;useEffect50(()=>{if(setAvatarUrl(void 0),setOrgFeatures(void 0),!client2||!org)return;let controller=new AbortController;return getOrganization2(client2,{org,signal:controller.signal}).then((orgData)=>{if(orgData.avatar?.avatarUrl)setAvatarUrl(orgData.avatar.avatarUrl);if(Array.isArray(orgData.features))setOrgFeatures(orgData.features)}).catch(()=>{}),()=>controller.abort()},[client2,org]),useEffect50(()=>{if(user2?.email||!client2){setCurrentUser(user2);return}if(activeGroup!=="seer")return;let controller=new AbortController;return getCurrentUser(client2,controller.signal).then(setCurrentUser).catch(()=>{}),()=>controller.abort()},[activeGroup,client2,user2]);let setSeerCodeMode=useCallback42((mode)=>{setSeerCodeModeByOrg((current)=>{let next={...current,[org]:mode};return persistConfig({seerCodeModeByOrg:next}),next})},[org]),setSeerBashMode=useCallback42((enabled)=>{setSeerBashModeByOrg((current)=>{let next={...current,[org]:enabled};return persistConfig({seerBashModeByOrg:next}),next})},[org]),setSeerShowThinking=useCallback42((enabled)=>{setSeerShowThinkingByOrg((current)=>{let next={...current,[org]:enabled};return persistConfig({seerShowThinkingByOrg:next}),next})},[org]),selectProjects=useCallback42((projects)=>{state.dispatch({type:"setSelectedProjects",payload:projects});let next={...projectsByOrgRef.current,[org]:[...projects]};projectsByOrgRef.current=next,setProjectsByOrg(next),persistConfig({projectsByOrg:next})},[org,state.dispatch]);useNavigationTrace(activeGroup,activeItem,state.status.loading);let seerChat=useSeerChat(client2,org,{features:orgFeatures,isEmployee:currentUser?.email?.toLowerCase().endsWith("@sentry.io")===!0,userId:currentUser?.id,pageName:screen?.id,codeMode:seerCodeModeByOrg[org]??"only",bashMode:seerBashModeByOrg[org]??!1,showThinking:seerShowThinkingByOrg[org]??!1,initialRunId:restoredSnapshot?.seerRunId,onCodeModeChange:setSeerCodeMode,onBashModeChange:setSeerBashMode,onShowThinkingChange:setSeerShowThinking}),currentSentryLocation=useMemo34(()=>{let route=topView?.sentryLocation??(screen?{screen:screen.id}:void 0);if(!route)return;let routeState=!topView&&screen?.kind!=="chat"||Boolean(topView?.stateKey)?{...route.state,query:state.committedQuery,sort:state.sort,statsPeriod:state.statsPeriod,selectedProjects:[...state.selectedProjects],selectedEnvs:[...state.selectedEnvs]}:route.state;return{org,...route,state:routeState,...route.screen==="seer.ask"&&seerChat.runId!==null?{seerRunId:seerChat.runId}:{}}},[org,screen,seerChat.runId,state,topView]),sessionSnapshot=useMemo34(()=>{if(!onSessionSnapshot||!org||!currentSentryLocation)return;let lastView=viewLocations.length-1;return createAppSessionSnapshot({org,navigation:{location:buildSentryUrl(currentSentryLocation),viewStack:viewLocations.map((location,index)=>buildSentryUrl(index===lastView?currentSentryLocation:{org,...location})),screens:{...screenSnapshots}},projectsByOrg:Object.fromEntries(Object.entries(projectsByOrg).map(([slug,projects])=>[slug,[...projects]])),seerCodeModeByOrg:{...seerCodeModeByOrg},seerBashModeByOrg:{...seerBashModeByOrg},seerShowThinkingByOrg:{...seerShowThinkingByOrg},...seerChat.runId===null?{}:{seerRunId:seerChat.runId}})},[currentSentryLocation,onSessionSnapshot,org,projectsByOrg,screenSnapshots,seerBashModeByOrg,seerChat.runId,seerCodeModeByOrg,seerShowThinkingByOrg,viewLocations]);useEffect50(()=>{if(sessionSnapshot)onSessionSnapshot?.(sessionSnapshot)},[onSessionSnapshot,sessionSnapshot]);let openInBrowser=useCallback42(()=>{if(!currentSentryLocation)return;let url=buildSentryUrl(currentSentryLocation);if(!onOpenUrl){setWebUrlFallback(url);return}Promise.resolve(onOpenUrl(url)).then((opened)=>{if(!opened)setWebUrlFallback(url)}).catch(()=>setWebUrlFallback(url))},[currentSentryLocation,onOpenUrl]),screenActions=useRef35(null),registerActions=useCallback42((actions)=>{screenActions.current=actions,setCanOpen(Boolean(actions?.open||actions?.openDetail))},[]),[transientNotice,setTransientNotice]=useState35(null),noticeTimer=useRef35(void 0),showNotice=useCallback42((notice)=>{setTransientNotice(notice),clearTimeout(noticeTimer.current),noticeTimer.current=setTimeout(()=>setTransientNotice(null),4000)},[]);useEffect50(()=>()=>clearTimeout(noticeTimer.current),[]);let switchOrg=useCallback42((slug)=>{if(setShowOrgPicker(!1),!slug||slug===org)return;setOrg(slug),clearViews(),resetOrgScoped(projectsByOrgRef.current[slug]??[]),showNotice({kind:"info",text:`switched to ${slug}`}),identify({org:slug}),leaveCrumb({category:"navigation",message:`switched org to ${slug}`}),log2("info","ui.org.switched",{org:slug}),persistConfig({org:slug})},[clearViews,org,resetOrgScoped,showNotice]),triage=useTriage(client2,org,{onOptimistic:replaceIssue,onNotice:showNotice}),openIssueAutofix=useCallback42((issue)=>{if(!seerChat.capabilities.available){showNotice({kind:"error",text:"Seer is not enabled for this organization"});return}seerChat.reset(),setAutofixIssue(issue)},[seerChat,showNotice]),activeIssue=topView?.issue??(activeGroup==="issues"?rowsOf(state)[state.selected]:void 0);useEffect50(()=>{if(activeGroup==="seer"&&!seerAvailable)navigateToScreen(DEFAULT_SCREEN)},[activeGroup,navigateToScreen,seerAvailable]);let openSentryLocation=useCallback42((location)=>{let target=getScreen(location.screen);if(location.org!==org)switchOrg(location.org);navigateTo(target.group,target.item);let view=viewForSentryUrl(location.detail,location.state);if(view){if(!view.stateKey&&location.state)seed(stateKeyOf(target),location.state);pushView(view)}else if(location.state)seed(stateKeyOf(target),location.state)},[navigateTo,org,pushView,seed,switchOrg]),submitSentryUrl=useCallback42((url)=>{let result=parseSentryUrl(url);if(result.kind!=="location")return recordSentryUrlFailure(result,"command_palette"),result;openSentryLocation(result.location),setShowOpenUrl(!1);return},[openSentryLocation]),{update:pendingUpdate,checkNow:checkForUpdate2}=useUpdateCheck(),updateReady=Boolean(pendingUpdate&&onApplyUpdate),runUpdateCheck=useCallback42(()=>{showNotice({kind:"loading",text:"checking for updates\u2026"}),checkForUpdate2().then((found)=>{showNotice(found?{kind:"success",text:`update ${found.version} ready`}:{kind:"idle",text:"already up to date"})})},[checkForUpdate2,showNotice]),runUpdate=useCallback42(()=>{if(!pendingUpdate||!onApplyUpdate){showNotice({kind:"idle",text:"already up to date"});return}Promise.resolve(onApplyUpdate(pendingUpdate)).then((applied)=>{if(!applied)showNotice({kind:"error",text:"update could not be applied"})})},[pendingUpdate,onApplyUpdate,showNotice]),paletteActions=useMemo34(()=>buildPaletteActions({streamView:listActive,hasIssue:Boolean(activeIssue),updateReady},availableNavGroups),[listActive,activeIssue,updateReady,availableNavGroups]),runPaletteAction=useCallback42((action)=>{if(setShowPalette(!1),action.target.kind==="nav"){navigateTo(action.target.group,action.target.item);return}let{commandId}=action.target;switch(commandId){case"sentry.app.quit":onQuit();return;case"sentry.app.help":setShowHelp(!0);return;case"sentry.app.refresh":refresh2();return;case"sentry.app.checkForUpdates":runUpdateCheck();return;case"sentry.app.switchOrg":setShowOrgPicker(!0);return;case"sentry.app.openUrl":setShowOpenUrl(!0);return;case"sentry.app.openInBrowser":openInBrowser();return;case"sentry.app.update":runUpdate();return;case"sentry.nav.search":focus.focus("content"),state.focusSearch();return;case"sentry.view.filterProject":case"sentry.view.filterEnv":case"sentry.view.filterDate":{if(!isFilterBarMounted(FILTER_COMMAND_DROPDOWN[commandId]))return;focus.focus("content"),state.dispatch({type:"setOpenDropdown",payload:FILTER_COMMAND_DROPDOWN[commandId]});return}default:if(findTriageAction(commandId)&&activeIssue)triage.run(commandId,activeIssue)}},[activeIssue,focus,navigateTo,onQuit,openInBrowser,refresh2,runUpdate,runUpdateCheck,state,triage]),activateRow=useCallback42((index)=>{let confirming=focus.focusedRef.current==="content"&&index===state.selected;if(state.dispatch({type:"setSelected",payload:index}),navigation.dispatch({type:"closeSecondary"}),focus.focus("content"),confirming)screenActions.current?.open?.(index)},[focus,navigation,state]),keyHandlers=createAppKeyHandlers({showOpenUrl:showOpenUrl||Boolean(webUrlFallback),showPalette,showHelp,showOrgPicker,showSeerAutofix:Boolean(autofixIssue),setShowOpenUrl,setShowPalette,setShowHelp,setShowOrgPicker,navigation,state,screenActions,focus,availableNavGroups,activeIssue,triage:triage.run,refresh:refresh2,runUpdate,openInBrowser,onQuit});useKeyboard8((key)=>{routeKeyOwnership(keyHandlers,key,consumeKey)});let contentHeight=Math.max(3,height-3),contentFocused=focus.isFocused("content")&&!showOrgPicker&&!autofixIssue,paneProps={client:client2,org,focused:contentFocused,width:contentWidth,height:contentHeight,reloadToken,onProjectSelect:selectProjects,pendingIds:triage.pending,runIssueAction:triage.run,openIssueAutofix,pushView,notify:showNotice,activateRow,registerActions,updateView,navigateToScreen};return jsxDEV65("box",{style:{width:"100%",height:"100%",flexDirection:"column",backgroundColor:theme.bg},children:[jsxDEV65("box",{style:{flexGrow:1,flexDirection:"row"},children:[jsxDEV65(NavRail,{active:railGroup,expanded:navExpanded,focused:focus.isFocused("nav"),avatarUrl,orgSlug:org,groups:availableNavGroups,hotkeys:gotoHotkeys?.groups,onSelect:openNavGroup,onExpand:expandNav,onOrgPress:()=>setShowOrgPicker(!0)},void 0,!1,void 0,this),showSecondaryPane?jsxDEV65(SecondaryNav,{group:railGroup,activeItem:secondaryItem,focused:focus.isFocused("secondary"),extras:navExtras,hotkeys:gotoHotkeys?.items,onSelect:selectNavItem},void 0,!1,void 0,this):null,jsxDEV65("box",{title:breadcrumb2,titleColor:theme.accent,style:{flexGrow:1,flexDirection:"column",overflow:"hidden",border:!0,borderColor:contentFocused&&!state.searchFocused?theme.borderFocused:theme.border},children:jsxDEV65(SeerChatContext.Provider,{value:seerChat,children:topView?topView.render({...paneProps,state:topView.stateKey?state:void 0,issue:topView.issue}):ScreenComponent&&screen?jsxDEV65(ScreenComponent,{...paneProps,screen,state},screen.id,!1,void 0,this):jsxDEV65("box",{style:{flexDirection:"column",paddingLeft:1},children:[jsxDEV65("text",{fg:theme.text,attributes:1,children:`${getNavGroup(activeGroup).label} \u203A ${activeItem}`},void 0,!1,void 0,this),jsxDEV65("text",{fg:theme.muted,children:"Not implemented yet."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),topView?jsxDEV65(DetailBackRow,{parent:backTarget,top:0,right:width-1,paneWidth:contentWidth},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),jsxDEV65(StatusBar,{notice:gotoMode?{kind:"info",text:"go to\u2026"}:transientNotice??(detailView?{kind:"idle",text:detailView.label??""}:toNotice(state.status)),since:detailView||gotoMode?void 0:state.status.since,hints:statusHints,onUpdate:updateReady?runUpdate:void 0},void 0,!1,void 0,this),showHelp?jsxDEV65(HelpDialog,{onClose:()=>setShowHelp(!1)},void 0,!1,void 0,this):null,showPalette?jsxDEV65(CommandPalette,{actions:paletteActions,onRun:runPaletteAction,onClose:()=>setShowPalette(!1)},void 0,!1,void 0,this):null,showOpenUrl?jsxDEV65(OpenSentryUrlDialog,{onSubmit:submitSentryUrl,onClose:()=>setShowOpenUrl(!1)},void 0,!1,void 0,this):null,showOrgPicker?jsxDEV65(OrgPicker,{client:client2,currentOrg:org,anchorLeft:ORG_HEADER_ANCHOR_LEFT,anchorTop:ORG_HEADER_ANCHOR_TOP,onSelect:switchOrg,onClose:()=>setShowOrgPicker(!1)},void 0,!1,void 0,this):null,webUrlFallback?jsxDEV65(WebUrlDialog,{url:webUrlFallback,onClose:()=>setWebUrlFallback(void 0)},void 0,!1,void 0,this):null,autofixIssue?jsxDEV65(IssueAutofixModal,{issue:autofixIssue,chat:seerChat,client:client2,org,navigateToScreen,notify:showNotice,onClose:()=>setAutofixIssue(void 0)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function toNotice(status){if(status.error)return{kind:"error",text:status.error};if(status.loading)return{kind:"loading",text:status.noun?`loading ${status.noun}\u2026`:"loading\u2026"};return{kind:"idle",text:""}}import{jsxDEV as jsxDEV66}from"h:6___________________________";var payload={version:APP_VERSION,hostApiVersion:HOST_API_VERSION};function PayloadApp({theme,...props}){return jsxDEV66(ThemeProvider,{...theme,children:jsxDEV66(App,{...props},void 0,!1,void 0,this)},void 0,!1,void 0,this)}export{PayloadApp,payload};
|
|
19
20
|
|
|
20
|
-
//# debugId=
|
|
21
|
-
//# sourceMappingURL=app.mjs.map
|
|
21
|
+
//# debugId=0FD5B9E8FFDA553364756E2164756E21
|