@billyvg/sentry-tui-app 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/app/app.mjs CHANGED
@@ -1,6 +1,6 @@
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
+ !function(){try{var e=globalThis,n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0fd5b9e8-ffda-5533-6475-6e2164756e21")}catch(e){}}();
2
2
  // @bun
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
+ var __require=import.meta.require;var HOST_API_VERSION=2,HOST_DEPENDENCIES=["h:0__","h:1______________","h:2__________________","h:3__________","h:4___________","h:5_______________________","h:6___________________________","h:7___________________________________","h:8________________________________","h:9________________________________"],HOST_MODULE_SPECIFIERS=Object.fromEntries(HOST_DEPENDENCIES.map((dependency,index)=>[dependency,`h:${index}`.padEnd(dependency.length,"_")]));var app="0.16.0";var APP_VERSION=app,APP_VERSION_LABEL=`v${APP_VERSION}`;import{useCallback as useCallback42,useEffect as useEffect50,useMemo as useMemo34,useRef as useRef35,useState as useState35}from"h:0__";import{useKeyboard as useKeyboard8,useTerminalDimensions as useTerminalDimensions5}from"h:4___________";import{writeConfig}from"h:8________________________________";var jsonBodySerializer={bodySerializer:(body)=>JSON.stringify(body,(_key,value)=>typeof value==="bigint"?value.toString():value)},extraPrefixesMap={$body_:"body",$headers_:"headers",$path_:"path",$query_:"query"},extraPrefixes=Object.entries(extraPrefixesMap),createSseClient=({onRequest,onSseError,onSseEvent,responseTransformer,responseValidator,sseDefaultRetryDelay,sseMaxRetryAttempts,sseMaxRetryDelay,sseSleepFn,url,...options})=>{let lastEventId,sleep=sseSleepFn??((ms)=>new Promise((resolve)=>setTimeout(resolve,ms)));return{stream:async function*(){let retryDelay=sseDefaultRetryDelay??3000,attempt=0,signal=options.signal??new AbortController().signal;while(!0){if(signal.aborted)break;attempt++;let headers=options.headers instanceof Headers?options.headers:new Headers(options.headers);if(lastEventId!==void 0)headers.set("Last-Event-ID",lastEventId);try{let requestInit={redirect:"follow",...options,body:options.serializedBody,headers,signal},request=new Request(url,requestInit);if(onRequest)request=await onRequest(url,requestInit);let response=await(options.fetch??globalThis.fetch)(request);if(!response.ok)throw Error(`SSE failed: ${response.status} ${response.statusText}`);if(!response.body)throw Error("No body in SSE response");let reader=response.body.pipeThrough(new TextDecoderStream).getReader(),buffer="",abortHandler=()=>{try{reader.cancel()}catch{}};signal.addEventListener("abort",abortHandler);try{while(!0){let{done,value}=await reader.read();if(done)break;buffer+=value,buffer=buffer.replace(/\r\n/g,`
4
4
  `).replace(/\r/g,`
5
5
  `);let chunks=buffer.split(`
6
6
 
@@ -8,14 +8,14 @@ var __require=import.meta.require;var HOST_API_VERSION=2,HOST_DEPENDENCIES=["h:0
8
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
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
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(`
11
+ `,row.heading]},`h-${row.heading}`,!0,void 0,this);let keys=row.defaultKeys.map(formatKey).join(", ");return jsxDEV14("text",{children:[jsxDEV14("span",{fg:theme.text,children:padText(keys,HELP_KEY_COLUMN)},void 0,!1,void 0,this),jsxDEV14("span",{fg:theme.muted,children:row.description??row.title},void 0,!1,void 0,this)]},row.id,!0,void 0,this)})},void 0,!1,void 0,this),jsxDEV14("text",{fg:theme.muted,style:{marginTop:1},children:"esc to close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback14,useEffect as useEffect17,useRef as useRef11,useState as useState16}from"h:0__";import{useKeyboard as useKeyboard4,useTerminalDimensions as useTerminalDimensions4}from"h:4___________";function issueTitle(group){return group.metadata?.type||group.metadata?.function||group.title}function issueMessage(group){let value=group.metadata?.value;if(value)return collapseWhitespace(value);let culprit=group.culprit??"";return culprit===issueTitle(group)?"":collapseWhitespace(culprit)}function collapseWhitespace(text){return text.replace(/\s+/g," ").trim()}import{useCallback as useCallback13,useContext as useContext2,useEffect as useEffect16,useMemo as useMemo8,useReducer as useReducer2}from"h:0__";var SEER_SUGGESTED_QUESTIONS=["Which of my open issues are getting worse, not better?","What are my slowest DB queries?","Walk me through what's on my screen and what I can focus on next."],SEER_THINKING_PLACEHOLDERS=["Looking around\u2026","One sec\u2026","Following breadcrumbs\u2026","Hold tight\u2026","Gathering threads\u2026","Tracing the answer\u2026","Stacking ideas\u2026","Profiling your project\u2026","Span by span\u2026","Rolling logs\u2026","Replaying prod\u2026","Scanning the error-waves\u2026"],SEER_STATUS_GLYPH={loading:"\u25D0",content:"\u2022",pending:"?",success:"\u2713",failure:"\u2717",mixed:"!"};function seerSlashCommands(capabilities,{hasRun,hasCodeChanges=!1}){let commands=[{id:"new",title:"/new",description:"Start a new session"},{id:"history",title:"/history",description:"Open recent Seer sessions"}];if(hasCodeChanges)commands.push({id:"create-pr",title:"/create-pr",description:"Create or update PRs for accepted changes"});if(capabilities.employee&&capabilities.codeMode)commands.push({id:"code-mode-off",title:"/code-mode-off",description:"Disable Code Mode tools"},{id:"code-mode-on",title:"/code-mode-on",description:"Use Code Mode alongside standard tools"},{id:"code-mode-only",title:"/code-mode-only",description:"Use only Code Mode tools"});if(capabilities.employee&&capabilities.bashMode)commands.push({id:"bash-mode-off",title:"/bash-mode-off",description:"Disable bash tools"},{id:"bash-mode-on",title:"/bash-mode-on",description:"Enable bash tools"});if(capabilities.thinking)commands.push({id:"thinking-off",title:"/thinking-off",description:"Hide Seer's reasoning"},{id:"thinking-on",title:"/thinking-on",description:"Show Seer's reasoning"});if(capabilities.employee&&hasRun)commands.push({id:"conversations",title:"/conversations",description:"Open the Sentry AI conversations view"});return commands}function codeModeLabel(mode){if(mode==="only")return"Code Mode only";if(mode==="on")return"Code Mode + standard";return"standard tools"}function getBlockStatus(block){if(block.loading)return"loading";if(!block.message.tool_calls?.length)return"content";let links=(block.tool_links??[]).filter((link)=>link!=null);if(links.some((link)=>link.params?.pending_approval||link.params?.pending_question))return"pending";if(links.length===0)return"success";let failures=links.filter((link)=>link.params?.is_error===!0).length;if(failures===0)return"success";if(failures===links.length)return"failure";return"mixed"}function parseArgs(tool){if(!tool.args)return{};try{let parsed=JSON.parse(tool.args);return parsed&&typeof parsed==="object"?parsed:{}}catch{return{}}}function str3(args,key){let value=args[key];return typeof value==="string"&&value!==""?value:void 0}function shortId(value){return value?value.slice(0,8):""}function repoName(args){let repo=str3(args,"repo_name")??str3(args,"repo");if(!repo)return"the codebase";let slash=repo.lastIndexOf("/");return slash===-1?repo:repo.slice(slash+1)}function describeTool(tool,loading){let args=parseArgs(tool),[now,done]=phrasesFor(tool.function,args);return loading?`${now}\u2026`:done}function phrasesFor(fn,args){switch(fn){case"telemetry_index_list_nodes":{let keyword=str3(args,"keyword")??"your services";return[`Scanning for ${keyword}`,`Scanned for ${keyword}`]}case"telemetry_index_dependencies":{let title=str3(args,"title")??"your services";return[`Tracing the flow of ${title}`,`Traced the flow of ${title}`]}case"google_search":{let question=str3(args,"question")??str3(args,"query")??"";return[`Googling '${question}'`,`Googled '${question}'`]}case"telemetry_live_search":{let question=str3(args,"question")??"",dataset=str3(args,"dataset"),noun=dataset==="issues"?"issues":dataset==="errors"?"errors":dataset==="logs"?"logs":dataset==="metrics"?"metrics":"spans";return[`Searching ${noun}: '${question}'`,`Searched ${noun}: '${question}'`]}case"get_trace_waterfall":{let spanId=str3(args,"span_id");if(spanId)return[`Digging into span ${shortId(spanId)}`,`Dug into span ${shortId(spanId)}`];let traceId=shortId(str3(args,"trace_id"));return[`Viewing waterfall for trace ${traceId}`,`Viewed waterfall for trace ${traceId}`]}case"get_issue_details":{let issue=str3(args,"issue_id")??str3(args,"short_id")??"";return[`Inspecting issue ${issue}`,`Inspected issue ${issue}`]}case"get_event_details":{let event=shortId(str3(args,"event_id"));return[`Analyzing event ${event}`,`Analyzed event ${event}`]}case"code_search":{let repo=repoName(args),mode=str3(args,"mode");if(mode==="read_file"){let path=str3(args,"path")??"a file";return[`Reading ${path} from ${repo}`,`Read ${path} from ${repo}`]}if(mode==="find_files"){let pattern=str3(args,"pattern")??"";return[`Finding files matching '${pattern}' in ${repo}`,`Found files matching '${pattern}' in ${repo}`]}if(mode==="search_content"){let pattern=str3(args,"pattern")??"";return[`Searching for '${pattern}' in ${repo}`,`Searched for '${pattern}' in ${repo}`]}return[`Searching code in ${repo}`,`Searched code in ${repo}`]}case"git_search":{let repo=repoName(args),sha=str3(args,"sha")??str3(args,"commit_sha");if(sha)return[`Digging up commit ${shortId(sha)} from ${repo}`,`Dug up commit ${shortId(sha)} from ${repo}`];let path=str3(args,"file_path")??"";return[`Excavating commits affecting '${path}' in ${repo}`,`Excavated commits affecting '${path}' in ${repo}`]}case"get_replay_details":{let replay=shortId(str3(args,"replay_id"));return[`Watching replay ${replay}`,`Watched replay ${replay}`]}case"get_profile_flamegraph":{let profile=shortId(str3(args,"profile_id"));return[`Sampling profile ${profile}`,`Sampled profile ${profile}`]}case"code_file_edit":{let path=str3(args,"path")??"a file",repo=repoName(args);return[`Editing ${path} in ${repo}`,`Edited ${path} in ${repo}`]}case"code_file_write":{let path=str3(args,"path")??"a file",repo=repoName(args);return[`Writing ${path} in ${repo}`,`Wrote ${path} in ${repo}`]}case"search_sentry_docs":{let question=str3(args,"question")??"";return[`Scouring Sentry docs: '${question}'`,`Scoured Sentry docs: '${question}'`]}case"todo_write":return["Updating todos","Updated todos"];case"ask_user_question":return["Asking a question","Asked a question"];default:{if(fn.startsWith("artifact_write_")){let artifact=fn.replace("artifact_write_","").replace(/_/g," ");return[`Submitting ${artifact} artifact`,`Submitted ${artifact} artifact`]}return[`Using ${fn} tool`,`Used ${fn} tool`]}}}function describeToolCalls(block){return(block.message.tool_calls??[]).map((tool)=>describeTool(tool,Boolean(block.loading)))}function getCallRecordStatus(record2,settled){if(record2.error||record2.status!==void 0&&record2.status>=400)return"failure";if(record2.status!==void 0)return"success";return settled?"success":"loading"}function describeCallRecord(record2){let title=record2.title?.trim();if(title)return title;if(record2.kind!=="lib"||!record2.name)return null;let subject=record2.name.replace(/^sentry_/,"").replace(/_/g," ");return subject?subject[0].toUpperCase()+subject.slice(1):null}function describeCallRecordDetail(record2){if(record2.kind!=="api"||!record2.method)return[];let path=record2.resolved_path??record2.path;if(!path)return[];let lines=[`${record2.method} ${path}`];if(record2.body)lines.push(record2.body,...record2.body_truncated?["\u2026"]:[]);return lines}function visibleCallRecords(records){let hasChildren=new Set(records.flatMap((record2)=>record2.parent===null||record2.parent===void 0?[]:[record2.parent])),preferLib=new Set(["get_span_details"]),hideChildrenOf=new Set(records.filter((record2)=>record2.kind==="lib"&&Boolean(record2.name&&preferLib.has(record2.name))&&hasChildren.has(record2.id)).map((record2)=>record2.id));return records.filter((record2)=>{if(record2.parent!==null&&record2.parent!==void 0&&hideChildrenOf.has(record2.parent))return!1;if(record2.kind!=="lib"||!hasChildren.has(record2.id))return!0;return Boolean(record2.name&&preferLib.has(record2.name))})}function latestSeerTodos(blocks){let latest=null;for(let block of blocks){if(block.todos?.length)latest={blockId:block.id,todos:block.todos};for(let result of block.tool_results??[]){let todos=result?.structuredContent?.todos;if(todos?.length)latest={blockId:block.id,todos}}}return latest}function summarizeSeerCodeChanges(blocks,repoPRStates){let patches=new Map,latestCommit=new Map;for(let block of blocks){let changedRepos=new Set;for(let patch of block.merged_file_patches??[])patches.set(`${patch.repo_name}:${patch.patch.path}`,patch),changedRepos.add(patch.repo_name);for(let repoName2 of changedRepos)latestCommit.set(repoName2,block.pr_commit_shas?.[repoName2])}let byRepo=new Map;for(let patch of patches.values()){let current=byRepo.get(patch.repo_name)??{added:0,files:[],prNumber:null,prUrl:null,removed:0,repoName:patch.repo_name,status:"needs_push"};current.added+=patch.patch.added,current.removed+=patch.patch.removed,current.files.push({added:patch.patch.added,path:patch.patch.path,removed:patch.patch.removed}),byRepo.set(patch.repo_name,current)}for(let change of byRepo.values()){let state=repoPRStates[change.repoName];if(change.prNumber=state?.pr_number??null,change.prUrl=state?.pr_url??null,state?.pr_creation_status==="creating")change.status="creating";else if(state?.pr_creation_status==="error")change.status="error";else if(!state?.pr_number||!state.pr_url)change.status="needs_push";else if(state.commit_sha&&latestCommit.get(change.repoName)!==state.commit_sha)change.status="needs_push";else change.status="pushed"}return[...byRepo.values()]}import{createContext as createContext2,useCallback as useCallback4,useEffect as useEffect7,useMemo as useMemo5,useReducer,useRef as useRef3,useState as useState6}from"h:0__";var SEER_POLL_INTERVAL_MS=500,SEER_ERROR_POLL_INTERVAL_MS=2500;function pickRunId(response){return response.sentry_run_id??response.run_id}var basePath=(org)=>`/organizations/${org}/seer/explorer-chat/`,runPath=(org,runId2)=>`${basePath(org)}${encodeURIComponent(String(runId2))}/`;async function sendSeerMessage(client2,{org,query,insertIndex,runId:runId2,pageName,sentAt,codeMode,bashMode,signal}){let page=await client2.request(runId2==null?basePath(org):runPath(org,runId2),{method:"POST",body:{query,insert_index:insertIndex,page_name:pageName,sent_at:sentAt,override_code_mode_enable:codeMode,override_bash_mode_enabled:bashMode},signal});return pickRunId(page.data)}async function listSeerRuns(client2,{org,signal,limit=20}){return(await client2.request(`/organizations/${org}/seer/runs/`,{query:{per_page:limit,query:"is:mine type:explorer"},signal})).data}async function getSeerSession(client2,{org,runId:runId2,signal}){return(await client2.request(runPath(org,runId2),{signal})).data?.session??null}async function interruptSeerRun(client2,{org,runId:runId2,signal}){await client2.request(`/organizations/${org}/seer/explorer-update/${encodeURIComponent(String(runId2))}/`,{method:"POST",body:{payload:{type:"interrupt"}},signal})}async function respondToSeerInput(client2,{org,runId:runId2,inputId,responseData,signal}){await client2.request(`/organizations/${org}/seer/explorer-update/${encodeURIComponent(String(runId2))}/`,{method:"POST",body:{payload:{type:"user_input_response",input_id:inputId,response_data:responseData}},signal})}async function createSeerPR(client2,{org,runId:runId2,repoName:repoName2,signal}){await client2.request(`/organizations/${org}/seer/explorer-update/${encodeURIComponent(String(runId2))}/`,{method:"POST",body:{payload:{type:"create_pr",repo_name:repoName2}},signal})}async function approveSeerWrite(client2,{org,sessionId,scopes,signal}){return(await client2.request(`/organizations/${org}/agent/approve/`,{method:"POST",body:{sessionId,scopes},signal})).data.scopes}function isSessionSettled(session){if(!session)return!1;if(session.status==="processing")return!1;return!session.blocks.some((block)=>block.loading)}function parseTimestamp(value){let hasZone=/(?:Z|[+-]\d{2}:?\d{2})$/.test(value);return Date.parse(hasZone?value:`${value}Z`)}function isSessionStale(session,now){if(!session)return!1;let updatedAt=parseTimestamp(session.updated_at);if(Number.isNaN(updatedAt))return!1;return now-updatedAt>=120000}import{reportError as reportError2}from"h:7___________________________________";function toAsyncError(error){if(error instanceof ApiError)return{message:error.message,retryable:error.retryable,retryAfterSeconds:error.retryAfterSeconds};if(!isAbort(error))reportError2(error,{source:"api.response.unreadable"});return{message:error instanceof Error?error.message:String(error),retryable:!0}}function isAbort(error){if(!(error instanceof Error))return!1;return error.name==="AbortError"||error.name==="TimeoutError"}var idle=()=>({state:"idle"});function startLoading(current,now){return{state:"loading",since:now,previous:valueOf(current)}}function resolved(value,now){return{state:"ready",value,fetchedAt:now}}function rejected(current,error){return{state:"error",error,previous:valueOf(current)}}function valueOf(status){if(!status)return;switch(status.state){case"ready":return status.value;case"loading":case"error":return status.previous;case"idle":return}}function mapAsyncStatus(status,map){switch(status.state){case"idle":return status;case"loading":return status.previous===void 0?{state:"loading",since:status.since}:{state:"loading",since:status.since,previous:map(status.previous)};case"ready":return{state:"ready",value:map(status.value),fetchedAt:status.fetchedAt};case"error":return status.previous===void 0?{state:"error",error:status.error}:{state:"error",error:status.error,previous:map(status.previous)}}}function isLoading(status){return status?.state==="loading"}function isInitialLoad(status){return status?.state==="loading"&&status.previous===void 0}function errorOf(status){return status?.state==="error"?status.error:void 0}function loadingSince(status){return status?.state==="loading"?status.since:void 0}function initialSeerConversationState(runId2=null){return{session:idle(),runId:runId2,optimistic:null,timedOut:!1,interrupting:!1,pollToken:0}}function resumeSession(session,now){let current=valueOf(session);return current?resolved({...current,status:"processing",updated_at:new Date(now).toISOString()},now):session}function seerConversationReducer(state,action){switch(action.type){case"orgChanged":case"reset":return initialSeerConversationState();case"sendStarted":return{...state,session:startLoading(state.session,action.now),optimistic:action.optimistic,timedOut:!1,interrupting:!1};case"sendSucceeded":return{...state,runId:action.runId,pollToken:state.pollToken+1};case"sendFailed":return{...state,session:rejected(state.session,action.error),optimistic:null};case"pollProgressed":return{...state,session:resolved(action.session,action.now)};case"pollSettled":return{...state,session:resolved(action.session,action.now),optimistic:null,interrupting:!1};case"pollStale":return{...state,session:resolved(action.session,action.now),optimistic:null,timedOut:!0};case"pollFailed":return{...state,session:rejected(state.session,action.error),optimistic:null};case"interruptStarted":return{...state,interrupting:!0};case"interruptFailed":return{...state,interrupting:!1};case"respondStarted":return{...state,session:resumeSession(state.session,action.now),timedOut:!1,interrupting:!1};case"respondSucceeded":return{...state,pollToken:state.pollToken+1};case"respondFailed":case"approveWriteFailed":return{...state,session:rejected(state.session,action.error)};case"createPRStarted":return{...state,session:resumeSession(state.session,action.now)};case"createPRSucceeded":return{...state,pollToken:state.pollToken+1};case"createPRFailed":return{...state,session:rejected(state.session,action.error)};case"switchRun":if(action.runId===state.runId)return state;return{...initialSeerConversationState(),runId:action.runId,pollToken:state.pollToken+1}}}var MAX_ERROR_POLLS=Math.ceil(60000/SEER_ERROR_POLL_INTERVAL_MS);function toAsyncError2(error){if(error instanceof ApiError)return{message:error.message,retryable:error.retryable,retryAfterSeconds:error.retryAfterSeconds};return{message:error instanceof Error?error.message:String(error),retryable:!0}}function hasFeature(features,name){return features?.includes(name)===!0}function useSeerChat(client2,org,options={}){let[conversation,dispatch]=useReducer(seerConversationReducer,options.initialRunId??null,initialSeerConversationState),[runs,setRuns]=useState6(idle),conversationRef=useRef3(conversation);conversationRef.current=conversation;let runsRef=useRef3(runs);runsRef.current=runs;let turnCount=useRef3(0),previousOrg=useRef3(org);useEffect7(()=>{if(previousOrg.current===org)return;previousOrg.current=org,dispatch({type:"orgChanged"}),setRuns(idle)},[org]);let capabilities=useMemo5(()=>({available:options.features===void 0||hasFeature(options.features,"seer-explorer"),bashMode:hasFeature(options.features,"seer-explorer-allow-bash-mode"),codeMode:hasFeature(options.features,"seer-explorer-code-mode-tools"),embeds:hasFeature(options.features,"seer-explorer-embeds"),employee:options.isEmployee===!0,infraTelemetry:hasFeature(options.features,"seer-infra-telemetry"),streaming:hasFeature(options.features,"seer-explorer-stream"),thinking:hasFeature(options.features,"seer-explorer-thinking-blocks")}),[options.features,options.isEmployee]),codeMode=options.codeMode??"only",bashMode=options.bashMode??!1,showThinking=capabilities.thinking&&(options.showThinking??!1);useEffect7(()=>{if(!client2||!org||conversation.runId==null)return;let runId2=conversation.runId,controller=new AbortController,cancelled=!1,timer,errorPolls=0,tick=async()=>{try{let next=await getSeerSession(client2,{org,runId:runId2,signal:controller.signal});if(cancelled)return;if(errorPolls=0,next){let now=Date.now();if(isSessionSettled(next)){dispatch({type:"pollSettled",session:next,now});return}if(isSessionStale(next,now)){dispatch({type:"pollStale",session:next,now});return}dispatch({type:"pollProgressed",session:next,now})}timer=setTimeout(()=>void tick(),SEER_POLL_INTERVAL_MS)}catch(error){if(cancelled||controller.signal.aborted)return;if(errorPolls+=1,errorPolls>MAX_ERROR_POLLS){dispatch({type:"pollFailed",error:toAsyncError2(error)});return}timer=setTimeout(()=>void tick(),SEER_ERROR_POLL_INTERVAL_MS)}};return tick(),()=>{cancelled=!0,controller.abort(),clearTimeout(timer)}},[client2,org,conversation.runId,conversation.pollToken]);let send=useCallback4((query)=>{let trimmed=query.trim();if(!client2||!org||trimmed===""||!capabilities.available)return;let base=valueOf(conversationRef.current.session)?.blocks??[],turn=turnCount.current++,now=new Date().toISOString(),placeholder=SEER_THINKING_PLACEHOLDERS[turn%SEER_THINKING_PLACEHOLDERS.length]??"Thinking\u2026",optimistic=[...base,{id:`optimistic-user-${turn}`,message:{role:"user",content:trimmed},timestamp:now},{id:`optimistic-assistant-${turn}`,message:{role:"assistant",content:placeholder},timestamp:now,loading:!0}];dispatch({type:"sendStarted",optimistic,now:Date.now()});let currentRun=conversationRef.current.runId,sent=new Date;sendSeerMessage(client2,{org,query:trimmed,runId:currentRun,insertIndex:base.length,pageName:options.pageName,sentAt:[sent.toString(),sent.toISOString()],codeMode:capabilities.codeMode?codeMode:void 0,bashMode:capabilities.employee&&capabilities.bashMode?bashMode:void 0}).then((id)=>{dispatch({type:"sendSucceeded",runId:id})}).catch((error)=>{dispatch({type:"sendFailed",error:toAsyncError2(error)})})},[client2,org,capabilities.available,capabilities.codeMode,capabilities.employee,capabilities.bashMode,options.pageName,codeMode,bashMode]),interrupt=useCallback4(()=>{let currentRun=conversationRef.current.runId;if(!client2||!org||currentRun==null)return;dispatch({type:"interruptStarted"}),interruptSeerRun(client2,{org,runId:currentRun}).catch(()=>{dispatch({type:"interruptFailed"})})},[client2,org]),respond=useCallback4((inputId,responseData)=>{let currentRun=conversationRef.current.runId;if(!client2||!org||currentRun==null)return;dispatch({type:"respondStarted",now:Date.now()}),respondToSeerInput(client2,{org,runId:currentRun,inputId,responseData}).then(()=>dispatch({type:"respondSucceeded"})).catch((error)=>{dispatch({type:"respondFailed",error:toAsyncError2(error)})})},[client2,org]),approveWrite=useCallback4((inputId,sessionId,scopes)=>{if(!client2||!org||scopes.length===0)return;approveSeerWrite(client2,{org,sessionId,scopes}).then((granted)=>{let approved=scopes.every((scope)=>granted.includes(scope));respond(inputId,{decision:approved?"approve":"reject",...approved?{}:{reason:"insufficient_scope"}})}).catch((error)=>{dispatch({type:"approveWriteFailed",error:toAsyncError2(error)})})},[client2,org,respond]),createPR=useCallback4((repoName2)=>{let currentRun=conversationRef.current.runId;if(!client2||!org||currentRun==null||!repoName2)return;dispatch({type:"createPRStarted",now:Date.now()}),createSeerPR(client2,{org,runId:currentRun,repoName:repoName2}).then(()=>dispatch({type:"createPRSucceeded"})).catch((error)=>{dispatch({type:"createPRFailed",error:toAsyncError2(error)})})},[client2,org]),switchRun=useCallback4((nextRunId)=>{dispatch({type:"switchRun",runId:nextRunId})},[]),loadRuns=useCallback4(()=>{if(!client2||!org||!capabilities.available)return;let controller=new AbortController;setRuns(startLoading(runsRef.current,Date.now())),listSeerRuns(client2,{org,signal:controller.signal}).then((next)=>setRuns(resolved(next,Date.now()))).catch((error)=>{if(!controller.signal.aborted)setRuns(rejected(runsRef.current,toAsyncError2(error)))})},[client2,org,capabilities.available]),reset=useCallback4(()=>{dispatch({type:"reset"})},[]),serverBlocks=valueOf(conversation.session)?.blocks??[],blocks=useMemo5(()=>{if(!conversation.optimistic)return serverBlocks;return serverBlocks.length>=conversation.optimistic.length?serverBlocks:conversation.optimistic},[serverBlocks,conversation.optimistic]),status=valueOf(conversation.session)?.status,thinking=!conversation.timedOut&&(conversation.optimistic!==null||status==="processing"||blocks.some((block)=>block.loading)),ownerId=valueOf(conversation.session)?.owner_user_id,readOnly=ownerId!==null&&ownerId!==void 0&&String(ownerId)!==options.userId,repoPRStates=valueOf(conversation.session)?.repo_pr_states??{},codeChanges=useMemo5(()=>summarizeSeerCodeChanges(blocks,repoPRStates),[blocks,repoPRStates]),setCodeMode=useCallback4((mode)=>options.onCodeModeChange?.(mode),[options.onCodeModeChange]),setBashMode=useCallback4((enabled)=>options.onBashModeChange?.(enabled),[options.onBashModeChange]),setShowThinking=useCallback4((enabled)=>options.onShowThinkingChange?.(enabled),[options.onShowThinkingChange]);return{blocks,thinking,timedOut:conversation.timedOut,interrupting:conversation.interrupting,error:errorOf(conversation.session),started:conversation.runId!==null||blocks.length>0,runId:conversation.runId,readOnly,pendingInput:valueOf(conversation.session)?.pending_user_input??null,repoPRStates,codeChanges,capabilities,codeMode,bashMode,showThinking,runs,send,interrupt,reset,switchRun,loadRuns,respond,approveWrite,createPR,setCodeMode,setBashMode,setShowThinking}}var SeerChatContext=createContext2(null);import{useCallback as useCallback12,useMemo as useMemo7,useRef as useRef10}from"h:0__";import{RenderableEvents}from"h:3__________";var BLOCKS=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],HORIZONTAL_BLOCKS=["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u2588"];function sparkline(series,width,{floor=!1}={}){if(width<=0)return"";if(!series||series.length===0)return"\u254C".repeat(width);let counts=series.map(([,count])=>count),buckets=downsample(counts,width),max=Math.max(...buckets),empty=floor?BLOCKS[0]:" ";if(max===0)return BLOCKS[0].repeat(buckets.length).padStart(width);return buckets.map((value)=>{if(value===0)return empty;let scaled=Math.ceil(value/max*BLOCKS.length)-1;return BLOCKS[Math.max(0,Math.min(BLOCKS.length-1,scaled))]}).join("").padStart(width)}function sparklineBlock(series,width,rows,{floor=!1}={}){if(rows<=0)return[];if(width<=0)return Array.from({length:rows},()=>"");if(!series||series.length===0)return Array.from({length:rows},()=>"\u254C".repeat(width));let buckets=downsample(series.map(([,count])=>count),width),max=Math.max(...buckets),pad=" ".repeat(Math.max(0,width-buckets.length));return Array.from({length:rows},(_,row)=>{let isBottom=row===rows-1,below=rows-1-row,blank=isBottom&&(floor||max===0)?BLOCKS[0]:" ",glyphs=buckets.map((value)=>{let filled=max===0?0:value/max*rows,fill=Math.min(1,filled-below);if(fill<=0)return blank;let level=Math.ceil(fill*BLOCKS.length)-1;return BLOCKS[Math.max(0,Math.min(BLOCKS.length-1,level))]}).join("");return pad+glyphs})}function proportionalBar(fraction,width){if(width<=0)return"";let clamped=Number.isFinite(fraction)?Math.max(0,Math.min(1,fraction)):0,eighths=Math.round(clamped*width*8);if(eighths===0)return(clamped>0?HORIZONTAL_BLOCKS[0]:" ").padEnd(width);let full=Math.min(width,Math.floor(eighths/8)),rest=eighths%8,partial=rest>0&&full<width?HORIZONTAL_BLOCKS[rest-1]:"";return("\u2588".repeat(full)+partial).padEnd(width)}function stretch(points,width){if(points.length===0||points.length>=width)return[...points];return Array.from({length:width},(_,cell)=>points[Math.min(points.length-1,Math.floor(cell*points.length/width))])}function downsample(values,width){if(values.length<=width)return values;let bucketSize=values.length/width,out=[];for(let i=0;i<width;i++){let start=Math.floor(i*bucketSize),end=Math.min(values.length,Math.floor((i+1)*bucketSize)),sum=0;for(let j=start;j<end;j++)sum+=values[j];out.push(end>start?sum/(end-start):0)}return out}function formatCount(value){if(value===void 0)return"\xB7\xB7";let n=typeof value==="string"?Number(value):value;if(!Number.isFinite(n))return"0";let sign=n<0?"-":"",magnitude=Math.abs(n),units=[{divisor:1,suffix:""},{divisor:1000,suffix:"k"},{divisor:1e6,suffix:"m"},{divisor:1e9,suffix:"b"},{divisor:1000000000000,suffix:"t"}],unitIndex=0;while(unitIndex+1<units.length&&magnitude>=units[unitIndex+1].divisor)unitIndex++;while(unitIndex+1<units.length){let scaled2=magnitude/units[unitIndex].divisor,decimals2=unitIndex===0?2:scaled2<10?1:0;if(Number(scaled2.toFixed(decimals2))<1000)break;unitIndex++}let unit=units[unitIndex],scaled=magnitude/unit.divisor,decimals=unitIndex===0?2:scaled<10?1:0;return`${sign}${Number(scaled.toFixed(decimals))}${unit.suffix}`}function countLabel(value,noun){let n=typeof value==="string"?Number(value):value;return`${formatCount(value)} ${n===1?noun:`${noun}s`}`}function timeAgo(iso,now=Date.now()){if(!iso)return"";let then=Date.parse(iso);if(Number.isNaN(then))return"";let seconds=Math.max(0,Math.floor((now-then)/1000));if(seconds<60)return`${seconds}s`;let minutes=Math.floor(seconds/60);if(minutes<60)return`${minutes}m`;let hours=Math.floor(minutes/60);if(hours<24)return`${hours}h`;let days=Math.floor(hours/24);if(days<7)return`${days}d`;let weeks=Math.floor(days/7);if(weeks<52)return`${weeks}w`;return`${Math.floor(days/365)}y`}import{useEffect as useEffect8,useState as useState7}from"h:0__";import{jsxDEV as jsxDEV15}from"h:6___________________________";var FRAMES=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],FRAME_MS=80;function useSpinnerFrame(active=!0){let[index,setIndex]=useState7(0);return useEffect8(()=>{if(!active)return;let timer=setInterval(()=>setIndex((i)=>(i+1)%FRAMES.length),FRAME_MS);return()=>clearInterval(timer)},[active]),FRAMES[index]}function SpinnerGlyph(){let frame=useSpinnerFrame();return jsxDEV15("span",{children:frame},void 0,!1,void 0,this)}import{Fragment as Fragment9}from"h:0__";import{countMetric as countMetric3}from"h:7___________________________________";var SEER_EMBED_LEVELS={agentWriteApproval:["block"],alert:["inline","block"],autofix:["block"],autofixRef:["block"],chart:["block"],dashboard:["inline","block"],docs:["inline"],dsn:["block"],errorsQuery:["inline","block"],issue:["inline","block"],issues:["block"],issuesQuery:["inline","block"],logsQuery:["inline","block"],metricsQuery:["inline","block"],monitor:["inline","block"],profile:["inline","block"],release:["inline","block"],replay:["inline","block"],replaysQuery:["inline","block"],savedIssueView:["inline","block"],savedQuery:["inline","block"],spansQuery:["inline","block"],timestamp:["inline"],trace:["inline","block"],user:["inline"]},STRUCTURED_SEER_EMBEDS=new Set(["agentWriteApproval"]);function seerEmbedLevel(name,aloneInBlock){let levels=SEER_EMBED_LEVELS[name];if(!levels)return null;if(!levels.includes("block"))return"inline";if(!levels.includes("inline"))return"block";return aloneInBlock?"block":"inline"}var reportedUnknownEmbeds=new Set;function reportUnknownSeerEmbed(name,level){if(reportedUnknownEmbeds.has(name))return;reportedUnknownEmbeds.add(name),countMetric3("ui.seer_embed.unknown",{level})}function embedText(value){if(typeof value==="string")return value===""?void 0:value;if(typeof value==="number"&&Number.isFinite(value))return String(value);return}function embedTexts(value){if(!Array.isArray(value))return[];return value.flatMap((entry)=>{let text=embedText(entry);return text?[text]:[]})}var STATS_PERIOD=/^\d+[smhdw]$/;function readEmbedFilters(data){let statsPeriod=embedText(data.statsPeriod);return{projects:embedTexts(data.projects),environments:embedTexts(data.environments),statsPeriod:statsPeriod&&STATS_PERIOD.test(statsPeriod)?statsPeriod:void 0,start:embedText(data.start),end:embedText(data.end)}}function describeEmbedPeriod(filters){if(filters.start&&filters.end)return`${filters.start} \u2192 ${filters.end}`;return filters.statsPeriod}function readQueryEmbed(data){let mode=embedText(data.mode);return{query:embedText(data.query)??"",mode:mode==="aggregate"?"aggregate":"samples",groupBy:embedTexts(data.groupBy),yAxes:embedTexts(data.yAxes),fields:embedTexts(data.fields),sort:embedText(data.sort),title:embedText(data.title),filters:readEmbedFilters(data)}}var DEFAULT_METRIC_AGGREGATE={counter:"sum",distribution:"sum",gauge:"avg"},NONE_UNIT="none";function searchValue(value){return/^[\w.@:/-]+$/.test(value)?value:JSON.stringify(value)}function resolveMetricsEmbed(data,embed){let name=embedText(data.name),type=embedText(data.type);if(!name||!type)return{query:embed.query,yAxes:embed.yAxes};let unit=embedText(data.unit),resolvedUnit=unit&&unit!=="-"?unit:NONE_UNIT,qualify=(aggregate)=>`${aggregate}(value,${name},${type},${resolvedUnit})`,yAxes=embed.yAxes.length>0?embed.yAxes.map((yAxis)=>{let parsed=/^([A-Za-z_][\w]*)\s*\(/.exec(yAxis);return parsed?.[1]?qualify(parsed[1]):yAxis}):[qualify(DEFAULT_METRIC_AGGREGATE[type]??"sum")];if(embed.mode==="aggregate")return{query:embed.query,yAxes};let unitFilter=resolvedUnit===NONE_UNIT?`(!has:metric.unit OR metric.unit:${NONE_UNIT})`:`metric.unit:${searchValue(resolvedUnit)}`,identity=`(metric.name:${searchValue(name)} metric.type:${searchValue(type)} ${unitFilter})`;return{query:embed.query?`${embed.query} ${identity}`:identity,yAxes}}function humanize(value){return value.replace(/_/g," ")}function shortId2(value,length=8){return value.length>length?value.slice(0,length):value}function reference(noun,id){return id?`**${noun} ${id}**`:`**${noun}**`}function relativeTime(value,now=Date.now()){let parsed=Date.parse(value);if(Number.isNaN(parsed))return value;let seconds=Math.round((parsed-now)/1000),absolute=Math.abs(seconds),[amount,unit]=absolute<60?[absolute,"second"]:absolute<3600?[Math.round(absolute/60),"minute"]:absolute<86400?[Math.round(absolute/3600),"hour"]:[Math.round(absolute/86400),"day"];return`${amount} ${unit}${amount===1?"":"s"} ${seconds<0?"ago":"from now"}`}function embedTimestamp(data){let value=embedText(data.value);if(!value)return"";if(data.format==="relative")return relativeTime(value);let parsed=Date.parse(value);return Number.isNaN(parsed)?value:new Date(parsed).toLocaleString()}function queryEmbedTitle(embed,noun){return embed.title??(embed.query||`All ${noun}`)}function inlineSeerEmbed(name,data){let id=embedText(data.id),title=embedText(data.title),label=embedText(data.name);switch(name){case"timestamp":return embedTimestamp(data);case"docs":{let href=embedText(data.href);return title&&href?`[${title}](${href})`:title??href??""}case"user":return`@${label??"user"}`;case"dsn":return`\`${embedText(data.value)??"DSN"}\``;case"issue":return`**${id??"issue"}**`;case"issues":{let ids=embedTexts(data.ids);return ids.length>0?ids.map((entry)=>`**${entry}**`).join(", "):"Issues"}case"dashboard":return title?`**${title}**`:reference("Dashboard",id);case"replay":{let replayId=embedText(data.id);return reference("Replay",replayId?shortReplayId(replayId):void 0)}case"release":return reference("Release",embedText(data.version));case"alert":{let kind=embedText(data.kind);if(label)return`**${label}**`;return reference(kind?`${kind} alert`:"Alert",id)}case"monitor":return label?`**${label}**`:reference("Monitor",id);case"savedIssueView":return label?`**${label}**`:reference("Issue view",id);case"savedQuery":{let dataset=embedText(data.dataset),base=label?`**${label}**`:reference("Saved query",id);return dataset?`${base} (${dataset})`:base}case"trace":{let traceId=embedText(data.traceId);return reference("Trace",traceId?shortId2(traceId):void 0)}case"profile":{let profileId=embedText(data.profileId);return reference("Profile",profileId?shortId2(profileId):void 0)}case"chart":return title??"Chart";case"autofix":return embedText(data.result)??"Autofix result";case"autofixRef":return`**Autofix \xB7 ${humanize(embedText(data.step)??"run")}**`;case"agentWriteApproval":return"Seer requested permission to make changes.";case"issuesQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"issues")}**`;case"errorsQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"errors")}**`;case"spansQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"spans")}**`;case"logsQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"logs")}**`;case"replaysQuery":return`**${queryEmbedTitle(readQueryEmbed(data),"replays")}**`;case"metricsQuery":{let metric=embedText(data.name);return`**${embedText(data.title)??metric??"Metric"}**`}default:return""}}var DASHBOARD_SORT_OPTIONS=[{value:"mydashboards",label:"My Dashboards"},{value:"title",label:"Name (A-Z)"},{value:"-title",label:"Name (Z-A)"},{value:"-dateCreated",label:"Newest Created"},{value:"dateCreated",label:"Oldest Created"},{value:"mostPopular",label:"Most Popular"},{value:"recentlyViewed",label:"Recently Viewed"}];function dashboardSortOptions(prebuilt){return prebuilt?DASHBOARD_SORT_OPTIONS.filter((option)=>option.value!=="mydashboards"):DASHBOARD_SORT_OPTIONS}function dashboardSort(value,fallback,prebuilt){return dashboardSortOptions(prebuilt).some((option)=>option.value===value)?value:fallback}var DASHBOARDS_PAGE_SIZE=50,STARRED_DASHBOARDS_IN_NAV=20;async function listDashboards(client2,{org,filter,query,sort,limit=DASHBOARDS_PAGE_SIZE,cursor,signal}){let page=await fetchPage_listOrganizationDashboards({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{filter:filter?[filter]:void 0,query:query||void 0,sort,pin:"favorites",per_page:limit}},cursor);return client2.generatedPage(page)}async function listStarredDashboards(client2,{org,limit=STARRED_DASHBOARDS_IN_NAV,signal}){let page=await client2.request(`/organizations/${org}/dashboards/starred/`,{query:{per_page:limit},signal});return Array.isArray(page.data)?page.data:[]}async function getDashboard(client2,{org,id,signal}){let dashboard=(await client2.request(`/organizations/${org}/dashboards/${id}/`,{signal})).data;return{...dashboard,widgets:Array.isArray(dashboard?.widgets)?dashboard.widgets:[]}}var DETECTOR_TYPE={error:"error",metric:"metric_issue",cron:"monitor_check_in_failure",uptime:"uptime_domain_failure",issueStream:"issue_stream",mobileBuild:"preprod_size_analysis"},DETECTORS_PAGE_SIZE=50,DETECTOR_SORT_OPTIONS=[{value:"-latestGroup",label:"Latest Issue (newest)"},{value:"latestGroup",label:"Latest Issue (oldest)"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"type",label:"Type (A-Z)"},{value:"-type",label:"Type (Z-A)"},{value:"-connectedWorkflows",label:"Most Alerts"},{value:"connectedWorkflows",label:"Fewest Alerts"}],DEFAULT_DETECTOR_SORT="-latestGroup";function detectorSort(value){return DETECTOR_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_DETECTOR_SORT}var MAX_DETECTORS_PER_REQUEST=100;async function listDetectors(client2,{org,query,sortBy=DEFAULT_DETECTOR_SORT,project,limit=DETECTORS_PAGE_SIZE,cursor,signal}){let page=await fetchPage_listOrganizationDetectors({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{query:query||void 0,sortBy,project:projectParams(project),per_page:limit}},cursor);return client2.generatedPage({...page,data:detectorsFromResponse(page.data)})}async function fetchDetector(client2,{org,detectorId,signal}){return(await client2.request(`/organizations/${org}/detectors/${detectorId}/`,{signal})).data}var OPEN_PERIODS_LIMIT=20;async function listDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,limit=OPEN_PERIODS_LIMIT,cursor,signal}){return client2.request(`/organizations/${org}/open-periods/`,{query:{detectorId,statsPeriod,per_page:limit,cursor},signal})}async function listDetectorsByIds(client2,{org,ids,signal}){let unique=[...new Set(ids)];if(unique.length===0)return[];let chunks=[];for(let i=0;i<unique.length;i+=MAX_DETECTORS_PER_REQUEST)chunks.push(unique.slice(i,i+MAX_DETECTORS_PER_REQUEST));return(await Promise.all(chunks.map((chunk)=>fetchPage_listOrganizationDetectors({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{id:chunk.map(Number),per_page:MAX_DETECTORS_PER_REQUEST}}).then((page)=>detectorsFromResponse(page.data)).catch(()=>[])))).flat()}function detectorsFromResponse(data){return Array.isArray(data)?data:[]}var VIEW_SORT_OPTIONS=[{value:"popularity",label:"Most Starred"},{value:"visited",label:"Recently Viewed"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-created",label:"Created (Newest)"},{value:"created",label:"Created (Oldest)"}];function viewSort(value){return VIEW_SORT_OPTIONS.some((option)=>option.value===value)?value:"popularity"}function endpointSort(sort){switch(sort){case"popularity":return["-popularity","-visited","-created"];case"visited":return["-visited","-popularity","-created"];case"name":return["name","-visited","-created"];case"-name":return["-name","-visited","-created"];case"created":return["created","-popularity","-visited"];case"-created":return["-created","-popularity","-visited"]}}var VIEWS_PAGE_SIZE=20;async function fetchGroupSearchView(client2,{org,viewId,signal}){return(await client2.request(`/organizations/${org}/group-search-views/${viewId}/`,{signal})).data}async function listGroupSearchViews(client2,{org,createdBy,sort="popularity",limit=VIEWS_PAGE_SIZE,cursor,signal}){return client2.request(`/organizations/${org}/group-search-views/`,{query:{createdBy,sort:endpointSort(sort),per_page:limit,cursor},signal})}var MAX_STARRED_SAVED_QUERIES_IN_NAV=20;var EXPLORE_SAVED_QUERY_SORT_OPTIONS=[{value:"mostStarred",label:"Most Starred"},{value:"recentlyViewed",label:"Recently Viewed"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-dateAdded",label:"Created (Newest)"},{value:"dateAdded",label:"Created (Oldest)"}],DISCOVER_SAVED_QUERY_SORT_OPTIONS=[{value:"myqueries",label:"My Queries"},{value:"-dateUpdated",label:"Recently Edited"},{value:"name",label:"Name (A-Z)"},{value:"-dateCreated",label:"Created (Newest)"},{value:"dateCreated",label:"Created (Oldest)"},{value:"dateUpdated",label:"Most Outdated"},{value:"mostPopular",label:"Most Popular"},{value:"recentlyViewed",label:"Recently Viewed"}];function savedQuerySortOptions(source){return source==="explore"?EXPLORE_SAVED_QUERY_SORT_OPTIONS:DISCOVER_SAVED_QUERY_SORT_OPTIONS}function savedQueryListSort(value,source){if(savedQuerySortOptions(source).some((option)=>option.value===value))return value;return source==="explore"?"mostStarred":"myqueries"}var EXPLORE_DATASET_LABEL={logs:"Logs",spans:"Traces",segment_spans:"Traces",metrics:"Metrics",replays:"Replays",ai_conversations:"Conversations"},EXPLORE_DATASET_TO_EVENTS={logs:"logs",spans:"spans",segment_spans:"spans",metrics:"tracemetrics",replays:"replays",ai_conversations:"spans"};async function exploreSavedQueriesPage(client2,{org,starred,search,sort="recentlyViewed",limit=50,cursor,signal}){let page=await client2.request(`/organizations/${org}/explore/saved/`,{query:{sortBy:["starred",sort],per_page:limit,starred:starred?1:void 0,query:search||void 0,cursor},signal});return{...page,data:asArray2(page.data).map(normaliseExplore).filter(isRunnable)}}function normaliseExplore(raw,index){let dataset=exploreDataset(raw.dataset),first=firstQuery(raw.query);return{id:str4(raw.id)??String(index),source:"explore",name:str4(raw.name)??"Untitled query",datasetLabel:EXPLORE_DATASET_LABEL[dataset],dataset:EXPLORE_DATASET_TO_EVENTS[dataset],query:str4(first?.query)??"",fields:strings2(first?.fields),sort:str4(first?.orderby),projects:numbers(raw.projects),environment:strings2(raw.environment),statsPeriod:str4(raw.range),lastVisited:str4(raw.lastVisited),dateUpdated:str4(raw.dateUpdated),starred:raw.starred===!0,createdBy:raw.isPrebuilt===!0?void 0:actorName(raw.createdBy),isPrebuilt:raw.isPrebuilt===!0}}function firstQuery(value){if(!Array.isArray(value))return;let first=value[0];return typeof first==="object"&&first!==null?first:void 0}function exploreDataset(value){let key=String(value??"spans");return key in EXPLORE_DATASET_LABEL?key:"spans"}var DISCOVER_DATASET_LABEL={"error-events":"Errors","transaction-like":"Transactions",discover:"Discover"},DISCOVER_DATASET_TO_EVENTS={"error-events":"errors","transaction-like":"transactions",discover:"discover"};async function discoverSavedQueriesPage(client2,{org,search,sort="myqueries",limit=50,cursor,signal}){let trimmed=search?.trim(),page=await client2.request(`/organizations/${org}/discover/saved/`,{query:{query:trimmed?`version:2 name:"${trimmed}"`:"version:2",sortBy:sort,per_page:limit,cursor},signal});return{...page,data:asArray2(page.data).map(normaliseDiscover).filter(isRunnable)}}function normaliseDiscover(raw,index){let key=str4(raw.queryDataset)??"discover";return{id:str4(raw.id)??String(index),source:"discover",name:str4(raw.name)??"Untitled query",datasetLabel:DISCOVER_DATASET_LABEL[key]??"Discover",dataset:DISCOVER_DATASET_TO_EVENTS[key]??"discover",query:str4(raw.query)??"",fields:strings2(raw.fields),sort:Array.isArray(raw.orderby)?str4(raw.orderby[0]):str4(raw.orderby),projects:numbers(raw.projects),environment:strings2(raw.environment),statsPeriod:str4(raw.range),dateUpdated:str4(raw.dateUpdated),starred:!1,createdBy:actorName(raw.createdBy),isPrebuilt:!1}}async function fetchSavedQuery(client2,{org,source,queryId,signal}){if(source==="explore"){let page2=await client2.request(`/organizations/${org}/explore/saved/${queryId}/`,{signal});return normaliseExplore(page2.data,0)}let page=await client2.request(`/organizations/${org}/discover/saved/${queryId}/`,{signal});return normaliseDiscover(page.data,0)}function listSavedQueriesPage(client2,source,params){return source==="explore"?exploreSavedQueriesPage(client2,params):discoverSavedQueriesPage(client2,params)}function isRunnable(query){return query.fields.length>0}function asArray2(body){return Array.isArray(body)?body.filter((row)=>typeof row==="object"&&row!==null):[]}function str4(value){if(value===void 0||value===null||value==="")return;return String(value)}function strings2(value){return Array.isArray(value)?value.map((item)=>String(item)).filter(Boolean):[]}function numbers(value){if(!Array.isArray(value))return[];return value.map((item)=>Number(item)).filter((item)=>Number.isFinite(item))}function actorName(actor){if(!actor)return;return str4(actor.name)??str4(actor.email)}function clockTime(iso){if(!iso)return"--:--:--";return iso.match(/T(\d{2}:\d{2}:\d{2})/)?.[1]??(iso.slice(11,19)||"--:--:--")}function durationText(seconds){if(!Number.isFinite(seconds)||seconds<0)return"";if(seconds<60)return`${Math.round(seconds)}s`;let minutes=Math.floor(seconds/60);if(minutes<60)return`${minutes}m`;let hours=Math.floor(minutes/60);if(hours<24)return`${hours}h`;return`${Math.floor(hours/24)}d`}var NO_DATE="------ --:--";function dateTimeText(iso){if(!iso)return NO_DATE;let match=iso.match(/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})/);return match?`${match[1]} ${match[2]}`:NO_DATE}function elapsedText(start,end,now=Date.now()){let from=Date.parse(start);if(Number.isNaN(from))return"";let to=end?Date.parse(end):now;if(Number.isNaN(to))return"";return durationText(Math.max(0,(to-from)/1000))}var CUSTOM_AVATAR_TYPES=new Set(["upload","gravatar"]);function customAvatarUrl(user2){if(!user2?.avatar||!CUSTOM_AVATAR_TYPES.has(user2.avatar.avatarType))return;return user2.avatar.avatarUrl??user2.avatarUrl??void 0}function avatarsByUserId(members){let byId=new Map;for(let member of members){let url=customAvatarUrl(member.user);if(url&&member.user)byId.set(member.user.id,url)}return byId}function assigneeAvatarUrl(assignee,avatars){if(assignee?.type!=="user")return;return avatars.get(assignee.id)}var UNASSIGNED_GLYPH="\xB7";function assigneeInitials(assignee){let name=assignee?.name;if(!name)return UNASSIGNED_GLYPH;return name.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map((part)=>part[0].toUpperCase()).join("")||UNASSIGNED_GLYPH}import{jsxDEV as jsxDEV16}from"h:6___________________________";function Placeholder({text,fallback,width,fg,attributes=NONE}){let theme=useTheme(),empty=!text||text.trim().length===0;return jsxDEV16("text",{fg:empty?theme.subText:fg??theme.text,attributes:empty?ITALIC:attributes,style:{flexShrink:0},children:padText(empty?fallback:text,width)},void 0,!1,void 0,this)}function layoutColumns(columns,available,{gap=1,minFlex=8}={}){let width=Math.max(0,Math.floor(available)),visible=[...columns],minWidth=(cols)=>cols.reduce((sum,col)=>sum+(col.width==="flex"?minFlex:col.width),0)+gap*Math.max(0,cols.length-1);while(visible.length>0&&minWidth(visible)>width){let victim=lowestPriority(visible);if(victim<0)break;visible.splice(victim,1)}while(visible.length>1&&minWidth(visible)>width)visible.pop();if(visible.length===0)return[];let gaps=gap*(visible.length-1),fixedTotal=visible.reduce((sum,col)=>sum+(col.width==="flex"?0:col.width),0),flexCount=visible.filter((col)=>col.width==="flex").length,widths=visible.map((col)=>col.width==="flex"?0:col.width);if(flexCount>0){let slack=Math.max(0,width-gaps-fixedTotal),base=Math.floor(slack/flexCount),remainder=slack-base*flexCount;visible.forEach((col,i)=>{if(col.width!=="flex")return;if(widths[i]=base+(remainder>0?1:0),remainder>0)remainder--})}let total=widths.reduce((sum,w)=>sum+w,0)+gaps;for(let i=widths.length-1;i>=0&&total>width;i--){let take=Math.min(widths[i]-1,total-width);if(take<=0)continue;widths[i]=widths[i]-take,total-=take}let resolved2=[],offset=0;return visible.forEach((column,i)=>{let w=Math.max(0,widths[i]);resolved2.push({column,width:w,offset}),offset+=w+gap}),resolved2}function lowestPriority(columns){let best=-1,bestPriority=1/0;return columns.forEach((column,i)=>{if(column.priority===void 0)return;if(column.priority<=bestPriority)best=i,bestPriority=column.priority}),best}import{jsxDEV as jsxDEV17,Fragment as Fragment6}from"h:6___________________________";var COLUMN_WIDTH={lastSeen:10,age:6,sparkline:12,events:7,users:7,priority:6,assignee:5},SPARKLINE_GLYPHS=COLUMN_WIDTH.sparkline-3,AVATAR_WIDTH=2,AVATAR_HEIGHT=1,COLUMN_LABEL={lastSeen:"Last Seen",age:"Age",sparkline:"Trend",events:"Events",users:"Users",priority:"Prio",assignee:"Asgn"},ALL_COLUMNS=["lastSeen","age","sparkline","events","users","priority","assignee"],MIN_TITLE_WIDTH=16,MARKER_WIDTH=3,LAYOUT_COLUMNS=[{key:"marker",width:MARKER_WIDTH},{key:"title",width:"flex"},{key:"lastSeen",width:COLUMN_WIDTH.lastSeen,priority:6},{key:"age",width:COLUMN_WIDTH.age,priority:3},{key:"sparkline",width:COLUMN_WIDTH.sparkline,priority:5},{key:"events",width:COLUMN_WIDTH.events},{key:"users",width:COLUMN_WIDTH.users,priority:4},{key:"priority",width:COLUMN_WIDTH.priority,priority:2},{key:"assignee",width:COLUMN_WIDTH.assignee,priority:1}],ROW_PADDING=1,ROW_HEIGHT=4;function resolveRowLayout(width){let content=Math.max(MIN_TITLE_WIDTH+MARKER_WIDTH,width-ROW_PADDING*2),resolved2=layoutColumns(LAYOUT_COLUMNS,content,{gap:0,minFlex:MIN_TITLE_WIDTH}),title=resolved2.find(({column})=>column.key==="title")?.width??MIN_TITLE_WIDTH,visible=new Set(resolved2.map(({column})=>column.key)),columns=ALL_COLUMNS.filter((key)=>visible.has(key));return{content,title,columns}}var PRIORITY_LABEL={high:"high",medium:"med",low:"low"};function RowRule({width,selectionAbove=!1,selectionBelow=!1}){let theme=useTheme(),glyph=selectionAbove?"\u2580":selectionBelow?"\u2584":"\u2500",fg=selectionAbove||selectionBelow?theme.selected:theme.border;return jsxDEV17("text",{fg,children:glyph.repeat(Math.max(0,width))},void 0,!1,void 0,this)}function TrendCell({content,fg,rules=!0}){let theme=useTheme(),rule=rules?"\u2502":" ";return jsxDEV17(Fragment6,{children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.border,children:rule},void 0,!1,void 0,this),jsxDEV17("text",{fg,children:content},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.border,children:rule},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function IssueListHeader({width,selectionBelow=!1}){let theme=useTheme(),layout=resolveRowLayout(width);return jsxDEV17("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV17("box",{style:{flexDirection:"row",paddingLeft:ROW_PADDING,paddingRight:ROW_PADDING},children:[jsxDEV17("text",{fg:theme.muted,children:padText("Issue",MARKER_WIDTH+layout.title)},void 0,!1,void 0,this),layout.columns.map((key)=>key==="sparkline"?jsxDEV17(TrendCell,{content:padText(COLUMN_LABEL[key],SPARKLINE_GLYPHS,"center"),fg:theme.muted,rules:!1},key,!1,void 0,this):jsxDEV17("text",{fg:theme.muted,children:padText(COLUMN_LABEL[key],COLUMN_WIDTH[key],"right")},key,!1,void 0,this))]},void 0,!0,void 0,this),jsxDEV17(RowRule,{width,selectionBelow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function IssueRow({group,selected,width,pending=!1,selectionBelow=!1,assigneeAvatarUrl:assigneeAvatarUrl2,onClick}){let theme=useTheme(),layout=resolveRowLayout(width),bg=selected?theme.selected:void 0,title=issueTitle(group),message=issueMessage(group),iconWidth=usePlatformIconWidth(),meta=metaRow(group,Math.max(0,layout.content-5),message,iconWidth);return jsxDEV17("box",{style:{flexDirection:"column",width,flexShrink:0},onMouseDown:onClick,children:[jsxDEV17("box",{style:{flexDirection:"column",paddingLeft:ROW_PADDING,paddingRight:ROW_PADDING,backgroundColor:bg},children:[jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{fg:selected?theme.accent:theme.muted,children:selected?"\u25B8":" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.accent,children:pending?"\u27F3":group.hasSeen?" ":"\u25CF"},void 0,!1,void 0,this),jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17(Placeholder,{text:title,fallback:"(no title)",width:layout.title,fg:theme.text,attributes:BOLD},void 0,!1,void 0,this),layout.columns.map((key)=>jsxDEV17(Column,{column:key,group,avatarUrl:assigneeAvatarUrl2},key,!1,void 0,this))]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.level[group.level]??theme.level.unknown,children:"\u2503"},void 0,!1,void 0,this),jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17(Placeholder,{text:message,fallback:"(no error message)",width:Math.max(0,layout.content-5),fg:theme.muted},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.muted,children:meta.lead},void 0,!1,void 0,this),meta.showIcon?jsxDEV17(PlatformIcon,{platform:group.project?.platform},void 0,!1,void 0,this):null,jsxDEV17("text",{fg:theme.muted,children:meta.rest},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),jsxDEV17(RowRule,{width,selectionAbove:selected,selectionBelow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function AssigneeCell({group,avatarUrl}){let theme=useTheme(),width=COLUMN_WIDTH.assignee,{supportsHighRes}=useImageSupport();if(!avatarUrl||!supportsHighRes)return jsxDEV17("text",{fg:theme.muted,children:padText(assigneeInitials(group.assignedTo),width,"right")},void 0,!1,void 0,this);return jsxDEV17(Fragment6,{children:[jsxDEV17("text",{children:" ".repeat(Math.max(0,width-AVATAR_WIDTH))},void 0,!1,void 0,this),jsxDEV17("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH,height:AVATAR_HEIGHT,flexShrink:0}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Column({column,group,avatarUrl}){let theme=useTheme(),width=COLUMN_WIDTH[column];switch(column){case"sparkline":return jsxDEV17(TrendCell,{content:sparkline(group.stats?.["24h"],SPARKLINE_GLYPHS),fg:theme.muted},void 0,!1,void 0,this);case"events":return jsxDEV17("text",{fg:theme.text,children:padText(formatCount(group.count),width,"right")},void 0,!1,void 0,this);case"users":return jsxDEV17("text",{fg:theme.text,children:padText(formatCount(group.userCount),width,"right")},void 0,!1,void 0,this);case"lastSeen":return jsxDEV17("text",{fg:theme.muted,children:padText(relative(group.lastSeen,!0),width,"right")},void 0,!1,void 0,this);case"age":return jsxDEV17("text",{fg:theme.muted,children:padText(relative(group.firstSeen),width,"right")},void 0,!1,void 0,this);case"priority":return jsxDEV17("text",{fg:theme.muted,children:padText(group.priority?PRIORITY_LABEL[group.priority]:"",width,"right")},void 0,!1,void 0,this);case"assignee":return jsxDEV17(AssigneeCell,{group,avatarUrl},void 0,!1,void 0,this)}}function relative(iso,suffix=!1){if(!iso)return"\xB7\xB7";let ago=timeAgo(iso);return suffix&&ago?`${ago} ago`:ago}function metaRow(group,width,message,iconWidth){let slug=group.project?.slug,before=[group.shortId].filter((part)=>Boolean(part)),after=[slug,group.isUnhandled?"Unhandled":null,group.culprit===message?null:group.culprit,group.numComments>0?`\uD83D\uDCAC ${group.numComments}`:null,group.logger].filter((part)=>Boolean(part)),showIcon=Boolean(slug)&&iconWidth>0,budget=Math.max(0,width-(showIcon?iconWidth:0)),lead=before.length>0?fitText(`${before.join(" \u2502 ")} \u2502 `,budget):"",rest=fitText(after.join(" \u2502 "),Math.max(0,budget-measureTextWidth(lead)));return{lead,rest,showIcon}}function IssueRowSkeleton({width,seed}){let theme=useTheme(),layout=resolveRowLayout(width),titleBar=Math.floor(layout.title*(0.45+seed*17%40/100)),messageBar=Math.floor((layout.content-4)*(0.5+seed*29%35/100)),metaBar=Math.floor((layout.content-4)*(0.3+seed*23%25/100));return jsxDEV17("box",{style:{flexDirection:"column",width,paddingLeft:ROW_PADDING,paddingRight:ROW_PADDING,border:["bottom"],borderColor:theme.border,flexShrink:0},children:[jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.panelAlt,children:padText("\u2500".repeat(titleBar),layout.title)},void 0,!1,void 0,this),layout.columns.map((key)=>key==="sparkline"?jsxDEV17(TrendCell,{content:"\u254C".repeat(SPARKLINE_GLYPHS),fg:theme.panelAlt},key,!1,void 0,this):jsxDEV17("text",{fg:theme.panelAlt,children:padText("\xB7\xB7",COLUMN_WIDTH[key],"right")},key,!1,void 0,this))]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.border,children:"\u2503"},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.panelAlt,children:` ${"\u2500".repeat(messageBar)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV17("box",{style:{flexDirection:"row"},children:[jsxDEV17("text",{children:" "},void 0,!1,void 0,this),jsxDEV17("text",{fg:theme.panelAlt,children:"\u2500".repeat(metaBar)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback5,useEffect as useEffect9,useRef as useRef4,useState as useState8}from"h:0__";function useIssues(client2,{org,query,sort,statsPeriod,limit,project,environment,reloadToken=0}){let[issues,setIssues]=useState8(idle),[statsLoading,setStatsLoading]=useState8(!1),[nextCursor,setNextCursor]=useState8(null),[prevCursor,setPrevCursor]=useState8(null),[page,setPage]=useState8(1),issuesRef=useRef4(issues);issuesRef.current=issues;let pageCursorRef=useRef4(void 0),pageRef=useRef4(1),requestRef=useRef4(null),requestIdRef=useRef4(0),requestPage=useCallback5((cursor,targetPage)=>{if(!client2)return!1;requestRef.current?.abort();let controller=new AbortController;requestRef.current=controller;let{signal}=controller,requestId=++requestIdRef.current;return setIssues(startLoading(issuesRef.current,Date.now())),setStatsLoading(!1),(async()=>{try{let result=await listIssues(client2,{org,query,sort,statsPeriod,limit,project,environment,cursor,signal});if(signal.aborted||requestId!==requestIdRef.current)return;if(pageCursorRef.current=cursor,pageRef.current=targetPage,setPage(targetPage),setNextCursor(result.nextCursor),setPrevCursor(result.prevCursor),setIssues(resolved(result.data,Date.now())),result.data.length===0)return;setStatsLoading(!0);try{let stats=await fetchIssueStats(client2,{org,groups:result.data.map((group)=>group.id),statsPeriod,project,signal});if(signal.aborted||requestId!==requestIdRef.current)return;setIssues((current)=>current.state==="ready"?resolved(mergeStats(current.value,stats),current.fetchedAt):current)}finally{if(!signal.aborted&&requestId===requestIdRef.current)setStatsLoading(!1)}}catch(error){if(signal.aborted||requestId!==requestIdRef.current)return;setIssues((current)=>rejected(current,toAsyncError(error)))}})(),!0},[client2,org,query,sort,statsPeriod,limit,project,environment]),previousRequestPage=useRef4(null),nextPage=useCallback5(()=>nextCursor===null||issuesRef.current.state==="loading"?!1:requestPage(nextCursor,pageRef.current+1),[nextCursor,requestPage]),previousPage=useCallback5(()=>pageRef.current<=1||prevCursor===null||issuesRef.current.state==="loading"?!1:requestPage(prevCursor,Math.max(1,pageRef.current-1)),[prevCursor,requestPage]);return useEffect9(()=>{if(!client2){requestIdRef.current++,requestRef.current?.abort();return}let queryChanged=previousRequestPage.current!==requestPage;if(previousRequestPage.current=requestPage,queryChanged)pageCursorRef.current=void 0,pageRef.current=1,setPage(1),setNextCursor(null),setPrevCursor(null);requestPage(pageCursorRef.current,pageRef.current)},[client2,requestPage,reloadToken]),useEffect9(()=>()=>{requestIdRef.current++,requestRef.current?.abort()},[]),{issues,statsLoading,nextCursor,prevCursor,page,nextPage,previousPage}}function mergeStats(groups,stats){return groups.map((group)=>{let entry=stats[group.id];if(!entry)return group;return{...group,count:entry.count??group.count,userCount:entry.userCount??group.userCount,firstSeen:entry.firstSeen??group.firstSeen,lastSeen:entry.lastSeen??group.lastSeen,isUnhandled:entry.isUnhandled??group.isUnhandled,stats:{...group.stats,...entry.stats}}})}import{jsxDEV as jsxDEV18}from"h:6___________________________";var MAX_EMBEDDED_ISSUES=25;function SeerIssueEmbed({client:client2,org,ids,width}){let theme=useTheme(),issueIds=[...new Set(ids.filter(Boolean))].slice(0,MAX_EMBEDDED_ISSUES),query=issueIds.length===1?`issue:${issueIds[0]}`:`issue:[${issueIds.join(",")}]`,state=useIssues(issueIds.length>0?client2:null,{org,query,sort:"date",statsPeriod:DEFAULT_STATS_PERIOD,limit:Math.max(1,issueIds.length)}),groups=valueOf(state.issues)??[],error=errorOf(state.issues),listWidth=Math.max(24,width-2),multiple=issueIds.length>1;if(issueIds.length===0)return jsxDEV18("text",{fg:theme.muted,children:"No issues referenced."},void 0,!1,void 0,this);return jsxDEV18("box",{style:{flexDirection:"column",width,border:!0,borderColor:error?theme.danger:theme.border,flexShrink:0},children:[multiple?jsxDEV18(IssueListHeader,{width:listWidth},void 0,!1,void 0,this):null,state.issues.state==="idle"||isInitialLoad(state.issues)?jsxDEV18(IssueRowSkeleton,{width:listWidth,seed:0},void 0,!1,void 0,this):null,error&&groups.length===0?jsxDEV18("box",{style:{flexDirection:"column",paddingLeft:1,paddingRight:1},children:[jsxDEV18("text",{fg:theme.danger,attributes:BOLD,children:["Could not load ",multiple?"issues":issueIds[0]]},void 0,!0,void 0,this),jsxDEV18("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,!error&&state.issues.state==="ready"&&groups.length===0?jsxDEV18("text",{fg:theme.muted,children:` No matching ${multiple?"issues":`issue ${issueIds[0]}`} found.`},void 0,!1,void 0,this):null,groups.map((group)=>jsxDEV18(IssueRow,{group,selected:!1,width:listWidth},group.id,!1,void 0,this)),ids.length>MAX_EMBEDDED_ISSUES?jsxDEV18("text",{fg:theme.muted,children:` Showing the first ${MAX_EMBEDDED_ISSUES} issues.`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as useCallback6,useState as useState9}from"h:0__";import{useKeyboard as useKeyboard3}from"h:4___________";import{jsxDEV as jsxDEV19}from"h:6___________________________";var BODY_INDENT=" ",KEY_COLUMN=18;function Divider(){let theme=useTheme();return jsxDEV19("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this)}function Empty({children}){let theme=useTheme();return jsxDEV19("text",{fg:theme.subText,children:`${BODY_INDENT}${children}`},void 0,!1,void 0,this)}function keyCell(name){return padText(fitText(name,KEY_COLUMN-1),KEY_COLUMN)}function Field({name,value,width}){let theme=useTheme();return jsxDEV19("box",{style:{flexDirection:"row",width},children:[jsxDEV19("text",{fg:theme.muted,children:`${BODY_INDENT}${keyCell(name)}`},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.text,children:fitText(value,Math.max(0,width-KEY_COLUMN-BODY_INDENT.length))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Section({index,title,count,collapsed,width,onToggle,children}){let theme=useTheme(),label=count===void 0?title:`${title} (${count})`,prefix=`${collapsed?"\u25B8":"\u25BE"} ${index} `,rule=Math.max(0,width-measureTextWidth(prefix)-measureTextWidth(label)-1);return jsxDEV19("box",{style:{flexDirection:"column",width,paddingTop:1},children:[jsxDEV19("box",{style:{flexDirection:"row",width},onMouseDown:onToggle,children:[jsxDEV19("text",{fg:theme.accent,children:prefix},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.text,attributes:BOLD,children:label},void 0,!1,void 0,this),jsxDEV19("text",{fg:theme.border,children:` ${"\u2500".repeat(rule)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),collapsed?null:children]},void 0,!0,void 0,this)}function useSectionFolds(order,focused){let[collapsed,setCollapsed]=useState9(()=>new Set),toggle=useCallback6((key)=>{setCollapsed((current)=>{let next=new Set(current);if(next.has(key))next.delete(key);else next.add(key);return next})},[]),toggleAll=useCallback6(()=>{setCollapsed((current)=>current.size===order.length?new Set:new Set(order))},[order]);return useKeyboard3((key)=>{if(!focused)return;routeKeyOwnership([()=>{if(matchesCommand("sentry.view.toggleAllSections",key))return toggleAll(),"mine";if(matchesCommand("sentry.view.toggleSection",key)){let target=order[Number(key.name)-1];if(!target)return"notMine";return toggle(target),"mine"}return"notMine"}],key,consumeKey)}),{collapsed,toggle}}import{jsxDEV as jsxDEV20,Fragment as Fragment7}from"h:6___________________________";var CARD_CHROME=3;function SeerEmbedCard({label,title,subtitle,width,tone="normal",children}){let theme=useTheme(),borderColor=tone==="warning"?theme.warning:tone==="danger"?theme.danger:tone==="accent"?theme.accent:theme.border,inner=Math.max(1,width-CARD_CHROME);return jsxDEV20("box",{style:{flexDirection:"column",width,border:!0,borderColor,paddingLeft:1,flexShrink:0},children:[jsxDEV20("box",{style:{flexDirection:"row",width:inner},children:[jsxDEV20("text",{fg:theme.accent,attributes:BOLD,children:label},void 0,!1,void 0,this),title?jsxDEV20("text",{fg:theme.text,children:` ${fitText(title,Math.max(1,inner-label.length-1))}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),subtitle?jsxDEV20("text",{fg:theme.muted,children:fitText(subtitle,inner)},void 0,!1,void 0,this):null,children]},void 0,!0,void 0,this)}function SeerEmbedFields({fields,width}){return jsxDEV20(Fragment7,{children:fields.flatMap(([name,value])=>value?[jsxDEV20(Field,{name,value,width},name,!1,void 0,this)]:[])},void 0,!1,void 0,this)}function SeerEmbedText({children,width,dim=!1}){let theme=useTheme();return jsxDEV20(Fragment7,{children:wrapText(children,Math.max(1,width)).map((line,index)=>jsxDEV20("text",{fg:dim?theme.muted:theme.text,attributes:dim?DIM:void 0,children:line},index,!1,void 0,this))},void 0,!1,void 0,this)}function SeerEmbedStatus({status,noun,empty=!1}){let theme=useTheme(),error=errorOf(status);if(error)return jsxDEV20("text",{fg:theme.danger,children:`${BODY_INDENT}Could not load ${noun}: ${error.message}`},void 0,!1,void 0,this);if(status.state==="idle"||isInitialLoad(status))return jsxDEV20("text",{fg:theme.muted,children:`${BODY_INDENT}Loading ${noun}\u2026`},void 0,!1,void 0,this);if(empty)return jsxDEV20("text",{fg:theme.subText,children:`${BODY_INDENT}No ${noun} found.`},void 0,!1,void 0,this);return null}import{useEffect as useEffect10,useRef as useRef5,useState as useState10}from"h:0__";function useDirectResource(client2,{org,id,reloadToken=0,load}){let[status,setStatus]=useState10(idle),statusRef=useRef5(status);return statusRef.current=status,useEffect10(()=>{if(!client2)return;let controller=new AbortController,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),load(client2,{org,id,signal:controller.signal}).then((value)=>{if(!cancelled)setStatus(resolved(value,Date.now()))}).catch((error)=>{if(!cancelled&&!controller.signal.aborted)setStatus(rejected(statusRef.current,toAsyncError(error)))}),()=>{cancelled=!0,controller.abort()}},[client2,org,id,reloadToken,load]),status}import{useCallback as useCallback8,useEffect as useEffect12,useRef as useRef7,useState as useState12}from"h:0__";import{useCallback as useCallback7,useEffect as useEffect11,useRef as useRef6,useState as useState11}from"h:0__";function useCursorPages(loader,reloadKey=0){let[status,setStatus]=useState11(idle),[nextCursor,setNextCursor]=useState11(null),[cursor,setCursor]=useState11(void 0),[page,setPage]=useState11(1),statusRef=useRef6(status);statusRef.current=status;let cursorRef=useRef6(void 0),pageRef=useRef6(1),cursorHistoryRef=useRef6([void 0]),requestRef=useRef6(null),requestIdRef=useRef6(0),requestPage=useCallback7((requestedCursor,targetPage)=>{requestRef.current?.abort();let controller=new AbortController;requestRef.current=controller;let requestId=++requestIdRef.current,request;try{request=loader(requestedCursor,controller.signal)}catch(error){return setStatus((current)=>rejected(current,toAsyncError(error))),!1}if(request===null)return setStatus(idle),!1;let loading=startLoading(statusRef.current,Date.now());return statusRef.current=loading,setStatus(loading),request.then((result)=>{if(controller.signal.aborted||requestId!==requestIdRef.current)return;cursorRef.current=requestedCursor,pageRef.current=targetPage,cursorHistoryRef.current[targetPage-1]=requestedCursor,cursorHistoryRef.current.length=targetPage,setCursor(requestedCursor),setPage(targetPage),setNextCursor(result.nextCursor),setStatus(resolved(result,Date.now()))}).catch((error)=>{if(controller.signal.aborted||requestId!==requestIdRef.current)return;setStatus((current)=>rejected(current,toAsyncError(error)))}),!0},[loader]),previousRequestPage=useRef6(null),nextPage=useCallback7(()=>{if(nextCursor===null||statusRef.current.state==="loading")return!1;return requestPage(nextCursor,pageRef.current+1)},[nextCursor,requestPage]),previousPage=useCallback7(()=>{if(pageRef.current<=1||statusRef.current.state==="loading")return!1;return requestPage(cursorHistoryRef.current[pageRef.current-2],pageRef.current-1)},[requestPage]);return useEffect11(()=>{let queryChanged=previousRequestPage.current!==requestPage;if(previousRequestPage.current=requestPage,queryChanged)cursorRef.current=void 0,pageRef.current=1,cursorHistoryRef.current=[void 0],setCursor(void 0),setPage(1),setNextCursor(null);requestPage(cursorRef.current,pageRef.current)},[requestPage,reloadKey]),useEffect11(()=>()=>{requestIdRef.current++,requestRef.current?.abort()},[]),{status,nextCursor,cursor,page,nextPage,previousPage}}function useReleases(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback8((cursor,signal)=>client2?listReleases(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment,sort]),pages=useCursorPages(loader,reloadToken);return{releases:mapAsyncStatus(pages.status,(result)=>result.data),nextCursor:pages.nextCursor,cursor:pages.cursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}function useReleaseHealth(client2,{org,query,statsPeriod,project,environment,sort,cursor,reloadToken=0}){let[health,setHealth]=useState12(idle),healthRef=useRef7(health);return healthRef.current=health,useEffect12(()=>{if(!client2)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setHealth(startLoading(healthRef.current,Date.now())),(async()=>{try{let index=await listReleaseHealth(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal});if(cancelled)return;setHealth(resolved(index,Date.now()))}catch(error){if(cancelled||signal.aborted)return;setHealth(rejected(healthRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,query,statsPeriod,project,environment,sort,cursor,reloadToken]),health}import{useMemo as useMemo6}from"h:0__";var VALUE_AGGREGATES=["count","avg","p50","p75","p90","p95","p99","sum","min","max","count_unique"],SPAN_AGGREGATES=["count","avg","p50","p75","p90","p95","p99","p100","sum","min","max","count_unique","epm","eps","failure_rate","failure_count","performance_score","opportunity_score"],TRACES={id:"explore.traces",dataset:"spans",fields:["id","span.name","span.description","span.duration","transaction","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count(span.duration)",builder:{itemType:"spans",aggregates:SPAN_AGGREGATES,numberField:"span.duration",uniqueField:"span.op"},noun:"spans",searchPlaceholder:"Search spans\u2026",referrer:"sentry-tui.explore-traces"},LOGS={id:"explore.logs",dataset:"logs",fields:["sentry.item_id","trace","sentry.severity","timestamp","message","project"],sort:"-timestamp",idField:"sentry.item_id",yAxis:"count(message)",builder:{itemType:"logs",aggregates:VALUE_AGGREGATES,uniqueField:"message"},noun:"logs",searchPlaceholder:"Search logs\u2026",referrer:"sentry-tui.explore-logs",feature:"logs"},METRICS={id:"explore.metrics",dataset:"tracemetrics",fields:["id","metric.name","metric.type","value","metric.unit","project","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count(value)",builder:{itemType:"tracemetrics",aggregates:VALUE_AGGREGATES,numberField:"value",uniqueField:"metric.name"},noun:"metrics",searchPlaceholder:"Search metrics\u2026",referrer:"sentry-tui.explore-metrics",feature:"tracemetrics-enabled"},ERRORS={id:"explore.errors",dataset:"errors",fields:["id","title","level","project","user.display","timestamp"],sort:"-timestamp",idField:"id",yAxis:"count()",noun:"events",searchPlaceholder:"Search error events\u2026",referrer:"sentry-tui.explore-errors",feature:"explore-errors"},EXPLORE_TABLES=[TRACES,LOGS,METRICS,ERRORS],BY_ID3=new Map(EXPLORE_TABLES.map((table)=>[table.id,table]));function getExploreTable(id){return BY_ID3.get(id)}function exploreQuery(table,userQuery){let base=table.baseQuery?.trim()??"",typed=userQuery.trim();if(!base)return typed;if(!typed)return base;return`(${base}) and (${typed})`}function exploreChartTitle(table,yAxis=table.yAxis){return yAxis==="count()"||table.id==="explore.logs"&&yAxis==="count(message)"?`count(${table.noun})`:yAxis}function exploreEmptyLines(table,query){return[query||void 0,"Try widening the time range or adjusting the query.",table.feature?`This organization may not have ${table.feature} enabled.`:"This organization may not be sending this data yet."]}import{useEffect as useEffect13,useRef as useRef8,useState as useState13}from"h:0__";function useDiscoverRows(client2,{org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,reloadToken=0}){let[status,setStatus]=useState13(idle),[nextCursor,setNextCursor]=useState13(null),statusRef=useRef8(status);return statusRef.current=status,useEffect13(()=>{if(!client2||fields.length===0)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await queryDiscover(client2,{org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,signal});if(cancelled)return;setStatus(resolved(page.rows,Date.now())),setNextCursor(page.nextCursor)}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,dataset,fields,sort,query,statsPeriod,project,environment,referrer,reloadToken]),{rows:status,nextCursor}}import{useCallback as useCallback10}from"h:0__";var EXPLORE_PAGE_SIZE=50;async function listExploreEvents(client2,{idField="id",limit=EXPLORE_PAGE_SIZE,...params}){let page=await queryDiscover(client2,{...params,limit});return{data:page.rows.map((row,index)=>normalise2(row,index,idField)),nextCursor:page.nextCursor}}function normalise2(row,index,idField){return{id:rowString(row,idField)??String(index),row}}async function listExploreTimeseries(client2,params){return queryExploreTimeseries(client2,params)}import{useCallback as useCallback9,useEffect as useEffect14,useRef as useRef9,useState as useState14}from"h:0__";function useAsyncFetch(loader,{reloadKey,resetKey}={}){let[status,setStatus]=useState14(idle),[manualReload,setManualReload]=useState14(0),requestIdRef=useRef9(0),resetKeyRef=useRef9(resetKey),refetch=useCallback9(()=>setManualReload((value)=>value+1),[]);return useEffect14(()=>{let controller=new AbortController,requestId=++requestIdRef.current,reset=!Object.is(resetKeyRef.current,resetKey);resetKeyRef.current=resetKey;let promise;try{promise=loader(controller.signal)}catch(error){if(requestId===requestIdRef.current&&!controller.signal.aborted)setStatus((current)=>rejected(reset?void 0:current,toAsyncError(error)));return()=>{requestIdRef.current++,controller.abort()}}if(promise===null)return setStatus(idle),()=>{requestIdRef.current++,controller.abort()};return setStatus((current)=>startLoading(reset?void 0:current,Date.now())),promise.then((value)=>{if(requestId===requestIdRef.current&&!controller.signal.aborted)setStatus(resolved(value,Date.now()))}).catch((error)=>{if(requestId===requestIdRef.current&&!controller.signal.aborted)setStatus((current)=>rejected(current,toAsyncError(error)))}),()=>{requestIdRef.current++,controller.abort()}},[loader,reloadKey,resetKey,manualReload]),{status,refetch}}function useExploreEvents(client2,table,{org,query,request,statsPeriod,interval,project,environment,reloadToken=0}){let combined=exploreQuery(table,query),eventsLoader=useCallback10((cursor,signal)=>client2?listExploreEvents(client2,{org,query:combined,statsPeriod,project,environment,cursor,signal,dataset:table.dataset,fields:request.fields,sort:request.sort,idField:request.idField,referrer:table.referrer}):null,[client2,org,combined,request,statsPeriod,project,environment,table]),timeseriesLoader=useCallback10((signal)=>client2?listExploreTimeseries(client2,{org,query:combined,statsPeriod,interval,project,environment,signal,dataset:table.dataset,yAxis:request.yAxis,groupBy:request.groupBys.length>0?request.groupBys:void 0,sort:request.sort,topEvents:request.groupBys.length>0?9:void 0,referrer:`${table.referrer}-chart`}):null,[client2,org,combined,request,statsPeriod,interval,project,environment,table]),eventsPages=useCursorPages(eventsLoader,reloadToken),timeseries=useAsyncFetch(timeseriesLoader,{reloadKey:reloadToken}).status;return{events:mapAsyncStatus(eventsPages.status,(page)=>page.data),timeseries,nextCursor:eventsPages.nextCursor,page:eventsPages.page,nextPage:eventsPages.nextPage,previousPage:eventsPages.previousPage}}import{useCallback as useCallback11}from"h:0__";function useReplays(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback11((cursor,signal)=>client2?listReplays(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment,sort]),pages=useCursorPages(loader,reloadToken);return{replays:mapAsyncStatus(pages.status,(page)=>page.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}function useReplayErrors(client2,{org,replayId,statsPeriod,environment,count,reloadToken=0}){let loader=useCallback11((signal)=>{if(!client2)return null;if(count<=0)return Promise.resolve({data:[],nextCursor:null});return listReplayErrors(client2,{org,replayId,statsPeriod,environment,signal})},[client2,org,replayId,statsPeriod,environment,count]),{status}=useAsyncFetch(loader,{reloadKey:reloadToken});return{errors:mapAsyncStatus(status,(page)=>page.data),nextCursor:valueOf(status)?.nextCursor??null}}import{jsxDEV as jsxDEV21,Fragment as Fragment8}from"h:6___________________________";var PREVIEW_ROWS=5,EXPLORE_SCREENS2={spansQuery:"explore.traces",logsQuery:"explore.logs",metricsQuery:"explore.metrics"},NOUNS={issuesQuery:"issues",errorsQuery:"errors",spansQuery:"spans",logsQuery:"logs",metricsQuery:"metrics",replaysQuery:"replays"};function SeerQueryEmbed(props){switch(props.name){case"issuesQuery":return jsxDEV21(IssuesQueryEmbed,{...props},void 0,!1,void 0,this);case"replaysQuery":return jsxDEV21(ReplaysQueryEmbed,{...props},void 0,!1,void 0,this);case"errorsQuery":return jsxDEV21(ErrorsQueryEmbed,{...props},void 0,!1,void 0,this);case"spansQuery":case"logsQuery":case"metricsQuery":return jsxDEV21(ExploreQueryEmbed,{...props},void 0,!1,void 0,this);default:return null}}function describeQuery(embed){let parts=[];if(embed.mode==="aggregate"){if(embed.groupBy.length>0)parts.push(`by ${embed.groupBy.join(", ")}`);if(embed.yAxes.length>0)parts.push(embed.yAxes.join(", "))}let period=describeEmbedPeriod(embed.filters);if(period)parts.push(period);if(embed.filters.projects.length>0)parts.push(embed.filters.projects.length===1?"1 project":`${embed.filters.projects.length} projects`);if(embed.filters.environments.length>0)parts.push(embed.filters.environments.join(", "));return parts.join(" \xB7 ")}function QueryCard({label,embed,noun,width,bare,children}){if(bare)return jsxDEV21(Fragment8,{children},void 0,!1,void 0,this);return jsxDEV21(SeerEmbedCard,{label,title:queryEmbedTitle(embed,noun),subtitle:describeQuery(embed),width,children},void 0,!1,void 0,this)}function IssuesQueryEmbed({data,width,client:client2,org,bare=!1}){let embed=readQueryEmbed(data),state=useIssues(client2,{org,query:embed.query,sort:issueSort(embed.sort??"date"),statsPeriod:embed.filters.statsPeriod??DEFAULT_STATS_PERIOD,limit:PREVIEW_ROWS,project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0}),groups=valueOf(state.issues)??[],rowWidth=Math.max(24,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:"Issues",embed,noun:"issues",width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.issues,noun:"issues",empty:state.issues.state==="ready"&&groups.length===0},void 0,!1,void 0,this),groups.slice(0,PREVIEW_ROWS).map((group)=>jsxDEV21(IssueRow,{group,selected:!1,width:rowWidth},group.id,!1,void 0,this))]},void 0,!0,void 0,this)}function ReplaysQueryEmbed({data,width,client:client2,org,bare=!1}){let theme=useTheme(),embed=readQueryEmbed(data),state=useReplays(client2,{org,query:embed.query,statsPeriod:embed.filters.statsPeriod??DEFAULT_REPLAY_PERIOD,project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0}),replays=valueOf(state.replays)??[],inner=Math.max(1,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:"Replays",embed,noun:"replays",width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.replays,noun:"replays",empty:state.replays.state==="ready"&&replays.length===0},void 0,!1,void 0,this),replays.slice(0,PREVIEW_ROWS).map((replay)=>{let counts=[formatReplayDuration(replay.durationSec),replay.countErrors===void 0?null:`${replay.countErrors} errors`,replay.countRageClicks===void 0?null:`${replay.countRageClicks} rage`].filter(Boolean).join(" \xB7 ");return jsxDEV21("box",{style:{flexDirection:"row",width:inner},children:[jsxDEV21("text",{fg:theme.text,children:`${BODY_INDENT}${fitText(replay.user.displayName??shortReplayId(replay.id),Math.max(1,inner-counts.length-3))}`},void 0,!1,void 0,this),jsxDEV21("text",{fg:theme.muted,children:` ${counts}`},void 0,!1,void 0,this)]},replay.id,!0,void 0,this)})]},void 0,!0,void 0,this)}function previewFields(embed,table,yAxes){if(embed.mode==="aggregate")return[...new Set([...embed.groupBy,...yAxes.length>0?yAxes:[table.yAxis]])];return embed.fields.length>0?embed.fields:table.fields}function RowFields({row,fields,width}){return jsxDEV21(SeerEmbedFields,{fields:fields.slice(0,4).map((field)=>[field,formatCell(row[field])]),width},void 0,!1,void 0,this)}function formatCell(value){if(value===null||value===void 0||value==="")return;if(typeof value==="number")return Number.isInteger(value)?String(value):value.toFixed(2);if(typeof value==="string"||typeof value==="boolean")return String(value);return JSON.stringify(value)}function ExploreQueryEmbed({name,data,width,client:client2,org,bare=!1}){let theme=useTheme(),embed=readQueryEmbed(data),screenId=EXPLORE_SCREENS2[name],table=screenId?getExploreTable(screenId):void 0,noun=NOUNS[name]??"rows",metricName=name==="metricsQuery"?embedText(data.name):void 0,{query,yAxes}=name==="metricsQuery"?resolveMetricsEmbed(data,embed):{query:embed.query,yAxes:embed.yAxes},fields=table?previewFields(embed,table,yAxes):[],request=useMemo6(()=>({mode:embed.mode,fields,sort:embed.sort??table?.sort??"",yAxis:yAxes[0]??table?.yAxis??"",groupBys:embed.groupBy,idField:embed.mode==="aggregate"?embed.groupBy[0]??"":table?.idField??""}),[embed.mode,fields.join(","),embed.sort,yAxes.join(","),embed.groupBy.join(","),table]),state=useExploreEvents(table?client2:null,table??FALLBACK_TABLE,{org,query,request,statsPeriod:embed.filters.statsPeriod??"24h",project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0}),events=valueOf(state.events)??[],inner=Math.max(1,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:noun[0].toUpperCase()+noun.slice(1),embed:{...embed,title:embed.title??metricName},noun,width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.events,noun,empty:state.events.state==="ready"&&events.length===0},void 0,!1,void 0,this),events.slice(0,PREVIEW_ROWS).map((event,index)=>jsxDEV21("box",{style:{flexDirection:"column",width:inner},children:[index>0?jsxDEV21("text",{fg:theme.border,children:`${BODY_INDENT}${"\u2500".repeat(Math.max(0,inner-4))}`},void 0,!1,void 0,this):null,jsxDEV21(RowFields,{row:event.row,fields,width:inner},void 0,!1,void 0,this)]},event.id,!0,void 0,this))]},void 0,!0,void 0,this)}var FALLBACK_TABLE=getExploreTable("explore.traces");function ErrorsQueryEmbed({data,width,client:client2,org,bare=!1}){let theme=useTheme(),embed=readQueryEmbed(data),table=getExploreTable("explore.errors"),fields=useMemo6(()=>table?previewFields(embed,table,embed.yAxes):[],[embed.mode,embed.fields.join(","),embed.groupBy.join(","),embed.yAxes.join(","),table]),state=useDiscoverRows(client2,{org,dataset:"errors",fields,sort:embed.sort,query:embed.query,statsPeriod:embed.filters.statsPeriod??"24h",project:embed.filters.projects.length>0?embed.filters.projects:void 0,environment:embed.filters.environments.length>0?embed.filters.environments:void 0,referrer:table?.referrer}),rows=valueOf(state.rows)??[],inner=Math.max(1,width-(bare?0:CARD_CHROME));return jsxDEV21(QueryCard,{label:"Errors",embed,noun:"errors",width,bare,children:[jsxDEV21(SeerEmbedStatus,{status:state.rows,noun:"errors",empty:state.rows.state==="ready"&&rows.length===0},void 0,!1,void 0,this),rows.slice(0,PREVIEW_ROWS).map((row,index)=>jsxDEV21("box",{style:{flexDirection:"column",width:inner},children:[index>0?jsxDEV21("text",{fg:theme.border,children:`${BODY_INDENT}${"\u2500".repeat(Math.max(0,inner-4))}`},void 0,!1,void 0,this):null,jsxDEV21(RowFields,{row,fields,width:inner},void 0,!1,void 0,this)]},index,!0,void 0,this))]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV22}from"h:6___________________________";function SeerBlockEmbed({name,data,width,client:client2,org}){switch(name){case"issue":return jsxDEV22(SeerIssueEmbed,{client:client2,org,ids:[embedText(data.id)??""],width},void 0,!1,void 0,this);case"issues":return jsxDEV22(SeerIssueEmbed,{client:client2,org,ids:embedTexts(data.ids),width},void 0,!1,void 0,this);case"dsn":return jsxDEV22(DsnEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"chart":return jsxDEV22(ChartEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"autofix":return jsxDEV22(AutofixEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"autofixRef":return jsxDEV22(AutofixRefEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"agentWriteApproval":return jsxDEV22(AgentWriteApprovalEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"trace":return jsxDEV22(TraceEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"profile":return jsxDEV22(ProfileEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"alert":return jsxDEV22(AlertEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"dashboard":return jsxDEV22(DashboardEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"monitor":return jsxDEV22(MonitorEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"release":return jsxDEV22(ReleaseEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"replay":return jsxDEV22(ReplayEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"savedQuery":return jsxDEV22(SavedQueryEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);case"savedIssueView":return jsxDEV22(SavedIssueViewEmbed,{data,width,client:client2,org},void 0,!1,void 0,this);default:return jsxDEV22(SeerQueryEmbed,{name,data,width,client:client2,org},void 0,!1,void 0,this)}}function DsnEmbed({data,width}){let theme=useTheme();return jsxDEV22(SeerEmbedCard,{label:"DSN",width,children:jsxDEV22("text",{fg:theme.accent,children:embedText(data.value)??"DSN unavailable"},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ChartEmbed({data,width}){let theme=useTheme(),series=Array.isArray(data.series)?data.series.slice(0,5):[],chartWidth=Math.max(8,Math.min(50,width-4));return jsxDEV22(SeerEmbedCard,{label:"Chart",title:embedText(data.title),subtitle:embedText(data.subtitle),width,children:series.map((entry,index)=>{let record2=entry&&typeof entry==="object"?entry:{},points=Array.isArray(record2.data)?record2.data.flatMap((point,pointIndex)=>{if(!point||typeof point!=="object")return[];let y=Number(point.y);return Number.isFinite(y)?[[pointIndex,y]]:[]}):[],label=embedText(record2.label)??embedText(record2.name)??`Series ${index+1}`;return jsxDEV22("box",{style:{flexDirection:"column"},children:[jsxDEV22("text",{fg:index===0?theme.accent:theme.muted,children:sparkline(points,chartWidth,{floor:!0})},void 0,!1,void 0,this),jsxDEV22("text",{fg:theme.muted,attributes:DIM,children:label},void 0,!1,void 0,this)]},`${label}-${index}`,!0,void 0,this)})},void 0,!1,void 0,this)}function stepLabel(data){return(embedText(data.step)??"result").replace(/_/g," ")}function AutofixEmbed({data,width}){return jsxDEV22(SeerEmbedCard,{label:"Autofix",title:stepLabel(data),subtitle:embedText(data.shortId),width,tone:"accent",children:jsxDEV22(SeerEmbedText,{width:width-CARD_CHROME,children:embedText(data.result)??"No result returned."},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function AutofixRefEmbed({data,width}){let theme=useTheme(),shortId3=embedText(data.shortId);return jsxDEV22(SeerEmbedCard,{label:"Autofix",title:stepLabel(data),subtitle:shortId3,width,tone:"accent",children:[jsxDEV22(SeerEmbedFields,{fields:[["Run",embedText(data.runId)],["Issue",shortId3??embedText(data.id)]],width:width-CARD_CHROME},void 0,!1,void 0,this),jsxDEV22("text",{fg:theme.muted,children:shortId3?` Open ${shortId3} to follow this run.`:" Open the issue to follow this run."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function AgentWriteApprovalEmbed({data,width}){let theme=useTheme(),status=embedText(data.status)??"pending",scopes=embedTexts(data.requiredScopes),tone=status==="rejected"?"danger":status==="approved"?"normal":"warning";return jsxDEV22("box",{style:{flexDirection:"column",width,border:!0,borderColor:tone==="danger"?theme.danger:tone==="warning"?theme.warning:theme.border,paddingLeft:1,flexShrink:0},children:[jsxDEV22("text",{fg:status==="approved"?theme.success:status==="rejected"?theme.danger:theme.warning,attributes:BOLD,children:status==="pending"?"Allow Seer to make changes?":`Access ${status}`},void 0,!1,void 0,this),scopes.map((scope)=>jsxDEV22("text",{fg:theme.muted,children:` ${scope}`},scope,!1,void 0,this)),status==="pending"?jsxDEV22("text",{fg:theme.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function TraceEmbed({data,width}){let traceId=embedText(data.traceId);return jsxDEV22(SeerEmbedCard,{label:"Trace",title:traceId,width,children:jsxDEV22(SeerEmbedFields,{fields:[["Span",embedText(data.spanId)],["Timestamp",dateTimeText(embedText(data.timestamp))]],width:width-CARD_CHROME},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ProfileEmbed({data,width}){let profileId=embedText(data.profileId);return jsxDEV22(SeerEmbedCard,{label:"Profile",title:profileId,width,children:jsxDEV22(SeerEmbedFields,{fields:[["Project",embedText(data.projectSlug)]],width:width-CARD_CHROME},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function AlertEmbed({data,width}){let kind=embedText(data.kind);return jsxDEV22(SeerEmbedCard,{label:"Alert",title:embedText(data.name)??embedText(data.id),subtitle:kind?`${kind} alert`:void 0,width,children:jsxDEV22(SeerEmbedFields,{fields:[["Id",embedText(data.id)]],width:width-CARD_CHROME},void 0,!1,void 0,this)},void 0,!1,void 0,this)}var loadDashboard=(client2,{org,id,signal})=>getDashboard(client2,{org,id,signal});function DashboardEmbed({data,width,client:client2,org}){let theme=useTheme(),id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadDashboard}),dashboard=valueOf(status),widgets=dashboard?.widgets??[];return jsxDEV22(SeerEmbedCard,{label:"Dashboard",title:dashboard?.title??embedText(data.title)??id,subtitle:dashboard?`${widgets.length} widgets`:void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"dashboard",empty:Boolean(dashboard)&&!widgets[0]},void 0,!1,void 0,this),widgets.slice(0,8).map((widget,index)=>jsxDEV22("text",{fg:theme.text,children:` ${widget.title}`},`${widget.id??index}`,!1,void 0,this)),widgets.length>8?jsxDEV22("text",{fg:theme.subText,children:` \u2026and ${widgets.length-8} more`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var loadDetector=(client2,{org,id,signal})=>fetchDetector(client2,{org,detectorId:id,signal});function MonitorEmbed({data,width,client:client2,org}){let id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadDetector}),detector=valueOf(status);return jsxDEV22(SeerEmbedCard,{label:"Monitor",title:detector?.name??embedText(data.name)??id,subtitle:detector?`${detector.type}${detector.enabled?"":" \xB7 disabled"}`:void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"monitor"},void 0,!1,void 0,this),detector?jsxDEV22(SeerEmbedFields,{fields:[["Owner",detector.owner?.name??void 0],["Last triggered",detector.lastTriggered?relativeTime(detector.lastTriggered):void 0],["Last issue",detector.latestGroup?.shortId??void 0]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function ReleaseEmbed({data,width,client:client2,org}){let version=embedText(data.version)??"",projectId=embedText(data.projectId),state=useReleases(version?client2:null,{org,query:version,statsPeriod:DEFAULT_RELEASE_PERIOD,project:projectId?[projectId]:void 0}),releases=valueOf(state.releases)??[],release=releases.find((entry)=>entry.version===version)??releases[0];return jsxDEV22(SeerEmbedCard,{label:"Release",title:release?.shortVersion??version,subtitle:release?dateTimeText(release.dateReleased??release.dateCreated):void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status:state.releases,noun:"release",empty:state.releases.state==="ready"&&!release},void 0,!1,void 0,this),release?jsxDEV22(SeerEmbedFields,{fields:[["Package",release.package],["Commits",String(release.commitCount)],["Authors",String(release.authorCount)],["Projects",release.projects.map((project)=>project.slug).join(", ")||void 0],["Last deploy",release.lastDeploy?.environment]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var loadReplay=(client2,{org,id,signal})=>fetchReplay(client2,{org,replayId:id,signal});function ReplayEmbed({data,width,client:client2,org}){let id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadReplay}),replay=valueOf(status),eventTimestamp=embedText(data.eventTimestamp);return jsxDEV22(SeerEmbedCard,{label:"Replay",title:replay?.user.displayName??(id?shortReplayId(id):void 0),subtitle:replay?formatReplayDuration(replay.durationSec):void 0,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"replay"},void 0,!1,void 0,this),replay?jsxDEV22(SeerEmbedFields,{fields:[["Started",dateTimeText(replay.startedAt)],["Browser",formatAgent(replay.browser)],["OS",formatAgent(replay.os)],["Errors",replay.countErrors===void 0?void 0:String(replay.countErrors)],["Rage clicks",replay.countRageClicks===void 0?void 0:String(replay.countRageClicks)],["Around",eventTimestamp?dateTimeText(eventTimestamp):void 0]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function savedQuerySource(dataset){return dataset==="errors"||dataset==="transactions"||dataset==="discover"?"discover":"explore"}var loadSavedQuery=(client2,{org,id,signal})=>{let separator=id.indexOf(":");return fetchSavedQuery(client2,{org,source:id.slice(0,separator),queryId:id.slice(separator+1),signal})};function SavedQueryEmbed({data,width,client:client2,org}){let queryId=embedText(data.id)??"",dataset=embedText(data.dataset),id=queryId?`${savedQuerySource(dataset)}:${queryId}`:"",status=useDirectResource(id?client2:null,{org,id,load:loadSavedQuery}),query=valueOf(status);return jsxDEV22(SeerEmbedCard,{label:"Saved query",title:query?.name??embedText(data.name)??queryId,subtitle:query?.datasetLabel??dataset,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"saved query"},void 0,!1,void 0,this),query?jsxDEV22(SeerEmbedFields,{fields:[["Filter",query.query||"\u2014"],["Columns",query.fields.join(", ")||void 0],["Sort",query.sort],["Period",query.statsPeriod]],width:width-CARD_CHROME},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}var loadSavedView=(client2,{org,id,signal})=>fetchGroupSearchView(client2,{org,viewId:id,signal});function SavedIssueViewEmbed({data,width,client:client2,org}){let id=embedText(data.id)??"",status=useDirectResource(id?client2:null,{org,id,load:loadSavedView}),view=valueOf(status);return jsxDEV22(SeerEmbedCard,{label:"Issue view",title:view?.name??embedText(data.name)??id,subtitle:view?.query,width,children:[jsxDEV22(SeerEmbedStatus,{status,noun:"issue view"},void 0,!1,void 0,this),view?jsxDEV22(SeerQueryEmbed,{name:"issuesQuery",data:{query:view.query,sort:view.querySort,statsPeriod:view.timeFilters.period,projects:view.projects.filter((project)=>project>0).map(String),environments:view.environments},width:width-CARD_CHROME,client:client2,org,bare:!0},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useEffect as useEffect15,useState as useState15}from"h:0__";import{addDefaultParsers}from"h:3__________";var highlights_default="./assets/highlights-9wx8m64k.scm";var tree_sitter_go_default="./assets/tree-sitter-go-dve313fn.wasm";var highlights_default2="./assets/highlights-bds7v5h1.scm";var tree_sitter_php_only_default="./assets/tree-sitter-php-only-jk6j4gjt.wasm";var highlights_default3="./assets/highlights-k2cbtg72.scm";var tree_sitter_python_default="./assets/tree-sitter-python-d56ewc8c.wasm";var highlights_default4="./assets/highlights-3ybh5bp2.scm";var tree_sitter_ruby_default="./assets/tree-sitter-ruby-kmdgpnz0.wasm";function registerSyntaxParsers(){addDefaultParsers([{filetype:"python",wasm:tree_sitter_python_default,queries:{highlights:[highlights_default3]}},{filetype:"ruby",wasm:tree_sitter_ruby_default,queries:{highlights:[highlights_default4]}},{filetype:"php",wasm:tree_sitter_php_only_default,queries:{highlights:[highlights_default2]}},{filetype:"go",wasm:tree_sitter_go_default,queries:{highlights:[highlights_default]}}])}registerSyntaxParsers();function useSyntaxStyle(){let theme=useTheme(),[style,setStyle]=useState15();return useEffect15(()=>{let cancelled=!1;return setStyle(void 0),getSyntaxStyle(theme).then((resolved2)=>{if(!cancelled)setStyle(resolved2)}).catch(()=>{if(!cancelled)setStyle(void 0)}),()=>{cancelled=!0}},[theme]),style}import{jsxDEV as jsxDEV23}from"h:6___________________________";var EMBED_PATTERN=/\{%\s*([A-Za-z][\w]*)([^%]*?)\s*(?:\/%\}|%\}([\s\S]*?)\{%\s*\/\1\s*%\})/g;function splitSeerMarkdown(content,embedsEnabled,structuredContent=null){let segments=[],markdown="",cursor=0,flush=()=>{if(markdown)segments.push({kind:"markdown",content:markdown});markdown=""};for(let match of content.matchAll(EMBED_PATTERN)){let index=match.index??cursor;markdown+=content.slice(cursor,index);let raw=match[0],name=match[1],attributes=parseEmbedAttributes(match[2]),bodyData=parseEmbedData(match[3]),structuredData=name?objectValue(structuredContent?.[name]):null,data=name&&STRUCTURED_SEER_EMBEDS.has(name)?structuredData:bodyData??(Object.keys(attributes).length>0?attributes:structuredData);cursor=index+raw.length;let linePrefix=content.slice(content.lastIndexOf(`
12
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.
13
+ `,cursor),lineSuffix=content.slice(cursor,nextBreak===-1?content.length:nextBreak).trim(),level=name?seerEmbedLevel(name,linePrefix===""&&lineSuffix===""):null;if(!name||!level){if(name)reportUnknownSeerEmbed(name,"block");continue}let embedData=data??{};if(!embedsEnabled||level==="inline"){markdown+=inlineSeerEmbed(name,embedData);continue}flush(),segments.push({kind:"embed",name,data:embedData})}return markdown+=content.slice(cursor),flush(),segments}function parseEmbedAttributes(raw){let attributes={};if(!raw)return attributes;let pattern=/([A-Za-z_][\w-]*)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s]+))/g;for(let match of raw.matchAll(pattern)){let key=match[1],value=match[2]??match[3]??match[4];if(key&&value!==void 0)attributes[key]=value}return attributes}function parseEmbedData(raw){if(!raw||raw.length>1e5)return null;try{let parsed=JSON.parse(raw.trim());return parsed&&typeof parsed==="object"&&!Array.isArray(parsed)?parsed:null}catch{return null}}function objectValue(value){return value&&typeof value==="object"&&!Array.isArray(value)?value:null}function SeerMarkdown({content,width,client:client2=null,org="",streaming=!1,embedsEnabled=!1,structuredContent=null}){let theme=useTheme(),syntaxStyle=useSyntaxStyle(),segments=splitSeerMarkdown(content,embedsEnabled,structuredContent);return jsxDEV23("box",{style:{flexDirection:"column",width},children:segments.map((segment,index)=>{if(segment.kind==="embed"&&segment.name&&segment.data)return jsxDEV23(SeerBlockEmbed,{name:segment.name,data:segment.data,width:Math.max(8,width-2),client:client2,org},`embed-${index}`,!1,void 0,this);let markdown=segment.content??"";if(!syntaxStyle)return jsxDEV23(Fragment9,{children:wrapText(markdown,Math.max(1,width)).map((line,lineIndex)=>jsxDEV23("text",{fg:theme.text,children:line},lineIndex,!1,void 0,this))},`markdown-${index}`,!1,void 0,this);return jsxDEV23("markdown",{content:markdown,syntaxStyle,streaming:!0,fg:theme.text,conceal:!0,internalBlockMode:"top-level",tableOptions:{style:"columns",widthMode:"full",wrapMode:"word",borderColor:theme.border},style:{width}},`markdown-${index}-${streaming?"stream":"static"}`,!1,void 0,this)})},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV24}from"h:6___________________________";var COMPOSER_HEIGHT=3;function SeerExplorer({chat,client:client2,org,width,height,focused,value,onInput,inputFocused,onInputFocus,onInputBlur,slashCommands,slashSelected,showHistory,historySelected,pendingState,placeholderOverride}){let theme=useTheme(),inner=Math.max(10,width-2),slashMenuHeight=slashCommands.length>0?slashCommands.length+2:0,transcriptHeight=Math.max(1,height-1-COMPOSER_HEIGHT-slashMenuHeight),latestTodos=useMemo7(()=>latestSeerTodos(chat.blocks),[chat.blocks]),hasAgentApprovalEmbed=useMemo7(()=>chat.capabilities.embeds&&chat.blocks.some((block)=>(block.tool_results??[]).some((result)=>result?.structuredContent?.agentWriteApproval!==void 0||result?.content.includes("agentWriteApproval"))),[chat.blocks,chat.capabilities.embeds]),inputRef=useRef10(null),inputRefCallback=useCallback12((node)=>{let prev=inputRef.current;if(prev)prev.removeAllListeners(RenderableEvents.FOCUSED),prev.removeAllListeners(RenderableEvents.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents.FOCUSED,()=>onInputFocus?.()),node.on(RenderableEvents.BLURRED,()=>onInputBlur?.())},[onInputFocus,onInputBlur]),placeholder=placeholderOverride??(chat.timedOut?"Response timed out. Please try again.":chat.interrupting?"Interrupted. What should Seer do instead?":chat.pendingInput?.input_type==="reauth_monitoring_provider"?"Reconnect your monitoring provider in Sentry to continue.":chat.pendingInput?"Respond using the controls above":"Ask Seer a question, or press / for commands.");return jsxDEV24("box",{style:{flexDirection:"column",width,height},children:[jsxDEV24("box",{style:{flexDirection:"row",width,height:1,flexShrink:0,paddingLeft:1,paddingRight:1,backgroundColor:theme.panelAlt},children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:["Seer Agent"," "]},void 0,!0,void 0,this),jsxDEV24("text",{fg:theme.accent,children:"\u03B2"},void 0,!1,void 0,this),jsxDEV24("box",{style:{flexGrow:1}},void 0,!1,void 0,this),chat.capabilities.codeMode?jsxDEV24("text",{fg:theme.muted,children:`${codeModeLabel(chat.codeMode)} \xB7 `},void 0,!1,void 0,this):null,chat.codeChanges.length>0?jsxDEV24("text",{fg:theme.muted,children:`+${chat.codeChanges.reduce((sum,change)=>sum+change.added,0)} -${chat.codeChanges.reduce((sum,change)=>sum+change.removed,0)} \xB7 `},void 0,!1,void 0,this):null,jsxDEV24("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),showHistory?jsxDEV24(SeerHistory,{chat,selected:historySelected,width:inner,height:transcriptHeight},void 0,!1,void 0,this):jsxDEV24("scrollbox",{focused:focused&&!inputFocused,stickyScroll:!0,stickyStart:"bottom",style:{flexGrow:1,width,height:transcriptHeight},children:[chat.blocks.length===0?jsxDEV24(SeerEmptyState,{width:inner},void 0,!1,void 0,this):chat.blocks.map((block)=>jsxDEV24(SeerBlockView,{block,width:inner,chat,client:client2,org,showTodos:latestTodos?.blockId===block.id?latestTodos.todos:[]},block.id,!1,void 0,this)),chat.codeChanges.length>0?jsxDEV24(CodeChangesCard,{chat,width:inner},void 0,!1,void 0,this):null,chat.pendingInput&&(chat.pendingInput.input_type!=="reauth_monitoring_provider"||chat.capabilities.infraTelemetry)&&(chat.pendingInput.input_type!=="agent_write_approval"||!hasAgentApprovalEmbed)?jsxDEV24(PendingInputCard,{pending:chat.pendingInput,state:pendingState,width:inner},void 0,!1,void 0,this):null,chat.error?jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[jsxDEV24("text",{fg:theme.danger,children:"Seer request failed"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:chat.error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,chat.timedOut?jsxDEV24("box",{style:{paddingLeft:1,paddingTop:1},children:jsxDEV24("text",{fg:theme.warning,children:"Seer stopped responding. Send another message to retry."},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),slashCommands.length>0?jsxDEV24(SlashMenu,{commands:slashCommands,selected:slashSelected,width},void 0,!1,void 0,this):null,jsxDEV24("box",{style:{flexDirection:"row",width,flexShrink:0,height:COMPOSER_HEIGHT,border:!0,borderStyle:"rounded",borderColor:inputFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[chat.thinking?jsxDEV24("text",{fg:theme.accent,children:[jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this)," "]},void 0,!0,void 0,this):jsxDEV24("text",{fg:theme.subText,children:"\u203A "},void 0,!1,void 0,this),jsxDEV24("input",{ref:inputRefCallback,value,placeholder,focused:inputFocused,onInput,style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:chat.timedOut||chat.interrupting||chat.pendingInput?theme.warning:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function CodeChangesCard({chat,width}){let theme=useTheme(),needsPush=chat.codeChanges.some((change)=>change.status==="needs_push"||change.status==="error");return jsxDEV24("box",{style:{flexDirection:"column",width:Math.max(8,width-2),marginTop:1,border:!0,borderColor:theme.border,paddingLeft:1},children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:"Code changes"},void 0,!1,void 0,this),chat.codeChanges.map((change)=>jsxDEV24("box",{style:{flexDirection:"column"},children:[jsxDEV24("text",{fg:theme.accent,attributes:BOLD,children:`${change.repoName} +${change.added} -${change.removed}`},void 0,!1,void 0,this),change.files.map((file)=>jsxDEV24("text",{fg:theme.muted,children:` +${file.added} -${file.removed} ${file.path}`},file.path,!1,void 0,this)),jsxDEV24("text",{fg:change.status==="pushed"?theme.success:change.status==="error"?theme.danger:change.status==="creating"?theme.warning:theme.muted,children:change.status==="creating"?" Creating or updating PR\u2026":change.status==="error"?" PR update failed \u2014 retry available":change.status==="pushed"?` Pushed${change.prNumber?` \xB7 PR #${change.prNumber}`:""}${change.prUrl?` \xB7 ${change.prUrl}`:""}`:` ${change.prNumber?`PR #${change.prNumber} has unpushed changes`:"No PR yet"}`},void 0,!1,void 0,this)]},change.repoName,!0,void 0,this)),needsPush&&!chat.readOnly?jsxDEV24("text",{fg:theme.accent,children:`[${formatKey(primaryKey("sentry.seer.pushChanges"))}] create/update PRs \xB7 /create-pr`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function SlashMenu({commands,selected,width}){let theme=useTheme();return jsxDEV24("box",{style:{flexDirection:"column",width,flexShrink:0,border:!0,borderColor:theme.border,backgroundColor:theme.panel,paddingLeft:1},children:commands.map((command,index)=>jsxDEV24("box",{style:{flexDirection:"row",width:Math.max(1,width-4),backgroundColor:index===selected?theme.selected:void 0},children:[jsxDEV24("text",{fg:index===selected?theme.accent:theme.text,attributes:BOLD,children:command.title.padEnd(19)},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:fitText(command.description,Math.max(1,width-25))},void 0,!1,void 0,this)]},command.id,!0,void 0,this))},void 0,!1,void 0,this)}function SeerHistory({chat,selected,width,height}){let theme=useTheme(),runs=valueOf(chat.runs)??[],error=errorOf(chat.runs);return jsxDEV24("scrollbox",{focused:!0,style:{flexGrow:1,width:width+2,height},children:jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:"Recent conversations"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"j/k select \xB7 enter open \xB7 esc close"},void 0,!1,void 0,this),isInitialLoad(chat.runs)?jsxDEV24("text",{fg:theme.muted,children:"Loading conversations\u2026"},void 0,!1,void 0,this):null,error?jsxDEV24("text",{fg:theme.danger,children:error.message},void 0,!1,void 0,this):null,!isInitialLoad(chat.runs)&&!error&&runs.length===0?jsxDEV24("text",{fg:theme.muted,children:"No recent conversations."},void 0,!1,void 0,this):null,runs.map((run,index)=>jsxDEV24("box",{style:{flexDirection:"row",width,backgroundColor:index===selected?theme.selected:void 0},children:[jsxDEV24("text",{fg:index===selected?theme.accent:theme.muted,children:index===selected?"\u276F ":" "},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.text,children:fitText(run.title??"Untitled chat",Math.max(4,width-10))},void 0,!1,void 0,this),jsxDEV24("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:timeAgo(run.lastTriggeredAt)},void 0,!1,void 0,this)]},run.id,!0,void 0,this))]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function SeerBlockView({block,width,chat,client:client2,org,showTodos}){if(block.message.role==="user")return jsxDEV24(UserBlock,{block,width},void 0,!1,void 0,this);if(block.message.role==="tool_use")return jsxDEV24(ToolUseBlock,{block,width,chat,client:client2,org,showTodos},void 0,!1,void 0,this);return jsxDEV24(AssistantBlock,{block,width,chat,client:client2,org},void 0,!1,void 0,this)}function UserBlock({block,width}){let theme=useTheme(),lines=wrapText(block.message.content??"",Math.max(1,width-3));return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:lines.map((line,index)=>jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:index===0?`\u203A ${line}`:` ${line}`},index,!1,void 0,this))},void 0,!1,void 0,this)}function AssistantBlock({block,width,chat,client:client2,org}){let theme=useTheme(),content=block.message.content??"";if(block.loading&&content.trim()==="")return jsxDEV24("text",{fg:theme.muted,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this)," Thinking\u2026"]},void 0,!0,void 0,this);if(block.loading&&block.id.startsWith("optimistic-assistant-"))return jsxDEV24("box",{style:{paddingLeft:1,paddingTop:1,flexDirection:"row"},children:jsxDEV24("text",{fg:theme.muted,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this),` ${content}`]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(!content.trim())return null;return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:3,paddingTop:1,width},children:jsxDEV24(SeerMarkdown,{content,width:Math.max(1,width-3),streaming:block.loading&&chat.capabilities.streaming,embedsEnabled:chat.capabilities.embeds,client:client2,org},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function ToolUseBlock({block,width,chat,client:client2,org,showTodos}){let theme=useTheme(),status=getBlockStatus(block),blockColor=status==="failure"?theme.danger:status==="mixed"||status==="pending"?theme.warning:theme.muted,classicLines=describeToolCalls(block),calls=block.message.tool_calls??[];return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,width},children:[chat.showThinking&&block.message.thinking_content?.trim()?jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:2,width:Math.max(1,width-2)},children:[jsxDEV24("text",{fg:theme.muted,attributes:BOLD,children:"Thinking"},void 0,!1,void 0,this),jsxDEV24(SeerMarkdown,{content:block.message.thinking_content,width:Math.max(1,width-4),embedsEnabled:chat.capabilities.embeds,client:client2,org},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,calls.flatMap((tool,index)=>{let result=block.tool_results?.find((entry)=>entry?.tool_call_id===tool.id),isCodeMode=tool.function==="sentry_api_execute"||tool.function==="sentry_api_search",callRecords=result?.structuredContent?.calls?.length?result.structuredContent.calls:calls.length===1?block.live_calls??[]:[],rows=visibleCallRecords(callRecords).flatMap((record2)=>{let label=describeCallRecord(record2);return label?[{record:record2,label}]:[]}),links=result?.structuredContent?.links??[],artifacts=result?.structuredContent?.artifacts??[],structuredMarkdown=result?.structuredContent&&result.content.trimStart().startsWith("{%")?result.content:null;return[...rows.length?rows.map(({record:record2,label})=>jsxDEV24(CodeModeCallRow,{record:record2,label,settled:Boolean(result)},`${tool.id??index}-${record2.id}`,!1,void 0,this)):!isCodeMode?[status==="loading"?jsxDEV24("text",{fg:blockColor,attributes:ITALIC,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this),` ${classicLines[index]??tool.function}`]},`${tool.id??index}-classic`,!0,void 0,this):jsxDEV24("text",{fg:blockColor,attributes:ITALIC,children:` ${SEER_STATUS_GLYPH[status]} ${classicLines[index]??tool.function}`},`${tool.id??index}-classic`,!1,void 0,this)]:[],...links.filter((link)=>link.params?.is_error!==!0).map((link,linkIndex)=>jsxDEV24("text",{fg:theme.accent,children:` \u2197 ${toolLinkLabel(link.kind,link.params)}`},`${tool.id??index}-link-${linkIndex}`,!1,void 0,this)),...artifacts.map((artifact,artifactIndex)=>jsxDEV24("text",{fg:theme.accent,children:` \u25C7 ${artifact.reason||artifact.key}`},`${tool.id??index}-artifact-${artifactIndex}`,!1,void 0,this)),...structuredMarkdown?[jsxDEV24(SeerMarkdown,{content:structuredMarkdown,width:Math.max(1,width-3),embedsEnabled:chat.capabilities.embeds,structuredContent:result?.structuredContent??null,client:client2,org},`${tool.id??index}-markdown`,!1,void 0,this)]:[]]}),showTodos.map((todo,index)=>jsxDEV24("text",{fg:todo.status==="completed"?theme.success:theme.muted,attributes:todo.status==="completed"?DIM:NONE,children:` ${todo.status==="completed"?"[x]":todo.status==="in_progress"?"[~]":"[ ]"} ${todo.content}`},`todo-${index}`,!1,void 0,this))]},void 0,!0,void 0,this)}function CodeModeCallRow({record:record2,label,settled}){let theme=useTheme(),status=getCallRecordStatus(record2,settled),color=status==="failure"?theme.danger:theme.muted,details=describeCallRecordDetail(record2),suffix=record2.error?` \u2014 ${record2.error}`:record2.status!==void 0&&record2.status>=400?` \u2014 HTTP ${record2.status}`:"";return jsxDEV24("box",{style:{flexDirection:"column"},children:[status==="loading"?jsxDEV24("text",{fg:color,attributes:ITALIC,children:[" ",jsxDEV24(SpinnerGlyph,{},void 0,!1,void 0,this),` ${label}${suffix}`]},void 0,!0,void 0,this):jsxDEV24("text",{fg:color,attributes:ITALIC,children:` ${status==="failure"?"\u2717":"\u2713"} ${label}${suffix}`},void 0,!1,void 0,this),details.map((detail,index)=>jsxDEV24("text",{fg:theme.subText,children:` ${detail}`},index,!1,void 0,this))]},void 0,!0,void 0,this)}function toolLinkLabel(kind,params){let summary=params?.summary;if(typeof summary==="string"&&summary.trim())return summary;return`View ${kind.replace(/^get_/,"").replace(/_/g," ")}`}function PendingInputCard({pending,state,width}){let theme=useTheme(),cardStyle={flexDirection:"column",width:Math.max(8,width-2),border:!0,borderColor:theme.warning,paddingLeft:1,marginTop:1};if(pending.input_type==="file_change_approval"){let patches=Array.isArray(pending.data.patches)?pending.data.patches:[],patch=patches[state.fileApprovalIndex],record2=patch&&typeof patch==="object"?patch:{},body=record2.patch&&typeof record2.patch==="object"?record2.patch:record2,path=String(body.path??body.file_path??"proposed file change"),diff=String(body.diff??record2.diff??"");return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.warning,attributes:BOLD,children:`Make this change? (${state.fileApprovalIndex+1} of ${patches.length})`},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.text,children:path},void 0,!1,void 0,this),wrapText(diff,Math.max(1,width-5)).slice(0,10).map((line,index)=>jsxDEV24("text",{fg:line.startsWith("+")?theme.success:line.startsWith("-")?theme.danger:theme.muted,children:line},index,!1,void 0,this)),jsxDEV24("text",{fg:theme.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(pending.input_type==="agent_write_approval"){let scopes=Array.isArray(pending.data.required_scopes)?pending.data.required_scopes.filter((scope)=>typeof scope==="string"):[];return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.warning,attributes:BOLD,children:"Allow Seer to make changes?"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"Requested scopes:"},void 0,!1,void 0,this),scopes.map((scope)=>jsxDEV24("text",{fg:theme.text,children:` ${scope}`},scope,!1,void 0,this)),jsxDEV24("text",{fg:theme.accent,children:"[y] approve \xB7 [x] reject"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}if(pending.input_type==="ask_user_question"){let raw=(Array.isArray(pending.data.questions)?pending.data.questions:[])[state.questionIndex],question=raw&&typeof raw==="object"?raw:{},options=Array.isArray(question.options)?question.options:[];return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:String(question.question??"Seer has a question")},void 0,!1,void 0,this),options.map((option,index)=>{let item=option&&typeof option==="object"?option:{};return jsxDEV24("box",{style:{flexDirection:"column",backgroundColor:index===state.questionSelected?theme.selected:void 0},children:[jsxDEV24("text",{fg:index===state.questionSelected?theme.accent:theme.text,children:`${index+1}. ${String(item.label??"Option")}`},void 0,!1,void 0,this),item.description?jsxDEV24("text",{fg:theme.muted,children:` ${String(item.description)}`},void 0,!1,void 0,this):null]},index,!0,void 0,this)}),jsxDEV24("text",{fg:state.questionSelected===options.length?theme.accent:theme.muted,children:"o. Other \u2014 type your own answer"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"j/k select \xB7 enter confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return jsxDEV24("box",{style:cardStyle,children:[jsxDEV24("text",{fg:theme.warning,attributes:BOLD,children:"Reconnect your monitoring provider in Sentry"},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:"This run will resume after the connection is restored."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var SEER_MARK=[" \u2584\u2584\u2584 "," \u2584\u2588\u2588\u2588\u2588\u2588\u2584 ","\u2588\u2588\u2588 \u25CF \u2588\u2588\u2588"," \u2580\u2588\u2588\u2588\u2588\u2588\u2580 "," \u2580\u2580\u2580\u2580\u2580 "];function SeerEmptyState({width}){let theme=useTheme();return jsxDEV24("box",{style:{flexDirection:"column",paddingLeft:1,paddingTop:1},children:[SEER_MARK.map((line,index)=>jsxDEV24("text",{fg:theme.accent,children:` ${line}`},index,!1,void 0,this)),jsxDEV24("text",{fg:theme.text,attributes:BOLD,children:`
14
+ Ask Seer anything about your application.`},void 0,!1,void 0,this),jsxDEV24("text",{fg:theme.muted,children:" Try one of these:"},void 0,!1,void 0,this),SEER_SUGGESTED_QUESTIONS.map((question,index)=>jsxDEV24("text",{fg:theme.accent,children:` ${index+1}. ${wrapText(question,Math.max(1,width-6))[0]??question}`},question,!1,void 0,this)),jsxDEV24("text",{fg:theme.subText,children:`
15
+ ${formatKey(primaryKey("sentry.seer.compose"))} to type, ${formatKey(primaryKey("sentry.nav.open"))} to send, ${formatKey(primaryKey("sentry.seer.newChat"))} new, ${formatKey(primaryKey("sentry.seer.history"))} history`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function initialSeerScreenState(){return{mode:"conversation",inputFocused:!0,slashSelected:0}}function pendingState(pending){switch(pending.input_type){case"file_change_approval":return{mode:"fileApproval",pendingId:pending.id,index:0,decisions:[]};case"ask_user_question":return{mode:"question",pendingId:pending.id,index:0,answers:[],selected:0,inputFocused:!1};case"agent_write_approval":case"reauth_monitoring_provider":return{mode:"blockingInput",pendingId:pending.id}}}function seerScreenReducer(state,action){switch(action.type){case"pendingChanged":if(action.pending)return pendingState(action.pending);return"pendingId"in state?{mode:"conversation",inputFocused:!1,slashSelected:0}:state;case"inputChanged":return state.mode==="conversation"&&state.slashSelected!==0?{...state,slashSelected:0}:state;case"focusInput":if(state.mode==="conversation")return{...state,inputFocused:!0};if(state.mode==="question"&&action.allowQuestion)return{...state,inputFocused:!0};return state;case"blurInput":if(state.mode==="conversation"||state.mode==="question")return{...state,inputFocused:!1};return state;case"moveSlashSelection":if(state.mode!=="conversation"||action.count===0)return state;return{...state,slashSelected:(state.slashSelected+action.direction+action.count)%action.count};case"openHistory":return state.mode==="conversation"?{mode:"history",selected:0}:state;case"closeHistory":return state.mode==="history"?{mode:"conversation",inputFocused:!0,slashSelected:0}:state;case"startNewChat":return{mode:"conversation",inputFocused:!0,slashSelected:0};case"moveHistorySelection":{if(state.mode!=="history")return state;let selected=Math.max(0,Math.min(state.selected+action.direction,Math.max(0,action.count-1)));return selected===state.selected?state:{...state,selected}}case"moveQuestionSelection":if(state.mode!=="question")return state;return{...state,selected:(state.selected+action.direction+action.optionCount+1)%(action.optionCount+1),inputFocused:!1};case"selectQuestionOption":return state.mode==="question"?{...state,selected:action.index,inputFocused:!1}:state;case"selectOtherAnswer":return state.mode==="question"?{...state,selected:action.optionCount,inputFocused:!0}:state;case"commitQuestionAnswer":if(state.mode!=="question")return state;return action.final?{...state,inputFocused:!1}:{...state,index:state.index+1,answers:[...state.answers,action.answer],selected:0,inputFocused:!1};case"recordFileDecision":if(state.mode!=="fileApproval"||action.final)return state;return{...state,index:state.index+1,decisions:[...state.decisions,action.approved]}}}import{jsxDEV as jsxDEV25}from"h:6___________________________";function pendingQuestions(data){let raw=data?.questions;if(!Array.isArray(raw))return[];return raw.flatMap((entry)=>{if(!entry||typeof entry!=="object")return[];let record2=entry;if(typeof record2.question!=="string"||!Array.isArray(record2.options))return[];let options=record2.options.flatMap((option)=>{if(!option||typeof option!=="object")return[];let item=option;return typeof item.label==="string"?[{label:item.label,description:String(item.description??"")}]:[]});return[{question:record2.question,options}]})}function SeerScreen({client:client2,org,state,width,height,focused,registerActions,navigateToScreen,notify}){let chat=useContext2(SeerChatContext),value=state.searchQuery,setValue=useCallback13((next)=>state.dispatch({type:"setSearchQuery",payload:next}),[state.dispatch]);return jsxDEV25(SeerConversation,{chat,client:client2,org,width,height,focused,value,setValue,registerActions,navigateToScreen,notify},void 0,!1,void 0,this)}function SeerConversation({chat,client:client2,org,width,height,focused,value,setValue,registerActions,navigateToScreen,notify}){let theme=useTheme(),[interaction,dispatch]=useReducer2(seerScreenReducer,void 0,initialSeerScreenState),pendingId=chat?.pendingInput?.id,pendingType=chat?.pendingInput?.input_type,showHistory=interaction.mode==="history",historySelected=interaction.mode==="history"?interaction.selected:0,slashSelected=interaction.mode==="conversation"?interaction.slashSelected:0,fileApprovalIndex=interaction.mode==="fileApproval"?interaction.index:0,fileApprovalDecisions=interaction.mode==="fileApproval"?interaction.decisions:[],questionIndex=interaction.mode==="question"?interaction.index:0,questionAnswers=interaction.mode==="question"?interaction.answers:[],questionSelected=interaction.mode==="question"?interaction.selected:0,commands=useMemo8(()=>chat?seerSlashCommands(chat.capabilities,{hasRun:chat.started,hasCodeChanges:chat.codeChanges.length>0}):[],[chat]),visibleCommands=useMemo8(()=>{if(!value.startsWith("/")||value.includes(" "))return[];let query=value.toLowerCase();return commands.filter((command)=>command.title.startsWith(query))},[commands,value]);useEffect16(()=>dispatch({type:"inputChanged"}),[value]),useEffect16(()=>{dispatch({type:"pendingChanged",pending:pendingId&&pendingType?{id:pendingId,input_type:pendingType}:null})},[pendingId,pendingType]);let openHistory=useCallback13(()=>{if(!chat)return;chat.loadRuns(),dispatch({type:"openHistory"})},[chat]),pushChanges=useCallback13(()=>{if(!chat||chat.readOnly||chat.thinking)return;let pending=chat.codeChanges.filter((change)=>change.status==="needs_push"||change.status==="error");for(let change of pending)chat.createPR(change.repoName);if(pending.length>0)notify({kind:"info",text:`${pending.some((change)=>change.prNumber)?"Updating":"Creating"} ${pending.length===1?"pull request":"pull requests"}\u2026`})},[chat,notify]),executeCommand=useCallback13((command)=>{if(!chat)return;switch(setValue(""),command.id){case"new":chat.reset(),dispatch({type:"startNewChat"});return;case"history":openHistory();return;case"create-pr":pushChanges();return;case"conversations":if(chat.runId!==null)navigateToScreen("explore.conversations",{query:`gen_ai.conversation.id:${JSON.stringify(String(chat.runId))}`});return;case"code-mode-off":case"code-mode-on":case"code-mode-only":{let mode=command.id.replace("code-mode-","");chat.setCodeMode(mode),notify({kind:"info",text:`Seer ${command.title.slice(1)}`});return}case"bash-mode-off":case"bash-mode-on":{let enabled=command.id.endsWith("-on");chat.setBashMode(enabled),notify({kind:"info",text:`Seer bash mode ${enabled?"on":"off"}`});return}case"thinking-off":case"thinking-on":chat.setShowThinking(command.id.endsWith("-on"));return}},[chat,navigateToScreen,notify,openHistory,pushChanges,setValue]),questions=pendingQuestions(chat?.pendingInput?.data),currentQuestion=questions[questionIndex],otherSelected=Boolean(currentQuestion&&questionSelected===currentQuestion.options.length),commitQuestionAnswer=useCallback13((answer)=>{if(!chat?.pendingInput||!currentQuestion)return;let answers=[...questionAnswers,answer],final=questionIndex+1>=questions.length;if(dispatch({type:"commitQuestionAnswer",answer,final}),final){chat.respond(chat.pendingInput.id,{answers}),setValue("");return}setValue("")},[chat,currentQuestion,questionAnswers,questionIndex,questions.length,setValue]),submit=useCallback13(()=>{if(!chat)return!1;if(chat.pendingInput?.input_type==="ask_user_question"&&otherSelected){let answer=value.trim();if(answer)commitQuestionAnswer(answer);return!0}let command=visibleCommands[slashSelected]??commands.find((candidate)=>candidate.title===value.trim().toLowerCase());if(command)return executeCommand(command),!0;if(chat.thinking||chat.readOnly||chat.pendingInput||value.trim()==="")return!0;return chat.send(value),setValue(""),!0},[chat,commands,commitQuestionAnswer,executeCommand,otherSelected,setValue,slashSelected,value,visibleCommands]),respondToFileApproval=useCallback13((approved)=>{if(chat?.pendingInput?.input_type!=="file_change_approval")return;let patches=Array.isArray(chat.pendingInput.data.patches)?chat.pendingInput.data.patches:[],decisions=[...fileApprovalDecisions,approved],final=fileApprovalIndex+1>=patches.length;if(dispatch({type:"recordFileDecision",approved,final}),final)chat.respond(chat.pendingInput.id,{decisions})},[chat,fileApprovalDecisions,fileApprovalIndex]),handlePendingKey=useCallback13((key)=>{let pending=chat?.pendingInput;if(!pending)return!1;if(pending.input_type==="file_change_approval"){if(key.name.toLowerCase()==="y")respondToFileApproval(!0);else if(key.name.toLowerCase()==="x")respondToFileApproval(!1);else return!1;return!0}if(pending.input_type==="agent_write_approval"){if(key.name.toLowerCase()==="x")return chat.respond(pending.id,{decision:"reject"}),!0;if(key.name.toLowerCase()!=="y")return!1;let sessionId=pending.data.session_id,rawScopes=pending.data.required_scopes,scopes=Array.isArray(rawScopes)?rawScopes.filter((scope)=>typeof scope==="string"):[];if(typeof sessionId==="string")chat.approveWrite(pending.id,sessionId,scopes);return!0}if(pending.input_type!=="ask_user_question"||!currentQuestion)return!1;if(matchesCommand("sentry.nav.up",key)||key.name.toLowerCase()==="up")return dispatch({type:"moveQuestionSelection",direction:-1,optionCount:currentQuestion.options.length}),!0;if(matchesCommand("sentry.nav.down",key)||key.name.toLowerCase()==="down")return dispatch({type:"moveQuestionSelection",direction:1,optionCount:currentQuestion.options.length}),!0;if(key.name.toLowerCase()==="o")return dispatch({type:"selectOtherAnswer",optionCount:currentQuestion.options.length}),!0;let option=Number(key.name)-1;if(option>=0&&option<currentQuestion.options.length)return dispatch({type:"selectQuestionOption",index:option}),!0;if(matchesCommand("sentry.nav.open",key)&&!otherSelected){let selected=currentQuestion.options[questionSelected];if(selected)commitQuestionAnswer(selected.label);return!0}return!1},[chat,commitQuestionAnswer,currentQuestion,otherSelected,questionSelected,respondToFileApproval]),handleInputKey=useCallback13((key)=>{if(visibleCommands.length===0)return!1;let name=key.name.toLowerCase();if(name==="up")return dispatch({type:"moveSlashSelection",direction:-1,count:visibleCommands.length}),!0;if(name==="down")return dispatch({type:"moveSlashSelection",direction:1,count:visibleCommands.length}),!0;return!1},[visibleCommands.length]),handleKey=useCallback13((key)=>{if(!chat)return!1;if(chat.pendingInput&&handlePendingKey(key))return!0;if(showHistory){let runCount=chat.runs.state==="ready"?chat.runs.value.length:0;if(matchesCommand("sentry.nav.down",key))return dispatch({type:"moveHistorySelection",direction:1,count:runCount}),!0;if(matchesCommand("sentry.nav.up",key))return dispatch({type:"moveHistorySelection",direction:-1,count:runCount}),!0;if(matchesCommand("sentry.nav.open",key)&&chat.runs.state==="ready"){let selected=chat.runs.value[historySelected];if(selected)chat.switchRun(selected.id),dispatch({type:"closeHistory"});return!0}return!1}if(matchesCommand("sentry.seer.compose",key)||matchesCommand("sentry.nav.open",key))return dispatch({type:"focusInput",allowQuestion:otherSelected}),!0;if(matchesCommand("sentry.seer.newChat",key))return chat.reset(),setValue(""),dispatch({type:"startNewChat"}),!0;if(matchesCommand("sentry.seer.history",key))return openHistory(),!0;if(matchesCommand("sentry.seer.pushChanges",key)&&chat.codeChanges.length>0)return pushChanges(),!0;if(matchesCommand("sentry.seer.interrupt",key)){if(chat.thinking)chat.interrupt();return!0}if(chat.blocks.length===0&&!key.ctrl&&!key.meta){let question=SEER_SUGGESTED_QUESTIONS[Number(key.name)-1];if(question!==void 0)return chat.send(question),!0}return!1},[chat,handlePendingKey,historySelected,openHistory,pushChanges,setValue,showHistory]),back=useCallback13(()=>{if(!showHistory)return!1;return dispatch({type:"closeHistory"}),!0},[showHistory]),inputFocused=interaction.mode==="conversation"||interaction.mode==="question"?interaction.inputFocused:!1,composerFocused=focused&&inputFocused&&!showHistory&&!chat?.readOnly&&(!chat?.pendingInput||chat.pendingInput.input_type==="ask_user_question"&&otherSelected);if(useEffect16(()=>(registerActions({inputFocused:()=>composerFocused,submitInput:submit,blurInput:()=>dispatch({type:"blurInput"}),handleInputKey,handleKey,back}),()=>registerActions(null)),[back,composerFocused,handleInputKey,handleKey,registerActions,submit]),!chat)return jsxDEV25("text",{fg:theme.muted,children:"Seer is unavailable."},void 0,!1,void 0,this);if(!chat.capabilities.available)return jsxDEV25("text",{fg:theme.muted,children:"Seer Agent is not enabled for this organization."},void 0,!1,void 0,this);let placeholder=otherSelected?"Type your own answer\u2026":chat.readOnly?"This conversation is owned by another user and is read-only":void 0;return jsxDEV25(SeerExplorer,{chat,client:client2,org,width,height,focused,value,onInput:setValue,inputFocused:composerFocused,onInputFocus:()=>dispatch({type:"focusInput",allowQuestion:otherSelected}),onInputBlur:()=>dispatch({type:"blurInput"}),slashCommands:visibleCommands,slashSelected,showHistory,historySelected,pendingState:{fileApprovalIndex,questionIndex,questionSelected},placeholderOverride:placeholder},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV26}from"h:6___________________________";function issueAutofixPrompt(issue){return`Please try to root cause and propose a fix for issue ${issue.shortId}: ${issueTitle(issue)} (${issue.permalink})`}function IssueAutofixModal({issue,chat,client:client2,org,navigateToScreen,notify,onClose}){let terminal=useTerminalDimensions4(),[value,setValue]=useState16(""),actions=useRef11(null),sent=useRef11(!1),desiredWidth=Math.min(100,Math.max(40,terminal.width-8)),desiredHeight=Math.min(40,Math.max(18,terminal.height-6)),geometry=resolveModalGeometry({width:desiredWidth,height:desiredHeight,terminalWidth:terminal.width,terminalHeight:terminal.height}),registerActions=useCallback14((next)=>{actions.current=next},[]);return useEffect17(()=>{if(sent.current)return;sent.current=!0,chat.send(issueAutofixPrompt(issue))},[chat.send,issue]),useKeyboard4((key)=>{let current=actions.current;if(current?.inputFocused?.()){if(matchesCommand("sentry.nav.back",key)){current.blurInput?.(),consumeKey(key);return}if(matchesCommand("sentry.nav.open",key)){current.submitInput?.(),consumeKey(key);return}if(current.handleInputKey?.(key))consumeKey(key);return}if(matchesCommand("sentry.nav.back",key)){if(!current?.back?.())onClose();consumeKey(key);return}if(current?.handleKey?.(key)){consumeKey(key);return}consumeKey(key)}),jsxDEV26(ModalFrame,{title:` Autofix \xB7 ${issue.shortId} `,width:desiredWidth,height:desiredHeight,onClose,children:jsxDEV26(SeerConversation,{chat,client:client2,org,width:Math.max(10,geometry.width-4),height:Math.max(8,geometry.height-3),focused:!0,value,setValue,registerActions,navigateToScreen:(screen,initialState)=>{onClose(),navigateToScreen(screen,initialState)},notify},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useState as useState17}from"h:0__";import{useKeyboard as useKeyboard5}from"h:4___________";import{jsxDEV as jsxDEV27}from"h:6___________________________";var DIALOG_WIDTH=76,DIALOG_HEIGHT=8;function OpenSentryUrlDialog({onSubmit,onClose}){let theme=useTheme(),[url,setUrl]=useState17(""),[failure,setFailure]=useState17();useKeyboard5((key)=>{routeKeyOwnership([()=>{if(matchesCommand("sentry.nav.back",key))return onClose(),"mine";if(matchesCommand("sentry.nav.open",key))return setFailure(onSubmit(url)),"mine";return"notMine"}],key,consumeKey)});let prefix=failure?.kind==="unsupported"?"Not implemented":"Invalid URL";return jsxDEV27(ModalFrame,{title:" Open Sentry URL ",width:DIALOG_WIDTH,height:DIALOG_HEIGHT,onClose,children:[jsxDEV27("text",{fg:theme.muted,children:"Paste a sentry.io URL"},void 0,!1,void 0,this),jsxDEV27("input",{value:url,placeholder:"https://acme.sentry.io/issues/\u2026",focused:!0,onInput:(value)=>{setUrl(value),setFailure(void 0)},style:{marginTop:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this),failure?jsxDEV27("text",{fg:failure.kind==="invalid"?theme.danger:theme.warning,children:`${prefix}: ${failure.message}`},void 0,!1,void 0,this):jsxDEV27("text",{fg:theme.subText,children:"enter open \xB7 esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var compass_active_default="./assets/compass_active-mcnd0q22.png";var compass_inactive_default="./assets/compass_inactive-ddbmyj5v.png";var compass_active_light_default="./assets/compass_active_light-v08f7cvf.png";var compass_inactive_light_default="./assets/compass_inactive_light-wwd8x0j5.png";var dashboard_active_default="./assets/dashboard_active-3k2ysmyr.png";var dashboard_inactive_default="./assets/dashboard_inactive-a3pdwyw3.png";var dashboard_active_light_default="./assets/dashboard_active_light-j060573s.png";var dashboard_inactive_light_default="./assets/dashboard_inactive_light-47zscdjm.png";var issues_active_default="./assets/issues_active-k2k0e07f.png";var issues_inactive_default="./assets/issues_inactive-5jhnttk9.png";var issues_active_light_default="./assets/issues_active_light-ppxjynwp.png";var issues_inactive_light_default="./assets/issues_inactive_light-efzr1ggk.png";var monitors_active_default="./assets/monitors_active-ypv5rjbw.png";var monitors_inactive_default="./assets/monitors_inactive-vncjn4xh.png";var monitors_active_light_default="./assets/monitors_active_light-7en9bsxt.png";var monitors_inactive_light_default="./assets/monitors_inactive_light-3p8t6ysq.png";var seer_active_default="./assets/seer_active-s87c2fsc.png";var seer_inactive_default="./assets/seer_inactive-vnbwgb8m.png";var seer_active_light_default="./assets/seer_active_light-qr5zb8g1.png";var seer_inactive_light_default="./assets/seer_inactive_light-g6ryga4y.png";var sentry_default="./assets/sentry-a94jrdn1.png";var sentry_light_default="./assets/sentry_light-xph1a1zb.png";var DARK_NAV_ICON_PATHS={compass_active:compass_active_default,compass_inactive:compass_inactive_default,dashboard_active:dashboard_active_default,dashboard_inactive:dashboard_inactive_default,issues_active:issues_active_default,issues_inactive:issues_inactive_default,monitors_active:monitors_active_default,monitors_inactive:monitors_inactive_default,seer_active:seer_active_default,seer_inactive:seer_inactive_default,sentry:sentry_default},NAV_ICON_PATHS={dark:DARK_NAV_ICON_PATHS,light:{compass_active:compass_active_light_default,compass_inactive:compass_inactive_light_default,dashboard_active:dashboard_active_light_default,dashboard_inactive:dashboard_inactive_light_default,issues_active:issues_active_light_default,issues_inactive:issues_inactive_light_default,monitors_active:monitors_active_light_default,monitors_inactive:monitors_inactive_light_default,seer_active:seer_active_light_default,seer_inactive:seer_inactive_light_default,sentry:sentry_light_default}};function navIconBytes(name,mode="dark"){return imageBytes(NAV_ICON_PATHS[mode][name])}var NAV_ICON_NAMES=Object.keys(DARK_NAV_ICON_PATHS);import{jsxDEV as jsxDEV28}from"h:6___________________________";var ICON_BASE={issues:"issues",explore:"compass",dashboards:"dashboard",seer:"seer",monitors:"monitors"},ICON_HEIGHT=1,NAV_ICON_WIDTH=2;function NavIcon({groupId,active}){let theme=useTheme(),variant=active?"active":"inactive";return jsxDEV28("image",{source:navIconBytes(`${ICON_BASE[groupId]}_${variant}`,theme.mode),fit:"fit",style:{width:NAV_ICON_WIDTH,height:ICON_HEIGHT}},void 0,!1,void 0,this)}function SentryLogo(){let theme=useTheme();return jsxDEV28("image",{source:navIconBytes("sentry",theme.mode),fit:"fit",style:{width:NAV_ICON_WIDTH,height:ICON_HEIGHT}},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV29}from"h:6___________________________";var ORG_PICKER_COMMAND="sentry.app.switchOrg",AVATAR_WIDTH2=2,AVATAR_HEIGHT2=1,NAV_ITEM_HEIGHT=1,NAV_ITEM_GAP=1,NAV_ICON_GAP=1,RAIL_CHROME_WIDTH=4,WIDEST_NAV_LABEL=Math.max(...NAV_GROUPS.map((group)=>measureTextWidth(group.label))),ORG_KEY_HINT_WIDTH=(()=>{let key=formatKey(primaryKey(ORG_PICKER_COMMAND));return key?1+measureTextWidth(key):0})(),NAV_ITEM_ROW_WIDTH=NAV_ICON_WIDTH+NAV_ICON_GAP+WIDEST_NAV_LABEL,ORG_HEADER_ROW_WIDTH=AVATAR_WIDTH2+1+WIDEST_NAV_LABEL+ORG_KEY_HINT_WIDTH,NAV_RAIL_WIDTH=RAIL_CHROME_WIDTH+Math.max(NAV_ITEM_ROW_WIDTH,ORG_HEADER_ROW_WIDTH),COLLAPSED_NAV_RAIL_WIDTH=RAIL_CHROME_WIDTH+NAV_ICON_WIDTH,ORG_HEADER_MARGIN_TOP=1,ORG_HEADER_MARGIN_BOTTOM=2,ORG_HEADER_ANCHOR_LEFT=1,ORG_HEADER_ANCHOR_TOP=1+ORG_HEADER_MARGIN_TOP+AVATAR_HEIGHT2;function NavRail({active,expanded,focused,hotkeys,avatarUrl,orgSlug,onSelect,onExpand,onOrgPress,groups=NAV_GROUPS}){let theme=useTheme(),railWidth=expanded?NAV_RAIL_WIDTH:COLLAPSED_NAV_RAIL_WIDTH,contentWidth=railWidth-RAIL_CHROME_WIDTH,{supportsHighRes:hasImages}=useImageSupport(),slugWidth=expanded?contentWidth-(hasImages&&avatarUrl?AVATAR_WIDTH2+1:0)-ORG_KEY_HINT_WIDTH:0;return jsxDEV29("box",{style:{width:railWidth,flexShrink:0,flexDirection:"column",border:!0,borderColor:focused?theme.borderFocused:theme.border,paddingLeft:1,paddingRight:1},onMouseDown:expanded?void 0:onExpand,children:[orgSlug||hasImages&&avatarUrl?jsxDEV29("box",{style:{height:hasImages?AVATAR_HEIGHT2:1,flexDirection:"column",alignItems:expanded?"stretch":"center",marginTop:ORG_HEADER_MARGIN_TOP,marginBottom:ORG_HEADER_MARGIN_BOTTOM},onMouseDown:expanded?onOrgPress:void 0,children:expanded?jsxDEV29("box",{style:{flexDirection:"row",alignItems:"center",gap:1},children:[hasImages&&avatarUrl?jsxDEV29("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH2,height:AVATAR_HEIGHT2}},void 0,!1,void 0,this):null,orgSlug?jsxDEV29("text",{fg:theme.text,attributes:1,children:fitText(orgSlug,slugWidth)},void 0,!1,void 0,this):null,jsxDEV29("box",{style:{flexDirection:"row"},children:jsxDEV29(KeyHint,{command:ORG_PICKER_COMMAND},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):hasImages&&avatarUrl?jsxDEV29("image",{source:avatarUrl,fit:"fit",style:{width:AVATAR_WIDTH2,height:AVATAR_HEIGHT2}},void 0,!1,void 0,this):orgSlug?jsxDEV29("text",{fg:theme.text,attributes:1,children:Array.from(orgSlug)[0]?.toUpperCase()},void 0,!1,void 0,this):null},void 0,!1,void 0,this):null,jsxDEV29("box",{style:{flexDirection:"column",gap:hasImages?NAV_ITEM_GAP:0},children:groups.map((group)=>{let isActive=group.id===active;return jsxDEV29("box",{style:{flexDirection:"row",alignItems:"center",gap:hasImages?NAV_ICON_GAP:0,height:NAV_ITEM_HEIGHT},onMouseDown:expanded?()=>onSelect?.(group.id):void 0,children:[hasImages?jsxDEV29(NavIcon,{groupId:group.id,active:isActive},void 0,!1,void 0,this):null,expanded?jsxDEV29(NavHotkeyLabel,{label:group.label,hotkey:hotkeys?.get(group.id),fg:isActive?theme.accent:theme.muted,bold:isActive},void 0,!1,void 0,this):hasImages?null:jsxDEV29("text",{fg:isActive?theme.accent:theme.muted,attributes:isActive?1:0,children:group.glyph},void 0,!1,void 0,this)]},group.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback15,useEffect as useEffect18,useMemo as useMemo9,useState as useState18}from"h:0__";import{jsxDEV as jsxDEV30}from"h:6___________________________";function OrgPicker({client:client2,currentOrg,anchorLeft,anchorTop,onSelect,onClose}){let[orgs,setOrgs]=useState18([]),[error,setError]=useState18(null),[loading,setLoading]=useState18(client2!==null);useEffect18(()=>{if(!client2)return;let controller=new AbortController;return setLoading(!0),listOrganizations2(client2,controller.signal).then((data)=>{if(controller.signal.aborted)return;setOrgs(data),setError(null)}).catch((err)=>{if(controller.signal.aborted)return;setError(err instanceof Error?err.message:String(err))}).finally(()=>{if(!controller.signal.aborted)setLoading(!1)}),()=>controller.abort()},[client2]);let items=useMemo9(()=>orgs.map((org)=>({label:org.slug,value:org.slug})),[orgs]),handleSelect=useCallback15((values)=>{let slug=values[0];if(slug)onSelect(slug)},[onSelect]);return jsxDEV30(Dropdown,{title:"Organization",items,selected:currentOrg?[currentOrg]:[],anchorLeft,anchorTop,showAll:!1,filterable:!0,placeholder:loading?"Loading organizations\u2026":error??"No organizations",onSelect:handleSelect,onClose},void 0,!1,void 0,this)}var NO_NAV_EXTRAS={sections:[]};function navSectionsFor(group,extras=NO_NAV_EXTRAS){return[...getNavGroup(group).sections.map((section)=>({title:section.title,items:section.items.map((label)=>({label}))})),...extras.sections]}function navItemsFor(group,extras=NO_NAV_EXTRAS){return navSectionsFor(group,extras).flatMap((section)=>section.items)}function navTargetOf(group,item){return item.target??{group,item:item.label}}import{jsxDEV as jsxDEV31}from"h:6___________________________";var SECONDARY_NAV_WIDTH=22,CONTENT_WIDTH=SECONDARY_NAV_WIDTH-4;function SecondaryNav({group,activeItem,focused,extras=NO_NAV_EXTRAS,hotkeys,onSelect}){let theme=useTheme(),nav=getNavGroup(group),sections=navSectionsFor(group,extras);return jsxDEV31("box",{style:{width:SECONDARY_NAV_WIDTH,flexShrink:0,flexDirection:"column",overflow:"hidden",border:!0,borderColor:focused?theme.borderFocused:theme.border,paddingTop:1,paddingLeft:1,paddingRight:1},children:[jsxDEV31("text",{fg:theme.text,attributes:1,children:nav.label},void 0,!1,void 0,this),sections.map((section,si)=>jsxDEV31("box",{style:{flexDirection:"column",flexShrink:0},children:[jsxDEV31("text",{fg:theme.border,children:"\u2500".repeat(CONTENT_WIDTH)},void 0,!1,void 0,this),section.title?jsxDEV31("text",{fg:theme.muted,children:section.title},void 0,!1,void 0,this):null,section.items.map((item,ii)=>{let isActive=item.label===activeItem;return jsxDEV31("box",{style:{flexDirection:"row",height:1,flexShrink:0},onMouseDown:()=>onSelect?.(item),children:jsxDEV31(NavHotkeyLabel,{label:fitText(item.label,CONTENT_WIDTH),hotkey:hotkeys?.get(item.label),fg:isActive?theme.accent:theme.muted,bold:isActive},void 0,!1,void 0,this)},`${si}:${ii}:${item.label}`,!1,void 0,this)})]},si,!0,void 0,this))]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV32,Fragment as Fragment10}from"h:6___________________________";function noticeColor(kind,theme){return kind==="error"?theme.danger:theme.highlight}function HintItem({commandId,label}){let theme=useTheme();if(!primaryKey(commandId))return null;return jsxDEV32(Fragment10,{children:[jsxDEV32(KeyHint,{command:commandId},void 0,!1,void 0,this),jsxDEV32("text",{children:" "},void 0,!1,void 0,this),label?jsxDEV32("text",{fg:theme.muted,children:label},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function UpdatePill({onPress}){let theme=useTheme();return jsxDEV32("box",{style:{flexDirection:"row",flexShrink:0},onMouseDown:onPress,children:[jsxDEV32("text",{fg:theme.highlight,attributes:BOLD,children:"Update"},void 0,!1,void 0,this),jsxDEV32("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function StatusBar({notice,hints,since,onUpdate}){let theme=useTheme(),loading=notice.kind==="loading",frame=useSpinnerFrame(loading),text=notice.text;if(loading){let elapsedMs=since===void 0?void 0:Date.now()-since,suffix=elapsedMs!==void 0&&elapsedMs>=2000?` ${(elapsedMs/1000).toFixed(1)}s`:"";text=`${frame} ${notice.text}${suffix}`}return jsxDEV32("box",{style:{height:1,flexShrink:0,flexDirection:"row",backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[onUpdate?jsxDEV32(UpdatePill,{onPress:onUpdate},void 0,!1,void 0,this):null,jsxDEV32("text",{fg:noticeColor(notice.kind,theme),children:text},void 0,!1,void 0,this),jsxDEV32("box",{style:{flexGrow:1}},void 0,!1,void 0,this),hints.map(({command,label},i)=>{if(!primaryKey(command))return null;return jsxDEV32("box",{style:{flexDirection:"row"},children:[i>0?jsxDEV32("text",{fg:theme.subText,children:" \xB7 "},void 0,!1,void 0,this):null,jsxDEV32(HintItem,{commandId:command,label},void 0,!1,void 0,this)]},command,!0,void 0,this)}),jsxDEV32(SentryBadge,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function SentryBadge(){let{supportsHighRes}=useImageSupport();if(!supportsHighRes)return null;return jsxDEV32("box",{style:{marginLeft:1},children:jsxDEV32(SentryLogo,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{useKeyboard as useKeyboard6}from"h:4___________";import{jsxDEV as jsxDEV33}from"h:6___________________________";var DIALOG_WIDTH2=84,DIALOG_HEIGHT2=12;function WebUrlDialog({url,onClose}){let theme=useTheme();return useKeyboard6((key)=>{routeKeyOwnership([()=>{if(!matchesCommand("sentry.nav.back",key))return"notMine";return onClose(),"mine"}],key,consumeKey)}),jsxDEV33(ModalFrame,{title:" Open in Sentry ",width:DIALOG_WIDTH2,height:DIALOG_HEIGHT2,onClose,children:[jsxDEV33("text",{fg:theme.warning,children:"Could not launch a browser. Open this production URL:"},void 0,!1,void 0,this),jsxDEV33("text",{fg:theme.text,style:{wrapMode:"char"},children:url},void 0,!1,void 0,this),jsxDEV33("text",{fg:theme.subText,children:"esc close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback16,useMemo as useMemo10,useRef as useRef12,useState as useState19}from"h:0__";function useFocusRing(regions,initial){let[focused,setFocused]=useState19(initial??regions[0]),focusedRef=useRef12(focused);focusedRef.current=focused;let move=useCallback16((delta)=>{let next=(regions.indexOf(focusedRef.current)+delta+regions.length)%regions.length;setFocused(regions[next])},[regions]);return useMemo10(()=>({focused,focusedRef,isFocused:(region)=>focused===region,focus:setFocused,next:()=>move(1),prev:()=>move(-1)}),[focused,move])}import{useCallback as useCallback39,useMemo as useMemo32,useReducer as useReducer4,useState as useState32}from"h:0__";var ASSIGNABLE=/[a-z0-9]/i;function candidateIndexes(label){let chars=[...label],wordStarts=[],rest=[];return chars.forEach((char,index)=>{if(!ASSIGNABLE.test(char))return;let previous=chars[index-1];if(previous===void 0||!ASSIGNABLE.test(previous))wordStarts.push(index);else rest.push(index)}),[...wordStarts,...rest]}function assignHotkeys(labels,reserved=[]){let taken=new Set;for(let key of reserved)taken.add(key.toLowerCase());return labels.map((label)=>{let chars=[...label];for(let index of candidateIndexes(label)){let key=chars[index].toLowerCase();if(taken.has(key))continue;return taken.add(key),{key,index}}let fallback=[..."abcdefghijklmnopqrstuvwxyz0123456789"].find((key)=>!taken.has(key));if(!fallback)return;return taken.add(fallback),{key:fallback,index:-1}})}var RESERVED_KEYS=[primaryKey("sentry.nav.goto"),primaryKey("sentry.app.switchOrg")].filter(Boolean);function buildGotoHotkeys(group,navGroups=NAV_GROUPS){let items=getNavGroup(group).sections.flatMap((section)=>section.items),assigned=assignHotkeys([...navGroups.map((navGroup)=>navGroup.label),...items],RESERVED_KEYS),groups=new Map,itemKeys=new Map,byKey=new Map;return navGroups.forEach((navGroup,index)=>{let hotkey=assigned[index];if(!hotkey)return;groups.set(navGroup.id,hotkey),byKey.set(hotkey.key,{kind:"group",group:navGroup.id})}),items.forEach((item,index)=>{let hotkey=assigned[navGroups.length+index];if(!hotkey)return;itemKeys.set(item,hotkey),byKey.set(hotkey.key,{kind:"item",item})}),{groups,items:itemKeys,byKey}}var SEPARATOR=" \u203A ",ELISION="\u2026";function breadcrumbTrail(segments,width){let parts=segments.filter((part)=>Boolean(part&&part.trim()));if(parts.length===0||width<=0)return"";let full=parts.join(SEPARATOR);if(measureTextWidth(full)<=width)return full;for(let first=1;first<parts.length;first++){let candidate=[ELISION,...parts.slice(first)].join(SEPARATOR);if(measureTextWidth(candidate)<=width)return candidate}return fitText(parts[parts.length-1],width)}import{useCallback as useCallback17,useMemo as useMemo11,useReducer as useReducer3,useRef as useRef13}from"h:0__";function rowsOf(state){if(state.entriesSource!==null&&state.entriesSource!==state.source)throw Error(`Screen "${state.source}" cannot read rows written by "${state.entriesSource}" from shared state "${state.key}"`);return state.entries}var UNREGISTERED_KEY="__unregistered__";function initialSlice(key,selectedProjects=[]){let defaults=defaultsForStateKey(key),query=defaults.query??"";return{entries:[],entriesSource:null,selected:0,status:{loading:!1},openDropdown:null,selectedProjects:[...selectedProjects],selectedEnvs:[],statsPeriod:defaults.statsPeriod??DEFAULT_STATS_PERIOD,sort:defaults.sort??DEFAULT_SORT,detailOpen:!1,searchQuery:query,committedQuery:query,searchFocused:!1,queryBeforeEdit:query}}function sliceFromSnapshot(key,snapshot){return{...initialSlice(key,snapshot.selectedProjects),entriesSource:snapshot.source,selected:snapshot.selected,selectedProjects:[...snapshot.selectedProjects],selectedEnvs:[...snapshot.selectedEnvs],statsPeriod:snapshot.statsPeriod,sort:snapshot.sort,detailOpen:snapshot.detailOpen,searchQuery:snapshot.query,committedQuery:snapshot.query,queryBeforeEdit:snapshot.query}}function initialStore(key,selectedProjects,initialSeed,snapshots){let states=new Map;for(let[snapshotKey,snapshot]of Object.entries(snapshots??{}))states.set(snapshotKey,sliceFromSnapshot(snapshotKey,snapshot));if(initialSeed&&!states.has(key))states.set(key,screenReducer(initialSlice(key,selectedProjects),{type:"seed",payload:initialSeed}));return states}function sameStatus(a,b){return a.loading===b.loading&&a.since===b.since&&a.error===b.error&&a.noun===b.noun}function screenReducer(state,action,source){switch(action.type){case"setEntries":{if(!source)throw Error("setEntries requires a screen source");let previous=state.entriesSource===source?state.entries:[],entries=typeof action.payload==="function"?action.payload(previous):action.payload;if(entries===state.entries&&state.entriesSource===source)return state;let selected=Math.min(state.entriesSource===source?state.selected:0,Math.max(0,entries.length-1));return{...state,entries,entriesSource:source,selected}}case"setSelected":{let ownsEntries=source===void 0||state.entriesSource===source,previous=ownsEntries?state.selected:0,selected=typeof action.payload==="function"?action.payload(previous):action.payload,rowCount=ownsEntries?state.entries.length:0,clamped=Math.max(0,Math.min(selected,Math.max(0,rowCount-1)));return clamped===state.selected?state:{...state,selected:clamped}}case"setStatus":return sameStatus(state.status,action.payload)?state:{...state,status:action.payload};case"setOpenDropdown":return state.openDropdown===action.payload?state:{...state,openDropdown:action.payload};case"setSelectedProjects":return{...state,selectedProjects:action.payload};case"setSelectedEnvs":return{...state,selectedEnvs:action.payload};case"setStatsPeriod":return state.statsPeriod===action.payload?state:{...state,statsPeriod:action.payload};case"setSort":return state.sort===action.payload?state:{...state,sort:action.payload};case"setDetailOpen":{let detailOpen=typeof action.payload==="function"?action.payload(state.detailOpen):action.payload;return detailOpen===state.detailOpen?state:{...state,detailOpen}}case"setSearchQuery":return state.searchQuery===action.payload?state:{...state,searchQuery:action.payload};case"focusSearch":return{...state,queryBeforeEdit:state.committedQuery,searchFocused:!0};case"submitSearch":return{...state,committedQuery:state.searchQuery,searchFocused:!1};case"cancelSearch":case"handleSearchBlur":return{...state,searchQuery:state.queryBeforeEdit,searchFocused:!1};case"resetOrgScoped":return{...state,entries:[],entriesSource:null,selected:0,status:{loading:!1},openDropdown:null,selectedProjects:[...action.payload.projects],selectedEnvs:[],detailOpen:!1,searchFocused:!1};case"seed":{let query=action.payload.query??state.searchQuery;return{...state,searchQuery:query,committedQuery:query,queryBeforeEdit:query,sort:action.payload.sort??state.sort,statsPeriod:action.payload.statsPeriod??state.statsPeriod,selectedProjects:action.payload.selectedProjects??state.selectedProjects,selectedEnvs:action.payload.selectedEnvs??state.selectedEnvs}}}}function screenStoreReducer(states,action){if(action.type==="resetOrgScoped"){let next2=new Map;for(let[key,state]of states)next2.set(key,screenReducer(state,{type:"resetOrgScoped",payload:{projects:action.projects}}));return next2}let next=new Map(states);if(action.type==="seed")return next.set(action.key,screenReducer(initialSlice(action.key),{type:"seed",payload:action.values})),next;let current=states.get(action.key)??action.fallback,updated=screenReducer(current,action.action,action.source);if(updated===current&&states.has(action.key))return states;return next.set(action.key,updated),next}function useScreenState(stateKey,source,initialSelectedProjects=[],initialSeed,initialSnapshots){let key=stateKey??UNREGISTERED_KEY,[states,storeDispatch]=useReducer3(screenStoreReducer,void 0,()=>initialStore(key,initialSelectedProjects,initialSeed,initialSnapshots)),initialSelectedProjectsRef=useRef13(initialSelectedProjects);initialSelectedProjectsRef.current=initialSelectedProjects;let searchExitHandled=useRef13(!1),dispatch=useCallback17((action)=>{storeDispatch({type:"dispatch",key,source,action,fallback:initialSlice(key,initialSelectedProjectsRef.current)})},[key,source]),focusSearch=useCallback17(()=>dispatch({type:"focusSearch"}),[dispatch]),submitSearch=useCallback17(()=>{searchExitHandled.current=!0,dispatch({type:"submitSearch"})},[dispatch]),cancelSearch=useCallback17(()=>{searchExitHandled.current=!0,dispatch({type:"cancelSearch"})},[dispatch]),handleSearchBlur=useCallback17(()=>{if(searchExitHandled.current){searchExitHandled.current=!1;return}dispatch({type:"handleSearchBlur"})},[dispatch]),data=useMemo11(()=>states.get(key)??initialSlice(key,initialSelectedProjects),[states,key,initialSelectedProjects]),active=useMemo11(()=>({...data,entries:data.entriesSource===null||data.entriesSource===source?data.entries:[],selected:data.entriesSource===null||data.entriesSource===source?data.selected:0,key,source,dispatch,focusSearch,submitSearch,cancelSearch,handleSearchBlur}),[data,key,source,dispatch,focusSearch,submitSearch,cancelSearch,handleSearchBlur]),resetOrgScoped=useCallback17((selectedProjects=[])=>{storeDispatch({type:"resetOrgScoped",projects:[...selectedProjects]})},[]),seed=useCallback17((target,values)=>{storeDispatch({type:"seed",key:target,values})},[]),snapshots=useMemo11(()=>{let result={};for(let[snapshotKey,state]of states){if(snapshotKey===UNREGISTERED_KEY)continue;result[snapshotKey]={source:state.entriesSource,selected:state.selected,query:state.committedQuery,sort:state.sort,statsPeriod:state.statsPeriod,selectedProjects:[...state.selectedProjects],selectedEnvs:[...state.selectedEnvs],detailOpen:state.detailOpen}}return result},[states]);return{active,resetOrgScoped,seed,snapshots}}import{useMemo as useMemo14}from"h:0__";import{useCallback as useCallback18,useEffect as useEffect19,useMemo as useMemo12,useState as useState20}from"h:0__";var prebuiltDashboards_generated_default={source:{repository:"https://github.com/getsentry/sentry",revision:"f0ee5b0fd4164ac63f118461255fb0f74fcd56e9",path:"static/app/views/dashboards/utils/prebuiltConfigs.tsx"},dashboards:{"1":{title:"Frontend Session Health",description:"Monitor browser session health by user and session.",widgets:[{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"issues",title:"Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"",columns:["issue","project","title"],aggregates:[],orderby:"",fields:["issue","project","title"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"unhealthy-sessions",title:"Unhealthy Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["unhealthy_rate(session)"],orderby:"",fields:["unhealthy_rate(session)"]}],interval:"5m",layout:{x:0,y:2,w:3,h:3,minH:2}},{id:"user-health",title:"User Health",displayType:"area",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["abnormal_rate(user)","crash_rate(user)","errored_rate(user)","unhandled_rate(user)"],orderby:"",fields:["abnormal_rate(user)","crash_rate(user)","errored_rate(user)","unhandled_rate(user)"]}],interval:"5m",layout:{x:3,y:2,w:3,h:3,minH:2}},{id:"session-health",title:"Session Health",displayType:"area",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["abnormal_rate(session)","crash_rate(session)","errored_rate(session)","unhandled_rate(session)"],orderby:"",fields:["abnormal_rate(session)","crash_rate(session)","errored_rate(session)","unhandled_rate(session)"]}],interval:"5m",layout:{x:0,y:5,w:2,h:3,minH:2}},{id:"session-counts",title:"Session Counts",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["session.status"],aggregates:["sum(session)"],orderby:"",fields:["session.status","sum(session)"]}],interval:"5m",layout:{x:2,y:5,w:2,h:3,minH:2}},{id:"user-counts",title:"User Counts",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["session.status"],aggregates:["count_unique(user)"],orderby:"",fields:["session.status","count_unique(user)"]}],interval:"5m",layout:{x:4,y:5,w:2,h:3,minH:2}}]},"2":{title:"Queries",description:"Track database query throughput and duration, with per-query drill-downs.",widgets:[{id:"throughput",title:"Queries Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{y:0,w:3,h:2,x:0,minH:2}},{id:"duration",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{y:0,w:3,h:2,x:3,minH:2}},{id:"queries-table",title:"Queries List",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["epm()","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","epm()","avg(span.duration)","sum(span.duration)"],fieldAliases:["Query Description","Queries Per Minute","Avg Duration","Time Spent"]}],interval:"5m",layout:{y:2,w:6,h:6,x:0,minH:2}}]},"3":{title:"Query Details",description:"",widgets:[{id:"metrics-throughput",title:"Queries Per Minute",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"",fields:["epm()"]}],interval:"1h",layout:{y:0,x:2,h:1,w:2,minH:1}},{id:"metrics-duration",title:"Average Duration",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"",fields:["avg(span.duration)"]}],interval:"1h",layout:{y:0,x:0,h:1,w:2,minH:1}},{id:"metrics-time-spent",title:"Time Spent",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["sum(span.duration)"],orderby:"",fields:["sum(span.duration)"]}],interval:"1h",layout:{y:0,x:4,h:1,w:2,minH:1}},{id:"example-query",title:"Example Query",description:"",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["id","span.op","span.group","span.description","span.category"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category"],fieldAliases:[]}],interval:"1h",limit:1,layout:{y:1,x:0,h:2,w:6,minH:2}},{id:"transactions-with-query",title:"Transactions with Query",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["transaction"],aggregates:["epm()","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","epm()","sum(span.duration)"],fieldAliases:["Found In","Queries Per Minute","Time Spent"]}],interval:"1h",layout:{y:5,x:0,h:2,w:6,minH:2}},{id:"metrics-throughput-line",title:"Queries Per Minute",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Queries Per Minute",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"],fieldAliases:[]}],interval:"1h",layout:{y:3,x:0,h:2,w:3,minH:2}},{id:"metrics-duration-line",title:"Average Duration",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.category:db has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{y:3,x:3,h:2,w:3,minH:2}}]},"4":{title:"Outbound API Requests",description:"Track HTTP client request performance.",widgets:[{id:"throughput-chart",title:"Requests Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"duration-chart",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"response-codes-chart",title:"Response Codes (3XX, 4XX, 5XX)",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"domain-table",title:"Domains",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["span.domain","project"],aggregates:["epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["span.domain","project","epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],fieldAliases:["Domain","Project","Requests Per Minute","3XXs","4XXs","5XXs","Avg Duration","Time Spent"]}],interval:"5m",layout:{x:0,y:2,minH:2,h:4,w:6}}]},"5":{title:"Domain Details",description:"",widgets:[{id:"domain-widget",title:"Domain",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["id","span.op","span.group","span.description","span.category"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,minH:1,h:1,w:6}},{id:"throughput-big-number",title:"Requests Per Minute",displayType:"big_number",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:1,w:1,h:1,minH:1}},{id:"duration-big-number",title:"Average Duration",displayType:"big_number",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:1,y:1,w:1,h:1,minH:1}},{id:"3xx-percentage-big-number",title:"3XX",displayType:"big_number",widgetType:"spans",queries:[{name:"3XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)"]}],interval:"5m",layout:{x:2,y:1,w:1,h:1,minH:1}},{id:"4xx-percentage-big-number",title:"4XX",displayType:"big_number",widgetType:"spans",queries:[{name:"4XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,400,499) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,400,499) / count(span.duration)",fields:["equation|count_if(span.status_code,between,400,499) / count(span.duration)"]}],interval:"5m",layout:{x:3,y:1,w:1,h:1,minH:1}},{id:"5xx-percentage-big-number",title:"5XX",displayType:"big_number",widgetType:"spans",queries:[{name:"5XX",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,500,599) / count(span.duration)",fields:["equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:1,w:1,h:1,minH:1}},{id:"time-spent-big-number",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"Time Spent",conditions:"span.op:http.client",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:1,w:1,h:1,minH:1}},{id:"throughput-chart",title:"Requests Per Minute",displayType:"line",widgetType:"spans",queries:[{name:"Requests Per Minute",conditions:"span.op:http.client",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:2,w:2,h:2,minH:2}},{id:"duration-chart",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"Average Duration",conditions:"span.op:http.client",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:2,w:2,h:2,minH:2}},{id:"response-codes-chart",title:"Response Codes (3XX, 4XX, 5XX)",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:[],aggregates:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"],orderby:"equation|count_if(span.status_code,between,300,399) / count(span.duration)",fields:["equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)"]}],interval:"5m",layout:{x:4,y:2,w:2,h:2,minH:2}},{id:"transactions-table",title:"Transactions Making Requests to This Domain",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.client",columns:["transaction"],aggregates:["epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","epm()","equation|count_if(span.status_code,between,300,399) / count(span.duration)","equation|count_if(span.status_code,between,400,499) / count(span.duration)","equation|count_if(span.status_code,between,500,599) / count(span.duration)","avg(span.duration)","sum(span.duration)"],fieldAliases:["Found In","Requests Per Minute","3XXs","4XXs","5XXs","Avg Duration","Time Spent"]}],interval:"5m",layout:{x:0,y:4,minH:2,h:5,w:6}}]},"6":{title:"Web Vitals",description:"Track real-user Web Vitals, ranked by improvement opportunity.",widgets:[{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{y:0,w:2,h:2,x:0,minH:2}},{id:"score-breakdown-chart",title:"Score Breakdown",description:"Each Web Vital score contributes a different amount to the total score. Refer to the Performance Score wheel for total contribution.",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:4,h:2,x:2,minH:2}},{id:"lcp-p75-meter",title:"P75 Largest Contentful Paint",description:"Time to render the largest item in the viewport. Bad LCP frustrates users because the website feels slow to load.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.lcp.value)"],orderby:"",fields:["p75(browser.web_vital.lcp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:0,minH:1}},{id:"inp-p75-meter",title:"P75 Interaction to Next Paint",description:"Latency between user input and visual response. Bad INP makes users feel like the site is laggy, outdated, and unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.inp.value)"],orderby:"",fields:["p75(browser.web_vital.inp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:1,minH:1}},{id:"cls-p75-meter",title:"P75 Cumulative Layout Shift",description:"Measures content 'shifting' during load. Bad CLS indicates a janky website, degrading UX and trust.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.cls.value)"],orderby:"",fields:["p75(browser.web_vital.cls.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:0,minH:1}},{id:"ttfb-p75-meter",title:"P75 Time to First Byte",description:"Time until first byte is delivered to the client. Bad TTFB makes the server feel unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.ttfb.value)"],orderby:"",fields:["p75(browser.web_vital.ttfb.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:1,minH:1}},{id:"issues-table",title:"Web Vital Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"issue.type:[web_vitals,performance_render_blocking_asset_span,performance_uncompressed_assets,performance_http_overhead,performance_consecutive_http,performance_n_plus_one_api_calls,performance_large_http_payload,performance_p95_endpoint_regression]",columns:["issue","assignee","title"],aggregates:[],orderby:"date",fields:["issue","assignee","title"]}],interval:"5m",layout:{y:2,w:4,h:2,x:2,minH:2}},{id:"pages-table",title:"Pages",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["transaction","project","count()","p75(browser.web_vital.lcp.value)","p75(browser.web_vital.fcp.value)","p75(browser.web_vital.cls.value)","p75(browser.web_vital.ttfb.value)","p75(browser.web_vital.inp.value)","performance_score(measurements.score.total)","opportunity_score(measurements.score.total)"],aggregates:[],orderby:"-opportunity_score(measurements.score.total)",fields:["transaction","project","count()","p75(browser.web_vital.lcp.value)","p75(browser.web_vital.fcp.value)","p75(browser.web_vital.cls.value)","p75(browser.web_vital.ttfb.value)","p75(browser.web_vital.inp.value)","performance_score(measurements.score.total)","opportunity_score(measurements.score.total)"],fieldAliases:["Pages","Project","Pageloads","LCP","FCP","CLS","TTFB","INP","Perf Score","Opportunity"]}],interval:"5m",layout:{y:4,w:6,h:6,x:0,minH:2}}]},"7":{title:"Web Vitals Page Summary",description:"",widgets:[{id:"score-breakdown-chart",title:"Score Breakdown",description:"Each Web Vital score contributes a different amount to the total score. Refer to the Performance Score wheel for total contribution.",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:5,h:2,x:0,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"The overall performance rating of this page.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",layout:{y:0,w:1,h:2,x:5,minH:2}},{id:"lcp-p75-meter",title:"P75 Largest Contentful Paint",description:"Time to render the largest item in the viewport. Bad LCP frustrates users because the website feels slow to load.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.lcp.value)"],orderby:"",fields:["p75(browser.web_vital.lcp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:0,minH:1}},{id:"inp-p75-meter",title:"P75 Interaction to Next Paint",description:"Latency between user input and visual response. Bad INP makes users feel like the site is laggy, outdated, and unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.inp.value)"],orderby:"",fields:["p75(browser.web_vital.inp.value)"]}],interval:"5m",layout:{y:2,w:1,h:1,x:1,minH:1}},{id:"cls-p75-meter",title:"P75 Cumulative Layout Shift",description:"Measures content 'shifting' during load. Bad CLS indicates a janky website, degrading UX and trust.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.cls.value)"],orderby:"",fields:["p75(browser.web_vital.cls.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:0,minH:1}},{id:"ttfb-p75-meter",title:"P75 Time to First Byte",description:"Time until first byte is delivered to the client. Bad TTFB makes the server feel unresponsive.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:[],aggregates:["p75(browser.web_vital.ttfb.value)"],orderby:"",fields:["p75(browser.web_vital.ttfb.value)"]}],interval:"5m",layout:{y:3,w:1,h:1,x:1,minH:1}},{id:"issues-table",title:"Web Vital Issues",displayType:"table",widgetType:"issue",queries:[{name:"",conditions:"issue.type:[web_vitals,performance_render_blocking_asset_span,performance_uncompressed_assets,performance_http_overhead,performance_consecutive_http,performance_n_plus_one_api_calls,performance_large_http_payload,performance_p95_endpoint_regression]",columns:["issue","assignee","title"],aggregates:[],orderby:"date",fields:["issue","assignee","title"]}],interval:"5m",layout:{y:2,w:3,h:2,x:2,minH:2}},{id:"lcp-samples-table",title:"LCP Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.lcp.value",columns:["project","trace","browser.web_vital.lcp.element","browser.web_vital.lcp.value","profile.id","replay.id","measurements.score.ratio.lcp","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.lcp.element","browser.web_vital.lcp.value","profile.id","replay.id","measurements.score.ratio.lcp","timestamp"]}],interval:"5m",layout:{y:6,w:5,h:2,x:0,minH:2}},{id:"inp-samples-table",title:"INP Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.inp.value",columns:["project","trace","browser.web_vital.inp.value","profile.id","replay.id","measurements.score.ratio.inp","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.inp.value","profile.id","replay.id","measurements.score.ratio.inp","timestamp"]}],interval:"5m",layout:{y:8,w:5,h:2,x:0,minH:2}},{id:"cls-samples-table",title:"CLS Samples",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:browser.web_vital.cls.value",columns:["project","trace","browser.web_vital.cls.value","profile.id","replay.id","measurements.score.ratio.cls","timestamp"],aggregates:[],orderby:"-timestamp",fields:["project","trace","browser.web_vital.cls.value","profile.id","replay.id","measurements.score.ratio.cls","timestamp"]}],interval:"5m",layout:{y:10,w:5,h:2,x:0,minH:2}},{id:"pageloads-chart",title:"Pageloads",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:pageload",columns:[],aggregates:["count()"],orderby:"",fields:["count()"]}],interval:"5m",layout:{y:2,w:1,h:2,x:5,minH:2}},{id:"interactions-chart",title:"Interactions",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press]",columns:[],aggregates:["count()"],orderby:"",fields:["count()"]}],interval:"5m",layout:{y:4,w:1,h:2,x:5,minH:2}}]},"8":{title:"Mobile Vitals",description:"Track key mobile performance metrics, including Time-to-Initial-Display.",widgets:[{id:"cold-start-big-number",title:"Average Cold App Start",description:"Average cold app start duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:0,y:0,w:1,minH:1}},{id:"warm-start-big-number",title:"Average Warm App Start",description:"Average warm app start duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:1,y:0,w:1,minH:1}},{id:"avg-ttid-big-number",title:"Average TTID",description:"Average time to initial display",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"",fields:["avg(app.vitals.ttid.value)"]}],interval:"1h",layout:{h:1,x:2,y:0,w:1,minH:1}},{id:"avg-ttfd-big-number",title:"Average TTFD",description:"Average time to full display",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"",fields:["avg(app.vitals.ttfd.value)"]}],interval:"1h",layout:{h:1,x:3,y:0,w:1,minH:1}},{id:"slow-frame-rate-big-number",title:"Slow Frame Rate",description:"Percentage of slow frames across screen load transactions, calculated as total slow frames divided by total frames.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["sum(app.vitals.frames.slow.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.slow.count) / sum(app.vitals.frames.total.count)"],orderby:"",fields:["sum(app.vitals.frames.slow.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.slow.count) / sum(app.vitals.frames.total.count)"],selectedAggregate:2}],interval:"1h",layout:{h:1,x:0,y:1,w:1,minH:1}},{id:"frozen-frame-rate-big-number",title:"Frozen Frame Rate",description:"Percentage of frozen frames across screen load transactions, calculated as total frozen frames divided by total frames.",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["sum(app.vitals.frames.frozen.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count) / sum(app.vitals.frames.total.count)"],orderby:"",fields:["sum(app.vitals.frames.frozen.count)","sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count) / sum(app.vitals.frames.total.count)"],selectedAggregate:2}],interval:"1h",layout:{h:1,x:1,y:1,w:1,minH:1}},{id:"avg-frame-delay-big-number",title:"Average Frame Delay",description:"Average frame delay",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count",columns:[],aggregates:["avg(app.vitals.frames.delay.value)"],orderby:"",fields:["avg(app.vitals.frames.delay.value)"]}],interval:"1h",layout:{h:1,x:2,y:1,w:1,minH:1}},{id:"crash-free-session-rate-big-number",title:"Crash Free Session Rate",description:"Percentage of sessions that did not crash. Based on session data, so span filters do not apply.",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"1h",layout:{h:1,x:3,y:1,w:1,minH:1}},{id:"about-this-page-text",title:"About this page",description:`Top-level metrics show your app's health. When one looks off, use the tables below to find the screens responsible, then drill in to investigate.
16
16
 
17
17
  App start metrics only count launches that open the app UI, not background starts.
18
18
 
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
+ See the [Mobile Vitals docs](https://docs.sentry.io/product/insights/mobile/mobile-vitals/) for more information.`,displayType:"text",queries:[],interval:"1h",layout:{h:2,x:4,y:0,w:2,minH:2}},{id:"app-start-table",title:"App Starts",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"(has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number])",columns:["app.vitals.start.screen"],aggregates:["avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,cold)","avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,warm)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["app.vitals.start.screen","avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,cold)","avg_if(tags[app.vitals.start.value,millisecond],app.vitals.start.type,equals,warm)","count_unique(transaction.span_id)"],fieldAliases:["Screen","Avg Cold Start","Avg Warm Start","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:2,w:6,minH:2}},{id:"screen-load-table",title:"Screen Loads",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)) has:transaction",columns:["transaction"],aggregates:["avg(app.vitals.ttid.value)","avg(app.vitals.ttfd.value)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","avg(app.vitals.ttid.value)","avg(app.vitals.ttfd.value)","count_unique(transaction.span_id)"],fieldAliases:["Screen","Avg TTID","Avg TTFD","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:5,w:6,minH:2}},{id:"screen-rendering-table",title:"Screen Rendering",description:"Frame rates are weighted across screen load transactions using total frame counts.",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.frames.total.count has:transaction",columns:["transaction"],aggregates:["equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","count_unique(transaction.span_id)"],orderby:"-count_unique(transaction.span_id)",fields:["transaction","equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","count_unique(transaction.span_id)"],fieldAliases:["Transaction","Slow Frame %","Frozen Frame %","Screen Loads"]}],interval:"1h",layout:{h:3,x:0,y:8,w:6,minH:2}}]},"9":{title:"Mobile Vitals App Starts",description:"",widgets:[{id:"avg-cold-starts-big-number",title:"Average Cold Start",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:0,y:0,w:1,minH:1}},{id:"avg-warm-starts-big-number",title:"Average Warm Start",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"",fields:["avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:1,x:3,y:0,w:1,minH:1}},{id:"total-cold-start-count-big-number",title:"Cold Start Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:1,y:0,w:1,minH:1}},{id:"total-warm-start-count-big-number",title:"Warm Start Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:4,y:0,w:1,minH:1}},{id:"avg-cold-start-line",title:"Average Cold Start",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"-avg(tags[app.vitals.start.value,millisecond])",fields:["avg(tags[app.vitals.start.value,millisecond])"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:0,y:1,w:3,minH:2}},{id:"avg-warm-start-line",title:"Average Warm Start",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:[],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"-avg(tags[app.vitals.start.value,millisecond])",fields:["avg(tags[app.vitals.start.value,millisecond])"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:3,y:1,w:3,minH:2}},{id:"cold-start-device-distribution-bar",title:"Cold Start Device Distribution",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:cold)",columns:["device.class"],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"device.class",fields:["device.class","avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:2,x:0,y:3,w:3,minH:2}},{id:"warm-start-device-distribution-bar",title:"Warm Start Device Distribution",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"((has:app.vitals.start.screen AND has:tags[app.vitals.start.value,number]) AND app.vitals.start.type:warm)",columns:["device.class"],aggregates:["avg(tags[app.vitals.start.value,millisecond])"],orderby:"device.class",fields:["device.class","avg(tags[app.vitals.start.value,millisecond])"]}],interval:"1h",layout:{h:2,x:3,y:3,w:3,minH:2}},{id:"cold-operations-table",title:"Cold Start Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'(!is_transaction:true !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:span.description transaction.op:[ui.load,navigation] has:ttid app_start_type:cold span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true ((has:span.description !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render") OR (has:span.name !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render")) app.vitals.start.type:cold span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true !span.op:app.start !transaction.op:[ui.load,navigation] !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render" !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:app.vitals.start.screen !has:tags[app.vitals.start.value,number] app.vitals.start.type:cold)',columns:["span.op","span.name","span.description"],aggregates:["avg(span.self_time)"],orderby:"-avg(span.self_time)",fields:["span.op","span.name","span.description","avg(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","Avg"]}],interval:"1h",layout:{h:6,x:0,y:5,w:3,minH:2}},{id:"warm-operations-table",title:"Warm Start Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:'(!is_transaction:true !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:span.description transaction.op:[ui.load,navigation] has:ttid app_start_type:warm span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true ((has:span.description !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render") OR (has:span.name !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render")) app.vitals.start.type:warm span.op:[app.start.cold,app.start.warm,contentprovider.load,application.load,activity.load,ui.load,process.load] OR !is_transaction:true !span.op:app.start !transaction.op:[ui.load,navigation] !span.name:"App Start" !span.name:"Cold Start" !span.name:"Warm Start" !span.name:"Cold App Start" !span.name:"Warm App Start" !span.name:"Initial Frame Render" !span.description:"Cold Start" !span.description:"Warm Start" !span.description:"Cold App Start" !span.description:"Warm App Start" !span.description:"Initial Frame Render" has:app.vitals.start.screen !has:tags[app.vitals.start.value,number] app.vitals.start.type:warm)',columns:["span.op","span.name","span.description"],aggregates:["avg(span.self_time)"],orderby:"-avg(span.self_time)",fields:["span.op","span.name","span.description","avg(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","Avg"]}],interval:"1h",layout:{h:6,x:3,y:5,w:3,minH:2}}]},"10":{title:"Mobile Vitals Screen Loads",description:"",widgets:[{id:"avg-ttid-big-number",title:"Average TTID",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"",fields:["avg(app.vitals.ttid.value)"]}],interval:"1h",layout:{h:1,x:0,y:0,w:2,minH:1}},{id:"avg-ttfd-big-number",title:"Average TTFD",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"",fields:["avg(app.vitals.ttfd.value)"]}],interval:"1h",layout:{h:1,x:2,y:0,w:2,minH:1}},{id:"total-count-big-number",title:"Total Count",description:"",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value))",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"",fields:["count_unique(transaction.span_id)"]}],interval:"1h",layout:{h:1,x:4,y:0,w:2,minH:1}},{id:"average-ttid-line",title:"Average TTID",description:"",displayType:"line",widgetType:"spans",queries:[{name:"TTID",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:[],aggregates:["avg(app.vitals.ttid.value)"],orderby:"avg(app.vitals.ttid.value)",fields:["avg(app.vitals.ttid.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:0,y:1,w:2,minH:2}},{id:"average-ttfd-line",title:"Average TTFD",description:"",displayType:"line",widgetType:"spans",queries:[{name:"TTFD",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:[],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"avg(app.vitals.ttfd.value)",fields:["avg(app.vitals.ttfd.value)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:2,y:1,w:2,minH:2}},{id:"total-count-line",title:"Total Count",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"((is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value) OR (is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value))",columns:[],aggregates:["count_unique(transaction.span_id)"],orderby:"count_unique(transaction.span_id)",fields:["count_unique(transaction.span_id)"],fieldAliases:[]}],interval:"1h",layout:{h:2,x:4,y:1,w:2,minH:2}},{id:"ttid-device-class-bar",title:"TTID by Device Class",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttid.value OR span.op:ui.load.initial_display has:app.vitals.ttid.value)",columns:["device.class"],aggregates:["avg(app.vitals.ttid.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.ttid.value)"],fieldAliases:["Device Class","AVG TTID"]}],interval:"1h",layout:{h:2,x:0,y:3,w:2,minH:2}},{id:"ttfd-device-class-bar",title:"TTFD by Device Class",description:"",displayType:"categorical_bar",widgetType:"spans",queries:[{name:"",conditions:"(is_transaction:true transaction.op:[ui.load,navigation] has:app.vitals.ttfd.value OR span.op:ui.load.full_display has:app.vitals.ttfd.value)",columns:["device.class"],aggregates:["avg(app.vitals.ttfd.value)"],orderby:"device.class",fields:["device.class","avg(app.vitals.ttfd.value)"],fieldAliases:["Device Class","AVG TTFD"]}],interval:"1h",layout:{h:2,x:2,y:3,w:2,minH:2}},{id:"span-operations-table",title:"Span Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"transaction.op:[ui.load,navigation] (has:span.description OR has:span.name) span.op:[file.read,file.write,ui.load,navigation,http.client,db,db.sql.room,db.sql.query,db.sql.transaction]",columns:["span.op","span.name","span.description"],aggregates:["equation|ttid_contribution_rate()","equation|ttfd_contribution_rate()","avg(span.self_time)","sum(span.self_time)"],orderby:"-sum(span.self_time)",fields:["span.op","span.name","span.description","equation|ttid_contribution_rate()","equation|ttfd_contribution_rate()","avg(span.self_time)","sum(span.self_time)"],fieldAliases:["Operation","Span Name","Span Description","TTID Contribution Rate","TTFD Contribution Rate","Avg Self Time","Total Time Spent"]}],interval:"1h",layout:{h:4,x:0,y:5,w:6,minH:2}}]},"11":{title:"Mobile Vitals Screen Rendering",description:"",widgets:[{id:"span-operations-table",title:"Span Operations",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"!is_transaction:true has:app.vitals.frames.total.count has:span.op",columns:["span.op","span.name","span.description"],aggregates:["equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","avg(app.vitals.frames.delay.value)"],orderby:"-avg(app.vitals.frames.delay.value)",fields:["span.op","span.name","span.description","equation|sum(app.vitals.frames.slow.count)/sum(app.vitals.frames.total.count)","equation|sum(app.vitals.frames.frozen.count)/sum(app.vitals.frames.total.count)","avg(app.vitals.frames.delay.value)"],fieldAliases:["Operation","Span Name","Span Description","Slow Frame %","Frozen Frame %","Delay"]}],interval:"1h",layout:{h:7,x:0,y:0,w:6,minH:2}}]},"12":{title:"Backend Overview",description:"Monitor backend services and dependencies, including caches and queues.",widgets:[{id:"requests-widget",title:"Requests",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Requests",conditions:"span.op:http.server",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:5,layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"jobs-chart",title:"Jobs",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"queries-by-time-spent-chart",title:"Queries by Time Spent",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","p75(span.duration)"],fieldAliases:[""]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"cache-miss-rates-chart",title:"Cache Miss Rates",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction"],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"-equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],fieldAliases:[""]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"backend-overview-transactions-table",title:"Transactions",description:"",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"( ( !span.op:pageload !span.op:navigation !span.op:ui.render !span.op:interaction !span.op:ui.action.swipe !span.op:ui.action.scroll !span.op:ui.action.click !span.op:ui.action !span.op:ui.load !span.op:app.lifecycle !span.op:ui.interaction !span.op:ui.interaction.click !span.op:ui.interaction.hover !span.op:ui.interaction.drag !span.op:ui.interaction.press !span.op:ui.webvital.cls !span.op:ui.webvital.lcp !span.op:ui.webvital.fcp ) OR ( span.op:http.server ) ) is_transaction:true",columns:["is_starred_transaction","request.method","transaction","span.op","project"],aggregates:["epm()","p50(span.duration)","p95(span.duration)","equation|failure_count() / count(span.duration)","count_unique(user)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["is_starred_transaction","request.method","transaction","span.op","project","epm()","p50(span.duration)","p95(span.duration)","equation|failure_count() / count(span.duration)","count_unique(user)","sum(span.duration)"],fieldAliases:["","HTTP Method","Transaction","Operation","Project","TPM","P50","P95","Failure rate","Users","Time Spent"]}],interval:"5m",layout:{x:0,w:6,h:6,minH:2,y:7}}]},"13":{title:"Mobile Session Health",description:"Monitor mobile session health by user and session.",widgets:[{id:"crash-free-sessions",title:"Crash Free Sessions",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:1,minH:1}},{id:"crash-free-users",title:"Crash Free Users",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(user)"],orderby:"",fields:["crash_free_rate(user)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:1,minH:1}},{id:"anr-rate",title:"ANR / App Hang Rate",displayType:"big_number",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["anr_rate()"],orderby:"",fields:["anr_rate()"]}],interval:"5m",layout:{x:4,y:0,w:2,h:1,minH:1}},{id:"crash-free-session-line-chart",title:"Crash Free Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(session)"],orderby:"",fields:["crash_free_rate(session)"]}],interval:"5m",layout:{x:0,y:1,w:3,h:2,minH:2}},{id:"crash-free-user-line-chart",title:"Crash Free Users",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["crash_free_rate(user)"],orderby:"",fields:["crash_free_rate(user)"]}],interval:"5m",layout:{x:3,y:1,w:3,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:4,w:3,h:2,minH:2}},{id:"total-sessions",title:"Total Sessions",displayType:"line",widgetType:"metrics",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(session)"],orderby:"",fields:["sum(session)"]}],interval:"5m",layout:{x:3,y:4,w:3,h:2,minH:2}},{id:"crash-rate-table",title:"Crash Free Rate by Project",displayType:"table",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["project"],aggregates:["crash_free_rate(session)"],orderby:"crash_free_rate(session)",fields:["project","crash_free_rate(session)"],fieldAliases:["Project","Crash Free Rate"]}],interval:"5m",layout:{x:0,y:6,w:6,h:2,minH:2}},{id:"release-table",title:"Releases",displayType:"table",widgetType:"metrics",queries:[{name:"",conditions:"",columns:["project","release"],aggregates:["crash_free_rate(session)","sum(session)"],orderby:"-release",fields:["project","release","crash_free_rate(session)","sum(session)"],fieldAliases:["Project","Release","Crash Free Rate","Total Sessions"]}],interval:"5m",layout:{x:0,y:8,w:6,h:3,minH:2}}]},"14":{title:"Frontend Overview",description:"Monitor frontend errors and performance telemetry.",widgets:[{id:"throughput-widget",title:"Transaction Throughput",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"( span.op:[pageload,navigation,ui.render,interaction] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] ) !span.op:http.server is_transaction:true",columns:[],aggregates:["epm()"],orderby:"-epm()",fields:["epm()"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"duration-widget",title:"Transaction Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"( span.op:[pageload,navigation,ui.render,interaction] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] ) !span.op:http.server is_transaction:true",columns:[],aggregates:["p50(span.duration)","p75(span.duration)","p95(span.duration)"],orderby:"-p50(span.duration)",fields:["p50(span.duration)","p75(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"assets-by-time-spent-widget",title:"Assets by Time Spent",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:'has:sentry.normalized_description has:sentry.normalized_description !sentry.normalized_description:"browser-extension://*" ( span.op:resource.script OR file_extension:css OR file_extension:[woff,woff2,ttf,otf,eot] OR file_extension:[jpg,jpeg,png,gif,svg,webp,apng,avif] OR span.op:resource.img )',columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["p75(span.duration)"]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"network-requests-by-time-spent-widget",title:"Network Requests by Time Spent",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:http",columns:["span.domain"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["p75(span.duration)"]}],interval:"5m",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"frontend-overview-table",title:"Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"!span.op:http.server ( span.op:[pageload,navigation,ui.render,interaction,ui.render,interaction,ui.interaction,ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,ui.webvital.fcp,pageload] OR sdk.name:[dart,dart-sentry-client,sentry.dart,sentry.dart.browser,sentry.dart.flutter,sentry.dart.logging,raven-js,sentry-browser,sentry.javascript.angular,sentry.javascript.angular-ivy,sentry.javascript.astro,sentry.javascript.browser,sentry.javascript.electron,sentry.javascript.ember,sentry.javascript.enrio,sentry.javascript.gatsby,sentry.javascript.miniapp,sentry.javascript.nextjs,sentry.javascript.nuxt,sentry.javascript.react,sentry.javascript.remix,sentry.javascript.solid,sentry.javascript.solidstart,sentry.javascript.svelte,sentry.javascript.sveltekit,sentry.javascript.uniapp,sentry.javascript.vue] )",columns:["is_starred_transaction","transaction","project"],aggregates:["equation|tpm()","equation|p50_if(span.duration,is_transaction,equals,true)","equation|p75_if(span.duration,is_transaction,equals,true)","equation|p95_if(span.duration,is_transaction,equals,true)","equation|failure_rate_if(is_transaction,equals,true)","count_unique(user)","equation|sum_if(span.duration,is_transaction,equals,true)","performance_score(measurements.score.total)"],orderby:"-equation|sum_if(span.duration,is_transaction,equals,true)",fields:["is_starred_transaction","transaction","project","equation|tpm()","equation|p50_if(span.duration,is_transaction,equals,true)","equation|p75_if(span.duration,is_transaction,equals,true)","equation|p95_if(span.duration,is_transaction,equals,true)","equation|failure_rate_if(is_transaction,equals,true)","count_unique(user)","equation|sum_if(span.duration,is_transaction,equals,true)","performance_score(measurements.score.total)"],fieldAliases:["","Transaction","Project","TPM","P50","P75","P95","Failure Rate","Users","Time Spent","Performance Score"]}],interval:"5m",layout:{x:0,y:7,w:6,h:6,minH:2}}]},"15":{title:"Next.js Overview",description:"Monitor frontend and SSR performance for Next.js applications.",widgets:[{id:"pageloads-widget",title:"Pageloads",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:pageload",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"score-breakdown-wheel",title:"Performance Score",description:"Tracks the overall performance rating of the pages in your selected project.",displayType:"wheel",widgetType:"spans",queries:[{name:"",conditions:'span.op:[ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,pageload,""]',columns:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"],aggregates:[],orderby:"",fields:["performance_score(measurements.score.lcp)","performance_score(measurements.score.fcp)","performance_score(measurements.score.inp)","performance_score(measurements.score.cls)","performance_score(measurements.score.ttfb)","performance_score(measurements.score.total)","count_scores(measurements.score.total)","count_scores(measurements.score.lcp)","count_scores(measurements.score.fcp)","count_scores(measurements.score.inp)","count_scores(measurements.score.cls)","count_scores(measurements.score.ttfb)"]}],interval:"5m",limit:1,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"rage-and-dead-clicks-widget",title:"Rage and Dead Clicks",description:"Visualizes the rage and dead clicks in your frontend project.",displayType:"rage_and_dead_clicks",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"5m",layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"slow-ssr-widget",title:"Slow SSR",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:function.nextjs",columns:["span.description"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["span.description","avg(span.duration)"]}],interval:"5m",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"client-transactions-table",title:"Client Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[ui.render,interaction,ui.interaction,ui.interaction.click,ui.interaction.hover,ui.interaction.drag,ui.interaction.press,ui.webvital.cls,ui.webvital.lcp,ui.webvital.fcp,pageload,navigation,default] !span.op:http.server is_transaction:true !sentry.origin:auto.db.* !sentry.origin:auto",columns:["transaction","span.op","project"],aggregates:["count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","performance_score(measurements.score.total)"],orderby:"-count(span.duration)",fields:["transaction","project","span.op","count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","performance_score(measurements.score.total)"],fieldAliases:["Transaction","","Operation","Views","Error Rate","Avg","P95","Perf Score"]}],interval:"5m",layout:{x:0,y:5,w:6,h:3,minH:2}},{id:"server-transactions-table",title:"Server Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server is_transaction:true",columns:["transaction","project"],aggregates:["count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],orderby:"-count(span.duration)",fields:["transaction","project","count(span.duration)","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],fieldAliases:["Transaction","","Views","Error Rate","Avg","P95","Time Spent"]}],interval:"5m",layout:{x:0,y:8,w:6,h:3,minH:2}},{id:"server-tree-widget",title:"SSR File Tree",description:"Visualizes the file tree of the server-rendered components in your Next.js project.",displayType:"server_tree",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"5m",layout:{x:0,y:11,w:6,h:3,minH:3}}]},"16":{title:"AI Agents Overview",description:"Monitor AI agent workflows, model costs, token usage, and tool calls.",widgets:[{id:"ai-agents-overview-agent-runs",title:"Agent Runs",description:"Number of agent runs captured over time.",displayType:"bar",widgetType:"spans",queries:[{name:"Count",conditions:"gen_ai.operation.type:agent",columns:[],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)"],fieldAliases:["Count"]}],interval:"1h",layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-estimated-cost",title:"Estimated Cost",description:"Estimated cost of LLM calls with token and model data.",displayType:"bar",widgetType:"spans",queries:[{name:"Cost",conditions:"gen_ai.operation.type:ai_client",columns:[],aggregates:["sum(gen_ai.cost.total_tokens)"],orderby:"-sum(gen_ai.cost.total_tokens)",fields:["sum(gen_ai.cost.total_tokens)"],fieldAliases:["Estimated Cost"]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-duration",title:"Duration",description:"Average and p95 duration for agent runs and LLM calls.",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:[agent, ai_client]",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"-avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:["Avg","P95"]}],interval:"1h",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"ai-agents-overview-llm-calls-by-model",title:"LLM Calls by Model",description:"Number of LLM calls grouped by response model.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.response.model","count(span.duration)"],fieldAliases:["Model","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"ai-agents-overview-tokens-used",title:"Tokens Used",description:"Total tokens used by LLM calls, grouped by response model.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.usage.total_tokens)"],orderby:"-sum(gen_ai.usage.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.usage.total_tokens)"],fieldAliases:["Model","Total Tokens"]}],interval:"1h",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"ai-agents-overview-tool-calls",title:"Tool Calls",description:"Tool call volume grouped by tool name.",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"ai-agents-traces-table",title:"Traces",description:"Agent traces with duration, token, cost, and tool usage.",displayType:"agents_traces_table",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:[],orderby:"",fields:[]}],interval:"1h",limit:10,layout:{x:0,y:6,w:6,h:4,minH:2}}]},"17":{title:"AI Agents Model Details",description:"View AI agent token usage and costs by model.",widgets:[{id:"ai-agents-model-cost",title:"Model Cost",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.cost.total_tokens)"],orderby:"-sum(gen_ai.cost.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.cost.total_tokens)"],fieldAliases:["Model","Total Cost"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"ai-agents-token-usage",title:"Tokens Used",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["sum(gen_ai.usage.total_tokens)"],orderby:"-sum(gen_ai.usage.total_tokens)",fields:["gen_ai.response.model","sum(gen_ai.usage.total_tokens)"],fieldAliases:["Model","Total Tokens"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"ai-agents-token-types",title:"Token Types",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:[],aggregates:["sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],orderby:"",fields:["sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],fieldAliases:["Input Tokens","Cached Input Tokens","Output Tokens","Reasoning Tokens"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"ai-agents-models-table",title:"Models",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:ai_client",columns:["gen_ai.response.model"],aggregates:["count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)","sum(gen_ai.cost.total_tokens)","sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],orderby:"-count()",fields:["gen_ai.response.model","count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)","sum(gen_ai.cost.total_tokens)","sum(gen_ai.usage.input_tokens)","sum(gen_ai.usage.cache_read.input_tokens)","sum(gen_ai.usage.output_tokens)","sum(gen_ai.usage.reasoning.output_tokens)"],fieldAliases:["Model","Requests","Errors","Avg","P95","Cost","Input Tokens","Cached Tokens","Output Tokens","Reasoning Tokens"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"18":{title:"AI Agents Tool Details",description:"Track AI agent tool calls and error rates.",widgets:[{id:"ai-agents-tool-calls",title:"Tool Calls",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:3,h:3,minH:3}},{id:"ai-agents-tool-errors",title:"Tool Errors",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool span.status:[internal_error,error]",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Errors"]}],interval:"1h",limit:3,layout:{x:3,y:0,w:3,h:3,minH:3}},{id:"ai-agents-tools-table",title:"Tools",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"gen_ai.operation.type:tool",columns:["gen_ai.tool.name"],aggregates:["count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.tool.name","count()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Tool","Requests","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"19":{title:"MCP Overview",description:"Monitor MCP server usage and performance.",widgets:[{id:"mcp-overview-traffic",title:"Traffic",displayType:"bar",widgetType:"spans",queries:[{name:"Count",conditions:"span.op:mcp.server",columns:[],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["count(span.duration)"],fieldAliases:["Count"]}],interval:"1h",layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-traffic-by-client",title:"Traffic by Client",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server",columns:["mcp.client.name"],aggregates:["count()"],orderby:"-count()",fields:["mcp.client.name","count()"],fieldAliases:["Client","Count"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-transport-distribution",title:"Transport Distribution",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:network.transport",columns:["network.transport"],aggregates:["count()"],orderby:"-count()",fields:["network.transport","count()"],fieldAliases:["Transport","Count"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-tools",title:"Most Used Tools",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Count"]}],interval:"1h",limit:3,layout:{x:0,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-resources",title:"Most Used Resources",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.resource.uri","count(span.duration)"],fieldAliases:["Resource","Count"]}],interval:"1h",limit:3,layout:{x:2,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-most-used-prompts",title:"Most Used Prompts",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.prompt.name","count(span.duration)"],fieldAliases:["Prompt","Count"]}],interval:"1h",limit:3,layout:{x:4,y:3,w:2,h:3,minH:3}},{id:"mcp-overview-table",title:"MCP Overview",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server",columns:["span.description"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["span.description","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Span Description","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:6,w:6,h:4,minH:2}}]},"20":{title:"MCP Tool Details",description:"Track MCP tool call latency, frequency, and error rates.",widgets:[{id:"mcp-tools-most-used-tools",title:"Most Used Tools",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.tool.name","count(span.duration)"],fieldAliases:["Tool","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-slowest-tools",title:"Slowest Tools",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["gen_ai.tool.name","avg(span.duration)"],fieldAliases:["Tool","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-most-failing-tools",title:"Most Failing Tools",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["gen_ai.tool.name","failure_rate()"],fieldAliases:["Tool","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-tools-table",title:"Tools",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.tool.name",columns:["gen_ai.tool.name"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.tool.name","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Tool Name","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"21":{title:"MCP Resource Details",description:"Track MCP resource call latency, frequency, and error rates.",widgets:[{id:"mcp-resources-most-used-resources",title:"Most Used Resources",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["mcp.resource.uri","count(span.duration)"],fieldAliases:["Resource","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-slowest-resources",title:"Slowest Resources",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["mcp.resource.uri","avg(span.duration)"],fieldAliases:["Resource","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-most-failing-resources",title:"Most Failing Resources",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["mcp.resource.uri","failure_rate()"],fieldAliases:["Resource","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-resources-table",title:"Resources",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:mcp.resource.uri",columns:["mcp.resource.uri"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["mcp.resource.uri","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Resource URI","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"22":{title:"MCP Prompt Details",description:"Track MCP prompt call latency, frequency, and error rates.",widgets:[{id:"mcp-prompts-most-used-prompts",title:"Most Used Prompts",displayType:"bar",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["count(span.duration)"],orderby:"-count(span.duration)",fields:["gen_ai.prompt.name","count(span.duration)"],fieldAliases:["Prompt","Calls"]}],interval:"1h",limit:3,layout:{x:0,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-slowest-prompts",title:"Slowest Prompts",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["avg(span.duration)"],orderby:"-avg(span.duration)",fields:["gen_ai.prompt.name","avg(span.duration)"],fieldAliases:["Prompt","Avg"]}],interval:"1h",limit:3,layout:{x:2,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-most-failing-prompts",title:"Most Failing Prompts",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["failure_rate()"],orderby:"-failure_rate()",fields:["gen_ai.prompt.name","failure_rate()"],fieldAliases:["Prompt","Error Rate"]}],interval:"1h",limit:3,layout:{x:4,y:0,w:2,h:3,minH:3}},{id:"mcp-prompts-table",title:"Prompts",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:mcp.server has:gen_ai.prompt.name",columns:["gen_ai.prompt.name"],aggregates:["count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],orderby:"-count()",fields:["gen_ai.prompt.name","count()","failure_rate()","equation|count_if(span.status,equals,internal_error) + count_if(span.status,equals,error)","avg(span.duration)","p95(span.duration)"],fieldAliases:["Prompt Name","Requests","Error Rate","Errors","Avg","P95"]}],interval:"1h",layout:{x:0,y:3,w:6,h:4,minH:2}}]},"23":{title:"Laravel Overview",description:"Monitor Laravel services and dependencies, including background jobs.",widgets:[{id:"requests-widget",title:"Requests",description:"",displayType:"line",widgetType:"spans",queries:[{name:"Requests",conditions:"span.op:http.server",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:5,layout:{x:0,y:0,w:2,h:2,minH:2}},{id:"api-latency-widget",title:"API Latency",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["avg(span.duration)","p95(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)","p95(span.duration)"],fieldAliases:[]}],interval:"1h",layout:{x:2,y:0,w:2,h:2,minH:2}},{id:"issue-counts",title:"Issue Counts",displayType:"bar",widgetType:"issue",queries:[{name:"",conditions:"",columns:[],aggregates:["count(new_issues)","count(resolved_issues)"],orderby:"",fields:["count(new_issues)","count(resolved_issues)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:2,minH:2}},{id:"jobs-chart",title:"Jobs",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],orderby:"count(span.duration)",fields:["count(span.duration)","equation|(count_if(trace.status,equals,internal_error) + count_if(trace.status,equals,error)) / count(span.duration)"],fieldAliases:[]}],interval:"1h",limit:3,layout:{x:0,y:2,w:2,h:3,minH:3}},{id:"queries-by-time-spent-chart",title:"Queries by Time Spent",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.category:db has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["p75(span.duration)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","p75(span.duration)"],fieldAliases:[""]}],interval:"5m",limit:3,layout:{x:2,y:2,w:2,h:3,minH:3}},{id:"cache-miss-rates-chart",title:"Cache Miss Rates",description:"",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction"],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"-equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],fieldAliases:[""]}],interval:"1h",limit:3,layout:{x:4,y:2,w:2,h:3,minH:3}},{id:"paths-table",title:"Paths",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"transaction.op:http.server is_transaction:true",columns:["http.request.method","transaction"],aggregates:["count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)","count_unique(user)"],orderby:"-count()",fields:["http.request.method","transaction","count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)","count_unique(user)"],fieldAliases:["Method","Path","Requests","Error Rate","Avg","P95","Time Spent","Users"]}],interval:"5m",layout:{x:0,y:7,w:6,h:3,minH:2}},{id:"commands-table",title:"Commands",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:console.command*",columns:["command"],aggregates:["count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],orderby:"-count()",fields:["command","count()","failure_rate()","avg(span.duration)","p95(span.duration)","sum(span.duration)"],fieldAliases:["Command","Invocations","Error Rate","Avg","P95","Time Spent"]}],interval:"5m",layout:{x:0,y:10,w:6,h:3,minH:2}},{id:"jobs-table",title:"Jobs",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:["messaging.destination.name","transaction"],aggregates:["count()","failure_rate()","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","sum(span.duration)"],orderby:"-count()",fields:["transaction","messaging.destination.name","count()","failure_rate()","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Job","Queue Name","Processed","Error Rate","Avg Time in Queue","Avg Processing Time","Time Spent"]}],interval:"5m",layout:{x:0,y:13,w:6,h:3,minH:2}}]},"24":{title:"Frontend Assets",description:"Track JS, CSS, and image asset performance, with per-resource drill-downs.",widgets:[{id:"requests-per-min-widget",title:"Requests per Minute",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"average-duration-widget",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"assets-table",title:"Assets",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"has:sentry.normalized_description",columns:["sentry.normalized_description"],aggregates:["epm()","avg(span.duration)","sum(span.duration)","avg(http.response_content_length)"],orderby:"-sum(span.duration)",fields:["sentry.normalized_description","epm()","avg(span.duration)","sum(span.duration)","avg(http.response_content_length)"],fieldAliases:["Asset description","Requests per Minute","Avg","Time Spent","Avg Encoded Size"]}],interval:"5m",layout:{x:0,y:2,w:6,h:6,minH:2}}]},"25":{title:"Frontend Assets Summary",description:"",widgets:[{id:"domain-widget",title:"Example Asset",displayType:"details",widgetType:"spans",queries:[{name:"",conditions:"",columns:["id","span.op","span.group","span.description","span.category","project.id"],aggregates:[],orderby:"id",fields:["id","span.op","span.group","span.description","span.category","project.id"],fieldAliases:[]}],interval:"5m",layout:{x:0,y:0,minH:2,h:2,w:6}},{id:"request-per-min-big-number",title:"Requests per Minute",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:2,w:1,h:1,minH:1}},{id:"average-encoded-size-big-number",title:"Average Encoded Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.response_content_length)"],orderby:"avg(http.response_content_length)",fields:["avg(http.response_content_length)"]}],interval:"5m",layout:{x:1,y:2,w:1,h:1,minH:1}},{id:"average-decoded-size-big-number",title:"Average Decoded Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.decoded_response_content_length)"],orderby:"avg(http.decoded_response_content_length)",fields:["avg(http.decoded_response_content_length)"]}],interval:"5m",layout:{x:2,y:2,w:1,h:1,minH:1}},{id:"average-transfer-size-big-number",title:"Average Transfer Size",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.response_transfer_size)"],orderby:"avg(http.response_transfer_size)",fields:["avg(http.response_transfer_size)"]}],interval:"5m",layout:{x:3,y:2,w:1,h:1,minH:1}},{id:"average-duration-big-number",title:"Average Duration",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:4,y:2,w:1,h:1,minH:1}},{id:"time-spent-big-number",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:2,w:1,h:1,minH:1}},{id:"requests-per-min-widget",title:"Requests per Minute",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:0,y:3,w:2,h:2,minH:2}},{id:"average-duration-widget",title:"Average Duration",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(span.duration)"]}],interval:"5m",layout:{x:2,y:3,w:2,h:2,minH:2}},{id:"average-asset-size-widget",title:"Average Asset Size",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(http.decoded_response_content_length)","avg(http.response_transfer_size)","avg(http.response_content_length)"],orderby:"avg(http.response_content_length)",fields:["avg(http.decoded_response_content_length)","avg(http.response_transfer_size)","avg(http.response_content_length)"],fieldAliases:["Avg Decoded Size","Avg Transfer Size","Avg Encoded Size"]}],interval:"5m",layout:{x:4,y:3,w:2,h:2,minH:2}},{id:"assets-table-widget",title:"Pages Containing This Asset",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"",columns:["transaction","resource.render_blocking_status"],aggregates:["epm()","avg(span.duration)","avg(http.response_content_length)"],orderby:"-epm()",fields:["transaction","epm()","avg(span.duration)","avg(http.response_content_length)","resource.render_blocking_status"],fieldAliases:["Transaction","Requests per Minute","Avg","Avg Encoded Size","Render Blocking"]}],interval:"5m",layout:{x:0,y:5,minH:2,h:6,w:6}}]},"26":{title:"Queues",description:"Track message queue throughput, latency, and error rates.",widgets:[{id:"average-duration-widget",title:"Average Duration",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["avg(messaging.message.receive.latency)","avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(messaging.message.receive.latency)","avg(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Published vs Processed",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["span.op"],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"destination-table",title:"Destinations",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["messaging.destination.name"],aggregates:["avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["messaging.destination.name","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Destination","Avg time in queue","Avg processing time","Error rate","Published","Processed","Time spent"]}],interval:"5m",layout:{x:0,y:3,w:6,h:6,minH:2}}]},"27":{title:"Queue Summary",description:"",widgets:[{id:"avg-time-in-queue-widget",title:"Average Time in Queue",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["avg(messaging.message.receive.latency)"],orderby:"avg(messaging.message.receive.latency)",fields:["avg(messaging.message.receive.latency)"]}],interval:"5m",layout:{x:0,y:0,w:1,h:1,minH:1}},{id:"avg-processing-time-widget",title:"Average Processing Time",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|avg_if(span.duration,span.op,equals,queue.process)"],orderby:"equation|avg_if(span.duration,span.op,equals,queue.process)",fields:["equation|avg_if(span.duration,span.op,equals,queue.process)"]}],interval:"5m",layout:{x:1,y:0,w:1,h:1,minH:1}},{id:"error-rate-widget",title:"Error Rate",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))"],orderby:"equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))",fields:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))"]}],interval:"5m",layout:{x:2,y:0,w:1,h:1,minH:1}},{id:"published-widget",title:"Published",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|count_if(span.op,equals,queue.publish)"],orderby:"equation|count_if(span.op,equals,queue.publish)",fields:["equation|count_if(span.op,equals,queue.publish)"]}],interval:"5m",layout:{x:3,y:0,w:1,h:1,minH:1}},{id:"processed-widget",title:"Processed",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["equation|count_if(span.op,equals,queue.process)"],orderby:"equation|count_if(span.op,equals,queue.process)",fields:["equation|count_if(span.op,equals,queue.process)"]}],interval:"5m",layout:{x:4,y:0,w:1,h:1,minH:1}},{id:"time-spent-widget",title:"Time Spent",displayType:"big_number",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.process,queue.publish]",columns:[],aggregates:["sum(span.duration)"],orderby:"sum(span.duration)",fields:["sum(span.duration)"]}],interval:"5m",layout:{x:5,y:0,w:1,h:1,minH:1}},{id:"average-duration-widget",title:"Average Duration",displayType:"area",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:[],aggregates:["avg(messaging.message.receive.latency)","avg(span.duration)"],orderby:"avg(span.duration)",fields:["avg(messaging.message.receive.latency)","avg(span.duration)"]}],interval:"5m",layout:{x:0,y:1,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Published vs Processed",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[queue.publish, queue.process]",columns:["span.op"],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:1,w:3,h:2,minH:2}},{id:"consumer-table",title:"Consumer Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.process",columns:["transaction"],aggregates:["avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","avg(messaging.message.receive.latency)","equation|avg_if(span.duration,span.op,equals,queue.process)","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.process)","sum(span.duration)"],fieldAliases:["Transaction","Avg time in queue","Avg processing time","Error rate","Processed","Time spent"]}],interval:"5m",layout:{x:0,y:4,w:6,h:3,minH:3}},{id:"producer-table",title:"Producer Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:queue.publish",columns:["transaction"],aggregates:["equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","equation|1 - (count_if(trace.status,equals,ok) / count(span.duration))","equation|count_if(span.op,equals,queue.publish)","sum(span.duration)"],fieldAliases:["Transaction","Error rate","Published","Time spent"]}],interval:"5m",layout:{x:0,y:7,w:6,h:3,minH:3}}]},"28":{title:"Caches",description:"Track cache hit rates, throughput, and latency.",widgets:[{id:"cache-hits-widget",title:"Miss Rate",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:[],aggregates:["equation|count_if(cache.hit,equals,false) / count(span.duration)"],orderby:"equation|count_if(cache.hit,equals,false) / count(span.duration)",fields:["equation|count_if(cache.hit,equals,false) / count(span.duration)"]}],interval:"5m",layout:{x:0,y:0,w:3,h:2,minH:2}},{id:"throughput-widget",title:"Throughput",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:[],aggregates:["epm()"],orderby:"epm()",fields:["epm()"]}],interval:"5m",layout:{x:3,y:0,w:3,h:2,minH:2}},{id:"transaction-table",title:"Transactions",displayType:"table",widgetType:"spans",queries:[{name:"",conditions:"span.op:[cache.get,cache.get_item]",columns:["transaction","project"],aggregates:["avg(cache.item_size)","epm()","equation|count_if(cache.hit,equals,false) / count(span.duration)","sum(span.duration)"],orderby:"-sum(span.duration)",fields:["transaction","project","avg(cache.item_size)","epm()","equation|count_if(cache.hit,equals,false) / count(span.duration)","sum(span.duration)"],fieldAliases:["Transaction","Project","Avg Value Size","Requests Per Minute","Miss Rate","Time Spent"]}],interval:"5m",layout:{x:0,y:3,w:6,h:6,minH:2}}]},"29":{title:"Node.js Runtime Metrics",description:"Track Node.js runtime metrics, including memory usage and event loop utilization.",widgets:[{id:"node-runtime-event-loop-utilization-kpi",title:"Event Loop Utilization",description:"Average fraction of time the Node.js event loop is active (0-100%) across the selected time range. High utilization means less capacity to handle new work and may indicate CPU-bound processing or blocking operations.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.event_loop.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.event_loop.utilization,gauge,none)"]}],interval:"5m",layout:{x:0,y:0,w:2,h:1,minH:1}},{id:"node-runtime-cpu-utilization-kpi",title:"CPU Utilization",description:"Average CPU usage across all cores over the selected time range. Values above 1.0 (100%) are possible on multi-core systems. Sustained high utilization may indicate compute-bound workloads or insufficient scaling.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.cpu.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.cpu.utilization,gauge,none)"]}],interval:"5m",layout:{x:2,y:0,w:2,h:1,minH:1}},{id:"node-runtime-process-uptime-kpi",title:"Process Uptime",description:"Total process uptime summed across instances. Sudden resets indicate process crashes or restarts. Useful for detecting instability and correlating with deployment events.",displayType:"big_number",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["sum(value,node.runtime.process.uptime,counter,second)"],orderby:"",fields:["sum(value,node.runtime.process.uptime,counter,second)"]}],interval:"5m",layout:{x:4,y:0,w:2,h:1,minH:1}},{id:"node-runtime-memory-usage",title:"Memory Usage",description:"Resident Set Size (RSS, total memory footprint), V8 heap total (allocated), and heap used (in-use). Growing RSS without matching heap growth may indicate native memory leaks. Heap used approaching heap total triggers more frequent garbage collection.",displayType:"area",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.mem.rss,gauge,byte)","avg(value,node.runtime.mem.heap_total,gauge,byte)","avg(value,node.runtime.mem.heap_used,gauge,byte)"],orderby:"",fields:["avg(value,node.runtime.mem.rss,gauge,byte)","avg(value,node.runtime.mem.heap_total,gauge,byte)","avg(value,node.runtime.mem.heap_used,gauge,byte)"]}],interval:"5m",layout:{x:0,y:1,w:6,h:2,minH:2}},{id:"node-runtime-cpu-utilization-over-time",title:"CPU Utilization Over Time",description:"CPU utilization trend over time. Correlate spikes with deployments, traffic changes, or event loop delay increases to identify compute-bound bottlenecks.",displayType:"line",widgetType:"tracemetrics",queries:[{name:"",conditions:"",columns:[],aggregates:["avg(value,node.runtime.cpu.utilization,gauge,none)"],orderby:"",fields:["avg(value,node.runtime.cpu.utilization,gauge,none)"]}],interval:"5m",layout:{x:0,y:3,w:3,h:2,minH:2}},{id:"node-runtime-http-request-duration",title:"HTTP Request Duration",description:"Server-side HTTP request latency (p50 and p95). Compare with event loop delay and CPU utilization to determine if slow responses are caused by runtime bottlenecks or application logic.",displayType:"line",widgetType:"spans",queries:[{name:"",conditions:"span.op:http.server",columns:[],aggregates:["p50(span.duration)","p95(span.duration)"],orderby:"",fields:["p50(span.duration)","p95(span.duration)"]}],interval:"5m",layout:{x:3,y:3,w:3,h:2,minH:2}}]}}};var PREBUILT_DASHBOARDS=prebuiltDashboards_generated_default.dashboards;function withPrebuiltListMetadata(dashboard){if(dashboard.prebuiltId==null)return dashboard;let definition=PREBUILT_DASHBOARDS[dashboard.prebuiltId];if(!definition)return dashboard;return{...dashboard,description:dashboard.description||definition.description,widgetDisplay:dashboard.widgetDisplay.length>0?dashboard.widgetDisplay:definition.widgets.map((widget)=>widget.displayType)}}function withPrebuiltDetails(dashboard){if(dashboard.widgets.length>0||dashboard.prebuiltId==null)return dashboard;let definition=PREBUILT_DASHBOARDS[dashboard.prebuiltId];return definition?{...dashboard,widgets:structuredClone(definition.widgets)}:dashboard}function useDashboards(client2,{org,filter,query="",sort,reloadToken=0}){let loader=useCallback18((signal)=>{if(!client2)return null;return listDashboards(client2,{org,filter,query,sort,signal}).then((page)=>({data:Array.isArray(page.data)?page.data.map(withPrebuiltListMetadata):[],nextCursor:page.nextCursor}))},[client2,org,filter,query,sort]),{status}=useAsyncFetch(loader,{reloadKey:reloadToken});return{dashboards:mapAsyncStatus(status,(page)=>page.data),nextCursor:valueOf(status)?.nextCursor??null}}function useStarredDashboards(client2,{org,enabled,reloadToken=0}){let[dashboards,setDashboards]=useState20([]);return useEffect19(()=>{if(!client2||!enabled||!org){setDashboards([]);return}let controller=new AbortController,cancelled=!1;return listStarredDashboards(client2,{org,signal:controller.signal}).then((data)=>{if(!cancelled)setDashboards(data.map(withPrebuiltListMetadata))}).catch(()=>{if(!cancelled)setDashboards([])}),()=>{cancelled=!0,controller.abort()}},[client2,org,enabled,reloadToken]),dashboards}function useDashboardsNavExtras(client2,org,enabled,reloadToken){let starred=useStarredDashboards(client2,{org,enabled,reloadToken});return useMemo12(()=>{if(starred.length===0)return NO_NAV_EXTRAS;return{sections:[{title:"Starred Dashboards",items:starred.map((dashboard)=>({label:dashboard.title,target:{group:"dashboards",item:"All Dashboards"}}))}]}},[starred])}import{useEffect as useEffect20,useRef as useRef14,useState as useState21}from"h:0__";function useSavedQueries(client2,{org,source,starred,search,sort,limit,enabled=!0,reloadToken=0}){let[status,setStatus]=useState21(idle),[nextCursor,setNextCursor]=useState21(null),statusRef=useRef14(status);return statusRef.current=status,useEffect20(()=>{if(!client2||!enabled)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await listSavedQueriesPage(client2,source,{org,starred,search,sort,limit,signal});if(cancelled)return;setStatus(resolved(page.data,Date.now())),setNextCursor(page.nextCursor)}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,source,starred,search,sort,limit,enabled,reloadToken]),{queries:status,nextCursor}}import{useEffect as useEffect22,useMemo as useMemo13}from"h:0__";var SAVED_QUERY_SCREENS={"explore.all-queries":{source:"explore",title:"All Queries",description:"Saved Explore queries for this organization.",noun:"saved queries",searchPlaceholder:"Search queries by name\u2026",activityLabel:"Last Viewed",emptyHint:"This organization may not have Explore saved queries enabled."},"explore.discover":{source:"discover",title:"Discover",description:"Legacy saved queries, superseded by All Queries.",noun:"Discover queries",searchPlaceholder:"Search queries by name\u2026",activityLabel:"Last Edited",emptyHint:"This organization may not have Discover enabled."}};function savedQueryScreen(id){return SAVED_QUERY_SCREENS[id]}var SAVED_QUERY_RESULTS_STATE_KEY="explore.saved-query-results";import{useRef as useRef15}from"h:0__";import{useEffect as useEffect21}from"h:0__";function scrollTopForRow({index,rowCount,rowHeight,viewportHeight,scrollTop}){return scrollTopForRowAt({rowTop:index*rowHeight,rowHeight,contentHeight:rowCount*rowHeight,viewportHeight,scrollTop})}function scrollTopForRowAt({rowTop,rowHeight,contentHeight,viewportHeight,scrollTop}){let maxScrollTop=Math.max(0,contentHeight-viewportHeight),rowBottom=rowTop+rowHeight,next=rowTop<scrollTop||rowHeight>viewportHeight?rowTop:rowBottom>scrollTop+viewportHeight?rowBottom-viewportHeight:scrollTop;return Math.min(Math.max(next,0),maxScrollTop)}function useRowScrollFollow(list,{index,rowCount,rowHeight,layout=[]}){let rowTop,selectedHeight,contentHeight;if(typeof rowHeight==="number")selectedHeight=rowHeight,contentHeight=rowCount*rowHeight;else{rowTop=0;for(let i=0;i<index&&i<rowHeight.length;i++)rowTop+=rowHeight[i]??0;selectedHeight=rowHeight[index]??0,contentHeight=rowHeight.reduce((total,height)=>total+height,0)}useEffect21(()=>{let box=list.current;if(!box||rowCount===0)return;let viewportHeight=box.viewport.height;if(viewportHeight<=0)return;let next=rowTop===void 0?scrollTopForRow({index,rowCount,rowHeight:selectedHeight,viewportHeight,scrollTop:box.scrollTop}):scrollTopForRowAt({rowTop,rowHeight:selectedHeight,contentHeight,viewportHeight,scrollTop:box.scrollTop});if(next!==box.scrollTop)box.scrollTop=next},[list,index,rowCount,rowTop,selectedHeight,contentHeight,...layout])}import{jsxDEV as jsxDEV34,Fragment as Fragment11}from"h:6___________________________";var DEFAULT_GUTTER=2,DEFAULT_SKELETON_ROWS=20;function rowHeightOf(options){return normalizeContentHeight(options.contentHeight)+(options.renderDetail?1:0)+(options.separator?1:0)}function normalizeContentHeight(value){if(value===void 0||!Number.isFinite(value))return 1;return Math.max(1,Math.floor(value))}function DataTable({rows,columns,width,selectedIndex,focused,rowKey,loading=!1,error,onRowClick,renderDetail,rowContentHeight,skeletonContentHeight=1,separator=!1,skeletonRows=DEFAULT_SKELETON_ROWS,empty,errorTitle="Failed to load",gap=1,minFlex,gutter=DEFAULT_GUTTER,layout=[]}){let theme=useTheme(),listRef=useRef15(null),rowWidth=Math.max(1,width-gutter),resolved2=layoutColumns(columns,rowWidth,{gap,minFlex}),visibleColumns=resolved2.map(({column})=>column),fixedRowHeight=rowHeightOf({renderDetail,separator}),contentHeights=rows&&rowContentHeight?rows.map((row,index)=>normalizeContentHeight(rowContentHeight(row,index,visibleColumns))):void 0,rowHeight=contentHeights?contentHeights.map((contentHeight)=>rowHeightOf({contentHeight,renderDetail,separator})):fixedRowHeight;useRowScrollFollow(listRef,{index:selectedIndex,rowCount:rows?.length??0,rowHeight,layout});let showSkeleton=rows===void 0&&loading,showEmpty=rows!==void 0&&rows.length===0&&!loading;return jsxDEV34(Fragment11,{children:[jsxDEV34(TableHeader,{resolved:resolved2,width:rowWidth,gap},void 0,!1,void 0,this),jsxDEV34("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[showSkeleton?Array.from({length:skeletonRows},(_,i)=>jsxDEV34(SkeletonRow,{resolved:resolved2,width:rowWidth,gap,seed:i,contentHeight:skeletonContentHeight,detail:Boolean(renderDetail),separator},i,!1,void 0,this)):null,showEmpty&&empty?jsxDEV34(TableEmpty,{...empty},void 0,!1,void 0,this):null,rows?.map((row,index)=>jsxDEV34(Row,{row,index,resolved:resolved2,width:rowWidth,gap,selected:focused&&index===selectedIndex,contentHeight:contentHeights?.[index]??1,renderDetail,separator,onRowClick},rowKey(row,index),!1,void 0,this)),error&&rows===void 0?jsxDEV34(TableError,{title:errorTitle,error},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function TableHeader({resolved:resolved2,width,gap}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"row",width,border:["bottom"],borderColor:theme.border,flexShrink:0},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV34(Cell,{width:cellWidth,gap:i>0?gap:0,children:jsxDEV34("text",{fg:theme.muted,children:padText(column.label,cellWidth,column.align??"left")},void 0,!1,void 0,this)},column.key,!1,void 0,this))},void 0,!1,void 0,this)}function Cell({width,gap,children}){return jsxDEV34(Fragment11,{children:[gap>0?jsxDEV34("text",{children:" ".repeat(gap)},void 0,!1,void 0,this):null,jsxDEV34("box",{style:{width,flexShrink:0,flexDirection:"row",overflow:"hidden"},children},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Row({row,index,resolved:resolved2,width,gap,selected,contentHeight,renderDetail,separator,onRowClick}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",width,backgroundColor:selected?theme.selected:void 0,flexShrink:0},onMouseDown:onRowClick?()=>onRowClick(index,row):void 0,children:[jsxDEV34("box",{style:{flexDirection:"row",height:contentHeight,flexShrink:0},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV34(Cell,{width:cellWidth,gap:i>0?gap:0,children:column.render(row,selected,cellWidth)},column.key,!1,void 0,this))},void 0,!1,void 0,this),renderDetail?jsxDEV34("box",{style:{flexDirection:"row",width},children:renderDetail(row,selected,width)},void 0,!1,void 0,this):null,separator?jsxDEV34("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,width))},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function SkeletonRow({resolved:resolved2,width,gap,seed,contentHeight,detail,separator}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",width,flexShrink:0},children:[Array.from({length:normalizeContentHeight(contentHeight)},(_,line)=>jsxDEV34("box",{style:{flexDirection:"row"},children:resolved2.map(({column,width:cellWidth},i)=>jsxDEV34(Cell,{width:cellWidth,gap:i>0?gap:0,children:jsxDEV34("text",{fg:theme.panelAlt,children:padText(bar(cellWidth,seed+line+i),cellWidth,column.align??"left")},void 0,!1,void 0,this)},column.key,!1,void 0,this))},line,!1,void 0,this)),detail?jsxDEV34("box",{style:{flexDirection:"row",width},children:jsxDEV34("text",{fg:theme.panelAlt,children:padText(bar(width,seed+7),width)},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,separator?jsxDEV34("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,width))},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function bar(width,seed){if(width<=0)return"";let fraction=0.4+seed*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(width,Math.floor(width*fraction))))}function TableEmpty({title,lines=[]}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV34("text",{fg:theme.text,children:title},void 0,!1,void 0,this),lines.filter(Boolean).map((line,i)=>jsxDEV34("text",{fg:theme.muted,children:line},i,!1,void 0,this))]},void 0,!0,void 0,this)}function TableError({title,error}){let theme=useTheme();return jsxDEV34("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV34("text",{fg:theme.danger,children:title},void 0,!1,void 0,this),jsxDEV34("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV34("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV35}from"h:6___________________________";function DirectDetailStatus({status,noun,width,height}){let theme=useTheme(),error=errorOf(status);return jsxDEV35("box",{style:{flexDirection:"column",width,height,paddingLeft:1},children:jsxDEV35("text",{fg:error?theme.danger:theme.muted,children:error?`Failed to load ${noun}: ${error.message}`:`Loading ${noun}\u2026`},void 0,!1,void 0,this)},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV36}from"h:6___________________________";function resultCountLabel(count,noun,hasMore=!1){let suffix=hasMore?"+":"",label=count===1&&!hasMore?noun:`${noun}s`;return`${formatCount(count)}${suffix} ${label}`}function ResultFooter({count,noun,hasMore=!1,pagination}){let theme=useTheme(),canPrevious=pagination?.hasPrevious&&!pagination.loading,canNext=pagination?.hasNext&&!pagination.loading;return jsxDEV36("box",{style:{flexDirection:"row",flexShrink:0,height:1,paddingLeft:1,paddingRight:1},children:[jsxDEV36("text",{fg:theme.subText,children:count===void 0?"":resultCountLabel(count,noun,hasMore)},void 0,!1,void 0,this),jsxDEV36("box",{style:{flexGrow:1}},void 0,!1,void 0,this),pagination?jsxDEV36("box",{style:{flexDirection:"row",flexShrink:0},children:[pagination.hasPrevious?jsxDEV36("box",{style:{flexDirection:"row"},onMouseDown:canPrevious?pagination.onPrevious:void 0,children:[jsxDEV36(KeyHint,{command:"sentry.nav.pageUp"},void 0,!1,void 0,this),jsxDEV36("text",{fg:canPrevious?theme.muted:theme.subText,children:" \u2039 "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV36("text",{fg:theme.subText,children:pagination.page},void 0,!1,void 0,this),pagination.hasNext?jsxDEV36("box",{style:{flexDirection:"row"},onMouseDown:canNext?pagination.onNext:void 0,children:[jsxDEV36("text",{fg:canNext?theme.muted:theme.subText,children:" \u203A "},void 0,!1,void 0,this),jsxDEV36(KeyHint,{command:"sentry.nav.pageDown"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as useCallback19,useRef as useRef16}from"h:0__";import{RenderableEvents as RenderableEvents2}from"h:3__________";import{jsxDEV as jsxDEV37}from"h:6___________________________";function SearchInput({value,placeholder,focused,width,onInput,onFocus,onBlur}){let theme=useTheme(),inputRef=useRef16(null),inputRefCallback=useCallback19((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents2.FOCUSED),previous.removeAllListeners(RenderableEvents2.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents2.FOCUSED,()=>onFocus()),node.on(RenderableEvents2.BLURRED,()=>onBlur())},[onFocus,onBlur]);return jsxDEV37("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:focused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV37(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV37("input",{ref:inputRefCallback,value,placeholder,focused,onInput,style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV38}from"h:6___________________________";function savedQueryResultsView(query){let projectRefs=query.projects.filter((id)=>id!==-1).map(String);return{id:`saved-query:${query.source}:${query.id}`,sentryLocation:{screen:resultScreen(query),detail:{kind:"saved_query",queryId:query.id,source:query.source,resultScreen:resultScreen(query),dataset:query.dataset,title:query.name},state:{query:query.query,sort:query.sort,statsPeriod:query.statsPeriod,selectedProjects:projectRefs,selectedEnvs:query.environment,fields:query.fields}},label:query.name,stateKey:SAVED_QUERY_RESULTS_STATE_KEY,initialState:{query:query.query,sort:query.sort,statsPeriod:query.statsPeriod,selectedProjects:projectRefs,selectedEnvs:query.environment},render:(ctx)=>ctx.state?jsxDEV38(SavedQueryResults,{...ctx,state:ctx.state,query},void 0,!1,void 0,this):null}}function resultScreen(query){if(query.source==="discover")return"explore.discover";switch(query.dataset){case"logs":return"explore.logs";case"tracemetrics":return"explore.metrics";case"errors":return"explore.errors";case"profiles":return"explore.profiles";case"replays":return"explore.replays";default:return query.datasetLabel==="Conversations"?"explore.conversations":"explore.traces"}}var loadSavedQuery2=(client2,{org,id,signal})=>{let separator=id.indexOf(":"),source=id.slice(0,separator),queryId=id.slice(separator+1);return fetchSavedQuery(client2,{org,source,queryId,signal})};function savedQueryUrlView(detail){return{id:`saved-query:${detail.source}:${detail.queryId}`,label:detail.title??`Query ${detail.queryId}`,stateKey:SAVED_QUERY_RESULTS_STATE_KEY,sentryLocation:{screen:detail.resultScreen,detail},render:(ctx)=>ctx.state?jsxDEV38(SavedQueryFromUrl,{...ctx,state:ctx.state,detail},void 0,!1,void 0,this):null}}function SavedQueryFromUrl({client:client2,org,state,detail,reloadToken,width,height,updateView,...ctx}){let resourceId=`${detail.source}:${detail.queryId}`,status=useDirectResource(client2,{org,id:resourceId,reloadToken,load:loadSavedQuery2}),query=valueOf(status);if(useEffect22(()=>{if(!query)return;state.dispatch({type:"seed",payload:{query:query.query,sort:query.sort,statsPeriod:query.statsPeriod,selectedProjects:query.projects.filter((id)=>id!==-1).map(String),selectedEnvs:query.environment}}),updateView(`saved-query:${detail.source}:${detail.queryId}`,{label:query.name})},[detail.queryId,detail.source,query,state.dispatch,updateView]),!query)return jsxDEV38(DirectDetailStatus,{status,noun:"saved query",width,height},void 0,!1,void 0,this);return jsxDEV38(SavedQueryResults,{...ctx,client:client2,org,state,reloadToken,width,height,updateView,query},void 0,!1,void 0,this)}function SavedQueryResults({client:client2,org,state,focused,width,height,reloadToken,query:savedQuery}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sortItems=useMemo13(()=>fieldSortItems(savedQuery.fields),[savedQuery.fields]),sort=sortItems.some((item)=>item.value===state.sort)?state.sort:savedQuery.sort??sortItems[0]?.value,{rows:status,nextCursor}=useDiscoverRows(client2,{org,dataset:savedQuery.dataset,fields:savedQuery.fields,sort,query:state.committedQuery,statsPeriod:state.statsPeriod,project,environment,referrer:"sentry-tui.saved-query",reloadToken}),rows=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status);useEffect22(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]),useEffect22(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"results"}})},[loading,since,error,status,dispatch]);let columns=useMemo13(()=>columnsFor(savedQuery.fields,theme),[savedQuery.fields,theme]);return jsxDEV38("box",{style:{flexDirection:"column",width,height},children:[jsxDEV38(SearchInput,{value:state.searchQuery,placeholder:"Refine this query\u2026",focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV38("box",{style:{flexDirection:"row",width,flexShrink:0,height:1,paddingLeft:1},children:[jsxDEV38("text",{fg:theme.accent,attributes:BOLD,children:fitText(savedQuery.name,Math.max(8,width-24))},void 0,!1,void 0,this),jsxDEV38("text",{fg:theme.muted,children:` ${savedQuery.datasetLabel}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV38(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:sort?{value:sort,items:sortItems,onChange:(value)=>dispatch({type:"setSort",payload:value})}:void 0,width,anchorTop:SEARCH_ROWS+1,onProjectChange:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:()=>dispatch({type:"setOpenDropdown",payload:null}),onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV38(DataTable,{rows,columns,width,selectedIndex:state.selected,focused,rowKey:(_row,index)=>String(index),loading:isInitialLoad(status),error,errorTitle:"Failed to run the query",minFlex:MIN_PROSE_WIDTH,empty:{title:"This query returned nothing.",lines:[state.committedQuery||void 0,"Try widening the time range or adjusting the query.",`This organization may not have ${savedQuery.datasetLabel} enabled.`]},layout:[height]},void 0,!1,void 0,this),jsxDEV38(ResultFooter,{count:rows?.length,noun:"result",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var FIELD_WIDTHS=[{test:/timestamp|^time$/,width:19},{test:/^project(\.\w+)?$/,width:14},{test:/^(id|trace|replay_id|profile\.id)$|_id$/,width:12},{test:/\(.*\)/,width:12,align:"right"},{test:/duration|latency|size|count/,width:10,align:"right"},{test:/^(release|environment|platform|user|browser|os)(\.\w+)?$/,width:16}],FLEX_FIELDS=/^(message|description|name|transaction|title|url|culprit)$|\.(description|name)$/,DEFAULT_FIELD_WIDTH=18,MAX_HEADER_WIDTH=20,MIN_PROSE_WIDTH=24;function columnsFor(fields,theme){let shapes=fields.map((field)=>{let match=FIELD_WIDTHS.find((candidate)=>candidate.test.test(field));return{field,width:Math.max(match?.width??DEFAULT_FIELD_WIDTH,Math.min(measureTextWidth(field),MAX_HEADER_WIDTH)),align:match?.align,wide:FLEX_FIELDS.test(field),unknown:match===void 0}}),flexAt=pick(shapes.findIndex((shape)=>shape.wide),shapes.findIndex((shape)=>shape.unknown),shapes.length-1);return shapes.map((shape,index)=>({key:shape.field,label:shape.field,width:index===flexAt?"flex":shape.width,align:shape.align,priority:index===flexAt?void 0:shapes.length-index,render:(row,_selected,width)=>jsxDEV38("text",{fg:index===0?theme.text:theme.muted,children:padText(fitText(cellText(row[shape.field]),width),width,shape.align??"left")},void 0,!1,void 0,this)}))}function pick(...candidates){return candidates.find((index)=>index>=0)??0}function cellText(value){if(value===void 0||value===null||value==="")return"\u2014";if(typeof value==="number")return Number.isInteger(value)?String(value):value.toFixed(2);if(typeof value==="object")return JSON.stringify(value);return String(value)}function useSecondaryNavExtras(client2,org,group,reloadToken){let exploreSections=useExploreNavSections(client2,org,group==="explore",reloadToken),dashboards=useDashboardsNavExtras(client2,org,group==="dashboards",reloadToken);switch(group){case"explore":return{sections:exploreSections};case"dashboards":return dashboards;default:return NO_NAV_EXTRAS}}function useExploreNavSections(client2,org,enabled,reloadToken){let{queries:status}=useSavedQueries(client2,{org,source:"explore",starred:!0,limit:MAX_STARRED_SAVED_QUERIES_IN_NAV,enabled,reloadToken}),starred=valueOf(status);return useMemo14(()=>starredQueriesSections(starred),[starred])}function starredQueriesSections(starred){if(!starred||starred.length===0)return[];return[{title:"Starred Queries",items:starred.slice(0,MAX_STARRED_SAVED_QUERIES_IN_NAV).map((query)=>({label:query.name,target:{group:"explore",item:"All Queries"},open:()=>savedQueryResultsView(query)}))}]}function initialNavigationModel(group,item,initialViews=[]){return{railGroup:group,activeGroup:group,activeItem:item,navExpanded:!1,showSecondary:!1,secondaryItem:item,gotoMode:!1,viewStack:[...initialViews]}}function navigationReducer(state,action){switch(action.type){case"navigate":return{...state,railGroup:action.group,activeGroup:action.group,activeItem:action.item,navExpanded:!1,showSecondary:!1,secondaryItem:action.item,gotoMode:!1,viewStack:[]};case"openGroup":return{...state,railGroup:action.group,showSecondary:!0,secondaryItem:action.item,gotoMode:!1};case"expandNav":return state.navExpanded?state:{...state,navExpanded:!0};case"openGoto":return{...state,navExpanded:!0,gotoMode:!0};case"closeGoto":return state.gotoMode?{...state,gotoMode:!1}:state;case"previewGroup":return{...state,railGroup:action.group,secondaryItem:action.item};case"selectRailGroup":return state.railGroup===action.group?state:{...state,railGroup:action.group};case"closeSecondary":return state.showSecondary?{...state,showSecondary:!1}:state;case"selectSecondaryItem":return state.secondaryItem===action.item?state:{...state,secondaryItem:action.item};case"pushView":return{...state,viewStack:[...state.viewStack,action.view]};case"popView":return state.viewStack.length===0?state:{...state,viewStack:state.viewStack.slice(0,-1)};case"clearViews":return state.viewStack.length===0?state:{...state,viewStack:[]};case"updateView":{let index=state.viewStack.findIndex((view)=>view.id===action.id);if(index===-1)return state;return{...state,viewStack:state.viewStack.map((view,viewIndex)=>viewIndex===index?{...view,...action.update}:view)}}case"replaceIssue":{let viewStack=state.viewStack.map((view)=>view.issue?.id===action.issue.id?{...view,issue:action.issue}:view);return viewStack.some((view,index)=>view!==state.viewStack[index])?{...state,viewStack}:state}}}import{useCallback as useCallback21,useEffect as useEffect24,useRef as useRef17}from"h:0__";var CONVERSATION_PAGE_SIZE=50;async function listConversations(client2,{org,query="",statsPeriod,project,environment,cursor,limit=CONVERSATION_PAGE_SIZE,signal}){let page=await client2.request(`/organizations/${org}/ai-conversations/`,{query:{query:query||void 0,statsPeriod,project:projectParams(project),environment,cursor,per_page:limit,referrer:"sentry-tui.explore-conversations"},signal});return{data:(Array.isArray(page.data)?page.data:[]).map(normalise3).sort((a,b)=>Date.parse(b.endedAt)-Date.parse(a.endedAt)),nextCursor:page.nextCursor}}function normalise3(raw,index){let start=raw.startTimestamp??0,end=raw.endTimestamp??start;return{id:raw.conversationId??String(index),title:text(raw.title),firstInput:messageText(raw.firstInput),lastOutput:messageText(raw.lastOutput),generationDurationMs:raw.generationDuration??0,durationMs:Math.max(0,end-start),endedAt:end>0?new Date(end).toISOString():"",llmCalls:raw.llmCalls??0,toolCalls:raw.toolCalls??0,toolErrors:raw.toolErrors??0,toolNames:Array.isArray(raw.toolNames)?raw.toolNames.filter(isNonEmpty):[],errors:raw.errors??0,totalTokens:raw.totalTokens??0,inputTokens:raw.inputTokens??0,outputTokens:raw.outputTokens??0,totalCost:typeof raw.totalCost==="number"?raw.totalCost:void 0,traceCount:raw.traceCount??0,traceIds:Array.isArray(raw.traceIds)?raw.traceIds.filter(isNonEmpty):[],projectId:raw.projectId==null?void 0:String(raw.projectId),user:normaliseUser(raw.user)}}function messageText(raw){if(typeof raw==="string")return text(raw);if(!Array.isArray(raw))return;return text(raw.find((part)=>part?.type==="text")?.text??raw[0]?.text)}function text(value){let trimmed=value?.trim();if(!trimmed||trimmed.toLowerCase()==="none")return;return trimmed}function normaliseUser(raw){if(!raw)return;let user2={id:text(raw.id),email:text(raw.email),username:text(raw.username),ipAddress:text(raw.ip_address)};return Object.values(user2).some(Boolean)?user2:void 0}function isNonEmpty(value){return typeof value==="string"&&value.trim().length>0}function conversationTitle(conversation){let raw=conversation.title??conversation.firstInput;return raw?raw.replace(/\s+/g," ").trim()||void 0:void 0}var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function conversationIdLabel(id){return UUID.test(id)?id.slice(0,8):id}function conversationUserLabel(user2){if(!user2)return;return user2.email??user2.username??user2.ipAddress??void 0}var CONVERSATION_SPAN_FILTER="has:gen_ai.conversation.id",CONVERSATION_CHART={yAxis:"count_unique(gen_ai.conversation.id)",noun:"conversations"},CONVERSATION_NOUN="conversations";function conversationEmptyLines(query){return[query||void 0,"Try widening the time range or adjusting the query.","This organization may not have gen-ai-conversations enabled."]}import{jsxDEV as jsxDEV39}from"h:6___________________________";var BLOCKS2=[" ","\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],CHART_ROWS=10,CHROME_ROWS=8,MIN_LIST_ROWS=5;function fitsChart(height,extraChrome=0){return height>=CHART_ROWS+CHROME_ROWS+extraChrome+MIN_LIST_ROWS}var Y_LABEL_WIDTH=7,BOTTOM_ROWS=1,TITLE_ROWS=1;function downsample2(values,targetLen){if(values.length<=targetLen)return values;let bucketSize=values.length/targetLen,out=[];for(let i=0;i<targetLen;i++){let start=Math.floor(i*bucketSize),end=Math.min(values.length,Math.floor((i+1)*bucketSize)),sum=0,incomplete=!1;for(let j=start;j<end;j++)sum+=values[j].value,incomplete||=values[j].incomplete;out.push({value:sum,incomplete})}return out}function yAxisLabels(max){return{top:padText(formatCount(max),Y_LABEL_WIDTH-1,"right")+" ",mid:padText(formatCount(Math.round(max/2)),Y_LABEL_WIDTH-1,"right")+" ",zero:padText("0",Y_LABEL_WIDTH-1,"right")+" "}}function timeLabel(unixSeconds){let d=new Date(unixSeconds*1000),hh=String(d.getHours()).padStart(2,"0"),mm=String(d.getMinutes()).padStart(2,"0");return`${hh}:${mm}`}function buildTimeLabels(buckets,barCount,chartWidth){if(buckets.length===0||chartWidth<10)return"";let maxLabels=Math.max(2,Math.floor(chartWidth/(6+2))),step=Math.max(1,Math.floor(buckets.length/maxLabels)),buf=Array.from({length:chartWidth},()=>" ");for(let i=0;i<buckets.length;i+=step){let bucket=buckets[i],label=timeLabel(bucket[0]),pos=Math.round(i/Math.max(1,buckets.length-1)*(chartWidth-label.length)),clampedPos=Math.max(0,Math.min(chartWidth-label.length,pos));for(let c=0;c<label.length;c++)buf[clampedPos+c]=label[c]}return buf.join("")}function BarChart({buckets,width,height,title,noun}){let theme=useTheme();if(width<20||height<4)return null;let chartWidth=width-Y_LABEL_WIDTH-3,chartHeight=Math.max(1,height-BOTTOM_ROWS-TITLE_ROWS-2),rawCounts=buckets.map(([,agg])=>agg[0]?.count??0),rawValues=buckets.map(([,agg,meta])=>({value:agg[0]?.count??0,incomplete:meta?.incomplete===!0})),values=stretch(downsample2(rawValues,chartWidth),chartWidth),max=Math.max(1,...values.map(({value})=>value)),total=rawCounts.reduce((a,b)=>a+b,0),labels=yAxisLabels(max),rows=[];for(let row=chartHeight-1;row>=0;row--){let line="";for(let col=0;col<values.length;col++){let{value:v,incomplete}=values[col],subCells=max===0?0:Math.round(v/max*chartHeight*8),fullRows=Math.floor(subCells/8),remainder=subCells%8,glyph=row<fullRows?"\u2588":row===fullRows&&remainder>0?BLOCKS2[remainder]:" ";line+=incomplete&&glyph!==" "?"\u2591":glyph}rows.push(line)}let timeLabelsRow=buildTimeLabels(buckets,values.length,chartWidth),innerWidth=width-2-1,totalLabel=noun===void 0?"":`${formatCount(total)} ${noun}`;return jsxDEV39("box",{style:{flexDirection:"column",width,height,flexShrink:0,border:["top","bottom","left","right"],borderColor:theme.border,backgroundColor:theme.panel,paddingLeft:1},children:[jsxDEV39("box",{style:{flexDirection:"row",width:innerWidth,flexShrink:0},children:[jsxDEV39("text",{fg:theme.text,children:fitText(title,Math.max(0,innerWidth-totalLabel.length-1))},void 0,!1,void 0,this),jsxDEV39("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.muted,attributes:DIM,children:totalLabel},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rows.map((line,i)=>{let yLabel;if(i===0)yLabel=labels.top;else if(i===Math.floor(rows.length/2))yLabel=labels.mid;else if(i===rows.length-1)yLabel=labels.zero;else yLabel=" ".repeat(Y_LABEL_WIDTH);return jsxDEV39("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV39("text",{fg:theme.muted,attributes:DIM,children:yLabel},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.accent,children:line},void 0,!1,void 0,this)]},i,!0,void 0,this)}),jsxDEV39("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV39("text",{fg:theme.muted,children:" ".repeat(Y_LABEL_WIDTH)},void 0,!1,void 0,this),jsxDEV39("text",{fg:theme.muted,attributes:DIM,children:timeLabelsRow},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback20}from"h:0__";function useConversations(client2,{org,query,statsPeriod,project,environment,reloadToken=0}){let conversationsLoader=useCallback20((cursor,signal)=>client2?listConversations(client2,{org,query,statsPeriod,project,environment,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment]),timeseriesLoader=useCallback20((signal)=>client2?listExploreTimeseries(client2,{org,statsPeriod,project,environment,signal,dataset:"spans",yAxis:CONVERSATION_CHART.yAxis,query:[CONVERSATION_SPAN_FILTER,query.trim()].filter(Boolean).join(" "),referrer:"sentry-tui.explore-conversations-chart"}):null,[client2,org,query,statsPeriod,project,environment]),conversationPages=useCursorPages(conversationsLoader,reloadToken),timeseries=useAsyncFetch(timeseriesLoader,{reloadKey:reloadToken}).status;return{conversations:mapAsyncStatus(conversationPages.status,(page)=>page.data),timeseries,nextCursor:conversationPages.nextCursor,page:conversationPages.page,nextPage:conversationPages.nextPage,previousPage:conversationPages.previousPage}}import{useEffect as useEffect23}from"h:0__";function useScreenActions(register,actions){useEffect23(()=>(register(actions),()=>register(null)))}var EXPLORE_AGGREGATES=[{name:"count",argument:"count"},{name:"avg",argument:"number"},{name:"p50",argument:"number"},{name:"p75",argument:"number"},{name:"p90",argument:"number"},{name:"p95",argument:"number"},{name:"p99",argument:"number"},{name:"p100",argument:"number"},{name:"sum",argument:"number"},{name:"min",argument:"number"},{name:"max",argument:"number"},{name:"count_unique",argument:"any"},{name:"epm",argument:"none"},{name:"eps",argument:"none"},{name:"failure_rate",argument:"none"},{name:"failure_count",argument:"none"},{name:"performance_score",argument:"score"},{name:"opportunity_score",argument:"score"}],AGGREGATES_BY_NAME=new Map(EXPLORE_AGGREGATES.map((a)=>[a.name,a]));function argumentKind(aggregate){return AGGREGATES_BY_NAME.get(aggregate)?.argument??"number"}function availableExploreAggregates(table,numberFields=[]){let builder=table.builder;if(!builder)return[];let allowed=new Set(builder.aggregates);return EXPLORE_AGGREGATES.filter((aggregate)=>allowed.has(aggregate.name)&&(aggregate.argument!=="number"||builder.numberField||numberFields.length>0))}var DISALLOWED_GROUP_BYS=new Set(["id","sentry.item_id","timestamp"]);function parseAggregateExpression(yAxis){let match=/^([a-zA-Z0-9_]+)\((.*)\)$/.exec(yAxis.trim());if(!match)return{aggregate:yAxis.trim(),argument:""};return{aggregate:match[1],argument:match[2].trim()}}function exploreYAxis(state){return`${state.aggregate}(${argumentKind(state.aggregate)==="none"?"":state.argument})`}function defaultExploreQuery(table){let{aggregate,argument}=parseAggregateExpression(table.yAxis);return{aggregate,argument,groupBys:[],sampleSort:null,aggregateSort:null}}function exploreMode(state){return state.groupBys.length>0?"aggregate":"samples"}function withAggregate(state,aggregate,table,numberFields=[]){let argument=argumentFor(aggregate,state,table,numberFields);if(argument===void 0)return state;return repointSort(state,{...state,aggregate,argument})}function withArgument(state,argument){return repointSort(state,{...state,argument})}function repointSort(previous,next){let sort=next.aggregateSort;if(!sort||sort.field!==exploreYAxis(previous))return next;return{...next,aggregateSort:{...sort,field:exploreYAxis(next)}}}function argumentFor(aggregate,previous,table,numberFields){let kind=argumentKind(aggregate),wasKind=argumentKind(previous.aggregate);if(kind==="none")return"";if(kind==="count")return parseAggregateExpression(table.yAxis).argument;if(kind==="any")return table.builder?.uniqueField;if(kind==="score")return previous.argument.startsWith("measurements.score.")?previous.argument:"measurements.score.total";if(wasKind==="none"||wasKind==="any"||previous.argument==="")return numberFields[0]??table.builder?.numberField;if(wasKind==="count")return numberFields[0]??table.builder?.numberField;return previous.argument}function withGroupBys(state,groupBys,table){let next={...state,groupBys:groupBys.filter(Boolean)},sort=next.aggregateSort;if(sort&&!sortOptions(next,table).includes(sort.field))return{...next,aggregateSort:null};return next}function withSort(state,sort){return exploreMode(state)==="aggregate"?{...state,aggregateSort:sort}:{...state,sampleSort:sort}}function withToggledDirection(state,table){let current=effectiveSort(state,table);return withSort(state,{field:current.field,direction:current.direction==="desc"?"asc":"desc"})}function effectiveSort(state,table){if(exploreMode(state)==="aggregate")return state.aggregateSort??{field:exploreYAxis(state),direction:"desc"};return state.sampleSort??parseSort(table.sort)}function parseSort(sort){return sort.startsWith("-")?{field:sort.slice(1),direction:"desc"}:{field:sort,direction:"asc"}}function formatSort(sort){return sort.direction==="desc"?`-${sort.field}`:sort.field}function sortOptions(state,table){if(exploreMode(state)==="samples")return[...table.fields];return unique([exploreYAxis(state),...state.groupBys])}function resolveExploreQuery(table,state){let yAxis=exploreYAxis(state),mode=exploreMode(state),sort=formatSort(effectiveSort(state,table));if(mode==="samples")return{mode,fields:table.fields,sort,yAxis,groupBys:[],idField:table.idField};return{mode,fields:unique([...state.groupBys,yAxis]),sort,yAxis,groupBys:state.groupBys,idField:state.groupBys[0]??""}}function unique(values){return[...new Set(values.filter(Boolean))]}function argumentLabel(state,table){let kind=argumentKind(state.aggregate);return kind==="none"||kind==="count"?table.noun:state.argument||"\u2014"}function groupByLabel(state){if(state.groupBys.length===0)return"\u2014";if(state.groupBys.length===1)return state.groupBys[0];return`${state.groupBys.length} groups`}function sumsOverTime(aggregate){return aggregate==="count"||aggregate==="failure_count"}function isScoreAttribute(key){return key.startsWith("measurements.score.")}import{jsxDEV as jsxDEV40,Fragment as Fragment12}from"h:6___________________________";var EXPLORE_MIN_FLEX=24;function exploreColumnsFor(id,context){switch(id){case"explore.traces":return traceColumns(context);case"explore.logs":return logColumns(context.theme);case"explore.metrics":return metricColumns(context.theme);case"explore.errors":return errorColumns(context.theme);default:return[]}}var LOG_SEVERITY_LABEL={trace:"TRACE",debug:"DEBUG",info:" INFO",warn:" WARN",error:"ERROR",fatal:"FATAL"};function logColumns(theme){let severityColor={trace:theme.subText,debug:theme.muted,info:theme.accent,warn:theme.warning,error:theme.danger,fatal:theme.level.fatal};return[{key:"timestamp",label:"Time",width:10,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)},{key:"sentry.severity",label:"Level",width:6,priority:2,render:(event,_selected,width)=>{let severity=logSeverity(event);return jsxDEV40("text",{fg:severityColor[severity],attributes:severity==="error"||severity==="fatal"?BOLD:0,children:padText(LOG_SEVERITY_LABEL[severity],width)},void 0,!1,void 0,this)}},{key:"project",label:"Project",width:14,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"project"),width)},void 0,!1,void 0,this)},{key:"message",label:"Message",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"message"),width)},void 0,!1,void 0,this)}]}function logSeverity(event){let value=field(event,"sentry.severity").toLowerCase();return value==="trace"||value==="debug"||value==="warn"||value==="error"||value==="fatal"?value:"info"}function traceColumns(context){let{theme}=context;return[{key:"id",label:"Span ID",width:8,priority:3,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(shortId3(event.id),width)},void 0,!1,void 0,this)},{key:"span.name",label:"Name",width:16,priority:2,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"span.name"),width)},void 0,!1,void 0,this)},{key:"span.description",label:"Description",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"span.description"),width)},void 0,!1,void 0,this)},{key:"span.duration",label:"Duration",width:15,render:(event,_selected,width)=>jsxDEV40(DurationCell,{durationMs:rowNumber(event.row,"span.duration"),maxMs:context.maxDurationMs,theme,width},void 0,!1,void 0,this)},{key:"transaction",label:"Transaction",width:18,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"transaction"),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,priority:4,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)}]}var DURATION_VALUE_WIDTH=7;function DurationCell({durationMs,maxMs,theme,width}){let valueWidth=Math.min(DURATION_VALUE_WIDTH,width),barWidth=Math.max(0,width-valueWidth-1);if(durationMs===void 0)return jsxDEV40("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let fraction=maxMs>0?durationMs/maxMs:0;return jsxDEV40(Fragment12,{children:[barWidth>0?jsxDEV40(Fragment12,{children:[jsxDEV40("text",{fg:theme.accent,children:proportionalBar(fraction,barWidth)},void 0,!1,void 0,this),jsxDEV40("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV40("text",{fg:theme.text,children:padText(formatDuration(durationMs),valueWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function formatDuration(ms){if(!Number.isFinite(ms)||ms<0)return"\u2014";if(ms<1)return`${Math.round(ms*1000)}\xB5s`;if(ms<10)return`${ms.toFixed(2)}ms`;if(ms<1000)return`${Math.round(ms)}ms`;let seconds=ms/1000;if(seconds<60)return`${seconds.toFixed(seconds<10?2:1)}s`;let minutes=seconds/60;if(minutes<60)return`${minutes.toFixed(1)}m`;return`${(minutes/60).toFixed(1)}h`}var AGGREGATE_WIDTH=20,AGGREGATE_VALUE_WIDTH=8;function aggregateColumns(groupBys,yAxis,maxValue,theme){let{aggregate,argument}=parseAggregateExpression(yAxis);return[...groupBys.map((key,index)=>({key,label:key,width:"flex",priority:index===0?void 0:groupBys.length-index,render:(event,_selected,width)=>jsxDEV40("text",{fg:index===0?theme.text:theme.subText,children:padText(field(event,key)||"(none)",width)},void 0,!1,void 0,this)})),{key:yAxis,label:yAxis,width:AGGREGATE_WIDTH,align:"right",render:(event,_selected,width)=>jsxDEV40(AggregateCell,{value:rowNumber(event.row,yAxis),maxValue,text:formatAggregate(aggregate,argument,rowNumber(event.row,yAxis)),theme,width},void 0,!1,void 0,this)}]}function AggregateCell({value,maxValue,text:text2,theme,width}){let valueWidth=Math.min(AGGREGATE_VALUE_WIDTH,width),barWidth=Math.max(0,width-valueWidth-1);if(value===void 0)return jsxDEV40("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let fraction=maxValue>0?value/maxValue:0;return jsxDEV40(Fragment12,{children:[barWidth>0?jsxDEV40(Fragment12,{children:[jsxDEV40("text",{fg:theme.accent,children:proportionalBar(fraction,barWidth)},void 0,!1,void 0,this),jsxDEV40("text",{children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV40("text",{fg:theme.text,children:padText(text2,valueWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var COUNTING_AGGREGATES=new Set(["count","count_unique","failure_count"]),RATIO_AGGREGATES=new Set(["failure_rate","performance_score","opportunity_score"]);function formatAggregate(aggregate,argument,value){if(value===void 0)return"\u2014";if(COUNTING_AGGREGATES.has(aggregate))return formatCount(value);if(RATIO_AGGREGATES.has(aggregate))return`${(value*100).toFixed(1)}%`;if(isDurationField(argument))return formatDuration(value);return Math.abs(value)>=1000?formatCount(value):String(Number(value.toFixed(2)))}function isDurationField(field){return field==="span.duration"||field==="span.self_time"||field.endsWith(".duration")||field.endsWith("_time")}function metricColumns(theme){return[{key:"metric.name",label:"Metric",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"metric.name"),width)},void 0,!1,void 0,this)},{key:"metric.type",label:"Type",width:12,priority:2,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"metric.type"),width)},void 0,!1,void 0,this)},{key:"value",label:"Value",width:14,align:"right",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.accent,children:padText(formatMetricValue(rowNumber(event.row,"value"),rowString(event.row,"metric.unit")),width,"right")},void 0,!1,void 0,this)},{key:"project",label:"Project",width:14,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"project"),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,priority:3,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)}]}var UNIT_SYMBOLS={nanosecond:"ns",microsecond:"\xB5s",millisecond:"ms",second:"s",minute:"min",hour:"h",day:"d",week:"wk",bit:"b",byte:"B",kilobyte:"kB",kibibyte:"KiB",megabyte:"MB",mebibyte:"MiB",gigabyte:"GB",gibibyte:"GiB",terabyte:"TB",tebibyte:"TiB",percent:"%",ratio:""};function formatMetricValue(value,unit){if(value===void 0)return"\u2014";let magnitude=Math.abs(value)<1000?String(Number(value.toFixed(2))):formatCount(value);if(!unit||unit==="none")return magnitude;let symbol=UNIT_SYMBOLS[unit]??unit;if(!symbol)return magnitude;return symbol.length<=3?`${magnitude}${symbol}`:`${magnitude} ${symbol}`}function errorColumns(theme){let levels={fatal:theme.level.fatal,error:theme.level.error,warning:theme.level.warning,info:theme.level.info,sample:theme.level.sample};return[{key:"id",label:"Event ID",width:8,priority:3,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(shortId3(event.id),width)},void 0,!1,void 0,this)},{key:"timestamp",label:"Time",width:8,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.muted,children:padText(clockTime(rowString(event.row,"timestamp")),width)},void 0,!1,void 0,this)},{key:"level",label:"Level",width:7,priority:4,render:(event,_selected,width)=>{let level=field(event,"level").toLowerCase(),colour=levels[level]??theme.level.unknown;return jsxDEV40("text",{fg:colour,attributes:level==="error"||level==="fatal"?BOLD:0,children:padText(level?level.toUpperCase():"",width)},void 0,!1,void 0,this)}},{key:"title",label:"Title",width:"flex",render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.text,children:padText(field(event,"title"),width)},void 0,!1,void 0,this)},{key:"project",label:"Project",width:14,priority:2,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"project"),width)},void 0,!1,void 0,this)},{key:"user.display",label:"User",width:18,priority:1,render:(event,_selected,width)=>jsxDEV40("text",{fg:theme.subText,children:padText(field(event,"user.display"),width)},void 0,!1,void 0,this)}]}function formatCost(cost){if(cost===void 0)return"\u2014";if(cost===0)return"$0";return cost<1?`$${cost.toFixed(4)}`:`$${cost.toFixed(2)}`}function field(event,name){return rowString(event.row,name)??""}function shortId3(id,width=8){return id.slice(0,width)}import{jsxDEV as jsxDEV41}from"h:6___________________________";var TITLE_MIN_FLEX=28,UNTITLED="Untitled conversation";function conversationColumns(theme){return[{key:"conversation",label:"Conversation",width:"flex",render:(conversation,_selected,width)=>{let title=conversationTitle(conversation);return jsxDEV41("text",{fg:title?theme.text:theme.subText,children:padText(title??UNTITLED,width)},void 0,!1,void 0,this)}},{key:"duration",label:"Duration",width:9,align:"right",priority:2,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.text,children:padText(formatDuration(conversation.generationDurationMs),width,"right")},void 0,!1,void 0,this)},{key:"messages",label:"Msgs",width:5,align:"right",priority:5,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.text,children:padText(formatCount(conversation.llmCalls),width,"right")},void 0,!1,void 0,this)},{key:"errors",label:"Errs",width:5,align:"right",priority:3,render:(conversation,_selected,width)=>{let errors=conversation.errors;return jsxDEV41("text",{fg:errors>0?theme.danger:theme.subText,attributes:errors>0?BOLD:0,children:padText(errors>0?formatCount(errors):"\xB7",width,"right")},void 0,!1,void 0,this)}},{key:"cost",label:"Cost",width:9,align:"right",priority:6,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.accent,children:padText(formatCost(conversation.totalCost),width,"right")},void 0,!1,void 0,this)},{key:"tools",label:"Tools",width:20,priority:1,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.subText,children:padText(toolSummary(conversation,width),width)},void 0,!1,void 0,this)},{key:"age",label:"Age",width:5,align:"right",priority:4,render:(conversation,_selected,width)=>jsxDEV41("text",{fg:theme.muted,children:padText(timeAgo(conversation.endedAt),width,"right")},void 0,!1,void 0,this)}]}function toolSummary(conversation,width){let names=conversation.toolNames;if(names.length===0)return conversation.toolCalls>0?`${conversation.toolCalls} calls`:"";let shown=[],used=0;for(let name of names){let cost=(shown.length>0?2:0)+name.length;if(used+cost>width-(shown.length<names.length-1?3:0))break;shown.push(name),used+=cost}if(shown.length===0)shown.push(names[0]);let hidden=names.length-shown.length;return hidden>0?`${shown.join(", ")} +${hidden}`:shown.join(", ")}function ConversationList({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,query=state.committedQuery,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,{conversations,timeseries,nextCursor,page,nextPage,previousPage}=useConversations(client2,{org,query,statsPeriod:state.statsPeriod,project,environment,reloadToken}),loading=conversations.state==="loading",since=loadingSince(conversations),rows=valueOf(conversations),error=errorOf(conversations),buckets=valueOf(timeseries);useEffect24(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef17(page);useEffect24(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect24(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:CONVERSATION_NOUN}})},[loading,since,error,conversations,dispatch]);let closeDropdown=useCallback21(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0}});let selected=rows?.[state.selected]??null,showDetail=state.detailOpen&&selected!==null,hasChart=!showDetail&&fitsChart(height)&&buckets!==void 0&&buckets.length>0,inner=Math.max(20,width-2);return jsxDEV41("box",{style:{flexDirection:"column",width,height},children:[jsxDEV41(SearchInput,{value:state.searchQuery,placeholder:"Search AI conversations\u2026",focused:state.searchFocused,width,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV41(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),hasChart&&buckets?jsxDEV41(BarChart,{buckets,width:inner,height:CHART_ROWS,title:CONVERSATION_CHART.yAxis,noun:CONVERSATION_CHART.noun},void 0,!1,void 0,this):null,jsxDEV41(DataTable,{rows,columns:conversationColumns(theme),width,selectedIndex:state.selected,focused,rowKey:(conversation,index)=>`${index}:${conversation.id}`,minFlex:TITLE_MIN_FLEX,loading:isInitialLoad(conversations),error,errorTitle:"Failed to load conversations",onRowClick:activateRow,renderDetail:(conversation,selected2,rowWidth)=>renderIdentity(conversation,selected2,rowWidth,theme),empty:{title:"No conversations found.",lines:conversationEmptyLines(query)},layout:[height,hasChart,showDetail]},void 0,!1,void 0,this),showDetail&&selected?jsxDEV41(ConversationDetail,{conversation:selected,width:inner},void 0,!1,void 0,this):null,jsxDEV41(ResultFooter,{count:rows?.length,noun:"conversation",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function renderIdentity(conversation,_selected,width,theme){let parts=[conversationIdLabel(conversation.id),conversation.projectId?`project ${conversation.projectId}`:void 0,conversationUserLabel(conversation.user),conversation.traceCount>1?`${conversation.traceCount} traces`:void 0].filter(Boolean);return jsxDEV41("text",{fg:theme.subText,attributes:DIM,children:padText(` ${parts.join(" \u2502 ")}`,width)},void 0,!1,void 0,this)}function ConversationDetail({conversation,width}){let theme=useTheme(),inner=Math.max(10,width-2);return jsxDEV41("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV41("text",{fg:theme.accent,attributes:BOLD,children:`\u25BE ${fitText(conversationTitle(conversation)??UNTITLED,width-2)}`},void 0,!1,void 0,this),conversation.firstInput&&conversation.title?jsxDEV41("text",{fg:theme.text,children:fitText(` \u2192 ${collapse(conversation.firstInput)}`,inner)},void 0,!1,void 0,this):null,conversation.lastOutput?jsxDEV41("text",{fg:theme.muted,children:fitText(` \u2190 ${collapse(conversation.lastOutput)}`,inner)},void 0,!1,void 0,this):null,jsxDEV41("text",{fg:theme.muted,children:fitText(` ${countLabel(conversation.llmCalls,"call")} \u2502 `+`${countLabel(conversation.toolCalls,"tool")} \u2502 `+`${formatCount(conversation.inputTokens)} in / ${formatCount(conversation.outputTokens)} out \u2502 `+`${formatCost(conversation.totalCost)} \u2502 ${formatDuration(conversation.generationDurationMs)}`,inner)},void 0,!1,void 0,this),conversation.traceIds[0]?jsxDEV41("text",{fg:theme.subText,attributes:DIM,children:fitText(` trace ${conversation.traceIds[0]}`,inner)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function collapse(text2){return text2.replace(/\s+/g," ").trim()}import{useCallback as useCallback22,useEffect as useEffect26,useMemo as useMemo16,useRef as useRef18,useState as useState23}from"h:0__";import{useMemo as useMemo15}from"h:0__";import{jsxDEV as jsxDEV42,Fragment as Fragment13}from"h:6___________________________";var QUERY_BAR_ROWS=CHIP_HEIGHT,LABEL_GAP=1,SECTION_GAP=3,UNGROUPED="",ATTRIBUTE_MENU_WIDTH=44;function ExploreQueryBar({table,query,attributes,open,width,anchorTop,interval,intervalItems,onChange,onIntervalChange,onOpen,onClose}){let theme=useTheme(),sort=effectiveSort(query,table),kind=argumentKind(query.aggregate),fieldIsChoosable=kind!=="none"&&kind!=="count",numberFields=useMemo15(()=>attributes.number.map(({key})=>key),[attributes.number]),aggregateItems=useMemo15(()=>availableExploreAggregates(table,numberFields).map(({name})=>({label:name,value:name})),[table,numberFields]),items=[{kind:"label",text:"Visualize",gapBefore:0},{kind:"chip",gapBefore:LABEL_GAP,opens:"visualize",onPress:()=>onOpen("visualize"),chip:{command:"sentry.explore.visualize",label:query.aggregate,caret:!0}},{kind:"chip",gapBefore:CHIP_GAP,opens:"field",onPress:()=>fieldIsChoosable&&onOpen("field"),chip:{command:"sentry.explore.visualizeField",label:argumentLabel(query,table),caret:fieldIsChoosable}},{kind:"label",text:"Group by",gapBefore:SECTION_GAP},{kind:"chip",gapBefore:LABEL_GAP,opens:"groupBy",onPress:()=>onOpen("groupBy"),chip:{command:"sentry.explore.groupBy",label:groupByLabel(query),caret:!0}},{kind:"label",text:"Sort",gapBefore:SECTION_GAP},{kind:"chip",gapBefore:LABEL_GAP,opens:"sort",onPress:()=>onOpen("sort"),chip:{command:"sentry.view.sort",label:sort.field,caret:!0}},{kind:"chip",gapBefore:CHIP_GAP,opens:null,onPress:()=>onChange(withToggledDirection(query,table)),chip:{command:"sentry.explore.sortDirection",label:sort.direction==="desc"?"Desc":"Asc"}},{kind:"label",text:"Interval",gapBefore:SECTION_GAP},{kind:"chip",gapBefore:LABEL_GAP,opens:"interval",onPress:()=>onOpen("interval"),chip:{command:"sentry.explore.interval",label:interval,caret:!0}}],labelled=layout(items,!0),showLabels=labelled.total<=width,{placed}=showLabels?labelled:layout(items,!1),dropdownTop=anchorTop+CHIP_HEIGHT,anchorOf=(which)=>placed.find((p)=>p.item.kind==="chip"&&p.item.opens===which)?.left??0;return jsxDEV42(Fragment13,{children:[jsxDEV42("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:placed.map(({item,key,gap})=>item.kind==="label"?jsxDEV42("text",{fg:theme.muted,children:`${" ".repeat(gap)}${item.text}`},key,!1,void 0,this):jsxDEV42("box",{style:{flexDirection:"row",flexShrink:0},children:[gap>0?jsxDEV42("text",{children:" ".repeat(gap)},void 0,!1,void 0,this):null,jsxDEV42(Chip,{...item.chip,active:open!==null&&open===item.opens,onPress:item.onPress},void 0,!1,void 0,this)]},key,!0,void 0,this))},void 0,!1,void 0,this),open==="visualize"?jsxDEV42(Dropdown,{title:"Visualize",items:aggregateItems,selected:[query.aggregate],anchorLeft:anchorOf("visualize"),anchorTop:dropdownTop,showAll:!1,onSelect:(values)=>{let value=values[0];if(value)onChange(withAggregate(query,value,table,numberFields));onClose()},onClose},void 0,!1,void 0,this):null,open==="field"?jsxDEV42(FieldDropdown,{query,attributes,anchorLeft:anchorOf("field"),anchorTop:dropdownTop,onSelect:(value)=>{onChange(withArgument(query,value)),onClose()},onClose},void 0,!1,void 0,this):null,open==="groupBy"?jsxDEV42(GroupByDropdown,{query,attributes,anchorLeft:anchorOf("groupBy"),anchorTop:dropdownTop,onSelect:(value)=>{onChange(withGroupBys(query,toggleGroupBy(query.groupBys,value),table)),onClose()},onClose},void 0,!1,void 0,this):null,open==="sort"?jsxDEV42(Dropdown,{title:"Sort By",items:sortOptions(query,table).map((field2)=>({label:field2,value:field2})),selected:[sort.field],anchorLeft:anchorOf("sort"),anchorTop:dropdownTop,showAll:!1,placeholder:"No sortable columns",onSelect:(values)=>{let value=values[0];if(value)onChange(withSort(query,{field:value,direction:sort.direction}));onClose()},onClose},void 0,!1,void 0,this):null,open==="interval"?jsxDEV42(Dropdown,{title:"Chart Interval",items:intervalItems,selected:[interval],anchorLeft:anchorOf("interval"),anchorTop:dropdownTop,showAll:!1,placeholder:"No intervals for this range",onSelect:(values)=>{let value=values[0];if(value)onIntervalChange(value);onClose()},onClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function FieldDropdown({query,attributes,anchorLeft,anchorTop,onSelect,onClose}){let kind=argumentKind(query.aggregate),items=useMemo15(()=>{if(kind==="any")return toItems([...attributes.string,...attributes.number,...attributes.boolean]);if(kind==="score")return toItems(attributes.number.filter((a)=>isScoreAttribute(a.key)));return toItems(attributes.number)},[kind,attributes]);return jsxDEV42(Dropdown,{title:"Field",items,selected:[query.argument],anchorLeft,anchorTop,showAll:!1,filterable:!0,maxWidth:ATTRIBUTE_MENU_WIDTH,placeholder:attributes.loading?"Loading attributes\u2026":"No attributes found",onSelect:(values)=>{let value=values[0];if(value)onSelect(value)},onClose},void 0,!1,void 0,this)}function GroupByDropdown({query,attributes,anchorLeft,anchorTop,onSelect,onClose}){let items=useMemo15(()=>[{label:"\u2014",value:UNGROUPED},...toItems([...attributes.string,...attributes.number,...attributes.boolean].filter((a)=>!DISALLOWED_GROUP_BYS.has(a.key)))],[attributes.string,attributes.number,attributes.boolean]);return jsxDEV42(Dropdown,{title:"Group By",items,selected:query.groupBys.length>0?[...query.groupBys]:[UNGROUPED],anchorLeft,anchorTop,showAll:!1,filterable:!0,maxWidth:ATTRIBUTE_MENU_WIDTH,placeholder:attributes.loading?"Loading attributes\u2026":"No attributes found",onSelect:(values)=>onSelect(values[0]??UNGROUPED),onClose},void 0,!1,void 0,this)}function toItems(attributes){return[...new Map(attributes.map((attribute)=>[attribute.key,{label:attribute.key,value:attribute.key}])).values()]}function toggleGroupBy(groupBys,value){if(!value)return[];return groupBys.includes(value)?groupBys.filter((key)=>key!==value):[...groupBys,value]}function layout(items,withLabels){let placed=[],left=0,first=!0;for(let item of items){if(item.kind==="label"&&!withLabels)continue;let gap=first?0:item.gapBefore;first=!1;let start=left+gap;placed.push({item,key:item.kind==="label"?`label:${item.text}`:item.chip.command,left:start,gap}),left=start+(item.kind==="label"?measureTextWidth(item.text):chipWidth(item.chip))}return{placed,total:left}}import{useEffect as useEffect25,useState as useState22}from"h:0__";async function listTraceItemAttributes(client2,{org,itemType,attributeType,project,environment,statsPeriod,signal}){let{data}=await listOrganizationTraceItemAttributes({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{itemType,attributeType:[attributeType],project:projectParams(project),environment,statsPeriod}}),seen=new Set,attributes=[];for(let raw of Array.isArray(data)?data:[]){let key=typeof raw?.key==="string"?raw.key:"";if(!key||seen.has(key))continue;seen.add(key),attributes.push({key,name:typeof raw.name==="string"&&raw.name?raw.name:key,type:attributeType})}return attributes.sort((a,b)=>a.name.localeCompare(b.name)),attributes}var NONE2=[],IDLE={string:NONE2,number:NONE2,boolean:NONE2,loading:!1};function useTraceItemAttributes(client2,{org,itemType,statsPeriod,project,environment}){let[attributes,setAttributes]=useState22(IDLE),projectKey=project?.join(",")??"",environmentKey=environment?.join(",")??"";return useEffect25(()=>{if(!client2||!itemType){setAttributes(IDLE);return}let controller=new AbortController,cancelled=!1;setAttributes((current)=>({...current,loading:!0}));let load=(attributeType)=>listTraceItemAttributes(client2,{org,itemType,attributeType,statsPeriod,project:projectKey?projectKey.split(","):void 0,environment:environmentKey?environmentKey.split(","):void 0,signal:controller.signal}).catch(()=>NONE2);return Promise.all([load("string"),load("number"),load("boolean")]).then(([strings3,numbers2,booleans])=>{if(cancelled)return;setAttributes({string:strings3,number:numbers2,boolean:booleans,loading:!1})}),()=>{cancelled=!0,controller.abort()}},[client2,org,itemType,statsPeriod,projectKey,environmentKey]),attributes}import{jsxDEV as jsxDEV43,Fragment as Fragment14}from"h:6___________________________";var DETAIL_LABEL_WIDTH=26;function ExploreTable(props){let theme=useTheme(),table=getExploreTable(props.screen.id);if(!table)return jsxDEV43("box",{style:{flexDirection:"column",paddingLeft:1},children:jsxDEV43("text",{fg:theme.danger,children:`No Explore table configured for ${props.screen.id}.`},void 0,!1,void 0,this)},void 0,!1,void 0,this);return jsxDEV43(ExploreTableScreen,{...props,table},void 0,!1,void 0,this)}function ExploreTableScreen({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow,table}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,query=state.committedQuery,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,[builder,setBuilder]=useState23(()=>defaultExploreQuery(table)),[queryDropdown,setQueryDropdown]=useState23(null),[selectedInterval,setSelectedInterval]=useState23(),hasBuilder=table.builder!==void 0,resolved2=useMemo16(()=>resolveExploreQuery(table,builder),[table,builder]),fixedSortItems=useMemo16(()=>fieldSortItems(table.fields),[table.fields]),intervalItems=useMemo16(()=>chartIntervalOptions(state.statsPeriod),[state.statsPeriod]),interval=intervalItems.find(({value})=>value===selectedInterval)?.value??intervalItems[0]?.value??chartInterval(state.statsPeriod),attributes=useTraceItemAttributes(client2,{org,itemType:table.builder?.itemType,statsPeriod:state.statsPeriod,project,environment}),{events,timeseries,nextCursor,page,nextPage,previousPage}=useExploreEvents(client2,table,{org,query,request:resolved2,statsPeriod:state.statsPeriod,interval,project,environment,reloadToken}),loading=events.state==="loading",since=loadingSince(events),rows=valueOf(events),error=errorOf(events),buckets=valueOf(timeseries);useEffect26(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef18(page);useEffect26(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect26(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:table.noun}})},[loading,since,error,events,dispatch,table.noun]);let closeDropdown=useCallback22(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),closeQueryDropdown=useCallback22(()=>setQueryDropdown(null),[]),openQueryDropdown=useCallback22((which)=>{dispatch({type:"setOpenDropdown",payload:null}),setQueryDropdown(which)},[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0},handleKey:(key)=>{if(matchesCommand("sentry.explore.interval",key))return openQueryDropdown("interval"),!0;if(!hasBuilder)return!1;if(matchesCommand("sentry.explore.visualize",key))return openQueryDropdown("visualize"),!0;if(matchesCommand("sentry.explore.visualizeField",key)){let kind=argumentKind(builder.aggregate);if(kind!=="none"&&kind!=="count")openQueryDropdown("field");return!0}if(matchesCommand("sentry.explore.groupBy",key))return openQueryDropdown("groupBy"),!0;if(matchesCommand("sentry.view.sort",key))return openQueryDropdown("sort"),!0;if(matchesCommand("sentry.explore.sortDirection",key))return setBuilder((current)=>withToggledDirection(current,table)),!0;return!1}});let maxDurationMs=useMemo16(()=>longestDuration(rows),[rows]),maxAggregate=useMemo16(()=>largest(rows,resolved2.yAxis),[rows,resolved2.yAxis]),columns=useMemo16(()=>resolved2.mode==="aggregate"?aggregateColumns(builder.groupBys,resolved2.yAxis,maxAggregate,theme):exploreColumnsFor(table.id,{maxDurationMs,theme}),[resolved2.mode,resolved2.yAxis,builder.groupBys,maxAggregate,table.id,maxDurationMs,theme]),selected=rows?.[state.selected]??null,showDetail=state.detailOpen&&selected!==null,hasChart=!showDetail&&fitsChart(height,QUERY_BAR_ROWS)&&buckets!==void 0&&buckets.length>0,inner=Math.max(20,width-2);return jsxDEV43("box",{style:{flexDirection:"column",width,height},children:[jsxDEV43(SearchInput,{value:state.searchQuery,placeholder:table.searchPlaceholder,focused:state.searchFocused,width,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV43(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:hasBuilder?void 0:{value:resolved2.sort,items:fixedSortItems,onChange:(value)=>setBuilder((current)=>withSort(current,parseSort(value)))},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),hasBuilder?jsxDEV43(ExploreQueryBar,{table,query:builder,attributes,open:queryDropdown,width,anchorTop:SEARCH_ROWS+QUERY_BAR_ROWS,interval:interval??"",intervalItems,onChange:setBuilder,onIntervalChange:setSelectedInterval,onOpen:openQueryDropdown,onClose:closeQueryDropdown},void 0,!1,void 0,this):jsxDEV43(ExploreIntervalBar,{interval:interval??"",items:intervalItems,open:queryDropdown==="interval",width,anchorTop:SEARCH_ROWS+QUERY_BAR_ROWS,onOpen:()=>openQueryDropdown("interval"),onChange:setSelectedInterval,onClose:closeQueryDropdown},void 0,!1,void 0,this),hasChart&&buckets?jsxDEV43(BarChart,{buckets,width:inner,height:CHART_ROWS,title:exploreChartTitle(table,resolved2.yAxis),noun:sumsOverTime(builder.aggregate)?table.noun:void 0},void 0,!1,void 0,this):null,jsxDEV43(DataTable,{rows,columns,width,selectedIndex:state.selected,focused,rowKey:(event,index)=>`${index}:${event.id}`,minFlex:EXPLORE_MIN_FLEX,loading:isInitialLoad(events),error,errorTitle:`Failed to load ${table.noun}`,onRowClick:activateRow,empty:{title:`No ${table.noun} found.`,lines:exploreEmptyLines(table,query)},layout:[height,hasChart,showDetail]},void 0,!1,void 0,this),showDetail&&selected?table.id==="explore.logs"?jsxDEV43(LogDetail,{event:selected,width:inner},void 0,!1,void 0,this):jsxDEV43(EventDetail,{event:selected,fields:resolved2.fields,width:inner},void 0,!1,void 0,this):null,jsxDEV43(ResultFooter,{count:rows?.length,noun:rowNoun(table),hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ExploreIntervalBar({interval,items,open,width,anchorTop,onOpen,onChange,onClose}){let theme=useTheme();return jsxDEV43(Fragment14,{children:[jsxDEV43("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV43("text",{fg:theme.muted,children:"Interval "},void 0,!1,void 0,this),jsxDEV43(Chip,{command:"sentry.explore.interval",label:interval,caret:!0,active:open,onPress:onOpen},void 0,!1,void 0,this)]},void 0,!0,void 0,this),open?jsxDEV43(Dropdown,{title:"Chart Interval",items,selected:[interval],anchorLeft:9,anchorTop:anchorTop+CHIP_HEIGHT,availableWidth:width,showAll:!1,onSelect:(values)=>{let value=values[0];if(value)onChange(value);onClose()},onClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function LogDetail({event,width}){let theme=useTheme(),traceId=field(event,"trace");return jsxDEV43("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV43("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Log Details"},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.text,children:fitText(field(event,"message"),width)},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.muted,children:` Severity: ${logSeverity(event)} \u2502 Project: ${field(event,"project")||"\u2014"}`},void 0,!1,void 0,this),traceId?jsxDEV43("text",{fg:theme.muted,children:` Trace: ${traceId}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function EventDetail({event,fields,width}){let theme=useTheme(),valueWidth=Math.max(10,width-DETAIL_LABEL_WIDTH-2);return jsxDEV43("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV43("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Row Details"},void 0,!1,void 0,this),fields.map((name)=>jsxDEV43("box",{style:{flexDirection:"row",width},children:[jsxDEV43("text",{fg:theme.muted,children:` ${padText(name,DETAIL_LABEL_WIDTH)}`},void 0,!1,void 0,this),jsxDEV43("text",{fg:theme.text,children:fitText(displayValue(event,name),valueWidth)},void 0,!1,void 0,this)]},name,!0,void 0,this))]},void 0,!0,void 0,this)}function displayValue(event,name){let value=field(event,name);return value===""?"\u2014":value.replace(/\s+/g," ")}function largest(rows,name){let max=0;for(let row of rows??[]){let value=rowNumber(row.row,name);if(value!==void 0&&value>max)max=value}return max}function longestDuration(rows){if(!rows)return 0;let max=0;for(let row of rows){let value=Number(row.row["span.duration"]);if(Number.isFinite(value)&&value>max)max=value}return max}function rowNoun(table){return table.noun.endsWith("s")?table.noun.slice(0,-1):table.noun}import{useCallback as useCallback24,useEffect as useEffect29,useMemo as useMemo18}from"h:0__";var DASHBOARD_LIST_VIEWS={"dashboards.all":{title:"All Dashboards",description:"Every dashboard in this organization.",sort:"recentlyViewed",searchPlaceholder:"Search dashboards by title\u2026",emptyTitle:"No dashboards found.",emptyLines:["This organization may not have dashboards enabled.","Otherwise there are none yet \u2014 create one on sentry.io, as this client is read-only."]},"dashboards.sentry-built":{title:"Sentry Built",description:"Prebuilt dashboards Sentry ships for you.",filter:"onlyPrebuilt",sort:"mostPopular",searchPlaceholder:"Search Sentry Built dashboards\u2026",emptyTitle:"No Sentry Built dashboards.",emptyLines:["This organization may not have prebuilt dashboards enabled.","The web app hides this section entirely without the feature; we can't read org features, so it shows up empty instead."]}};function getDashboardListView(id){return DASHBOARD_LIST_VIEWS[id]}import{jsxDEV as jsxDEV44,Fragment as Fragment15}from"h:6___________________________";function SortBar({value,items,open,width,anchorTop,onChange,onOpen,onClose}){let anchorLeft=Math.max(0,width-chipWidth({command:SORT_COMMAND,label:sortLabel(items,value),caret:!0}));return jsxDEV44(Fragment15,{children:[jsxDEV44("box",{style:{flexDirection:"row",alignItems:"center",flexShrink:0,width,height:CHIP_HEIGHT,overflow:"hidden"},children:[jsxDEV44("box",{style:{flexGrow:1}},void 0,!1,void 0,this),jsxDEV44(SortSelector,{value,items,open,onOpen},void 0,!1,void 0,this)]},void 0,!0,void 0,this),open?jsxDEV44(SortDropdown,{value,items,anchorLeft,anchorTop:anchorTop+CHIP_HEIGHT,availableWidth:width,onChange,onClose},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useCallback as useCallback23,useEffect as useEffect28,useMemo as useMemo17,useRef as useRef20,useState as useState25}from"h:0__";function widgetRenderKind(displayType){switch(displayType){case"big_number":return"number";case"bar":case"area":case"line":return"series";case"table":case"top_n":return"table";case"categorical_bar":return"bars";default:return"unsupported"}}function widgetDataset(widgetType){switch(widgetType){case void 0:case null:case"discover":return"discover";case"error-events":return"errors";case"transaction-like":return"transactions";case"spans":return"spans";case"logs":return"ourlogs";case"tracemetrics":return"tracemetrics";case"preprod-app-size":return"preprodSize";default:return null}}function unsupportedReason(widget){if(widgetRenderKind(widget.displayType)==="unsupported")return`"${widget.displayType}" widgets are not renderable in the terminal.`;return`"${widget.widgetType}" widgets are not read through the events API.`}var DEFAULT_TABLE_ROWS=5,MAX_TABLE_ROWS=10,MAX_CATEGORICAL_BARS=8;async function fetchWidgetData(client2,{org,widget,statsPeriod,project,environment,signal}){let kind=widgetRenderKind(widget.displayType),dataset=widgetDataset(widget.widgetType),query=widget.queries[0];if(kind==="unsupported"||dataset===null||!query)return null;let common={org,dataset,query:query.conditions,statsPeriod,project,environment,referrer:"sentry-tui.dashboards",signal};switch(kind){case"number":{let aggregate=bigNumberAggregate(query),page=await queryDiscover(client2,{...common,fields:[aggregate],limit:1}),value=page.rows[0]?rowNumber(page.rows[0],aggregate):void 0;return{kind:"number",value,formatted:formatWidgetValue(value),label:aggregate}}case"series":{let interval=dashboardChartInterval(statsPeriod,widget.interval,widget.displayType==="bar"),series=[];for(let savedQuery of widget.queries){let yAxis=savedQuery.aggregates[0]??"count()",buckets=await queryDiscoverTimeseries(client2,{...common,query:savedQuery.conditions,yAxis,interval});series.push({buckets,label:savedQuery.name||yAxis})}return{kind:"series",series}}case"table":{let fields=tableFields(query),page=await queryDiscover(client2,{...common,fields,sort:query.orderby||void 0,limit:tableRowLimit(widget)});return{kind:"table",headers:tableHeaders(query,fields),fields,rows:page.rows}}case"bars":{let group=query.columns[0],aggregate=query.aggregates[0]??"count()";return{kind:"bars",entries:(await queryDiscover(client2,{...common,fields:group?[group,aggregate]:[aggregate],sort:query.orderby||`-${aggregate}`,limit:MAX_CATEGORICAL_BARS})).rows.map((row,index)=>({label:(group?rowString(row,group):void 0)??`#${index+1}`,value:rowNumber(row,aggregate)??0})),label:aggregate}}}}function bigNumberAggregate(query){let index=query.selectedAggregate??0;return query.aggregates[index]??query.aggregates[0]??"count()"}function tableFields(query){let fields=query.fields?.filter((field2)=>field2.length>0)??[];if(fields.length>0)return fields;let combined=[...query.columns,...query.aggregates].filter((field2)=>field2.length>0);return combined.length>0?combined:["count()"]}function tableHeaders(query,fields){return fields.map((field2,index)=>query.fieldAliases?.[index]||field2)}function tableRowLimit(widget){let limit=widget.limit??DEFAULT_TABLE_ROWS;return Math.max(1,Math.min(limit,MAX_TABLE_ROWS))}function formatWidgetValue(value){if(value===void 0||!Number.isFinite(value))return"\u2014";if(!Number.isInteger(value))return Math.abs(value)>=1000?abbreviate(value):value.toFixed(2);return Math.abs(value)>=1e4?abbreviate(value):String(value)}function abbreviate(value){let sign=value<0?"-":"",n=Math.abs(value);if(n>=1e9)return`${sign}${trim(n/1e9)}b`;if(n>=1e6)return`${sign}${trim(n/1e6)}m`;return`${sign}${trim(n/1000)}k`}function trim(value){return value.toFixed(1).replace(/\.0$/,"")}var BIG_DIGIT_ROWS=5;var GLYPHS={"0":["\u2588\u2588\u2588","\u2588 \u2588","\u2588 \u2588","\u2588 \u2588","\u2588\u2588\u2588"],"1":[" \u2588\u2588"," \u2588"," \u2588"," \u2588"," \u2588"],"2":["\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588"],"3":["\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"4":["\u2588 \u2588","\u2588 \u2588","\u2588\u2588\u2588"," \u2588"," \u2588"],"5":["\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"6":["\u2588\u2588\u2588","\u2588 ","\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"],"7":["\u2588\u2588\u2588"," \u2588"," \u2588"," \u2588"," \u2588"],"8":["\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"],"9":["\u2588\u2588\u2588","\u2588 \u2588","\u2588\u2588\u2588"," \u2588","\u2588\u2588\u2588"],"-":[" "," ","\u2588\u2588\u2588"," "," "],".":[" "," "," "," ","\u2588"],",":[" "," "," "," ","\u2588"]," ":[" "," "," "," "," "]};function hasBigGlyph(char){return char in GLYPHS}function splitBigValue(formatted){let end=0;while(end<formatted.length&&hasBigGlyph(formatted[end]))end++;return{numeric:formatted.slice(0,end),suffix:formatted.slice(end)}}function bigDigitLines(text2){let glyphs=[...text2].map((char)=>GLYPHS[char]).filter((glyph)=>glyph!==void 0);if(glyphs.length===0)return Array.from({length:5},()=>"");return Array.from({length:5},(_,row)=>glyphs.map((glyph)=>glyph[row]).join(" "))}var CARD_BORDER_ROWS=2,CARD_TITLE_ROWS=1,CARD_GAP_ROWS=1,SERIES_CHART_ROWS=8,SERIES_AXIS_ROWS=1,NUMBER_BODY_ROWS=BIG_DIGIT_ROWS+1,UNSUPPORTED_BODY_ROWS=2,TABLE_HEADER_ROWS=1;function widgetBodyLines(widget,kind){switch(kind){case"number":return NUMBER_BODY_ROWS;case"series":return SERIES_CHART_ROWS+SERIES_AXIS_ROWS;case"table":return TABLE_HEADER_ROWS+tableRowLimit(widget);case"bars":return barRowCount(widget);case"unsupported":return UNSUPPORTED_BODY_ROWS}}function widgetCardHeight(widget,kind){return CARD_BORDER_ROWS+CARD_TITLE_ROWS+widgetBodyLines(widget,kind)+CARD_GAP_ROWS}function barRowCount(widget){let limit=widget.limit??MAX_CATEGORICAL_BARS;return Math.max(1,Math.min(limit,MAX_CATEGORICAL_BARS))}function orderWidgets(widgets){return[...widgets].map((widget,index)=>({widget,index})).sort((a,b)=>{let layoutA=a.widget.layout,layoutB=b.widget.layout;if(!layoutA&&!layoutB)return a.index-b.index;if(!layoutA)return 1;if(!layoutB)return-1;return layoutA.y-layoutB.y||layoutA.x-layoutB.x||a.index-b.index}).map(({widget})=>widget)}function stackOffsets(heights){let tops=[],top=0;for(let height of heights)tops.push(top),top+=height;return tops}function scrollTopForWidget({heights,index,viewportHeight,scrollTop}){if(heights.length===0||viewportHeight<=0)return 0;let clamped=Math.max(0,Math.min(index,heights.length-1)),tops=stackOffsets(heights),contentHeight=tops[heights.length-1]+heights[heights.length-1],maxScrollTop=Math.max(0,contentHeight-viewportHeight),top=tops[clamped],bottom=top+heights[clamped],next=top<scrollTop||heights[clamped]>viewportHeight?top:bottom>scrollTop+viewportHeight?bottom-viewportHeight:scrollTop;return Math.min(Math.max(next,0),maxScrollTop)}import{jsxDEV as jsxDEV45}from"h:6___________________________";var CARD_CHROME_WIDTH=4,AXIS_LABEL_WIDTH=6,BAR_LABEL_MIN=8,BAR_LABEL_MAX=24,BAR_VALUE_WIDTH=8,TABLE_MIN_COLUMN=8;function WidgetCard({widget,kind,status,width,height,selected,placeholder=!1}){let theme=useTheme(),inner=Math.max(4,width-CARD_CHROME_WIDTH),bodyLines=Math.max(0,height-3);return jsxDEV45("box",{style:{flexDirection:"column",width,height,flexShrink:0,marginBottom:CARD_GAP_ROWS,border:!0,borderColor:selected?theme.accent:theme.border,backgroundColor:selected?theme.panel:void 0,paddingLeft:1,paddingRight:1},children:[jsxDEV45(CardTitle,{widget,width:inner,selected,placeholder},void 0,!1,void 0,this),jsxDEV45(CardBody,{widget,kind,status:placeholder?void 0:status,width:inner,lines:bodyLines},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function CardTitle({widget,width,selected,placeholder}){let theme=useTheme(),tag=widget.displayType,titleWidth=Math.max(1,width-tag.length-1);return jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:placeholder?theme.panelAlt:selected?theme.accent:theme.text,attributes:placeholder?0:BOLD,children:padText(placeholder?skeletonBar(titleWidth,3):widget.title||"Untitled widget",titleWidth)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.subText,attributes:DIM,children:padText(tag,tag.length+1,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function CardBody({widget,kind,status,width,lines}){if(kind==="unsupported")return jsxDEV45(NotRenderable,{reason:unsupportedReason(widget),width,lines},void 0,!1,void 0,this);let error=errorOf(status);if(error)return jsxDEV45(CardError,{message:error.message,width,lines},void 0,!1,void 0,this);let data=valueOf(status)??null;if(data===null&&status?.state==="ready")return jsxDEV45(NotRenderable,{reason:unsupportedReason(widget),width,lines},void 0,!1,void 0,this);let pending=data===null||isLoading(status)||status===void 0;switch(kind){case"number":return jsxDEV45(NumberBody,{data:data?.kind==="number"?data:void 0,pending,width},void 0,!1,void 0,this);case"series":return jsxDEV45(SeriesBody,{data:data?.kind==="series"?data:void 0,pending,width},void 0,!1,void 0,this);case"table":return jsxDEV45(TableBody,{data:data?.kind==="table"?data:void 0,width,lines},void 0,!1,void 0,this);case"bars":return jsxDEV45(BarsBody,{data:data?.kind==="bars"?data:void 0,rows:barRowCount(widget),width},void 0,!1,void 0,this)}}function NumberBody({data,pending,width}){let theme=useTheme(),{numeric,suffix}=splitBigValue(data?.formatted??""),glyphs=bigDigitLines(pending||numeric.length===0?"000":numeric),dim=pending||numeric.length===0,lastRow=glyphs.length-1,tail=suffix?` ${suffix}`:"",blockWidth=(glyphs[0]?.length??0)+tail.length;return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:[glyphs.map((line,row)=>jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:jsxDEV45("text",{fg:dim?theme.panelAlt:theme.text,children:padText(padText(row===lastRow?line+tail:line,blockWidth),width,"center")},void 0,!1,void 0,this)},row,!1,void 0,this)),jsxDEV45("text",{fg:theme.muted,children:padText(data?.label??"",width,"center")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function SeriesBody({data,pending,width}){let theme=useTheme(),chartWidth=Math.max(4,width-AXIS_LABEL_WIDTH-1),rawSeries=(data?.series??[]).map(({buckets,label})=>({label,points:buckets.map(([at,series])=>[at,series[0]?.count??0])})),visibleSeries=pending?[{label:"",points:void 0}]:rawSeries.slice(0,SERIES_CHART_ROWS),colors=[theme.accent,theme.success,theme.warning,theme.highlight],baseRows=Math.floor(SERIES_CHART_ROWS/Math.max(1,visibleSeries.length)),remainder=SERIES_CHART_ROWS%Math.max(1,visibleSeries.length),multiple=visibleSeries.length>1,rows=visibleSeries.flatMap(({label,points},seriesIndex)=>{let rowCount=baseRows+(remainder-- >0?1:0),stretched=points?stretch(points,chartWidth):void 0,lines=sparklineBlock(stretched,chartWidth,rowCount,{floor:!0}),max=points&&points.length>0?Math.max(...points.map(([,count])=>count)):0;return lines.map((line,row)=>({line,color:colors[seriesIndex%colors.length],gutter:multiple?row===0?fitText(label,AXIS_LABEL_WIDTH):"":axisLabel(row,lines.length,max,Boolean(points))}))}),first=rawSeries[0]?.points,axisTitle=multiple?`${visibleSeries.length} series`:rawSeries[0]?.label??"";return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:[rows.map(({line,gutter,color},row)=>jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:theme.muted,attributes:DIM,children:`${padText(gutter,AXIS_LABEL_WIDTH,multiple?"left":"right")} `},void 0,!1,void 0,this),jsxDEV45("text",{fg:pending?theme.panelAlt:color,children:line},void 0,!1,void 0,this)]},row,!0,void 0,this)),jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:theme.muted,attributes:DIM,children:" ".repeat(AXIS_LABEL_WIDTH+1)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.subText,attributes:DIM,children:timeAxis(first,axisTitle,chartWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function axisLabel(row,rows,max,settled){if(!settled)return"";if(row===0)return formatWidgetValue(max);if(row===rows-1)return"0";return""}function timeAxis(points,label,width){if(!points||points.length===0||width<12)return" ".repeat(Math.max(0,width));let first=clock(points[0][0]),last=clock(points[points.length-1][0]),middle=Math.max(1,width-first.length-last.length);return`${first}${padText(fitText(label,Math.max(0,middle-4)),middle,"center")}${last}`.slice(0,width)}function clock(unixSeconds){let date=new Date(unixSeconds*1000);return`${String(date.getHours()).padStart(2,"0")}:${String(date.getMinutes()).padStart(2,"0")}`}function TableBody({data,width,lines}){let theme=useTheme(),headers=data?.headers??[],fields=data?.fields??[],specs=(headers.length>0?headers:[""]).map((header,index)=>({key:String(index),width:"flex",priority:headers.length-index,header,field:fields[index]??""})),resolved2=layoutColumns(specs,width,{gap:1,minFlex:TABLE_MIN_COLUMN}),rowLines=Math.max(0,lines-1);return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV45("text",{fg:theme.muted,children:resolved2.map(({column,width:cell})=>padText(column.header,cell)).join(" ")},void 0,!1,void 0,this),Array.from({length:rowLines},(_,row)=>{let values=data?.rows[row];return jsxDEV45("text",{fg:values?theme.text:theme.panelAlt,children:resolved2.map(({column,width:cell})=>padText(values?cellText2(values,column.field):data?"":skeletonBar(cell,row),cell)).join(" ")},row,!1,void 0,this)})]},void 0,!0,void 0,this)}function cellText2(row,field2){let value=row[field2];if(value===void 0||value===null||value==="")return"\u2014";if(typeof value==="number")return Number.isInteger(value)?String(value):value.toFixed(2);return String(value)}function skeletonBar(width,seed){if(width<=0)return"";let fraction=0.4+seed*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(width,Math.floor(width*fraction))))}function BarsBody({data,rows,width}){let theme=useTheme(),labelWidth=Math.max(BAR_LABEL_MIN,Math.min(BAR_LABEL_MAX,Math.floor(width*0.35))),barWidth=Math.max(1,width-labelWidth-BAR_VALUE_WIDTH-2),entries=data?.entries??[],max=Math.max(1,...entries.map((entry)=>entry.value));return jsxDEV45("box",{style:{flexDirection:"column",width,flexShrink:0},children:Array.from({length:rows},(_,row)=>{let entry=entries[row],filled=entry?Math.max(1,Math.round(entry.value/max*barWidth)):0,track=entry||!data?Math.max(0,barWidth-filled):0;return jsxDEV45("box",{style:{flexDirection:"row",width,flexShrink:0},children:[jsxDEV45("text",{fg:entry?theme.subText:theme.panelAlt,children:`${padText(entry?.label??(data?"":skeletonBar(labelWidth,row)),labelWidth)} `},void 0,!1,void 0,this),filled>0?jsxDEV45("text",{fg:theme.accent,children:"\u2588".repeat(filled)},void 0,!1,void 0,this):null,track>0?jsxDEV45("text",{fg:theme.panelAlt,children:"\u2591".repeat(track)},void 0,!1,void 0,this):null,jsxDEV45("text",{fg:entry?theme.text:theme.panelAlt,children:padText(entry?formatCount(entry.value):"",BAR_VALUE_WIDTH,"right")},void 0,!1,void 0,this)]},row,!0,void 0,this)})},void 0,!1,void 0,this)}function NotRenderable({reason,width,lines}){let theme=useTheme();return jsxDEV45(FixedLines,{width,lines,children:[jsxDEV45("text",{fg:theme.muted,children:fitText(reason,width)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.subText,attributes:DIM,children:fitText("Open it on sentry.io to see this one.",width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function CardError({message,width,lines}){let theme=useTheme();return jsxDEV45(FixedLines,{width,lines,children:[jsxDEV45("text",{fg:theme.danger,children:fitText("Failed to load this widget",width)},void 0,!1,void 0,this),jsxDEV45("text",{fg:theme.muted,children:fitText(message,width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function FixedLines({width,lines,children}){return jsxDEV45("box",{style:{flexDirection:"column",width,height:lines,flexShrink:0},children},void 0,!1,void 0,this)}import{useEffect as useEffect27,useRef as useRef19,useState as useState24}from"h:0__";function useDashboardDetail(client2,{org,id,reloadToken=0}){let[status,setStatus]=useState24(idle),statusRef=useRef19(status);return statusRef.current=status,useEffect27(()=>{if(!client2)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let dashboard=await getDashboard(client2,{org,id,signal});if(!cancelled)setStatus(resolved(withPrebuiltDetails(dashboard),Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,id,reloadToken]),status}function widgetKey(widget,index){return widget.id??`#${index}`}function useWidgetData(client2,{org,dashboardId,widgets,upto,statsPeriod,project,environment,reloadToken=0}){let[results,setResults]=useState24(()=>new Map),queryKey=JSON.stringify([org,dashboardId,statsPeriod,project??null,environment??null,reloadToken]),params=useRef19({org,statsPeriod,project,environment});params.current={org,statsPeriod,project,environment};let requested=useRef19(new Set),chain=useRef19(Promise.resolve()),controller=useRef19(null);return useEffect27(()=>{requested.current=new Set,chain.current=Promise.resolve(),setResults(new Map);let next=new AbortController;return controller.current=next,()=>next.abort()},[queryKey]),useEffect27(()=>{if(!client2)return;let abort=controller.current;if(!abort)return;let limit=Math.min(widgets.length,Math.max(0,upto));for(let index=0;index<limit;index++){let widget=widgets[index],key=widgetKey(widget,index);if(requested.current.has(key))continue;if(requested.current.add(key),!isFetchable(widget)){setResults((map)=>withEntry(map,key,resolved(null,Date.now())));continue}setResults((map)=>withEntry(map,key,startLoading(void 0,Date.now()))),chain.current=chain.current.then(async()=>{if(abort.signal.aborted)return;try{let data=await fetchWidgetData(client2,{...params.current,widget,signal:abort.signal});if(!abort.signal.aborted)setResults((map)=>withEntry(map,key,resolved(data,Date.now())))}catch(error){if(abort.signal.aborted)return;setResults((map)=>withEntry(map,key,rejected(void 0,toAsyncError(error))))}})}},[client2,widgets,upto,queryKey]),results}function isFetchable(widget){return widgetRenderKind(widget.displayType)!=="unsupported"&&widgetDataset(widget.widgetType)!==null&&widget.queries.length>0}function withEntry(map,key,value){let next=new Map(map);return next.set(key,value),next}import{jsxDEV as jsxDEV46}from"h:6___________________________";var INITIAL_WIDGETS=2,LOOKAHEAD=2,DEFAULT_DASHBOARD_PERIOD="14d",SCROLLBAR_GUTTER=2,HEADER_ROWS=1;function dashboardDetailView(row){return{id:`dashboard:${row.id}`,sentryLocation:{screen:"dashboards.all",detail:{kind:"dashboard",dashboardId:row.id}},label:row.title,stateKey:DASHBOARD_DETAIL_STATE_KEY,initialState:{statsPeriod:DEFAULT_DASHBOARD_PERIOD,selectedEnvs:row.environment??[],selectedProjects:[]},render:(ctx)=>ctx.state?jsxDEV46(DashboardWidgetGrid,{...ctx,state:ctx.state,dashboard:row},void 0,!1,void 0,this):null}}function dashboardUrlView(dashboardId){return dashboardDetailView({id:dashboardId,title:`Dashboard ${dashboardId}`,widgetDisplay:[]})}function DashboardWidgetGrid({client:client2,org,state,focused,width,height,reloadToken,dashboard,updateView}){let theme=useTheme(),{dispatch}=state,listRef=useRef20(null),detail=useDashboardDetail(client2,{org,id:dashboard.id,reloadToken}),details=valueOf(detail),error=errorOf(detail),loading=detail.state==="loading";useEffect28(()=>{if(details)updateView(`dashboard:${dashboard.id}`,{label:details.title})},[details,dashboard.id,updateView]);let widgets=useMemo17(()=>orderWidgets(details?.widgets??[]),[details]),placeholders=useMemo17(()=>(dashboard.widgetDisplay??[]).map((displayType,index)=>({id:`placeholder-${index}`,title:"",displayType,queries:[]})),[dashboard.widgetDisplay]),showing=details?widgets:placeholders,isPlaceholder=!details,isPrebuilt=Boolean(details?.prebuiltId??dashboard.prebuiltId);useEffect28(()=>{dispatch({type:"setEntries",payload:widgets})},[widgets,dispatch]),useEffect28(()=>{dispatch({type:"setStatus",payload:{loading,error:error?.message,noun:"dashboard"}})},[loading,error,dispatch]);let seededPeriod=useRef20(null);useEffect28(()=>{if(!details?.period||seededPeriod.current===details.id)return;seededPeriod.current=details.id,dispatch({type:"setStatsPeriod",payload:details.period})},[details,dispatch]);let[upto,setUpto]=useState25(INITIAL_WIDGETS);useEffect28(()=>{setUpto((current)=>Math.max(current,state.selected+1+LOOKAHEAD))},[state.selected]);let project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,data=useWidgetData(client2,{org,dashboardId:dashboard.id,widgets,upto,statsPeriod:state.statsPeriod,project,environment,reloadToken}),cardWidth=Math.max(20,width-SCROLLBAR_GUTTER),heights=useMemo17(()=>showing.map((widget)=>widgetCardHeight(widget,widgetRenderKind(widget.displayType))),[showing]);useEffect28(()=>{let box=listRef.current;if(!box||heights.length===0)return;let viewportHeight=box.viewport.height;if(viewportHeight<=0)return;let next=scrollTopForWidget({heights,index:state.selected,viewportHeight,scrollTop:box.scrollTop});if(next!==box.scrollTop)box.scrollTop=next},[heights,state.selected,height]);let closeDropdown=useCallback23(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return jsxDEV46("box",{style:{flexDirection:"column",width,height},children:[jsxDEV46("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV46("text",{fg:theme.text,attributes:BOLD,children:fitText(details?.title??dashboard.title,Math.max(8,width-24))},void 0,!1,void 0,this),jsxDEV46("text",{fg:theme.muted,children:details?.period?` saved on ${details.period}`:" read-only"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV46(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,width,anchorTop:HEADER_ROWS,onProjectChange:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),error&&!details?jsxDEV46("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV46("text",{fg:theme.danger,children:"Failed to load dashboard"},void 0,!1,void 0,this),jsxDEV46("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV46("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null,details&&showing.length===0?jsxDEV46("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV46("text",{fg:theme.text,children:isPrebuilt?"This Sentry Built dashboard is not bundled in this version.":"This dashboard has no widgets."},void 0,!1,void 0,this),jsxDEV46("text",{fg:theme.muted,children:isPrebuilt?"Its widgets live in Sentry Web rather than the API; open it on sentry.io to view them.":"Add one on sentry.io \u2014 this client is read-only."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV46("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:showing.map((widget,index)=>jsxDEV46(WidgetCard,{widget,kind:widgetRenderKind(widget.displayType),status:data.get(widgetKey(widget,index)),width:cardWidth,height:heights[index]-1,selected:focused&&index===state.selected,placeholder:isPlaceholder},widgetKey(widget,index),!1,void 0,this))},void 0,!1,void 0,this),showing.length>0?jsxDEV46("text",{fg:theme.subText,attributes:DIM,children:fitText(` widget ${Math.min(state.selected+1,showing.length)} of ${showing.length} \xB7 j/k to move \xB7 esc to go back`,width)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV47}from"h:6___________________________";var HEADING_ROWS=4,MIN_TITLE_WIDTH2=28;function dashboardColumns(theme){let STAR_COLUMN={key:"star",label:"\u2605",width:1,render:(row)=>jsxDEV47("text",{fg:row.isFavorited?theme.warning:theme.border,children:row.isFavorited?"\u2605":"\u2606"},void 0,!1,void 0,this)},NAME_COLUMN={key:"name",label:"Name",width:"flex",render:(row,selected,width)=>jsxDEV47("text",{fg:selected?theme.text:theme.accent,attributes:selected?BOLD:0,children:padText(row.title,width)},void 0,!1,void 0,this)},WIDGETS_COLUMN={key:"widgets",label:"Widgets",width:7,align:"right",priority:4,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.text,children:padText(widgetCountLabel(row),width,"right")},void 0,!1,void 0,this)},LAST_VISITED_COLUMN={key:"lastVisited",label:"Last Visited",width:12,priority:5,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.subText,children:padText(row.lastVisited?timeAgo(row.lastVisited):"\u2014",width)},void 0,!1,void 0,this)};return{standard:[STAR_COLUMN,NAME_COLUMN,WIDGETS_COLUMN,{key:"owner",label:"Owner",width:18,priority:3,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.muted,children:padText(ownerLabel(row),width)},void 0,!1,void 0,this)},{key:"access",label:"Access",width:10,priority:1,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.muted,children:padText(accessLabel(row),width)},void 0,!1,void 0,this)},{key:"created",label:"Created",width:10,priority:2,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.subText,children:padText(row.dateCreated?timeAgo(row.dateCreated):"\u2014",width)},void 0,!1,void 0,this)},LAST_VISITED_COLUMN],prebuilt:[STAR_COLUMN,NAME_COLUMN,{key:"description",label:"Description",width:"flex",priority:1,render:(row,_selected,width)=>jsxDEV47("text",{fg:theme.muted,children:padText(row.description??"",width)},void 0,!1,void 0,this)},WIDGETS_COLUMN,LAST_VISITED_COLUMN]}}function DashboardList(props){let theme=useTheme(),{client:client2,org,screen,state,focused,width,height,reloadToken}=props,{dispatch,focusSearch,handleSearchBlur}=state,config=getDashboardListView(screen.id)??{title:screen.item,description:"",sort:"recentlyViewed",searchPlaceholder:"Search dashboards\u2026",emptyTitle:"No dashboards found.",emptyLines:[]},isPrebuilt=config.filter==="onlyPrebuilt",sortItems=useMemo18(()=>dashboardSortOptions(isPrebuilt),[isPrebuilt]),sort=dashboardSort(state.sort,config.sort,isPrebuilt),{dashboards:status,nextCursor}=useDashboards(client2,{org,filter:config.filter,query:state.committedQuery,sort,reloadToken}),rows=valueOf(status),error=errorOf(status),loading=status.state==="loading";useEffect29(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]),useEffect29(()=>{dispatch({type:"setStatus",payload:{loading,error:error?.message,noun:"dashboards"}})},[loading,error,dispatch]);let{pushView}=props,open=useCallback24((index)=>{let row=rows?.[index];if(row)pushView(dashboardDetailView(row))},[rows,pushView]);useScreenActions(props.registerActions,{open});let columnSets=dashboardColumns(theme),columns=isPrebuilt?columnSets.prebuilt:columnSets.standard;return jsxDEV47("box",{style:{flexDirection:"column",width,height},children:[jsxDEV47(SearchInput,{value:state.searchQuery,placeholder:config.searchPlaceholder,focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV47("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV47("text",{fg:theme.text,attributes:BOLD,children:config.title},void 0,!1,void 0,this),jsxDEV47("text",{fg:theme.muted,children:` ${config.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV47(SortBar,{value:sort,items:sortItems,open:state.openDropdown==="sort",width,anchorTop:SEARCH_ROWS+1,onChange:(sort2)=>dispatch({type:"setSort",payload:sort2}),onOpen:()=>dispatch({type:"setOpenDropdown",payload:"sort"}),onClose:()=>dispatch({type:"setOpenDropdown",payload:null})},void 0,!1,void 0,this),jsxDEV47(DataTable,{rows,columns,width,minFlex:MIN_TITLE_WIDTH2,selectedIndex:state.selected,focused,rowKey:(row)=>row.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load dashboards",onRowClick:props.activateRow,empty:{title:config.emptyTitle,lines:[state.committedQuery||void 0,...config.emptyLines]},layout:[height,HEADING_ROWS]},void 0,!1,void 0,this),jsxDEV47(ResultFooter,{count:rows?.length,noun:"dashboard",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function widgetCountLabel(row){if(row.widgetDisplay.length>0)return String(row.widgetDisplay.length);return row.prebuiltId==null?"0":"\u2014"}function ownerLabel(row){let owner=row.createdBy;if(!owner)return"Sentry";return owner.name||owner.email||"\u2014"}function accessLabel(row){let permissions=row.permissions;if(!permissions||permissions.isEditableByEveryone)return"All";let teams=permissions.teamsWithEditAccess?.length??0;return teams>0?`Creator +${teams}`:"Creator"}import{useCallback as useCallback27,useEffect as useEffect32,useMemo as useMemo21,useRef as useRef23}from"h:0__";import{RenderableEvents as RenderableEvents3}from"h:3__________";import{jsxDEV as jsxDEV48}from"h:6___________________________";function IssueListSkeleton({width,rows}){return jsxDEV48("box",{style:{flexDirection:"column",width},children:Array.from({length:rows},(_,i)=>jsxDEV48(IssueRowSkeleton,{width,seed:i},i,!1,void 0,this))},void 0,!1,void 0,this)}function IssueListEmpty({query}){let theme=useTheme();return jsxDEV48("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV48("text",{fg:theme.text,children:"No issues match this search."},void 0,!1,void 0,this),jsxDEV48("text",{fg:theme.muted,children:query},void 0,!1,void 0,this),jsxDEV48("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.nav.search"))} to edit the query`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function IssueListError({error}){let theme=useTheme();return jsxDEV48("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV48("text",{fg:theme.danger,children:"Failed to load issues"},void 0,!1,void 0,this),jsxDEV48("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this),error.retryable?jsxDEV48("text",{fg:theme.muted,children:`${formatKey(primaryKey("sentry.app.refresh"))} to retry`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}import{useMemo as useMemo20}from"h:0__";import{useCallback as useCallback25,useMemo as useMemo19}from"h:0__";var directories=new WeakMap;function loadOrganizationMembers(client2,org){let byOrg=directories.get(client2);if(!byOrg)byOrg=new Map,directories.set(client2,byOrg);let held=byOrg.get(org);if(held)return held;let request=listOrganizationMembers(client2,{org}).then((members)=>new Map(members.flatMap((member)=>member.user?[[member.user.id,member]]:[])));return byOrg.set(org,request),request.catch(()=>{if(byOrg.get(org)===request)byOrg.delete(org)}),request}function useOrganizationMembers(client2,org,enabled=!0){let loader=useCallback25((_signal)=>client2&&org&&enabled?loadOrganizationMembers(client2,org):null,[client2,org,enabled]),scope=useMemo19(()=>({client:client2,org,enabled}),[client2,org,enabled]);return useAsyncFetch(loader,{resetKey:scope}).status}var EMPTY=new Map;function useMemberAvatars(client2,org,enabled){let{supportsHighRes}=useImageSupport(),status=useOrganizationMembers(client2,org,enabled&&supportsHighRes),members=valueOf(status);return useMemo20(()=>members?avatarsByUserId([...members.values()]):EMPTY,[members])}import{useCallback as useCallback26,useEffect as useEffect31,useLayoutEffect,useRef as useRef22,useState as useState27}from"h:0__";import{useKeyboard as useKeyboard7}from"h:4___________";function frameIsVisible(frame,nextFrame,includeSystemFrames){return includeSystemFrames||frame.inApp||(nextFrame?.inApp??!1)||!frame.inApp&&nextFrame===void 0}function isRepeatedFrame(frame,other){if(!other)return!1;return frame.filename===other.filename&&frame.function===other.function&&frame.lineNo===other.lineNo&&frame.colNo===other.colNo}function buildStackRows(stacktrace,{includeSystemFrames=!1,newestFirst=!0}={}){let frames=stacktrace?.frames??[];if(frames.length===0)return[];let rows=[],pendingHidden=0;for(let i=0;i<frames.length;i++){let frame=frames[i],next=frames[i+1];if(!frameIsVisible(frame,next,includeSystemFrames)){pendingHidden++;continue}let previous=rows[rows.length-1];if(previous?.kind==="frame"&&pendingHidden===0&&isRepeatedFrame(frame,previous.frame)){previous.repeats++;continue}rows.push({kind:"frame",frame,index:i,repeats:0,hiddenBefore:pendingHidden}),pendingHidden=0}if(pendingHidden>0){let last=rows[rows.length-1];if(last?.kind==="frame")last.hiddenBefore+=pendingHidden}if(stacktrace?.framesOmitted){let[from,to]=stacktrace.framesOmitted;rows.push({kind:"omitted",from,to})}return newestFirst?rows.reverse():rows}function formatFrameTitle(frame){let parts=[frame.filename??frame.module??"<unknown>"];if(frame.function)parts.push(`in ${frame.function}`);if(frame.lineNo!==null&&frame.lineNo>0){let position=frame.colNo!==null&&frame.colNo>0?`${frame.lineNo}:${frame.colNo}`:String(frame.lineNo);parts.push(`at line ${position}`)}return parts.join(" ")}function frameIsExpandable(frame){return frame.context.length>0||frame.vars!==null&&Object.keys(frame.vars).length>0}function filetypeFor(frame){let name=frame.filename??frame.absPath??"";if(name.endsWith(".tsx"))return"tsx";if(name.endsWith(".ts"))return"typescript";if(name.endsWith(".js")||name.endsWith(".jsx"))return"javascript";if(name.endsWith(".md"))return"markdown";if(name.endsWith(".py")||name.endsWith(".pyi"))return"python";if(name.endsWith(".rb"))return"ruby";if(name.endsWith(".php"))return"php";if(name.endsWith(".go"))return"go";return}import{jsxDEV as jsxDEV49}from"h:6___________________________";function stackFrameKey(traceId,exceptionIndex,frameIndex){return`${traceId}:${exceptionIndex}:${frameIndex}`}function ExceptionSection({value,traceId,exceptionIndex,width,expandedFrames,selectedFrame,selectedFrameId,onFrameClick,includeSystemFrames}){let theme=useTheme(),rows=buildStackRows(value.stacktrace,{includeSystemFrames});return jsxDEV49("box",{style:{flexDirection:"column",width},children:[jsxDEV49("text",{fg:theme.danger,attributes:1,children:fitText(value.type??"Error",width)},void 0,!1,void 0,this),value.value?jsxDEV49("text",{fg:theme.text,children:fitText(value.value,width)},void 0,!1,void 0,this):null,value.mechanism?jsxDEV49("text",{fg:theme.muted,children:`mechanism: ${value.mechanism.type}${value.mechanism.handled?"":" \xB7 unhandled"}`},void 0,!1,void 0,this):null,rows.map((row)=>{if(row.kind==="omitted")return jsxDEV49("text",{fg:theme.muted,children:` \u2026 frames ${row.from}\u2013${row.to} omitted`},`omitted-${row.from}`,!1,void 0,this);let key=stackFrameKey(traceId,exceptionIndex,row.index);return jsxDEV49(FrameRow,{frame:row.frame,width,repeats:row.repeats,hiddenBefore:row.hiddenBefore,expanded:expandedFrames.has(key),selected:selectedFrame===key,selectedId:selectedFrameId,onClick:()=>onFrameClick(key)},row.index,!1,void 0,this)}),rows.length===0?jsxDEV49("text",{fg:theme.muted,children:"No stack trace available."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function FrameRow({frame,width,repeats,hiddenBefore,expanded,selected,selectedId,onClick}){let theme=useTheme(),marker=frameIsExpandable(frame)?expanded?"\u25BE":"\u25B8":" ";return jsxDEV49("box",{style:{flexDirection:"column",width},children:[hiddenBefore>0?jsxDEV49("text",{fg:theme.muted,children:` \u25B8 ${hiddenBefore} more frame${hiddenBefore===1?"":"s"}`},void 0,!1,void 0,this):null,jsxDEV49("box",{id:selected?selectedId:void 0,style:{flexDirection:"row",width,backgroundColor:selected?theme.selected:void 0},onMouseDown:onClick,children:[jsxDEV49("text",{fg:selected?theme.accent:theme.muted,children:`${selected?"\u276F":" "} ${marker} `},void 0,!1,void 0,this),jsxDEV49("text",{fg:frame.inApp?theme.text:theme.muted,children:fitText(formatFrameTitle(frame),width-15)},void 0,!1,void 0,this),jsxDEV49("box",{style:{flexGrow:1}},void 0,!1,void 0,this),repeats>0?jsxDEV49("text",{fg:theme.muted,children:`\xD7${repeats+1} `},void 0,!1,void 0,this):null,frame.inApp?jsxDEV49("text",{fg:theme.accent,children:"In App"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),expanded?jsxDEV49(FrameContext,{frame,width},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function FrameContext({frame,width}){let theme=useTheme(),syntaxStyle=useSyntaxStyle(),filetype=syntaxStyle?filetypeFor(frame):void 0,vars=frame.vars?Object.entries(frame.vars):[];return jsxDEV49("box",{style:{flexDirection:"column",width,paddingLeft:5},children:[frame.context.map(([lineNo,source])=>{let active=lineNo===frame.lineNo,gutter=String(lineNo).padStart(5);return jsxDEV49("box",{style:{flexDirection:"row",width:width-5},children:[jsxDEV49("text",{fg:active?theme.accent:theme.muted,children:`${gutter} ${active?"\u276F":" "} `},void 0,!1,void 0,this),filetype&&syntaxStyle?jsxDEV49("code",{content:source??"",filetype,syntaxStyle,style:{flexGrow:1}},void 0,!1,void 0,this):jsxDEV49("text",{fg:active?theme.text:theme.muted,children:fitText(source??"",width-14)},void 0,!1,void 0,this)]},lineNo,!0,void 0,this)}),vars.length>0?jsxDEV49("box",{style:{flexDirection:"column",paddingTop:1},children:[jsxDEV49("text",{fg:theme.muted,children:"Local variables"},void 0,!1,void 0,this),vars.map(([name,value])=>jsxDEV49("text",{fg:theme.muted,children:fitText(` ${name} = ${formatVar(value)}`,width-6)},name,!1,void 0,this))]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function formatVar(value){if(typeof value==="string")return value;try{return JSON.stringify(value)??String(value)}catch{return String(value)}}import{useEffect as useEffect30,useRef as useRef21,useState as useState26}from"h:0__";function useIssueEvent(client2,{org,issueId,eventId="latest",reloadToken=0}){let[event,setEvent]=useState26(idle),eventRef=useRef21(event);eventRef.current=event;let lastIssueId=useRef21(null);return useEffect30(()=>{if(!client2||!issueId){lastIssueId.current=null,setEvent(idle());return}let controller=new AbortController,cancelled=!1,sameIssue=lastIssueId.current===issueId;return lastIssueId.current=issueId,setEvent(startLoading(sameIssue?eventRef.current:idle(),Date.now())),(async()=>{try{let result=await fetchIssueEvent(client2,{org,issueId,eventId,signal:controller.signal});if(cancelled)return;setEvent(resolved(result,Date.now()))}catch(error){if(cancelled||controller.signal.aborted)return;setEvent(rejected(eventRef.current,{message:error instanceof Error?error.message:String(error),retryable:error instanceof ApiError?error.retryable:!0}))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,issueId,eventId,reloadToken]),event}import{jsxDEV as jsxDEV50,Fragment as Fragment16}from"h:6___________________________";var SECTION_ORDER=["exception","breadcrumbs","request","tags","contexts","sdk"],SECTION_TITLES={exception:"Stack Trace",breadcrumbs:"Breadcrumbs",request:"Request",tags:"Tags",contexts:"Contexts",sdk:"SDK"},HEADER_SPARKLINE_WIDTH=24,HEADER_SPARKLINE_ROWS=3,SELECTED_FRAME_ID="issue-detail-selected-frame",HEADER_ACTIONS_TOP=8,ISSUE_ACTIONS_COMMAND="sentry.issue.actions";function IssueDetail({client:client2,org,group,width,height,focused,eventId,reloadToken,runIssueAction,openIssueAutofix}){let theme=useTheme(),status=useIssueEvent(client2,{org,issueId:group.id,eventId,reloadToken}),event=valueOf(status),error=errorOf(status),loading=isInitialLoad(status),scrollRef=useRef22(null),[actionsOpen,setActionsOpen]=useState27(!1),{collapsed,toggle}=useSectionFolds(SECTION_ORDER,focused),[selectedFrameKey,setSelectedFrameKey]=useState27(),selectedFrameKeyRef=useRef22(selectedFrameKey),[frameExpansion,setFrameExpansion]=useState27(()=>new Map),frameRows=event?(findEntry(event.entries,"exception")?.data.values??[]).flatMap((value,exceptionIndex)=>buildStackRows(value.stacktrace).filter((row)=>row.kind==="frame").map((row)=>({key:stackFrameKey(event.id,exceptionIndex,row.index),row}))):[],selectedFrame=frameRows.find((frame)=>frame.key===selectedFrameKey)??frameRows[0],defaultExpandedFrame=frameRows[0]?.key,expandedFrames=new Set(frameRows.filter((frame)=>frameExpansion.get(frame.key)??frame.key===defaultExpandedFrame).map((frame)=>frame.key));useLayoutEffect(()=>{if(selectedFrameKey===selectedFrame?.key)return;selectedFrameKeyRef.current=selectedFrame?.key,setSelectedFrameKey(selectedFrame?.key)},[selectedFrame?.key,selectedFrameKey]);let toggleFrame=useCallback26((key)=>{setFrameExpansion((current)=>{let next=new Map(current),expanded=current.get(key)??key===defaultExpandedFrame;return next.set(key,!expanded),next})},[defaultExpandedFrame]),selectFrameAt=useCallback26((position)=>{let next=frameRows[Math.max(0,Math.min(position,frameRows.length-1))];if(!next)return;selectedFrameKeyRef.current=next.key,setSelectedFrameKey(next.key)},[frameRows]),clickFrame=useCallback26((key)=>{let position=frameRows.findIndex((frame)=>frame.key===key);if(position<0)return;selectFrameAt(position),toggleFrame(key)},[frameRows,selectFrameAt,toggleFrame]);useKeyboard7((key)=>{if(!focused)return;if(matchesCommand(ISSUE_ACTIONS_COMMAND,key)){setActionsOpen((open)=>!open),consumeKey(key);return}if(actionsOpen||collapsed.has("exception")||!selectedFrame)return;if(matchesCommand("sentry.nav.down",key)){let current=Math.max(0,frameRows.findIndex((frame)=>frame.key===selectedFrameKeyRef.current));if(current>=frameRows.length-1)return;selectFrameAt(current+1),consumeKey(key);return}if(matchesCommand("sentry.nav.up",key)){let current=Math.max(0,frameRows.findIndex((frame)=>frame.key===selectedFrameKeyRef.current));if(current===0)return;selectFrameAt(current-1),consumeKey(key);return}if(matchesCommand("sentry.nav.open",key)){let liveFrame=frameRows.find((frame)=>frame.key===selectedFrameKeyRef.current)??selectedFrame;toggleFrame(liveFrame.key),consumeKey(key)}}),useEffect31(()=>{scrollRef.current?.scrollChildIntoView(SELECTED_FRAME_ID)},[selectedFrame?.key,frameExpansion,height]);let inner=Math.max(20,width-2),actions=headerActions(group),actionsIndex=actions.findIndex((chip)=>chip.command===ISSUE_ACTIONS_COMMAND),actionsAnchorLeft=BODY_INDENT.length+(chipOffsets(actions)[Math.max(0,actionsIndex)]??0),actionItems=[{value:"sentry.issue.bookmark",label:group.isBookmarked?"Unbookmark":"Bookmark"},...!group.hasSeen?[{value:"sentry.issue.markReviewed",label:"Mark reviewed"}]:[],{value:"autofix",label:"Autofix"}],selectAction=useCallback26((values)=>{let action=values[0];if(setActionsOpen(!1),action==="autofix")openIssueAutofix(group);else if(action)runIssueAction(action,group)},[group,openIssueAutofix,runIssueAction]),pressHeaderAction=useCallback26((chip)=>{if(chip.command===ISSUE_ACTIONS_COMMAND)setActionsOpen((open)=>!open);else runIssueAction(chip.command,group)},[group,runIssueAction]);return jsxDEV50(Fragment16,{children:[jsxDEV50("scrollbox",{ref:scrollRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{width,height,paddingLeft:1},children:[jsxDEV50(IssueHeader,{group,width:inner,actions,actionsOpen,onActionPress:pressHeaderAction},void 0,!1,void 0,this),loading?jsxDEV50("text",{fg:theme.muted,children:`${BODY_INDENT}Loading event\u2026`},void 0,!1,void 0,this):null,error?jsxDEV50("box",{style:{flexDirection:"column",paddingTop:1},children:[jsxDEV50("text",{fg:theme.danger,children:`${BODY_INDENT}Failed to load event`},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:fitText(`${BODY_INDENT}${error.message}`,inner)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,event?SECTION_ORDER.map((key,i)=>jsxDEV50(Section,{index:i+1,title:SECTION_TITLES[key],count:sectionCount(key,event),collapsed:collapsed.has(key),width:inner,onToggle:()=>toggle(key),children:jsxDEV50(SectionBody,{sectionKey:key,event,width:inner,expandedFrames,selectedFrame:selectedFrame?.key,selectedFrameId:SELECTED_FRAME_ID,onFrameClick:clickFrame},void 0,!1,void 0,this)},key,!1,void 0,this)):null]},void 0,!0,void 0,this),actionsOpen?jsxDEV50(Dropdown,{title:"Actions",items:actionItems,selected:[],anchorLeft:actionsAnchorLeft,anchorTop:HEADER_ACTIONS_TOP+CHIP_HEIGHT,availableWidth:width,showAll:!1,showSelection:!1,onSelect:selectAction,onClose:()=>setActionsOpen(!1)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function headerActions(group){return[group.status===GroupStatus.RESOLVED?{command:"sentry.issue.unresolve",label:"unresolve",inlineHotkey:!0}:{command:"sentry.issue.resolve",label:"resolve",inlineHotkey:!0},group.status===GroupStatus.IGNORED?{command:"sentry.issue.archive",label:"unarchive",inlineHotkey:!0}:{command:"sentry.issue.archive",label:"archive",inlineHotkey:!0},{command:ISSUE_ACTIONS_COMMAND,label:"actions",inlineHotkey:!0,caret:!0}]}function headerSparkline(group){let series=group.stats?.["24h"],width=series?.length?Math.min(HEADER_SPARKLINE_WIDTH,series.length):0;return sparklineBlock(series,width||HEADER_SPARKLINE_WIDTH,HEADER_SPARKLINE_ROWS,{floor:!0})}function IssueHeader({group,width,actions,actionsOpen,onActionPress}){let theme=useTheme(),level=theme.level[group.level]??theme.level.unknown,titleWidth=Math.max(12,width-2),chart=headerSparkline(group),chartWidth=Math.max(...chart.map(measureTextWidth));return jsxDEV50("box",{style:{flexDirection:"column",width},children:[jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:level,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV50(Placeholder,{text:issueTitle(group),fallback:"(no title)",width:titleWidth,fg:theme.text,attributes:BOLD},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:level,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV50(Placeholder,{text:issueMessage(group),fallback:"(no error message)",width:titleWidth,fg:theme.muted},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width,paddingTop:1},children:[jsxDEV50("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV50(PlatformIcon,{platform:group.project.platform},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:group.project.slug},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:group.priority?`${group.priority} priority`:"no priority"},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:group.assignedTo?.name??"unassigned"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width,alignItems:"center",paddingTop:1},children:[jsxDEV50("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:"24h "},void 0,!1,void 0,this),jsxDEV50("box",{style:{flexDirection:"column",alignItems:"flex-start",width:chartWidth,flexShrink:0},children:chart.map((row,i)=>jsxDEV50("text",{fg:theme.accent,children:row},i,!1,void 0,this))},void 0,!1,void 0,this),jsxDEV50("text",{children:" "},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:countLabel(group.count,"event")},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:countLabel(group.userCount,"user")},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:`first seen ${timeAgo(group.firstSeen)} ago`},void 0,!1,void 0,this),jsxDEV50(Divider,{},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:`last seen ${timeAgo(group.lastSeen)} ago`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV50(ChipRow,{chips:actions,activeIndex:actionsOpen?actions.length-1:void 0,onPress:onActionPress},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV50("text",{fg:theme.border,children:"\u2500".repeat(width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function sectionCount(key,event){switch(key){case"breadcrumbs":return findEntry(event.entries,"breadcrumbs")?.data.values?.length;case"tags":return event.tags?.length;case"contexts":return Object.keys(event.contexts??{}).length;default:return}}function SectionBody({sectionKey,event,width,expandedFrames,selectedFrame,selectedFrameId,onFrameClick}){let theme=useTheme();switch(sectionKey){case"exception":{let values=findEntry(event.entries,"exception")?.data.values??[];if(values.length===0)return jsxDEV50(Empty,{children:"No exception on this event."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",paddingLeft:BODY_INDENT.length},children:values.map((value,i)=>jsxDEV50(ExceptionSection,{value,traceId:event.id,exceptionIndex:i,width:width-BODY_INDENT.length,expandedFrames,selectedFrame,selectedFrameId,onFrameClick,includeSystemFrames:!1},i,!1,void 0,this))},void 0,!1,void 0,this)}case"breadcrumbs":{let crumbs=findEntry(event.entries,"breadcrumbs")?.data.values??[];if(crumbs.length===0)return jsxDEV50(Empty,{children:"No breadcrumbs."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:crumbs.map((crumb,i)=>jsxDEV50(Crumb,{crumb,width},i,!1,void 0,this))},void 0,!1,void 0,this)}case"request":{let request=findEntry(event.entries,"request")?.data;if(!request?.url)return jsxDEV50(Empty,{children:"No request data."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:[jsxDEV50("text",{fg:theme.text,children:fitText(`${BODY_INDENT}${request.method??"GET"} ${request.url}`,width)},void 0,!1,void 0,this),(request.headers??[]).map(([name,value])=>jsxDEV50(Field,{name,value,width},name,!1,void 0,this))]},void 0,!0,void 0,this)}case"tags":{let tags=event.tags??[];if(tags.length===0)return jsxDEV50(Empty,{children:"No tags."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:tags.map((tag)=>jsxDEV50(Field,{name:tag.key,value:tag.value,width},tag.key,!1,void 0,this))},void 0,!1,void 0,this)}case"contexts":{let contexts=Object.entries(event.contexts??{});if(contexts.length===0)return jsxDEV50(Empty,{children:"No contexts."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"column",width},children:contexts.map(([name,values])=>jsxDEV50(Field,{name,value:summarize(values),width},name,!1,void 0,this))},void 0,!1,void 0,this)}case"sdk":if(!event.sdk)return jsxDEV50(Empty,{children:"Unknown SDK."},void 0,!1,void 0,this);return jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:theme.text,children:`${BODY_INDENT}${event.sdk.name}`},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:` ${event.sdk.version}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}}function Crumb({crumb,width}){let theme=useTheme(),time=crumb.timestamp?crumb.timestamp.slice(11,19):"--:--:--",category=crumb.category??crumb.type,message=crumb.message??summarize(crumb.data??{}),used=BODY_INDENT.length+time.length+2+KEY_COLUMN;return jsxDEV50("box",{style:{flexDirection:"row",width},children:[jsxDEV50("text",{fg:theme.subText,children:`${BODY_INDENT}${time} `},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.muted,children:keyCell(category)},void 0,!1,void 0,this),jsxDEV50("text",{fg:theme.text,children:fitText(message,Math.max(0,width-used))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function summarize(values){return Object.entries(values).filter(([key])=>key!=="type").map(([key,value])=>`${key}=${String(value)}`).join(" ")}import{jsxDEV as jsxDEV51}from"h:6___________________________";var SCROLLBAR_GUTTER2=1,TITLE_ROWS2=1;function IssueFeed(props){let{client:client2,org,state,focused,width,height,reloadToken,pendingIds,pushView,activateRow,registerActions}=props,theme=useTheme(),{dispatch}=state,view="screen"in props?getIssueView(props.screen.item):void 0,title="screen"in props?view?.label:props.title,description="screen"in props?view?.description:props.description,onProjectChange="screen"in props?props.onProjectSelect:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),inputRef=useRef23(null),listRef=useRef23(null),open=useCallback27((index)=>{let group=rowsOf(state)[index];if(group)pushView(issueView(group,client2,org))},[state,pushView,client2,org]),closeDropdown=useCallback27(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),inputRefCallback=useCallback27((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents3.FOCUSED),previous.removeAllListeners(RenderableEvents3.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents3.FOCUSED,state.focusSearch),node.on(RenderableEvents3.BLURRED,state.handleSearchBlur)},[state.focusSearch,state.handleSearchBlur]),sort=issueSort(state.sort),{issues,statsLoading,nextCursor,prevCursor,page,nextPage,previousPage}=useIssues(client2,{org,query:state.committedQuery,sort,statsPeriod:state.statsPeriod,project:state.selectedProjects.length>0?state.selectedProjects:void 0,environment:state.selectedEnvs.length>0?state.selectedEnvs:void 0,reloadToken});useScreenActions(registerActions,{open,nextPage,previousPage});let reportedPage=useRef23(page);useEffect32(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]);let loading=issues.state==="loading",since=loadingSince(issues),fetched=valueOf(issues),stored=rowsOf(state),rows=stored.length>0?stored:fetched,error=errorOf(issues),stale=rows!==void 0&&(loading||error!==void 0);useEffect32(()=>{if(fetched)dispatch({type:"setEntries",payload:fetched})},[fetched,dispatch]),useEffect32(()=>{dispatch({type:"setStatus",payload:{loading:loading||statsLoading,since,error:error?.message,noun:"issues"}})},[loading,statsLoading,since,error,issues,dispatch]),useRowScrollFollow(listRef,{index:state.selected,rowCount:rows?.length??0,rowHeight:ROW_HEIGHT,layout:[height]});let hasAssignee=useMemo21(()=>(rows??[]).some((group)=>group.assignedTo?.type==="user"),[rows]),avatars=useMemberAvatars(client2,org,hasAssignee),listWidth=Math.max(20,width-SCROLLBAR_GUTTER2);return jsxDEV51("box",{style:{flexDirection:"column",width,height},children:[title?jsxDEV51("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV51("text",{fg:theme.text,attributes:BOLD,children:title},void 0,!1,void 0,this),description?jsxDEV51("text",{fg:theme.muted,children:` ${fitText(description,Math.max(0,listWidth-measureTextWidth(title)-3))}`},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null,jsxDEV51("box",{style:{flexDirection:"row",width,flexShrink:0,height:3,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV51(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV51("input",{ref:inputRefCallback,value:state.searchQuery,placeholder:"Search issues\u2026",focused:state.searchFocused,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV51(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS+(title?TITLE_ROWS2:0),onProjectChange,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV51(IssueListHeader,{width:listWidth,selectionBelow:focused&&state.selected===0&&(rows?.length??0)>0},void 0,!1,void 0,this),jsxDEV51("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[rows===void 0&&isInitialLoad(issues)?jsxDEV51(IssueListSkeleton,{width:listWidth,rows:PAGE_SIZE},void 0,!1,void 0,this):null,rows!==void 0&&rows.length===0&&!loading?jsxDEV51(IssueListEmpty,{query:state.committedQuery},void 0,!1,void 0,this):null,rows?.map((group,index)=>jsxDEV51(IssueRow,{group,selected:focused&&index===state.selected,selectionBelow:focused&&index+1===state.selected,width:listWidth,pending:pendingIds.has(group.id),assigneeAvatarUrl:assigneeAvatarUrl(group.assignedTo,avatars),onClick:()=>activateRow(index)},group.id,!1,void 0,this)),error&&rows===void 0?jsxDEV51(IssueListError,{error},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),stale?jsxDEV51("text",{fg:theme.muted,children:error?` \u26A0 ${fitText(error.message,listWidth-3)}`:""},void 0,!1,void 0,this):null,jsxDEV51(ResultFooter,{count:rows?.length,noun:"issue",hasMore:nextCursor!==null,pagination:nextCursor!==null||prevCursor!==null||page>1?{page,hasPrevious:page>1&&prevCursor!==null,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function issueView(group,client2,org){return{id:`issue:${group.id}`,sentryLocation:{screen:"issues.feed",detail:{kind:"issue",issueId:group.id}},label:group.shortId,issue:group,render:(ctx)=>jsxDEV51(IssueDetail,{client:client2,org,group:ctx.issue??group,width:ctx.width,height:ctx.height,focused:ctx.focused,reloadToken:ctx.reloadToken,runIssueAction:ctx.runIssueAction,openIssueAutofix:ctx.openIssueAutofix},void 0,!1,void 0,this)}}var loadIssue=(client2,{org,id,signal})=>fetchIssue(client2,{org,issueId:id,signal});function issueUrlView(issueId,eventId){return{id:`issue:${issueId}`,sentryLocation:{screen:"issues.feed",detail:{kind:"issue",issueId,eventId}},label:`Issue ${issueId}`,render:(ctx)=>jsxDEV51(IssueFromUrl,{...ctx,issueId,eventId},void 0,!1,void 0,this)}}function IssueFromUrl({client:client2,org,issueId,eventId,reloadToken,width,height,focused,updateView,issue,runIssueAction,openIssueAutofix}){let status=useDirectResource(client2,{org,id:issueId,reloadToken,load:loadIssue}),group=valueOf(status);if(useEffect32(()=>{if(group)updateView(`issue:${issueId}`,{label:group.shortId,issue:group})},[group,issueId,updateView]),!group)return jsxDEV51(DirectDetailStatus,{status,noun:"issue",width,height},void 0,!1,void 0,this);return jsxDEV51(IssueDetail,{client:client2,org,group:issue??group,eventId,width,height,focused,reloadToken,runIssueAction,openIssueAutofix},void 0,!1,void 0,this)}import{useCallback as useCallback28,useEffect as useEffect35}from"h:0__";import{useEffect as useEffect34,useMemo as useMemo22,useRef as useRef25}from"h:0__";import{useEffect as useEffect33,useRef as useRef24,useState as useState28}from"h:0__";function useGroupSearchViews(client2,{org,sort,reloadToken=0}){let[sections,setSections]=useState28(idle),[nextCursors,setNextCursors]=useState28({mine:null,others:null}),sectionsRef=useRef24(sections);return sectionsRef.current=sections,useEffect33(()=>{if(!client2)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setSections(startLoading(sectionsRef.current,Date.now())),(async()=>{try{let[mine,others]=await Promise.all([listGroupSearchViews(client2,{org,createdBy:"me",sort,signal}),listGroupSearchViews(client2,{org,createdBy:"others",sort,signal})]);if(cancelled)return;setNextCursors({mine:mine.nextCursor,others:others.nextCursor}),setSections(resolved([{title:"Created by Me",views:mine.data},{title:"Created by Others",views:others.data}],Date.now()))}catch(error){if(cancelled||signal.aborted)return;setSections(rejected(sectionsRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,sort,reloadToken]),{sections,nextCursors}}import{jsxDEV as jsxDEV52}from"h:6___________________________";var ROW_HEIGHT2=1,COL_NAME=26,COL_LAST_VIEWED=10,COL_STARS=6,SCROLLBAR_GUTTER3=1;function IssueViewsList({client:client2,org,width,height,focused,selectedIndex,sort:sortValue,openDropdown,onSortChange,onDropdownOpen,onDropdownClose,onRowsChange,onStatusChange,reloadToken}){let theme=useTheme(),listRef=useRef25(null),sort=viewSort(sortValue),{sections:status,nextCursors}=useGroupSearchViews(client2,{org,sort,reloadToken}),sections=valueOf(status),error=errorOf(status),loading=status.state==="loading",rows=useMemo22(()=>(sections??[]).flatMap((section)=>section.views.map((view)=>({view,projectIds:view.projects.filter((id)=>id!==-1).map(String),statsPeriod:view.timeFilters?.period??DEFAULT_STATS_PERIOD}))),[sections]);useEffect34(()=>{onRowsChange?.(rows)},[rows,onRowsChange]),useEffect34(()=>{onStatusChange?.({loading,error:error?.message})},[loading,error,onStatusChange]),useRowScrollFollow(listRef,{index:selectedIndex,rowCount:rows.length,rowHeight:ROW_HEIGHT2,layout:[height]});let listWidth=Math.max(20,width-SCROLLBAR_GUTTER3),rowIndex=-1;return jsxDEV52("box",{style:{flexDirection:"column",width,height},children:[jsxDEV52("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV52("text",{fg:theme.text,attributes:BOLD,children:"All Views"},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.muted,children:" Saved issue searches for this organization."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV52(SortBar,{value:sort,items:VIEW_SORT_OPTIONS,open:openDropdown==="sort",width,anchorTop:1,onChange:onSortChange,onOpen:onDropdownOpen,onClose:onDropdownClose},void 0,!1,void 0,this),jsxDEV52("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[sections===void 0&&isInitialLoad(status)?jsxDEV52("text",{fg:theme.muted,children:" Loading views\u2026"},void 0,!1,void 0,this):null,error&&sections===void 0?jsxDEV52("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV52("text",{fg:theme.danger,children:"Failed to load views"},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.muted,children:error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,sections?.map((section)=>jsxDEV52("box",{style:{flexDirection:"column",width:listWidth},children:[jsxDEV52("text",{fg:theme.muted,attributes:BOLD,children:` ${section.title}`},void 0,!1,void 0,this),section.views.length===0?jsxDEV52("text",{fg:theme.subText,children:" No saved views."},void 0,!1,void 0,this):null,section.views.map((view)=>(rowIndex+=1,jsxDEV52(ViewRow,{view,width:listWidth,selected:focused&&rowIndex===selectedIndex},view.id,!1,void 0,this)))]},section.title,!0,void 0,this))]},void 0,!0,void 0,this),jsxDEV52(ResultFooter,{count:sections===void 0?void 0:rows.length,noun:"view",hasMore:nextCursors.mine!==null||nextCursors.others!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ViewRow({view,width,selected}){let theme=useTheme(),cursor=selected?"\u276F":" ",star=view.starred?"\u2605":" ",fixed=2+COL_NAME+COL_LAST_VIEWED+COL_STARS+3,queryWidth=Math.max(6,width-fixed);return jsxDEV52("box",{style:{flexDirection:"row",width,backgroundColor:selected?theme.panel:void 0},children:[jsxDEV52("text",{fg:theme.accent,children:cursor},void 0,!1,void 0,this),jsxDEV52("text",{fg:view.starred?theme.warning:theme.muted,children:star},void 0,!1,void 0,this),jsxDEV52("text",{fg:selected?theme.text:theme.subText,attributes:selected?BOLD:0,children:` ${padText(view.name,COL_NAME)}`},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.muted,children:` ${padText(fitText(view.query,queryWidth),queryWidth)}`},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.subText,children:` ${padText(view.lastVisited?timeAgo(view.lastVisited):"\u2014",COL_LAST_VIEWED,"right")}`},void 0,!1,void 0,this),jsxDEV52("text",{fg:theme.subText,children:padText(`${view.stars}\u2605`,COL_STARS,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{jsxDEV as jsxDEV53}from"h:6___________________________";function IssueViews(props){let{client:client2,org,state,focused,width,height,reloadToken,pushView,registerActions}=props,{dispatch}=state,open=useCallback28((index)=>{let row=rowsOf(state)[index];if(row)pushView(savedViewStream(row))},[state,pushView]);useScreenActions(registerActions,{open});let handleStatus=useCallback28((status)=>dispatch({type:"setStatus",payload:{...status,noun:"saved views"}}),[dispatch]);return jsxDEV53(IssueViewsList,{client:client2,org,width,height,focused,selectedIndex:state.selected,sort:state.sort,openDropdown:state.openDropdown,onSortChange:(sort)=>dispatch({type:"setSort",payload:sort}),onDropdownOpen:()=>dispatch({type:"setOpenDropdown",payload:"sort"}),onDropdownClose:()=>dispatch({type:"setOpenDropdown",payload:null}),onRowsChange:(rows)=>dispatch({type:"setEntries",payload:rows}),onStatusChange:handleStatus,reloadToken},void 0,!1,void 0,this)}function savedViewStream(row){return{id:`saved-view:${row.view.id}`,sentryLocation:{screen:"issues.all-views",detail:{kind:"issue_view",viewId:row.view.id}},label:row.view.name,stateKey:SAVED_VIEW_STATE_KEY,initialState:{query:row.view.query,sort:row.view.querySort,statsPeriod:row.statsPeriod,selectedProjects:row.projectIds,selectedEnvs:row.view.environments},render:(ctx)=>ctx.state?jsxDEV53(IssueFeed,{...ctx,state:ctx.state,title:row.view.name,description:row.view.query},void 0,!1,void 0,this):null}}var loadSavedView2=(client2,{org,id,signal})=>fetchGroupSearchView(client2,{org,viewId:id,signal});function savedViewUrlStream(viewId){return{id:`saved-view:${viewId}`,label:`View ${viewId}`,stateKey:SAVED_VIEW_STATE_KEY,sentryLocation:{screen:"issues.all-views",detail:{kind:"issue_view",viewId}},render:(ctx)=>ctx.state?jsxDEV53(SavedViewFromUrl,{...ctx,state:ctx.state,viewId},void 0,!1,void 0,this):null}}function SavedViewFromUrl({client:client2,org,state,viewId,reloadToken,width,height,updateView,...ctx}){let status=useDirectResource(client2,{org,id:viewId,reloadToken,load:loadSavedView2}),view=valueOf(status);if(useEffect35(()=>{if(!view)return;state.dispatch({type:"seed",payload:{query:view.query,sort:view.querySort,statsPeriod:view.timeFilters.period??void 0,selectedProjects:view.projects.filter((id)=>id!==-1).map(String),selectedEnvs:view.environments}}),updateView(`saved-view:${viewId}`,{label:view.name})},[state.dispatch,updateView,view,viewId]),!view)return jsxDEV53(DirectDetailStatus,{status,noun:"saved view",width,height},void 0,!1,void 0,this);return jsxDEV53(IssueFeed,{...ctx,client:client2,org,state,reloadToken,width,height,updateView,title:view.name,description:view.query},void 0,!1,void 0,this)}import{useCallback as useCallback30,useEffect as useEffect40,useMemo as useMemo26,useRef as useRef29}from"h:0__";var TIMELINE_PENDING_GLYPH="\u254C",CRON_GLYPHS={ok:"\u2584",missed:"\u2591",timeout:"\u2592",in_progress:"\u2593",error:"\u2588",unknown:"?"},CRON_LABELS={ok:"Okay",error:"Failed",in_progress:"In Progress",missed:"Missed",timeout:"Timed Out",unknown:"Unknown"},CRON_TIMELINE={precedence:["unknown","error","timeout","missed","ok","in_progress"],glyphs:CRON_GLYPHS,labels:CRON_LABELS},UPTIME_GLYPHS={success:"\u2584",missed_window:"?",failure:"\u2593",failure_incident:"\u2588"},UPTIME_LABELS={success:"Uptime",failure:"Failure",failure_incident:"Downtime",missed_window:"Unknown"},UPTIME_TIMELINE={precedence:["failure_incident","failure","success","missed_window"],glyphs:UPTIME_GLYPHS,labels:UPTIME_LABELS};function resolutionForWidth(windowSeconds,width){if(!Number.isFinite(windowSeconds)||!Number.isFinite(width))return 60;if(windowSeconds<=0||width<=0)return 60;return Math.max(60,Math.ceil(windowSeconds/Math.floor(width)))}function foldCheckIns(buckets,{width,since,until,config}){let cellCount=Math.max(0,Math.floor(width));if(cellCount===0)return[];let span=until>since?until-since:0,cellSpan=span/cellCount,cells=Array.from({length:cellCount},(_,index)=>({status:null,glyph:"\xB7",total:0,counts:{},start:since+Math.round(index*cellSpan),end:since+Math.round((index+1)*cellSpan)}));if(span>0)for(let bucket of buckets??[]){let timestamp=bucket?.[0],counts=bucket?.[1];if(typeof timestamp!=="number"||!Number.isFinite(timestamp)||!counts)continue;let index=Math.min(cellCount-1,Math.max(0,Math.floor((timestamp-since)/span*cellCount)));addCounts(cells[index],counts)}for(let cell of cells)resolveCell(cell,config);return cells}function summariseTimeline(cells,config){return config.precedence.map((status)=>({status,label:config.labels[status],count:cells.reduce((sum,cell)=>sum+(cell.counts[status]??0),0)})).filter((entry)=>entry.count>0)}function addCounts(cell,counts){for(let[status,count]of Object.entries(counts)){if(typeof count!=="number"||!Number.isFinite(count)||count<=0)continue;cell.counts[status]=(cell.counts[status]??0)+count,cell.total+=count}}function resolveCell(cell,config){if(cell.total===0)return;let status=config.precedence.find((candidate)=>(cell.counts[candidate]??0)>0);if(status===void 0){cell.glyph="?";return}cell.status=status,cell.glyph=config.glyphs[status]??"?"}function recordEntries(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)?Object.entries(value):[]}function normalizeStatusCounts(value){let counts={};for(let[status,count]of recordEntries(value))if(typeof count==="number"&&Number.isFinite(count))counts[status]=count;return counts}function normalizeUptimeBucket(value){if(!Array.isArray(value)||value.length!==2||typeof value[0]!=="number"||!Number.isFinite(value[0]))return;return[value[0],normalizeStatusCounts(value[1])]}function normalizeCronBucket(value){if(!Array.isArray(value)||value.length!==2||typeof value[0]!=="number"||!Number.isFinite(value[0]))return;let environments={};for(let[environment,counts]of recordEntries(value[1]))environments[environment]=normalizeStatusCounts(counts);return[value[0],environments]}function normalizeBucketRecord(value,normalizeBucket){let stats={};for(let[id,rawBuckets]of recordEntries(value)){let buckets=[];if(Array.isArray(rawBuckets))for(let rawBucket of rawBuckets){let bucket=normalizeBucket(rawBucket);if(bucket!==void 0)buckets.push(bucket)}stats[id]=buckets}return stats}var MAX_UPTIME_DETECTORS_PER_REQUEST=100,DEFAULT_TIMELINE_WINDOW_SECONDS=86400;function timelineWindowSeconds(statsPeriod){let minutes=statsPeriodMinutes(statsPeriod);if(minutes===void 0||minutes<=0)return DEFAULT_TIMELINE_WINDOW_SECONDS;return Math.floor(minutes*60)}function timelineWindow(width,{windowSeconds=DEFAULT_TIMELINE_WINDOW_SECONDS,now=Date.now()}={}){let until=Math.floor(now/1000);return{since:until-windowSeconds,until,resolution:resolutionForWidth(windowSeconds,width)}}var UPTIME_RESOLUTIONS_SECONDS=[60,120,300,600,900,1800,3600,7200,10800,14400,21600,43200,86400];function uptimeResolution(resolution){if(!Number.isFinite(resolution))return UPTIME_RESOLUTIONS_SECONDS[0];let allowed=UPTIME_RESOLUTIONS_SECONDS,snapped=allowed[0];for(let candidate of allowed)if(candidate<=resolution)snapped=candidate;return snapped}function windowQuery({since,until,resolution}){return{since,until,resolution:`${resolution}s`}}async function fetchMonitorStats(client2,{org,monitors,project,environment,signal,...window}){if(monitors.length===0)return{};let page=await client2.request(`/organizations/${org}/monitors-stats/`,{query:{monitor:[...monitors],project:projectParams(project),environment:environment?[...environment]:void 0,...windowQuery(window)},signal});return normalizeBucketRecord(page.data,normalizeCronBucket)}async function fetchUptimeStats(client2,{org,detectorIds,signal,...window}){let ids=[...new Set(detectorIds)].slice(0,MAX_UPTIME_DETECTORS_PER_REQUEST);if(ids.length===0)return{};let page=await client2.request(`/organizations/${org}/uptime-stats/`,{query:{uptimeDetectorId:ids,...windowQuery({...window,resolution:uptimeResolution(window.resolution)})},signal});return normalizeBucketRecord(page.data,normalizeUptimeBucket)}function selectEnvironment(buckets,environment){return(buckets??[]).map(([timestamp,environments])=>{if(environment!==void 0)return[timestamp,environments[environment]??{}];let totals={};for(let counts of Object.values(environments??{}))for(let[status,count]of Object.entries(counts??{}))totals[status]=(totals[status]??0)+count;return[timestamp,totals]})}var EXCLUDED_DETECTOR_TYPE=DETECTOR_TYPE.issueStream,MONITOR_LIST_VIEWS={"monitors.all":{title:"All Monitors",description:"Everything watching this organization.",searchPlaceholder:"Search monitors by name, type or assignee\u2026",emptyTitle:"No monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise nothing is being monitored yet \u2014 create a monitor on sentry.io, as this client is read-only."]},"monitors.mine":{title:"My Monitors",description:"Monitors assigned to you or your teams.",assignee:"[me,my_teams]",searchPlaceholder:"Search your monitors\u2026",emptyTitle:"No monitors assigned to you.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise nothing here is assigned to you or to a team you are on."]},"monitors.error":{title:"Error",description:"The per-project detectors that turn errors into issues.",type:DETECTOR_TYPE.error,searchPlaceholder:"Search error monitors\u2026",emptyTitle:"No error monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Error monitors are created by Sentry, one per project \u2014 an org with projects should have some."]},"monitors.metric":{title:"Metric",description:"Thresholds and anomalies over a metric.",type:DETECTOR_TYPE.metric,searchPlaceholder:"Search metric monitors\u2026",emptyTitle:"No metric monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled.","Otherwise no metric monitor has been created yet."]},"monitors.cron":{title:"Cron",description:"Scheduled jobs that check in when they run.",type:DETECTOR_TYPE.cron,searchPlaceholder:"Search cron monitors\u2026",emptyTitle:"No cron monitors found.",emptyLines:["This organization may not have crons enabled.","Otherwise no job is checking in yet \u2014 a cron monitor is created by its first check-in."]},"monitors.uptime":{title:"Uptime",description:"URLs Sentry checks on a schedule.",type:DETECTOR_TYPE.uptime,searchPlaceholder:"Search uptime monitors\u2026",emptyTitle:"No uptime monitors found.",emptyLines:["This organization may not have uptime monitoring enabled.","Otherwise no URL is being checked yet."]},"monitors.mobile-build":{title:"Mobile Build",description:"Size regressions in mobile builds.",type:DETECTOR_TYPE.mobileBuild,searchPlaceholder:"Search mobile build monitors\u2026",emptyTitle:"No mobile build monitors found.",emptyLines:["This organization may not have build size analysis (preprod) enabled.","Otherwise no build size monitor has been created yet."]}};function getMonitorListView(id){return MONITOR_LIST_VIEWS[id]}function buildDetectorQuery(view,userQuery=""){let parts=[`!type:${EXCLUDED_DETECTOR_TYPE}`];if(view?.type)parts.push(`type:${view.type}`);if(view?.assignee)parts.push(`assignee:${view.assignee}`);let trimmed=userQuery.trim();if(trimmed)parts.push(trimmed);return parts.join(" ")}import{useEffect as useEffect36,useMemo as useMemo23,useRef as useRef26,useState as useState29}from"h:0__";function useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width,statsPeriod,project,environment,reloadToken=0}){let[status,setStatus]=useState29(idle),statusRef=useRef26(status);statusRef.current=status;let monitorKey=useMemo23(()=>[...new Set(monitorIds)].sort().join(","),[monitorIds]),uptimeKey=useMemo23(()=>[...new Set(uptimeDetectorIds)].sort().join(","),[uptimeDetectorIds]),projectKey=useMemo23(()=>(project??[]).join(","),[project]),environmentKey=useMemo23(()=>(environment??[]).join(","),[environment]),windowSeconds=timelineWindowSeconds(statsPeriod),resolution=timelineWindow(width,{windowSeconds}).resolution;return useEffect36(()=>{if(!client2)return;let monitors=monitorKey?monitorKey.split(","):[],detectors=uptimeKey?uptimeKey.split(","):[],window=timelineWindow(width,{windowSeconds});if(monitors.length===0&&detectors.length===0){setStatus(idle);return}let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let[monitorStats,uptimeStats]=await Promise.all([fetchMonitorStats(client2,{org,monitors,project:projectKey?projectKey.split(","):void 0,environment:environmentKey?environmentKey.split(","):void 0,signal,...window}),fetchUptimeStats(client2,{org,detectorIds:detectors,signal,...window})]);if(cancelled)return;setStatus(resolved({window,monitors:monitorStats,uptime:uptimeStats},Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,monitorKey,uptimeKey,projectKey,environmentKey,windowSeconds,resolution,reloadToken]),status}function cronBuckets(stats,monitorId,environment){if(!stats||!monitorId)return;return selectEnvironment(stats.monitors[monitorId],environment)}function uptimeBuckets(stats,detectorId){if(!stats||!detectorId)return;return stats.uptime[detectorId]??[]}import{useCallback as useCallback29}from"h:0__";function useDetectors(client2,{org,query,sortBy,project,reloadToken=0}){let loader=useCallback29((cursor,signal)=>{if(!client2)return null;return listDetectors(client2,{org,query,sortBy,project,cursor,signal}).then((page)=>({data:Array.isArray(page.data)?page.data:[],nextCursor:page.nextCursor}))},[client2,org,query,sortBy,project]),pages=useCursorPages(loader,reloadToken);return{detectors:mapAsyncStatus(pages.status,(page)=>page.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}import{useEffect as useEffect39,useMemo as useMemo25}from"h:0__";var WORKFLOW_SORT_OPTIONS=[{value:"-lastTriggered",label:"Last Triggered (newest)"},{value:"lastTriggered",label:"Last Triggered (oldest)"},{value:"name",label:"Name (A-Z)"},{value:"-name",label:"Name (Z-A)"},{value:"-actions",label:"Most Actions"},{value:"actions",label:"Fewest Actions"},{value:"-connectedDetectors",label:"Most Monitors"},{value:"connectedDetectors",label:"Fewest Monitors"}],DEFAULT_WORKFLOW_SORT="-lastTriggered";function workflowSort(value){return WORKFLOW_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_WORKFLOW_SORT}var WORKFLOWS_PAGE_SIZE=50;async function listWorkflows(client2,{org,detector,query,project,sortBy=DEFAULT_WORKFLOW_SORT,limit=WORKFLOWS_PAGE_SIZE,cursor,signal}){let page=await fetchPage_listOrganizationWorkflows({...client2.generatedOptions(signal),path:{organization_id_or_slug:org},query:{detector:detector?.map(Number),query:query||void 0,project:projectParams(project),sortBy,per_page:limit}},cursor);return client2.generatedPage({...page,data:workflowsFromResponse(page.data)})}function workflowsFromResponse(data){return Array.isArray(data)?data:[]}var ACTION_LABELS={vsts:"Azure DevOps",discord:"Discord",email:"Email",github:"GitHub",github_enterprise:"GitHub Enterprise",jira:"JIRA",jira_server:"JIRA Server",msteams:"Teams",opsgenie:"Opsgenie",pagerduty:"Pagerduty",plugin:"Plugin",sentry_app:"Sentry App",slack:"Slack",slack_staging:"Slack (Staging)",webhook:"Webhook"};function actionTypeLabel(type){return ACTION_LABELS[type]??type}function workflowActionTypes(workflow){let seen=new Set;for(let group of workflow.actionFilters??[])for(let action of group.actions??[])if(action?.type)seen.add(action.type);return[...seen]}var DAY_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],DAY_ALIASES={sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6},MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December"],MONTH_ALIASES={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},MACROS={"@yearly":"0 0 1 1 *","@annually":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@midnight":"0 0 * * *","@hourly":"0 * * * *"};function crontabAsText(expression){let fields=(MACROS[expression.trim().toLowerCase()]??expression).trim().split(/\s+/),[minute,hour,dayOfMonth,month,dayOfWeek]=fields.length===6?fields.slice(1):fields;if(!minute||!hour||!dayOfMonth||!month||!dayOfWeek)return;let everyDate=dayOfMonth==="*"&&month==="*",everyDay=everyDate&&dayOfWeek==="*";if(minute==="*"&&hour==="*"&&everyDay)return"Every minute";let minuteStep=stepOf(minute);if(minuteStep!==void 0&&hour==="*"&&everyDay)return`Every ${plural(minuteStep,"minute")}`;let minuteAt=numberOf(minute);if(minuteAt===void 0)return;let hourStep=stepOf(hour);if(hourStep!==void 0&&everyDay)return`Every ${plural(hourStep,"hour")} at :${pad(minuteAt)}`;if(hour==="*"&&everyDay)return`Every hour at :${pad(minuteAt)}`;let hourAt=numberOf(hour);if(hourAt===void 0)return;let at=`at ${pad(hourAt)}:${pad(minuteAt)}`;if(everyDay)return`Every day ${at}`;if(everyDate){let days=dayList(dayOfWeek);return days?`Every ${days} ${at}`:void 0}if(dayOfWeek!=="*")return;let dayAt=numberOf(dayOfMonth);if(dayAt===void 0)return;if(month==="*")return`Day ${dayAt} of every month ${at}`;let monthAt=monthNumber(month);if(monthAt===void 0)return;return`${MONTH_NAMES[monthAt-1]} ${dayAt} ${at}`}function intervalAsText(value,unit){return`Every ${plural(value,unit)}`}function plural(value,unit){if(value===1)return unit;return`${value} ${unit}s`}function pad(value){return String(value).padStart(2,"0")}function stepOf(field2){let match=field2.match(/^\*\/(\d+)$/);if(!match)return;let step=Number(match[1]);return step>0?step:void 0}function numberOf(field2){return/^\d+$/.test(field2)?Number(field2):void 0}function monthNumber(field2){let numeric=numberOf(field2);if(numeric!==void 0)return numeric>=1&&numeric<=12?numeric:void 0;return MONTH_ALIASES[field2.toLowerCase().slice(0,3)]}function dayList(field2){let range=field2.match(/^([^-]+)-([^-]+)$/);if(range){let from=dayName(range[1]),to=dayName(range[2]);return from&&to?`${from}\u2013${to}`:void 0}let names=field2.split(",").map((part)=>dayName(part));if(names.some((name)=>name===void 0))return;if(names.length===1)return names[0];return`${names.slice(0,-1).join(", ")} and ${names.at(-1)}`}function dayName(token){let trimmed=token.trim(),numeric=numberOf(trimmed);if(numeric!==void 0)return DAY_NAMES[numeric===7?0:numeric];let alias=DAY_ALIASES[trimmed.toLowerCase().slice(0,3)];return alias===void 0?void 0:DAY_NAMES[alias]}var DETAIL_VALUE_WIDTH=40,DETAIL_SEPARATOR=" \u2502 ",TYPE_LABELS={[DETECTOR_TYPE.error]:"Error",[DETECTOR_TYPE.metric]:"Metric",[DETECTOR_TYPE.cron]:"Cron",[DETECTOR_TYPE.uptime]:"Uptime",[DETECTOR_TYPE.issueStream]:"Project",[DETECTOR_TYPE.mobileBuild]:"Mobile Build"};function detectorTypeLabel(type){return TYPE_LABELS[type]??"Unknown"}function detectorAssigneeLabel(owner){if(!owner)return"\u2014";let name=owner.name||owner.email;if(!name)return"\u2014";return owner.type==="team"&&!name.startsWith("#")?`#${name}`:name}function metricQuery(detector){return detector.dataSources?.find((candidate)=>candidate.type==="snuba_query_subscription")?.queryObj?.snubaQuery}function uptimeSubscription(detector){return detector.dataSources?.find((candidate)=>candidate.type==="uptime_subscription")?.queryObj??void 0}function cronMonitor(detector){return detector.dataSources?.find((candidate)=>candidate.type==="cron_monitor")?.queryObj??void 0}function detectorDetailParts(detector,{projectSlug}={}){let parts=[];if(projectSlug)parts.push(projectSlug);switch(detector.type){case DETECTOR_TYPE.metric:parts.push(...metricDetailParts(detector));break;case DETECTOR_TYPE.uptime:parts.push(...uptimeDetailParts(detector));break;case DETECTOR_TYPE.cron:{let schedule=cronScheduleText(cronMonitor(detector)?.config);if(schedule)parts.push(schedule);break}case DETECTOR_TYPE.mobileBuild:{let preprod=preprodThresholdText(detector);if(preprod)parts.push(preprod);break}default:break}return parts}function metricDetailParts(detector){let parts=[],query=metricQuery(detector);if(query){if(query.environment)parts.push(query.environment);if(query.aggregate)parts.push(query.aggregate);if(query.query)parts.push(middleEllipsis(query.query,DETAIL_VALUE_WIDTH))}let threshold=metricThresholdText(detector);if(threshold)parts.push(threshold);return parts}function uptimeDetailParts(detector){let subscription=uptimeSubscription(detector);if(!subscription)return[];let parts=[];if(subscription.url)parts.push(middleEllipsis(subscription.url,DETAIL_VALUE_WIDTH));let interval=subscription.intervalSeconds;if(typeof interval==="number"&&interval>0)parts.push(`Every ${durationText(interval)}`);return parts}function cronScheduleText(config){let schedule=config?.schedule;if(schedule===void 0)return;if(Array.isArray(schedule)){let[value,unit]=schedule;if(typeof value!=="number"||!unit)return;return intervalAsText(value,unit)}if(typeof schedule!=="string"||schedule.trim()==="")return;return crontabAsText(schedule)??schedule}function preprodThresholdText(detector){let{measurement,thresholdType}=detector.config??{};return[measurement,thresholdType].filter(Boolean).join(" ")||void 0}var CONDITION_SYMBOLS={gt:">",gte:">=",lt:"<",lte:"<=",eq:"=",ne:"!="},PRIORITY_LABELS={25:"low",50:"medium",75:"high"};function metricThresholdText(detector){let conditions=detector.conditionGroup?.conditions;if(!conditions?.length)return;let detectionType=detector.config?.detectionType??"static";if(detectionType==="dynamic")return"Dynamic";if(detectionType==="percent"){let window=durationText(detector.config?.comparisonDelta??3600);return conditions.map((condition)=>percentConditionText(condition,window)).filter(Boolean).join(", ")||void 0}let unit=thresholdSuffix(metricQuery(detector)?.aggregate??"count()");return conditions.map((condition)=>staticConditionText(condition,unit)).filter(Boolean).join(", ")||void 0}function staticConditionText(condition,unit){let priority=priorityOf(condition);if(!priority)return;if(typeof condition.comparison!=="number"&&typeof condition.comparison!=="string")return;return`${CONDITION_SYMBOLS[condition.type]??condition.type}${condition.comparison}${unit} ${priority}`}function percentConditionText(condition,window){if(!priorityOf(condition)||typeof condition.comparison!=="number")return;let comparison=condition.comparison,delta=comparison>=100?comparison-100:100-comparison,direction=comparison>=100?"higher":"lower";return`${delta}% ${direction} than previous ${window}`}function priorityOf(condition){let level=condition.conditionResult;if(typeof level!=="number"||level===0)return;return PRIORITY_LABELS[level]}var FIELD_TYPED_AGGREGATES=new Set(["any","avg","max","min","p50","p75","p90","p95","p99","p100","percentile","sum"]),MILLISECOND_FIELDS=new Set(["event.timestamp","function.duration","measurements.app_start_cold","measurements.app_start_warm","measurements.fcp","measurements.fid","measurements.fp","measurements.inp","measurements.lcp","measurements.stall_longest_time","measurements.stall_total_time","measurements.time_to_full_display","measurements.time_to_initial_display","measurements.ttfb","measurements.ttfb.requesttime","span.duration","span.self_time","spans.browser","spans.db","spans.http","spans.resource","spans.ui","timestamp","transaction.duration"]),BYTE_FIELDS=new Set(["http.decoded_response_content_length","http.response_content_length","http.response_transfer_size","payload_size"]),SESSION_PERCENTAGE_AGGREGATES=new Set(["abnormal_rate","anr_rate","crash_free_rate","crash_rate","errored_rate","foreground_anr_rate","unhandled_rate","unhealthy_rate"]);function thresholdSuffix(aggregate){let match=aggregate.trim().toLowerCase().match(/^([a-z_][a-z0-9_]*)\((.*)\)$/);if(!match)return"";let fn=match[1];if(SESSION_PERCENTAGE_AGGREGATES.has(fn))return"%";if(fn==="last_seen")return"ms";if(!FIELD_TYPED_AGGREGATES.has(fn))return"";let field2=match[2].split(",",1)[0].trim();if(MILLISECOND_FIELDS.has(field2))return"ms";if(BYTE_FIELDS.has(field2))return"B";return""}function detectorConfigFields(detector){switch(detector.type){case DETECTOR_TYPE.metric:return metricConfigFields(detector);case DETECTOR_TYPE.uptime:return uptimeConfigFields(detector);case DETECTOR_TYPE.cron:return cronConfigFields(detector);case DETECTOR_TYPE.mobileBuild:return preprodConfigFields(detector);default:return[]}}function present(fields){return fields.filter((field2)=>field2!==void 0&&field2.value!=="")}function field2(label,value){if(value===null||value===void 0||value==="")return;return{label,value:String(value)}}function metricConfigFields(detector){let query=metricQuery(detector),window=query?.timeWindow;return present([field2("Aggregate",query?.aggregate),field2("Query",query?.query),field2("Dataset",query?.dataset),field2("Environment",query?.environment),field2("Time window",typeof window==="number"?durationText(window):void 0),field2("Detection",detector.config?.detectionType??"static"),field2("Threshold",metricThresholdText(detector))])}function uptimeConfigFields(detector){let subscription=uptimeSubscription(detector),interval=subscription?.intervalSeconds,timeout=subscription?.timeoutMs,config=detector.config;return present([field2("URL",subscription?.url),field2("Method",subscription?.method),field2("Interval",typeof interval==="number"?`Every ${durationText(interval)}`:void 0),field2("Timeout",typeof timeout==="number"?durationText(timeout/1000):void 0),field2("Environment",config?.environment),field2("Downtime after",failureCount(config?.downtimeThreshold)),field2("Recovers after",successCount(config?.recoveryThreshold))])}function cronConfigFields(detector){let monitor=cronMonitor(detector),config=monitor?.config,environments=(monitor?.environments??[]).map((environment)=>environment.name);return present([field2("Schedule",cronScheduleText(config)),field2("Timezone",config?.timezone),field2("Check-in margin",minutesText(config?.checkin_margin)),field2("Max runtime",minutesText(config?.max_runtime)),field2("Fails after",failureCount(config?.failure_issue_threshold)),field2("Recovers after",successCount(config?.recovery_threshold)),field2("Environments",environments.join(", "))])}function preprodConfigFields(detector){let config=detector.config;return present([field2("Measurement",config?.measurement),field2("Threshold type",config?.thresholdType),field2("Query",config?.query)])}function minutesText(minutes){if(typeof minutes!=="number")return;return minutes===1?"1 minute":`${minutes} minutes`}function failureCount(count){if(typeof count!=="number")return;return count===1?"1 failure":`${count} consecutive failures`}function successCount(count){if(typeof count!=="number")return;return count===1?"1 success":`${count} consecutive successes`}function detectorEnvironment(detector){switch(detector.type){case DETECTOR_TYPE.metric:return metricQuery(detector)?.environment??void 0;case DETECTOR_TYPE.uptime:return detector.config?.environment??void 0;default:return}}import{useEffect as useEffect37,useRef as useRef27,useState as useState30}from"h:0__";function useDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,reloadToken=0}){let[status,setStatus]=useState30(idle),statusRef=useRef27(status);return statusRef.current=status,useEffect37(()=>{if(!client2||!detectorId)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await listDetectorOpenPeriods(client2,{org,detectorId,statsPeriod,signal});if(cancelled)return;setStatus(resolved({rows:Array.isArray(page.data)?page.data:[],nextCursor:page.nextCursor,...page.totalCount===void 0?{}:{totalCount:page.totalCount}},Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,detectorId,statsPeriod,reloadToken]),status}function useDetectorWorkflows(client2,{org,detectorId,reloadToken=0}){let[status,setStatus]=useState30(idle),statusRef=useRef27(status);return statusRef.current=status,useEffect37(()=>{if(!client2||!detectorId)return;let controller=new AbortController,{signal}=controller,cancelled=!1;return setStatus(startLoading(statusRef.current,Date.now())),(async()=>{try{let page=await listWorkflows(client2,{org,detector:[detectorId],signal});if(cancelled)return;setStatus(resolved(Array.isArray(page.data)?page.data:[],Date.now()))}catch(error){if(cancelled||signal.aborted)return;setStatus(rejected(statusRef.current,toAsyncError(error)))}})(),()=>{cancelled=!0,controller.abort()}},[client2,org,detectorId,reloadToken]),status}import{useEffect as useEffect38,useMemo as useMemo24,useRef as useRef28}from"h:0__";function timelineStylesFor(selectedTheme){let trackColor=selectedTheme.border;return{cron:{config:CRON_TIMELINE,colors:{ok:selectedTheme.success,missed:selectedTheme.muted,timeout:selectedTheme.warning,error:selectedTheme.danger,in_progress:selectedTheme.accent,unknown:selectedTheme.subText},trackColor},uptime:{config:UPTIME_TIMELINE,colors:{success:selectedTheme.success,failure:selectedTheme.danger,failure_incident:selectedTheme.danger,missed_window:selectedTheme.subText},trackColor}}}function timelineWindowLabel(seconds=DEFAULT_TIMELINE_WINDOW_SECONDS){let hours=Math.round(seconds/3600);if(hours<=0)return"Last hour";if(hours===1)return"Last hour";if(hours%24!==0)return`Last ${hours} hours`;let days=hours/24;return days===1?"Last 24 hours":`Last ${days} days`}import{jsxDEV as jsxDEV54}from"h:6___________________________";function CheckInTimeline({buckets,style,width,since,until}){let cells=Math.max(0,Math.floor(width));if(cells===0)return null;if(buckets===void 0)return jsxDEV54("text",{fg:style.trackColor,children:TIMELINE_PENDING_GLYPH.repeat(cells)},void 0,!1,void 0,this);let folded=foldCheckIns(buckets,{width:cells,since,until,config:style.config});return jsxDEV54("text",{children:coalesce(folded,style)},void 0,!1,void 0,this)}function coalesce(cells,style){let spans=[],run="",runColor="",flush=()=>{if(!run)return;spans.push(jsxDEV54("span",{fg:runColor,children:run},spans.length,!1,void 0,this)),run=""};for(let cell of cells){let color=cell.status===null?style.trackColor:style.colors[cell.status];if(color!==runColor)flush(),runColor=color;run+=cell.glyph}return flush(),spans}import{jsxDEV as jsxDEV55,Fragment as Fragment17}from"h:6___________________________";function timelineKindFor(detectorType){if(detectorType===DETECTOR_TYPE.cron)return"cron";if(detectorType===DETECTOR_TYPE.uptime)return"uptime";return}function rowKind(detector){return timelineKindFor(detector.type)}var TIMELINE_MIN_WIDTH=16,TIMELINE_MAX_WIDTH=72,TIMELINE_PANE_SHARE=0.45,ENVIRONMENT_LABEL_MAX_WIDTH=16,ENVIRONMENT_TRACK_MIN_WIDTH=8;function timelineColumnWidth(paneWidth){let share=Math.floor(Math.max(0,paneWidth)*TIMELINE_PANE_SHARE);return Math.max(TIMELINE_MIN_WIDTH,Math.min(TIMELINE_MAX_WIDTH,share))}function timelineDataWidth(kind,columnWidth){return kind==="cron"?environmentTimelineWidths(columnWidth).track:columnWidth}function timelineRowContentHeight(detector){if(rowKind(detector)!=="cron")return 1;return Math.max(1,cronEnvironmentNames(detector).length)}function timelineColumn({stats,failed,width,windowSeconds,theme}){let timelineStyles=timelineStylesFor(theme),displayedWindowSeconds=stats?stats.window.until-stats.window.since:windowSeconds;return{key:"check-ins",label:timelineWindowLabel(displayedWindowSeconds),width,render:(detector,_selected,cellWidth)=>{let kind=rowKind(detector);if(!kind)return jsxDEV55("text",{fg:theme.subText,children:padText("",cellWidth)},void 0,!1,void 0,this);let since=stats?.window.since??0,until=stats?.window.until??0;if(kind==="uptime")return jsxDEV55(CheckInTimeline,{buckets:failed?[]:uptimeBuckets(stats,detector.id),style:timelineStyles.uptime,width:cellWidth,since,until},void 0,!1,void 0,this);let monitorId=cronMonitor(detector)?.id,environments=cronEnvironmentNames(detector);if(environments.length===0)return jsxDEV55(CheckInTimeline,{buckets:failed||!monitorId?[]:cronBuckets(stats,monitorId),style:timelineStyles.cron,width:cellWidth,since,until},void 0,!1,void 0,this);let environmentWidths=environmentTimelineWidths(cellWidth);return jsxDEV55("box",{style:{flexDirection:"column",width:cellWidth},children:environments.map((environment)=>jsxDEV55("box",{style:{flexDirection:"row",width:cellWidth},children:[environmentWidths.label>0?jsxDEV55(Fragment17,{children:[jsxDEV55("text",{fg:theme.subText,children:padText(environment,environmentWidths.label)},void 0,!1,void 0,this),jsxDEV55("text",{children:" ".repeat(environmentWidths.gap)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV55(CheckInTimeline,{buckets:failed||!monitorId?[]:cronBuckets(stats,monitorId,environment),style:timelineStyles.cron,width:environmentWidths.track,since,until},void 0,!1,void 0,this)]},environment,!0,void 0,this))},void 0,!1,void 0,this)}}}function cronEnvironmentNames(detector){let names=(cronMonitor(detector)?.environments??[]).map((environment)=>environment.name).filter((name)=>name.length>0);return[...new Set(names)]}function environmentTimelineWidths(width){let available=Math.max(0,Math.floor(width));if(available<=ENVIRONMENT_TRACK_MIN_WIDTH+1)return{label:0,gap:0,track:available};let gap=1,label=Math.min(ENVIRONMENT_LABEL_MAX_WIDTH,available-ENVIRONMENT_TRACK_MIN_WIDTH-gap);return{label,gap,track:available-label-gap}}function timelineStatsIds(detectors){let monitorIds=[],uptimeDetectorIds=[];for(let detector of detectors??[]){let kind=rowKind(detector);if(kind==="uptime")uptimeDetectorIds.push(detector.id);else if(kind==="cron"){let monitorId=cronMonitor(detector)?.id;if(monitorId)monitorIds.push(monitorId)}}return{monitorIds,uptimeDetectorIds}}import{jsxDEV as jsxDEV56,Fragment as Fragment18}from"h:6___________________________";function hasDetectorTimeline(detector){return timelineKindFor(detector.type)!==void 0}function DetectorTimelineSection({detector,width,client:client2,org,reloadToken,notify}){let theme=useTheme(),timelineStyles=timelineStylesFor(theme),kind=timelineKindFor(detector.type),monitorId=kind==="cron"?cronMonitor(detector)?.id:void 0,monitorIds=useMemo24(()=>monitorId?[monitorId]:[],[monitorId]),uptimeDetectorIds=useMemo24(()=>kind==="uptime"?[detector.id]:[],[kind,detector.id]),trackWidth=Math.max(0,width-BODY_INDENT.length),status=useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width:trackWidth,reloadToken}),stats=valueOf(status),failed=status.state==="error"&&stats===void 0,notified=useRef28(void 0),error=errorOf(status)?.message;if(useEffect38(()=>{if(error&&notified.current!==error)notify({kind:"warning",text:"check-in history unavailable"});notified.current=error},[error,notify]),!kind)return null;if(kind==="cron"&&!monitorId)return jsxDEV56(Empty,{children:"This monitor has no check-in source."},void 0,!1,void 0,this);let since=stats?.window.since??0,until=stats?.window.until??0;return jsxDEV56("box",{style:{flexDirection:"column",width},children:[jsxDEV56("box",{style:{flexDirection:"row",width},children:[jsxDEV56("text",{fg:theme.muted,children:`${BODY_INDENT}${timelineWindowLabel()}`},void 0,!1,void 0,this),environmentNote(detector,theme)]},void 0,!0,void 0,this),kind==="uptime"?jsxDEV56(Track,{buckets:failed?[]:uptimeBuckets(stats,detector.id),style:timelineStyles.uptime,width:trackWidth,since,until},void 0,!1,void 0,this):jsxDEV56(Track,{buckets:failed?[]:cronBuckets(stats,monitorId),style:timelineStyles.cron,width:trackWidth,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Track({buckets,style,width,since,until}){return jsxDEV56(Fragment18,{children:[jsxDEV56("box",{style:{flexDirection:"row",width:width+BODY_INDENT.length},children:[jsxDEV56("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV56(CheckInTimeline,{buckets,style,width,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV56(Tally,{buckets,style,width,since,until},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Tally({buckets,style,width,since,until}){if(!buckets||buckets.length===0)return null;let cells=foldCheckIns(buckets,{width,since,until,config:style.config}),totals=summariseTimeline(cells,style.config);if(totals.length===0)return null;return jsxDEV56("box",{style:{flexDirection:"row",width:width+BODY_INDENT.length},children:[jsxDEV56("text",{children:BODY_INDENT},void 0,!1,void 0,this),totals.map((entry,index)=>jsxDEV56("text",{fg:style.colors[entry.status],children:`${index>0?" \xB7 ":""}${entry.count} ${entry.label}`},entry.status,!1,void 0,this))]},void 0,!0,void 0,this)}function environmentNote(detector,theme){let environments=cronMonitor(detector)?.environments??[];if(environments.length<2)return null;return jsxDEV56("text",{fg:theme.subText,children:` (all ${environments.length} environments)`},void 0,!1,void 0,this)}import{jsxDEV as jsxDEV57,Fragment as Fragment19}from"h:6___________________________";var SECTION_TITLES2={config:"Configuration",timeline:"Check-ins",periods:"Open Periods",alerts:"Connected Alerts",details:"Details"};function monitorDetailView(detector,projectSlug,statsPeriod=DEFAULT_STATS_PERIOD){return{id:`monitor:${detector.id}`,sentryLocation:{screen:"monitors.all",detail:{kind:"monitor",detectorId:detector.id}},label:detector.name,render:(ctx)=>jsxDEV57(MonitorDetail,{...ctx,detector,projectSlug,statsPeriod},void 0,!1,void 0,this)}}var loadDetector2=(client2,{org,id,signal})=>fetchDetector(client2,{org,detectorId:id,signal});function monitorUrlView(detectorId){return{id:`monitor:${detectorId}`,sentryLocation:{screen:"monitors.all",detail:{kind:"monitor",detectorId}},label:`Monitor ${detectorId}`,render:(ctx)=>jsxDEV57(MonitorFromUrl,{...ctx,detectorId},void 0,!1,void 0,this)}}function MonitorFromUrl({client:client2,org,detectorId,reloadToken,width,height,updateView,...ctx}){let status=useDirectResource(client2,{org,id:detectorId,reloadToken,load:loadDetector2}),detector=valueOf(status);if(useEffect39(()=>{if(detector)updateView(`monitor:${detectorId}`,{label:detector.name})},[detector,detectorId,updateView]),!detector)return jsxDEV57(DirectDetailStatus,{status,noun:"monitor",width,height},void 0,!1,void 0,this);return jsxDEV57(MonitorDetail,{...ctx,client:client2,org,detector,projectSlug:detector.latestGroup?.project?.slug,reloadToken,width,height,updateView},void 0,!1,void 0,this)}function MonitorDetail({client:client2,org,detector,projectSlug,statsPeriod=DEFAULT_STATS_PERIOD,width,height,focused,reloadToken,notify,pushView,registerActions}){let theme=useTheme(),latestIssueId=detector.latestGroup?.id;useScreenActions(registerActions,{openDetail:latestIssueId?()=>pushView(issueUrlView(latestIssueId)):void 0});let periods=useDetectorOpenPeriods(client2,{org,detectorId:detector.id,statsPeriod,reloadToken}),workflows=useDetectorWorkflows(client2,{org,detectorId:detector.id,reloadToken}),inner=Math.max(20,width-2),showTimeline=hasDetectorTimeline(detector),order=useMemo25(()=>["config",...showTimeline?["timeline"]:[],"periods","alerts","details"],[showTimeline]),{collapsed,toggle}=useSectionFolds(order,focused),periodPage=valueOf(periods),workflowRows=valueOf(workflows),counts={config:void 0,periods:openPeriodsCount(periodPage),alerts:workflowRows?.length};return jsxDEV57("scrollbox",{focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{width,height,paddingLeft:1},children:[jsxDEV57(MonitorHeader,{detector,projectSlug,width:inner},void 0,!1,void 0,this),order.map((key,index)=>jsxDEV57(Section,{index:index+1,title:SECTION_TITLES2[key],count:counts[key],collapsed:collapsed.has(key),width:inner,onToggle:()=>toggle(key),children:jsxDEV57(SectionBody2,{sectionKey:key,detector,width:inner,client:client2,org,reloadToken,notify,statsPeriod,periods,workflows},void 0,!1,void 0,this)},key,!1,void 0,this))]},void 0,!0,void 0,this)}function MonitorHeader({detector,projectSlug,width}){let theme=useTheme(),bar2=detector.enabled?theme.accent:theme.muted,titleWidth=Math.max(12,width-2);return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:bar2,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.text,attributes:BOLD,children:fitText(detector.name,titleWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:bar2,children:"\u2503 "},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:fitText(detector.description||"(no description)",titleWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV57("box",{style:{flexDirection:"row",width,paddingTop:1},children:[jsxDEV57("text",{children:BODY_INDENT},void 0,!1,void 0,this),jsxDEV57("text",{fg:detector.enabled?theme.success:theme.muted,children:detector.enabled?"enabled":"disabled"},void 0,!1,void 0,this),jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:detectorTypeLabel(detector.type)},void 0,!1,void 0,this),projectSlug?jsxDEV57(Fragment19,{children:[jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:projectSlug},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:detector.owner?detectorAssigneeLabel(detector.owner):"unassigned"},void 0,!1,void 0,this),jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:lastTriggeredLabel(detector)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV57("text",{fg:theme.border,children:"\u2500".repeat(width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lastTriggeredLabel(detector){let triggered=detector.lastTriggered?timeAgo(detector.lastTriggered):"";if(triggered)return`last triggered ${triggered} ago`;let fired=timeAgo(detector.latestGroup?.lastSeen);return fired?`last issue ${fired} ago`:"never triggered"}function SectionBody2({sectionKey,detector,width,client:client2,org,reloadToken,notify,statsPeriod,periods,workflows}){switch(sectionKey){case"config":{let fields=detectorConfigFields(detector);if(fields.length===0)return detector.type==="error"?jsxDEV57(Empty,{children:"An error monitor has no settings \u2014 every error in its project opens an issue."},void 0,!1,void 0,this):jsxDEV57(Empty,{children:"No configuration was returned for this monitor."},void 0,!1,void 0,this);return jsxDEV57("box",{style:{flexDirection:"column",width},children:fields.map((field3)=>jsxDEV57(Field,{name:field3.label,value:field3.value,width},field3.label,!1,void 0,this))},void 0,!1,void 0,this)}case"timeline":return jsxDEV57(DetectorTimelineSection,{detector,width,client:client2,org,reloadToken,notify},void 0,!1,void 0,this);case"periods":return jsxDEV57(OpenPeriods,{status:periods,statsPeriod,width},void 0,!1,void 0,this);case"alerts":return jsxDEV57(ConnectedAlerts,{status:workflows,width},void 0,!1,void 0,this);case"details":return jsxDEV57(Details,{detector,width,client:client2,org},void 0,!1,void 0,this)}}function OpenPeriods({status,statsPeriod,width}){let page=valueOf(status),error=errorOf(status);if(error)return jsxDEV57(Empty,{children:`Failed to load open periods: ${error.message}`},void 0,!1,void 0,this);if(!page)return jsxDEV57(Empty,{children:"Loading open periods\u2026"},void 0,!1,void 0,this);if(page.rows.length===0)return jsxDEV57(Empty,{children:`No open periods in the last ${statsPeriod}.`},void 0,!1,void 0,this);return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57(Empty,{children:openPeriodsSummary(page,statsPeriod)},void 0,!1,void 0,this),page.rows.map((period)=>jsxDEV57(OpenPeriodRow,{period,width},period.id,!1,void 0,this))]},void 0,!0,void 0,this)}function openPeriodsCount(page){if(!page)return;if(page.totalCount!==void 0&&page.totalCount>page.rows.length)return`${page.rows.length} of ${page.totalCount}`;return page.nextCursor===null?page.rows.length:`${page.rows.length}+`}function openPeriodsSummary(page,statsPeriod){let shown=page.rows.length,hidden=page.totalCount===void 0?void 0:Math.max(0,page.totalCount-shown);if(hidden&&hidden>0)return`Newest ${shown} in the last ${statsPeriod}; ${hidden} older not shown.`;if(page.nextCursor!==null)return`Newest ${shown} in the last ${statsPeriod}; older periods not shown.`;return`All ${shown} in the last ${statsPeriod}, newest first.`}function OpenPeriodRow({period,width}){let theme=useTheme(),open=period.isOpen||!period.end;return jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:theme.subText,children:`${BODY_INDENT}#${period.id} `},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.text,children:dateTimeText(period.start)},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.subText,children:" \u2192 "},void 0,!1,void 0,this),jsxDEV57("text",{fg:open?theme.warning:theme.text,children:open?"ongoing":dateTimeText(period.end)},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:` ${elapsedText(period.start,period.end)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function ConnectedAlerts({status,width}){let rows=valueOf(status),error=errorOf(status);if(error)return jsxDEV57(Empty,{children:`Failed to load alerts: ${error.message}`},void 0,!1,void 0,this);if(!rows)return jsxDEV57(Empty,{children:"Loading alerts\u2026"},void 0,!1,void 0,this);if(rows.length===0)return jsxDEV57(Empty,{children:"No alerts are connected to this monitor."},void 0,!1,void 0,this);return jsxDEV57("box",{style:{flexDirection:"column",width},children:rows.map((workflow)=>jsxDEV57(AlertRow,{workflow,width},workflow.id,!1,void 0,this))},void 0,!1,void 0,this)}function AlertRow({workflow,width}){let theme=useTheme(),actions=workflowActionTypes(workflow).map(actionTypeLabel).join(", "),triggered=workflow.lastTriggered?`${timeAgo(workflow.lastTriggered)} ago`:"never",enabled=workflow.enabled!==!1;return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57("box",{style:{flexDirection:"row",width},children:jsxDEV57("text",{fg:enabled?theme.text:theme.muted,children:`${BODY_INDENT}${fitText(workflow.name||`Alert ${workflow.id}`,Math.max(8,width-4))}`},void 0,!1,void 0,this)},void 0,!1,void 0,this),jsxDEV57("box",{style:{flexDirection:"row",width},children:[jsxDEV57("text",{fg:theme.subText,children:`${BODY_INDENT} `},void 0,!1,void 0,this),jsxDEV57("text",{fg:enabled?theme.muted:theme.subText,children:enabled?"enabled":"disabled"},void 0,!1,void 0,this),actions?jsxDEV57(Fragment19,{children:[jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:actions},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,jsxDEV57(Divider,{},void 0,!1,void 0,this),jsxDEV57("text",{fg:theme.muted,children:`last fired ${triggered}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Details({detector,width,client:client2,org}){let environment=detectorEnvironment(detector),group=detector.latestGroup,members=useOrganizationMembers(client2,org,Boolean(detector.createdBy)),createdBy=detector.createdBy?members.state==="ready"?members.value.get(detector.createdBy)?.user?.name??"Deactivated user":members.state==="error"?"Unavailable":"Loading\u2026":"Sentry";return jsxDEV57("box",{style:{flexDirection:"column",width},children:[jsxDEV57(Field,{name:"Monitor ID",value:detector.id,width},void 0,!1,void 0,this),environment?jsxDEV57(Field,{name:"Environment",value:environment,width},void 0,!1,void 0,this):null,group?jsxDEV57(Field,{name:"Last issue",value:lastIssueValue(group.title,group.shortId,group.lastSeen),width},void 0,!1,void 0,this):null,jsxDEV57(Field,{name:"Created",value:dateTimeText(detector.dateCreated),width},void 0,!1,void 0,this),jsxDEV57(Field,{name:"Created by",value:createdBy,width},void 0,!1,void 0,this),jsxDEV57(Field,{name:"Last modified",value:dateTimeText(detector.dateUpdated),width},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function lastIssueValue(title,shortId4,lastSeen){let age=timeAgo(lastSeen);return[shortId4,title,age?`${age} ago`:void 0].filter(Boolean).join(" \xB7 ")}import{jsxDEV as jsxDEV58}from"h:6___________________________";var MONITOR_MIN_FLEX=22;function rowFg(detector,color,theme){return detector.enabled?color:theme.muted}function monitorColumnSet(theme){return{name:{key:"name",label:"Name",width:"flex",render:(detector,selected,width)=>jsxDEV58("text",{fg:rowFg(detector,selected?theme.text:theme.accent,theme),attributes:selected&&detector.enabled?BOLD:0,children:padText(detector.name,width)},void 0,!1,void 0,this)},type:{key:"type",label:"Type",width:12,priority:4,render:(detector,_selected,width)=>jsxDEV58("text",{fg:rowFg(detector,theme.text,theme),children:padText(detectorTypeLabel(detector.type),width)},void 0,!1,void 0,this)},lastIssue:{key:"last-issue",label:"Last Issue",width:26,priority:2,render:(detector,_selected,width)=>jsxDEV58("text",{fg:theme.subText,children:padText(lastIssueLabel(detector),width)},void 0,!1,void 0,this)},assignee:{key:"assignee",label:"Assignee",width:16,priority:3,render:(detector,_selected,width)=>jsxDEV58("text",{fg:theme.subText,children:padText(detectorAssigneeLabel(detector.owner),width)},void 0,!1,void 0,this)},alerts:{key:"alerts",label:"Alerts",width:6,align:"right",priority:1,render:(detector,_selected,width)=>{let count=detector.workflowIds?.length??0;return jsxDEV58("text",{fg:count>0?rowFg(detector,theme.text,theme):theme.subText,children:padText(count>0?String(count):"\u2014",width,"right")},void 0,!1,void 0,this)}}}}function monitorColumns(theme,{visualization}={}){let columns=monitorColumnSet(theme);if(visualization)return[columns.name,columns.type,visualization];return[columns.name,columns.type,columns.lastIssue,columns.assignee,columns.alerts]}function renderDetectorDetail(detector,width,{projectSlugs:projectSlugs2,theme}){let projectSlug=detector.projectId?projectSlugs2?.get(detector.projectId)??detector.latestGroup?.project?.slug:void 0,parts=detectorDetailParts(detector,{projectSlug});return jsxDEV58("text",{fg:theme.muted,children:padText(` ${parts.join(DETAIL_SEPARATOR)}`,Math.max(0,width))},void 0,!1,void 0,this)}function lastIssueLabel(detector){let group=detector.latestGroup;if(!group)return"\u2014";let title=group.title||group.shortId||group.id,age=timeAgo(group.lastSeen);return age?`${title} \xB7 ${age}`:title}import{jsxDEV as jsxDEV59}from"h:6___________________________";var HEADING_ROWS2=4,MONITOR_FILTERS=["project"],MONITOR_TIMELINE_FILTERS=["project","date"];function fallbackView(item){return{title:item,description:"",searchPlaceholder:"Search monitors\u2026",emptyTitle:"No monitors found.",emptyLines:["This organization may not have monitors (the workflow engine) enabled."]}}function monitorRowContentHeight(detector,_index,visibleColumns){return visibleColumns.some((column)=>column.key==="check-ins")?timelineRowContentHeight(detector):1}function MonitorList(props){let theme=useTheme(),{client:client2,org,screen,state,focused,width,height,reloadToken,onProjectSelect}=props,{dispatch,focusSearch,handleSearchBlur}=state,view=getMonitorListView(screen.id)??fallbackView(screen.item),query=buildDetectorQuery(view,state.committedQuery),sort=detectorSort(state.sort),project=state.selectedProjects.length>0?state.selectedProjects:void 0,{detectors:status,nextCursor,page,nextPage,previousPage}=useDetectors(client2,{org,query,sortBy:sort,project,reloadToken}),rows=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status);useEffect40(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef29(page);useEffect40(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect40(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"monitors"}})},[loading,since,error,dispatch]);let projectIds=useMemo26(()=>rows?.flatMap((row)=>row.projectId?[row.projectId]:[])??[],[rows]),projectSlugs2=useProjectSlugs(client2,org,projectIds),{pushView}=props,open=useCallback30((index)=>{let row=rows?.[index];if(!row)return;let slug=row.projectId?projectSlugs2.get(row.projectId):void 0;pushView(monitorDetailView(row,slug??row.latestGroup?.project?.slug,state.statsPeriod))},[rows,pushView,projectSlugs2,state.statsPeriod]);useScreenActions(props.registerActions,{open,nextPage,previousPage});let closeDropdown=useCallback30(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),timelineKind=timelineKindFor(view.type),trackWidth=timelineColumnWidth(width),windowSeconds=timelineWindowSeconds(state.statsPeriod),{monitorIds,uptimeDetectorIds}=useMemo26(()=>timelineKind?timelineStatsIds(rows):{monitorIds:[],uptimeDetectorIds:[]},[timelineKind,rows]),statsStatus=useCheckInStats(client2,{org,monitorIds,uptimeDetectorIds,width:timelineKind?timelineDataWidth(timelineKind,trackWidth):trackWidth,statsPeriod:state.statsPeriod,reloadToken}),stats=valueOf(statsStatus),statsFailed=statsStatus.state==="error"&&stats===void 0,{notify}=props,notifiedError=useRef29(void 0),statsError=errorOf(statsStatus)?.message;useEffect40(()=>{if(!timelineKind)return;if(statsError&&notifiedError.current!==statsError)notify({kind:"warning",text:"check-in history unavailable"});notifiedError.current=statsError},[timelineKind,statsError,notify]);let columns=useMemo26(()=>monitorColumns(theme,timelineKind?{visualization:timelineColumn({stats,failed:statsFailed,width:trackWidth,windowSeconds,theme})}:void 0),[timelineKind,stats,statsFailed,trackWidth,windowSeconds,theme]),renderDetail=useCallback30((detector,_selected,detailWidth)=>renderDetectorDetail(detector,detailWidth,{projectSlugs:projectSlugs2,theme}),[projectSlugs2,theme]);return jsxDEV59("box",{style:{flexDirection:"column",width,height},children:[jsxDEV59(SearchInput,{value:state.searchQuery,placeholder:view.searchPlaceholder,focused:state.searchFocused,width,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV59("box",{style:{flexDirection:"row",width,flexShrink:0,paddingLeft:1},children:[jsxDEV59("text",{fg:theme.text,attributes:BOLD,children:view.title},void 0,!1,void 0,this),jsxDEV59("text",{fg:theme.muted,children:` ${view.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV59(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,filters:timelineKind?MONITOR_TIMELINE_FILTERS:MONITOR_FILTERS,sort:{value:sort,items:DETECTOR_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS+1,onProjectChange:onProjectSelect,onEnvChange:()=>{},onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown}),onDropdownClose:closeDropdown},void 0,!1,void 0,this),jsxDEV59(DataTable,{rows,columns,width,minFlex:MONITOR_MIN_FLEX,selectedIndex:state.selected,focused,rowKey:(detector)=>detector.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load monitors",onRowClick:props.activateRow,renderDetail,rowContentHeight:timelineKind==="cron"?monitorRowContentHeight:void 0,empty:{title:view.emptyTitle,lines:[state.committedQuery||void 0,...view.emptyLines]},layout:[height,HEADING_ROWS2]},void 0,!1,void 0,this),jsxDEV59(ResultFooter,{count:rows?.length,noun:"monitor",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback32,useEffect as useEffect41,useRef as useRef30}from"h:0__";import{RenderableEvents as RenderableEvents4}from"h:3__________";var FUNCTION_FIELDS=["project","fingerprint","package","function","count()","sum()","avg()","p50()","p75()","p95()","p99()"],PROFILE_FUNCTION_SORT_OPTIONS=[{value:"-sum()",label:"Total self time"},{value:"-avg()",label:"Average self time"},{value:"-p50()",label:"p50 self time"},{value:"-p75()",label:"p75 self time"},{value:"-p95()",label:"p95 self time"},{value:"-p99()",label:"p99 self time"}],DEFAULT_PROFILE_FUNCTION_SORT="-sum()";function profileFunctionSort(value){return PROFILE_FUNCTION_SORT_OPTIONS.some((option)=>option.value===value)?value:DEFAULT_PROFILE_FUNCTION_SORT}var PROFILE_FUNCTION_PAGE_SIZE=50;async function listProfileFunctions(client2,{org,query="",statsPeriod,project,environment,sort=DEFAULT_PROFILE_FUNCTION_SORT,cursor,limit=PROFILE_FUNCTION_PAGE_SIZE,signal}){let page=await queryDiscover(client2,{org,dataset:"profileFunctions",fields:FUNCTION_FIELDS,sort,query,statsPeriod,project,environment,cursor,limit,referrer:"sentry-tui.profile-functions",signal});return{data:page.rows.map(normalise4),nextCursor:page.nextCursor}}function normalise4(row,index){return{fingerprint:rowString(row,"fingerprint")??String(index),projectSlug:rowString(row,"project"),package:rowString(row,"package")??"",name:rowString(row,"function")??"",count:rowNumber(row,"count()"),totalSelfTimeNs:rowNumber(row,"sum()"),p75SelfTimeNs:rowNumber(row,"p75()")}}import{useCallback as useCallback31}from"h:0__";function useProfileFunctions(client2,{org,query,statsPeriod,project,environment,sort,reloadToken=0}){let loader=useCallback31((cursor,signal)=>client2?listProfileFunctions(client2,{org,query,statsPeriod,project,environment,sort,cursor,signal}):null,[client2,org,query,statsPeriod,project,environment,sort]),pages=useCursorPages(loader,reloadToken);return{functions:mapAsyncStatus(pages.status,(result)=>result.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}import{jsxDEV as jsxDEV60}from"h:6___________________________";var FLAMEGRAPH_HEADING="Aggregate flamegraph \u2014 open Explore \u203A Profiles on sentry.io",MIN_FUNCTION_WIDTH=24,FLAMEGRAPH_NOTE=["A flamegraph needs pixels a terminal does not have; an ASCII","approximation would mislead. Below: the same page's slowest functions."];function profileColumns(theme){return[{key:"function",label:"Function",width:"flex",render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.text,children:padText(fn.name,width)},void 0,!1,void 0,this)},{key:"package",label:"Package",width:18,priority:2,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.muted,children:padText(fn.package,width)},void 0,!1,void 0,this)},{key:"project",label:"Project",width:12,priority:1,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.subText,children:padText(fn.projectSlug??"",width)},void 0,!1,void 0,this)},{key:"count",label:"Calls",width:7,align:"right",priority:3,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.muted,children:padText(formatCount(fn.count),width,"right")},void 0,!1,void 0,this)},{key:"p75",label:"p75",width:9,align:"right",priority:4,render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.muted,children:padText(formatNanoseconds(fn.p75SelfTimeNs),width,"right")},void 0,!1,void 0,this)},{key:"total",label:"Self Time",width:10,align:"right",render:(fn,_selected,width)=>jsxDEV60("text",{fg:theme.text,children:padText(formatNanoseconds(fn.totalSelfTimeNs),width,"right")},void 0,!1,void 0,this)}]}function ProfileFunctions({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,inputRef=useRef30(null),inputRefCallback=useCallback32((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents4.FOCUSED),previous.removeAllListeners(RenderableEvents4.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents4.FOCUSED,()=>focusSearch()),node.on(RenderableEvents4.BLURRED,()=>handleSearchBlur())},[focusSearch,handleSearchBlur]),query=state.committedQuery,sort=profileFunctionSort(state.sort),{functions:status,nextCursor,page,nextPage,previousPage}=useProfileFunctions(client2,{org,query,statsPeriod:state.statsPeriod,project:state.selectedProjects.length>0?state.selectedProjects:void 0,environment:state.selectedEnvs.length>0?state.selectedEnvs:void 0,sort,reloadToken}),loading=status.state==="loading",since=loadingSince(status),functions=valueOf(status),error=errorOf(status);useEffect41(()=>{if(functions)dispatch({type:"setEntries",payload:functions})},[functions,dispatch]);let reportedPage=useRef30(page);useEffect41(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect41(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"functions"}})},[loading,since,error,status,dispatch]);let closeDropdown=useCallback32(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0}});let inner=Math.max(20,width-2),selected=functions?.[state.selected]??null,showDetail=state.detailOpen&&selected!==null;return jsxDEV60("box",{style:{flexDirection:"column",width,height},children:[jsxDEV60("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV60(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV60("input",{ref:inputRefCallback,value:state.searchQuery,placeholder:"Search functions\u2026",focused:state.searchFocused,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV60(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:PROFILE_FUNCTION_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV60(FlamegraphNote,{width:inner},void 0,!1,void 0,this),jsxDEV60(DataTable,{rows:functions,columns:profileColumns(theme),width,selectedIndex:state.selected,focused,rowKey:(fn)=>fn.fingerprint,loading:isInitialLoad(status),error,errorTitle:"Failed to load profiled functions",minFlex:MIN_FUNCTION_WIDTH,onRowClick:activateRow,empty:{title:"No profiled functions found.",lines:[query||void 0,"Try widening the time range or selecting a project that sends profiles.","This organization may not have profiling enabled."]},layout:[height,showDetail]},void 0,!1,void 0,this),showDetail&&selected?jsxDEV60(FunctionDetail,{fn:selected,width:inner},void 0,!1,void 0,this):null,jsxDEV60(ResultFooter,{count:functions?.length,noun:"function",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function FlamegraphNote({width}){let theme=useTheme();return jsxDEV60("box",{style:{flexDirection:"column",width,flexShrink:0,border:["bottom"],borderColor:theme.border},children:[jsxDEV60("text",{fg:theme.subText,attributes:BOLD,children:fitText(FLAMEGRAPH_HEADING,width)},void 0,!1,void 0,this),FLAMEGRAPH_NOTE.map((line)=>jsxDEV60("text",{fg:theme.muted,children:fitText(line,width)},line,!1,void 0,this))]},void 0,!0,void 0,this)}function FunctionDetail({fn,width}){let theme=useTheme();return jsxDEV60("box",{style:{flexDirection:"column",width,border:["top"],borderColor:theme.border,paddingTop:1,flexShrink:0},children:[jsxDEV60("text",{fg:theme.accent,attributes:BOLD,children:"\u25BE Function Details"},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.text,children:fitText(fn.name,width)},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.muted,children:fitText(` Package: ${fn.package||"\u2014"}`,width)},void 0,!1,void 0,this),jsxDEV60("text",{fg:theme.muted,children:fitText(` Project: ${fn.projectSlug??"\u2014"} \u2502 Calls: ${formatCount(fn.count)}`+` \u2502 Self time: ${formatNanoseconds(fn.totalSelfTimeNs)}`+` \u2502 p75: ${formatNanoseconds(fn.p75SelfTimeNs)}`,width)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function formatNanoseconds(value){if(value===void 0||!Number.isFinite(value))return"\xB7\xB7";if(value<1000)return`${Math.round(value)}ns`;if(value<1e6)return`${trim2(value/1000)}\xB5s`;if(value<1e9)return`${trim2(value/1e6)}ms`;return`${trim2(value/1e9)}s`}function trim2(value){let places=value<10?2:value<100?1:0,fixed=value.toFixed(places);return fixed.includes(".")?fixed.replace(/\.?0+$/,""):fixed}import{useCallback as useCallback34,useEffect as useEffect43,useMemo as useMemo27,useRef as useRef31}from"h:0__";import{RenderableEvents as RenderableEvents5}from"h:3__________";import{useEffect as useEffect42}from"h:0__";function useCardScrollFollow(list,{index,heights,layout:layout2=[]}){let rowTop=0;for(let i=0;i<index&&i<heights.length;i++)rowTop+=heights[i]??0;let rowHeight=heights[index]??0,contentHeight=heights.reduce((total,height)=>total+height,0);useEffect42(()=>{let box=list.current;if(!box||contentHeight===0)return;let viewportHeight=box.viewport.height;if(viewportHeight<=0)return;let next=scrollTopForRowAt({rowTop,rowHeight,contentHeight,viewportHeight,scrollTop:box.scrollTop});if(next!==box.scrollTop)box.scrollTop=next},[list,rowTop,rowHeight,contentHeight,...layout2])}import{useCallback as useCallback33}from"h:0__";function useReleaseAdoption(client2,{org,releases,project,environment}){let loader=useCallback33((signal)=>client2&&releases?listReleaseAdoption(client2,{org,releases,project,environment,signal}):null,[client2,org,releases,project,environment]);return useAsyncFetch(loader,{resetKey:releases}).status}import{jsxDEV as jsxDEV61,Fragment as Fragment20}from"h:6___________________________";var GUTTER=2,INDENT=2,GAP=1,CARD_HEADER_LINES=3,COLLAPSED_PROJECTS=3,SKELETON_CARDS=4,SKELETON_PROJECTS=2,ADOPTION_CHART=12,ADOPTION_LABEL=5,ADOPTION_BLOCKS=["\u2581","\u2582","\u2583","\u2584","\u2585","\u2586","\u2587","\u2588"],CRASH_FREE_DANGER=98,CRASH_FREE_WARNING=99.5;function projectColumns(theme){return[{key:"project",label:"Project",width:"flex",render:(row,_selected,width)=>jsxDEV61("text",{fg:theme.text,children:padText(row.project.slug,width)},void 0,!1,void 0,this)},{key:"adoption",label:"Adoption",width:ADOPTION_LABEL+ADOPTION_CHART,priority:3,render:(row,_selected,width)=>jsxDEV61(AdoptionCell,{row,width},void 0,!1,void 0,this)},{key:"crashFree",label:"Crash-Free",width:11,align:"right",render:(row,_selected,width)=>jsxDEV61(CrashFreeCell,{row,width},void 0,!1,void 0,this)},{key:"crashes",label:"Crashes",width:8,align:"right",priority:2,render:(row,_selected,width)=>row.pending?jsxDEV61(PendingCell,{width,align:"right"},void 0,!1,void 0,this):jsxDEV61("text",{fg:theme.muted,children:padText(row.health?formatCount(row.health.sessionsCrashed??0):"\u2014",width,"right")},void 0,!1,void 0,this)},{key:"newIssues",label:"New Issues",width:10,align:"right",priority:1,render:(row,_selected,width)=>jsxDEV61("text",{fg:theme.muted,children:padText(formatCount(row.project.newGroups),width,"right")},void 0,!1,void 0,this)}]}function ReleaseCards({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,registerActions,activateRow}){let theme=useTheme(),{dispatch,focusSearch,handleSearchBlur}=state,listRef=useRef31(null),inputRef=useRef31(null),inputRefCallback=useCallback34((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents5.FOCUSED),previous.removeAllListeners(RenderableEvents5.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents5.FOCUSED,()=>focusSearch()),node.on(RenderableEvents5.BLURRED,()=>handleSearchBlur())},[focusSearch,handleSearchBlur]),query=state.committedQuery,project=useMemo27(()=>projectParams(state.selectedProjects),[state.selectedProjects]),environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sortItems=useMemo27(()=>releaseSortOptions(state.selectedEnvs),[state.selectedEnvs]),sort=releaseSort(state.sort,state.selectedEnvs),params={org,query,statsPeriod:state.statsPeriod,project,environment,sort,reloadToken},{releases:releasesStatus,nextCursor,cursor,page,nextPage,previousPage}=useReleases(client2,params),healthStatus=useReleaseHealth(client2,{...params,cursor}),releases=valueOf(releasesStatus),adoptionStatus=useReleaseAdoption(client2,{org,releases,project,environment}),listError=errorOf(releasesStatus),health=valueOf(healthStatus),healthError=errorOf(healthStatus),healthPending=health===void 0&&healthStatus.state==="loading",adoption=valueOf(adoptionStatus),adoptionError=errorOf(adoptionStatus),adoptionPending=releases!==void 0&&adoption===void 0&&adoptionStatus.state!=="error",loading=releasesStatus.state==="loading",since=loadingSince(releasesStatus);useEffect43(()=>{if(releases)dispatch({type:"setEntries",payload:releases})},[releases,dispatch]);let reportedPage=useRef31(page);useEffect43(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect43(()=>{dispatch({type:"setStatus",payload:{loading,since,error:listError?.message??(healthError?`health: ${healthError.message}`:void 0)??(adoptionError?`adoption: ${adoptionError.message}`:void 0),noun:"releases"}})},[loading,since,listError,healthError,adoptionError,releasesStatus,dispatch]);let closeDropdown=useCallback34(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);useScreenActions(registerActions,{open:()=>dispatch({type:"setDetailOpen",payload:(open)=>!open}),nextPage,previousPage,back:()=>{if(!state.detailOpen)return!1;return dispatch({type:"setDetailOpen",payload:!1}),!0}});let cardWidth=Math.max(20,width-GUTTER),tableWidth=Math.max(10,cardWidth-INDENT),resolved2=useMemo27(()=>layoutColumns(projectColumns(theme),tableWidth,{gap:GAP}),[tableWidth,theme]),heights=useMemo27(()=>(releases??[]).map((release,index)=>cardHeight(release,state.detailOpen&&index===state.selected)),[releases,state.detailOpen,state.selected]);useCardScrollFollow(listRef,{index:state.selected,heights,layout:[height]});let showSkeleton=releases===void 0&&loading,showEmpty=releases!==void 0&&releases.length===0&&!loading;return jsxDEV61("box",{style:{flexDirection:"column",width,height},children:[jsxDEV61("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV61(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV61("input",{ref:inputRefCallback,value:state.searchQuery,placeholder:"Search releases\u2026",focused:state.searchFocused,onInput:(query2)=>dispatch({type:"setSearchQuery",payload:query2}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV61(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:sortItems,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV61("scrollbox",{ref:listRef,focused,verticalScrollbarOptions:{showArrows:!1,trackOptions:{backgroundColor:theme.panel,foregroundColor:theme.muted}},style:{flexGrow:1,flexBasis:0,width},children:[showSkeleton?Array.from({length:SKELETON_CARDS},(_,i)=>jsxDEV61(SkeletonCard,{resolved:resolved2,width:cardWidth,seed:i},i,!1,void 0,this)):null,showEmpty?jsxDEV61("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV61("text",{fg:theme.text,children:"No releases found."},void 0,!1,void 0,this),query?jsxDEV61("text",{fg:theme.muted,children:query},void 0,!1,void 0,this):null,jsxDEV61("text",{fg:theme.muted,children:"Try widening the time range or clearing the version filter."},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.muted,children:"This organization may not have release tracking set up."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,releases?.map((release,index)=>jsxDEV61(ReleaseCard,{release,index,health,healthPending,adoption,adoptionPending,resolved:resolved2,width:cardWidth,selected:focused&&index===state.selected,expanded:state.detailOpen&&index===state.selected,onPress:activateRow},release.version,!1,void 0,this)),listError&&releases===void 0?jsxDEV61("box",{style:{flexDirection:"column",padding:1},children:[jsxDEV61("text",{fg:theme.danger,children:"Failed to load releases"},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.muted,children:listError.message},void 0,!1,void 0,this),listError.retryable?jsxDEV61("text",{fg:theme.muted,children:"R to retry"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),jsxDEV61(ResultFooter,{count:releases?.length,noun:"release",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function cardProjects(release,expanded){let sorted=[...release.projects].sort((a,b)=>a.slug.localeCompare(b.slug));if(expanded||sorted.length<=COLLAPSED_PROJECTS)return{shown:sorted,hidden:0};return{shown:sorted.slice(0,COLLAPSED_PROJECTS),hidden:sorted.length-COLLAPSED_PROJECTS}}function cardHeight(release,expanded){let{shown,hidden}=cardProjects(release,expanded);return CARD_HEADER_LINES+shown.length+(hidden>0?1:0)+1}function ReleaseCard({release,index,health,healthPending,adoption,adoptionPending,resolved:resolved2,width,selected,expanded,onPress}){let theme=useTheme(),{shown,hidden}=cardProjects(release,expanded),tableWidth=Math.max(10,width-INDENT),when=timeAgo(release.lastDeploy?.dateFinished??release.dateCreated),suffix=release.lastDeploy?` \u2502 ${release.lastDeploy.environment}`:"",stamp=`${when}${suffix}`,stampWidth=Math.min(stamp.length+1,Math.max(0,width-INDENT-4)),versionWidth=Math.max(4,width-INDENT-stampWidth);return jsxDEV61("box",{style:{flexDirection:"column",width,flexShrink:0},onMouseDown:()=>onPress(index),children:[jsxDEV61("box",{style:{flexDirection:"row",width,backgroundColor:selected?theme.selected:void 0},children:[jsxDEV61("text",{fg:theme.accent,children:selected?"\u276F ":" "},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.text,attributes:BOLD,children:padText(release.shortVersion||release.version,versionWidth)},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.subText,children:padText(stamp,stampWidth,"right")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV61("text",{fg:theme.muted,children:padText(` ${releaseSummary(release)}`,width)},void 0,!1,void 0,this),jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("text",{fg:theme.subText,children:(i>0?" ".repeat(GAP):"")+padText(column.label,cellWidth,column.align??"left")},column.key,!1,void 0,this))]},void 0,!0,void 0,this),shown.map((project)=>jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("box",{style:{flexDirection:"row",flexShrink:0},children:[i>0?jsxDEV61("text",{children:" ".repeat(GAP)},void 0,!1,void 0,this):null,column.render({project,health:health?.get(healthKey(release.version,project.id)),pending:healthPending,adoption:adoption?.get(healthKey(release.version,project.id)),adoptionPending},selected,cellWidth)]},column.key,!0,void 0,this))]},project.id,!0,void 0,this)),hidden>0?jsxDEV61("text",{fg:theme.subText,attributes:ITALIC,children:padText(` +${hidden} more ${hidden===1?"project":"projects"} \u2014 enter to expand`,width)},void 0,!1,void 0,this):null,jsxDEV61("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,tableWidth+INDENT))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function releaseSummary(release){let parts=[];if(release.package)parts.push(release.package);if(release.commitCount>0){let commits=`${release.commitCount} ${release.commitCount===1?"commit":"commits"}`,authors=`${release.authorCount} ${release.authorCount===1?"author":"authors"}`;parts.push(`${commits} by ${authors}`)}return parts.length>0?parts.join(" \xB7 "):"no commits associated"}function AdoptionCell({row,width}){let theme=useTheme();if(row.pending||row.adoptionPending)return jsxDEV61(PendingCell,{width},void 0,!1,void 0,this);let adoption=row.health?.adoption;if(adoption===void 0)return jsxDEV61("text",{fg:theme.subText,children:padText("\u2014",width)},void 0,!1,void 0,this);let clamped=Math.max(0,Math.min(100,adoption)),labelWidth=Math.min(ADOPTION_LABEL,width),chartWidth=Math.max(0,width-labelWidth),chart=row.adoption?adoptionChart(row.adoption,chartWidth):[];return jsxDEV61(Fragment20,{children:[jsxDEV61("text",{fg:theme.muted,children:padText(`${Math.round(clamped)}%`,labelWidth)},void 0,!1,void 0,this),chart.length>0?chart.map((cell,index)=>jsxDEV61("text",{fg:cell.series==="release"?theme.accent:theme.subText,children:cell.glyph},index,!1,void 0,this)):jsxDEV61("text",{children:" ".repeat(chartWidth)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function adoptionChart(series,width){if(width<=0||series.project.length===0&&series.release.length===0)return[];let pairCount=Math.max(1,Math.floor(width/2)),length=Math.max(series.project.length,series.release.length),pairs=Array.from({length},(_,index)=>[series.project[index]??0,series.release[index]??0]),sampled=pairs.length>pairCount?downsampleAdoption(pairs,pairCount):stretch(pairs,pairCount),max=Math.max(1,...sampled.flatMap(([project,release])=>[project,release])),cells=sampled.flatMap(([project,release])=>[{glyph:adoptionGlyph(project,max),series:"project"},{glyph:adoptionGlyph(release,max),series:"release"}]);while(cells.length<width)cells.push({glyph:" ",series:"project"});return cells.slice(0,width)}function downsampleAdoption(pairs,width){let bucketSize=pairs.length/width;return Array.from({length:width},(_,index)=>{let start=Math.floor(index*bucketSize),end=Math.min(pairs.length,Math.floor((index+1)*bucketSize)),project=0,release=0;for(let point=start;point<end;point++)project+=pairs[point]?.[0]??0,release+=pairs[point]?.[1]??0;return[project,release]})}function adoptionGlyph(value,max){if(value<=0)return ADOPTION_BLOCKS[0];let level=Math.ceil(value/max*ADOPTION_BLOCKS.length)-1;return ADOPTION_BLOCKS[Math.max(0,Math.min(ADOPTION_BLOCKS.length-1,level))]}function CrashFreeCell({row,width}){let theme=useTheme();if(row.pending)return jsxDEV61(PendingCell,{width,align:"right"},void 0,!1,void 0,this);let rate=row.health?.crashFreeSessions;if(rate===void 0)return jsxDEV61("text",{fg:theme.subText,children:padText("\u2014",width,"right")},void 0,!1,void 0,this);let[color,marker]=rate<CRASH_FREE_DANGER?[theme.danger,"\u2717"]:rate<CRASH_FREE_WARNING?[theme.warning,"!"]:[theme.success,"\u2713"];return jsxDEV61("text",{fg:color,children:padText(`${marker} ${displayCrashFreePercent(rate)}`,width,"right")},void 0,!1,void 0,this)}function PendingCell({width,align="left"}){let theme=useTheme();return jsxDEV61("text",{fg:theme.panelAlt,children:padText("\u2500".repeat(Math.max(1,Math.floor(width*0.6))),width,align)},void 0,!1,void 0,this)}function displayCrashFreePercent(percent){if(Number.isNaN(percent))return"\u2014";if(percent>0&&percent<1)return"<1%";let factor=10**(percent>90?3:0),rounded=Math.round(percent*factor)/factor;if(rounded===100&&percent<100)rounded=Math.floor(percent*factor)/factor;return`${rounded}%`}function SkeletonCard({resolved:resolved2,width,seed}){let theme=useTheme(),tableWidth=Math.max(10,width-INDENT);return jsxDEV61("box",{style:{flexDirection:"column",width,flexShrink:0},children:[jsxDEV61("text",{fg:theme.panelAlt,children:padText(` ${bar2(24,seed)}`,width)},void 0,!1,void 0,this),jsxDEV61("text",{fg:theme.panelAlt,children:padText(` ${bar2(32,seed+3)}`,width)},void 0,!1,void 0,this),jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("text",{fg:theme.subText,children:(i>0?" ".repeat(GAP):"")+padText(column.label,cellWidth,column.align??"left")},column.key,!1,void 0,this))]},void 0,!0,void 0,this),Array.from({length:SKELETON_PROJECTS},(_,row)=>jsxDEV61("box",{style:{flexDirection:"row",width},children:[jsxDEV61("text",{children:" ".repeat(INDENT)},void 0,!1,void 0,this),resolved2.map(({column,width:cellWidth},i)=>jsxDEV61("text",{fg:theme.panelAlt,children:(i>0?" ".repeat(GAP):"")+padText(bar2(cellWidth,seed+row+i),cellWidth,column.align??"left")},column.key,!1,void 0,this))]},row,!0,void 0,this)),jsxDEV61("text",{fg:theme.border,children:"\u2500".repeat(Math.max(0,tableWidth+INDENT))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function bar2(width,seed){if(width<=0)return"";let fraction=0.4+seed*17%45/100;return"\u2500".repeat(Math.max(1,Math.min(width,Math.floor(width*fraction))))}import{useCallback as useCallback35,useEffect as useEffect44,useMemo as useMemo28,useRef as useRef32}from"h:0__";import{RenderableEvents as RenderableEvents6}from"h:3__________";import{jsxDEV as jsxDEV62,Fragment as Fragment21}from"h:6___________________________";var ACTIVITY_STEPS=10,MIN_SESSION_WIDTH=15;function replayColumns(theme){return[{key:"session",label:"Replay",width:"flex",render:(replay,selected,width)=>{if(replay.isArchived)return jsxDEV62("text",{fg:theme.subText,children:padText("Deleted Replay",width)},void 0,!1,void 0,this);let marker=replay.hasViewed?" ":"\u25CF ",name=replay.user.displayName??"Anonymous User",nameWidth=width-marker.length;return jsxDEV62(Fragment21,{children:[jsxDEV62("text",{fg:theme.accent,children:marker},void 0,!1,void 0,this),nameWidth>0?jsxDEV62("text",{fg:theme.text,attributes:selected?BOLD:0,children:padText(name,nameWidth)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}},{key:"os",label:"OS",width:11,render:(replay,_selected,width)=>jsxDEV62("text",{fg:theme.subText,children:padText(formatAgent(replay.os),width)},void 0,!1,void 0,this)},{key:"browser",label:"Browser",width:11,render:(replay,_selected,width)=>jsxDEV62("text",{fg:theme.subText,children:padText(formatAgent(replay.browser),width)},void 0,!1,void 0,this)},{key:"duration",label:"Duration",width:8,align:"right",render:(replay,_selected,width)=>jsxDEV62("text",{fg:theme.text,children:padText(formatReplayDuration(replay.durationSec),width,"right")},void 0,!1,void 0,this)},{key:"dead",label:"Dead",width:5,align:"right",priority:1,render:(replay,_selected,width)=>jsxDEV62(CountCell,{value:replay.countDeadClicks,width,color:theme.warning},void 0,!1,void 0,this)},{key:"rage",label:"Rage",width:5,align:"right",priority:1,render:(replay,_selected,width)=>jsxDEV62(CountCell,{value:replay.countRageClicks,width,color:theme.danger},void 0,!1,void 0,this)},{key:"errors",label:"Errors",width:6,align:"right",render:(replay,_selected,width)=>jsxDEV62(CountCell,{value:replay.countErrors,width,color:theme.danger},void 0,!1,void 0,this)},{key:"activity",label:"Activity",width:ACTIVITY_STEPS,priority:2,render:(replay,_selected,width)=>jsxDEV62(ActivityBar,{score:replay.activity,width},void 0,!1,void 0,this)}]}function ReplayStream({client:client2,org,state,focused,width,height,reloadToken,onProjectSelect,pushView,registerActions,activateRow}){let theme=useTheme(),{dispatch}=state,query=state.committedQuery,project=state.selectedProjects.length>0?state.selectedProjects:void 0,environment=state.selectedEnvs.length>0?state.selectedEnvs:void 0,sort=replaySort(state.sort),{replays,nextCursor,page,nextPage,previousPage}=useReplays(client2,{org,query,statsPeriod:state.statsPeriod,project,environment,sort,reloadToken}),loading=replays.state==="loading",since=loadingSince(replays),fetched=valueOf(replays),error=errorOf(replays),projectIds=useMemo28(()=>fetched?.flatMap((replay)=>replay.projectId?[replay.projectId]:[])??[],[fetched]),slugById=useProjectSlugs(client2,org,projectIds),rows=useMemo28(()=>fetched?.map((replay)=>({...replay,projectSlug:replay.projectId?slugById.get(replay.projectId):void 0})),[fetched,slugById]);useEffect44(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef32(page);useEffect44(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect44(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"replays"}})},[loading,since,error,replays,dispatch]);let closeDropdown=useCallback35(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return useScreenActions(registerActions,{open:(index)=>{let row=rowsOf(state)[index];if(row)pushView(replayDetailView(row,state.statsPeriod,state.selectedEnvs))},nextPage,previousPage}),jsxDEV62("box",{style:{flexDirection:"column",width,height},children:[jsxDEV62(SearchInputPlaceholder,{state,width,placeholder:"Search replays\u2026"},void 0,!1,void 0,this),jsxDEV62(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,sort:{value:sort,items:REPLAY_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS,onProjectChange:onProjectSelect,onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV62(DataTable,{rows,columns:replayColumns(theme),width,selectedIndex:state.selected,focused,rowKey:(replay)=>replay.id,loading:isInitialLoad(replays),error,errorTitle:"Failed to load replays",onRowClick:activateRow,renderDetail:(replay,selected,rowWidth)=>renderSessionDetail(replay,selected,rowWidth,theme),minFlex:MIN_SESSION_WIDTH,empty:{title:"No replays found.",lines:[query||void 0,"Try widening the time range or adjusting the query.","This organization may not have session replay enabled."]},layout:[height]},void 0,!1,void 0,this),jsxDEV62(ResultFooter,{count:rows?.length,noun:"replay",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function renderSessionDetail(replay,_selected,width,theme){let parts=[replay.projectSlug,shortReplayId(replay.id)].filter(Boolean),started=timeAgo(replay.startedAt);if(started)parts.push(`${started} ago`);return jsxDEV62("text",{fg:theme.muted,children:padText(` ${parts.join(" \xB7 ")}`,width)},void 0,!1,void 0,this)}function CountCell({value,width,color}){let theme=useTheme(),known=value!==void 0;return jsxDEV62("text",{fg:known&&value>0?color:theme.subText,children:padText(known?String(value):"\u2014",width,"right")},void 0,!1,void 0,this)}function ActivityBar({score,width}){let theme=useTheme();if(width<=0)return null;if(score===void 0)return jsxDEV62("text",{fg:theme.subText,children:padText("\u2014",width)},void 0,!1,void 0,this);let clamped=Math.max(0,Math.min(ACTIVITY_STEPS,Math.round(score))),filled=Math.round(clamped/ACTIVITY_STEPS*width),empty=Math.max(0,width-filled);return jsxDEV62(Fragment21,{children:[filled>0?jsxDEV62("text",{fg:theme.accent,children:"\u2588".repeat(filled)},void 0,!1,void 0,this):null,empty>0?jsxDEV62("text",{fg:theme.border,children:"\u2591".repeat(empty)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function replayDetailView(replay,statsPeriod,environments){return{id:`replay:${replay.id}`,sentryLocation:{screen:"explore.replays",detail:{kind:"replay",replayId:replay.id}},label:shortReplayId(replay.id),stateKey:REPLAY_DETAIL_STATE_KEY,initialState:{statsPeriod,selectedEnvs:environments,selectedProjects:replay.projectSlug?[replay.projectSlug]:[]},render:(ctx)=>ctx.state?jsxDEV62(ReplayDetail,{...ctx,state:ctx.state,replay},void 0,!1,void 0,this):null}}var loadReplay2=(client2,{org,id,signal})=>fetchReplay(client2,{org,replayId:id,signal});function replayUrlView(replayId){return{id:`replay:${replayId}`,sentryLocation:{screen:"explore.replays",detail:{kind:"replay",replayId}},label:shortReplayId(replayId),stateKey:REPLAY_DETAIL_STATE_KEY,initialState:{statsPeriod:DEFAULT_REPLAY_PERIOD,selectedEnvs:[],selectedProjects:[]},render:(ctx)=>ctx.state?jsxDEV62(ReplayFromUrl,{...ctx,state:ctx.state,replayId},void 0,!1,void 0,this):null}}function ReplayFromUrl({client:client2,org,state,replayId,reloadToken,width,height,updateView,...ctx}){let status=useDirectResource(client2,{org,id:replayId,reloadToken,load:loadReplay2}),replay=valueOf(status);if(useEffect44(()=>{if(replay)updateView(`replay:${replayId}`,{label:shortReplayId(replay.id)})},[replay,replayId,updateView]),!replay)return jsxDEV62(DirectDetailStatus,{status,noun:"replay",width,height},void 0,!1,void 0,this);return jsxDEV62(ReplayDetail,{...ctx,client:client2,org,state,replay,reloadToken,width,height,updateView},void 0,!1,void 0,this)}function replayErrorColumns(theme){return[{key:"time",label:"Time",width:8,render:(event,_selected,width)=>jsxDEV62("text",{fg:theme.muted,children:padText(clockOf(event.timestamp),width)},void 0,!1,void 0,this)},{key:"level",label:"Level",width:5,priority:1,render:(event,_selected,width)=>jsxDEV62("text",{fg:event.level==="error"||event.level==="fatal"?theme.danger:theme.muted,children:padText(event.level??"",width)},void 0,!1,void 0,this)},{key:"issue",label:"Issue",width:16,priority:2,render:(event,_selected,width)=>jsxDEV62("text",{fg:theme.subText,children:padText(event.issue??"",width)},void 0,!1,void 0,this)},{key:"title",label:"Title",width:"flex",render:(event,_selected,width)=>jsxDEV62("text",{fg:theme.text,children:padText(event.title,width)},void 0,!1,void 0,this)}]}function ReplayDetail({client:client2,org,state,replay,focused,width,height,reloadToken}){let theme=useTheme(),{dispatch}=state,{errors:status,nextCursor}=useReplayErrors(client2,{org,replayId:replay.id,statsPeriod:state.statsPeriod,environment:state.selectedEnvs.length>0?state.selectedEnvs:void 0,count:replay.countErrors??0,reloadToken}),errors=valueOf(status),error=errorOf(status);useEffect44(()=>{if(errors)dispatch({type:"setEntries",payload:errors})},[errors,dispatch]),useEffect44(()=>{dispatch({type:"setStatus",payload:{loading:status.state==="loading",error:error?.message,noun:"replay errors"}})},[status,error,dispatch]);let closeDropdown=useCallback35(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]),inner=Math.max(20,width-2),name=replay.user.displayName??"Anonymous User";return jsxDEV62("box",{style:{flexDirection:"column",width,height,paddingLeft:1},children:[jsxDEV62(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,width:inner,anchorTop:0,onProjectChange:(projects)=>dispatch({type:"setSelectedProjects",payload:projects}),onEnvChange:(envs)=>dispatch({type:"setSelectedEnvs",payload:envs}),onPeriodChange:(period)=>dispatch({type:"setStatsPeriod",payload:period}),onDropdownClose:closeDropdown,onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown})},void 0,!1,void 0,this),jsxDEV62("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV62("text",{fg:theme.text,attributes:BOLD,children:fitText(name,Math.max(8,inner-24))},void 0,!1,void 0,this),jsxDEV62("text",{fg:theme.muted,children:fitText(` ${replay.projectSlug??"\u2014"} \xB7 ${timeAgo(replay.startedAt)} ago`,24)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV62(Field2,{label:"Duration",value:formatReplayDuration(replay.durationSec),width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Platform",value:[formatAgent(replay.os),formatAgent(replay.browser)].filter((part)=>part!=="\u2014").join(" \xB7 "),width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Clicks",value:`${count(replay.countDeadClicks)} dead \xB7 ${count(replay.countRageClicks)} rage`,width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Session",value:`${count(replay.countUrls)} urls \xB7 ${count(replay.countSegments)} segments \xB7 activity ${count(replay.activity)}`,width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"Release",value:replay.releases[0]??"\u2014",width:inner},void 0,!1,void 0,this),jsxDEV62(Field2,{label:"URL",value:replay.urls[0]??"\u2014",width:inner},void 0,!1,void 0,this),jsxDEV62("box",{style:{flexDirection:"column",flexShrink:0},children:[jsxDEV62("text",{fg:theme.muted,children:" "},void 0,!1,void 0,this),jsxDEV62("text",{fg:theme.subText,children:padText("Playback is not available in a terminal. Open it at:",inner)},void 0,!1,void 0,this),chunk(replayUrl(org,replay.id),inner).map((line,index)=>jsxDEV62("text",{fg:theme.accent,children:padText(line,inner)},index,!1,void 0,this)),jsxDEV62("text",{fg:theme.muted,children:" "},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV62(DataTable,{rows:errors,columns:replayErrorColumns(theme),width:width-1,selectedIndex:state.selected,focused,rowKey:(event)=>event.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load replay errors",empty:{title:"No errors in this replay."},layout:[height]},void 0,!1,void 0,this),jsxDEV62(ResultFooter,{count:errors?.length,noun:"error",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Field2({label,value,width}){let theme=useTheme(),gutter=10;return jsxDEV62("box",{style:{flexDirection:"row",flexShrink:0},children:[jsxDEV62("text",{fg:theme.muted,children:padText(label,10)},void 0,!1,void 0,this),jsxDEV62("text",{fg:theme.text,children:fitText(value||"\u2014",Math.max(0,width-10))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function chunk(text2,width){if(width<=0)return[text2];let lines=[];for(let start=0;start<text2.length;start+=width)lines.push(text2.slice(start,start+width));return lines.length>0?lines:[""]}function count(value){return value===void 0?"\u2014":String(value)}function clockOf(iso){if(!iso)return"--:--:--";return/T(\d{2}:\d{2}:\d{2})/.exec(iso)?.[1]??(iso.slice(11,19)||"--:--:--")}function SearchInputPlaceholder({state,width,placeholder}){let theme=useTheme(),{focusSearch,handleSearchBlur}=state,inputRef=useRef32(null),inputRefCallback=useCallback35((node)=>{let previous=inputRef.current;if(previous)previous.removeAllListeners(RenderableEvents6.FOCUSED),previous.removeAllListeners(RenderableEvents6.BLURRED);if(inputRef.current=node,node)node.on(RenderableEvents6.FOCUSED,()=>focusSearch()),node.on(RenderableEvents6.BLURRED,()=>handleSearchBlur())},[focusSearch,handleSearchBlur]);return jsxDEV62("box",{style:{flexDirection:"row",width,flexShrink:0,height:SEARCH_ROWS,border:!0,borderStyle:"rounded",borderColor:state.searchFocused?theme.accent:theme.border,backgroundColor:theme.panel,paddingLeft:1,paddingRight:1},children:[jsxDEV62(SearchInputHint,{},void 0,!1,void 0,this),jsxDEV62("input",{ref:inputRefCallback,value:state.searchQuery,placeholder,focused:state.searchFocused,onInput:(query)=>state.dispatch({type:"setSearchQuery",payload:query}),style:{flexGrow:1,textColor:theme.text,backgroundColor:theme.panel,focusedTextColor:theme.text,focusedBackgroundColor:theme.panel,placeholderColor:theme.subText}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useCallback as useCallback36,useEffect as useEffect45,useMemo as useMemo29}from"h:0__";import{jsxDEV as jsxDEV63}from"h:6___________________________";var HEADING_ROWS3=1,MIN_QUERY_WIDTH=20;function columnsFor2(config,theme){return[{key:"star",label:" ",width:1,render:(query)=>jsxDEV63("text",{fg:query.starred?theme.warning:theme.muted,children:query.starred?"\u2605":" "},void 0,!1,void 0,this)},{key:"name",label:"Name",width:24,render:(query,selected,width)=>jsxDEV63("text",{fg:selected?theme.text:theme.subText,attributes:selected?BOLD:0,children:padText(fitText(query.name,width),width)},void 0,!1,void 0,this)},{key:"type",label:"Type",width:12,priority:2,render:(query,_selected,width)=>jsxDEV63("text",{fg:theme.muted,children:padText(fitText(query.datasetLabel,width),width)},void 0,!1,void 0,this)},{key:"query",label:"Query",width:"flex",render:(query,_selected,width)=>jsxDEV63("text",{fg:query.query?theme.muted:theme.subText,children:padText(fitText(describe(query),width),width)},void 0,!1,void 0,this)},{key:"creator",label:"Creator",width:14,priority:3,render:(query,_selected,width)=>jsxDEV63("text",{fg:theme.subText,children:padText(fitText(query.createdBy??(query.isPrebuilt?"Sentry":"\u2014"),width),width)},void 0,!1,void 0,this)},{key:"activity",label:config.activityLabel,width:11,align:"right",priority:1,render:(query,_selected,width)=>jsxDEV63("text",{fg:theme.subText,children:padText(activity(query),width,"right")},void 0,!1,void 0,this)}]}function SavedQueries(props){let theme=useTheme(),{client:client2,org,screen,state,focused,width,height,reloadToken,pushView,registerActions,activateRow}=props,{dispatch,focusSearch,handleSearchBlur}=state,config=savedQueryScreen(screen.id)??savedQueryScreen("explore.all-queries"),sortItems=savedQuerySortOptions(config.source),sort=savedQueryListSort(state.sort,config.source),{queries:status,nextCursor}=useSavedQueries(client2,{org,source:config.source,search:state.committedQuery||void 0,sort,reloadToken}),queries=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status);useEffect45(()=>{if(queries)dispatch({type:"setEntries",payload:queries})},[queries,dispatch]),useEffect45(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:config.noun}})},[loading,since,error,status,config.noun,dispatch]);let open=useCallback36((index)=>{let query=rowsOf(state)[index];if(query)pushView(savedQueryResultsView(query))},[state,pushView]);useScreenActions(registerActions,{open});let columns=useMemo29(()=>columnsFor2(config,theme),[config,theme]);return jsxDEV63("box",{style:{flexDirection:"column",width,height},children:[jsxDEV63(SearchInput,{value:state.searchQuery,placeholder:config.searchPlaceholder,focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV63("box",{style:{flexDirection:"row",width,flexShrink:0,height:HEADING_ROWS3,paddingLeft:1},children:[jsxDEV63("text",{fg:theme.text,attributes:BOLD,children:config.title},void 0,!1,void 0,this),jsxDEV63("text",{fg:theme.muted,children:` ${config.description}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV63(SortBar,{value:sort,items:sortItems,open:state.openDropdown==="sort",width,anchorTop:SEARCH_ROWS+1,onChange:(sort2)=>dispatch({type:"setSort",payload:sort2}),onOpen:()=>dispatch({type:"setOpenDropdown",payload:"sort"}),onClose:()=>dispatch({type:"setOpenDropdown",payload:null})},void 0,!1,void 0,this),jsxDEV63(DataTable,{rows:queries,columns,width,selectedIndex:state.selected,focused,rowKey:(query)=>`${query.source}:${query.id}`,loading:isInitialLoad(status),error,errorTitle:`Failed to load ${config.noun}`,minFlex:MIN_QUERY_WIDTH,onRowClick:activateRow,empty:{title:"No saved queries found.",lines:[state.committedQuery?`No query name matches "${state.committedQuery}".`:void 0,config.emptyHint]},layout:[height]},void 0,!1,void 0,this),jsxDEV63(ResultFooter,{count:queries?.length,noun:"query",hasMore:nextCursor!==null},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function describe(query){return query.query||query.fields.join(", ")}function activity(query){let iso=query.lastVisited??query.dateUpdated;return iso?timeAgo(iso):"\u2014"}import{useCallback as useCallback38,useEffect as useEffect47,useMemo as useMemo31,useRef as useRef33}from"h:0__";import{useCallback as useCallback37,useEffect as useEffect46,useMemo as useMemo30,useState as useState31}from"h:0__";function useWorkflows(client2,{org,query="",project,sortBy,reloadToken=0}){let loader=useCallback37((cursor,signal)=>client2?listWorkflows(client2,{org,query,project,sortBy,cursor,signal}).then((page)=>({data:Array.isArray(page.data)?page.data:[],nextCursor:page.nextCursor})):null,[client2,org,query,project,sortBy]),pages=useCursorPages(loader,reloadToken);return{workflows:mapAsyncStatus(pages.status,(page)=>page.data),nextCursor:pages.nextCursor,page:pages.page,nextPage:pages.nextPage,previousPage:pages.previousPage}}var NO_DETECTORS={byId:new Map,loading:!1};function useWorkflowDetectors(client2,org,workflows){let key=useMemo30(()=>{let unique2=new Set;for(let workflow of workflows??[])for(let id of workflow.detectorIds??[])unique2.add(id);return[...unique2].sort()},[workflows]).join(","),[lookup,setLookup]=useState31(NO_DETECTORS);return useEffect46(()=>{if(!client2||key===""){setLookup(NO_DETECTORS);return}let controller=new AbortController,cancelled=!1;return setLookup((current)=>({byId:current.byId,loading:!0})),listDetectorsByIds(client2,{org,ids:key.split(","),signal:controller.signal}).then((detectors)=>{if(cancelled)return;setLookup({byId:new Map(detectors.map((d)=>[d.id,d])),loading:!1})}).catch(()=>{if(!cancelled)setLookup(NO_DETECTORS)}),()=>{cancelled=!0,controller.abort()}},[client2,org,key]),lookup}import{jsxDEV as jsxDEV64}from"h:6___________________________";var HEADING_ROWS4=4,MIN_NAME_WIDTH=24,EMPTY2="\u2014",ALERT_FILTERS=["project"];function workflowColumns(theme){return[{key:"name",label:"Name",width:"flex",render:(row,selected,width)=>jsxDEV64("text",{fg:nameColor(row,selected,theme),attributes:selected?BOLD:0,children:padText(row.name,width)},void 0,!1,void 0,this)},{key:"lastTriggered",label:"Last Triggered",width:14,priority:2,render:(row,_selected,width)=>jsxDEV64("text",{fg:theme.subText,children:padText(row.lastTriggered,width)},void 0,!1,void 0,this)},{key:"actions",label:"Actions",width:18,priority:3,render:(row,_selected,width)=>jsxDEV64("text",{fg:row.enabled?theme.text:theme.subText,children:padText(row.actions,width)},void 0,!1,void 0,this)},{key:"projects",label:"Projects",width:18,priority:4,render:(row,_selected,width)=>jsxDEV64("text",{fg:row.enabled?theme.muted:theme.subText,children:padText(row.projects,width)},void 0,!1,void 0,this)},{key:"monitors",label:"Monitors",width:11,priority:1,render:(row,_selected,width)=>jsxDEV64("text",{fg:row.enabled?theme.muted:theme.subText,children:padText(row.monitors,width)},void 0,!1,void 0,this)}]}function WorkflowList(props){let theme=useTheme(),{client:client2,org,state,focused,width,height,reloadToken,onProjectSelect}=props,{dispatch,focusSearch,handleSearchBlur}=state,sort=workflowSort(state.sort),project=state.selectedProjects.length>0?state.selectedProjects:void 0,{workflows:status,nextCursor,page,nextPage,previousPage}=useWorkflows(client2,{org,query:state.committedQuery,project,sortBy:sort,reloadToken}),workflows=valueOf(status),error=errorOf(status),loading=status.state==="loading",since=loadingSince(status),detectors=useWorkflowDetectors(client2,org,workflows),projectIds=useMemo31(()=>[...detectors.byId.values()].flatMap((detector)=>detector.projectId?[detector.projectId]:[]),[detectors.byId]),slugById=useProjectSlugs(client2,org,projectIds),rows=useMemo31(()=>workflows?.map((workflow)=>toRow(workflow,detectors.byId,detectors.loading,slugById)),[workflows,detectors,slugById]);useEffect47(()=>{if(rows)dispatch({type:"setEntries",payload:rows})},[rows,dispatch]);let reportedPage=useRef33(page);useEffect47(()=>{if(reportedPage.current===page)return;reportedPage.current=page,dispatch({type:"setSelected",payload:0})},[page,dispatch]),useEffect47(()=>{dispatch({type:"setStatus",payload:{loading,since,error:error?.message,noun:"alerts"}})},[loading,since,error,dispatch]);let closeDropdown=useCallback38(()=>dispatch({type:"setOpenDropdown",payload:null}),[dispatch]);return useScreenActions(props.registerActions,{nextPage,previousPage}),jsxDEV64("box",{style:{flexDirection:"column",width,height},children:[jsxDEV64(SearchInput,{value:state.searchQuery,placeholder:"Search alerts by name\u2026",focused:state.searchFocused,width,onInput:(query)=>dispatch({type:"setSearchQuery",payload:query}),onFocus:focusSearch,onBlur:handleSearchBlur},void 0,!1,void 0,this),jsxDEV64("box",{style:{flexDirection:"row",width,height:1,flexShrink:0,overflow:"hidden",paddingLeft:1},children:[jsxDEV64("text",{fg:theme.text,attributes:BOLD,children:"Alerts"},void 0,!1,void 0,this),jsxDEV64("text",{fg:theme.muted,children:" Automations that run when a monitor fires."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),jsxDEV64(FilterBar,{client:client2,org,openDropdown:state.openDropdown,selectedProjects:state.selectedProjects,selectedEnvs:state.selectedEnvs,statsPeriod:state.statsPeriod,filters:ALERT_FILTERS,sort:{value:sort,items:WORKFLOW_SORT_OPTIONS,onChange:(value)=>dispatch({type:"setSort",payload:value})},width,anchorTop:SEARCH_ROWS+1,onProjectChange:onProjectSelect,onEnvChange:()=>{},onPeriodChange:()=>{},onDropdownOpen:(dropdown)=>dispatch({type:"setOpenDropdown",payload:dropdown}),onDropdownClose:closeDropdown},void 0,!1,void 0,this),jsxDEV64(DataTable,{rows,columns:workflowColumns(theme),width,minFlex:MIN_NAME_WIDTH,selectedIndex:state.selected,focused,rowKey:(row)=>row.id,loading:isInitialLoad(status),error,errorTitle:"Failed to load alerts",onRowClick:props.activateRow,empty:{title:"No alerts found.",lines:state.committedQuery?[`No alert name matches "${state.committedQuery}".`]:["Alerts are the automations that run when a monitor fires.","This organization may not have the new alerts and monitors enabled."]},layout:[height,HEADING_ROWS4]},void 0,!1,void 0,this),jsxDEV64(ResultFooter,{count:rows?.length,noun:"alert",hasMore:nextCursor!==null,pagination:nextCursor!==null||page>1?{page,hasPrevious:page>1,hasNext:nextCursor!==null,loading,onPrevious:previousPage,onNext:nextPage}:void 0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function nameColor(row,selected,theme){if(!row.enabled)return theme.subText;return selected?theme.text:theme.accent}function toRow(workflow,detectorsById,detectorsLoading,slugById){let detectorIds=workflow.detectorIds??[];return{workflow,id:workflow.id,name:workflow.name||`Alert ${workflow.id}`,enabled:workflow.enabled!==!1,lastTriggered:workflow.lastTriggered?timeAgo(workflow.lastTriggered):EMPTY2,actions:actionsLabel(workflow),projects:projectsLabel(detectorIds,detectorsById,detectorsLoading,slugById),monitors:detectorIds.length===0?EMPTY2:monitorsLabel(detectorIds.length)}}function actionsLabel(workflow){let types=workflowActionTypes(workflow);if(types.length===0)return EMPTY2;return types.map(actionTypeLabel).join(", ")}function projectsLabel(detectorIds,detectorsById,detectorsLoading,slugById){if(detectorIds.length===0)return EMPTY2;let detectors=detectorIds.map((id)=>detectorsById.get(id)).filter(isDetector);if(detectors.length===0)return detectorsLoading?"\u2026":EMPTY2;if(detectors.some((detector)=>detector.projectId===null))return"All Projects";let slugs=[...new Set(detectors.map((detector)=>detector.projectId?slugById.get(detector.projectId):void 0).filter((slug)=>Boolean(slug)))];if(slugs.length===0)return detectorsLoading?"\u2026":EMPTY2;return slugs.join(", ")}function isDetector(detector){return detector!==void 0}function monitorsLabel(count2){return`${count2} ${count2===1?"monitor":"monitors"}`}var SCREEN_COMPONENTS={"issues.feed":IssueFeed,"issues.inbox":IssueFeed,"issues.errors-outages":IssueFeed,"issues.breached-metrics":IssueFeed,"issues.warnings":IssueFeed,"issues.configuration":IssueFeed,"issues.user-feedback":IssueFeed,"issues.recently-run":IssueFeed,"issues.all-views":IssueViews,"seer.ask":SeerScreen,"explore.profiles":ProfileFunctions,"explore.releases":ReleaseCards,"explore.replays":ReplayStream,"explore.traces":ExploreTable,"explore.logs":ExploreTable,"explore.metrics":ExploreTable,"explore.errors":ExploreTable,"explore.conversations":ConversationList,"dashboards.all":DashboardList,"dashboards.sentry-built":DashboardList,"monitors.alerts":WorkflowList,"explore.all-queries":SavedQueries,"explore.discover":SavedQueries,"monitors.all":MonitorList,"monitors.mine":MonitorList,"monitors.error":MonitorList,"monitors.metric":MonitorList,"monitors.cron":MonitorList,"monitors.uptime":MonitorList,"monitors.mobile-build":MonitorList};function viewForSentryUrl(detail,state){if(!detail)return;let view;switch(detail.kind){case"issue":view=issueUrlView(detail.issueId,detail.eventId);break;case"dashboard":view=dashboardUrlView(detail.dashboardId);break;case"replay":view=replayUrlView(detail.replayId);break;case"monitor":view=monitorUrlView(detail.detectorId);break;case"issue_view":view=savedViewUrlStream(detail.viewId);break;case"saved_query":view=savedQueryUrlView(detail);break}if(!view.stateKey||!state)return view;return{...view,initialState:{...view.initialState,...state}}}var BREADCRUMB_CHROME_WIDTH=4,APP_REGIONS=["nav","secondary","content"];function useNavigation({client:client2,org,reloadToken,width,initialScreen,initialLocation,initialViewLocations,initialScreenSnapshots,initialSelectedProjects=[],availableNavGroups,focus,canOpen}){let initial=getScreen(initialLocation?.screen??initialScreen),[initialViews]=useState32(()=>{let restored=(initialViewLocations??[]).map((location)=>viewForSentryUrl(location.detail,location.state)).filter((view)=>view!==void 0);if(restored.length>0)return restored;let initialView=viewForSentryUrl(initialLocation?.detail,initialLocation?.state);return initialView?[initialView]:[]}),[navigation,dispatch]=useReducer4(navigationReducer,void 0,()=>initialNavigationModel(initial.group,initial.item,initialViews)),{railGroup,activeGroup,activeItem,navExpanded,showSecondary,gotoMode,viewStack}=navigation,screen=findScreen(activeGroup,activeItem),ScreenComponent=screen?SCREEN_COMPONENTS[screen.id]:void 0,topView=viewStack.at(-1),detailView=topView&&!topView.stateKey?topView:void 0,listActive=!detailView&&(ScreenComponent!==void 0||topView!==void 0),activeStatefulView=[...viewStack].reverse().find((view)=>view.stateKey),activeKey=activeStatefulView?.stateKey??(screen?stateKeyOf(screen):void 0),activeSource=activeStatefulView?.id??screen?.id??activeKey??"__unregistered__",initialTopView=initialViews.at(-1),{active:state,resetOrgScoped,seed,snapshots:screenSnapshots}=useScreenState(activeKey,activeSource,initialSelectedProjects,initialTopView?.stateKey?initialTopView.initialState:initialLocation?.state,initialScreenSnapshots),viewLocations=useMemo32(()=>viewStack.map((view)=>view.sentryLocation),[viewStack]),navExtras=useSecondaryNavExtras(client2,org,railGroup,reloadToken),secondaryItems=useMemo32(()=>navItemsFor(railGroup,navExtras),[railGroup,navExtras]),pushView=useCallback39((view)=>{if(view.stateKey&&view.initialState)seed(view.stateKey,view.initialState);dispatch({type:"pushView",view})},[seed]),updateView=useCallback39((id,update)=>{dispatch({type:"updateView",id,update})},[]),popView=useCallback39(()=>dispatch({type:"popView"}),[]),clearViews=useCallback39(()=>dispatch({type:"clearViews"}),[]),navigateTo=useCallback39((group,item)=>{dispatch({type:"navigate",group,item}),state.dispatch({type:"setDetailOpen",payload:!1}),focus.focus("content")},[focus,state.dispatch]),navigateToScreen=useCallback39((screenId,initialState)=>{let target=getScreen(screenId);if(!availableNavGroups.some((group)=>group.id===target.group))return;if(initialState)seed(stateKeyOf(target),initialState);navigateTo(target.group,target.item)},[availableNavGroups,navigateTo,seed]),openNavGroup=useCallback39((group)=>{let sole=soleNavItem(getNavGroup(group));if(sole!==void 0){navigateTo(group,sole);return}let startItem=group===activeGroup?activeItem:getNavGroup(group).sections[0]?.items[0]??"";dispatch({type:"openGroup",group,item:startItem}),focus.focus("secondary")},[activeGroup,activeItem,focus,navigateTo]),expandNav=useCallback39(()=>{dispatch({type:"expandNav"}),focus.focus("nav")},[focus]),selectNavItem=useCallback39((item)=>{let target=navTargetOf(railGroup,item);navigateTo(target.group,target.item);let view=item.open?.();if(view)pushView(view)},[railGroup,navigateTo,pushView]),gotoHotkeys=useMemo32(()=>gotoMode?buildGotoHotkeys(railGroup,availableNavGroups):null,[gotoMode,railGroup,availableNavGroups]),previewNavGroup=useCallback39((group)=>{let sole=soleNavItem(getNavGroup(group));if(sole!==void 0){navigateTo(group,sole);return}let item=group===activeGroup?activeItem:navItemsFor(group,navExtras)[0]?.label??"";dispatch({type:"previewGroup",group,item})},[activeGroup,activeItem,navExtras,navigateTo]),replaceIssue=useCallback39((next)=>{state.dispatch({type:"setEntries",payload:(rows)=>{let groups=rows;return groups.some((row)=>row?.id===next.id)?groups.map((row)=>row?.id===next.id?next:row):rows}}),dispatch({type:"replaceIssue",issue:next})},[state.dispatch]),showSecondaryPane=showSecondary||gotoMode,secondaryWidth=showSecondaryPane?SECONDARY_NAV_WIDTH:0,contentWidth=Math.max(20,width-(navExpanded?NAV_RAIL_WIDTH:COLLAPSED_NAV_RAIL_WIDTH)-secondaryWidth-2),backTarget=viewStack.at(-2)?.label??activeItem,breadcrumb=useMemo32(()=>{if(viewStack.length===0)return;let trail=breadcrumbTrail([getNavGroup(activeGroup).label,activeItem,...viewStack.map((view)=>view.label)],Math.max(0,contentWidth-BREADCRUMB_CHROME_WIDTH-detailBackWidth(backTarget,contentWidth)));return trail?` ${trail} `:void 0},[viewStack,activeGroup,activeItem,contentWidth,backTarget]),statusHints=useMemo32(()=>{if(gotoMode)return[{command:"sentry.nav.back",label:"cancel"}];if(state.searchFocused)return[{command:"sentry.nav.open",label:"submit"},{command:"sentry.nav.back",label:"cancel"}];let back=topView?[{command:"sentry.nav.back",label:"back"}]:[],list=detailView?canOpen?[{command:"sentry.nav.open",label:"open"}]:[]:[...canOpen?[{command:"sentry.nav.open",label:state.detailOpen?"close":screen?.openLabel??"open"}]:[],{command:"sentry.nav.search",label:"search"}];return[...back,...list,{command:"sentry.nav.goto",label:"nav"},{command:"sentry.app.commandPalette",label:"commands"},{command:"sentry.app.help",label:"help"},...topView?[]:[{command:"sentry.app.quit",label:"quit"}]]},[gotoMode,state.searchFocused,state.detailOpen,topView,detailView,screen,canOpen]);return{...navigation,dispatch,showSecondaryPane,topView,detailView,listActive,screen,ScreenComponent,state,viewLocations,screenSnapshots,resetOrgScoped,seed,navExtras,secondaryItems,gotoHotkeys,contentWidth,breadcrumb,backTarget,statusHints,navigateTo,navigateToScreen,openNavGroup,expandNav,selectNavItem,previewNavGroup,pushView,popView,clearViews,updateView,replaceIssue}}import{useEffect as useEffect48,useMemo as useMemo33}from"h:0__";import{abandonNavigation,beginNavigation,breadcrumb,endNavigation,isTelemetryEnabled}from"h:7___________________________________";var SETTLE_DEBOUNCE_MS=250;function useNavigationTrace(group,item,loading){let name=`${getNavGroup(group).label} \u203A ${item}`,on=isTelemetryEnabled();useMemo33(()=>{if(!on)return;beginNavigation(name),breadcrumb({category:"navigation",message:name})},[name,on]),useEffect48(()=>on?()=>abandonNavigation(name):void 0,[name,on]),useEffect48(()=>{if(!on||loading)return;let settledAt=Date.now(),settle=setTimeout(()=>endNavigation(name,settledAt),SETTLE_DEBOUNCE_MS);return()=>clearTimeout(settle)},[name,loading,on])}import{useCallback as useCallback40,useEffect as useEffect49,useState as useState33}from"h:0__";import{checkForUpdate,watchForUpdate}from"h:9________________________________";function useUpdateCheck(){let[update,setUpdate]=useState33(void 0);useEffect49(()=>watchForUpdate(setUpdate),[]);let checkNow=useCallback40(async()=>{let found=await checkForUpdate();return setUpdate(found),found},[]);return{update,checkNow}}import{useCallback as useCallback41,useRef as useRef34,useState as useState34}from"h:0__";function useTriage(client2,org,{onOptimistic,onNotice}){let[pending,setPending]=useState34(()=>new Set),controllers=useRef34(new Map),run=useCallback41((commandId,group)=>{let action=findTriageAction(commandId);if(!action||!client2)return;let update=action.update(group);if(!update){onNotice({kind:"warning",text:noOpNotice(commandId)});return}let original=group,optimistic=applyUpdate(group,update);onOptimistic(optimistic),controllers.current.get(group.id)?.abort();let controller=new AbortController;controllers.current.set(group.id,controller),setPending((current)=>new Set(current).add(group.id));let settle=()=>setPending((current)=>{let next=new Set(current);return next.delete(group.id),next});(async()=>{try{let confirmed=await updateIssue(client2,{org,issueId:group.id,update,signal:controller.signal});if(controller.signal.aborted)return;onOptimistic({...optimistic,...confirmed}),onNotice({kind:"success",text:`${action.pastTense} ${group.shortId}`})}catch(error){if(controller.signal.aborted)return;onOptimistic(original),onNotice({kind:"error",text:`failed: ${error instanceof ApiError?error.message:String(error)}`})}finally{if(!controller.signal.aborted)controllers.current.delete(group.id),settle()}})()},[client2,org,onOptimistic,onNotice]);return{pending,run}}var FILTER_COMMAND_DROPDOWN={"sentry.view.filterProject":"project","sentry.view.filterEnv":"env","sentry.view.filterDate":"date"},FILTER_COMMAND_ENTRIES=Object.entries(FILTER_COMMAND_DROPDOWN);function createOverlayHandler({showOpenUrl,showPalette,showHelp,showSeerAutofix,setShowHelp}){return(key)=>{if(showOpenUrl||showPalette||showSeerAutofix)return"focused";if(!showHelp)return"notMine";if(matchesCommand("sentry.nav.back",key)||matchesCommand("sentry.app.help",key))setShowHelp(!1);return"mine"}}function createDropdownHandler({state,showOrgPicker}){return(key)=>{if(!state.openDropdown&&!showOrgPicker&&!isDropdownMounted())return"notMine";if(state.openDropdown&&!isDropdownMounted()&&matchesCommand("sentry.nav.back",key))return state.dispatch({type:"setOpenDropdown",payload:null}),"mine";return"focused"}}function createPaletteOpenHandler({state,screenActions,setShowPalette}){return(key)=>{if(!matchesCommand("sentry.app.commandPalette",key))return"notMine";if(state.searchFocused)state.cancelSearch();if(screenActions.current?.inputFocused?.())screenActions.current.blurInput?.();return setShowPalette(!0),"mine"}}function createUrlOpenHandler({state,screenActions,setShowOpenUrl}){return(key)=>{if(!matchesCommand("sentry.app.openUrl",key))return"notMine";if(state.searchFocused)state.cancelSearch();if(screenActions.current?.inputFocused?.())screenActions.current.blurInput?.();return setShowOpenUrl(!0),"mine"}}function createScreenInputHandler({screenActions}){return(key)=>{let actions=screenActions.current;if(!actions?.inputFocused?.())return"notMine";if(matchesCommand("sentry.nav.back",key))return actions.blurInput?.(),"mine";if(matchesCommand("sentry.nav.open",key))return actions.submitInput?.()?"mine":"focused";if(actions.handleInputKey?.(key))return"mine";if(matchesCommand("sentry.app.focusNext",key)||matchesCommand("sentry.app.focusPrev",key))return actions.blurInput?.(),"notMine";return"focused"}}function createSearchHandler({state}){return(key)=>{if(!state.searchFocused)return"notMine";if(matchesCommand("sentry.nav.back",key))return state.cancelSearch(),"mine";if(matchesCommand("sentry.nav.open",key))return state.submitSearch(),"mine";return"focused"}}function createGotoHandler({navigation,setShowOrgPicker}){return(key)=>{if(!navigation.gotoMode){if(!matchesCommand("sentry.nav.goto",key))return"notMine";return navigation.dispatch({type:"openGoto"}),"mine"}if(matchesCommand("sentry.nav.goto",key)||matchesCommand("sentry.nav.back",key)||key.ctrl||key.meta||key.shift)return navigation.dispatch({type:"closeGoto"}),"mine";if(matchesCommand("sentry.app.switchOrg",key))return navigation.dispatch({type:"closeGoto"}),setShowOrgPicker(!0),"mine";let target=navigation.gotoHotkeys?.byKey.get(key.name.toLowerCase());if(target?.kind==="group")return navigation.previewNavGroup(target.group),"mine";if(target?.kind==="item")return navigation.navigateTo(navigation.railGroup,target.item),"mine";return navigation.dispatch({type:"closeGoto"}),"mine"}}function createViewStackHandler({navigation}){return(key)=>{if(!navigation.topView||navigation.showSecondary)return"notMine";if(!matchesCommand("sentry.nav.back",key))return"notMine";return navigation.popView(),"mine"}}function createScreenBackHandler({navigation,focus,screenActions}){return(key)=>{if(navigation.topView)return"notMine";if(focus.focusedRef.current!=="content")return"notMine";if(!matchesCommand("sentry.nav.back",key))return"notMine";return screenActions.current?.back?.()?"mine":"notMine"}}function createSecondaryNavCloseHandler({navigation,focus}){return(key)=>{if(!navigation.showSecondary||!matchesCommand("sentry.nav.back",key))return"notMine";return navigation.dispatch({type:"closeSecondary"}),focus.focus("nav"),"mine"}}function createGlobalCommandHandler({navigation,state,focus,setShowHelp,setShowOrgPicker,refresh:refresh2,runUpdate,openInBrowser,onQuit}){return(key)=>{if(navigation.listActive&&focus.focusedRef.current==="content"){for(let[commandId,which]of FILTER_COMMAND_ENTRIES){if(!matchesCommand(commandId,key))continue;if(isFilterBarMounted(which))state.dispatch({type:"setOpenDropdown",payload:which});return"mine"}if(matchesCommand("sentry.view.sort",key)&&isSortSelectorMounted())return state.dispatch({type:"setOpenDropdown",payload:"sort"}),"mine"}if(matchesCommand("sentry.app.help",key))return setShowHelp(!0),"mine";if(matchesCommand("sentry.app.refresh",key))return refresh2(),"mine";if(matchesCommand("sentry.app.switchOrg",key))return setShowOrgPicker(!0),"mine";if(matchesCommand("sentry.app.update",key))return runUpdate(),"mine";if(matchesCommand("sentry.app.openInBrowser",key))return openInBrowser(),"mine";if(matchesCommand("sentry.app.quit",key))return onQuit(),"mine";if(matchesCommand("sentry.app.focusNext",key)){if(!navigation.navExpanded)return focus.focus("content"),"mine";let current=focus.focusedRef.current;if(navigation.showSecondary)focus.focus(current==="nav"?"secondary":"nav");else focus.focus(current==="nav"?"content":"nav");return"mine"}if(matchesCommand("sentry.app.focusPrev",key)){if(!navigation.navExpanded)return focus.focus("content"),"mine";let current=focus.focusedRef.current;if(navigation.showSecondary)focus.focus(current==="secondary"?"nav":"secondary");else focus.focus(current==="content"?"nav":"content");return"mine"}return"notMine"}}function createTriageHandler({activeIssue,focus,triage}){return(key)=>{if(!activeIssue||focus.focusedRef.current!=="content")return"notMine";for(let action of TRIAGE_ACTIONS){if(!matchesCommand(action.commandId,key))continue;return triage(action.commandId,activeIssue),"mine"}return"notMine"}}function createNavRailHandler({navigation,focus,availableNavGroups}){return(key)=>{if(focus.focusedRef.current!=="nav")return"notMine";if(matchesCommand("sentry.nav.open",key))return navigation.openNavGroup(navigation.railGroup),"mine";let index=availableNavGroups.findIndex((group)=>group.id===navigation.railGroup),step=matchesCommand("sentry.nav.down",key)?1:matchesCommand("sentry.nav.up",key)?-1:0;if(step===0)return"notMine";let next=availableNavGroups[(index+step+availableNavGroups.length)%availableNavGroups.length];return navigation.dispatch({type:"selectRailGroup",group:next.id}),"mine"}}function createSecondaryNavHandler({navigation,focus}){return(key)=>{if(!navigation.showSecondary||focus.focusedRef.current!=="secondary")return"notMine";let index=navigation.secondaryItems.findIndex((item)=>item.label===navigation.secondaryItem);if(matchesCommand("sentry.nav.open",key)){let item=navigation.secondaryItems[index]??navigation.secondaryItems[0];if(item)navigation.selectNavItem(item);return"mine"}let step=matchesCommand("sentry.nav.down",key)?1:matchesCommand("sentry.nav.up",key)?-1:0;if(step===0)return"notMine";let next=Math.max(0,Math.min(index+step,navigation.secondaryItems.length-1));return navigation.dispatch({type:"selectSecondaryItem",item:navigation.secondaryItems[next]?.label??navigation.secondaryItem}),"mine"}}function createScreenKeyHandler({screenActions,focus}){return(key)=>{let actions=screenActions.current;if(!actions||!focus.isFocused("content"))return"notMine";if(actions.openDetail&&matchesCommand("sentry.nav.open",key))return actions.openDetail(),"mine";return actions.handleKey?.(key)?"mine":"notMine"}}function createSearchFocusHandler({navigation,state,focus}){return(key)=>{if(!navigation.listActive||focus.focusedRef.current!=="content")return"notMine";if(!matchesCommand("sentry.nav.search",key))return"notMine";return state.focusSearch(),"mine"}}function createListCursorHandler({navigation,state,screenActions,focus}){return(key)=>{if(!navigation.listActive||focus.focusedRef.current!=="content")return"notMine";let last=Math.max(0,state.entries.length-1);if(matchesCommand("sentry.nav.pageDown",key))return screenActions.current?.nextPage?.()?"mine":"notMine";if(matchesCommand("sentry.nav.pageUp",key))return screenActions.current?.previousPage?.()?"mine":"notMine";if(matchesCommand("sentry.nav.open",key)){let open=screenActions.current?.open;if(!open)return"notMine";return open(state.selected),"mine"}if(matchesCommand("sentry.nav.down",key))return state.dispatch({type:"setSelected",payload:(index)=>Math.min(index+1,last)}),"mine";if(matchesCommand("sentry.nav.up",key))return state.dispatch({type:"setSelected",payload:(index)=>Math.max(index-1,0)}),"mine";if(matchesCommand("sentry.nav.top",key))return state.dispatch({type:"setSelected",payload:0}),"mine";if(matchesCommand("sentry.nav.bottom",key))return state.dispatch({type:"setSelected",payload:last}),"mine";return"notMine"}}function createAppKeyHandlers(options){return[createOverlayHandler(options),createDropdownHandler(options),createPaletteOpenHandler(options),createUrlOpenHandler(options),createScreenInputHandler(options),createSearchHandler(options),createGotoHandler(options),createViewStackHandler(options),createScreenBackHandler(options),createSecondaryNavCloseHandler(options),createGlobalCommandHandler(options),createTriageHandler(options),createNavRailHandler(options),createSecondaryNavHandler(options),createScreenKeyHandler(options),createSearchFocusHandler(options),createListCursorHandler(options)]}import{jsxDEV as jsxDEV65}from"h:6___________________________";var DEFAULT_SCREEN="issues.feed";function persistConfig(updates){writeConfig(updates).catch((error)=>{reportError3(error,{source:"app.config.write_failed"})})}function App({onQuit,client:client2=null,org:initialOrg="",initialScreen=DEFAULT_SCREEN,initialLocation,initialProjectsByOrg={},user:user2,initialSeerCodeModeByOrg={},initialSeerBashModeByOrg={},initialSeerShowThinkingByOrg={},onApplyUpdate,onOpenUrl,initialSessionSnapshot,onSessionSnapshot}){let theme=useTheme(),{width,height}=useTerminalDimensions5(),[restoredSession]=useState35(()=>restoreAppSessionSnapshot(initialSessionSnapshot)),restoredSnapshot=restoredSession?.snapshot,startupLocation=restoredSession?.location??initialLocation,[projectsByOrg,setProjectsByOrg]=useState35(()=>Object.fromEntries(Object.entries({...initialProjectsByOrg,...restoredSnapshot?.projectsByOrg}).map(([slug,projects])=>[slug,[...projects]]))),projectsByOrgRef=useRef35(projectsByOrg),[seerCodeModeByOrg,setSeerCodeModeByOrg]=useState35(()=>({...initialSeerCodeModeByOrg,...restoredSnapshot?.seerCodeModeByOrg})),[seerBashModeByOrg,setSeerBashModeByOrg]=useState35(()=>({...initialSeerBashModeByOrg,...restoredSnapshot?.seerBashModeByOrg})),[seerShowThinkingByOrg,setSeerShowThinkingByOrg]=useState35(()=>({...initialSeerShowThinkingByOrg,...restoredSnapshot?.seerShowThinkingByOrg})),[org,setOrg]=useState35(startupLocation?.org??restoredSnapshot?.org??initialOrg),[showHelp,setShowHelp]=useState35(!1),[showPalette,setShowPalette]=useState35(!1),[showOpenUrl,setShowOpenUrl]=useState35(!1),[showOrgPicker,setShowOrgPicker]=useState35(!1),[autofixIssue,setAutofixIssue]=useState35(),[webUrlFallback,setWebUrlFallback]=useState35(),[avatarUrl,setAvatarUrl]=useState35(),[orgFeatures,setOrgFeatures]=useState35(),[currentUser,setCurrentUser]=useState35(user2),seerAvailable=orgFeatures===void 0||orgFeatures.includes("seer-explorer"),availableNavGroups=useMemo34(()=>NAV_GROUPS.filter((group)=>group.id!=="seer"||seerAvailable),[seerAvailable]),[reloadToken,setReloadToken]=useState35(0),refresh2=useCallback42(()=>setReloadToken((n)=>n+1),[]),[canOpen,setCanOpen]=useState35(!1),focus=useFocusRing(APP_REGIONS,"content"),navigation=useNavigation({client:client2,org,reloadToken,width,initialScreen,initialLocation:startupLocation,initialViewLocations:restoredSession?.viewStack,initialScreenSnapshots:restoredSnapshot?.navigation.screens,initialSelectedProjects:projectsByOrg[org]??[],availableNavGroups,focus,canOpen}),{activeGroup,activeItem,backTarget,breadcrumb:breadcrumb2,clearViews,contentWidth,detailView,expandNav,gotoHotkeys,gotoMode,listActive,navigateTo,navigateToScreen,navExpanded,navExtras,openNavGroup,pushView,railGroup,replaceIssue,resetOrgScoped,screen,ScreenComponent,secondaryItem,seed,selectNavItem,showSecondaryPane,state,statusHints,topView,updateView,viewLocations,screenSnapshots}=navigation;useEffect50(()=>{if(setAvatarUrl(void 0),setOrgFeatures(void 0),!client2||!org)return;let controller=new AbortController;return getOrganization2(client2,{org,signal:controller.signal}).then((orgData)=>{if(orgData.avatar?.avatarUrl)setAvatarUrl(orgData.avatar.avatarUrl);if(Array.isArray(orgData.features))setOrgFeatures(orgData.features)}).catch(()=>{}),()=>controller.abort()},[client2,org]),useEffect50(()=>{if(user2?.email||!client2){setCurrentUser(user2);return}if(activeGroup!=="seer")return;let controller=new AbortController;return getCurrentUser(client2,controller.signal).then(setCurrentUser).catch(()=>{}),()=>controller.abort()},[activeGroup,client2,user2]);let setSeerCodeMode=useCallback42((mode)=>{setSeerCodeModeByOrg((current)=>{let next={...current,[org]:mode};return persistConfig({seerCodeModeByOrg:next}),next})},[org]),setSeerBashMode=useCallback42((enabled)=>{setSeerBashModeByOrg((current)=>{let next={...current,[org]:enabled};return persistConfig({seerBashModeByOrg:next}),next})},[org]),setSeerShowThinking=useCallback42((enabled)=>{setSeerShowThinkingByOrg((current)=>{let next={...current,[org]:enabled};return persistConfig({seerShowThinkingByOrg:next}),next})},[org]),selectProjects=useCallback42((projects)=>{state.dispatch({type:"setSelectedProjects",payload:projects});let next={...projectsByOrgRef.current,[org]:[...projects]};projectsByOrgRef.current=next,setProjectsByOrg(next),persistConfig({projectsByOrg:next})},[org,state.dispatch]);useNavigationTrace(activeGroup,activeItem,state.status.loading);let seerChat=useSeerChat(client2,org,{features:orgFeatures,isEmployee:currentUser?.email?.toLowerCase().endsWith("@sentry.io")===!0,userId:currentUser?.id,pageName:screen?.id,codeMode:seerCodeModeByOrg[org]??"only",bashMode:seerBashModeByOrg[org]??!1,showThinking:seerShowThinkingByOrg[org]??!1,initialRunId:restoredSnapshot?.seerRunId,onCodeModeChange:setSeerCodeMode,onBashModeChange:setSeerBashMode,onShowThinkingChange:setSeerShowThinking}),currentSentryLocation=useMemo34(()=>{let route=topView?.sentryLocation??(screen?{screen:screen.id}:void 0);if(!route)return;let routeState=!topView&&screen?.kind!=="chat"||Boolean(topView?.stateKey)?{...route.state,query:state.committedQuery,sort:state.sort,statsPeriod:state.statsPeriod,selectedProjects:[...state.selectedProjects],selectedEnvs:[...state.selectedEnvs]}:route.state;return{org,...route,state:routeState,...route.screen==="seer.ask"&&seerChat.runId!==null?{seerRunId:seerChat.runId}:{}}},[org,screen,seerChat.runId,state,topView]),sessionSnapshot=useMemo34(()=>{if(!onSessionSnapshot||!org||!currentSentryLocation)return;let lastView=viewLocations.length-1;return createAppSessionSnapshot({org,navigation:{location:buildSentryUrl(currentSentryLocation),viewStack:viewLocations.map((location,index)=>buildSentryUrl(index===lastView?currentSentryLocation:{org,...location})),screens:{...screenSnapshots}},projectsByOrg:Object.fromEntries(Object.entries(projectsByOrg).map(([slug,projects])=>[slug,[...projects]])),seerCodeModeByOrg:{...seerCodeModeByOrg},seerBashModeByOrg:{...seerBashModeByOrg},seerShowThinkingByOrg:{...seerShowThinkingByOrg},...seerChat.runId===null?{}:{seerRunId:seerChat.runId}})},[currentSentryLocation,onSessionSnapshot,org,projectsByOrg,screenSnapshots,seerBashModeByOrg,seerChat.runId,seerCodeModeByOrg,seerShowThinkingByOrg,viewLocations]);useEffect50(()=>{if(sessionSnapshot)onSessionSnapshot?.(sessionSnapshot)},[onSessionSnapshot,sessionSnapshot]);let openInBrowser=useCallback42(()=>{if(!currentSentryLocation)return;let url=buildSentryUrl(currentSentryLocation);if(!onOpenUrl){setWebUrlFallback(url);return}Promise.resolve(onOpenUrl(url)).then((opened)=>{if(!opened)setWebUrlFallback(url)}).catch(()=>setWebUrlFallback(url))},[currentSentryLocation,onOpenUrl]),screenActions=useRef35(null),registerActions=useCallback42((actions)=>{screenActions.current=actions,setCanOpen(Boolean(actions?.open||actions?.openDetail))},[]),[transientNotice,setTransientNotice]=useState35(null),noticeTimer=useRef35(void 0),showNotice=useCallback42((notice)=>{setTransientNotice(notice),clearTimeout(noticeTimer.current),noticeTimer.current=setTimeout(()=>setTransientNotice(null),4000)},[]);useEffect50(()=>()=>clearTimeout(noticeTimer.current),[]);let switchOrg=useCallback42((slug)=>{if(setShowOrgPicker(!1),!slug||slug===org)return;setOrg(slug),clearViews(),resetOrgScoped(projectsByOrgRef.current[slug]??[]),showNotice({kind:"info",text:`switched to ${slug}`}),identify({org:slug}),leaveCrumb({category:"navigation",message:`switched org to ${slug}`}),log2("info","ui.org.switched",{org:slug}),persistConfig({org:slug})},[clearViews,org,resetOrgScoped,showNotice]),triage=useTriage(client2,org,{onOptimistic:replaceIssue,onNotice:showNotice}),openIssueAutofix=useCallback42((issue)=>{if(!seerChat.capabilities.available){showNotice({kind:"error",text:"Seer is not enabled for this organization"});return}seerChat.reset(),setAutofixIssue(issue)},[seerChat,showNotice]),activeIssue=topView?.issue??(activeGroup==="issues"?rowsOf(state)[state.selected]:void 0);useEffect50(()=>{if(activeGroup==="seer"&&!seerAvailable)navigateToScreen(DEFAULT_SCREEN)},[activeGroup,navigateToScreen,seerAvailable]);let openSentryLocation=useCallback42((location)=>{let target=getScreen(location.screen);if(location.org!==org)switchOrg(location.org);navigateTo(target.group,target.item);let view=viewForSentryUrl(location.detail,location.state);if(view){if(!view.stateKey&&location.state)seed(stateKeyOf(target),location.state);pushView(view)}else if(location.state)seed(stateKeyOf(target),location.state)},[navigateTo,org,pushView,seed,switchOrg]),submitSentryUrl=useCallback42((url)=>{let result=parseSentryUrl(url);if(result.kind!=="location")return recordSentryUrlFailure(result,"command_palette"),result;openSentryLocation(result.location),setShowOpenUrl(!1);return},[openSentryLocation]),{update:pendingUpdate,checkNow:checkForUpdate2}=useUpdateCheck(),updateReady=Boolean(pendingUpdate&&onApplyUpdate),runUpdateCheck=useCallback42(()=>{showNotice({kind:"loading",text:"checking for updates\u2026"}),checkForUpdate2().then((found)=>{showNotice(found?{kind:"success",text:`update ${found.version} ready`}:{kind:"idle",text:"already up to date"})})},[checkForUpdate2,showNotice]),runUpdate=useCallback42(()=>{if(!pendingUpdate||!onApplyUpdate){showNotice({kind:"idle",text:"already up to date"});return}Promise.resolve(onApplyUpdate(pendingUpdate)).then((applied)=>{if(!applied)showNotice({kind:"error",text:"update could not be applied"})})},[pendingUpdate,onApplyUpdate,showNotice]),paletteActions=useMemo34(()=>buildPaletteActions({streamView:listActive,hasIssue:Boolean(activeIssue),updateReady},availableNavGroups),[listActive,activeIssue,updateReady,availableNavGroups]),runPaletteAction=useCallback42((action)=>{if(setShowPalette(!1),action.target.kind==="nav"){navigateTo(action.target.group,action.target.item);return}let{commandId}=action.target;switch(commandId){case"sentry.app.quit":onQuit();return;case"sentry.app.help":setShowHelp(!0);return;case"sentry.app.refresh":refresh2();return;case"sentry.app.checkForUpdates":runUpdateCheck();return;case"sentry.app.switchOrg":setShowOrgPicker(!0);return;case"sentry.app.openUrl":setShowOpenUrl(!0);return;case"sentry.app.openInBrowser":openInBrowser();return;case"sentry.app.update":runUpdate();return;case"sentry.nav.search":focus.focus("content"),state.focusSearch();return;case"sentry.view.filterProject":case"sentry.view.filterEnv":case"sentry.view.filterDate":{if(!isFilterBarMounted(FILTER_COMMAND_DROPDOWN[commandId]))return;focus.focus("content"),state.dispatch({type:"setOpenDropdown",payload:FILTER_COMMAND_DROPDOWN[commandId]});return}default:if(findTriageAction(commandId)&&activeIssue)triage.run(commandId,activeIssue)}},[activeIssue,focus,navigateTo,onQuit,openInBrowser,refresh2,runUpdate,runUpdateCheck,state,triage]),activateRow=useCallback42((index)=>{let confirming=focus.focusedRef.current==="content"&&index===state.selected;if(state.dispatch({type:"setSelected",payload:index}),navigation.dispatch({type:"closeSecondary"}),focus.focus("content"),confirming)screenActions.current?.open?.(index)},[focus,navigation,state]),keyHandlers=createAppKeyHandlers({showOpenUrl:showOpenUrl||Boolean(webUrlFallback),showPalette,showHelp,showOrgPicker,showSeerAutofix:Boolean(autofixIssue),setShowOpenUrl,setShowPalette,setShowHelp,setShowOrgPicker,navigation,state,screenActions,focus,availableNavGroups,activeIssue,triage:triage.run,refresh:refresh2,runUpdate,openInBrowser,onQuit});useKeyboard8((key)=>{routeKeyOwnership(keyHandlers,key,consumeKey)});let contentHeight=Math.max(3,height-3),contentFocused=focus.isFocused("content")&&!showOrgPicker&&!autofixIssue,paneProps={client:client2,org,focused:contentFocused,width:contentWidth,height:contentHeight,reloadToken,onProjectSelect:selectProjects,pendingIds:triage.pending,runIssueAction:triage.run,openIssueAutofix,pushView,notify:showNotice,activateRow,registerActions,updateView,navigateToScreen};return jsxDEV65("box",{style:{width:"100%",height:"100%",flexDirection:"column",backgroundColor:theme.bg},children:[jsxDEV65("box",{style:{flexGrow:1,flexDirection:"row"},children:[jsxDEV65(NavRail,{active:railGroup,expanded:navExpanded,focused:focus.isFocused("nav"),avatarUrl,orgSlug:org,groups:availableNavGroups,hotkeys:gotoHotkeys?.groups,onSelect:openNavGroup,onExpand:expandNav,onOrgPress:()=>setShowOrgPicker(!0)},void 0,!1,void 0,this),showSecondaryPane?jsxDEV65(SecondaryNav,{group:railGroup,activeItem:secondaryItem,focused:focus.isFocused("secondary"),extras:navExtras,hotkeys:gotoHotkeys?.items,onSelect:selectNavItem},void 0,!1,void 0,this):null,jsxDEV65("box",{title:breadcrumb2,titleColor:theme.accent,style:{flexGrow:1,flexDirection:"column",overflow:"hidden",border:!0,borderColor:contentFocused&&!state.searchFocused?theme.borderFocused:theme.border},children:jsxDEV65(SeerChatContext.Provider,{value:seerChat,children:topView?topView.render({...paneProps,state:topView.stateKey?state:void 0,issue:topView.issue}):ScreenComponent&&screen?jsxDEV65(ScreenComponent,{...paneProps,screen,state},screen.id,!1,void 0,this):jsxDEV65("box",{style:{flexDirection:"column",paddingLeft:1},children:[jsxDEV65("text",{fg:theme.text,attributes:1,children:`${getNavGroup(activeGroup).label} \u203A ${activeItem}`},void 0,!1,void 0,this),jsxDEV65("text",{fg:theme.muted,children:"Not implemented yet."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),topView?jsxDEV65(DetailBackRow,{parent:backTarget,top:0,right:width-1,paneWidth:contentWidth},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),jsxDEV65(StatusBar,{notice:gotoMode?{kind:"info",text:"go to\u2026"}:transientNotice??(detailView?{kind:"idle",text:detailView.label??""}:toNotice(state.status)),since:detailView||gotoMode?void 0:state.status.since,hints:statusHints,onUpdate:updateReady?runUpdate:void 0},void 0,!1,void 0,this),showHelp?jsxDEV65(HelpDialog,{onClose:()=>setShowHelp(!1)},void 0,!1,void 0,this):null,showPalette?jsxDEV65(CommandPalette,{actions:paletteActions,onRun:runPaletteAction,onClose:()=>setShowPalette(!1)},void 0,!1,void 0,this):null,showOpenUrl?jsxDEV65(OpenSentryUrlDialog,{onSubmit:submitSentryUrl,onClose:()=>setShowOpenUrl(!1)},void 0,!1,void 0,this):null,showOrgPicker?jsxDEV65(OrgPicker,{client:client2,currentOrg:org,anchorLeft:ORG_HEADER_ANCHOR_LEFT,anchorTop:ORG_HEADER_ANCHOR_TOP,onSelect:switchOrg,onClose:()=>setShowOrgPicker(!1)},void 0,!1,void 0,this):null,webUrlFallback?jsxDEV65(WebUrlDialog,{url:webUrlFallback,onClose:()=>setWebUrlFallback(void 0)},void 0,!1,void 0,this):null,autofixIssue?jsxDEV65(IssueAutofixModal,{issue:autofixIssue,chat:seerChat,client:client2,org,navigateToScreen,notify:showNotice,onClose:()=>setAutofixIssue(void 0)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function toNotice(status){if(status.error)return{kind:"error",text:status.error};if(status.loading)return{kind:"loading",text:status.noun?`loading ${status.noun}\u2026`:"loading\u2026"};return{kind:"idle",text:""}}import{jsxDEV as jsxDEV66}from"h:6___________________________";var payload={version:APP_VERSION,hostApiVersion:HOST_API_VERSION};function PayloadApp({theme,...props}){return jsxDEV66(ThemeProvider,{...theme,children:jsxDEV66(App,{...props},void 0,!1,void 0,this)},void 0,!1,void 0,this)}export{PayloadApp,payload};
20
20
 
21
- //# debugId=95C7E69D45F5733464756E2164756E21
21
+ //# debugId=0FD5B9E8FFDA553364756E2164756E21