@billyvg/sentry-tui-app 0.13.0 → 0.14.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 CHANGED
@@ -1,21 +1,21 @@
1
+ !function(){try{var e=globalThis,n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="95c7e69d-45f5-7334-6475-6e2164756e21")}catch(e){}}();
1
2
  // @bun
2
- var Hh=import.meta.require;var gc=1,nh=["h:0__","h:1______________","h:2__________________","h:3__________","h:4___________","h:5_______________________","h:6___________________________","h:7___________________________________","h:8________________________________","h:9________________________________"],Hj=Object.fromEntries(nh.map((e,t)=>[e,`h:${t}`.padEnd(e.length,"_")]));var Oc="0.13.0";var Ls=Oc,Is=`v${Ls}`;import{useCallback as _t,useEffect as un,useMemo as ds,useRef as rc,useState as At}from"h:0__";import{useKeyboard as V9,useTerminalDimensions as Z9}from"h:4___________";import{writeConfig as dn}from"h:8________________________________";var sh={bodySerializer:(e)=>JSON.stringify(e,(t,r)=>typeof r==="bigint"?r.toString():r)},ih={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},aj=Object.entries(ih),ah=({onRequest:e,onSseError:t,onSseEvent:r,responseTransformer:H,responseValidator:n,sseDefaultRetryDelay:o,sseMaxRetryAttempts:s,sseMaxRetryDelay:i,sseSleepFn:a,url:l,...c})=>{let A,u=a??((g)=>new Promise((p)=>setTimeout(p,g)));return{stream:async function*(){let g=o??3000,p=0,O=c.signal??new AbortController().signal;while(!0){if(O.aborted)break;p++;let y=c.headers instanceof Headers?c.headers:new Headers(c.headers);if(A!==void 0)y.set("Last-Event-ID",A);try{let L={redirect:"follow",...c,body:c.serializedBody,headers:y,signal:O},f=new Request(l,L);if(e)f=await e(l,L);let I=await(c.fetch??globalThis.fetch)(f);if(!I.ok)throw Error(`SSE failed: ${I.status} ${I.statusText}`);if(!I.body)throw Error("No body in SSE response");let h=I.body.pipeThrough(new TextDecoderStream).getReader(),b="",w=()=>{try{h.cancel()}catch{}};O.addEventListener("abort",w);try{while(!0){let{done:T,value:q}=await h.read();if(T)break;b+=q,b=b.replace(/\r\n/g,`
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.14.0";var APP_VERSION=app,APP_VERSION_LABEL=`v${APP_VERSION}`;import{useCallback as useCallback42,useEffect as useEffect50,useMemo as useMemo33,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 E=b.split(`
5
+ `);let chunks=buffer.split(`
5
6
 
6
- `);b=E.pop()??"";for(let D of E){let x=D.split(`
7
- `),P=[],N;for(let U of x)if(U.startsWith("data:"))P.push(U.replace(/^data:\s*/,""));else if(U.startsWith("event:"))N=U.replace(/^event:\s*/,"");else if(U.startsWith("id:"))A=U.replace(/^id:\s*/,"");else if(U.startsWith("retry:")){let z=Number.parseInt(U.replace(/^retry:\s*/,""),10);if(!Number.isNaN(z))g=z}let F,j=!1;if(P.length){let U=P.join(`
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
- `,a-1)+1,a).trim(),p=e.indexOf(`
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),M("text",{fg:t.muted,children:" Try one of these:"},void 0,!1,void 0,this),Un.map((r,H)=>M("text",{fg:t.accent,children:` ${H+1}. ${vr(r,Math.max(1,e-6))[0]??r}`},r,!1,void 0,this)),M("text",{fg:t.subText,children:`
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&&current!==3)return 8;if(previous===0&&current===1||previous!==2&&current===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 useCallback8,useEffect as useEffect12,useRef as useRef6,useState as useState10}from"h:0__";import{useKeyboard as useKeyboard3,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 useCallback7,useContext as useContext2,useEffect as useEffect11,useMemo as useMemo7,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 useCallback6,useMemo as useMemo6,useRef as useRef5}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 Fragment7}from"h:0__";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{useEffect as useEffect10,useState as useState9}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]=useState9();return useEffect10(()=>{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 jsxDEV19}from"h:6___________________________";var BLOCK_EMBEDS=new Set(["dsn","issues","chart","autofix","agentWriteApproval"]),KNOWN_EMBEDS=new Set(["timestamp","docs","dsn","user","issue","issues","chart","autofix","agentWriteApproval"]),STRUCTURED_EMBEDS=new Set(["agentWriteApproval"]),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_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(),issueIsBlock=name==="issue"&&linePrefix===""&&lineSuffix==="";if(!name||!KNOWN_EMBEDS.has(name)){markdown+=raw;continue}let embedData=data??{};if(!embedsEnabled||!BLOCK_EMBEDS.has(name)&&!issueIsBlock){markdown+=inlineEmbed(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 inlineEmbed(name,data){if(name==="timestamp"){let value=stringValue(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()}if(name==="docs"){let title=stringValue(data.title),href=stringValue(data.href);return title&&href?`[${title}](${href})`:title??href??""}if(name==="user")return`@${stringValue(data.name)??"user"}`;if(name==="issue")return`**${stringValue(data.id)??"issue"}**`;if(name==="issues"){let ids=stringArray2(data.ids);return ids.length?ids.map((id)=>`**${id}**`).join(", "):"Issues"}if(name==="dsn")return`\`${stringValue(data.value)??"DSN"}\``;if(name==="autofix")return stringValue(data.result)??"Autofix result";if(name==="chart")return stringValue(data.title)??"Chart";if(name==="agentWriteApproval")return"Seer requested permission to make changes.";return""}function relativeTime(value){let parsed=Date.parse(value);if(Number.isNaN(parsed))return value;let seconds=Math.round((parsed-Date.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 SeerMarkdown({content,width,client:client2=null,org="",streaming=!1,embedsEnabled=!1,structuredContent=null}){let theme=useTheme(),syntaxStyle=useSyntaxStyle(),segments=splitSeerMarkdown(content,embedsEnabled,structuredContent);return jsxDEV19("box",{style:{flexDirection:"column",width},children:segments.map((segment,index)=>{if(segment.kind==="embed"&&segment.name&&segment.data)return jsxDEV19(SeerEmbed,{name:segment.name,data:segment.data,width,client:client2,org},`embed-${index}`,!1,void 0,this);let markdown=segment.content??"";if(!syntaxStyle)return jsxDEV19(Fragment7,{children:wrapText(markdown,Math.max(1,width)).map((line,lineIndex)=>jsxDEV19("text",{fg:theme.text,children:line},lineIndex,!1,void 0,this))},`markdown-${index}`,!1,void 0,this);return jsxDEV19("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)}function SeerEmbed({name,data,width,client:client2,org}){let theme=useTheme(),cardWidth=Math.max(8,width-2);if(name==="issue"){let id=stringValue(data.id)??"Unknown issue";return jsxDEV19(SeerIssueEmbed,{client:client2,org,ids:[id],width:cardWidth},void 0,!1,void 0,this)}if(name==="dsn")return jsxDEV19("box",{style:{width:cardWidth,border:!0,borderColor:theme.border,paddingLeft:1},children:jsxDEV19("text",{fg:theme.accent,children:stringValue(data.value)??"DSN unavailable"},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(name==="issues"){let ids=stringArray2(data.ids);return jsxDEV19(SeerIssueEmbed,{client:client2,org,ids,width:cardWidth},void 0,!1,void 0,this)}if(name==="chart")return jsxDEV19(ChartEmbed,{data,width:cardWidth},void 0,!1,void 0,this);if(name==="autofix"){let step=(stringValue(data.step)??"result").replace(/_/g," "),result=stringValue(data.result)??"No result returned.";return jsxDEV19("box",{style:{flexDirection:"column",width:cardWidth,border:!0,borderColor:theme.accent,paddingLeft:1},children:[jsxDEV19("text",{fg:theme.accent,attributes:BOLD,children:`Autofix \xB7 ${step}`},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.muted,children:stringValue(data.shortId)??""},void 0,!1,void 0,this),wrapText(result,Math.max(1,cardWidth-3)).map((line,index)=>jsxDEV19("text",{fg:theme.text,children:line},index,!1,void 0,this))]},void 0,!0,void 0,this)}if(name==="agentWriteApproval"){let status=stringValue(data.status)??"pending",scopes=stringArray2(data.requiredScopes);return jsxDEV19("box",{style:{flexDirection:"column",width:cardWidth,border:!0,borderColor:theme.warning,paddingLeft:1},children:[jsxDEV19("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)=>jsxDEV19("text",{fg:theme.muted,children:` ${scope}`},scope,!1,void 0,this))]},void 0,!0,void 0,this)}return jsxDEV19("text",{fg:theme.muted,children:inlineEmbed(name,data)},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 jsxDEV19("box",{style:{flexDirection:"column",width,border:!0,borderColor:theme.border,paddingLeft:1},children:[jsxDEV19("text",{fg:theme.text,attributes:BOLD,children:stringValue(data.title)??"Chart"},void 0,!1,void 0,this),stringValue(data.subtitle)?jsxDEV19("text",{fg:theme.muted,children:stringValue(data.subtitle)},void 0,!1,void 0,this):null,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=stringValue(record2.label)??stringValue(record2.name)??`Series ${index+1}`;return jsxDEV19("box",{style:{flexDirection:"column"},children:[jsxDEV19("text",{fg:index===0?theme.accent:theme.muted,children:sparkline(points,chartWidth,{floor:!0})},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.muted,attributes:DIM,children:label},void 0,!1,void 0,this)]},`${label}-${index}`,!0,void 0,this)})]},void 0,!0,void 0,this)}function stringValue(value){return typeof value==="string"&&value!==""?value:void 0}function stringArray2(value){return Array.isArray(value)?value.filter((entry)=>typeof entry==="string"):[]}import{jsxDEV as jsxDEV20}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=useMemo6(()=>latestSeerTodos(chat.blocks),[chat.blocks]),hasAgentApprovalEmbed=useMemo6(()=>chat.blocks.some((block)=>(block.tool_results??[]).some((result)=>result?.structuredContent?.agentWriteApproval!==void 0||result?.content.includes("agentWriteApproval"))),[chat.blocks]),inputRef=useRef5(null),inputRefCallback=useCallback6((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?"Respond using the controls above":"Ask Seer a question, or press / for commands.");return jsxDEV20("box",{style:{flexDirection:"column",width,height},children:[jsxDEV20("box",{style:{flexDirection:"row",width,height:1,flexShrink:0,paddingLeft:1,paddingRight:1,backgroundColor:theme.panelAlt},children:[jsxDEV20("text",{fg:theme.text,attributes:BOLD,children:["Seer Agent"," "]},void 0,!0,void 0,this),jsxDEV20("text",{fg:theme.accent,children:"\u03B2"},void 0,!1,void 0,this),jsxDEV20("box",{style:{flexGrow:1}},void 0,!1,void 0,this),chat.capabilities.codeMode?jsxDEV20("text",{fg:theme.muted,children:`${codeModeLabel(chat.codeMode)} \xB7 `},void 0,!1,void 0,this):null,chat.codeChanges.length>0?jsxDEV20("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,jsxDEV20("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),showHistory?jsxDEV20(SeerHistory,{chat,selected:historySelected,width:inner,height:transcriptHeight},void 0,!1,void 0,this):jsxDEV20("scrollbox",{focused:focused&&!inputFocused,stickyScroll:!0,stickyStart:"bottom",style:{flexGrow:1,width,height:transcriptHeight},children:[chat.blocks.length===0?jsxDEV20(SeerEmptyState,{width:inner},void 0,!1,void 0,this):chat.blocks.map((block)=>jsxDEV20(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?jsxDEV20(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)?jsxDEV20(PendingInputCard,{pending:chat.pendingInput,state:pendingState,width:inner},void 0,!1,void 0,this):null,chat.error?jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[jsxDEV20("text",{fg:theme.danger,children:"Seer request failed"},void 0,!1,void 0,this),jsxDEV20("text",{fg:theme.muted,children:chat.error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,chat.timedOut?jsxDEV20("box",{style:{paddingLeft:1,paddingTop:1},children:jsxDEV20("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?jsxDEV20(SlashMenu,{commands:slashCommands,selected:slashSelected,width},void 0,!1,void 0,this):null,jsxDEV20("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?jsxDEV20("text",{fg:theme.accent,children:[jsxDEV20(SpinnerGlyph,{},void 0,!1,void 0,this)," "]},void 0,!0,void 0,this):jsxDEV20("text",{fg:theme.subText,children:"\u203A "},void 0,!1,void 0,this),jsxDEV20("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 jsxDEV20("box",{style:{flexDirection:"column",width:Math.max(8,width-2),marginTop:1,border:!0,borderColor:theme.border,paddingLeft:1},children:[jsxDEV20("text",{fg:theme.text,attributes:BOLD,children:"Code changes"},void 0,!1,void 0,this),chat.codeChanges.map((change)=>jsxDEV20("box",{style:{flexDirection:"column"},children:[jsxDEV20("text",{fg:theme.accent,attributes:BOLD,children:`${change.repoName} +${change.added} -${change.removed}`},void 0,!1,void 0,this),change.files.map((file)=>jsxDEV20("text",{fg:theme.muted,children:` +${file.added} -${file.removed} ${file.path}`},file.path,!1,void 0,this)),jsxDEV20("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?jsxDEV20("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 jsxDEV20("box",{style:{flexDirection:"column",width,flexShrink:0,border:!0,borderColor:theme.border,backgroundColor:theme.panel,paddingLeft:1},children:commands.map((command,index)=>jsxDEV20("box",{style:{flexDirection:"row",width:Math.max(1,width-4),backgroundColor:index===selected?theme.selected:void 0},children:[jsxDEV20("text",{fg:index===selected?theme.accent:theme.text,attributes:BOLD,children:command.title.padEnd(19)},void 0,!1,void 0,this),jsxDEV20("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 jsxDEV20("scrollbox",{focused:!0,style:{flexGrow:1,width:width+2,height},children:jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[jsxDEV20("text",{fg:theme.text,attributes:BOLD,children:"Recent conversations"},void 0,!1,void 0,this),jsxDEV20("text",{fg:theme.muted,children:"j/k select \xB7 enter open \xB7 esc close"},void 0,!1,void 0,this),isInitialLoad(chat.runs)?jsxDEV20("text",{fg:theme.muted,children:"Loading conversations\u2026"},void 0,!1,void 0,this):null,error?jsxDEV20("text",{fg:theme.danger,children:error.message},void 0,!1,void 0,this):null,!isInitialLoad(chat.runs)&&!error&&runs.length===0?jsxDEV20("text",{fg:theme.muted,children:"No recent conversations."},void 0,!1,void 0,this):null,runs.map((run,index)=>jsxDEV20("box",{style:{flexDirection:"row",width,backgroundColor:index===selected?theme.selected:void 0},children:[jsxDEV20("text",{fg:index===selected?theme.accent:theme.muted,children:index===selected?"\u276F ":" "},void 0,!1,void 0,this),jsxDEV20("text",{fg:theme.text,children:fitText(run.title??"Untitled chat",Math.max(4,width-10))},void 0,!1,void 0,this),jsxDEV20("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV20("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 jsxDEV20(UserBlock,{block,width},void 0,!1,void 0,this);if(block.message.role==="tool_use")return jsxDEV20(ToolUseBlock,{block,width,chat,client:client2,org,showTodos},void 0,!1,void 0,this);return jsxDEV20(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 jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:lines.map((line,index)=>jsxDEV20("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 jsxDEV20("text",{fg:theme.muted,children:[" ",jsxDEV20(SpinnerGlyph,{},void 0,!1,void 0,this)," Thinking\u2026"]},void 0,!0,void 0,this);if(block.loading&&block.id.startsWith("optimistic-assistant-"))return jsxDEV20("box",{style:{paddingLeft:1,paddingTop:1,flexDirection:"row"},children:jsxDEV20("text",{fg:theme.muted,children:[" ",jsxDEV20(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 jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:3,paddingTop:1,width},children:jsxDEV20(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 jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:1,width},children:[chat.showThinking&&block.message.thinking_content?.trim()?jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:2,width:Math.max(1,width-2)},children:[jsxDEV20("text",{fg:theme.muted,attributes:BOLD,children:"Thinking"},void 0,!1,void 0,this),jsxDEV20(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})=>jsxDEV20(CodeModeCallRow,{record:record2,label,settled:Boolean(result)},`${tool.id??index}-${record2.id}`,!1,void 0,this)):!isCodeMode?[status==="loading"?jsxDEV20("text",{fg:blockColor,attributes:ITALIC,children:[" ",jsxDEV20(SpinnerGlyph,{},void 0,!1,void 0,this),` ${classicLines[index]??tool.function}`]},`${tool.id??index}-classic`,!0,void 0,this):jsxDEV20("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)=>jsxDEV20("text",{fg:theme.accent,children:` \u2197 ${toolLinkLabel(link.kind,link.params)}`},`${tool.id??index}-link-${linkIndex}`,!1,void 0,this)),...artifacts.map((artifact,artifactIndex)=>jsxDEV20("text",{fg:theme.accent,children:` \u25C7 ${artifact.reason||artifact.key}`},`${tool.id??index}-artifact-${artifactIndex}`,!1,void 0,this)),...structuredMarkdown?[jsxDEV20(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)=>jsxDEV20("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 jsxDEV20("box",{style:{flexDirection:"column"},children:[status==="loading"?jsxDEV20("text",{fg:color,attributes:ITALIC,children:[" ",jsxDEV20(SpinnerGlyph,{},void 0,!1,void 0,this),` ${label}${suffix}`]},void 0,!0,void 0,this):jsxDEV20("text",{fg:color,attributes:ITALIC,children:` ${status==="failure"?"\u2717":"\u2713"} ${label}${suffix}`},void 0,!1,void 0,this),details.map((detail,index)=>jsxDEV20("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 jsxDEV20("box",{style:cardStyle,children:[jsxDEV20("text",{fg:theme.warning,attributes:BOLD,children:`Make this change? (${state.fileApprovalIndex+1} of ${patches.length})`},void 0,!1,void 0,this),jsxDEV20("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)=>jsxDEV20("text",{fg:line.startsWith("+")?theme.success:line.startsWith("-")?theme.danger:theme.muted,children:line},index,!1,void 0,this)),jsxDEV20("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 jsxDEV20("box",{style:cardStyle,children:[jsxDEV20("text",{fg:theme.warning,attributes:BOLD,children:"Allow Seer to make changes?"},void 0,!1,void 0,this),jsxDEV20("text",{fg:theme.muted,children:"Requested scopes:"},void 0,!1,void 0,this),scopes.map((scope)=>jsxDEV20("text",{fg:theme.text,children:` ${scope}`},scope,!1,void 0,this)),jsxDEV20("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 jsxDEV20("box",{style:cardStyle,children:[jsxDEV20("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 jsxDEV20("box",{style:{flexDirection:"column",backgroundColor:index===state.questionSelected?theme.selected:void 0},children:[jsxDEV20("text",{fg:index===state.questionSelected?theme.accent:theme.text,children:`${index+1}. ${String(item.label??"Option")}`},void 0,!1,void 0,this),item.description?jsxDEV20("text",{fg:theme.muted,children:` ${String(item.description)}`},void 0,!1,void 0,this):null]},index,!0,void 0,this)}),jsxDEV20("text",{fg:state.questionSelected===options.length?theme.accent:theme.muted,children:"o. Other \u2014 type your own answer"},void 0,!1,void 0,this),jsxDEV20("text",{fg:theme.muted,children:"j/k select \xB7 enter confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return jsxDEV20("box",{style:cardStyle,children:[jsxDEV20("text",{fg:theme.warning,attributes:BOLD,children:"Reconnect your monitoring provider in Sentry"},void 0,!1,void 0,this),jsxDEV20("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 jsxDEV20("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[SEER_MARK.map((line,index)=>jsxDEV20("text",{fg:theme.accent,children:` ${line}`},index,!1,void 0,this)),jsxDEV20("text",{fg:theme.text,attributes:BOLD,children:`
14
+ Ask Seer anything about your application.`},void 0,!1,void 0,this),jsxDEV20("text",{fg:theme.muted,children:" Try one of these:"},void 0,!1,void 0,this),SEER_SUGGESTED_QUESTIONS.map((question,index)=>jsxDEV20("text",{fg:theme.accent,children:` ${index+1}. ${wrapText(question,Math.max(1,width-6))[0]??question}`},question,!1,void 0,this)),jsxDEV20("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 jsxDEV21}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=useCallback7((next)=>state.dispatch({type:"setSearchQuery",payload:next}),[state.dispatch]);return jsxDEV21(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=useMemo7(()=>chat?seerSlashCommands(chat.capabilities,{hasRun:chat.started,hasCodeChanges:chat.codeChanges.length>0}):[],[chat]),visibleCommands=useMemo7(()=>{if(!value.startsWith("/")||value.includes(" "))return[];let query=value.toLowerCase();return commands.filter((command)=>command.title.startsWith(query))},[commands,value]);useEffect11(()=>dispatch({type:"inputChanged"}),[value]),useEffect11(()=>{dispatch({type:"pendingChanged",pending:pendingId&&pendingType?{id:pendingId,input_type:pendingType}:null})},[pendingId,pendingType]);let openHistory=useCallback7(()=>{if(!chat)return;chat.loadRuns(),dispatch({type:"openHistory"})},[chat]),pushChanges=useCallback7(()=>{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=useCallback7((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=useCallback7((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=useCallback7(()=>{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=useCallback7((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=useCallback7((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=useCallback7((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=useCallback7((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=useCallback7(()=>{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(useEffect11(()=>(registerActions({inputFocused:()=>composerFocused,submitInput:submit,blurInput:()=>dispatch({type:"blurInput"}),handleInputKey,handleKey,back}),()=>registerActions(null)),[back,composerFocused,handleInputKey,handleKey,registerActions,submit]),!chat)return jsxDEV21("text",{fg:theme.muted,children:"Seer is unavailable."},void 0,!1,void 0,this);if(!chat.capabilities.available)return jsxDEV21("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 jsxDEV21(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 jsxDEV22}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]=useState10(""),actions=useRef6(null),sent=useRef6(!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=useCallback8((next)=>{actions.current=next},[]);return useEffect12(()=>{if(sent.current)return;sent.current=!0,chat.send(issueAutofixPrompt(issue))},[chat.send,issue]),useKeyboard3((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)}),jsxDEV22(ModalFrame,{title:` Autofix \xB7 ${issue.shortId} `,width:desiredWidth,height:desiredHeight,onClose,children:jsxDEV22(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 useState11}from"h:0__";import{useKeyboard as useKeyboard4}from"h:4___________";import{jsxDEV as jsxDEV23}from"h:6___________________________";var DIALOG_WIDTH=76,DIALOG_HEIGHT=8;function OpenSentryUrlDialog({onSubmit,onClose}){let theme=useTheme(),[url,setUrl]=useState11(""),[failure,setFailure]=useState11();useKeyboard4((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 jsxDEV23(ModalFrame,{title:" Open Sentry URL ",width:DIALOG_WIDTH,height:DIALOG_HEIGHT,onClose,children:[jsxDEV23("text",{fg:theme.muted,children:"Paste a sentry.io URL"},void 0,!1,void 0,this),jsxDEV23("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?jsxDEV23("text",{fg:failure.kind==="invalid"?theme.danger:theme.warning,children:`${prefix}: ${failure.message}`},void 0,!1,void 0,this):jsxDEV23("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 jsxDEV24}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 jsxDEV24("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 jsxDEV24("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 jsxDEV25}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 jsxDEV25("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?jsxDEV25("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?jsxDEV25("box",{style:{flexDirection:"row",alignItems:"center",gap:1},children:[hasImages&&avatarUrl?jsxDEV25("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH2,height:AVATAR_HEIGHT2}},void 0,!1,void 0,this):null,orgSlug?jsxDEV25("text",{fg:theme.text,attributes:1,children:fitText(orgSlug,slugWidth)},void 0,!1,void 0,this):null,jsxDEV25("box",{style:{flexDirection:"row"},children:jsxDEV25(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?jsxDEV25("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH2,height:AVATAR_HEIGHT2}},void 0,!1,void 0,this):orgSlug?jsxDEV25("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,jsxDEV25("box",{style:{flexDirection:"column",gap:hasImages?NAV_ITEM_GAP:0},children:groups.map((group)=>{let isActive=group.id===active;return jsxDEV25("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?jsxDEV25(NavIcon,{groupId:group.id,active:isActive},void 0,!1,void 0,this):null,expanded?jsxDEV25(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:jsxDEV25("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 useCallback9,useEffect as useEffect13,useMemo as useMemo8,useState as useState12}from"h:0__";import{jsxDEV as jsxDEV26}from"h:6___________________________";function OrgPicker({client:client2,currentOrg,anchorLeft,anchorTop,onSelect,onClose}){let[orgs,setOrgs]=useState12([]),[error,setError]=useState12(null),[loading,setLoading]=useState12(client2!==null);useEffect13(()=>{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=useMemo8(()=>orgs.map((org)=>({label:org.slug,value:org.slug})),[orgs]),handleSelect=useCallback9((values)=>{let slug=values[0];if(slug)onSelect(slug)},[onSelect]);return jsxDEV26(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 jsxDEV27}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 jsxDEV27("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:[jsxDEV27("text",{fg:theme.text,attributes:1,children:nav.label},void 0,!1,void 0,this),sections.map((section,si)=>jsxDEV27("box",{style:{flexDirection:"column",flexShrink:0},children:[jsxDEV27("text",{fg:theme.border,children:"\u2500".repeat(CONTENT_WIDTH)},void 0,!1,void 0,this),section.title?jsxDEV27("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 jsxDEV27("box",{style:{flexDirection:"row",height:1,flexShrink:0},onMouseDown:()=>onSelect?.(item),children:jsxDEV27(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 jsxDEV28,Fragment as Fragment8}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 jsxDEV28(Fragment8,{children:[jsxDEV28(KeyHint,{command:commandId},void 0,!1,void 0,this),jsxDEV28("text",{children:" "},void 0,!1,void 0,this),label?jsxDEV28("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 jsxDEV28("box",{style:{flexDirection:"row",flexShrink:0},onMouseDown:onPress,children:[jsxDEV28("text",{fg:theme.highlight,attributes:BOLD,children:"Update"},void 0,!1,void 0,this),jsxDEV28("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 jsxDEV28("box",{style:{height:1,flexShrink:0,flexDirection:"row",backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[onUpdate?jsxDEV28(UpdatePill,{onPress:onUpdate},void 0,!1,void 0,this):null,jsxDEV28("text",{fg:noticeColor(notice.kind,theme),children:text},void 0,!1,void 0,this),jsxDEV28("box",{style:{flexGrow:1}},void 0,!1,void 0,this),hints.map(({command,label},i)=>{if(!primaryKey(command))return null;return jsxDEV28("box",{style:{flexDirection:"row"},children:[i>0?jsxDEV28("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this):null,jsxDEV28(HintItem,{commandId:command,label},void 0,!1,void 0,this)]},command,!0,void 0,this)}),jsxDEV28(SentryBadge,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function SentryBadge(){let{supportsHighRes}=useImageSupport();if(!supportsHighRes)return null;return jsxDEV28("box",{style:{marginLeft:1},children:jsxDEV28(SentryLogo,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useKeyboard as useKeyboard5}from"h:4___________";import{jsxDEV as jsxDEV29}from"h:6___________________________";var DIALOG_WIDTH2=84,DIALOG_HEIGHT2=12;function WebUrlDialog({url,onClose}){let theme=useTheme();return useKeyboard5((key)=>{routeKeyOwnership([()=>{if(!matchesCommand("sentry.nav.back",key))return"notMine";return onClose(),"mine"}],key,consumeKey)}),jsxDEV29(ModalFrame,{title:" Open in Sentry ",width:DIALOG_WIDTH2,height:DIALOG_HEIGHT2,onClose,children:[jsxDEV29("text",{fg:theme.warning,children:"Could not launch a browser. Open this production URL:"},void 0,!1,void 0,this),jsxDEV29("text",{fg:theme.text,style:{wrapMode:"char"},children:url},void 0,!1,void 0,this),jsxDEV29("text",{fg:theme.subText,children:"esc close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback10,useMemo as useMemo9,useRef as useRef7,useState as useState13}from"h:0__";function useFocusRing(regions,initial){let[focused,setFocused]=useState13(initial??regions[0]),focusedRef=useRef7(focused);focusedRef.current=focused;let move=useCallback10((delta)=>{let next=(regions.indexOf(focusedRef.current)+delta+regions.length)%regions.length;setFocused(regions[next])},[regions]);return useMemo9(()=>({focused,focusedRef,isFocused:(region)=>focused===region,focus:setFocused,next:()=>move(1),prev:()=>move(-1)}),[focused,move])}import{useCallback as useCallback39,useMemo as useMemo31,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 useCallback11,useMemo as useMemo10,useReducer as useReducer3,useRef as useRef8}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=useRef8(initialSelectedProjects);initialSelectedProjectsRef.current=initialSelectedProjects;let searchExitHandled=useRef8(!1),dispatch=useCallback11((action)=>{storeDispatch({type:"dispatch",key,source,action,fallback:initialSlice(key,initialSelectedProjectsRef.current)})},[key,source]),focusSearch=useCallback11(()=>dispatch({type:"focusSearch"}),[dispatch]),submitSearch=useCallback11(()=>{searchExitHandled.current=!0,dispatch({type:"submitSearch"})},[dispatch]),cancelSearch=useCallback11(()=>{searchExitHandled.current=!0,dispatch({type:"cancelSearch"})},[dispatch]),handleSearchBlur=useCallback11(()=>{if(searchExitHandled.current){searchExitHandled.current=!1;return}dispatch({type:"handleSearchBlur"})},[dispatch]),data=useMemo10(()=>states.get(key)??initialSlice(key,initialSelectedProjects),[states,key,initialSelectedProjects]),active=useMemo10(()=>({...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=useCallback11((selectedProjects=[])=>{storeDispatch({type:"resetOrgScoped",projects:[...selectedProjects]})},[]),seed=useCallback11((target,values)=>{storeDispatch({type:"seed",key:target,values})},[]),snapshots=useMemo10(()=>{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 useMemo13}from"h:0__";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)}import{useCallback as useCallback13,useEffect as useEffect15,useMemo as useMemo11,useState as useState15}from"h:0__";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 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}import{useCallback as useCallback12,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=useCallback12(()=>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 useDashboards(client2,{org,filter,query="",sort,reloadToken=0}){let loader=useCallback13((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]=useState15([]);return useEffect15(()=>{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 useMemo11(()=>{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 useEffect16,useRef as useRef10,useState as useState16}from"h:0__";function useSavedQueries(client2,{org,source,starred,search,sort,limit,enabled=!0,reloadToken=0}){let[status,setStatus]=useState16(idle),[nextCursor,setNextCursor]=useState16(null),statusRef=useRef10(status);return statusRef.current=status,useEffect16(()=>{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 useEffect20,useMemo as useMemo12}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 useRef11}from"h:0__";import{useEffect as useEffect17}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)}useEffect17(()=>{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 jsxDEV30,Fragment as Fragment9}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=useRef11(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 jsxDEV30(Fragment9,{children:[jsxDEV30(TableHeader,{resolved:resolved2,width:rowWidth,gap},void 0,!1,void 0,this),jsxDEV30("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)=>jsxDEV30(SkeletonRow,{resolved:resolved2,width:rowWidth,gap,seed:i,contentHeight:skeletonContentHeight,detail:Boolean(renderDetail),separator},i,!1,void 0,this)):null,showEmpty&&empty?jsxDEV30(TableEmpty,{...empty},void 0,!1,void 0,this):null,rows?.map((row,index)=>jsxDEV30(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?jsxDEV30(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 jsxDEV30("box",{style:{flexDirection:"row",width,border:["bottom"],borderColor:theme.border,flexShrink:0},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV30(Cell,{width:cellWidth,gap:i>0?gap:0,children:jsxDEV30("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 jsxDEV30(Fragment9,{children:[gap>0?jsxDEV30("text",{children:" ".repeat(gap)},void 0,!1,void 0,this):null,jsxDEV30("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 jsxDEV30("box",{style:{flexDirection:"column",width,backgroundColor:selected?theme.selected:void 0,flexShrink:0},onMouseDown:onRowClick?()=>onRowClick(index,row):void 0,children:[jsxDEV30("box",{style:{flexDirection:"row",height:contentHeight,flexShrink:0},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV30(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?jsxDEV30("box",{style:{flexDirection:"row",width},children:renderDetail(row,selected,width)},void 0,!1,void 0,this):null,separator?jsxDEV30("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 jsxDEV30("box",{style:{flexDirection:"column",width,flexShrink:0},children:[Array.from({length:normalizeContentHeight(contentHeight)},(_,line)=>jsxDEV30("box",{style:{flexDirection:"row"},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV30(Cell,{width:cellWidth,gap:i>0?gap:0,children:jsxDEV30("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?jsxDEV30("box",{style:{flexDirection:"row",width},children:jsxDEV30("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?jsxDEV30("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 jsxDEV30("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV30("text",{fg:theme.text,children:title},void 0,!1,void 0,this),lines.filter(Boolean).map((line,i)=>jsxDEV30("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 jsxDEV30("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV30("text",{fg:theme.danger,children:title},void 0,!1,void 0,this),jsxDEV30("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV30("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV31}from"h:6___________________________";function DirectDetailStatus({status,noun,width,height}){let theme=useTheme(),error=errorOf(status);return jsxDEV31("box",{style:{flexDirection:"column",width,height,paddingLeft:1},children:jsxDEV31("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 jsxDEV32}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 jsxDEV32("box",{style:{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1},children:[jsxDEV32("text",{fg:theme.subText,children:count===void 0?"":resultCountLabel(count,noun,hasMore)},void 0,!1,void 0,this),jsxDEV32("box",{style:{flexGrow:1}},void 0,!1,void 0,this),pagination?jsxDEV32("box",{style:{flexDirection:"row",flexShrink:0},children:[pagination.hasPrevious?jsxDEV32("box",{style:{flexDirection:"row"},onMouseDown:canPrevious?pagination.onPrevious:void 0,children:[jsxDEV32(KeyHint,{command:"sentry.nav.pageUp"},void 0,!1,void 0,this),jsxDEV32("text",{fg:canPrevious?theme.muted:theme.subText,children:" \u2039 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV32("text",{fg:theme.subText,children:pagination.page},void 0,!1,void 0,this),pagination.hasNext?jsxDEV32("box",{style:{flexDirection:"row"},onMouseDown:canNext?pagination.onNext:void 0,children:[jsxDEV32("text",{fg:canNext?theme.muted:theme.subText,children:" \u203A "},void 0,!1,void 0,this),jsxDEV32(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 useCallback14,useRef as useRef12}from"h:0__";import{RenderableEvents as RenderableEvents2}from"h:3__________";import{jsxDEV as jsxDEV33}from"h:6___________________________";function SearchInput({value,placeholder,focused,width,onInput,onFocus,onBlur}){let theme=useTheme(),inputRef=useRef12(null),inputRefCallback=useCallback14((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 jsxDEV33("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:[jsxDEV33(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV33("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{useEffect as useEffect18,useRef as useRef13,useState as useState17}from"h:0__";function useDiscoverRows(client2,{org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,reloadToken=0}){let[status,setStatus]=useState17(idle),[nextCursor,setNextCursor]=useState17(null),statusRef=useRef13(status);return statusRef.current=status,useEffect18(()=>{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{useEffect as useEffect19,useRef as useRef14,useState as useState18}from"h:0__";function useDirectResource(client2,{org,id,reloadToken=0,load}){let[status,setStatus]=useState18(idle),statusRef=useRef14(status);return statusRef.current=status,useEffect19(()=>{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{jsxDEV as jsxDEV34}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?jsxDEV34(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 loadSavedQuery=(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?jsxDEV34(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:loadSavedQuery}),query=valueOf(status);if(useEffect20(()=>{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 jsxDEV34(DirectDetailStatus,{status,noun:"saved query",width,height},void 0,!1,void 0,this);return jsxDEV34(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=useMemo12(()=>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);useEffect20(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]),useEffect20(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"results"}})},[loading,since,error,status,dispatch]);let columns=useMemo12(()=>columnsFor(savedQuery.fields,theme),[savedQuery.fields,theme]);return jsxDEV34("box",{style:{flexDirection:"column",width,height},children:[jsxDEV34(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),jsxDEV34("box",{style:{flexDirection:"row",width,flexShrink:0,height:1,paddingLeft:1},children:[jsxDEV34("text",{fg:theme.accent,attributes:BOLD,children:fitText(savedQuery.name,Math.max(8,width-24))},void 0,!1,void 0,this),jsxDEV34("text",{fg:theme.muted,children:` ${savedQuery.datasetLabel}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV34(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),jsxDEV34(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),jsxDEV34(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)=>jsxDEV34("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 useMemo13(()=>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 useCallback17,useEffect as useEffect23,useRef as useRef16}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(normalise2).sort((a,b)=>Date.parse(b.endedAt)-Date.parse(a.endedAt)),nextCursor:page.nextCursor}}function normalise2(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 jsxDEV35}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 jsxDEV35("box",{style:{flexDirection:"column",width,height,flexShrink:0,border:["top","bottom","left","right"],borderColor:theme.border,backgroundColor:theme.panel,paddingLeft:1},children:[jsxDEV35("box",{style:{flexDirection:"row",width:innerWidth,flexShrink:0},children:[jsxDEV35("text",{fg:theme.text,children:fitText(title,Math.max(0,innerWidth-totalLabel.length-1))},void 0,!1,void 0,this),jsxDEV35("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV35("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 jsxDEV35("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV35("text",{fg:theme.muted,attributes:DIM,children:yLabel},void 0,!1,void 0,this),jsxDEV35("text",{fg:theme.accent,children:line},void 0,!1,void 0,this)]},i,!0,void 0,this)}),jsxDEV35("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV35("text",{fg:theme.muted,children:" ".repeat(Y_LABEL_WIDTH)},void 0,!1,void 0,this),jsxDEV35("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 useCallback16}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)=>normalise3(row,index,idField)),nextCursor:page.nextCursor}}function normalise3(row,index,idField){return{id:rowString(row,idField)??String(index),row}}async function listExploreTimeseries(client2,params){return queryExploreTimeseries(client2,params)}import{useCallback as useCallback15,useEffect as useEffect21,useRef as useRef15,useState as useState19}from"h:0__";function useCursorPages(loader,reloadKey=0){let[status,setStatus]=useState19(idle),[nextCursor,setNextCursor]=useState19(null),[cursor,setCursor]=useState19(void 0),[page,setPage]=useState19(1),statusRef=useRef15(status);statusRef.current=status;let cursorRef=useRef15(void 0),pageRef=useRef15(1),cursorHistoryRef=useRef15([void 0]),requestRef=useRef15(null),requestIdRef=useRef15(0),requestPage=useCallback15((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=useRef15(null),nextPage=useCallback15(()=>{if(nextCursor===null||statusRef.current.state==="loading")return!1;return requestPage(nextCursor,pageRef.current+1)},[nextCursor,requestPage]),previousPage=useCallback15(()=>{if(pageRef.current<=1||statusRef.current.state==="loading")return!1;return requestPage(cursorHistoryRef.current[pageRef.current-2],pageRef.current-1)},[requestPage]);return useEffect21(()=>{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]),useEffect21(()=>()=>{requestIdRef.current++,requestRef.current?.abort()},[]),{status,nextCursor,cursor,page,nextPage,previousPage}}function useConversations(client2,{org,query,statsPeriod,project,environment,reloadToken=0}){let conversationsLoader=useCallback16((cursor,signal)=>client2?listConversations(client2,{org,query,statsPeriod,project,environment,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment]),timeseriesLoader=useCallback16((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 useEffect22}from"h:0__";function useScreenActions(register,actions){useEffect22(()=>(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.")}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))}import{jsxDEV as jsxDEV36,Fragment as Fragment10}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)=>jsxDEV36("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 jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("text",{fg:theme.muted,children:padText(shortId2(event.id),width)},void 0,!1,void 0,this)},{key:"span.name",label:"Name",width:16,priority:2,render:(event,_selected,width)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36(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)=>jsxDEV36("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)=>jsxDEV36("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 jsxDEV36("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let fraction=maxMs>0?durationMs/maxMs:0;return jsxDEV36(Fragment10,{children:[barWidth>0?jsxDEV36(Fragment10,{children:[jsxDEV36("text",{fg:theme.accent,children:proportionalBar(fraction,barWidth)},void 0,!1,void 0,this),jsxDEV36("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36(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 jsxDEV36("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let fraction=maxValue>0?value/maxValue:0;return jsxDEV36(Fragment10,{children:[barWidth>0?jsxDEV36(Fragment10,{children:[jsxDEV36("text",{fg:theme.accent,children:proportionalBar(fraction,barWidth)},void 0,!1,void 0,this),jsxDEV36("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("text",{fg:theme.muted,children:padText(shortId2(event.id),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,render:(event,_selected,width)=>jsxDEV36("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 jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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)=>jsxDEV36("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 shortId2(id,width=8){return id.slice(0,width)}import{jsxDEV as jsxDEV37}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 jsxDEV37("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)=>jsxDEV37("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)=>jsxDEV37("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 jsxDEV37("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)=>jsxDEV37("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)=>jsxDEV37("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)=>jsxDEV37("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);useEffect23(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef16(page);useEffect23(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect23(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:CONVERSATION_NOUN}})},[loading,since,error,conversations,dispatch]);let closeDropdown=useCallback17(()=>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 jsxDEV37("box",{style:{flexDirection:"column",width,height},children:[jsxDEV37(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),jsxDEV37(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?jsxDEV37(BarChart,{buckets,width:inner,height:CHART_ROWS,title:CONVERSATION_CHART.yAxis,noun:CONVERSATION_CHART.noun},void 0,!1,void 0,this):null,jsxDEV37(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?jsxDEV37(ConversationDetail,{conversation:selected,width:inner},void 0,!1,void 0,this):null,jsxDEV37(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 jsxDEV37("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 jsxDEV37("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV37("text",{fg:theme.accent,attributes:BOLD,children:`\u25BE ${fitText(conversationTitle(conversation)??UNTITLED,width-2)}`},void 0,!1,void 0,this),conversation.firstInput&&conversation.title?jsxDEV37("text",{fg:theme.text,children:fitText(` \u2192 ${collapse(conversation.firstInput)}`,inner)},void 0,!1,void 0,this):null,conversation.lastOutput?jsxDEV37("text",{fg:theme.muted,children:fitText(` \u2190 ${collapse(conversation.lastOutput)}`,inner)},void 0,!1,void 0,this):null,jsxDEV37("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]?jsxDEV37("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 useCallback19,useEffect as useEffect25,useMemo as useMemo15,useRef as useRef17,useState as useState21}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{useMemo as useMemo14}from"h:0__";import{jsxDEV as jsxDEV38,Fragment as Fragment11}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=useMemo14(()=>attributes.number.map(({key})=>key),[attributes.number]),aggregateItems=useMemo14(()=>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 jsxDEV38(Fragment11,{children:[jsxDEV38("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:placed.map(({item,key,gap})=>item.kind==="label"?jsxDEV38("text",{fg:theme.muted,children:`${" ".repeat(gap)}${item.text}`},key,!1,void 0,this):jsxDEV38("box",{style:{flexDirection:"row",flexShrink:0},children:[gap>0?jsxDEV38("text",{children:" ".repeat(gap)},void 0,!1,void 0,this):null,jsxDEV38(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"?jsxDEV38(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"?jsxDEV38(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"?jsxDEV38(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"?jsxDEV38(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"?jsxDEV38(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=useMemo14(()=>{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 jsxDEV38(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=useMemo14(()=>[{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 jsxDEV38(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{useCallback as useCallback18}from"h:0__";function useExploreEvents(client2,table,{org,query,request,statsPeriod,interval,project,environment,reloadToken=0}){let combined=exploreQuery(table,query),eventsLoader=useCallback18((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=useCallback18((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{useEffect as useEffect24,useState as useState20}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]=useState20(IDLE),projectKey=project?.join(",")??"",environmentKey=environment?.join(",")??"";return useEffect24(()=>{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 jsxDEV39,Fragment as Fragment12}from"h:6___________________________";var DETAIL_LABEL_WIDTH=26;function ExploreTable(props){let theme=useTheme(),table=getExploreTable(props.screen.id);if(!table)return jsxDEV39("box",{style:{flexDirection:"column",paddingLeft:1},children:jsxDEV39("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 jsxDEV39(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]=useState21(()=>defaultExploreQuery(table)),[queryDropdown,setQueryDropdown]=useState21(null),[selectedInterval,setSelectedInterval]=useState21(),hasBuilder=table.builder!==void 0,resolved2=useMemo15(()=>resolveExploreQuery(table,builder),[table,builder]),fixedSortItems=useMemo15(()=>fieldSortItems(table.fields),[table.fields]),intervalItems=useMemo15(()=>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);useEffect25(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef17(page);useEffect25(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect25(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:table.noun}})},[loading,since,error,events,dispatch,table.noun]);let closeDropdown=useCallback19(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),closeQueryDropdown=useCallback19(()=>setQueryDropdown(null),[]),openQueryDropdown=useCallback19((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=useMemo15(()=>longestDuration(rows),[rows]),maxAggregate=useMemo15(()=>largest(rows,resolved2.yAxis),[rows,resolved2.yAxis]),columns=useMemo15(()=>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 jsxDEV39("box",{style:{flexDirection:"column",width,height},children:[jsxDEV39(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),jsxDEV39(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?jsxDEV39(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):jsxDEV39(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?jsxDEV39(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,jsxDEV39(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"?jsxDEV39(LogDetail,{event:selected,width:inner},void 0,!1,void 0,this):jsxDEV39(EventDetail,{event:selected,fields:resolved2.fields,width:inner},void 0,!1,void 0,this):null,jsxDEV39(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 jsxDEV39(Fragment12,{children:[jsxDEV39("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV39("text",{fg:theme.muted,children:"Interval "},void 0,!1,void 0,this),jsxDEV39(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?jsxDEV39(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 jsxDEV39("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV39("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Log Details"},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.text,children:fitText(field(event,"message"),width)},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.muted,children:` Severity: ${logSeverity(event)} \u2502 Project: ${field(event,"project")||"\u2014"}`},void 0,!1,void 0,this),traceId?jsxDEV39("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 jsxDEV39("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV39("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Row Details"},void 0,!1,void 0,this),fields.map((name)=>jsxDEV39("box",{style:{flexDirection:"row",width},children:[jsxDEV39("text",{fg:theme.muted,children:` ${padText(name,DETAIL_LABEL_WIDTH)}`},void 0,!1,void 0,this),jsxDEV39("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 useCallback21,useEffect as useEffect28,useMemo as useMemo17}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 jsxDEV40,Fragment as Fragment13}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 jsxDEV40(Fragment13,{children:[jsxDEV40("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,width,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV40("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV40(SortSelector,{value,items,open,onOpen},void 0,!1,void 0,this)]},void 0,!0,void 0,this),open?jsxDEV40(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 useCallback20,useEffect as useEffect27,useMemo as useMemo16,useRef as useRef19,useState as useState23}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 jsxDEV41}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 jsxDEV41("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:[jsxDEV41(CardTitle,{widget,width:inner,selected,placeholder},void 0,!1,void 0,this),jsxDEV41(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 jsxDEV41("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV41("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),jsxDEV41("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 jsxDEV41(NotRenderable,{reason:unsupportedReason(widget),width,lines},void 0,!1,void 0,this);let error=errorOf(status);if(error)return jsxDEV41(CardError,{message:error.message,width,lines},void 0,!1,void 0,this);let data=valueOf(status)??null;if(data===null&&status?.state==="ready")return jsxDEV41(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 jsxDEV41(NumberBody,{data:data?.kind==="number"?data:void 0,pending,width},void 0,!1,void 0,this);case"series":return jsxDEV41(SeriesBody,{data:data?.kind==="series"?data:void 0,pending,width},void 0,!1,void 0,this);case"table":return jsxDEV41(TableBody,{data:data?.kind==="table"?data:void 0,width,lines},void 0,!1,void 0,this);case"bars":return jsxDEV41(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 jsxDEV41("box",{style:{flexDirection:"column",width,flexShrink:0},children:[glyphs.map((line,row)=>jsxDEV41("box",{style:{flexDirection:"row",width,flexShrink:0},children:jsxDEV41("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)),jsxDEV41("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 jsxDEV41("box",{style:{flexDirection:"column",width,flexShrink:0},children:[rows.map(({line,gutter,color},row)=>jsxDEV41("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV41("text",{fg:theme.muted,attributes:DIM,children:`${padText(gutter,AXIS_LABEL_WIDTH,multiple?"left":"right")} `},void 0,!1,void 0,this),jsxDEV41("text",{fg:pending?theme.panelAlt:color,children:line},void 0,!1,void 0,this)]},row,!0,void 0,this)),jsxDEV41("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV41("text",{fg:theme.muted,attributes:DIM,children:" ".repeat(AXIS_LABEL_WIDTH+1)},void 0,!1,void 0,this),jsxDEV41("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 jsxDEV41("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV41("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 jsxDEV41("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 jsxDEV41("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 jsxDEV41("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV41("text",{fg:entry?theme.subText:theme.panelAlt,children:`${padText(entry?.label??(data?"":skeletonBar(labelWidth,row)),labelWidth)} `},void 0,!1,void 0,this),filled>0?jsxDEV41("text",{fg:theme.accent,children:"\u2588".repeat(filled)},void 0,!1,void 0,this):null,track>0?jsxDEV41("text",{fg:theme.panelAlt,children:"\u2591".repeat(track)},void 0,!1,void 0,this):null,jsxDEV41("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 jsxDEV41(FixedLines,{width,lines,children:[jsxDEV41("text",{fg:theme.muted,children:fitText(reason,width)},void 0,!1,void 0,this),jsxDEV41("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 jsxDEV41(FixedLines,{width,lines,children:[jsxDEV41("text",{fg:theme.danger,children:fitText("Failed to load this widget",width)},void 0,!1,void 0,this),jsxDEV41("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 jsxDEV41("box",{style:{flexDirection:"column",width,height:lines,flexShrink:0},children},void 0,!1,void 0,this)}import{useEffect as useEffect26,useRef as useRef18,useState as useState22}from"h:0__";function useDashboardDetail(client2,{org,id,reloadToken=0}){let[status,setStatus]=useState22(idle),statusRef=useRef18(status);return statusRef.current=status,useEffect26(()=>{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]=useState22(()=>new Map),queryKey=JSON.stringify([org,dashboardId,statsPeriod,project??null,environment??null,reloadToken]),params=useRef18({org,statsPeriod,project,environment});params.current={org,statsPeriod,project,environment};let requested=useRef18(new Set),chain=useRef18(Promise.resolve()),controller=useRef18(null);return useEffect26(()=>{requested.current=new Set,chain.current=Promise.resolve(),setResults(new Map);let next=new AbortController;return controller.current=next,()=>next.abort()},[queryKey]),useEffect26(()=>{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 jsxDEV42}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?jsxDEV42(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=useRef19(null),detail=useDashboardDetail(client2,{org,id:dashboard.id,reloadToken}),details=valueOf(detail),error=errorOf(detail),loading=detail.state==="loading";useEffect27(()=>{if(details)updateView(`dashboard:${dashboard.id}`,{label:details.title})},[details,dashboard.id,updateView]);let widgets=useMemo16(()=>orderWidgets(details?.widgets??[]),[details]),placeholders=useMemo16(()=>(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);useEffect27(()=>{dispatch({type:"setEntries",payload:widgets})},[widgets,dispatch]),useEffect27(()=>{dispatch({type:"setStatus",payload:{loading,error:error?.message,noun:"dashboard"}})},[loading,error,dispatch]);let seededPeriod=useRef19(null);useEffect27(()=>{if(!details?.period||seededPeriod.current===details.id)return;seededPeriod.current=details.id,dispatch({type:"setStatsPeriod",payload:details.period})},[details,dispatch]);let[upto,setUpto]=useState23(INITIAL_WIDGETS);useEffect27(()=>{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=useMemo16(()=>showing.map((widget)=>widgetCardHeight(widget,widgetRenderKind(widget.displayType))),[showing]);useEffect27(()=>{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=useCallback20(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return jsxDEV42("box",{style:{flexDirection:"column",width,height},children:[jsxDEV42("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV42("text",{fg:theme.text,attributes:BOLD,children:fitText(details?.title??dashboard.title,Math.max(8,width-24))},void 0,!1,void 0,this),jsxDEV42("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),jsxDEV42(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?jsxDEV42("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV42("text",{fg:theme.danger,children:"Failed to load dashboard"},void 0,!1,void 0,this),jsxDEV42("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV42("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?jsxDEV42("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV42("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),jsxDEV42("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,jsxDEV42("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)=>jsxDEV42(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?jsxDEV42("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 jsxDEV43}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)=>jsxDEV43("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)=>jsxDEV43("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)=>jsxDEV43("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)=>jsxDEV43("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)=>jsxDEV43("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)=>jsxDEV43("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)=>jsxDEV43("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)=>jsxDEV43("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=useMemo17(()=>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";useEffect28(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]),useEffect28(()=>{dispatch({type:"setStatus",payload:{loading,error:error?.message,noun:"dashboards"}})},[loading,error,dispatch]);let{pushView}=props,open=useCallback21((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 jsxDEV43("box",{style:{flexDirection:"column",width,height},children:[jsxDEV43(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),jsxDEV43("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV43("text",{fg:theme.text,attributes:BOLD,children:config.title},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.muted,children:` ${config.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV43(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),jsxDEV43(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),jsxDEV43(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 useCallback25,useEffect as useEffect31,useMemo as useMemo20,useRef as useRef22}from"h:0__";import{RenderableEvents as RenderableEvents3}from"h:3__________";import{jsxDEV as jsxDEV44}from"h:6___________________________";function IssueListSkeleton({width,rows}){return jsxDEV44("box",{style:{flexDirection:"column",width},children:Array.from({length:rows},(_,i)=>jsxDEV44(IssueRowSkeleton,{width,seed:i},i,!1,void 0,this))},void 0,!1,void 0,this)}function IssueListEmpty({query}){let theme=useTheme();return jsxDEV44("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV44("text",{fg:theme.text,children:"No issues match this search."},void 0,!1,void 0,this),jsxDEV44("text",{fg:theme.muted,children:query},void 0,!1,void 0,this),jsxDEV44("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 jsxDEV44("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV44("text",{fg:theme.danger,children:"Failed to load issues"},void 0,!1,void 0,this),jsxDEV44("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV44("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 useMemo19}from"h:0__";import{useCallback as useCallback22,useMemo as useMemo18}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=useCallback22((_signal)=>client2&&org&&enabled?loadOrganizationMembers(client2,org):null,[client2,org,enabled]),scope=useMemo18(()=>({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 useMemo19(()=>members?avatarsByUserId([...members.values()]):EMPTY,[members])}import{useCallback as useCallback24,useEffect as useEffect30,useLayoutEffect,useRef as useRef21,useState as useState26}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{useCallback as useCallback23,useState as useState24}from"h:0__";import{useKeyboard as useKeyboard6}from"h:4___________";import{jsxDEV as jsxDEV45}from"h:6___________________________";var BODY_INDENT=" ",KEY_COLUMN=18;function Divider(){let theme=useTheme();return jsxDEV45("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this)}function Empty({children}){let theme=useTheme();return jsxDEV45("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 jsxDEV45("box",{style:{flexDirection:"row",width},children:[jsxDEV45("text",{fg:theme.muted,children:`${BODY_INDENT}${keyCell(name)}`},void 0,!1,void 0,this),jsxDEV45("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 jsxDEV45("box",{style:{flexDirection:"column",width,paddingTop:1},children:[jsxDEV45("box",{style:{flexDirection:"row",width},onMouseDown:onToggle,children:[jsxDEV45("text",{fg:theme.accent,children:prefix},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.text,attributes:BOLD,children:label},void 0,!1,void 0,this),jsxDEV45("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]=useState24(()=>new Set),toggle=useCallback23((key)=>{setCollapsed((current)=>{let next=new Set(current);if(next.has(key))next.delete(key);else next.add(key);return next})},[]),toggleAll=useCallback23(()=>{setCollapsed((current)=>current.size===order.length?new Set:new Set(order))},[order]);return useKeyboard6((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 jsxDEV46}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 jsxDEV46("box",{style:{flexDirection:"column",width},children:[jsxDEV46("text",{fg:theme.danger,attributes:1,children:fitText(value.type??"Error",width)},void 0,!1,void 0,this),value.value?jsxDEV46("text",{fg:theme.text,children:fitText(value.value,width)},void 0,!1,void 0,this):null,value.mechanism?jsxDEV46("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 jsxDEV46("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 jsxDEV46(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?jsxDEV46("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 jsxDEV46("box",{style:{flexDirection:"column",width},children:[hiddenBefore>0?jsxDEV46("text",{fg:theme.muted,children:` \u25B8 ${hiddenBefore} more frame${hiddenBefore===1?"":"s"}`},void 0,!1,void 0,this):null,jsxDEV46("box",{id:selected?selectedId:void 0,style:{flexDirection:"row",width,backgroundColor:selected?theme.selected:void 0},onMouseDown:onClick,children:[jsxDEV46("text",{fg:selected?theme.accent:theme.muted,children:`${selected?"\u276F":" "} ${marker} `},void 0,!1,void 0,this),jsxDEV46("text",{fg:frame.inApp?theme.text:theme.muted,children:fitText(formatFrameTitle(frame),width-15)},void 0,!1,void 0,this),jsxDEV46("box",{style:{flexGrow:1}},void 0,!1,void 0,this),repeats>0?jsxDEV46("text",{fg:theme.muted,children:`\xD7${repeats+1} `},void 0,!1,void 0,this):null,frame.inApp?jsxDEV46("text",{fg:theme.accent,children:"In App"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),expanded?jsxDEV46(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 jsxDEV46("box",{style:{flexDirection:"column",width,paddingLeft:5},children:[frame.context.map(([lineNo,source])=>{let active=lineNo===frame.lineNo,gutter=String(lineNo).padStart(5);return jsxDEV46("box",{style:{flexDirection:"row",width:width-5},children:[jsxDEV46("text",{fg:active?theme.accent:theme.muted,children:`${gutter} ${active?"\u276F":" "} `},void 0,!1,void 0,this),filetype&&syntaxStyle?jsxDEV46("code",{content:source??"",filetype,syntaxStyle,style:{flexGrow:1}},void 0,!1,void 0,this):jsxDEV46("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?jsxDEV46("box",{style:{flexDirection:"column",paddingTop:1},children:[jsxDEV46("text",{fg:theme.muted,children:"Local variables"},void 0,!1,void 0,this),vars.map(([name,value])=>jsxDEV46("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 useEffect29,useRef as useRef20,useState as useState25}from"h:0__";function useIssueEvent(client2,{org,issueId,eventId="latest",reloadToken=0}){let[event,setEvent]=useState25(idle),eventRef=useRef20(event);eventRef.current=event;let lastIssueId=useRef20(null);return useEffect29(()=>{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 jsxDEV47,Fragment as Fragment14}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=useRef21(null),[actionsOpen,setActionsOpen]=useState26(!1),{collapsed,toggle}=useSectionFolds(SECTION_ORDER,focused),[selectedFrameKey,setSelectedFrameKey]=useState26(),selectedFrameKeyRef=useRef21(selectedFrameKey),[frameExpansion,setFrameExpansion]=useState26(()=>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=useCallback24((key)=>{setFrameExpansion((current)=>{let next=new Map(current),expanded=current.get(key)??key===defaultExpandedFrame;return next.set(key,!expanded),next})},[defaultExpandedFrame]),selectFrameAt=useCallback24((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=useCallback24((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)}}),useEffect30(()=>{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=useCallback24((values)=>{let action=values[0];if(setActionsOpen(!1),action==="autofix")openIssueAutofix(group);else if(action)runIssueAction(action,group)},[group,openIssueAutofix,runIssueAction]),pressHeaderAction=useCallback24((chip)=>{if(chip.command===ISSUE_ACTIONS_COMMAND)setActionsOpen((open)=>!open);else runIssueAction(chip.command,group)},[group,runIssueAction]);return jsxDEV47(Fragment14,{children:[jsxDEV47("scrollbox",{ref:scrollRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{width,height,paddingLeft:1},children:[jsxDEV47(IssueHeader,{group,width:inner,actions,actionsOpen,onActionPress:pressHeaderAction},void 0,!1,void 0,this),loading?jsxDEV47("text",{fg:theme.muted,children:`${BODY_INDENT}Loading event\u2026`},void 0,!1,void 0,this):null,error?jsxDEV47("box",{style:{flexDirection:"column",paddingTop:1},children:[jsxDEV47("text",{fg:theme.danger,children:`${BODY_INDENT}Failed to load event`},void 0,!1,void 0,this),jsxDEV47("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)=>jsxDEV47(Section,{index:i+1,title:SECTION_TITLES[key],count:sectionCount(key,event),collapsed:collapsed.has(key),width:inner,onToggle:()=>toggle(key),children:jsxDEV47(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?jsxDEV47(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 jsxDEV47("box",{style:{flexDirection:"column",width},children:[jsxDEV47("box",{style:{flexDirection:"row",width},children:[jsxDEV47("text",{fg:level,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV47(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),jsxDEV47("box",{style:{flexDirection:"row",width},children:[jsxDEV47("text",{fg:level,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV47(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),jsxDEV47("box",{style:{flexDirection:"row",width,paddingTop:1},children:[jsxDEV47("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV47(PlatformIcon,{platform:group.project.platform},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:group.project.slug},void 0,!1,void 0,this),jsxDEV47(Divider,{},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:group.priority?`${group.priority} priority`:"no priority"},void 0,!1,void 0,this),jsxDEV47(Divider,{},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:group.assignedTo?.name??"unassigned"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV47("box",{style:{flexDirection:"row",width,alignItems:"center",paddingTop:1},children:[jsxDEV47("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:"24h "},void 0,!1,void 0,this),jsxDEV47("box",{style:{flexDirection:"column",alignItems:"flex-start",width:chartWidth,flexShrink:0},children:chart.map((row,i)=>jsxDEV47("text",{fg:theme.accent,children:row},i,!1,void 0,this))},void 0,!1,void 0,this),jsxDEV47("text",{children:" "},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:countLabel(group.count,"event")},void 0,!1,void 0,this),jsxDEV47(Divider,{},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:countLabel(group.userCount,"user")},void 0,!1,void 0,this),jsxDEV47(Divider,{},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:`first seen ${timeAgo(group.firstSeen)} ago`},void 0,!1,void 0,this),jsxDEV47(Divider,{},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:`last seen ${timeAgo(group.lastSeen)} ago`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV47("box",{style:{flexDirection:"row",width},children:[jsxDEV47("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV47(ChipRow,{chips:actions,activeIndex:actionsOpen?actions.length-1:void 0,onPress:onActionPress},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV47("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 jsxDEV47(Empty,{children:"No exception on this event."},void 0,!1,void 0,this);return jsxDEV47("box",{style:{flexDirection:"column",paddingLeft:BODY_INDENT.length},children:values.map((value,i)=>jsxDEV47(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 jsxDEV47(Empty,{children:"No breadcrumbs."},void 0,!1,void 0,this);return jsxDEV47("box",{style:{flexDirection:"column",width},children:crumbs.map((crumb,i)=>jsxDEV47(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 jsxDEV47(Empty,{children:"No request data."},void 0,!1,void 0,this);return jsxDEV47("box",{style:{flexDirection:"column",width},children:[jsxDEV47("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])=>jsxDEV47(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 jsxDEV47(Empty,{children:"No tags."},void 0,!1,void 0,this);return jsxDEV47("box",{style:{flexDirection:"column",width},children:tags.map((tag)=>jsxDEV47(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 jsxDEV47(Empty,{children:"No contexts."},void 0,!1,void 0,this);return jsxDEV47("box",{style:{flexDirection:"column",width},children:contexts.map(([name,values])=>jsxDEV47(Field,{name,value:summarize(values),width},name,!1,void 0,this))},void 0,!1,void 0,this)}case"sdk":if(!event.sdk)return jsxDEV47(Empty,{children:"Unknown SDK."},void 0,!1,void 0,this);return jsxDEV47("box",{style:{flexDirection:"row",width},children:[jsxDEV47("text",{fg:theme.text,children:`${BODY_INDENT}${event.sdk.name}`},void 0,!1,void 0,this),jsxDEV47("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 jsxDEV47("box",{style:{flexDirection:"row",width},children:[jsxDEV47("text",{fg:theme.subText,children:`${BODY_INDENT}${time} `},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:keyCell(category)},void 0,!1,void 0,this),jsxDEV47("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 jsxDEV48}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=useRef22(null),listRef=useRef22(null),open=useCallback25((index)=>{let group=rowsOf(state)[index];if(group)pushView(issueView(group,client2,org))},[state,pushView,client2,org]),closeDropdown=useCallback25(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),inputRefCallback=useCallback25((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=useRef22(page);useEffect31(()=>{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);useEffect31(()=>{if(fetched)dispatch({type:"setEntries",payload:fetched})},[fetched,dispatch]),useEffect31(()=>{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=useMemo20(()=>(rows??[]).some((group)=>group.assignedTo?.type==="user"),[rows]),avatars=useMemberAvatars(client2,org,hasAssignee),listWidth=Math.max(20,width-SCROLLBAR_GUTTER2);return jsxDEV48("box",{style:{flexDirection:"column",width,height},children:[title?jsxDEV48("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV48("text",{fg:theme.text,attributes:BOLD,children:title},void 0,!1,void 0,this),description?jsxDEV48("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,jsxDEV48("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:[jsxDEV48(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV48("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),jsxDEV48(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),jsxDEV48(IssueListHeader,{width:listWidth,selectionBelow:focused&&state.selected===0&&(rows?.length??0)>0},void 0,!1,void 0,this),jsxDEV48("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)?jsxDEV48(IssueListSkeleton,{width:listWidth,rows:PAGE_SIZE},void 0,!1,void 0,this):null,rows!==void 0&&rows.length===0&&!loading?jsxDEV48(IssueListEmpty,{query:state.committedQuery},void 0,!1,void 0,this):null,rows?.map((group,index)=>jsxDEV48(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?jsxDEV48(IssueListError,{error},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),stale?jsxDEV48("text",{fg:theme.muted,children:error?` \u26A0 ${fitText(error.message,listWidth-3)}`:""},void 0,!1,void 0,this):null,jsxDEV48(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)=>jsxDEV48(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)=>jsxDEV48(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(useEffect31(()=>{if(group)updateView(`issue:${issueId}`,{label:group.shortId,issue:group})},[group,issueId,updateView]),!group)return jsxDEV48(DirectDetailStatus,{status,noun:"issue",width,height},void 0,!1,void 0,this);return jsxDEV48(IssueDetail,{client:client2,org,group:issue??group,eventId,width,height,focused,reloadToken,runIssueAction,openIssueAutofix},void 0,!1,void 0,this)}import{useCallback as useCallback26,useEffect as useEffect34}from"h:0__";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})}import{useEffect as useEffect33,useMemo as useMemo21,useRef as useRef24}from"h:0__";import{useEffect as useEffect32,useRef as useRef23,useState as useState27}from"h:0__";function useGroupSearchViews(client2,{org,sort,reloadToken=0}){let[sections,setSections]=useState27(idle),[nextCursors,setNextCursors]=useState27({mine:null,others:null}),sectionsRef=useRef23(sections);return sectionsRef.current=sections,useEffect32(()=>{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 jsxDEV49}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=useRef24(null),sort=viewSort(sortValue),{sections:status,nextCursors}=useGroupSearchViews(client2,{org,sort,reloadToken}),sections=valueOf(status),error=errorOf(status),loading=status.state==="loading",rows=useMemo21(()=>(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]);useEffect33(()=>{onRowsChange?.(rows)},[rows,onRowsChange]),useEffect33(()=>{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 jsxDEV49("box",{style:{flexDirection:"column",width,height},children:[jsxDEV49("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV49("text",{fg:theme.text,attributes:BOLD,children:"All Views"},void 0,!1,void 0,this),jsxDEV49("text",{fg:theme.muted,children:" Saved issue searches for this organization."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV49(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),jsxDEV49("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)?jsxDEV49("text",{fg:theme.muted,children:" Loading views\u2026"},void 0,!1,void 0,this):null,error&&sections===void 0?jsxDEV49("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV49("text",{fg:theme.danger,children:"Failed to load views"},void 0,!1,void 0,this),jsxDEV49("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,sections?.map((section)=>jsxDEV49("box",{style:{flexDirection:"column",width:listWidth},children:[jsxDEV49("text",{fg:theme.muted,attributes:BOLD,children:` ${section.title}`},void 0,!1,void 0,this),section.views.length===0?jsxDEV49("text",{fg:theme.subText,children:" No saved views."},void 0,!1,void 0,this):null,section.views.map((view)=>(rowIndex+=1,jsxDEV49(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),jsxDEV49(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 jsxDEV49("box",{style:{flexDirection:"row",width,backgroundColor:selected?theme.panel:void 0},children:[jsxDEV49("text",{fg:theme.accent,children:cursor},void 0,!1,void 0,this),jsxDEV49("text",{fg:view.starred?theme.warning:theme.muted,children:star},void 0,!1,void 0,this),jsxDEV49("text",{fg:selected?theme.text:theme.subText,attributes:selected?BOLD:0,children:` ${padText(view.name,COL_NAME)}`},void 0,!1,void 0,this),jsxDEV49("text",{fg:theme.muted,children:` ${padText(fitText(view.query,queryWidth),queryWidth)}`},void 0,!1,void 0,this),jsxDEV49("text",{fg:theme.subText,children:` ${padText(view.lastVisited?timeAgo(view.lastVisited):"\u2014",COL_LAST_VIEWED,"right")}`},void 0,!1,void 0,this),jsxDEV49("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 jsxDEV50}from"h:6___________________________";function IssueViews(props){let{client:client2,org,state,focused,width,height,reloadToken,pushView,registerActions}=props,{dispatch}=state,open=useCallback26((index)=>{let row=rowsOf(state)[index];if(row)pushView(savedViewStream(row))},[state,pushView]);useScreenActions(registerActions,{open});let handleStatus=useCallback26((status)=>dispatch({type:"setStatus",payload:{...status,noun:"saved views"}}),[dispatch]);return jsxDEV50(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?jsxDEV50(IssueFeed,{...ctx,state:ctx.state,title:row.view.name,description:row.view.query},void 0,!1,void 0,this):null}}var loadSavedView=(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?jsxDEV50(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:loadSavedView}),view=valueOf(status);if(useEffect34(()=>{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 jsxDEV50(DirectDetailStatus,{status,noun:"saved view",width,height},void 0,!1,void 0,this);return jsxDEV50(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 useCallback28,useEffect as useEffect39,useMemo as useMemo25,useRef as useRef28}from"h:0__";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 unique2=[...new Set(ids)];if(unique2.length===0)return[];let chunks=[];for(let i=0;i<unique2.length;i+=MAX_DETECTORS_PER_REQUEST)chunks.push(unique2.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 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 useEffect35,useMemo as useMemo22,useRef as useRef25,useState as useState28}from"h:0__";function useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width,statsPeriod,project,environment,reloadToken=0}){let[status,setStatus]=useState28(idle),statusRef=useRef25(status);statusRef.current=status;let monitorKey=useMemo22(()=>[...new Set(monitorIds)].sort().join(","),[monitorIds]),uptimeKey=useMemo22(()=>[...new Set(uptimeDetectorIds)].sort().join(","),[uptimeDetectorIds]),projectKey=useMemo22(()=>(project??[]).join(","),[project]),environmentKey=useMemo22(()=>(environment??[]).join(","),[environment]),windowSeconds=timelineWindowSeconds(statsPeriod),resolution=timelineWindow(width,{windowSeconds}).resolution;return useEffect35(()=>{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 useCallback27}from"h:0__";function useDetectors(client2,{org,query,sortBy,project,reloadToken=0}){let loader=useCallback27((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 useEffect38,useMemo as useMemo24}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 useEffect36,useRef as useRef26,useState as useState29}from"h:0__";function useDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,reloadToken=0}){let[status,setStatus]=useState29(idle),statusRef=useRef26(status);return statusRef.current=status,useEffect36(()=>{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]=useState29(idle),statusRef=useRef26(status);return statusRef.current=status,useEffect36(()=>{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 useEffect37,useMemo as useMemo23,useRef as useRef27}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 jsxDEV51}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 jsxDEV51("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 jsxDEV51("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(jsxDEV51("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 jsxDEV52,Fragment as Fragment15}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 jsxDEV52("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 jsxDEV52(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 jsxDEV52(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 jsxDEV52("box",{style:{flexDirection:"column",width:cellWidth},children:environments.map((environment)=>jsxDEV52("box",{style:{flexDirection:"row",width:cellWidth},children:[environmentWidths.label>0?jsxDEV52(Fragment15,{children:[jsxDEV52("text",{fg:theme.subText,children:padText(environment,environmentWidths.label)},void 0,!1,void 0,this),jsxDEV52("text",{children:" ".repeat(environmentWidths.gap)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV52(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 jsxDEV53,Fragment as Fragment16}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=useMemo23(()=>monitorId?[monitorId]:[],[monitorId]),uptimeDetectorIds=useMemo23(()=>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=useRef27(void 0),error=errorOf(status)?.message;if(useEffect37(()=>{if(error&&notified.current!==error)notify({kind:"warning",text:"check-in history unavailable"});notified.current=error},[error,notify]),!kind)return null;if(kind==="cron"&&!monitorId)return jsxDEV53(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 jsxDEV53("box",{style:{flexDirection:"column",width},children:[jsxDEV53("box",{style:{flexDirection:"row",width},children:[jsxDEV53("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"?jsxDEV53(Track,{buckets:failed?[]:uptimeBuckets(stats,detector.id),style:timelineStyles.uptime,width:trackWidth,since,until},void 0,!1,void 0,this):jsxDEV53(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 jsxDEV53(Fragment16,{children:[jsxDEV53("box",{style:{flexDirection:"row",width:width+BODY_INDENT.length},children:[jsxDEV53("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV53(CheckInTimeline,{buckets,style,width,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV53(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 jsxDEV53("box",{style:{flexDirection:"row",width:width+BODY_INDENT.length},children:[jsxDEV53("text",{children:BODY_INDENT},void 0,!1,void 0,this),totals.map((entry,index)=>jsxDEV53("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 jsxDEV53("text",{fg:theme.subText,children:` (all ${environments.length} environments)`},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV54,Fragment as Fragment17}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)=>jsxDEV54(MonitorDetail,{...ctx,detector,projectSlug,statsPeriod},void 0,!1,void 0,this)}}var loadDetector=(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)=>jsxDEV54(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:loadDetector}),detector=valueOf(status);if(useEffect38(()=>{if(detector)updateView(`monitor:${detectorId}`,{label:detector.name})},[detector,detectorId,updateView]),!detector)return jsxDEV54(DirectDetailStatus,{status,noun:"monitor",width,height},void 0,!1,void 0,this);return jsxDEV54(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=useMemo24(()=>["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 jsxDEV54("scrollbox",{focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{width,height,paddingLeft:1},children:[jsxDEV54(MonitorHeader,{detector,projectSlug,width:inner},void 0,!1,void 0,this),order.map((key,index)=>jsxDEV54(Section,{index:index+1,title:SECTION_TITLES2[key],count:counts[key],collapsed:collapsed.has(key),width:inner,onToggle:()=>toggle(key),children:jsxDEV54(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 jsxDEV54("box",{style:{flexDirection:"column",width},children:[jsxDEV54("box",{style:{flexDirection:"row",width},children:[jsxDEV54("text",{fg:bar2,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.text,attributes:BOLD,children:fitText(detector.name,titleWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV54("box",{style:{flexDirection:"row",width},children:[jsxDEV54("text",{fg:bar2,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.muted,children:fitText(detector.description||"(no description)",titleWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV54("box",{style:{flexDirection:"row",width,paddingTop:1},children:[jsxDEV54("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV54("text",{fg:detector.enabled?theme.success:theme.muted,children:detector.enabled?"enabled":"disabled"},void 0,!1,void 0,this),jsxDEV54(Divider,{},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.muted,children:detectorTypeLabel(detector.type)},void 0,!1,void 0,this),projectSlug?jsxDEV54(Fragment17,{children:[jsxDEV54(Divider,{},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.muted,children:projectSlug},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV54(Divider,{},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.muted,children:detector.owner?detectorAssigneeLabel(detector.owner):"unassigned"},void 0,!1,void 0,this),jsxDEV54(Divider,{},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.muted,children:lastTriggeredLabel(detector)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV54("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"?jsxDEV54(Empty,{children:"An error monitor has no settings \u2014 every error in its project opens an issue."},void 0,!1,void 0,this):jsxDEV54(Empty,{children:"No configuration was returned for this monitor."},void 0,!1,void 0,this);return jsxDEV54("box",{style:{flexDirection:"column",width},children:fields.map((field3)=>jsxDEV54(Field,{name:field3.label,value:field3.value,width},field3.label,!1,void 0,this))},void 0,!1,void 0,this)}case"timeline":return jsxDEV54(DetectorTimelineSection,{detector,width,client:client2,org,reloadToken,notify},void 0,!1,void 0,this);case"periods":return jsxDEV54(OpenPeriods,{status:periods,statsPeriod,width},void 0,!1,void 0,this);case"alerts":return jsxDEV54(ConnectedAlerts,{status:workflows,width},void 0,!1,void 0,this);case"details":return jsxDEV54(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 jsxDEV54(Empty,{children:`Failed to load open periods: ${error.message}`},void 0,!1,void 0,this);if(!page)return jsxDEV54(Empty,{children:"Loading open periods\u2026"},void 0,!1,void 0,this);if(page.rows.length===0)return jsxDEV54(Empty,{children:`No open periods in the last ${statsPeriod}.`},void 0,!1,void 0,this);return jsxDEV54("box",{style:{flexDirection:"column",width},children:[jsxDEV54(Empty,{children:openPeriodsSummary(page,statsPeriod)},void 0,!1,void 0,this),page.rows.map((period)=>jsxDEV54(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 jsxDEV54("box",{style:{flexDirection:"row",width},children:[jsxDEV54("text",{fg:theme.subText,children:`${BODY_INDENT}#${period.id} `},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.text,children:dateTimeText(period.start)},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.subText,children:" \u2192 "},void 0,!1,void 0,this),jsxDEV54("text",{fg:open?theme.warning:theme.text,children:open?"ongoing":dateTimeText(period.end)},void 0,!1,void 0,this),jsxDEV54("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 jsxDEV54(Empty,{children:`Failed to load alerts: ${error.message}`},void 0,!1,void 0,this);if(!rows)return jsxDEV54(Empty,{children:"Loading alerts\u2026"},void 0,!1,void 0,this);if(rows.length===0)return jsxDEV54(Empty,{children:"No alerts are connected to this monitor."},void 0,!1,void 0,this);return jsxDEV54("box",{style:{flexDirection:"column",width},children:rows.map((workflow)=>jsxDEV54(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 jsxDEV54("box",{style:{flexDirection:"column",width},children:[jsxDEV54("box",{style:{flexDirection:"row",width},children:jsxDEV54("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),jsxDEV54("box",{style:{flexDirection:"row",width},children:[jsxDEV54("text",{fg:theme.subText,children:`${BODY_INDENT} `},void 0,!1,void 0,this),jsxDEV54("text",{fg:enabled?theme.muted:theme.subText,children:enabled?"enabled":"disabled"},void 0,!1,void 0,this),actions?jsxDEV54(Fragment17,{children:[jsxDEV54(Divider,{},void 0,!1,void 0,this),jsxDEV54("text",{fg:theme.muted,children:actions},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV54(Divider,{},void 0,!1,void 0,this),jsxDEV54("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 jsxDEV54("box",{style:{flexDirection:"column",width},children:[jsxDEV54(Field,{name:"Monitor ID",value:detector.id,width},void 0,!1,void 0,this),environment?jsxDEV54(Field,{name:"Environment",value:environment,width},void 0,!1,void 0,this):null,group?jsxDEV54(Field,{name:"Last issue",value:lastIssueValue(group.title,group.shortId,group.lastSeen),width},void 0,!1,void 0,this):null,jsxDEV54(Field,{name:"Created",value:dateTimeText(detector.dateCreated),width},void 0,!1,void 0,this),jsxDEV54(Field,{name:"Created by",value:createdBy,width},void 0,!1,void 0,this),jsxDEV54(Field,{name:"Last modified",value:dateTimeText(detector.dateUpdated),width},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lastIssueValue(title,shortId3,lastSeen){let age=timeAgo(lastSeen);return[shortId3,title,age?`${age} ago`:void 0].filter(Boolean).join(" \xB7 ")}import{jsxDEV as jsxDEV55}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)=>jsxDEV55("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)=>jsxDEV55("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)=>jsxDEV55("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)=>jsxDEV55("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 jsxDEV55("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 jsxDEV55("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 jsxDEV56}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);useEffect39(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef28(page);useEffect39(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect39(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"monitors"}})},[loading,since,error,dispatch]);let projectIds=useMemo25(()=>rows?.flatMap((row)=>row.projectId?[row.projectId]:[])??[],[rows]),projectSlugs2=useProjectSlugs(client2,org,projectIds),{pushView}=props,open=useCallback28((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=useCallback28(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),timelineKind=timelineKindFor(view.type),trackWidth=timelineColumnWidth(width),windowSeconds=timelineWindowSeconds(state.statsPeriod),{monitorIds,uptimeDetectorIds}=useMemo25(()=>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=useRef28(void 0),statsError=errorOf(statsStatus)?.message;useEffect39(()=>{if(!timelineKind)return;if(statsError&&notifiedError.current!==statsError)notify({kind:"warning",text:"check-in history unavailable"});notifiedError.current=statsError},[timelineKind,statsError,notify]);let columns=useMemo25(()=>monitorColumns(theme,timelineKind?{visualization:timelineColumn({stats,failed:statsFailed,width:trackWidth,windowSeconds,theme})}:void 0),[timelineKind,stats,statsFailed,trackWidth,windowSeconds,theme]),renderDetail=useCallback28((detector,_selected,detailWidth)=>renderDetectorDetail(detector,detailWidth,{projectSlugs:projectSlugs2,theme}),[projectSlugs2,theme]);return jsxDEV56("box",{style:{flexDirection:"column",width,height},children:[jsxDEV56(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),jsxDEV56("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV56("text",{fg:theme.text,attributes:BOLD,children:view.title},void 0,!1,void 0,this),jsxDEV56("text",{fg:theme.muted,children:` ${view.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV56(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),jsxDEV56(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),jsxDEV56(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 useCallback30,useEffect as useEffect40,useRef as useRef29}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 useCallback29}from"h:0__";function useProfileFunctions(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback29((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 jsxDEV57}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)=>jsxDEV57("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)=>jsxDEV57("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)=>jsxDEV57("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)=>jsxDEV57("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)=>jsxDEV57("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)=>jsxDEV57("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=useRef29(null),inputRefCallback=useCallback30((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);useEffect40(()=>{if(functions)dispatch({type:"setEntries",payload:functions})},[functions,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:"functions"}})},[loading,since,error,status,dispatch]);let closeDropdown=useCallback30(()=>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 jsxDEV57("box",{style:{flexDirection:"column",width,height},children:[jsxDEV57("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:[jsxDEV57(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV57("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),jsxDEV57(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),jsxDEV57(FlamegraphNote,{width:inner},void 0,!1,void 0,this),jsxDEV57(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?jsxDEV57(FunctionDetail,{fn:selected,width:inner},void 0,!1,void 0,this):null,jsxDEV57(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 jsxDEV57("box",{style:{flexDirection:"column",width,flexShrink:0,border:["bottom"],borderColor:theme.border},children:[jsxDEV57("text",{fg:theme.subText,attributes:BOLD,children:fitText(FLAMEGRAPH_HEADING,width)},void 0,!1,void 0,this),FLAMEGRAPH_NOTE.map((line)=>jsxDEV57("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 jsxDEV57("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV57("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Function Details"},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.text,children:fitText(fn.name,width)},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:fitText(` Package: ${fn.package||"\u2014"}`,width)},void 0,!1,void 0,this),jsxDEV57("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 useCallback33,useEffect as useEffect43,useMemo as useMemo26,useRef as useRef31}from"h:0__";import{RenderableEvents as RenderableEvents5}from"h:3__________";import{useEffect as useEffect41}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);useEffect41(()=>{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 useCallback31}from"h:0__";function useReleaseAdoption(client2,{org,releases,project,environment}){let loader=useCallback31((signal)=>client2&&releases?listReleaseAdoption(client2,{org,releases,project,environment,signal}):null,[client2,org,releases,project,environment]);return useAsyncFetch(loader,{resetKey:releases}).status}import{useCallback as useCallback32,useEffect as useEffect42,useRef as useRef30,useState as useState30}from"h:0__";function useReleases(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback32((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]=useState30(idle),healthRef=useRef30(health);return healthRef.current=health,useEffect42(()=>{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{jsxDEV as jsxDEV58,Fragment as Fragment18}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)=>jsxDEV58("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)=>jsxDEV58(AdoptionCell,{row,width},void 0,!1,void 0,this)},{key:"crashFree",label:"Crash-Free",width:11,align:"right",render:(row,_selected,width)=>jsxDEV58(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?jsxDEV58(PendingCell,{width,align:"right"},void 0,!1,void 0,this):jsxDEV58("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)=>jsxDEV58("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=useCallback33((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=useMemo26(()=>projectParams(state.selectedProjects),[state.selectedProjects]),environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sortItems=useMemo26(()=>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=useCallback33(()=>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=useMemo26(()=>layoutColumns(projectColumns(theme),tableWidth,{gap:GAP}),[tableWidth,theme]),heights=useMemo26(()=>(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 jsxDEV58("box",{style:{flexDirection:"column",width,height},children:[jsxDEV58("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:[jsxDEV58(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV58("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),jsxDEV58(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),jsxDEV58("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)=>jsxDEV58(SkeletonCard,{resolved:resolved2,width:cardWidth,seed:i},i,!1,void 0,this)):null,showEmpty?jsxDEV58("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV58("text",{fg:theme.text,children:"No releases found."},void 0,!1,void 0,this),query?jsxDEV58("text",{fg:theme.muted,children:query},void 0,!1,void 0,this):null,jsxDEV58("text",{fg:theme.muted,children:"Try widening the time range or clearing the version filter."},void 0,!1,void 0,this),jsxDEV58("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)=>jsxDEV58(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?jsxDEV58("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV58("text",{fg:theme.danger,children:"Failed to load releases"},void 0,!1,void 0,this),jsxDEV58("text",{fg:theme.muted,children:listError.message},void 0,!1,void 0,this),listError.retryable?jsxDEV58("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),jsxDEV58(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 jsxDEV58("box",{style:{flexDirection:"column",width,flexShrink:0},onMouseDown:()=>onPress(index),children:[jsxDEV58("box",{style:{flexDirection:"row",width,backgroundColor:selected?theme.selected:void 0},children:[jsxDEV58("text",{fg:theme.accent,children:selected?"\u276F ":" "},void 0,!1,void 0,this),jsxDEV58("text",{fg:theme.text,attributes:BOLD,children:padText(release.shortVersion||release.version,versionWidth)},void 0,!1,void 0,this),jsxDEV58("text",{fg:theme.subText,children:padText(stamp,stampWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV58("text",{fg:theme.muted,children:padText(` ${releaseSummary(release)}`,width)},void 0,!1,void 0,this),jsxDEV58("box",{style:{flexDirection:"row",width},children:[jsxDEV58("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV58("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)=>jsxDEV58("box",{style:{flexDirection:"row",width},children:[jsxDEV58("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV58("box",{style:{flexDirection:"row",flexShrink:0},children:[i>0?jsxDEV58("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?jsxDEV58("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,jsxDEV58("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 jsxDEV58(PendingCell,{width},void 0,!1,void 0,this);let adoption=row.health?.adoption;if(adoption===void 0)return jsxDEV58("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 jsxDEV58(Fragment18,{children:[jsxDEV58("text",{fg:theme.muted,children:padText(`${Math.round(clamped)}%`,labelWidth)},void 0,!1,void 0,this),chart.length>0?chart.map((cell,index)=>jsxDEV58("text",{fg:cell.series==="release"?theme.accent:theme.subText,children:cell.glyph},index,!1,void 0,this)):jsxDEV58("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 jsxDEV58(PendingCell,{width,align:"right"},void 0,!1,void 0,this);let rate=row.health?.crashFreeSessions;if(rate===void 0)return jsxDEV58("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 jsxDEV58("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 jsxDEV58("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 jsxDEV58("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV58("text",{fg:theme.panelAlt,children:padText(` ${bar2(24,seed)}`,width)},void 0,!1,void 0,this),jsxDEV58("text",{fg:theme.panelAlt,children:padText(` ${bar2(32,seed+3)}`,width)},void 0,!1,void 0,this),jsxDEV58("box",{style:{flexDirection:"row",width},children:[jsxDEV58("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV58("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)=>jsxDEV58("box",{style:{flexDirection:"row",width},children:[jsxDEV58("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV58("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)),jsxDEV58("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 useMemo27,useRef as useRef32}from"h:0__";import{RenderableEvents as RenderableEvents6}from"h:3__________";import{useCallback as useCallback34}from"h:0__";function useReplays(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback34((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=useCallback34((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 jsxDEV59,Fragment as Fragment19}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 jsxDEV59("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 jsxDEV59(Fragment19,{children:[jsxDEV59("text",{fg:theme.accent,children:marker},void 0,!1,void 0,this),nameWidth>0?jsxDEV59("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)=>jsxDEV59("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)=>jsxDEV59("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)=>jsxDEV59("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)=>jsxDEV59(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)=>jsxDEV59(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)=>jsxDEV59(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)=>jsxDEV59(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=useMemo27(()=>fetched?.flatMap((replay)=>replay.projectId?[replay.projectId]:[])??[],[fetched]),slugById=useProjectSlugs(client2,org,projectIds),rows=useMemo27(()=>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}),jsxDEV59("box",{style:{flexDirection:"column",width,height},children:[jsxDEV59(SearchInputPlaceholder,{state,width,placeholder:"Search replays\u2026"},void 0,!1,void 0,this),jsxDEV59(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),jsxDEV59(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),jsxDEV59(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 jsxDEV59("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 jsxDEV59("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 jsxDEV59("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 jsxDEV59(Fragment19,{children:[filled>0?jsxDEV59("text",{fg:theme.accent,children:"\u2588".repeat(filled)},void 0,!1,void 0,this):null,empty>0?jsxDEV59("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?jsxDEV59(ReplayDetail,{...ctx,state:ctx.state,replay},void 0,!1,void 0,this):null}}var loadReplay=(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?jsxDEV59(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:loadReplay}),replay=valueOf(status);if(useEffect44(()=>{if(replay)updateView(`replay:${replayId}`,{label:shortReplayId(replay.id)})},[replay,replayId,updateView]),!replay)return jsxDEV59(DirectDetailStatus,{status,noun:"replay",width,height},void 0,!1,void 0,this);return jsxDEV59(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)=>jsxDEV59("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)=>jsxDEV59("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)=>jsxDEV59("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)=>jsxDEV59("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 jsxDEV59("box",{style:{flexDirection:"column",width,height,paddingLeft:1},children:[jsxDEV59(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),jsxDEV59("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV59("text",{fg:theme.text,attributes:BOLD,children:fitText(name,Math.max(8,inner-24))},void 0,!1,void 0,this),jsxDEV59("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),jsxDEV59(Field2,{label:"Duration",value:formatReplayDuration(replay.durationSec),width:inner},void 0,!1,void 0,this),jsxDEV59(Field2,{label:"Platform",value:[formatAgent(replay.os),formatAgent(replay.browser)].filter((part)=>part!=="\u2014").join(" \xB7 "),width:inner},void 0,!1,void 0,this),jsxDEV59(Field2,{label:"Clicks",value:`${count(replay.countDeadClicks)} dead \xB7 ${count(replay.countRageClicks)} rage`,width:inner},void 0,!1,void 0,this),jsxDEV59(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),jsxDEV59(Field2,{label:"Release",value:replay.releases[0]??"\u2014",width:inner},void 0,!1,void 0,this),jsxDEV59(Field2,{label:"URL",value:replay.urls[0]??"\u2014",width:inner},void 0,!1,void 0,this),jsxDEV59("box",{style:{flexDirection:"column",flexShrink:0},children:[jsxDEV59("text",{fg:theme.muted,children:" "},void 0,!1,void 0,this),jsxDEV59("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)=>jsxDEV59("text",{fg:theme.accent,children:padText(line,inner)},index,!1,void 0,this)),jsxDEV59("text",{fg:theme.muted,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV59(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),jsxDEV59(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 jsxDEV59("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV59("text",{fg:theme.muted,children:padText(label,10)},void 0,!1,void 0,this),jsxDEV59("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 jsxDEV59("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:[jsxDEV59(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV59("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 useMemo28}from"h:0__";import{jsxDEV as jsxDEV60}from"h:6___________________________";var HEADING_ROWS3=1,MIN_QUERY_WIDTH=20;function columnsFor2(config,theme){return[{key:"star",label:" ",width:1,render:(query)=>jsxDEV60("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)=>jsxDEV60("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)=>jsxDEV60("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)=>jsxDEV60("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)=>jsxDEV60("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)=>jsxDEV60("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=useMemo28(()=>columnsFor2(config,theme),[config,theme]);return jsxDEV60("box",{style:{flexDirection:"column",width,height},children:[jsxDEV60(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),jsxDEV60("box",{style:{flexDirection:"row",width,flexShrink:0,height:HEADING_ROWS3,paddingLeft:1},children:[jsxDEV60("text",{fg:theme.text,attributes:BOLD,children:config.title},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.muted,children:` ${config.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV60(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),jsxDEV60(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),jsxDEV60(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 useMemo30,useRef as useRef33}from"h:0__";import{useCallback as useCallback37,useEffect as useEffect46,useMemo as useMemo29,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=useMemo29(()=>{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 jsxDEV61}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)=>jsxDEV61("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)=>jsxDEV61("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)=>jsxDEV61("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)=>jsxDEV61("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)=>jsxDEV61("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=useMemo30(()=>[...detectors.byId.values()].flatMap((detector)=>detector.projectId?[detector.projectId]:[]),[detectors.byId]),slugById=useProjectSlugs(client2,org,projectIds),rows=useMemo30(()=>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}),jsxDEV61("box",{style:{flexDirection:"column",width,height},children:[jsxDEV61(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),jsxDEV61("box",{style:{flexDirection:"row",width,height:1,flexShrink:0,overflow:"hidden",paddingLeft:1},children:[jsxDEV61("text",{fg:theme.text,attributes:BOLD,children:"Alerts"},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.muted,children:" Automations that run when a monitor fires."},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,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),jsxDEV61(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),jsxDEV61(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=useMemo31(()=>viewStack.map((view)=>view.sentryLocation),[viewStack]),navExtras=useSecondaryNavExtras(client2,org,railGroup,reloadToken),secondaryItems=useMemo31(()=>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=useMemo31(()=>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=useMemo31(()=>{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=useMemo31(()=>{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 useMemo32}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();useMemo32(()=>{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 jsxDEV62}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=useMemo33(()=>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=useMemo33(()=>{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=useMemo33(()=>{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=useMemo33(()=>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 jsxDEV62("box",{style:{width:"100%",height:"100%",flexDirection:"column",backgroundColor:theme.bg},children:[jsxDEV62("box",{style:{flexGrow:1,flexDirection:"row"},children:[jsxDEV62(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?jsxDEV62(SecondaryNav,{group:railGroup,activeItem:secondaryItem,focused:focus.isFocused("secondary"),extras:navExtras,hotkeys:gotoHotkeys?.items,onSelect:selectNavItem},void 0,!1,void 0,this):null,jsxDEV62("box",{title:breadcrumb2,titleColor:theme.accent,style:{flexGrow:1,flexDirection:"column",overflow:"hidden",border:!0,borderColor:contentFocused&&!state.searchFocused?theme.borderFocused:theme.border},children:jsxDEV62(SeerChatContext.Provider,{value:seerChat,children:topView?topView.render({...paneProps,state:topView.stateKey?state:void 0,issue:topView.issue}):ScreenComponent&&screen?jsxDEV62(ScreenComponent,{...paneProps,screen,state},screen.id,!1,void 0,this):jsxDEV62("box",{style:{flexDirection:"column",paddingLeft:1},children:[jsxDEV62("text",{fg:theme.text,attributes:1,children:`${getNavGroup(activeGroup).label} \u203A ${activeItem}`},void 0,!1,void 0,this),jsxDEV62("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?jsxDEV62(DetailBackRow,{parent:backTarget,top:0,right:width-1,paneWidth:contentWidth},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),jsxDEV62(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?jsxDEV62(HelpDialog,{onClose:()=>setShowHelp(!1)},void 0,!1,void 0,this):null,showPalette?jsxDEV62(CommandPalette,{actions:paletteActions,onRun:runPaletteAction,onClose:()=>setShowPalette(!1)},void 0,!1,void 0,this):null,showOpenUrl?jsxDEV62(OpenSentryUrlDialog,{onSubmit:submitSentryUrl,onClose:()=>setShowOpenUrl(!1)},void 0,!1,void 0,this):null,showOrgPicker?jsxDEV62(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?jsxDEV62(WebUrlDialog,{url:webUrlFallback,onClose:()=>setWebUrlFallback(void 0)},void 0,!1,void 0,this):null,autofixIssue?jsxDEV62(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 jsxDEV63}from"h:6___________________________";var payload={version:APP_VERSION,hostApiVersion:HOST_API_VERSION};function PayloadApp({theme,...props}){return jsxDEV63(ThemeProvider,{...theme,children:jsxDEV63(App,{...props},void 0,!1,void 0,this)},void 0,!1,void 0,this)}export{PayloadApp,payload};
19
20
 
20
- //# debugId=A974796D8F327EC364756E2164756E21
21
- //# sourceMappingURL=app.mjs.map
21
+ //# debugId=95C7E69D45F5733464756E2164756E21